ES2406681T3 - Codificación de una señal de voz y procesamiento de una señal de voz codificada - Google Patents

Codificación de una señal de voz y procesamiento de una señal de voz codificada Download PDF

Info

Publication number
ES2406681T3
ES2406681T3 ES07840618T ES07840618T ES2406681T3 ES 2406681 T3 ES2406681 T3 ES 2406681T3 ES 07840618 T ES07840618 T ES 07840618T ES 07840618 T ES07840618 T ES 07840618T ES 2406681 T3 ES2406681 T3 ES 2406681T3
Authority
ES
Spain
Prior art keywords
frame
encoded
description
frames
frequency band
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
ES07840618T
Other languages
English (en)
Inventor
Vivek Rajendran
Ananthapadmanabhan A. Kandhadai
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 ES2406681T3 publication Critical patent/ES2406681T3/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/04Speech 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 using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/18Vocoders using multiple modes
    • G10L19/24Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L21/00Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
    • G10L21/02Speech enhancement, e.g. noise reduction or echo cancellation
    • G10L21/038Speech enhancement, e.g. noise reduction or echo cancellation using band spreading techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Un procedimiento de codificación de tramas de una señal de voz, comprendiendo dicho procedimiento: producir (T110) una primera trama codificada que esté basada en una primera trama de la señal de voz ytenga una longitud de p bits, siendo p un entero positivo distinto de cero; producir (T120) una segunda trama codificada que esté basada en una segunda trama de la señal de voz ytenga una longitud de q bits, siendo q un entero positivo distinto de cero y distinto de p; y producir (T130) una tercera trama codificada que esté basada en una tercera trama de la señal de voz ytenga una longitud de r bits, siendo r un entero positivo distinto de cero menor que q, en el que la segunda trama es una trama inactiva que aparece después de la primera trama, en el que la tercera trama es una trama inactiva que aparece después de la segunda trama, en el que todas las tramas de la señal de voz entre las tramas primera y tercera son inactivas, y en el que la segunda trama codificada incluye (A) una descripción de una envolvente espectral, en unaprimera banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama y (B) unadescripción de una envolvente espectral, en una segunda banda de frecuencias distinta de la primerabanda de frecuencias, de una porción de la señal de voz que incluye la segunda trama.

Description

Codificación de una señal de voz y procesamiento de una señal de voz codificada
La presente invención versa acerca del procesamiento de señales de voz.
La transmisión de la voz mediante técnicas digitales se ha difundido ampliamente, particularmente en la telefonía de larga distancia, en la telefonía conmutada por paquetes tal como la voz sobre IP (también denominada VoIP, denotando IP el protocolo de Internet) y en la radiotelefonía digital como la telefonía celular. Tal proliferación ha creado un interés en reducir la cantidad de información usada para transferir una comunicación de voz por un canal de transmisión mientras se mantiene la calidad percibida de la voz reconstruida.
Los dispositivos que están configurados para comprimir la voz extrayendo parámetros que se relacionan con un modelo de generación de la voz humana, se denominan “cifradores de voz”. Generalmente, un cifrador de voz incluye un codificador y un decodificador. Normalmente, el codificador divide la señal entrante de voz (una señal digital que representa información de audio) en segmentos de tiempo denominados “tramas”, analiza cada trama para extraer ciertos parámetros relevantes y cuantifica los parámetros en una trama codificada. Las tramas codificadas son transmitidas por un canal de transmisión (es decir, una conexión cableada o inalámbrica de red) a un receptor que incluye un decodificador. El decodificador recibe y procesa tramas codificadas, las descuantifica para producir los parámetros y recrea las tramas de voz usando los parámetros descuantificados.
En una conversación típica, cada interlocutor guarda silencio durante aproximadamente el sesenta por ciento del tiempo. Los decodificadores de voz se configuran habitualmente para distinguir las tramas de la señal de voz que contienen voz (“tramas activas”) de las tramas de la señal de voz que contienen solo silencio o ruido de fondo (“tramas inactivas”). Tal codificador puede configurarse para usar diferentes modos y/o tasas de cifrado para codificar tramas activas e inactivas. Por ejemplo, los codificadores de voz se configuran normalmente para usar menos bits para codificar una trama inactiva que para codificar una trama activa. Un cifrador de voz puede usar una tasa menor de bits para las tramas inactivas para soportar la transferencia de la señal de voz a una menor media tasa de bits con ninguna o poca pérdida percibida de la calidad.
La FIG. 1 de los dibujos adjuntos ilustra un resultado de codificación de una zona de una señal de voz que incluye transiciones entre tramas activas y tramas inactivas. Cada barra de la figura indica una correspondiente trama, indicando la altura de la barra la tasa de bits a la que está codificada la trama, e indicando el tiempo el eje horizontal. En este caso, las tramas activas son codificadas a una tasa de bits mayor rH y las tramas inactivas son codificadas a una tasa de bits menor rL.
Ejemplos de tasa de bits rH incluyen 171 bits por trama, ochenta bits por trama y cuarenta bits por trama; y ejemplos de tasa de bits rL incluyen dieciséis bits por trama. en el contexto de sistemas de telefonía celular (especialmente sistemas que se atienen a la Norma Transitoria (IS)-95 promulgada por la Telecommunications Industry Association, Arlington, Virginia, o una normal industrial similar), estas cuatro tasas de bits también se denominan “de tasa máxima”, “de media tasa”, “de un cuarto de tasa” y “de un octavo tasa”, respectivamente. En un ejemplo particular del resultado mostrado en la FIG. 1, la tasa rH es de tasa máxima y la tasa rL es de un octavo de tasa.
Las comunicaciones de voz en la red telefónica pública conmutada (PSTN) han estado limitadas tradicionalmente en el ancho de banda a un intervalo de frecuencias de 300-3400 kilohercios (kHz). Las redes más recientes para comunicaciones de voz, como las redes que usan telefonía celular y/o VoIP, pueden no tener los mismos límites de ancho de banda, y puede ser deseable para aparatos que usen tales redes que tengan la capacidad de transmitir y recibir comunicaciones de voz que incluyan un intervalo de frecuencias de banda ancha. Por ejemplo, puede ser deseable que tales aparatos soporten un intervalo de frecuencias de audio que baje hasta 50 Hz y/o que suba hasta 7 u 8 kHz. También puede ser deseable que tal aparato soporte otras aplicaciones, como audio de alta calidad o la audio/videoconferencia, la distribución de servicios multimedia como música y/o televisión, etc., que puedan tener un contenido de voz de audio en intervalos fuera de los límites de la PSTN tradicional.
La extensión del intervalo soportado por un cifrador de voz a frecuencias mayores puede mejorar la inteligibilidad. Por ejemplo, la información en una señal de voz que diferencia fricativas como “s” y “f” está en gran medida en las frecuencias elevadas. La extensión a la banda alta también puede mejorar otras calidades de la señal de voz decodificada, tal como la presencia. Por ejemplo, incluso una vocal sonora puede tener energía espectral por encima del intervalo de frecuencias de la PSTN.
Aunque puede resultar deseable que un cifrador de voz soporte un intervalo de frecuencias de banda ancha, también es deseable limitar la cantidad de información usada para transferir una comunicación de voz por el canal de transmisión. Puede configurarse un cifrador de voz para llevar a cabo una transmisión discontinua (DTX), por ejemplo de modo que se transmitan descripciones por menos de la totalidad de las tramas inactivas de una señal de voz.
El documento EP 1061506 describe un aparato de codificación de voz para codificar a tasa variable entre intervalos con voz y sordos de una señal de voz de entrada. En operación, el aparato divide la señal de voz de entrada en
unidades prefijadas en el eje temporal y verifica si el intervalo sordo es un intervalo de ruido de fondo o un intervalo de voz en función de cambios temporales del nivel de señal y de la envolvente espectral de la unidad prefijada. La asignación de bits de codificación distingue entre parámetros del intervalo de ruido de fondo, parámetros del intervalo de voz y parámetros del intervalo con voz.
Según un aspecto de la presente invención, se proporciona un procedimiento de codificación de tramas de una señal de voz que comprende producir una primera trama codificada que está basada en una primera trama de la señal de voz y que tiene una longitud de p bits, siendo p un entero positivo distinto de cero; producir una segunda trama codificada que está basada en una segunda trama de la señal de voz y que tiene una longitud de q bits, siendo q un entero positivo distinto de cero y distinto de p; y producir una tercera trama codificada que está basada en una tercera trama de la señal de voz y que tiene una longitud de r bits, siendo r un entero positivo distinto de cero menor que q, en el que la segunda trama es una trama activa que aparece después de la primera trama, en el que la tercera trama es una trama inactiva que aparece después de la segunda trama, en el que todas las tramas de la señal de voz entre las tramas primera y tercera son inactivas, y en el que la segunda trama codificada incluye (A) una descripción de una envolvente espectral, en una primera banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama y (B) una descripción de una envolvente espectral, en una segunda banda de frecuencias distinta de la primera banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama.
Según otro aspecto de la invención, se proporciona un aparato para codificar tramas de una señal de voz, comprendiendo dicho aparato un medio para producir, con base en una primera trama de la señal de voz, una primera trama codificada que tiene una longitud de p bits, siendo p un entero positivo distinto de cero; un medio para producir, con base en una segunda trama de la señal de voz, una segunda trama codificada que tiene una longitud de q bits, siendo q un entero positivo distinto de cero y distinto de p; y un medio para producir, con base en una tercera trama de la señal de voz, una tercera trama codificada que tiene una longitud de r bits, siendo r un entero positivo distinto de cero menor que q, en el que la segunda trama es una trama inactiva que aparece después de la primera trama, en el que la tercera trama es una trama inactiva que aparece después de la segunda trama, en el que todas las tramas de la señal de voz entre las tramas primera y tercera son inactivas, y en el que el medio para producir una segunda trama codificada está configurado para producir la segunda trama codificada de forma que incluya (A) una descripción de la envolvente espectral, en una primera banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama y (B) una descripción de una envolvente espectral, en una segunda banda de frecuencias distinta de la primera banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama.
Según un aspecto adicional de la invención, se proporciona un procedimiento de procesamiento de una señal de voz codificada, comprendiendo dicho procedimiento: con base en la información procedente de una primera trama codificada de la señal de voz codificada, obtener una descripción de una envolvente espectral de una primera trama de una señal de voz en (A) una primera banda de frecuencias y (B) una segunda banda de frecuencias diferente de la primera banda de frecuencias; con base en la información procedente de una segunda trama codificada de la señal de voz codificada, obtener una descripción de una envolvente espectral de una segunda trama de una señal de voz en la primera banda de frecuencias; y con base en la información procedente de la primera trama codificada, obtener una descripción de una envolvente espectral de la segunda trama en la segunda banda de frecuencias, en el que la primera trama codificada es codificada según un esquema de codificación de banda ancha, y en el que la segunda trama codificada es codificada según un esquema de codificación de banda estrecha.
Según otro aspecto adicional de la invención, se proporciona un aparato para procesar una señal de voz codificada, comprendiendo dicho aparato: un medio para obtener, con base en la información procedente de una primera trama codificada de la señal de voz codificada, una descripción de una envolvente espectral de una primera trama de una señal de voz en (A) una primera banda de frecuencias y (B) una segunda banda de frecuencias diferente de la primera banda de frecuencias; un medio para obtener, con base en la información procedente de una segunda trama codificada de la señal de voz codificada, una descripción de una envolvente espectral de una segunda trama de la señal de voz en la primera banda de frecuencias; y un medio para obtener, con base en la información procedente de la primera trama codificada, una descripción de una envolvente espectral de la segunda trama en la segunda banda de frecuencias, estando codificada la primera trama codificada según un esquema de codificación de banda ancha, y estando codificada la segunda trama codificada según un esquema de codificación de banda estrecha.
La invención será descrita ahora a título de ejemplo con referencia a los dibujos adjuntos, en los que:
La FIG. 1 ilustra un resultado de la codificación de una zona de una señal de voz que incluye transiciones entre tramas activas y tramas inactivas. La FIG. 2 muestra un ejemplo de un árbol de decisiones que pueden usar un codificador de voz o un procedimiento de codificación de voz para seleccionar una tasa de bits. La FIG. 3 ilustra un resultado de la codificación de una zona de una señal de voz que incluye un resto de cuatro tramas. La FIG. 4A muestra un gráfico de una función ventana trapezoidal que puede usarse para calcular valores de la forma de ganancia.
La FIG. 4B muestra una aplicación de la función ventana de la FIG. 4A a cada una de cinco subtramas de una trama. La FIG. 5A muestra un ejemplo de un esquema de bandas de frecuencias no solapadas que puede ser usado por un codificador de banda dividida para codificar un contenido de voz de banda ancha. La FIG. 5B muestra un ejemplo de un esquema de bandas de frecuencias solapadas que puede ser usado por un codificador de banda dividida para codificar un contenido de voz de banda ancha. Las FIGURAS 6A, 6B, 7A, 7B, 8A y 8B ilustran resultados de codificación de una transición de tramas activas a tramas inactivas en una señal de voz usando varios enfoques diferentes. La FIG. 9 ilustra una operación de codificación de tres tramas sucesivas de una señal de voz usando un procedimiento M100 según una configuración general. Las FIGURAS 10A, 10B, 11A, 11B, 12A y 12B ilustran resultados de codificación de transiciones de tramas activas a tramas inactivas usando diferentes implementaciones del procedimiento M100. La FIG. 13A muestra un resultado de codificación de una secuencia de tramas según otra implementación del procedimiento M100. La FIG. 13B ilustra un resultado de codificación de una serie de tramas inactivas usando una implementación adicional del procedimiento M100. La FIG. 14 muestra una aplicación de una implementación M110 del procedimiento M100. La FIG. 15 muestra una aplicación de una implementación M120 del procedimiento M110. La FIG. 16 muestra una aplicación de una implementación M130 del procedimiento M120. La FIG. 17A ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas usando una implementación del procedimiento M130. La FIG. 17B ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas usando otra implementación del procedimiento M130. La FIG. 18A es una tabla que muestra un conjunto de tres esquemas de codificación diferentes que puede usar un codificador de voz para producir un resultado como el mostrado en la FIG. 17B. La FIG. 18B ilustra una operación de codificación de dos tramas sucesivas de una señal de voz usando un procedimiento M300 según una configuración general. La FIG. 18C muestra una aplicación de una implementación M310 del procedimiento M300. La FIG. 19A muestra un diagrama de bloques de un aparato 100 según una configuración general. La FIG. 19B muestra un diagrama de bloques de una implementación 132 del codificador 130 de voz. La FIG. 19C muestra un diagrama de bloques de una implementación 142 del calculador 140 de descripciones de envolventes espectrales. La FIG. 20A muestra un diagrama de flujo de pruebas que puede llevar a cabo una implementación del selector 120 del esquema de codificación. La FIG. 20B muestra un diagrama de estado según el cual puede configurarse que opere otra implementación del selector 120 del esquema de codificación. Las FIGURAS 21A, 21B y 21C muestran diagramas de estado según los cuales pueden configurarse que operen implementaciones adicionales del selector 120 del esquema de codificación. La FIG. 22A muestra un diagrama de bloques de una implementación 134 del codificador 132 de voz. La FIG. 22B muestra un diagrama de bloques de una implementación 154 del calculador 152 de descripciones de información temporal. La FIG. 23A muestra un diagrama de bloques de una implementación 102 del aparato 100, que está configurado para codificar una señal de voz de banda ancha según un esquema de codificación de banda dividida. La FIG. 23B muestra un diagrama de bloques de una implementación 138 del codificador 136 de voz. La FIG. 24A muestra un diagrama de bloques de una implementación 139 del codificador 136 de voz de banda ancha. La FIG. 24B muestra un diagrama de bloques de una implementación 158 del calculador 156 de descripciones temporales. La FIG. 25A muestra un diagrama de flujo de un procedimiento M200 de procesamiento de una señal de voz codificada según una configuración general. La FIG. 25B muestra un diagrama de flujo de una implementación M210 del procedimiento M200. La FIG. 25C muestra un diagrama de flujo de una implementación M220 del procedimiento M210. La FIG. 26 muestra una aplicación del procedimiento M200. La FIG. 27A ilustra una relación entre los procedimientos M100 y M200. La FIG. 27B ilustra una relación entre los procedimientos M300 y M200. La FIG. 28 muestra una aplicación del procedimiento M210. La FIG. 29 muestra una aplicación del procedimiento M220. La FIG. 30A ilustra un resultado de iterar una implementación de la tarea T230. La FIG. 30B ilustra un resultado de iterar otra implementación de la tarea T230. La FIG. 30C ilustra un resultado de iterar una implementación adicional de la tarea T230. La FIG. 31 muestra una porción de un diagrama de estado para un decodificador de voz configurado para llevar a cabo una implementación del procedimiento M200. La FIG. 32A muestra un diagrama de bloques de un aparato 200 para procesar una señal de voz codificada según una configuración general.
La FIG. 32B muestra un diagrama de bloques de una implementación 202 del aparato 200. La FIG. 32C muestra un diagrama de bloques de una implementación 204 del aparato 200. La FIG. 33A muestra un diagrama de bloques de una implementación 232 del primer módulo 230. La FIG. 33B muestra un diagrama de bloques de una implementación 272 del decodificador 270 de descripciones de envolventes espectrales. La FIG. 34A muestra un diagrama de bloques de una implementación 242 del segundo módulo 240. La FIG. 34B muestra un diagrama de bloques de una implementación 244 del segundo módulo 240. La FIG. 34C muestra un diagrama de bloques de una implementación 246 del segundo módulo 240. La FIG. 35A muestra un diagrama de estado según el cual puede configurarse que opere una implementación de la lógica 210 de control. La FIG. 35B muestra un resultado de un ejemplo de combinación del procedimiento M100 con DTX.
En las figuras de la descripción adjunta, las mismas marcas de referencia se refieren a elementos o señales iguales
o análogos.
Descripción detallada
Las configuraciones descritas en el presente documento pueden aplicarse en un sistema de codificación de voz de banda ancha para soportar el uso de una tasa de bits menor para tramas inactivas que para tramas activas y/o para mejorar la calidad percibida de una señal de voz transferida. Se contempla expresamente y se da a conocer por el presente documento que tales configuraciones puedan adaptarse para ser usadas en redes que estén conmutadas por paquetes (por ejemplo, redes cableadas y/o inalámbricas dispuestas para transportar transmisiones de voz según protocolos tales como VoIP) y/o conmutadas por circuitos.
A no ser que se limite expresamente por su contexto, en el presente documento se usa el término “calcular” para indicar cualquiera de sus significados habituales, tales como computar, evaluar, generar y/o seleccionar de un conjunto de valores. A no ser se limite expresamente por el contexto, se usa el término “obtener” para indicar cualquiera de sus significados habituales, tales como calcular, deducir, recibir (por ejemplo, de un dispositivo externo) y/o recuperar (por ejemplo, de un conjunto de elementos de almacenamiento). Cuando se usa el término “comprender” en la presente descripción y en las reivindicaciones, no excluye otros elementos ni operaciones. Se usa la expresión “A se basa en B” para indicar cualquiera de sus significados habituales, incluyendo los casos (i) “A se basa en al menos B” y (ii) “A es igual a B” (si es apropiado en el contexto particular).
A no ser que se indique algo distinto, se pretende expresamente que cualquier divulgación de un codificador de voz que tenga una característica particular dé a conocer un procedimiento de codificación de voz que tenga una característica análoga (y viceversa), y también se pretende expresamente que cualquier divulgación de un codificador de voz según una configuración particular dé a conocer un procedimiento de codificación de voz según una configuración análoga (y viceversa). A no ser que se indique algo distinto, también se pretende expresamente que cualquier divulgación de un decodificador de voz que tenga una característica particular dé a conocer un procedimiento de decodificación de voz que tenga una característica análoga (y viceversa), y también se pretende expresamente que cualquier divulgación de un decodificador de voz según una configuración particular dé a conocer un procedimiento de decodificación de voz según una configuración análoga (y viceversa).
Normalmente, las tramas de una señal de voz son lo bastante cortas como para que quepa esperar que la envolvente espectral de la señal permanezca relativamente estacionaria durante la trama. Una longitud típica de trama es de veinte milisegundos, aunque puede usarse cualquier longitud de trama que se considere adecuada para la aplicación particular. Una longitud de trama de veinte milisegundos corresponde a 140 muestras con una tasa de muestreo de siete kilohercios (kHz), 160 muestras con una tasa de muestreo de ocho kHz, y 320 muestras con una tasa de muestreo de 16 kHz, aunque puede usarse cualquier tasa de muestreo que se considere adecuada para la aplicación particular. Otro ejemplo de tasa de muestreo que puede usarse para la codificación de voz es 12,8 kHz, y ejemplos adicionales incluyen otras tasas en el intervalo entre 12,8 kHz y 38,4 kHz.
Normalmente, todas las tramas tienen la misma longitud, y en los ejemplos particulares descritos en el presente documento se da por sentada una longitud uniforme de las tramas. Sin embargo, también se contempla expresamente y se da a conocer por el presente documento que pueden usarse longitudes no uniformes de tramas. Por ejemplo, también pueden usarse implementaciones de los procedimientos M100 y M200 en aplicaciones que empleen diferentes longitudes de trama para las tramas activas y las inactivas y/o para las tramas con voz y sin voz.
En algunas aplicaciones, las trapas no se solapan, mientras que en otras aplicaciones se usa un esquema de tramas solapadas. Por ejemplo, es común que un cifrador de voz use un esquema de tramas solapadas en el codificador y un esquema de tramas no solapadas en el decodificador. También es posible que un decodificador use diferentes esquemas de trama para diferentes tareas. Por ejemplo, un codificador de voz o un procedimiento de codificación de voz pueden usar un esquema de tramas solapadas para codificar una descripción de una envolvente espectral de una trama y un esquema diferente de tramas solapadas para codificar una descripción de información temporal de la trama.
Según se ha hecho notar en lo que antecede, puede resultar deseable configurar un codificador de voz para que use diferentes modos y/o tasas de codificación para codificar tramas activas y tramas inactivas. Para distinguir las tramas activas de las tras inactivas, un codificador de voz incluye normalmente un detector de actividad vocal o lleva a cabo de otra manera un procedimiento de detección de la actividad vocal. Tal detector o tal procedimiento pueden ser configurados para clasificar una trama como activa o inactiva en función de uno o más factores como la energía de la trama, la relación señal-ruido, la periodicidad y la frecuencia de los pasos por cero. Tal clasificación puede incluir comparar un valor o una magnitud de tal factor con un valor umbral y/o comparar la magnitud de un cambio en tal factor con un valor umbral.
Un detector de actividad vocal o un procedimiento de detección de actividad vocal también pueden ser configurados para clasificar una trama activa como uno de dos o más tipos diferentes, tales como vocal (por ejemplo, representando un sonido vocal), sordo (por ejemplo, representando un sonido fricativo) o transitorio (por ejemplo, representando el inicio o el fin de una palabra). Puede resultar deseable que un codificador de voz use tasas de bits diferentes para codificar diferentes tipos de tramas activas. Aunque el ejemplo particular de la FIGURA 1 muestra una serie de tramas activas, codificadas todas a la misma tasa de bits, un experto en la técnica apreciará que los procedimientos y el aparato descritos en el presente documento también pueden ser usados en codificador de voz y en procedimiento de codificación de voz que estén configurados para codificar las tramas activas a tasas de bits diferentes.
La FIGURA 2 muestra un ejemplo de un árbol de decisiones que pueden usar un codificador de voz o un procedimiento de codificación de voz para seleccionar una tasa de bits en la que codificar una trama particular según el tipo de voz que contiene la trama. En otros casos, la tasa de bits seleccionada para una trama particular también puede depender de criterios tales como una media tasa deseada de bits, un patrón deseado de tasas de bits en una serie de tramas (que puede usarse para soportar una media tasa deseada de bits), y/o la tasa de bits seleccionada para una trama anterior.
Puede resultar deseable usar diferentes modos de codificación para codificar diferentes tipos de tramas de voz. Las tramas de voz vocal tienden a tener una estructura periódica a largo plazo (es decir, que continúa durante más de un periodo de tramas) y que está relacionada con la altura tonal, y normalmente es más eficiente codificar una trama vocal (o una secuencia de tramas con voz) usando un modo de codificación que codifique una descripción de esta característica espectral a largo plazo. Ejemplos de tales modos de codificación incluyen la predicción lineal activada por código (CELP) y periodo prototípico de altura tonal (PPP). Por otra parte, las tramas sin voz y las tramas inactivas suelen carecer de cualquier característica espectral significativa a largo plazo, y el codificador de voz puede ser configurado para codificar estas tramas usando un modo de codificación que no intente describir tal característica. La predicción lineal activada por ruido (NELP) es un ejemplo de tal modo de codificación.
Un codificador de voz o un procedimiento de codificación de voz pueden ser configurados para que seleccionen entre diferentes combinaciones de tasas de bits y de modos de codificación (también denominados “esquemas de codificación”). Por ejemplo, un codificador de voz configurado para llevar a cabo una implementación del procedimiento M100 puede usar un esquema CELP de tasa máxima para las tramas que contienen voz vocal y tramas transitorias, un esquema NELP de media tasa para las tramas que contienen voz sorda, y un esquema NELP de un octavo de tasa para las tramas inactivas. Otros ejemplos de tal codificador de voz soportan múltiples tasas de codificación para uno o más esquemas de codificación, tales como esquemas CELP de tasa máxima y de media tasa y/o esquemas PPP de tasa máxima y de un cuarto de tasa.
Una transición de voz activa a voz inactiva ocurre normalmente en un periodo de varias tramas. En consecuencia, las primeras varias tramas de una señal de voz después de una transición de tramas activas a tramas inactivas pueden incluir restos de voz activa, tales como restos con voz. Si un codificador de voz codifica una trama que tiene tales restos usando un esquema de codificación que está concebido para tramas inactivas, el resultado codificado puede no representar con precisión la trama original. Así, puede resultar deseable mantener una tasa de bits mayor y/o un modo de codificación activo para una o más de las tramas que siguen a una transición de tramas activas a tramas inactivas.
La FIG. 3 ilustra un resultado de codificación de una zona de una señal de voz en la que se mantiene la tasa de bits mayor rH durante varias tramas después de una transición de tramas activas a tramas inactivas. La longitud de esta continuidad (también denominada “resto”) puede ser seleccionada según una longitud prevista de la transición y puede ser fija o variable. Por ejemplo, la longitud del resto puede basarse en una o más características como la relación señal-ruido de una o más de las tramas activas que preceden a la transición. La FIG. 3 ilustra un resto de cuatro tramas.
Normalmente, una trama codificada contiene un conjunto de parámetros de voz a partir de los cuales puede reconstruirse una trama correspondiente de la señal de voz. Normalmente, este conjunto de parámetros de voz incluye información espectral, tal como una descripción de la distribución de energía dentro de la trama en un espectro de frecuencias. Tal distribución de energía se denomina también “envolvente de frecuencias” o “envolvente espectral” de la trama. un codificador de voz está configurado normalmente para calcular una descripción de una envolvente espectral de una trama como una secuencia ordenada de valores. En algunos casos, el codificador de
voz está configurado para calcular la secuencia ordenada de tal modo que cada valor indique una amplitud o una magnitud de la señal en una frecuencia correspondiente o en una zona espectral correspondiente. Un ejemplo de tal descripción es una secuencia ordenada de coeficientes de una transformada de Fourier.
En otros casos, el codificador de voz está configurado para calcular la descripción de una envolvente espectral como una secuencia ordenada de valores de parámetros de un modelo de codificación, tal como un conjunto de valores de coeficientes de un análisis de codificación predictiva lineal (LPC). Una secuencia ordenada de valores de coeficientes de LPC se dispone normalmente como uno o más vectores, y el codificador de voz puede estar implementado para que calcule estos valores como coeficientes de filtro o como coeficientes de reflexión. El número de valores de los coeficientes del conjunto también se denomina “orden” del análisis de LPC y ejemplos de un orden normal de un análisis de LPC como el llevado a cabo por un codificador de voz de un dispositivo de comunicaciones (tal como un teléfono celular) incluyen cuatro, seis, ocho, diez, 12, 16, 20, 24, 28 y 32.
Normalmente, un codificador de voz está configurado para transmitir la descripción de una envolvente espectral por un canal de transmisión de forma cuantificada (por ejemplo, como uno o más índices a correspondientes tablas de consulta o “códigos”). En consecuencia, puede resultar deseable que un codificador de voz calcule un conjunto de valores de coeficientes de LPC de una forma que pueda ser cuantificada eficientemente, tal como un conjunto de valores de pares espectrales lineales (LSP), frecuencias espectrales lineales (LSF), pares espectrales de inmitancia (ISP), frecuencias espectrales de inmitancia (ISF), coeficientes cepstrales o relaciones de área logarítmicas. Un codificador de voz también puede estar configurado para llevar a cabo otras operaciones, como la ponderación perceptual, en la secuencia ordenada de valores antes de la conversión y/o la cuantificación.
En algunos casos, una descripción de una envolvente espectral de una trama incluye también una descripción de información temporal de la trama (por ejemplo, como en una secuencia ordenada de coeficientes de una transformada de Fourier). En otros casos, el conjunto de parámetros de voz de una trama codificada también puede incluir una descripción de información temporal de la trama. la forma de la descripción de información temporal puede depender del modo particular de codificación usado para codificar la trama. Para algunos modos de codificación (por ejemplo, para un modo de codificación CELP), la descripción de información temporal puede incluir una descripción de una señal de excitación para ser usada por un decodificador de voz para excitar un modelo LPC (por ejemplo, definido por la descripción de la envolvente espectral). Una descripción de una señal de excitación aparece normalmente en una trama codificada en forma cuantificada (por ejemplo, como uno o más índices a correspondientes códigos). La descripción de la información temporal también puede incluir información relativa a un componente de altura tonal de la señal de excitación. Por ejemplo, para un modo de codificación PPP, la información temporal codificada puede incluir una descripción de un prototipo para ser usada por un decodificador de voz para reproducir un componente de altura tonal de la señal de excitación. Una descripción de información relativa a un componente de altura tonal aparece normalmente en una trama codificada en forma cuantificada (por ejemplo, como uno a más índices a correspondientes códigos).
Para otros modos de codificación (por ejemplo, para un modo de codificación NELP), la descripción de la información temporal puede incluir una descripción de una envolvente temporal de la trama (también denominada “envolvente de energía” o “envolvente de ganancia” de la trama). Una descripción de una envolvente temporal puede incluir un valor que esté basado en la energía media de la trama. Tal valor aparece normalmente como un valor de ganancia que ha de aplicarse a la trama durante la decodificación y también es denominado “trama de ganancia”. En algunos casos, la trama de ganancia es un factor de normalización basado en una relación entre (A) la energía de la trama original Eorig y (B) la energía de una trama sintetizada a partir de otros parámetros de la trama codificada (por ejemplo, incluyendo la descripción de una envolvente espectral) Esint. Por ejemplo, una trama de ganancia puede expresarse como Eorig/Esint o como la raíz cuadrada de Eorig/Esint. Se describen con más detalle las tramas de ganancia y otros aspectos de las envolventes temporales, por ejemplo, en la publicación de la solicitud de patente estadounidense 2006/0282262 (Vos et al.), “SYSTEMS, METHODS, AND APPARATUS FOR GAIN FACTOR ATTENUATION”, publicada el 14 de diciembre de 2006.
Alternativamente o además, una descripción de una envolvente temporal puede incluir valores relativos de energía para cada una de las subtramas de la trama. Tales valores aparecen normalmente como valores de ganancia que han de aplicarse a las respectivas subtramas durante la decodificación y son denominados colectivamente “perfil de ganancia” o “forma de ganancia”. En algunos casos, los valores de la forma de ganancia son factores de normalización, estando basado cada uno en una relación entre (A) la energía de la subtrama original i Eorig.i y (B) la energía de la correspondiente subtrama i de una trama sintetizada a partir de otros parámetros de la trama codificada (por ejemplo, incluyendo la descripción de una envolvente espectral) Esint.i. En tales casos, puede usarse la energía Esint.i para normalizar la energía Eorig.i. Por ejemplo, un valor de forma puede expresarse como Eorig.i/Esint.i o como la raíz cuadrada de Eorig.i/Esint.i. Un ejemplo de una descripción de una envolvente temporal incluye una trama de ganancia y una forma de ganancia, incluyendo la forma de ganancia un valor para cada una de las cinco subtramas de cuatro milisegundos de una trama de veinte milisegundos. Los valores de ganancia pueden expresarse sobre una escala lineal o sobre una escala logarítmica (por ejemplo, de decibelios). Tales características son descritas con más detalle, por ejemplo, en la publicación de solicitud de patente estadounidense 2006/0282262, citada en lo que antecede.
Al calcular el valor de una trama de ganancia (o valores de una forma de ganancia), puede ser deseable aplicar una función ventana que solape tramas (o subtramas) adyacentes. Los valores de ganancia producidos de esta manera son normalmente aplicados mediante suma de solapamientos en el decodificador de voz, lo que puede contribuir a reducir o evitar discontinuidades entre tramas o subtramas. La FIG. 4A muestra un gráfico de una función ventana trapezoidal que puede usarse para calcular cada uno de los valores de la forma de ganancia. En este ejemplo, la ventana se solapa un milisegundo a cada una de las dos subtramas adyacentes. La FIG. 4B muestra una aplicación de esta función ventana a cada una de las cinco subtramas de una trama de veinte milisegundos. Otros ejemplos de funciones ventana incluyen funciones que tienen diferentes periodos de solapamiento y/o diferentes formas de ventana (por ejemplo, rectangulares o de Hamming) que pueden ser simétricas o asimétricas. También es posible calcular valores de la forma de ganancia aplicando diferentes funciones ventana a diferentes subtramas y/o calculando diferentes valores de la forma de ganancia a subtramas de diferentes longitudes.
Una trama codificada que incluya una descripción de una envolvente temporal incluye normalmente tal descripción de una forma cuantificada como uno o más índices a correspondientes códigos, aunque el algunos casos puede usarse un algoritmo para cuantificar y/o descuantificar la trama de ganancia y/o la forma de ganancia sin usar un código. Un ejemplo de descripción de una envolvente temporal incluye un índice cuantificado de ocho a doces bits que especifica cinco valores de la forma de ganancia para la trama (por ejemplo, uno para cada una de cinco subtramas consecutivas). Tal descripción también puede incluir otro índice cuantificado que especifique un valor de la trama de ganancia para la trama.
Según se ha hecho notar en lo que antecede, puede resultar deseable transmitir y recibir una señal de voz que tenga un intervalo de frecuencias que supere el intervalo de frecuencias de la PST de 300-3400 kHz. Un enfoque de codificación de tal señal es codificar todo el intervalo extendido de frecuencias como una sola banda de frecuencias. Tal enfoque puede implementarse cambiando la escala de una técnica de codificación de voz de banda estrecha (por ejemplo, una configurada para codificar un intervalo de frecuencias de calidad de PSTN, tal como 0-4 kHz o 300-3400 Hz) para que cubra un intervalo de frecuencias de banda ancha, tal como 0-8 kHz. Por ejemplo, tal enfoque puede incluir (A) muestrear la señal de voz a mayor tasa para incluir componentes a frecuencias elevadas y
(B) reconfigurar una técnica de codificación de banda estrecha para representar la señal de banda ancha con un grado deseado de precisión. Un procedimiento tal de reconfiguración de una técnica de codificación de banda estrecha es usar un análisis de LPC de orden mayor (es decir, producir un vector de coeficientes que tenga más valores). Un cifrador de voz de banda ancha que codifique una señal de banda ancha como una sola banda de frecuencias también se denomina cifrador “de banda completa”.
Puede resultar deseable implementar un cifrador de voz de banda ancha de tal modo que una porción de banda estrecha de la señal codificada pueda ser enviada a través de un canal de banda estrecha (tal como un canal PSTN) sin la necesidad de transcodificar o de modificar significativamente de otro modo la señal codificada. Tal característica puede facilitar la retrocompatibilidad con redes y/o aparatos que solo reconozcan señales de banda estrecha. También puede resultar deseable implementar un cifrador de voz de banda ancha que use diferentes modos de codificación y/o tasas para diferentes bandas de frecuencias de la señal de voz. Puede usarse tal característica para soportar una eficiencia de codificación y/o una calidad perceptual mayores. Un cifrador de voz de banda ancha que esté configurado para producir tramas codificadas que tienen porciones que representan diferentes bandas de frecuencias de la señal de voz de banda ancha (por ejemplo, conjuntos separados de parámetros de voz, representando cada conjunto una diferente banda de frecuencias de la señal de voz de banda ancha) también se denomina cifrador “de banda dividida”.
La FIG. 5A muestra un ejemplo de un esquema de bandas de frecuencias no solapadas que puede ser usado por un codificador de banda dividida para codificar un contenido de voz de banda ancha en un intervalo entre 0 Hz y 8 kHz. Este esquema incluye una primera banda de frecuencias que se extiende entre 0 Hz y 4 kHz (también denominada intervalo de banda estrecha) y una segunda banda de frecuencias que se extiende entre 4 y 8 kHz (también denominada intervalo extendido, superior o de banda alta). La FIG. 5B muestra un ejemplo de un esquema de bandas de frecuencias solapadas que puede ser usado por un codificador de banda dividida para codificar un contenido de voz de banda ancha en un intervalo entre 0 Hz y 7 kHz. Este esquema incluye una primera banda de frecuencias que se extiende entre 0 Hz y 4 kHz (el intervalo de banda estrecha) y una segunda banda de frecuencias que se extiende entre 3,5 y 7 kHz (el intervalo extendido, superior o de banda alta).
Un ejemplo particular del codificador de banda dividida está configurado para llevar a cabo un análisis de LPC de décimo orden para el intervalo de banda estrecha y un análisis de LPC de sexto orden para el intervalo de banda alta. Otros ejemplos de esquemas de bandas de frecuencias incluyen aquellos en los que el intervalo de banda estrecha solo se extiende por abajo hasta aproximadamente 300 Hz. Tal esquema puede también incluir otra banda de frecuencias que cubra un intervalo de banda baja entre aproximadamente 0 o 50 Hz hasta aproximadamente 300
o 350 Hz.
Puede resultar deseable reducir la media tasa de bits usada para codificar una señal de voz de banda ancha. Por ejemplo, reducir la media tasa de bits necesaria para soportar un servicio particular puede permitir un aumento en el número de usuarios a los que una red puede atender en un momento dado. Sin embargo, también resulta deseable
lograr tal reducción sin degradar excesivamente la calidad perceptual de la correspondiente señal de voz decodificada.
Un posible enfoque de reducción de la media tasa de bits de una señal de voz de banda ancha es codificar las tramas inactivas usando un esquema de codificación de banda ancha de banda completa con una baja tasa de bits. La FIG. 6A ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas en la que las tramas activas se codifican a una mayor tasa de bits rH y las tramas inactivas son codificadas a una tasa de bits menor rL. La etiqueta F indica una trama codificada usando un esquema de codificación de banda ancha de banda completa.
Para lograr una reducción suficiente en la media tasa de bits, puede resultar deseable codificar las tramas inactivas usando una tasa de bits muy baja. Por ejemplo, puede resultar deseable usar una tasa de bits que sea comparable a una tasa de bits usada para codificar tramas inactivas en un cifrador de banda estrecha, tal como dieciséis bits por trama (“de un octavo de tasa”). Desgraciadamente, un número de bits tan pequeño es normalmente insuficiente para codificar tan siquiera una trama inactiva de una señal de banda ancha hasta un grado aceptable de calidad perceptual en el intervalo de banda ancha, y un cifrador de banda ancha de banda completa que codifique tramas inactivas a tal tasa de bits es probable que produzca una señal decodificada que tenga una calidad de sonido deficiente durante las tramas inactivas. Tal señal puede carecer de uniformidad durante las tramas inactivas; por ejemplo, porque la sonoridad percibida y/o la distribución espectral de la señal decodificada puedan cambiar excesivamente de una trama a la siguiente. Normalmente, la uniformidad es perceptualmente importante para el ruido de fondo decodificado.
La FIG. 6B ilustra otro resultado de codificación de una transición de tramas activas a tramas inactivas. En este caso, se usa un esquema de codificación de banda ancha de banda dividida para codificar las tramas activas a la tasa de bits mayor y se usa un esquema de cifrado de banda ancha de banda completa para codificar las tramas inactivas a la tasa de bits menor. Las etiquetas H y N indican porciones de una trama codificada de banda dividida que se codifican usando un esquema de codificación de banda alta y un esquema de codificación de banda estrecha, respectivamente. Según se ha hecho notar en lo que antecede, codificar las tramas inactivas usando un esquema de codificación de banda ancha de banda completa y una baja tasa de bits es probable que produzca una señal decodificada que tenga una calidad de sonido deficiente durante las tramas inactivas. Mezclar los esquemas de codificación de banda dividida y de banda completa también es probable que aumente la complejidad del cifrador, aunque tal complejidad pueda tener un impacto, o no tenerlo, en la practicidad de la implementación resultante. Además, aunque a veces se use información histórica de tramas pasadas para aumentar significativamente la eficiencia del cifrado (especialmente para codificar tramas con voz), puede no ser viable aplicar la información histórica generada por un esquema de codificación de banda dividida durante la operación de un esquema de codificación de banda completa, y viceversa.
Otro enfoque posible de reducción de la media tasa de bits de una señal de banda ancha es codificar las tramas inactivas usando un esquema de codificación de banda ancha de banda dividida a una baja tasa de bits. La FIG. 7A ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas en la que se usa un esquema de codificación de banda ancha de banda completa para codificar las tramas activas a una mayor tasa de bits rH y se usa un esquema de codificación de banda ancha de banda dividida para codificar las tramas inactivas a una tasa de bits menor rL. La FIG. 7B ilustra un ejemplo relacionado en el que se usa un esquema de codificación de banda ancha de banda dividida para codificar las tramas activas. Tal como se ha mencionado en lo que antecede con referencia a las FIGURAS 6A y 6B, puede resultar deseable codificar las tramas inactivas usando una tasa de bits que sea comparable a una tasa de bits usada para codificar tramas inactivas en un cifrador de banda estrecha, tal como dieciséis bits por trama (“de un octavo de tasa”). Desgraciadamente, un número de bits tan pequeño es normalmente insuficiente para que un esquema de codificación de banda dividida asigne entre las diferentes bandas de frecuencias de modo que pueda lograrse una señal de banda ancha decodificada de calidad aceptable.
Un enfoque adicional posible para reducir la media tasa de bits de una señal de banda ancha es codificar las tramas inactivas como banda estrecha a baja tasa de bits. Las FIGURAS 8A y 8B ilustran resultados de codificación de una transición de tramas activas a tramas inactivas en la que se usa un esquema de codificación de banda ancha para codificar las tramas activas a una tasa de bits mayor rH y se usa un esquema de codificación de banda estrecha para codificar las tramas inactivas a una tasa de bits menor rL. En el ejemplo de la FIG. 8A se usa un esquema de codificación de banda ancha de banda completa para codificar las tramas activas, mientras que en el ejemplo de la FIG. 8B se usa un esquema de codificación de banda ancha de banda dividida para codificar las tramas activas.
Codificar una trama activa usando un esquema de codificación de banda ancha de alta tasa de bits produce normalmente una trama codificada que contiene ruido de fondo de banda ancha bien codificado. Sin embargo, codificar una trama inactiva usando únicamente un esquema de codificación de banda estrecha, como en los ejemplos de las FIGURAS 8A y 8B, produce una trama codificada que carece de las frecuencias extendidas. En consecuencia, una transición de una trama activa de banda ancha decodificada a una trama inactiva de banda estrecha decodificada es probable que sea muy audible y desagradable, y este tercer enfoque posible también es probable que produzca un resultado que diste de ser óptimo.
La FIG. 9 ilustra una operación de codificación de tres tramas sucesivas de una señal de voz usando un procedimiento M100 según una configuración general. La tarea T110 codifica la primera de las tres tramas, que puede ser activa o inactiva, a una primera tasa de bits r1 (p bits por trama). La tarea T120 codifica la segunda trama, que sigue a la primera trama y es una trama inactiva, a una segunda tasa de bits r2 (q bits por trama) que es distinta de r1. La tarea T130 codifica la tercera trama, que sigue inmediatamente a la segunda trama y también es inactiva, a una tercera tasa de bits r3 (r bits por trama) que es menor que r2. Normalmente, el procedimiento M100 se lleva a cabo como parte de un procedimiento mayor de codificación de voz, y se contemplan expresamente y se dan a conocer por el presente documento codificadores de voz y procedimientos de codificación de voz que son configurados para llevar a cabo el procedimiento M100.
Puede configurarse un correspondiente decodificador de voz para que use información procedente de la segunda trama codificada para complementar la decodificación de una trama inactiva procedente de la tercera trama decodificada. En otro lugar de la presente descripción se dan a conocer decodificadores de voz y procedimientos de decodificación de tramas de una señal de voz que usan información procedente de la segunda trama codificada en la decodificación de una o más tramas inactivas subsiguientes.
En el ejemplo particular mostrado en la FIG. 9, la segunda trama sigue inmediatamente a la primera trama en la señal de voz, y la tercera trama sigue inmediatamente a la segunda trama en la señal de voz. En otras aplicaciones del procedimiento M100, las tramas primera y segunda pueden estar separadas por una o más tramas inactivas en la señal de voz, y las tramas segunda y tercera pueden estar separadas por una o más tramas inactivas en la señal de voz. En el ejemplo particular mostrado en la FIG. 9, p es mayor que q. El procedimiento M100 también puede ser implementado de modo que p sea menor que q. En los ejemplos particulares mostrados en las FIGURAS 10A a 12B, las tasas de bits rH, rM y rL corresponden a las tasas de bits r1, r2 y r3, respectivamente.
La FIG. 10A ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas usando una implementación del procedimiento M100 según se ha descrito en lo que antecede. En este ejemplo, la última trama activa antes de la transición está codificada a una tasa de bits mayor rH para producir la primera de las tres tramas codificadas. La primera trama inactiva después de la transición está codificada a una tasa de bits intermedia rM para producir la segunda de las tres tramas codificadas, y la siguiente trama inactiva está codificada a una tasa de bits menor rL para producir la última de las tres tramas codificadas. En un caso particular de este ejemplo, las tasas de bits rH, rM y rL son de tasa máxima, de media tasa y de un octavo de tasa, respectivamente.
Según se ha hecho notar en lo que antecede, una transición de voz activa a voz inactiva se produce normalmente en un periodo de varias tramas, y las primeras varias tramas después de una transición de tramas activas a tramas inactivas puede incluir restos de voz activa, como remanentes con voz. Si un codificador de voz codifica una trama que tenga tales restos usando un esquema de codificación que esté previsto para tramas inactivas, el resultado codificado puede no representar con precisión la trama original. Así, puede resultar deseable implementar que el procedimiento M100 evite la codificación de una trama que tenga tales restos, como la segunda trama codificada.
La FIG. 10B ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas usando una implementación del procedimiento M100 que incluye un resto. Este ejemplo particular del procedimiento M100 mantiene el uso de la tasa de bits rH para las primeras tres tramas inactivas después de la transición. En general, puede usarse un resto de cualquier longitud deseada (por ejemplo, en el intervalo de una o dos a cinco o diez tramas). La longitud del resto puede ser seleccionada según una longitud prevista de la transición y puede ser fija o variable. Por ejemplo, la longitud del resto puede basarse en una o más características de una o más de las tramas activas que preceden a la transición y/o en una o más de las tramas dentro del resto, tal como la relación señalruido. En general, la etiqueta “primera trama codificada” puede aplicarse a la última trama activa antes de la transición o a cualquier trama inactiva durante el resto.
Puede resultar deseable implementar que el procedimiento M100 use la tasa de bits r2 en una serie de dos o más tramas inactivas consecutivas. La FIG. 11A ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas usando una implementación tal del procedimiento M100. En este ejemplo, la primera y la última de las tres tramas codificadas están separadas por más de una trama que están codificadas usando la tasa de bits rM, de modo que la segunda trama codificada no siga inmediatamente a la primera trama codificada. Puede configurarse un correspondiente decodificador de voz para que use información procedente de la segunda trama codificada para decodificar la tercera trama codificada (y, posiblemente, para decodificar una o más tramas inactivas subsiguientes).
Puede resultar deseable que un decodificador de voz use información procedente de más de una trama codificada para decodificar una trama inactiva subsiguiente. Por ejemplo, con referencia a una serie como la mostrada en la FIG. 11A, puede configurarse un correspondiente decodificador de voz para que use información procedente de ambas tramas inactivas codificadas a la tasa de bits rM para decodificar la tercera trama codificada (y, posiblemente, para decodificar una o más tramas inactivas subsiguientes).
En general, puede resultar deseable que la segunda trama codificada sea representativa de las tramas inactivas. En consecuencia, puede implementarse el procedimiento M100 para que produzca la segunda trama codificada con base en la información espectral procedente de más de una trama inactiva de la señal de voz. La FIG. 11B ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas usando una implementación tal del
procedimiento M100. En este ejemplo, la segunda trama codificada contiene información promediada en una ventana de dos tramas de la señal de voz. En otros casos, la ventana de promedio puede tener una longitud en el intervalo de dos a aproximadamente seis u ocho tramas. La segunda trama codificada puede incluir una descripción de una envolvente espectral que sea una media de las descripciones de las envolventes espectrales de las tramas dentro de la ventana (en este caso, la correspondiente trama inactiva de la señal de voz y la trama inactiva que la precede). La segunda trama codificada puede incluir una descripción de información temporal que esté basada fundamental o exclusivamente edad correspondiente trama de la señal de voz. Alternativamente el procedimiento M100 puede ser configurado de modo que en la segunda trama codificada incluya una descripción de información temporal que sea una media de las descripciones de la información temporal de las tramas dentro de la ventana.
La FIG. 12A ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas usando otra implementación del procedimiento M100. En este ejemplo, la segunda trama codificada contiene información promediada en una ventana de tres ventanas, estando codificada la segunda trama codificada a una tasa de bits rM y estando codificadas las dos tramas inactivas precedentes a una tasa de bits rH diferente. En este ejemplo particular, la ventana de promedio sigue un resto de tres tramas tras la transición. En otro ejemplo, el procedimiento M100 puede implementarse sin tal resto o, alternativamente, con un resto que solape la ventana de promedio. En general, puede aplicarse la etiqueta “primera trama codificada” a la última trama activa antes de la transición, a cualquier trama inactiva durante el resto o a cualquier trama de la ventana que esté codificada a una tasa de bits diferente de la de la segunda trama codificada.
En algunos casos, puede resultar deseable que una implementación del procedimiento M100 use la tasa de bits r2 para codificar una trama inactiva solo si la trama sigue una secuencia de tramas activas consecutivas (también denominada “secuencia de habla”) que tenga al menos una longitud mínima. La FIG. 12B ilustra un resultado de codificación de una zona de una señal de voz usando tal implementación del procedimiento M100. En este ejemplo, se implementa el procedimiento M100 para que use la tasa de bits rM para codificar la primera trama inactiva después de una transición de tramas activas a tramas inactivas, pero solo si la secuencia de habla precedente tuvo una longitud de al menos tres tramas. En tales casos, la longitud mínima de la secuencia de habla puede ser fija o variable. Por ejemplo, puede basarse en una característica de una o más de las tramas activas que preceden a la transición, tal como la relación señal-ruido. Además, tales implementaciones del procedimiento M100 también pueden estar configuradas para aplicar un resto y/o una ventana de promedio, según se ha descrito en lo que antecede.
Las FIGURAS 10A a 12B muestran aplicaciones de implementaciones del procedimiento M100 en las que la tasa de bits r1 que se usa para codificar la primera trama codificada es mayor que la tasa de bits r2 que se usa para codificar la segunda trama codificada. Sin embargo, la gama de implementaciones del procedimiento M100 también incluye procedimientos en los que la tasa de bits r1 es menor que la tasa de bits r2. Por ejemplo, en algunos casos una trama activa tal como una trama vocal puede ser en gran parte redundante de una trama activa anterior, y puede resultar deseable codificar tal trama usando una tasa de bits que sea menor que r2. La FIG. 13A muestra un resultado de codificación de una secuencia de tramas según tal implementación del procedimiento M100, en la que se codifica una trama activa a una tasa de bits menor para producir la primera del conjunto de tres tramas codificadas.
Las aplicaciones potenciales del procedimiento M100 no están limitadas a zonas de la señal de voz que incluyan una transición de tramas activas a tramas inactivas. En algunos casos, puede resultar deseable llevar a cabo el procedimiento M100 según algún intervalo regular. Por ejemplo, puede resultar deseable codificar cada trama enésima en una serie de tramas inactivas consecutivas a una tasa de bits mayor r2, incluyendo valores típicos de n 8, 16 y 32. En otros casos, el procedimiento M100 puede iniciarse en respuesta a un evento. Un ejemplo de tal evento es un cambio en la calidad del ruido de fondo, que puede estar indicado por un cambio en un parámetro relativo a la inclinación espectral, tal como el valor del coeficiente de reflexión. La FIG. 13B ilustra un resultado de codificación de una serie de tramas inactivas usando una implementación tal del procedimiento M100.
Según se ha hecho notar en lo que antecede, una trama de banda ancha puede ser codificada usando un esquema de codificación de banda completa o un esquema de codificación de banda dividida. Una trama codificada como banda completa contiene una descripción de una única envolvente espectral que se extienda a todo el intervalo de frecuencias de banda ancha, mientras que una trama codificada como banda dividida tiene dos o más porciones separadas que representan información en diferentes bandas de frecuencias (por ejemplo, un intervalo de banda estrecha y un intervalo de banda alta) de la señal de voz de banda ancha. Por ejemplo, normalmente cada una de estas porciones separadas de una trama codificada en banda dividida contiene una descripción de una envolvente espectral de la señal de voz en la correspondiente banda de frecuencias. Una trama codificada en banda dividida puede contener una descripción de información temporal para la trama para todo el intervalo de frecuencias de banda ancha, o cada una de las porciones separadas de la trama codificada puede contener una descripción de información temporal de la señal de voz para la correspondiente banda de frecuencias.
La FIG. 14 muestra una aplicación de una implementación M110 del procedimiento M100. El procedimiento M110 incluye una implementación T112 de la tarea T110 que produce una primera trama codificada basada en las primeras tres tramas de la señal de voz. La primera trama puede ser activa o inactiva, y la primera trama codificada
tiene una longitud de p bits. Según se muestra en la FIG. 14, la tarea T112 está configurada para producir la primera trama codificada para que contenga una descripción de una envolvente espectral en la primera y la segunda bandas de frecuencias. Esta descripción puede ser una sola descripción que se extienda a ambas bandas de frecuencias, o puede incluir descripciones separadas que se extiendan cada una a una de las bandas respectivas de frecuencias. La tarea T112 también puede ser configurada para que produzca la primera trama codificada para que contenga una descripción de información temporal (por ejemplo, de una envolvente temporal) para la primera y la segunda bandas de frecuencias. Esta descripción puede ser una sola descripción que se extienda a ambas bandas de frecuencias, o puede incluir descripciones separadas que se extiendan cada una a una de las bandas respectivas de frecuencias.
El procedimiento M110 también incluye una implementación T122 de la tarea T120 que produce una segunda trama codificada basada en la segunda de las tres tramas. La segunda trama es una trama inactiva, y la segunda trama codificada tiene una longitud de q bits (siendo distintas p y q). Según se muestra en la FIG. 14, la tarea T122 está configurada para producir la segunda trama codificada para que contenga una descripción de una envolvente espectral en la primera y la segunda bandas de frecuencias. Esta descripción puede ser una sola descripción que se extienda a ambas bandas de frecuencias, o puede incluir descripciones separadas que se extiendan cada una a una de las bandas respectivas de frecuencias. En este ejemplo particular, la longitud en bits de la descripción de la envolvente espectral contenida en la segunda trama codificada es menor que la longitud en bits de la descripción de la envolvente espectral contenida en la primera trama codificada. La tarea T122 también puede estar configurada para producir la segunda trama codificada para que contenga una descripción de información temporal (por ejemplo, de una envolvente temporal) para la primera y la segunda bandas de frecuencias. Esta descripción puede ser una sola descripción que se extienda a ambas bandas de frecuencias, o puede incluir descripciones separadas que se extiendan cada una a una de las bandas respectivas de frecuencias.
El procedimiento M110 también incluye una implementación T132 de la tarea T130, que produce una tercera trama codificada basada en la última de las tres tramas. La tercera trama es una trama inactiva, y la tercera trama codificada tiene una longitud de r bits (siendo r menor que q). Según se muestra en la FIG. 14, la tarea T132 está configurada para producir la tercera trama codificada para que contenga una descripción de una envolvente espectral en las primera banda de frecuencias. En este ejemplo particular, la longitud (en bits) de la descripción de la envolvente espectral contenida en la tercera trama codificada es menor que la longitud (en bits) de la descripción de la envolvente espectral contenida en la segunda trama codificada. La tarea T132 también puede estar configurada para producir la tercera trama codificada para que contenga una descripción de información temporal (por ejemplo, de una envolvente temporal) para la primera banda de frecuencias.
La segunda banda de frecuencias es diferente de la primera banda de frecuencias, aunque el procedimiento M110 puede configurarse de tal modo que las dos bandas de frecuencias se solapen. Ejemplos de una cota inferior para la primera banda de frecuencias incluyen cero, cincuenta, 100, 300 y 500 Hz, y ejemplos de una cota superior para la primera banda de frecuencias incluyen tres, 3,5, cuatro, 4,5 y 5 kHz. Ejemplos de una cota inferior para la segunda banda de frecuencias incluyen 2,5, 3, 3,5, 4 y 4,5 kHz, y ejemplos de una cota superior para la segunda banda de frecuencias incluyen 7, 7,5, 8 y 8,5 kHz. Se contempla expresamente y se da a conocer en el presente documento la totalidad de las quinientas combinaciones posibles de las cotas anteriores, y también se contempla expresamente y se da a conocer en el presente documento la aplicación de cualquier combinación de ese tipo a cualquier implementación del procedimiento M110. En un ejemplo particular, la primera banda de frecuencias incluye el intervalo entre aproximadamente cuatro y aproximadamente siete kHz. En otro ejemplo particular, la primera banda de frecuencias incluye el intervalo entre aproximadamente 100 Hz y aproximadamente cuatro kHz y la segunda banda de frecuencias incluye el intervalo entre aproximadamente 3,5 y aproximadamente siete kHz. En un ejemplo particular adicional, la primera banda de frecuencias incluye el intervalo entre aproximadamente 300 Hz y aproximadamente cuatro kHz, y la segunda banda de frecuencias incluye el intervalo entre aproximadamente 3,5 y aproximadamente siete kHz. En estos ejemplos, el término “aproximadamente” indica más o menos un cinco por ciento, indicándose los límites de las diversas bandas de frecuencias por los respectivos puntos de 3 dB.
Según se ha hecho notar en lo que antecede, para aplicaciones de banda ancha un esquema de codificación de banda dividida puede tener ventajas con respecto a un esquema de codificación de banda completa, tales como una mayor eficiencia de codificación y soporte de retrocompatibilidad. La FIG. 15 muestra una aplicación de una implementación M120 del procedimiento M110 que usa un esquema de codificación de banda dividida para producir la segunda trama codificada. El procedimiento M120 incluye una implementación T124 de la tarea T122 que tiene dos subtareas T126a y T126b. La tarea T126a está configurada para calcular una descripción de una envolvente espectral en la primera banda de frecuencias, y la tarea T126b está configurada para calcular una descripción separada de una envolvente espectral en la segunda banda de frecuencias. Un correspondiente decodificador de voz (por ejemplo, según se describe en lo que sigue) puede estar configurado para calcular una trama de banda ancha decodificada basada en información procedente de las descripciones de envolventes espectrales calculadas por las tareas T126b y T132.
Las tareas T126a y T132 pueden estar configuradas para calcular descripciones de envolventes espectrales en la primera banda de frecuencias que tengan la misma longitud, o una de las tareas T126a y T132 puede estar configurada para calcular una descripción que sea más larga que la descripción calculada por la otra tarea. Las
tareas T126a y T126b también pueden estar configuradas para calcular descripciones separadas de información temporal en las dos bandas de frecuencias.
La tarea T132 puede estar configurada de tal modo que la tercera trama codificada no contenga ninguna descripción de una envolvente espectral en la segunda banda de frecuencias. Alternativamente, la tarea T132 puede estar configurada de tal modo que la tercera trama codificada contenga una descripción abreviada de una envolvente espectral en la segunda banda de frecuencias. Por ejemplo, la tarea T132 puede estar configurada de tal modo que la tercera trama codificada contenga una descripción de una envolvente espectral en la segunda banda de frecuencias que tenga sustancialmente menos bits (por ejemplo, que no tenga una longitud de más de la mitad) que la descripción de una envolvente espectral de la tercera trama en la primera banda de frecuencias. En otro ejemplo, la tarea T132 está configurada de tal modo que la tercera trama codificada contenga una descripción de una envolvente espectral en la segunda banda de frecuencias que tenga sustancialmente menos bits (por ejemplo, que no tenga una longitud de más de la mitad) que la descripción de una envolvente espectral de la segunda banda de frecuencias calculada por la tarea T126b. En un ejemplo tal, la tarea T132 está configurada para producir la tercera trama codificada para que contenga una descripción de una envolvente espectral en la segunda banda de frecuencias que incluya únicamente un valor de inclinación espectral (por ejemplo, el primer coeficiente de reflexión normalizado).
Puede resultar deseable implementar el procedimiento M110 para producir la primera trama codificada usando un esquema de codificación de banda dividida en vez de un esquema de codificación de banda completa. La FIG. 16 muestra una aplicación de una implementación M130 del procedimiento M120 que usa un esquema de codificación de banda dividida para producir la primera trama codificada. El procedimiento M130 incluye una implementación T114 de la tarea T110 que incluye dos subtareas T116a y T116b. La tarea T116a está configurada para calcular una descripción de una envolvente espectral en la primera banda de frecuencias, y la tarea T116b está configurada para calcular una descripción separada de una envolvente espectral en la segunda banda de frecuencias.
Las tareas T116a y T126a pueden estar configuradas para calcular descripciones de envolventes espectrales en la primera banda de frecuencias que tengan la misma longitud, o una de las tareas T116a y T126a puede estar configurada para calcular una descripción que sea más larga que la descripción calculada por la otra tarea. Las tareas T116b y T126b también pueden estar configuradas para calcular descripciones de envolventes espectrales en la segunda banda de frecuencias que tengan la misma longitud, o una de las tareas T116b y T126b puede estar configurada para calcular una descripción que sea más larga que la descripción calculada por la otra tarea. Las tareas T116a y T116b también pueden estar configuradas para calcular descripciones separadas de información temporal en las dos bandas de frecuencias.
La FIG. 17A ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas usando una implementación del procedimiento M130. En este ejemplo particular, las porciones de las tramas codificadas primera y segunda que representan la segunda banda de frecuencias tienen la misma longitud, y las porciones de las tramas codificadas segunda y tercera que representan la primera banda de frecuencias tienen la misma longitud.
Puede resultar deseable que la porción de la segunda trama codificada que representa la segunda banda de frecuencias tenga una longitud mayor que una porción correspondiente de la primera trama codificada. Los intervalos de baja y alta frecuencia de una trama activa es más probable que mantengan una relación mutua entre sí (especialmente si la trama es vocal) que los intervalos de baja y alta frecuencia de una trama inactiva que contenga ruido de fondo. En consecuencia, el intervalo de altas frecuencias de la trama inactiva puede transportar relativamente más información de la trama que el intervalo de altas frecuencias de la trama activa, y puede resultar deseable usar un mayor número de bits para codificar el intervalo de altas frecuencias de la trama inactiva.
La FIG. 17B ilustra un resultado de codificación de una transición de tramas activas a tramas inactivas usando otra implementación del procedimiento M130. En este caso, la porción de la segunda trama codificada que representa la segunda banda de frecuencias es más larga (es decir, tiene más bits) que la correspondiente porción de la primera trama codificada. Este ejemplo particular también muestra un caso en el que la porción de la segunda trama codificada que representa la primera banda de frecuencias es más larga que la porción correspondiente de la tercera trama codificada, aunque puede configurarse una implementación adicional del procedimiento M130 para codificar las tramas de modo que estas dos porciones tengan la misma longitud (por ejemplo, tal como se muestra en la FIG. 17A).
Un ejemplo típico del procedimiento M100 está configurado para codificar la segunda trama usando un modo NELP de banda ancha (que puede ser de banda completa, tal como se muestra en la FIG. 14, o de banda dividida, tal como se muestra en las FIGURAS 15 y 16) y para codificar la tercera trama usando un modo NELP de banda estrecha. La tabla de la FIG. 18 muestra un conjunto de tres esquemas de codificación diferentes que puede usar un codificador de voz para producir un resultado como el mostrado en la FIG. 17B. En este ejemplo, se usa un esquema de codificación CELP de banda ancha de tasa máxima (“esquema de codificación 1”) para codificar tramas con voz. Este esquema de codificación usa 153 bits para codificar la porción de banda estrecha de la trama y 16 bits para codificar la porción de banda alta. Para la banda estrecha, el esquema de codificación 1 usa 28 bits para codificar una descripción de la envolvente espectral (por ejemplo, como uno o más vectores cuantificados de LSP) y
125 bits para codificar una descripción de la señal de excitación. Para la banda alta, el esquema de codificación 1 usa 8 bits para codificar la envolvente espectral (por ejemplo, como uno o más vectores cuantificados de LSP) y 8 bits para codificar una descripción de la envolvente temporal.
Puede resultar deseable configurar el esquema de codificación 1 para derivar la señal de excitación de banda alta a partir de la señal de excitación de banda estrecha, de modo que no se precise ningún bit de la trama codificada para transportar la señal de excitación de banda alta. También puede resultar deseable configurar el esquema de codificación 1 para calcular la envolvente temporal de banda alta con respecto a la envolvente temporal de la señal de banda alta sintetizada a partir de otros parámetros de la trama codificada (por ejemplo, incluyendo la descripción de una envolvente espectral en la segunda banda de frecuencias). Tales características se describen con más detalle, por ejemplo, en la publicación de solicitud de patente estadounidense 2006/0282262, citada en lo que antecede.
En comparación con una señal de voz vocal, una señal de voz sorda contiene normalmente más de la información que es importante para la comprensión de la voz en la banda alta. Así, puede resultar deseable usar más bits para codificar la porción de banda alta de una trama sorda que para codificar la porción de banda alta de una trama vocal, incluso para un caso en el que la trama vocal se codifica usando una tasa de bits mayor en su conjunto. En un ejemplo según la tabla de la FIG. 18, se usa un esquema de codificación NELP de banda ancha de media tasa (“esquema de codificación 2”) para codificar tramas sin voz. En vez de 16 bits, como se usan por el esquema de codificación 1 para codificar la porción de banda alta de una trama vocal, este esquema de codificación usa 27 bits para codificar la porción de banda alta de la trama: 12 bits para codificar una descripción de la envolvente espectral (por ejemplo, como una trama de ganancia y/o una forma de ganancia cuantificadas). Para codificar la porción de banda estrecha, el esquema de codificación 2 usa 47 bits: 28 bits para codificar una descripción de la envolvente espectral (por ejemplo, como uno o más vectores cuantificados de LSP) y 19 bits para codificar una descripción de la envolvente temporal (por ejemplo, como una trama de ganancia y/o una forma de ganancia cuantificadas).
El esquema descrito en la FIG. 18 usa un esquema de codificación NELP de banda estrecha de un octavo de tasa (“esquema de codificación 3”) para codificar tramas inactivas a una tasa de 16 bits por trama, con 10 bits para codificar una descripción de la envolvente espectral (por ejemplo, como uno o más vectores cuantificados de LSP) y 5 bits para codificar una descripción de la envolvente temporal (por ejemplo, como una trama de ganancia y/o una forma de ganancia cuantificadas). Otro ejemplo del esquema de codificación 3 usa 8 bits para codificar la descripción de la envolvente espectral y 6 bits para codificar la descripción de la envolvente temporal.
Pueden configurarse un codificador de voz o un procedimiento de codificación de voz para usar un conjunto de esquemas de codificación, tal como se muestra en la FIG. 18, para llevar a cabo una implementación del procedimiento M130. Por ejemplo, tal decodificador o tal procedimiento pueden configurarse para usar el esquema de codificación 2 en vez del esquema de codificación 3 para producir la segunda trama codificada. Pueden configurarse diversas implementaciones de tal codificador o tal procedimiento para producir resultados como los mostrados en las FIGURAS 10A a 13B usando el esquema de codificación 1, en el que se indica la tasa de bits rH, el esquema de codificación 2, en el que se indica la tasa de bits rM, y el esquema de codificación 3, en el que se indica la tasa de bits rL.
Para casos en los que se usa un conjunto de esquema de codificación, según se muestra en la FIG. 18, para llevar a cabo una implementación del procedimiento M130, se configuran el codificar o el procedimiento para usar el mismo esquema de codificación (esquema 2) para producir la segunda trama codificada y producir tramas sin voz codificadas. En otros casos, pueden configurarse un codificador o un procedimiento configurados para llevar a cabo una implementación del procedimiento M100 para codificar la segunda trama usando un esquema de codificación dedicado (es decir, un esquema de codificación que el codificador o el procedimiento no usen también para codificar tramas activas).
Se configura una implementación del procedimiento M130 que usa un conjunto de esquemas de codificación, tal como se muestra en la FIG. 18, para usar el mismo modo de codificación (es decir, NELP) para producir las tramas codificadas segunda y tercera, aunque sea posible usar versiones del modo de codificación que difieran (por ejemplo, en términos de cómo se calculan las ganancias) para producir las dos tramas codificadas. También se contemplan expresamente y se dan a conocer en el presente documento otras configuraciones del procedimiento M100 en las que se producen las tramas codificadas segunda y tercera usando diferentes modos de codificación (por ejemplo, usando, en cambio, un modo CELP para producir la segunda trama codificada). También se contemplan expresamente y se dan a conocer en el presente documento configuraciones adicionales del procedimiento M100 en las que se produce la segunda trama codificada usando un modo de banda ancha de banda dividida que usa diferentes modos de codificación para diferentes bandas de frecuencia (por ejemplo, CELP para una banda más baja y NELP para una banda más alta, o viceversa). También se contemplan expresamente y se dan a conocer en el presente documento codificadores de voz y procedimientos de codificación de voz que se configuran para llevar a cabo tales implementaciones del procedimiento M100.
En una aplicación típica de una implementación del procedimiento M100, se configura un conjunto de elementos lógicos (por ejemplo, puertas lógicas) para llevar a cabo una, más de una o incluso la totalidad de las diversas tareas
del procedimiento. Una o más (posiblemente todas) de las tareas también pueden ser implementadas como código (por ejemplo, uno o más conjuntos de instrucciones), implementado en un producto de programa de ordenador (por ejemplo, uno o más medios de almacenamiento de datos, como discos, memoria flash u otras tarjetas de memoria no volátil, elementos de código semiconductores de memoria, etc.) que sea legible y/o ejecutable por una máquina (por ejemplo, un ordenador), incluyendo un conjunto de elementos lógicos (por ejemplo, un procesador, un microprocesador, un microcontrolador u otra máquina de estados finitos). Las tareas de una implementación del procedimiento M100 también pueden ser llevadas a cabo por más de un conjunto o una máquina de ese tipo. En estas y otras implementaciones, las tareas pueden llevarse a cabo dentro de un dispositivo para las comunicaciones inalámbricas, como un teléfono celular u otro dispositivo que tenga tal capacidad de comunicaciones. Tal dispositivo puede estar configurado para comunicarse con redes conmutadas por circuitos y/o conmutadas por paquetes (por ejemplo, usando uno o más protocolos como VoIP). Por ejemplo, tal dispositivo puede incluir circuitería de RF configurada para transmitir tramas codificadas.
La FIG. 18B ilustra una operación de codificación de dos tramas sucesivas de una señal de voz usando un procedimiento M300 según una configuración general que incluye tareas T120 y T130 según se describe en el presente documento. (Aunque esta implementación del procedimiento M300 procesa solo dos tramas, se mantiene por comodidad el uso de las etiquetas “segunda trama” y “tercera trama”). En el ejemplo particular mostrado en la FIG. 18B, la tercera trama sigue inmediatamente a la segunda trama. en otras aplicaciones del procedimiento M300, las tramas segunda y tercera pueden estar separadas en la señal de voz por una trama inactiva o por una serie consecutiva de dos o más tramas inactivas. En aplicaciones adicionales del procedimiento M300, la tercera trama puede ser cualquier trama inactiva de la señal de voz que no sea la segunda trama. En otra aplicación general del procedimiento M300, la segunda trama puede ser activa o inactiva. En otra aplicación general del procedimiento, la segunda trama puede ser activa o inactiva y la tercera trama puede ser activa o inactiva. La FIG. 18C muestra una aplicación de una implementación M310 del procedimiento M300 en la que las tareas T120 y T130 se implementan como tareas T122 y T132, respectivamente, tal como se describe en el presente documento. En una implementación adicional del procedimiento M300, se implementa la tarea T120 como la tarea T124 tal como se describe en el presente documento. Puede resultar deseable configurar la tarea T132 de modo que la tercera trama codificada no contenga ninguna descripción de una envolvente espectral en la segunda banda de frecuencias.
La FIG. 19A muestra un diagrama de bloques de un aparato 100 configurado para llevar a cabo un procedimiento de codificación de voz que incluye una implementación del procedimiento M100 según se describe en el presente documento y/o una implementación del procedimiento M300 según se describe en el presente documento. El aparato 100 incluye un detector 110 de actividad vocal, un selector 120 del esquema de codificación y un codificador 130 de voz. El detector 110 de actividad vocal está configurado para recibir tramas de una señal de voz y para indicar, para cada trama que ha de codificarse, si la trama es activa o inactiva. El selector 120 del esquema de codificación está configurado para seleccionar, en respuesta a las indicaciones del detector 110 de actividad vocal, un esquema de codificación para cada trama que ha de codificarse. El codificador 130 de voz está configurado para producir, según los esquemas de codificación seleccionados, tramas codificadas que estén basadas en las tramas de la señal de voz. Un dispositivo de comunicaciones que incluya el aparato 100, tal como un teléfono celular, puede estar configurado para llevar a cabo operaciones adicionales de procesamiento con las tramas codificadas, tales como corrección de errores y/o codificación de redundancia, antes de transmitirlas a un canal de transmisión cableado, inalámbrico u óptico.
El detector 110 de actividad vocal está configurado para indicar si cada trama que ha de codificarse es activa o inactiva. Esta indicación puede ser una señal binaria, de modo que un estado de la señal indique que la trama es activa y el otro estado indique que la trama es inactiva. Alternativamente, la indicación puede ser una señal que tenga más de dos estados, de modo que pueda indicar más de un tipo de trama activa y/o inactiva. Por ejemplo, puede resultar deseable configurar el detector 110 para indicar si una trama activa es vocal o sorda; o clasificar las tramas activas como transitorias, con voz o sin voz; y posiblemente clasificar incluso las tramas transitorias como transitoria al alza o transitoria a la baja. Una implementación correspondiente del selector 120 del esquema de codificación está configurado para seleccionar, en respuesta a estas indicaciones, un esquema de codificación para cada trama que ha de codificarse.
El detector 110 de actividad vocal puede estar configurado para indicar si una trama es activa o inactiva en función de una o más características de la trama, tales como la energía, la relación señal-ruido, la periodicidad, la frecuencia de los pasos por cero, la distribución espectral (evaluada usando, por ejemplo, una o más LSF, uno o más LSP y/o coeficientes de reflexión), etc. Para generar la indicación, el detector 110 puede estar configurado para llevar a cabo, para cada una de las una o más de tales características, una operación tal como comparar un valor o una magnitud de tal característica con un valor umbral y/o comparar la magnitud de un cambio en el valor o la magnitud de tal característica con un valor umbral, pudiendo ser fijo o adaptativo el valor umbral.
Puede configurarse una implementación del detector 110 de actividad vocal para evaluar la energía de la trama actual y para indicar que la trama es inactiva si el valor de la energía es menor que (alternativamente, no mayor que) un valor umbral. Tal detector puede estar configurado para calcular la energía de la trama como una suma de cuadrados de las muestras de la trama. Otra implementación del detector 110 de actividad vocal está configurada para evaluar la energía de la trama actual en cada una de la banda de baja frecuencia y la banda de alta frecuencia,
y para indicar que la trama es inactiva si el valor de la energía para cada banda es menor que (alternativamente, no mayor que) un respectivo valor umbral. Tal detector puede estar configurado para calcular la energía de la trama en una banda aplicando un filtro pasabanda a la trama y calculando una suma de los cuadrados de las muestras de la trama filtrada.
Según se ha hecho notar en lo que antecede, puede configurarse una implementación del detector 110 de actividad vocal para que use uno o más valores umbral. Cada uno de estos valores puede ser fijo o adaptativo. Un valor umbral adaptativo puede estar basado en uno o más factores, tales como un nivel de ruido de una trama o una banda, una relación señal-ruido de una trama o una banda, una tasa de codificación deseada, etc. En un ejemplo, los valores umbral usados para cada una de la banda de baja frecuencia (por ejemplo, 300 Hz a 2 kHz) y una banda de alta frecuencia (por ejemplo, 2 kHz a 4 kHz) se basan en una estimación del nivel de ruido de fondo en esa banda para la trama anterior, una relación señal-ruido en esa banda para la trama anterior y una media tasa de datos deseada.
El selector 120 del esquema de codificación está configurado para seleccionar, en respuesta a las indicaciones del detector 110 de actividad vocal, un esquema de codificación para cada trama que ha de codificarse. La selección del esquema de codificación puede basarse en una indicación del detector 110 de actividad vocal para la trama actual y/o en la indicación del detector 110 de actividad vocal para cada una de las una o más tramas anteriores. En algunos casos, la selección del esquema de codificación también se basa en la indicación del detector 110 de actividad vocal para cada una de las una o más tramas subsiguientes.
La FIG. 20A muestra un diagrama de flujo de pruebas que puede llevar a cabo una implementación del selector 120 del esquema de codificación para obtener un resultado como el mostrado en la FIG. 10A. En este ejemplo, el selector 120 está configurado para seleccionar un esquema de codificación 1 de mayor tasa para las tramas con voz, un esquema de codificación 3 de menor tasa para las tramas inactivas y un esquema de codificación 2 de tasa intermedia para las tramas sin voz y para la primera trama inactiva después de una transición de tramas activas a tramas inactivas. En tal aplicación, los esquemas 1-3 de codificación pueden conformarse a los tres esquemas mostrados en la FIG. 18.
Una implementación alternativa del selector 120 del esquema de codificación puede estar configurada para operar según el diagrama de estado de la FIG. 20B para obtener un resultado equivalente. En esta figura, la etiqueta “A” indica una transición de estados en respuesta a una trama activa, la etiqueta “I” indica una transición de estados en respuesta a una trama inactiva y las etiquetas de los diversos estados indican el esquema de codificación seleccionado para la trama actual. En este caso, la etiqueta de estado “esquema 1/2” indica que para la trama actual se selecciona ya sea el esquema de codificación 1 o el esquema de codificación 2, dependiendo de si la trama es vocal o sorda. Una persona con un dominio normal de la técnica apreciará que, en una implementación alternativa, este estado puede configurarse de modo que el selector del esquema de codificación soporte únicamente un esquema de codificación para las tramas activas (por ejemplo, el esquema de codificación 1). En una implementación alternativa adicional, este estado puede ser configurado de modo que el seleccionador del esquema de codificación seleccione entre más de dos esquemas de codificación diferentes para las tramas activas (por ejemplo, que seleccione diferentes esquemas de codificación para las tramas con voz, sin voz y transitorias).
Según se ha hecho notar en lo que antecede con referencia a la FIG. 12B, puede resultar deseable que un codificador de voz codifique una trama inactiva a una mayor tasa de bits r2 solo si la trama activa más reciente es parte de una secuencia de habla que tenga al menos una longitud mínima. Una implementación del selector 120 del esquema de codificación puede estar configurada para operar según el diagrama de estado de la FIG. 21A para obtener un resultado como el mostrado en la FIG. 12B. En este ejemplo particular, el selector está configurado para seleccionar el esquema de codificación 2 para una trama inactiva solo si la trama sigue inmediatamente a una cadena de tramas activas consecutivas que tengan una longitud de al menos tres tramas. En este caso, las etiquetas de estado “esquema 1/2” indican que para la trama actual se selecciona ya sea el esquema de codificación 1 o el esquema de codificación 2, dependiendo de si la trama es vocal o sorda. Una persona con un dominio normal de la técnica apreciará que, en una implementación alternativa, este estado puede configurarse de modo que el selector del esquema de codificación soporte únicamente un esquema de codificación para las tramas activas (por ejemplo, el esquema de codificación 1). En una implementación alternativa adicional, estos estados pueden ser configurados de modo que el seleccionador del esquema de codificación seleccione entre más de dos esquemas de codificación diferentes para las tramas activas (por ejemplo, que seleccione diferentes esquemas de codificación para las tramas con voz, sin voz y transitorias).
Según se ha hecho notar en lo que antecede con referencia a las FIGURAS 10B y 12A, puede resultar deseable que un codificador de voz aplique un resto (es decir, que mantenga el uso de una tasa de bits mayor para una o más tramas inactivas después de una transición de tramas activas a tramas inactivas). Una implementación del selector 120 del esquema de codificación puede estar configurada para que opere según el diagrama de estado de la FIG. 21B para aplicar un resto que tenga una longitud de tres tramas. En esta figura, los estados de resto están marcados “esquema 1(2)” para denotar que, para la trama inactiva actual, están indicado ya sea el esquema de codificación 1
o el esquema de codificación 2, dependiendo del esquema seleccionado para la trama activa más reciente. Una persona con un dominio normal de la técnica apreciará que, en una implementación alternativa, el selector del
esquema de codificación puede soportar únicamente un esquema de codificación para las tramas activas (por ejemplo, el esquema de codificación 1). En una implementación alternativa adicional, los estados de resto pueden ser configurados de modo que indiquen uno de más de dos esquemas de codificación diferentes (por ejemplo, para un caso en el que se soporten esquemas diferentes para tramas con voz, sin voz y transitorias). En una implementación alternativa adicional, uno o más de los estados de resto pueden estar configurados para indicar un esquema fijo (por ejemplo, el esquema 1) aunque se seleccionara un esquema diferente (por ejemplo, el esquema 2) para la trama activa más reciente.
Según se ha hecho notar en lo que antecede con referencia a las FIGURAS 11B y 12A, puede resultar deseable que un codificador de voz produzca la segunda trama codificada con base en la información promediada de más de una trama inactiva de la señal de voz. Una implementación del selector 120 del esquema de codificación puede estar configurada para operar según el diagrama de estado de la FIG. 21C para soportar tal resultado. En este ejemplo particular, el selector está configurado para dirigir al codificador para que produzca la segunda trama codificada con base en la información promediada de tres tramas inactivas. El estado marcado “esquema 2 (iniciar med)” indica al codificador que la trama actual ha de ser codificada con el esquema 2 y ser usada también para calcular una nueva media (por ejemplo, una media de descripciones de envolventes espectrales). El estado marcado “esquema 2 (para la med)” indica al codificador que la trama actual ha de ser codificada con el esquema 2 y ser usada también para continuar el cálculo de la media. El estado marcado “enviar med, esquema 2” indica al codificador que la trama actual ha de ser usada para completar la media, que ha de ser enviada entonces usando el esquema 2. Una persona con un dominio normal de la técnica apreciará que pueden implementarse implementaciones alternativas del selector 120 del esquema de codificación para que usen diferentes asignaciones de esquemas y/o para indicar el promedio de la información de un número diferente de tramas inactivas.
La FIG. 19B muestra un diagrama de bloques de una implementación 132 del codificador 130 de voz que incluye un calculador 140 de descripciones de envolventes espectrales, un calculador 150 de descripciones de información temporal y un formateador 160. El calculador 140 de descripciones de envolventes espectrales está configurado para calcular una descripción de una envolvente espectral para cada trama que ha de codificarse. El calculador 150 de descripciones de información temporal está configurado para calcular una descripción de información temporal para cada trama que ha de codificarse. El formateador 160 está configurado para producir una trama codificada que incluye la descripción calculada de una envolvente espectral y la descripción calculada de información temporal. El formateador 160 puede estar configurado para producir la trama codificada según un formato deseado de paquete, posiblemente usando diferentes formatos para diferentes esquemas de codificación. El formateador 160 puede estar configurado para producir la trama codificada que incluya información adicional, tal como un conjunto de uno o más bits que identifique el esquema de codificación, o la tasa o el modo de codificación, según los cuales está codificada la trama (también denominado “índice de codificación”).
El calculador 140 de descripciones de envolventes espectrales está configurado para calcular, según el esquema de codificación indicado por el selector 120 del esquema de codificación, una descripción de la envolvente espectral para cada trama que ha de codificarse. La descripción está basada en la trama actual y también puede estar basada en al menos parte de una o más tramas adicionales. Por ejemplo, el calculador 140 puede estar configurado para aplicar una ventana que se extienda a una o más tramas adyacentes y/o para calcular una media (por ejemplo, una media de vectores de LSP) de las descripciones de dos o más tramas.
El calculador 140 puede estar configurado para calcular la descripción de una envolvente espectral para la trama llevando a cabo un análisis espectral, tal como un análisis de LPC. La FIG. 19C muestra un diagrama de bloques de una implementación 142 del calculador 140 de descripciones de envolventes espectrales que incluye un módulo 170 de análisis de LPC, un bloque 180 de transformación y un cuantificador 190. El módulo 170 de análisis está configurado para llevar a cabo un análisis de LPC de la trama y para producir un correspondiente conjunto de parámetros modelo. Por ejemplo, el módulo 170 de análisis puede estar configurado para producir un vector de coeficientes de LPC, tales como coeficientes de filtro o coeficientes de reflexión. El módulo 170 de análisis puede estar configurado para llevar a cabo el análisis en una ventana que incluya porciones de una o más tramas colindantes. En algunos casos, el módulo 170 de análisis se configura de modo que el orden del análisis (por ejemplo, el número de elementos en el vector de coeficientes) se seleccione según el esquema de codificación indicado por el selector 120 del esquema de codificación.
El bloque 180 de transformación está configurado para convertir el conjunto de parámetros modelo en una forma que sea más eficiente para la cuantificación. Por ejemplo, el bloque 180 de transformación puede estar configurado para convertir un vector de coeficientes de LPC en un conjunto de LSP. En algunos casos, el bloque 180 de transformación está configurado para convertir el conjunto de coeficientes de LPC en una forma particular según el esquema de codificación indicado por el selector 120 del esquema de codificación.
El cuantificador 190 está configurado para producir la descripción de una envolvente espectral en forma cuantificada cuantificando el conjunto convertido de parámetros modelo. El cuantificador 190 puede estar configurado para cuantificar el conjunto convertido truncando elementos del conjunto convertido y/o seleccionando uno o más índices a tablas de cuantificación para representar el conjunto convertido. En algunos casos, el cuantificador 190 está configurado para cuantificar el conjunto convertido con una forma y/o longitud particulares según el esquema de
codificación indicado por el selector 120 del esquema de codificación (por ejemplo, según se ha expuesto en lo que antecede con referencia a la FIG. 18).
El calculador 150 de descripciones de información temporal está configurado para calcular una descripción de información temporal de una trama. La descripción puede basarse también en información temporal de al menos parte de una o más tramas adicionales. Por ejemplo, el calculador 150 puede estar configurado para calcular la descripción en una ventana que se extienda a una o más tramas adyacentes y/o para calcular una media de descripciones de dos o más tramas.
El calculador 150 de descripciones de información temporal puede estar configurado para calcular una descripción de información temporal que tenga una forma y/o una longitud particulares según el esquema de codificación indicado por el selector 120 del esquema de codificación. Por ejemplo, el calculador 150 puede estar configurado para calcular, según el esquema de codificación seleccionado, una descripción de información temporal que incluya una o ambas de (A) una envolvente temporal de la trama y (B) una señal de excitación de la trama, que puede incluir una descripción de un componente de altura tonal (por ejemplo, retraso de altura tonal (también denominado demora), ganancia de altura tonal y/o una descripción de un prototipo).
El calculador 150 puede estar configurado para calcular una descripción de información temporal que incluya una envolvente temporal de la trama (por ejemplo, un valor de la trama de ganancia y/o valores de la forma de ganancia). Por ejemplo, el calculador puede estar configurado para producir tal descripción en respuesta a una indicación de un esquema de codificación NELP. Tal como se describe en el presente documento, el cálculo de tal descripción puede incluir el cálculo de la energía de la señal en una trama o una subtrama como una suma de cuadrados de las muestras de la señal, calculando la energía de la señal en una ventana que incluye partes de otras tramas y/u otras subtramas, y/o cuantificando la envolvente temporal calculada.
El calculador 150 puede estar configurado para calcular una descripción de información temporal de una trama que incluya información relativa a la altura tonal o a la periodicidad de la trama. Por ejemplo, el calculador 150 puede estar configurado para producir una descripción que incluya información de la altura tonal de la trama, tal como el retraso de la altura tonal y/o la ganancia en la altura tonal, en respuesta a una indicación de un esquema de codificación CELP. Alternativamente o además, el calculador 150 puede estar configurado para producir una descripción que incluya una forma de onda periódica (también denominada “prototipo”) en respuesta a una indicación de un esquema de codificación PPP. Normalmente, el cálculo de la información de altura tonal y/o prototípica incluye la extracción de tal información del residuo de la LPC y también puede incluir combinar información de altura tonal y/o prototípica de la trama actual con información de ese tipo procedente de una o más tramas pasadas. El calculador 150 también puede estar configurado para cuantificar tal descripción de información temporal (por ejemplo, como uno o más índices a tablas).
El calculador 150 puede estar configurado para calcular una descripción de información temporal de una trama que incluya una señal de excitación. Por ejemplo, el calculador 150 puede estar configurado para producir una descripción que incluya una señal de excitación en respuesta a una indicación de un esquema de codificación CELP. Normalmente, el cálculo de una señal de excitación incluye la derivación de tal señal del residuo de la LPC y también puede incluir la combinación de la información de la excitación procedente de la trama actual con tal información procedente de una o más tramas pasadas. El calculador 150 también puede estar configurado para cuantificar tal descripción de información temporal (por ejemplo, como uno o más índices a tablas). Para casos en los que el codificador 132 de voz soporte un esquema de codificación CELP relajada (RCELP), el calculador 150 puede estar configurado para regularizar la señal de excitación.
La FIG. 22A muestra un diagrama de bloques de una implementación 134 del codificador 132 de voz que incluye una implementación 152 del calculador 150 de descripciones de información temporal. El calculador 152 está configurado para calcular una descripción de información temporal para una trama (por ejemplo, una señal de excitación, información de altura tonal y/o prototípica) que está basada en una descripción de una envolvente espectral de la trama calculada por el calculador 140 de descripciones de envolventes espectrales.
La FIG. 22B muestra un diagrama de bloques de una implementación 154 del calculador 152 de descripciones de información temporal que está configurado para calcular una descripción de información temporal basada en un residuo de la LPC para la trama. En este ejemplo, el calculador 154 está dispuesto para recibir la descripción de una envolvente temporal de la trama calculada por el calculador 142 de descripciones de envolventes espectrales. El descuantificador A10 está configurado para descuantificar la descripción y el bloque A20 de transformación inversa está configurado para aplicar una transformada inversa a la descripción descuantificada para obtener un conjunto de coeficientes de LPC. El filtro A30 de blanqueo está configurado según el conjunto de coeficientes de LPC y dispuesto para filtrar la señal de voz para producir un residuo de la LPC. El cuantificador A40 está configurado para cuantificar una descripción de información temporal para la trama (por ejemplo, como uno o más índices a tablas) que se basa en el residuo de la LPC y que posiblemente se basa también en información de altura tonal para la trama y/o en información temporal procedente de una o más tramas pasadas.
Puede resultar deseable usar una implementación del codificador 132 de voz para codificar tramas de una señal de voz de banda ancha según un esquema de codificación de banda dividida. En tal caso, el calculador 140 de
descripciones de envolventes espectrales puede estar configurado para calcular las diversas descripciones de envolventes espectrales de una trama en las respectivas bandas de frecuencias en serie y/o en paralelo y posiblemente según diferentes modos y/o tasas de codificación. El calculador 150 de descripciones de información temporal también puede estar configurado para calcular descripciones de información temporal de la trama en las diversas bandas de frecuencias en serie y/o en paralelo y, posiblemente, según diferentes modos y/o tasas de codificación.
La FIG. 23A muestra un diagrama de bloques de una implementación 102 del aparato 100, que está configurado para codificar una señal de voz de banda ancha según un esquema de codificación de banda dividida. El aparato 102 incluye un banco A50 de filtros que está configurado para filtrar la señal de voz para producir una señal de subbanda que contiene contenido de la señal de voz en la primera banda de frecuencias (por ejemplo, una señal de banda estrecha) y una señal de subbanda que contiene contenido de la señal de voz en la segunda banda de frecuencias (por ejemplo, una señal de banda alta). Se describen ejemplos particulares de tales bancos de filtros, por ejemplo, en la publicación de solicitud de patente estadounidense nº 2007/088558 (Vos et al.), “SYSTEMS, METHODS, AND APPARATUS FOR SPEECH SIGNAL FILTERING”, publicada el 19 de abril de 2007. Por ejemplo, el banco A50 de filtros puede incluir un filtro de paso bajo configurado para filtrar la señal de voz para producir una señal de banda estrecha y un filtro de paso alto configurado para filtrar la señal de voz para producir una señal de banda alta. El banco A50 de filtros también puede incluir un submuestreador configurado para reducir la tasa de muestreo de la señal de banda estrecha y/o de la señal de banda alta según un respectivo factor deseado de diezmado, según se describe, por ejemplo, en la publicación de solicitud de patente estadounidense nº 2007/088558 (Vos et al.). El aparato 102 también puede estar configurado para llevar a cabo una operación de supresión de ruido en al menos la señal de banda alta, tal como una operación de supresión de ráfagas de banda alta, según se describe en la publicación de solicitud de patente estadounidense nº 2007/088541 (Vos et al.), “SYSTEMS, METHODS, AND APPARATUS FOR HIGHBAND BURST SUPPRESSION”, publicada el 19 de abril de 2007.
El aparato 102 también incluye una implementación 136 del codificador 130 de voz que está configurada para codificar las señales de subbandas separadas según un esquema de codificación seleccionado por el selector 120 del esquema de codificación. La FIG. 23B muestra un diagrama de bloques de una implementación 138 del codificador 136 de voz. El codificador 138 incluye un calculador 140a de envolventes espectrales (por ejemplo, un caso del calculador 142) y un calculador 150a de información temporal (por ejemplo, un caso del calculador 152 o 154) que están configurados para calcular descripciones de envolventes espectrales y de información temporal, respectivamente, con base en una señal de banda estrecha producida por el banco A50 de filtros y según el esquema de codificación seleccionado. El codificador 138 también incluye un calculador 140b de envolventes espectrales (por ejemplo, un caso del calculador 142) y un calculador 150b de información temporal (por ejemplo, un caso del calculador 152 o 154) que están configurados para calcular descripciones de envolventes espectrales y de información temporal, respectivamente, con base en una señal de banda alta producida por el banco A50 de filtros y según el esquema de codificación seleccionado. El codificador 138 también incluye una implementación 162 del formateador 160 configurada para producir una trama codificada que incluye las descripciones calculadas de envolventes espectrales y de información temporal.
Según se ha hecho notar en lo que antecede, una descripción de la información temporal para la porción de banda alta de una señal de voz de banda ancha puede basarse en una descripción de la información temporal para la porción de banda estrecha de la señal. La FIG. 24A muestra un diagrama de bloques de una correspondiente implementación 139 del codificador 136 de voz de banda ancha. Como el codificador 138 de voz descrito en lo que antecede, el codificador 139 incluye los calculadores 140a y 140b de descripciones de envolventes espectrales, que están dispuestos para calcular descripciones respectivas de envolventes espectrales. El codificador 139 de voz también incluye un caso 152a del calculador 152 de descripciones de información temporal (por ejemplo, el calculador 154), que está dispuesto para calcular una descripción de información temporal basada en la descripción calculada de una envolvente espectral para la señal de banda estrecha. El codificador 139 de voz también incluye una implementación 156 del calculador 150 de descripciones de información temporal. El calculador 156 está configurado para calcular una descripción de información temporal para la señal de banda alta que se basa en una descripción de información temporal para la señal de banda estrecha.
La FIG. 24B muestra un diagrama de bloques de una implementación 158 del calculador 156 de descripciones temporales. El calculador 158 incluye un generador A60 de señales de excitación de banda alta que está configurado para generar una señal de excitación de banda alta basada en una señal de excitación de banda estrecha producida por el calculador 152a. Por ejemplo, el generador A60 puede estar configurado para llevar a cabo una operación como la extensión espectral, la extensión armónica, la extensión no lineal, el plegado espectral y/o la traslación espectral en la señal de excitación de banda estrecha (o en uno o más componentes de la misma) para generar la señal de excitación de banda alta. Además, o como alternativa, el generador A60 puede estar configurado para llevar a cabo la conformación espectral y/o en amplitud del ruido aleatorio (por ejemplo, una señal gaussiana pseudoaleatoria de ruido) para generar la señal de excitación de banda alta. Para un caso en el que el generador A60 use una señal de ruido pseudoaleatorio, puede resultar deseable que el codificador y el decodificador sincronicen la generación de esta señal. Tales procedimientos y aparatos para la generación de señales de excitación se describen con más detalle, por ejemplo, en la publicación de solicitud de patente estadounidense 2007/0088542 (Vos et al.), “SYSTEMS, METHODS, AND APPARATUS FOR WIDEBAND SPEECH CODING”,
publicada el 19 de abril de 2007. En el ejemplo de la FIG. 24B, el generador A60 está dispuesto para recibir una señal de excitación de banda estrecha cuantificada. En otro ejemplo, el generador A60 está dispuesto para recibir la señal de excitación de banda estrecha en otra forma (por ejemplo, en una forma previa a la cuantificación o descuantificada).
El calculador 158 también incluye un filtro A70 de síntesis configurado para generar una señal sintetizada de banda alta que está basada en la señal de excitación de banda alta y en una descripción de una envolvente espectral de la señal de banda alta (por ejemplo, producida por el calculador 140b). Normalmente, el filtro A70 está configurado según un conjunto de valores dentro de la descripción de una envolvente espectral de la señal de banda alta (por ejemplo, uno o más vectores de coeficientes de LSP o LPC) para producir la señal sintetizada de banda alta en respuesta a la señal de excitación de banda alta. En el ejemplo de la FIG. 24B, el filtro A70 de síntesis está dispuesto para recibir una descripción cuantificada de una envolvente espectral de la señal de banda alta y puede estar configurado, en consecuencia, para incluir un descuantificador y, posiblemente, un bloque de transformación inversa. En otro ejemplo, el filtro A70 está dispuesto para recibir la descripción de una envolvente espectral de la señal de banda alta en otra forma (por ejemplo, en una forma previa a la cuantificación o descuantificada).
El calculador 158 también incluye un calculador A80 del factor de ganancia de banda alta que está configurado para calcular una descripción de una envolvente temporal de la señal de banda alta basada en una envolvente temporal de la señal sintetizada de banda alta. El calculador A80 puede estar configurado para calcular esta descripción para que incluya una o más distancias entre una envolvente temporal de la señal de banda alta y la envolvente temporal de la señal sintetizada de banda alta. Por ejemplo, el calculador A80 puede estar configurado para calcular tal distancia como un valor de la trama de ganancia (por ejemplo, como una relación entre medidas de energía de correspondientes tramas de las dos señales, o como una raíz cuadrada de tal relación). Además, o como alternativa, el calculador A80 puede estar configurado para calcular varias distancias tales como valores de la forma de ganancia (por ejemplo, como relaciones entre medidas de energía de correspondientes subtramas de las dos señales, o como raíces cuadradas de tales relaciones). En el ejemplo de la FIG. 24B, el calculador 158 también incluye un cuantificador A90 configurado para cuantificar la descripción calculada de una envolvente temporal (por ejemplo, como uno o más índices a códigos). Se describen diversas características e implementaciones de los elementos del calculador 158, por ejemplo, en la publicación de solicitud de patente estadounidense 2007/0088542 (Vos et al.), citada en lo que antecede.
Los diversos elementos de una implementación del aparato 100 pueden implementarse en cualquier combinación de soporte físico, soporte lógico y/o soporte lógico inalterable que se considere adecuada para la aplicación prevista. Por ejemplo, tales elementos puede fabricarse como dispositivos electrónicos y/u ópticos que residan, por ejemplo, en el mismo chip o entre dos o más elementos de código de un conjunto de elementos de código. Un ejemplo de tal dispositivo es una matriz fija o programable de elementos lógicos, tales como transistores o puertas lógicas, y cualquiera de estos elementos puede ser implementado como una o más matrices de ese tipo. Cualesquiera dos o más, o incluso la totalidad, de estos elementos pueden implementarse dentro de la misma matriz o de las mismas matrices. Tal matriz o tales matrices pueden estar implementadas dentro de uno o más elementos de código (por ejemplo, dentro de un conjunto de elementos de código que incluya dos o más elementos de código).
Uno o más elementos de las diversas implementaciones del aparato 100, según es descrito en el presente documento, también pueden ser implementados, en todo o en parte, como uno o más conjuntos de instrucciones dispuestos para ejecutarse en una o más matrices fijas o programables de elementos lógicos, tales como microprocesadores, procesadores embebidos, núcleos IP, procesadores de señales digitales, FPGA (matrices de puertas programables in situ), ASSP (productos estándar para aplicaciones específicas) y ASIC (circuitos integrados para aplicaciones específicas). Cualesquiera de los diversos elementos de una implementación del aparato 100 también pueden ser implementadas como uno o más ordenadores (por ejemplo, máquinas que incluyan una o más matrices programadas para ejecutar uno o más conjuntos o secuencias de instrucciones, también denominadas “procesadores”), y cualesquiera dos o más, o incluso la totalidad, de estos elementos pueden implementarse dentro del mismo ordenador o de los mismos ordenadores de ese tipo.
Los diversos elementos de una implementación del aparato 100 pueden estar incluidos dentro de un dispositivo para comunicaciones inalámbricas, tal como un teléfono celular u otro dispositivo que tenga tal capacidad de comunicaciones. Tal dispositivo puede estar configurado para comunicarse con redes conmutadas por circuitos y/o conmutadas por paquetes (por ejemplo, usando uno o más protocolos como VoIP). Tal dispositivo puede estar configurado para llevar a cabo operaciones en una señal que transporta las tramas codificadas, tales como la intercalación, la eliminación selectiva, la codificación convolucional, la codificación de corrección de errores, la codificación de una o más capas de protocolos de red (por ejemplo, Ethernet, TCP/IP, cdma2000), modulación de radiofrecuencia (RF) y/o transmisión de RF.
Es posible que se usen uno o más elementos de una implementación del aparato 100 para llevar a cabo tareas o ejecutar otros conjuntos de instrucciones que no estén directamente relacionadas con una operación del aparato, tales como una tarea relativa a otra operación de un dispositivo o un sistema en los que está embebido el aparato. También es posible que uno o más elementos de una implementación del aparato 100 tengan una estructura en común (por ejemplo, un procesador usado para ejecutar porciones de código correspondientes a diferentes
elementos en diferentes momentos, un conjunto de instrucciones ejecutadas para llevar a cabo tareas correspondientes a diferentes elementos en diferentes momentos, o una disposición de dispositivos electrónicos y/u ópticos que lleva a cabo operaciones para diferentes elementos en diferentes momentos). En un ejemplo de ese tipo, el detector 110 de actividad vocal, el selector 120 del esquema de codificación y el codificador 130 de voz están implementados como conjuntos de instrucciones dispuestos para ejecutarse en el mismo procesador. En otro ejemplo de ese tipo, los calculadores 140a y 140b de descripciones de envolventes espectrales están implementados como el mismo conjunto de instrucciones que se ejecutan en diferentes momentos.
La FIG. 25A muestra un diagrama de flujo de un procedimiento M200 de procesamiento de una señal de voz codificada según una configuración general. El procedimiento M200 está configurado para recibir información procedente de dos tramas codificadas y para producir descripciones de envolventes espectrales de dos tramas correspondientes de una señal de voz. Con base en la información procedente de una primera trama codificada (también denominada trama codificada “de referencia”), la tarea T210 obtiene una descripción de una envolvente espectral de una primera trama de la señal de voz en la primera y la segunda bandas de frecuencias. Con base en la información procedente de una segunda trama codificada, la tarea T220 obtiene una descripción de una envolvente espectral de una segunda trama de la señal de voz (también denominada trama “diana”) en la primera banda de frecuencias. Con base en la información procedente de la trama codificada de referencia, la tarea T230 obtiene una descripción de una envolvente espectral de la trama diana en la segunda banda de frecuencias.
La FIG. 26 muestra una aplicación del procedimiento M200 que recibe información procedente de dos tramas codificadas y produce descripciones de envolventes espectrales de dos correspondientes tramas inactivas de una señal de voz. Con base en la información procedente de la trama codificada de referencia, la tarea T210 obtiene una descripción de una envolvente espectral de la primera trama inactiva en la primera y la segunda bandas de frecuencias. Esta descripción puede ser una sola descripción que se extienda a ambas bandas de frecuencias, o puede incluir descripciones separadas que se extiendan cada una a una de las bandas respectivas de frecuencias. Con base en la información procedente de la segunda trama codificada, la tarea T220 obtiene una descripción de una envolvente espectral de la trama inactiva diana en la primera banda de frecuencias (por ejemplo, en un intervalo de banda estrecha). Con base en la información procedente de la trama codificada de referencia, la tarea T230 obtiene una descripción de una envolvente espectral de la trama inactiva diana en la segunda banda de frecuencias (por ejemplo, en un intervalo de banda alta).
La FIG. 26 muestra un ejemplo en el que las descripciones de las envolventes espectrales tienen órdenes de LPC y en el que el orden de la LPC de la descripción de la envolvente espectral de la trama diana en la segunda banda de frecuencias es menor que el orden de la LPC de la descripción de la envolvente espectral de la trama diana en la primera banda de frecuencias. Otros ejemplos incluyen casos en los que el orden de la LPC de la descripción de la envolvente espectral de la trama diana en la segunda banda de frecuencias es al menos el cincuenta por ciento, al menos el sesenta por ciento, no más del setenta y cinco por ciento, no más del ochenta por ciento, igual o mayor del orden de la LPC de la descripción de la envolvente espectral de la trama diana en la primera banda de frecuencias. En un ejemplo particular, los órdenes de la LPC de las descripciones de la envolvente espectral de la trama diana en la primera y la segunda bandas de frecuencias son, respectivamente, diez y seis. La FIG. 26 también muestra un ejemplo en el que el orden de la LPC de la descripción de la envolvente espectral de la primera trama inactiva en la primera y la segunda bandas de frecuencias es igual a la suma de los órdenes de la LPC de las descripciones de la envolvente espectral de la trama diana en la primera y la segunda bandas de frecuencias. En otro ejemplo, el orden de la LPC de la descripción de la envolvente espectral de la primera trama inactiva en la primera y la segunda bandas de frecuencias puede ser mayor o menor que la suma de los órdenes de la LPC de las descripciones de las envolventes espectrales de la trama diana en la primera y la segunda bandas de frecuencias.
Cada una de las tareas T210 y T220 puede estar configurada para incluir una o ambas de las dos operaciones siguientes: analizar la trama codificada para extraer una descripción cuantificada de una envolvente espectral y descuantificar una descripción cuantificada de una envolvente espectral para obtener un conjunto de parámetros de un modelo de codificación para la trama. Implementaciones típicas de las tareas T210 y T220 incluyen estas dos operaciones, de modo que cada tarea procesa una respectiva trama codificada para producir una descripción de una envolvente espectral en la forma de un conjunto de parámetros modelo (por ejemplo, uno o más vectores de coeficientes de LSF, LSP, ISF, ISP y/o LPC). En un ejemplo particular, la trama codificada de referencia tiene una longitud de ochenta bits y la segunda trama codificada tiene una longitud de dieciséis bits. En otros ejemplos, la longitud de la segunda trama codificada no es más del veinte, el veinticinco, el treinta, el cuarenta, el cincuenta o el sesenta por ciento de la longitud de la trama codificada de referencia.
La trama codificada de referencia puede incluir una descripción cuantificada de una envolvente espectral en la primera y la segunda bandas de frecuencias, y la segunda trama codificada puede incluir una descripción cuantificada de una envolvente espectral en la primera banda de frecuencias. En un ejemplo particular, la descripción cuantificada de una envolvente espectral en la primera y la segunda bandas de frecuencias incluida en la trama codificada de referencia tiene una longitud de cuarenta bits, y la descripción cuantificada de una envolvente espectral en la primera banda de frecuencias incluida en la segunda trama codificada tiene una longitud de diez bits. En otros ejemplos, la longitud de la descripción cuantificada de una envolvente espectral en la primera banda de frecuencias incluida en la segunda trama codificada no es mayor del veinticinco, el treinta, el cuarenta, el cincuenta o
el sesenta por ciento de la longitud de la descripción cuantificada de una envolvente espectral en la primera y la segunda bandas de frecuencias incluida en la trama codificada de referencia.
Las tareas T210 y T220 también pueden ser implementadas para producir descripciones de información temporal basada en información procedente de las respectivas tramas codificadas. Por ejemplo, una de estas tareas o ambas pueden estar configuradas para obtener, con base en la información procedente de la respectiva trama codificada, una descripción de una envolvente temporal, una descripción de una señal de excitación y/o una descripción de información de altura tonal. Como en la obtención de la descripción de una envolvente espectral, tal tarea puede incluir el análisis de una descripción cuantificada de información temporal procedente de la trama codificada y/o la descuantificación de una descripción cuantificada de información temporal. Las implementaciones del procedimiento M200 también puede ser configuradas de modo que la tarea T210 y/o la tarea T220 obtengan la descripción de una envolvente espectral y/o la descripción de información temporal con base en la información procedente también de una o más tramas codificadas adicionales, tal como información procedente de una o más tramas codificadas anteriores. Por ejemplo, una descripción de una señal de excitación y/o información de altura tonal de una trama se basan normalmente en información de tramas anteriores.
La trama codificada de referencia puede incluir una descripción cuantificada de información temporal para la primera y la segunda bandas de frecuencias, y la segunda trama codificada puede incluir una descripción cuantificada de información temporal para la primera banda de frecuencias. En un ejemplo particular, una descripción cuantificada de información temporal para la primera y la segunda bandas de frecuencias incluida en la trama codificada de referencia tiene una longitud de treinta y cuatro bits, y una descripción cuantificada de información temporal para la primera banda de frecuencias incluida en la segunda trama codificada tiene una longitud de cinco bits. En otros ejemplos, la longitud de la descripción cuantificada de información temporal para la primera banda de frecuencias incluida en la segunda trama codificada no es mayor del quince, veinte, veinticinco, treinta, cuarenta, cincuenta o sesenta por ciento de la longitud de la descripción cuantificada de información temporal para la primera y la segunda bandas de frecuencias incluida en la trama codificada de referencia.
El procedimiento M200 se lleva a cabo normalmente como parte de un procedimiento mayor de decodificación de voz, y se contemplan expresamente y se dan a conocer en el presente documento decodificadores de voz y procedimientos de decodificación de voz que están configurados para llevar a cabo el procedimiento M200. Un cifrador de voz puede estar configurado para llevar a cabo una implementación del procedimiento M100 en el codificador y para llevar a cabo una implementación del procedimiento M200 en el decodificador. En tal caso, la “segunda trama” codificada por la tarea T120 corresponde a la trama codificada de referencia que suministra la información procesada por las tareas T210 y T230, y la “tercera trama” codificada por la tarea T130 corresponde a la trama codificada que suministra la información procesada por la tarea T220. La FIG. 27A ilustra esta relación entre los procedimientos M100 y M200 usando el ejemplo de una serie de tramas consecutivas codificadas usando el procedimiento M100 y decodificadas usando el procedimiento M200. Alternativamente, un cifrador de voz puede estar configurado para llevar a cabo una implementación del procedimiento M300 en el codificador y para llevar a cabo una implementación del procedimiento M200 en el decodificador. La FIG. 27B ilustra esta relación entre los procedimientos M300 y M200 usando el ejemplo de un par de tramas consecutivas codificadas usando el procedimiento M300 y decodificadas usando el procedimiento M200.
Sin embargo, se hace notar que el procedimiento M200 también puede ser aplicado para procesar información procedente de tramas codificadas que no sean consecutivas. Por ejemplo, el procedimiento M200 también puede aplicarse de modo que las tareas T220 y T230 procesen información procedente de respectivas tramas codificadas que no sean consecutivas. El procedimiento M200 es implementado normalmente de modo que la tarea T230 se itere con respecto a una trama codificada de referencia, y la tarea T220 se itera en una serie de tramas inactivas codificadas sucesivas que sigue a la trama codificada de referencia, para producir una serie correspondiente de tramas diana sucesivas. Tal iteración puede continuar, por ejemplo, hasta que se recibe una nueva trama codificada de referencia, hasta que se recibe una trama activa codificada y/o hasta que se ha producido un número máximo de tramas diana.
La tarea T220 está configurada para obtener la descripción de una envolvente espectral de la trama diana en la primera banda de frecuencias fundamentalmente con base en la información procedente de la segunda trama codificada. Por ejemplo, la tarea T220 también puede estar configurada para obtener la descripción de una envolvente espectral de la trama diana en la primera banda de frecuencias basada por entero en información procedente de la segunda trama codificada. Alternativamente, la tarea T220 puede estar configurada para obtener la descripción de una envolvente espectral de la trama diana en la primera banda de frecuencias basada también en otra información, tal como información procedente de una o más tramas codificadas anteriores. En tal caso, la tarea T220 está configurada para ponderar con más intensidad que la otra información la información procedente de la segunda trama codificada. Por ejemplo, tal implementación de la tarea T220 puede estar configurada para calcular la descripción de una envolvente espectral de la trama diana en la primera banda de frecuencias como una media de la información procedente de la segunda trama codificada y de la información procedente de una trama codificada anterior, ponderándose con más intensidad que la información procedente de la trama codificada anterior la información procedente de la segunda trama codificada. Asimismo, la tarea T220 puede estar configurada para
obtener una descripción de información temporal de la trama diana para la primera banda de frecuencias fundamentalmente con base en al menos la información procedente de la segunda trama codificada.
Con base en la información procedente de la trama codificada de referencia (también denominada en el presente documento “información espectral de referencia”), la tarea T230 obtiene una descripción de una envolvente espectral de la trama diana en la segunda banda de frecuencias. La FIG. 25B muestra un diagrama de flujo de una implementación M210 del procedimiento M200 que incluye una implementación T232 de la tarea T230. Como implementación de la tarea T230, la tarea T232 obtiene una descripción de una envolvente espectral de la trama diana en la segunda banda de frecuencias, con base en la información espectral de referencia. En este caso, la información espectral de referencia está incluida dentro de una descripción de una envolvente espectral de una primera trama de la señal de voz. La FIG. 28 muestra una aplicación del procedimiento M210 que recibe información procedente de dos tramas codificadas y produce descripciones de envolventes espectrales de dos correspondientes tramas inactivas de una señal de voz.
La tarea T230 está configurada para obtener la descripción de una envolvente espectral de la trama diana en la segunda banda de frecuencias fundamentalmente con base en la información espectral de referencia. Por ejemplo, la tarea T230 puede estar configurada para obtener la descripción de una envolvente espectral de la trama diana en la segunda banda de frecuencias con base por entero en la información espectral de referencia. Alternativamente, la tarea T230 puede estar configurada para obtener la descripción de una envolvente espectral de la trama diana en la segunda banda de frecuencias con base en (A) una descripción de una envolvente espectral en la segunda banda de frecuencias que está basada en la información espectral de referencia y (B) una descripción de una envolvente espectral en la segunda banda de frecuencias que está basada en información procedente de la segunda trama codificada.
En tal caso, la tarea T230 puede estar configurada para ponderar con más intensidad que la descripción basada en la información procedente de la segunda trama codificada la descripción basada en la información espectral de referencia. Por ejemplo, tal implementación de la tarea T230 puede estar configurada para calcular la descripción de una envolvente espectral de la trama diana en la segunda banda de frecuencias como una media de descripciones con base en la información espectral de referencia y en la información procedente de la segunda trama codificada, ponderándose la descripción basada en la información espectral de referencia con más intensidad que la descripción basada en información procedente de la segunda trama codificada. En otro caso, un orden de la LPC de la descripción basada en la información espectral de referencia puede ser mayor que un orden de la LPC de la descripción basada en información procedente de la segunda trama codificada. Por ejemplo, el orden de la LPC de la descripción basada en información procedente de la segunda trama codificada puede ser uno (por ejemplo, un valor de inclinación espectral). Asimismo, la tarea T230 puede estar configurada para obtener una descripción de información temporal de la trama diana para la segunda banda de frecuencias basada fundamentalmente al menos en la información temporal de referencia (por ejemplo, basada por completo en la información temporal de referencia, o basada también en menor parte en información procedente de la segunda trama codificada).
La tarea T210 puede estar implementada para obtener, a partir de la trama codificada de referencia, una descripción de una envolvente espectral que es una representación única de banda completa tanto en la primera como en la segunda bandas de frecuencias. Sin embargo, es más normal implementar la tarea T210 para obtener esta descripción como descripciones separadas de una envolvente espectral en la primera banda de frecuencias y en la segunda banda de frecuencias. Por ejemplo, la tarea T210 puede estar configurada para obtener las descripciones separadas procedentes de una trama codificada de referencia que ha sido codificada usando un esquema de codificación de banda dividida según se describe en el presente documento (por ejemplo, el esquema de codificación 2).
La FIG. 25C muestra un diagrama de flujo de una implementación M220 del procedimiento M210 en la que la tarea T210 está implementada como dos tareas T212a y T212b. Con base en la información procedente de la trama codificada de referencia, la tarea T212a obtiene una descripción de una envolvente espectral de la primera trama en la primera banda de frecuencias. Con base en la información procedente de la trama codificada de referencia, la tarea T212b obtiene una descripción de una envolvente espectral de la primera trama en la segunda banda de frecuencias. Cada una de las tareas T212a y T212b puede incluir el análisis de una descripción cuantificada de una envolvente espectral procedente de la respectiva trama codificada y/o una descuantificación de una descripción cuantificada de una envolvente espectral. La FIG. 29 muestra una aplicación del procedimiento M220 que recibe información procedente de dos tramas codificadas y produce descripciones de envolventes espectrales de dos correspondientes tramas inactivas de una señal de voz.
El procedimiento M220 también incluye una implementación T234 de la tarea T232. Como implementación de la tarea T230, la tarea T234 obtiene una descripción de una envolvente espectral de la trama diana en la segunda banda de frecuencias que se basa en la información espectral de referencia. Como en la tarea T232, la información espectral de referencia está incluida dentro de una descripción de una envolvente espectral de una primera trama de la señal de voz. En el caso particular de la tarea T234, la información espectral de referencia está incluida dentro de una descripción (y posiblemente sea igual) de una descripción de una envolvente espectral de la primera trama en la segunda banda de frecuencias.
La FIG. 29 muestra un ejemplo en el que las descripciones de las envolventes espectrales tienen órdenes de la LPC y en el que los órdenes de la LPC de las descripciones de envolventes espectrales de la primera trama inactiva en la primera y la segunda bandas de frecuencias son iguales a los órdenes de la LPC de las descripciones de envolventes espectrales de la trama inactiva diana en las respectivas bandas de frecuencias. Otros ejemplos incluyen casos en los que una de las descripciones de envolventes espectrales de la primera trama inactiva en la primera y la segunda bandas de frecuencias o ambas son mayores que la correspondiente descripción de una envolvente espectral de la trama inactiva diana en la respectiva banda de frecuencias.
La trama codificada de referencia puede incluir una descripción cuantificada de una descripción de una envolvente espectral en la primera banda de frecuencias y una descripción cuantificada de una descripción de una envolvente espectral en la segunda banda de frecuencias. En un ejemplo particular, una descripción cuantificada de una descripción de una envolvente espectral en la primera banda de frecuencias incluida en la trama codificada de referencia tiene una longitud de veintiocho bits, y una descripción cuantificada de una descripción de una envolvente espectral en la segunda banda de frecuencias incluida en la trama codificada de referencia tiene una longitud de doce bits. En otros ejemplos, la longitud de la descripción cuantificada de una descripción de una envolvente espectral en la segunda banda de frecuencias incluida en la trama codificada de referencia no es mayor del cuarenta y cinco, el cincuenta, el sesenta o el setenta por ciento de la longitud de la descripción cuantificada de una descripción de una envolvente espectral en la primera banda de frecuencias incluida en la trama codificada de referencia.
La trama codificada de referencia puede incluir una descripción cuantificada de una descripción de información temporal para la primera banda de frecuencias y una descripción cuantificada de una descripción de información temporal para la segunda banda de frecuencias. En un ejemplo particular, una descripción cuantificada de una descripción de información temporal para la segunda banda de frecuencias incluida en la trama codificada de referencia tiene una longitud de quince bits, y una descripción cuantificada de una descripción de información temporal para la primera banda de frecuencias incluida en la trama codificada de referencia tiene una longitud de diecinueve bits. En otros ejemplos, la longitud de la descripción cuantificada de información temporal para la segunda banda de frecuencias incluida en la trama codificada de referencia no es mayor que el ochenta o el noventa por ciento de la longitud de la descripción cuantificada de una descripción de información temporal para la primera banda de frecuencias incluida en la trama codificada de referencia.
La segunda trama codificada puede incluir una descripción cuantificada de una envolvente espectral en la primera banda de frecuencias y/o una descripción cuantificada de información temporal para la primera banda de frecuencias. En un ejemplo particular, una descripción cuantificada de una descripción de una envolvente espectral en la primera banda de frecuencias incluida en la segunda trama codificada tiene una longitud de diez bits. En otros ejemplos, la longitud de la descripción cuantificada de una descripción de una envolvente espectral en la primera banda de frecuencias incluida en la segunda trama codificada no es mayor del cuarenta, el cincuenta, el sesenta, el setenta o el setenta y cinco por ciento de la longitud de la descripción cuantificada de una descripción de una envolvente espectral en la primera banda de frecuencias incluida en la trama codificada de referencia. En un ejemplo particular, una descripción cuantificada de una descripción de información temporal para la primera banda de frecuencias incluida en la segunda trama codificada tiene una longitud de cinco bits. En otros ejemplos, la longitud de la descripción cuantificada de una descripción de información temporal para la primera banda de frecuencias incluida en la segunda trama codificada no es mayor que el treinta, el cuarenta, el cincuenta, el sesenta o el setenta por ciento de la longitud de la descripción cuantificada de una descripción de información temporal para la primera banda de frecuencias incluida en la trama codificada de referencia.
En una implementación típica del procedimiento M200, la información espectral de referencia es una descripción de una envolvente espectral en la segunda banda de frecuencias. Esta descripción puede incluir un conjunto de parámetros modelo, tal como uno o más vectores de coeficientes de LSP, LSF, ISP, ISF o LPC). Generalmente, esta descripción es una descripción de una envolvente espectral de la primera trama inactiva en la segunda banda de frecuencias obtenida de la trama codificada de referencia por la tarea T210. También es posible que la información espectral de referencia incluya una descripción de una envolvente espectral (por ejemplo, de la primera trama inactiva) en la primera banda de frecuencias y/o en otra banda de frecuencias.
La tarea T230 incluye normalmente una operación para recuperar la información espectral de referencia a partir de una matriz de elementos de almacenamiento, tal como una memoria de semiconductores (también denominada “memoria intermedia” en el presente documento). Para un caso en el que la información espectral de referencia incluye una descripción de una envolvente espectral en la segunda banda de frecuencias, el acto de recuperar la información espectral de referencia puede ser suficiente para completar la tarea T230. Sin embargo, incluso para tal caso, puede resultar deseable configurar la tarea T230 para calcular la descripción de una envolvente espectral de la trama diana en la segunda banda de frecuencias (también denominada en el presente documento “descripción espectral diana”) en vez de simplemente recuperarla. Por ejemplo, la tarea T230 puede estar configurada para calcular la descripción espectral diana añadiendo ruido aleatorio a la información espectral de referencia. Alternativamente, o además, la tarea T230 también puede estar configurada para calcular la descripción con base en la información espectral procedente de una o más tramas codificadas adicionales (por ejemplo, con base en la información procedente de más de una trama codificada de referencia). Por ejemplo, la tarea T230 puede estar
configurada para calcular la descripción espectral diana como una media de descripciones de envolventes espectrales en la segunda banda de frecuencias a partir de dos o más tramas codificadas de referencia, y tal cálculo puede incluir añadir ruido aleatorio a la media calculada.
La tarea T230 puede estar configurada para calcular la descripción espectral diana realizando una extrapolación en el tiempo a partir de la información espectral de referencia o realizando una interpolación en el tiempo entre descripciones de envolventes espectrales en la segunda banda de frecuencias a partir de dos o más tramas codificadas de referencia. Alternativamente, o además, la tarea T230 puede estar configurada para calcular la descripción espectral diana realizando una extrapolación en la frecuencia a partir de una descripción de una envolvente espectral de la trama diana en otra banda de frecuencias (por ejemplo, en la primera banda de frecuencias) y/o realizando una interpolación en la frecuencia entre descripciones de envolventes espectrales en otras bandas de frecuencias.
Normalmente, la información espectral de referencia y la descripción espectral diana son vectores de parámetros espectrales (o “vectores espectrales”). En un ejemplo de ese tipo, los vectores espectrales tanto diana como de referencia son vectores de LSP. En otro ejemplo, los vectores espectrales tanto diana como de referencia son vectores de coeficientes de LPC. En un ejemplo adicional, los vectores espectrales tanto diana como de referencia son vectores de coeficientes de reflexión. La tarea T230 puede estar configurada para copiar la descripción espectral
diana de la información espectral de referencia según una expresión tal como Sti = Sri ∀i ∈ {1,2…,n}, en la que st es el vector espectral diana, sr es el vector espectral de referencia (cuyos valores están normalmente en el intervalo entre -1 y +1), i es un índice a un elemento vector, y n es la longitud del vector st. En una variación de esta operación, la tarea T230 está configurada para aplicar un factor de ponderación (o un vector de factores de ponderación) al vector espectral de referencia. En otra variación de esta operación, la tarea T230 está configurada para calcular el vector espectral diana añadiendo ruido aleatorio al vector espectral de referencia según una expresión tal como sti = sri + zi ∀i ∈ {1,2,…,n}, en la que z es un vector de valores aleatorios. En tal caso, cada elemento de z puede ser una variable aleatoria cuyos valores están distribuidos (por ejemplo, uniformemente) en un
intervalo deseado.
Puede resultar deseable garantizar que los valores de la descripción espectral diana estén acotados (por ejemplo, dentro del intervalo entre -1 y +1). En tal caso, la tarea T230 puede estar configurada para calcular la descripción espectral diana según una expresión tal como sti = wsri + zi ∀i ∈ {1,2,…,n}, en la que están distribuidos (por ejemplo, uniformemente) en el intervalo entre -(1-w) y +(1-w).
En otro ejemplo, la tarea T230 está configurada para calcular la descripción espectral diana con base en una descripción de una envolvente espectral en la segunda banda de frecuencias de cada una de más de una trama codificada de referencia (por ejemplo, de cada una de las dos tramas codificadas de referencia más recientes). En un ejemplo de ese tipo, la tarea T230 está configurada para calcular la descripción espectral diana como una media de la información de las tramas codificadas de referencia según una expresión tal como
∃ s # sr i %
ri12
s &) ∗ i !1, 2, #, n∀, en la que sr1∋( denota el vector espectral de la trama codificada de
ti + 2 , referencia más reciente, y sr2 denota el vector espectral de la siguiente trama codificada de referencia más reciente. En un ejemplo relacionado, los vectores de referencia son ponderados diferentemente entre sí (por ejemplo, un vector de una trama codificada de referencia más reciente puede ser ponderado con más intensidad).
En un ejemplo adicional, la tarea T230 está configurada para generar la descripción espectral diana como un conjunto de valores aleatorios en un intervalo con base en la información de dos o más tramas codificadas de referencia. Por ejemplo, la tarea T230 puede estar configurada para calcular el vector espectral diana S1 como una media aleatorizada de vectores espectrales de cada una de las dos tramas codificadas de referencia más recientes según una expresión tal como
s # ss − s
∃ ri12 ∃ ri 2
ri % 1 ri %
sti&) ∗# zi)∗ i !1, 2, #, n∀,
∋( + 2 ,+ 2 ,
en la que los valores de cada elemento de z están distribuidos (por ejemplo, uniformemente) en el intervalo entre -1 y +1. La FIG. 30A ilustra un resultado (para uno de los n valores de i) de iterar una implementación de ese tipo de la tarea T230 para cada una de una serie de tramas diana consecutivas, reevaluándose el vector aleatorio z para cada iteración, indicando los círculos abiertos los valores sti.
La tarea T230 puede estar configurada para calcular la descripción espectral diana interpolando entre descripciones de envolventes espectral en la segunda banda de frecuencias procedentes de las dos tramas de referencia más recientes. Por ejemplo, la tarea T230 puede estar configurada para llevar a cabo una interpolación lineal en una serie de p tramas diana, siendo p un parámetro regulable. En tal caso, la tarea T230 puede estar configurada para calcular el vector espectral diana para la trama diana j-ésima de la serie según una expresión tal como
j −1
s .0/si(1, 2, #, ∀, siendo 0 y1 j .
s &0 #− 1 ∋! n 11 p
ti ri 1 r2i
p −1
La FIG. 30B ilustra (para uno de los n valores de i) un resultado de iterar implementación de ese tipo de la tarea T230 en una serie de tramas diana consecutivas, siendo p igual a ocho e indicando cada círculo abierto el valor sti para una correspondiente trama diana. Otros ejemplos de valores de p incluyen 4, 16 y 32. Puede resultar deseable configurar tal implementación de la tarea T230 para añadir ruido aleatorio a la descripción interpolada.
La FIG. 30B también muestra un ejemplo en el que la tarea T230 está configurada para copiar el vector de referencia sr1 al vector diana st para cada trama diana subsiguiente en una serie mayor que p (por ejemplo, hasta que se reciban una nueva trama codificada de referencia o la siguiente trama activa). En un ejemplo relacionado, la serie de tramas diana tiene una longitud mp, siendo m un entero mayor que uno (por ejemplo, dos o tres), y se usa cada uno de los p vectores calculados como la descripción espectral diana para cada una de m correspondientes tramas diana consecutivas de la serie.
La tarea T230 puede implementarse de muchas maneras diferentes para llevar a cabo la interpolación entre descripciones de envolventes espectrales en la segunda banda de frecuencias a partir de las dos tramas de referencia más recientes. En otro ejemplo, la tarea T230 está configurada para llevar a cabo una interpolación lineal en una serie de p tramas diana calculando el vector diana para la trama diana j-ésima de la serie según un par de expresiones tales como
qj
s &0s 1 0s , siendo 0 ,
#−
11 . 1 /r2i 1 q
ti ri
para todo entero j tal que0 lt; j ≤ q, y
pj
s .1 02 /s #0s , siendo 0&− .
&−
ti ri 12 r2i 2
pq
para todo entero j tal que q lt; j ≤ p. La FIG. 30C ilustra un resultado (para uno de los n valores de i) de iterar una implementación de ese tipo de la tarea T230 para cada una de una serie de tramas diana consecutivas, teniendo q el valor cuatro y teniendo p el valor ocho. Tal configuración puede permitir una transición más suave a la primera trama diana que el resultado mostrado en la FIG. 30B.
La tarea T230 puede estar implementada de manera similar para cualquier valor entero positivo de q y p; ejemplos particulares de valores de (q, p) que pueden usarse incluyen (4, 8), (4, 12), (4, 16), (8, 16), (8, 24), (8, 32) y (16, 32). En un ejemplo relacionado descrito en lo que antecede, se usa cada uno de los p vectores calculados como la descripción espectral diana para cada una de m correspondientes tramas diana consecutivas de una serie de mp tramas diana. Puede resultar deseable configurar tal implementación de la tarea T230 para añadir ruido aleatorio a la descripción interpolada. La Fig. 30C también muestra un ejemplo en el que la tarea T230 está configurada para copiar el vector de referencia sr1 al vector diana st para cada trama diana subsiguiente de una serie mayor que p (por ejemplo, hasta que se reciben una nueva trama codificada de referencia o la siguiente trama activa).
La tarea T230 también puede estar implementada para calcular la descripción espectral diana, además de la información espectral de referencia, con base en la envolvente espectral de una o más tramas en otra banda de frecuencias. Por ejemplo, tal implementación de la tarea T230 puede estar configurada para calcular la descripción espectral diana extrapolando en frecuencia a partir de la envolvente espectral de la trama actual, y/o de una o más tramas anteriores en otra banda de frecuencias (por ejemplo, la primera banda de frecuencias).
La tarea T230 también puede estar configurada para obtener una descripción de información temporal de la trama inactiva diana en la segunda banda de frecuencias, con base en la información procedente de la trama codificada de referencia (también denominada en el presente documento “información temporal de referencia”). La información temporal de referencia es normalmente una descripción de información temporal en la segunda banda de frecuencias. Esta descripción puede incluir uno o más valores de trama de ganancia, valores de perfil de ganancia, valores del parámetro de altura tonal y/o índices de código. Generalmente, esta descripción es una descripción de información temporal de la primera trama inactiva en la segunda banda de frecuencias obtenida de la trama codificada de referencia por la tarea T210. También es posible que la información temporal de referencia incluya una descripción de información temporal (por ejemplo, de la primera trama inactiva) en la primera banda de frecuencias y/o en otra banda de frecuencias.
La tarea T230 puede estar configurada para obtener una descripción de información temporal de la trama diana en la segunda banda de frecuencias (también denominada en el presente documento “descripción temporal diana”) copiando la información temporal de referencia. Alternativamente, puede resultar deseable configurar la tarea T230
para obtener la descripción temporal diana calculándola con base en la información temporal de referencia. Por ejemplo, la tarea T230 puede estar configurada para calcular la descripción temporal diana añadiendo ruido aleatorio a la información temporal de referencia. La tarea T230 también puede estar configurada para calcular la descripción temporal diana con base en la información procedente de más de una trama codificada de referencia. Por ejemplo, la tarea T230 puede estar configurada para calcular la descripción temporal diana como una media de descripciones de información temporal en la segunda banda de frecuencias a partir de dos o más tramas codificadas de referencia, y tal cálculo puede incluir añadir ruido aleatorio a la media calculada.
La descripción temporal diana y la información temporal de referencia pueden incluir cada una una descripción de una envolvente temporal. Según se ha hecho notar en lo que antecede, una descripción de una envolvente temporal puede incluir un valor de la trama de ganancia y/o un conjunto de valores de la forma de ganancia. Alternativamente,
o además, la descripción temporal diana y la información temporal de referencia pueden incluir cada una una descripción de una señal de excitación. Una descripción de una señal de excitación puede incluir una descripción de un componente de altura tonal (por ejemplo, retraso de altura tonal, ganancia de altura tonal y/o una descripción de un prototipo).
La tarea T230 está configurada normalmente para establecer que la forma de ganancia de la descripción temporal diana sea plana. Por ejemplo, la tarea T230 puede estar configurada para hacer que los valores de la forma de ganancia de la descripción temporal diana sean iguales entre sí. Una implementación de ese tipo de la tarea T230 está configurada para hacer todos los valores de la forma de ganancia iguales a un factor de uno (por ejemplo, cero dB). Otra implementación de ese tipo de la tarea T230 está configurada para hacer todos los valores de la forma de ganancia iguales a un factor de 1/n, siendo n el número de valores de la forma de ganancia en la descripción temporal diana.
La tarea T230 puede ser objeto de iteración para calcular una descripción temporal diana para cada una de una serie de tramas diana. Por ejemplo, la tarea T230 puede estar configurada para calcular valores de trama de ganancia para cada una de una serie de tramas diana sucesivas con base en un valor de la trama de ganancia a partir de la trama codificada de referencia más reciente. En tales casos, puede resultar deseable configurar la tarea T230 para añadir ruido aleatorio al valor de la trama de ganancia para cada trama diana (alternativamente, para añadir ruido aleatorio al valor de la trama de ganancia para cada trama diana después de la primera de la serie), dado que, si no, puede percibirse en la serie de envolventes temporales una uniformidad poco natural. Tal implementación de la tarea T230 puede estar configurada para calcular un valor gt de la trama de ganancia para cada trama diana de la serie según una expresión tal como gt = zgr o gt = wgr + (1 -w)z, en la que gr es el valor de la trama de ganancia a partir de la trama codificada de referencia, z es un valor aleatorio que se reevalúa para cada una de la serie de tramas diana y w es un factor de ponderación. Los intervalos típicos para los valores de z incluyen entre 0 y 1 y entre -1 y +1. Los intervalos típicos de valores para w incluyen 0,5 (o 0,6) a 0,9 (o 1,0).
La tarea T230 puede estar configurada para calcular un valor de la trama de ganancia para una trama diana basado en valores de la trama de ganancia de las dos o tres tramas codificadas de referencia más recientes. En un ejemplo de ese tipo, la tarea T230 está configurada para calcular el valor de la trama de ganancia para la trama diana como
g # g
r1 r2
una media según una expresión tal como g & , en la que gr1 es el valor de la trama de ganancia de la
t 2 trama codificada de referencia más reciente y gr2 es el valor de la trama de ganancia de la siguiente trama codificada de referencia más reciente. En un ejemplo relacionado, los valores de la trama de ganancia de referencia se ponderan diferentemente entre sí (por ejemplo, se da mayor ponderación a un valor más reciente). Puede resultar deseable implementar la tarea T230 para calcular un valor de la trama de ganancia para cada una de una serie de tramas diana basada en tal media. Por ejemplo, tal implementación de la tarea T230 puede estar configurada para calcular el valor de la trama de ganancia para cada trama diana de la serie (alternativamente, para cada trama diana después de la primera de la serie) añadiendo un valor diferente de ruido aleatorio al valor medio calculado de la trama de ganancia.
En otro ejemplo, la tarea T230 está configurada para calcular un valor de la trama de ganancia para la trama diana como una media móvil de valores de la trama de ganancia a partir de tramas codificadas de referencia sucesivas. Tal implementación de la tarea T230 puede estar configurada para calcular el valor de la trama diana de ganancia como el valor actual de un valor de media móvil de la trama de ganancia según una expresión autorregresiva (AR) tal como gact = αgant + (1 -α)gr, en la que gact y gant son los valores actual y anterior de la media móvil, respectivamente. Para el factor de alisamiento α, puede resultar deseable usar un valor entre 0,5 o 0,75 y 1, tal como cero coma ocho (0,8) o cero coma nueve (0,9). Puede resultar deseable implementar la tarea T230 para calcular un valor gt para cada una de una serie de tramas diana con base en tal media móvil. Por ejemplo, tal implementación de la tarea T230 puede estar configurada para calcular el valor gt para cada trama diana de la serie (alternativamente, para cada trama diana después de la primera de la serie) añadiendo un valor diferente de ruido aleatorio al valor gact de la media móvil de la trama de ganancia.
En un ejemplo adicional, la tarea T230 está configurada para aplicar un factor de atenuación a la contribución procedente de la información temporal de referencia. Por ejemplo, la tarea T230 puede estar configurada para
calcular el valor de la media móvil de la trama de ganancia según una expresión tal como gact = αgant + (1 -α)βgr, en la que el factor de atenuación β es un parámetro regulable que tiene un valor inferior a uno, tal como un valor en el intervalo entre 0,5 y 0,9 (por ejemplo, cero como seis (0,6)). Puede resultar deseable implementar la tarea T230 para calcular un valor gt para cada una de una serie de tramas diana con base en tal media móvil. Por ejemplo, tal implementación de la tarea T230 puede estar configurada para calcular el valor gt para cada trama diana de la serie (alternativamente, para cada trama diana después de la primera de la serie) añadiendo un valor diferente de ruido aleatorio al valor gact de la media móvil de la trama de ganancia.
Puede resultar deseable iterar la tarea T230 para calcular descripciones diana espectrales y temporales para cada una de una serie de tramas diana. En tal caso, la tarea T230 puede estar configurada para actualizar las descripciones diana espectrales y temporales a tasas diferentes. Por ejemplo, tal implementación de la tarea T230 puede estar configurada para calcular diferentes descripciones espectrales diana para cada trama diana, pero para usar la misma descripción temporal diana para más de una trama diana consecutiva.
Las implementaciones del procedimiento M200 (incluyendo los procedimientos M210 y M220) están configuradas normalmente para que incluyan una operación que guarde la información espectral de referencia en una memoria intermedia. Tal implementación del procedimiento M200 también puede incluir una operación que guarde la información temporal de referencia en una memoria intermedia. Alternativamente, tal implementación del procedimiento M200 puede incluir una operación que guarde tanto la información espectral de referencia como la información temporal de referencia en una memoria intermedia.
Diferentes implementaciones del procedimiento M200 pueden usar criterios diferentes para decidir si almacenar información con base en una trama codificada como información espectral de referencia. La decisión de almacenar información espectral de referencia se basa normalmente en el esquema de codificación de la trama codificada y también puede basarse en los esquemas de codificación de una o más de las tramas codificadas anteriores y/o posteriores. Tal implementación del procedimiento M200 puede estar configurada para usar los mismos o diferentes criterios en la decisión de si debe almacenarse información temporal de referencia.
Puede resultar deseable implementar el procedimiento M200 de modo que la información espectral de referencia guardada esté disponible para más de una trama codificada de referencia en un momento dado. Por ejemplo, la tarea T230 puede estar configurada para calcular una descripción espectral diana que esté basada en información de más de una trama de referencia. En tales casos, el procedimiento M200 puede estar configurado para mantener en almacenamiento, en cualquier momento, información espectral de referencia procedente de la trama codificada de referencia más reciente, información de la segunda trama codificada de referencia más reciente y, posiblemente también, información de una o más tramas codificadas de referencia menos recientes. tal procedimiento también puede estar configurado para mantener el mismo historial, o un historial diferente, para la información temporal de referencia. Por ejemplo, el procedimiento M200 puede estar configurado para retener una descripción de una envolvente espectral a partir de cada una de las dos tramas codificadas de referencia más recientes y una descripción de información temporal a partir únicamente de la trama codificada de referencia más reciente.
Según se ha hecho notar en lo que antecede, cada una de las tramas codificadas puede incluir un índice de codificación que identifique el esquema de codificación, o la tasa o el modo de codificación según los que está codificada la trama. Alternativamente, un decodificador de voz puede estar configurado para determinar al menos parte del índice de codificación a partir de la trama codificada. Por ejemplo, un decodificador de voz puede estar configurado para determinar una tasa de bits de una trama codificada a partir de uno o más parámetros tales como la energía de la trama. Asimismo, para un cifrador que soporte más de un modo de codificación para una tasa de codificación particular, un decodificador de voz puede estar configurado para determinar el modo debido de codificación a partir de un formato de la trama codificada.
No todas las tramas codificadas de la señal de voz codificada cumplirán los requisitos para ser tramas codificadas de referencia. Por ejemplo, una trama codificada que no incluya una descripción de una envolvente espectral en la segunda banda de frecuencias sería generalmente inadecuada para su uso como trama codificada de referencia. En algunas aplicaciones, puede resultar deseable considerar que cualquier trama codificada que contenga una descripción de una envolvente espectral en la segunda banda de frecuencias es una trama codificada de referencia.
Una correspondiente implementación del procedimiento M200 puede estar configurada para almacenar información basada en la trama codificada actual como información espectral de referencia si la trama contiene una descripción de una envolvente espectral en la segunda banda de frecuencias. Por ejemplo, en el contexto de un conjunto de esquemas de codificación como el mostrado en la FIG. 18, tal implementación del procedimiento M200 puede estar configurada para almacenar información espectral de referencia si el índice de codificación de la trama indica uno cualquiera de los esquemas de codificación 1 y 2 (es decir, no el esquema de codificación 3). Más generalmente, tal implementación del procedimiento M200 puede estar configurada para almacenar información espectral de referencia si el índice de codificación de la trama indica un esquema de codificación de banda ancha en vez de un esquema de codificación de banda estrecha.
Puede resultar deseable implementar el procedimiento M200 para obtener descripciones espectrales diana (es decir, llevar a cabo la tarea T230) solo para tramas diana que sean inactivas. En tales casos, puede resultar deseable que
la información espectral de referencia esté basada únicamente en tramas inactivas codificadas y no en tramas activas codificadas. Aunque las tramas activas incluyen ruido de fondo, también sería probable que la información espectral de referencia basada en una trama activa codificada incluyese información relativa a componentes de voz que pudieran corromper la descripción espectral diana.
Tal implementación del procedimiento M200 puede estar configurada para almacenar información basada en la trama codificada actual como información espectral de referencia si el índice de codificación de la trama indica un modo particular de codificación (por ejemplo, NELP). Otras implementaciones del procedimiento M200 están configuradas para almacenar información basada en la trama codificada actual como información espectral de referencia si el índice de codificación de la trama indica una tasa de bits particular (por ejemplo, de media tasa). Otras implementaciones del procedimiento M200 están configuradas para almacenar información basada en la trama codificada actual como información espectral de referencia según una combinación de tales criterios: por ejemplo, si el índice de codificación de la trama indica que la trama contiene una descripción de una envolvente espectral en la segunda banda de frecuencias y también indica un modo y/o una tasa particulares de codificación. Implementaciones adicionales del procedimiento M200 están configuradas para almacenar información basada en la trama codificada actual como información espectral de referencia si el índice de codificación de la trama indica un esquema de codificación particular (por ejemplo, el esquema de codificación 2 en el ejemplo según la FIG. 18, o un esquema de codificación de banda ancha que está reservado para su uso con tramas inactivas en otro ejemplo).
Puede que no sea posible determinar solo a partir de su índice de codificación si una trama es activa o inactiva. Por ejemplo, en el conjunto de esquemas de codificación mostrado en la FIG. 18, se usa el esquema de codificación 2 tanto para las tramas activas como para las inactivas. En tal caso, los índices de codificación de una o más tramas posteriores pueden contribuir a indicar si una trama codificada es inactiva. Por ejemplo, la descripción que antecede da a conocer procedimientos de codificación de voz en los que una trama codificada usando el esquema de codificación 2 es inactiva si la trama siguiente es codificada usando el esquema de codificación 3. Una implementación correspondiente del procedimiento M200 puede estar configurada para almacenar información basada en la trama codificada actual como información espectral de referencia si el índice de codificación de la trama indica el esquema de codificación 2 y el índice de codificación de la trama codificada siguiente indica el esquema de codificación 3. En un ejemplo relacionado, una implementación de procedimiento M200 está configurado para almacenar información basada en una trama codificada como información espectral de referencia si la trama está codificada a media tasa y la siguiente trama está codificada a un octavo de tasa.
Para un caso en el que una decisión de almacenar información basada en una trama codificada como información espectral de referencia depende de la información de una trama codificada posterior, el procedimiento M200 puede estar configurado para llevar a cabo la operación de almacenamiento de información espectral de referencia en dos partes. La primera parte de la operación de almacenamiento guarda provisionalmente información basada en una trama codificada. Tal implementación del procedimiento M200 puede estar configura para almacenar provisionalmente información para todas las tramas, o para todas las tramas que satisfagan algún criterio predetermina (por ejemplo, todas las tramas que tengan una tasa, modo o esquema de codificación particular). Tres ejemplos diferentes de tal criterio son (1) tramas cuyo índice de codificación indica un modo de codificación NELP,
(2) tramas cuyo índice de codificación indica media tasa, y (3) tramas cuyo índice de codificación indica el esquema de codificación 2 (por ejemplo, en una aplicación de un conjunto de esquemas de codificación según la FIG. 18).
La segunda parte de la operación de almacenamiento guarda información almacenada provisionalmente como información espectral de referencia si se satisface una condición predeterminada. Tal implementación del procedimiento M200 puede estar configurada para diferir esta parte de la operación hasta que se reciban una o más tramas posteriores (por ejemplo, hasta que se conozca el modo, la tasa o el esquema de codificación de la siguiente trama codificada). Tres ejemplos diferentes de tal condición son (1) que el índice de codificación de la siguiente trama codificada indique un octavo de tasa, (2) que el índice de codificación de la siguiente trama codificada indique un modo de codificación usado únicamente para tramas inactivas, y (3) que el índice de codificación de la siguiente trama codificada indique el esquema de codificación 3 (por ejemplo, en una aplicación de un conjunto de esquemas de codificación según la FIG. 18). Si no se satisface la condición para la segunda parte de la operación de almacenamiento, la información guardada provisionalmente puede ser descartada o puede escribirse encima de la misma.
La segunda parte de una operación en dos partes para almacenar información espectral de referencia pueden implementarse según cualquiera de varias configuraciones diferentes. En un ejemplo, la segunda parte de la operación de almacenamiento está configurada para cambiar el estado de una bandera asociada con la ubicación de almacenamiento que contiene la información almacenada provisionalmente (por ejemplo, de un estado que indica “provisional” a un estado que indica “referencia”). En otro ejemplo, la segunda parte de la operación de almacenamiento está configurada para transferir la información almacenada provisionalmente a una memoria intermedia que está reservada para el almacenamiento de información espectral de referencia. En un ejemplo adicional, la segunda parte de la operación e almacenamiento está configurada para actualizar uno o más punteros a una memoria intermedia (por ejemplo, una memoria intermedia circular) que contiene la información espectral de referencia guardada provisionalmente. En este caso, los punteros pueden incluir un puntero de lectura que indique la
ubicación de la información espectral de referencia desde la trama codificada de referencia más reciente y/o un puntero de escritura que indique una ubicación en la que almacenar provisionalmente la información guardada.
La FIG. 31 muestra una porción correspondiente de un diagrama de estado para un decodificador de voz configurado para llevar a cabo una implementación del procedimiento M200 en la que se usa el esquema de codificación de la siguiente trama codificada para determinar si debe almacenarse información con base en una trama codificada como información espectral de referencia. En este diagrama, las etiquetas de los trayectos indican el tipo de trama asociada con el esquema de codificación de la trama actual, indicando A un esquema de codificación usado solamente para tramas activas, indicando I un esquema de codificación usado solo para tramas inactivas e indicando M (“mezclada”) un esquema de codificación que es usado para tramas activas y para tramas inactivas. Por ejemplo, tal decodificador puede estar incluido en un sistema de codificación que use un conjunto de esquemas de codificación como el mostrado en la FIG. 18, correspondiendo los esquemas 1, 2 y 3 a las etiquetas de trayectos A, M e I, respectivamente. Según se muestra en la FIG. 31, se guarda información provisionalmente para todas las tramas codificadas que tengan un índice de codificación que indique un esquema de codificación “mezclada”. Si el índice de codificación de la siguiente trama indica que la trama es inactiva, se completa el almacenamiento de la información guardada provisionalmente como información espectral de referencia. Si no, la información guardada provisionalmente puede ser descartada o puede escribirse encima de la misma.
Se hace notar expresamente que la exposición precedente relativa al almacenamiento selectivo y el almacenamiento provisional de información espectral de referencia y el diagrama de estado adjunto de la FIG. 31 también son aplicables al almacenamiento de información temporal de referencia en implementaciones del procedimiento M200 que están configuradas para almacenar tal información.
En una aplicación típica de una implementación del procedimiento M200, una matriz de elementos lógicos (por ejemplo, puertas lógicas) está configurada para llevar a cabo una, más de una o incluso la totalidad de las diversas tareas del procedimiento. Una o más (posiblemente todas) de las tareas también pueden implementarse como código (por ejemplo, uno o más conjuntos de instrucciones), embebido en un producto de programa de ordenador (por ejemplo, uno o más medios de almacenamiento de datos, tales como discos, memoria flash u otras tarjetas de memoria no volátil, elementos de código semiconductores de memoria, etc.) que sea legible y/o ejecutable por una máquina (por ejemplo, un ordenador), incluyendo una matriz de elementos lógicos (por ejemplo, un procesador, un microprocesador, un microcontrolador u otra máquina de estados finitos). Las tareas de una implementación del procedimiento M200 también pueden ser llevadas a cabo por una de una matriz o una máquina tales. En estas u otras implementaciones, las tareas pueden llevarse a cabo dentro de un dispositivo para comunicaciones inalámbricas, tal como un teléfono celular u otro dispositivo que tenga tal capacidad de comunicaciones. Tal dispositivo puede estar configurado para comunicarse con redes conmutadas por circuitos y/o conmutadas por paquetes (por ejemplo, usando uno o más protocolos, como VoIP). Por ejemplo, tal dispositivo puede incluir circuitería de RF configurada para recibir tramas codificadas.
La FIG. 32A muestra un diagrama de bloques de un aparato 200 para procesar una señal de voz codificada según una configuración general. Por ejemplo, el aparato 200 puede estar configurado para llevar a cabo un procedimiento de decodificación de voz que incluya una implementación del procedimiento M200 descrito en el presente documento. El aparato 200 incluye la lógica 210 de control, que está configurada para generar una señal de control que tiene una secuencia de valores. El aparato 200 también incluye un decodificador 220 de voz que está configurado para calcular tramas decodificadas de una señal de voz con base en valores de la señal de control y en correspondientes tramas codificadas de la señal de voz codificada.
Un dispositivo de comunicaciones que incluye el aparato 200, tal como un teléfono celular, puede estar configurado para recibir la señal de voz codificada procedente de un canal de transmisión cableado, inalámbrico u óptico. Tal dispositivo puede estar configurado para llevar a cabo operaciones de preprocesamiento en la señal de voz codificada, tal como la decodificación de códigos de corrección de errores y/o de redundancia. Tal dispositivo también puede incluir implementación tanto del aparato 100 como del aparato 200 (por ejemplo, en un transceptor).
La lógica 210 de control está configurada para generar una señal de control que incluye una secuencia de valores que se basa en índices de codificación de tramas codificadas de la señal de voz codificada. Cada valor de la secuencia corresponde a una trama codificada de la señal de voz codificada (salvo en el caso de una trama borrada, según se expone más abajo) y tiene uno de varios estados. En algunas implementaciones del aparato 200, según se describe en lo que sigue, la secuencia tiene valores binarios (es decir, una secuencia de valores altos y bajos). En otras implementaciones del aparato 200 descritas en lo que sigue, los valores de la secuencia pueden tener más de dos estados.
La lógica 210 de control puede estar configurada para determinar el índice de codificación para cada trama codificada. Por ejemplo, la lógica 210 de control puede estar configurada para leer al menos parte del índice de codificación de la trama codificada, para determinar una tasa de bits de la trama codificada a partir de uno o más parámetros tales como la energía de la trama y/o para determinar el modo apropiado de codificación a partir del formato de la trama codificada. Alternativamente, el aparato 200 puede estar implementado para incluir otro elemento que esté configurado para determinar el índice de codificación para cada trama codificada y para
proporcionarlo a la lógica 210 de control, o el aparato 200 puede estar configurado para recibir el índice de codificación de otro módulo de un dispositivo que incluya el aparato 200.
Una trama codificada que no se reciba como se prevé o que se recibe con demasiados errores como para recuperarla se denomina borrado de trama. El aparato 200 puede estar configurado de modo que se usen uno o más estados del índice de codificación para indicar un borra de trama o un borrado parcial de trama, tal como la ausencia de una porción de la trama codificada que transporte información espectral y temporal para la segunda banda de frecuencias. Por ejemplo, el aparato 200 puede estar configurado de modo que el índice de codificación para una trama codificada que ha sido codificada usando el esquema de codificación 2 indique un borrado de la porción de banda alta de la trama.
El decodificador 220 de voz está configurado para calcular tramas decodificadas con base en valores de la señal de control y de correspondientes tramas codificadas de la señal de voz codificada. Cuando el valor de la señal de control tiene un primer estado, el decodificador 220 calcula una trama decodificada con base en una descripción de una envolvente espectral en la primera y la segunda bandas de frecuencias, basándose la descripción en información procedente de la correspondiente trama codificada. Cuando el valor de la señal de control tiene un segundo estado, el decodificador 220 recupera una descripción de una envolvente espectral en la segunda banda de frecuencias y calcula una trama decodificada con base en la descripción recuperada en una descripción de una envolvente espectral en la primera banda de frecuencias, basándose la descripción en la primera banda de frecuencias en información procedente de la correspondiente trama codificada.
La FIG. 32B muestra un diagrama de bloques de una implementación 202 del aparato 200. El aparato 202 incluye una implementación 222 del decodificador 220 de voz que incluye un primer módulo 230 y un segundo módulo 240. Los módulos 230 y 240 están configurados para calcular respectivas porciones de subbandas de las tramas decodificadas. Específicamente, el primer módulo 230 está configurado para calcular una porción decodificada de una trama en la primera banda de frecuencias (por ejemplo, una señal de banda estrecha), y el segundo módulo 240 está configurado para calcular, con base en un valor de la señal de control, una porción decodificada de la trama en la segunda banda de frecuencias (por ejemplo, una señal de banda alta).
La FIG. 32C muestra un diagrama de bloques de una implementación 204 del aparato 200. El analizador 250 está configurado para analizar los bits de una trama codificada para proporcionar un índice de codificación a la lógica 210 de control y al menos una descripción de una envolvente espectral al decodificador 220 de voz. En este ejemplo, el aparato 204 es también una implementación del aparato 202, de modo que el analizador 250 está configurado para proporcionar descripciones de envolventes espectrales en respectivas bandas de frecuencias (cuando están disponibles) a los módulos 230 y 240. El analizador 250 también puede estar configurado para proporcionar al menos una descripción de información temporal al decodificador 220 de voz. Por ejemplo, el analizador 250 puede estar implementado para proporcionar descripciones de información temporal para respectivas bandas de frecuencias (cuando están disponibles) a los módulos 230 y 240.
El aparato 204 también incluye un banco 260 de filtros que está configurado para combinar las porciones decodificadas de las tramas en la primera y la segunda bandas de frecuencias para producir una señal de voz de banda ancha. Se describen ejemplos particulares de tales bancos de filtros, por ejemplo, en la publicación de solicitud de patente estadounidense nº 2007/088558 (Vos et al.), “SYSTEMS, METHODS, AND APPARATUS FOR SPEECH SIGNAL FILTERING”, publicada el 19 de abril de 2007. Por ejemplo, el banco 260 de filtros puede incluir un filtro de paso bajo configurado para filtrar la señal de banda estrecha para producir una primera señal de paso de banda y un filtro de paso alto configurado para filtrar la señal de banda alta para producir una segunda señal de paso de banda. El banco 260 de filtros también puede incluir un sobremuestreador configurado para aumentar la tasa de muestreo de la señal de banda estrecha y/o de la señal de banda alta según un correspondiente factor deseado de interpolación, tal como se describe, por ejemplo, en la publicación de solicitud de patente estadounidense nº 2007/088558 (Vos et al.).
La FIG. 33A muestra un diagrama de bloques de una implementación 232 del primer módulo 230 que incluye un caso 270a de un decodificador 270 de descripciones de envolventes espectrales y un caso 280a de un decodificador 280 de descripciones de información temporal. El decodificador 270a de descripciones de envolventes espectrales está configurado para decodificar una descripción de una envolvente espectral en la primera banda de frecuencias (recibida, por ejemplo, del analizador 250). El decodificador 280a de descripciones de información temporal está configurado para decodificar una descripción de información temporal para la primera banda de frecuencias (recibida, por ejemplo, del analizador 250). Por ejemplo, el decodificador 280a de descripciones de información temporal puede estar configurado para decodificar una señal de excitación para la primera banda de frecuencias. Un caso 290a del filtro 290 de síntesis está configurado para generar una porción decodificada de la trama en la primera banda de frecuencias (por ejemplo, una señal de banda estrecha) que esté basada en las descripciones decodificadas de una envolvente espectral y en información temporal. Por ejemplo, el filtro 290a de síntesis puede estar configurado según un conjunto de valores dentro de la descripción de una envolvente espectral en la primera banda de frecuencias (por ejemplo, uno o más vectores de coeficientes de LSP o LPC) para producir la porción decodificada en respuesta a una señal de excitación para la primera banda de frecuencias.
La FIG. 33B muestra un diagrama de bloques de una implementación 272 del decodificador 270 de descripciones de envolventes espectrales. El descuantificador 310 está configurado para descuantificar la descripción, y el bloque 320 de transformación inversa está configurado para aplicar una transformada inversa a la descripción descuantificada para obtener un conjunto de coeficientes de LPC. El decodificador 280 de descripciones de información temporal también está configurado normalmente para que incluye un descuantificador.
La FIG. 34A muestra un diagrama de bloques de una implementación 242 del segundo módulo 240. El segundo módulo 242 incluye un caso 270b del decodificador 270 de descripciones de envolventes espectrales, una memoria intermedia 300 y un selector 340. El decodificador 270b de descripciones de envolventes espectrales está configurado para decodificar una descripción de una envolvente espectral en la segunda banda de frecuencias (recibida, por ejemplo, del analizador 250). La memoria intermedia 300 está configurada para almacenar una o más descripciones de una envolvente espectral en la segunda banda de frecuencias como información espectral de referencia, y el selector 340 está configurado para seleccionar, según el estado de un correspondiente valor de la señal de control generada por la lógica 210 de control, una descripción decodificada de una envolvente espectral ya sea de (A) la memoria intermedia 300 o del (B) decodificador 270b.
El segundo módulo 242 también incluye un generador 330 de señales de excitación de banda alta y un caso 290b del filtro 290 de síntesis que está configurado para generar una porción decodificada de la trama en la segunda banda de frecuencias (por ejemplo, una señal de banda alta) basada en la descripción decodificada de una envolvente espectral recibida a través del selector 340. El generador 330 de señales de excitación de banda alta está configurado para generar una señal de excitación para la segunda banda de frecuencias, basada en una señal de excitación para la primera banda de frecuencias (producida, por ejemplo, por el decodificador 280a de descripciones de información temporal). Además, o como alternativa, el generador 330 puede estar configurado para llevar a cabo una conformación espectral y/o de amplitud de ruido aleatorio para generar la señal de excitación de banda alta. El generador 330 puede estar implementado como un caso del generador A60 de señales de excitación de banda alta descrito en lo que antecede. El filtro 290b de síntesis está configurado según un conjunto de valores dentro de la descripción de una envolvente espectral en la segunda banda de frecuencias (por ejemplo, como uno o más vectores de coeficientes de LSP o LPC) para producir la porción decodificada de la trama en la segunda banda de frecuencias en respuesta a la señal de excitación de banda alta.
En un ejemplo de implementación del aparato 202 que incluye una implementación 242 del segundo módulo 240, la lógica 210 de control está configurada para enviar una señal binaria al selector 340, de modo que cada valor de la secuencia tenga un estado A o un estado B. En este caso, si el índice de codificación de la trama actual indica que es inactiva, la lógica 210 de control genera un valor que tiene un estado A, lo que hace que el selector 340 seleccione la salida de la memoria intermedia 300 (es decir, la selección A). Si no, la lógica 210 de control genera un valor que tiene un estado B, lo que hace que el selector 340 seleccione la salida del decodificador 270b (es decir, la selección B).
El aparato 202 puede estar dispuesto de modo que la lógica 210 de control controle una operación de la memoria intermedia 300. Por ejemplo, la memoria intermedia 300 puede estar dispuesta de modo que un valor de la señal de control que tiene el estado B haga que la memoria intermedia 300 almacene la correspondiente salida del decodificador 270b. Tal control puede implementarse aplicando la señal de control a una entrada de habilitación de la escritura de la memoria intermedia 300, estando configurada la entrada de modo que el estado B corresponda a su estado activo. Alternativamente, la lógica 210 de control puede estar implementada para generar una segunda señal de control, incluyendo también una secuencia de valores que se basa en índices de codificación de tramas codificadas de la señal de voz codificada, para controlar una operación de la memoria intermedia 300.
La FIG. 34B muestra un diagrama de bloques de una implementación 244 del segundo módulo 240. El segundo módulo 244 incluye el decodificador 270b de descripciones de envolventes espectrales y un caso 280b del decodificador 280 de descripciones de información temporal que está configurado para decodificar una descripción de información temporal para la segunda banda de frecuencias (recibida, por ejemplo, del analizador 250). El segundo módulo 244 también incluye una implementación 302 de una memoria intermedia 300 que también está configurada para almacenar una o más descripciones de información temporal en la segunda banda de frecuencias como información temporal de referencia.
El segundo módulo 244 incluye una implementación 342 del selector 340 que está configurada para seleccionar, según el estado de un correspondiente valor de la señal de control generada por la lógica 210 de control, una descripción decodificada de una envolvente espectral y una descripción decodificada de información temporal procedente ya sea de (A) la memoria intermedia 302 o de (B) los decodificadores 270b, 280b. Un caso 290b del filtro 290 de síntesis está configurado para generar una porción decodificada de la trama en la segunda banda de frecuencias (por ejemplo, una señal de banda alta) que está basada en las descripciones decodificadas de una envolvente espectral y de información temporal recibida a través del selector 342. En una implementación típica del aparato 202 que incluye el segundo módulo 244, el decodificador 280b de descripciones de información temporal está configurado para producir una descripción decodificada de información temporal que incluye una señal de excitación para la segunda banda de frecuencias, y el filtro 290b de síntesis está configurado según un conjunto de valores dentro de la descripción de una envolvente espectral en la segunda banda de frecuencias (por ejemplo, uno
o más vectores de coeficientes de LSP o LPC) para producir la porción decodificada de la trama en la segunda banda de frecuencias en respuesta a la señal de excitación.
La FIG. 34C muestra un diagrama de bloques de una implementación 246 del segundo módulo 240 que incluye la memoria intermedia 302 y el selector 342. El segundo módulo 246 también incluye un caso 280c del decodificador 280 de descripciones de información temporal, que está configurado para decodificar una descripción de una envolvente temporal para la segunda banda de frecuencias, y un elemento 350 de control de ganancia (por ejemplo, un multiplicador o amplificador) que está configurado para aplicar una descripción de una envolvente temporal recibida a través del selector 342 a la porción decodificada de la trama en la segunda banda de frecuencias. Para un caso en el que la descripción decodificada de una envolvente temporal incluya valores de la forma de ganancia, el elemento 350 de control de ganancia puede incluir lógica configurada para aplicar los valores de la forma de ganancia a respectivas subtramas de la porción decodificada.
Las FIGURAS 34A-34C muestran implementaciones del segundo módulo 240 en las que la memoria intermedia 300 recibe descripciones completamente decodificadas de envolventes espectrales (y, en algunos casos, de información temporal). Pueden disponerse implementaciones similares de modo que la memoria intermedia 300 reciba descripciones que no estén completamente decodificadas. Por ejemplo, puede resultar deseable reducir los requisitos de almacenamiento guardando la descripción de forma cuantificada (recibida, por ejemplo, del analizador 250). En tales casos, puede configurarse el recorrido de las señales desde la memoria intermedia 300 hasta el selector 340 para que incluya lógica de decodificación, tal como un descuantificador y/o un bloque de transformación inversa.
La FIG. 35A muestra un diagrama de estado según el cual puede configurarse para que una implementación de la lógica 210 de control pueda operar. En este diagrama, las etiquetas de los trayectos indican el tipo de trama asociada con el esquema de codificación de la trama actual, indicando A un esquema de codificación usado solamente para tramas activas, indicando I un esquema de codificación usado solo para tramas inactivas e indicando M (“mezclada”) un esquema de codificación que es usado para tramas activas y para tramas inactivas. Por ejemplo, tal decodificador puede estar incluido en un sistema de codificación que use un conjunto de esquemas de codificación como el mostrado en la FIG. 18, correspondiendo los esquemas 1, 2 y 3 a las etiquetas de trayectos A, M e I, respectivamente. Las etiquetas de estado de la FIG. 35A indican el estado del correspondiente valor o de los correspondientes valores de la(s) señal(es) de control.
Según se ha hecho notar en lo que antecede, el aparato 202 puede ser dispuesto de modo que la lógica 210 de control controle una operación de la memoria intermedia 300. Para un caso en el que el aparato 202 esté configurado para llevar a cabo una operación de almacenamiento de información espectral de referencia en dos partes, la lógica 210 de control puede estar configurada para controlar la memoria intermedia 300 para que lleve a cabo una tarea seleccionada de tres tareas diferentes: (1) almacenar provisionalmente información basada en una trama codificada, (2) completar el almacenamiento de información guardada provisionalmente como referencia espectral y/o información temporal, y (3) dar salida a la referencia espectral y/o a la información temporal almacenadas.
En un ejemplo de ese tipo, la lógica 210 de control está implementada para producir una señal de control cuyos valores tienen al menos cuatro estados posibles, correspondiendo cada uno a un respectivo estado del diagrama mostrado en la FIG. 35A, que controla la operación del selector 340 y de la memoria intermedia 300. En otro ejemplo de ese tipo, la lógica 210 de control está implementada para producir (1) una señal de control cuyos valores tienen al menos dos estados posibles para controlar una operación del selector 340 y (2) una segunda señal de control que incluye una secuencia de valores que está basada en índices de codificación de tramas codificadas de la señal de voz codificada y cuyos valores tienen al menos tres estados posibles para controlar una operación de la memoria intermedia 300.
Puede resultar deseable configurar la memoria intermedia 300 de modo que, durante el procesamiento de una trama para la se selecciona una operación de completar el almacenamiento de información almacenada provisionalmente, la información almacenada provisionalmente también esté disponible para que el selector 340 la seleccione. En tal caso, la lógica 210 de control puede estar configurada para enviar los valores actuales de las señales al selector 340 de control y a la memoria intermedia 300 en momentos ligeramente diferentes. Por ejemplo, la lógica 210 de control puede estar configurada para controlar la memoria intermedia 300 para mover un puntero de lectura con la suficiente premura en el periodo de la trama como para que la memoria intermedia 300 dé salida a la información almacenada provisionalmente a tiempo para que el selector 340 la seleccione.
Según se ha hecho notar en lo que antecede con referencia a la FIG. 13B, puede resultar deseable en ocasiones que un codificador de voz que lleve a cabo una implementación del procedimiento M100 use una tasa de bits mayor para codificar una trama inactiva que esté rodeada por otras tramas inactivas. En tal caso, puede resultar deseable que un correspondiente decodificador de voz almacene información basada en esa trama codificada con información espectral y/o temporal de referencia, de modo que la información pueda ser usada en la decodificación de tramas inactivas futuras de la serie.
Los diversos elementos de una implementación del aparato 200 pueden implementarse en cualquier combinación de soporte físico, soporte lógico y/o soporte lógico inalterable que se considere adecuada para la aplicación prevista. Por ejemplo, tales elementos pueden ser fabricados en dispositivos electrónicos y/u ópticos que residan, por ejemplo, en el mismo chip o entre dos o más elementos de código de un conjunto de elementos de código. Un ejemplo de tal dispositivo es una matriz fija o programable de elementos lógicos, tales como transistores o puertas lógicas, y cualquiera de estos elementos puede ser implementado como una o más matrices de ese tipo. Cualesquiera dos o más, o incluso la totalidad, de estos elementos pueden implementarse dentro de la misma matriz
o de las mismas matrices. Tal matriz o tales matrices pueden estar implementadas dentro de uno o más elementos de código (por ejemplo, dentro de un conjunto de elementos de código que incluya dos o más elementos de código).
Uno o más elementos de las diversas implementaciones del aparato 200 descritas en el presente documento también pueden ser implementados, en todo o en parte, como uno o más conjuntos de instrucciones dispuestas para ejecutarse en una o más matrices fijas o programables de elementos lógicos, tales como microprocesadores, procesadores embebidos, núcleos IP, procesadores de señales digitales, FPGA (matrices de puertas programables in situ), ASSP (productos estándar para aplicaciones específicas) y ASIC (circuitos integrados para aplicaciones específicas). Cualesquiera de los diversos elementos de una implementación del aparato 200 también pueden ser implementadas como uno o más ordenadores (por ejemplo, máquinas que incluyan una o más matrices programadas para ejecutar uno o más conjuntos o secuencias de instrucciones, también denominadas “procesadores”), y cualesquiera dos o más, o incluso la totalidad, de estos elementos pueden implementarse dentro del mismo ordenador o de los mismos ordenadores de ese tipo.
Los diversos elementos de una implementación del aparato 200 pueden estar incluidos dentro de un dispositivo para comunicaciones inalámbricas, tal como un teléfono celular u otro dispositivo que tenga tal capacidad de comunicaciones. Tal dispositivo puede estar configurado para comunicarse con redes conmutadas por circuitos y/o conmutadas por paquetes (por ejemplo, usando uno o más protocolos como VoIP). Tal dispositivo puede estar configurado para llevar a cabo operaciones en una señal que transporta las tramas codificadas, tales como la desintercalación, la recuperación selectiva, la decodificación de uno o más códigos convolucionales, la decodificación de uno o más códigos de corrección de errores, la decodificación de una o más capas de protocolos de red (por ejemplo, Ethernet, TCP/IP, cdma2000), demodulación de radiofrecuencia (RF) y/o recepción de RF.
Es posible que se usen uno o más elementos de una implementación del aparato 200 para llevar a cabo tareas o ejecutar otros conjuntos de instrucciones que no estén directamente relacionadas con una operación del aparato, tales como una tarea relativa a otra operación de un dispositivo o un sistema en los que está embebido el aparato. También es posible que uno o más elementos de una implementación del aparato 200 tengan una estructura en común (por ejemplo, un procesador usado para ejecutar porciones de código correspondientes a diferentes elementos en diferentes momentos, un conjunto de instrucciones ejecutadas para llevar a cabo tareas correspondientes a diferentes elementos en diferentes momentos, o una disposición de dispositivos electrónicos y/u ópticos que lleva a cabo operaciones para diferentes elementos en diferentes momentos). En un ejemplo de ese tipo, la lógica 210 de control, el primer módulo 230 y el segundo módulo 240 están implementados como conjuntos de instrucciones dispuestos para ejecutarse en el mismo procesador. En otro ejemplo de ese tipo, los decodificadores 270a y 270b de descripciones de envolventes espectrales están implementados como el mismo conjunto de instrucciones que se ejecutan en diferentes momentos.
Un dispositivo para comunicaciones inalámbricas, tal como un teléfono celular u otro dispositivo que tenga tal capacidad de comunicaciones, puede ser configurado para que incluya implementaciones tanto del aparato 100 como del aparato 200. En tal caso, es posible que el aparato 100 y el aparato 200 tengan estructura en común. En un ejemplo tal, el aparato 100 y el aparato 200 están implementados para que incluyan conjuntos de instrucciones que están dispuestas para ejecutarse en el mismo procesador.
En cualquier momento durante una comunicación telefónica bidireccional, cabe esperar que la entrada a al menos uno de los codificadores de voz sea una trama inactiva. Puede resultar deseable configurar un codificador de voz para que transmita tramas codificadas para menos que la totalidad de las tramas en una serie de tramas inactivas. Tal operación también se denomina transmisión discontinua (DTX). En un ejemplo, un codificador de voz lleva a cabo una DTX transmitiendo una trama codificada (también denominada “descriptora de silencio” o SID) para cada cadena de n tramas inactivas consecutivas, siendo n 32. El correspondiente decodificador aplica la información de la SID para actualizar un modelo de generación de ruido que usa un algoritmo de generación de ruido aceptable para sintetizar tramas inactivas. Otros valores típicos de n incluyen 8 y 16. Otros nombres usados en la técnica para indicar una SID incluyen “actualización de la descripción de silencio”, “descripción de inserción de silencio”, “descriptor de inserción de silencio”, “trama descriptora de ruido aceptable” y “parámetros de ruido aceptable”.
Puede apreciarse que, en una implementación del procedimiento M200, las tramas codificadas de referencia son similares a SID porque proporcionan actualizaciones ocasionales a la descripción de silencio para la porción de banda alta de la señal de voz. Aunque las ventajas potenciales de la DTX son normalmente mayores en redes conmutadas por paquetes que en redes conmutadas por circuitos, se hace notar expresamente que los procedimientos M100 y M200 son aplicables a redes tanto conmutadas por circuitos como conmutadas por paquetes.
Una implementación del procedimiento M100 puede ser combinada con la DTX (por ejemplo, en una red conmutada por paquetes), de modo que se transmitan tramas codificadas para menos que la totalidad de las tramas inactivas. Puede configurarse un codificador de voz que lleve a cabo tal procedimiento para que transmita ocasionalmente una SID, con cierto intervalo regular (por ejemplo, cada octava, decimosexta o trigesimosegunda trama en una serie de tramas inactivas) o tras cierto evento. La FIG. 35B muestra un ejemplo en el que se transmite una SID cada sexta trama. En este caso, la SID incluye una descripción de una envolvente espectral en la primera banda de frecuencias.
Puede configurarse una correspondiente implementación del procedimiento M200 para que genere, en respuesta a la falta de recepción de una trama codificada durante un periodo de trama que siga a una trama inactiva, una trama que esté basada en la información espectral de referencia. Según se muestra en la FIG. 35B, puede configurarse tal implementación del procedimiento M200 para obtener una descripción de una envolvente espectral en la primera banda de frecuencias para cada trama inactiva intermedia, con base en la información procedente de una o más SID recibidas. Por ejemplo, tal operación puede incluir una interpolación entre descripciones de envolventes espectrales procedentes de las dos SID más recientes, como en los ejemplos mostrados en las FIGURAS 30A-30C. Para la segunda banda de frecuencias, puede configurarse el procedimiento para obtener una descripción de una envolvente espectral (y, posiblemente, una descripción de una envolvente temporal) para cada trama inactiva intermedia con base en la información procedente de una o más tramas codificadas de referencia recientes (por ejemplo, según cualquiera de los ejemplos descritos en el presente documento). También puede configurarse tal procedimiento para que genere una señal de excitación para la segunda banda de frecuencias que esté basada en una señal de excitación para la primera banda de frecuencias a partir de una o más SID recientes.
Se proporciona la anterior presentación de las configuraciones descritas para permitir que cualquier persona experta en la técnica realice o use los procedimientos y otras estructuras dados a conocer en el presente documento. Los diagramas de flujo, los diagramas de bloques, los diagramas de estado y otras estructuras mostrados y descritos en el presente documento son únicamente ejemplos, y otras variantes de estas estructuras también se encuentran dentro del ámbito de la divulgación. Son posibles diversas modificaciones a estas configuraciones, y los principios genéricos presentados en el presente documento también pueden ser aplicados a otras configuraciones. Por ejemplo, los diversos elementos y las diversas tareas descritos en el presente documento para procesar una porción de banda alta de una señal de voz que incluye frecuencias por encima del intervalo de una porción de banda estrecha de la señal de voz pueden ser aplicados de manera alternativa o adicional, y, de manera análoga para procesar una porción de banda baja de una señal de voz que incluye frecuencias por debajo del intervalo de una porción de banda estrecha de la señal de voz. En tal caso, las técnicas y las estructuras dadas a conocer para derivar una señal de excitación de banda alta a partir de la señal de excitación de banda estrecha pueden usarse para derivar una señal de excitación de banda baja a partir de la señal de excitación de banda estrecha. Así, no se pretende que la presente divulgación esté limitada a las configuraciones mostradas en lo que antecede, sino que, por el contrario, se le otorgue el alcance más amplio coherente con los principios y las características novedosas dadas a conocer de cualquier manera en el presente documento, incluyendo en las reivindicaciones adjuntas según aparecen, que forman parte de la divulgación original.
Ejemplos de códecs que pueden ser usados o ser adaptados para su uso con codificadores de voz, procedimientos de codificación de voz, decodificadores de voz y/o procedimientos de decodificación de voz descritos en el presente documento incluyen un códec mejorado de tasa variable (EVRC), descrito en el documento 3GPP2 C.S0014-C versión 1.0, “Enhanced Variable Rate Codec, Speech Service Options 3, 68, and 70 for Wideband Spread Spectrum Digital Systems” (Proyecto 2 de Asociación de Tercera Generación, Arlington, Virginia, enero de 2007); el códec de voz adaptativa en tasa múltiple (AMR), descrito en el documento ETSI TS 126 092 V6.0.0 (European Telecommunications Standards Institute (ETSI), Sophia Antipolis Cedex, Francia, diciembre de 2004); y el códec de voz AMR de banda ancha, descrito en el documento ETSI TS 126 192 V6.0.0 (ETSI, diciembre de 2004).
Los expertos en la técnica entenderán que la información y las señales pueden ser representados usando varias tecnologías y técnicas diferentes. Por ejemplo, datos, instrucciones, órdenes, información, señales, bits y símbolos que pueden ser objeto de referencia en toda la descripción anterior pueden ser representados por tensiones, corrientes, ondas electromagnéticas, campos o partículas magnéticos, campos o partículas ópticos o cualquier combinación de los mismos. Aunque la señal de la que se derivan las tramas codificadas se denomina “señal de voz”, también se contempla y se da a conocer por la presente que esta señal pueda transportar música u otro contenido de información distinto de la voz durante las tramas activas.
Los expertos en la técnica apreciarán, además, que los diversos bloques lógicos ilustrativos, los módulos, los circuitos y las operaciones descritos en conexión con las configuraciones dadas a conocer en el presente documento pueden ser implementados como soporte físico electrónico, soporte lógico de ordenador o combinaciones de ambos. Tales bloques lógicos, módulos, circuitos y operaciones pueden ser implementados o llevados a cabo con un procesador de uso general, un procesador de señales digitales (DSP), un ASIC, una FPGA u otro dispositivo lógico programable, puerta discreta o lógica de transistor, componentes de soporte lógico diferenciados o cualquier combinación de los mismos diseñada para llevar a cabo las funciones descritas en el presente documento. Un procesador de uso general puede ser un microprocesador, pero, como alternativa, el procesador puede ser cualquier procesador, controlador, microcontrolador o máquina de estado convencionales. Un procesador también puede implementarse como una combinación de dispositivos de cálculo, por ejemplo una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores en unión con un núcleo de DSP, o cualquier otra configuración de ese tipo.
Las tareas de los procedimientos y algoritmos descritos en el presente documento pueden ser implementadas directamente en soporte físico, en un módulo de soporte lógico ejecutado por un procesador o en una combinación 5 de los dos. Un módulo de soporte lógico puede residir en memoria RAM, memoria flash, memoria ROM, memoria EPROM, memoria EEPROM, registros, un disco duro, un disco extraíble, un CD-ROM o cualquier otra forma de medio de almacenamiento conocido en la técnica. Un medio ilustrativo de almacenamiento está acoplado al procesador de modo que el procesador pueda leer información del medio de almacenamiento y escribir información en el mismo. Como alternativa, el medio de almacenamiento puede ser integral al procesador. El procesador y el
10 medio de almacenamiento pueden residir en un ASIC. El ASIC puede residir en un terminal de usuario. Como alternativa, el procesador y el medio de almacenamiento pueden residir como componentes diferenciados en un terminal de usuario.
Cada una de las configuraciones descritas en el presente documento puede ser implementada, al menos en parte, como un circuito cableado, como una configuración de circuito fabricada formando un circuito integrado para 15 aplicaciones específicas o como un programa de soporte lógico inalterable cargado en almacenamiento no volátil o como un programa de soporte lógico cargado desde o en un medio de almacenamiento de datos como código legible por máquina, tal como código que sean instrucciones ejecutables por una matriz de elementos lógicos tales como un microprocesador u otra unidad de procesamiento de señales digitales. El medio de almacenamiento de datos puede ser una matriz de elementos de almacenamiento tales como una memoria de semiconductores (que 20 puede incluir, sin limitación, RAM dinámica o estática (memoria de acceso aleatorio), ROM (memoria de solo lectura), y/o RAM flash), o memoria ferroeléctrica, magnetorresistiva, ovónica, polimérica o de cambio de fase; o un medio de disco, tal como un disco magnético u óptico. Debería entenderse que la expresión “soporte lógico” incluye código fuente, código en lenguaje ensamblador, código máquina, código binario, soporte lógico inalterable, macrocódigo, microcódigo, cualquier secuencia o conjuntos de secuencias de instrucciones ejecutables por una
25 matriz de elementos lógicos y cualquier combinación de tales ejemplos.

Claims (10)

  1. REIVINDICACIONES
    1. Un procedimiento de codificación de tramas de una señal de voz, comprendiendo dicho procedimiento:
    producir (T110) una primera trama codificada que esté basada en una primera trama de la señal de voz y tenga una longitud de p bits, siendo p un entero positivo distinto de cero;
    5 producir (T120) una segunda trama codificada que esté basada en una segunda trama de la señal de voz y tenga una longitud de q bits, siendo q un entero positivo distinto de cero y distinto de p; y producir (T130) una tercera trama codificada que esté basada en una tercera trama de la señal de voz y tenga una longitud de r bits, siendo r un entero positivo distinto de cero menor que q, en el que la segunda trama es una trama inactiva que aparece después de la primera trama,
    10 en el que la tercera trama es una trama inactiva que aparece después de la segunda trama, en el que todas las tramas de la señal de voz entre las tramas primera y tercera son inactivas, y en el que la segunda trama codificada incluye (A) una descripción de una envolvente espectral, en una primera banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama y (B) una descripción de una envolvente espectral, en una segunda banda de frecuencias distinta de la primera
    15 banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama.
  2. 2.
    El procedimiento según la reivindicación 1 en el que al menos parte de la segunda banda de frecuencias es más alta que la primera banda de frecuencias.
  3. 3.
    El procedimiento según la reivindicación 2 en el que las bandas de frecuencias primera y segunda se solapan en al menos doscientos hercios.
    20 4. El procedimiento según la reivindicación 1 en el que al menos una entre la descripción de una envolvente espectral en una primera banda de frecuencias y la descripción de una envolvente espectral en una segunda banda de frecuencias se basa en una media de al menos dos descripciones de envolventes espectrales de porciones correspondientes de la señal de voz, incluyendo cada porción correspondiente una trama inactiva de la señal de voz.
    25 5. El procedimiento según la reivindicación 1 en el que la segunda trama codificada se basa en información procedente de al menos dos tramas inactivas de la señal de voz.
  4. 6. El procedimiento según la reivindicación 1 en el que la tercera trama codificada (A) incluye una descripción de una envolvente espectral, en una primera banda de frecuencias, de una porción de la señal de voz que incluye la tercera trama y (B) no incluye una descripción de una envolvente espectral en la segunda banda de
    30 frecuencias.
  5. 7. El procedimiento según la reivindicación 1 en el que la segunda trama codificada incluye una descripción de una envolvente temporal de una porción de la señal de voz que incluye la segunda trama y en el que la tercera trama codificada incluye una descripción de una envolvente temporal de una porción de la señal de voz que incluye la tercera trama.
    35 8. El procedimiento según la reivindicación 1 en el que la segunda trama codificada incluye (A) una descripción de una envolvente temporal, para una primera banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama y (B) una descripción de una envolvente temporal, para una segunda banda de frecuencias distinta de la primera banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama, y en el que la tercera trama codificada no incluye una descripción de una envolvente temporal
    40 para la segunda banda de frecuencias.
  6. 9.
    El procedimiento según la reivindicación 1 en el que la longitud de la secuencia más reciente de tramas activas consecutivas con respecto a la segunda trama es al menos igual a un valor umbral predeterminado.
  7. 10.
    Un aparato para codificar tramas de una señal de voz, comprendiendo dicho aparato:
    un medio (T110) para producir, con base en una primera trama de la señal de voz, una primera trama
    45 codificada que tenga una longitud de p bits, siendo p un entero positivo distinto de cero; un medio (T120) para producir, con base en una segunda trama de la señal de voz, una segunda trama codificada que tenga una longitud de q bits, siendo q un entero positivo distinto de cero y distinto de p; y un medio (T130) para producir, con base en una tercera trama de la señal de voz, una tercera trama codificada que tenga una longitud de r bits, siendo r un entero positivo distinto de cero menor que q,
    50 en el que la segunda trama es una trama inactiva que aparece después de la primera trama, en el que la tercera trama es una trama inactiva que aparece después de la segunda trama, en el que todas las tramas de la señal de voz entre las tramas primera y tercera son inactivas, y en el que el medio para producir una segunda trama codificada está configurado para producir la segunda trama codificada de forma que incluya (A) una descripción de una envolvente espectral, en una primera
    55 banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama y (B) una descripción de una envolvente espectral, en una segunda banda de frecuencias distinta de la primera banda de frecuencias, de una porción de la señal de voz que incluye la segunda trama.
  8. 11. El aparato de la reivindicación 10 en el que el medio para producir una tercera trama codificada está configurado para producir la tercera trama codificada, de forma que (A) incluya una descripción de una
    5 envolvente espectral en la primera banda de frecuencias y (B) no incluya una descripción de una envolvente espectral en la segunda banda de frecuencias.
  9. 12. Un producto de programa de ordenador que comprende un medio legible por ordenador, comprendiendo dicho medio un código para hacer que al menos un ordenador lleve a cabo un procedimiento según una cualquiera de las reivindicaciones 1 a 9.
    10 13. Un procedimiento para procesar una señal de voz codificada, comprendiendo dicho procedimiento:
    con base en la información procedente de una primera trama codificada de la señal de voz codificada, obtener (T210) una descripción de una envolvente espectral de una primera trama de una señal de voz en
    (A) una primera banda de frecuencias y (B) una segunda banda de frecuencias diferente de la primera banda de frecuencias;
    15 con base en la información procedente de una segunda trama codificada de la señal de voz codificada, obtener (T220) una descripción de una envolvente espectral de una segunda trama de una señal de voz en la primera banda de frecuencias; y con base en la información procedente de la primera trama codificada, obtener una descripción de una envolvente espectral de la segunda trama en la segunda banda de frecuencias,
    20 en el que la primera trama codificada es codificada según un esquema de codificación de banda ancha, y en el que la segunda trama codificada es codificada según un esquema de codificación de banda estrecha.
  10. 14. Un aparato para procesar una señal de voz codificada, comprendiendo dicho aparato:
    un medio (T210) para obtener, con base en la información procedente de una primera trama codificada de la señal de voz codificada, una descripción de una envolvente espectral de una primera trama de una señal
    25 de voz en (A) una primera banda de frecuencias y (B) una segunda banda de frecuencias diferente de la primera banda de frecuencias; un medio (T220) para obtener, con base en la información procedente de una segunda trama codificada de la señal de voz codificada, una descripción de una envolvente espectral de una segunda trama de la señal de voz en la primera banda de frecuencias; y
    30 un medio (T230) para obtener, con base en la información procedente de la primera trama codificada, una descripción de una envolvente espectral de la segunda trama en la segunda banda de frecuencias,
    estando codificada la primera trama codificada según un esquema de codificación de banda ancha, y estando codificada la segunda trama codificada según un esquema de codificación de banda estrecha.
    banda estrecha
    banda alta disponible para otrouso tipo de voz
    esquema de codificación 1: CELPde tasa máxima (171 bits)
    153 bits (28 para espectral, 125 para excitación) 16 bits (8 para espectral, 8 para temporal) 2 bits con voz
    esquema de codificación 2: NELPde media tasa (80 bits)
    47 bits (28 para espectral, 19 parsatemporal) 27 bits (12 para espectral, 15 para temporal) 6 bits sin voz
    esquema de codificación 3: NELPde una tasa de un octavo (16 bits)
    15 bits (10 para espectral, 5 para temporal) (ningún bit) 1 bit inactiva
    FIG. 18A
ES07840618T 2006-07-31 2007-07-31 Codificación de una señal de voz y procesamiento de una señal de voz codificada Active ES2406681T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US83468806P 2006-07-31 2006-07-31
US834688P 2006-07-31
US11/830,812 US8260609B2 (en) 2006-07-31 2007-07-30 Systems, methods, and apparatus for wideband encoding and decoding of inactive frames
US830812 2007-07-30
PCT/US2007/074886 WO2008016935A2 (en) 2006-07-31 2007-07-31 Systems, methods, and apparatus for wideband encoding and decoding of inactive frames

Publications (1)

Publication Number Publication Date
ES2406681T3 true ES2406681T3 (es) 2013-06-07

Family

ID=38692069

Family Applications (1)

Application Number Title Priority Date Filing Date
ES07840618T Active ES2406681T3 (es) 2006-07-31 2007-07-31 Codificación de una señal de voz y procesamiento de una señal de voz codificada

Country Status (11)

Country Link
US (2) US8260609B2 (es)
EP (1) EP2047465B1 (es)
JP (3) JP2009545778A (es)
KR (1) KR101034453B1 (es)
CN (2) CN101496100B (es)
BR (1) BRPI0715064B1 (es)
CA (2) CA2778790C (es)
ES (1) ES2406681T3 (es)
HK (1) HK1184589A1 (es)
RU (1) RU2428747C2 (es)
WO (1) WO2008016935A2 (es)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8260609B2 (en) * 2006-07-31 2012-09-04 Qualcomm Incorporated Systems, methods, and apparatus for wideband encoding and decoding of inactive frames
KR101565919B1 (ko) * 2006-11-17 2015-11-05 삼성전자주식회사 고주파수 신호 부호화 및 복호화 방법 및 장치
US8639500B2 (en) * 2006-11-17 2014-01-28 Samsung Electronics Co., Ltd. Method, medium, and apparatus with bandwidth extension encoding and/or decoding
KR20080059881A (ko) * 2006-12-26 2008-07-01 삼성전자주식회사 음성 신호의 전처리 장치 및 방법
KR101379263B1 (ko) * 2007-01-12 2014-03-28 삼성전자주식회사 대역폭 확장 복호화 방법 및 장치
US8392198B1 (en) * 2007-04-03 2013-03-05 Arizona Board Of Regents For And On Behalf Of Arizona State University Split-band speech compression based on loudness estimation
US8064390B2 (en) 2007-04-27 2011-11-22 Research In Motion Limited Uplink scheduling and resource allocation with fast indication
PT2186090T (pt) * 2007-08-27 2017-03-07 ERICSSON TELEFON AB L M (publ) Detetor de transitórios e método para suportar codificação de um sinal de áudio
CN100524462C (zh) 2007-09-15 2009-08-05 华为技术有限公司 对高带信号进行帧错误隐藏的方法及装置
CN100555414C (zh) * 2007-11-02 2009-10-28 华为技术有限公司 一种dtx判决方法和装置
WO2009066960A1 (en) 2007-11-21 2009-05-28 Lg Electronics Inc. A method and an apparatus for processing a signal
US8688441B2 (en) * 2007-11-29 2014-04-01 Motorola Mobility Llc Method and apparatus to facilitate provision and use of an energy value to determine a spectral envelope shape for out-of-signal bandwidth content
US20090168673A1 (en) * 2007-12-31 2009-07-02 Lampros Kalampoukas Method and apparatus for detecting and suppressing echo in packet networks
US8433582B2 (en) * 2008-02-01 2013-04-30 Motorola Mobility Llc Method and apparatus for estimating high-band energy in a bandwidth extension system
US20090201983A1 (en) * 2008-02-07 2009-08-13 Motorola, Inc. Method and apparatus for estimating high-band energy in a bandwidth extension system
DE102008009719A1 (de) 2008-02-19 2009-08-20 Siemens Enterprise Communications Gmbh & Co. Kg Verfahren und Mittel zur Enkodierung von Hintergrundrauschinformationen
DE102008009718A1 (de) * 2008-02-19 2009-08-20 Siemens Enterprise Communications Gmbh & Co. Kg Verfahren und Mittel zur Enkodierung von Hintergrundrauschinformationen
DE102008009720A1 (de) * 2008-02-19 2009-08-20 Siemens Enterprise Communications Gmbh & Co. Kg Verfahren und Mittel zur Dekodierung von Hintergrundrauschinformationen
CN101335000B (zh) * 2008-03-26 2010-04-21 华为技术有限公司 编码的方法及装置
TWI395976B (zh) * 2008-06-13 2013-05-11 Teco Image Sys Co Ltd 掃描模組之光源投射裝置及其光源排列方法
US8768690B2 (en) * 2008-06-20 2014-07-01 Qualcomm Incorporated Coding scheme selection for low-bit-rate applications
US20090319263A1 (en) * 2008-06-20 2009-12-24 Qualcomm Incorporated Coding of transitional speech frames for low-bit-rate applications
WO2010003543A1 (en) * 2008-07-11 2010-01-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for calculating bandwidth extension data using a spectral tilt controlling framing
US8463412B2 (en) * 2008-08-21 2013-06-11 Motorola Mobility Llc Method and apparatus to facilitate determining signal bounding frequencies
CN101751926B (zh) 2008-12-10 2012-07-04 华为技术有限公司 信号编码、解码方法及装置、编解码系统
KR101622950B1 (ko) * 2009-01-28 2016-05-23 삼성전자주식회사 오디오 신호의 부호화 및 복호화 방법 및 그 장치
US8463599B2 (en) * 2009-02-04 2013-06-11 Motorola Mobility Llc Bandwidth extension method and apparatus for a modified discrete cosine transform audio coder
JP5754899B2 (ja) 2009-10-07 2015-07-29 ソニー株式会社 復号装置および方法、並びにプログラム
KR101137652B1 (ko) * 2009-10-14 2012-04-23 광운대학교 산학협력단 천이 구간에 기초하여 윈도우의 오버랩 영역을 조절하는 통합 음성/오디오 부호화/복호화 장치 및 방법
US8428209B2 (en) * 2010-03-02 2013-04-23 Vt Idirect, Inc. System, apparatus, and method of frequency offset estimation and correction for mobile remotes in a communication network
ES2722224T3 (es) * 2010-04-13 2019-08-08 Fraunhofer Ges Forschung Procedimiento y codificador y decodificador para la reproducción sin espacios de una señal de audio
JP5609737B2 (ja) 2010-04-13 2014-10-22 ソニー株式会社 信号処理装置および方法、符号化装置および方法、復号装置および方法、並びにプログラム
JP5850216B2 (ja) 2010-04-13 2016-02-03 ソニー株式会社 信号処理装置および方法、符号化装置および方法、復号装置および方法、並びにプログラム
US9165567B2 (en) 2010-04-22 2015-10-20 Qualcomm Incorporated Systems, methods, and apparatus for speech feature detection
US8600737B2 (en) 2010-06-01 2013-12-03 Qualcomm Incorporated Systems, methods, apparatus, and computer program products for wideband speech coding
JP6075743B2 (ja) * 2010-08-03 2017-02-08 ソニー株式会社 信号処理装置および方法、並びにプログラム
US8990094B2 (en) * 2010-09-13 2015-03-24 Qualcomm Incorporated Coding and decoding a transient frame
KR101826331B1 (ko) * 2010-09-15 2018-03-22 삼성전자주식회사 고주파수 대역폭 확장을 위한 부호화/복호화 장치 및 방법
JP5707842B2 (ja) 2010-10-15 2015-04-30 ソニー株式会社 符号化装置および方法、復号装置および方法、並びにプログラム
US8898058B2 (en) * 2010-10-25 2014-11-25 Qualcomm Incorporated Systems, methods, and apparatus for voice activity detection
ES2665944T3 (es) * 2010-12-24 2018-04-30 Huawei Technologies Co., Ltd. Aparato para realizar una detección de actividad de voz
US8751223B2 (en) 2011-05-24 2014-06-10 Alcatel Lucent Encoded packet selection from a first voice stream to create a second voice stream
CN102800317B (zh) * 2011-05-25 2014-09-17 华为技术有限公司 信号分类方法及设备、编解码方法及设备
WO2013085538A1 (en) * 2011-12-09 2013-06-13 Intel Corporation Control of video processing algorithms based on measured perceptual quality characteristics
CN103187065B (zh) 2011-12-30 2015-12-16 华为技术有限公司 音频数据的处理方法、装置和系统
US9208798B2 (en) 2012-04-09 2015-12-08 Board Of Regents, The University Of Texas System Dynamic control of voice codec data rate
JP6200034B2 (ja) * 2012-04-27 2017-09-20 株式会社Nttドコモ 音声復号装置
JP5997592B2 (ja) * 2012-04-27 2016-09-28 株式会社Nttドコモ 音声復号装置
CN102723968B (zh) * 2012-05-30 2017-01-18 中兴通讯股份有限公司 一种提升空口容量的方法及装置
WO2014118160A1 (en) * 2013-01-29 2014-08-07 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for generating a frequency enhanced signal using temporal smoothing of subbands
KR101771828B1 (ko) * 2013-01-29 2017-08-25 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 오디오 인코더, 오디오 디코더, 인코딩된 오디오 정보를 제공하기 위한 방법, 디코딩된 오디오 정보를 제공하기 위한 방법, 컴퓨터 프로그램 및 신호 적응적 대역폭 확장을 이용한 인코딩된 표현
US9336789B2 (en) * 2013-02-21 2016-05-10 Qualcomm Incorporated Systems and methods for determining an interpolation factor set for synthesizing a speech signal
EP3550562B1 (en) * 2013-02-22 2020-10-28 Telefonaktiebolaget LM Ericsson (publ) Methods and apparatuses for dtx hangover in audio coding
FR3008533A1 (fr) 2013-07-12 2015-01-16 Orange Facteur d'echelle optimise pour l'extension de bande de frequence dans un decodeur de signaux audiofrequences
EP2830061A1 (en) 2013-07-22 2015-01-28 Fraunhofer Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for encoding and decoding an encoded audio signal using temporal noise/patch shaping
EP2830055A1 (en) 2013-07-22 2015-01-28 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Context-based entropy coding of sample values of a spectral envelope
GB201316575D0 (en) * 2013-09-18 2013-10-30 Hellosoft Inc Voice data transmission with adaptive redundancy
JP6531649B2 (ja) 2013-09-19 2019-06-19 ソニー株式会社 符号化装置および方法、復号化装置および方法、並びにプログラム
JP5981408B2 (ja) * 2013-10-29 2016-08-31 株式会社Nttドコモ 音声信号処理装置、音声信号処理方法、及び音声信号処理プログラム
US20150149157A1 (en) * 2013-11-22 2015-05-28 Qualcomm Incorporated Frequency domain gain shape estimation
BR112016014476B1 (pt) 2013-12-27 2021-11-23 Sony Corporation Aparelho e método de decodificação, e, meio de armazenamento legível por computador
JP6035270B2 (ja) * 2014-03-24 2016-11-30 株式会社Nttドコモ 音声復号装置、音声符号化装置、音声復号方法、音声符号化方法、音声復号プログラム、および音声符号化プログラム
US9697843B2 (en) 2014-04-30 2017-07-04 Qualcomm Incorporated High band excitation signal generation
EP2950474B1 (en) 2014-05-30 2018-01-31 Alcatel Lucent Method and devices for controlling signal transmission during a change of data rate
CN106409304B (zh) * 2014-06-12 2020-08-25 华为技术有限公司 一种音频信号的时域包络处理方法及装置、编码器
EP2980797A1 (en) 2014-07-28 2016-02-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio decoder, method and computer program using a zero-input-response to obtain a smooth transition
US10304472B2 (en) * 2014-07-28 2019-05-28 Nippon Telegraph And Telephone Corporation Method, device and recording medium for coding based on a selected coding processing
US9837089B2 (en) * 2015-06-18 2017-12-05 Qualcomm Incorporated High-band signal generation
US10847170B2 (en) 2015-06-18 2020-11-24 Qualcomm Incorporated Device and method for generating a high-band signal from non-linearly processed sub-ranges
JP2017150146A (ja) 2016-02-22 2017-08-31 積水化学工業株式会社 対象物を補強または補修する方法
CN106067847B (zh) * 2016-05-25 2019-10-22 腾讯科技(深圳)有限公司 一种语音数据传输方法及装置
US10573326B2 (en) * 2017-04-05 2020-02-25 Qualcomm Incorporated Inter-channel bandwidth extension
EP3662469A4 (en) * 2018-04-25 2020-08-19 Dolby International AB INTEGRATION OF HIGH FREQUENCY RECONSTRUCTION TECHNIQUES WITH REDUCED POST-PROCESSING DELAY
KR20210005164A (ko) 2018-04-25 2021-01-13 돌비 인터네셔널 에이비 고주파 오디오 재구성 기술의 통합
TWI740655B (zh) * 2020-09-21 2021-09-21 友達光電股份有限公司 顯示裝置的驅動方法
CN118230703A (zh) * 2022-12-21 2024-06-21 北京字跳网络技术有限公司 一种语音处理方法、装置和电子设备

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511073A (en) 1990-06-25 1996-04-23 Qualcomm Incorporated Method and apparatus for the formatting of data for transmission
BR9206143A (pt) 1991-06-11 1995-01-03 Qualcomm Inc Processos de compressão de final vocal e para codificação de taxa variável de quadros de entrada, aparelho para comprimir im sinal acústico em dados de taxa variável, codificador de prognóstico exitado por córdigo de taxa variável (CELP) e descodificador para descodificar quadros codificados
JP2779886B2 (ja) 1992-10-05 1998-07-23 日本電信電話株式会社 広帯域音声信号復元方法
GB2294614B (en) * 1994-10-28 1999-07-14 Int Maritime Satellite Organiz Communication method and apparatus
US5704003A (en) 1995-09-19 1997-12-30 Lucent Technologies Inc. RCELP coder
US6049537A (en) 1997-09-05 2000-04-11 Motorola, Inc. Method and system for controlling speech encoding in a communication system
JP3352406B2 (ja) * 1998-09-17 2002-12-03 松下電器産業株式会社 オーディオ信号の符号化及び復号方法及び装置
AU1524300A (en) 1998-11-13 2000-06-05 Qualcomm Incorporated Closed-loop variable-rate multimode predictive speech coder
US6691084B2 (en) 1998-12-21 2004-02-10 Qualcomm Incorporated Multiple mode variable rate speech coding
US6456964B2 (en) * 1998-12-21 2002-09-24 Qualcomm, Incorporated Encoding of periodic speech using prototype waveforms
US6973140B2 (en) 1999-03-05 2005-12-06 Ipr Licensing, Inc. Maximizing data rate by adjusting codes and code rates in CDMA system
KR100297875B1 (ko) 1999-03-08 2001-09-26 윤종용 가변 속도 보코더를 사용하는 코드 분할 다중 접속 시스템의 음질 향상을 위한 방법
JP4438127B2 (ja) 1999-06-18 2010-03-24 ソニー株式会社 音声符号化装置及び方法、音声復号装置及び方法、並びに記録媒体
US6330532B1 (en) 1999-07-19 2001-12-11 Qualcomm Incorporated Method and apparatus for maintaining a target bit rate in a speech coder
FI115329B (fi) 2000-05-08 2005-04-15 Nokia Corp Menetelmä ja järjestely lähdesignaalin kaistanleveyden vaihtamiseksi tietoliikenneyhteydessä, jossa on valmiudet useisiin kaistanleveyksiin
EP1290681A1 (en) 2000-05-26 2003-03-12 Cellon France SAS Transmitter for transmitting a signal encoded in a narrow band, and receiver for extending the band of the encoded signal at the receiving end, and corresponding transmission and receiving methods, and system
US6807525B1 (en) * 2000-10-31 2004-10-19 Telogy Networks, Inc. SID frame detection with human auditory perception compensation
US6879955B2 (en) 2001-06-29 2005-04-12 Microsoft Corporation Signal modification based on continuous time warping for low bit rate CELP coding
CN1282156C (zh) * 2001-11-23 2006-10-25 皇家飞利浦电子股份有限公司 音频信号带宽扩展
CA2365203A1 (en) * 2001-12-14 2003-06-14 Voiceage Corporation A signal modification method for efficient coding of speech signals
JP4272897B2 (ja) 2002-01-30 2009-06-03 パナソニック株式会社 符号化装置、復号化装置およびその方法
DE60323331D1 (de) 2002-01-30 2008-10-16 Matsushita Electric Ind Co Ltd Verfahren und vorrichtung zur audio-kodierung und -dekodierung
CA2392640A1 (en) 2002-07-05 2004-01-05 Voiceage Corporation A method and device for efficient in-based dim-and-burst signaling and half-rate max operation in variable bit-rate wideband speech coding for cdma wireless systems
WO2004034379A2 (en) 2002-10-11 2004-04-22 Nokia Corporation Methods and devices for source controlled variable bit-rate wideband speech coding
US20040098255A1 (en) 2002-11-14 2004-05-20 France Telecom Generalized analysis-by-synthesis speech coding method, and coder implementing such method
KR100524065B1 (ko) 2002-12-23 2005-10-26 삼성전자주식회사 시간-주파수 상관성을 이용한 개선된 오디오 부호화및/또는 복호화 방법과 그 장치
US20050091044A1 (en) 2003-10-23 2005-04-28 Nokia Corporation Method and system for pitch contour quantization in audio coding
KR100587953B1 (ko) * 2003-12-26 2006-06-08 한국전자통신연구원 대역-분할 광대역 음성 코덱에서의 고대역 오류 은닉 장치 및 그를 이용한 비트스트림 복호화 시스템
FI119533B (fi) 2004-04-15 2008-12-15 Nokia Corp Audiosignaalien koodaus
TWI246256B (en) 2004-07-02 2005-12-21 Univ Nat Central Apparatus for audio compression using mixed wavelet packets and discrete cosine transformation
CN101010730B (zh) 2004-09-06 2011-07-27 松下电器产业株式会社 可扩展解码装置以及信号丢失补偿方法
CN101048649A (zh) 2004-11-05 2007-10-03 松下电器产业株式会社 可扩展解码装置及可扩展编码装置
KR20070085982A (ko) * 2004-12-10 2007-08-27 마츠시타 덴끼 산교 가부시키가이샤 광대역 부호화 장치, 광대역 lsp 예측 장치, 대역스케일러블 부호화 장치 및 광대역 부호화 방법
US8102872B2 (en) 2005-02-01 2012-01-24 Qualcomm Incorporated Method for discontinuous transmission and accurate reproduction of background noise information
NZ562182A (en) 2005-04-01 2010-03-26 Qualcomm Inc Method and apparatus for anti-sparseness filtering of a bandwidth extended speech prediction excitation signal
TWI324336B (en) 2005-04-22 2010-05-01 Qualcomm Inc Method of signal processing and apparatus for gain factor smoothing
US8032369B2 (en) 2006-01-20 2011-10-04 Qualcomm Incorporated Arbitrary average data rates for variable rate coders
JP4649351B2 (ja) 2006-03-09 2011-03-09 シャープ株式会社 デジタルデータ復号化装置
US8260609B2 (en) * 2006-07-31 2012-09-04 Qualcomm Incorporated Systems, methods, and apparatus for wideband encoding and decoding of inactive frames
US8532984B2 (en) * 2006-07-31 2013-09-10 Qualcomm Incorporated Systems, methods, and apparatus for wideband encoding and decoding of active frames

Also Published As

Publication number Publication date
CN103151048B (zh) 2016-02-24
WO2008016935A2 (en) 2008-02-07
EP2047465A2 (en) 2009-04-15
JP5596189B2 (ja) 2014-09-24
CA2657412A1 (en) 2008-02-07
JP2012098735A (ja) 2012-05-24
CN101496100A (zh) 2009-07-29
US8260609B2 (en) 2012-09-04
BRPI0715064B1 (pt) 2019-12-10
WO2008016935A3 (en) 2008-06-12
JP2013137557A (ja) 2013-07-11
CA2778790C (en) 2015-12-15
BRPI0715064A2 (pt) 2013-05-28
CA2657412C (en) 2014-06-10
CN103151048A (zh) 2013-06-12
HK1184589A1 (zh) 2014-01-24
JP2009545778A (ja) 2009-12-24
US20080027717A1 (en) 2008-01-31
KR101034453B1 (ko) 2011-05-17
CN101496100B (zh) 2013-09-04
RU2428747C2 (ru) 2011-09-10
KR20090035719A (ko) 2009-04-10
JP5237428B2 (ja) 2013-07-17
US9324333B2 (en) 2016-04-26
EP2047465B1 (en) 2013-04-10
US20120296641A1 (en) 2012-11-22
RU2009107043A (ru) 2010-09-10
CA2778790A1 (en) 2008-02-07

Similar Documents

Publication Publication Date Title
ES2406681T3 (es) Codificación de una señal de voz y procesamiento de una señal de voz codificada
RU2437171C1 (ru) Системы, способы и устройство для широкополосного кодирования и декодирования активных кадров
ES2391292T3 (es) Sistemas, procedimientos y aparato para la generación de una señal de excitación de banda alta
ES2350494T3 (es) Procedimiento y aparatos para codificar y decodificar una parte de banda alta de una señal de habla.
RU2421828C2 (ru) Системы и способы для включения идентификатора в пакет, ассоциативно связанный с речевым сигналом
TW200912897A (en) Systems, methods, and apparatus for signal encoding using pitch-regularizing and non-pitch-regularizing coding
TW200830278A (en) Systems, methods, and apparatus for wideband encoding and decoding of active frames