ES2888627T3 - Codificación de audio de múltiples flujos - Google Patents

Codificación de audio de múltiples flujos Download PDF

Info

Publication number
ES2888627T3
ES2888627T3 ES18788956T ES18788956T ES2888627T3 ES 2888627 T3 ES2888627 T3 ES 2888627T3 ES 18788956 T ES18788956 T ES 18788956T ES 18788956 T ES18788956 T ES 18788956T ES 2888627 T3 ES2888627 T3 ES 2888627T3
Authority
ES
Spain
Prior art keywords
stream
streams
audio
encoded
frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES18788956T
Other languages
English (en)
Inventor
Venkatraman Atti
Venkata Subrahmanyam Chandra Sekhar Chebiyyam
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2888627T3 publication Critical patent/ES2888627T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/008Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/005Correction of errors induced by the transmission channel, if related to the coding algorithm
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/03Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the type of extracted parameters
    • G10L25/21Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the type of extracted parameters the extracted parameters being power information
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/78Detection of presence or absence of voice signals
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/90Pitch determination of speech signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Stereophonic System (AREA)
  • Telephonic Communication Services (AREA)

Abstract

Un método que comprende: recibir (501), en un codificador de audio (204), múltiples flujos (131 a 133) de datos de audio, en donde N es el número de los múltiples flujos recibidos; estando el método caracterizado además por: determinar (503) una pluralidad de valores de similitud correspondientes a una pluralidad de flujos entre los múltiples flujos recibidos; comparar (505) cada uno de la pluralidad de valores de similitud con un umbral; identificar (506), basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos recibidos, en donde L es menor que N; y codificar (507) el número L identificado de flujos para generar un flujo de bits codificado (126).

Description

DESCRIPCIÓN
Codificación de audio de múltiples flujos
I. Campo
La presente divulgación se refiere, en general, a la codificación de múltiples señales de audio.
II. Descripción de la técnica relacionada
Los avances tecnológicos han dado como resultado unos dispositivos informáticos más pequeños y más potentes. Por ejemplo, una diversidad de dispositivos informáticos personales portátiles, incluyendo teléfonos inalámbricos tales como teléfonos móviles e inteligentes, tabletas y ordenadores portátiles, son pequeños, ligeros y fáciles de portar por los usuarios. Estos dispositivos pueden comunicar paquetes de voz y de datos a través de redes inalámbricas. Además, muchos de tales dispositivos incorporan una funcionalidad adicional tal como una cámara de fotografía fija digital, una cámara de vídeo digital, una grabadora digital y un reproductor de archivos de audio. Asimismo, tales dispositivos pueden procesar instrucciones ejecutables, incluyendo aplicaciones de software, tales como una aplicación de navegador web, que se pueden usar para acceder a Internet. En ese sentido, estos dispositivos pueden incluir unas capacidades informáticas significativas.
Un dispositivo informático puede incluir o se puede acoplar a múltiples micrófonos para recibir señales de audio. Las señales de audio se pueden procesar para dar flujos de datos de audio de acuerdo con un formato de audio particular, tal como un formato estéreo de dos canales, un formato de múltiples canales tal como un formato 5.1 o uno 7.1, un formato de audio basado en escenas u otros uno o más formatos. Los flujos de datos de audio pueden ser codificados por un codificador, tal como un codificador / descodificador (códec) que está diseñado para codificar y descodificar flujos de datos de audio de acuerdo con el formato de audio. Debido a que hay disponibles una diversidad de formatos de audio que proporcionan diversos beneficios para aplicaciones particulares, los fabricantes de tales dispositivos informáticos pueden seleccionar un formato de audio particular para un funcionamiento potenciado de los dispositivos informáticos. Sin embargo, la comunicación entre dispositivos que usan diferentes formatos de audio puede estar limitada por la falta de interoperabilidad entre los formatos de audio. Además, la calidad de los datos de audio codificados transferidos a través de una red entre dispositivos que usan formatos de audio compatibles se puede reducir debido al ancho de banda de transmisión limitado de la red. Por ejemplo, los datos de audio pueden tener que codificarse a una tasa de bits subóptima para cumplir con el ancho de banda de transmisión disponible, dando como resultado una capacidad reducida para reproducir con precisión las señales de audio durante la reproducción en el dispositivo de recepción.
III. Ciertas publicaciones de antecedentes
En el documento WO 2011/020065 A1, se describe un método para generar un flujo de audio orientado a objetos, comprendiendo el método: seleccionar un objeto de audio para su transmisión en un flujo de audio, comprendiendo, el objeto de audio, datos de señal de audio y metadatos de objeto, comprendiendo los metadatos de objeto uno o más atributos de objeto; ensamblar un encabezado de objeto que comprende los metadatos de objeto; proporcionar una cabida útil de audio que comprende los datos de señal de audio; combinar, con uno o más procesadores, el encabezado de objeto y la cabida útil de audio para formar al menos una porción del flujo de audio; y transmitir el flujo de audio a través de una red.
En el documento US 2012/0029916 A1, se describe un método para procesar señales acústicas de múltiples canales caracterizado por calcular la cantidad característica de cada canal a partir de las señales de entrada de una pluralidad de canales, calcular la similitud entre los canales en la cantidad característica de cada canal, seleccionar canales que tienen una similitud alta, y separar señales usando las señales de entrada de los canales seleccionados.
En el documento US 2004/0165667 A1, se describe un sistema de codificación de audio en el que un transmisor de codificación representa componentes espectrales codificados como números de coma flotante normalizados. El transmisor proporciona un primer y un segundo parámetros de control que se pueden usar para transcodificar los parámetros espectrales codificados. Un transcodificador usa unos primeros parámetros de control para descodificar parcialmente los componentes codificados y usa unos segundos parámetros de control para volver a codificar los componentes. El transmisor determina los segundos parámetros de control analizando los efectos de operaciones aritméticas en el proceso de descodificación parcial para identificar situaciones en las que las representaciones de coma flotante pierden la normalización. Se modifican exponentes asociados con los números que pierden la normalización, y los exponentes modificados se usan para calcular los segundos parámetros de control.
IV. Sumario
En una implementación particular, un dispositivo incluye un procesador de audio configurado para generar múltiples flujos de datos de audio basándose en señales de audio recibidas, en donde N es el número de los múltiples flujos de datos de audio. El dispositivo también incluye un codificador de audio configurado para determinar un valor de similitud para cada flujo de los múltiples flujos; para comparar el valor de similitud para cada flujo de los múltiples flujos con un umbral; para identificar, basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos, en donde L es menor que N; y para codificar el número L identificado de flujos para generar un flujo de bits codificado.
En otra implementación particular, un método incluye recibir, en un codificador de audio, múltiples flujos de datos de audio, en donde N es el número de los múltiples flujos recibidos, y determinar un valor de similitud para cada flujo de los múltiples flujos. El método incluye comparar el valor de similitud para cada flujo de los múltiples flujos con un umbral e identificar, basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos, en donde L es menor que N. El método también incluye codificar el número L identificado de flujos para generar uno codificado.
En otra implementación particular, un aparato incluye unos medios para recibir múltiples flujos de datos de audio, en donde N es el número de los múltiples flujos recibidos, y ara determinar un valor de similitud para cada flujo de los múltiples flujos. El aparato incluye unos medios para comparar el valor de similitud para cada flujo de los múltiples flujos con un umbral y para identificar, basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos, en donde L es menor que N. El aparato también incluye unos medios para codificar el número L identificado de flujos para generar un flujo de bits codificado.
En otra implementación particular, un medio legible por ordenador no transitorio incluye instrucciones que, cuando son ejecutadas por un procesador dentro de un procesador, hacen que el procesador realice operaciones que incluyen recibir, en el codificador de audio, múltiples flujos de datos de audio. Las operaciones también incluyen recibir múltiples flujos de datos de audio, en donde N es el número recibido de los múltiples flujos, y determinar un valor de similitud para cada flujo de los múltiples flujos. Las operaciones incluyen comparar el valor de similitud para cada flujo de los múltiples flujos con un umbral e identificar, basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos, en donde L es menor que N. Las operaciones también incluyen codificar el número L identificado de flujos para generar un flujo de bits codificado.
Otras implementaciones, ventajas y características de la presente divulgación se harán evidentes después de revisar la totalidad de la solicitud, incluyendo las secciones siguientes:
Breve descripción de los dibujos, Descripción detallada y Reivindicaciones.
V. Breve descripción de los dibujos
La figura 1 es un diagrama de bloques de un ejemplo ilustrativo particular de un sistema que incluye un códec de servicios de audio y de voz inmersivos (IVAS) que se puede hacer funcionar para realizar una codificación de múltiples flujos.
La figura 2 es un diagrama de bloques de otro ejemplo particular de un sistema que incluye el códec de la figura 1.
La figura 3 es un diagrama de bloques de componentes que se pueden incluir en el códec de IVAS de la figura 1.
La figura 4 es un diagrama que ilustra un ejemplo de un formato de trama de flujo de bits de salida que puede ser generado por el códec de IVAS de la figura 1.
La figura 5 es un diagrama de flujo de un ejemplo particular de un método de codificación de múltiples flujos.
La figura 6 es un diagrama de bloques de un ejemplo ilustrativo particular de un dispositivo móvil que se puede hacer funcionar para realizar una codificación de múltiples flujos.
La figura 7 es un diagrama de bloques de un ejemplo particular de una estación base que se puede hacer funcionar para realizar una codificación de múltiples flujos.
VI. Descripción detallada
A continuación se describen aspectos particulares de la presente divulgación con referencia a los dibujos. En la descripción, se designan características comunes mediante números de referencia comunes. Como se usa en el presente documento, se usa terminología diversa solo con el fin de describir implementaciones particulares y no se pretende que limite las implementaciones. Por ejemplo, se pretende que las formas singulares "un, "una" y "el / la" incluyan asimismo las formas plurales, a menos que el contexto indique claramente lo contrario. Se puede entender además que las expresiones "comprende" y "comprendiendo / que comprende" se pueden usar de forma intercambiable con "incluye" o "incluyendo / que incluye". Adicionalmente, se entenderá que la expresión "en donde" se puede usar de forma intercambiable con "donde". Como se usa en el presente documento, un término ordinal (por ejemplo, "primero", "segundo", "tercero", etc.) usado para modificar un elemento, tal como una estructura, un componente, una operación, etc., no indica por sí mismo prioridad u orden alguno del elemento con respecto a otro elemento, sino que más bien simplemente distingue el elemento frente a otro elemento que tiene un mismo nombre (salvo por el uso del término ordinal). Como se usa en el presente documento, el término "conjunto" se refiere a uno o más de un elemento particular, y el término "pluralidad" se refiere a múltiples (por ejemplo, dos o más) de un elemento particular.
En la presente divulgación, se pueden usar términos tales como "determinar", "calcular", "desplazar", "ajustar", etc., para describir cómo se realizan una o más operaciones. Se debería hacer notar que tales términos no se han de interpretar como limitantes y que se pueden utilizar otras técnicas para realizar operaciones similares. Adicionalmente, como se denominan en el presente documento, "generar", "calcular", "usar", "seleccionar", "acceder" y "determinar" se pueden usar de forma intercambiable. Por ejemplo, "generar", "calcular" o "determinar" un parámetro (o una señal) se puede referir a generar, calcular o determinar activamente el parámetro (o la señal) o se puede referir a usar, seleccionar o acceder al parámetro (o señal) que ya está generado, tal como por otro componente o dispositivo.
Se divulgan sistemas y dispositivos que se pueden hacer funcionar para codificar y descodificar múltiples señales de audio. Un dispositivo puede incluir un codificador configurado para codificar las múltiples señales de audio. Las múltiples señales de audio se pueden capturar de forma concurrente en el tiempo usando múltiples dispositivos de registro, por ejemplo, múltiples micrófonos. En algunos ejemplos, las múltiples señales de audio (o audio de múltiples canales) se pueden generar de forma sintética (por ejemplo, de forma artificial) multiplexando varios canales de audio que se registran al mismo tiempo o en instantes diferentes. Como ejemplos ilustrativos, el registro o multiplexación concurrente de los canales de audio puede dar como resultado una configuración de 2 canales (es decir, Estéreo: Izquierda y Derecha), una configuración de 5.1 canales (Izquierdo, Derecho, Centro, Envolvente Izquierdo, Envolvente Derecho y los canales de énfasis de baja frecuencia (LFE)), una configuración de 7.1 canales, una configuración de 7.1 4 canales, una configuración de 22.2 canales, o una configuración de N canales.
La figura 1 representa un ejemplo de un sistema 100 que incluye un dispositivo 101 que tiene múltiples micrófonos 130 acoplados a un procesador de audio de extremo frontal 104. El procesador de audio de extremo frontal 104 está acoplado a un códec 102, tal como un códec de servicios de audio y de voz inmersivos (IVAS) 102. El códec de IVAS 102 está configurado para generar un flujo de bits 126 que incluye datos codificados que se reciben a través de múltiples flujos de audio desde el procesador de audio de extremo frontal 104.
El códec de IVAS 102 incluye un módulo de prioridad de flujo 110 que está configurado para determinar una configuración de prioridad para algunos o todos los flujos de audio recibidos y para codificar los flujos de audio basándose en las prioridades determinadas (por ejemplo, un sonido perceptualmente más importante, más "crítico" para la escena, superposiciones de sonido de segundo plano por encima de los otros sonidos en una escena, direccionalidad en relación con difusividad, etc.), para generar el flujo de bits 126. En otra realización de ejemplo, el módulo de prioridad de flujo 110 puede determinar la secuencia de permutación o prioridad para la codificación basándose en los metadatos espaciales 124. El módulo de prioridad de flujo 110 también se puede denominar módulo de configuración de flujo o módulo de preanálisis de flujo. Determinar una configuración de prioridad para una pluralidad de los flujos de audio y codificar cada uno de los flujos de audio basándose en su prioridad posibilita que el códec de IVAS 102 asigne diferentes tasas de bits y que use diferentes modos de codificación, anchos de banda de codificación. En una realización de ejemplo, el códec de IVAS 102 puede asignar más bits a flujos que tienen una prioridad más alta que a flujos que tienen una prioridad más baja, dando como resultado un uso más eficaz de recursos de transmisión (por ejemplo, ancho de banda de transmisión inalámbrica) para enviar el flujo de bits 126 a un dispositivo de recepción. En otra realización de ejemplo, el códec de IVAS 102 puede codificar ascendiendo hasta banda súper ancha (es decir, ancho de banda ascendiendo hasta, por ejemplo, 16 kHz) para los flujos de configuración de prioridad más alta, mientras que codifica ascendiendo hasta solo banda ancha (es decir, ancho de banda ascendiendo hasta, por ejemplo, 8 kHz) para los flujos de configuración de prioridad más baja.
El códec de IVAS 102 incluye un módulo de selección de flujo 115 que está configurado para seleccionar un subconjunto de flujos de audio recibidos que serán codificados por un codificador de audio dentro del códec de IVAS 102. El módulo de selección de flujo 115 determina un valor de similitud para algunos o todos los flujos de audio recibidos y decide (o selecciona), basándose en el valor de similitud, cuál de los flujos de audio recibidos es necesario codificar o no es necesario codificar. El módulo de selección de flujo 115 compara el valor de similitud para cada flujo de los múltiples flujos con un umbral e identifica, basándose en la comparación, que puede ser necesario codificar solo un número L de flujos entre un número N de múltiples flujos de audio recibidos. El códec de IVAS 102 codifica entonces el número L identificado de flujos para generar un flujo de bits codificado. La codificación de un subconjunto (por ejemplo, L) de los flujos de audio recibidos (por ejemplo, N) por el códec de IVAS 102 puede dar como resultado un beneficio potencial de mejorar la calidad de flujos de audio codificados (codificados y, entonces, subsiguientemente descodificados), o de reducir las distorsiones de codificación permitiendo la codificación del número L seleccionado de flujos con más bits de los asignados inicialmente para la codificación de todos los recibidos. En algunas implementaciones, el códec de IVAS 102 todavía puede codificar todo el número N de múltiples flujos de audio recibidos pero, basándose en el valor de similitud, este puede ajustar parámetros de codificación.
El valor de similitud es un valor que indica si la codificación de un flujo particular entre los flujos de audio recibidos puede ser sorteada por el códec de IVAS 102 sin un impacto sobre la calidad (o con un impacto mínimo sobre la calidad) en un dispositivo de recepción que incluye un descodificador de audio. Como alternativa, el valor de similitud puede ser un valor que indica si un flujo particular entre los flujos de audio recibidos puede ser fácilmente reproducible por otro flujo entre los flujos de audio recibidos. Además, el valor de similitud puede ser un valor que indica si el flujo particular puede ser reproducible (o se puede sintetizar) suficientemente en el descodificador basándose en el mismo flujo o en un grupo de flujos procedentes de un instante de tiempo diferente (por ejemplo, el pasado). El valor de similitud también se puede denominar "un valor de criticidad", "un valor reproducible", "un valor de relevancia espacial" o "un valor de predictibilidad". Más detalles del valor de similitud se describen con detalle adicional con referencia a las figuras 3 -4.
Los micrófonos 130 incluyen un primer micrófono 106, un segundo micrófono 107, un tercer micrófono 108 y un M-ésimo micrófono 109 (M es un número entero positivo). Por ejemplo, el dispositivo 101 puede incluir un teléfono móvil, y los micrófonos 106- 109 se pueden situar en diversas ubicaciones del dispositivo 101 para posibilitar la captura de sonido que se origina en diversas fuentes. A título ilustrativo, en una implementación particular, uno o más de los micrófonos 130 están situados para capturar habla procedente de un usuario (por ejemplo, durante una llamada de teléfono o teleconferencia), uno o más de los micrófonos 130 están situados para capturar audio procedente de otras fuentes (por ejemplo, para capturar audio tridimensional (3D) durante una operación de registro de vídeo), y uno o más de los micrófonos 130 están configurados para capturar audio de segundo plano. En una implementación particular, dos o más de los micrófonos 130 se disponen en una agrupación u otra configuración para posibilitar técnicas de procesamiento de audio tales como cancelación de eco o formación de haces, como ejemplos ilustrativos y no limitantes. Cada uno de los micrófonos 106- 109 está configurado para emitir una señal de audio 120-123 respectiva.
El procesador de audio de extremo frontal 104 está configurado para recibir las señales de audio 136- 139 desde los micrófonos 130 y para procesar las señales de audio 136- 139 para generar unos datos de audio con formato de múltiples flujos 122. En una implementación particular, el procesador de audio de extremo frontal 104 está configurado para realizar una o más operaciones de audio, tales como cancelación de eco, supresión de ruido, formación de haces o cualquier combinación de los mismos, como ejemplos ilustrativos y no limitantes.
El procesador de audio de extremo frontal 104 está configurado para generar flujos de datos de audio resultantes de las operaciones de audio, tales como un primer flujo 131, un segundo flujo 132 y un N-ésimo flujo 133 (N es un número entero positivo). En una implementación particular, los flujos 131-133 incluyen datos de modulación por codificación de pulsos (PCM) y tienen un formato que es compatible con un formato de entrada del códec de IVAS 102.
Por ejemplo, en algunas implementaciones, los flujos 131 -133 tienen un formato estéreo con el número "N" de canales a codificar igual a dos. Los canales pueden estar correlacionados o pueden no estar correlacionados. El dispositivo 101 puede soportar dos o más micrófonos 130, y el procesador de audio de extremo frontal 104 se puede configurar para realizar cancelación de eco, supresión de ruido, formación de haces o una combinación de los mismos, para generar una señal estéreo con una relación de señal con respecto a ruido (SNR) mejorada sin alterar la calidad estéreo / espacial de la señal estéreo generada en relación con la señal estéreo original recibida desde los micrófonos 130.
En otra implementación, los flujos 131 -133 son generados por el procesador de audio de extremo frontal 104 para tener un formato basándose en el formato Ambisonics, o audio basado en escenas (SBA) en el que los canales pueden incluir, a veces, coeficientes descompuestos en autovalores, correspondientes a la escena de sonido. En otras implementaciones, los flujos 131-133 son generados por el procesador de audio de extremo frontal 104 para tener un formato correspondiente a una configuración de múltiples canales (MC), tal como una configuración de sonido envolvente 5.1 o 7.1, como ejemplos ilustrativos y no limitantes.
En otras implementaciones alternativas, los flujos de audio 131 -133 que se pueden proporcionar al Códec de IVAS 102 se pueden haber recibido de manera diferente a cualquiera de los ejemplos de procesamiento de extremo frontal ilustrados anteriormente.
En algunas implementaciones, los flujos 131 -133 tienen un formato de flujos independientes (IS) en el que dos o más de las señales de audio 136- 139 se procesan para estimar las características espaciales (por ejemplo, azimut, elevación, etc.) de las fuentes de sonido. Las señales de audio 136- 139 se correlacionan con flujos independientes correspondientes a fuentes de sonido y los metadatos espaciales 124 correspondientes.
En algunas implementaciones, el procesador de audio de extremo frontal 104 está configurado para proporcionar la información de configuración de prioridad al códec de IVAS 102 para indicar una prioridad o importancia relativa de uno o más de los flujos 131 -133. Por ejemplo, cuando el dispositivo 101 es accionado por un usuario en un modo telefónico, un flujo particular asociado con el habla del usuario puede ser designado por el procesador de audio de extremo frontal 104 como que tiene una prioridad más alta que los otros flujos emitidos al códec de IVAS 102.
En algunas implementaciones, el procesador de audio de extremo frontal 104 está configurado para proporcionar un valor de similitud para cada uno o más de los flujos 131 -133 al códec de IVAS 102 basándose en su análisis para indicar si la predicción o reproducción de cualquier trama particular (por ejemplo, la trama i) de cualquier flujo particular (por ejemplo, un primer flujo 131) es difícil o fácil basándose en 1) una trama previa (por ejemplo, la trama i -1 ) del mismo flujo particular (por ejemplo, un primer flujo 131), 2) una trama correspondiente (por ejemplo, la trama i) de cualquiera de otros flujos (por ejemplo, un segundo flujo 132 o un N-ésimo flujo 133), o 3) o cualquier combinación de los mismos.
El códec de IVAS 102 está configurado para codificar los datos de audio con formato de múltiples flujos 122 para generar el flujo de bits 126. El códec de IVAS 102 está configurado para realizar una codificación de los datos de audio de múltiples flujos 122 usando uno o más codificadores dentro del códec de IVAS 102, tal como un codificador de predicción lineal excitada por código algebraico (ACELP) para el habla y un codificador en el dominio de la frecuencia (por ejemplo, de transformada de coseno discreta modificada (MDCT)) para un audio que no es de habla. El códec de IVAS 102 está configurado para codificar datos que se reciben a través de uno o más de un formato estéreo, un formato de SBA, un formato de flujos independientes (IS), un formato de múltiples canales, otros uno o más formatos, 0 cualquier combinación de los mismos.
El módulo de prioridad de flujo 110 está configurado para asignar una prioridad a algunos o todos los flujos 131 -133 en los datos de audio con formato de múltiples flujos 122. El módulo de prioridad de flujo 110 está configurado para determinar una prioridad para una pluralidad de los flujos basándose en una o más características de la señal correspondiente al flujo, tales como energía de señal, primer plano frente a segundo plano, tipo de contenido o entropía, como ejemplos ilustrativos y no limitantes. En una implementación en la que el módulo de prioridad de flujo 110 recibe información de prioridad de flujo (por ejemplo, la información puede incluir tasas de bits iniciales o tentativas para cada flujo, configuración de prioridad u ordenación de cada uno de los flujos, información de agrupación basándose en la clasificación de escena, frecuencia de muestreo o ancho de banda de los flujos, otra información, o una combinación de los mismos) desde el procesador de audio de extremo frontal 104, el módulo de prioridad de flujo 110 puede asignar una prioridad a la pluralidad de los flujos 131 -133 al menos parcialmente basándose en la información de prioridad de flujo recibida. Un ejemplo ilustrativo de determinación de prioridad de flujos de audio se describe con detalle adicional con referencia a la figura 3.
El códec de IVAS 102 está configurado para determinar, basándose en la prioridad de cada uno de los múltiples flujos, una secuencia de análisis y de codificación de los múltiples flujos (por ejemplo, una secuencia de codificación de tramas de cada uno de los múltiples flujos). En una implementación particular, los flujos que tienen una prioridad más alta se codifican antes de codificar flujos que tienen una prioridad más baja. A título ilustrativo, el flujo que tiene la prioridad más alta de los flujos 131 -133 se codifica antes de codificar los otros flujos, y el flujo que tiene la prioridad más baja de los flujos 131-133 se codifica después de codificar los otros flujos.
El códec de IVAS 102 está configurado para codificar flujos que tienen una prioridad más alta usando una tasa de bits más alta que la que se usa para codificar flujos que tienen una prioridad más baja para la mayoría de las tramas. Por ejemplo, se pueden usar el doble de bits para codificar una porción (por ejemplo, una trama) de un flujo de prioridad alta en comparación con un número de bits usados para codificar una porción de igual tamaño (por ejemplo, una trama) de un flujo de prioridad baja. Debido a que una tasa de bits global para la transmisión de los flujos codificados a través del flujo de bits 126 está limitada por un ancho de banda de transmisión disponible para el flujo de bits 126, la codificación de flujos de prioridad más alta con tasas de bits más altas proporciona un número más grande de bits para transmitir la información de flujos de prioridad más alta, lo que posibilita una reproducción de precisión más alta de los flujos de prioridad más alta en un receptor en comparación con una reproducción de precisión más baja que es habilitada por el número más bajo de bits que transmiten la información de los flujos de prioridad más baja.
La determinación de la prioridad se puede realizar para cada sesión o cada porción o "trama" de una pluralidad de los datos de audio con formato de múltiples flujos 122 recibidos. En una implementación particular, cada flujo 131 -133 incluye una secuencia de tramas que están alineadas o sincronizadas temporalmente con las tramas de los otros de los flujos 131 -133. El módulo de prioridad de flujo 110 se puede configurar para procesar los flujos 131 -133 trama a trama. Por ejemplo, el módulo de prioridad de flujo 110 se puede configurar para recibir una i-ésima trama (en donde 1 es un número entero) de cada uno de los flujos 131 -133, analizar una o más características de cada flujo 131-133 para determinar una prioridad para el flujo correspondiente a la i-ésima trama, generar una secuencia de permutación para codificar la i-ésima trama de cada flujo 131-133 basándose en las prioridades determinadas, y codificar cada iésima trama de cada uno de los flujos 131 -133 de acuerdo con la secuencia de permutación. Después de codificar las i-ésimas tramas de los flujos 131 -133, el módulo de prioridad de flujo 110 continúa procesando una trama siguiente (por ejemplo, la trama i 1) de cada uno de los flujos 131 -133 determinando una prioridad para cada flujo basándose en las (i 1)-ésimas tramas, generando una secuencia de permutación para codificar las (i 1)-ésimas tramas, y codificando cada una de las (i 1)-ésimas tramas. Un ejemplo adicional de determinación de prioridad de flujo trama a trama y de generación de secuencia de codificación se describe con detalle adicional con referencia a la figura 3.
El módulo de selección de flujo 115 puede determinar un valor de similitud para cada flujo 131 -133 en los datos de audio con formato de múltiples flujos 122. El módulo de selección de flujo 115 puede determinar un valor de similitud para cada uno de los flujos basándose en una o más características de la señal correspondiente al flujo. Los ejemplos no limitantes de características de señal pueden incluir al menos uno de una ganancia de libro de códigos adaptativo, un nivel estacionario, un nivel no estacionario, un factor de sonorización, una variación de tono, energía de señal, detección de contenido de habla, un nivel suelo de ruido, una relación de señal con respecto a ruido, un nivel de escasez y una inclinación espectral.
En algunas implementaciones, el módulo de selección de flujo 115 puede determinar el valor de similitud para uno cualquiera de los flujos 131 -133 comparando una primera característica de señal de una primera trama de un primer flujo particular con una segunda característica de señal de al menos una trama previa del primer flujo particular (por ejemplo, una similitud temporal con una trama previa de su propio flujo). Adicionalmente, o como alternativa, el módulo de selección de flujo 115 puede determinar el valor de similitud para uno cualquiera de los flujos 131-133 comparando la primera característica de señal de la primera trama del primer flujo particular con una segunda característica de señal de una segunda trama de un segundo flujo particular (por ejemplo, una similitud temporal con una trama correspondiente de otro flujo), que es diferente del primer flujo particular. Adicionalmente, o como alternativa, el módulo de selección de flujo 115 puede determinar un valor de similitud para cada uno de los flujos 131 -133 basándose en la proximidad espacial entre los flujos 131 -133. En alguna implementación, el procesador de audio de extremo frontal 104 puede proporcionar información que indica características espaciales (por ejemplo, azimut, elevación, dirección de llegada, etc.) de la fuente de cada uno de los flujos 131 -133 al módulo de selección de flujo 115. Como alternativa, el módulo de selección de flujo 115 puede determinar un valor de similitud de un flujo particular de los flujos 131 -133 basándose en la combinación de similitud temporal y proximidad espacial entre los flujos 131 -133.
El módulo de selección de flujo 115 puede comparar el valor de similitud para cada uno de los flujos 131 -133 con un umbral. Basándose en la comparación, el módulo de selección de flujo 115 puede identificar que es necesario que un subconjunto (por ejemplo, L) de flujos de audio entre los flujos de audio recibidos (por ejemplo, N) sea codificado por un codificador de audio en el códec de IVAS 102. El módulo de selección de flujo 115 puede usar un umbral diferente para algunos de los flujos 131-133 en los datos de audio con formato de múltiples flujos 122. La codificación de un subconjunto de los flujos de audio recibidos por el códec de IVAS 102 puede dar como resultado un beneficio potencial de mejorar la calidad de flujos de audio codificados (codificados y, entonces, subsiguientemente descodificados), o de reducir las distorsiones de codificación permitiendo la codificación del número L seleccionado de flujos con más bits de los asignados inicialmente para la codificación de todos los recibidos. En algunas implementaciones, el módulo de selección de flujo 115 puede identificar que un primer flujo particular no se ha de codificar en respuesta a la determinación de que un primer valor de similitud del primer flujo particular no satisface un umbral (por ejemplo, un primer valor de similitud = 0). Adicionalmente, o como alternativa, el módulo de selección de flujo 115 puede identificar que un segundo flujo particular se ha de codificar en respuesta a la determinación de que un segundo valor de similitud del segundo flujo particular satisface el umbral (por ejemplo, un segundo valor de similitud = 1).
En algunas implementaciones, el módulo de selección de flujo 115 puede identificar que un primer flujo particular se ha de fusionar o combinar con un segundo flujo particular basándose en la determinación de que la proximidad espacial satisface un umbral (por ejemplo, el primer flujo particular y el segundo flujo particular tienen unas características espaciales similares). Se codifican el primer y el segundo flujo combinados. Adicionalmente, o como alternativa, el módulo de selección de flujo 115 puede identificar que un segundo flujo particular se ha de codificar en respuesta a la determinación de que un segundo valor de similitud del segundo flujo particular satisface el umbral (por ejemplo, un segundo valor de similitud = 1).
En algunas implementaciones, la determinación de qué flujos se codificarán o no se codificarán (por ejemplo, la determinación del valor de similitud para cada flujo de audio recibido) puede ser decidida de forma iterativa por el códec de IVAS 102. Por ejemplo, el códec de IVAS 102 puede seleccionar un primer subconjunto de flujos entre los flujos de audio recibidos que se codificarán (o no se codificarán) basándose en un primer criterio. Entonces, el códec de IVAS 102 puede seleccionar un segundo subconjunto de flujos entre el primer subconjunto de flujos que se codificarán (o no se codificarán) basándose en un segundo criterio. Como alternativa, la determinación de qué flujos se codificarán o no se codificarán (por ejemplo, la determinación del valor de similitud para cada flujo de audio recibido) puede ser decidida de una forma en lazo cerrado por el códec de IVAS 102. Por ejemplo, la determinación de lazo cerrado se puede implementar teniendo un descodificador de audio parcial o una síntesis dentro del códec de IVAS 102.
El códec de IVAS 102 está configurado para combinar las porciones codificadas de los flujos 131 -133 para generar el flujo de bits 126. En una implementación particular, el flujo de bits 126 tiene una estructura de trama en la que cada trama del flujo de bits 126 incluye una trama codificada de cada uno de los flujos 131 -133. En un ejemplo ilustrativo, una i-ésima trama del flujo de bits 126 incluye la i-ésima trama codificada de cada uno de los flujos 131 -133, junto con metadatos tales como un encabezado de trama, información de prioridad de flujo o información de tasa de bits, metadatos de ubicación, etc. Un ejemplo ilustrativo de un formato del flujo de bits 126 se describe con detalle adicional con referencia a la figura 4.
Durante el funcionamiento, el procesador de audio de extremo frontal 104 recibe las M señales de audio 136-139 desde los M micrófonos 106 - 109, respectivamente, y realiza un procesamiento de extremo frontal para generar los N flujos 131 -133. En algunas implementaciones, N es igual a M, pero, en otras implementaciones, N no es igual a M. Por ejemplo, M es mayor que N cuando múltiples señales de audio desde los micrófonos 106- 109 se combinan a través de formación de haces en un único flujo.
El formato de los flujos 131 -133 se puede determinar basándose en las posiciones del micrófono 106 - 109, los tipos de micrófonos o una combinación de los mismos. En algunas implementaciones, el formato de flujo es configurado por un fabricante del dispositivo 101. En algunas implementaciones, el formato de flujo es controlado o configurado por el procesador de audio de extremo frontal 104 al códec de IVAS 102 basándose en un escenario de aplicación (por ejemplo, conversación bidireccional, conferencias) del dispositivo 101. En otros casos, el formato de flujo también se puede negociar entre el dispositivo 101 y un dispositivo destinatario del flujo de bits 126 correspondiente (por ejemplo, un dispositivo que contiene un descodificador de IVAS que descodifica el flujo de bits 126) en caso de casos de uso de comunicación conversacional o transmisión de flujo continuo. Los metadatos espaciales 124 se generan y se proporcionan al códec de IVAS 102 en ciertas circunstancias, tales como, por ejemplo, cuando los flujos 121 -124 tienen el formato de flujos independientes (IS). En otros formatos, por ejemplo, estéreo, SBA, MC, los metadatos espaciales 124 se pueden inferir parcialmente del procesador de audio de extremo frontal 104. En una realización de ejemplo, los metadatos espaciales pueden ser diferentes para los diferentes formatos de entrada y también se pueden incrustar en los flujos de entrada.
El códec de IVAS 102 analiza los flujos 131 -133 y determina una configuración de prioridad de cada uno de los flujos 131 -133. El códec de IVAS 102 asigna unas tasas de bits más altas a flujos que tienen la prioridad más alta y unas tasas de bits más bajas a flujos que tienen una prioridad más baja. El códec de IVAS 102 codifica los flujos 131 -133 basándose en la prioridad y combina los datos de flujo codificados resultantes para generar el flujo de bits 126 de salida.
Determinar una prioridad o un valor que indica una prioridad ("un valor de prioridad") de cada uno de los flujos de audio 131-133 y codificar cada flujo de audio basándose en su prioridad posibilita que el códec de IVAS 102 asigne unas tasas de bits más altas a flujos que tienen una prioridad más alta y unas tasas de bits más bajas a flujos que tienen una prioridad más baja. Debido a que la codificación de una señal usando una tasa de bits más alta posibilita una reproducción de precisión más alta de la señal original en un dispositivo de recepción, se puede lograr una precisión más alta en el dispositivo de recepción durante la reconstrucción de flujos de audio más importantes, tales como habla, en comparación con una precisión más baja de reproducción de los flujos de audio de prioridad más baja, tales como ruido de segundo plano. Como resultado, se usan recursos de transmisión de forma más eficaz cuando el flujo de bits 126 se envía a un dispositivo de recepción.
Aunque se ilustra que el sistema 100 incluye cuatro micrófonos 106- 109 (por ejemplo, M = 4), en otras implementaciones, el sistema 100 puede incluir un número diferente de micrófonos, tal como dos micrófonos, tres micrófonos, cinco micrófonos o más de cinco micrófonos. Aunque se ilustra que el sistema 100 genera tres flujos de audio 131 -133 (por ejemplo, N = 3), en otras implementaciones, el sistema 100 puede generar un número diferente de flujos de audio, tal como dos flujos de audio, cuatro flujos de audio o más de cuatro flujos de audio. Aunque se describe que el procesador de audio de extremo frontal 104 proporciona unos metadatos espaciales 124 para soportar uno o más formatos de audio, tales como un formato de flujos independientes (IS), en otras implementaciones, el procesador de audio de extremo frontal 104 puede no proporcionar metadatos espaciales al códec de IVAS 102, tal como una implementación en la que el procesador de audio de extremo frontal 104 no proporciona unos metadatos espaciales explícitos sino que se incorporan en los propios flujos, por ejemplo, construyendo un flujo primario y otros flujos secundarios para reflejar los metadatos espaciales. Aunque el sistema 100 se implementa en un único dispositivo 101, en otras implementaciones, una o más porciones del sistema 100 se pueden implementar en dispositivos separados. Por ejemplo, uno o más de los micrófonos 106 - 109 se pueden implementar en un dispositivo (por ejemplo, un conjunto inalámbrico de auriculares con micrófono) que está acoplado al procesador de audio de extremo frontal 104, el procesador de audio de extremo frontal 104 se puede implementar en un dispositivo que es independiente de, pero está acoplado comunicativamente a, el códec de IVAS 102, o una combinación de los mismos.
La figura 2 representa un sistema 200 que incluye el códec de IVAS 102 acoplado a un códec de recepción 210 (por ejemplo, un códec de IVAS) a través de una red 216. Un circuito de representación y de binauralización 218 está acoplado a una salida del códec de recepción 210. El códec de IVAS 102 está acoplado a un conmutador 220 u otra interfaz de entrada configurada para recibir múltiples flujos de datos de audio en uno de los múltiples formatos de datos de audio 222. Por ejemplo, el conmutador 220 se puede configurar para seleccionar entre diversos tipos de entrada, incluyendo N = 2 flujos de audio que tienen un formato estéreo de múltiples flujos 231, flujos de audio que tienen un formato de SBA 232 (por ejemplo, N = 4 a 49), flujos de audio que tienen un formato de múltiples canales 233 (por ejemplo, N = 6 (por ejemplo, 5.1) a 12 (por ejemplo, 7.1 4)), o flujos de audio que tienen un formato de flujos independientes 234 (por ejemplo, N = 1 a 8, más metadatos espaciales), como ejemplos ilustrativos y no limitantes. En una implementación particular, el conmutador 220 está acoplado a un procesador de audio que genera los flujos de audio, tal como el procesador de audio de extremo frontal 104 de la figura 1, y se puede configurar para seleccionar dinámicamente entre tipos de entrada o una combinación de formatos de entrada (por ejemplo, conmutación sobre la marcha).
El códec de IVAS 102 incluye un preprocesador de formato 202 acoplado a un codificador medular 204. El preprocesador de formato 202 está configurado para realizar una o más funciones de preprocesamiento, tales como mezcla descendente (DMX), descorrelación, etc. Una salida del preprocesador de formato 202 se proporciona al codificador medular 204. El codificador medular 204 incluye el módulo de prioridad de flujo 110 de la figura 1 y está configurado para determinar prioridades de cada flujo de audio recibido y para codificar cada uno de los flujos de audio de tal modo que los flujos de prioridad más alta se codifican, por ejemplo, usando tasas de bits más altas, ancho de banda ampliado; y los flujos de prioridad más baja se codifican, por ejemplo, usando tasas de bits más bajas, ancho de banda reducido. El codificador medular 204 incluye el módulo de selección de flujo 115 de la figura 1 y está configurado para determinar valores de similitud de cada flujo de audio recibido e identificar un subconjunto de flujos de audio a codificar entre los flujos de audio recibidos.
El códec de recepción 210 está configurado para recibir, a través de la red 216, el flujo de bits 126 desde el códec de IVAS 102. Por ejemplo, la red 216 puede incluir una o más redes inalámbricas, una o más redes alámbricas o cualquier combinación de las mismas. En una implementación particular, la red 216 incluye una red de voz de 4G / 5G sobre evolución a largo plazo (VoLTE) o de voz sobre Wi-Fi (VoWiFi).
El códec de recepción 210 incluye un descodificador medular 212 acoplado a un postprocesador de formato 214. El descodificador medular 212 está configurado para descodificar las porciones codificadas de los flujos de audio codificados en el flujo de bits 216 para generar flujos de audio descodificados. Por ejemplo, el descodificador medular 212 puede generar una primera versión descodificada del primer flujo de audio 131 de la figura 1, una segunda versión descodificada del segundo flujo de audio 132 de la figura 1, y una tercera versión descodificada del tercer flujo de audio 133 de la figura 1. Las versiones descodificadas de los flujos de audio pueden diferir de los flujos de audio 131 -133 originales debido a un ancho de banda de transmisión restringido en la red 216, o a una compresión con pérdida. Sin embargo, debido a que los flujos de audio que tienen una prioridad más alta se codifican con una tasa de bits más alta, las versiones descodificadas de los flujos de prioridad más alta son, habitualmente, reproducciones de precisión más alta de los flujos de audio originales que las versiones descodificadas de los flujos de prioridad más baja. Por ejemplo, las fuentes direccionales se codifican con una configuración o resolución de prioridad más alta, mientras que fuentes o sonidos más difusos se pueden codificar con una configuración de prioridad más baja. La codificación de sonidos difusos puede depender más del modelado (por ejemplo, reverberación, dispersión) basándose en tramas pasadas que en los sonidos direccionales.
El descodificador medular 212 está configurado para realizar un método de borrado de tramas basándose en la información incluida en el flujo de bits 216 para generar flujos de audio descodificados. Por ejemplo, el descodificador medular 212 puede generar una primera versión descodificada del primer flujo de audio 131 de la figura 1 y una segunda versión descodificada del segundo flujo de audio 132 de la figura 1 descodificando las porciones codificadas de los flujos de audio 131 132 codificados dentro del flujo de bits 216. El descodificador medular 212 puede generar una tercera versión descodificada del tercer flujo de audio 133 de la figura 1 realizando un método de borrado de tramas. El descodificador medular puede realizar un método de borrado de tramas basándose en la información incluida en el flujo de bits 216. Por ejemplo, esta información puede incluir un valor de similitud del tercer flujo de audio 133.
El descodificador medular 212 está configurado para enviar las versiones descodificadas de los flujos de audio al postprocesador de formato 214. El postprocesador de formato 214 está configurado para procesar las versiones descodificadas de los flujos de audio para tener un formato que es compatible con el circuito de representación y de binauralización 218. En una implementación particular, el postprocesador de formato 214 está configurado para soportar formato estéreo, formato de SBA, formato de múltiples canales y formato de flujos independientes (IS), y está configurado para consultar una capacidad de formato del circuito de representación y de binauralización 218 para seleccionar un formato de salida apropiado. El postprocesador de formato 214 está configurado para aplicar el formato seleccionado a las versiones descodificadas de los flujos de audio para generar unos flujos descodificados con formato 240.
El circuito de representación y de binauralización 218 está configurado para recibir los flujos descodificados con formato 240 y para realizar un procesamiento de representación y de binauralización para generar una o más señales de salida 242. Por ejemplo, en una implementación en la que unos metadatos espaciales correspondientes a fuentes de audio se proporcionan a través del flujo de bits 126 (por ejemplo, una implementación de codificación de flujos independientes) y son soportados por el circuito de representación y de binauralización 218, los metadatos espaciales se usan durante la generación de las señales de audio 242 de tal modo que se emulan características espaciales de las fuentes de audio durante la reproducción en un dispositivo de salida (por ejemplo, auriculares o un sistema de altavoces) acoplado al circuito de representación y de binauralización 218. En otro ejemplo, en una implementación en la que no se proporcionan metadatos espaciales correspondientes a las fuentes de audio, el circuito de representación y de binauralización 218 puede elegir localmente la ubicación física de las fuentes en el espacio.
Durante el funcionamiento, se reciben flujos de audio en el códec de IVAS 102 a través del conmutador 220. Por ejemplo, los flujos de audio se pueden recibir desde el procesador de audio de extremo frontal 104 de la figura 1. Los flujos de audio recibidos tienen uno o más de los formatos 222 que son compatibles con el códec de IVAS 102.
El preprocesador de formato 202 realiza un preprocesamiento de formato sobre los flujos de audio y proporciona los flujos de audio preprocesados al codificador medular 204. El codificador medular 204 realiza una codificación basada en prioridad como se describe en la figura 1 en los flujos de audio preprocesados y genera el flujo de bits 126. El flujo de bits 126 puede tener una tasa de bits que se determina basándose en una tasa de bits de transmisión entre el códec de IVAS 102 y el códec de recepción 210 a través de la red 216. Por ejemplo, el códec de IVAS 102 y el códec de recepción 210 pueden negociar una tasa de bits del flujo de bits 126 basándose en una condición de canal de la red 216, y la tasa de bits se puede ajustar durante la transmisión del flujo de bits 126 en respuesta a unas condiciones de red cambiantes. El códec de IVAS 102 puede repartir bits para portar información codificada de cada uno de los flujos de audio preprocesados basándose en la prioridad relativa de los flujos de audio, de tal modo que los flujos de audio codificados combinados en el flujo de bits 126 no superan la tasa de bits negociada. El códec de IVAS 102 puede, dependiendo de la tasa de bits total disponible para codificar los flujos independientes, determinar no codificar uno o más flujos y codificar solo uno o más flujos seleccionados basándose en la configuración de prioridad y en el orden de permutación de los flujos. En una realización de ejemplo, la tasa de bits total es de 24,4 kbps y hay tres flujos independientes a codificar. Basándose en las condiciones de red, si la tasa de bits total se reduce a 13,2 kbps, entonces el códec de IVAS 102 puede decidir codificar solo 2 flujos independientes de entre los tres flujos de entrada para conservar la calidad de señal intrínseca de la sesión al tiempo que se sacrifica parcialmente la calidad espacial. Basándose en las características de red, cuando la tasa de bits total se aumenta de nuevo a 24,4 kbps, entonces el códec de IVAS 102 puede reanudar la codificación de, nominalmente, la totalidad de los tres flujos.
El descodificador medular 212 recibe y descodifica el flujo de bits 126 para generar versiones descodificadas de los flujos de audio preprocesados. El postprocesador de formato 214 procesa las versiones descodificadas para generar los flujos descodificados con formato 240 que tienen un formato compatible con el circuito de representación y de binauralización 218. El circuito de representación y de binauralización 218 genera las señales de audio 242 para su reproducción por un dispositivo de salida (por ejemplo, auriculares, altavoces, etc.).
En algunas implementaciones, un codificador medular o el códec de IVAS 102 está configurado para realizar una codificación independiente de 1 a 6 flujos o una codificación conjunta de 1 a 3 flujos o una mezcla de algunos flujos independientes y algunos flujos conjuntos, en donde una codificación conjunta es una codificación de pares de flujos conjuntamente, y un descodificador medular del códec de receptor 210 está configurado para realizar una descodificación independiente de 1 a 6 flujos o una descodificación conjunta de 1 a 3 flujos o una mezcla de algunos flujos independientes y flujos conjuntos. En otras implementaciones, el codificador medular del códec de IVAS 102 está configurado para realizar una codificación independiente de 7 o más flujos o una codificación conjunta de 4 o más flujos, y el descodificador medular del códec de receptor 210 está configurado para realizar una descodificación independiente de 7 o más flujos o una descodificación conjunta de 4 o más flujos
El formato de los flujos de audio recibidos en el códec de IVAS 102 puede diferir del formato de los flujos 240 descodificados. Por ejemplo, el códec de IVAS 102 puede recibir y codificar los flujos de audio que tienen un primer formato, tal como el formato de flujos independientes 234, y el códec de recepción 210 puede emitir los flujos descodificados 240 que tienen un segundo formato, tal como un formato de múltiples canales. Por lo tanto, el códec de IVAS 102 y el códec de recepción 210 posibilitan una transferencia de datos de audio de múltiples flujos entre dispositivos que, de lo contrario, serían incapaces de tal transferencia debido al uso de formatos de audio de múltiples flujos incompatibles. Además, soportar múltiples formatos de flujo de audio posibilita implementar códecs de IVAS en una diversidad de productos y dispositivos que soportan uno o más de los formatos de flujo de audio, con poco o ningún rediseño o modificación de tales productos o dispositivos.
En la Tabla 1 se representa un ejemplo ilustrativo de una interfaz de entrada en pseudocódigo para un codificador de IVAS (por ejemplo, el códec de iVa S 102).
Tabla 1
Figure imgf000010_0001
En la Tabla 1, IVAS_ENC.exe es una orden para iniciar una codificación en el codificador de IVAS de acuerdo con los parámetros de línea de órdenes a continuación de la orden. <N> indica un número de flujos a codificar. "-IS" es un indicador opcional que identifica una descodificación de acuerdo con un formato de flujos independientes. Los parámetros <1: 01, cp1; 2: 02, 92; ... N: 0N, 9N > a continuación del indicador -IS indican una serie de: números de flujo (por ejemplo, 1), un valor de azimut para un número de cadena (por ejemplo, 01) y un valor de elevación para el número de cadena (por ejemplo, p1). En un ejemplo particular, estos parámetros corresponden a los metadatos espaciales 124 de la figura 1.
El parámetro <tasabits_total> corresponde a la tasa de bits total para codificar los N flujos independientes que se muestrean en <tasamuestras>. En otra implementación, cada flujo independiente se puede codificar a una tasa de bits dada y / o puede tener una frecuencia de muestreo diferente (por ejemplo, IS1 (flujo independiente 1): 10 kilobits por segundo (kbps), contenido de banda ancha (WB), IS2: 20 kbps, contenido de banda súper ancha (SWB), IS3: 2,0 kbps, ruido de confort de SWB).
El parámetro <entrada> identifica los datos de flujo de entrada (por ejemplo, un puntero a flujos entrelazados desde el procesador de audio de extremo frontal 104 de la figura 1 (por ejemplo, una memoria intermedia que almacena los flujos entrelazados 131 -133)). El parámetro <flujobits> identifica el flujo de bits de salida (por ejemplo, un puntero a una memoria intermedia de salida para el flujo de bits 126).
IVAS_DEC.exe es una orden para iniciar una codificación en el codificador de IVAS de acuerdo con los parámetros de la línea de órdenes que siguen a la orden, "-binaural" es un indicador de orden opcional que indica un formato de salida binaural. <N> indica un número de flujos a descodificar,<tasamuestras> indica una frecuencia de muestreo de los flujos (o, como alternativa, proporciona una frecuencia de muestreo distinta para cada uno de los flujos),<flujobits> indica el flujo de bits a descodificar (por ejemplo, el flujo de bits 126 recibido en el códec de recepción 210 de la figura 2) y <salida> indica una salida para los flujos de bits descodificados (por ejemplo, un puntero a una memoria intermedia que recibe los flujos de bits descodificados en una configuración entrelazada, tal como un entrelazado trama a trama o un flujo continuo de datos entrelazados a reproducir en un tiempo real de dispositivo físico).
La figura 3 representa un ejemplo 300 de componentes que se pueden implementar en el códec de IVAS 102. Un primer conjunto de memorias intermedias 306 para datos de flujo no codificados y un segundo conjunto de memorias intermedias 308 para datos de flujo codificados están acoplados a un codificador medular 302. El módulo de prioridad de flujo 110 está acoplado al codificador medular 302 y a un estimador de tasa de bits 304. El módulo de selección de flujo 115 está acoplado al codificador medular 302. Un empaquetador de tramas 310 está acoplado al segundo conjunto de memorias intermedias 308.
Las memorias intermedias 306 están configuradas para recibir los datos de audio con formato de múltiples flujos 122, a través de múltiples flujos recibidos por separado o entrelazados. Cada una de las memorias intermedias 306 se puede configurar para almacenar al menos una trama de un flujo correspondiente. En un ejemplo ilustrativo, una primera memoria intermedia 321 almacena una i-ésima trama del primer flujo 131, una segunda memoria intermedia 322 almacena una i-ésima trama del segundo flujo 132, y una tercera memoria intermedia 323 almacena una i-ésima trama del tercer flujo 133. Después de que se haya codificado cada una de las i-ésimas tramas, cada una de las memorias intermedias 321 - 323 puede recibir y almacenar datos correspondientes a una trama siguiente (una (i 1)-ésima trama) de su flujo 131-133 respectivo. En una implementación canalizada, cada una de las memorias intermedias 306 está dimensionada para almacenar múltiples tramas de su flujo 131 -133 respectivo para posibilitar que se realice un preanálisis sobre una trama de un flujo de audio mientras se realiza una codificación sobre otra trama del flujo de audio.
El modelo de prioridad de flujo 110 está configurado para acceder a los datos de flujo en las memorias intermedias 321 - 323 y para realizar otro "preanálisis" de cada flujo para determinar prioridades correspondientes a los flujos individuales. En algunas implementaciones, el módulo de prioridad de flujo 110 está configurado para asignar una prioridad más alta a flujos que tienen una energía de señal más alta y una prioridad más baja a flujos que tienen una energía de señal más baja. En algunas implementaciones, el módulo de prioridad de flujo 110 está configurado para determinar si cada flujo corresponde a una fuente de audio de segundo plano o a una fuente de audio de primer plano y para asignar una prioridad más alta a flujos correspondientes a fuentes de primer plano y una prioridad más baja a flujos correspondientes a fuentes de segundo plano. En algunas implementaciones, el módulo de prioridad de flujo 110 está configurado para asignar una prioridad más alta a flujos que tienen tipos particulares de contenido, tal como asignar una prioridad más alta a flujos en los que se detecta un contenido de habla y una prioridad más baja a flujos en los que no se detecta un contenido de habla. En algunas implementaciones, el módulo de prioridad de flujo 110 está configurado para asignar una prioridad basándose en una entropía de cada uno de los flujos. En un ejemplo ilustrativo, a los flujos de entropía más alta se les asigna una prioridad más alta y a los flujos de entropía más baja se les asigna una prioridad más baja. En algunas implementaciones, el módulo de prioridad de flujo 110 también puede configurar el orden de permutación basándose, por ejemplo, en un sonido perceptualmente más importante, más "crítico" para la escena, superposiciones de sonido de segundo plano por encima de los otros sonidos en una escena, direccionalidad en relación con difusividad, otros uno o más factores, o cualquier combinación de los mismos.
En una implementación en la que el módulo de prioridad de flujo 110 recibe unos datos de prioridad externos 362, tales como información de prioridad de flujo desde el procesador de audio de extremo frontal 104, el módulo de prioridad de flujo 110 asigna una prioridad a los flujos al menos parcialmente basándose en la información de prioridad de flujo recibida. Por ejemplo, el procesador de audio de extremo frontal 104 puede indicar que uno o más de los micrófonos 130 corresponden a un micrófono de usuario durante una aplicación de teleconferencia, y puede indicar una prioridad relativamente alta para un flujo de audio que corresponde al micrófono de usuario. Aunque el módulo de prioridad de flujo 110 se puede configurar para determinar una prioridad de flujo al menos parcialmente basándose en la información de prioridad recibida, el módulo de prioridad de flujo 110 se puede configurar adicionalmente para determinar una información de prioridad de flujo que no se ciñe estrictamente a una información de prioridad de flujo recibida. Por ejemplo, aunque un flujo correspondiente a un micrófono de entrada de voz de usuario durante una aplicación de teleconferencia puede ser indicado como de prioridad alta por los datos de prioridad externos 362, el usuario puede estar en silencio durante algunos períodos de la conversación. En respuesta a que el flujo tenga una energía de señal relativamente baja debido al silencio del usuario, el módulo de prioridad de flujo 110 puede reducir la prioridad del flujo a una prioridad relativamente baja.
En algunas implementaciones, el modelo de prioridad de flujo 110 está configurado para determinar la prioridad de cada flujo para una trama particular (por ejemplo, la trama i) al menos parcialmente basándose en la prioridad del flujo 0 en las características para una o más tramas precedentes (por ejemplo, la trama (i -1), la trama (i - 2), etc.) Por ejemplo, las características de flujo y la prioridad de flujo pueden cambiar con relativa lentitud en comparación con una duración de trama, y la inclusión de datos históricos cuando se determina la prioridad de un flujo puede reducir los artefactos audibles durante la descodificación y reproducción del flujo que pueden ser resultado de variaciones de tasa de bits trama a trama grandes durante la codificación del flujo.
El módulo de prioridad de flujo 110 está configurado para determinar un orden de codificación de los flujos en las memorias intermedias 306 basándose en las prioridades 340. Por ejemplo, el módulo de prioridad de flujo 110 se puede configurar para asignar un valor de prioridad que varía de 5 (la prioridad más alta) a 1 (la prioridad más baja). El módulo de prioridad de flujo 110 puede clasificar flujos basándose en la prioridad de tal modo que unos flujos que tienen una prioridad de 5 están en un comienzo de una secuencia de codificación, seguidos de unos flujos que tienen una prioridad de 4, seguidos de unos flujos que tienen una prioridad de 3, seguidos de unos flujos que tienen una prioridad de 2, seguidos de unos flujos que tienen una prioridad de 1.
Una tabla 372 de ejemplo ilustra unas secuencias de codificación 376, 377 y 378 correspondientes a la trama (i - 2) 373, la trama (i - 1) 374 y la trama i 375, respectivamente, de los flujos. Para la trama i - 2373, el flujo "2" (por ejemplo, el flujo 132) tiene una prioridad que es la más alta y tiene una primera posición secuencial en la secuencia de codificación 376 correspondiente. El flujo "N" (por ejemplo, el flujo 133) tiene una prioridad que es la siguiente más alta y tiene una segunda posición secuencial en la secuencia de codificación 376. Uno o más flujos (no ilustrados) que tienen una prioridad más baja que el flujo N se pueden incluir en la secuencia 376 después del flujo N. El flujo "1" (por ejemplo, el flujo 131) tiene una prioridad que es la más baja y tiene una última posición secuencial en la secuencia de codificación 376. Por lo tanto, la secuencia de codificación 376 para codificar los flujos de la trama (i - 2) 373 es: 2, N, ..., 1.
La tabla 372 también ilustra que, para la trama secuencial ( i- 1) 374 siguiente, la secuencia de codificación 377 permanece sin cambios con respecto a la secuencia 376 para la trama (i - 2) 373. A título ilustrativo, las prioridades de cada uno de los flujos 131 -133 una en relación con otra para la trama (i - 1) 374 pueden permanecer sin cambios con respecto a las prioridades para la trama (i - 2) 373. Para una trama secuencial i 375 siguiente, se han conmutado las posiciones del flujo 1 y el flujo N en la secuencia de codificación 378. Por ejemplo, el flujo 2 puede corresponder a un usuario que habla durante una llamada de teléfono y se puede identificar como de prioridad alta (por ejemplo, prioridad = 5) debido a que el flujo tiene una energía de señal relativamente alta, habla detectada, una señal de primer plano, se indica como importante a través de los datos de prioridad externos 362, o una combinación de los mismos. El flujo 1 puede corresponder a un micrófono próximo a una segunda persona que está en silencio durante las tramas 1 - 2 e i-1 y que comienza a hablar durante la trama i. Durante las tramas i - 2 e i-1 , el flujo 1 se puede identificar como de prioridad baja (por ejemplo, prioridad = 1) debido a que el flujo tiene una energía de señal relativamente baja, sin habla detectada, una señal de primer plano, no se indica como importante a través de los datos de prioridad externos 362, o una combinación de los mismos. Sin embargo, después de capturar el habla de la segunda persona en la trama i, el flujo 1 se puede identificar como una señal de prioridad alta (por ejemplo, prioridad = 4) debido a que tiene una energía de señal relativamente alta, habla detectada y una señal de primer plano, aunque no se indica como importante a través de los datos de prioridad externos 362.
El modelo de selección de flujo 115 está configurado para acceder a los datos de flujo en las memorias intermedias 321 - 323 y para realizar otro "preanálisis" de cada flujo para determinar un valor de similitud 345 para cada flujo individual correspondiente. El valor de similitud 345 puede indicar si la codificación de un flujo particular entre los flujos de audio recibidos podría ser sorteada por el codificador medular 302 sin un impacto sobre la calidad (o con un impacto mínimo sobre la calidad) en un dispositivo de recepción. Como alternativa, el valor de similitud 345 puede indicar si un flujo particular entre los flujos de audio recibidos puede ser fácilmente reproducible o predecible por otro flujo entre los flujos de audio recibidos. El valor de similitud 345 puede tener un valor binario (por ejemplo, 1 o 0) o un valor de múltiples niveles (por ejemplo, 1 - 5). El valor de similitud 345 también se puede denominar "un valor de criticidad", "un valor reproducible" o "un valor de predictibilidad". Por ejemplo, si la trama i de un flujo particular puede ser fácilmente reproducible por un descodificador de audio en un dispositivo de recepción basándose en o bien al menos uno de tramas previas del mismo flujo particular o bien una trama i correspondiente de al menos otro flujo distinto, el codificador medular 302 puede sortear (u omitir) de forma ventajosa la codificación de la trama i del flujo particular. En algunas implementaciones, si el codificador medular 302 en un dispositivo de transmisión omitió la codificación de la trama i, el codificador medular 302 puede incrustar de forma ventajosa un valor en un flujo de bits 126 de tal modo que un descodificador de audio en un dispositivo de recepción, basándose en el valor, pueda realizar un borrado, tal como métodos de borrado de pérdida de paquetes o borrado de pérdida de tramas. En algunas implementaciones, el codificador medular 302 puede reducir, como alternativa, la tasa de bits para la trama i del flujo particular (desde la tasa de bits asignada inicialmente a una tasa de bits más baja).
En algunas implementaciones, el codificador medular 302 todavía puede codificar todo el número N de múltiples flujos de audio recibidos pero, basándose en el valor de similitud 345, este puede ajustar parámetros de codificación. Por ejemplo, determinar un valor de similitud 345 de cada uno de los flujos de audio recibidos puede posibilitar que el códec de IVAS 102 asigne diferentes tasas de bits y que use diferentes modos de codificación o anchos de banda de codificación. En una realización de ejemplo, el códec de IVAS 102 puede asignar más bits a flujos que tienen unos valores de similitud más bajos que a flujos que tienen unos valores de similitud más altos, dando como resultado un uso más eficaz de recursos de transmisión (por ejemplo, ancho de banda de transmisión inalámbrica) para enviar el flujo de bits 126 a un dispositivo de recepción. En otra realización de ejemplo, el códec de IVAS 102 puede codificar ascendiendo hasta banda súper ancha (es decir, ancho de banda ascendiendo hasta, por ejemplo, 16 kHz) para los flujos de audio que tienen unos valores de similitud más bajos, mientras que codifica descendiendo hasta solo banda ancha (es decir, ancho de banda ascendiendo hasta, por ejemplo, 8 kHz) o banda estrecha (es decir, ancho de banda ascendiendo hasta, por ejemplo, 4 kHz), los flujos de audio tienen unos valores de similitud más altos.
El módulo de selección de flujo 115 puede determinar un valor de similitud para cada uno de los flujos en las memorias intermedias 306 basándose en una o más características de la señal (por ejemplo, la trama i) correspondiente a los flujos en las memorias intermedias 306. Los ejemplos no limitantes de características de señal pueden incluir al menos uno de una ganancia de libro de códigos adaptativo, un nivel estacionario, un nivel no estacionario, un factor de sonorización, una variación de tono, energía de señal, detección de contenido de habla, un nivel suelo de ruido, una relación de señal con respecto a ruido, un nivel de escasez y una inclinación espectral. Se puede calcular un factor de sonorización por cada trama o subtrama y puede indicar cómo de probable será que una trama o subtrama particular sea una trama con voz o una subtrama con voz que tiene características periódicas (por ejemplo, un tono). Por ejemplo, se puede calcular un factor de sonorización basándose en una correlación de tono normalizada. Un nivel estacionario o un nivel no estacionario pueden indicar la medida en la que una trama o subtrama particular tiene unas características de señal estacionarias o no estacionarias. Se considera, en general, que las señales de habla con voz normales son cuasi estacionarias durante períodos de tiempo cortos (por ejemplo, 20 ms). Debido a la naturaleza cuasi periódica de la señal de habla con voz normal, en general la señal de habla con voz muestra un grado alto de predictibilidad en comparación con señales ruidosas o solo de ruido, que, en general, se consideran más no estacionarias que una señal de habla con voz. Una inclinación espectral puede ser un parámetro que indica información acerca de la distribución de frecuencia de la energía. La inclinación espectral se puede estimar en un dominio de la frecuencia como una relación entre la energía concentrada en bajas frecuencias y la energía concentrada en altas frecuencias. Se puede calcular una inclinación espectral por cada fotograma o por cada subtrama. Como alternativa, se puede calcular una inclinación espectral dos veces por cada trama.
En algunas implementaciones, el módulo de selección de flujo 115 puede determinar el valor de similitud para los flujos en las memorias intermedias 306 comparando una primera característica de señal de una primera trama de un primer flujo particular con una segunda característica de señal de al menos una trama previa del primer flujo particular. Por ejemplo, el módulo de selección de flujo 115 puede determinar el valor de similitud del flujo 131 en la primera memoria intermedia 321 comparando una primera característica de señal (por ejemplo, un factor de sonorización) de una primera trama (por ejemplo, la trama i) de un primer flujo particular (por ejemplo, el primer flujo 131 en la primera memoria intermedia 321) con una segunda característica de señal (por ejemplo, un factor de sonorización) de al menos una trama previa (por ejemplo, la trama i -1 ) del primer flujo particular (por ejemplo, el primer flujo 131 en la primera memoria intermedia 321). Adicionalmente, o como alternativa, el módulo de selección de flujo 115 puede determinar el valor de similitud para uno cualquiera de los flujos 131 -133 comparando la primera característica de señal de la primera trama del primer flujo particular con una segunda característica de señal de una segunda trama de un segundo flujo particular, que es diferente del primer flujo particular. Por ejemplo, el módulo de selección de flujo 115 puede determinar el valor de similitud del flujo 131 en la primera memoria intermedia 321 comparando la primera característica de señal (por ejemplo, una ganancia de libro de códigos adaptativo) de la primera trama (por ejemplo, la trama i) de un primer flujo particular (por ejemplo, el primer flujo 131 en la primera memoria intermedia 321) con una segunda característica de señal (por ejemplo, una ganancia de libro de códigos adaptativo) de una segunda trama (por ejemplo, la trama i) de un segundo flujo particular (por ejemplo, el segundo flujo 132 en la segunda memoria intermedia 322).
Adicionalmente, o como alternativa, el módulo de selección de flujo 115 puede determinar un valor de similitud 345 para cada uno de los flujos en las memorias intermedias 306 basándose en la proximidad espacial entre flujos en las memorias intermedias 306. La proximidad espacial entre flujos en las memorias intermedias 306 puede ser determinada por el módulo de selección de flujo 115 o, en algunas implementaciones, el procesador de audio de extremo frontal 104 de la figura 1 puede proporcionar información que indica características espaciales (por ejemplo, azimut, elevación, dirección de llegada, etc.) de la fuente de cada uno de los flujos 131-133 en las memorias intermedias 306 al módulo de selección de flujo 115. Por ejemplo, los metadatos espaciales 124 pueden incluir características espaciales estimadas o una información direccional estimada, tal como un valor de azimut o un valor de elevación, de la fuente de sonido de cada uno de los flujos 131 -133. Por ejemplo, si el primer flujo 131 en la primera memoria intermedia 321 y el segundo flujo 132 en la segunda memoria intermedia 322 están espacialmente más cerca (por ejemplo, la proximidad espacial de los dos flujos es alta), entonces puede ser ventajoso agrupar (combinar o fusionar) el primer flujo 131 en la primera memoria intermedia 321 y el segundo flujo 132 y codificar los flujos agrupados como un flujo. El módulo de selección de flujo 115 puede generar adicionalmente nuevos metadatos espaciales basándose en la combinación de los metadatos espaciales para la primera trama 131 y los metadatos espaciales para la segunda trama 132. Por ejemplo, los nuevos metadatos espaciales pueden ser un valor promedio o un valor promedio ponderado de los metadatos espaciales de los dos flujos 131 132. En implementaciones alternativas, si el primer flujo 131 en la primera memoria intermedia 321 y el segundo flujo 132 están espacialmente más cerca (por ejemplo, la proximidad espacial de los dos flujos es alta), entonces puede ser ventajoso codificar solo uno del primer flujo 131 y el segundo flujo 132. Por ejemplo, el módulo de selección de flujo 115 puede comparar el primer valor de similitud del primer flujo 131 con un umbral e identificar que el primer flujo 131 no se ha de codificar en respuesta a la determinación de que un primer valor de similitud del primer flujo particular no satisface el umbral. Adicionalmente, o como alternativa, el módulo de selección de flujo 115 puede comparar el segundo valor de similitud del segundo flujo 132 con un umbral e identificar que el segundo flujo 132 se ha de codificar en respuesta a la determinación de que un segundo valor de similitud del segundo flujo particular satisface el umbral.
Adicionalmente, o como alternativa, la determinación de qué flujos se codificarán o no se codificarán (por ejemplo, la determinación del valor de similitud 345 para cada flujo en la memoria intermedia 036) puede ser decidida de forma iterativa por el módulo de selección de flujo 115. Por ejemplo, el módulo de selección de flujo 115 puede seleccionar un primer subconjunto de flujos entre los flujos almacenados en las memorias intermedias 306 que se codificarán (o no se codificarán) basándose en un primer criterio. Entonces, el módulo de selección de flujo 115 puede seleccionar un segundo subconjunto de flujos entre el primer subconjunto de flujos que se codificarán (o no se codificarán) basándose en un segundo criterio. Por ejemplo, el primer conjunto de criterios se puede basar en comparar una primera característica de señal (por ejemplo, una ganancia de libro de códigos adaptativo) de una primera trama (por ejemplo, la trama i) de un primer flujo particular (por ejemplo, el primer flujo 131 en la primera memoria intermedia 321) con una segunda característica de señal (por ejemplo, una ganancia de libro de códigos adaptativo) de una segunda trama de un segundo flujo particular, en donde la segunda trama puede corresponder a la primera trama (por ejemplo, la trama i) o a otra trama (por ejemplo, la trama i -1 ) y el segundo flujo particular puede ser el mismo que el primer flujo particular o, como alternativa, puede no serlo. El segundo conjunto de criterios se puede basar en la proximidad espacial entre los flujos 131-133 en las memorias intermedias 321 - 323. En alguna implementación, la proximidad espacial entre los flujos 131 -133 se puede determinar basándose en características espaciales (por ejemplo, azimut, elevación, etc.) de la fuente de cada uno de los flujos 131 -133. Las características espaciales se pueden incluir en los metadatos espaciales 124.
Adicionalmente, o como alternativa, la determinación de qué flujos se codificarán o no se codificarán (por ejemplo, la determinación del valor de similitud 345 para cada flujo en la memoria intermedia 036) puede ser decidida de una forma en lazo cerrado por el codificador medular 302 o el códec de IVAS 102. Por ejemplo, la determinación de lazo cerrado se puede implementar teniendo un descodificador de audio dentro del codificador medular 302 en el códec de IVAS 102. Este enfoque se denomina a menudo método de análisis por síntesis. El descodificador de audio dentro del codificador medular 302 puede incluir módulos de ocultación de errores de paquete o de ocultación de errores de trama en el mismo. Al aprovechar un método de análisis por síntesis (o mediante el método de determinación de lazo cerrado), el codificador medular 302 puede realizar una ocultación de errores de paquete o una ocultación de errores de trama para al menos algunos de los flujos 131 -133 en las memorias intermedias 306 para identificar cuál de los flujos de audio 131-133 recibidos es el más adecuado para someterse a borrado forzado (por ejemplo, no ser codificado por el codificador medular 302) por un descodificador de audio en un dispositivo de recepción. En una implementación en la que el módulo de selección de flujo 115 recibe una información de similitud de flujo desde el procesador de audio de extremo frontal 104, el módulo de selección de flujo 115 puede determinar un valor de similitud 345 para los flujos 131-133 en las memorias intermedias 306 al menos parcialmente basándose en la información de similitud de flujo recibida.
Adicionalmente, o como alternativa, la determinación de qué flujos se codificarán o no se codificarán (por ejemplo, la determinación del valor de similitud 345 para cada flujo en la memoria intermedia 036) puede ser decidida por el módulo de selección de flujo 115 o por el códec de IVAS 102 basándose en la selección de tasa o en el cambio de la misma. Por ejemplo, el códec de IVAS 102 puede, dependiendo de la tasa de bits total disponible para codificar los flujos independientes con una temporización particular, identificar uno o más flujos que no se han de codificar (por ejemplo, establecer sus valores de similitud a 0) o identificar otros uno o más flujos a codificar (por ejemplo, establecer sus valores de similitud en 1). En algunas implementaciones, el módulo de selección de flujo 115 o el códec de IVAS 102 pueden ajustar el número (L) de flujos seleccionados basándose en la selección de tasa o en el modo de tasa de bits asignado inicialmente (o presupuesto). Por ejemplo, el módulo de selección de flujo 115 puede reducir agresivamente el número (L) de flujos seleccionados, que serán codificados por el codificador medular 302 cuando el presupuesto de tasa de bits es pequeño o la condición de canal es mala (por ejemplo, selección de tasa de bits baja para una comunicación inalámbrica particular).
Adicionalmente, o como alternativa, la determinación de qué flujos se codificarán o no se codificarán (por ejemplo, la determinación del valor de similitud 345 para cada flujo en la memoria intermedia 036) puede ser decidida por el módulo de selección de flujo 115 o por el códec de IVAS 102 basándose en una región espacial de interés (por ejemplo, un punto de vista seleccionado como objetivo). En algunas implementaciones, el códec de IVAS 102 puede determinar si un flujo particular está dentro o fuera de un punto de vista seleccionado como objetivo (por ejemplo, unos ángulos entre 9 i grados o Q2 grados). Esta determinación se puede basar en una estimación de una dirección de llegada del flujo particular, que puede ser estimada por el códec de IVAS 102 o el procesador de audio de extremo frontal 104, o se puede basar en información estadística anterior de cada flujo. Por ejemplo, si se determina que la fuente de cualquier flujo particular está fuera de una región espacial particular de interés (por ejemplo, unos ángulos entre 30 grados o -30 grados), el módulo de selección de flujo 115 o el códec de IVAS 102 pueden identificar este flujo particular que no se ha de codificar (por ejemplo, un valor de similitud = 0) o codificarse a una tasa de bits más baja que otros flujos con el fin de alcanzar una compensación recíproca entre la calidad de señal global y la degradación espacial. En alguna implementación, el módulo de selección de flujo 115 o el códec de IVAS 102 puede identificar todos los flujos recibidos desde un lado de la dirección a codificar, y/o identificar todos los flujos recibidos desde el otro lado de la dirección que no se han de codificar, o codificar con menos bits. Por ejemplo, el módulo de selección de flujo 115 o el códec de IVAS 102 puede identificar todos los flujos desde el lado izquierdo de la dirección como fuera de un punto de vista seleccionado como objetivo y, por lo tanto, establecer los valores de similitud para los mismos como cero para deshabilitar la codificación de los mismos o codificar con menos bits. De forma similar, el módulo de selección de flujo 115 o el códec de IVAS 102 puede identificar todos los flujos desde el lado derecho de la dirección como dentro del punto de vista seleccionado como objetivo y, por lo tanto, establecer los valores de similitud para los mismos como uno para habilitar la codificación de los mismos o codificar con menos bits.
El estimador de tasa de bits 304 está configurado para determinar una tasa de bits estimada para codificar cada uno de los flujos para una trama actual (por ejemplo, la trama i) basándose en las prioridades o el orden de permutación 340 de cada flujo para la trama actual, la secuencia de codificación 376 para la trama actual, o una combinación de los mismos. Por ejemplo, a unos flujos que tienen una prioridad 5 se les puede asignar una tasa de bits estimada que es la más alta, a unos flujos que tienen una prioridad 4 se les puede asignar una tasa de bits estimada que es la siguiente más alta, y a unos flujos que tienen una prioridad 1 se les puede asignar una tasa de bits estimada que es la más baja. La tasa de bits estimada se puede determinar, al menos parcialmente, basándose en una tasa de bits total disponible para el flujo de bits de salida 126, tal como subdividiendo la tasa de bits total en unas asignaciones de bits de un tamaño más grande para flujos de prioridad más alta y en unas asignaciones de bits de un tamaño más pequeño para flujos de prioridad más baja. El estimador de tasa de bits 304 se puede configurar para generar una tabla 343 u otra estructura de datos que asocia cada flujo 343 con su tasa de bits 344 estimada asignada.
El codificador medular 302 está configurado para codificar al menos una porción de cada uno de los flujos de acuerdo con la secuencia de permutación y un valor de similitud de cada uno de los flujos. Por ejemplo, para codificar la porción de cada flujo correspondiente a la trama i 375, el codificador medular 302 puede recibir la secuencia de codificación 378 desde el módulo de prioridad de flujo 110 y puede codificar el flujo 2 en primer lugar, seguido por el flujo de codificación 1, y el flujo de codificación N en último lugar. En implementaciones en las que múltiples flujos son codificables en paralelo, tal como cuando el codificador medular 302 incluye codificadores de habla múltiples / conjuntos, codificadores de MDCT múltiples / conjuntos, etc., se seleccionan flujos para su codificación de acuerdo con la secuencia de permutación, aunque se pueden codificar al mismo tiempo múltiples flujos que tienen prioridades diferentes. Por ejemplo, un flujo de habla de usuario primario de prioridad 5 se puede codificar en paralelo con un flujo de habla de usuario secundario de prioridad 4, mientras que flujos de prioridad más baja se codifican después de los flujos de habla de prioridad más alta.
El codificador medular 302 es sensible a la tasa de bits estimada 350 para un flujo particular cuando se codifica una trama para ese flujo. Por ejemplo, el codificador medular 302 puede seleccionar un modo de codificación o ancho de banda particular para un flujo particular para no superar la tasa de bits estimada para el flujo. Después de codificar la trama actual para el flujo particular, la tasa de bits real 352 se proporciona al estimador de tasa de bits 304 y al empaquetador de tramas 310.
El codificador medular 302 está configurado para codificar al menos una porción de cada uno de los flujos de acuerdo con el valor de similitud 345 para cada uno de los flujos en las memorias intermedias 306. Como alternativa, o adicionalmente, el codificador medular 302 está configurado para codificar al menos una porción de cada uno de los flujos de acuerdo tanto con el valor de similitud 345 como con la secuencia de permutación (o el orden de permutación). Por ejemplo, para codificar la porción de cada flujo correspondiente a la trama i 375, el codificador medular 302 puede recibir la secuencia de codificación 378 desde el módulo de prioridad de flujo 110 y puede codificar el flujo 2 en primer lugar, seguido por el flujo de codificación 1, y el flujo de codificación N en último lugar. Sin embargo, el codificador medular 302 puede omitir o sortear un flujo particular (por ejemplo, el flujo 1) basándose en la determinación, por el módulo de selección de flujo, de que el valor de similitud 345 del flujo 1 no satisface un umbral (por ejemplo, el valor de similitud = 0).
El codificador medular 302 está configurado para escribir la porción codificada de cada flujo en una memoria intermedia correspondiente del segundo conjunto de memorias intermedias 308. En algunas implementaciones, el codificador 302 conserva una dirección de memoria intermedia de cada flujo escribiendo una trama codificada desde la memoria intermedia 321 en la memoria intermedia 331, una trama codificada desde la memoria intermedia 322 en la memoria intermedia 332, y una trama codificada desde la memoria intermedia 323 en la memoria intermedia 333. En otra implementación, el codificador escribe tramas codificadas en las memorias intermedias 308 de acuerdo con un orden de codificación, de tal modo que una trama codificada del flujo de la prioridad más alta se escribe en la primera memoria intermedia 331, una trama codificada del flujo de la siguiente prioridad más alta se escribe en la memoria intermedia 332, etc.
El estimador de tasa de bits 304 está configurado para comparar la tasa de bits real 352 con la tasa de bits estimada 350 y para actualizar una tasa de bits estimada de uno o más flujos de prioridad más baja basándose en una diferencia entre la tasa de bits real 352 y la tasa de bits estimada 350. Por ejemplo, si la tasa de bits estimada para un flujo supera la tasa de bits codificada para el flujo, tal como cuando el flujo es sumamente compresible y se puede codificar usando relativamente pocos bits, hay disponible una capacidad de bits adicional para codificar flujos de prioridad más baja. Si la tasa de bits estimada para un flujo es menor que la tasa de bits codificada para el flujo, hay disponible una capacidad de bits reducida para codificar flujos de prioridad más baja. El estimador de tasa de bits 304 se puede configurar para distribuir un "delta" o diferencia entre la tasa de bits estimada para un flujo y la tasa de bits codificada para el flujo por igual entre todos los flujos de prioridad más baja. Como otro ejemplo, el estimador de tasa de bits 304 se puede configurar para distribuir el "delta" al flujo de la siguiente prioridad más alta (si el delta da como resultado una tasa de bits de codificación disponible reducida). Se debería hacer notar que se pueden implementar otras técnicas para distribuir el "delta" a los flujos de prioridad más baja.
El empaquetador de tramas 310 está configurado para generar una trama del flujo de bits de salida 126 recuperando datos de trama codificados de las memorias intermedias 308 y añadiendo información de encabezado (por ejemplo, metadatos) para posibilitar la descodificación en un códec de recepción. Se describe un ejemplo de un formato de trama de salida con referencia a la figura 4.
Durante el funcionamiento, se puede realizar una codificación para la i-ésima trama de los flujos (por ejemplo, N flujos que tienen un formato de codificación de flujos independientes (IS)). La i-ésima trama de cada uno de los flujos se puede recibir en las memorias intermedias 306 y puede ser preanalizada por el módulo de prioridad de flujo 110 para asignar una prioridad y determinar la secuencia de codificación 378 (por ejemplo, una permutación del orden de codificación).
El preanálisis se puede basar en las características de origen de la trama i, así como en las tramas pasadas (i -1 , i - 2, etc.). El preanálisis puede producir un conjunto tentativo de tasas de bits (por ejemplo, la tasa de bits estimada para la i-ésima trama del n-ésimo flujo se puede denotar IS_br_tent [i, n]) a las que se pueden codificar los flujos, de tal modo que el flujo de la prioridad más alta recibe el número más alto de bits y el flujo de la prioridad más baja puede recibir el número más bajo de bits, al tiempo que se conserva una restricción sobre la tasa de bits total: IS_br_tent [i, 1] IS_br_tent [i, 2] ... IS_br_tent [i, N] <= tasa_total_IS.
El preanálisis también puede producir el orden de permutación en el que se codifican los flujos (por ejemplo, orden de permutación para la trama i: 2, 1, ... N; para la trama i 1: 1, 3, N, ... 2, etc.) junto con una configuración de codificación inicial que puede incluir, por ejemplo, la frecuencia de muestreo medular, el tipo de codificador, el modo de codificación, activo / inactivo.
La codificación de IS de cada uno de los flujos se puede basar en este orden de permutación, tasa de bits tentativa, configuración de codificación inicial. En una implementación particular, codificar el n-ésimo flujo independiente de prioridad (por ejemplo, el flujo en la n-ésima posición de la secuencia de codificación 378) incluye: preprocesar para refinar la configuración de codificación y la tasa de bits real del n-ésimo flujo; codificar el n-ésimo flujo a una tasa de bits (br) igual a IS_br [i, n] kbps; estimar el delta, es decir, IS_delta [i, n] = (IS_br [i, n] - IS_br_tent [i, n]); añadir el delta al siguiente flujo de prioridad y actualizar la tasa de bits estimada (tentativa) del (n 1)-ésimo flujo de prioridad, es decir, IS_br_tent [i, n 1] = IS_br [i, n 1] IS_delta [i, n], o distribuir el delta al resto de los flujos en proporción a la asignación de bits de cada flujo del resto de los flujos; y almacenar el flujo de bits (por ejemplo, un número IS_br [i, n] de bits) asociado con el n-ésimo flujo temporalmente en una memoria intermedia, tal como en una de las memorias intermedias 308.
La codificación descrita anteriormente se repite para todos los otros flujos basándose en su orden de permutación de prioridad (por ejemplo, de acuerdo con la secuencia de codificación 378). Cada una de las memorias intermedias de bits de IS (por ejemplo, el contenido de cada una de las memorias intermedias 331 - 333) se puede ensamblar en el flujo de bits 126 en un orden predefinido. Una ilustración de ejemplo para las tramas i, i 1, i 2 del flujo de bits 126 se representa en la figura 4.
Aunque, en algunas implementaciones, las prioridades de flujo o las configuraciones de asignación de bits se pueden especificar desde fuera del códec de IVAS 102 (por ejemplo, mediante un procesador de aplicaciones), el preanálisis realizado por el códec de IVAS 102 tiene la flexibilidad de cambiar esta estructura de asignación de bits. Por ejemplo, cuando una información externa indica que un flujo es de prioridad alta y se supone que se codifica usando una tasa de bits alta, pero el flujo tiene un contenido inactivo en el mismo en una trama específica, el preanálisis puede detectar el contenido inactivo y reducir la tasa de bits del flujo para esa trama a pesar de indicarse como de prioridad alta.
Aunque la figura 3 representa la tabla 372 que incluye las secuencias de codificación 376 - 378, se debería entender que la tabla 372 se ilustra con fines de explicación y que otras implementaciones del códec de IVAS 102 no generan una tabla u otra estructura de datos para representar una secuencia de codificación. Por ejemplo, en algunas implementaciones, una secuencia de codificación se determina a través de la búsqueda de prioridades de flujos no codificados y la selección de un flujo de la prioridad más alta de los flujos no codificados hasta que todos los flujos se han codificado para una trama particular, y sin generar una estructura de datos dedicada para almacenar la secuencia de codificación determinada. En tales implementaciones, la determinación de la secuencia de codificación se realiza mientras la codificación está en curso, en lugar de realizarse como una operación discreta.
Aunque se describe que el módulo de prioridad de flujo 110 está configurado para determinar los datos de características de flujo 360, en otras implementaciones, un módulo de preanálisis puede realizar, en su lugar, el preanálisis (por ejemplo, para determinar energía de señal, entropía, detección de habla, etc.) y puede proporcionar los datos de características de flujo 360 al módulo de prioridad de flujo 110.
Aunque la figura 3 representa el primer conjunto de memorias intermedias 306 y el segundo conjunto de memorias intermedias 308, en otras implementaciones, se pueden omitir uno o ambos de los conjuntos de las memorias intermedias 306 y 308. Por ejemplo, el primer conjunto de memorias intermedias 306 se puede omitir en implementaciones en las que el codificador medular 302 está configurado para recuperar datos de flujo de audio entrelazados desde una única memoria intermedia. Como otro ejemplo, el segundo conjunto de memorias intermedias 308 se puede omitir en implementaciones en las que el codificador medular 302 está configurado para insertar los datos de flujo de audio codificados directamente en una memoria intermedia de tramas en el empaquetador de tramas 310.
Haciendo referencia a la figura 4, se representa un ejemplo 400 de tramas del flujo de bits 126 para flujos de audio de IS codificados. Una primera trama (la Trama i) 402 incluye un identificador de trama 404, un encabezado de IS 406, datos de audio codificados para el flujo 1 (IS-1) 408, datos de audio codificados para el flujo 2 (IS-2) 410, datos de audio codificados para el flujo 3 (IS-3) 412, datos de audio codificados para el flujo 4 (IS-4) 414 y datos de audio codificados para el flujo 5 (IS-5) 416.
El encabezado de IS 406 puede incluir la longitud de cada uno de los flujos IS 408 - 416. Como alternativa, cada uno de los flujos IS 408 - 416 puede ser autónomo e incluir la longitud de la codificación de IS (por ejemplo, la longitud de la codificación de IS se puede codificar en los primeros 3 bits de cada flujo IS). Como alternativa, o además, la tasa de bits para cada uno de los flujos 408 - 416 se puede incluir en el encabezado de IS 406 o se puede codificar en los flujos IS respectivos. Los flujos IS también pueden incluir o indicar los metadatos espaciales 124. Por ejemplo, se puede usar una versión cuantificada de los metadatos espaciales 124 en donde una cantidad de cuantificación para cada flujo IS se basa en la prioridad del flujo IS. A título ilustrativo, una codificación de metadatos espaciales para flujos de prioridad alta puede usar 4 bits para datos de azimut y 4 bits para datos de elevación, y una codificación de metadatos espaciales para flujos de prioridad baja puede usar 3 bits o menos para datos de azimut y 3 bits o menos para datos de elevación. Se debería entender que se proporcionan 4 bits como un ejemplo ilustrativo y no limitante y que, en otras implementaciones, se puede usar cualquier otro número de bits para datos de azimut, datos de elevación o cualquier combinación de los mismos. Los flujos IS también pueden incluir o indicar un valor de similitud de cada uno de los flujos codificados.
Una segunda trama (la Trama i 1) 422 incluye un identificador de trama 424, un encabezado de IS 426, datos de audio codificados para el flujo 1 (IS-1) 428, datos de audio codificados para el flujo 2 (IS-2) 430, datos de audio codificados para el flujo 3 (IS-3) 432, datos de audio codificados para el flujo 4 (IS-4) 434 y datos de audio codificados para el flujo 5 (IS-5) 436. Una tercera trama (la Trama i 2) 442 incluye un identificador de trama 444, un encabezado de IS 446, datos de audio codificados para el flujo 1 (IS-1) 448, datos de audio codificados para el flujo 2 (IS-2) 450, datos de audio codificados para el flujo 3 (IS-3) 452, datos de audio codificados para el flujo 4 (IS-4) 454 y datos de audio codificados para el flujo 5 (IS-5) 456.
Cada uno de los flujos de prioridad puede usar siempre un número fijo de bits en donde el flujo de la prioridad más alta usa un 30 - 40 % de los bits totales y el flujo de la prioridad más baja puede usar un 5 -10 % de los bits totales. En lugar de enviar el número de bits (o la longitud de la codificación de IS), se puede enviar, en su lugar, el número de prioridad del flujo, a partir del cual un receptor puede deducir la longitud de la codificación de IS del n-ésimo flujo de prioridad. En otras implementaciones alternativas, se puede omitir una transmisión del número de prioridad colocando un flujo de bits de cada flujo en un orden de prioridad específico (por ejemplo, Ascendente o Descendente) en la trama de flujo de bits.
Se debería entender que las tramas 402, 422 y 442 ilustrativas se codifican usando unas prioridades de flujo y secuencias de codificación diferentes de las de los ejemplos proporcionados con referencia a las figuras 1 - 3. La Tabla 2 ilustra prioridades de flujo y la Tabla 3 ilustra secuencias de codificación correspondientes a la codificación de las tramas 402, 422 y 442.
Tabla 2
Figure imgf000017_0001
Tabla 3
Figure imgf000018_0001
Un flujo de bits 462 ilustra un flujo de bits ilustrativo como resultado de la selección de flujo basada en similitud para la tercera trama (la Trama i 2) 442. El flujo de bits 462 incluye un identificador de trama 464, un encabezado de IS 466, datos de audio codificados para el flujo 1 (IS-1) 468, datos de audio codificados para el flujo 2 (IS-2) 470, datos de audio codificados para el flujo 3 (IS-3) 472, datos de audio codificados para el flujo 4 (IS-4) 474 y datos de audio codificados para el flujo 5 (IS-5) 476. Basándose en su valor de prioridad u orden de prioridad alto (por ejemplo, prioridad = 1), la Trama i 2 del flujo 5 (IS-5) 456 se codificó con una tasa de bits de 12 kbps en el flujo de bits 442, mientras que la Trama i 2 del flujo 4 (IS- 4) 454 se codificó con menos tasa de bits (por ejemplo, 8 kbps) debido a su valor de prioridad u orden de prioridad más bajo (por ejemplo, prioridad = 2). En el flujo de bits 462, sin embargo, el tamaño de los datos codificados del flujo 5 (IS-5) es menor que 1 kbps debido a que su valor de similitud es cero. En este ejemplo particular, que el valor de similitud sea cero en este ejemplo pretende indicar que el módulo de selección de flujo 115 identificó que la Trama i 2 del flujo 5 (IS-5) era fácilmente predecible (o reproducible) por al menos otra trama distinta debido o bien a su similitud temporal alta o bien a su proximidad espacial alta con la otra trama. Que el tamaño de los datos codificados del flujo 5 (IS-5) sea menor que 1 kbps pretende indicar que un codificador medular 204 o bien omitió la codificación del flujo 5 (IS-5) o bien, como alternativa, codificó el flujo 5 (IS-5) con menos tasa de bits (por ejemplo, codificando descendentemente). En algunas implementaciones alternativas, en lugar de incluir los datos de audio codificados para el flujo 5 (IS-5), el flujo de bits 462 puede incluir información que indica que el flujo 5 (IS-5) no fue codificado por un codificador medular 204. Por ejemplo, el identificador de trama 464 o el encabezado de IS 466 puede incluir información (por ejemplo, al menos un parámetro) que indica que no se codificó el flujo 5 (IS-5).
En algunas implementaciones, el flujo de bits 462 puede incluir además información (por ejemplo, al menos un parámetro) que indica por qué el flujo 5 no se codificó (por ejemplo, debido a la similitud temporal alta o la proximidad espacial alta con otra trama) o cómo reconstruir el flujo 5 (IS-5) en un lado de recepción que incluye un descodificador de audio. Por ejemplo, el flujo de bits 462 puede incluir información que indica que la Trama i 2 del flujo 5 (IS-5) no se codificó debido a que su similitud temporal con la Trama i 1 del flujo 5 (IS-5) 436 es alta (por ejemplo, una similitud temporal alta con una trama previa de su propio flujo). Esta información puede forzar que un descodificador medular 212 reconstruya la Trama i 2 del flujo 5 (IS-5) basándose en los datos descodificados de la Trama i 1 del flujo 5 (IS-5). En otro ejemplo, el flujo de bits 462 puede incluir información que indica que la Trama i 2 del flujo 5 (IS-5) no se codificó debido a que su similitud temporal con la Trama i 2 del flujo 3 (IS-3) 472 es alta (por ejemplo, una similitud temporal alta con una trama correspondiente de otro flujo). Esta información puede forzar que un descodificador medular 212 reconstruya la Trama i 2 del flujo 5 (IS-5) basándose en los datos descodificados de la Trama i 2 del flujo 3 (IS-3) 472. De forma similar, el flujo de bits 462 puede incluir información que indica que la Trama i 2 del flujo 5 (IS-5) no se codificó debido a que su proximidad espacial con la Trama i 2 del flujo 2 (IS-2) 470 es alta. Esta información puede forzar que un descodificador medular 212 reconstruya la Trama i 2 del flujo 5 (IS-5) basándose en los datos descodificados de la Trama i 2 del flujo 2 (IS-2) 470.
La figura 5 es un diagrama de flujo de un ejemplo particular de un método 500 de codificación de múltiples flujos. El método 500 puede ser realizado por un codificador, tal como el códec de IVAS 102 de las figuras 1 - 3. Por ejemplo, el método 500 se puede realizar en el dispositivo móvil 600 de la figura 6 o en la estación base 700 de la figura 7.
El método 500 incluye recibir, en un codificador de audio, múltiples flujos de datos de audio, en donde N es el número de los múltiples flujos recibidos de datos de audio, en 501. En un ejemplo particular, los múltiples flujos corresponden a los datos de audio con formato de múltiples flujos 122 que incluyen los N flujos 131 -133. Por ejemplo, los múltiples flujos pueden tener un formato de codificación de flujos independientes, un formato de múltiples canales o un formato de audio basado en escenas.
El método 500 incluye determinar una pluralidad de valores de similitud correspondientes a una pluralidad de flujos entre los múltiples flujos recibidos, en 503. En un ejemplo particular, el módulo de selección de flujo 115 determina un valor de similitud para cada uno de todos o un subconjunto de los flujos 131 -133 para generar las similitudes 345. El valor de similitud de un flujo particular de los múltiples flujos se determina basándose en una o más características de señal de una trama del flujo particular. En un ejemplo, el módulo de selección de flujo 115 puede determinar un flujo particular de los múltiples flujos basándose en los metadatos espaciales 124 (por ejemplo, proximidad espacial alta o proximidad espacial baja) de cada uno de los flujos. En otro ejemplo, el módulo de selección de flujo 115 puede determinar un valor de similitud de un flujo particular de los múltiples flujos basándose en la similitud temporal con o bien una trama previa del flujo particular o bien una trama correspondiente de otro flujo. Como alternativa, el módulo de selección de flujo 115 puede determinar un valor de similitud de un flujo particular basándose en la combinación de similitud temporal y proximidad espacial. En una implementación particular, las una o más características de señal incluyen al menos uno de una ganancia de libro de códigos adaptativo, un nivel estacionario, un nivel no estacionario, un factor de sonorización, una variación de tono, energía de señal, detección de contenido de habla, un nivel suelo de ruido, una relación de señal con respecto a ruido, un nivel de escasez y una inclinación espectral. También se puede recibir información de similitud de flujo (por ejemplo, los datos de similitud externos 364) en el codificador de audio desde un procesador de audio de extremo frontal (por ejemplo, el procesador de audio de extremo frontal 104), y el valor de similitud del flujo particular se determina, al menos parcialmente, basándose en la información de similitud de flujo.
El método 500 incluye comparar el valor de similitud correspondiente a cada flujo entre los múltiples flujos con un umbral, en 505. En un ejemplo particular, el módulo de selección de flujo 115 puede comparar cada uno de los valores de similitud con un umbral. Basándose en la comparación, el módulo de selección de flujo 115 puede identificar que es necesario que un subconjunto (por ejemplo, L) de flujos de audio entre los flujos de audio recibidos (por ejemplo, N) sea codificado por un codificador medular 204 302. El módulo de selección de flujo 115 puede usar un umbral diferente para algunos de los flujos entre los flujos de audio recibidos.
El método 500 incluye identificar, basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos recibidos (L < N) en 506. En un ejemplo particular, el módulo de selección de flujo 115 puede identificar que un primer flujo particular no se ha de codificar en respuesta a la determinación de que un primer valor de similitud del primer flujo particular no satisface un umbral (por ejemplo, un primer valor de similitud = 0). Adicionalmente, o como alternativa, el módulo de selección de flujo 115 puede identificar que un segundo flujo particular se ha de codificar en respuesta a la determinación de que un segundo valor de similitud del segundo flujo particular satisface el umbral (por ejemplo, un segundo valor de similitud = 1). A título ilustrativo, el módulo de selección de flujo 115 puede recibir 5 flujos (IS1 - IS5) y puede identificar 4 flujos (IS1 - IS4) a codificar (por ejemplo, valor de similitud = 1) e identificar IS-5 que no se ha de codificar (por ejemplo, valor de similitud = 0).
El método 500 también incluye codificar el número L identificado de flujos para generar un flujo de bits codificado, en 507. En un ejemplo particular, un codificador medular 204 302 o el códec de IVAS 102 puede codificar 4 flujos (IS1 - IS4) basándose en su valor de similitud (por ejemplo, un valor de similitud = 1) determinado por el módulo de selección de flujo 115 y, adicionalmente, basándose en las prioridades del flujo, como se ilustra en la Tabla 2, y la secuencia de codificación 378 (por ejemplo, una permutación del orden de codificación), como se ilustra en la Tabla 3.
En una implementación particular, el método 500 puede incluir, antes de codificar el número L identificado de flujos, asignar un valor de prioridad a una porción de los múltiples flujos recibidos. Por ejemplo, la asignación del valor de prioridad a la porción de los múltiples flujos recibidos se puede realizar antes o después de determinar la pluralidad de valores de similitud correspondientes a la pluralidad de flujos entre los múltiples flujos recibidos. En otra implementación, el método 500 puede incluir además determinar una secuencia de permutación basándose en el valor de prioridad asignado a la porción de los múltiples flujos recibidos. En alguna implementación, el método 500 puede asignar una tasa de bits estimada (por ejemplo, la tasa de bits estimada 350) a al menos algunos de los flujos (por ejemplo, el número L identificado de flujos) entre los múltiples flujos recibidos. Después de codificar una porción (por ejemplo, la trama i) de un flujo particular, la tasa de bits estimada de al menos un flujo que tiene una prioridad más baja que el flujo particular se puede actualizar, tal como se describe con referencia al estimador de tasa de bits 304. La actualización de la tasa de bits estimada se puede basar en una diferencia entre la tasa de bits estimada de la porción codificada del flujo particular y la tasa de bits codificada del flujo particular.
En algunas implementaciones, el método 500 también incluye transmitir el flujo de bits codificado a un descodificador de audio (por ejemplo, un descodificador medular 212) a través de una red 216. El flujo de bits 126 incluye unos metadatos (por ejemplo, el encabezado de IS 406) que indican al menos uno de un valor de prioridad, un valor de similitud, una longitud de bits o una tasa de bits de codificación de cada flujo de los flujos codificados. El flujo de bits 126 también puede incluir metadatos que incluyen datos espaciales correspondientes a cada flujo de los flujos codificados, tales como los metadatos espaciales 124 de la figura 1, que incluyen datos de azimut y datos de elevación para cada flujo de múltiples flujos codificados, tal como se describe con referencia a la Tabla 1.
Haciendo referencia a la figura 6, se representa un diagrama de bloques de un ejemplo ilustrativo particular de un dispositivo (por ejemplo, un dispositivo de comunicación inalámbrica) y se designa en general como 600. En diversas implementaciones, el dispositivo 600 puede tener menos o más componentes que los ilustrados en la figura 6. En una implementación ilustrativa, el dispositivo 600 puede corresponder al dispositivo 101 de la figura 1 o al dispositivo de recepción de la figura 2. En una implementación ilustrativa, el dispositivo 600 puede realizar una o más operaciones descritas con referencia a sistemas y métodos de las figuras 1 - 5.
En una implementación particular, el dispositivo 600 incluye un procesador 606 (por ejemplo, una unidad central de procesamiento (CPU)). El dispositivo 600 puede incluir uno o más procesadores 610 adicionales (por ejemplo, uno o más procesadores de señales digitales (DSP)). Los procesadores 610 pueden incluir un codificador-descodificador (CÓDEC) de medios (por ejemplo, de habla y de música) 608 y un cancelador de eco 612. El CÓDEC de medios 608 puede incluir el codificador medular 204, el descodificador medular 212 o una combinación de los mismos. En algunas implementaciones, el CÓDEC de medios 608 incluye el preprocesador de formato 202, el postprocesador de formato 214, el circuito de representación y de binauralización 218, o una combinación de los mismos.
El dispositivo 600 puede incluir una memoria 653 y un CÓDEC 634. Aunque el CÓDEC de medios 608 se ilustra como un componente de los procesadores 610 (por ejemplo, circuitería dedicada y / o código de programación ejecutable), en otras implementaciones, uno o más componentes del CÓDEC de medios 608, tales como el codificador 204, el descodificador 212, o una combinación de los mismos, se pueden incluir en el procesador 606, el CÓDEC 634, otro componente de procesamiento o una combinación de los mismos. El CÓDEC 634 puede incluir uno o más convertidores de digital a analógico (DAC) 602 y convertidores de analógico a digital (ADC) 604. El CÓDEC 634 puede incluir el procesador de audio de extremo frontal 104 de la figura 1.
El dispositivo 600 puede incluir un receptor 632 acoplado a una antena 642. El dispositivo 600 puede incluir un visualizador 628 acoplado a un controlador de visualizador 626. Se pueden acoplar uno o más altavoces 648 al CÓDEC 634. Se pueden acoplar uno o más micrófonos 646, a través de una o más interfaces de entrada 603, al CÓDEC 534. En una implementación particular, los micrófonos 646 pueden incluir los micrófonos 106 - 109.
La memoria 653 puede incluir unas instrucciones 691 ejecutables por el procesador 606, los procesadores 610, el CÓDEC 634, otra unidad de procesamiento del dispositivo 600, o una combinación de los mismos, para realizar una o más operaciones descritas con referencia a las figuras 1 - 5.
Uno o más componentes del dispositivo 600 se pueden implementar a través de hardware dedicado (por ejemplo, circuitería), mediante un procesador que ejecuta instrucciones para realizar una o más tareas, o una combinación de los mismos. Como un ejemplo, la memoria 653 o uno o más componentes del procesador 606, los procesadores 610 y / o el CÓDEC 634 pueden ser un dispositivo de memoria, tal como una memoria de acceso aleatorio (RAM), memoria de acceso aleatorio magnetorresistiva (MRAM), MRAM de transferencia de par de giro (STT-MRAM), memoria flash, memoria de solo lectura (ROM), memoria de solo lectura programable (PROM), memoria de solo lectura programable y borrable (EPROM), memoria de solo lectura programable y borrable eléctricamente (EEPROM), registros, disco duro, un disco extraíble o un disco compacto - memoria de solo lectura (CD-ROM). El dispositivo de memoria puede incluir instrucciones (por ejemplo, las instrucciones 691) que, cuando son ejecutadas por un ordenador (por ejemplo, un procesador en el CÓDEC 634, el procesador 606 y / o los procesadores 610), pueden hacer que el ordenador realice una o más operaciones descritas con referencia a las figuras 1 - 5. Como un ejemplo, la memoria 653 o los uno o más componentes del procesador 606, los procesadores 610 y / o el CÓDEC 634 pueden ser un medio legible por ordenador no transitorio que incluye instrucciones (por ejemplo, las instrucciones 691) que, cuando son ejecutadas por un ordenador (por ejemplo, un procesador en el CÓDEC 634, el procesador 606 y / o los procesadores 610), hacen que el ordenador realice una o más operaciones descritas con referencia a las figuras 1 - 5.
En una implementación particular, el dispositivo 600 se puede incluir en un dispositivo de sistema en paquete o de sistema en chip (por ejemplo, un módem de estación móvil (MSM)) 622. En una implementación particular, el procesador 606, los procesadores 610, el controlador de visualizador 626, la memoria 653, el CÓDEC 634 y el receptor 632 están incluidos en un dispositivo de sistema en paquete o en el dispositivo de sistema en chip 622. En una implementación particular, un dispositivo de entrada 630, tal como una pantalla táctil y / o un teclado numérico, y una fuente de alimentación 644, están acoplados al dispositivo de sistema en chip 622. Además, en una implementación particular, como se ilustra en la figura 6, el visualizador 628, el dispositivo de entrada 630, los altavoces 648, los micrófonos 646, la antena 642 y la fuente de alimentación 644 son externos al dispositivo de sistema en chip 622. Sin embargo, cada uno del visualizador 628, el dispositivo de entrada 630, los altavoces 648, los micrófonos 646, la antena 642 y la fuente de alimentación 644 se pueden acoplar a un componente del dispositivo de sistema en chip 622, tal como una interfaz o un controlador.
El dispositivo 600 puede incluir un teléfono inalámbrico, un dispositivo de comunicación móvil, un teléfono móvil, un teléfono inteligente, un teléfono celular, un ordenador portátil, un ordenador de escritorio, un ordenador, un ordenador de tipo tableta, un descodificador de salón, un asistente digital personal (PDA), un dispositivo de visualización, un televisor, una consola de juegos, un reproductor de música, una radio, un reproductor de vídeo, una unidad de entretenimiento, un dispositivo de comunicación, una unidad de datos de ubicación fija, un reproductor de medios personal, un reproductor de vídeo digital, un reproductor de discos de vídeo digital (DVD), un sintonizador, una cámara, un dispositivo de navegación, un sistema de descodificador, un sistema de codificador o cualquier combinación de los mismos.
Haciendo referencia a la figura 7, se representa un diagrama de bloques de un ejemplo ilustrativo particular de una estación base 700. En diversas implementaciones, la estación base 700 puede tener más componentes o menos componentes que los ilustrados en la figura 7. En un ejemplo ilustrativo, la estación base 700 puede incluir el primer dispositivo 101 de la figura 1. En un ejemplo ilustrativo, la estación base 700 puede funcionar de acuerdo con uno o más de los métodos o sistemas descritos con referencia a las figuras 1 - 5.
La estación base 700 puede ser parte de un sistema de comunicación inalámbrica. El sistema de comunicación inalámbrica puede incluir múltiples estaciones base y múltiples dispositivos inalámbricos. El sistema de comunicación inalámbrica puede ser un sistema de Evolución a Largo Plazo (lTe ), un sistema de Acceso Múltiple por División de Código (CDMA), un Sistema Global para Comunicaciones Móviles (GSM), un sistema de red de área local inalámbrica (WLAN) o algún otro sistema inalámbrico. Un sistema de CDMA puede implementar CDMA de Banda Ancha (WCDMA), CDMA 1X, Datos de Evolución Optimizados (EVDO), CDMA Síncrono por División de Tiempo (TD-SCDMA) o alguna otra versión de CDMA.
Los dispositivos inalámbricos también se pueden denominar equipo de usuario (UE), estación móvil, terminal, terminal de acceso, unidad de abonado, estación, etc. Los dispositivos inalámbricos pueden incluir un teléfono celular, un teléfono inteligente, una tableta, un módem inalámbrico, un asistente digital personal (PDA), un dispositivo de mano, un ordenador portátil, un libro inteligente, un ultraportátil, una tableta, un teléfono inalámbrico, una estación de bucle local inalámbrico (WLL), un dispositivo de Bluetooth, etc. Los dispositivos pueden incluir o corresponder al dispositivo 600 de la figura 6.
Diversas funciones pueden ser realizadas por uno o más componentes de la estación base 700 (y / o en otros componentes no mostrados), tales como enviar y recibir mensajes y datos (por ejemplo, datos de audio). En un ejemplo particular, la estación base 700 incluye un procesador 706 (por ejemplo, una CPU). La estación base 700 puede incluir un transcodificador 710. El transcodificador 710 puede incluir un Có De C de audio 708. Por ejemplo, el transcodificador 710 puede incluir uno o más componentes (por ejemplo, circuitería) configurados para realizar operaciones del CÓDEC de audio 708. Como otro ejemplo, el transcodificador 710 se puede configurar para ejecutar una o más instrucciones legibles por ordenador para realizar las operaciones del Có De C de audio 708. Aunque el CÓDEC de audio 708 se ilustra como un componente del transcodificador 710, en otros ejemplos, uno o más componentes del CÓDEC de audio 708 se pueden incluir en el procesador 706, otro componente de procesamiento o una combinación de los mismos. Por ejemplo, un descodificador 738 (por ejemplo, un descodificador de tipo codificador de señales vocales) se puede incluir en un procesador de datos de receptor 764. Como otro ejemplo, un codificador 736 (por ejemplo, un codificador de tipo codificador de señales vocales) se puede incluir en un procesador de datos de transmisión 782.
El transcodificador 710 puede servir para transcodificar mensajes y datos entre dos o más redes. El transcodificador 710 se puede configurar para convertir mensajes y datos de audio de un primer formato (por ejemplo, un formato digital) a un segundo formato. A título ilustrativo, el descodificador 738 puede descodificar señales codificadas que tienen un primer formato y el codificador 736 puede codificar las señales descodificadas para dar unas señales codificadas que tienen un segundo formato. Adicionalmente, o como alternativa, el transcodificador 710 se puede configurar para realizar una adaptación de tasa de datos. Por ejemplo, el transcodificador 710 puede convertir descendentemente una tasa de datos o convertir ascendentemente la tasa de datos sin cambiar un formato de los datos de audio. A título ilustrativo, el transcodificador 710 puede convertir descendentemente señales de 64 kbit/s en señales de 16 kbit/s.
El CÓDEC de audio 708 puede incluir el codificador medular 204 y el descodificador medular 212. El CÓDEC de audio 708 también puede incluir el preprocesador de formato 202, el postprocesador de formato 214 o una combinación de los mismos.
La estación base 700 puede incluir una memoria 732. La memoria 732, tal como un dispositivo de almacenamiento legible por ordenador, puede incluir instrucciones. Las instrucciones pueden incluir una o más instrucciones que son ejecutables por el procesador 706, el transcodificador 710, o una combinación de los mismos, para realizar una o más operaciones descritas con referencia a los métodos y sistemas de las figuras 1-5. La estación base 700 puede incluir múltiples transmisores y receptores (por ejemplo, transceptores), tales como un primer transceptor 752 y un segundo transceptor 754, acoplados a una agrupación de antenas. La agrupación de antenas puede incluir una primera antena 742 y una segunda antena 744. La agrupación de antenas se puede configurar para comunicarse de forma inalámbrica con uno o más dispositivos inalámbricos, tales como el dispositivo 600 de la figura 6. Por ejemplo, la segunda antena 744 puede recibir un flujo de datos 714 (por ejemplo, un flujo de bits) desde un dispositivo inalámbrico. El flujo de datos 714 puede incluir mensajes, datos (por ejemplo, datos de habla codificados) o una combinación de los mismos.
La estación base 700 puede incluir una conexión de red 760, tal como una conexión de enlace de retroceso. La conexión de red 760 se puede configurar para comunicarse con una red medular o una o más estaciones base de la red de comunicación inalámbrica. Por ejemplo, la estación base 700 puede recibir un segundo flujo de datos (por ejemplo, mensajes o datos de audio) desde una red medular a través de la conexión de red 760. La estación base 700 puede procesar el segundo flujo de datos para generar mensajes o datos de audio y proporcionar los mensajes o los datos de audio a uno o más dispositivos inalámbricos a través de una o más antenas de la agrupación de antenas o a otra estación base a través de la conexión de red 760. En una implementación particular, la conexión de red 760 puede ser una conexión de red de área extensa (WAN), como un ejemplo ilustrativo y no limitante. En algunas implementaciones, la red medular puede incluir o corresponder a una Red Telefónica Pública Conmutada (PSTN), una red de enlace troncal de paquetes, o ambas.
La estación base 700 puede incluir una pasarela de medios 770 que está acoplada a la conexión de red 760 y al procesador 706. La pasarela de medios 770 se puede configurar para convertir entre flujos de medios de diferentes tecnologías de telecomunicaciones. Por ejemplo, la pasarela de medios 770 puede convertir entre diferentes protocolos de transmisión, diferentes esquemas de codificación o ambos. A título ilustrativo, la pasarela de medios 770 puede convertir de señales de PCM en señales de Protocolo de Transporte en Tiempo Real (RTP), como un ejemplo ilustrativo y no limitante. La pasarela de medios 770 puede convertir datos entre redes conmutadas por paquetes (por ejemplo, una red de Protocolo de Voz sobre Internet (VoIP), un Subsistema Multimedia de IP (IMS), una red inalámbrica de cuarta generación (4G), tal como LTE, WiMax y UMB, etc.), redes conmutadas por circuitos (por ejemplo, una PSTN) y redes híbridas (por ejemplo, una red inalámbrica de segunda generación (2G), tal como g Sm , GPRS y EDGE, una red inalámbrica de tercera generación (3G), tal como WCDMA, EV-DO y HSPA, etc.).
Adicionalmente, la pasarela de medios 770 puede incluir una transcodificación y se puede configurar para transcodificar datos cuando los códecs son incompatibles. Por ejemplo, la pasarela de medios 770 puede transcodificar entre un Códec de Múltiples Tasas Adaptativo (AMR) y un códec G.711, como un ejemplo ilustrativo y no limitante. La pasarela de medios 770 puede incluir un encaminador y una pluralidad de interfaces físicas. En algunas implementaciones, la pasarela de medios 770 también puede incluir un controlador (no mostrado). En una implementación particular, el controlador de pasarela de medios puede ser externo a la pasarela de medios 770, externo a la estación base 700, o ambos. El controlador de pasarela de medios puede controlar y coordinar operaciones de múltiples pasarelas de medios. La pasarela de medios 770 puede recibir señales de control del controlador de la pasarela de medios y puede servir para enlazar entre diferentes tecnologías de transmisión y puede añadir prestaciones a capacidades y conexiones de usuario final.
La estación base 700 puede incluir un desmodulador 762 que está acoplado a los transceptores 752, 754, el procesador de datos de receptor 764 y el procesador 706, y el procesador de datos de receptor 764 se puede acoplar al procesador 706. El desmodulador 762 se puede configurar para desmodular señales moduladas recibidas desde los transceptores 752, 754 y para proporcionar datos desmodulados al procesador de datos de receptor 764. El procesador de datos de receptor 764 se puede configurar para extraer, de los datos desmodulados, un mensaje o datos de audio, y enviar el mensaje o los datos de audio al procesador 706.
La estación base 700 puede incluir un procesador de datos de transmisión 782 y un procesador de múltiples entradas y múltiples salidas (MIMO) de transmisión 784. El procesador de datos de transmisión 782 se puede acoplar al procesador 706 y al procesador de MIMO de transmisión 784. El procesador de MIMO de transmisión 784 se puede acoplar a los transceptores 752, 754 y al procesador 706. En algunas implementaciones, el procesador de MIMO de transmisión 784 se puede acoplar a la pasarela de medios 770. El procesador de datos de transmisión 782 se puede configurar para recibir los mensajes o los datos de audio desde el procesador 706 y para codificar los mensajes o los datos de audio basándose en un esquema de codificación, tal como CDMA o multiplexación por división de frecuencia ortogonal (OFDM), como un ejemplo ilustrativo y no limitante. El procesador de datos de transmisión 782 puede proporcionar los datos codificados al procesador de MIMO de transmisión 784.
Los datos codificados se pueden multiplexar con otros datos, tales como datos de piloto, usando técnicas de CDMA o de OFDM para generar datos multiplexados. Los datos multiplexados pueden ser modulados (es decir, correlacionados con símbolos) entonces por el procesador de datos de transmisión 782 basándose en un esquema de modulación particular (por ejemplo, Modulación por desplazamiento de fase binaria ("BPSK"), Modulación por desplazamiento de fase en cuadratura ("QSPK"), Modulación por desplazamiento de fase M-aria ("M-PSK"), Modulación de amplitud en cuadratura M-aria ("M-QAM"), etc.) para generar símbolos de modulación. En una implementación particular, los datos codificados y otros datos se pueden modular usando diferentes esquemas de modulación. La tasa de datos, la codificación y la modulación para cada flujo de datos se puede determinar mediante instrucciones ejecutadas por el procesador 706.
El procesador de MIMO de transmisión 784 se puede configurar para recibir los símbolos de modulación desde el procesador de datos de transmisión 782 y puede procesar adicionalmente los símbolos de modulación y puede realizar una formación de haces sobre los datos. Por ejemplo, el procesador de MIMO de transmisión 784 puede aplicar pesos de formación de haces a los símbolos de modulación. Los pesos de formación de haces pueden corresponder a una o más antenas de la agrupación de antenas desde las que se transmiten los símbolos de modulación.
Durante el funcionamiento, la segunda antena 744 de la estación base 700 puede recibir un flujo de datos 714. El segundo transceptor 754 puede recibir el flujo de datos 714 desde la segunda antena 744 y puede proporcionar el flujo de datos 714 al desmodulador 762. El desmodulador 762 puede desmodular señales moduladas del flujo de datos 714 y proporcionar datos desmodulados al procesador de datos de receptor 764. El procesador de datos de receptor 764 puede extraer, de los datos desmodulados, datos de audio, y proporcionar los datos de audio extraídos al procesador 706.
El procesador 706 puede proporcionar los datos de audio al transcodificador 710 para su transcodificación. El descodificador 738 del transcodificador 710 puede descodificar los datos de audio desde un primer formato a datos de audio descodificados y el codificador 736 puede codificar los datos de audio descodificados a un segundo formato. En algunas implementaciones, el codificador 736 puede codificar los datos de audio usando una tasa de datos más alta (por ejemplo, una conversión ascendente) o una tasa de datos más baja (por ejemplo, una conversión descendente) que la recibida desde el dispositivo inalámbrico. En otras implementaciones, los datos de audio pueden no transcodificarse. Aunque se ilustra que la transcodificación (por ejemplo, descodificación y codificación) es realizada por un transcodificador 710, las operaciones de transcodificación (por ejemplo, descodificación y codificación) pueden ser realizadas por múltiples componentes de la estación base 700. Por ejemplo, la descodificación puede ser realizada por el procesador de datos de receptor 764 y la codificación puede ser realizada por el procesador de datos de transmisión 782. En otras implementaciones, el procesador 706 puede proporcionar los datos de audio a la pasarela de medios 770 para su conversión a otro protocolo de transmisión, esquema de codificación o ambos. La pasarela de medios 770 puede proporcionar los datos convertidos a otra estación base o red medular a través de la conexión de red 760.
Los datos de audio codificados generados en el codificador 736, tales como datos transcodificados, se pueden proporcionar al procesador de datos de transmisión 782 o a la conexión de red 760 a través del procesador 706. Los datos de audio transcodificados desde el transcodificador 710 se pueden proporcionar al procesador de datos de transmisión 782 para una codificación de acuerdo con un esquema de modulación, tal como OFDM, para generar los símbolos de modulación. El procesador de datos de transmisión 782 puede proporcionar los símbolos de modulación al procesador de MIMO de transmisión 784 para un procesamiento y una formación de haces adicionales. El procesador de MIMO de transmisión 784 puede aplicar pesos de formación de haces y puede proporcionar los símbolos de modulación a una o más antenas de la agrupación de antenas, tales como la primera antena 742 a través del primer transceptor 752. Por lo tanto, la estación base 700 puede proporcionar un flujo de datos transcodificado 716, que corresponde al flujo de datos 714 recibido desde el dispositivo inalámbrico, a otro dispositivo inalámbrico. El flujo de datos transcodificado 716 puede tener un formato de codificación, una tasa de datos, o ambos, diferentes de los del flujo de datos 714. En otras implementaciones, el flujo de datos transcodificado 716 se puede proporcionar a la conexión de red 760 para su transmisión a otra estación base o a una red medular.
En una implementación particular, uno o más componentes de los sistemas y dispositivos divulgados en el presente documento se pueden integrar en un sistema o aparato de descodificación (por ejemplo, un dispositivo electrónico, un CÓDEC o un procesador en el mismo), en un sistema o aparato de codificación, o ambos. En otras implementaciones, uno o más componentes de los sistemas y dispositivos divulgados en el presente documento se pueden integrar en un teléfono inalámbrico, un ordenador de tipo tableta, un ordenador de escritorio, un ordenador portátil, un descodificador de salón, un reproductor de música, un reproductor de vídeo, una unidad de entretenimiento, un televisor, una consola de juegos, un dispositivo de navegación, un dispositivo de comunicación, un asistente digital personal (PDA), una unidad de datos de ubicación fija, un reproductor de medios personal u otro tipo de dispositivo.
Junto con las técnicas descritas, un aparato incluye unos medios para determinar un valor de similitud para cada flujo de los múltiples flujos y para comparar el valor de similitud para cada flujo de los múltiples flujos con un umbral. El aparato incluye unos medios para identificar, basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos, en donde L es menor que N. Por ejemplo, los medios para determinar, para comparar y para identificar pueden corresponden al módulo de selección de flujo 115 de las figuras 1 -3 , otros uno o más dispositivos, circuitos, módulos o cualquier combinación de los mismos.
El aparato también incluye unos medios para codificar el número L identificado de flujos entre los múltiples flujos de acuerdo con un valor de similitud de cada uno del número L identificado de flujos. Por ejemplo, los medios para codificar pueden incluir el codificador medular 302 de la figura 3, otros uno o más dispositivos, circuitos, módulos o cualquier combinación de los mismos.
Se debería hacer notar que diversas funciones realizadas por los uno o más componentes de los sistemas y dispositivos divulgados en el presente documento se describen como realizadas por ciertos componentes o módulos. Esta división de componentes y módulos es solo por razones de ilustración. En una implementación alternativa, una función realizada por un componente o módulo particular se puede dividir entre múltiples componentes o módulos. Además, en una implementación alternativa, se pueden integrar dos o más componentes o módulos en un único componente o módulo. Cada componente o módulo se puede implementar usando hardware (por ejemplo, un dispositivo de matriz de puertas programable en campo (FPGA), un circuito integrado específico de la aplicación (ASIC), un DSP, un controlador, etc.), software (por ejemplo, instrucciones ejecutables por un procesador), o cualquier combinación de los mismos.
Los expertos apreciarían además que los diversos bloques lógicos, configuraciones, módulos, circuitos y etapas de algoritmo ilustrativos descritos en conexión con las implementaciones divulgadas en el presente documento se pueden implementar como hardware electrónico, software informático ejecutado por un dispositivo de procesamiento tal como un procesador de hardware, o combinaciones de ambos. Diversos componentes, bloques, configuraciones, módulos, circuitos y etapas ilustrativos se han descrito anteriormente, en general, en términos de su funcionalidad. Que tal funcionalidad se implemente como hardware o software ejecutable depende de la aplicación particular y de restricciones de diseño impuestas al sistema global. Los expertos en la materia pueden implementar la funcionalidad descrita de diversas formas para cada aplicación particular, pero tales decisiones de implementación no deberían interpretarse como que provocan un alejamiento del alcance de la presente divulgación.
Las etapas de un método o algoritmo descritas en conexión con las implementaciones divulgadas en el presente documento se pueden incorporar directamente en hardware, en un módulo de software ejecutado por un procesador o en una combinación de los dos. Un módulo de software puede residir en un dispositivo de memoria, tal como memoria de acceso aleatorio (RAM), memoria de acceso aleatorio magnetorresistiva (MRAM), MRAM de transferencia de par de giro (STT-MRAM), memoria flash, memoria de solo lectura (ROM), memoria de solo lectura programable (PROM), memoria de solo lectura programare y borrable (EPROM), memoria de solo lectura programare y borrable eléctricamente (EEPROM), registros, disco duro, un disco extraíble o un disco compacto - memoria de solo lectura (CD-ROM). Un dispositivo de memoria ilustrativo está acoplado al procesador de tal modo que el procesador puede leer información desde, y escribir información en, el dispositivo de memoria. Como alternativa, el dispositivo de memoria puede ser una parte integrante del procesador. El procesador y el medio de almacenamiento pueden residir en un circuito integrado específico de la aplicación (ASIC). El ASIC puede residir en un dispositivo informático o en un terminal de usuario. Como alternativa, el procesador y el medio de almacenamiento pueden residir como componentes discretos en un dispositivo informático o en un terminal de usuario.
La descripción previa de las implementaciones divulgadas se proporciona para posibilitar que experto en la materia realice o use las implementaciones divulgadas. Diversas modificaciones a estas implementaciones serán inmediatamente evidentes a los expertos en la materia, y los principios definidos en el presente documento se pueden aplicar a otras implementaciones sin apartarse del alcance de la divulgación. Por lo tanto, no se pretende que la presente divulgación se limite a las implementaciones mostradas en el presente documento, sino que se le ha de conceder el alcance más amplio posible de acuerdo con las reivindicaciones siguientes.

Claims (15)

REIVINDICACIONES
1. Un método que comprende:
recibir (501), en un codificador de audio (204), múltiples flujos (131 a 133) de datos de audio, en donde N es el número de los múltiples flujos recibidos; estando el método caracterizado además por:
determinar (503) una pluralidad de valores de similitud correspondientes a una pluralidad de flujos entre los múltiples flujos recibidos;
comparar (505) cada uno de la pluralidad de valores de similitud con un umbral;
identificar (506), basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos recibidos, en donde L es menor que N; y
codificar (507) el número L identificado de flujos para generar un flujo de bits codificado (126).
2. El método de la reivindicación 1, en donde determinar la pluralidad de valores de similitud comprende determinar un primer valor de similitud de un primer flujo particular de los múltiples flujos recibidos basándose en una primera característica de señal de una primera trama del primer flujo particular, en donde el flujo de bits codificado incluye unos metadatos (124) que indican unos datos espaciales correspondientes al primer flujo particular.
3. Un dispositivo (600, 700) que comprende:
un procesador de audio configurado para generar múltiples flujos (131 a 133) de datos de audio basándose en unas señales de audio (136 a 139) recibidas, en donde N es el número de los múltiples flujos de datos de audio; y un codificador de audio (204) configurado para:
• determinar (503) una pluralidad de valores de similitud correspondientes a una pluralidad de flujos entre los múltiples flujos;
• comparar (505) cada uno de la pluralidad de valores de similitud con un umbral;
• identificar (506), basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos, en donde L es menor que N; y
• codificar (507) el número L identificado de flujos para generar un flujo de bits codificado (126).
4. El dispositivo de la reivindicación 3, que comprende además un transmisor (752, 754) configurado para transmitir el flujo de bits codificado a través de una red inalámbrica a un descodificador de audio, en donde el flujo de bits codificado incluye un primer valor de similitud de un primer flujo particular.
5. El dispositivo de la reivindicación 4, que comprende además:
un receptor (752, 754) configurado para recibir el flujo de bits codificado desde una red inalámbrica; y
un descodificador de audio (212) configurado para:
• determinar un primer valor de similitud de un primer flujo particular a partir del flujo de bits codificado;
• comparar el primer valor de similitud del primer flujo particular con un primer umbral; y
• realizar, en el descodificador de audio, una ocultación de errores, basándose en la comparación, para generar muestras de audio descodificadas correspondientes al primer flujo particular.
6. El dispositivo de la reivindicación 3, en donde el codificador de audio (204) está configurado para determinar el primer valor de similitud del primer flujo particular comparando una primera característica de señal de una primera trama del primer flujo particular con una segunda característica de señal de al menos una trama previa del primer flujo particular.
7. El dispositivo de la reivindicación 6, en donde la primera y la segunda características de señal comprenden al menos uno entre una ganancia de libro de códigos adaptativo, un nivel estacionario, un nivel no estacionario, un factor de sonorización, una variación de tono, energía de señal, detección de contenido de habla, un nivel suelo de ruido, una relación de señal con respecto a ruido, un nivel de escasez y una inclinación espectral.
8. El dispositivo de la reivindicación 3, en donde el codificador de audio (204) está configurado para determinar el primer valor de similitud del primer flujo particular comparando una primera característica de señal de una primera trama del primer flujo particular con una segunda característica de señal de una segunda trama de un segundo flujo particular, en donde el segundo flujo particular es diferente del primer flujo particular.
9. El dispositivo de la reivindicación 8, en donde la primera y la segunda características de señal corresponden a unos metadatos espaciales (124) que indican al menos uno entre un valor de elevación y un valor de azimut.
10. El dispositivo de la reivindicación 3, en donde el codificador de audio (204) está configurado para:
identificar un primer flujo particular que no se ha de codificar en respuesta a la determinación de que un primer valor de similitud del primer flujo particular no satisface el umbral; y
identificar un segundo flujo particular a codificar en respuesta a la determinación de que un segundo valor de similitud del segundo flujo particular satisface el umbral.
11. El dispositivo de la reivindicación 3, en donde al menos un flujo entre los múltiples flujos incluye un formato de codificación de flujos independientes.
12. El dispositivo de la reivindicación 3, en donde el codificador de audio (204) está configurado para determinar la pluralidad de valores de similitud basándose en información desde un procesador de audio de extremo frontal (104).
13. El dispositivo de la reivindicación 3, en donde el codificador de audio (204) está configurado además para:
asignar un valor de prioridad a una porción de los múltiples flujos; y
determinar una secuencia de permutación basándose en el valor de prioridad asignado a la porción de los múltiples flujos.
14. Un aparato que comprende:
unos medios para recibir (501) múltiples flujos (131 a 133) de datos de audio, en donde N es el número de los múltiples flujos recibidos; estando el aparato caracterizado por que este comprende además:
unos medios para determinar (503) una pluralidad de valores de similitud correspondientes a la pluralidad de flujos entre los múltiples flujos recibidos;
unos medios para comparar (505) cada uno de la pluralidad de valores de similitud con un umbral;
unos medios para identificar (506), basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos recibidos, en donde L es menor que N; y
unos medios para codificar (507) el número L identificado de flujos para generar un flujo de bits codificado (126).
15. Un medio legible por ordenador no transitorio que comprende instrucciones que, cuando son ejecutadas por un procesador dentro de un codificador de audio (204), hacen que el procesador realice operaciones que comprenden:
recibir (501) múltiples flujos (131 a 133) de datos de audio, en donde N es el número de los múltiples flujos recibidos; determinar (503) una pluralidad de valores de similitud correspondientes a una pluralidad de flujos entre los múltiples flujos recibidos;
comparar (505) cada uno de la pluralidad de valores de similitud con un umbral;
identificar (506), basándose en la comparación, un número L de flujos a codificar entre el número N de los múltiples flujos recibidos, en donde L es menor que N; y
codificar (507) el número L identificado de flujos para generar un flujo de bits codificado (126).
ES18788956T 2017-10-03 2018-09-27 Codificación de audio de múltiples flujos Active ES2888627T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762567663P 2017-10-03 2017-10-03
US16/143,150 US10854209B2 (en) 2017-10-03 2018-09-26 Multi-stream audio coding
PCT/US2018/053185 WO2019070506A1 (en) 2017-10-03 2018-09-27 MULTI-STREAM AUDIO CODING

Publications (1)

Publication Number Publication Date
ES2888627T3 true ES2888627T3 (es) 2022-01-05

Family

ID=65896161

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18788956T Active ES2888627T3 (es) 2017-10-03 2018-09-27 Codificación de audio de múltiples flujos

Country Status (6)

Country Link
US (1) US10854209B2 (es)
EP (1) EP3692524B1 (es)
CN (1) CN111108556B (es)
ES (1) ES2888627T3 (es)
TW (1) TWI779104B (es)
WO (1) WO2019070506A1 (es)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11929085B2 (en) * 2018-08-30 2024-03-12 Dolby International Ab Method and apparatus for controlling enhancement of low-bitrate coded audio
US11765536B2 (en) 2018-11-13 2023-09-19 Dolby Laboratories Licensing Corporation Representing spatial audio by means of an audio signal and associated metadata
EP3751567B1 (en) * 2019-06-10 2022-01-26 Axis AB A method, a computer program, an encoder and a monitoring device
US11538489B2 (en) 2019-06-24 2022-12-27 Qualcomm Incorporated Correlating scene-based audio data for psychoacoustic audio coding
US11361776B2 (en) * 2019-06-24 2022-06-14 Qualcomm Incorporated Coding scaled spatial components
US20200402522A1 (en) * 2019-06-24 2020-12-24 Qualcomm Incorporated Quantizing spatial components based on bit allocations determined for psychoacoustic audio coding
TWI703559B (zh) * 2019-07-08 2020-09-01 瑞昱半導體股份有限公司 音效編碼解碼電路及音頻資料的處理方法
BR112021025420A2 (pt) * 2019-07-08 2022-02-01 Voiceage Corp Método e sistema para codificar metadados em fluxos de áudio e para adaptação de taxa de bits intraobjeto e interobjeto flexível
EP4008000A1 (en) * 2019-08-01 2022-06-08 Dolby Laboratories Licensing Corporation Encoding and decoding ivas bitstreams
AU2020372899A1 (en) * 2019-10-30 2022-04-21 Dolby Laboratories Licensing Corporation Bitrate distribution in immersive voice and audio services
US11269589B2 (en) 2019-12-23 2022-03-08 Dolby Laboratories Licensing Corporation Inter-channel audio feature measurement and usages
GB202002900D0 (en) * 2020-02-28 2020-04-15 Nokia Technologies Oy Audio repersentation and associated rendering
CN113593585A (zh) * 2020-04-30 2021-11-02 华为技术有限公司 音频信号的比特分配方法和装置
CN113539286B (zh) * 2020-06-09 2024-06-04 深圳声临奇境人工智能有限公司 音频装置、音频系统和音频处理方法
WO2024134010A1 (en) * 2022-12-22 2024-06-27 Nokia Technologies Oy Complexity reduction in multi-stream audio

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7318027B2 (en) 2003-02-06 2008-01-08 Dolby Laboratories Licensing Corporation Conversion of synthesized spectral components for encoding and low-complexity transcoding
CA2992097C (en) * 2004-03-01 2018-09-11 Dolby Laboratories Licensing Corporation Reconstructing audio signals with multiple decorrelation techniques and differentially coded parameters
KR100750115B1 (ko) * 2004-10-26 2007-08-21 삼성전자주식회사 오디오 신호 부호화 및 복호화 방법 및 그 장치
KR100888474B1 (ko) * 2005-11-21 2009-03-12 삼성전자주식회사 멀티채널 오디오 신호의 부호화/복호화 장치 및 방법
WO2009129822A1 (en) * 2008-04-22 2009-10-29 Nokia Corporation Efficient encoding and decoding for multi-channel signals
WO2010092915A1 (ja) 2009-02-13 2010-08-19 日本電気株式会社 多チャンネル音響信号処理方法、そのシステム及びプログラム
KR101615262B1 (ko) * 2009-08-12 2016-04-26 삼성전자주식회사 시멘틱 정보를 이용한 멀티 채널 오디오 인코딩 및 디코딩 방법 및 장치
PL2465114T3 (pl) 2009-08-14 2020-09-07 Dts Llc System do adaptacyjnej transmisji potokowej obiektów audio
UA100353C2 (uk) * 2009-12-07 2012-12-10 Долбі Лабораторіс Лайсензін Корпорейшн Декодування цифрових потоків кодованого багатоканального аудіосигналу з використанням адаптивного гібридного перетворення
US9881628B2 (en) * 2016-01-05 2018-01-30 Qualcomm Incorporated Mixed domain coding of audio
US9978381B2 (en) * 2016-02-12 2018-05-22 Qualcomm Incorporated Encoding of multiple audio signals

Also Published As

Publication number Publication date
TW201923739A (zh) 2019-06-16
WO2019070506A1 (en) 2019-04-11
CN111108556A (zh) 2020-05-05
US10854209B2 (en) 2020-12-01
EP3692524A1 (en) 2020-08-12
CN111108556B (zh) 2023-11-21
US20190103118A1 (en) 2019-04-04
TWI779104B (zh) 2022-10-01
EP3692524B1 (en) 2021-08-11

Similar Documents

Publication Publication Date Title
ES2888627T3 (es) Codificación de audio de múltiples flujos
CN110770824B (zh) 多流音频译码
ES2949991T3 (es) Método y sistema para la mezcla en el dominio del tiempo de una señal de sonido estéreo en canales primario y secundario mediante el uso de la detección de un estado de desfase de los canales izquierdo y derecho
KR102230623B1 (ko) 다중의 오디오 신호들의 인코딩
ES2823294T3 (es) Codificación y descodificación de diferencias de fase entre canales entre señales de audio
US11823689B2 (en) Stereo parameters for stereo decoding
BR112019027202A2 (pt) predição intercanal no domínio do tempo
KR102581558B1 (ko) 채널간 위상차 파라미터 수정
EP4396814A1 (en) Silence descriptor using spatial parameters
WO2024052450A1 (en) Encoder and encoding method for discontinuous transmission of parametrically coded independent streams with metadata