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
Links
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 150
- 238000003786 synthesis reaction Methods 0.000 claims abstract description 148
- 230000005284 excitation Effects 0.000 claims abstract description 140
- 238000000034 method Methods 0.000 claims description 88
- 230000008569 process Effects 0.000 claims description 23
- 238000012217 deletion Methods 0.000 claims description 15
- 230000037430 deletion Effects 0.000 claims description 15
- 230000002194 synthesizing effect Effects 0.000 claims description 7
- 239000013598 vector Substances 0.000 abstract description 359
- 230000004044 response Effects 0.000 abstract description 49
- 238000013213 extrapolation Methods 0.000 abstract description 7
- 230000009467 reduction Effects 0.000 abstract description 2
- 230000008030 elimination Effects 0.000 abstract 1
- 238000003379 elimination reaction Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 77
- 230000006978 adaptation Effects 0.000 description 54
- 238000012360 testing method Methods 0.000 description 54
- 238000004364 calculation method Methods 0.000 description 49
- 230000000875 corresponding effect Effects 0.000 description 32
- 230000008859 change Effects 0.000 description 30
- 230000007774 longterm Effects 0.000 description 23
- 238000004422 calculation algorithm Methods 0.000 description 21
- 230000003044 adaptive effect Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 20
- 238000012546 transfer Methods 0.000 description 18
- 238000004458 analytical method Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 16
- 238000012795 verification Methods 0.000 description 14
- 238000001914 filtration Methods 0.000 description 11
- 230000003595 spectral effect Effects 0.000 description 11
- 101000628535 Homo sapiens Metalloreductase STEAP2 Proteins 0.000 description 10
- 102100026711 Metalloreductase STEAP2 Human genes 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 9
- 238000000605 extraction Methods 0.000 description 9
- 238000005259 measurement Methods 0.000 description 8
- 238000009795 derivation Methods 0.000 description 7
- 238000006073 displacement reaction Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- NRZWYNLTFLDQQX-UHFFFAOYSA-N p-tert-Amylphenol Chemical group CCC(C)(C)C1=CC=C(O)C=C1 NRZWYNLTFLDQQX-UHFFFAOYSA-N 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 6
- YDONNITUKPKTIG-UHFFFAOYSA-N [Nitrilotris(methylene)]trisphosphonic acid Chemical compound OP(O)(=O)CN(CP(O)(O)=O)CP(O)(O)=O YDONNITUKPKTIG-UHFFFAOYSA-N 0.000 description 5
- 238000006467 substitution reaction Methods 0.000 description 5
- 230000001755 vocal effect Effects 0.000 description 5
- 239000006227 byproduct Substances 0.000 description 4
- 230000015556 catabolic process Effects 0.000 description 4
- 238000006731 degradation reaction Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000009499 grossing Methods 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000000737 periodic effect Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 239000002243 precursor Substances 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 101100102849 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) VTH1 gene Proteins 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000005562 fading Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 102100037651 AP-2 complex subunit sigma Human genes 0.000 description 1
- 206010002953 Aphonia Diseases 0.000 description 1
- 101000806914 Homo sapiens AP-2 complex subunit sigma Proteins 0.000 description 1
- 230000002238 attenuated effect Effects 0.000 description 1
- 238000005311 autocorrelation function Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B7/00—Radio transmission systems, i.e. using radiation field
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech 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/005—Correction of errors induced by the transmission channel, if related to the coding algorithm
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech 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/04—Speech 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/08—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
- G10L19/12—Determination 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.
- 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).
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.
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.
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.
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.
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).
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.
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.
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 1cm1 \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.
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.
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.
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.
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
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.
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.
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
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.
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.
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).
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.
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)].
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
y la señal ponderada por la ventana
es
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
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
donde
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
La componente recursiva de R_{m +
L}(i) puede escribirse
o
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
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.5cmL = 20,
\hskip0.5cmN = 30
\hskip0.5cmy
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)
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
y el correspondiente predictor lineal de décimo
orden viene definido por la siguiente función de
transferencia
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:
y
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).
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.
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.
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).
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.
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
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.5cmi = 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.
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.5cmN = 20,
\hskip0.5cmL = 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.
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.
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
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.
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.
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.
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.
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.
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.
Este bloque calcula el vector de excitación
cambiado de escala, e(n), multiplicando cada
componente de y(n) por la ganancia
\sigma(n).
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.
La función de este bloque se describe en la
Sección 3.8.
La función de este bloque se describe en la
Sección 3.7.
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.5cmi= 1,2...,10,
(27)\overline{a}_{i} =
\overline{a}_{i} (0,75)^{i},
\hskip0.5cmi= 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.
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.
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
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:
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).
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.
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.
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)
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)
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.
| 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).
| 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. |
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.
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.
- 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.
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.
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).
- 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.
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.
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.
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.
\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. |
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. |
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)}
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. |
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. |
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. |
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.
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).
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.
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. |
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.
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.
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).
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. |
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. |
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".
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. |
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.
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:
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).
| 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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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.
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).
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.
\newpage
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.
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.
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.
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.
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)
\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.
ANEXO
C
(a la Recomendación
G.728)
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.
ANEXO
D
(a la Recomendación
G.728)
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
donde los coeficientes a_{i} y
b_{i} vienen dados en la tabla
siguiente:
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).
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.
\newpage
APÉNDICE
I
(a la Recomendación
G.728)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
| 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)
| 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 |
-
1994
- 1994-03-14 US US08/212,408 patent/US5615298A/en not_active Expired - Lifetime
-
1995
- 1995-02-13 CA CA002142393A patent/CA2142393C/en not_active Expired - Lifetime
- 1995-02-28 EP EP95301298A patent/EP0673017B1/en not_active Expired - Lifetime
- 1995-02-28 DE DE69531642T patent/DE69531642T2/de not_active Expired - Lifetime
- 1995-02-28 ES ES95301298T patent/ES2207643T3/es not_active Expired - Lifetime
- 1995-03-07 AU AU13673/95A patent/AU1367395A/en not_active Abandoned
- 1995-03-13 JP JP07935895A patent/JP3439869B2/ja not_active Expired - Lifetime
- 1995-03-13 KR KR1019950005088A patent/KR950035132A/ko not_active Withdrawn
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 |