ES2207643T3 - Sintesis de señal de excitacion durante borrado de tramas o perdida de paquetes. - Google Patents

Sintesis de señal de excitacion durante borrado de tramas o perdida de paquetes.

Info

Publication number
ES2207643T3
ES2207643T3 ES95301298T ES95301298T ES2207643T3 ES 2207643 T3 ES2207643 T3 ES 2207643T3 ES 95301298 T ES95301298 T ES 95301298T ES 95301298 T ES95301298 T ES 95301298T ES 2207643 T3 ES2207643 T3 ES 2207643T3
Authority
ES
Spain
Prior art keywords
vector
signal
samples
filter
excitation
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.)
Expired - Lifetime
Application number
ES95301298T
Other languages
English (en)
Inventor
Juin-Hwey Chen
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.)
AT&T Corp
Original Assignee
AT&T Corp
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 AT&T Corp filed Critical AT&T Corp
Application granted granted Critical
Publication of ES2207643T3 publication Critical patent/ES2207643T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B7/00Radio transmission systems, i.e. using radiation field
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/005Correction of errors induced by the transmission channel, if related to the coding algorithm
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • 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/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Transmission Systems Not Characterized By The Medium Used For Transmission (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

SE DESCRIBE UN SISTEMA DE CODIFICACION DE LENGUAJE ROBUSTO PARA EL BORRADO DE UN CICLO (O PERDIDA DE UN PAQUETE). LAS REALIZACIONES ILUSTRATIVAS ESTAN DIRIGIDAS A UNA VERSION MODIFICADA DEL ESTANDAR CCITT G.728. EN CASO DE BORRADO DE UN CICLO, LOS VECTORES DE UNA SEÑAL DE EXCITACION SON SINTETIZADOS BASANDOSE EN VECTORES DE SEÑAL PREVIAMENTE ALMACENADOS GENERADOS DURANTE CICLOS NO BORRADOS. ESTA SINTESIS ES DIFERENTE EN LENGUAJE HABLADO Y NO HABLADO. DURANTE LOS CICLOS BORRADOS, LOS COEFICIENTES DE FILTRO PREDICTIVOS LINEALES SON SINTETIZADOS COMO UNA EXTRAPOLACION PONDERADA DE UN CONJUNTO DE COEFICIENTES DE FILTRO PREDICTIVOS LINEALES DETERMINADOS DURANTE LOS CICLOS NO BORRADOS. EL FACTOR PONDERADO ES UN NUMERO INFERIOR A 1. ESTA PONDERACION LLEVA A CABO UNA EXPANSION DEL ANCHO DE BANDA DE LOS MAXIMOS EN LA RESPUESTA DE FRECUENCIA DE UN FILTRO PREDICITIVO LINEAL. LA COMPLEJIDAD COMPUTACIONAL DURANTE LOS CICLOS BORRADOS SE REDUCE POR MEDIO DE LA ELIMINACION DE CIERTOS CALCULOS NECESARIOS UNICAMENTE DURANTE LOS CICLOS NO BORRADOS. ESTA REDUCCION DESPLAZA LA COMPUTACION ADICIONAL REQUERIDA PARA LA SINTESIS DE LA SEÑAL DE EXCITACION Y LA GENERACION DE UN COEFICIENTE DE FILTRO PREDICTIVO LINEAL DURANTE LOS CICLOS BORRADOS.

Description

Síntesis de señal de excitación durante borrado de tramas o pérdida de paquetes.
Este invento se refiere a métodos para sintetizar una señal que refleja la voz humana.
Muchos sistemas de comunicaciones tales como los teléfonos celulares y los sistemas personales de comunicaciones, cuentan con canales inalámbricos para comunicar información. En el curso de la comunicación de tal información, los canales inalámbricos de comunicaciones pueden sufrir el efecto de varias fuentes de errores, tales como el desvanecimiento de múltiples trayectorias. Estas fuentes de errores pueden dar lugar, entre otras cosas, al problema de borrado de tramas. Un borrado se refiere a la pérdida total o a la degradación sustancial de un conjunto de bits comunicados a un receptor. Una trama es un número de bits fijo, predeterminado.
Si se pierde por completo una trama de bits, entonces el receptor carece de bits a interpretar. En tales circunstancias, el receptor puede producir un resultado carente de significado. Si una trama de bits recibidos está degradada y, por tanto, ha perdido fiabilidad, el receptor puede producir un resultado fuertemente distorsionado.
A medida que ha crecido la demanda de la capacidad de los sistemas inalámbricos, ha surgido la necesidad de hacer el mejor uso posible del ancho de banda de los sistemas inalámbricos disponibles. Una forma de mejorar el uso eficiente del ancho de banda de un sistema es emplear una técnica de compresión de señales. Para sistemas inalámbricos que transmiten señales de voz, pueden emplearse, con este fin técnicas de compresión de voz (o de codificación de voz). Tales técnicas de codificación de voz incluyen codificadores de voz de análisis por síntesis, tales como el bien conocido codificador de voz de predicción lineal excitado por código (o CELP).
El problema de la pérdida de paquetes en las redes de paquetes conmutados que emplean disposiciones de codificación de voz, es muy similar al del borrado de tramas en el contexto de las comunicaciones inalámbricas. Es decir, debido a la pérdida de paquetes, un descodificador de voz puede dejar de recibir una trama o recibirla a falta de un importante número de bits. En cualquier caso, el descodificador de voz se enfrenta, en esencia, con el mismo problema
- la necesidad de sintetizar la voz a pesar de la pérdida de información de voz comprimida. Tanto el "borrado de tramas" como la "pérdida de paquetes" están relacionados con un problema del canal (o de la red) de comunicaciones que provoca la pérdida de bits transmitidos. Para los fines de esta descripción, por tanto, la expresión "borrado de tramas" puede considerarse como sinónimo de la pérdida de paquetes.
Los codificadores de voz CELP emplean una tabla de códigos de señales de excitación para codificar una señal de voz original. Estas señales de excitación se utilizan para "excitar" un filtro predictivo lineal (LPC) que, en respuesta a la excitación, sintetiza una señal de voz (o un precursor de una señal de voz). La señal de voz sintetizada se compara con la señal a codificar. Se identifica la señal de excitación de la tabla de códigos que más se parezca a la señal original. Entonces, se comunica el índice de la tabla de códigos de la señal de excitación identificada a un descodificador CELP (dependiendo del tipo de sistema CELP, pueden comunicarse, igualmente, otros tipos de información). El descodificador contiene una tabla de códigos idéntico al del codificador CELP. El descodificador utiliza el índice transmitido para seleccionar una señal de excitación a partir de su propia tabla de códigos. Esta señal de excitación seleccionada es utilizada para excitar el filtro LPC del descodificador. Al ser así excitado, el filtro LPC del descodificador genera una señal de voz descodificada (o cuantizada) - la misma señal de voz que se determinó previamente como la más parecida a la señal de voz original.
Los sistemas inalámbricos y otros que emplean descodificadores de voz pueden ser más sensibles al problema del borrado de tramas que los sistemas que no comprimen la voz. Esta sensibilidad se debe a que la reducida redundancia de la voz codificada (en comparación con la voz no codificada) hace que la posible pérdida de cada bit comunicado sea más significativa. En el contexto de los codificadores de voz CELP que experimentan borrado de tramas, los índices de la tabla de códigos de señales de excitación pueden perderse o resultar sustancialmente degradados. Debido a la o a las tramas borradas, el descodificador CELP no será capaz de identificar de manera fiable qué entrada de su tabla de códigos debe utilizarse para sintetizar la voz. Como resultado, el comportamiento del sistema de codificación de voz puede degradarse de manera significativa.
En el ICASSP, Tokyo, del 7 al 11 de Abril de 1986, vol. I, IEEE, páginas 105- 108, XP000615777, Goodman D. J. y otros, en "Técnicas de sustitución de formas de onda para recuperar segmentos de voz faltantes en comunicaciones de voz por paquetes", describe la sustitución de la voz que falta en sistemas de comunicaciones por paquetes reemplazando los paquetes que faltan por formas de onda seleccionadas, es decir, por sustitución de segmentos de formas de onda pasados. Describe un esquema de sustitución de formas de onda en el dominio del tiempo en el que señales de voz de entrada que faltan en el dominio del tiempo son reemplazadas por señales ya recibidas en el dominio del tiempo.
En el NEC Research and Development, vol. 32, núm. 4, del 1 de Octubre de 1991, páginas 549-555. XP000289780, Unno y colaboradores, en "Codificación/descodificación de voz predictiva lineal, excitada por tabla de códigos aprendida para sistemas celulares digitales", describen un codificador/descodificador de voz que hace uso de un LCELP para representar eficientemente una señal de excitación mediante un cuantizador vectorial de dos etapas con una tabla de códigos aprendido y una tabla de códigos estocástica. El LCELP puede proporcionar una calidad de voz excelente en ausencia de errores de canal y la calidad de la voz es buena incluso en condiciones de errores de bits en la transmisión. El documento describe, además, la extrapolación de la señal de excitación para una trama degradada basada en una señal de excitación previamente sintetizada.
El documento EP 0 459 358 describe un descodificador de voz que incluye un circuito separador que separa una cadena de códigos de un parámetro de filtro, una cadena de códigos de un parámetro asociado con un tono y una cadena de códigos de un parámetro asociado con un índice y una ganancia de una tabla de códigos que representa una señal de excitación de voz procedente de una cadena de códigos recibida. También se incluye un circuito descodificador de corrección de errores que detecta un error de transmisión. Cuando el error de transmisión no puede ser corregido, un circuito de interpolación realiza una interpolación entre parámetros de tramas apropiadas pasadas y futuras, recuperando así los parámetros de una trama corriente.
En Speech Communication, vol. 12, núm. 2, del 1 de Junio de 1993, páginas 103-111. XP000390528, Juin-Hwey Chen y otros, en "La creación y evolución de LD-CELP de 16 Kbits/s, de concepto a norma", y en el IEEE Journal on Selected Areas in Communications, vol. 10, núm 5, de 1 de Junio de 1992, páginas 850-857. XP000274719, Kroon P. y otros, en "Un codificador CELP en tiempo real multi-régimen, de alta calidad" hacen referencia a exposiciones generales relacionadas con la creación y la evolución de los codificadores y algoritmos de codificación de voz de CELP.
De acuerdo con este invento, se proporciona un método como se ha reivindicado en la reivindicación 1.
El presente invento mitiga la degradación de la calidad de la voz debida al borrado de tramas en sistemas de comunicaciones que emplean codificación de voz. En una realización, cuando una o más tramas contiguas de voz codificada no están disponibles o no son fiables, se sintetiza una señal de excitación de sustitución en el descodificador basándose en señales de excitación determinadas antes el borrado de tramas. Se proporciona una síntesis ilustrativa de la señal de excitación mediante la extrapolación de señales de excitación determinadas previamente al borrado de tramas. De esta manera, el descodificador tiene disponible una excitación a partir de la cual puede sintetizarse voz (o un precursor de ella).
Breve descripción de los dibujos
La Figura 1 presenta un diagrama de bloques de un descodificador G.728 modificado.
La Figura 2 presenta un diagrama de bloques de un sintetizador de excitación ilustrativo de la Figura 1.
La Figura 3 presenta un diagrama de flujo de bloques del funcionamiento en modo de síntesis del procesador de síntesis de excitación de la Figura 2.
La Figura 4 presenta un diagrama de flujo de bloques de un funcionamiento en modo de síntesis alternativo del procesador de síntesis de excitación de la Figura 2.
La Figura 5 presenta un diagrama de flujo de bloques de la expansión del ancho de banda del parámetro de LPC, realizada mediante el expansor de ancho de banda de la Figura 1.
La Figura 6 representa un diagrama de bloques del tratamiento de señal realizado por el adaptador de filtro de síntesis de la Figura 1.
La Figura 7 ofrece un diagrama de bloques del tratamiento de señal realizado por el adaptador de ganancia de vector de la Figura 1.
Las Figuras 8 y 9 presentan una versión modificada de un adaptador de filtro de síntesis de LPC y de un adaptador de ganancia vectorial, respectivamente, para G.728.
Las Figuras 10 y 11 presentan una respuesta de frecuencia del filtro LPC y una versión de ancho de banda expandido del mismo, respectivamente.
La Fig. 12 presenta un sistema inalámbrico de comunicaciones ilustrativo.
Descripción detallada I. Introducción
El presente invento se refiere al funcionamiento de un sistema de codificación de voz que experimenta borrado de tramas - es decir, la pérdida de un grupo de bits consecutivos del flujo de bits comprimidos, cuyo grupo es utilizado, habitualmente, para sintetizar la voz. La descripción que sigue refiere características del presente invento aplicado ilustrativamente al bien conocido sistema de codificación de voz CELP con bajo retardo, a 16 kbit/s (LD-CELP), adoptado por la CCITT como estándar internacional G.728 (por conveniencia del lector, la recomendación en borrador que fue adoptada como norma G.728 se une a esta memoria como Apéndice; al borrador se hará referencia en este documento como "borrador de la norma G.728"). A pesar de esta descripción, los dotados de un conocimiento normal de la técnica apreciarán que las características del presente invento encuentran aplicación en otros sistemas de codificación de voz.
El borrador de la norma G.728 incluye descripciones detalladas del codificador y del descodificador de voz de la norma (véase el borrador de la norma G.728, Secciones 3 y 4). La primera realización ilustrativa se refiere a modificaciones en el descodificador de la norma. Aunque no son necesarias modificaciones en el codificador para llevar a la práctica el presente invento, éste puede potenciarse mediante modificaciones en el codificador. De hecho, un sistema ilustrativo de codificación de voz descrito en lo que sigue, incluye un codificador modificado.
El conocimiento del borrado de una o más tramas constituye una entrada a la realización ilustrativa. Tal conocimiento puede obtenerse de cualquiera de las formas usuales, bien conocidas en la técnica. Por ejemplo, pueden detectarse borrados de cuadro mediante el uso de un código usual de detección de errores. Un código de esta clase se ejecutaría, en la práctica, como parte de un subsistema de transmisión/recepción de radio, usual, de un sistema de comunicaciones inalámbrico.
Para los fines de esta descripción, la señal de salida del filtro de síntesis LPC del descodificador, ya sea en el dominio de la voz ya sea en un dominio precursor de éste, se denominará "señal de voz". Asimismo, por claridad de la presentación, una trama ilustrativa será un múltiplo entero de la longitud de un ciclo de adaptación de la norma G.728. Esta longitud de trama ilustrativa es, de hecho, razonable y permite realizar la presentación del invento sin perder su carácter generalista. Puede suponerse, por ejemplo, que una trama tiene una duración de 10 ms o cuatro veces la longitud de un ciclo de adaptación G.728. El ciclo de adaptación es de 20 muestras y corresponde a una duración de 2,5 ms.
Por claridad de la explicación, la realización ilustrativa se presenta constituida por bloques funcionales individuales. Las funciones representadas por estos bloques pueden ser proporcionadas mediante el uso de soporte físico compartido o dedicado, incluyendo soporte físico capaz de ejecutar soporte lógico, pero sin limitarse a él. Por ejemplo, los bloques presentados en las Figuras 1, 2, 6 y 7 pueden ser proporcionados por un único procesador compartido. (El uso del término "procesador" no debe considerarse limitado exclusivamente a soporte físico capaz de ejecutar soporte lógico).
Las realizaciones ilustrativas pueden comprender soporte físico con procesadores de señales digitales (DSP), tales como el DSP16 o el DSP32C, de AT&T, una memoria de sólo lectura (ROM) para almacenar soporte lógico que ejecuta las operaciones que se describen en lo que sigue, y una memoria de acceso aleatorio (RAM) para guardar los resultados DSP. También, pueden proporcionarse realizaciones de soporte físico con integración a escala muy grande (VLSI), así como circuitería VLSI a medida, en combinación con un circuito DSP para fines generales.
II. Una realización ilustrativa
La Figura 1 presenta un diagrama de bloques de un descodificador LD-CELP G.728 modificado. (La Figura 1 es una versión modificada de la figura 3 del borrador de la norma G.728). En funcionamiento normal (es decir, sin experimentar borrado de tramas), el descodificador funciona de acuerdo con la norma G.728. Primero recibe índices del manual de códigos, i, desde un canal de comunicaciones. Cada índice representa un vector de cinco muestras de señal de excitación que puede obtenerse a partir de la tabla de códigos 29 VQ de excitación. La tabla de códigos 29 comprende tablas de códigos de ganancia y de forma, como se ha descrito en el borrador de la norma G.728. La tabla de códigos 29 utiliza cada índice recibido para extraer un vector de código de excitación. El vector de código de excitación es el que fue determinado por el codificador como el que más se parecía a la señal original. Cada vector de código de excitación extraído es cambiado de escala por un amplificador 31 de ganancia. El amplificador 31 multiplica cada muestra del vector de excitación por una ganancia determinada por el adaptador 300 de ganancia vectorial (el funcionamiento del adaptador 300 de ganancia vectorial se describe en lo que sigue). Cada vector de excitación cambiado de escala, ET, se proporciona como entrada a un sintetizador 100 de excitación. Cuando no ocurre borrado de tramas, el sintetizador 100 simplemente proporciona como salida los vectores de excitación cambiados de escala, sin cambio alguno. Cada vector de excitación cambiado de escala es proporcionado, entonces, como entrada a un filtro de síntesis LPC 32. El filtro de síntesis LPC 32 utiliza coeficientes LPC proporcionados por un adaptador 330 de filtro de síntesis a través de un conmutador 120 (el conmutador 120 está configurado de acuerdo con la línea "interrumpida" cuando no ocurre borrado de tramas; el funcionamiento del adaptador 330 de filtro de síntesis, el conmutador 120 y el expansor 115 de ancho de banda, se describe en lo que sigue). El filtro 32 genera voz descodificada (o "cuantizada"). El filtro 32 es un filtro de síntesis de quincuagésimo orden, capaz de introducir una periodicidad en la señal de voz descodificada (generalmente, tal mejora de la periodicidad requiere un filtro de un orden superior al vigésimo). De acuerdo con la norma G.728, esta voz descodificada es filtrada posteriormente, luego, mediante el filtro ulterior 34 y el adaptador 35 de filtro ulterior. Una vez filtrada posteriormente, el formato de la voz descodificada es convertido a un formato estándar apropiado mediante el convertidor 28 de formato. Esta conversión de formato facilita el uso subsiguiente de la voz descodificada por parte de otros sistemas.
A. Síntesis de la señal de excitación durante el borrado de tramas
En presencia de borrado de tramas, el descodificador de la Figura 1 no recibe información fiable (si recibe alguna) relacionada con qué vector de muestras de señal de excitación debe extraerse de la tabla de códigos 29. En este caso, el descodificador debe obtener una señal de excitación sustituta para uso en la sintetización de una señal de voz. La generación de una señal de excitación sustituta durante períodos de borrado de tramas, se consigue mediante el sintetizador de excitación 100.
La Figura 2 presenta un diagrama de bloques de un sintetizador de excitación 100 ilustrativo. Durante los borrados de tramas, el sintetizador de excitación 100 genera uno o más vectores de muestras de señal de excitación basándose en muestras de señal de excitación previamente determinadas. Estas muestras de señal de excitación previamente determinadas se extrajeron utilizando índices de tabla de códigos previamente recibidos desde el canal de comunicaciones. Como se muestra en la Figura 2, el sintetizador de excitación 100 incluye conmutadores en serie 110, 130 y un procesador de síntesis de excitación 120. Los conmutadores 110, 130 responden a una señal de borrado de tramas para cambiar el modo del sintetizador 100 entre un modo normal (sin borrado de tramas) y un modo de síntesis (con borrador de tramas). La señal de borrado de tramas es una marca binaria que indica si la trama corriente es normal (por ejemplo, mediante un valor de "0") o si está borrada (por ejemplo, mediante un valor de "1"). Esta marca binaria es renovada para cada trama.
1. Modo normal
En el modo normal (mostrado mediante la línea de trazos en los conmutadores 110 y 130), el sintetizador 100 recibe vectores de excitación cambiados de escala de ganancia, ET (cada uno de los cuales comprende cinco valores de muestra de excitación), y hace pasar esos vectores a su salida. Los valores de muestra de vectores son hechos pasar, también, al procesador de síntesis de excitación 120. El procesador 120 guarda estos valores de muestra en una memoria intermedia, ETPAST, para subsiguiente uso en el caso de borrado de tramas. ETPAST mantiene 200 de los valores de muestra de señal de excitación más recientes (es decir, 40 vectores) para proporcionar una historia de los valores de señal de excitación recientemente recibidos (o sintetizados). Cuando ETPAST está llena, cada vector sucesivo de cinco muestras empujadas a la memoria intermedia hace que el vector más antiguo de cinco muestras salga de la memoria intermedia. (Como se describirá en lo que sigue con referencia al modo de síntesis, la historia de los vectores puede incluir los vectores generados en el caso de borrado de tramas).
2. Modo de síntesis
En el modo de síntesis (ilustrado mediante línea continua en los interruptores 110 y 130), el sintetizador 100 desacopla la entrada del vector de excitación cambiado de escala de ganancia y acopla el procesador 120 de síntesis de excitación a la salida del sintetizador. El procesador 120, en respuesta a la señal de borrado de tramas, funciona para sintetizar los vectores de señal de excitación.
La Figura 3 presenta un diagrama de flujo de bloques del funcionamiento del procesador 120 en modo de síntesis. Al término del tratamiento, el procesador 120 determina si es probable que la o las tramas borradas contuviesen voz hablada (véase el paso 1201). Esto puede hacerse mediante detección usual de voz hablada en muestras de voz pasadas. En el contexto del descodificador G.728, está disponible una señal PTAP (procedente del filtro ulterior) que puede ser utilizada en un proceso de decisión de voz hablada. La PTAP representa el peso óptimo de un predictor de tono de una sola toma para la voz descodificada, Si PTAP es grande (por ejemplo, próximo a 1), entonces es probable que la voz borrada haya sido voz hablada. Si PTAP es pequeño (por ejemplo, próximo a 0), entonces es probable que la voz borrada no haya sido voz hablada (es decir, voz sin habla, silencio, ruido). Se utiliza un umbral determinado empíricamente, VTH, para tomar una decisión entre voz hablada y no hablada. Este umbral es igual a 0,6/1,4 (donde 0,6 es un umbral de habla utilizado por el filtro ulterior G.728 y 1,4 es un número, determinado experimentalmente, que reduce el umbral en cuanto al error del lado de la voz hablada).
Si se determina que la o las tramas borradas contenían voz hablada, se sintetiza un nuevo vector ET de excitación cambiado de escala en ganancia localizando un vector de muestras en la memoria intermedia ETPAST, la más temprana de las cuales está KP muestras en el pasado (véase el paso 1204). KP es un recuento de muestras correspondiente a un periodo de tono de voz hablada. KP puede determinarse usualmente a partir de voz descodificada; sin embargo, el filtro posterior del descodificador G.728 ya tiene calculado este valor. Así, la síntesis de un nuevo vector ET comprende una extrapolación (por ejemplo, un copiado) de un conjunto de 5 muestras consecutivas en el presente. Se actualiza la memoria intermedia ETPAST para reflejar el último vector sintetizado de valores de muestra ET (véase el paso 1206). Este proceso se repite hasta que se recibe una trama buena (no borrada) (véanse los pasos 1208 y 1209). El proceso de los pasos 1204, 1206, 1208 y 1209 resulta una repetición periódica de las últimas muestras KP de ETPAST y genera una secuencia periódica de vectores ET en la o las tramas borradas (donde KP es el período). Cuando se recibe una trama buena (no borrada), finaliza el proceso.
Si se determina que la o las tramas borradas contenían voz no hablada (mediante el paso 1201), entonces se lleva a la práctica un procedimiento de síntesis diferente. Una síntesis ilustrativa de vectores ET se basa en una extrapolación aleatorizada de grupos de cinco muestras ETPAST. El procedimiento de extrapolación aleatorizada comienza con el cálculo de una magnitud media de las 40 muestras más recientes de ETPAST (véase el paso 1210). Esta magnitud media se designa como AVMAG. AVMAG se utiliza en un procedimiento que asegura que las muestras de vectores ET extrapoladas tienen la misma magnitud media que las 40 muestras de ETPAST más recientes.
Se genera un número entero aleatorio, NUMR, para introducir una medida de aleatoriedad en el proceso de síntesis de excitación. Esta aleatoriedad es importante porque la trama borrada contenía voz no hablada (según se determina en el paso 1201). NUMR puede tener cualquier valor entero entre 5 y 40, ambos inclusive (véase el paso 1212). Se seleccionan luego cinco muestras consecutivas de ETPAST, la más antigua de las cuales está NUMR muestras en el pasado (véase el paso 1214). Se calcula entonces la magnitud media de estas muestras seleccionadas (véase el paso 1216). La magnitud media se denomina VECAV. Se calcula un factor de escala, SF, como la relación entre AVMAG y VECAV (véase el paso 1218). Cada muestra seleccionada de ETPAST se multiplica, entonces, por SF. Las muestras cambiadas de escala se utilizan entonces como las muestras sintetizadas de ET (véase el paso 1220). Estas muestras sintetizadas se utilizan luego para actualizar ETPAST como se ha descrito anteriormente (véase el paso 1222).
Si se necesitan más muestras sintetizadas para rellenar una trama borrada (véase el paso 1224), se repiten los pasos 1212-1222 hasta que se haya rellenado la trama borrada. Si, también, se han borrado una o más tramas consecutivas subsiguientes (véase el paso 1226), se repiten los pasos 1210-1224 para rellenar la o las tramas subsiguientes borradas. Cuando todas las tramas consecutivas borradas se han rellenado con vectores ET sintetizados, el proceso finaliza.
3. Modo de síntesis alternativo para voz no hablada
La Figura 4 presenta un diagrama de bloques de una operación alternativa del procesador 120 en el modo de síntesis de excitación. En esta alternativa, el tratamiento para la voz hablada es idéntico al descrito en lo que antecede con referencia a la Figura 3. La diferencia entre alternativas reside en la síntesis de vectores ET para voz no hablada. Debido a esto, solamente se presenta en la Figura 4 el tratamiento asociado con voz no hablada.
Como se muestra en la Figura, la síntesis de vectores ET para voz no hablada comienza con el cálculo de correlaciones entre el bloque más reciente de 30 muestras almacenadas en ETPAST y cualquier otro bloque de 30 muestras de ETPAST que esté desplazado en el tiempo con respecto al bloque más reciente por entre 31 y 170 muestras (véase el paso 1230). Por ejemplo, las 30 muestras más recientes de ETPAST se correlacionan primero con un bloque de muestras de entre las muestras 32-61, ambas inclusive, de ETPAST. A continuación, el bloque más reciente de 30 muestras se correlaciona con las muestras de ETPAST entre 33-62, ambas inclusive, y así sucesivamente. El proceso continúa para todos los bloques de 30 muestras hasta el bloque que contenga muestras entre la 171-200, ambas inclusive.
Para todos los valores de correlación calculados mayores que un valor de umbral, THC, se determina un desplazamiento de tiempo (MAXI) correspondiente a la correlación máxima (véase el paso 1232).
A continuación, se realizan pruebas para determinar si la trama borrada exhibía, probablemente, una periodicidad muy baja. En circunstancias de tal periodicidad baja, es ventajoso evitar la introducción de una periodicidad artificial en el proceso de síntesis de vectores ET. Esto se consigue haciendo variar el valor del desplazamiento de tiempo MAXI. Si (i) PTAP es menor que un umbral, VTH1 (véase el paso 1234), o si (ii) la correlación máxima correspondiente a MAXI es menor que una constante, MAXC (véase el paso 1236), entonces se encuentra una periodicidad muy baja. Como resultado, MAXI es incrementado en 1 (véase el paso 1238). Si no se satisface ninguna de las condiciones (i) ni (ii), MAXI no se incrementa. Valores ilustrativos para VTH1 y MAXC son 0,3 y 3x10^{7}, respectivamente.
MAXI es utilizado entonces como índice para extraer un vector de muestras de ETPAST. Las más tempranas de las muestras son muestras MAXI del pasado. Estas muestras extraídas sirven como siguiente vector ET (véase el paso 1240). Como antes, se actualiza la memoria intermedia ETPAST con las muestras de vector ET más nuevas (véase el paso 1242).
Si se necesitan muestras adicionales para rellenar la trama borrada (véase el paso 1244), entonces se repiten los pasos 1234-1242. Una vez que se han rellenado todas las muestras de la trama borrada, se rellenan (véase el paso 1246) las muestras de cada trama borrada subsiguiente repitiendo los pasos (1230-1244). Cuando todas las tramas borradas consecutivas se han rellenado con vectores ET sintetizados, el proceso finaliza.
B. Coeficientes de filtro LPC para tramas borradas
Además de la síntesis de los vectores de excitación cambiados de escala en ganancia, ET, durante las tramas borradas deben generarse coeficientes de filtro LPC.
Los coeficientes de filtro LPC para tramas borradas se generan mediante un procedimiento de expansión de ancho de banda. Este procedimiento de expansión de ancho de banda ayuda a tener en cuenta la incertidumbre de la respuesta de frecuencia de filtro LPC en tramas borradas. La expansión del ancho de banda suaviza la agudeza de los picos de la respuesta de frecuencia de filtro LPC.
La Figura 10 presenta una respuesta de frecuencia de filtro LPC basada en coeficientes LPC determinados para una trama no borrada. Como puede verse, la respuesta contiene ciertos "picos". Es la situación apropiada de estos picos, durante el borrado de tramas, la que ofrece cierta incertidumbre. Por ejemplo, una respuesta de frecuencia correcta para una trama consecutiva podría ser como la respuesta de la Figura 10, con los picos desplazados hacia la derecha o hacia la izquierda. Durante el borrado de trama, como no se dispone de voz descodificada para determinar los coeficientes LPC, estoa coeficientes (y, por tanto, la respuesta de frecuencia de filtro), deben estimarse. Tal estimación puede conseguirse mediante expansión del ancho de banda. El resultado de una expansión de ancho de banda ilustrativa se muestra en la Figura 11. Como puede verse a partir de la Figura 11, los picos de la respuesta de frecuencia se atenúan, dando como resultado un ancho de banda expandido de 3db de los picos. Tal atenuación ayuda a tener en cuenta los desplazamientos de una respuesta de frecuencia "correcta" que no pueden determinarse debido al borrado de tramas.
De acuerdo con la norma G.728, los coeficientes LPC son actualizados en el tercer vector de cada ciclo de adaptación de cuatro vectores. La presencia de tramas borradas no perturba, necesariamente, esta temporización. Como en el caso de la G.728 convencional, se calculan nuevos coeficientes LPC en el tercer vector ET durante una trama. En este caso, sin embargo, los vectores ET son sintetizados durante una trama borrada.
Como se muestra en la Figura 1, la realización incluye un conmutador 120, una memoria intermedia 110 y un expansor de ancho de banda, 115. Durante el funcionamiento normal, el conmutador 120 se encuentra en la posición indicada con línea interrumpida. Esto quiere decir que los coeficientes LPC, a_{i}, son proporcionados al filtro de síntesis LPC por el adaptador 33 de filtro de síntesis. Cada conjunto de coeficientes recién adaptados, a_{i}, se almacena en una memoria intermedia 110 (cada nuevo conjunto se escribe sobre el conjunto previamente salvado de coeficientes). Ventajosamente, el expansor 115 de ancho de banda no necesita funcionar en modo normal (si lo hace, la salida no se utiliza puesto que el conmutador 120 se encuentra en la posición representada con línea interrumpida).
Al ocurrir un borrado de trama, el conmutador 120 cambia de estado (como se muestra en la posición ilustrada con línea continua). La memoria intermedia 110 contiene el último conjunto de coeficientes LPC calculados con muestras de señal de voz procedentes de la última trama buena. En el tercer vector de la trama borrada, el expansor 115 de ancho de banda calcula nuevos coeficientes a_{i}'.
La Figura 5 es un diagrama de flujo de bloques del tratamiento realizado por el expansor 115 de ancho de banda para generar nuevos coeficientes LPC. Como se muestra en la Figura, el expansor 115 extrae los coeficientes LPC previamente salvados de la memoria intermedia 110 (véase el paso 1151). Se generan nuevos coeficientes a_{i}' de acuerdo con la expresión (1):
(1)a_{i}' = (BEF)^{i}a_{i},
\hskip 1cm
1 \leq i \leq 50,
donde BEF es un factor de expansión de ancho de banda que, ilustrativamente, adopta un valor en el margen de 0,95-0,99 y que, ventajosamente, se fija en 0,97 ó 0,98 (véase el paso 1153). Estos coeficientes recién calculados se emiten entonces como salida (véase el paso 1155). Obsérvese que los coeficientes a_{i}' se calculan una vez para cada trama borrada.
Los coeficientes recién calculados son utilizados por el filtro de síntesis LPC 32 para toda la trama borrada. El filtro de síntesis LPC utiliza los nuevos coeficientes pensando que fueron calculados en circunstancias normales por el adaptador 33. Los coeficientes LPC recién calculados se almacenan, también, en la memoria intermedia 110, como se muestra en la Figura 1. Si hubiese borrado de tramas consecutivas, los coeficientes LPC recién calculados almacenados en la memoria intermedia 110 se utilizarían como base para otra iteración de la expansión del ancho de banda de acuerdo con el proceso presentado en la Figura 5. Así, cuanto mayor sea el número de tramas consecutivas borradas, mayor será la expansión de ancho de banda aplicada (por ejemplo, para la trama borrada de orden k de una secuencia de tramas borradas, el factor efectivo de expansión de ancho de banda es BEF^{k}).
Podrían emplearse otras técnicas para generar coeficientes LPC durante tramas borradas, en lugar de la técnica de expansión del ancho de banda anteriormente descrita. Estas incluyen (i) el uso repetido del último conjunto de coeficientes LPC procedentes de la última trama buena, e (ii) el uso de la señal de excitación sintetizada en el adaptador LPC 33 de G.728 convencional.
C. Funcionamiento de los adaptadores de retroceso durante tramas borradas
El descodificador de la norma G.728 incluye un adaptador de filtro de síntesis y un adaptador de ganancia vectorial (bloques 33 y 30, respectivamente, de la figura 3, así como de las figuras 5 y 6, respectivamente, del borrador de la norma G.728). En funcionamiento normal (es decir, funcionando en ausencia de borrado de tramas), estos adaptadores hacen variar dinámicamente los valores de ciertos parámetros basándose en señales presentes en el descodificador. El descodificador de la realización ilustrativa incluye, también, un adaptador 330 de filtro de síntesis y un adaptador 300 de ganancia vectorial. Cuando no ocurre borrado de tramas, el adaptador 330 de filtro de síntesis y el adaptador 300 de ganancia vectorial, funcionan de acuerdo con la norma G.728. El funcionamiento de los adaptadores 330, 300, difiere del de los adaptadores 33, 30 correspondientes de G.728 sólo durante las tramas borradas.
Como se ha descrito anteriormente, ni la actualización de los coeficientes LPC por el adaptador 330 ni la actualización de los parámetros del predictor de ganancia por el adaptador 300 son necesarias durante la ocurrencia de tramas borradas. En el caso de los coeficientes LPC, ello se debe a que tales coeficientes son generados a través de un procedimiento de expansión del ancho de banda. En el caso de los parámetros del predictor de ganancia, ello se debe a que la síntesis de excitación es realizada en el dominio del cambio de escala de ganancia. Dado que no son necesarias las salidas de los bloques 330 y 300 durante el borrado de tramas, pueden modificarse las operaciones de tratamiento de señales realizadas por estos bloques 330, 300 para reducir la complejidad del cálculo.
Como puede verse a partir de las Figuras 6 y 7, respectivamente, los adaptadores 330 y 300 incluyen, cada uno, varios pasos de tratamiento de señales, indicados mediante bloques (bloques 49-51 en la figura 6, bloques 39-48 y 67 en la figura 7). Estos bloques son, generalmente, los mismos que los definidos por el borrador de la norma G.728. Con la primera trama buena que siga a una o más tramas borradas, ambos bloques 330 y 300 forman señales de salida basándose en señales almacenadas en memoria durante una trama borrada. Antes del almacenamiento, estas señales fueron generadas por los adaptadores basándose en una señal de excitación sintetizada durante una trama borrada. En el caso del adaptador 330 de filtro de síntesis, la señal de excitación es, primero, sintetizada para obtener voz cuantizada, previamente al uso por el adaptador. En el caso del adaptador 300 de ganancia de vectores, la señal de excitación es utilizada directamente. En cualquier caso, ambos adaptadores han de generar señales durante una trama borrada, de modo que cuando ocurra la siguiente trama buena, pueda determinarse la salida del adaptador.
Ventajosamente, un número reducido de operaciones de tratamiento de señales, realizadas normalmente por los adaptadores de las Figuras 6 y 7, pueden ser llevadas a cabo durante tramas borradas. Las operaciones que se realizan son aquéllas (i) necesarias para la formación y el almacenamiento de señales utilizadas para formar la salida del adaptador en una trama buena (es decir, no borrada) subsiguiente, o (ii) las necesarias para la formación de señales utilizadas por otros bloques de tratamiento de señales del descodificador durante tramas borradas. No son necesarias operaciones adicionales de tratamiento de señales. Los bloques 330 y 300 realizan un número reducido de operaciones de tratamiento de señales en respuesta a la recepción de la señal de borrado de tramas, como se muestra en las Figuras 1, 6 y 7. La señal de borrado de tramas pide un tratamiento modificado o hace que no funcione el módulo.
Obsérvese que no se requiere una reducción del número de operaciones de tratamiento de señales en respuesta a un borrado de tramas para conseguir un funcionamiento apropiado; los bloques 330 y 300 podrían operar normalmente, como si no hubiese ocurrido borrado de tramas, ignorándose sus señales de salida, como se ha descrito en lo que antecede. En condiciones normales, se realizan las operaciones (i) e (ii). Sin embargo, el reducir el número de operaciones de tratamiento de señales permite que la complejidad global del descodificador se mantenga dentro del nivel de complejidad establecido para un descodificador G.728 en caso de funcionamiento normal. Sin reducir el número de operaciones, las operaciones adicionales necesarias para sintetizar una señal de excitación y expandir el ancho de banda de coeficientes LPC, harían que se incrementase la complejidad global del descodificador.
En el caso del adaptador 330 de filtro de síntesis presentado en la Figura 6, y con referencia al pseudo-código presentado en la exposición del "MÓDULO HÍBRIDO DE GENERACIÓN DE INTERVALOS" de las páginas 28-29 del borrador de la norma G.728, un conjunto ilustrativo, reducido, de operaciones comprende (i) actualizar la memoria intermedia SB haciendo uso de voz sintetizada (que se obtiene haciendo pasar vectores ET extrapolados por una versión de ancho de banda expandido del último filtro LPC bueno) e (ii) calcular REXP en la forma especificada empleando la memoria intermedia SB.
Además, dado que la realización G.728 utiliza un filtro posterior que emplea coeficientes LPC de orden 10 y el primer coeficiente de reflexión durante tramas borradas, el conjunto ilustrativo de operaciones reducidas comprende, además, (iii) la generación de valores de señal RTMP(1) a RTMP(11) (no siendo necesarios RTMP(12) a RTMP(51)) e (iv) con referencia al pseudo-código presentado en la exposición del "MÓDULO DE RECURSIÓN LEVINSON-DURBIN", en las páginas 29-30 del borrador de la norma G.728, la recursión Levinson-Durbin se realiza desde el orden 1 al orden 10 (no siendo necesaria la recursión desde el orden 11 al orden 50). Obsérvese que no se realiza expansión del ancho de banda.
En el caso del adaptador 300 de ganancia de vectores presentado en la Figura 7, un conjunto ilustrativo reducido de operaciones, comprende (i) las operaciones de los bloques 67, 39, 40, 41 y 42 que, conjuntamente, calculan la ganancia logarítmica con desplazamiento eliminado (basándose en vectores ET sintetizados) y GTMP, la entrada al bloque 43; (ii) con referencia al pseudo-código presentado en la exposición del "MÓDULO HÍBRIDO DE GENERACIÓN DE INTERVALOS" de las páginas 32-33, las operaciones de actualización de la memoria intermedia SBLG con GTMP y de actualización REXPLG, la componente recursiva de la función de autocorrelación; e (iii) con referencia al pseudo-código presentado en la exposición del "PREDICTOR LINEAL DE GANANCIA LOGARÍTMICA" en la página 34, la operación de actualizar la memoria de filtro GSTATE con GTMP. Obsérvese que las funciones de los módulos 44, 45, 47 y 48 no se realizan.
Como resultado de llevar a cabo el conjunto reducido de operaciones durante tramas borradas (en lugar de todas las operaciones), el descodificador puede prepararse apropiadamente para la siguiente trama buena y proporcionar cualesquiera señales necesarias durante tramas borradas, al tiempo que se reduce la complejidad de cálculo del descodificador.
D. Modificación del codificador
Como se ha establecido en lo que antecede, el presente invento no requiere modificación alguna del codificador de la norma G.728. Sin embargo, tales modificaciones pueden resultar ventajosas en determinadas circunstancias. Por ejemplo, si ocurre un borrado de tramas al comienzo de una ráfaga de conversación (por ejemplo, al iniciarse una voz hablada a partir de un silencio), entonces una señal de voz sintetizada, obtenida a partir de una señal de excitación extrapolada no es, generalmente, una buena aproximación de la voz original. Además, al ocurrir la siguiente trama buena, es probable que exista una significativa falta de coincidencia entre los estados internos del descodificador y los del codificador. Esta falta de coincidencia de estados entre el codificador y el descodificador puede tardar algún tiempo en converger.
Una forma de solucionar esta circunstancia es modificar los adaptadores del codificador (además de las modificaciones antes descritas para los del descodificador G.728) con el fin de mejorar la velocidad de convergencia. Pueden modificarse tanto el adaptador de coeficientes de filtro LPC como el adaptador de ganancia (predictor) del codificador introduciendo una técnica de alisado espectral (SST) e incrementando la magnitud de la expansión del ancho de banda.
La Figura 8 presenta una versión modificada del adaptador de filtro de síntesis LPC de la figura 5 del borrador de la norma G.728 para uso en el codificador. El adaptador 230 de filtro de síntesis modificado incluye un módulo 49 híbrido de generación de intervalos, que genera coeficientes de autocorrelación; un módulo SST 495, que realiza un suavizado espectral de coeficientes de correlación procedentes del módulo 49 de generación de intervalos; el módulo 50 de recursión Levinson-Durbin para generar coeficientes de filtro de síntesis; y un módulo 510 de expansión de ancho de banda, para expandir el ancho de banda de los picos espectrales del espectro LPC. El módulo SST 495 realiza el suavizado espectral de los coeficientes de autocorrelación multiplicando la memoria intermedia de coeficientes de autocorrelación , RTMP(1)-RTMP(51), por la mitad derecha de un intervalo Gaussiano con una desviación estándar de 60 Hz. El conjunto dividido en intervalos de coeficientes de autocorrelación es aplicado entonces al módulo 50 de recursión Levinson-Durbin en la forma normal. El módulo 510 de expansión de ancho de banda funciona sobre los coeficientes de filtro de síntesis como el módulo 51 del G.728 del borrador de la norma, pero usa un factor de expansión de ancho de banda de 0,96 en lugar de 0,988.
La Figura 9 presenta una versión modificada del adaptador de ganancia de vectores de la figura 6 del borrador de la norma G.728 para uso en el codificador. El adaptador 200 incluye un módulo 43 híbrido de generación de intervalos, un módulo SST 435, un módulo 44 de recursión Levinson-Durbin, y el módulo 450 de expansión de ancho de banda. Todos los bloques de la Figura 9 son idénticos a los de la figura 6 de la norma G.728 excepto para nuevos bloques 435 y 450. De manera global, los módulos 43, 435, 44 y 450 están dispuestos como los módulos de la Figura 8 antes mencionada. Como el módulo SST 495 de la Figura 8, el módulo SST 435 de la Figura 9 realiza un suavizado espectral de los coeficientes de correlación multiplicando la memoria intermedia de coeficientes de autocorrelación, R(1)-R(11), por la mitad derecha de un intervalo Gaussiano. Esta vez, sin embargo, el intervalo Gaussiano tiene una desviación estándar de 45 Hz. El módulo 450 de expansión de ancho de banda de la Figura 9 funciona sobre los coeficientes de filtro de síntesis como el módulo 51 de expansión de ancho de banda de la figura 6 del borrador de la norma G.728, pero utiliza un factor de expansión de ancho de banda de 0,87 en vez de 0,906.
E. Un sistema inalámbrico ilustrativo
Como se ha establecido en lo que antecede, el presente invento tiene aplicación en sistemas inalámbricos de comunicaciones de voz. La Figura 12 presenta un sistema inalámbrico de comunicaciones ilustrativo. La Figura 12 incluye un transmisor 600 y un receptor 700. Una realización ilustrativa del transmisor 600 es una estación de base inalámbrica. Una realización ilustrativa del receptor 700 es un terminal móvil de usuario, tal como un teléfono celular o inalámbrico, u otro dispositivo personal de un sistema de comunicaciones. (Naturalmente, una estación de base inalámbrica y un terminal de usuario puede incluir, también, circuitería de receptor y de transmisor, respectivamente). El transmisor 600 incluye un codificador 610 de voz que puede ser, por ejemplo, un codificador de acuerdo con la norma G.728 de la CCITT. El transmisor incluye, además, un codificador 620 de canal usual para proporcionar capacidad de detección de errores (o de detección y de corrección); un modulador 630 usual; y circuitería usual de transmisión de radio; todos ellos bien conocidos en la técnica. La señales de radio transmitidas por el transmisor 600 son recibidas por el receptor 700 a través de un canal de transmisión. Debido, por ejemplo, a la posible interferencia destructiva de varios componentes multitrayectoria de la señal transmitida, el receptor 700 puede sufrir un desvanecimiento profundo que impide la recepción clara de los bits transmitidos. En tales circunstancias, puede ocurrir borrado de tramas.
El receptor 700 incluye circuitería 710 de receptor de radio usual, un desmodulador usual 720, un descodificador de canal 730 y un descodificador de voz 740. Obsérvese que el descodificador de canal genera una señal de borrado de tramas siempre que el descodificador de canal determine la presencia de un número sustancial de errores de bits (o de bits no recibidos). Alternativamente, (o además de una señal de borrado de tramas procedente del descodificador de canal), el desmodulador 720 puede proporcionar una señal de borrado de tramas al descodificador 740.
F. Exposición
Aunque se han representado y descrito en esta memoria realizaciones específicas, debe comprenderse que estas realizaciones simplemente son ilustrativas de las muchas disposiciones específicas posibles que pueden ser desarrolladas en aplicación de los principios del invento. De acuerdo con estos principios, los expertos en la técnica pueden desarrollar numerosas y diversas otras disposiciones sin apartarse del alcance del invento tal como queda definido por las reivindicaciones adjuntas.
Por ejemplo, aunque el presente invento ha sido descrito en el contexto del sistema de codificación de voz G.728 LD-CELP, las características del invento pueden aplicarse igualmente a otros sistemas de codificación de voz. Por ejemplo, tales sistemas de codificación pueden incluir un predictor a largo plazo (o un filtro de síntesis a largo plazo) para convertir una señal de excitación cambiada de escala en ganancia en una señal con periodicidad de tono. O un sistema de codificación de esta clase puede no incluir un filtro posterior.
Además, la realización ilustrativa se presenta como la sintetización de muestras de señal de excitación basándose en muestras de señal de excitación cambiadas de escala en ganancia previamente almacenadas. Sin embargo, el presente invento puede ser llevado a la práctica para sintetizar muestras de señal de excitación antes del cambio de escala en ganancia (es decir, antes del funcionamiento del amplificador 31 de ganancias). En tales circunstancias, también deben sintetizarse los valores de ganancias (por ejemplo, extrapolarse).
En la anterior exposición relacionada con la síntesis de una señal de excitación durante tramas borradas, la síntesis se conseguía de manera ilustrativa mediante un procedimiento de extrapolación. Será evidente para los expertos en la técnica que podrían emplearse otras técnicas de síntesis, tales como la interpolación.
Tal como se utiliza en esta memoria, el término "filtro" se refiere a estructuras usuales para síntesis de señal, así como otros procedimientos que consiguen una función de síntesis similar a la realizada por un filtro, incluyendo tales otros procedimientos la manipulación de coeficientes de transformación de Fourier con el resultado similar al de un filtro (con o sin eliminación de la información perceptualmente carente de interés).
APÉNDICE
Borrador de Recomendación G.728
Codificación de señales de voz a 16 kbits/s utilizando predicción lineal con excitación por código de bajo retardo
1. Introducción
Esta Recomendación contiene la descripción de un algoritmo para la codificación de señales de voz a 16 kbit/s utilizando predicción lineal con excitación por código de bajo retardo (LD-CELP). Esta Recomendación está organizada como se describe a continuación.
En la Sección 2 se ofrece una breve descripción del algoritmo LD-CELP. En las Secciones 3 y 4 se tratan, respectivamente, los principios del codificador LD-CELP y del descodificador LD-CELP. En la Sección 5 se definen los detalles de cálculo que pertenecen a cada bloque funcional del algoritmo. Los Anexos A, B, C y D contienen tablas de constantes utilizadas por el algoritmo LD-CELP. En el Anexo E se describen las secuencias de adaptación y utilización de las variables. Finalmente, en el Apéndice 1 se da información sobre los procedimientos aplicables a la verificación de la realización del algoritmo.
Está en estudio, además, la futura incorporación de tres Apéndices adicionales (que han de publicarse por separado) que tratan los aspectos de red del LD-CELP, la descripción de la realización de coma fija del LD-CELP y los procedimientos de verificación del LD-CELP de coma fija.
2. Breve descripción del LD-CELP
El algoritmo LD-CELP consta de un codificador y un descodificador, descritos respectivamente en las Secciones 2.1 y 2.2, e ilustrados en la figura 1/G.728.
El LD-CELP conserva la esencia de la técnica de predicción lineal con excitación por código (CELP), que aplica un método de análisis y síntesis a la búsqueda de código cifrado. Sin embargo, el LD-CELP utiliza adaptación hacia atrás de los predictores y la ganancia para lograr un retardo algorítmico de 0,625 ms. Se transmite únicamente el índice del código cifrado de excitación. Los coeficientes del predictor se actualizan mediante análisis de codificación predictiva lineal (LPC) de las señales de voz previamente cuantizadas. La ganancia de excitación es actualizada utilizando la información de ganancia incluida en la excitación previamente cuantizada. El tamaño del bloque correspondiente al vector de excitación y la adaptación de ganancia es de sólo cinco muestras. Se actualiza un filtro de ponderación perceptual mediante análisis LPC de las señales de voz no cuantizadas.
2.1 Codificador LD-CELP
Después de pasar de una codificación PCM de ley A o \mu a una codificación PCM uniforme, la señal de entrada es subdividida en bloques de cinco muestras consecutivas. Para cada bloque de entrada, el codificador hace pasar cada uno de 1024 vectores de código cifrado posibles (almacenados en una tabla de códigos cifrados de excitación) a través de una unidad de cambio de escala de ganancia y un filtro de síntesis. De entre los 1024 vectores de señal cuantizada resultantes, el codificador identifica el que minimiza la medida del error cuadrático medio ponderado en frecuencia con relación al vector de la señal de entrada. Se transmite al descodificador el índice de la tabla de códigos de diez bits del correspondiente mejor vector de la tabla de códigos (o "vector de código") que da lugar a dicho mejor vector de señal cuantizada. El mejor vector de código pasa entonces a través de la unidad de cambio de escala de ganancia y del filtro de síntesis a fin de establecer la memoria de filtro correcta como preparación para la codificación del siguiente vector de señal. Los coeficientes del filtro de síntesis y la ganancia son actualizados periódicamente de manera adaptativa hacia atrás, basándose en la señal previamente cuantizada y en la excitación con cambio de escala de ganancia.
\newpage
2.2 Descodificador LD-CELP
La operación de descodificación se realiza también bloque a bloque. Después de recibir cada índice de diez bits, el descodificador consulta una tabla para extraer el vector de código correspondiente de la tabla de códigos de excitación. El vector de código extraído pasa entonces a través de una unidad de cambio de escala de ganancia y un filtro de síntesis a fin de producir el vector de señal descodificada actual. Los coeficientes del filtro de síntesis y la ganancia son entonces actualizados de la misma manera que en el codificador. El vector de la señal descodificada pasa entonces a través de un filtro posterior adaptativo, a fin de mejorar la calidad perceptual. Los coeficientes del filtro posterior se actualizan periódicamente utilizando la información disponible en el descodificador. Las cinco muestras del vector de la señal del filtro posterior se convierten entonces en cinco muestras de salida PCM de ley A o \mu.
3. Principios de funcionamiento del codificador LD-CELP
La figura 2/G.728 es un diagrama de bloques detallado del codificador LD-CELP. El codificador de la figura 2/G.728 es matemáticamente equivalente al codificador mostrado anteriormente en la figura 1/G.728, pero su realización es más eficaz desde el punto de vista de los cálculos.
En la descripción siguiente,
a) para cada variable descrita, k es el índice de muestreo, y las muestras se toman a intervalos de 125 \mus;
b) un grupo de cinco muestras consecutivas de una señal dada recibe el nombre de vector de esa señal. Por ejemplo, cinco muestras consecutivas de señal de voz forman un vector de señal de voz, cinco muestras de excitación forman un vector de excitación, etc.;
c) n designa el índice de vector, que es diferente del índice de muestra k;
d) cuatro vectores consecutivos constituyen un ciclo de adaptación. En un punto posterior designamos también los ciclos de adaptación como tramas. Los dos términos se emplean indistintamente.
El índice de la tabla de códigos de cuantización de vector (VQ) de excitación es la única información transmitida explícitamente del codificador al descodificador. Otros tres tipos de parámetros serán actualizados periódicamente: la ganancia de excitación, los coeficientes del filtro de síntesis y los coeficientes del filtro de ponderación perceptual. Estos parámetros se obtienen de manera adaptativa hacia atrás a partir de las señales que aparecen antes del vector de señal actual. La ganancia de excitación es actualizada una vez por vector, mientras que los coeficientes del filtro de síntesis y los coeficientes del filtro de ponderación perceptual son actualizados una vez cada cuatro vectores (es decir, un periodo de actualización de 20 muestras, o 2,5 ms). Obsérvese que, si bien la secuencia de procesamiento del algoritmo tiene un ciclo de adaptación de cuatro vectores (20 muestras), el tamaño de la memoria tampón básica es de sólo un vector (cinco muestras). El pequeño tamaño de la memoria intermedia permite obtener un retardo en un solo sentido inferior a 2 ms.
A continuación se da una descripción de cada bloque del codificador. Dado que el codificador LD-CELP se emplea ante todo para la codificación de señales de voz, en adelante supondremos, para facilitar la descripción, que la señal de entrada es de voz, si bien en la práctica puede haber también señales no vocales.
3.1 Conversión del formato PCM de entrada
Este bloque convierte la señal PCM de entrada de ley A o \mu s_{o} (k) en una señal PCM uniforme s_{u}(k).
3.1.1 Niveles internos de la PCM lineal
Al pasar de la PCM de ley A o \mu a la PCM lineal, son posibles diferentes representaciones internas, según el dispositivo. Por ejemplo, las tablas normalizadas definen una gama lineal de -4015,5 a +4015,5 para la PCM de ley \mu. La gama correspondiente para la PCM de ley A es -2016 a +2016. Ambas tablas incluyen algunos valores de salida que tienen una parte fraccionaria igual a 0,5. Estas partes fraccionarias no pueden representarse en un dispositivo de enteros, a menos que toda la tabla se multiplique por 2 para convertir todos los valores en enteros. Esto es realmente lo que suele hacerse en los chips de procesamiento de señal digital (DSP) de punto fijo. Por otra parte, los chips DSP de coma flotante pueden representar los mismos valores que figuran en las tablas. En esta Recomendación se supone que la señal de entrada tiene una gama máxima de - 4095 a +4095, que comprende ambos casos de ley \mu y ley A. En el caso de ley A, esto implica que cuando la conversión lineal da lugar a una gama de -2016 a +2016, estos valores deben multiplicarse por 2 antes de proseguir con la codificación de la señal. En el caso de una entrada de ley \mu a un procesador de coma fija en el que la gama de entrada es transformada en -8031 a +8031, implica que los valores deben dividirse por 2 antes de empezar el proceso de codificación. Otra posibilidad sería tratar estos valores como si estuvieran en formato Q1, lo que significa que hay un bit a la derecha de la coma decimal. Todos los cálculos en que intervengan los datos deberían entonces tener en cuenta este bit.
\newpage
En el caso de señales de entrada PCM lineal de 16 bits que tengan la gama dinámica total de -32768 a +32767, deberá considerarse que los valores de entrada están en formato Q3, lo cual significa que los valores de entrada deben dividirse por 8. A la salida del descodificador se efectuaría una multiplicación por 8 para reconstituir estas señales.
3.2 Memoria intermedia de vector
Este bloque almacena cinco muestras de voz consecutivas s_{u}(5n), s_{u}(5n+1),...,s_{u}(5n+4) para formar un vector de voz de cinco dimensiones s(n)=[s_{u}(5n),s_{u}(5n+1),..., s_{u}(5n+4)].
3.3 Adaptador para el filtro de ponderación perceptual
En la figura 4/G.728 se ilustra el funcionamiento detallado del adaptador del filtro de ponderación perceptual (bloque 3 de la figura 2/G.728). Este adaptador calcula los coeficientes del filtro de ponderación perceptual una vez cada cuatro vectores de voz, basándose en el análisis de predicción lineal (denominado frecuentemente análisis LPC) de las señales de voz no cuantizadas. Las actualizaciones de los coeficientes se producen en el tercer vector de voz de cada ciclo de adaptación de cuatro vectores. Los coeficientes permanecen constantes entre dos actualizaciones sucesivas.
Véase la figura 4(a)/G.728. El cálculo se lleva a cabo como sigue. Se hace pasar primero, el vector de señal de voz de entrada (no cuantizado) a través de un módulo híbrido de generación de intervalos (bloque 36), que dispone un intervalo sobre los vectores de señal de voz anteriores y calcula a modo de salida los 11 primeros coeficientes de autocorrelación de la señal de voz dividida en intervalos. El módulo de recursión de Levinson-Durbin (bloque 37) convierte entonces estos coeficientes de autocorrelación en coeficientes de predicción. Basándose en estos coeficientes de predicción, el calculador de los coeficientes del filtro de ponderación (bloque 38) calcula los coeficientes deseados del filtro de ponderación. Estos tres bloques se tratan más detalladamente a continuación.
Describamos primero los principios de funcionamiento de la generación híbrida de intervalos. Dado que esta técnica se utilizará en tres tipos diferentes de análisis LPC, haremos primero una descripción más general de la técnica y examinaremos después los diferentes casos. Supongamos que el análisis LPC ha de realizarse una vez cada L muestras de señal, y, para más generalidad, que las muestras de señal correspondientes al ciclo de adaptación LD-CELP actual son s_{u}(m), s_{u}(m+ 1), s_{u}(m+ 2), ..., s_{u}(m + L - 1). Entonces, para el análisis LPC adaptativo hacia atrás, el intervalo híbrido se aplica a todas las muestras de señal anteriores cuyo índice de muestra sea inferior a m (como se muestra en la figura 4(b)/G.728). Supongamos que hay N muestras no recursivas en la función de intervalo híbrido. Entonces, las muestras de señal s_{u}(m - 1), s_{u}(m - 2), ..., s_{u}(m - N) son todas ponderadas por la parte no recursiva del intervalo. Todas las muestras que están a la izquierda de s_{u}(m - N - 1) (incluida ésta) son ponderadas por la parte recursiva del intervalo, que tiene los valores b, b\alpha, b\alpha^{2}, ..., donde 0 < b < 1 y 0 < \alpha < 1.
En el instante m, la función de intervalo híbrido w_{m}(k) se define como
1
y la señal ponderada por la ventana es
2
En el Anexo A se especifican las muestras de la parte no recursiva g_{m}(k) y la sección inicial de la parte recursiva
f_{m}(k) para diferentes intervalos híbridos. Para un análisis LPC de orden M, tenemos que calcular M + 1 coeficientes de autocorrelación R_{m}(i) para i = 0, 1, 2, ..., M. El coeficiente de orden i de autocorrelación para el ciclo de adaptación actual puede expresarse como
3
donde
4
En el segundo miembro de la ecuación (1c), el primer término r_{m}(i) es la "componente recursiva" de R_{m}(i), mientras que el segundo es la componente "no recursiva". La suma finita de la componente no recursiva se calcula para cada ciclo de adaptación. Por otra parte, la componente recursiva se calcula recursivamente. Los párrafos siguientes explican la forma de hacerlo.
Supongamos que hemos calculado y almacenado todos los r_{m}(i) para el ciclo de adaptación actual y deseamos pasar al ciclo de adaptación siguiente, que empieza en la muestra s_{u}(m + L). Después de desplazar el intervalo híbrido L muestras a la derecha, la nueva señal con ponderada de intervalo para el siguiente ciclo de adaptación es
5
La componente recursiva de R_{m + L}(i) puede escribirse
6
o
7
Por consiguiente, r_{m + L}(i) puede calcularse recursivamente a partir de r_{m}(i) utilizando la ecuación (1g). Este último r_{m + L}(i) se almacena en la memoria para utilizarlo en el ciclo de adaptación siguiente. El coeficiente de autocorrelación R_{m + L}(i) se calcula entonces como
8
Hasta ahora hemos descrito de modo general los principios del procedimiento de cálculo de intervalo híbrido. Los valores de los parámetros del módulo 36 de generación de intervalos híbridos de la figura 4a)/G.728 son
M = 10,
\hskip0.5cm
L = 20,
\hskip0.5cm
N = 30
\hskip0.5cm
y
Una vez calculados los 11 coeficientes de autocorrelación R(i), i = 0,1, ..., 10 por el procedimiento de generación híbrida de intervalos antes descrito, se aplica un procedimiento de "corrección por ruido blanco". Esto se hace aumentando la energía R(0) en una pequeña cantidad:
(1i)R(0) \leftarrow \left(\frac{257}{256}\right) R(0)
Esto tiene por efecto llenar las depresiones espectrales con ruido blanco para reducir la gama dinámica espectral y atenuar el desajuste de la recursión de Levinson-Durbin subsiguiente. El factor de corrección por ruido blanco (WNCF) de 257/256 corresponde a un nivel de ruido blanco de unos 24 dB por debajo de la potencia de señal de voz media.
Después, utilizando los coeficientes de autocorrelación con corrección por ruido blanco, el módulo 37 de recursión Levinson-Durbin calcula recursivamente los coeficientes de predicción del primer orden al décimo orden. Sean a^{(i)}_{j} los coeficientes de orden j del predictor de orden i. Entonces, el procedimiento recursivo puede especificarse como sigue:
(2a)E(0) = R(0)
9
Las ecuaciones (2b) a (2e) son evaluadas recursivamente para i = 1, 2, ..., 10, y la solución final viene dada por
(2f)q_{i} = a^{(10)}_{i}, 1\leqi\leq10
Si definimos q_{0} = 1, el "filtro de error de predicción" de décimo orden (a veces denominado "filtro de análisis") tiene la función de transferencia
11
y el correspondiente predictor lineal de décimo orden viene definido por la siguiente función de transferencia
12
El calculador de los coeficientes del filtro de ponderación (bloque 38) calcula los coeficientes del filtro de ponderación perceptual de acuerdo con las ecuaciones siguientes:
13
y
14
El filtro de ponderación perceptual es un filtro de cero polos de décimo orden definido por la función de transferencia W(z) en la ecuación (4a). Los valores de \gamma_{1} y \gamma_{2} son respectivamente 0,9 y 0,6.
Véase la figura 2/G.728. El adaptador del filtro de ponderación perceptual (bloque 3) actualiza periódicamente los coeficientes de W(z) según las ecuaciones (2) a (4), y suministra los coeficientes al calculador del vector de respuesta a impulsos (bloque 12) y a los filtros de ponderación perceptual (bloques 4 a 10).
3.4 Filtro de ponderación perceptual
En la figura 2/G.728, se hace pasar el vector de señal de voz de entrada actual s(n) a través del filtro de ponderación perceptual (bloque 4), dando lugar al vector de voz ponderado v(n). Obsérvese que, salvo durante la inicialización, la memoria del filtro (es decir, las variables de estado internas o los valores mantenidos en las unidades de retardo del filtro) no debe reponerse a cero en ningún momento. Por otra parte, la memoria del filtro de ponderación perceptual (bloque 10) necesitará un tratamiento especial, como se indica más adelante.
3.4.1 Funcionamiento con señales no vocales
Para señales de módem u otras señales no vocales, los resultados de las pruebas del CCITT indican que es conveniente desactivar el filtro de ponderación perceptual. Esto equivale a hacer W(z) = 1. El modo más fácil de conseguirlo es haciendo iguales a cero \gamma_{1} y \gamma_{2} en la ecuación (4a). Los valores nominales de estas variables en el modo conversación son respectivamente 0,9 y 0,6.
3.5 Filtro de síntesis
En la figura 2/G.728 hay dos filtros de síntesis (bloques 9 y 22) con coeficientes idénticos. Ambos filtros son actualizados por el adaptador del filtro de síntesis hacia atrás (bloque 23). Cada filtro de síntesis es un filtro todo polar de quincuagésimo orden que consiste en un bucle de realimentación con un predictor LPC de quincuagésimo orden en la rama de realimentación. La función de transferencia del filtro de síntesis es F(z) = 1/[1 - P(z)], donde P(z) es la función de transferencia del predictor LPC de quincuagésimo orden.
Después de haber obtenido el vector de señal de voz ponderada v(n), se generará un vector de respuesta a entrada cero r(n) utilizando el filtro de síntesis (bloque 9) y el filtro de ponderación perceptual (bloque 10). Para hacerlo, empezamos por abrir el conmutador 5, es decir, lo llevamos al nodo 6. Esto implica que la señal que va del nodo 7 al filtro de síntesis 9 será cero. Dejamos entonces que el filtro de síntesis 9 y el filtro de ponderación perceptual 10 "suenen" durante cinco muestras (un vector). Esto significa que continuamos la operación de filtrado durante cinco muestras con una señal cero aplicada en el nodo 7. La salida resultante del filtro de ponderación perceptual 10 es el vector de respuesta a entrada cero deseado r(n).
Obsérvese que, salvo para el vector que sigue inmediatamente a la inicialización, la memoria de los filtros 9 y 10 es generalmente distinta de cero; por consiguiente, el vector de salida r(n) también es generalmente distinto de cero, incluso si la entrada del filtro desde el nodo 7 es cero. En efecto, este vector r(n) es la respuesta de los dos filtros a los vectores de excitación con cambio de escala de ganancia anteriores e(n - 1), e(n - 2),.... Este vector representa en realidad el efecto debido a la memoria del filtro hasta el tiempo (n - 1).
3.6 Cálculo del vector objetivo VQ
Este bloque sustrae el vector respuesta a entrada cero r(n) del vector de señal de voz ponderada v(n) para obtener el vector x(n) objetivo usado en la búsqueda en la tabla de códigos VQ.
3.7 Adaptador del filtro de síntesis hacia atrás
Este adaptador 23 actualiza los coeficientes de los filtros de síntesis 9 y 22. Toma como entrada la señal de voz cuantizada (sintetizada) y produce un conjunto de coeficientes de filtro de síntesis como salida. Su funcionamiento es bastante similar al del adaptador del filtro de ponderación perceptual 3.
En la figura 5/G.728 se ilustra una versión ampliada de este adaptador. El funcionamiento del módulo de generación de intervalos híbridos 49 y del módulo de recursión de Levinson-Durbin 50 es exactamente igual al de sus equivalentes (36 y 37) en la figura 4a)/G.728, con las tres diferencias siguientes:
a) La señal de entrada es ahora la señal de voz cuantizada y no la señal de voz de entrada no cuantizada.
b) El orden del predictor es 50 y no 10.
c) Los parámetros de la ventana híbrida son diferentes:
N = 35,
\hskip0.5cm
\alpha = \left(\frac{3}{4}\right)^{\tfrac{1}{40}} = 0,992833749.
Obsérvese que el periodo de actualización sigue siendo L = 20, y el factor de corrección de ruido blanco sigue siendo 257/256 = 1,00390625.
Sea \hat{P} (z) la función de transferencia del predictor LPC de quincuagésimo orden; por lo que presenta la forma
15
donde los \hat{a}_{i} son los coeficientes del predictor. Para mejorar su resistencia a los errores de canal, estos coeficientes se modifican de manera que los picos del espectro LPC resultante tengan anchuras de banda ligeramente mayores. El módulo 51 de expansión de ancho de banda ejecuta este procedimiento de expansión de ancho de banda como se indica a continuación. Dados los coeficientes \hat{a}_{i} del predictor LPC, se calcula un nuevo conjunto de coeficientes a_{i} por la fórmula
(6)a_{i} = \lambda^{i} \hat{a}_{i},
\hskip0.5cm
i = 1,2...50.
donde \lambda viene dado por
(7)\lambda = \frac{253}{256} = 0.98828125.
Esto hace que se desplacen todos los polos de filtro de síntesis radialmente hacia el origen en un factor \lambda. Dado que los polos se desplazan alejándose del círculo unidad, se ensanchan los picos de la respuesta de frecuencia.
Después de esta expansión de ancho de banda, el predictor LPC modificado tiene la función de transferencia
(8)P(z) = - \sum\limits^{50}_{i=1} \alpha_{i} z^{-i}.
Los coeficientes modificados se aplican entonces a los filtros de síntesis 9 y 22. Estos coeficientes se aplican también al calculador del vector de respuesta a los impulsos 12.
Los filtros de síntesis 9 y 22 tienen la función de transferencia
(9)F(z) = \frac{1}{1-P(z)}.
Análogamente al filtro de ponderación perceptual, los filtros de síntesis 9 y 22 también son actualizados una vez cada cuatro vectores, y las actualizaciones se producen también en el tercer vector de señal de voz de cada ciclo de adaptación de cuatro vectores. No obstante, las actualizaciones se basan en la señal de voz cuantizada hasta el último vector del ciclo de adaptación anterior. En otras palabras, se introduce un retardo de dos vectores antes de que se produzca las actualizaciones. Esto se debe a que el módulo 50 de recursión de Levinson-Durbin y el calculador 15 de la tabla de energía (descrito más adelante) exigen muchos cálculos. Como resultado, aunque se disponga de autocorrelación de la señal de voz cuantizada anteriormente en el primer vector de cada ciclo de cuatro vectores, los cálculos pueden exigir un tiempo superior al de un vector. Por consiguiente, para mantener un tamaño de memoria intermedia básica de un vector (a fin de mantener bajo el retardo de codificación), y para mantener el funcionamiento en tiempo real, se introduce un retardo de dos vectores en las actualizaciones del filtro a fin de facilitar la aplicación en tiempo real.
3.8 Adaptador de ganancia vectorial hacia atrás
Este adaptador actualiza la ganancia de excitación \sigma(n) para cada índice de tiempo de vector n. La ganancia de excitación \sigma(n) es un factor de escala empleado para cambiar de escala el vector de excitación seleccionado y(n). El adaptador 20 toma como entrada el vector de excitación con cambio de escala de ganancia e(n), y produce como salida una ganancia de excitación \sigma(n). Fundamentalmente, intenta "predecir" la ganancia de e(n), basándose en las ganancias de e(n - 1), e(n - 2), . . . utilizando predicción lineal adaptativa en el dominio de ganancia logarítmica. Este adaptador de ganancia vectorial hacia atrás 20 se muestra más detalladamente en la figura 6/G.728.
Se hace referencia a la figura 6/G.728. El adaptador de ganancia funciona como sigue. La unidad de retardo de un vector (bloque 67) provee el vector de excitación con cambio de escala de ganancia anterior e(n - 1). El calculador de media cuadrática (RMS) 39 calcula entonces el valor cuadrático medio del vector e(n - 1). A continuación, el calculador logarítmico 40 calcula el equivalente en dB del valor de media cuadrática de e(n - 1), calculando primero el logaritmo de base 10 y multiplicando luego el resultado por 20.
En la figura 6/G.728, se almacena un valor de desplazamiento de ganancia logarítmica de 32 dB en el contenedor del valor de desplazamiento de la ganancia logarítmica 41. Se supone que este valor es aproximadamente igual al nivel de ganancia de excitación media (en dB) durante la conversación. El sumador 42 sustrae este valor de desplazamiento de ganancia logarítmica de la ganancia logarítmica que sale del calculador logarítmico 40. La ganancia logarítmica resultante (tras deducirle el desplazamiento, \delta(n- 1)), es utilizada entonces por el módulo 43 de generación de intervalos híbridos y el módulo 44 de recursión de Levinson-Durbin. Una vez más, los bloques 43 y 44 funcionan exactamente de la misma manera que los bloques 36 y 37 del módulo adaptador de filtro de ponderación perceptual (figura 4a)G.728)), salvo que los parámetros del intervalo híbrido son diferentes y que la señal analizada es ahora la ganancia logarítmica con desplazamiento sustraído, y no la señal de voz de entrada. (Obsérvese que sólo se produce un valor de ganancia cada cinco muestras de voz). Los parámetros de intervalo híbrido del bloque 43 son
M = 10,
\hskip0.5cm
N = 20,
\hskip0.5cm
L = 4,
\hskip0.5cm
\alpha = \left(\frac{3}{4}\right)^{\tfrac{1}{8}} = 0,96467863.
La salida del módulo 44 de recursión de Levinson-Durbin consiste en los coeficientes de un predictor lineal de décimo orden cuya función de transferencia es
(10)\hat{R} (z) = -\sum\limits^{10}_{i=1} \hat{\alpha}_{i} z^{-i}
El módulo de expansión de ancho de banda 45 desplaza entonces las raíces de este polinomio radialmente hacia el plano z de origen de manera similar al módulo 51 de la figura 5/G.728. El predictor de ganancia de ancho de banda ampliada resultante tiene la función de transferencia
(11)R(z) = -\sum\limits^{10}_{i=1} \alpha_{i}z^{-i}
donde los coeficientes \alpha_{i} se calculan por la fórmula
(12)\alpha_{i} =\left(\frac{29}{32}\right)^{i} \hat{\alpha}_{i} = (0\text{.}90625)^{i}\hat{\alpha}_{i}
Esta expansión de ancho de banda hace el adaptador de ganancia (bloque 20 de la figura 2/G.728) más resistente a los errores de canal. Estos \alpha_{i} se utilizan entonces como coeficientes del predictor lineal de ganancia logarítmica (bloque 46 de la figura 6/G.728).
Este predictor 46 es actualizado una vez cada cuatro vectores de voz, y las actualizaciones se producen en el segundo vector de voz de cada ciclo de adaptación de cuatro vectores. El predictor intenta predecir \delta(n) basándose en una combinación lineal de \delta(n - 1), \delta(n - 2), ..., \delta(n - 10). La versión predicha de \delta(n) se designa por \hat{\delta} (n) y viene dada por:
(13)\hat{\delta} (n) = - \sum\limits^{10}_{i=1} \alpha_{i} \delta (n-i)
Una vez que el predictor lineal de ganancia logarítmica 46 ha obtenido \hat{\delta}(n) (n), añadimos nuevamente el valor del desplazamiento de ganancia logarítmica de 32 dB almacenado en 41. El limitador de ganancia logarítmica 47 verifica entonces el valor de la ganancia logarítmica y lo recorta si es demasiado grande o demasiado pequeño. Los límites inferior y superior se hacen iguales a 0 dB y 60 dB, respectivamente. La salida del limitador de ganancia se aplica entonces al calculador logarítmico inverso 48, que invierte la operación del calculador logarítmico 40 y convierte el valor en dB de la ganancia al dominio lineal. El limitador de ganancia asegura que la ganancia en el dominio lineal esté comprendida entre 1 y 1000.
3.9 Módulo de búsqueda de código cifrado
Los bloques 12 a 18 de la figura 2/G.728 constituyen el módulo de búsqueda de tabla de códigos 24. Este módulo realiza una búsqueda entre los 1024 vectores de código candidatos de la tabla de códigos VQ de excitación 19 e identifica el índice del mejor vector de código, que da el correspondiente vector de señal de voz cuantizada más próximo al vector de señal de voz de entrada.
Para reducir la complejidad de la búsqueda de tabla de códigos, la tabla de 1024 códigos de diez bits se descompone en dos tablas más pequeñas: una "tabla de códigos de forma" de siete bits que contiene 128 vectores de código independientes, y una "tabla de códigos de ganancia" de tres bits que contiene ocho valores escalares simétricos con respecto a cero (es decir, un bit para el signo y dos bits para la magnitud). El vector de código de salida final es el producto del mejor vector de código de forma (de la tabla de códigos de forma de siete bits) y del mejor nivel de ganancia (de la tabla de códigos de ganancia de tres bits). La tabla de códigos de forma de siete bits, y la tabla de códigos de ganancia de tres bits figura en el anexo B.
3.9.1 Principio de la búsqueda en la tabla de códigos
En principio, el módulo de búsqueda en la tabla de códigos 24 normaliza cada uno de los 1024 vectores de código candidatos mediante la ganancia de excitación actual \sigma(n) y transmite los 1024 vectores resultantes uno por uno a través de un filtro en cascada que consta del filtro de síntesis F(z) y del filtro de ponderación perceptual W(z). La memoria del filtro se inicializa a cero cada vez que el módulo aplica un nuevo vector de código al filtro en cascada con la función de transferencia H(z) = F(z) W(z).
El filtrado de los vectores de código VQ puede expresarse como la multiplicación matriz-vector. Sea y_{j} el vector de orden j de código en la tabla de códigos de forma de siete bits, y sea g_{i} el nivel de orden i en la tabla de códigos de ganancia de 3 bits. Sea {h(n)} la secuencia de respuesta a los impulsos del filtro en cascada. Entonces, cuando el vector de código especificado por los índices i y j de la tabla de códigos es aplicado al filtro en cascada H(z), la salida del filtro puede expresarse como
(14)\hat{X}_{ij} = H\sigma (n)g_{i}y_{j},
donde
16
El módulo 24 de búsqueda en la tabla de códigos busca la mejor combinación de índices i y j que minimiza la siguiente distorsión de error cuadrático medio (MSE):
(16)D=||x(n)- \hat{x}_{ij}||^{2} = \sigma^{2} (n)|| \hat{x} (n)-g_{i}Hy_{i}||^{2},
donde \hat{x}(n) = x(n) / \sigma(n) es el vector objetivo VQ con normalización de ganancia. Desarrollando los términos se obtiene:
(17)D = \sigma^{2} (n)\left[|| \hat{x} (n) ||^{2} - 2g_{i}\hat{x}^{t} (n) Hy_{i} + g^{2}_{i} || Hy_{j} ||^{2}\right].
Dado que el término ||\hat{x}(n)||^{2} y el valor de \sigma^{2}(n) son fijos durante la búsqueda en la tabla de códigos, minimizar D equivale a minimizar:
(18)\hat{D} = -2g_{i} p^{T} (n) y_{j} + g^{2}{}_{i} E_{j},
donde
(19)p(n) = H^{T} \hat{x} (n),
y
(20)E_{j} = ||Hy_{j}||^{2}.
Obsérvese que E_{j} es en realidad la energía de los vectores de orden j de código de forma filtrados, y no depende de \hat{x}(n) (n), el vector objetivo VQ. Obsérvese también que el vector de código de forma y_{j} es fijo, y la matriz H depende únicamente del filtro de síntesis y del filtro de ponderación, que son fijos durante un periodo de cuatro vectores de señal de voz. En consecuencia, E_{j} también es fijo durante un periodo de cuatro vectores de señal de voz. Basándonos en esta observación, al actualizar los dos filtros, podemos calcular y almacenar los 128 posibles términos de energía E_{j}, j = 0, 1, 2, ..., 127 (correspondientes a los 128 vectores de código de forma) y utilizarlos luego repetidamente para la búsqueda en la tabla de códigos durante los cuatro vectores siguientes de señal de voz. Esto reduce la complejidad de la búsqueda en la tabla de códigos.
Para reducir aún más los cálculos, podemos calcular y almacenar previamente los dos ordenamientos
(21)b_{i} = 2g_{i}
y
(22)c_{i} = g^{2}_{i}
para i = 0, 1, ..., 7. Estos dos ordenamientos son fijos, dado que los g_{i} son fijos. Ahora podemos expresar \hat{D} como:
(23)\hat{D} =-b_{i} P_{j} + c_{i} E_{j},
donde P_{j} = p^{T}(n)y_{j}.
Obsérvese que una vez precalculadas y almacenadas las tablas E_{j}, b_{i} y c_{i}, el término del producto interno P_{j} = p^{T}(n)y_{j}, que depende solamente de j, incluye la mayor parte de los cálculos para determinar \hat{D}. Así, el procedimiento de búsqueda en la tabla de códigos recorre la tabla de códigos de forma e identifica el mejor índice de ganancia i para cada vector de código de forma y_{j}.
Existen varias maneras de hallar el mejor índice de ganancia i para un determinado vector de código de forma y_{j}.
a)
La primera manera, y la más obvia, consiste en evaluar los ocho posibles valores \hat{D} correspondientes a los ocho posibles valores de i, y seleccionar luego el índice i que corresponde al \hat{D} más pequeño. Sin embargo, esto requiere dos multiplicaciones para cada i.
b)
Una segunda manera consiste en calcular primero la ganancia óptima \hat{g} = P_{j} / E_{j}, y cuantizar luego esta ganancia \hat{g} según uno de los ocho niveles de ganancia {g_{0}, ..., g_{7}} de la tabla de códigos de ganancia de tres bits. El mejor índice i es el índice del nivel de ganancia g_{i} más próximo a \hat{g}. No obstante, este método exige una operación de división para cada uno de los 128 vectores de código de forma, y la división suele ser poco eficaz al utilizar procesadores DSP.
c)
Un tercer método, que es una versión ligeramente modificada del segundo, es particularmente eficaz para aplicaciones DSP. La cuantización de \hat{g} puede considerarse como una serie de comparaciones entre \hat{g} y las "fronteras de célula del cuantizador", que son los puntos medios entre niveles de ganancia adyacentes. Sea d_{i} el punto medio entre los niveles de ganancia g_{i} y g_{i+1} que tienen el mismo signo. Entonces, la prueba "\hat{g}< d_{i}?" es equivalente a la prueba "P_{j} < d_{i}E_{j}?". De esta manera, utilizando la última prueba, podemos evitar la operación de división y necesitar únicamente una multiplicación para cada índice i. Este es el método utilizado en la búsqueda en la tabla de códigos. Las fronteras de célula del cuantizador de ganancia d_{i} son fijas y pueden calcularse y almacenarse previamente en una tabla. Para los ocho niveles de ganancia, se utilizan en la práctica únicamente los seis valores de frontera d_{0}, d_{1}, d_{2}, d_{4}, d_{5} y d_{6}.
Una vez identificados los mejores índices i y j, se concatenan para formar la salida del módulo de búsqueda en la tabla de códigos - un solo índice de diez bits que corresponde al "mejor" índice de la tabla de códigos.
3.9.2 Funcionamiento del módulo de búsqueda en la tabla de códigos
Habiendo introducido el principio de la búsqueda en la tabla de códigos, se describe a continuación el funcionamiento del módulo 24 de búsqueda en la tabla de códigos. Véase la figura 2/G.728. Cada vez que se actualizan el filtro de síntesis 9 y el filtro de ponderación perceptual 10, el calculador de vector de respuesta a los impulsos 12 calcula las cinco primeras muestras de la respuesta a los impulsos del filtro en cascada F(z) W(z). Para calcular el vector de respuesta a los impulsos, ponemos primero la memoria del filtro en cascada a cero, y excitamos luego dicho filtro con una secuencia de entrada {1, 0, 0, 0, 0}. Las cinco muestras de salida correspondientes del filtro son h(0), h(1), ..., h(4), que constituyen el vector de respuesta a los impulsos deseado. Después de haber calculado este vector de respuesta a los impulsos, se mantendrá constante y se utilizará en la búsqueda en la tabla de códigos para los cuatro vectores de señal de voz siguientes, hasta que los filtros 9 y 10 sean actualizados nuevamente.
A continuación, el módulo de convolución de vector de código de forma 14 calcula los 128 vectores H y_{j}, j = 0, 1, 2, ..., 127. En otras palabras, convoluciona cada vector de código de forma y_{j}, j = 0, 1, 2, ..., 127 con la secuencia de respuesta a los impulsos h(0), h(1), ..., h(4), donde la convolución es realizada únicamente para las cinco primeras muestras. La energía de los 128 vectores resultantes es entonces calculada y almacenada por el calculador de la tabla de energía 15 de acuerdo con la ecuación (20). La energía de un vector se define como la suma de los cuadrados de las componentes de dicho vector.
Obsérvese que los cálculos de los bloques 12, 14 y 15 se realizan una vez cada cuatro vectores de señal de voz, mientras que los demás bloques del módulo de búsqueda en la tabla de códigos llevan a cabo cálculos para cada vector de señal de voz. Obsérvese asimismo que las actualizaciones de la tabla E_{j} están sincronizadas con las actualizaciones de los coeficientes del filtro de síntesis. Es decir, la nueva tabla E_{j}se utilizará a partir del tercer vector de señal de voz de cada ciclo de adaptación. (Véase la Sección 3.7.)
El módulo de normalización de vector objetivo VQ 16 calcula el vector objetivo VQ con normalización de ganancia \hat{x}(n) = x(n) / \sigma(n). En las aplicaciones DSP, es más eficaz calcular primero 1 / \sigma(n), y multiplicar luego cada componente de x(n) por 1 / \sigma(n).
Acto seguido, el módulo de convolución con inversión del tiempo 13, calcula el vector p(n) = H^{T} \hat{x}(n). Esta operación es equivalente a invertir primero el orden de las componentes de \hat{x} (n), convolucionar luego el vector resultante con el vector de respuesta a los impulsos, e invertir finalmente el orden de las componentes de la salida una vez más (lo que justifica el nombre de "convolución con inversión del tiempo").
Una vez precalculadas y almacenadas las tablas E_{j}, b_{i} y c_{i}, y una vez calculado el vector p(n), el calculador de error 17 y el selector 18 del mejor índice de la tabla de códigos trabajan juntos para ejecutar el algoritmo de búsqueda en la tabla de códigos siguiente, que se caracteriza por su eficiencia.
a)
inicializar \hat{D} min a un número mayor que el máximo valor posible de \hat{D} (o utilizar el mayor número posible del sistema DSP de representación de números);
b)
poner el índice de la tabla de códigos de forma a j = 0;
c)
calcular el producto interno P_{j} = p^{t}(n)y_{j};
d)
si P_{j} = 0, ir a la etapa h) para buscar entre los valores negativos de ganancia; de no ser así, ir a la etapa e) para buscar entre las ganancias positivas;
e)
si P_{j} < d_{0}E_{j}, poner i = 0 e ir a la etapa k); de no ser así, pasar a la etapa f);
f)
si P_{j} < d_{1}E_{j}, poner i = 1 e ir a la etapa k); de no ser así, pasar a la etapa g);
g)
si P_{j} < d_{2}E_{j},poner i = 2 e ir a la etapa k); de no ser así, poner i = 3 e ir a la etapa k);
h)
si P_{j} > d_{4}E_{j}, poner i = 4 e ir a la etapa k); de no ser así, pasar a la etapa i);
i)
si P_{j} > d_{5}E_{j}, poner i = 5 e ir a la etapa k); de no ser así, pasar a la etapa j);
j)
si P_{j} > d_{6}E_{j}, poner i = 6; de no ser así, poner i = 7;
k)
calcular \hat{D} = -b_{i}P_{j} + c_{i}E_{j};
l)
si \hat{D} < \hat{D} min, poner \hat{D} _{min} = \hat{D}, i_{min}= i, y j_{min}= j;
m)
si j < 127, poner j = j + 1 e ir a la etapa 3); de no ser así, pasar a la etapa n);
n)
cuando el algoritmo llega a ese punto, se ha realizado la búsqueda en la totalidad de las 1024 combinaciones posibles de ganancia y forma. Los i_{min} y j_{min} resultantes son los índices de canal deseados para la ganancia y la forma, respectivamente. El mejor índice de la tabla de códigos de salida (diez bits) es la concatenación de estos dos índices, y el mejor vector de código de excitación correspondiente es y(n)= g_{i_{min}} y_{j_{min}}. El índice de la tabla de códigos de diez bits seleccionado es transmitido al descodificador a través del canal de comunicación.
3.10 Descodificador simulado
Si bien hasta este punto el codificador ha identificado y transmitido el mejor índice de la tabla de códigos, deben llevarse a cabo algunas tareas adicionales para preparar la codificación de los siguientes vectores de señal de voz. Primero, se alimenta el mejor índice de la tabla de códigos a la tabla de códigos VQ de excitación a fin de extraer el mejor vector de código correspondiente y(n)= g_{i_{min}} y_{j_{min}}. Este mejor vector de código es entonces cambiado de escala mediante la ganancia de excitación actual \sigma(n) en la etapa de ganancia 21. El vector de excitación con cambio de escala de ganancia resultante es e(n) = \sigma(n) y (n).
Este vector e(n) pasa entonces a través del filtro de síntesis 22 para obtener el vector de señal de voz cuantizada actual s_{q}(n). Obsérvese que los bloques 19 a 23 forman el descodificador simulado 8. Por consiguiente, el vector de señal de voz cuantizada s_{q}(n) es, en la práctica, el vector de señal de voz descodificada simulado cuando no hay errores de canal. En la figura 2/G.728 el adaptador del filtro de síntesis hacia atrás 23 necesita este vector de señal de voz cuantizada s_{q}(n) para actualizar los coeficientes del filtro de síntesis. De modo similar, el adaptador de ganancia vectorial hacia atrás 20 necesita el vector de excitación con cambio de escala de ganancia e(n) para actualizar los coeficientes del predictor lineal de ganancia logarítmica.
Una última tarea antes de proceder a codificar el siguiente vector de señal de voz consiste en actualizar la memoria del filtro de síntesis 9 y del filtro de ponderación perceptual 10. Para hacerlo empezamos por guardar la memoria de los filtros 9 y 10 que fue dejada de lado antes de realizar el cálculo de respuesta a entrada cero descrito en la Sección 3.5. Acto seguido, ponemos la memoria de los filtros 9 y 10 a cero y cerramos el conmutador 5, es decir lo conectamos al nodo 7. Entonces, el vector de excitación con cambio de escala de ganancia e(n) pasa a través de los dos filtros 9 y 10 con memoria cero. Obsérvese que, dado que e(n) tiene una longitud de sólo cinco muestras y los filtros tienen una memoria cero, el número de multiplicaciones-adiciones asciende sólo de cero a cuatro para el periodo de cinco muestras. Esto es un ahorro considerable de cálculo, dado que habría 70 multiplicaciones-adiciones por muestra si la memoria de los filtros fuera distinta de cero. A continuación, añadimos nuevamente la memoria del filtro original, guardada, a la memoria del filtro nuevamente establecida después de filtrar e(n). Esto, en efecto, añade las respuestas de entrada cero a las respuestas de estado cero de los filtros 9 y 10. Esto genera al conjunto deseado de memoria de filtro que se utilizará para calcular la respuesta a entrada cero durante la codificación del siguiente vector de señal de voz.
Obsérvese que después de la actualización de la memoria de los filtros, los cinco elementos superiores de la memoria del filtro de síntesis 9 son exactamente los mismos que las componentes del vector de señal de voz cuantizada deseado s_{q}(n). Por consiguiente, podemos omitir el filtro de síntesis 22 y obtener s_{q}(n) a partir de la memoria actualizada del filtro de síntesis 9. Esto significa un ahorro adicional de 50 multiplicaciones-adiciones por muestra.
El funcionamiento del codificador descrito hasta ahora especifica la manera en que se codifica un solo vector de señal de voz de entrada. La codificación de la totalidad de la forma de onda de señal de voz se obtiene repitiendo la operación anterior para cada vector de señal de voz.
3.11 Sincronización y señalización dentro de banda
En la anterior descripción del codificador se supone que el descodificador conoce las fronteras de los índices de la tabla de códigos de diez bits, y que conoce también cuándo es preciso actualizar el filtro de síntesis y el predictor de ganancia logarítmica (recordemos que son actualizados una vez cada cuatro vectores). En la práctica, esta información de sincronización puede ponerse a disposición del descodificador añadiendo bits adicionales de sincronización en la parte superior del tren binario de 16 kbit/s. Sin embargo, en muchas aplicaciones es necesario insertar bits de sincronización o de señalización dentro de banda como parte del flujo binario de 16 kbit/s. Esto puede hacerse de la manera siguiente. Supongamos que ha de insertarse un bit de sincronización cada N vectores de señal de voz; entonces, para cada vector de orden N de señal de voz de entrada, podemos hacer la búsqueda únicamente en la mitad de la tabla de códigos de forma y producir un índice de tabla de códigos de forma de seis bits. De esta manera, quitamos un bit de cada índice de orden N de la tabla de códigos transmitido e insertamos en su lugar un bit de sincronización o de señalización.
Es importante observar que no podemos quitar arbitrariamente un bit de un índice de la tabla de códigos de forma de siete bits ya seleccionado: el codificador tiene que saber a cuáles vectores de señal de voz se les quitará un bit y así efectuar la búsqueda únicamente en la mitad de la tabla de códigos cifrados para dichos vectores de señal de voz. De no ser así, el descodificador no tendrá los mismos vectores de código de excitación descodificados para esos vectores de señal de voz.
Dado que el algoritmo de codificación tiene un ciclo de adaptación básico de cuatro vectores, es razonable que N sea un múltiplo de 4 para que el descodificador pueda determinar fácilmente las fronteras de los ciclos de adaptación del codificador. Para un valor razonable de N (por ejemplo, 16, que corresponde a un periodo de "robo" de bits de 10 ms), la degradación resultante en la calidad de la señal de voz es despreciable. En particular, hemos encontrado que un valor de N = 16 produce poca distorsión adicional. La tasa del "robo" de bits es en este caso de sólo 100 bit/s.
Si se aplica el procedimiento anterior, recomendamos que cuando el bit deseado sea un cero, la búsqueda se realice únicamente en la primera mitad de la tabla de códigos de forma, es decir, en los vectores cuyos índices estén entre 0 y 63. Cuando el bit deseado sea un uno, la búsqueda se realizará en la segunda mitad de la tabla de códigos, y el índice resultante estará comprendido entre 64 y 127. El significado de esta elección es que el bit deseado será el bit que figure en el extremo izquierdo de la palabra de código, dado que los 7 bits del vector de código de forma preceden a los tres bits correspondientes al signo y a la tabla de códigos de ganancia. Recomendamos además que el bit de sincronización se quite del último vector en un ciclo de cuatro vectores. Una vez detectado, la siguiente palabra de código recibida puede empezar el nuevo ciclo de vectores de código.
Si bien afirmamos que la sincronización causa muy poca distorsión, observamos que no se han realizado pruebas oficiales en soportes físicos que utilicen esta estrategia de sincronización. Por consiguiente, la cantidad de degradación no ha sido medida.
No obstante, recomendamos específicamente no utilizar el bit de sincronización para la sincronización en sistemas en que el codificador se activa y desactiva repetidamente. Por ejemplo, consideremos un sistema que utilice un detector de actividad de señal de voz para desactivar el codificador en ausencia de señales de voz. Cada vez que sea activado el codificador, el descodificador tendrá que localizar la secuencia de sincronización. A 100 bit/s, esto tomaría probablemente varios centenares de milisegundos. Además, debe darse tiempo para la alineación del estado del descodificador con el del codificador. El resultado combinado sería un fenómeno conocido como recorte a la entrada, en el que se perdería el comienzo de la señal de voz. Si el codificador y el descodificador arrancan en el mismo instante en que comienza la señal de voz, no se perderá ninguna señal. Esto es posible únicamente en sistemas que utilizan sincronización externa y señalización externa para los instantes de arranque.
4 Principios de funcionamiento del descodificador LD-CELP
La figura 3/G.728 es un diagrama de bloques del descodificador LD-CELP. En las secciones siguientes se da una descripción funcional de cada bloque.
4.1 Tabla de códigos cifrados VQ de excitación
Este bloque contiene una tabla de códigos VQ (que incluye las tablas de códigos de forma y de ganancia) idéntica a la tabla de códigos 19 del codificador LD-CELP. Emplea el mejor índice recibido de la tabla de códigos a fin de extraer el mejor vector de código y(n) seleccionado en el codificador LD-CELP.
4.2 Unidad de cambio de escala de ganancia
Este bloque calcula el vector de excitación cambiado de escala, e(n), multiplicando cada componente de y(n) por la ganancia \sigma(n).
4.3 Filtro de síntesis
Este filtro tiene la misma función de transferencia que el filtro de síntesis del codificador LD-CELP (suponiendo una transmisión sin errores). Filtra el vector de excitación cambiado de escala e(n) para producir el vector de señal de voz descodificado s_{d}(n). Obsérvese que, a fin de evitar cualquier acumulación posible de errores de redondeo durante la descodificación, a veces es deseable duplicar exactamente los procedimientos utilizados en el codificador para obtener s_{q}(n). Si éste es el caso, y si el codificador obtiene s_{q}(n) a partir de la memoria actualizada del filtro de síntesis 9, el descodificador debe calcular también s_{d}(n) como la suma de la respuesta a la entrada cero y la respuesta al estado cero del filtro de síntesis 32, como se hace en el codificador.
4.4 Adaptador de ganancia vectorial hacia atrás
La función de este bloque se describe en la Sección 3.8.
4.5 Adaptador del filtro de síntesis hacia atrás
La función de este bloque se describe en la Sección 3.7.
4.6 Filtro posterior
Este bloque filtra la señal de voz descodificada para mejorar la calidad perceptual, y se amplía en la figura 7/G.728. Véase la figura 7/G.728. El filtro posterior consta básicamente de tres partes principales: (1) un filtro posterior de largo plazo 71, (2) un filtro posterior de corto plazo 72 y (3) una unidad de cambio de escala de ganancia de salida 77. La función de los otros cuatro bloques de la figura 7/G.728 consiste en calcular el factor de escala apropiado que se utiliza en la unidad 77 de cambio de escala de ganancia de salida.
El filtro posterior de largo plazo 71, denominado a veces filtro posterior de tono, es un filtro de peine cuyos picos espectrales están situados en múltiplos de la frecuencia fundamental (o frecuencia de tono) de la señal de voz que debe filtrarse posteriormente. El inverso de la frecuencia fundamental se denomina periodo de tono. El periodo de tono puede extraerse de la señal de voz descodificada utilizando un detector de tono (o extractor de tono). Sea p el periodo de tono fundamental (en las muestras) obtenido por un detector de tono; entonces, la función de transferencia del filtro posterior de largo plazo puede expresarse como:
(24)H_{l} (z) = g_{l} (1 + b \ z^{-} p)
donde los coeficientes g_{l}, b y el periodo de tono p se actualizan una vez cada cuatro vectores de señal de voz (un ciclo de adaptación) y las actualizaciones reales se producen en el tercer vector de señal de voz de cada ciclo de adaptación. Por comodidad, en adelante denominaremos tramas a los ciclos de adaptación. El cálculo de g_{l}, b y p se describirá más adelante, en la Sección 4.7.
El filtro posterior de corto plazo 72 consta de un filtro de polos y ceros de décimo orden en cascada con un filtro de primer orden todos ceros. El filtro de polos y ceros de décimo orden atenúa los componentes de frecuencia comprendidos entre los picos formantes, mientras que el papel del filtro de primer orden de todos ceros consiste en tratar de compensar la inclinación espectral en la respuesta de frecuencia del filtro de décimo orden de polos y ceros.
Sean \tilde{a}_{i}, i = 1, 2, ..., 10 los coeficientes del predictor LPC de décimo orden obtenido por análisis LPC hacia atrás de la señal de voz descodificada, y sea k_{1} el primer coeficiente de reflexión obtenido mediante el mismo análisis LPC. Entonces, tanto los \tilde{a}_{i}, como k_{1} pueden obtenerse como derivados del análisis LPC hacia atrás de quincuagésimo orden (bloque 50 de la figura 5/G.728). Todo lo que tenemos que hacer es parar la recursión de Levinson-Durbin de quincuagésimo orden en el décimo orden, copiar k_{1} y \tilde{a}_{1}, \tilde{a}_{2}, ..., \tilde{a}_{10}, y reanudar entonces la recursión de Levinson-Durbin desde el orden 11 hasta el orden 50. La función de transferencia del filtro posterior a corto plazo es:
(25)H_{s}(z) = \frac{1 - \sum\limits^{10}_{i=1} \overline{b}_{i}z^{-i}}{1 - \sum\limits^{10}_{i=1} \overline{a}_{i}z^{-i}} [1+ \mu z^{-1}]
donde
(26)\overline{b}_{i} = \overline{a}_{i} (0,65)^{i},
\hskip0.5cm
i= 1,2...,10,
(27)\overline{a}_{i} = \overline{a}_{i} (0,75)^{i},
\hskip0.5cm
i= 1,2...,10,
y
(28)\mu = (0,15)k_{1}
Los coeficientes \upbar{a}_{i}'s, \upbar{b}_{i} 's y \mu se actualizan también una vez por trama, pero las actualizaciones tienen lugar en el primer vector de cada trama (es decir, tan pronto como se dispone de los \tilde{a}_{i}'s).
Por lo general, después de que la señal de voz descodificada pasa a través del filtro posterior de largo plazo y del filtro posterior de corto plazo, la señal de voz filtrada no tendrá el mismo nivel de potencia que la señal de voz descodificada (no filtrada). Para evitar grandes excursiones ocasionales de ganancia, es necesario controlar automáticamente la ganancia para hacer que la señal de voz filtrada posteriormente tenga aproximadamente la misma potencia que la señal de voz no filtrada. Esto es realizado por los bloques 73 a 77.
El calculador de la suma de los valores absolutos (bloque 73) opera vector por vector. Toma el vector de señal de voz descodificada actual s_{d}(n) y calcula la suma de los valores absolutos de sus cinco componentes vectoriales. De manera similar, el calculador de la suma de los valores absolutos 74 realiza el mismo tipo de cálculo, pero sobre el vector de salida actual s_{f}(n) del filtro posterior de corto plazo. El calculador del factor de escala 75 divide entonces el valor de salida del bloque 73 por el valor de salida del bloque 74 a fin de obtener un factor de escala para el vector s_{f}(n) actual. Este factor de escala es entonces filtrado por un filtro de pasa-bajos de primer orden 76 para obtener un factor de escala por separado para cada uno de las cinco componentes de s_{f}(n). El filtro de pasa-bajos de primer orden 76 tiene la función de transferencia 0,01/(1-0,99z^{-1}). El factor de escala filtrado en pasa-bajos es utilizado por la unidad de cambio de escala de la ganancia de salida 77 para llevar a cabo el cambio de escala muestra a muestra de la salida del filtro posterior de corto plazo. Obsérvese que, dado que el calculador del factor de escala 75 genera únicamente un factor de escala por vector, tendría un efecto de escalera en la operación de cambio de escala muestra a muestra del bloque 77 si no estuviera presente el filtro de pasa-bajos 76. Efectivamente, el filtro de pasa-bajos 76 elimina dicho efecto de escalera.
4.6.1 Funcionamiento no vocal
Los resultados de las pruebas objetivas del CCITT indican que, para algunas señales no vocales, la calidad de funcionamiento del codificador aumenta cuando se desactiva el filtro posterior adaptativo. Como la entrada al filtro posterior adaptativo es la salida del filtro de síntesis, esta señal está siempre disponible. En una aplicación real, la señal no filtrada será la salida con el conmutador puesto en posición de desactivación del filtro posterior.
4.7 Adaptador del filtro posterior
Este bloque calcula y actualiza los coeficientes del filtro posterior una vez por trama. Este adaptador del filtro posterior se presenta más detalladamente en la figura 8/G.728.
Se hará referencia a la figura 8/G.728. El filtro inverso LPC de décimo orden 81 y el módulo de extracción del periodo de tono 82 trabajan juntos para extraer el periodo de tono de la señal de voz descodificada. De hecho, puede utilizarse cualquier extractor de tono que tenga una calidad razonable (y que no introduzca retardo adicional). Lo que describimos aquí es sólo una manera posible de realizar un extractor de tono.
El filtro inverso LPC de décimo orden 81 tiene la función de transferencia:
(29)\overline{A} (z) = 1 - \sum\limits^{10}_{i=1} \overline{a}_{i} z^{-i}
donde los coeficientes \tilde{a}_{i} proceden del módulo de recursión de Levinson-Durbin (bloque 50 de la figura 5/G.728) y son actualizados en el primer vector de cada trama. Este filtro inverso LPC toma como entrada la señal de voz descodificada y genera como salida la secuencia residual de predicción LPC {d(k)}. Empleamos un tamaño de intervalo de análisis de tono de 100 muestras y una gama de periodo de tono de 20 a 140 muestras. El módulo de extracción del periodo de tono 82 mantiene una larga memoria intermedia para conservar las últimas 240 muestras del residuo de predicción LPC. Para comodidad de la indización, las 240 muestras residuales LPC almacenadas en la memoria intermedia se indizan: d(-139), d(-138), ..., d(100).
El módulo de extracción del periodo de tono 82 extrae el periodo de tono una vez por trama, en el tercer vector de cada trama. Por consiguiente, los vectores de salida del filtro inverso LPC deben almacenarse en la memoria intermedia de residuos LPC en un orden especial: el vector residual LPC correspondiente al cuarto vector de la última trama es almacenado como d(81), d(82, ..., d(85), el residuo LPC del primer vector de la trama actual es almacenado como d(86), d(87), ..., d(90), el residuo LPC del segundo vector de la trama actual es almacenado como d(91), d(92), ..., d(95), y el residuo LPC del tercer vector es almacenado como d(96), d(97), ..., d(100). Las muestras d(-139), d(-138), ..., d(80) son simplemente las muestras residuales LPC anteriores dispuestas en el orden temporal correcto.
Una vez lista la memoria intermedia residual LPC, el módulo de extracción del periodo de tono 82 trabaja de la manera siguiente. Primero, las últimas 20 muestras de la memoria intermedia de residuos LPC [d(81) a d(100)] es filtrada en pasa-bajos a un kHz por un filtro elíptico de tercer orden (en el Anexo D se dan los coeficientes) y luego diezmada 4:1 (es decir, se reduce el número de muestras en un factor 4). Esto produce cinco muestras residuales LPC diezmadas, y filtradas en paso bajo designadas \upbar{d}(21),\upbar{d}(22),...,\upbar{d}(25), que son almacenadas como las últimas cinco muestras en una memoria intermedia residual LPC diezmada. Además de estas cinco muestras, las otras 55 muestras \upbar{d}(-34),\upbar{d}(-33),...,\upbar{d}(20) de la memoria residual LPC diezmada se obtienen desplazando las tramas anteriores de las muestras residuales LPC diezmadas. La correlación de orden i de las muestras residuales LPC diezmadas se calcula por la fórmula
(30)p(i)= \sum\limits^{25}_{n=1} \overline{d} (n) \overline{d} (n-i)
para retardos temporales i = 5, 6, 7, ..., 35 (que corresponden a periodos de tono de 20 a 140 muestras). El retardo temporal \tau que da el mayor de los 31 valores de correlación calculados es entonces identificado. Dado que este retardo temporal \tau es el retardo en el dominio residual diezmado 4:1, el retardo temporal correspondiente que da la correlación máxima en el dominio residual no diezmado original debe estar comprendido entre 4\tau-3 y 4\tau+3. Para obtener la resolución temporal original, empleamos a continuación la memoria intermedia residual LPC no diezmada para calcular la correlación del residuo LPC no diezmado:
(31)C(i) = \sum\limits^{100}_{k=1} d(k)d(k-i)
para siete retardos i=4\tau-3, 4\tau-2, ..., 4\tau+3. Se determina el retardo p_{0} que da la mayor correlación, entre los siete retardos temporales.
Es posible que el retardo temporal p_{0} hallado de esta manera resulte ser un múltiplo del verdadero periodo de tono fundamental. Lo que necesitamos en el filtro posterior de largo plazo es el verdadero periodo de tono fundamental, y no un múltiplo del mismo. Por consiguiente, necesitamos continuar el tratamiento, a fin de hallar el periodo de tono fundamental. Nos valemos de que se hace una estimación del periodo de tono bastante frecuentemente - una vez cada 20 muestras de señal de voz. Como el periodo de tono varía típicamente entre 20 y 140 muestras, la frecuente estimación que hacemos del tono significa que, al comienzo de cada emisión de voz, obtendremos primero el periodo de tono fundamental antes de que puedan aparecer los múltiplos del periodo de tono en el proceso antes descrito de toma de picos para la correlación. A partir de aquí tendremos la oportunidad de enganchar el periodo de tono fundamental comprobando que no haya ningún pico de correlación en la cercanía del periodo de tono de la trama anterior.
Sea \hat{p} el periodo de tono de la trama anterior. Si el retardo temporal p_{0} obtenido antes no está en la cercanía de \hat{p}, evaluamos también la ecuación (31) para i=\hat{p}-6, \hat{p}-5 ..., \hat{p}+5, \hat{p}+6. Se determina, entre estos 13 posibles retardos temporales, el retardo p_{1} que da la mayor correlación. Después hacemos una prueba para ver si este nuevo retardo p_{1} debe ser empleado como periodo de tono de salida de la trama actual. Primero, calculamos:
(32)\beta_{0} = \frac{\sum\limits^{100}_{k=1} d(k)d(k-p_{0})}{\sum\limits^{100}_{k=1} d(k-p_{0})d(k-p_{0})},
que es el peso de la derivación óptima de un predictor de tono de una sola derivación con un retardo de p_{0} muestras. El valor de \beta_{0} es entonces fijado entre 0 y 1, después calculamos también:
(33)\beta_{1} = \frac{\sum\limits^{100}_{k=1} d(k)d(k-p_{1})}{\sum\limits^{100}_{k=1} d(k-p_{1})d(k-p_{1})},
que es el peso de la derivación óptima de un predictor de tono de una sola derivación con un retardo de p_{1} muestras. También el valor de \beta_{1} es entonces fijado entre 0 y 1. Entonces, el periodo de tono de salida p del bloque 82 viene dado por
106
Después de que el módulo de extracción del periodo de tono 82 extrae el periodo de tono p, el calculador de derivación de predictor de tono 83 calcula el peso de la derivación óptima de un predictor de tono de una sola derivación para la señal de voz descodificada. El calculador de la derivación del predictor de tono 83 y el filtro posterior de largo plazo 71 comparten una larga memoria intermedia que contiene las muestras de señales de voz descodificadas s_{d}(-239), s_{d}(-238), s_{d}(-237), ..., s_{d}(4), s_{d}(5) donde s_{d}(1) a s_{d}(5) corresponden al vector actual de señal de voz descodificada. El filtro posterior de largo plazo 71 utiliza esta memoria como unidad de retardo del filtro. Por otra parte, el calculador de la derivación del predictor de tono 83 utiliza esta memoria para calcular:
(35)\beta = \frac{\sum\limits^{0}_{k=-99} s_{d} (k)s_{d} (k-p)}{\sum\limits^{0}_{k=-99} s_{d} (k-p)s_{d} (k-p)},
El calculador de los coeficientes del filtro posterior de largo plazo 84 toma entonces el periodo de tono p y la derivación del predictor de tono \beta y calcula los coeficientes del filtro posterior de largo plazo b y g_{l} como sigue:
107
Por lo general, mientras más cerca esté \beta de la unidad, más periódica será la forma de onda de la señal de voz. Como puede verse en las ecuaciones (36) y (37), si \beta < 0,6, lo que corresponde aproximadamente a las regiones de señales no vocales o a las regiones de transición, b=0 y g_{l}=1, y la función de transferencia del filtro posterior de largo plazo es H_{l}(z)=1, lo que significa que la operación de filtrado del filtro posterior de largo plazo está toltamente desactivada. Por otra parte, si 0,6 \leq \beta \leq 1, el filtro posterior de largo plazo está activado, y el grado de filtrado de peine viene determinado por \beta. Cuando más periódica sea la forma de onda de la señal de voz, más filtrado de peine habrá. Finalmente, si \beta > 1, b está limitado a 0,15 a fin de evitar que haya demasiado filtrado de peine. El coeficiente g_{l} es un factor de escala del filtro posterior de largo plazo, destinado a garantizar que las regiones con señales de voz de las formas de onda de señal de voz no sean amplificadas con relación a las regiones donde no haya señales de voz o a las regiones de transición. (Si g_{l} se mantuviera constante, con un valor unitario, las regiones con señales de voz serían amplificadas aproximadamente en un factor 1+b después del filtrado posterior de largo plazo. Esto haría que algunas consonantes, que corresponden a las regiones sin señal de voz o de transición, sonaran sin claridad o demasiado suavemente).
El calculador de los coeficientes del filtro posterior de corto plazo 85 calcula los coeficientes del filtro posterior de corto plazo \upbar{a}_{i} 's \upbar{b}_{i} 's, y \mu en el primer vector de cada trama de acuerdo con las ecuaciones (26), (27) y (28).
4.8 Conversión al formato PCM de salida
Este bloque convierte los cinco componentes del vector de señal de voz descodificada en cinco muestras correspondientes PCM de ley A o \mu, y les da salida secuencialmente a intervalos de 125 \mus. Obsérvese que si el formato PCM lineal interno ha sido normalizado como se describe en la Sección 3.1.1, la normalización inversa debe realizarse antes de la conversión a la PCM de ley A o \mu.
5. Detalles de cálculo
Esta sección proporciona los detalles de cálculo para cada uno de los elementos del codificador y del descodificador LD-CELP. En las Secciones 5.1 y 5.2 se dan los nombres de los parámetros del codificador y de las variables de tratamiento interno a que se hará referencia en las secciones ulteriores. La especificación detallada de cada bloque de las figuras 2/G.728 a 6/G.728 se da entre la Sección 5.3 y el final de la Sección 5. Para codificar y descodificar un vector de señal de voz de entrada, los distintos bloques del codificador y del descodificador se ejecutan en un orden que corresponde aproximadamente a la secuencia comprendida entre la Sección 5.3 y el final de la Sección 5.
5.1 Descripción de los parámetros básicos del codificador
En la Tabla 1/G.728 se definen los nombres de los parámetros básicos del codificador. En la tabla 1/G.728, en la primera columna figuran los nombres de los parámetros del codificador que se utilizarán en la descripción detallada ulterior del algoritmo LD-CELP. Si un parámetro ha sido mencionado en las Secciones 3 ó 4, pero ha sido representado mediante un símbolo diferente, dicho símbolo equivalente se presentará en la segunda columna para facilitar la referencia. Cada parámetro del codificador tiene un valor fijo que se determina en la etapa de diseño del codificador. En la tercera columna figuran estos valores fijos de los parámetros, y en la cuarta columna se da una breve descripción de los parámetros del codificador.
(Tabla pasa a página siguiente)
17
5.2 Descripción de las variables internas
Las variables de tratamiento interno del LD-CELP se enumeran en la Tabla 2/G.728, cuya disposición es similar a la de la Tabla 1/G.728. En la segunda columna figura la gama de los índices de cada ordenamiento. La cuarta columna da los valores iniciales recomendados de las variables. Los valores iniciales de algunos ordenamientos figuran en los anexos A, B o C. Se recomienda (pese a que no es necesario) que las variables internas se pongan a sus valores iniciales cuando el codificador o el descodificador apenas empiezan a funcionar, o cuando se requiere una reinicialización de los estados del codificador (tal como en las aplicaciones los equipos digitales de multiplicación de circuitos (DCME). Estos valores iniciales garantizan que no habrá fallas justo después del inicio o del reinicio.
Obsérvese que algunos ordenamientos de variables pueden compartir los mismos emplazamientos físicos de memoria a fin de ahorrar espacio en memoria, pese a que, para mayor claridad, se les asignan nombres diferentes en los cuadros.
Como se menciona en las secciones anteriores, la secuencia de procesamiento tiene un ciclo de adaptación básico de cuatro vectores de señal de voz. La variable ICOUNT se utiliza como índice vectorial. En otras palabras, ICOUNT = n cuando el codificador o el descodificador están procesando el vector de orden n de señal de voz en un ciclo de adaptación.
(Tabla pasa a página siguiente)
TABLA 2/G. 728 Variables de tratamiento interno del algoritmo LD-CELP
18
19
20
21
Debe observarse que, para facilitar la recursión de Levinson-Durbin, el primer elemento de los ordenamientos A, ATMP, AWP, AWZ y GP es siempre uno y no cambia nunca, y, para i \geq 2, los elementos de orden i son los elementos de orden (i-1) de los símbolos correspondientes de la Sección 3.
En los puntos siguientes, el asterisco (*) representa la multiplicación aritmética.
5.3 Conversión del formato PCM de entrada (bloque 1)
Entrada: SO
Salida: SU
Función: Convertir una muestra de entrada de ley A o \mu de 16 bits lineal en una muestra PCM uniforme.
Dado que el funcionamiento de este bloque está completamente definido en la Recomendación CCITT G.721 o G.711, no lo repetiremos aquí. No obstante, puede necesitarse cierto grado de normalización para conformarse a la especificación que se da en esta descripción de una gama de entrada de -4095 a +4095 (véase la Sección 3.1.1).
5.4 Memoria intermedia de vector (bloque 2)
Entrada: SU
Salida: S
Función: Poner en memoria intermedia cinco muestras consecutivas de señal de voz PCM uniforme para for-
mar un solo vector de señal de voz de cinco dimensiones.
5.5 Adaptador para el filtro de ponderación perceptual (bloque 3, figura 4(a)/G.728)
A continuación se describen detalladamente los tres bloques de la figura 4(a)/G.728 (36, 37 y 38).
MÓDULO DE GENERACIÓN DE INTERVALOS HÍBRIDOS (bloque 36)
Entrada: STMP
Salida: R
Función: Aplicar el intervalo híbrido a la señal de voz de entrada y calcular los coeficientes de autocorrela-
ción.
A continuación se describe el funcionamiento de este módulo utilizando un estilo de tipo Fortran, en el que los límites de los bucles se indican mediante sangrados y los comentarios se indican a la derecha del signo "|". El algoritmo siguiente ha de utilizarse una vez en cada ciclo de adaptación (20 muestras). El ordenamiento STMP contiene cuatro vectores consecutivos de señal de voz de entrada, hasta el segundo vector de señal de voz del ciclo de adaptación actual. Es decir, STMP(1) a STMP(5) es el tercer vector de señal de voz de entrada del ciclo de adaptación anterior (cero inicialmente), STMP(6) a STMP(10) es el cuarto vector de señal de voz de entrada del ciclo de adaptación anterior (cero inicialmente), STMP(11) a STMP(15) es el primer vector de señal de voz de entrada del ciclo de adaptación actual, y STMP (16) a STMP(20) es el segundo vector de señal de voz de entrada del ciclo de adaptación actual.
22
MÓDULO DE RECURSIÓN DE LEVINSON-DURBIN (bloque 37)
Entrada: R (salida del bloque 36)
Salida: AWZTMP
Función: Convertir los coeficientes de autocorrelación en coeficientes de predictor lineal.
Este bloque se ejecuta una vez por ciclo de adaptación de cuatro vectores. Se hace para ICOUNT = 3, después de que ha terminado el tratamiento del bloque 36. Como la recursión de Levinson-Durbin es bien conocida, se da el algoritmo sin explicaciones.
23
LABEL:
Si el programa llega aquí, se ha producido desajuste; entonces, saltar el bloque 38, no actualizar los coeficientes del filtro de ponderación (es decir, utilizar los coeficientes del filtro de ponderación del ciclo de adaptación anterior).
CALCULADOR DE LOS COEFICIENTES DEL FILTRO DE PONDERACIÓN (bloque 38)
Entrada: AWZTMP
Salidas: AWZ, AWP
Función: Calcular los coeficientes del filtro de ponderación perceptual a partir de los coeficientes del predictor
lineal para la señal de voz de entrada.
Este bloque es ejecutado una vez por ciclo de adaptación. Se hace para ICOUNT = 3, después de que ha terminado el procedimiento del bloque 37.
24
5.6 Adaptador del filtro de síntesis hacia atrás (bloque 23, figura 5/G.728)
A continuación se especifican los tres bloques de la figura 5/G.728 (49, 50 y 51).
MÓDULO DE GENERACIÓN DE INTERVALOS HÍBRIDOS (bloque 49)
Entrada: STTMP
Salida: RTMP
Función: Aplicar la ventana híbrida a la señal de voz cuantizada y calcular los coeficientes de autocorrelación.
El funcionamiento de este bloque es esencialmente igual al del bloque 36, salvo en lo concerniente a algunas sustituciones de parámetros y variables, y al instante de muestreo en que se obtienen los coeficientes de autocorrelación. Como se describe en la Sección 3, los coeficientes de autocorrelación se calculan sobre la base de los vectores de señal de voz cuantizada hasta el último vector del ciclo de adaptación de cuatro vectores anterior. En otras palabras, los coeficientes de autocorrelación empleados en el ciclo de adaptación actual se basan en la información contenida en la señal de voz cuantizada hasta la última muestra (vigésima) del ciclo de adaptación anterior. (De hecho, esta es la manera en que definimos el ciclo de adaptación.) El ordenamiento STTMP contiene los cuatro vectores de señal de voz cuantizada del ciclo de adaptación anterior.
25
26
MÓDULO DE RECURSIÓN DE LEVINSON-DURBIN (bloque 50)
Entrada: RTMP
Salida: ATMP
Función: Convertir los coeficientes de autocorrelación en coeficientes del filtro de síntesis.
El funcionamiento de este bloque es exactamente igual al del bloque 37, salvo en lo que atañe a algunas sustituciones de parámetros y variables. Sin embargo, debe tenerse especial cuidado en su realización. Como se describe en la Sección 3, si bien el ordenamiento de autocorrelación RTMP está disponible en el primer vector de cada ciclo de adaptación, las actualizaciones reales de los coeficientes del filtro de síntesis no tendrán lugar hasta el tercer vector. Este retardo intencional de las actualizaciones permite al soporte físico, que funciona en tiempo real, ejecutar este módulo durante los tres primeros vectores de cada ciclo de adaptación. En la ejecución de este módulo, durante los dos primeros vectores de cada ciclo, se sigue utilizando el antiguo conjunto de coeficientes del filtro de síntesis (ordenamiento "A") obtenido en el ciclo anterior. Esta es la razón por la cual es necesario mantener un ordenamiento separado ATMP, a fin de evitar la sobreescritura en el antiguo ordenamiento "A". De manera similar, se utiliza RTMP, RCTMP, ALPHATMP, etc., para no causar interferencia a otros módulos de recursión de Levinson-Durbin (bloques 37 y 44).
27
LABEL:
Si el programa llega a este punto, se ha producido desajuste; entonces, saltar el bloque 51, no actualizar los coeficientes del filtro de síntesis (es decir, utilizar los coeficientes del filtro de síntesis del ciclo de adaptación anterior).
MÓDULO DE AMPLIACIÓN DE ANCHURA DE BANDA (bloque 51)
Entrada: ATMP
Salida: A
Función: Escalar los coeficientes del filtro de síntesis para ampliar el ancho de banda de los picos espectrales.
Este bloque es ejecutado una vez por ciclo de adaptación. Se hace después de que ha terminado el tratamiento del bloque 50 y antes de la ejecución de los bloques 9 y 10, para ICOUNT = 3. Cuando se termina la ejecución de este módulo e ICOUNT = 3, copiamos el ordenamiento ATMP en el ordenamiento "A" a fin de actualizar los coeficientes del filtro.
28
5.7 Adaptador de ganancia vectorial hacia atrás (bloque 20, figura 6/G.728)
A continuación se especifican los bloques de la figura 6/G.728. Por motivos de eficiencia, algunos bloques se describen juntos, como un solo bloque (se muestran separados en la figura 6/G.728 únicamente para explicar el concepto). Todos los bloques de la figura 6/G.728 se ejecutan una vez por vector de señal de voz, excepto los bloques 43, 44 y 45, que se ejecutan sólo cuando ICOUNT = 2.
RETARDO DE UN VECTOR, CALCULADOR RMS Y CALCULADOR LOGARÍTMICO (bloques 67, 39 y 40)
Entrada: ET
Salida: ETRMS
Función: Calcular el nivel en dB del valor cuadrático medio (RMS) del vector de excitación con cambio de es-
cala de ganancia anterior.
Cuando esos tres bloques son ejecutados (lo que se hace antes de la búsqueda de la tabla de códigos VQ), el ordenamiento ET contiene el vector de excitación con cambio de escala de ganancia determinado para el vector de señal de voz anterior. Por consiguiente, la unidad de retardo de un vector (bloque 67) es ejecutada automáticamente. (Aparece en la figura 6/G.728 únicamente para mayor claridad.) Dado que el calculador logarítmico sigue inmediatamente al calculador RMS, la operación de raíz cuadrada en el calculador RMS puede realizarse como una operación de división por dos a la salida del calculador logarítmico. Por consiguiente, la salida del calculador logarítmico (el valor en dB) es 10 * log_{10} (energía de ET/IDIM). Para evitar el desbordamiento del valor logarítmico cuando ET = 0 (después de la iniciación o reiniciación del sistema), el argumento de la operación logarítmica se recorta a uno si es demasiado pequeño. Asimismo, observamos que ETRMS se conserva usualmente en un acumulador, dado que es un valor temporal que es procesado inmediatamente en el bloque 42.
29
SUSTRACTOR DE DESPLAZAMIENTO DE GANANCIA LOGARÍTMICA (bloque 42)
Entradas: ETRMS, GOFF
Salida: GSTATE(1)
Función: Sustraer de la salida del bloque 40 (nivel de ganancia en dB) el valor del desplazamiento de la ga-
nancia logarítmica conservado en el bloque 41.
GSTATE(1) = ETRMS - GOFF
MÓDULO DE GENERACIÓN DE INTERVALOS HÍBRIDOS (bloque 43)
Entrada: GTMP
Salida: R
Función: Aplicar el intervalo híbrido a la secuencia de ganancia logarítmica con sustracción del desplaza-
miento y calcular los coeficientes de autocorrelación.
El funcionamiento de este bloque es muy similar al del bloque 36, salvo en lo concerniente a algunas sustituciones de parámetros y variables, y al instante de muestreo en que se obtienen los coeficientes de autocorrelación.
Una diferencia importante entre el bloque 36 y este bloque es que se introducen únicamente cuatro (en vez de 20) muestras de ganancia en este bloque cada vez que es ejecutado.
Los coeficientes del predictor de ganancia logarítmica son actualizados en el segundo vector de cada ciclo de adaptación. El ordenamiento GTMP contiene cuatro valores de ganancia logarítmica a los que se ha sustraído el desplazamiento, empezando por la ganancia logarítmica del segundo vector del ciclo de adaptación anterior (GTMP(1)), hasta la ganancia logarítmica del primer vector del ciclo de adaptación actual (GTMP(4)), que es el valor más reciente.
30
MÓDULO DE RECURSIÓN DE LEVINSON-DURBIN (bloque 44)
Entrada: R (salida del bloque 43)
Salida: GPTMP
Función: Convertir los coeficientes de autocorrelación en los coeficientes del predictor de ganancia logarítmi-
ca.
El funcionamiento de este bloque es exactamente igual al del bloque 37, excepto en lo concerniente a las sustituciones de los parámetros y las variables indicados a continuación: sustituir LPCW por LPCLG, y AWZ por GP. Este bloque es ejecutado únicamente cuando ICOUNT = 2, después de la ejecución del bloque 43. Obsérvese que, como primera etapa, se comprueba el valor de R(LPCLG + 1). Si es cero, saltamos los bloques 44 y 45 sin actualizar los coeficientes del predictor de ganancia logarítmica. (Es decir, seguimos utilizando los antiguos coeficientes del predictor de ganancia logarítmica determinados en el ciclo de adaptación anterior). Este procedimiento especial tiene por objeto evitar el pequeño mal funcionamiento que podría producirse en ausencia de dicho procedimiento inmediatamente después de la iniciación o reiniciación del sistema. En el caso en que la matriz esté desajustada, saltamos también el bloque 45 y empleamos los antiguos valores.
MÓDULO DE AMPLIACIÓN DE ANCHURA DE BANDA (bloque 45)
Entrada: GPTMP
Salida: GP
Función: Cambiar de escala los coeficientes del predictor de ganancia logarítmica para ampliar los anchos de
banda logarítmicos de los picos espectrales.
Este bloque es ejecutado sólo cuando ICOUNT = 2, después de la ejecución del bloque 44.
31
\newpage
PREDICTOR LINEAL DE GANANCIA LOGARÍTMICA (bloque 46)
Entradas: GP, GSTATE
Salida: GAIN
Función: Predecir el valor actual de la ganancia logarítmica con sustracción del desplazamiento.
32
SUMADOR DE DESPLAZAMIENTO DE GANANCIA LOGARÍTMICA (entre los bloques 46 y 47)
Entradas: GAIN, GOFF
Salida: GAIN
Función: Sumar de nuevo el valor del desplazamiento de la ganancia logarítmica a la salida del predictor de
ganancia logarítmica.
GAIN = GAIN + GOFF
LIMITADOR DE GANANCIA LOGARÍTMICA (bloque 47)
Entrada: GAIN
Salida: GAIN
Función: Limitar la gama de la ganancia logarítmica predicha.
33
CALCULADOR LOGARÍTMICO INVERSO (bloque 48)
Entrada: GAIN
Salida: GAIN
Función: Convertir la ganancia logarítmica predicha (en dB) nuevamente al dominio lineal.
GAIN = 10^{(GAIN/20)}
5.8 Filtro de ponderación perceptual
FILTRO DE PONDERACIÓN PERCEPTUAL (bloque 4)
Entradas: S, AWZ, AWP
Salida: SW
Función: Filtrar el vector de señal de voz de entrada para obtener la ponderación perceptual.
34
35
5.9 Cálculo del vector de respuesta a entrada cero
En la Sección 3.5 se explica cómo se calcula un "vector de respuesta a entrada cero" r(n) en los bloques 9 y 10. A continuación se especifica el funcionamiento de estos dos bloques durante esta fase. Su funcionamiento durante la "fase de actualización de la memoria" se describirá más adelante.
FILTRO DE SÍNTESIS (bloque 9) DURANTE EL CÁLCULO DE LA RESPUESTA A ENTRADA CERO
Entradas: A, STATELPC
Salida: TEMP
Función: Calcular el vector de respuesta a entrada cero del filtro de síntesis.
36
FILTRO DE PONDERACIÓN PERCEPTUAL DURANTE EL CÁLCULO DE LA RESPUESTA A ENTRADA CERO (bloque 10)
Entradas: AWZ, AWP, ZIRWFIR, ZIRWIIR, TEMP calculadas antes
Salida: ZIR
Función: Calcular el vector de respuesta a entrada cero del filtro de ponderación perceptual.
37
5.10 Cálculo del vector objetivo VQ
CÁLCULO DEL VECTOR OBJETIVO VQ (bloque 11)
Entradas: SW, ZIR
Salida: TARGET
Función: Sustraer el vector de respuesta a entrada cero del vector de la señal de voz ponderada.
Nota - ZIR(K) = ZIRWIIR(IDIM + 1 - K) procede del bloque 10 anterior. No requiere una ubicación separada en memoria.
38
5.11 Módulo de búsqueda en la tabla de códigos (bloque 24)
A continuación se especifican los siete bloques que constituyen el módulo de búsqueda en la tabla de códigos (bloque 24). Una vez más, algunos bloques se describen como un solo bloque por comodidad y eficiencia de realización. Los bloques 12, 14 y 15 son ejecutados una vez por cada ciclo de adaptación cuando ICOUNT = 3, mientras que los demás bloques son ejecutados una vez por cada vector de señal de voz.
CALCULADOR DE VECTOR DE RESPUESTA A LOS IMPULSOS (bloque 12)
Entradas: A, AWZ, AWP
Salida: H
Función: Calcular el vector de respuesta a los impulsos del filtro de síntesis y del filtro de ponderación per-
ceptual colocados en cascada.
Este bloque es ejecutado cuando ICOUNT = 3 y después de que se completa la ejecución de los bloques 23 y 3 (es decir, cuando están listos los nuevos conjuntos de coeficientes A, AWZ, AWP).
39
40
MÓDULO DE CONVOLUCIÓN DE LOS VECTORES DE CÓDIGO DE FORMA Y CALCULADOR DE LA TABLA DE ENERGÍA (bloques 14 y 15)
Entradas: H, Y
Salida: Y2
Función: Convolucionar cada vector de código de forma con la respuesta a los impulsos obtenida en el blo-
que 12, luego calcular y almacenar la energía del vector resultante.
Este bloque es ejecutado también cuando ICOUNT = 3 después de completada la ejecución del bloque 12.
41
NORMALIZACIÓN DEL VECTOR OBJETIVO VQ (bloque 16)
Entradas: TARGET, GAIN
Salida: TARGET
Función: Normalizar el vector objetivo VQ utilizando la ganancia de excitación predicha.
42
MÓDULO DE CONVOLUCIÓN CON INVERSIÓN DEL TIEMPO (bloque 13)
Entradas: H, TARGET (salida del bloque 16)
Salida: PN
Función: Realizar la convolución con inversión del tiempo del vector de respuesta a los impulsos y del vector
objetivo VQ normalizado (para obtener el vector p(n)).
Nota - El vector PN puede conservarse en una memoria temporal.
43
CALCULADOR DE ERROR Y SELECTOR DEL MEJOR ÍNDICE DE LA TABLA DE CÓDIGOS (bloques 17 y 18)
Entradas: PN, Y, Y2, GB, G2, GSQ
Salidas: IG, IS, ICHAN
Función: Buscar en la tabla de códigos de ganancia y en la tabla de códigos de forma para determinar el me-
jor índice de la tabla de códigos de ganancia y el mejor índice de la tabla de códigos de forma, y
combinarlos para obtener el mejor índice de la tabla de códigos de diez bits.
Nota - Por lo general, la variable COR utilizada más adelante se conserva en un acumulador, en vez de estar almacenada en memoria. Las variables IDXG y J pueden conservarse en registros temporales, mientras que IG e IS pueden conservarse en memoria.
44
440
441
Transmitir ICHAN a través del canal de comunicaciones.
Para la transmisión en serie del flujo de bits, se transmitirá en primer lugar el bit más significativo de ICHAN. Si ICHAN está representado por la palabra de diez bits b_{9}b_{8}b_{7}b_{6}b_{5}b_{4}b_{3}b_{2}b_{1}b_{0}, el orden de transmisión de los bits será b_{9}, a continuación b_{8}, luego b_{7} y al final b_{0} (b_{9} es el bit más significativo).
5.12 Descodificador simulado (bloque 8)
Los bloques 20 y 23 han sido descritos anteriormente. A continuación se especifican los bloques 19, 21 y 22.
TABLA DE CÓDIGOS VQ DE EXCITACIÓN (bloque 19)
Entradas: IG, IS
Salida: YN
Función: Examinar la tabla para extraer el mejor vector de código de forma y la mejor ganancia, y multipli-
carlos luego para obtener el vector de excitación cuantizada.
45
UNIDAD DE CAMBIO DE ESCALA DE GANANCIA (bloque 21)
Entradas: GAIN, YN
Salida: ET
Función: Multiplicar el vector de excitación cuantizada por la ganancia de excitación.
46
FILTRO DE SÍNTESIS (bloque 22)
Entradas: ET, A
Salida: ST
Función: Filtrar el vector de excitación con cambio de escala de ganancia para obtener el vector de señal de
voz cuantizada.
Como se explica en la Sección 3, este bloque puede omitirse, y el vector de señal de voz cuantizada puede obtenerse como un subproducto del procedimiento de actualización de la memoria que se describe a continuación. No obstante, si se desea ejecutar este bloque de todas maneras, debe utilizarse un conjunto separado de memoria de filtro (y no STATELPC) para este filtro de síntesis "todos polos".
5.13 Actualización de la memoria del filtro de los bloques 9 y 10
La siguiente descripción de los procedimientos de actualización de la memoria del filtro de los bloques 9 y 10 supone que el vector de señal de voz cuantizada ST se obtiene como subproducto de las actualizaciones de la memoria. Para protegerse contra la posible sobrecarga de los niveles de señal, se incorpora un limitador de magnitud, de manera que la memoria del filtro recorta en MAX y MIN, donde MAX y MIN son, respectivamente, los niveles de saturación positiva y negativa de la PCM de ley A o \mu, según la que se utilice.
ACTUALIZACIÓN DE LA MEMORIA DEL FILTRO (bloques 9 y 10)
Entradas: ET, A, AWZ, AWP, STATELPC, ZIRWFIR, ZIRWIIR
Salidas: ST, STATELPC, ZIRWFIR, ZIRWIIR
Función: Actualizar la memoria del filtro de los bloques 9 y 10, y obtener también el vector de señal de voz
cuantizada.
47
470
5.14 Descodificador (figura 3/G.728)
A continuación se describen los bloques del descodificador (figura 3/G.728). Exceptuando el bloque de conversión de formato PCM de salida, todos los bloques son exactamente iguales a los bloques del descodificador simulado (bloque 8) de la figura 2/G.728.
El descodificador emplea únicamente un subconjunto de las variables que figuran en la Tabla 2/G.728. Si han de realizarse un descodificador y un codificador en un solo chip DSP, deben darse nombres diferentes a las variables del descodificador para evitar la sobreescritura en las variables utilizadas en el bloque descodificador simulado del codificador. Por ejemplo, para nombrar las variables del descodificador, podemos añadir un prefijo "d" a los nombres de las variables correspondientes de la Tabla 2/G.728. Si ha de realizarse un descodificador en una unidad autónoma, independiente de un codificador, no es necesario cambiar los nombres de las variables.
En la descripción siguiente se supone un descodificador autónomo. Una vez más, los bloques son ejecutados en el mismo orden en que se describen a continuación.
ADAPTADOR DE FILTRO DE SÍNTESIS HACIA ATRÁS EN EL DESCODIFICADOR (bloque 33)
Entrada: ST
Salida: A
Función: Generar los coeficientes del filtro de síntesis periódicamente a partir de la señal de voz descodifi-
cada previamente.
El funcionamiento de este bloque es exactamente igual al del bloque 23 del codificador.
ADAPTADOR DE GANANCIA VECTORIAL HACIA ATRÁS EN EL DESCODIFICADOR (bloque 30)
Entrada: ET
Salida: GAIN
Función: Generar la ganancia de excitación a partir de los vectores de excitación con cambio de escala de
ganancia anteriores.
El funcionamiento de este bloque es exactamente igual al del bloque 20 del codificador.
TABLA DE CÓDIGOS VQ DE EXCITACIÓN DEL DESCODIFICADOR (bloque 29)
Entrada: ICHAN
Salida: YN
Función: Descodificar el mejor índice de código cifrado recibido (índice de canal) para obtener el vector de
excitación.
Este bloque extrae primero el índice IG de la tabla de códigos de ganancia de tres bits y el índice IS de la tabla de códigos de forma de siete bits del índice de canal de diez bits recibido. Después, el resto de la operación es exactamente igual a la del bloque 19 del codificador.
48
UNIDAD DE CAMBIO DE ESCALA DE GANANCIA DEL DESCODIFICADOR (bloque 31)
Entradas: GAIN, YN
Salida: ET
Función: Multiplicar el vector de excitación por la ganancia de excitación.
El funcionamiento de este bloque es exactamente igual al del bloque 21 del codificador.
FILTRO DE SÍNTESIS DEL DESCODIFICADOR (bloque 32)
Entradas: ET, A, STATELPC
Salida: ST
Función: Filtrar el vector de excitación con escalamiento de ganancia para obtener el vector de señal de voz
descodificada.
Este bloque puede realizarse como un filtro "todos polos". Sin embargo, como se menciona en la Sección 4.3, si el codificador obtiene la señal de voz cuantizada como subproducto de la actualización de la memoria del filtro (para ahorrar cálculos), y si la acumulación potencial de errores de redondeo constituye un problema, este bloque debe calcular la señal de voz descodificada exactamente de la misma manera que lo hace el bloque descodificador simulado del codificador. Es decir, el vector de señal de voz descodificada debe calcularse como la suma del vector de respuesta de entrada cero y del vector de respuesta de estado cero del filtro de síntesis. Esto puede hacerse mediante el procedimiento siguiente:
49
FILTRO INVERSO LPC DE DÉCIMO ORDEN (bloque 81)
Este bloque es ejecutado una vez por vector, y el vector de salida es escrito secuencialmente en las últimas 20 muestras de la memoria intermedia del residuo de predicción LPC (es decir, D(81) a D(100)). Utilizamos un puntero IP para la dirección de las muestras del ordenamiento D(K) en el que ha de escribirse. Este puntero IP es inicializado con el valor NPWSZ - NFRSZ + IDIM antes de que este bloque empiece a procesar el primer vector de señal de voz descodificada del primer ciclo de adaptación (trama), y a partir de este punto IP es actualizado de la manera descrita más adelante. Los coeficientes APF(I) del predictor LPC de décimo orden se obtienen en la mitad de la recursión de Levinson-Durbin por el bloque 50, como se describe en la Sección 4.6. Se supone que antes de que se inicie la ejecución de este bloque, el filtro de síntesis del descodificador (bloque 32 de la figura 3/G.728) ya ha escrito el vector de señal de voz descodificada actual en ST(1) a ST(IDIM).
50
500
51
Entradas: ST, APF
Salida: D
Función: Calcular el residuo de la predicción LPC para el vector de señal de voz descodificada actual.
52
MÓDULO DE EXTRACCIÓN DEL PERIODO DE TONO (bloque 82)
Este bloque es ejecutado en el tercer vector de cada trama, después de la generación del tercer vector de señal de voz descodificada.
Entrada: D
Salida: KP
Función: Extraer el periodo de tono del residuo de la predicción LPC.
53
54
CALCULADOR DE DERIVACIÓN DE PREDICTOR DE TONO (bloque 83)
Este bloque se ejecuta también en el tercer vector de cada trama, inmediatamente después de la ejecución del bloque 82. Comparte la memoria intermedia de señal de voz descodificada (ordenamiento ST(K)) con el filtro posterior de largo plazo 71, que se ocupa del cambio del ordenamiento de manera que ST(1) a ST(IDIM) constituyan el vector actual de señal de voz descodificada, y ST(-KPMAX - NPWSZ + 1) a ST(0) sean los vectores anteriores de señal de voz descodificada.
\newpage
Entradas: ST, KP
Salida: PTAP
Función: Calcular el peso de la derivación óptima del predictor de tono de una sola derivación de la señal de
voz descodificada.
55
CALCULADOR DE LOS COEFICIENTES DEL FILTRO POSTERIOR DE LARGO PLAZO (bloque 84)
Este bloque se ejecuta también en el tercer vector de cada trama, inmediatamente después de la ejecución del bloque 83.
Entrada: PTAP
Salidas: B, GL
Función: Calcular el coeficiente b y el factor de escala g_{l} del filtro posterior de largo plazo.
56
CALCULADOR DE LOS COEFICIENTES DEL FILTRO POSTERIOR DE CORTO PLAZO (bloque 85)
Este bloque también es ejecutado una vez por trama, pero es ejecutado en el primer vector de cada trama.
Entradas: APF, RCTMP(1)
Salidas: AP, AZ, TILTZ
Función: Calcular los coeficientes del filtro posterior de corto plazo.
57
FILTRO POSTERIOR DE LARGO PLAZO (bloque 71)
Este bloque se ejecuta una vez por vector.
Entradas: ST, B, GL, KP
Salida: TEMP
Función: Realizar la operación de filtrado del filtro posterior de largo plazo.
58
FILTRO POSTERIOR DE CORTO PLAZO (bloque 72)
Este bloque es ejecutado una vez por vector, inmediatamente después de la ejecución del bloque 71.
Entradas: AP, AZ, TILTZ, STPFFIR, STPFIIR, TEMP (salida del bloque 71)
Salida: TEMP
Función: Realizar la operación de filtrado del filtro posterior de corto plazo.
59
CALCULADOR DE LA SUMA DE LOS VALORES ABSOLUTOS (bloque 73)
Este bloque se ejecuta una vez por vector después de la ejecución del bloque 32.
Entrada: ST
Salida: SUMUNFIL
Función: Calcular la suma de los valores absolutos de las componentes del vector de señal de voz descodifi-
cada.
60
CALCULADOR DE LA SUMA DE LOS VALORES ABSOLUTOS (bloque 74)
Este bloque es ejecutado una vez por vector después de la ejecución del bloque 72.
Entrada: TEMP (salida del bloque 72)
Salida: SUMFIL
Función: Calcular la suma de los valores absolutos de los componentes del vector de salida del filtro poste-
rior de corto plazo.
61
CALCULADOR DEL FACTOR DE ESCALA (bloque 75)
Este bloque es ejecutado una vez por vector después de la ejecución de los bloques 73 y 74.
Entradas: SUMUNFIL, SUMFIL
Salida: SCALE
Función: Calcular el factor de escala global del filtro posterior.
62
FILTRO DE PASA-BAJOS DE PRIMER ORDEN (bloque 76) Y UNIDAD DE CAMBIO DE ESCALA DE LA GANANCIA DE SALIDA (bloque 77)
Estos dos bloques son ejecutados una vez por vector después de la ejecución de los bloques 72 y 75. Es más conveniente describir los dos bloques al mismo tiempo.
Entradas: SCALE, TEMP (Salida del bloque 72)
Salida: SPF
Función: Realizar el filtrado de pasa-bajos del factor de escala una vez por vector y utilizar el factor de escala
filtrado para cambiar de escala el vector de salida del filtro posterior de corto plazo.
63
CONVERSIÓN AL FORMATO PCM DE SALIDA (bloque 28)
Entrada: SPF
Salida: SD
Función: Convertir los cinco componentes del vector de señal de voz descodificada en las 5 muestras co-
rrespondientes PCM de ley A o \mu y sacarlas secuencialmente con intervalos de 125 \mus.
Las reglas de conversión de la PCM uniforme a la PCM de ley A o \mu se especifican en la Recomendación G.711.
ANEXO A
(a la Recomendación G.728)
FUNCIONES DE INTERVALO HÍBRIDO PARA VARIOS ANÁLISIS LPC EN LD-CELP
En el codificador LD-CELP utilizamos tres análisis LPC separados para actualizar los coeficientes de tres filtros: el filtro de síntesis, el predictor de ganancia logarítmica y el filtro de ponderación perceptual. Cada uno de estos tres análisis LPC tiene su propio intervalo híbrido. Para cada intervalo híbrido, damos la lista de los valores de las muestras de función de intervalo que se utilizan en el procedimiento de cálculo de generación de intervalos híbridos. Estas funciones de intervalo se diseñaron primero con aritmética de coma flotante y luego se cuantizaron de acuerdo con los números que pueden ser representados de manera exacta mediante representaciones de 16 bits con 15 bits de parte fraccionaria. Para cada intervalo, damos primero una tabla que contiene el equivalente en coma flotante de los números de 16 bits y luego una tabla con las correspondientes representaciones enteras de 16 bits.
A.1 Intervalo híbrido para el filtro de síntesis
La tabla siguiente contiene las 105 primeras muestras de la función de intervalo para el filtro de síntesis. Las 35 primeras muestras constituyen la porción no recursiva, y las demás constituyen la porción recursiva. La tabla debe leerse de izquierda a derecha empezando por la primera línea, luego de izquierda a derecha en la segunda línea, y así sucesivamente (de la misma manera que la exploración por barrido de líneas).
64
La tabla siguiente contiene la representación entera de 16 bits correspondiente. Al dividir cada elemento de la tabla por 2^{15}= 32768, se obtiene la tabla anterior.
65
\newpage
A.2 Intervalo híbrido para el predictor de ganancia logarítmica
La tabla siguiente contiene las 34 primeras muestras de la función de intervalo para el predictor de ganancia logarítmica. Las 20 primeras muestras constituyen la parte no recursiva, y las demás constituyen la parte recursiva. La tabla debe leerse de la misma manera que las dos tablas anteriores.
66
La tabla siguiente contiene la representación entera de 16 bits correspondiente. Al dividir los elementos de la tabla por 2^{15} = 32768, se obtiene la tabla anterior.
67
A.3 Ventana híbrida para el filtro de ponderación perceptual
La tabla siguiente contiene las 60 primeras muestras de la función de intervalo para el filtro de ponderación perceptual. Las 30 primeras muestras constituyen la parte no recursiva y las demás constituyen la parte recursiva. La tabla debe leerse de la misma manera que las cuatro tablas anteriores.
68
La tabla siguiente contiene la representación entera de 16 bits correspondiente. Al dividir los elementos de la tabla por 2^{15} = 32768, se obtiene la tabla anterior.
69
ANEXO B
(a la Recomendación G.728)
TABLAS DE CÓDIGOS DE FORMA Y DE GANANCIA DE EXCITACIÓN
En este anexo se da primero la tabla de códigos de forma VQ de excitación de siete bits. Cada línea de la tabla especifica uno de los 128 vectores de código de forma. La primera columna es el índice de canal asociado con cada vector de código de forma (obtenido mediante un algoritmo de asignación de índice de código Gray). Las columnas dos a seis representan las componentes uno a cinco de los 128 vectores de código de forma representados en punto fijo de 16 bits. Para obtener el valor en coma flotante a partir del valor entero, hay que dividir el valor entero por 2048. Esto es equivalente a multiplicar por 2^{-11} o a desplazar la coma binaria 11 bits a la izquierda.
(Tabla pasa a página siguiente)
70
71
72
\newpage
A continuación damos los valores para la tabla de códigos de ganancia. Esta tabla no sólo incluye los valores de GQ, sino también los valores de GB, G2 y GSQ. Tanto GQ como GB pueden representarse exactamente en aritmética de 16 bits utilizando el formato Q13. La representación en coma fija de G2 es la misma que la de GQ, salvo que el formato es ahora Q12. Bastará una representación de GSQ aproximada al entero más cercano en punto fijo de formato Q12.
TABLA Valores de ordenamientos relativos a la tabla de códigos de ganancia
73
ANEXO C
(a la Recomendación G.728)
Valores utilizados para la ampliación del ancho de banda
La tabla siguiente da los valores enteros para los vectores de control de polos, control de ceros y ampliación de ancho de banda mencionados en la Tabla 2. Para obtener el valor en coma flotante, hay que dividir el valor entero por 16384. Los valores de esta tabla representan los valores de coma flotante en el formato Q.14, que es el formato utilizado más comúnmente para representar números inferiores a dos en aritmética de coma fija de 16 bits.
74
75
ANEXO D
(a la Recomendación G.728)
Coeficientes del filtro elíptico de pasa-bajos de 1 kHz utilizado en el módulo de extracción del periodo de tono (blo- que 82)
El filtro de pasa-bajos de 1 kHz empleado en el módulo de extracción y codificación del retardo del tono (bloque 82) es un filtro de polos y ceros de tercer orden cuya función de transferencia es
76
donde los coeficientes a_{i} y b_{i} vienen dados en la tabla siguiente:
77
ANEXO E
(a la Recomendación G.728)
ORGANIZACIÓN EN EL TIEMPO DE LA SECUENCIA DE CÁLCULOS
Todos los cálculos realizados en el codificador y el descodificador pueden dividirse en dos clases. En la primera se incluyen los cálculos que tienen lugar una vez por vector. En las Secciones 3 a 5.14 se indica de qué cálculos se trata. Generalmente, son los cálculos en que intervienen la cuantización real de la señal de excitación y la síntesis de la señal de salida, o que llevan a ellas. Haciendo referencia específica a los números de los bloques de la figura 2, esta clase incluye los bloques 1, 2, 4, 9, 10, 11, 13, 16, 17, 18, 21 y 22. En la figura 3, esta clase incluye los bloques 28, 29, 31, 32 y 34. En la figura 6, esta clase incluye los bloques 39, 40, 41, 42, 46, 47, 48 y 67. (Obsérvese que la figura 6 se aplica tanto al bloque 20 de la figura 2 como al bloque 30 de la figura 3. Los bloques 43, 44 y 45 de la figura 6 no forman parte de esta clase. Así, los bloques 20 y 30 forman parte de ambas clases.)
En la otra clase se incluyen los cálculos que se hacen sólo una vez cada cuatro vectores. Una vez más, refiriéndose a las figuras 2 a 8, esta clase incluye los bloques 3, 12, 14, 15, 23, 33, 35, 36, 37, 38, 43, 44, 45, 49, 50, 51, 81, 82, 83, 84 y 85. Todos los cálculos de esta segunda clase están asociados con la actualización de uno o más filtros adaptativos o predictores del codificador. En el codificador hay tres de estas estructuras adaptativas, a saber, el filtro de síntesis LPC de quincuagésimo orden, el predictor de ganancia vectorial y el filtro de ponderación perceptual. En el descodificador hay cuatro de estas estructuras, a saber, el filtro de síntesis, el predictor de ganancia y los filtros adaptativos de largo plazo y de corto plazo. En las descripciones de las Secciones 3 a 5.14 se indican los instantes y las señales de entrada de cada una de estas cinco estructuras adaptativas. Si bien es redundante, en este Anexo se dan explícitamente todas estas informaciones de temporización en un solo sitio, para comodidad del lector. En el cuadro se resumen las cinco estructuras adaptativas, sus señales de entrada, sus tiempos de cálculo y el instante en que se utilizan por primera vez los valores actualizados. A efectos de referencia cruzada, la cuarta columna del cuadro incluye los números de bloque empleados en las figuras y en las Secciones 3, 4 y 5.
Con mucho, la mayor cantidad de cálculo concierne a la actualización del filtro de síntesis de quincuagésimo orden. La señal de entrada necesaria es la señal de voz de salida del filtro de síntesis (ST). Tan pronto como se ha descodificado el cuarto vector del ciclo anterior, pueden calcularse los coeficientes de autocorrelación mediante el método de intervalo híbrido (bloque 49). Al terminar lo anterior, puede empezar la recursión de Durbin para obtener los coeficientes de predicción (bloque 50). En la práctica, nos pareció necesario ampliar este cálculo a más de un ciclo de un vector. Empezamos los cálculos de intervalo híbrido antes de que el vector 1 haya sido recibido en su totalidad. Antes de que pueda completarse la recursión de Durbin, debemos interrumpirla para codificar el vector 1. Esta recursión no se completa hasta el vector 2. Finalmente, se aplica la ampliación de ancho de banda (bloque 51) a los coeficientes del predictor. Los resultados de este cálculo no se utilizan hasta que no se haya codificado o descodificado el vector 3, ya que, en el codificador, necesitamos combinar estos valores actualizados con los valores actualizados del filtro de ponderación perceptual y las energías de los vectores de código. Estos valores actualizados no están disponibles antes del vector 3.
La adaptación de ganancia procede de dos maneras. El predictor adaptativo es actualizado una vez cada cuatro vectores. No obstante, el predictor adaptativo produce un nuevo valor de ganancia una vez por vector. En esta Sección describimos la temporización de la actualización del predictor. Para calcular esto, es necesario llevar a cabo primero el método del intervalo híbrido en las ganancias logarítmicas anteriores (bloque 43), luego la recursión de Durbin (bloque 44), y la ampliación de ancho de banda (bloque 45).
78
Todo esto puede completarse durante el vector 2 empleando las ganancias logarítmicas disponibles hasta el vector 1. Si el resultado de la recursión de Durbin indica que no hay ninguna singularidad, el nuevo predictor de ganancia es utilizado inmediatamente en la codificación del vector 2.
La actualización del filtro de ponderación perceptual es calculada durante el vector 3. La primera parte de esta actualización consiste en llevar a cabo el análisis LPC de la señal de voz de entrada hasta el vector 2. Podemos empezar este cálculo inmediatamente después de que el vector 2 ha sido codificado, sin esperar que haya sido recibido totalmente el vector 3. Esto consiste en llevar a cabo el método del intervalo híbrido (bloque 36), la recursión de Durbin (bloque 37) y los cálculos de los coeficientes del filtro de ponderación (bloque 38). Acto seguido, tenemos que combinar el filtro de ponderación perceptual con el filtro de síntesis actualizado para realizar los cálculos del vector de respuesta a los impulsos del bloque 12. Debemos también convolucionar cada vector de código de forma con esta respuesta a los impulsos, a fin de hallar las energías de los vectores de código (bloques 14 y 15). Tan pronto como están completos estos cálculos, podemos utilizar todos los valores actualizados para codificar el vector 3. (Nota: Debido a la gran cantidad de cálculos que intervienen para determinar las energías de los vectores de código, no pudimos completar la actualización del filtro de ponderación perceptual como parte del cálculo durante el tiempo del vector 2, incluso desplazando a otro sitio la actualización del predictor de ganancia. Esta es la razón por la cual fue diferida hasta el vector 3.
El filtro posterior adaptativo de largo plazo es actualizado con base en un algoritmo rápido de extracción de tono que emplea como entrada la señal de voz de salida del filtro de síntesis (ST). Dado que el filtro posterior se utiliza únicamente en el descodificador, el tiempo señalado para realizar este cálculo se basó en las otras cargas de cálculo del descodificador. El descodificador no tiene que actualizar el filtro de ponderación perceptual y las energías de los vectores de código, de suerte que se dispone del intervalo de tiempo del vector 3. La palabra de código del vector 3 es descodificada, y queda disponible la señal de voz de salida del filtro de síntesis, junto con todos los vectores anteriores de salida del filtro de síntesis. Éstos se introducen al adaptador, que produce entonces el nuevo periodo de tono (bloques 81 y 82) y los coeficientes del filtro posterior de largo plazo (bloques 83 y 84). Estos nuevos valores se utilizan inmediatamente para calcular la salida filtrada posteriormente para el vector 3.
El filtro posterior adaptativo de corto plazo es actualizado como subproducto de la actualización del filtro de síntesis. La recursión de Durbin se detiene en el décimo orden, y los coeficientes de predicción son guardados para la actualización del filtro posterior. Como el cálculo de Durbin comienza generalmente durante el vector 1, la actualización del filtro posterior adaptativo de corto plazo es completada a tiempo para el filtrado posterior del vector de salida 1.
79
80
81
82
83
84
85
86
87
\newpage
APÉNDICE I
(a la Recomendación G.728)
Verificación de la realización práctica
Se ha preparado un conjunto de instrumentos para facilitar la comprobación de que las diferentes realizaciones se ajustan al algoritmo definido en esta Recomendación. Estos instrumentos de comprobación están disponibles en un conjunto de disquetes distribuidos por la UIT.
Verificación de la realización práctica
Este Apéndice describe las secuencias de pruebas digitales y el soporte lógico de medición para ser utilizados con el fin de ejecutar la verificación. Estas herramientas de verificación están disponibles de la UIT en un juego de disquetes de verificación.
I.1 Principio de verificación
La especificación del algoritmo LD-CELP se formula de manera no exacta a nivel de bit para permitir la realización simple en diferentes tipos de soporte físico. Esto implica que el procedimiento de verificación no puede suponer que existe una realización de referencia exactamente igual a la aplicación que está probándose. Por consiguiente, se requieren mediciones objetivas para establecer el grado de desviación entre la realización probada y la referencia. Si se halla que esta desviación medida es suficientemente pequeña, se supone que la realización sometida a prueba puede interfuncionar con cualquier otra realización que pase la prueba. Dado que ninguna prueba de duración finita puede probar todos los aspectos de una realización, nunca puede garantizarse de modo absoluto que una realización es correcta. No obstante, el procedimiento de prueba descrito pone en juego todas las partes importantes del algoritmo LD-CELP, y debería constituir una herramienta valiosa para los encargados de realizarlo.
Los procedimientos de verificación descritos en este documento han sido concebidos teniendo en cuenta realizaciones de coma flotante de 32 bits. Si bien podrían aplicarse a cualquier realización LD-CELP, se necesitará probablemente el formato de coma flotante de 32 bits para satisfacer los requisitos de las pruebas. Los procedimientos de verificación que podrían permitir la realización de un algoritmo de coma fija se encuentran en estudio en la actualidad.
I.2 Configuraciones de prueba
En esta Sección se describe cómo deben combinarse las diferentes secuencias de prueba y los programas de medición para llevar a cabo las pruebas de verificación. El procedimiento se basa en pruebas realizadas en las interfaces SU e ICHAN del codificador sometido a prueba, e ICHAN y SPF del descodificador sometido a prueba. Las señales SU y SPF se representan con precisión de coma fija de 16 bits, tal como se describe en la Sección I.4.2. Debe preverse la posibilidad de desactivar el filtro posterior adaptativo en la realización del descodificador sometida a prueba. Todo tratamiento de secuencia de pruebas debe empezar con la realización sometida a prueba en el estado inicial definido en la Recomendación LD-CELP. Se necesitan tres programas de mediciones, CWCOMP, SNR y WSNR, para llevar a cabo las evaluaciones de las secuencias de salida de las pruebas. Estos programas se describen más detalladamente en 1a Sección I.3. En las siguientes Secciones (I.2.1 a I.2.4) figuran las descripciones de las diferentes configuraciones de prueba que han de utilizarse.
I.2.1 Prueba del codificador
El funcionamiento básico del codificador es probado mediante la configuración representada en la Figura I-1/G.728. Se aplica una secuencia de prueba de señales de entrada, IN, al codificador sometido a prueba. Las palabras clave de salida se comparan directamente a las palabras clave de referencia, INCW, utilizando el programa CWCOMP.
88
I.2.2 Prueba del descodificador
El funcionamiento básico del descodificador es probado mediante la configuración representada en la Figura I-2/G.728. Se aplica una secuencia de prueba de palabras clave, CW, al descodificador sometido a prueba con el filtro posterior adaptativo desactivado. La señal de salida es entonces comparada a la señal de salida de referencia, OUTA, con el programa SNR.
89
I.2.3 Prueba del filtro de ponderación perceptual
El filtro de ponderación perceptual del codificador es probado con la configuración ilustrada en la Figura I-3/G.728. Se hace pasar una secuencia de prueba de señales de entrada, IN, a través del codificador sometido a prueba, y la calidad de las palabras clave de salida se mide con el programa WSNR. Este programa necesita también la secuencia de entrada a fin de calcular la medida de distancia correcta.
90
I.2.4 Prueba del filtro posterior
El filtro posterior adaptativo del descodificador es probado con la configuración ilustrada en la Figura I-4/G.728. Se aplica una secuencia de prueba de palabras clave, CW, al descodificador sometido a prueba con el filtro posterior adaptativo activado. La señal de salida es entonces comparada a la señal de salida de referencia, OUTB, con el programa SNR.
91
I.3 Programas de verificación
En esta Sección se describen los programas CWCOMP, SNR y WSNR, mencionados en el punto relativo a la configuración de las pruebas, así como el programa LDCDEC, proporcionado en calidad de herramienta de depuración para los encargados de las aplicaciones.
El soporte lógico de verificación está escrito en Fortran, lo más cerca posible de la norma ANSI Fortran 77. Se utiliza en gran medida la resolución de doble precisión en coma flotante a fin de reducir al mínimo los errores numéricos en los módulos LD-CELP de referencia. Los programas fueron compilados con un compilador Fortran disponible en el mercado, a fin de elaborar versiones ejecutables para los PC basados en 386/87. El fichero READ.ME describe cómo crear programas ejecutables en otros computadores.
I.3.1 CWCOMP
El programa CWCOMP es una herramienta sencilla para comparar el contenido de dos ficheros de palabras de código. Al usuario se le piden dos nombres de ficheros de palabras de código, la salida del codificador de referencia (nombre del fichero de la última columna de la Tabla I-1/G.728) y la salida del codificador de prueba. El programa compara las palabras clave de estos ficheros y escribe el resultado de la comparación en el terminal. El requisito para la configuración de prueba 2 es que no deben existir palabras de código diferentes.
I.3.2 SNR
El programa SNR (relación señal/ruido) realiza una medición de la relación señal/ruido entre dos ficheros de señales. El primero es un fichero de referencia proporcionado por el programa descodificador de referencia, y el segundo es el fichero de salida del descodificador sometido a prueba. Una relación SNR global, a saber GLOB, es calculada como relación señal/ruido de la totalidad del fichero. Una relación SNR parcial, a saber SEG256, es calculada como media de la relación señal/ruido de todos los segmentos de 256 muestras cuya potencia de señal de referencia supera determinado umbral. Se hallan las relaciones SNR de segmento mínimas para segmentos de longitud 256, 128, 64, 32, 16, 8 y 4 con potencia por encima del mismo umbral.
Para ejecutar el programa SNR, el usuario debe introducir los nombres de dos ficheros de entrada. El primero es el fichero de salida del descodificador de referencia descrito en la última columna de la Tabla I-3/G.728. El segundo es el fichero de salida descodificada producido por el descodificador sometido a prueba. Después de procesar los ficheros, el programa envía las diferentes SNR al terminal. Los valores necesarios para las configuraciones de prueba 2 y 4 se dan con respecto a estos números SNR.
I.3.3 WSNR
El algoritmo WSNR se basa en la realización de un descodificador de referencia y una medición de distancia para calcular la distorsión ponderada perceptual media de una secuencia de palabras clave. Se calcula una relación logarítmica señal/distorsión para cada vector de señal de 5 muestras, y las relaciones se promedian teniendo en cuenta todos los vectores de señales cuya energía está por encima de determinado umbral.
Para ejecutar el programa WSNR, el usuario tiene que introducir los nombres de dos ficheros de entrada. El primero es el fichero de señales de entrada del descodificador (primera columna de la Tabla I-1/G.728) y el segundo es el fichero de palabras clave de salida del descodificador. Después de procesar la secuencia, el programa WSNR escribe el valor de salida WSNR en el terminal. Los valores necesarios para la configuración de prueba 3 se dan con respecto a este número WSNR.
3.4 LDCDEC
Además de los tres programas de medición, se incluye también un programa de demostración del descodificador de referencia, a saber, el programa LDCDEC. Este programa se basa en la misma subrutina de descodificador que el WSNR, y podría modificarse para comprobar variables en el descodificador a efectos de depuración. El usuario debe indicar el fichero de palabras clave de entrada, el fichero de señales de salida, y si ha de incluirse el filtro posterior adaptativo o no.
I.4 Secuencias de prueba
A continuación se da una descripción de las secuencias de prueba que deben aplicarse. La descripción incluye los requisitos específicos de cada secuencia.
I.4.1 Convenios
Las secuencias de prueba se numeran secuencialmente, con un prefijo que identifica el tipo de señal:
IN Señal de entrada del descodificador
INCW Palabra de código de salida del codificador en coma flotante
CW Palabra de código de entrada del descodificador
OUTA Señal de salida del descodificador sin filtro posterior
OUTB Señal de salida del descodificador con filtro posterior
Todos los ficheros de secuencias de prueba tienen la extensión *.BIN.
I.4.2 Formatos de ficheros
Los ficheros de señales, de conformidad con los interfaces SU y SPF del LD-CELP (prefijo de fichero IN, OUTA y OUTB) están todos en formato binario de 16 bits con complemento a 2 y deben interpretarse con un punto binario fijo entre el bit núm. 2 y el bit núm. 3, como se muestra en la figura I-5/G.728. Obsérvese que deben usarse en, su totalidad, los 16 bits disponibles para alcanzar el máximo de presión en las mediciones de prueba.
Los ficheros de palabras clave (señal ICHAN del LD-CELP, prefijo de fichero CW o INCW) están almacenados en el mismo formato binario de 16 bits que los ficheros de señales. Los 10 bits menos significativos de cada palabra de 16 bits representan la palabra de código de 10 bits, tal como se indica en la Figura I- 5/G.728. Los otros bits (núm. 12-núm. 15) se ponen a cero.
Tanto los ficheros de señales como los de palabras de código están almacenados en el formato de almacenamiento de palabras en que se coloca primero el byte de menor peso y que es usual en los computadores IBM/DOS y VAX/VMS. Para la utilización en otras máquinas, tales como la mayor parte de las UNIX, puede tener que modificarse este orden mediante una operación de trueque de bytes.
92
I.4.3 Secuencias de prueba y requisitos
Los cuadros de esta Sección describen el conjunto completo de pruebas que deben realizarse para verificar que una aplicación en coma flotante de LD-CELP es conforme a la especificación e interfunciona con otras aplicaciones correctas. El cuadro I-1/G.728 es un resumen de las secuencias de prueba del codificador. Los requisitos correspondientes se expresan en el cuadro I-2/G.728. Los cuadros I-3/G.728 e I-4/G.728 contienen el resumen y los requisitos de las secuencias de prueba del descodificador.
TABLA I-1/G.728 Pruebas del codificador
93
TABLA I-2/G.728 Requisitos de prueba del codificador
94
TABLA I-3/G.728 Pruebas del descodificador
95
TABLA I-4/G.728 Requisitos de prueba del descodificador
96
I.5 Distribución de las herramientas de verificación
Todos los ficheros en la distribución están almacenados en dos disquetes DOS de 3,5 pulgadas, de 1,44Mb. Pueden pedirse copias de los disquetes a la UIT a la siguiente dirección:
\newpage
ITU General Secretariat
Sales Service
Place du Nations
CH-1211 Geneve 20
Suiza
Se incluye un fichero READ.ME en el disquete núm. 1, que describe el contenido de cada fichero y los procedimientos necesarios para compilar y encadenar los programas. Se emplean extensiones para distinguir los diferentes tipos de ficheros. Los ficheros *.FOR son códigos fuente de programas Fortran, los ficheros *.EXE son programas ejecutables con procesadores 386/87, y los ficheros *.BIN son ficheros de secuencias de pruebas binarias. Se indica el contenido de cada disquete en la Tabla I-5/G.728.
TABLA I-5/G.728 Directorio de distribución
97
98

Claims (11)

1. Un método de sintetizar una señal que refleja la voz humana, el método para su utilización mediante un descodificador que experimenta un borrado de bits de entrada, comprendiendo el descodificador un primer generador (100) de señales de excitación que responde a dichos bits de entrada y un filtro de síntesis (32) que responde a una señal de excitación, comprendiendo el método las operaciones de:
almacenar muestras de una primera señal de excitación generada por dicho primer generador (100) de señales de excitación;
responder a una señal indicativa del borrado de bits de entrada, sintetizando una segunda señal de excitación basándose en muestras previamente almacenadas de la primera señal de excitación; y
filtrar dicha segunda señal de excitación para sintetizar dicha señal que refleja la voz humana,
en el que la operación de sintetizar una segunda señal de excitación comprende los pasos de:
determinar si los bits de entrada borrados representan, probablemente, voz hablada; y
sintetizar dicha segunda señal de excitación mediante el uso de un primer proceso en el que se ha determinado que dichos bits de entrada borrados representan, probablemente, voz hablada, y sintetizar dicha segunda señal de excitación mediante el uso de un segundo proceso cuando se ha determinado que dichos bits de entrada borrados no representan, probablemente, voz hablada, siendo dicho primer proceso diferente de dicho segundo proceso,
en el que dicho primer proceso y el segundo proceso comprende, cada uno, las operaciones de identificar un conjunto de muestras de señal de excitación almacenadas; y
formar dicha segunda señal de excitación basándose en dicho conjunto identificado de muestras de señal de excitación.
2. Un método como se ha reivindicado en la reivindicación 1, en el que el primer proceso comprende las operaciones de:
identificar un conjunto de muestras de señales de excitación almacenadas basándose en un período de tono de la voz hablada; y
formar dicha segunda señal de excitación basándose en dicho conjunto identificado de muestras de señales de excitación.
3. Un método como se ha reivindicado en la reivindicación 2, en el que la operación de formar dicha segunda señal de excitación comprende copiar dicho conjunto identificado de muestras de señales de excitación almacenadas para utilizarlas como muestras de dicha segunda señal de excitación.
4. Un método como se ha reivindicado en la reivindicación 2, en el que dicho conjunto identificado de muestras de señales de excitación almacenadas comprende cinco muestras almacenadas consecutivas.
5. Un método como se ha reivindicado en la reivindicación 2, que comprende la operación de almacenar muestras de dicha segunda señal de excitación en dicha memoria.
6. Un método como se ha reivindicado en la reivindicación 1, en el que el segundo proceso comprende las operaciones de:
identificar un conjunto de muestras de señales de excitación almacenadas basándose en un proceso aleatorio; y formar dicha segunda señal de excitación basándose en dicho conjunto identificado de muestras de señales de excitación.
7. Un método como se ha reivindicado en la reivindicación 6, en el que la operación de formar dicha segunda señal de excitación comprende las operaciones de:
calcular una magnitud media de una pluralidad de muestras de señales de excitación en dicha memoria; y
cambiar de escala la magnitud de muestras de dicho conjunto identificado basándose en dicha magnitud media.
8. Un método como se ha reivindicado en la reivindicación 6, en el que la operación de formar dicha segunda señal de excitación comprende copiar dicho conjunto identificado de muestras de señales de excitación para utilizarlas como muestras de dicha segunda señal de excitación.
\newpage
9. Un método como se ha reivindicado en la reivindicación 6, en el que dicho conjunto identificado de muestras de señales de excitación almacenadas comprende cinco muestras almacenadas consecutivas.
10. Un método como se ha reivindicado en la reivindicación 6, que comprende la operación de almacenar muestras de dicha segunda señal de excitación en dicha memoria.
11. Un método como se ha reivindicado en la reivindicación 6, en el que el proceso aleatorio comprende la operación de generar un número aleatorio.
ES95301298T 1994-03-14 1995-02-28 Sintesis de señal de excitacion durante borrado de tramas o perdida de paquetes. Expired - Lifetime ES2207643T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/212,408 US5615298A (en) 1994-03-14 1994-03-14 Excitation signal synthesis during frame erasure or packet loss
US212408 1994-03-14

Publications (1)

Publication Number Publication Date
ES2207643T3 true ES2207643T3 (es) 2004-06-01

Family

ID=22790887

Family Applications (1)

Application Number Title Priority Date Filing Date
ES95301298T Expired - Lifetime ES2207643T3 (es) 1994-03-14 1995-02-28 Sintesis de señal de excitacion durante borrado de tramas o perdida de paquetes.

Country Status (8)

Country Link
US (1) US5615298A (es)
EP (1) EP0673017B1 (es)
JP (1) JP3439869B2 (es)
KR (1) KR950035132A (es)
AU (1) AU1367395A (es)
CA (1) CA2142393C (es)
DE (1) DE69531642T2 (es)
ES (1) ES2207643T3 (es)

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5550543A (en) 1994-10-14 1996-08-27 Lucent Technologies Inc. Frame erasure or packet loss compensation method
EP0712218B1 (en) * 1994-11-10 1999-07-14 Telefonaktiebolaget Lm Ericsson A method and an arrangement for sound reconstruction during erasures
SE504397C2 (sv) * 1995-05-03 1997-01-27 Ericsson Telefon Ab L M Metod för förstärkningskvantisering vid linjärprediktiv talkodning med kodboksexcitering
FR2734389B1 (fr) * 1995-05-17 1997-07-18 Proust Stephane Procede d'adaptation du niveau de masquage du bruit dans un codeur de parole a analyse par synthese utilisant un filtre de ponderation perceptuelle a court terme
DE69633164T2 (de) * 1995-05-22 2005-08-11 Ntt Mobile Communications Network Inc. Tondekoder
US5822724A (en) * 1995-06-14 1998-10-13 Nahumi; Dror Optimized pulse location in codebook searching techniques for speech processing
FI105001B (fi) * 1995-06-30 2000-05-15 Nokia Mobile Phones Ltd Menetelmä odotusajan selvittämiseksi puhedekooderissa epäjatkuvassa lähetyksessä ja puhedekooderi sekä lähetin-vastaanotin
JP3522012B2 (ja) * 1995-08-23 2004-04-26 沖電気工業株式会社 コード励振線形予測符号化装置
US5943347A (en) * 1996-06-07 1999-08-24 Silicon Graphics, Inc. Apparatus and method for error concealment in an audio stream
US7788092B2 (en) * 1996-09-25 2010-08-31 Qualcomm Incorporated Method and apparatus for detecting bad data packets received by a mobile telephone using decoded speech parameters
US6134265A (en) * 1996-12-31 2000-10-17 Cirrus Logic, Inc. Precoding coefficient training in a V.34 modem
JPH10247098A (ja) * 1997-03-04 1998-09-14 Mitsubishi Electric Corp 可変レート音声符号化方法、可変レート音声復号化方法
FR2774827B1 (fr) * 1998-02-06 2000-04-14 France Telecom Procede de decodage d'un flux binaire representatif d'un signal audio
DE19814633C2 (de) * 1998-03-26 2001-09-13 Deutsche Telekom Ag Verfahren zur Verschleierung von Sprachsegmentverlusten bei paketorientierter Übertragung
JP3273599B2 (ja) * 1998-06-19 2002-04-08 沖電気工業株式会社 音声符号化レート選択器と音声符号化装置
US7072832B1 (en) * 1998-08-24 2006-07-04 Mindspeed Technologies, Inc. System for speech encoding having an adaptive encoding arrangement
US6385573B1 (en) * 1998-08-24 2002-05-07 Conexant Systems, Inc. Adaptive tilt compensation for synthesized speech residual
JP4249821B2 (ja) * 1998-08-31 2009-04-08 富士通株式会社 ディジタルオーディオ再生装置
US6275798B1 (en) * 1998-09-16 2001-08-14 Telefonaktiebolaget L M Ericsson Speech coding with improved background noise reproduction
US6661848B1 (en) 1998-09-25 2003-12-09 Intel Corporation Integrated audio and modem device
WO2000052441A1 (en) * 1999-03-04 2000-09-08 American Towers, Inc. Method and apparatus for determining the perceptual quality of speech in a communications network
US6138089A (en) * 1999-03-10 2000-10-24 Infolio, Inc. Apparatus system and method for speech compression and decompression
US6233552B1 (en) * 1999-03-12 2001-05-15 Comsat Corporation Adaptive post-filtering technique based on the Modified Yule-Walker filter
US7047190B1 (en) 1999-04-19 2006-05-16 At&Tcorp. Method and apparatus for performing packet loss or frame erasure concealment
US7117156B1 (en) 1999-04-19 2006-10-03 At&T Corp. Method and apparatus for performing packet loss or frame erasure concealment
US6952668B1 (en) * 1999-04-19 2005-10-04 At&T Corp. Method and apparatus for performing packet loss or frame erasure concealment
EP1088302B1 (en) * 1999-04-19 2008-07-23 AT & T Corp. Method for performing packet loss concealment
GB2358558B (en) * 2000-01-18 2003-10-15 Mitel Corp Packet loss compensation method using injection of spectrally shaped noise
US6842733B1 (en) 2000-09-15 2005-01-11 Mindspeed Technologies, Inc. Signal processing system for filtering spectral content of a signal for speech coding
US6850884B2 (en) * 2000-09-15 2005-02-01 Mindspeed Technologies, Inc. Selection of coding parameters based on spectral content of a speech signal
US6947888B1 (en) * 2000-10-17 2005-09-20 Qualcomm Incorporated Method and apparatus for high performance low bit-rate coding of unvoiced speech
EP1199709A1 (en) 2000-10-20 2002-04-24 Telefonaktiebolaget Lm Ericsson Error Concealment in relation to decoding of encoded acoustic signals
US7039716B1 (en) * 2000-10-30 2006-05-02 Cisco Systems, Inc. Devices, software and methods for encoding abbreviated voice data for redundant transmission through VoIP network
KR100438167B1 (ko) * 2000-11-10 2004-07-01 엘지전자 주식회사 인터넷 전화통신을 위한 음성신호 송수신장치
US20070055498A1 (en) * 2000-11-15 2007-03-08 Kapilow David A Method and apparatus for performing packet loss or frame erasure concealment
EP1217613A1 (fr) * 2000-12-19 2002-06-26 Koninklijke Philips Electronics N.V. Reconstitution de trames manquantes ou mauvaises en téléphonie cellulaire
DE10124421C1 (de) * 2001-05-18 2002-10-17 Siemens Ag Verfahren zur Schätzung eines Codecparameters
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US7673223B2 (en) * 2001-06-15 2010-03-02 Qualcomm Incorporated Node processors for use in parity check decoders
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US7110942B2 (en) * 2001-08-14 2006-09-19 Broadcom Corporation Efficient excitation quantization in a noise feedback coding system using correlation techniques
US7590525B2 (en) * 2001-08-17 2009-09-15 Broadcom Corporation Frame erasure concealment for predictive speech coding based on extrapolation of speech waveform
US7512535B2 (en) * 2001-10-03 2009-03-31 Broadcom Corporation Adaptive postfiltering methods and systems for decoding speech
US7206740B2 (en) * 2002-01-04 2007-04-17 Broadcom Corporation Efficient excitation quantization in noise feedback coding with general noise shaping
US6961888B2 (en) * 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
US20040122680A1 (en) * 2002-12-18 2004-06-24 Mcgowan James William Method and apparatus for providing coder independent packet replacement
US20040157626A1 (en) * 2003-02-10 2004-08-12 Vincent Park Paging methods and apparatus
CA2516541A1 (en) * 2003-02-26 2004-09-16 Flarion Technologies, Inc. Soft information scaling for iterative decoding
US6957375B2 (en) * 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
US20070234178A1 (en) * 2003-02-26 2007-10-04 Qualcomm Incorporated Soft information scaling for interactive decoding
US7411985B2 (en) * 2003-03-21 2008-08-12 Lucent Technologies Inc. Low-complexity packet loss concealment method for voice-over-IP speech transmission
US7434145B2 (en) * 2003-04-02 2008-10-07 Qualcomm Incorporated Extracting soft information in a block-coherent communication system
US8196000B2 (en) * 2003-04-02 2012-06-05 Qualcomm Incorporated Methods and apparatus for interleaving in a block-coherent communication system
US7231557B2 (en) * 2003-04-02 2007-06-12 Qualcomm Incorporated Methods and apparatus for interleaving in a block-coherent communication system
US7379864B2 (en) * 2003-05-06 2008-05-27 Lucent Technologies Inc. Method and apparatus for the detection of previous packet loss in non-packetized speech
US7565286B2 (en) 2003-07-17 2009-07-21 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of Industry, Through The Communications Research Centre Canada Method for recovery of lost speech data
US7478040B2 (en) * 2003-10-24 2009-01-13 Broadcom Corporation Method for adaptive filtering
US7324937B2 (en) * 2003-10-24 2008-01-29 Broadcom Corporation Method for packet loss and/or frame erasure concealment in a voice communication system
US7237181B2 (en) 2003-12-22 2007-06-26 Qualcomm Incorporated Methods and apparatus for reducing error floors in message passing decoders
US20050147131A1 (en) * 2003-12-29 2005-07-07 Nokia Corporation Low-rate in-band data channel using CELP codewords
US8473286B2 (en) * 2004-02-26 2013-06-25 Broadcom Corporation Noise feedback coding system and method for providing generalized noise shaping within a simple filter structure
WO2005086138A1 (ja) * 2004-03-05 2005-09-15 Matsushita Electric Industrial Co., Ltd. エラー隠蔽装置およびエラー隠蔽方法
US7668712B2 (en) * 2004-03-31 2010-02-23 Microsoft Corporation Audio encoding and decoding with intra frames and adaptive forward error correction
US7395490B2 (en) * 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7346832B2 (en) * 2004-07-21 2008-03-18 Qualcomm Incorporated LDPC encoding methods and apparatus
US7127659B2 (en) * 2004-08-02 2006-10-24 Qualcomm Incorporated Memory efficient LDPC decoding methods and apparatus
US8306821B2 (en) * 2004-10-26 2012-11-06 Qnx Software Systems Limited Sub-band periodic signal enhancement system
US7610196B2 (en) * 2004-10-26 2009-10-27 Qnx Software Systems (Wavemakers), Inc. Periodic signal enhancement system
US7949520B2 (en) * 2004-10-26 2011-05-24 QNX Software Sytems Co. Adaptive filter pitch extraction
US7680652B2 (en) 2004-10-26 2010-03-16 Qnx Software Systems (Wavemakers), Inc. Periodic signal enhancement system
US8543390B2 (en) * 2004-10-26 2013-09-24 Qnx Software Systems Limited Multi-channel periodic signal enhancement system
US7716046B2 (en) * 2004-10-26 2010-05-11 Qnx Software Systems (Wavemakers), Inc. Advanced periodic signal enhancement
US8170879B2 (en) * 2004-10-26 2012-05-01 Qnx Software Systems Limited Periodic signal enhancement system
US7519535B2 (en) * 2005-01-31 2009-04-14 Qualcomm Incorporated Frame erasure concealment in voice communications
KR100612889B1 (ko) * 2005-02-05 2006-08-14 삼성전자주식회사 선스펙트럼 쌍 파라미터 복원 방법 및 장치와 그 음성복호화 장치
US7930176B2 (en) 2005-05-20 2011-04-19 Broadcom Corporation Packet loss concealment for block-independent speech codecs
US7831421B2 (en) * 2005-05-31 2010-11-09 Microsoft Corporation Robust decoder
US7177804B2 (en) * 2005-05-31 2007-02-13 Microsoft Corporation Sub-band voice codec with multi-stage codebooks and redundant coding
US7707034B2 (en) * 2005-05-31 2010-04-27 Microsoft Corporation Audio codec post-filter
JP2007114417A (ja) * 2005-10-19 2007-05-10 Fujitsu Ltd 音声データ処理方法及び装置
JP5142727B2 (ja) * 2005-12-27 2013-02-13 パナソニック株式会社 音声復号装置および音声復号方法
WO2008007700A1 (en) * 2006-07-12 2008-01-17 Panasonic Corporation Sound decoding device, sound encoding device, and lost frame compensation method
US8280728B2 (en) 2006-08-11 2012-10-02 Broadcom Corporation Packet loss concealment for a sub-band predictive coder based on extrapolation of excitation waveform
KR100772547B1 (ko) * 2006-08-31 2007-11-02 주식회사 하이닉스반도체 반도체 장치 및 그의 테스트 방법
US20080117959A1 (en) * 2006-11-22 2008-05-22 Qualcomm Incorporated False alarm reduction in detection of a synchronization signal
WO2008108080A1 (ja) * 2007-03-02 2008-09-12 Panasonic Corporation 音声符号化装置及び音声復号装置
GB0704622D0 (en) * 2007-03-09 2007-04-18 Skype Ltd Speech coding system and method
US20080231557A1 (en) * 2007-03-20 2008-09-25 Leadis Technology, Inc. Emission control in aged active matrix oled display using voltage ratio or current ratio
CN101325537B (zh) * 2007-06-15 2012-04-04 华为技术有限公司 一种丢帧隐藏的方法和设备
US8386246B2 (en) * 2007-06-27 2013-02-26 Broadcom Corporation Low-complexity frame erasure concealment
US20090055171A1 (en) * 2007-08-20 2009-02-26 Broadcom Corporation Buzz reduction for low-complexity frame erasure concealment
JP2009063928A (ja) * 2007-09-07 2009-03-26 Fujitsu Ltd 補間方法、情報処理装置
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US8904400B2 (en) * 2007-09-11 2014-12-02 2236008 Ontario Inc. Processing system having a partitioning component for resource partitioning
US8694310B2 (en) 2007-09-17 2014-04-08 Qnx Software Systems Limited Remote control server protocol system
EP2058803B1 (en) * 2007-10-29 2010-01-20 Harman/Becker Automotive Systems GmbH Partial speech reconstruction
US8209514B2 (en) * 2008-02-04 2012-06-26 Qnx Software Systems Limited Media processing system having resource partitioning
KR101761629B1 (ko) * 2009-11-24 2017-07-26 엘지전자 주식회사 오디오 신호 처리 방법 및 장치
US20110196673A1 (en) * 2010-02-11 2011-08-11 Qualcomm Incorporated Concealing lost packets in a sub-band coding decoder
US8149529B2 (en) * 2010-07-28 2012-04-03 Lsi Corporation Dibit extraction for estimation of channel parameters
AU2014283198B2 (en) * 2013-06-21 2016-10-20 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method realizing a fading of an MDCT spectrum to white noise prior to FDNS application
KR101957905B1 (ko) 2013-10-31 2019-03-13 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 시간 도메인 여기 신호를 기초로 하는 오류 은닉을 사용하여 디코딩된 오디오 정보를 제공하기 위한 오디오 디코더 및 방법
PL3063759T3 (pl) 2013-10-31 2018-06-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Dekoder audio i sposób dostarczania zdekodowanej informacji audio z wykorzystaniem ukrywania błędów modyfikując sygnał pobudzenia w dziedzinie czasu
CN104751849B (zh) * 2013-12-31 2017-04-19 华为技术有限公司 语音频码流的解码方法及装置
CN104934035B (zh) 2014-03-21 2017-09-26 华为技术有限公司 语音频码流的解码方法及装置
KR102102764B1 (ko) 2018-12-27 2020-04-22 주식회사 세원정공 카울 크로스 부품의 성형 및 체결부 접합 겸용 금형장치
US11087778B2 (en) * 2019-02-15 2021-08-10 Qualcomm Incorporated Speech-to-text conversion based on quality metric
CN116631419B (zh) * 2023-05-29 2025-11-14 小米科技(武汉)有限公司 语音信号的处理方法、装置、电子设备和存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8302985A (nl) * 1983-08-26 1985-03-18 Philips Nv Multipulse excitatie lineair predictieve spraakcodeerder.
US4622680A (en) * 1984-10-17 1986-11-11 General Electric Company Hybrid subband coder/decoder method and apparatus
US5384891A (en) * 1988-09-28 1995-01-24 Hitachi, Ltd. Vector quantizing apparatus and speech analysis-synthesis system using the apparatus
CA1321645C (en) * 1988-09-28 1993-08-24 Akira Ichikawa Method and system for voice coding based on vector quantization
IT1241358B (it) * 1990-12-20 1994-01-10 Sip Sistema di codifica del segnale vocale con sottocodice annidato
DE69233794D1 (de) * 1991-06-11 2010-09-23 Qualcomm Inc Vocoder mit veränderlicher Bitrate
US5450449A (en) * 1994-03-14 1995-09-12 At&T Ipm Corp. Linear prediction coefficient generation during frame erasure or packet loss
CA2142391C (en) * 1994-03-14 2001-05-29 Juin-Hwey Chen Computational complexity reduction during frame erasure or packet loss

Also Published As

Publication number Publication date
KR950035132A (ko) 1995-12-30
CA2142393A1 (en) 1995-09-15
US5615298A (en) 1997-03-25
AU1367395A (en) 1995-09-21
EP0673017A3 (en) 1997-08-13
DE69531642T2 (de) 2004-06-24
CA2142393C (en) 1999-01-19
DE69531642D1 (de) 2003-10-09
EP0673017A2 (en) 1995-09-20
EP0673017B1 (en) 2003-09-03
JPH07311597A (ja) 1995-11-28
JP3439869B2 (ja) 2003-08-25

Similar Documents

Publication Publication Date Title
ES2207643T3 (es) Sintesis de señal de excitacion durante borrado de tramas o perdida de paquetes.
EP0673018B1 (en) Linear prediction coefficient generation during frame erasure or packet loss
ES2266312T3 (es) Indexacion de posiciones y señales de pulso en codigos de cifrado y descifrado algebraicos para la codificacion de señales de banda ancha.
ES2205238T3 (es) Procedimientos de codificacion y decodificacion de señales de audio, y codificador y decodificador de señales de audio.
ES2358213T3 (es) Flujo redundante de bits de audio y métodos de procesamiento de flujo de bits de audio.
ES2321147T3 (es) Codificacion de habla de tasa de transmision variable.
ES2225321T3 (es) Aparaato y procedimiento para el enmascaramiento de errores en tramas de datos.
ES2257098T3 (es) Codificacion periodica de vocales.
ES2266003T3 (es) Suavizador de la ganancia en un descodificador de señal de habla y audio de banda ancha.
ES2624718T3 (es) Método y dispositivo para la codificación de tramas de transición en señales de voz
KR100193353B1 (ko) 적응블록길이, 적응변환, 적응윈도우 변환코더, 디코더 및 고품질 오디오용 인코더/디코더
AU683127B2 (en) Linear prediction coefficient generation during frame erasure or packet loss
KR100209454B1 (ko) 부호화 장치
ES2625895T3 (es) Método y dispositivo para la ocultación eficiente del borrado de tramas en códecs de voz basados en la predicción lineal
ES2349554T3 (es) Codificación de señales.
ES2223591T3 (es) Codificacion eficaz de envolvente especial utilizando una resolucion tiempo/frecuencia variable.
ES2302754T3 (es) Procedimiento y aparato para codificacion de habla sorda.
ES2347473T3 (es) Procedimiento y aparato de deteccion de componentes tonales de señales de audio.
EP0673015B1 (en) Computational complexity reduction during frame erasure or packet loss
AU7174100A (en) Multiband harmonic transform coder
ES2378972T3 (es) Atenuación de la sobresonorización, en particular para la generación de una excitación en un decodificador, en ausencia de información
JPH0563000B2 (es)
KR100792209B1 (ko) 디지털 오디오 패킷 손실을 복구하기 위한 방법 및 장치
CODER ITU-Tg. 723.1