Está en la página 1de 5

Departamento de Eléctrica y Electrónica

Carrera Ingeniería en Electrónica y


Telecomunicaciones

Comunicación y Codificación Digital

Tema: ¿Cómo se procesa un dialogo en una


conversación celular? – Resumen

Nombre: Christian Andrés Ruales G.


Profesor: Ing. Carlos Paúl Bernal Oñate

Fecha: 27/11/2019
1. Tema: ¿Cómo se procesa un dialogo en una conversación
celular?

2. Objetivos
 Entender la implementación de Modelos de predicción lineal en el proceso de transmisión
de un dialogo en una conversación celular, además de lograr resumir el funcionamiento del
algoritmo utilizado por el autor del texto guía.

3. Introducción
El módulo que convierte el dialogo de una señal analógica a una trama de bits, nos damos cuenta
que cada 20 ms del mismo se calculas algunos parámetros y son enviados al receptor, este
recupera el dialogo en función de dichos parámetros. El documento se enfoca en cómo el
análisis-síntesis predictivo lineal (LP) es usado en este proceso.

4. Desarrollo
4.1. Marco teórico
4.1.1. Procesamiento predictivo lineal de un speech

Para evitar problemas con la interpretación de los términos se usará la palabra “speech” para
definir la señal generada en nuestra garganta debido a que la traducción en español es “dialogo”
y pierde un poco el sentido que autor quiere dar al usarla, esta está influenciada por los
pulmones, la lengua y los labios. Esta señal se caracteriza por su frecuencia fundamental o pitch,
además de las frecuencias resonantes llamadas formantes.

4.1.2. Modelo LP de un speech

Conocido como modelo autorregresivo (AR) o predictivo lineal (LP) definido por Rabiner y Shafer
en 1978:
1 1
𝑆̃(𝑧) = 𝐸̃ (𝑧) = 𝐸̃ (𝑧) ; (𝑎0 = 1)
∑𝑝𝑖=0 𝑎𝑖 𝑧 −𝑖 𝐴𝑝 (𝑧)

En donde 𝑠(𝑛) es el speech, 𝑆̃(𝑛) la salida de un filtro 1/𝐴(𝑧), debido a una excitación 𝑒̃ (𝑛),
usando 𝑆̃(𝑧), 𝐸̃ (𝑧) siendo las transformadas Z y p la orden de la predicción.

Ilustración 1. Producción Modelo Lp de un speech

En la ilustración 1 se puede observar la excitación del modelo que puede ser un tren de pulsos
o bien ruido Gaussiano blanco, también se observa la decisión de si es un speech que lleva voz
o no, además del filtro de síntesis. La idea de este modelo es que un speech se expresa como la
suma de muestras previas p más una excitación
𝑝

𝑠̃ (𝑛) = 𝑒̃ (𝑛) − ∑ 𝑎𝑖 𝑠̃ (𝑛 − 𝑖)
𝑖=1

4.1.3. Algoritmo de estimación LP y uso práctico

La función de este algoritmo es encontrar los coeficientes de predicción que minimicen las
diferencias audibles entre el audio original y el producido por el modelo. Se trata de encontrar
el conjunto de {𝑎1 , 𝑎2 , … , 𝑎𝑝 } que minimicen la esperanza 𝐸(𝑒 2 (𝑛)) de la energía residual:

{𝑎𝑖 }𝑜𝑝𝑡 = arg 𝑎𝑖 min(𝐸(𝑒 2 (𝑛)) )

Debido a que la excitación del modelo LP tiene un envolvente espectral plano, la respuesta en
frecuencia del filtro síntesis aproximadamente calza a la envolvente espectral de 𝑠(𝑛), es decir
el filtrado inverso de-correlaciona el speech. Mediante la solución de ecuaciones Yule-Walker
de p sacadas del criterio LMSE se obtiene el valor óptimo de 𝜎.Cabe recalcar que no se busca
imitar exactamente la señal de voz sino solo su envolvente.

Ahora de forma práctica este modelo es aplicado a frames de 30 ms de duración y 20 ms de


solapamiento, asumiendo una señal estacionaria. Usualmente estas muestras se ponderan
mediante un ventaneo de Hamming, los coeficientes de autocorrelación son estimados en un
número limitado de muestras y el orden de predicción p se escoge con el fin de facilitar la copia
de la envolvente de speech de entrada. Para aplicaciones telefónicas p=10, y los coeficientes de
predicción se calculan para cada frame (cada 10 a 20 ms). El diagrama de bloques de un sistema
LPC completo se puede observar en la ilustración 2, este fue usado en trasmisiones de speech
satelitales.

Ilustración 2. Sistema predictivo lineal análisis-síntesis de speech

4.1.4. Coders Predictivo Lineal

En la práctica se prefiere el uso de coeficientes de reflexión o relaciones de área de registro en


vez de coeficientes de predicción, debido a sus mejores propiedades de cuantización. El coder
LPC10 es muy susceptible a errores debido a la detección de la frecuencia fundamental, El MPE
no necesita de la determinación del pitch, usa pulsos los cuales su amplitud y posición se eligen
iterativamente, además el error es filtrado a través de un filtro perceptivo. El CELP usa el
concepto de vector de cuantización para la secuencia de excitación, además de codebook
estocásticos para buscar el índice de una secuencia de excitación y lo envía al decoder que
contiene un codebook similar, la eficiencia de este codebook se mejora mediante un filtro
predictor long-term. Este coder tiene algunas variantes, actualmente los usados en celulares se
basan en el principio CELP operando a bit rates bajos de entre 4.75 kb/s a 11.2kb/s
4.2. Algoritmo en Matlab
El código es desarrollado en Matlab por el autor primero se examina el archivo de voz, se realiza
un análisis y síntesis LP de un speech voiced y un unvoiced, primero para una muestra luego
para el archivo completo, primero imponiendo un pitch constante y luego usando el original
como en LPC10, al ultimo de cambia de coder al CELP.

4.2.1. Breve Descripción del funcionamiento del código

Se carga el archivo a Matlab y se procede a graficar la señal de voz con su espectrograma, en el


cual se puede identificar el pitch en líneas verticales y los formantes en trazas oscuras
horizontales, como se ve en la ilustración 3.

Ilustración 3. Señal de voz y espectrograma en Matlab

Luego se extrae un tramo de la señal de voz de 30 ms en donde es posible identificar un periodo,


se plotea el periodograma de la misma y se puede encontrar el pitch identificándolo como el
pico más alto. Lo siguiente es aplicar el modelo LP a este tramo obteniendo los coeficientes de
predicción y la varianza residual de la señal, la estimación de parámetro LPC crea un filtro FIR
𝐴(𝑧) que sirve para obtener la predicción residual con mínima energía. La respuesta en
frecuencia del filtro 1/𝐴(𝑧) calza con la amplitud espectral de la envolvente del tramo, el
espectro del residual tiene el mismo pitch y armónicos que del tramo original.

Se utilizan pulsos triangulares para simular el tren de impulsos de periodo de pitch y amplitud
ajustable, la excitación LPC conserva una envolvente plana y armónicos relacionados a la
frecuencia fundamental. Para el análisis de un speech unvoiced se realiza el mismo
procedimiento salvo que en vez de tener una excitación de tren de pulsos se utiliza rudio
Gaussiano blanco, obteniendo un speech parecido a unos susurros.

Cuando se trata del Modelo LP con una frecuencia fundamental fija se utiliza un ventaneo de
Hamming para los tramos o frames, en este proceso hay que tener cuidado con el reset de la
memoria de la variable interna, esto hace que los periodos de envolvente se vuelvan más suaves
o bruscos.

Si la síntesis de Modelo LP se aplica a un archivo con su frecuencia fundamental original se van


a presentar problemas para la estimación del pitch, el autor lo soluciona mediante un comando
ya incluido en Matlab, este es f0 = pitch(audioIn,fs) , este retorna el pitch de un audio, mediante
esto se obtiene un resultado acústicamente igual al original pero con algo de ruido (LP10).

Por último para el Coder CELP en un archivo de voz, utiliza una combinación lineal de
componentes de excitación de un codebook, se utiliza la función de Matlab [gains, indices] =
find_Nbest_components(signal, ... codebook_vectors, codebook_norms , N) , esta encuentra los
N mejores componentes de una señal desde los vectores en codebook_vectors, su error residual
es minimizado.

Se pasa todo el codebook a través de un filtro de síntesis en cada frame, buscando la mejor
descomposición lineal de un frame del speech en términos de secuencias del codebook filtrado.
Los resultados obtenidos son más naturales que un LPC10, como se observa en la ilustración 4.

Ilustración 4. Arriba comparación LCP vs CELP, abajo comparación CELP vs original

También hay que recalcar si se usan menos componentes estocásticos la calidad del speech se
mantiene, una estimación de rata de bits nos da como resultado 70 bits cada 5 ms, 14kbits/s,
Coder G729 alcanza una rata de bits de al menos 8kbits/s enviando coeficientes de predicción
solamente una vez cada 4 frames.

5. Conclusiones
Como conclusión se puede llegar a que existen muchos Coders desarrollados al pasar del tiempo,
obviamente cada sucesor conlleva mejoras en su algoritmo, esto supone una reducción el costo
computacional y además tiene como objetivo obtener resultados más fieles a la señal original.
Como un punto curioso que es necesario recalcar está en que el oído humano no logra detectar
pequeñas variaciones entre el audio original y el obtenido en la salida de un Coder, la
comparación que se pueden hacer entre Coders llega a ser hasta cierto punto subjetiva, siempre
y cuando las diferencias sean mínimas claro está. La analogía que el autor del documento base
hace resulta llamativa, él dice que los teléfonos celulares trasmiten una imagen de tu tracto
vocal en lugar del speech o audio que este produce.

6. Bibliografía
T. Dutoit, N. Moreau, P. Kroon (2007). Applied Signal Processing Using MATLAB (pp. 1-31).
Berlin: Springer US.

También podría gustarte