estudio y simulación de un codificador de voz basado en la...

138
Estudio y simulación de un codificador de voz basado en la recomendación G.729 de la ITU-T Proyecto Fin de Carrera Ingeniería de Telecomunicaciones Escuela Superior de Ingenieros Universidad de Sevilla Alberto Alonso Hernández Tutor: Sergio Cruces Álvarez 01 de Diciembre de 2005

Upload: vungoc

Post on 03-Nov-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Estudio y simulación de un codificador de voz

basado en la recomendación G.729 de la ITU-T

Proyecto Fin de Carrera

Ingeniería de Telecomunicaciones

Escuela Superior de Ingenieros

Universidad de Sevilla

Alberto Alonso Hernández

Tutor: Sergio Cruces Álvarez

01 de Diciembre de 2005

Resumen

En el presente documento se estudia e implementa en Matlab un codificador de voz basado en el de la recomendación G.729 de la ITU-T, “Codificación de la voz a 8 kbit/s mediante predicción lineal con excitación por código algebraico de estructura conjugada”, conocido como codificador CS-CELP.

El codificador implementado está diseñado para trabajar con señales digitales y

se basa en el modelo de codificación mediante predicción lineal con excitación por código (CELP). Opera con tramas vocales de 10 ms correspondientes a 80 muestras a una velocidad de muestreo de 8000 muestras por segundo. En cada trama de 10 ms se analiza la señal vocal para extraer los parámetros del modelo CELP (coeficientes del filtro de predicción lineal, ganancias e índices de las tablas de códigos adaptativos y fijos). Estos parámetros se codifican y se transmiten. En el decodificador, se usan los datos recibidos para recuperar los parámetros de excitación y del filtro de síntesis.

Se realiza una introducción a las señales y los codificadores de voz, analizando

sus características más importantes y una revisión de los conceptos teóricos en los que se basará el codificador. Se analiza el codificador propuesto en la recomendación y, por último, se detalla la estructura del codificador a implementar.

Una vez implementado el codificador, se introducen diferentes señales de voz,

masculinas y femeninas, analizando los resultados obtenidos. Como prueba final, se estudia su comportamiento ante una señal de audio.

Estudio y simulación de un codificador de voz basado en la recomendación G.729 de la ITU-T

I

Índice

Página

1 INTRODUCCIÓN................................................................................ 1

1.1 LA VOZ .............................................................................................................. 1 1.1.1 Propiedades de las señales de voz........................................................................... 3

1.2 LOS CODIFICADORES DE VOZ............................................................................. 6 1.2.1 Propiedades de los codificadores de voz................................................................. 8

1.2.1.1 Tasa de bit....................................................................................................... 8 1.2.1.2 Retraso ............................................................................................................ 9 1.2.1.3 Complejidad.................................................................................................. 10 1.2.1.4 Calidad.......................................................................................................... 11

1.2.2 Tipos de algoritmos de codificación de voz........................................................... 12 1.2.2.1 Codificadores de forma de onda ................................................................... 13 1.2.2.2 Vocoders....................................................................................................... 14 1.2.2.3 Codificadores híbridos.................................................................................. 15 1.2.2.4 Otros codificadores....................................................................................... 16 1.2.2.5 Sistemas de codificación usados en la práctica............................................. 16

1.2.2.5.1 Red GSM.................................................................................................. 17 1.2.2.5.2 Red UMTS ............................................................................................... 17 1.2.2.5.3 Red telefónica fija .................................................................................... 17 1.2.2.5.4 Internet (voz sobre IP, VoIP).................................................................... 17

2 REVISIÓN TEÓRICA ......................................................................19

2.1 CODIFICACIÓN DE VOZ MEDIANTE PREDICCIÓN LINEAL................................... 19 2.1.1 Introducción .......................................................................................................... 19 2.1.2 Desarrollo matemático.......................................................................................... 22

2.2 COEFICIENTES LSF.......................................................................................... 27 2.2.1 Definición y características................................................................................... 27 2.2.2 Conversión LP -> LSF .......................................................................................... 30

2.3 CODIFICACIÓN PREDICTIVA MEDIANTE ANÁLISIS POR SÍNTESIS....................... 33 2.3.1 Introducción .......................................................................................................... 33 2.3.2 Codificación AbS genérica.................................................................................... 33 2.3.3 Predictor de corto plazo........................................................................................ 35 2.3.4 Predictor de largo plazo........................................................................................ 36 2.3.5 Filtro de ponderación de error.............................................................................. 44

2.4 CELP .............................................................................................................. 46 2.4.1 Introducción .......................................................................................................... 46 2.4.2 Principio del CELP ............................................................................................... 46 2.4.3 Tabla de códigos algebraicos................................................................................ 51

3 RECOMENDACIÓN G.729: CS-CELP..........................................53 3.1 LA ITU-T........................................................................................................ 53 3.2 DESCRIPCIÓN DE LA RECOMENDACIÓN............................................................ 54

3.2.1 Introducción .......................................................................................................... 54 3.2.2 Historia.................................................................................................................. 55 3.2.3 Objetivos y requerimientos de la recomendación G.729....................................... 56 3.2.4 Características del codificador ............................................................................. 58 3.2.5 Aplicaciones .......................................................................................................... 60 3.2.6 Anexos ................................................................................................................... 61

Estudio y simulación de un codificador de voz basado en la recomendación G.729 de la ITU-T

II

4 IMPLEMENTACIÓN DEL CODIFICADOR DE VOZ.............. ..63

4.1 INTRODUCCIÓN................................................................................................ 63 4.1.1 Definición del sistema a implementar ................................................................... 63 4.1.2 Codificador............................................................................................................ 64 4.1.3 Decodificador........................................................................................................ 66

4.2 DESCRIPCIÓN DE LAS FUNCIONES DEL CODIFICADOR....................................... 67 4.2.1 Preprocesamiento.................................................................................................. 69 4.2.2 Análisis y cuantización de la predicción lineal ..................................................... 70

4.2.2.1 Ventanización y cálculo de la autocorrelación ............................................. 70 4.2.2.2 Algoritmo de Levinson-Durbin .................................................................... 74 4.2.2.3 Conversión LP -> LSP..................................................................................75 4.2.2.4 Cuantización de los coeficientes LSP........................................................... 75 4.2.2.5 Interpolación de los coeficientes LSP........................................................... 75 4.2.2.6 Conversión de LSP a LP............................................................................... 75

4.2.3 Ponderación perceptual ........................................................................................ 76 4.2.4 Análisis de tono en bucle abierto .......................................................................... 80 4.2.5 Cálculo de la respuesta impulsiva......................................................................... 81 4.2.6 Cálculo de la señal objetivo .................................................................................. 82 4.2.7 Búsqueda de la tabla de códigos adaptativos ....................................................... 83

4.2.7.1 Generación del vector de tabla de códigos adaptativos ................................ 85 4.2.7.2 Cálculo de la palabra de código para retardos de tabla de códigos adaptativos 86 4.2.7.3 Cálculo de la ganancia de tabla de códigos adaptativos ............................... 86

4.2.8 Tabla de códigos fijos: estructura y búsqueda...................................................... 87 4.2.8.1 Procedimiento de búsqueda de la tabla de códigos fijos............................... 89 4.2.8.2 Cálculo de palabra de código de la tabla de códigos fijos ............................ 91 4.2.8.3 Cálculo de la ganancia de la tabla de códigos fijos...................................... 91

4.2.9 Actualización de la memoria ................................................................................. 92 4.3 DESCRIPCIÓN DE LAS FUNCIONES DEL DECODIFICADOR................................... 93

4.3.1 Procedimiento de decodificación de los parámetros ............................................ 93 4.3.1.1 Decodificación del vector de tabla de códigos adaptativos .......................... 94 4.3.1.2 Decodificación del vector de tabla de códigos fijos..................................... 95 4.3.1.3 Decodificación de las ganancias ................................................................... 96 4.3.1.4 Cálculo de la señal de voz reconstruida........................................................ 96 4.3.1.5 Postprocesamiento ........................................................................................ 97

4.3.1.5.1 Postfiltro de largo plazo............................................................................ 98 4.3.1.5.2 Postfiltro de corto plazo............................................................................ 99 4.3.1.5.3 Compensación de la pendiente ............................................................... 100 4.3.1.5.4 Control de ganancia adaptativo .............................................................. 101 4.3.1.5.5 Filtrado de paso alto y escalamiento ascendente.................................... 102

5 SIMULACIONES.............................................................................107

6 CONCLUSIONES............................................................................119

7 LÍNEAS FUTURAS DE INVESTIGACIÓN ................................123

BIBLIOGRAFÍA……………………………………………………….127

Estudio y simulación de un codificador de voz basado en la recomendación G.729 de la ITU-T

III

Abreviaturas - ACELP.- CELP Algebraico

- ADPCM.- Modulación por Código Pulsado Diferencial Adaptativa

- CELP.- Codificación por predicción lineal con excitación

- CS-CELP.- CELP con estructura conjugada

- DSP.- Procesador Digital de Señal

- GSM.- Sistema Global de Comunicaciones Móviles

- IP.- Protocolo de Internet

- ITU.- Unión Internacional de Telecomunicaciones

- LAR.- Relaciones de Área Logarítmicas

- LP.- Predicción Lineal

- LPC.- Codificación por Predicción Lineal

- LSP.- Pares del Espectro Lineal

- LSF.- Frecuencias Espectrales de Línea

- LTP.- Predictor de largo plazo ó de pitch

- MIC.- Modulación por Impulsos Codificados

- MIPS.- Millones de Instrucciones Por Segundo

- MOS.- Mean Opinion Store

- MSE.- Error Cuadrático Medio

- PCM.- Modulación por Código Pulsado

- RAM.- Memoria de Acceso Aleatorio

- ROM.- Memoria de Solo Lectura

- STP.- Predictor de corto plazo ó de predicción lineal

- ToR.- Términos de Referencia

- UMTS.- Sistema Universal de Telecomunicaciones Móviles

- VAD.- Detector de actividad vocal

- VoIP.- Voz sobre Protocolo de Internet

- VQ.- Cuantización Vectorial

Estudio y simulación de un codificador de voz basado en la recomendación G.729 de la ITU-T

IV

Glosario de las señales más importantes

( )nc

palabra código de excitación ó vector de la tabla de códigos fijos

( )nd Señal de correlación entre señal objetivo y respuesta impulsiva del filtro de síntesis

ponderado

( )ne señal de error (diferencia entre la señal original y la sintetizada)

( )new señal de error ponderada

( )nh respuesta impulsiva del filtro de síntesis ponderado

( )nr señal residuo de predicción de largo plazo

( )nR autocorrelación de corto plazo de la señal de voz

( )ns señal de voz de entrada

( )ns0ˆ respuesta a entrada cero del filtro de síntesis ponderado

( )ns′ señal de voz de entrada ventanizada

( )ns señal de voz sintetizada

( )ns~ señal de voz predicha en el predictor de corto plazo

( )nswˆ señal de voz sintetizada ponderada

( )nsw Señal de voz ponderada

( )nu señal de excitación

( )nv Vector de tabla de códigos adaptativos

)(nwlp ventana de análisis LP

( )nx Señal objetivo para la búsqueda de la tabla de códigos adaptativos

( )nx′ Señal objetivo actualizada

( )ny palabra de código filtrada

( )nyα convolución entre la señal de excitación y la respuesta impulsiva del filtro de síntesis ponderado

( )nnφ correlación de la señal de voz

Estudio y simulación de un codificador de voz basado en la recomendación G.729 de la ITU-T

V

Glosario de símbolos más importantes

( )zA filtro inverso de predicción lineal ó filtro blanqueador

( )zA filtro inverso de predicción lineal cuantizado ó filtro blanqueador cuantizado

( )zF filtro de reacción

( )zH filtro de predicción lineal ó de corto plazo

( )zH f Postfiltro de largo plazo

( )zH h1 filtro de preprocesado

( )zH h2 Filtro de postprocesado

( )zH p Postfiltro de corto plazo

( )zH t Filtro de compensación de pendiente

( )zPl predictor de largo plazo ó de pitch

( )zPδ predictor de corto plazo

( )zP1 filtro de correlación de largo plazo ó filtro de síntesis de pitch

( )zW filtro de ponderación perceptual

Estudio y simulación de un codificador de voz basado en la recomendación G.729 de la ITU-T

VI

Glosario de constantes más importantes

ka parámetros LP ó coeficientes del predictor lineal de corto plazo

ka parámetros LP ó coeficientes del predictor lineal de corto plazo cuantizados

ja estimación de los parámetros LP ó coeficientes del predictor lineal de corto plazo

C Palabra de código de la tabla de códigos fijos

kc palabra código k

E residuo de predicción de largo plazo

wE error cuadrático medio ponderado

sf frecuencia de muestreo

frac Parte fraccionaria de los retardos de tono

G ganancia de tono de largo plazo

cg Ganancia de la tabla de códigos fijos

pg Ganancia de la tabla de códigos adaptativos

H matriz triangular inferior de la respuesta impulsiva ( )nh

ii Amplitud del impulso de la palabra de la tabla de códigos fijos

ik Coeficientes de reflexión

L tamaño de la trama

im Posición del impulso de la palabra de la tabla de códigos fijos

io Coeficientes LAR de la trama actual

21, PP Palabra código para la tabla de códigos adaptativos de las subtramas 1 y 2

iq Coeficientes LSP interpolados

iq Coeficientes LSP interpolados cuantizados

)(kr coeficientes de correlación de la señal enventanada

)(kr ′ coeficientes de correlación modificados de la señal enventanada

( )kR Correlación de la señal de voz enventanada para el retardo k

S Palabra de código de signo

Estudio y simulación de un codificador de voz basado en la recomendación G.729 de la ITU-T

VII

is Signo del impulso de la palabra de la tabla de códigos fijos

21, TT Retardos de tono (pitch) de las subtramas 1 y 2

opT Retraso de bucle abierto

)(kwlag factores de expansión del ancho de banda

α retraso del predictor de largo plazo

β factor de escala

δ factor de ponderación

γ Factor de ponderación del filtro de síntesis

21, γγ Factores del filtro de ponderación perceptual

ε energía del denominador de E

kε energía de la palabra código k

Φ matriz simétrica que contiene las correlaciones de la respuesta impulsiva ( )nh

ω aumento del ancho de banda

Introducción

1

1 Introducción

1.1 La voz

El lenguaje hablado o la voz es la forma más común y natural de comunicación del ser humano y, su procesamiento, ha representado una de los campos más interesantes en el análisis de señales. La investigación acerca del procesamiento de voz ha llevado a la creación de importantes aportaciones técnicas a la sociedad.

El soporte fundamental de la voz es el sonido. El sonido se caracteriza por

fluctuaciones de presión en un medio compresible. Dos cosas deben existir a fin de que se produzca una onda sonora: una fuente mecánica de vibración y un medio elástico a través del cual pueda propagar la perturbación.

La voz se produce por la vibración de las cuerdas vocales. El aire exhalado de los pulmones es modulado y dado forma por la vibración en las cuerdas vocales y el tracto vocal. Ese sonido producido por la vibración de las cuerdas vocales es llevado al exterior por el propio aire espirado que causó la vibración. En la figura 1 se muestra el camino que debe seguir el aire exhalado desde los pulmones hasta el exterior a través de los diferentes conductos [Miraya,2002].

Introducción

2

Figura 1.- Aparato fonatorio humano

Las señales de voz, que no son más que una secuencia de símbolos acústicos elementales (conocidos como fonemas), además de servir para la comunicación de la información lingüística, llevan consigo multitud de información de otros tipos. La voz no es igual para todas las personas. Es una de las expresiones humanas en donde más se pone de manifiesto las características del individuo, englobándose en ella tanto las constitucionales, anatómicas como anímicas. Algunas de estas características son: edad, acento, intensidad, emoción, humor, el estado de salud de la persona que habla…

Las investigaciones que han existido en este campo estudian temas relacionados con el análisis y síntesis de voz, la creación de códigos de voz, el reconocimiento de voz, el realce de voz ó la comunicación multimodal.

Los estudios sobre el procesamiento de voz y las comunicaciones fueron motivados

en gran parte por el deseo de muchas personas de construir modelos mecánicos que pudieran imitar la comunicación verbal de los humanos. En 1791 se creó el primer invento de este tipo que fue una imitación mecánica del aparato vocal humano [Lemmetty, 1999]. Con el paso de los años otros científicos sintetizaron sonidos vocales por medio de la superposición de senoides armónicamente relacionadas y un ajuste adecuado de sus amplitudes. Estos han sido los dos principios dominantes en el procesamiento de las señales de voz: uno motivado por la física para el modelado de la fuente del tracto vocal y el otro por las matemáticas en el modelado con senoides.

Diversos sistemas basados en bancos de filtros han sido la base para demostrar que

una señal de voz se puede representar en términos de un paquete de parámetros. Estos parámetros pueden utilizarse posteriormente no sólo para resintetizar la señal de voz, sino para reconocer la identidad de la persona que está hablando. Además abre la posibilidad de comprimir el ancho de banda de una señal de voz, principio que actualmente se utiliza en la telefonía digital moderna.

Introducción

3

Por otro lado, muchos sintetizadores de voz usan controles paramétricos, como por ejemplo, controles de articulación, frecuencias formantes y parámetros de predicción lineal. Los diferentes conjuntos de parámetros de control implican distintas estructuras para sintetizar la señal de voz.

1.1.1 Propiedades de las señales de voz

Las señales de voz se caracterizan por ser no estacionarias y con variaciones lentas en el dominio del tiempo y se procesan normalmente en segmentos de tiempo cortos, entre 5 y 30 ms. En estos segmentos la señal puede aproximarse a una señal cuasiperiódica. Cada segmento o trama puede ser clasificado como sonoro, no sonoro o silencio:

- Los sonidos sonoros tienen una naturaleza cuasiperiódica en el dominio del tiempo y una estructura armónica fina en el dominio de la frecuencia, provocada por la vibración de las cuerdas vocales. Además, su espectro decae hacia altas frecuencias. Su energía es alta debido a que el aire encuentra poca obstrucción al pasar por el tracto vocal. Estas características pueden observarse en la figura 2.

Figura 2. - Tramo de señal de voz sonoro en el tiempo y en la frecuencia

Estos sonidos consisten en una frecuencia fundamental (frecuencia de pitch) y una serie de componentes armónicos de la misma, producidos por las cuerdas vocales. El tracto vocal modifica la señal de excitación provocando frecuencias formantes (ceros). Los formantes son las frecuencias de resonancia del espectro, es decir, los picos de la envolvente del espectro de la señal de voz que representan las frecuencias de resonancia del tracto vocal. Cada formante tiene una amplitud y un ancho de banda. La frecuencia fundamental y las frecuencias de los formantes son probablemente los conceptos más importantes para la síntesis y procesamiento de la voz.

Introducción

4

Figura 3.- Envolvente de una señal de voz con sus 3 primeros formantes

Las frecuencias a las que se producen los primeros formantes son muy importantes para reconocer o sintetizar la voz. En la figura 3 pueden verse representados los 3 primeros formantes de una señal de voz.

- Los sonidos no sonoros tienen una estructura típica aleatoria, sin periodicidades marcadas en el dominio del tiempo y un espectro mucho más compensado en frecuencia (tiene un espectro de banda ancha). Su energía es mucho menor debido a la presencia de obstrucciones en el tracto vocal.

Figura 4.- Tramo de señal de voz no sonoro en el tiempo y en la frecuencia

- Un segmento que no es consecuencia de la actividad vocal se denomina como silencio. En telefonía, aproximadamente el 50 % del tiempo de conversación es silencio. Este hecho se utiliza en algunos sistemas celulares sin cables para

Introducción

5

aumentar la eficiencia del ancho de banda del canal usando detectores de actividad vocal.

De una forma sencilla, un sistema de producción de voz se puede modelar con un modelo de sistema-fuente, que es un sistema lineal alimentado por una fuente de excitación. En una aproximación de segundo orden, la excitación es un tren de pulsos para los segmentos sonoros y ruido blanco para los no sonoros.

Figura 5.- Diagrama de bloques simplificado del modelo de producción de voz

El periodo de cuasiperiodicidad de los segmentos sonoros se caracteriza por un

periodo de pitch en el dominio del tiempo ó pitch ó frecuencia fundamental en el dominio de la frecuencia. Este pitch es un parámetro importante para algunos algoritmos de codificación de voz. Se puede identificar como la periodicidad de los picos de la amplitud en la forma de onda y la estructura fina del espectro. Las frecuencias de pitch de hombres y mujeres normalmente se encuentran en el rango 50-250 Hz (4-20 ms) y 120-500 Hz (2-8,3 ms), respectivamente [Nadeu, 2004]. El ancho de banda de la señal de voz rara vez excede de los 8 kHz. En codificación de voz para banda ancha, el ancho de banda está limitado a 7 kHz., y la voz es muestreada a 16 kHz. En telefonía, el ancho de banda está limitado a 4 kHz (0.2-3.4 kHz, normalmente) y la voz es muestreada, generalmente, a 8 kHz. Como ejemplo, si se observan las figuras 2 (en el dominio de la frecuencia) y 3, puede verse cómo los 3 primeros formantes están dentro del ancho del canal telefónico. A menos que la frecuencia fundamental quede fuera del canal telefónico el sistema de audición humano es capaz de reconstruirlo a partir de sus componentes armónicos. La calidad de la señal de voz codificada puede clasificarse, a grandes rasgos, en 4 categorías: BROADCAST calidad para comunicaciones en banda ancha, calidad TOLL o de red para señales analógicas (telefonía), de comunicación (señales degradadas pero naturales e inteligibles) y calidad sintética (señales poco naturales pero inteligibles, representadas por los codificadores lineales predictivos (LPC) o vocoders).

Generador de tren de impulsos

Generador de ruido aleatorio

Periodo de pitch

Filtro

Señal de Salida

Ganancia

Interruptor Sonoro/no Sonoro

Introducción

6

1.2 Los codificadores de voz

La compresión de la voz hace referencia a la representación compacta de las señales de voz. La codificación de la voz se refiere a la representación digital de las señales. Como el principal objetivo de la codificación de la voz es la compresión de la señal, es decir, reducir el número de bits necesarios para su representación, los dos términos, compresión y codificación de la voz, se pueden usar indistintamente. La codificación de las señales de voz se ha convertido en una de las áreas más importantes de la comunicación digital moderna durante las dos últimas décadas, sentando las bases para una nueva generación de servicios. Aplicaciones típicas de la codificación de la voz son la red convencional de telefonía, sistemas de comunicación personal sin cables y comunicaciones de seguridad militar. Sirva como ejemplo de esta importancia el papel que tiene en la vida de millones de personas la telefonía móvil. La transmisión y almacenamiento de señales de voz y audio ha tenido un enorme crecimiento debido a Internet y a las aplicaciones multimedia, como las videoconferencias, en las cuales tienen una importancia determinante. El desarrollo de microprocesadores y nuevos hardware para el procesamiento de señales impulsan nuevas ideas para las mejoras en el procesado de la voz. Por todas estas razones, la demanda de sistemas más rápidos, eficientes, fiables y de mejor calidad crece continuamente. Existe una gran variedad de técnicas de codificación de voz, muchas de ellas no normalizadas, que se emplean en muy diversos ámbitos. En la codificación de señales de voz el principal objetivo es lograr una alta calidad de percepción en la señal de voz reconstruida a un bajo coste. Estos costes están compuestos por varios elementos, como por ejemplo, la tasa de bit, la complejidad y la robustez frente a errores de transmisión. El peso sobre el coste final de cada uno de estos elementos depende la aplicación, aunque la tasa de bit y la tasa de compresión tienen una importancia fundamental, especialmente en la comunicación móvil. Los códecs de voz se diferencian de los de audio en que están optimizados para señales de voz. La voz humana es más sencilla de modelar que el audio genérico. Esto significa que la voz de alta calidad se puede codificar con métodos específicos mejor que el audio genérico. Por otro lado, los humanos son muy buenos detectando problemas en las señales voz de otros. Esto quiere decir que códecs de audio de calidad aceptablemente buena obtienen resultados bastante pobres con señales de voz, incluso con tasas de bit bastante elevadas.

La señal de voz codificada se transmitirá o almacenará para una aplicación específica. A medida que el número de bits usados para la representación de la señal se reduce, el ancho de banda efectivo del canal de transmisión aumentará y el espacio de memoria se reducirá. Los diferentes algoritmos de codificación difieren en cómo seleccionar la señal y los parámetros para representar la voz eficientemente. Esas señales y/o parámetros elegidos son cuantizados y transmitidos al receptor para su decodificación.

Dado el gran numero de aplicaciones que existen hoy en día, puede resultar

complicado elegir el codificador de voz que mejor se adapte a cada una de ellas.

Introducción

7

Aunque la mejor solución sería tener un codificador que se pudiera utilizar para cualquier tipo de aplicación, por lo general resulta más económico adaptar el codificador a la aplicación.

En las comunicaciones digitales de las señales de voz, éstas están generalmente

limitadas en banda por debajo de 4 kHz y muestreadas a 8 kHz. Lo más normal es que las muestras de voz se codifiquen en amplitud con un número de bits entre 8 y 16. La cuantización puede ser uniforme o no uniforme. La cuantización no uniforme puede usarse para tasas de bit bajas ya que la sensibilidad del oído humano es logarítmica. Ejemplos típicos de cuantización no uniforme son la ley A (A-law) usada en los sistemas de telecomunicaciones europeos y la ley µ (µ-law), usada en los sistemas de telecomunicaciones americano y japonés.

La técnica de codificación más simple es la modulación por código pulsado

(PCM). En base a ella se constituyó la primera recomendación en este campo de la ITU-T, la G.711, que especifica cuáles son las claves de 8 bits que se obtienen de la codificación logarítmica (siguiendo las leyes A y µ) de canales telefónicos digitalizados, con una frecuencia de muestreo de 8 kHz y una resolución de 8 bits por muestra. Da lugar a una tasa binaria de datos de 64 kbit/s. El codificador consiste simplemente en un cuantizador de las amplitudes de las muestras. Esta técnica se introdujo en los años 70 en la red de telefonía de larga distancia [IEEE, Nov 1996]. Una señal de voz codificada a 64 kbit/s usando la técnica PCM logarítmica se considera que no está comprimida y a menudo se usa como referencia para comparaciones. Una técnica convencional de codificación es la ADPCM (Adaptive Differencial Pulse Code Modulation) trabajando a 32 kbit/s. La calidad percibida en estos esquemas de codificación es denomina a menudo calidad ‘toll’ ó calidad telefónica. Sofisticados métodos de codificación de voz que reducen la redundancia y eliminan información irrelevante de la señal han logrado alcanzar altas calidades con unas tasas de bit bajas. A tasas de bit entre 16 kbit/s y 32 kbit/s la codificación por predicción lineal (LPC) es la más usada para modelar la señal de voz. La codificación por predicción lineal basada en el análisis por síntesis puede usarse para aumentar la eficiencia en la cuantización de la señal de voz para tasas de codificación entre 4 kbit/s y 16 kbit/s. Un esquema de cuantización muy popular en la actualidad es el conocido como CELP (Code Excited Linear Prediction), basado en la codificación mediante análisis por síntesis y que fue introducido en 1985. Los codificadores CELP usan tablas de códigos vectoriales para codificar la señal excitación. (El funcionamiento más detallado de este tipo de codificadores se estudiará más adelante). Uno de los factores clave de este progreso es el rápido desarrollo de las técnicas de compresión de señales. Estas técnicas pueden ser con pérdidas o sin pérdidas. En codificaciones sin pérdidas, la señal puede reconstruirse perfectamente. Sin embargo, la tasa de compresión alcanzada en este tipo de compresión es pequeña para la demanda actual. Por tanto, son las técnicas de compresión con pérdidas las que más se usan. El objetivo es minimizar la distorsión ó error entre la señal original y la señal reconstruida. La cuantificación vectorial (VQ) es uno de los métodos de codificación con pérdidas más potentes. Una de las aplicaciones más frecuentes de la cuantificación vectorial es la cuantificación del espectro de la señal. El problema ha sido muy estudiado y desarrollado durante las últimas décadas. La cuantificación vectorial se ha

Introducción

8

demostrado como eficiente para la codificación de los parámetros LPC y, por ello, es ampliamente usada en los codificadores de voz modernos. A pesar de los progresos, la transmisión de los parámetros del espectro requiere entre 1 y 2 kbit/s, que es una importante parte del total de la tasa de bit para codificadores con baja tasa de bit. A pesar de que los precios de procesadores, memoria, etc. han disminuido en los últimos años y la velocidad de procesado ha aumentado, la importancia de la codificación y compresión de la voz no ha disminuido debido a la continua demanda del mercado de un uso más eficiente de los recursos hardware. Por ejemplo, las señales multimedia están formadas por un conjunto de diferentes señales que pueden presentarse secuencial o simultáneamente. Por tanto, la transmisión de señales de voz codificadas para aplicaciones multimedia implica que se debe compartir el canal con otras señales, de ahí el interés por perfeccionar los métodos de codificación.

1.2.1 Propiedades de los codificadores de voz La calidad de la voz generada a partir de un codificador está en función de la tasa de bit, la complejidad, el retraso y el ancho de banda del mismo; factores que habrá que tener muy presentes a la hora de confeccionar cualquier codificador de voz. Es importante darse cuenta de la fuerte interrelación que existe entre estos factores, siendo necesario, en muchas ocasiones, aceptar la degradación de uno o varios de ellos para conseguir la mejora de otro. Por ejemplo, los codificadores con una tasa de bit baja suelen tener un mayor retraso que los codificadores con una tasa de bit más alta. Además también suelen requerir una mayor complejidad y normalmente tienen peor calidad. Otros factores que influyen en la elección de un codificador son la disponibilidad del mismo y las condiciones de la licencia, o la manera en que está definido el estándar, ya que algunos sólo se describen como un algoritmo, mientras que otros tienen un código completo para su utilización. A continuación se verán cada uno de los factores de interés para los codificadores por separado [Cox y Kroon, 1996]:

1.2.1.1 Tasa de bit

Desde el momento en que los codificadores de voz comenzaron a compartir el canal con otro tipo de información, se hizo necesaria la utilización de la menor tasa de bit posible para no usar una parte excesiva del canal. Muchos codificadores trabajan a una tasa de bit fija, independientemente de las características de la señal de entrada, pero a la hora de compartir el canal con otro tipo de información es mejor hacer codificadores de tasa variable. Para aplicaciones que usan simultáneamente voz y datos se puede optar por usar un esquema de compresión de silencios como parte del estándar del código. Una solución bastante común es usar una tasa de bit fija cuando hay actividad vocal y una tasa baja para el ruido de fondo. La compresión de silencios consiste en dos algoritmos. Por una lado un detector de actividad vocal (VAD; Voice Activity Detector), que determina si la señal de entrada

Introducción

9

es realmente voz o ruido de fondo. Si el detector determina que la señal es vocal, se codifica a la tasa de bit fija. Por el contrario, si determina que es ruido lo codifica con una tasa de bit baja. Incluso hay veces en que no se transmite ningún bit. El segundo algoritmo es un generador de ruido (CNG; Comfort Noise Generation), que se usa en el receptor para reconstruir las principales características del ruido de fondo. Se usa esta señal de ruido, denominado comfort noise debido a que los oyentes prefieren un nivel bajo de ruido que el silencio. Obviamente la actuación del detector de voz es crítica para la calidad de la transmisión.

1.2.1.2 Retraso

Uno de los aspectos de diseño más importantes a la hora de implementar la voz es minimizar el retraso de extremo a extremo. El retraso es inherente a las redes de voz y es causado por el número de factores diferentes que intervienen en ellas. El retraso en un sistema de codificación de voz normalmente está formado por tres retrasos:

- Retraso algorítmico.- Muchos de los codificadores de voz con una tasa de bit baja procesan las tramas una a una. Los parámetros de la señal son actualizados y transmitidos para cada trama. Además, para analizar la información correctamente, a veces es necesario analizarla más allá de los límites de la trama. Este proceso se califica como procesado hacia delante. Esto significa que antes de analizar la señal de voz, es necesario almacenar una serie de información. El retraso que se tiene como consecuencia de esto recibe el nombre de retraso algorítmico. Este retraso es la única componente del retraso total que no se puede reducir cambiando la implementación. Los demás retrasos sí dependen de la implementación. Como este retraso algorítmico es inevitable para sistemas prácticos, debe ser tenido muy en cuenta al analizar los objetivos de retraso.

- Retraso debido al procesamiento.- Tiempo que emplea el codificador en analizar

la señal de voz y el decodificador en reconstruirla. Depende de la velocidad del hardware con el que se implemente el codificador.

- Retraso de la comunicación.- Tiempo que necesita una trama de información

para transmitirse desde el codificador al decodificador.

La suma de estos tres retrasos se denomina retraso del sistema en un sentido (one-way system delay). También se le conoce como latencia del códec. Valores máximos de hasta 400 ms pueden ser admisibles si no hay ecos, aunque es preferible que este retraso esté por debajo de los 200 ms. Si hay ecos, el máximo tolerable baja hasta los 25 ms. De ahí el frecuente uso de canceladores de eco. Una latencia de 500 ms para el recorrido completo es virtualmente inutilizable para una conversación de voz [Spanias, 1994].

Introducción

10

Si se calculan las latencias para tres códecs diferentes se obtiene lo siguiente:

Figura 6.- Comparación de la latencia para tres códec diferentes

Se observa cómo el retraso en el códec es el que marca la diferencia entre los tres. Los códecs con tasas de bit más bajas tienden a tener latencias mayores al ser sus algoritmos más complejos. De ahí que el que menor latencia tenga (81 ms) sea el de la recomendación G.711, que emplea la modulación PCM, teniendo una tasa de bit de 64 kbit/s. A continuación está el de la recomendación G.729, con una tasa de bit de 8 kbit/s, con una latencia de 90 ms y, por último, el de la recomendación G.723, con una tasa de bit de 5,3 kbit/s y una latencia de 110 ms [Lew, 2005]. Esta comparación se ha realizado tomando como referencia una red IP, de ahí la inclusión de los retraso de cola, tiempo desde que llega la trama o paquete hasta que se procesa y el jitter, que representa el grado de variabilidad que hay en la transmisión (tráfico de la red, número de fuentes…).

En muchas aplicaciones, como por ejemplo las teleconferencias, donde cada persona puede escuchar a todas las demás, es necesario decodificar cada una de las cadenas de bit, sumar las señales decodificadas y volver a codificar la señal suma. Esto hace que los retrasos se sumen, reduciendo, además, la calidad de la señal, debido a las múltiples codificaciones. En sistemas en cascada el máximo retraso tolerable para cada sistema individual es menor, ya que al unirlos, los retrasos se suman.

1.2.1.3 Complejidad

Los codificadores de voz se implementan normalmente sobre un hardware con un propósito específico, como los chips de procesamiento digital de señales (DSP;

Introducción

11

Digital Signal Processor). Sus características se pueden medir en función de la velocidad computacional, medida en millones de instrucciones por segundo (MIPS), la memoria RAM (Random Access Memory) y la memoria ROM (Read Only Memory). A la hora de hacer un codificador de voz para cualquier aplicación, el diseñador debe decidir qué cantidad de estos recursos consume. Los codificadores que requieren menos de 15 MIPS se consideran de baja complejidad, mientras que si requieren 30 MIPS o más se consideran de complejidad alta. El requerir más o menos memoria RAM ó ROM conlleva que el chip resulte más o menos caro. Desde el punto de vista del diseñador una mayor complejidad conlleva un mayor coste y una mayor necesidad de consumo de potencia. Para aplicaciones portátiles, un mayor consumo de potencia implica la reducción del tiempo entre recargas, o el uso de baterías más grandes, lo que significaría mayor coste y peso. De aquí la importancia de la complejidad del codificador.

1.2.1.4 Calidad

Una de las cosas más importantes es ver cómo de bien se escucha la señal codificada en presencia de condiciones ideales (señal de voz limpia, sin errores de transmisión y una única codificación). En la figura 7 se representa la relación entre la tasa de bit y la calidad de una señal de voz codificada una vez y sin ruido de fondo para los tres tipos de codificadores de voz más extendidos.

Figura 7.- Relación tasa de bit-calidad para los diferentes tipos de codificador

En la figura puede observarse cómo a medida que se disminuye la tasa de bit del codificador, disminuye la calidad de la señal de voz, aunque en la actualidad se puede disponer de codificadores con una tasa de bit bastante baja y una calidad casi equiparable a la de otros codificadores con tasas superiores [Janssen y Slump, 2001].

Introducción

12

Cada códec proporciona una cierta calidad de voz. La calidad de la voz transmitida es una respuesta subjetiva del oyente. Una medida común de referencia usada para determinar la calidad del sonido producido por códecs específicos es la Mean Opinión Store (MOS). En este test, un amplio grupo de oyentes juzgan la calidad de la muestra de voz, es decir, los oyentes califican de 1 (malo) a 5 (excelente) una frase codificada mediante un códec determinado. Los resultados son promediados para dar el valor MOS para la muestra. Un valor de 4 o superior se considera calidad perfecta o calidad “toll”, que viene a decir que la señal de voz reconstruida no se puede prácticamente distinguir de la señal de voz original.

MOS Calidad Clasificación de la voz

1 Mala

2 Pobre Voz artificial

3 Media Comunicaciones

Red digital mejorada 4 Buena

5 Excelente Transparente

Tabla 1.- Medida subjetiva de la calidad de la voz

A la hora de elegir codificador es fundamental adaptarlo a la finalidad para la que se va a emplear. Uno de los principales inconvenientes es la distorsión de la señal debido a las múltiples codificaciones (llamadas codificaciones tándem). Por ejemplo, cuando una señal de voz G.729 es codificada tándem 3 veces, el valor MOS baja de 3,92 (buena) a 2,68 (inaceptable para la comunicación).

1.2.2 Tipos de algoritmos de codificación de voz Los distintos algoritmos de codificación tratan de eliminar la redundancia de la señal y así poder reducir al mínimo el número de bits usados para codificar cada muestra. Un método de codificación se evalúa con las siguientes características:

- Velocidad de transmisión (“bit rate”) - Calidad de la voz reconstruida. - Complejidad de la implementación - Retardo introducido - Robustez ante la aparición de errores en el canal o interferencias acústicas.

Los codificadores de voz se pueden encuadrar dentro de tres grandes categorías: codificadores de forma de onda, vocoders y codificadores híbridos. Los codificadores de forma de onda intentan aproximar directamente la forma de onda de la señal original. La señal reconstruida puede o no parecerse a la señal original. Los vocoders, por su parte, intentan aproximar el sonido, por lo que la forma de onda de la señal reconstruida

Introducción

13

puede o no parecerse a la original. A los codificadores que emplean propiedades de los codificadores de forma de onda y vocoders se les llama codificadores híbridos. A continuación se muestra una clasificación de los codificadores [Koo, 2002].

Tipo Algoritmo de codificación Codificadores de forma de onda

PCM (Pulse-Code Modulation), APCM (Adaptive PCM) DPCM (Differential PCM), ADPCM (Adaptive DPCM) DM (Delta Modulation), ADM (Adaptive DM) CVSD (Continuously Variable-Slope DM) APC (Adaptive Predictive Coding) SBC (Subband Coding) ATC (Adaptive Transform Coding)

Codificadores híbridos MPLP (Multipulse-Excited Linear Prediction) RPE (Regular Pulse-Excited linear prediction) RELP (Residual-Excited Linear Prediction) VSELP (Vector-Sum Excited Linear Prediction) CELP (Code-Excited Linear Prediction) ACELP (Algebraic CELP) CS-ACELP (Conjugated Structure ACELP)

Vocoders Canal, Formante, Fase, Cepstral o Homomórfico LPC (Linear Predictive Coding) MELP (Mixed-Excitation Linear Prediction) STC (Sinusoidal Transform Coding) MBE (Multiband Excitation), MBE mejorada

Tabla 2.- Clasificación de los codificadores más importantes

1.2.2.1 Codificadores de forma de onda

La base de los codificadores de forma de onda es que la envolvente de la señal

reconstruida se parezca lo máximo posible a la de la señal original, sin ningún tipo de información sobre cómo se generó la señal a codificar. Por lo tanto, en teoría, este tipo de decodificadores deberían ser independientes de la señal de entrada y trabajar para todo tipo de señales, tanto vocales como no vocales. Los codificadores de forma de onda producen una buena calidad de la señal de voz con tasas de bit alrededor de 16 kbit/s, presentando una degradación aceptable en presencia de ruido y errores de transmisión. Sin embargo, al disminuir la tasa de bit por debajo de 16 kbit/s, la calidad de la señal se deteriora rápidamente. Para obtener la misma calidad que los vocoder necesitan trabajar con tasas de bit superiores a éstos. Hay dos tipos de codificadores de forma de onda, que son:

- Codificadores en el dominio del tiempo. Existen distintas técnicas de codificación según la forma de transmisión de la información de la señal digital. Se puede transmitir en la amplitud de los pulsos (PAM, Pulse Amplitude Modulation), en la posición (PPM, Pulse Position Modulation), en la anchura (PWM, Pulse Width Modulation), etc. La técnica más ampliamente utilizada es la conocida como modulación por código pulsado, PCM (Pulse Code

Introducción

14

Modulation), en la que se realiza un muestreo y cuantización de la señal de entrada, es decir de la señal de voz original. Otras técnicas muy usadas se basan en que existe una considerable correlación entre muestras adyacentes y lo que se transmite es la diferencia respecto a la muestra anterior. Se predice la siguiente muestra a partir de la anterior. Pueden ser DPCM (Differential Pulse Code Modulation) y ADPCM (Adaptative Differential Pulse Code Modulation). A este tipo de codificadores que emplean predictores se les denomina codificadores predictivos.

- Codificación en el dominio de la frecuencia. Puede ser a su vez por sub-banda y

por transformada. Para el caso de sub-banda se divide la señal en un número de componentes en frecuencias separadas y se codifican independientemente. El número de bits asignados a cada banda depende de su importancia espectral. Generalmente en el caso de la voz, se usan más bits para las frecuencias bajas con el fin de preservar el pitch y la información de los formantes.

Por otra parte, la codificación de la forma de onda en el dominio de la frecuencia por transformada consiste en una transformación por bloques, de forma que se realiza una transformación a un dominio diferente y se codifican los coeficientes de la transformación. Esta forma de codificación es muy compleja, y como ejemplos se tienen las técnicas DCT (Discrete Cosine Transform) y DFT (Discrete Fourier Transform).

1.2.2.2 Vocoders Los vocoders (Voice Coders) intentan generar una señal de voz que suene igual que la original, independientemente de si la forma de onda se parece o no. En el emisor se analizan la señal de voz y se extraen los parámetros del modelo y la excitación. Estos parámetros son cuantizados y transmitidos al receptor, donde la señal de voz se reconstruye en base a ellos. Por esta razón, a los vocoders también se les llama codificadores paramétricos. Los vocoders pueden, por norma general, conseguir una mayor compresión de la voz que los codificadores de forma de onda, sin embargo, se les reconoce por la calidad artificial o innatural de la voz que generan, excepto por las recientes mejoras efectuadas en algunos, como por ejemplo el MELP. El vocoder más utilizado es el de predicción lineal LPC (Linear Predictive Code), que supone que cada muestra puede obtenerse a partir de una combinación lineal de las anteriores, aceptándose un filtro todo polo para modelar el tracto vocal. La expresión para realizar la decodificación sería la siguiente:

∑=

−=p

kknkn sas

1

(1.1)

donde sn es la muestra actual, sn-k son las muestras precedentes, ak son los coeficientes del filtro, que se calculan para minimizar el error de la muestra actual y su predicción, y p es el orden del filtro.

Introducción

15

El método LPC ha sido empleado desde hace mucho tiempo. La compañía Texas Instruments desarrolló un circuito integrado PMOS monolítico con un sintetizador de voz allá por el año 1978 [Ozun et al., 2002]. Este hecho constituyó la primera vez que el tracto vocal humano era duplicado electrónicamente en un solo chip de silicona. Este primer sintetizador de voz se basó en el análisis LPC para realizar la síntesis con éxito. Permite codificar la voz con tasas de bits bajas. Para un LPC de orden 10 la tasa de bit ronda los 2,4 kbit/s. Aunque el método da como resultado una señal de voz que suena artificial, es inteligible. Este método tiene extensos usos en aplicaciones militares, donde una calidad alta de la voz no es tan importante como una tasa baja de bit para permitir una fuerte encriptación de la información. Sin embargo, el mercado comercial requiere una alta calidad de la señal de voz y se han buscado otras técnicas para mejorarla, que normalmente incluyen un aumento de la tasa de bit.

1.2.2.3 Codificadores híbridos Los codificadores híbridos son una mezcla de los dos tipos anteriores, mezclando la alta capacidad de compresión de los vocoders con la gran calidad de reproducción de los codificadores de forma de onda. Producen una señal de buena calidad con tasas de bit medias o bajas. Utilizan un modelo paramétrico de producción de voz y tratan de preservar las partes más importantes, perceptualmente hablando, de la forma de onda de la señal de entrada. Existen varios tipos:

- RELP (Residual Excited Linear Prediction). Cuando la señal de voz se pasa a través de un predictor lineal se elimina la correlación entre tramas. Si la predicción es bastante buena, la salida del predictor será aproximadamente ruido blanco, espectralmente plano. El residuo contiene toda la información de excitación y cualquier información que el filtro LPC no considera (fase, información de pitch, nasalidad, etc.). La idea del RELP es que una pequeña parte del residuo se transmite y a partir de él se reconstruye el residuo completo en el receptor.

Aunque el concepto de codificación residual se usa también en ADPCM, RELP

es diferente en el hecho de que la codificación del residuo se basa en el espectro en lugar de en la forma de onda. RELP opera en el rango de 6 a 9,6 kbit/s.

- MPLP (Multi_Pulse Linear Prediction). Los vocoders clasifican los sonidos en

sonoros y no sonoros, pero no consideran una mezcla de ambos, por lo que su calidad es baja. Para solucionar este problema se utiliza el codificador multipulso.

El período de pitch produce una correlación de retardo largo que no se elimina con el filtro LPC. Esta correlación puede hacerse desaparecer usando un segundo predictor lineal, llamado predictor de pitch o filtro de pitch, cuya expresión es la siguiente:

( ) ∑ −−−=

i

iMi zzP β1 (1.2)

Introducción

16

donde βi son los coeficientes del filtro, M es el factor que tiene en cuenta el retardo de término largo e i varía entre uno y el orden del filtro. La salida de este predictor es aproximadamente ruido gaussiano. En este codificador se pasa a los dos filtros una serie de impulsos (entre cuatro y seis) como excitación. Las posiciones y amplitudes se determinan usando un procedimiento de análisis por síntesis, consistente en elegir el conjunto de impulsos que produce el menor error entre la señal original y la reconstruida a partir de ellos. La calidad de los codificadores MPLP es muy buena a partir de tasas de bit de 9,6 kbit/s.

Una variación del codificador MPLP consiste en elegir como secuencia de excitación patrones de pulsos regularmente espaciados. Es el codificador llamado RPE (Regular Pulse Excitation), que es usado en GSM. Un factor típico de espaciado de los pulsos es 3-4, siendo actualizada la posición del primer pulso cada 5 ms. El número de pulsos existentes cada 5 ms es del orden de 10-13, obteniéndose sus amplitudes mediante la resolución de un conjunto de ecuaciones lineales.

- CELP (Code Excited Linear Prediction). En este codificador la secuencia de

excitación del filtro de pitch se elige de lo que se conoce como “diccionario”. El diccionario está formado por un conjunto de secuencias de ruido blanco gaussiano, cada una identificada por un índice dentro del mismo. Se realiza un proceso de análisis por síntesis para determinar la secuencia de ruido y las ganancias óptimas. Al receptor, por tanto, sólo se le envía el índice del diccionario y la ganancia. Este tipo de codificadores consigue buena calidad de voz a 4,8 kbit/s, aunque presenta el inconveniente de que la búsqueda en el diccionario requiere mucha carga computacional.

1.2.2.4 Otros codificadores

Existen otros tipos de codificadores con diferentes métodos de codificación, como por ejemplo, los codificadores de subbanda, donde la señal de entrada se filtra a través de un banco de filtros sintonizados a diferente frecuencia. Este tipo de codificadores no son muy usados para codificar voz, ya que es muy difícil obtener una buena calidad de la voz con una tasa de bits relativamente baja. De ahí que sólo se emplee para aplicaciones de codificación de voz con tasas de bits medias o altas.

1.2.2.5 Sistemas de codificación usados en la práctica

Los sistemas de codificación más utilizados en la práctica para las diferentes redes existentes son [Gómez et al., 2001]:

Introducción

17

1.2.2.5.1 Red GSM

- Codificación Half Rate (5,6 kbit/s). - Codificación Enhace Full Rate (12,2 kbit/s). - Codificación Full Rate (13 kbit/s).

1.2.2.5.2 Red UMTS

Se utiliza la codificación Adaptative Multi Rate (AMR) (variable de 12,2 kbit/s a

4,75 kbit/s). Este codificador se va a usar en los servicios móviles de tercera generación denominados IMT-2000 (en telecomunicaciones móviles internacionales).

Dentro de este sistema se encuentra el estándar europeo denominado UMTS (Sistema Universal de Telecomunicaciones Móviles) que utiliza este codificador.

1.2.2.5.3 Red telefónica fija

Codificación Ley-A para telefonía fija, norma G.711 (64 kbit/s).

1.2.2.5.4 Internet (voz sobre IP, VoIP)

- Codificación G.711 (64 kbit/s) - Codificación G.722 (ADPCM, 64 kbit/s) - Codificación G.728 (16 kbit/s) - Codificación G.729 (8 kbit/s) - Codificación G.723.1 (5,3 kbit/s y 6,3 kbit/s)

Por último, se presenta una tabla comparativa de los estándares y codificaciones más utilizados, comparando las características más importantes de cada uno de ellos [Wong et al., 1996]:

Introducción

18

Standard Año Tipo de código Tasa de bit

(kbit/s) MOS

Retraso alg. (ms)

ITU-G.711 1972 PCM 64 4..3 0.125

ITU-G.721 1984 ADPCM 32 4.0 0.125

ITU-G.726 1991 VBR-ADPCM 16, 24, 32 y 40 2.0, 3.2, 4.0 y 4.2 0.125

ITU-G.727 1991 Embedded-ADPCM 16, 24, 32 y 40 — 0.125

ITU-G.728 1992 LD-CELP 16 4.0 0.625

Inmarsat-B APC 9.6/16 Comunicación 20

GSM Full-rate 1989 LTP-RPE 13 3.7 20

GSM-EFR 1995 ACELP 13 4.0 20

Skyphone 1989 BT-MPLPC 8.9 3.5 28

DAMPS Full-rate IS54 1991 VSELP 7.95 3.6 20

ITU-G.729 1995 CS-ACELP 8 4.0 15

IS-96 1991 Qualcomm CELP 1, 2, 4 y 8 3.5 —

JDC Japanese Full-rate VSELP 6.7 Comunicación 20

GSM Half-rate 1994 VSELP 5.6 3.5 24.375

ITU-G.723 1995 A/MP-MLQ CELP 5.27/6.3 Comunicación 37.5

American DOD FS1016 1990 CELP 4.8 3.0 45

TETRA 1994 ACELP 4.56 Comunicación 35

Inmarsat-M 1990 IMBE 4.15 3.4 78.75

JDC Japanese Half-rate 1993 PSI-CELP 3.45 Comunicación 40

American DOD FS1015 1984 LPC-10 2.4 sintética 22.5 (mínimo)

Tabla 3.- Comparación de estándares más usados

Revisión teórica

19

2 Revisión teórica

2.1 Codificación de voz mediante predicción lineal

2.1.1 Introducción Muchos de los modernos codificadores de señales de voz (entre ellos el codificador objeto de este estudio) están basados en un modelo de filtro fuente de producción de voz en los seres humanos. En dichos códigos un filtro de síntesis, que modela a grandes rasgos el tracto vocal humano, es atravesado por una señal de excitación, que esencialmente modela el flujo de aire a través de las cuerdas vocales. El filtro de síntesis se puede modelar usando predicción lineal. La tasa a la que la forma del tracto vocal cambia está limitada, y normalmente una actualización cada 50 Hz es suficiente para que el modelo dé resultados aceptables. Por ello, el análisis LP se realiza generalmente una vez cada trama de 20 ms, es decir, si se trabaja con una frecuencia de muestreo de 8000 Hz, las ventanas serían de 160 muestras. Este enventanado, necesario para el cálculo por bloques ó tramas de los parámetros LP, es el responsable del retardo que introducen estos esquemas de codificación en la transmisión de la señal de voz. Por ello, casi todos los esquemas de codificación mediante predicción lineal utilizan ventanas asimétricas que evitan el aumento de ese retardo.

Revisión teórica

20

Figura 8.- División de una señal vocal en tramas

Antes de poder extraer los parámetros de una señal de voz, es necesario tener un modelo teórico del análisis a realizar. En el procesado de voz se usa un modelo de filtro fuente de producción de voz. Un diagrama de bloques simplificado se muestra en la figura 9. En este modelo, la señal de excitación se modela, bien como un tren de pulsos, para señales sonoras, bien como ruido aleatorio, para señales no sonoras. Las contribuciones espectrales combinadas de la glotis, el tracto vocal y de la posición de los labios se representa mediante un filtro digital variante en el tiempo.

Figura 9.- Diagrama de bloques del modelo simplificado de producción de voz A continuación puede verse cómo sería todo el proceso gráficamente, tanto para una señal sonora, a partir de un tren de pulsos, (figura 10) como para una señal no sonora, a partir de una señal aleatoria (figura 11):

Generador de tren de impulsos

Generador de ruido aleatorio

Periodo de pitch

Filtro variante en el tiempo

Señal de Salida

Ganancia

Coeficientes LPC

Interruptor Sonoro/no Sonoro

Revisión teórica

21

Figura 10.- Representación gráfica de una señal sonora al atravesar el diagrama de producción de voz en el espacio del tiempo y la frecuencia. En primer lugar, el tren de pulsos, después el

filtro LP (variante en el tiempo) y por último el resultado de pasar el tren de pulsos por el filtro, que sería la señal de voz

Figura 11.- Representación gráfica de una señal no sonora al atravesar el diagrama de producción de voz en el espacio del tiempo y la frecuencia. En primer lugar, una señal aleatoria, después el filtro LP (variante en el tiempo) y por último el resultado de pasar la señal aleatorias

por el filtro, que sería la señal de voz

Revisión teórica

22

2.1.2 Desarrollo matemático

La idea básica del análisis mediante predicción lineal es que la muestra de voz actual se puede aproximar por una combinación lineal de las p muestras anteriores, esto es [Kondoz, 1994]:

( ) ( )∑=

−=p

kk knsans

1

~ (2.1)

donde s(n) y ( )ns~ son la muestra de voz original y la muestra de voz predicha en el instante de tiempo discreto n, p es el orden del análisis y a1,…, ap son los coeficientes de predicción lineal ó coeficientes LPC. El orden p del sistema se elige de forma que la estimación de la envolvente del espectro sea adecuada. Una regla común es permitir un par de polos para cada formante del espectro. Para una señal muestreada a 8 kHz, el valor de p suele ser 10. La función de transferencia H(z) del modelo de predicción lineal de la señal de voz se conoce como filtro de predicción lineal ó filtro todo polo de la señal, y es

( ) ( )zA

GzH = (2.2)

donde G es la ganancia y el filtro A(z) se conoce como el filtro inverso ó blanqueador de H(z), definido como

( ) ∑=

−−=p

k

kk zazA

1

1 (2.3)

Los coeficientes LPC se pueden resolver usando, por ejemplo, el método de autocorrelación. Este método da lugar a una matriz de autocorrelación que tiene una estructura de Toeplitz y, de esta forma, los coeficientes LPC se pueden resolver a través de algoritmos computacionalmente rápidos como el de Levinson-Durbin. Se resolvería como sigue: Si se pasa la ecuación (2.3) al dominio del tiempo (muestral), se obtiene una ecuación conocida como ecuación LPC diferencial:

( ) ( )( ) ( ) ( ) ( )∑

=

−+=→←=p

kk knsansns

zS

zSzH

1

~~~

(2.4)

Si se considera una estimación de los parámetros ak, el error ó residuo del sistema viene dado por:

( ) ( ) ( ) ( ) ( )∑=

−−=−=p

jj jnsansnsnsne

1

~ (2.5)

donde los parámetros aj son las estimaciones de los coeficientes del filtro LPC, ak.

Revisión teórica

23

Es posible determinar esas estimaciones de los coeficientes del filtro, minimizando el error cuadrático medio, que se obtiene a partir del error dado en la ecuación (2.5).

( ){ } ( ) ( ) ( ) ( )∑ ∑∑

−−=

−−Ε=Ε=

== n

p

jj

p

jj jnsansjnsansneE

2

1

2

1

2 (2.6)

Para minimizar este error cuadrático medio se calcula la derivada parcial de E respecto a ai y se iguala a cero para valores de i desde i = 1,…., p.

( ) ( ) ( ) piparainsjnsansa

E p

jj

i

,...,101

==

−⋅

−−Ε=

∂∂

∑=

(2.7)

Las representaciones de la señal de voz original y del error de predicción lineal pueden verse en las figuras 12 y 13. Se puede apreciar cómo se ha eliminado gran parte de la redundancia de la señal, si bien todavía se aprecia una cierta periodicidad. En el dominio de la frecuencia puede verse que el espectro es más plano que el original.

Figura 12.- Señal de voz original y error de predicción lineal en el tiempo

Figura 13. Señal de voz original y error de predicción lineal en la frecuencia

Revisión teórica

24

Esta igualdad implica que la señal error, e(n), y la señal de salida, ( )ns , son ortogonales para i = 1,…, p. Se puede rescribir la ecuación, introduciendo la correlación,

( ) ( ) ( )[ ] ( ) ( )( ) ( ) ( )[ ] ( ) ( )insjnsinsjnsji

yinsnsinsnsi

n

n

−⋅−=−−Ε=−⋅=−Ε=

,

0,

φφ

(2.8)

y, sustituyendo en la ecuación (2.7)

( ) ( ) piparaijia n

p

jnj ,...,10,,

1

==∑=

φφ (2.9)

Si se asume que la señal del modelo es estacionaria, lo cual viene a ser una aproximación realista para segmentos de voz pequeños, se pueden acotar los sumatorios al calcular la correlación.

( ) ( ) ( ){ } ( ) ( )∑ ==−−=−−=m

nnn pjpiparajmsimsjnsinsEji ,...,0,,...,1,,φ (2.10)

Para resolverlo se usará la aproximación del método de autocorrelación, anteriormente comentada, ya que es el más empleado y el que se usará a la hora de implementar el codificador. Si se toma un segmento de la señal, fuera del intervalo comprendido por el segmento que se está analizando, 0 ≤ m ≤ L-1, los valores serán 0. (L es el tamaño de la trama del análisis LPC). Como se intenta predecir los valores de las muestras L ≤ m ≤ L+p, que son cero para el segmento actual, el error de predicción no será cero para esas muestras. Igualmente, el principio de la trama actual puede verse afectado, por la misma razón, por los errores en la trama anterior. Si tenemos en cuenta que lo que se quiere es predecir las tramas futuras, los límites de la ecuación (2.10) pueden ponerse de la siguiente manera:

( ) ( ) ( ) pjpijnsinsjipL

n

≤≤≤≤−−= ∑−+

=

0,1,,1

0

φ (2.11)

Tomando inm −= , la ecuación se puede expresar como

( ) ( ) ( )∑−−−

=

−+=)(1

0

,kiL

m

jimsmsjiφ (2.12)

Por lo tanto, ( )ji,φ es la autocorrelación de corto plazo de ( )ms evaluada para

( )ji − . Esto es: ( ) ( )jiRji −=,φ (2.13) donde

Revisión teórica

25

( ) ( ) ( ) ( ) ( )∑ ∑−−

=

=

−=+=jL

n

L

jn

jnsnsjnsnsjR1

0

1

(2.14)

Por lo tanto, el conjunto de p ecuaciones de (2.9) se puede expresar como

( ) ( )∑=

==−p

jj piiRjiRa

1

...,,1, (2.15)

La ecuación de arriba se expresa en forma matricial

( ) ( ) ( ) ( )( ) ( ) ( ) ( )( ) ( ) ( ) ( )

( ) ( ) ( ) ( )

=

−−−

−−−

)(

)3(

)2(

)1(

0321

3432

2321

1210

3

2

1

pR

R

R

R

a

a

a

a

RpRpRpR

pRRRR

pRRRR

pRRRR

p

MM

L

MOMMM

L

L

L

(2.16)

La matriz pxp de los valores de la autocorrelación es una matriz simétrica de Toepliz, es decir, todos los elementos de cada una de las diagonales son iguales. Esta propiedad especial puede ayudarnos a obtener un algoritmo eficiente para solucionar la ecuación (2.16). La solución más eficiente es un método recursivo conocido como algoritmo de Levinson-Durbin, que es el siguiente:

( ) ( )

( ) ( ) ( )

( )( )

( ) ( ) ( )

( ) ( ) ( )11

11

1

1

00

2

11

1

1

1

−−=

−=−=

=−

=

==

−−

=

−∑

iEkiE

akaa

ihastajDesde

ka

iE

jiRaiR

k

phastaiDesde

RE

i

ijii

ij

ij

ii

i

i

j

ij

i

(2.17)

La solución final viene dada como: ( ) pjaa p

jj ,...,1== (2.18)

La cantidad ( )iE del algoritmo es el error de predicción de un predictor de orden i. Las cantidades intermedias ki se conocen como coeficientes de reflexión. Los valores de los coeficientes de reflexión están en el rango: 11 ≤≤− ik (2.19)

Revisión teórica

26

Esta condición impuesta a los coeficientes de reflexión es suficiente para que todas las raíces del polinomio ( )zA estén dentro del círculo unidad, garantizando de

esta manera la estabilidad del sistema ( )zH . Existen otros métodos para la resolución de la ecuación (2.4) como son: el método de la covarianza, donde se minimiza el error E de la ecuación (2.6) sobre un intervalo finito; el método lattice de covarianza, que calcula los coeficientes de reflexión directamente de las muestras de la señal. La cuantificación y transmisión de los parámetros LP debe hacerse asegurando tanto la estabilidad del filtro de síntesis (para evitar generar ruidos de alta intensidad en el receptor), como la facilidad en la interpolación entre parámetros de tramas consecutivas (que permite aumentar la naturalidad de la voz decodificada). Ambas condiciones se obtienen recurriendo al uso de parámetros LP equivalentes, como son los Logaritmos de las Relaciones de Área (LAR) ó los Pares de Línea Espectrales (Line-Spectrum Frecuencias, LSF). Son estos últimos, los coeficientes LSF, los que se utilizan en todos los estándares posteriores al GSM 6.10 (Full Rate, FR), ya que aportan ventajas algorítmicas claras para ser cuantizados vectorialmente y, de esta forma, permiten reducir la tasa binaria necesaria para su transmisión, sin introducir degradaciones perceptibles en la voz decodificada. Casi todos los estándares de codificación de voz que se han aprobado en los últimos años se basan en la codificación mediante la predicción lineal, basada en el análisis por síntesis. Dentro de este tipo de codificadores podemos incluir a los de las recomendaciones de la ITU G.729 (que se ampliará más adelante), G.728 y G.723.1; y todos los estándares que se emplean actualmente en la tecnología digital celular, tanto en Europa (GSM full-rate, half-rate y enhanced full-rate), Norteamérica (full-rate y enhanced full-rate para sistemas por división en el tiempo (TDMA), o por división en células (CDMA)) y Japón (full-rate y half-rate) [Gutiérrez et al.,2001].

Revisión teórica

27

2.2 Coeficientes LSF

2.2.1 Definición y características El principal objetivo del proceso de cuantización de los coeficientes LPC es su codificación con el menor número de bits posibles sin introducir distorsión adicional en su espectro. Desde los inicios de la codificación de las señales de voz se han empleado varios métodos de cuantización para los coeficientes LP. Se han establecido una serie de características que debe cumplir una representación ideal. En primer lugar, es necesario que el filtro de predicción lineal permanezca estable después de la cuantización. Segundo, la representación debe ser reversible de forma que el filtro original se pueda recuperar de la transformación. Tercero, un pequeño error en los parámetros se debe corresponder con una pequeña desviación del espectro de potencia LP, es decir, los parámetros deben tener sensibilidad espectral propia. A lo largo de los años se han propuesto diversas representaciones desde los primeros estudios sobre representaciones alternativas para los coeficientes de predicción lineal allá por finales de los setenta. Uno de los primeros estudios, realizado por Gray et al. en 1977 comparaba los coeficientes de reflexión, los coeficientes LAR (Logarithmic Area Ratio) y el arcocoseno de los coeficientes de reflexión, y demostraba que los dos últimos eran igualmente buenos para la cuantización, mientras que los coeficientes de reflexión daban resultados ligeramente más pobres.

A partir de los años 80 el método de parametrización más empleado para la cuantización de los parámetros del filtro LP es la representación mediante coeficientes de pares del espectro en frecuencia (LSF) que, debido a sus propiedades, ofrece más ventajas que las representaciones anteriormente comentadas, tanto para la cuantización escalar como para la vectorial. Según diversos estudios puede llegar a reducir la tasa de bit entre un 25 y un 30 % con respecto a las demás [Zheng et al., 1999].

La representación mediante pares del espectro de frecuencia (LSF), también

conocida como representación mediante pares del espectro lineal (LSP), dependiendo del dominio en el que se trabaje, fue propuesta por Itakura [Itakura, 1975] como una representación paramétrica alternativa de los coeficientes de predicción lineal. La representación LSF, tiene numerosas cualidades, entre las que destacan un rango limitado, un orden secuencial de los parámetros y una simple revisión de la estabilidad del filtro, lo que la hace interesante para la cuantización. Además, la representación LSF es una representación en el dominio de la frecuencia y, por lo tanto, puede usarse para explotar propiedades de los sistemas de percepción humana. Puede comprobarse que de dos a tres parámetros LSF caracterizan la frecuencia de un formante y que el ancho de banda de éste depende de la cercanía de los correspondientes parámetros LSF. Por otro lado, los parámetros LSF aislados afectan a la caída ó inclinación del espectro. Este comportamiento puede verse en la figura 14.

Revisión teórica

28

Figura 14.- Espectro de frecuencia de un tramo de voz con la posición de los coeficientes LSF

Los coeficientes LSF son 417, 735, 881, 1198, 1343, 1720, 2402, 2654, 3047 y 3409 Hz

Otro detalle a destacar es que durante los fonemas sonoros los parámetros LSF varían solo ligeramente, sin embargo, durante los fonemas sordos pueden variar rápidamente. Es más, durante los cambios de fonemas sordos a sonoros ó de sonoros a sordos puede haber cambios considerables en el espectro. Incluso durante los silencios entre fonemas los parámetros LSF varían considerablemente. Resumiendo, tanto el espectro de la señal de voz como los parámetros LSF tienen partes redundantes, junto con partes impredecibles y que cambian rápidamente. Este fenómeno se observa principalmente en los parámetros LSF más bajos, que se mantienen más o menos en el mismo estado durante cientos de milisegundos y de repente cambian a otros. Sin embargo, hay que tener en cuenta que estos fenómenos son claramente observables en ambientes carentes de ruido, en ambientes ruidosos no son siempre tan evidentes. Otra de las características importantes de los parámetros LSF es su sensibilidad espectral localizada, de la cual carecen otras representaciones como la representación mediante coeficientes de reflexión ó mediante logarithmic area ratios (LAR). Puede demostrarse que modificando ligeramente uno de los parámetros LSF se produce un cambio en la respuesta en magnitud solo en las frecuencias cercanas a la frecuencia del parámetro modificado. En este punto, hay que tener en cuenta que si la modificación introducida en el parámetro LSF es del orden de la distancia que lo separa de los parámetros más cercanos al mismo, toda la respuesta en magnitud sufre variaciones.

Revisión teórica

29

Figura 15.- Efecto de la variación de los coeficientes LSF en el espectro de la señal

Se ha marcado en azul la posición original de cada uno de los dos coeficientes modificados y en color verde y rojo donde quedarían esos coeficientes tras la modificación

Esta propiedad de los parámetros LSF tiene diversas ventajas:

- En primer lugar, la representación mediante parámetros LSF tolera pequeños

errores en los mismos, es decir, pequeños errores tienen una repercusión pequeña en la respuesta en magnitud del correspondiente filtro LP.

- Cada uno de los parámetros de un vector LSF puede ser cuantizado

independientemente sin filtraciones de distorsión en la cuantización de una región espectral a otra.

- Se pueden dar pesos diferentes a cada uno de los parámetros LSF en función de

la importancia en el espectro de la señal de voz. Generalmente las áreas de los formantes, los picos, son más importante que los valles del espectro y, por ello, se le puede dar mayor peso a las frecuencias espectrales cercanas a los formantes.

El oído humano no es capaz de distinguir diferencias a altas frecuencias

con tanta precisión como a bajas frecuencias, lo que nos permite cuantizar los parámetros LSF en frecuencias más altas con menos precisión que los que tienen frecuencias menores.

Revisión teórica

30

2.2.2 Conversión LP -> LSF Los coeficientes de filtro de predicción lineal (LP), ai, i = 1,…, 11, se convierten para los efectos de cuantificación e interpolación en coeficientes de pares del espectro lineal (LSP). El filtro inverso ( )zA asociado con el análisis LPC de orden p satisface la siguiente relación recursiva. ( ) ( ) ( ) pnzAzkzAzA n

nnnn ...,,1,1

11 =−= −−− (2.20)

con ( ) 10 =zA y nk siendo el coeficiente de reflexión de orden n. Si extendemos el orden

del filtro a 1+p la ecuación queda ( ) ( ) ( ) ( )11

11−+−

++ −= zAzkzAzA pp

ppp (2.21)

Si se toman en consideración las dos condiciones límite 11 =+pk y 11 −=+pk ,

que corresponden, respectivamente, a un completo cierre y a una completa apertura de la glotis, teniendo en cuenta el modelo acústico de la voz, se obtienen los polinomios:

( ) ( ) ( ) ( ) ( ) ( )11

12

22

11

11 1 +−−−−−−−+− ++++++=+= pppp zzpzpzpzpzAzzAzP K (2.22) para 11 −=+pk , y

( ) ( ) ( ) ( ) ( ) ( )1

11

22

21

111 1 +−−−−−−−+− −−−+++=−= pppp zzqzqzqzqzAzzAzQ K (2.23)

para 11 =+pk .

El polinomio ( )zP es simétrico y el polinomio ( )zQ es antisimétrico. Puede

demostrarse que ( )zA es de fase mínima (lo cual implica la estabilidad de ( )zH ) y que todas las raíces de estos polinomios se encuentran dentro del círculo unidad y se alternan entre sí. ( )zP tiene una raíz ( )πω =−= 1z , mientras que ( )zQ tiene una raíz

( )01 == ωz . Esto puede apreciarse en la figura 16.

( ) ( ) ( )( ) ( ) ( )∏

=

−−−

−=

−−−

+−−=

+−+=

pii

pii

zzqzzQ

zzpzzP

,...,4,2

211

1,...,3,1

211

211

211

(2.24)

Ambas raíces se eliminan al definirse dos nuevos polinomios a partir de los dos anteriores.

( ) ( ) ( )( ) ( ) ( )1

2

11

1

1−

−=

+=

zzQzF

zzPzF (2.25)

Revisión teórica

31

Figura 16.- Diagrama polo-cero de los vectores P(z) y Q(z)

Cada uno de estos polinomios tiene todas sus raíces (conjugadas) en el círculo unidad ( ie jω± ), que pueden expresarse como:

( ) ( )( ) ( )∏

=

−−

−=

−−

+−=

+−=

pii

pii

zzqzF

zzpzF

,...,4,2

212

1,...,3,1

211

21

21

(2.26)

donde ( ) ( )iiii fqp πω 2coscos === . Los coeficientes ( )ii fω son las frecuencias

espectrales de línea ó pares espectrales de línea (parámetros LSF) y satisfacen la propiedad de ordenación πωωω <<<<< pK210 . Los coeficientes ii qp = se

definen como coeficientes LSP en el dominio coseno.

Puesto que los polinomios F1(z) y F2(z) son simétricos, sólo es necesario calcular los primeros p/2 coeficientes de cada uno. Los coeficientes de éstos polinomios se obtienen mediante las relaciones recursivas:

( ) ( )( ) ( ) 12,...,01

12,...,01

212

111

−=+−=+

−=−+=+

−+

−+

piifaaif

piifaaif

ipi

ipi (2.27)

donde f1(0) = f2(0) = 1,0. Los coeficientes LSP se obtienen evaluando los polinomios F1(z) y F2(z) en 60 puntos igualmente espaciados entre 0 y π y controlando los cambios de signo. Todo cambio de signo implica la existencia de una raíz y el intervalo de cambio de signo se divide entonces cuatro veces, para permitir un mejor seguimiento de la raíz. Se utilizan los polinomios de Chebyshev para evaluar F1(z) y

Revisión teórica

32

F2(z). Por este método, las raíces se obtienen directamente en el dominio coseno. Los polinomios F1(z) y F2(z), evaluados en ωjez ±= , pueden expresarse como: ( ) ( )xCeF j ωω 52 −= (2.28) siendo ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 2)5(4321 12345 fxTfxTfxTfxTfxTxC +++++= (2.29)

donde Tm(x) = cos(mω) es el polinomio de Chebyshev de m-ésimo orden y f(i) ,i = 1,…, 5, representa los coeficientes de F1(z) o F2(z), calculados mediante la ecuación (2.28). El polinomio C(x) se evalúa para un determinado valor de x = cos(ω) mediante la ecuación recursiva:

( )

( ) ( ) 25

52

14

21

21

fbxbxC

fin

kfbxbb

adekpara

kkk

−−=

−+−==

++ (2.30)

siendo los valores iniciales b5 = 1 y b6 = 0.

Revisión teórica

33

2.3 Codificación predictiva mediante análisis por síntesis

2.3.1 Introducción Los codificadores de forma de onda proporcionan gran calidad de la señal de voz, pero solo trabajando con tasas de bit por encima de los 16 kbit/s. Los vocoders LPC, en cambio, operan a tasas de bit muy bajas, hasta 2 kbit/s, pero la calidad de la señal de voz sintetizada es bastante pobre. La principal limitación de los codificadores LPC es la consideración de que las señales de voz o son sonoras o son no sonoras, de ahí que la fuente de excitación de la señal de voz del filtro de síntesis de predicción lineal sea o un tren de pulsos (para señales sonoras) o un ruido aleatorio (para señales no sonoras). Esta consideración es una simplificación demasiado grande para conseguir una buena calidad de señal de voz. En 1982, Atal propuso un nuevo modelo de excitación conocido como excitación por multi-pulso (MPLPC), que usa un modelo parecido al de los codificadores de forma de onda y no requiere ningún conocimiento a priori sobre si la señal de voz es sonora o no sonora. La excitación se modela por un número de pulsos (normalmente 4 ó 5) cuyas a amplitudes y posiciones son determinadas mediante un proceso de optimización en bucle cerrado (minimizando el error porcentual ponderado entre la señal original y la sintetizada), y no usando el error entre el residuo y su versión cuantizada, como se hace en los codificadores que usan bucle abierto. La irrupción de ese modelo dio paso a una nueva generación de codificadores de voz por análisis mediante síntesis capaces de producir alta calidad de señal de voz a tasas de bit sobre 10 kbit/s, llegando incluso a los 4,8 kbit/s. Esta nueva generación de codificadores usa el mismo filtro de síntesis todo polo (fuente del modelo de producción de voz) que usaban los vocoders LPC. Sin embargo, la señal de excitación es cuidadosamente optimizada y eficientemente codificada usando técnicas de codificación de forma de onda. Todos los codificadores que utilizan análisis mediante síntesis comparten la misma estructura básica en la cual la excitación es calculada minimizando el error porcentual ponderado entre la señal de voz original y la señal sintetizada. La diferencia estriba en la forma de modelar la excitación. El modelo tiene una serie de parámetros que se pueden variar produciendo diferentes rangos en la señal de voz sintetizada. Variando los parámetros del modelo de una forma sistemática se puede obtener un juego de los mismos que produzca una señal sintetizada que coincida con la señal original salvo un mínimo error. La complejidad de estos codificadores aumenta a medida que disminuye la tasa de bit.

2.3.2 Codificación AbS genérica La estructura básica de un sistema de codificación LPC con análisis mediante síntesis se muestra en la figura 17:

Revisión teórica

34

(a) codificador

(b) decodificador

Figura 17.- Estructura de un sistema de codificación LPC con análisis mediante síntesis

Como el modelo requiere una frecuente actualización de los parámetros para conseguir la mayor coincidencia posible con la señal original, el análisis se lleva a cabo en bloques, es decir, la señal de voz de entrada se divide en bloques de muestras o tramas del tamaño apropiado. La longitud y actualización de los bloques de análisis ó tramas determina la tasa de bit del esquema de codificación. El modelo consta de 3 partes:

- Generador de excitación.- Produce la secuencia de excitación que se pasará por el filtro de síntesis para producir la señal reconstruida en el receptor. Como puede apreciarse en la figura 17 existe un decodificador incluido dentro del codificador. Para optimizar la excitación, el método de análisis usa la diferencia entre la señal de voz original y la sintetizada como un criterio de error, y elige la secuencia de excitación que minimiza ese error ponderado.

- Filtro(s) de síntesis. Pueden ser uno ó dos, dependiendo del codificador que se

trate. Son filtros de síntesis lineales variantes en el tiempo, ya que sus coeficientes se van cambiando en cada iteración del bucle. Por un lado, podemos tener, un predictor de síntesis de corto plazo (STP, Short Term Predictor), también llamado filtro de correlación de corto plazo, que modela la envolvente espectral de corto plazo de la forma de onda de la señal de voz. Por otro lado, está el predictor de largo plazo (LTP, Long term Predictor) para modelar la estructura fina del espectro de la señal de voz.

Generación de excitación

Filtro(s) de síntesis

u(n)

Señal de entrada

s(n)

Minimización de error

Ponderación de error

ew(n) e(n)

Generación de excitación

Filtro(s) de síntesis

u(n)

Señal de salida

Revisión teórica

35

- Minimizador de error.- Se minimiza la diferencia entre la señal original y la señal sintetizada. El criterio de minimización más usado es el error cuadrático medio (MSE). Generalmente se pasa el error por un filtro de ponderación perceptual que da forma al espectro del ruido haciendo que su poder se concentre en las frecuencias de los formantes del espectro de la señal de voz, por lo que el ruido queda enmascarado por la señal de voz.

El procedimiento de codificación incluiría los siguientes pasos:

(1) Se calculan los parámetros del predictor lineal de corto plazo (LPC) de una trama. (Se suelen tomar tramas de entre 10 y 30 ms).

(2) Se determina la secuencia de excitación óptima para este filtro minimizando el

error ponderado.

(3) Se divide la trama en subtramas (al ser, normalmente, demasiado grandes para un análisis eficiente de la excitación) y se calcula la excitación independientemente para cada una de ellas.

(4) Se extraen los parámetros de la señal de excitación (generalmente ganancia y

retraso)

(5) Se envían los parámetros del filtro de síntesis y la excitación cuantizados al receptor.

El procedimiento de decodificación se realiza pasando la señal de excitación decodificada a través del filtro de síntesis, proceso que da como resultado la señal de voz reconstruida. Cabe destacar cómo, tanto en el codificador como en el decodificador, se genera la señal de voz sintetizada. Esto es necesario para actualizar los contenidos de memoria de los filtros de síntesis. De no ser así, habría que transmitir esos contenidos de memoria al decodificador para que todo estuviera sincronizado. A continuación se verá con un poco más de detalle cada uno de los bloques que componen este método de análisis.

2.3.3 Predictor de corto plazo El predictor de corto plazo modela la envolvente espectral de corto plazo de la voz. La envolvente espectral de un segmento de voz de longitud L muestras se puede aproximar mediante una función de transmisión de un filtro digital todo-polo de la forma:

( ) ( ) ( )∑

=

−−=

−==

p

k

kk za

G

zP

G

zA

GzH

1

11 δ

(2.31)

Revisión teórica

36

donde

( ) ∑=

−=p

k

kk zazP

1δ (2.32)

es el predictor de corto plazo. Los coeficientes ak son los coeficientes del predictor o los parámetros LPC. El número de coeficientes p es el orden del predictor. Este filtro de análisis LP ya se estudió en el punto 2.1.

2.3.4 Predictor de largo plazo Mientras que el predictor de corto plazo modela la envolvente espectral del segmento de voz que está siendo analizado, el predictor de largo plazo, o predictor de pitch, se usa para modelar la estructura fina de esa envolvente. El filtrado inverso de la señal de voz de entrada elimina la envolvente del espectro de la señal, es decir, elimina algo de la redundancia de la voz tomando de la muestra de voz su valor predicho usando las p muestras anteriores. A esto se le denomina predicción de corto plazo si sólo las p muestras anteriores son usadas para predecir la muestra actual. Sin embargo, el residuo de esa predicción todavía muestra considerables variaciones en su espectro, es decir, está lejos de ser blanco. Viendo el residuo de la señal en la figura 18 está claro que todavía existen correlaciones de largo plazo entre muestras de la señal, especialmente en las regiones sonoras. Por tanto, aún existe alguna periodicidad (redundancia), relacionada con el periodo de pitch de la señal de voz original, que el análisis LP no puede eliminar. De ahí la necesidad de incluir una segunda etapa de predicción.

Figura 18. Error ó residuo del análisis de predicción

Añadiendo un predictor de pitch al filtro inverso se elimina esa redundancia en el residuo de la señal y éste se convierte en ruido. Se le llama predictor de pitch, ya que elimina la periodicidad de la señal, ó predictor de largo plazo, ya que su retraso está comprendido entre 20 y 160 muestras. Este predictor de largo plazo es básico en los

Revisión teórica

37

codificadores de voz con tasas de bit baja, como el CELP, donde la señal de excitación se modela con un proceso de producción Gaussiano y, por tanto, el predictor es necesario para asegurar que el residuo de la predicción sea lo más cercano posible a ruido aleatorio Gaussiano. Es importante darse cuenta de que la ganancia combinada de los dos sistemas de predicción será siempre menor que la suma de sus ganancias empleándolos por separado. Esto se debe a que en realidad el tracto vocal y la excitación están interrelacionados, no siendo completamente separables como se asume en este modelo. La forma general del filtro de correlación de largo plazo es

( ) ( ) ( )∑=

+−−=

−=

2

1

1

1

1

11m

mk

kk

l zGzPzP α

(2.33)

donde

( ) ( )∑=

+−=2

1

m

mk

kkl zGzP α (2.34)

es el predictor de largo plazo. Para m1=m2=0 se tiene un predictor de un tono, y para m1=m2=1 se tiene un predictor de 3 tonos. El retraso α normalmente representa el periodo de pitch. Los parámetros α y Gm se determinan minimizando el error residual cuadrático medio después de realizar las predicciones de corto y largo plazo sobre un periodo de N muestras. Para un predictor de un tono el residuo de predicción de largo plazo E viene dado por: ( ) ( ) ( )α−−= nGrnrne (2.35) donde ( )nr es la señal residuo después de la predicción de corto plazo. El residuo cuadrático medio E está dado por:

( ) ( ) ( )[ ]∑∑−

=

=

−−==1

0

21

0

2N

n

N

n

nGrnrneE α (2.36)

Igualando la derivada de E respecto a G a cero y despejando su valor,

( ) ( )

( )[ ]∑

∑−

=

=

−=

1

0

2

1

0N

n

N

n

nr

nrnrG

α

α (2.37)

y sustituyendo G en la ecuación (2.36) se obtiene

Revisión teórica

38

( )( ) ( )

( )[ ]∑

∑∑ −

=

=−

= −

−−=

1

0

2

21

01

0

2N

n

N

nN

n nr

nrnr

nrEα

α (2.38)

Minimizar E equivale a maximizar el segundo sumando de la ecuación, que representa la correlación normalizada entre el residuo ( )nr y su versión normalizada. Este término se calcula para todos los posibles valores de α dentro de un rango específico, y se toma el valor de α que lo maximiza. La energía ε en el denominador puede ser fácilmente actualizada desde el retraso ( )1−α a α en vez de calcularlo de nuevo mediante la ecuación (2.39), que requeriría mayor carga computacional. ( ) ( )Nrraa +−−−+= − ααεε 22

1 (2.39)

La estabilidad del filtro de síntesis de pitch ( )zP1 no siempre está garantizada.

Para un predictor de un tono, la condición de estabilidad es 1≤G . Por tanto, la

estabilidad del filtro se puede conseguir fácilmente fijando 1=G cuando 1>G . Sin

embargo, la inestabilidad de este filtro no es tan perjudicial para la calidad de la señal reconstruida. El filtro inestable permanece durante unas tramas (aumentando la energía), pero al final, se encuentran periodos con el filtro estable, por lo que la salida no continua aumentando con el tiempo. En el siguiente grupo de gráficas (figura 19), puede apreciarse como se va eliminando la parte redundante a la señal de voz original al paso por cada uno de los filtros ó predictores. Primero se representa la señal de voz original de un tramo sonoro. A continuación, el residuo LP, obtenido al pasar la señal de voz original a través del filtro de predicción lineal ó predictor de corto plazo. En él se elimina gran parte de la periodicidad (redundancia) de la señal, pero todavía puede apreciarse una cierta periodicidad. Y, por último el residuo LTP ó residuo de pitch, obtenido al pasar la señal de salida del predictor de corto plazo por el predictor de largo plazo ó predictor de pitch, que elimina casi por completo la redundancia de la señal original, quedando, prácticamente una señal de ruido aleatorio.

Revisión teórica

39

Figura 19.- Señal de voz original, residuo LP y residuo LTP

Revisión teórica

40

Cuando se usa el predictor de largo plazo, el esquema general del codificador queda de la siguiente manera:

(a) Codificador

(b) Decodificador

Figura 20.- Estructura de bloques de codificador y decodificador usando filtro LPC y filtro de

síntesis de pitch, mediante análisis por síntesis

Una mejora significativa se consigue cuando los parámetros LTP se optimizan dentro del bucle de análisis mediante síntesis; es la aproximación por códigos adaptativos. En el bloque de la figura 20, los parámetros LTP se podían calcular fuera del bucle de minimización del error (directamente de la señal residuo LPC). Con la aproximación por códigos adaptativos, el cálculo de los parámetros contribuye directamente al proceso de minimización del error ponderado. Tomando un predictor de largo plazo de un tono, la salida del filtro de síntesis de pitch viene dada por: ( ) ( ) ( )α−+= nGunvnu (2.40) En la primera iteración, se asume que no hay ninguna excitación, partimos de condiciones iniciales cero, por lo que la ecuación se reduce a ( ) ( )α−= nGunu (2.41) La señal de voz sintetizada ponderada será

( ) ( ) ( ) ( )∑=

+−=n

iw nsinhiuns

00ˆˆ (2.42)

Generación de excitación

u(n)

u(n)

s(n)

Minimización de error

Ponderación de error

ew(n) e(n)

Generación de excitación

v(n)

Síntesis de pitch Síntesis LPC

v(n)

Revisión teórica

41

donde ( )nh es la respuesta impulsiva del filtro de síntesis ponderado ( )γzA1 y ( )ns0ˆ

es la respuesta a entrada cero del filtro de síntesis ponderado, es decir, la salida del filtro debido a las condiciones iniciales. El error ponderado entre la señal original y la sintetizada está dado por

( ) ( ) ( ) ( )∑=

−−′=n

iw inhiunxne

0

(2.43)

donde ( ) ( ) ( )nsnsnx w 0ˆ−=′ (2.44)

y ( )nsw es la señal de entrada ponderada. Sustituyendo la ecuación (2.3.4.9) en la

(2.42): ( ) ( ) ( )nGynxnew α−′= (2.45)

donde

( ) ( ) ( ) ( ) ( )∑=

−−=∗−=n

ij inhjiunhjnuny

1

(2.46)

El error cuadrático medio ponderado será

( ) ( )[ ]∑−

=−′=

1

0

2N

nw nGynxE α (2.47)

Haciendo la derivada de ese error con respecto a la ganancia G y despejando esa ganancia:

( ) ( )

( )[ ]∑

∑−

=

=

′=

1

0

2

1

0N

n

N

n

ny

nynxG

α

α

(2.48)

Substituyendo la ecuación (2.47) en la (2.48)

( )[ ]( ) ( )

( )[ ]∑

∑−

=−

=

=

′−′=

1

01

0

2

21

02N

nN

n

N

nw

ny

nynx

nxE

α

α

(2.49)

El retraso de pitch se selecciona tomando el retraso que maximiza el segundo sumando de la ecuación (2.49), y G se calcula mediante la ecuación (2.48). La desventaja de la solución en bucle cerrado es la carga computacional extra necesaria para calcular la convolución de la ecuación (2.45) dentro del rango de retraso α. Un procedimiento rápido para calcular esta convolución ( )nyα para todos los posibles

retrasos es calcularlo para el primer valor en el rango y después actualizarlo como sigue

Revisión teórica

42

( ) ( ) ( )( ) ( ) ( ) ( ) 1...,,11

00

1 −=−+−=

−=

− Nnnynhjuny

hjuy

jj

j (2.50)

Esta ecuación requiere N operaciones para determinar la convolución ( )nyα ,

mientras que se necesitaban N(N+1)/2 operaciones para ello usando la ecuación (2.45). El término a maximizar requiere 3N+2 operaciones para cada retraso. Otra aproximación (la aproximación de la autocorrelación) se puede usar para actualizar la energía en el denominador de la ecuación (2.49) con menor número de instrucciones que para el caso de la aproximación mediante convolución. Esta aproximación se verá con más detenimiento cuando se estudie el CELP. La excitación sintetizada pasada ( )nu se almacena en un registro de almacenamiento adaptativo desde -Lp a -1, donde Lp es el registro ó longitud del buffer (normalmente 147). El contenido de este buffer se actualiza cada subtrama, introduciendo N nuevas muestras y retirando las N pasadas, esto es ( ) ( ) 1...,, −−=+← pLnNnunu (2.51)

El registro de almacenamiento se puede representar mediante una tabla de códigos adaptativa, donde cada palabra se obtiene moviendo la palabra anterior a la izquierda una muestra. Las palabras código se obtienen

( ) ( )njunc j +−= pLNj

Nn

...,,

1...,,0

=−=

(2.52)

Para retraso de pitch inferiores a la longitud de la trama de excitación N, solo los j primeros valores de la palabra código ( )nc j están disponibles. En la voz natural el

retraso de pitch varía entre 20 y 160 muestras. Para estos retrasos menores que la longitud de la trama la palabra código se construye repitiendo los valores disponibles hasta que la palabra código está completa. Esto es, para j<N

( ) ( )( )

−=+−−=+−

=12...,,2

1...,,0

jjnnju

jnnjunc j

(2.53)

y así hasta que se completa la palabra código. El rango del retraso que normalmente se usa está entre 20 y 147 (7 bits). Para retrasos entre 0 y N-1 la relación de la ecuación (2.50) tiene que ser modificada para esos retrasos. Para j<N la palabra código ( )nc j se

puede expresar (considerando 2Nj ≥ ) ( ) ( ) ( ) ( ) ( )ncncnc jjj

21 += (2.54)

donde

( ) ( ) ( )

=−=+−

=Njn

jnnjunc j ...,,0

1...,,01 (2.55)

y

Revisión teórica

43

( ) ( ) ( )

=+−−=

=Njnnju

jnnc j ...,,2

1...,,002 (2.56)

Teniendo en cuenta esto, la palabra de código filtrada será

( ) ( ) ( ) ( ) ( )( ) ( ) ( ) ( ) ( ) ( )nynynhncncny jjjjj1121 +=∗+= (2.57)

De la ecuaciones anteriores ( ) ( ) ( ) ( ) 1...,,12 −=−= Njnjncnc jj (2.58)

con lo cual tenemos que ( ) ( ) ( ) ( ) 1...,,12 −=−= Njnjnyny jj (2.59)

( ) ( )ny j1 se puede actualizar usando la relación (2.50) desde j= 21 a 147. Para retrasos con

j<N ( )ny j se calcula a partir de ( ) ( )ny j1

( )

( ) ( )( ) ( ) ( ) ( )( ) ( ) ( ) ( ) ( ) ( )

−=−+−+

−=−+

−=

=

1...,,2,2

12...,,,

1...,,0,

111

11

1

Njnparajnyjnyny

jjnparajnyny

jnparany

ny

jjj

jj

j

j (2.60)

La ecuación (2.59) solo se aplica cuando j<N /2. Una aproximación más simple para trabajar con los retrasos menores que la longitud de la trama es extender el buffer de excitación del residuo de la predicción de corto plazo, es decir, ( ) ( ) 1...,,0 min −−== αNnnrnu (2.61) donde minα es el mínimo valor en el rango de retrasos de pitch. En este caso, los retrasos menores que la longitud de trama no se tratan de forma diferente. La realización de la predicción de pitch se puede mejorar usando retrasos de pitch no enteros. A menudo ocurre que el pitch no coincide exactamente con el instante de la muestra. En este caso, el retraso entero más cercano al retraso de pitch real, o un múltiplo de él, sería elegido. Para encontrar un retraso más cercano al real es necesario una resolución mayor.

Revisión teórica

44

2.3.5 Filtro de ponderación de error En este punto tratamos de elegir un criterio de error adecuado para el modelo general de codificación de voz (figura 17). Tradicionalmente los algoritmos de codificación de voz han intentado minimizar la diferencia rms entre las envolventes de las señales de voz original y codificada. Sin embargo, hoy en día se sabe que la percepción subjetiva de la distorsión de la señal no sólo se basa en el error rms. La teoría del enmascaramiento auditivo sugiere que el ruido en las regiones de los formantes puede enmascararse total o parcialmente por la señal de voz. Por eso, una parte importante del ruido percibido en el codificador proviene de las regiones de frecuencia donde el nivel de la señal es bajo. Así, para reducir el ruido percibido, su espectro ancho se modela de forma que las componentes de frecuencia de ruido alrededor de las regiones de los formantes puedan tener mayor energía que las componentes en las regiones entre formantes. El ruido de cuantización que aparece en la señal de voz reconstruida es

( ) ( ) ( ) ( ) ( )( )fP

fFffSfSfN

δ−−∆=−=

1

1ˆ 222 (2.62)

donde ( ) 2f∆ es la potencia espectral del ruido a la salida del cuantizador, ( )zPδ es el

predictor de corto plazo y ( )zF es un filtro de reacción. Atal y Schroeder describieron un método eficiente para determinar el filtro de ponderación minimizando la altura del ruido de cuantización. En el modelo general de codificador, el filtro de ponderación puede expresarse como:

( ) ( )( )

( )( )zB

zA

zF

zPzW =

−−

=′1

1 δ (2.63)

Esta ecuación se deriva de la anterior donde

( ) ( ) ( ) ( )( ) ( ) ( )fWfNfF

fPfSfSf =

−−

−=∆1

1ˆ δ (2.64)

Una elección apropiada para ( )zB fue tomar ( ) ( )γzAzB = , lo cual da como resultado

( ) ( )( )

=

=

−==′

p

k

kkk

p

k

kk

za

za

zA

zAzW

1

1

1

1

γγ (2.65)

donde γ es un valor entre 0 y 1. El valor de γ se determina por el grado que uno desea desenfatizar las regiones de los formantes en el espectro del error. Disminuir el valor de γ aumenta el ancho de banda de los polos de ( )zW′ . El aumento en el ancho de banda ω es:

Revisión teórica

45

( )γπ

ω lnsf−= (2.66)

donde fs es la frecuencia de muestreo. La elección de γ = 0 da ( ) ( )zAzW =′ . En este caso, el ruido a la salida del codificador tiene la misma envolvente que la señal original. Por otro lado, tomando γ = 1 tenemos ( ) 1=′ zW lo cual equivale a no hacer ponderación alguna. Una buena elección es tomar un valor entre 0.8 y 0,9, que corresponde a un incremento en el ancho de banda de los polos de ( )zW′ entre 270 y 570 Hz, aproximadamente. Usando el filtro de error ponderado dado en la ecuación (de W’), y ponderando la señal de voz original y la sintetizada separadamente antes de compararlas, se puede combinar el filtro de síntesis con el filtro de error ponderado, produciendo el filtro:

( ) ( )∑

=

−−==

p

k

kkk za

zAzW

1

1

11

γγ (2.67)

Nos referiremos a este filtro como filtro de síntesis ponderado. La estructura básica para un codificador predictivo que use análisis mediante síntesis será:

Figura 21.- Diagrama de bloques de la estructura básica de un codificador predictivo que use análisis mediante síntesis

u(n)

Minimización de error

ew(n)

Generación de excitación

v(n)

Filtro de síntesis de pitch

Filtro de síntesis ponderado

Filtro inverso A(z) ( ) ( )γzA

zW1=Señal de

entrada

s(n) r(n)

sw(n)

( ) ( )γzAzW

1=

Revisión teórica

46

2.4 CELP

2.4.1 Introducción La implementación de un predictor de largo plazo en el bucle del análisis mediante síntesis se debe a la importancia que tiene eliminar la redundancia de la señal lo máximo posible. La señal residuo después de los predictores de corto y largo plazo se convierte en una señal parecida a ruido y puede ser modelada por un proceso Gaussiano de media cero con un espectro de potencia que varía lentamente. Esto es lo que permite la implementación de codificadores estocásticos, donde la trama de excitación se cuantiza vectorialmente usando una tabla de códigos estocásticos amplia. La codificación estocástica o codificación CELP (Code-Excited Linear Prediction) fue propuesta por Atal y Schroeder en 1984 [Kumar y Sundaresan, 2000]. En esta codificación las tramas de la señal excitación se modelan por un vector gaussiano elegido de una tabla de códigos gaussianos minimizando el error ponderado perceptual entre la señal de voz original y la sintetizada. Sin embargo, hasta entrados los 90, el gran impedimento para la expansión de los algoritmos CELP era la gran complejidad que suponía su implementación en tiempo real, que proviene de la búsqueda en la tabla de códigos, ya que se calcula y compara con todas las posibles entradas de la tabla. En los últimos años, la investigación se ha basado en reducir la complejidad del codificador CELP y lograr su implementación en tiempo real usando la tecnología CELP actual. Se ha logrado una significativa reducción usando diferentes tabla de códigos con menos entradas o con muchas de ellas a cero. El uso de tablas de códigos algebraicos también reduce la complejidad del algoritmo. En ellos, la tabla de códigos se genera usando un código binario especial con corrección de errores.

2.4.2 Principio del CELP Después de realizar la predicción de corto y largo plazo, las redundancias de la señal de voz se han eliminado casi completamente y la señal residuo tiene muy poca correlación. Un proceso Gaussiano con un espectro de potencia que varíe lentamente en el tiempo se puede usar para representar esa señal residuo, y la forma de onda de la señal de voz se genera filtrando secuencias de innovación blancas y gaussianas a través de los filtros de síntesis de corto y largo plazo. La secuencia de innovación óptima se selecciona de una tabla de códigos que contiene secuencias de gaussianas blancas aleatorias minimizando el error ponderado subjetivo entre la señal original y la sintetizada. El diagrama por bloques del modelo de síntesis del CELP quedaría:

Revisión teórica

47

Figura 20.- Diagrama de bloques del modelo de síntesis del CELP

El filtro de correlación de pitch del esquema general se sustituye por una tabla de códigos adaptativo de solape. La posición de la tabla de códigos seleccionada y su correspondiente ganancia (retraso de pitch y ganancia) junto con la posición seleccionada de la tabla de códigos estocásticos y su correspondiente ganancia de escala son enviadas al decodificador, que utiliza las mismas tablas de códigos (en ausencia de errores de canal) para determinar la señal de excitación a la entrada del filtro de síntesis LPC para producir la señal sintetizada. La tablado de códigos de excitación contiene L palabras de código (vectores estocásticos) de longitud N muestras (generalmente L = 1024 y N = 40, que corresponde a una trama de 5 ms). La señal de excitación de una trama de voz de longitud N se elige mediante una búsqueda exhaustiva de la tabla de códigos después de escalar los vectores gaussianos por un factor de ganancia β. El filtro ( )zW es el filtro de síntesis ponderado dado por:

( ) ( )∑

=

−−==

p

k

kkk za

zAzW

1

1

11

γγ (2.68)

Una vez se han determinado los parámetros de la tabla de códigos adaptativos (retraso de pitch y ganancia) la señal de voz sintetizada ponderada es ( ) ( ) ( ) ( ) ( )nsnGynhncns kw 0ˆ++∗= αβ)

(2.69)

donde la convolución carece de memoria, ( )nck es la palabra código de excitación para

el índice k, β es el factor de escala, ( )nh es la respuesta al impulso del filtro de síntesis

Tabla de códigos adaptativos

Tabla de códigos fijos

G2

G1 Filtro de síntesis

Retraso subtrama

Señal de voz sintetizada

Revisión teórica

48

ponderado ( )zW , ( )ns0ˆ es la respuesta a entrada cero del filtro de síntesis ponderado, G

es la ganancia de la tabla de códigos adaptativa y ( ) ( ) ( )nhncny ∗′= αα es la respuesta a

estado cero del filtro de síntesis ponderado a la palabra código ( )ncα′ seleccionada de la

tabla de códigos adaptativa. El error ponderado entre la señal original y la sintetizada es: ( ) ( ) ( ) ( ) ( ) ( )nhncnxnsnsne kwww ∗−=−= βˆ (2.70)

donde ( ) ( ) ( ) ( )nsnGynsnx w 0ˆ−−= α (2.71)

La señal ( )nx se calcula actualizando ( )nx′ ( ) ( ) ( )nGynxnx α−′= (2.72)

como ( )nx′ ha sido ya determinada en la búsqueda de la tabla de códigos adaptativos. El error cuadrático medio ponderado está dado por

( )[ ] ( ) ( ) ( )[ ]21

0

1

0

2∑ ∑−

=

=

∗−==N

n

N

nkw nhncnxneE β (2.73)

Calculando la derivada de ese error respecto al factor de escala β e igualando a cero, obtenemos la expresión para β.

( ) ( ) ( )[ ]

( ) ( )[ ]∑

∑−

=

=

∗=

1

0

2

1

0N

nk

N

nk

nhnc

nhncnxβ (2.74)

y sustituyendo β en la ecuación (2.73)

( )( ) ( ) ( )[ ]

( ) ( )[ ]∑

∑−

=−

=

=

∗−=

1

01

0

2

21

02N

nN

nk

N

nk

nhnc

nhncnx

nxE (2.75)

Estas dos últimas ecuaciones se pueden escribir en forma matricial como

kcTHTkc

kcTxH=β (2.76)

y

Revisión teórica

49

kHcTHTkc

kHcTxxTxkHcx

22

−=−= βE (2.77)

donde x y ck son vectores de dimensión N dados por

( )( )110

110

=

=

N

N

ccc

xxx

K

K

T

T

c

x (2.78)

y H es una matriz de convolución triangular inferior de la respuesta impulsiva ( )nh

=

−−− 0321

012

01

0

0

00

000

hhhh

hhh

hh

h

NNN L

MOMMM

L

L

L

H (2.79)

Definimos la matriz Φ como Φ = HTH . Por tanto, Φ es una matriz simétrica que contiene las correlaciones de la respuesta impulsiva ( )nh

( ) ( ) ( )( )∑

=

−=−−=1

,max

1...,,0,,,N

jin

Njijnhinhjiφ (2.80)

Se define un vector Ψ tal que Ψ= HTx , cuyos elementos son

( ) ( ) ( ) ( ) ( )∑−

=−=−=−∗=

1

1...,,0N

in

Niinhnxihixiψ (2.81)

El error cuadrático medio ponderado se puede minimizar maximizando el segundo término de la ecuación (2.77), que está dado por

( ) ( )

kΦcTkc

kcΨ

kcTHTkc

kcTxH T 22

2

=

==k

kk

C

ετ (2.82)

donde kC es la correlación cruzada entre x y la palabra código filtrada kHc y está dada

por

( ) ( ) ( )[ ] ( ) ( )ncnnhncnxC k

N

n

N

nkk ∑ ∑

=

==∗=

1

0

1

0

ψ (2.83)

Revisión teórica

50

y kε es la energía de la palabra código kc

( ) ( )[ ] ( ) ( ) ( ) ( ) ( )∑ ∑∑∑−

=

=

+=

=

+=∗=1

0

2

0

1

1

1

0

22 ,2,N

n

N

i

N

ijkk

N

nkkk jijcicjincnhnc φφε (2.84)

( )iψ y ( )ji,φ son calculadas fuera del bucle de optimización, y el término kτ de la

ecuación (2.82) se evalúa desde k = 0 a L-1, donde L es el tamaño de la tabla de códigos. Se elige la palabra código con índice k que maximiza ese término y la ganancia escalar β se calcula a partir de la ecuación (2.77). En esta aproximación, la palabra código kc y la ganancia β no se optimizan conjuntamente, ya que la ganancia tiene que

ser cuantizada y el término de la ecuación (2.82) se deriva usando en valor de la ganancia sin cuantizar. La ganancia y el vector de excitación pueden ser optimizados como sigue: para la palabra código con índice k la correlación cruzada kC y la energía

kε se determinan a partir de las ecuaciones (2.84). La ganancia se calcula con la

ecuación:

k

kk

C

εβ = (2.85)

La ganancia se cuantiza para obtener el valor kβ y este valor cuantizado se

sustituye en la ecuación 2.73 para obtener el mínimo error

( ) ( ) ( )[ ] kkkkk

N

nkk CnhncnxE εβββββ 22

1

0

2 ˆˆ2ˆˆ2 +−=+−=∗−=∑−

=xxHcHccHxxx T

kTT

kkTT

(2.86) El término a maximizar viene ahora dado por

( )kkkkk C εββτ ˆ2ˆ −= (2.87)

Este término se calcula para cada palabra código y se toma el que maximiza el término con la ganancia cuantizada. Esta aproximación por unión no introduce ninguna complejidad a tener en cuenta, ya que la correlación C y la energía ε se calculan una vez por palabra código igual que cuando se calculaba la ecuación de (2.77). La carga computacional extra es que la ganancia tiene que ser cuantizada para cada palabra código. El número de operaciones necesarias para evaluar la expresión en la ecuación (2.87) es aproximadamente N2 (usando las ecuaciones (2.83) y (2.84)). En cambio, cuando la convolución se calcula usando filtrado recursivo, las palabras código ( )nck se

filtran a través de un filtro con estado cero, donde la convolución necesita Np instrucciones, el cálculo de la energía ε requiere N y la evaluación de la correlación cruzada kC otras N instrucciones, dando un total de N(p+2) operaciones. Esto, para un

predictor de orden 10 supone una importante reducción en el número de operaciones.

Revisión teórica

51

2.4.3 Tabla de códigos algebraicos Los códigos algebraicos se pueden usar para poblar las tablas de códigos de excitación. Algoritmos de búsqueda eficientes en la tabla de códigos se pueden obtener códigos algebraicos altamente estructurados. Inicialmente, las tablas de códigos algebraicos se obtenían usando códigos binarios de corrección de errores. A continuación veremos un código algebraico donde los vectores de excitación se derivan usando códigos de permutación interrelacionados (IPC) [Adoul et al. 1994]. En los códigos de permutación interrelacionados, un vector de excitación que contiene un pequeño número de pulsos distintos de cero con un conjunto de posiciones con interrelaciones predefinidas. Los pulsos tienen sus amplitudes fijadas a 1 ó -1, y cada pulso tiene un conjunto de posiciones distintas a las de otros pulsos. Los conjuntos de posiciones están interrelacionados. El código de excitación se identifica por las posiciones de sus pulsos distintos de cero. Esto es, la búsqueda en la tabla de códigos es básicamente una búsqueda de las posiciones óptimas de los pulsos distintos de cero.

Revisión teórica

52

Recomendación G.729:CS-CELP

53

3 Recomendación G.729: CS-CELP

3.1 LA ITU-T La Unión Internacional de Telecomunicaciones, conocida como ITU (Internacional Telecommunications Union), es un organismo dentro de la UNESCO (United Nations Economic, Scientific and Cultural Organization). Está dividido en dos cuerpos: por un lado el Sector de estandarización de las Telecomunicaciones o ITU-T y, por otro, el sector de estandarización para la Radio o ITU-R. A pesar de llevar la palabra estándar en su nomenclatura, estas dos entidades no crean estándares, sino que generan una serie de documentos conocidos formalmente como recomendaciones. Estas recomendaciones representan un acuerdo entre un segmento de la industria de las telecomunicaciones sobre un tema determinado, pero no hay ningún tipo de ley que fuerce a su cumplimiento. De ahí el término de recomendaciones. La ITU-T se divide a su vez en secciones más pequeñas denominadas grupos de estudio. El grupo de estudio que se encarga de las recomendaciones relacionadas con el procesamiento de la voz y el video, como la codificación de voz o la telefonía por video es el 15 (SG15). Otros grupos relacionados con aspectos de la codificación de voz son el SG12, que se encarga de los problemas en la red, que influyen en la calidad de la señal de voz; o el grupo de expertos para la calidad de la señal de voz (SQEG) que se encarga de realizar los experimentos y pruebas subjetivas usadas para determinar cómo de bien funciona una determinada recomendación de codificación de voz propuesta por la ITU. Las recomendaciones de la ITU están a menudo registradas como patentes. Las empresas dueñas de esas patentes se comprometen a cobrar unas tasas razonables a las demás empresas por su uso. Incluso a veces se ha llegado a un acuerdo para pagar esas tasas entre todas las empresas usuarias. Por tanto, la ITU, como entidad, no administra los derechos de la propiedad intelectual.

Recomendación G.729: CS-CELP

54

Para establecer una recomendación lo primero es especificar una serie de requerimientos a cumplir por la misma, llamados términos de referencia (ToR; Terms of Reference). En este documento se refleja, junto con un calendario con las estimaciones de tiempo para su ejecución, los objetivos y características que debe cumplir. Además de la calidad, también especifica las demás propiedades del codificador, como son la tasa de bit, el retraso y la complejidad. Uno de los puntos destacados es la elaboración del calendario, que depende principalmente de la urgencia de la necesidad de implantar la nueva recomendación. Generalmente, se puede dividir en tres partes principales: por un lado, el tiempo empleado en determinar todos los requerimientos y objetivos que debe cumplir la recomendación (que se concluye una vez definidos los términos de referencia); por otro, el tiempo empleado para pruebas, ensayos y tests (que se culmina con la elección del codificador) y, por último, el tiempo que conlleva el diseño final de la recomendación y el seguimiento de los diferentes pasos que se requieren hasta la ratificación de la misma. El candidato inicial rara vez suele cumplir con los requerimientos fijados en los términos de referencia, por los que se debe crear un codificador optimizado y volver a realizarle todas las pruebas, con lo que esta parte del proceso es la más puede alargar el calendario. Bajo condiciones ideales, el proceso completo de pruebas y tests, entre la definición de los términos de referencia y la selección del codificador candidato, se podría completar en unos 24 meses; si bien reduciendo el número pruebas se puede realizar en menos tiempo. Ello depende de la importancia de la recomendación a realizar. Además, el uso de software para los tests ha reducido el tiempo empleado en ellos, al no tener que montar los equipos en el laboratorio para las diferentes pruebas.

3.2 Descripción de la recomendación

3.2.1 Introducción La recomendación ITU-T G.729 define un algoritmo para la codificación de señales de voz a 8 kbit/s, usando un CS-CELP. En este sistema, una señal de voz analógica se pasa a través de un filtro paso de banda entre 300 Hz y 3400 Hz y la señal de voz resultante es muestreada a 8000 muestras por segundo. Así se obtiene la información digital de la misma, que se convierte a una señal PCM lineal. Las muestras son cuantizadas usando una resolución de 16 bits. La tasa de bit de entrada es, por tanto, 128 kbit/s. El vocoder G.729 trabaja con tramas de 10 milisegundos, con un retraso de 5 ms para el análisis de predicción lineal. El codificador toma 80 muestras de la señal de voz por trama y da como salida 80 bits de información comprimida. El decodificador toma esos 80 bits por trama y los transforma en 80 muestras de voz sintetizada descomprimida [IEEE, Marzo 1998]. La comunidad científica consideró que el estándar G.729 representaba un avance significativo en el campo de la compresión digital de audio para la transmisión y almacenamiento de señales de voz y generaría productos innovadores y servicios disponibles para el público. Los beneficios de una calidad de voz buena (toll) a 8 kbit/s, con un retraso y unos requerimientos de procesado moderados, hace del estándar G.729

Recomendación G.729:CS-CELP

55

una opción muy popular para muchas aplicaciones, como la tele/videoconferencia, telefonía visual, sistemas de satélite digital, voz sobre protocolos IP, PSTN, ISDN, teléfonos móviles y otro tipo de aplicaciones inalámbricas, donde la calidad, retraso y ancho de banda son importantes.

3.2.2 Historia El codificador CS-CELP surgió de la búsqueda de un codificador que, con una

tasa de bits de 8 kbit/s, consiguiera una calidad de voz equivalente a la que se obtiene con un codificador ADPCM, operando a 32 kbit/s, para la mayor parte de la condiciones de trabajo. Entre estas condiciones cabe citar señales de voz, tanto limpias como ruidosas, variaciones de nivel o señales carentes de voz. Para la recomendación de la ITU G.729, uno de los términos de referencia que se fijaron fue que el codificador de voz trabajara a 8 kbit/s. Esta tasa se eligió en parte porque se adecua al rango de trabajo de la primera generación de estándares digitales celulares, que va desde los 6,7 kbit/s en Japón hasta los 13 kbit/s en Europa, pasando por los 7,95 kbit/s en Estados Unidos. Además era lo más natural dividir por dos la tasa de bit de codificadores de voz ya existentes y estandarizados (64, 32 y 16).

Se propusieron dos algoritmos para la obtención de este codificador: uno desde

la NTT (Nippon Telegragh and Telephone Corporation) y otro desde France Telecom CNET/Universidad de Sherbrooke. Sin embargo, a pesar que ambos eran prácticamente equivalentes al codificador ADPM a 32 kbit/s en la mayor parte de las pruebas, ninguno se equiparaba a él en todas. En ese punto, los dos candidatos decidieron unirse y crear un nuevo codificador con las mejores características de los dos códigos y continuar sus investigaciones para alcanzar el objetivo común. Así, se probó una versión del codificador resultante en Enero de 1995 y un mes después fue aprobada en la reunión de la ITU-T. La recomendación final fue finalmente ratificada en Noviembre de 1995. El 12 de Marzo de 1998 France Telecom, Nippon Telegraph and Telephone Corporation y la Universidad de Sherbrooke (Québec, Canadá) establecieron el consorcio G.729 para simplificar el proceso de licitación para el estándar internacional de codificación y decodificación digital de audio ITU G.729 y para promover la expansión y adopción tanto del estándar G.729, como del G.729 Anexo A. El consorcio también acordó tener un único agente, Spiro LabTelecom (compañía canadiense representante comercial del Laboratorio de compresión de voz de la universidad de Sherbrooke y de su famosa tecnología ACELP desde 1993). En la tabla 4 se muestra el calendario que se siguió para la consecución de la recomendación [Cox y Kroon, 1996]:

Recomendación G.729: CS-CELP

56

Actividad Discusión inicial de los ToR Finalización de los ToR Total meses

7/90 11/91 16

Reunión de codificadores candidatos Realización de pruebas y ensayos Selección del candidato Total meses

9/92 2/93 2/95

39 Reunión para la determinación Primer boceto de la recomendación Se somete a decisión Total meses

2/95 6/95

11/95 9

Total meses para el proceso completo 64

Tabla 4.- Calendario seguido para la aprobación de la recomendación G.729

El término de referencia para el retraso del codificador fue uno de los asuntos que más tiempo llevó concretar, alargándose la discusión más de un año. Inicialmente se propuso un retraso del codificador en un sentido máximo de 10 ms. Más tarde, se pensó fijar el tamaño de la trama en 16 ms. Finalmente el tamaño de la trama se fijó en 10 ms. Con este tamaño se obtiene un retraso hacia delante de 5 ms, un retraso de procesamiento de 10 ms y un retraso en la transmisión de otros 10 ms, con lo que el retraso total del sistema en un sentido es de 35 ms.

3.2.3 Objetivos y requerimientos de la recomendación G.729 Los objetivos más discutidos a la hora de realizar la recomendación fueron el retraso y la complejidad del codificador [3]. Se optó por aceptar un retraso que permitiera una reducción significativa de la complejidad con respecto a codificadores de otras recomendaciones existentes, como la G.728. El número de millones de instrucciones por segundo se redujo hasta 17 MIPS. Sin embargo la cantidad de memoria RAM necesaria es de 3 kwords, un 50 % más que en la recomendación G.728. Gran parte de este uso extra de memoria se debe a la utilización de tramas más largas. En las dos tablas presentadas a continuación se resumen los requerimientos y objetivos (términos de referencia) que se definieron a la hora de implementar el codificador para la recomendación. En la primera de ellas (tabla 5) se definen los objetivos relacionados con la tasa de bit, el retraso y la complejidad del codificador.

Parámetro Tasa de bit (kb/s) 8

Tamaño de la trama (ms) 10 Tamaño de la subtrama (ms) 5

Retraso algorítmico (ms) 15 MIPS (punto fijo DSP) 20

RAM (palabras de 16 bits) 2.7 k Tabla 5.- Valores de los parámetros más importantes para la recomendación G.729

Recomendación G.729:CS-CELP

57

En la segunda (tabla 6) se definen todos los requerimientos y objetivos relacionados con la calidad de la señal de voz. La parte más difícil fue medir su comportamiento para las diferentes condiciones de ruido ambiente. Los primeros codificadores propuestos fallaron para algunas o incluso para todas estas condiciones porque el ruido codificado no sonaba igual que el original. En los tests de promediado de degradación de categoría (DRC), los sujetos apreciaban una diferencia a peor. Como consecuencia, la G.729 obtenía peores resultados que la G.726 en este test. Sin embargo, al realizar los tests de promediado de categoría absoluta (ACR), los resultados en la escala MOS de la G.729 no eran significativamente peores que los de la G.726, siendo incluso, a veces, mejores.

Parámetro Requerimientos Objetivos Calidad (sin errores de bit) No peor que la G.726 a 32

kbit/s

Calidad (con errores de bit) Errores de bit aleatorios BER<10-3 Pérdidas de trama detectadas Errores no detectados

No peor que la G.726 No más de 0,5 MOS de degradación con respecto al ADPCM a 32 kbit/s sin errores

Equivalente a la G.726 32 kbit/s Tan pequeño como sea posible Para estudios posteriores

Dependencia del nivel No peor que la G.726 a 32 kbit/s

Tan pequeño como sea posible

Dependencia del hablante No peor que la G.726 a 32 kbit/s

Capacidad de transmitir música No generar efectos molestos Capacidad de tandeming para la señal de voz Tandeming con otros estándares de ITU Tandeming con estándares regionales DMR

2 códigos asíncronos con una distorsión total < 4 asíncronos G.726 a 32 kbit/s < 4 asíncronos G.726 a 32 kbit/s Para estudios posteriores

3 códigos asíncronos con una distorsión total < 4 asíncronos G.726 a 32 kbit/s Propiedad de tandeming síncrona

Ruido de canal - ponderado - frecuencia simple

Para estudios posteriores No peor que la G.726 a 32 kb/s

No peor que la G.726 a 32 kb/s

Capacidad de transmitir tonos de señal/información

DTMF, CCITT Nos. 5,6 y 7, CCITT R2, Q.35, Q.23, V.25

Distorsión lo más pequeña posible

Tabla 6.- Requerimientos y objetivos para la recomendación G.729

El segundo requerimiento es el referente a la calidad de la señal de voz relacionado con canales ruidosos. Para una tasa de error de bit de 10-3, la calidad de la señal de voz no debía ser peor que la de la G.726 bajo las mismas condiciones. Los requerimientos para borrado de tramas fueron más complicados de determinar.

Recomendación G.729: CS-CELP

58

Finalmente el código se probó con 1, 3 y 5 % de tramas borradas aleatoria o secuencialmente. El requerimiento fue que para el caso del 3 %, para ambas situaciones, no debía ser peor que el resultado obtenido en la escala MOS por el codificador de la recomendación G.726 menos 0,5 puntos. El tercero de los requerimientos relacionados con la señal de voz es que la entrada esté como mucho 10 dB por encima o por debajo del nivel nominal de entrada. Para realizar las pruebas del cuarto requerimiento se necesitó un gran número de hablantes, tanto niños como adultos. La recomendación se probó en cuatro idiomas diferentes con al menos 8 hablantes por idioma. El codificador admite señales musicales, si bien la calidad que se obtiene es bastante pobre. El principal motivo de este resultado es que los codificadores basados en la predicción lineal con análisis por síntesis se basan en la predicción del pitch para lograr una codificación eficiente. La mayoría de las señales de audio carecen de una estructura con pitch y toda la carga de la codificación recae en la excitación y el predictor lineal de bajo orden. El siguiente requerimiento hace referencia a la conexión del codificador con otros codificadores, ya sea otro de sus mismas características o de otras diferentes. Para ambos casos, la unión de los dos no debe producir una distorsión mayor que la de 4 codificadores de la recomendación G.726 a 32 kb/s. No se propuso ningún tipo de requerimiento para su interconexión con estándares regionales con tecnología digital celular.

3.2.4 Características del codificador

El codificador CS-CELP se basa en el modelo de codificación conocido como CELP (code-excited linear prediction). En este modelo, la señal codificada se compara con la señal original y los parámetros del codificador se eligen de forma que se minimice el error cuadrático medio ponderado entre la señal original y la señal reconstruida.

Como ya se ha dicho, el codificador CS-CELP está diseñado con una señal,

apropiadamente limitada en banda, muestreada a 8.000 Hz. Las muestras de entrada y salida se representan usando una cuantización lineal PCM de 16 bits. El codificador opera con tramas de 10 ms, usando subtramas de 5 ms para el análisis de predicción lineal (LP). El uso de subtramas permite una mejor determinación de los parámetros de pitch y ganancia y, además, reduce la complejidad de las búsquedas en la tabla de palabras código. Lo que más destaca del decodificador y lo que mayor potencial le otorga para aplicaciones sin cables es lo robusto que es frente a errores en el canal y la capacidad de detectar y recomponer tramas perdidas. Muchos codificadores usan la codificación lineal predictiva (LPC) adaptativa hacia atrás, realizando el análisis LPC sobre la señal de voz previamente cuantizada.

Recomendación G.729:CS-CELP

59

Como la señal reconstruida está disponible tanto en el codificador como en el decodificador, no es necesario enviar al decodificador los coeficientes LPC. Sin embargo, aunque esta técnica funciona para algoritmos operando a 16 kbit/s, no se consigue una calidad suficiente en algoritmos a 8 kbit/s sin realizar una predicción del pitch. Los codificadores que usan el modelo de codificación CELP usan normalmente un predictor de pitch adaptativo hacia delante, para explotar una de las características más importantes de las señales de voz, su redundancia. Para conseguir esas propiedades que hacen que este decodificador sea muy bueno para diferentes aplicaciones se han usado tres nuevos esquemas en el algoritmo:

- Cuantización vectorial multistage VQ de los coeficientes LSP con predicción MA entre tramas, ya que el cuantizador debe operar con señales de voz con respuesta en frecuencia diferentes.

- Preselección en la búsqueda en la tabla de códigos, para reducir su complejidad. - Ganancia VQ con predicción hacia atrás para hacerlo más robusto frente a

errores en el canal.

La principal diferencia entre el codificador CS-CELP y otros codificadores basados en el modelo CELP es el uso de una estructura de tabla de códigos conjugada, tanto para la tabla de códigos fijos como para la de códigos adaptativos. Cuatro son las ventajas más interesantes que se desprenden del uso de esta estructura conjugada [Kataota, 2001]:

- Mejora la robustez del sistema - Reduce la memoria necesaria para operar - Junto con la preselección, reduce la complejidad de las búsquedas en la tabla de

códigos aleatorios o adaptativos. - Permite generar una tabla de códigos aleatorios entrenada

Vamos a ver un poco más en profundidad algunas de ellas por separado.

Con un simple ejemplo se demostrará la efectividad de esta estructura conjugada

frente a errores en el canal, comparada con la de un codificador que no la usa. Para este segundo codificador (con un solo vector) un error en el canal puede producir un vector totalmente diferente al esperado:

Figura 22.- Posible error en el canal usando una tabla de códigos única

Sin embargo, para un codificador con estructura conjugada el vector de salida se

genera sumando dos vectores (subvectores 1 y 2). Si uno de los dos sufre un error en el canal entonces, aunque el subvector de salida generado a partir de él pueda ser bastante

Vector error

Vector de salida

error

Recomendación G.729: CS-CELP

60

diferente del esperado, el vector de salida, que no es sino la suma de los dos subvectores de salida, no será tan diferente del esperado.

Figura 23.- Posible error en el canal usando una tabla de códigos con estructura conjugada

La cantidad de memoria necesaria para almacenar una tabla de códigos aleatorios depende del número de bits. La estructura conjugada usa dos subtablas. Como cada una de las subtablas es menor que la tabla de códigos, se necesita menos memoria. Si la necesidad de usar una memoria reducida no es primordial, es posible hacer tablas de códigos aleatorios entrenadas. Para mejorar la robustez del sistema se reduce el número de bits sensible a posibles errores en el canal del codificador. En la codificación convencional usando el modelo CELP, la potencia de la señal de voz de entrada para cada trama es cuantizada en primer lugar, y después el residuo de la potencia se cuantiza usando la tabla de códigos de ganancia. El índice de la información de potencia es especialmente sensible a los errores en el canal y un error en él puede provocar una distorsión de importancia (clicks) en la señal de voz reconstruida. En el codificador CS-CELP la ganancia VQ con predicción hacia atrás elimina la necesidad de transmitir explícitamente la información de potencia. Por supuesto, si el índice de la tabla de códigos de ganancia sufre algún error debido al canal, la calidad de la señal de voz en el decodificador se degrada. Sin embargo, para este esquema, se producen un número pequeño de distorsiones en la amplitud para unas pocas tramas, lo cual es preferible al caso anterior.

3.2.5 Aplicaciones

Muchas aplicaciones, como por ejemplo los sistemas de radio digitales celulares, requieren un algoritmo de codificación de voz que aúne una calidad elevada y robustez frente a errores por debajo de los 8 kbit/s. Otras aplicaciones de estos algoritmos de codificación de voz a 8 kbit/s son:

- Sistemas de comunicación personal (SCP) - Sistemas digitales por satélite - VoIP (Voz sobre IP)

Vector error

error Sub-vector 1

Sub-vector 1

Sub-vector 2

Vector de salida

Recomendación G.729:CS-CELP

61

- Otras aplicaciones como voz empaquetada y equipos con circuitos multiplexadores

Las aplicaciones de comunicación sin cables requieren que el codificador sea

robusto frente a los errores en el canal. Estos errores pueden ser aleatorios o secuenciales y el codificador debe de ser capaz de asimilarlos sin introducir efectos extraños en la señal. El decodificador debe recomponer tramas perdidas de la señal con una mínima pérdida en la calidad de la señal de voz.

3.2.6 Anexos El Anexo A del estándar G.729 es un modelo simplificado del G.729, que tiene una total interoperativibilidad con éste. Los codificadores G.729 y G.729A proporcionan la misma calidad de voz operando normalmente, la tasa de datos y el tamaño de las tramas es el mismo, y son totalmente interoperativos. Esto lleva a veces a confusión entre ambos porque son idénticos, a excepción de por su complejidad. El anexo B del estándar describe un detector de actividad vocal (VAD), que puede usar tanto el estándar G.729 como el G.729 A. El VAD permite la supresión de silencios (también llamadas discontinuidades en la transmisión) y generan ruido de confort. La supresión de silencios implica la detección de las partes de la señal donde no hay voz y hace discontinua la salida del codificador. El ruido confort se simula mediante ruido de fondo que suena durante la supresión de silencios para confirmar al oyente que la comunicación sigue activa. En una conversación normal la supresión de silencios reduce la cantidad de información enviada entre un 40 y un 60 %, reduciendo la tasa media de bit hasta en 4 kbit/s. Por tanto, la utilización del estándar G.729 con su Anexo B reduce la demanda de ancho de banda no transmitiendo los silencios.

Recomendación G.729: CS-CELP

62

Implementación del codificador de voz

63

4 Implementación del codificador de voz

4.1 Introducción

4.1.1 Definición del sistema a implementar

El codificador que se va a implementar se basa en el definido en la recomendación G.729 de la ITU-T (“Codificación de la voz a 8 kbit/s mediante predicción lineal con excitación por código algebraico de estructura conjugada”), con alguna pequeña modificación. Este tipo de predicción lineal se conoce genéricamente como CS-ACELP y a partir de ahora nos referiremos a ella de esta manera.

El códec definido en la recomendación está diseñado para trabajar con una señal

digital para efectuar primero un filtrado con la anchura de la banda telefónica de la señal analógica de entrada, seguido de un muestreo a 8000 Hz y su conversión a una modulación por impulsos codificados (MIC) lineal de 16 bits, para entrar en el codificador. La salida del decodificador se reconvierte a una señal analógica siguiendo un método similar. Este estudio se centrará exclusivamente al estudio de codificador y decodificador, dejando lo demás (paso de señales de analógico a digital y viceversa antes y después del sistema en función de la red en que trabaje, cuantización y envío de parámetros…) para próximos estudios sobre el tema.

El códec CS-CELP se basa en el modelo de codificación mediante predicción

lineal con excitación por código (CELP). Opera con tramas vocales de 10 ms correspondientes a 80 muestras a una velocidad de muestreo de 8000 muestras por segundo. En cada trama de 10 ms se analiza la señal vocal para extraer los parámetros del modelo CELP (coeficientes de filtro de predicción lineal, ganancias e índices de las tablas de códigos adaptativos y fijos). Los parámetros en cuestión se codifican y se transmiten. En el decodificador, dichos parámetros se usan para recuperar los parámetros de excitación y del filtro de síntesis. La voz se reconstruye filtrando la

Implementación del codificador de voz

64

excitación a través del filtro de síntesis de corto plazo como se ve en la figura 24. El filtro de síntesis de corto plazo se basa en un filtro de predicción lineal de décimo orden. El filtro de síntesis de largo plazo o de pitch se aplica mediante el método de la llamada tabla de códigos adaptativos. Tras calcular la señal vocal reconstruida, ésta se mejora con un postfiltrado. Además, para la correcta implementación del código en Matlab se añadirán ceros al inicio de ciertas señales (para el tratamiento de las primeras tramas), evitando de esta forma la posibilidad de tener índices con valores cero o negativos, no permitidos por esta aplicación. Para ir viendo la evolución de la señal en los diferentes puntos de codificador y decodificador, se empleará una ventana de 240 muestras de la vocal “a” de la palabra “campo”.

Fig. 24.- Diagrama funcional del modelo conceptual de síntesis (CELP)

4.1.2 Codificador El principio de codificación puede observarse en la figura 25. La señal de entrada se pasa por un filtro de paso de alta y se pone a escala en el bloque de preprocesamiento. La señal preprocesada actúa como señal de entrada para todo el análisis posterior. Se efectúa un análisis de predicción lineal para cada trama de 10 ms con el fin de calcular los coeficientes del filtro LP. Éstos se convierten en pares del espectro lineal (LSP, line spectrum pair). La cuantización de estos parámetros que se ha realizado es una cuantización lineal (La cuantización de estos parámetros, al igual que la de otros que veremos más adelante, de una forma más eficiente se deja propuesta para posteriores estudios). La señal de excitación se selecciona utilizando un procedimiento de búsqueda basado en el análisis por síntesis, según el cual la diferencia entre la señal original y la reconstruida se reduce al mínimo de acuerdo con una medida de la distorsión ponderada perceptualmente. Esto se logra pasando la señal de error por un filtro de ponderación perceptual, cuyos coeficientes se derivan del filtro LP sin cuantificar. El valor de la ponderación perceptual se hace adaptativo, con el fin de mejorar la calidad para señales de entrada con una respuesta de frecuencia plana.

El primer paso del proceso es analizar el retraso de pitch. Esto se hace

analizando la autocorrelación de la señal de voz (ponderada para enfatizar diversas características en frecuencia), y encontrando el máximo con la menor posición, de

Implementación del codificador de voz

65

forma que no se tomen múltiplos del retraso de pitch. A esto se le denomina análisis de pitch en bucle abierto. Se hace una búsqueda en la región alrededor del retraso de pitch en bucle abierto para encontrar el mejor retraso de pitch. El mejor retraso se define filtrando la excitación previa (retrasada la cantidad apropiada) a través del filtro de síntesis LP. El resultado es correlacionado con la señal de voz actual y dividido por la magnitud de la salida del filtro de síntesis, con lo cual se elimina la ganancia del proceso de búsqueda. Se toma el retraso que maximiza esta cantidad. La ganancia se obtiene directamente a partir de la excitación óptima. Se extrae de la señal de voz original la salida del filtro de síntesis usando el retraso óptimo y la excitación amplificada, y la diferencia, llamada señal objetivo, se usa para encontrar la segunda parte de la excitación.

La excitación consiste en cuatro impulsos. Cada impulso tiene una amplitud

positiva o negativa, y puede encontrarse dentro de un conjunto fijo de posiciones, que es diferente para cada impulso. Estos pulsos se filtran mediante un filtro armónico simple. La búsqueda se realiza, primero identificando las amplitudes ideales (positivas o negativas), y después las posiciones. Como antes, la búsqueda se realiza filtrando la señal de excitación a través del filtro de síntesis, y comparando el resultado con la señal objetivo. Después es dividida por la energía de la señal de salida del filtro de síntesis (eliminando de nuevo la ganancia del proceso de búsqueda). Se selecciona el conjunto de amplitudes y posiciones que maximizan esta métrica. Finalmente la ganancia se calcula directamente. Los parámetros de excitación (parámetros de tabla de códigos fijos y adaptativos) se determinan para cada subtrama de 5 ms (40 muestras). Los coeficientes cuantificados y no cuantificados del filtro LP se aplican a la segunda subtrama, mientras que para la primera subtrama se utilizan coeficientes del filtro LP interpolados (cuantificados o no). Se estima un retardo de tono ó pitch en bucle abierto por cada trama de 10 ms en base a la señal vocal ponderada perceptualmente. Luego se efectúan, para cada subtrama por separado, las siguientes operaciones:

• Se calcula la señal objetivo x(n) pasando el LP residual por el filtro de síntesis

ponderado ( ) ( )zAzW ˆ . Los estados iniciales de estos filtros se actualizan filtrando la diferencia que se produce entre el residuo LP y la excitación. Ello equivale al método corriente de sustraer de la señal vocal ponderada la respuesta de entrada cero del filtro de síntesis ponderado.

• Se calcula la respuesta de impulso h(n) del filtro de síntesis ponderado. • Se analiza el tono en bucle cerrado (para determinar el retardo y la ganancia de

la tabla de códigos adaptativos) mediante la respuesta objetivo x(n) y la respuesta a los impulsos h(n), indagando en torno al valor del retardo en bucle abierto. Se utiliza un retardo fraccionario de 1/3 de definición. La señal objetivo x(n) se actualiza sustrayendo la contribución (filtrada) de la tabla de códigos adaptativos y se aplica este nuevo objetivo, x’(n), para la búsqueda de de la tabla de códigos fijos, con el fin de obtener la excitación óptima.

• Se construye la tabla de códigos fijos, y

Implementación del codificador de voz

66

• Finalmente se actualizan las memorias de los filtros mediante la señal de excitación así determinada.

Figura 25.- Principio de codificación del codificador

4.1.3 Decodificador El principio del decodificador aparece en la figura 26. Primero se extraen los índices de los parámetros a partir del tren de bits recibidos. Los índices se decodifican para obtener los parámetros del códec correspondientes a una trama de voz de 10 ms. Estos parámetros son los coeficientes LSP, los dos retardos de tono fraccionarios, los dos vectores de de la tabla de códigos fijos y las ganancias de las tablas de códigos adaptativos y fijos. Los coeficientes LSP se interpolan y se convierten en coeficientes del filtro LP de cada subtrama. A continuación, para cada subtrama de 5 ms se aplican los siguientes pasos:

Implementación del codificador de voz

67

• Se construye la excitación sumando los vectores de las tablas de los códigos adaptativos y fijos, puestos a escala por sus respectivas ganancias.

• Se reconstruye la señal vocal filtrando la excitación por el filtro de síntesis LP.

• Se hace pasar la señal vocal reconstruida a través de una fase de

postprocesamiento, que incluye un postfiltro adaptativo basado en filtros de síntesis de largo y corto alcance, seguido de un filtro paso de alta y un escalamiento.

Figura 26.- Principio del decodificador

4.2 Descripción de las funciones del codificador En este apartado se describen las diferentes funciones del codificador representadas por los bloques de la Figura 25. Se presente un flujo más detallado de las señales en la Figura 27.

Implementación del codificador de voz

68

Figura 27.- Flujo de señales en el codificador

Implementación del codificador de voz

69

4.2.1 Preprocesamiento Como ya se ha indicado anteriormente la entrada al codificador debe ser una señal MIC (modulación por impulsos codificados) de 16 bits. Antes de iniciarse la codificación se efectúan dos funciones de preprocesamiento:

1. escalamiento de las señales 2. filtrado paso de alta

Para poner la señal en escala se divide la entrada por 2, con la finalidad de

reducir los desbordamientos. El filtro paso alto es una precaución para evitar componentes indeseables de baja frecuencia. Se utiliza un filtro de polos y ceros de segundo orden con una frecuencia de corte de 140 Hz. Ambas funciones, el escalamiento y el filtrado paso alto, se combinan dividiendo los coeficientes del numerador de este filtro por 2. El filtro resultante está dado por la expresión:

21

21

1 9114024,09059465,11

46363718,092724705,046363718,0)( −−

−−

+−+−=

zz

zzzH h (4.1)

Figura 28.- Filtro de preprocesado La señal de entrada filtrada mediante )(1 zH h se define como s(n), símbolo que

se utilizará de ahora en adelante en todas las demás aplicaciones del códec.

Implementación del codificador de voz

70

4.2.2 Análisis y cuantización de la predicción lineal Los filtros de análisis y síntesis de predicción de corto plazo se basan en filtros de predicción lineal (LP), ya vistos con anterioridad. Para nuestro codificador emplearemos un filtro de orden 10. El filtro de síntesis LP se define por:

( )∑

=

−+==

10

1

1

1

)(

1

k

kk zâ

zÂzH (4.2)

donde kâ , k =1,2,…,10, representa los coeficientes (cuantificados) de predicción lineal

(LP). La predicción a corto plazo o predicción lineal se lleva a cabo para cada trama mediante el método de autocorrelación, con una ventana asimétrica de 30 ms. Cada 80 muestras (10 ms), se calculan los coeficientes de autocorrelación de las señales vocales ventanizadas y se convierten en coeficientes LP por medio del algoritmo de Levinson. Luego los coeficientes LP se transforman al dominio LSP, para permitir la cuantificación e interpolación. Los filtros interpolados, cuantificados o no, se reconvierten en coeficientes LP (a fin de construir los filtros de síntesis y ponderación para cada subtrama).

4.2.2.1 Ventanización y cálculo de la autocorrelación La ventana de análisis LP consta de dos partes: la primera es media ventana de Hamming y la segunda un cuarto del ciclo de la función coseno. La ventana está dada por la ecuación:

=−

=−=

240,...,201)159

)201(2cos(

200,...,1)399

2cos(46,054,0

)(

nn

nn

nwlp π

π

(4.3)

Implementación del codificador de voz

71

Figura 29.- Ventana para el análisis LP Como en el análisis de predicción lineal hay un preanálisis de 5 ms, lo cual

requiere 40 muestras de la trama vocal futura. La ventana del análisis LP se aplica a 120 muestras de las tramas vocales precedentes, 80 muestras de la trama vocal presente y 40 muestras de la trama futura. La ventana puede verse gráficamente en la figura 29. En ella puede verse cómo la parte que más peso va a tener es la comprendida entre el inicio de la trama actual y la mitad de la subtrama siguiente.

En el siguiente diagrama (figura 30) puede verse cómo quedarían las ventanas y a qué muestras afectaría cada una si se tomara la señal vocal, dividida en tramas de 80 muestras, y se superpusiesen las ventanas. El diferente sombreado identifica las correspondientes excitación (señal vocal) y ventanas de análisis LP.

Figura 30.- Procedimiento de ventanización en el análisis LP

La señal vocal ventanizada se obtiene pasando la señal vocal a través de la ventana:

40,...,1)()()(' == nnsnwns lp (4.4)

Si se toma un trozo de la señal de voz y la enventanamos usando la ventana

definida, se obtiene lo siguiente:

Figura 31.- Tramo de señal de voz original y enventanada en el espacio muestral y en frecuencia

Implementación del codificador de voz

72

Como puede apreciarse, en las gráficas de la figura 31, las muestras que más valor tendrán en el posterior procesamiento van a ser las de la trama actual. Si se superponen las dos señales, figura 32, se puede apreciar mejor. Al usar una ventana tan grande, abarca tres tramas de la señal vocal, se busca una mayor resolución en la frecuencia.

Figura 32.- Tramo de señal de voz original y enventanada superpuestos en el espacio muestral

Figura 33.- Espectros de un tramo de señal de voz original y enventanada superpuestos

Implementación del codificador de voz

73

Esta señal ventanizada es la que se utiliza para calcular los coeficientes de autocorrelación:

11,...,1)(')(')(240

=−=∑=

iinsnsirin

(4.5)

Con el fin de eludir problemas aritméticos para las señales de entrada de bajo nivel, se pone un límite inferior al primer coeficiente de la autocorrelación de r(1)=1,0. Como el análisis LP puede generar filtros de síntesis con picos espectrales afilados, se expande el ancho de banda para evitar problemas. La expansión afecta especialmente a los picos de los formantes principales de la respuesta en magnitud del filtro. Normalmente esta expansión del ancho de banda se emplea para evitar sonidos sintetizados no naturales en señales de voz con un pitch elevado, cuando el análisis LP tiene problemas a la hora de estimar la envolvente del espectro. Además, la expansión aumenta la robustez del filtro frente a errores de cuantización. Una expansión del ancho de banda de 60 Hz se hace multiplicando los coeficientes de autocorrelación por los factores:

11,...,22

2

1exp)(

2

0 =

−= i

f

ifiw

slag

π (4.6)

donde f0=60 Hz es la expansión de la anchura de banda y fs=8000 Hz es la frecuencia de muestreo. Se hace, además, una corrección por ruido blanco para reducir posibles problemas numéricos en el análisis LP. La voz tiene un espectro con un fuerte filtrado en baja frecuencia (-6 dB/octava), por lo que presenta un rango dinámico elevado. A pesar de que la expansión del ancho de banda minimiza el rango dinámico al reducir sus picos, las componentes de alta frecuencia en el espectro de la señal de voz tienen una amplitud muy pequeña. La corrección se usa dado que el análisis LP requiere una alta precisión computacional para capturar la descripción de los elementos en el extremo final del espectro de la señal de voz. Cuando estos elementos son muy pequeños, la matriz de autocorrelación se vuelve singular, generando problemas computacionales. Añadiendo a la señal un ruido de bajo nivel, se reduce el rango dinámico del espectro y se evitan los problemas numéricos. Para introducir esta corrección se multiplica r(1) por un factor de corrección por ruido blanco 1,0001, lo que equivale a añadir un umbral de ruido de -40 dB a la señal. Los coeficientes de autocorrelación modificados están definidos por: )1(0001,1)1(' rr =

11,...,2)()()(' == iiriwir lag (4.7)

Si se representa las densidades espectrales de una ventana de la señal con sus coeficientes de autocorrelación sin modificar y modificados, se observa como se suavizan los picos del espectro, afectando especialmente a los picos de los formantes principales:

Implementación del codificador de voz

74

Figura 34.- Densidad espectral de un tramo de voz sin modificar sus coeficientes de

autocorrelación y modificándolos

4.2.2.2 Algoritmo de Levinson-Durbin

Los coeficientes de autocorrelación modificados )(' ir se utilizan para obtener los

coeficientes de filtro LP ka , k = 2,…, 11. Esta operación se realiza tal y como se

explicó en la parte teórica, resolviendo el siguiente conjunto de ecuaciones:

11,...,2)()('11

2

=−=−∑=

iirjiraj

j (4.8)

que se obtienen a partir de la ecuación fundamental del modelo LPC y, donde los coeficientes ja son las estimaciones de los coeficientes ka .

Este conjunto de ecuaciones (4.8) se resuelve mediante el algoritmo de Levinson

Durbin. Esto puede realizarse mediante la función levinson de Matlab, a la cual solo se le pasa como argumento los coeficientes de autocorrelación modificados. La solución final se expresa por [ ]10

jj aa = , j = 1,…,11, con 0,11 =a .

Implementación del codificador de voz

75

4.2.2.3 Conversión LP -> LSP

Los coeficientes de filtro de predicción lineal (LP), aj, j = 1,…,11, se convierten para los efectos de cuantificación e interpolación en coeficientes de pares del espectro lineal (LSP). Esta conversión se efectúa tal y como se vio en la parte teórica, aunque a efecto prácticos se usará el comando de Matlab poly2lsf, que realiza dicha conversión.

4.2.2.4 Cuantización de los coeficientes LSP

De una manera sencilla se utilizará una cuantización lineal de los coeficientes LSP, en lugar de la cuantización vectorial descrita en la recomendación, que se dejará para posteriores estudios.

4.2.2.5 Interpolación de los coeficientes LSP

Los coeficientes LP cuantizados (y no cuantizados) se utilizan para la segunda subtrama. Para la primera subtrama, los coeficientes LP cuantizados (y no cuantizados) se obtienen mediante interpolación lineal de los parámetros correspondientes en las subtramas adyacentes. La interpolación tiene lugar en los coeficientes LSP del dominio coseno. Sean qi

(actual) los coeficientes LSP calculados para la trama actual de 10 ms, y qi

(anterior) los coeficientes LSP calculados en la trama anterior de 10 ms. Los coeficientes LSP interpolados (no cuantizados) en cada una de las dos subtramas corresponden a: Subtrama 1: 10,...,15,05,0 )()()1( =+= iqqq actual

ianterior

ii

Subtrama 2: 10,...,15,0 )()2( == iqq actualii (4.9)

El mismo procedimiento de interpolación se aplica a los coeficientes LSP cuantificados, sustituyendo qi por iq en la ecuación (4.9)

4.2.2.6 Conversión de LSP a LP

Una vez cuantificados e interpolados los coeficientes LSP, se reconvierten en coeficientes LP ak. Esta conversión se realiza de la siguiente manera. Se hallan los coeficientes de F1(z) y F2(z) ampliando las ecuaciones 2.26 tras conocer los coeficientes LSP cuantificados e interpolados. Los coeficientes f1(i) ,i = 1,…,5, se calculan a partir de qi mediante la relación recursiva:

Implementación del codificador de voz

76

( ) ( ) ( )

[ ]( ) [ ]( ) [ ]( ) [ ]( )

fin

fin

jfjfqjfjf

hastaodecreciendijpara

ififqif

aipara

iii

ii

ii

212

11

2212

51

11

1112

111

1121

−+−−=

−=−+−−=

=

−−−

con valores iniciales f1(0) = 1 y f1(-1) = 0. Los coeficientes f2(i) se calculan de manera similar, sustituyendo q2i-1 por q2i. Después de determinar los coeficientes f1(i) y f2(i), F1(i) y F2(i) se multiplican por el factor 1+z-1 y 1-z-1 respectivamente, obteniendo ( )zF1′

y ( )zF2′ , o sea:

( ) ( ) ( )( ) ( ) ( ) 5,...,11

5,...,11

222

111

=−−=′=−+=′

iififif

iififif (4.10)

Finalmente, los coeficientes LP se calculan a partir de ( )if1′ y ( )if2′ mediante:

( ) ( )( ) ( )

=−′−−′=′+′

=10,...,6115,0115,0

5,...,15,05,0

21

21

iifif

iififai (4.11)

Esto se deduce directamente de la relación ( ) ( ) ( )( ) 2/21 zFzFzA ′+′= , así como el

hecho de que ( )zF1′ y ( )zF2′ son respectivamente, polinomios simétricos y antisimétricos.

4.2.3 Ponderación perceptual El filtro de ponderación perceptual se basa en los coeficientes del filtro LP no cuantizados ai y viene definido por:

( )( ) ∑

=−

=−

+

+==

10

1 2

10

1 1

2

1

1

1)(

k

kk

ki

k

kk

k

za

za

zA

zAzW

γ

γγγ

(4.12)

Los valores de 21 γγ y determinan la respuesta de frecuencia del filtro )(zW . Mediante un ajuste adecuado de estas variables es posible lograr una ponderación más eficaz. El método consiste en hacer de 21 γγ y una función de la forma espectral de la señal de entrada. Se efectúa esta adaptación una vez por trama de 10 ms, pero aplicando un procedimiento de interpolación para cada primera subtrama, a fin de suavizar el proceso de adaptación. La forma del espectro se obtiene a partir de un filtro de predicción lineal de 2º orden, como resultado secundario de la recursión de Levinson-Durbin. Los coeficientes de reflexión 1k se convierten en coeficientes io , logaritmo

relacionado de zona (LAR, Log Area Ratio) mediante:

Implementación del codificador de voz

77

( )( ) 2,1

0,1

0,1log =

−+

= ik

ko

i

ii (4.13)

Los coeficientes LAR correspondientes a la trama actual de 10 ms sirven para la segunda subtrama. Los coeficientes LAR de la primera subtrama se obtienen mediante interpolación lineal de los parámetros LAR de la trama anterior. Los coeficientes LAR interpolados en cada una de ambas subtramas están dados por:

( ) ( ) ( )

( ) ( ) 2,1:2

2,15,05,0:12

1

==

=+=

iooSubtrama

ioooSubtramaactual

ii

actuali

anteriorii (4.14)

La envolvente del espectro se caracteriza como plana (flat = 1) o inclinada (flat = 0). Para cada subtrama se logra esta caracterización aplicando a los coeficientes LAR una función umbral. Para evitar cambios bruscos, se realiza una histéresis tomando en cuenta el valor de la envolvente (flat) en la subtrama anterior m-1,

( ) ( ) ( )

( ) ( )( ) ( )

( )

=<−>

=>−<

=−

casosotroslosenflat

flatyobienoosi

flatyoyosi

flatm

mmm

mmm

1

121

121

043,052,11

165,074,10

(4.15)

Cuando el espectro interpolado para una subtrama se califica de plano

( )( )1=mflat , los factores de ponderación se establecen en 6,094,0 21 == γγ y . Cuando

el espectro se califica de inclinado ( )( )0=mflat , el valor de 1γ se establece a 0,98 y el

de 2γ se adapta a la intensidad de las resonancias en el filtro de síntesis LP, pero

limitado entre 0,4 y 0,7. En caso de registrarse una fuerte resonancia, el valor de 2γ se fija más cerca del límite superior. Esta adaptación se logra en base al criterio de la distancia mínima entre dos coeficientes LSP sucesivos para la subtrama actual. La distancia mínima está dada por: [ ] 9,...,11min =−= + imínd ii ωω (4.16)

El valor de 2γ se calcula mediante la relación lineal: 7,04,0int0,10,6 2min2 ≤≤+−= γγ ervaloelend (4.17) Si se representa la forma del filtro para cada una de estas situaciones, es decir, con 6,094,0 21 == γγ y para el caso en que el espectro resulte plano, y con unos

valores cualesquiera de entre los posibles, por ejemplo 7,098,0 21 == γγ y , para un espectro inclinado:

Implementación del codificador de voz

78

Figura 35.- Comparación del filtro de ponderación cuando la envolvente se considera plana y

cuando se considera inclinada La señal vocal ponderada en una subtrama está dada por:

40,...,1)()()()(10

12

10

11 =−−−+= ∑∑

==nknswaknsansnsw

k

kk

k

kk γγ (4.18)

Figura 36.- Tramo de señal vocal sin ponderar y ponderado en el espacio muestral y en frecuencia

Implementación del codificador de voz

79

Si se compara el mismo tramo de la señal vocal sin ponderar y una vez ponderado, se aprecia el efecto que tiene la ponderación sobre la señal vocal, que consiste principalmente en una disminución de la amplitud de los picos y valles de la señal, sin grandes cambios en la forma de onda.

Figura 37.- Representación señal vocal sin ponderar frente a señal vocal ponderada en el espacio muestral

Figura 38.- Representación espectro señal vocal sin ponderar frente a espectro señal vocal

ponderada

Implementación del codificador de voz

80

La señal vocal ponderada sw(n) se utiliza para estimar el retardo de tono en la trama vocal.

4.2.4 Análisis de tono en bucle abierto Con el fin de disminuir la complejidad que implica buscar el mejor retardo de la tabla de códigos adaptativos, el campo de búsqueda se limita en torno a un retardo candidato Top, que se obtiene de un análisis de tono en bucle abierto. Este análisis de tono en bucle abierto se efectúa una vez por cada trama (10 ms). La estimación de tono en bucle abierto utiliza los valores de la señal vocal ponderada sw(n) de la ecuación 4.18, y el método descrito a continuación:

- como primer paso, se establecen tres máximos de la correlación

∑=

−=80

1

)()()(n

nswnswR αα (4.19)

para los tres rangos siguientes:

i = 1: 81,…,144 i = 2: 41,…,80 i = 1: 21,…,40

- Los máximos retenidos R(ti), i = 1,…,3 se normalizan mediante:

3,...,1)(

)()('

2=

−=∑

itnsw

tRtR

n i

ii (4.20)

- El ganador de las tres correlaciones normalizadas se selecciona favoreciendo

aquellos retardos que presentan valores en la gama inferior. Ello se logra ponderando las correlaciones normalizadas correspondientes a los retardos más largos. El mejor retardo de bucle abierto Top se determina de la siguiente manera:

)(')(' 1

1

tRTR

tT

op

op

=

=

si )('85,0)(' 2 opTRtR ≥

)(')(' 2tRTR op =

2tTop =

fin si )('85,0)(' 3 opTRtR ≥

)(')(' 3tRTR op =

3tTop =

fin

Implementación del codificador de voz

81

El recurso de dividir la gama de retardos en tres secciones para favorecer los valores menores tiene por objeto evitar la elección de los múltiplos del tono fundamental (pitch).

4.2.5 Cálculo de la respuesta impulsiva La respuesta a impulsos h(n) del filtro de síntesis ponderado W(z)/Â(z) se necesita para indagar las tablas de códigos adaptativos y fijos. Se calcula la respuesta de impulso h(n) para cada subtrama filtrando una señal consistente en los coeficientes del filtro A(z/γ1) completado con ceros, a través de ambos filtros 1/Â(z) y 1/A(z/γ2). El filtro de síntesis y el filtro de síntesis ponderado se muestran en la figura 39. Puede observarse claramente el efecto de la ponderación:

Figura 39.- Filtro de síntesis y filtro de síntesis ponderado

La respuesta impulsiva de este filtro es la siguiente:

Figura 40.- Respuesta impulsiva del filtro de síntesis ponderado

Implementación del codificador de voz

82

4.2.6 Cálculo de la señal objetivo La señal objetivo x(n) que se usará como referencia para la búsqueda de la tabla de códigos adaptativos suele calcularse restando la respuesta de entrada cero del filtro de síntesis ponderado W(z)/Â(z) = A(z/γ1)/[ Â(z)A(z/γ2)] de la señal vocal ponderada sw(n) de la ecuación 4.18. Esto se realiza para cada subtrama. Un procedimiento equivalente para calcular la señal objetivo, que será el que usaremos en este desarrollo, consiste en filtrar la señal LP residual r(n) a través de la combinación del filtro de síntesis 1/Â(z) y el filtro de ponderación A(z/γ1)/A(z/γ2). Tras determinar la excitación correspondiente a la subtrama, los estados iniciales de dichos filtros se actualizan filtrando la diferencia entre las señales residuales y de excitación. La actualización de la memoria de estos filtros se examinará más adelante. La señal residual r(n), necesaria para determinar el vector objetivo, también se aplica a la búsqueda de la tabla de códigos adaptativos, para ampliar la memoria intermedia de la excitación anterior. El recurso simplifica el procedimiento de búsqueda de la tabla de códigos adaptativos para retardos menores que el correspondiente a una subtrama de tamaño 40, como se verá en el siguiente apartado. El residuo LP está definido por:

,401, )()()(10

1

…=−+= ∑=

nknsânsnrk

k (4.21)

Si se calcula el residuo del tramo de voz que se está empleando, se obtiene:

Figura 41.- Residuo LP de un tramo de la señal de voz

La señal objetivo se muestra en la figura 42. Al igual que en el residuo LP todavía se aprecia la periodicidad de la señal.

Implementación del codificador de voz

83

Figura 42.- Señal objetivo en el tiempo y en la frecuencia

4.2.7 Búsqueda de la tabla de códigos adaptativos

La tabla de códigos adaptativa se basa en un filtro de síntesis de pitch, que es el responsable del tratamiento de los efectos de largo plazo. La salida del filtro de pitch ó de largo plazo es simplemente la señal de excitación previa retrasada una cierta cantidad (retraso) y escalada con una cierta ganancia.

Los componentes de la tabla de códigos adaptativos representan la periodicidad

de la señal de excitación usando un retraso de pitch fraccionario con una resolución de 1/3. El índice y la ganancia de la tabla se encuentran usando una búsqueda en bucle cerrado sobre el retraso obtenido en la búsqueda en bucle abierto. La señal a ajustar será la señal objetivo.

Los parámetros de la tabla de códigos adaptativos (o parámetros de tono) son, por tanto, el retardo y la ganancia. Con arreglo al método de la tabla de códigos adaptativos para aplicar el filtro de tono se repite la excitación para retardos menores que la longitud de la subtrama. En la fase de reconocimiento, la excitación se amplia mediante el residuo LP, para simplificar la búsqueda en bucle cerrado. La búsqueda de la tabla de códigos adaptativos se efectúa para cada subtrama (5 ms). Para cada subtrama, el retardo óptimo se determina mediante un análisis en bucle cerrado que minimiza el error cuadrático medio ponderado. En la primera subtrama, se determina el retardo T1 investigando un pequeño intervalo (seis muestras) de valores de retardo en torno al retardo en bucle abierto Top. Los límites de la búsqueda, tmin y tmax, se definen mediante:

Implementación del codificador de voz

84

3min −= opTt

si 20min <t entonces 20min =t

6min += ttmáx

si 143>máxt entonces

143=máxt

6min −= máxtt

fin Para la segunda subtrama, el análisis de tono en bucle cerrado se efectúa en torno al tono seleccionado para la primera subtrama, para determinar el retardo óptimo

T2. El intervalo de búsqueda está limitado entre 3

2min −t y

3

2+máxt , donde tmin y tmax se

deducen de T1 como sigue:

5)int( 1min −= Tt

si 20min <t entonces 20min =t

9min += ttmáx

si 143>máxt entonces

143=máxt

9min −= máxtt

fin La búsqueda de tono de bucle cerrado reduce al mínimo el error cuadrático medio ponderado entre la señal vocal original y la reconstruida. Esto se logra haciendo máximo el término:

=

==40

1

40

1

)()(

)()()(

n

n

nyny

nynxR

αα

αα (4.22)

donde x(n) es la señal objetivo e yα(n) la excitación filtrada anterior en el retardo α (excitación anterior convolucionada con h(n)). Obsérvese que el intervalo de búsqueda está limitado en torno a un valor preseleccionado, correspondiente al tono en bucle abierto Top para la primera subtrama y T1 para la segunda subtrama. La convolución yα(n) se calcula para el retardo tmin. Para los demás retardos enteros en el intervalo de búsqueda α=tmin+1,…,tmax, se actualiza mediante la relación recursiva: 1,...,40)()()1()( 1 =−+−= − nnhunyny ααα (4.23)

donde u(n), n = -144,…,40 es la memoria intermedia de excitación e yα-1(-1) = 0. Nótese que, en la fase de búsqueda, las muestras u(n), n = 1,…,40 no se conocen y se necesitan para determinar los retardos de tono inferiores a 40. Para simplificar la búsqueda, se

Implementación del codificador de voz

85

copia el residuo LP a u(n), de modo que la relación expresada en la ecuación (4.23) sea válida para todos los retardos. Para determinar T1 y T2 cuando el retardo en bucle cerrado entero óptimo es inferior a 85, deben probarse las fracciones alrededor del retardo entero óptimo. La búsqueda de tono fraccionario se realiza interpolando la correlación normalizada de la ecuación (4.22) para encontrar su valor máximo. La interpolación tiene lugar mediante un filtro FIR b12 basado en una función sinc de Hamming ventanizada con truncamiento a ± 11 y completando con ceros a ± 12 [b12(12) = 0]. El filtro tiene una frecuencia de corte (-3 dB) a 3600 Hz en el dominio de sobremuestra. Los valores interpolados de R(α) para las fracciones -⅔, -⅓, 0, ⅓ y ⅔ se obtienen aplicando la fórmula de interpolación:

2,1,0)33()1()3()()(3

012

3

012 =+−++++−= ∑∑

==titbiRitbiRR

iit ααα (4.24)

donde t = 0, 1, 2 corresponde a las fracciones 0, ⅓ y ⅔, respectivamente. Debe tenerse presente la necesidad de calcular los términos de correlación de la ecuación (4.22) utilizando el intervalo entre tmin – 4 y tmáx + 4, para permitir una interpolación adecuada.

4.2.7.1 Generación del vector de tabla de códigos adaptativos

Una vez determinado el retardo de tono se calcula el vector de tabla de códigos adaptativos v(n) interpolando la señal de excitación anterior u(n) en el retardo entero dado α y la fracción t:

2,1,0;40,...,1;)33()1()3()()(9

030

9

030 ==+−++−+++−= ∑∑

==tnitbinuitbinunv

ii

αα

(4.25) El filtro de interpolación b30 se basa en una función sinc de Hamming ventanizada con truncamiento a ± 29 y completando con ceros a ± 30 [b30(30) = 0]. El filtro tiene una frecuencia de corte (-3 dB) a 3600 Hz en el dominio de sobremuestra.

Implementación del codificador de voz

86

Figura 43.- Filtro de interpolación

4.2.7.2 Cálculo de la palabra de código para retardos de tabla de códigos adaptativos

Los retardos de tono T1 y T2 no se envían directamente, sino que se codifican para enviarlos al decodificador, dos índices P1 y P2 que se obtienen a partir de los retardos fraccionarios, compuestos de su parte entera int(T) y su parte fraccionaria frac/3, frac = -1, 0, 1. El índice de tono P1 se obtiene de la siguiente manera:

( )( )

=…=+−=…=−+−

=0 frac 143], ,[86, T1 si 19785)1int(

1] 0, [-1, frac 85], ,[19, T1 si 119)1int(31

T

fracTP (4.26)

El índice de tono T2 se codifica en relación con el valor de T1. Aplicando la misma interpretación arriba indicada, se codifica el retardo fraccionario T2, representado por su parte entera int(T2) y una parte fraccionaria frac/3, frac = -1, 0, 1, sobre la base de: ( ) 2)2int(32 min ++−= fractTP (4.27) donde tmin se deriva de T1, igual que en el apartado 4.2.7.

4.2.7.3 Cálculo de la ganancia de tabla de códigos adaptativos

Después de determinar el retardo de tabla de códigos adaptativos, se calcula la ganancia de tabla de códigos adaptativos gp según:

∑∑

=

==40

1

40

1

)()(

)()(

n

np

nyny

nynxg en el intervalo 0 ≤ gp ≤ 1,2 (4.28)

Implementación del codificador de voz

87

donde x(n) es la señal objetivo e y(n) es el vector de la tabla de códigos adaptativos filtrado [respuesta al estado cero de W(z)/Â(z) respecto de v(n)]. Este vector se obtiene mediante convolución de v(n) con h(n):

40,...,1)()()(1

=−=∑=

ninhivnyn

i

(4.29)

4.2.8 Tabla de códigos fijos: estructura y búsqueda La tabla de códigos fijos refleja lo que queda de la señal de voz original una vez se le ha extraído la información del tracto vocal y la del pitch (corto y largo plazo). Se basa en una estructura de tabla de códigos algebraicos mediante un diseño de permutación de impulso individual intercalado (ISPP, interleaved single-pulse permutation). En esta tabla, cada vector de la tabla de códigos contiene cuatro impulsos no cero. Cada impulso puede tener amplitudes +1 o -1 y asumir las posiciones que aparecen en el siguiente cuadro:

Impulso Signo Posiciones i0 s0: ±1 m0: 1, 6, 11, 16, 21, 26, 31, 36 i1 s1: ±1 m1: 2, 7, 12, 17, 22, 27, 32, 37 i2 s2: ±1 m2: 3, 8, 13, 18, 23, 28, 33, 38 i3 s3: ±1 m2: 4, 9, 14, 19, 24, 29, 34, 39

5, 10, 15, 20, 25, 30, 35, 40

Tabla 7.- Estructura de la tabla de códigos fijos El vector de tabla de códigos fijos c(n) se construye tomando un vector de dimensión 40 e introduciendo los cuatro impulsos unitarios en las posiciones encontradas, multiplicadas por su signo correspondiente:

40,...,1)()()()()( 33221100 =−+−+−+−= nmnsmnsmnsmnsnc δδδδ (4.30)

donde δ(0) es un impulso unitario. Si se representa el vector de la tabla de códigos fijos del tramo de voz analizado, se tiene:

Implementación del codificador de voz

88

Figura 44.- Vector de la tabla de códigos fijos, c(n)

En este caso, los cuatro impulsos tienen signo negativo. Una característica especial incorporada en la tabla de códigos es que el vector de

tabla de códigos seleccionado se pasa a través de un prefiltro adaptativo P(z) que amplia los componentes armónicos para mejorar la calidad de las señales vocales reconstruidas. Se utiliza para ello el filtro: ( )TzzP −−= β11)( (4.31) donde T es la componente entera del retardo de tono de la subtrama actual y β una ganancia de tono. El valor de β se hace adaptativo aplicando la cuantificación de la ganancia de la tabla de códigos adaptativos de la subtrama anterior, es decir: )1(ˆ −= m

pgβ en el intervalo 0,2 ≤ β ≤ 0,8 (4.32)

El prefiltro adaptativo para el tramo de señal de voz a estudio, que tiene una β de

0,2 y una T de 52 (que equivale a una frecuencia de 153,85 Hz):

Figura 45.- Prefiltro adaptativo

Implementación del codificador de voz

89

Para retardos menores de 40, la tabla de códigos c(n) de la ecuación (4.30) se modifica con arreglo a:

=−+=

=40,...,n )()(

1-T0,...,n )()(

TTncnc

ncnc

β (4.33)

Esta modificación se incorpora a la búsqueda de la tabla de códigos fijos modificando la respuesta a impulsos h(n) según:

=−+=

=40,...,n )()(

1-T0,...,n )()(

TTnhnh

nhnh

β (4.34)

4.2.8.1 Procedimiento de búsqueda de la tabla de códigos fijos La tabla de códigos fijos se explora para hacer mínimo el error cuadrático medio entre la señal de voz ponderada de entrada, sw(n), de la ecuación (4.18) y la señal de voz ponderada reconstruida. Se actualiza la señal objetivo utilizada para la búsqueda del tono en bucle cerrado restando la contribución de la tabla de códigos adaptativos, o sea: ( ) ( ) ( ) 40...,,1=−=′ nnygnxnx p (4.35)

donde ( )ny es el vector de la tabla de códigos adaptativos de la ecuación (4.29) y

pg corresponde a la ganancia de la tabla de códigos adaptativos de la ecuación (4.28).

Para el caso del tramo de la señal de voz estudiado, la ganancia de la tabla de la tabla de códigos adaptativos es cero (gp = 0), por tanto, la señal objetivo actualizada será igual a la señal objetivo original. Si se toma otro tramo donde esa ganancia no sea 0,

Figura 46.- Comparación señal objetivo y señal objetivo actualizada

Implementación del codificador de voz

90

Se aprecian pequeñas diferencias en ciertos lugares de la gráfica. Las diferencias entre una señal y otra no son muy significativas debido a que los valores que toma la ganancia de la tabla de códigos adaptativos son pequeños. La matriz H se define como la matriz inferior de convolución triangular de Toeplitz con diagonal h(1) y diagonales inferiores h(2), …, h(40).

( )( ) ( )( ) ( ) ( )

( ) ( ) ( ) ( )

=

1383940

0123

0012

0001

hhhh

hhh

hh

h

H

L

MOMMM

L

L

L

(4.36)

La matriz Ф=HtH contiene las correlaciones de h(n), mientras que los elementos

de esta matriz simétrica están dados por:

( ) ( ) ( ) 40...,,40...,,1,40

ijijnhinhjijn

==−−=Φ ∑=

(4.37)

La señal de correlación d(n) se obtiene a partir de la señal objetivo x’(n) y la respuesta a los impulsos h(n) mediante:

( ) ( ) ( ) 40...,,140

=−′=∑=

nnihixndni

(4.38)

Si ck representa el k-ésimo vector de la tabla de códigos fijos, la tabla de códigos se explora para hacer máxima la expresión:

( ) ( )( )

ktk

n k

k

k

cc

ncnd

E

C

Φ= ∑ =

240

12

(4.39)

donde t denota transposición. Por tanto, para calcular las posiciones y el signo de cada uno de los cuatro impulsos que conforman el vector de códigos fijos se va probando con cada una de las diferentes opciones que existen para cada uno de ellos, tomando la posición y el signo de aquel que maximice la expresión (4.39). Como ejemplo se presenta cómo se obtiene el primero de los impulsos para el tramo de voz estudiado:

Implementación del codificador de voz

91

Figura 47.- Valores que toma la expresión (4.39) para el rango del primer impulso

Viendo la gráfica, puede apreciarse que la expresión (4.39) tiene su máximo en

la posición 31, dentro del rango de posibles valores para el primer impulso, y con signo negativo. Por lo tanto, el vector de códigos fijos tendrá un impulso negativo en la posición 31.

4.2.8.2 Cálculo de palabra de código de la tabla de códigos fijos

Para la codificación de los impulsos se usarán dos palabras código: una para el signo y otra para la posición de los mismos. Definiendo s=1 cuando el signo es positivo y s=0 cuando el signo es negativo, la palabra de código de signo se obtiene de: 4321 842 ssssS +++= (4.40)

y la palabra de código de la tabla de códigos fijos se obtiene de: ( ) ( ) ( ) ( )( )jxmmmmC ++++= 52512564585 4321 (4.41)

donde jx = 0 cuando m4 = 4, 8, …, 39, y jx = 1 cuando m4 = 5, 10, …, 40.

4.2.8.3 Cálculo de la ganancia de la tabla de códigos fijos

Se calcula la ganancia de la tabla de códigos fijos a partir de las variables y vectores que se han calculado. La ganancia será equivalente a la expresión utilizada para calcular la posición y el signo de los impulsos del vector de la tabla de códigos fijos, pero sin elevar el numerador al cuadrado. La expresión de esta ganancia se obtiene en la parte teórica (apartado 2.4.2) y es:

Implementación del codificador de voz

92

( ) ( )

ktk

n k

c cc

ncndg

Φ= ∑ =

40

1 (4.42)

4.2.9 Actualización de la memoria Es necesario actualizar los estados de los filtros de síntesis y de ponderación para calcular la señal objetivo en la subtrama siguiente. Después de cuantificar las dos ganancias, la señal de excitación, u(n), en la subtrama actual se obtiene mediante: ( ) ( ) ( ) 40...,,1ˆˆ =+= nncgnvgnu cp (4.43)

donde pg y cg son las ganancias cuantificadas de las tablas de códigos adaptativos y

fijos respectivamente, ( )nv es el vector de tabla de códigos adaptativos (excitación

anterior interpolada) y ( )nc es el vector de tabla de códigos fijos que incluye los armónicos ampliados. Si se representa la señal de excitación de una subtrama y de toda la ventana que estamos estudiando, se obtiene:

Figura 48.- Señal de excitación de la subtrama y del tramo de la señal de voz

Implementación del codificador de voz

93

4.3 Descripción de las funciones del decodificador El principio del decodificador es el siguiente:

- Se decodifican los parámetros enviados desde el codificador. - Esos parámetros se usan para calcular la señal de voz reconstruida. - La señal vocal reconstruida se mejora mediante una operación de

postprocesamiento consistente en un postfiltro, un filtro paso de alta y un escalamiento ascendente.

4.3.1 Procedimiento de decodificación de los parámetros

En nuestro caso, al no haberse realizado codificación de los coeficientes LSP, simplemente se realizó una cuantización lineal, solo habrá que aplicar el procedimiento de interpolación descrito en el apartado 4.2.5 para obtener dos conjuntos de coeficientes LSP interpolados (correspondientes a dos subtramas). Para cada subtrama los coeficientes LSP interpolados se convierten en coeficientes ak del filtro LP, que se utilizan para sintetizar la señal vocal reconstruida en la subtrama.

Figura 49.- Flujo de señales en el decodificador

Implementación del codificador de voz

94

El proceso de decodificación tiene lugar en el siguiente orden (se repiten los siguientes pasos para cada subtrama):

1- Decodificar el vector de tabla de códigos adaptativos 2- Decodificar el vector de tabla de códigos fijos 3- Decodificar las ganancias de las tablas de códigos adaptativos y fijos 4- Calcular la señal vocal reconstruida

4.3.1.1 Decodificación del vector de tabla de códigos adaptativos

El índice P1 de tabla de códigos adaptativos se utiliza para determinar las partes entera y fraccionaria del retardo de tono T1. La parte entera y la parte fraccionaria se obtienen a partir de T1 como se indica a continuación:

( ) ( )( )

( )

fin

frac

PT

ootrode

TPfrac

PT

Psi

0

1121int

mod

58int31

193/21int

1971

1

1

1

=−=

+−=++=

<

Las partes enteras y fraccionarias de T2 se obtienen a partir de P2 y tmin, donde tmin se deriva de T1 como sigue:

( )

fin

tt

t

entoncestsi

tt

tentoncestsi

Tt

9

143

143

9

2020

5int

maxmin

max

max

minmax

minmin

1min

−==

>+=

=<−=

Ahora se decodifica T2 mediante:

( ) ( )

( )( )13/22322

13/22int min2

−+−−=+−+=

PPfrac

tPT (4.44)

El vector de tabla de códigos adaptativos v(n) se encuentra interpolando la excitación anterior u(n) (en el retardo de tono) mediante la ecuación (4.25, tal y como se definió en el apartado 4.2.7.1 (Generación del vector de la tabla de códigos adaptativos).

Implementación del codificador de voz

95

2,1,0;40,...,1;)33()1()3()()(9

030

9

030 ==+−++−+++−= ∑∑

==

tnitbinuitbinunvii

αα

(4.45)

4.3.1.2 Decodificación del vector de tabla de códigos fijos El índice recibido C de tabla de códigos fijos se utiliza para extraer las posiciones de los impulsos de excitación. Los signos de los impulsos se obtienen a partir de S. Para ello se invierte el proceso descrito en el punto 4.2.8.2. ( ) ( ) ( ) ( )( )jxmmmmC ++++= 52512564585 4321 (4.46)

donde jx = 0 cuando m4 = 4, 8, …, 39, y jx = 1 cuando m4 = 5, 10, …, 40. Se toma la palabra código y se ve si es un número entero o por el contrario es decimal. La aportación de los tres primeros impulsos del vector de la tabla de códigos fijos a la palabra código es un número cuya parte decimal es 0.8. Ahora bien, si el cuarto impulso del vector está dentro del rango 4, 9, …, 39, su aportación a la palabra de código será un número con parte decimal 0.2 y, por tanto, la palabra de código será un número entero. Si por el contrario el cuarto impulso tomara su valor dentro del rango 5, 10, …, 40, su aportación a la palabra de código sería un número entero, por lo que la palabra de código obtenida sería un número no entero y con parte decimal igual a 0.8. Resumiendo, si la palabra de código de la tabla de códigos fijos no es un número entero, entonces m4 = 5, 10, …, 40 y se despejaría su valor exacto del último término de la ecuación 4.46. Si, por el contrario, el número es entero, se divide la palabra de código por 512 y se busca el número inmediatamente inferior al obtenido con parte decimal 0.8, con el cual se despejaría el valor de m4, con m4 = 4, 9, …, 39. Se resta a la palabra de código la aportación del cuarto impulso, se divide por 64 y se busca el número inmediatamente inferior al obtenido con parte decimal 0.6, que sirve para calcular la posición exacta del tercer impulso m3. Para el segundo impulso se realiza la misma operación que para el tercero, dividiendo por 8 y buscando un número con parte decimal igual a 0.4. Con el número resultante de restar a la palabra de código la contribución de los 3 últimos impulsos (m2, m3 y m4 ) se calcula la posición del primer impulso. En el caso de la palabra de código de signo, que se obtenía: 4321 842 ssssS +++= (4.47)

definiendo s=1 cuando el signo es positivo y s=0 cuando el signo es negativo. Se estudian todos y cada uno de los posibles valores de S (que se encuentran entre 1 y 15) que hacen que el signo de cada uno de los impulsos sea positivo.

Implementación del codificador de voz

96

Una vez decodificados los signos y las posiciones de los impulsos, se construye el vector c(n) de tabla de códigos fijos de acuerdo con la ecuación:

40,...,1)()()()()( 33221100 =−+−+−+−= nmnsmnsmnsmnsnc δδδδ (4.48)

Si la parte entera del retardo de tono T es inferior al tamaño de la subtrama, fijado en 40, se modifica c(n) con arreglo a la ecuación:

=−+=

=40,...,n )()(

1-T0,...,n )()(

TTncnc

ncnc

β (4.49)

Si se dibuja el vector c obtenido para la primera subtrama que se viene analizando:

Figura 50.- Vector de tabla de códigos fijos de la subtrama una vez decodificado

Comparando este resultado con el vector obtenido para la misma subtrama

(figura 48), puede comprobarse que coinciden, teniendo los impulsos en las mismas posiciones y con los mismos signos.

4.3.1.3 Decodificación de las ganancias

Para nuestro estudio se optó por codificar las ganancias simplemente usando una cuantificación lineal, por lo que no es necesaria la decodificación de las mismas.

4.3.1.4 Cálculo de la señal de voz reconstruida

La excitación u(n) (véase la ecuación (4.43)) entra al filtro de síntesis LP. La señal de voz reconstruida para la subtrama está dada por:

Implementación del codificador de voz

97

( )∑=

=−−=10

1

40...,,1ˆˆ)()(ˆk

k nknsanuns (4.50)

donde ka son los coeficientes interpolados del filtro LP para la subtrama actual. Si se

representa el tramo de voz:

Figura 51.- Señal de voz reconstruida y espectro de la misma en el decodificador antes de ser postprocesada Si se pone una señal frente a la otra en la misma gráfica, puede verse como las dos tienen prácticamente la misma forma de onda, aunque las amplitudes no son exactamente iguales. Este hecho se corrige, en parte, al realizar el postprocesamiento de la señal reconstruida )(ˆ ns . Este postprocesamiento se describe en el siguiente apartado.

4.3.1.5 Postprocesamiento El postprocesamiento consta de tres funciones: postfiltrado adaptativo, filtrado de paso alto y aplicación de un escalamiento ascendente a las señales. El postfiltro adaptativo es una cascada de tres filtros:

- Un postfiltro de largo plazo Hp(z) - Un postfiltro de corto plazo Hf(z). - Un filtro de compensación de pendiente Ht(z).

Todo ello seguido de un procedimiento de control de ganancia adaptativo. Los coeficientes del postfiltro se actualizan cada subtrama de 5 ms. El proceso de postfiltrado se organiza de la siguiente manera. En primer lugar, la voz reconstruida

)(ˆ ns es filtrada inversamente a través de Â(z/γn), produciendo la señal residual )(ˆ nr .

Esta señal se usa para calcular el retardo T y la ganancia tg del filtro de largo plazo

Hp(z). La señal )(ˆ nr se filtra entonces a través del postfiltro de largo plazo Hp(z) y el

filtro de síntesis ( )[ ]df zAg γˆ1 . Por último, la señal de salida del filtro de síntesis

Implementación del codificador de voz

98

( )[ ]df zAg γˆ1 se pasa a través del filtro compensación de pendiente Ht(z), para generar

la señal vocal reconstruida postfiltrada sf(n). El control de ganancia adaptativo se aplica entonces a sf(n) para ajustar la energía de )(ˆ ns . La señal resultante )(nfs ′ pasa por un filtro de paso alto se escalona para producir la señal de salida del decodificador.

4.3.1.5.1 Postfiltro de largo plazo

El postfiltro de largo plazo está dado por:

( ) ( )Tlp

lpp zg

gzH −+

+= γ

γ1

1

1 (4.51)

donde T es el retardo de tono y gl el coeficiente de ganancia. Obsérvese que gl es como máximo 1 y que su valor se fija en cero si la ganancia de predicción a largo plazo es inferior a 3 dB. El factor γp controla la cantidad de postfiltrado a largo plazo y tiene el valor γp = 0,5. El retardo y la ganancia a largo plazo se calculan a partir de la señal residual )(ˆ nr , que se obtiene al filtrar la señal vocal )(ˆ ns a través de Â(z/γn), numerador del postfiltrado de corto plazo (véase el apartado 4.3.1.5.2).

( )∑=

−+=10

1

ˆˆ)(ˆ)(ˆk

kkn knsansnr γ (4.52)

El retardo de largo plazo se calcula en dos pasos. El primer paso selecciona el

mejor entero T0 en el intervalo [int(T1)-1,int(T1)+1], siendo int(T1) la parte entera del retardo (transmitido) de tono T1 en la primera subtrama. El retardo entero mejor es el que hace máxima la correlación:

( ) ( )∑=

−=40

1

ˆˆ)(n

nrnrR αα (4.53)

El segundo paso selecciona el mejor retardo fraccionario T con una definición de 1/8 en torno a T0. Esto se obtiene buscando el retardo con la mayor correlación pseudonormalizada:

( ) ( )

( ) ( )∑

=

==′40

1

40

1

ˆˆ

ˆˆ)(

n

n

nrnr

nrnrR

αα

αα (4.54)

donde ( )nrα es la señal residual en el retardo α. Obtenido el retardo óptimo T, la

correlación correspondiente R´(T) se normaliza respecto de la raíz cuadrada de la energía de ( )nr . El cuadrado de esta correlación normalizada se utiliza para determinar si el postfiltro de largo plazo debe desconectarse. Para ello se introduce gl = 0 cuando:

Implementación del codificador de voz

99

( ) ( )5,0

ˆ

)(40

1

2

<′

∑ =nnrnr

TR (4.55)

De otro modo, el valor de gl se calcula a partir de:

( ) ( )( ) ( )

0,10intˆˆ

ˆˆ40

1

40

1 ≤≤=∑∑

=

=l

n

nl gervaloelen

nrnr

nrnrg

αα

α (4.56)

La señal retardada no entera ( )nrα es el primer valor calculado mediante un

filtro de interpolación de longitud 33. Después de seleccionar T, se calcula de nuevo ( )nrα mediante un filtro de interpolación más largo, de longitud 129. La nueva señal

reemplaza a la anterior solamente en el caso en que el filtro más largo aumente el valor de R´(T). Para el caso del tramo de voz que se está analizando el coeficiente de ganancia es cero, ya que el retardo de la señal es mayor de 40, por lo que el postfiltro de largo plazo es un filtro de con valor la unidad en todo la banda. Se puede deducir que el postfiltro de largo plazo solo tendrá valor distinto de 1, es decir, solo será efectivo, cuando el retardo de la señal esté por debajo de 40, lo que equivale a tener una frecuencia por encima de los 200 Hz.

4.3.1.5.2 Postfiltro de corto plazo

El postfiltro de corto plazo está dado por:

( ) ( )( ) ∑

=−

=−

+

+==

10

1

10

1

ˆ1

ˆ11ˆ

ˆ1

k

kk

kd

k

kk

kn

fd

n

ff

za

za

gzA

zA

gzH

γ

γ

γγ

(4.57)

donde Â(z) es el filtro LP inverso cuantificado recibido (no hay análisis LP en el decodificador), mientras que los factores nγ y dγ controlan la cantidad de postfiltrado

de corto plazo, fijándose en 55,0=nγ y 7,0=dγ . El término de ganancia fg se

calcula en la respuesta a los impulsos truncada )(nhf del filtro ( ) ( )dn zAzA γγ ˆˆ y

viene dado por:

( )∑=

=20

1nff nhg (4.58)

Implementación del codificador de voz

100

Figura 52.- Respuesta impulsiva truncada del filtro ( ) ( )dn zAzA γγ ˆˆ

Figura 53.- Postfiltro de corto plazo para la subtrama de estudio

4.3.1.5.3 Compensación de la pendiente

El filtro ( )zH t compensa la pendiente en el postfiltrado de corto plazo ( )zH f y

viene dado por:

( ) ( )111

1 −′+= zkg

zH tt

t γ (4.59)

donde 1kt ′γ es el factor de pendiente, siendo 1k′ el primer coeficiente de reflexión

calculado a partir de ( )nh f para:

Implementación del codificador de voz

101

( )( )1

21

h

h

r

rk −=′ ( ) ( ) ( )∑

=

+=i

jffh ijhjhir

20

1

(4.60)

El término de ganancia 11 kg tt ′−= γ compensa el efecto decreciente de fg en

( )zH f . Se ha visto además que el filtro producto ( ) ( )zHzH tf no suele generar

ganancia. Dos valores de tγ se aplican según el signo de 1k′ . Cuando 1k′ es

negativo, 9.0=tγ , cuando 1k′ es positivo, 2.0=tγ .

Figura 54.- Filtro de compensación de la pendiente para la subtrama estudiada

4.3.1.5.4 Control de ganancia adaptativo

Se aplica el control de ganancia adaptativo para compensar las diferencias de ganancia entre la señal vocal reconstruida )(ˆ ns y la señal postfiltrada sf(n). El factor de escala de ganancia G para la subtrama actual se calcula mediante:

( )( )∑

=

==40

1

40

n

n

nsf

nsG (4.61)

La señal de ganancia postfiltrada a escala )(nfs ′ está dada por: ( ) ( ) 40...,,1)( ==′ nnsfgnfs n (4.62) donde ( )ng se actualiza para cada muestra y su valor está determinado por: ( ) ( ) 40...,,115,085,0 1 =+= − nGgg nn (4.63) Se utiliza el valor inicial de ( ) 0,10 =g . Seguidamente, para cada nueva subtrama,

( )0g se iguala a ( )40g de la subtrama anterior.

Implementación del codificador de voz

102

Veamos el efecto que tiene este postprocesamiento sobre la señal de voz comparando la señal antes de realizar el postprocesamiento y una vez realizado éste:

Figura 55.- Comparación entre la señal de voz reconstruida en el decodificador antes y después

del postprocesamiento

4.3.1.5.5 Filtrado de paso alto y escalamiento ascendente

Se aplica un filtro de paso alto con una frecuencia de corte 100 Hz a la señal de voz postfiltrada reconstruida )(nfs ′ . El filtro viene dado por:

( )21

21

2 93589199,09330735,11

93980581,08795834,193980581,0−−

−−

+−+−=

zz

zzzH h (4.64)

Figura 56.- Filtro paso alto

Implementación del codificador de voz

103

La señal filtrada se multiplica por 2 para restaurar el nivel de la señal de entrada. Por último, se compara la señal de entrada que se introdujo en el codificador y la señal de salida obtenida una vez realizada la decodificación.

Figura 57.- Tramo de voz original

Figura 58.- Tramo de voz una vez decodificado

Implementación del codificador de voz

104

Las dos señales tienen una periodicidad evidente. No debe olvidarse que el tramo de voz elegido pertenece a un sonido vocálico. En la señal de voz original la periodicidad es más marcada, siendo el tramo que se repite prácticamente igual en cada repetición. En la señal decodificada también se observa esta periodicidad, si bien el tramo que se repite no es exactamente igual en cada repetición, aunque conserva los picos de la señal original en las mismas posiciones. Este hecho puede apreciarse con más detalle si se superponen las dos señales en una misma gráfica, tal y como se hace en la figura 59:

Figura 59.- Comparación tramo de voz original y decodificado

Si se realiza el mismo proceso para la señal en la frecuencia, poniendo en primer lugar el espectro de la señal de voz original, a continuación el de la señal de voz decodificada y, por último, superponiendo las dos señales en la misma gráfica. Puede verse cómo el espectro y la envolvente de las dos señales es prácticamente la misma teniendo magnitudes similares para cada frecuencia. Al mismo tiempo se aprecia que los picos del espectro de la señal decodificada son más finos que los de la señal original, estando situados más o menos en las mismas posiciones, lo cual queda de manifiesto en la figura 62.

Implementación del codificador de voz

105

Figura 60.- Espectro señal de voz original

Figura 61.- Espectro de la señal reconstruida (salida decodificador)

Implementación del codificador de voz

106

Figura 62.- Comparación espectros de señal de voz original y señal de voz reconstruida a la

salida del decodificador

Simulaciones

107

5 Simulaciones Una buena parte de las simulaciones se ha ido realizando a medida que se iba implementando el codificador, verificando en cada punto la evolución de la señal de voz, así como los diferentes filtros y señales que intervienen en cada uno de los puntos del procesado de la señal de voz.

Para comprobar cómo de bien actúa el codificador que se ha implementado ante diferentes hablantes (con diferentes frecuencias de pitch) se tomarán dos frases: la primera de una voz masculina y la segunda de una femenina, y se estudiarán los resultados obtenidos en el espacio muestral, así como los espectrogramas y el pitch para cada una de ellas. Por último, se ha probado a introducir en el codificador una señal de audio para ver cómo de bien son codificadas este tipo de señales. En primer lugar se analizará la frase “Tengo una casa en el campo”, pronunciada por un hombre. En las siguientes figuras se muestran las representaciones de la señal de entrada al codificador y de salida del decodificador en el espacio muestral.

Puede apreciarse cómo la señal de entrada al codificador (figura 63) y la señal de salida del decodificador (figura 64) son bastante similares, Con lo cual se puede decir que la forma de onda de las señales se ha modelado correctamente. Ahora bien, esto no es demasiado significativo, ya que a veces, aunque las señales no se parezcan en el tiempo, sí tienen las mismas características y, por lo tanto, suenan parecidas.

Para analizar más detenidamente las características de las señales se usará el espectrograma de las mismas, que permitirá conocer si tienen las mismas características en la frecuencia. La representación de los espectrogramas de las señales de entrada al codificador (señal de voz original) y la de salida del decodificador se muestran en las figuras 65 y 66. Comparando los dos espectrogramas de las señales puede verse cómo la forma de onda en los dos casos es prácticamente la misma, confirmando lo

Simulaciones

108

anteriormente avanzado en el análisis muestral de las señales. Con esto, se puede concluir que el tracto vocal se ha modelado correctamente.

Figura 63.- Señal de entrada de voz masculina en el espacio muestral

Figura 64.- Señal de salida de voz masculina en el espacio muestral

Simulaciones

109

Figura 65.- Espectrograma de la señal de voz masculina original

Figura 66.- Espectrograma de la señal de voz masculina a la salida del decodificador

Simulaciones

110

Figura 67.- Señal de voz masculina de entrada: contorno de pitch, espectrograma y representación temporal

Figura 68.- Señal de voz masculina de salida: contorno de pitch, espectrograma y representación temporal

Simulaciones

111

Si en estas representaciones se estudia el pitch de la señal, se comprueba que éste se aprecia mucho mejor en la señal original, apareciendo de una manera menos clara en la señal decodificada, con lo que no puede asegurarse que sea igual en las dos señales.

A continuación se realizará un estudio del pitch de la señal para comprobar que realmente la señal obtenida tras la decodificación conserva el mismo pitch que la señal original, es decir, que esta información no se ha perdido en el proceso de codificación y decodificación. Esto se comprobará utilizando el programa wavesurf v.0.9.5, que permite analizar el pitch de la señal. Si se toma la señal de entrada y se analiza mediante el programa mencionado y se representa el contorno del pitch de la señal, su espectrograma y su representación temporal se obtienen las gráficas de la figura 67. Realizando el mismo proceso para la señal de salida se obtienen las representaciones de la figura 68.

Para apreciar mejor las modificaciones que haya podido sufrir el pitch de la señal tomaremos las representaciones del contorno de pitch de las dos señales y las compararemos. Observando las figuras 69 y 70 puede verse que, a pesar de que existen pequeñas variaciones en el contorno de pitch de la salida respecto del de la entrada, ambas siguen más o menos la misma trayectoria y con unas frecuencias de pitch similares, por lo que se podría decir que el pitch de la señal de entrada se mantiene tras la decodificación, si bien el codificador no consigue extraerlo con total precisión, perdiéndose de vez en cuando.

Figura 69.- Contorno de pitch de la señal de voz masculina de entrada

Figura 70.- Contorno de pitch de la señal de voz femenina de salida A continuación se realizará el mismo proceso (se representarán las señales de voz original y una vez decodificada en el espacio muestral, sus espectrogramas y se analizará el pitch mediante el programa wavesurfer v.0.9.5) con otra señal de voz, esta vez pronunciada por una mujer, para corroborar los datos obtenidos en estas simulaciones. En esta ocasión se utilizará la señal de voz “Mi casa es muy bonita”.

Simulaciones

112

Figura 71.- Señal de voz femenina de entrada en el espacio muestral

Figura 72.- Señal de voz femenina de salida en el espacio muestral

Simulaciones

113

Figura 73.- Espectrograma de la señal de voz femenina original

Figura 74.- Espectrograma de la señal de voz femenina a la salida del decodificador

Simulaciones

114

Figura 75.- Señal de voz femenina de entrada: contorno de pitch, espectrograma y

representación temporal

Figura 76.- Señal de voz femenina de salida: contorno de pitch, espectrograma y representación

temporal

Simulaciones

115

Se puede observar como para una voz femenina el análisis de los resultados obtenidos es prácticamente el mismo que para la voz masculina. Al igual que se hizo con esta última se representará el pitch de cada una por separado para poder hacer una mejor comparación.

Figura 77.- Contorno de pitch de la señal de voz femenina de entrada

Figura 78.- Contorno de pitch de la señal de voz femenina de salida Como ocurría para el caso de una voz masculina, el pitch de la señal de salida se asemeja bastante, salvo ciertas desviaciones, al de la señal original, manteniendo prácticamente niveles de frecuencia similares. Además, si se comparan los resultados obtenidos para el pitch en los dos casos, se ve que para la voz masculina la frecuencia de pitch ronda los 150 Hz y en la femenina está más o menos por los 250 Hz, muy por encima de la del hombre, como generalmente suele ocurrir. Por último, vamos a introducir una señal de audio en el codificador para ver cómo se comporta el mismo ante este tipo de señales. En las figuras 79 y 80 se representan las señales de entrada y salida del sistema en el espacio muestral. En las figuras 81 y 82 se hace lo propio con los espectrogramas de las dos señales.

Simulaciones

116

Figura 79.- Señal de audio de entrada en el espacio muestral

Figura 80.- Señal de audio de salida en el espacio muestral

Simulaciones

117

Figura 81.- Espectrograma de la señal de audio original

Figura 82.- Espectrograma de la señal de audio a la salida del decodificador

Simulaciones

118

Puede observarse cómo, al igual que ocurría con las señales de voz anteriormente analizadas, tampoco en las señales de audio se aprecia si se mantiene o no el pitch de la señal original, por lo que es necesario realizar el estudio del contorno de pitch para poder asegurar que se mantiene (figuras 83 y 84).

Figura 83.- Contorno de pitch de la señal de audio de entrada

Figura 84.- Contorno de pitch de la señal de voz audio de salida Prácticamente se puede apreciar lo mismo que para las señales de voz. El pitch de la señal de audio de salida toma valores de frecuencia en el mismo rango que la señal de entrada, existiendo variaciones más notables que para las observadas para las señales de voz. Si se escucha la señal a la salida, ésta se encuentra muy distorsionada con respecto a la original y que, si bien sigue siendo inteligible, tiene mucho ruido e interferencias. Con esto podemos concluir que el codificador implementado está específicamente diseñado para trabajar con señales de voz y aunque puede trabajar con señales de voz, la calidad obtenida es muy pobre.

Conclusiones

119

6 Conclusiones

En el apartado 1 se ha realizado una introducción al mundo de la voz, estudiando las señales de voz y sus características y propiedades más importantes y analizando cada una de ellas con más detalle. Se ha definido el concepto de codificación, evidenciando la importancia que tiene en las comunicaciones en la vida actual, explicando la evolución que ha experimentado este campo desde la introducción de la codificación PCM y comentando algunos de los avances que se han ido introduciendo.

Se han visto las propiedades más importantes de los codificadores de voz, que

son las que los caracterizarán y los harán mejor ó peor en comparación con los demás. Estas características son la tasa de bit, el retraso, la complejidad y la calidad de la señal de salida. Se han presentado los diferentes tipos de codificadores que existen (de forma de onda, vocoders e híbridos), comentando sus particularidades y el funcionamiento de los más destacados dentro de cada tipo. Por último, se han identificado los tipos de codificadores ó estándares empleados en las redes de comunicación existentes en la actualidad, presentando, además, una tabla resumen comparando los más usados.

En el apartado 2 se ha realizado una revisión teórica de los conceptos más

relevantes que se usarán en la implementación del codificador, analizando los conceptos básicos de la predicción lineal, los coeficientes LSF, la codificación mediante análisis por síntesis y los codificadores CELP.

En primer lugar se estudia la codificación mediante predicción lineal, que es la

base de casi todos los estándares de codificación de voz aprobados en los últimos años. En ella la muestra de voz actual se predice a partir de una combinación lineal de muestras anteriores. El método utilizado para su resolución (obtención de los coeficientes del filtro de predicción lineal) ha sido el de autocorrelación, mediante el algoritmo de Levinson-Durbin.

Conclusiones

120

Se introducen los coeficientes LSF (coeficientes espectrales de línea). Son una representación paramétrica alternativa de los coeficientes de predicción lineal, que poseen una serie de características que los hacen muy apropiados para la transmisión de información de codificador a decodificador. Las propiedades más importantes de estos coeficientes son: tener un rango limitado, orden secuencial de los parámetros, simple revisión de la estabilidad del filtro y una sensibilidad espectral localizada, comprobando cada una de estas propiedades. También se incluye el proceso de conversión de coeficientes de predicción lineal a coeficientes LSF.

La codificación mediante análisis por síntesis usa el mismo filtro de síntesis que

en el análisis LPC, pero se optimiza cuidadosamente la señal de excitación. Se sintetiza la señal de voz en el codificador, es decir, el decodificador se incluye en el codificador, minimizando el error porcentual ponderado entre la señal de voz original y la sintetizada. Consta de un generador de excitación, un filtro de síntesis (pueden ser 2: uno de corto plazo ó de predicción lineal, que elimina la contribución del tracto vocal y uno de largo plazo ó de pitch, que elimina el pitch ó la redundancia que queda tras la eliminación de la contribución del tracto vocal) y un minimizador de error que optimiza la señal de excitación. Se ha verificado todo esto proceso tomando una señal de voz, pasándola por los diferentes bloques del codificador y comprobando cómo se va eliminando la información de la señal hasta quedar una señal prácticamente aleatoria.

En los codificadores CELP (“Code Excited Linear Prediction”) las tramas de la

señal de excitación se modelan por un vector gaussiano elegido de una tabla minimizando el error ponderado entre la señal de voz original y la sintetizada.

La ITU es la Unión Internacional de Telecomunicaciones y la ITU-T, la parte de

la misma que se ocupa del sector de las telecomunicaciones. Esta entidad establece una serie de recomendaciones, que son acuerdos entre un segmento de la industria, pero no son de obligado cumplimiento. La recomendación en la que se basa el presente estudio es la G.729 (Codificación de la voz a 8 kbit/s mediante predicción lineal con excitación por código algebraico de estructura conjugada). Se contempla cómo se creó la recomendación, quiénes fueron los artífices de su elaboración, el calendario que se siguió y los objetivos y requerimientos perseguidos, que eran básicamente obtener un codificador que trabajase a 8 kbit/s con unas características equivalentes o incluso mejores a las del codificador de la recomendación G.726, que trabaja a 32 kbit/s. La calidad obtenida por el mismo es buena, teniendo en cuenta su tasa de bit. En la figura 85 puede verse su relación calidad-tasa de bit comparada con la de otros codificadores del mercado.

La principal innovación de este codificador frente a otros del mismo tipo es la

utilización de una estructura de códigos conjugada, lo cual le otorga una mayor robustez frente a errores en el canal y reduce la memoria necesaria y la complejidad de las búsquedas en la tabla. También se incluyen en el apartado las aplicaciones que tiene el codificador y las modificaciones más importantes introducidas en el mismo en forma de anexos.

Por último se ha implementado en Matlab un codificador basado en el de la

recomendación G.729, dejando para posteriores estudios temas como la cuantización y envío de parámetros del codificador al decodificador

Conclusiones

121

Figura 85.- Comparación de calidad para diferentes codificadores Al igual que el codificador de la recomendación el codificador implementado

está diseñado para trabajar con señales digital, por tanto, hay que efectuar primero un filtrado con la anchura de la banda telefónica de la señal analógica de entrada, seguido de un muestreo a 8000 Hz y su conversión a una modulación por impulsos codificados (MIC) lineal de 16 bits, para entrar en el codificador. La salida del decodificador se reconvierte a una señal analógica siguiendo un método similar. La señal se divide en tramas de 10 ms, que equivale a 80 muestras, y subtramas de 5 ms. Una vez en el codificador, las señales de voz son pasadas por un filtro paso alta y puestas a escala para su procesamiento.

En primer lugar se realiza un análisis de predicción lineal sobre las tramas para

modelar el tracto vocal de la señal, de donde se extraen dos juegos de coeficientes LSF, uno para cada una de las subtramas.

El siguiente paso es el análisis de la excitación, que se realiza separadamente

para cada subtrama. En cada una, la excitación se representa como la suma de dos componentes. La primera es la versión retrasada de la excitación usada hasta ese momento, y la segunda una señal con cuatro impulsos en diferentes posiciones. Al primer componente se le denomina contribución de la tabla de códigos adaptativos y modela la periodicidad de la señal de voz. Este retraso es en realidad el retraso de pitch de la señal de voz. La segunda parte de la excitación se conoce como contribución de la tabla de códigos fijos, que recoge la secuencia de excitación que queda una vez eliminadas las contribuciones de los términos de corto y largo plazo.

A la vez que se ha ido implementando el codificador se han ido representando

los distintos filtros y señales que intervienen en el proceso, así como las modificaciones que se van realizando a la señal de voz de entrada para la extracción de los parámetros.

Conclusiones

122

Para cada subtrama se calcula un número fijo de parámetros: retraso de pitch, ganancia de la tabla de códigos adaptativos, la excitación de la tabla de códigos fijos (consistentes en las posiciones y signos de los impulsos) y la ganancia de la tabla de códigos fijos. Estos parámetros son cuantizados y enviados al decodificador. El modo de transmisión de los mismos queda fuera de este estudio. Una vez en el decodificador, los datos son extraídos y la señal de voz es reconstruida siguiendo los mismos pasos que en el codificador, pero a la inversa.

Se han realizado diversas simulaciones para comprobar la eficiencia del

codificador implementado, probando con voces masculinas y femeninas, estudiando los resultados obtenidos en tiempo y frecuencia, así como sus espectrogramas y contornos de pitch. Al analizar los resultados de las simulaciones, se ha observado lo siguiente: - El sistema propuesto modela bastante bien el tracto vocal de la señal. Si se

contemplan las formas de onda de las señales de entrada y salida en los espectrogramas de las diferentes simulaciones, se puede ver que son muy similares. Esto es lógico ya que esta parte se modela mediante predicción lineal sin introducir ninguna modificación.

- Al realizar un análisis del pitch de las dos señales se ha comprobado que a primera

vista no es tan fácil asegurar que el pitch sea igual en las dos, ya que en todos los espectrogramas de los distintos experimentos el pitch de la señal original se aprecia con bastante más nitidez que en el de la señal decodificada, donde simplemente se intuye. Realizando un análisis más detallado (se ha usado el programa wavesurfer v.0.9.5, que permite representar el contorno de pitch de las señales), se comprueba cómo el pitch de las dos señales es parecido, salvo pequeñas variaciones. Por tanto, si bien la extracción del pitch de la señal no es perfecta, a grandes rasgos se puede decir que se mantiene el pitch de la señal de entrada.

- Si bien al escuchar las dos señales se aprecia una cierta degradación de la señal de

voz original, típica en este tipo de codificadores, la señal continúa siendo inteligible y puede identificarse al hablante como el de la señal original.

Por último se ha probado a introducir una señal de audio en el codificador para

probar cómo de bien trabaja el sistema implementado con otro tipo de señales. Los resultados obtenidos bastantes pobres, escuchándose la señal a la salida muy distorsionada, a pesar de conservar algunas de las características de la señal original. Esto confirma que el codificador implementado está específicamente diseñado para su uso con señales de voz.

Con todo esto, podemos concluir que el codificador implementado consigue una

calidad de sintetización de la señal de voz aceptable, si bien está por debajo de la obtenida en el codificador de la recomendación G.729

Líneas futuras de investigación

123

7 Líneas futuras de investigación

Como posibles líneas para futuras investigaciones se proponen las siguientes:

- Implementación del codificador estudiado en un procesador digital de señal (DSP).

- Estudio de la cuantización vectorial y su aplicación a la codificación de las

diferentes variables que se transmiten desde el codificador al decodificador.

- Inclusión del codificador dentro de un esquema de compresión de silencios, implementando un detector de actividad vocal (VAD) y un generador de ruido comfort (CNG).

Líneas futuras de investigación

124

Bibliografía

125

Bibliografía

- Recomendación G.729: “codificación de la voz a 8 kbit/s mediante predicción lineal con excitación por código algebraico de estructura conjugada” ITU-T 03/96

- Federico Miraya, “La voz humana”, 2000

- Richard V. Cox and Peter Kroon, “Low bit-rate speech coders for multimedia Communication”, 1996

- Gene Lew, “VoIP overview for operators”, may 2005

- Boneung Koo, “Speech”, 2002 CRC Press LLC

- Luis Hernando Gómez, Eduardo López Gonzalo, Luis Villarrubia Grande y Ismael Cortázar Mújica, “Reconocimiento de voz en el entorno de las nuevas redes de comunicación UMTS e Internet”, Noviembre 2001

- W T K Wong, R M Mack, B M G Cheetham and X Q Sun, “Low rate speech coding for communications” BT Technol J Vol 14 No 1 January 1996 (pag 30)

- A.M. Kondoz, “Digital Speech: coding for low bit rate communication systems”, Wiley, 1994

- Itakura F., “Line spectrum representation of linear predictive coefficients of speech signals” 1975

- “Transactions on speech and audio processing”, vol.4 NO 6, November 1996 of the IEEE

- Akitosi Kataoka, Takehiro Moriya and Shinji Hayashi, “An 8 kb/s Conjugate Structure CELP (CS-CELP) Speech Coder”, 2001

- Fang Zheng, Zhanjiang Song and Ling Li, “The distance measure for line spectrum pairs applied to speech recognition”, 1999

- Design and description of CS-ACELP: a toll quality 8 kb/s speech coder”, published in “Transactions on speech and audio processing” of the IEEE, vol.6 NO 2, Marzo 1998.

- Climent Nadeu, “Representación de la voz en el reconocimiento del habla”, 2004, http://www.imim.es/quark/num21/021063.htm

- Verkatraman Atti and Andreas Spanias, “On-line simulation modules for teaching speech and audio compression techniques”. November 2003

- Erwin Janssen and Cornelis H. Slump, “Evaluation of a new design approach for next generation mobile multi-media terminals”, 2001

- Verkatraman Atti and Andreas Spanias, “A simulation tool for introducing algebraic CELP (ACELP) coding concepts in a DSP course”, 2002

- S. Grassi, L. Besacier, A. Dufaux, M. Ansorge and F. Pellandini, “Influence of gsm speech coding on the performance of text-independent speaker recognition”, 2000

- Dr. Noor M. Sheikh, “Real time implementation and optimization of ITU-T’s G.729 Speech Codec running at 8 kbits/sec using CS-ACELP on Tm-1000 VLIW DSP CPU”, 2001

Bibliografía

126

- Haribalaji Kumar and Krishman Sundaresan, “Implementation of the Code Excited Linear Predictive (CELP) Codec for VoIP”, 2000

- Ozgu Ozun, Phillip Steurer and Daniel Thell, “Wideband speech coding with linear predictive coding (LPC)”, 2002

- A.Tripathi, S. Verma and D. Gajski, “G.729E Algorithm Optimization for AMR926EJ-S Processor”, 2003

- Jonathan D.Rosenberg, “G.729 Error recovery for Internet telephony”

- Miguel Ángel Gutiérrez Galindo, Bernabé Rufino Salvador, “Desarrollo de un compresor LPC de voz de tiempo real”, 2001

- Sami Lemmetty, “Review of Speech Synthesis Technology”, 1999

- A.S. Spanias, “Specch Coding: A tutorial Review”, Proc.IEEE, vol. 82, Oct. 1994

- J.P. Adoul, P. Mabilleau, M. Delprat and S. Morisete, “ Fast CELP coding based on algebraic codes”, IEEE, Abril 1987