You are on page 1of 29

Proyecto Especial 2do Cuat 2009

LPC

SyS (66.74)

19 de Octubre de 2009
ÍNDICE GENERAL

1. Introducción 5
1.1. Algunos conceptos sobre codificación . . . . . . . . . . . . . . . . . . . 5
1.2. Predicción Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2. Desarrollo del Proyecto 21


2.1. Cálculo de los coeficientes de LPC y reconstrucción de la señal . . . . 21
2.2. Reconstrucción de la señal con compresión . . . . . . . . . . . . . . . . 22
2.3. Análisis de la señal de habla mediante LPC . . . . . . . . . . . . . . . . 23

Bibliografía 25

I
II
Proyecto Especial 2do Cuat 2009, LPC

El objetivo de este proyecto especial es desarrollar algunas técnicas de trabajo de


procesamiento de señales, incluyendo filtrado FIR e IIR, espectrograma, y lograr una
aproximación al procesamiento de señales reales como es la señal de habla. Este
proyecto utiliza un método denominado LPC, el cual requiere una base amplia de
conocimientos de procesamiento de señales, que serán desarrollados en este texto
en forma resumida. No se pretende cubrir todos los aspectos teóricos necesarios,
sino sólo dar un barrido de los temas con la profundidad necesaria para que sea
posible desarrollar el trabajo. Los conocimientos que serán evaluados al entregar el
proyecto pueden abarcar:

Filtrado. Respuesta impulsiva, respuesta en frecuencia, transformada Z, rela-


ción entre todas ellas, características espectrales de un filtro, filtros FIR e IIR,
diferencias en su implementación, transitorio de un filtro.

Transformada de Fourier de corto tiempo. espectrograma, reconocimiento en


el espectrograma de propiedades espectro-temporales, variación del espectro-
grama con la ventana, utilización del espectrograma para discriminación de
propiedades espectrales y temporales.

Transformada Z (de forma racional). Relación entre forma de polos y ceros y las
propiedades temporales de la señal (causalidad, estabilidad).

Índice general 1
Proyecto Especial 2do Cuat 2009, LPC

2 Índice general
Requisitos para la aprobación

Este trabajo práctico será evaluado exclusivamente en la fecha indicada


en el calendario y en el turno en el cual el alumno se halle inscripto. La
fecha de entrega del trabajo es inamovible, el alumno que no entregue su
trabajo en dicha fecha deberá considerarse libre. La evaluación del pro-
yecto es individual y se hará en forma oral o escrita por los docentes auxi-
liares. Por ese motivo las evaluaciones podrán fijarse para el día de la en-
trega o posteriores, del modo que lo designen los docentes de cada grupo.
Esto de ninguna manera implica que el trabajo pueda entregarse en fe-
chas posteriores, sino sólo que la evaluación se puede realizar después,
de acuerdo a la cantidad de alumnos de cada turno. Queda a criterio de
los docentes de cada práctica exigir entregas parciales no definitivas (sin
nota) para regular el desarrollo del trabajo por parte de los alumnos. La
evaluación final puede incluir preguntas sobre:

Items particulares sobre los ejercicios de esta guía y su implementación en


Matlab.

Conceptos teóricos necesarios para realizar los ejercicios.

Puede requerirse también al alumno que implemente alguno de los ejer-


cicios o similares en la computadora en el momento de la evaluación. Por
lo tanto el alumno debe presentarse el día de la evaluación con:

Esta guía.

Las soluciones a los problemas planteados: Cuando el problema requiera una


implementación, la misma debe estar adecuadamente descripta y debidamen-
te justificada. Es decir, si es necesario justificación teórica, ésta debe estar desa-
rrollada. Si se pide una implementación práctica la misma debe estar adecua-
damente documentada de modo que el docente pueda constatar que las es-
pecificaciones requeridas se cumplen. Esto incluye la presentación del progra-
ma de MATLAB utilizado, y los gráficos necesarios para mostrar los resultados

3
Proyecto Especial 2do Cuat 2009, LPC

obtenidos en formato electrónico e impresos. Se sugiere que el formato elec-


trónico no dependa de que funcione internet para poder verse, para evitar in-
convenientes. Todos los gráficos deberán tener título, comentarios en ambos
ejes sobre la unidad a representar y el eje de abscisas debe estar en unidades de
tiempo o frecuencia según corresponda.

Nota del trabajo práctico especial


Las notas del tp especial solo podrán tener los siguientes valores:

0: Tp no entregado, con errores conceptuales o errores en la evaluación que evi-


dencien la no realización personal del trabajo práctico. Equivale a la no apro-
bación de la cursada.

40: Tp en el que el alumno cumple con los mínimos requisitos de aprobación.

70: Tp en el que el alumno realiza y demuestra conocimiento de todos los pun-


tos solicitados.

100: Tp en el que el alumno demuestra una clara conceptualización del trabajo


realizado y excede las pautas solicitadas.

4 Índice general
CAPÍTULO 1

Introducción

La codificación por predicción lineal (Linear predictive Coding, o abreviadamente


LPC) es una técnica de codificación que utiliza la predicción lineal como método.
Veamos primero unos pocos conceptos acerca de codificación para luego desarrollar
en detalle el método de predicción lineal.

1.1 Algunos conceptos sobre codificación


Entendemos por codificación una transformación reversible de una señal a otra re-
presentación, es decir que nos permita convertir la señal a un cierto código y luego
volver a obtener nuevamente una reproducción de la señal a partir de ese código.
Las técnicas de codificación suelen estar asociadas frecuentemente con la compre-
sión de información, es decir supongamos que tenemos una señal en una dada re-
presentación, por ejemplo sus muestras tomadas a un dado intervalo de tiempo. Si
logramos una codificación de la señal que utilice menos coeficientes, es decir una
codificación más compacta, habremos logrado una compresión. Hay que aclarar que
el concepto de transformación reversible o invertible no suele ser tan estricto, y en
general se permite en la codificación cierto grado de irreversibilidad, o degradación
de la señal reconstruida dentro de ciertos límites, dada por la aplicación específica.
Por ejemplo la codificación MP3 de audio, no regenera la señal exacta original, sino
una versión que el oído humano perciba como indistiguible.

Breve historia de la transmisión IP de voz


Las técnicas de LPC fueron concevidas con el objetivo de comprimir la señal de ha-
bla, de modo que la codificación LPC es una codificación para compresión. El origen
de las técnicas de LPC se relaciona con el desarrollo de los protocolos TCP/IP, que
son los que se utilizan actualmente en internet [1]. En sus orígenes en el año 1976
tres centros de investigación de Universidades de California estaban empeñados en
transmitir voz a través de la ARPANET, la red de ARPA que es el organismo estatal de
Defensa de los Estados Unidos, y que fue la que sentó las bases de la red mundial
Internet o World Wide Web. Se estaban desarrollando en ese momento ciertos pro-
tocolos llamados TCP (Transmission Control Protocol) para que diferentes compu-
tadoras con diferentes hardware y tiempos de procesamiento y diferentes sistemas
operativos pudieran comunicarse entre sí. Estos protocolos sin embargo no eran ap-
tos para transmitir señales como el habla porque la gran cantidad de redundancias

5
Proyecto Especial 2do Cuat 2009, LPC

con el que estaba concevido TCP para que la totalidad de la información fuera trans-
misible de manera confiable, hacía imposible la transmisión en tiempo real de una
señal como la voz. Se extrajo entonces del protocolo original una versión más simple
aceptable para procesamiento en tiempo real y que se le dio el nombre de IP (In-
ternet Protocol). Esta distinción entre protocolos TCP e IP dio origen a una famosa
frase, de D. Cohen el autor del protocolo IP, cuya traducción libre sería algo así como:
“la leche tiene que transportarse antes de que se heche a perder, aunque se vuelque
un poco en el camino; para el vino podemos hacer un embalaje más prolijo”, dando a
entender que hay una diferencia de requerimientos escencial entre el transporte de
datos en tiempo real como es la señal de habla y el transporte de datos en sí (como
por ejemplo una transacción bancaria). De aquí en adelante los métodos de codifi-
cación de voz se realizan por IP, y es lo que se llama VoIP, y la técnica utilizada es la
codificación LPC, que da muy buen rendimiento de compresión y que fue desarro-
llada paralelamente al protocolo que la contendría.

Wavecoders y vocoders
Debe tenerse en cuenta sin embargo que los métodos de codificación pueden ser
utilizados para representar la misma información “dispersa” de la señal no solo de
una manera más compacta sino también más conceptual. Como ya veremos más en
detalle, LPC está especialmente adaptado a señales de habla ya que tiene una re-
lación muy cercana con la manera en que la señal de habla es generada. Cada una
de las palabras que decimos está asociada a una serie de movimientos nuestro apa-
rato fonador. Cada movimiento particular genera sonidos elementales que en cada
lenguaje tienen significación como unidad. Los sonidos elementales de nuestro len-
guaje (el sonido correspondiente a la ‘a’, a la ‘s’, a la ‘n’, etc.) podrían describirse desde
un punto de vista físico (en promedio) como una cierta configuración del aparato fo-
nador para cada uno de ellos. LPC logra asociar a cada una de esas configuraciones
un código diferente. Por lo tanto se la considera no sólo una técnica para codificar
una señal sin importar su contenido, que lleva de nombre de codificador de onda o
en inglés wavecoder, sino una metodología para conceptualizar el mensaje conteni-
do en la señal, para las cuales se había acuñado desde los comienzos del siglo XX el
termino vocoder. Los coeficientes obtenidos por LPC no sólo constituyen un ahorro
de coeficientes de representación, sino que de alguna manera podrían simular los
mismos procesos que hace nuestro cuerpo cuando genera la señal de habla, y por lo
tanto es posible preguntarse si esa representación no es adecuada para entender el
mensaje inmerso en la señal de habla (reconocimiento de habla). Y realmente lo es,
a tal punto que actualmente los métodos más existosos para la representación de la
señal de habla para reconocimiento están basados en LPC. Este método también es
apto para síntesis, como también veremos en este proyecto especial.

1.2 Predicción Lineal


Dejaremos en suspenso el tema de codificación y conceptualización de la señal de
habla, para dedicarnos en este apartado a entender la metodología en la cual se basa
LPC: predicción lineal. Este es un método que intenta obtener una razonable apro-

6 Capítulo 1. Introducción
Proyecto Especial 2do Cuat 2009, LPC

ximación del valor de una señal en el tiempo actual basado en el valor que esta señal
había tomado en el pasado. El término predicción debe ser tomado con cuidado en
este contexto: no es una adivinanza, sino que hay “evidencias suficientes” para tener
certeza de lo que sucederá en el instante presente si se conoce información del pasa-
do de la señal. Vamos a abrir aquí una bifurcación en la explicación y dejar (otra vez)
en suspenso el tema de predicción para detenernos un poco en la segunda parte del
nombre del método: predicción lineal.

1.2.1 Interpretación geométrica de las transformaciones lineales


Habíamos dicho al comienzo de esta introducción que la codificación es una tran-
formación reversible entre una representación de la señal y otra más compacta. Una
posibilidad es decidir que esa transformación sea lineal. Supongamos un ejemplo
abstracto: si tenemos un vector de N componentes expresado en una cierta base,
pero descubrimos que en verdad ese vector tiene componentes de un subespacio de
dimensión pequeña (mucho menor que N ), una posible codificación sería simple-
mente un cambio de base que me divida la señal en las componentes pertenecientes
a ese subespacio y su ortogonal. Esto nos daría una representación con menos coefi-
cientes porque las componentes en el subespacio ortogonal al que la señal pertenece
darán cero. Supongamos el siguiente ejemplo (abstracto también). Tenemos un con-
junto de vectores de 4 dimensiones como el siguiente:
       
1 3 4 0,5
 1 
 , v2 =  3  , v3 =  4  y v4 =  0,5 
     
v1 = 
 2   0,8   4   −0,5 
2 0,8 4 −0,5

Si en lugar de representarlos en una base cartesiana hacemos un cambio de base con


la siguiente matriz:
 
1 1 1 1
1 1 1 −1 −1 
W=  
2 1 −1 −1
 1 
1 −1 1 −1

los vectores transformados a esa base tendrán como expresión:


       
3 3,8 8 0
 −1   2,2   0 
 1
 
W T v1 =   T   T   T
 0  , W v2 =  0  , W v3 =  0  y W v4 =  0


0 0 0 0

De estas expresiones podemos ver que todo el conjunto de vectores sólo tiene com-
ponentes distintas de cero en los dos primeros vectores de la base. Si por alguna
razón pudiéramos saber que todos los vectores con los que trabajaremos siempre
van a tener cero en las últimas dos componentes de esta base, podríamos plantear
una codificación expresando los vectores en dicha base y reteniendo sólo el valor
de las dos primeras componentes. El proceso de reconstrucción bajo esta supues-
ta codificación consistiría en completar con ceros los lugares correspondientes a las

1.2. Predicción Lineal 7


Proyecto Especial 2do Cuat 2009, LPC

componentes no expresadas en el código, y transformarlas de nuevo a la representa-


ción cartesiana mediante la multiplicación por la matriz inversa de la anterior. Como
la matriz W es ortogonal, la matriz de reconstrucción es la transpuesta de la que usa-
mos para codificar:
       
3 1 1   1 1
 −1  1  1 3
1  3  1 − 1 1 
  
v1 = W   =   =
0  2  1 −1  −1 2  1  2  −1 
0 1 −1 1 −1
En esta última forma de expresar al vector v1 , hemos usado además solamente los
dos primeros vectores de la base para generar el vector completo en la base cartesia-
na. Estos dos vectores generan el subespacio de representación de nuestro código,
mientras que los restantes dos que no usamos generan un subespacio ortogonal a él
(por eso no es necesario usarlos para la representación). Esta codificación es venta-
josa, porque permite reducir a la mitad la cantidad de coeficientes necesarios para
expresar la señal.
En el ámbito de las señales es frecuente representar las señales en bases distintas
de las originales, bases que también consistirán en un conjunto de señales. La serie
de Fourier para señales periódicas constituye una forma de representar a las seña-
les periódicas en una base ortogonal de exponenciales complejas. Si observamos la
ecuación de síntesis:

j 2π kt
X
y(t) = ak e T 0
k=−∞

para señales continuas, o para discretas


N −1

X
y(n) = ak ej N kn
k=0

vemos que presentan la forma siguiente:


X
v= ak ek
k

es decir, una suma de vectores ek multiplicados por coeficientes ak , donde en nuestro


j 2π kt
caso los vectores son funciones exponenciales complejas e T0 para señales conti-

nuas o ej N kn para discretas. En la terminología de codificación que estamos usando,
las fórmulas de síntesis constituyen la reconstrucción de la señal original a partir del
código que está contenido en los coeficientes ak . Como en este caso la base también
es ortogonal, los coeficientes se obtienen mediante el producto interno de la señal
sobre cada vector de la base:
Z T0 /2
−j 2π kt
ak = y(t) e T0 dt =< y(t), ek (t) > (1.1)
−T0 /2

o para el caso discreto,


N −1

X
ak = y(n) e−j N kn =< y(n), ek (n) >
n=0

8 Capítulo 1. Introducción
Proyecto Especial 2do Cuat 2009, LPC

Ejercicios:
1. Suponga las señales 2 y 5 del ejercicio 11 de la guia 1. Encuentre el subespacio
de señales en el cual están representados cada una de ellas y su ortogonal. Para
ello escriba la fórmula de síntesis de la señal y determine qué elementos de
la base de Fourier tienen coeficientes ak distintos de cero, que constituye el
grupo de vectores del subespacio de representación. El resto de elementos de la
base generan el subespacio ortogonal. En cual de las dos señales sería ventajoso
utilizar la proyección lineal a un subespacio y su ortogonal como método de
compresión?

Aproximaciones a un subespacio
Los métodos de predicción lineal pertenecen al tipo de codificación que puede ser
expresada por una transformación lineal. En este tipo de transformaciones la señal
debe ser expresable mediante una suma de (una cantidad pequeña de) vectores mul-
tiplicados por coeficientes. En el caso del ejercicio anterior nuestras señales queda-
ron totalmente determinadas por la división en dos subespacios ortogonales entre
sí: el que contiene totalmente a la señal y el que es ortogonal a él. Esto fue porque
nuestras señales en ese ejercicio ya estaban generadas como superposición lineal
de algunos vectores de esa base. Pero en una señal real cualquiera esto no se puede
lograr en forma exacta, a menos que usemos una cantidad exageradamente gran-
de de elementos, con lo cual la compresión por estos medios deja de ser útil. En la
realidad nuestras señales del mundo físico real nunca podrán ser representadas de
forma exacta en un subespacio de dimensión finita, por lo cual si usamos este tipo
de codificación lineal deberemos conformarnos con representaciones aproximadas.
Sin embargo, si el error de nuestra aproximación es pequeño, podremos lograr una
reconstrucción basada en la representación aproximada que sea aceptable a nues-
tros propósitos. Si la base de representación es ortogonal siempre es posible saber el
error de aproximación por el teorema de Parseval.

Ejercicios:
2. Suponga la señal dada por

6 − |n| si |n| ≤ 5
x(n) =
0 resto

periódica con período N = 24. Encuentre el error de aproximación (expresado


en porcentaje de la energía total de la señal) de representar la señal con 5 coe-
ficientes de Fourier, los correspondientes a ak para k = −2, −1, 0, 1, 2. Realice la
reconstrucción basada en esos 5 coeficientes.

3. Para el mismo caso del ejercicio anterior, determinar el número de coeficientes


necesarios para tener un error de aproximación menor al 2 % de energía total.
Cuántos coeficientes más se requieren para llegar al 1 %? Dibuje el porcenta-
je acumulado de energía al ir agregando más coeficientes, y de acuerdo a ello

1.2. Predicción Lineal 9


Proyecto Especial 2do Cuat 2009, LPC

discuta si puede considerarse esta representación como beneficiosa desde el


punto de vista de coeficientes a almacenar.

4. Suponga ahora que tenemos la señal dada por



6 − |t| si |t| ≤ 6
x(t) =
0 resto

periódica con período T = 24. Encuentre cuántos coeficientes se deben utilizar


para tener un error menor al 2 % de la energía total. Realice la reconstrucción
basada en estos coeficientes. En base a esta pregunta discuta si el teorema de
muestreo de Nyquist puede considerarse un método de compresión y encuen-
tre el error de aproximación que cometemos al utilizarlo. Es el muestreo una
transformación lineal? (Ayuda: para determinar la transformación lineal perti-
nente siempre debe ser posible representar a la señal como suma de la base de
descomposición; piense en lo estudiado en interpolación). Es invariante ante
desplazamientos?

La base de respresentación de los métodos de predicción y las señales


estacionarias
Como se sugirió en el apartado anterior, es bastante frecuente que en los métodos de
codificación lineal tengamos que hacer aproximaciones de representación, es decir
no considerar el subespacio completo de representación sino sólo los vectores cuyos
coeficientes contengan la mayor parte de la energía total de la señal. Si el subespacio
que usamos para hacer la representación se adapta a nuestra señal, la aproximación
será mejor, y la aproximación de representación de la señal en ese subespacio será
mejor, o bien el error de aproximación menor. En este caso particular sin embargo, la
base donde representaremos nuestros vectores no está fija sino que la elegiremos de
modo de que la representación nos dé el menor error posible de aproximación. En
este contexto vamos a dar algunas definiciones necesarias para abordar el tema de
predicción que había quedado pendiente, y que luego relacionaremos con el tema
de aproximación que venimos explicando. Llamaremos señales linealmente predeci-
bles a aquellas para las cuales el valor presente que toma la señal en el tiempo actual
está principalmente determinado por sus valores pasados en forma lineal, excepto
algún único término que puede corresponder a alguna otra señal. Estas señales tie-
nen la siguiente expresión:

y(n) = x(n) + b1 y(n − 1) + b2 y(n − 2) + . . . + bN y(n − N ) (1.2)

La expresión anterior corresponde a una señal predecible con pasado finito de or-
den N . Obsérvese que una señal predecible es lo que en nuestra materia conocemos
como la salida de un sistema IIR de orden N , pero con la salvedad de que la entrada
x(n) tenga ciertas características que hagan que no tenga demasiada relevancia. Ade-
más, como estamos pensando que la señal y(n) depende de las muestras anteriores
y(n−k), con k = 1, . . . , N , estamos asumiendo que este sistema IIR es causal. Es decir,
que en la medida que la señal x(n) no aporte una información significativa, si cono-
ciéramos el valor de los coeficientes bk con k = 1, . . . , N y el valor de las N muestras

10 Capítulo 1. Introducción
Proyecto Especial 2do Cuat 2009, LPC

pasadas, tendríamos una predicción del valor presente de la señal y(n) salvo por lo
que pueda aportarnos el valor de la señal x(n) en ese instante. En esta terminología
se denomina a x(n) señal innovación o secuencia de innovación, porque justamente
es la parte impredecible de la señal. El método de predicción lineal consiste en ob-
tener coeficientes ak para una señal estacionaria tales que la señal predicha sea de la
forma

ŷ(n) = a1 y(n − 1) + a2 y(n − 2) + . . . + aN y(n − N ) (1.3)

y que además cumpla que

(ŷ(n) − y(n))2 = e2 (n) sea mínimo.

Como vemos, si la señal tiene la expresión (1.2), este método nos daría idealmente el
valor de los coeficientes de la ecuación diferencial asociada a esa expresión , es decir
los ak que nos da el método serán aproximadamente iguales a los bk de la ecuación
(1.2) (suponiendo que la secuencia de innovación tiene información no contenida
en el pasado de la señal).
Volviendo al tema de aproximación que habíamos explicado en la sección anterior,
en este caso se puede ver que tenemos una combinación lineal de elementos que
formarán una aproximación de nuestra incógnita (la señal en el tiempo presente), y
que sabemos que no vamos a poder representar en forma exacta, sino que existirá
un error de aproximación, el cual debemos minimizar para que todo esto sea útil.
Sin embargo en este caso puede resultar un poco oscuro cuál sería la base de repre-
sentación o subespacio de representación que estamos eligiendo. En los casos del
apartado anterior, habíamos visto que las señales se descomponían en bases com-
puestas de otras señales (ya sea la base de exponenciales complejas discretas o con-
tinuas en el caso de la serie de Fourier, o en base de sincs continuas en el caso del
teorema del muestreo). En esos casos todas las descomposiciones estaban basadas
en el producto interno entre funciones. Pero si volvemos a nuestro caso de predicción
lineal en la fórmula (1.3) parecería que estamos expresando muestras de la señal en
término de otras muestras anteriores, y no funciones en términos de otras funcio-
nes. Esto es exactamente así, y la razón es que los métodos de predicción lineal están
desarrollados para señales aleatorias y no determinísticas. En una señal aleatoria los
valores que toma para cada tiempo no pueden expresarse por un valor determinado,
sino por la probabilidad de que la señal tenga ese determinado valor. Asimismo, la
relación temporal que siguen las muestras no puede expresarse explícitamente co-
mo valor que varía en función del tiempo sino por la variación de la probabilidad del
valor de la señal en función del tiempo. La clase más simple de señales aleatorias o
estocásticas que se puede definir son las señales de segundo orden, en las cuales la
función de probabilidad de la señal en función del tiempo toma una forma simple,
quedando absolutamente definida por las probabilidades conjuntas de las muestras
de la señal tomadas de a dos. Para este tipo de señales aleatorias toda la información
de la señal estará contenido en la función de dos variables llamada expectación de la
densidad conjunta o más simplemente correlación:
Z Z ∞
E{y(n), y(m)} = y(n)y ∗ (m)pn,m (y(n), y(m)) dy(n) dy(m) = R(n, m)
−∞

1.2. Predicción Lineal 11


Proyecto Especial 2do Cuat 2009, LPC

Si comparamos esta expresión con la expresión (1.1) vemos que tiene semejanza con
un producto interno, y de hecho cumple todas las propiedades necesarias para serlo.
Es decir que la correlación es el producto interno entre las muestras de la señal. Por
último, de entre las señales aleatorias de segundo orden nos interesa las señales esta-
cionarias. Estas son aquellas en las cuales dos valores de la señal tienen una relación
debida al tiempo transcurrido entre ellos y no al tiempo absoluto medido con res-
pecto a un origen de tiempos fijo. Es decir que la señal estacionaria perdió noción de
sus orígenes y solo le incumbe la relación que cada uno de sus valores guardan con
los previos ordenadamente. En este caso se podrá afirmar que la correlación cumple
Z Z ∞
E{y(l), y(m)} = y(l)y ∗ (m)pl,m (y(l), y(m)) dy(l) dy(m) =
−∞
Z ∞
y(l)y ∗ (n + l)pl−m (y(l), y(n + l)) dy(l) dy(n + l) = R(l, l + n) = f (n)
−∞

es decir, que en las señales aleatorias de segundo orden y estacionarias, la correla-


ción deja de ser una función de dos variables, para convertirse en una función de una
sola variable que corresponde al distanciamiento entre las muestras en cuestión (n)
y no al origen de tiempos absoluto (l). En estos casos solemos llamar a la correlación
del modo siguiente:
E{y(l), y(l + n)} = E{y(k), y(k + n)} = R(n)
En general la función de probabilidad subyacente a una señal aleatoria es descono-
cida, pero se suelen determinar ciertos estimadores de la misma. Es el mismo prin-
cipio que se usa para saber por ejemplo la probabilidad de una población: se toma
muchos valores de la misma, y se los promedia. Por ejemplo, supongamos que se
quiere establecer la edad promedio de los alumnos de ingeniería, es decir se quiere
calcular la expectación de la variable aleatoria Y edad de los alumnos:
Z ∞
E{y} = y pY (y) dy
0

Para estimar esta expectación se tomaría a todos los alumnos que se pueda conseguir
y se haría el promedio de los valores de sus edades, es decir:
Z ∞ K
1 X
E{y} = y pY (y) dy ' yk
0 K k=0

Para el caso de la correlación entre dos muestras de una señal aleatoria estacionaria,
lo que se hace es suponer que todos los valores igualmente distanciados en tiempo
tendrán el mismo valor de correlación 1 . Por lo tanto un estimador de la correlación
será

X
R(n) = K y(m)y(m + n)
m=−∞

donde K es un factor de normalización.


1
Este tipo de estimadores sólo es posible de ser aplicado por la suposición que estamos haciendo
de que la señal es estacionaria. En estos casos una realización de la señal aleatoria tiene la misma
distribución de probabilidad en el tiempo que cualquier otra realización, y por lo tanto el estimador
sobre la realización es igual al estimador sobre el ensamble de todas las posibles realizaciones.

12 Capítulo 1. Introducción
Proyecto Especial 2do Cuat 2009, LPC

Ejercicios:
5. Genere con Matlab una señal aleatoria mediante el comando randn. Este co-
mando puede generar una señal aleatoria estacionaria. Calcule mediante el co-
mando xcorr su autocorrelación y grafíquelo (primeramente descuente a toda
la señal el valor medio para evitar los problemas de hacer la autocorrelación
con ventanas). El tipo de correlación obtenido nos dará algo parecido a una del-
ta. Esto significa que la señal en cada punto tiene correlación casi cero con los
puntos anteriores. Es una señal absolutamente descorrelacionada, o también
llamada ruido blanco . Genere con dicho vector un archivo .wav y escúchelo.
6. Utilice la señal aleatoria generada en el ejercicio anterior como entrada a un
sistema como el propuesto en la guía 2, ejercicio 10a, para A = 0,95, con con-
diciones iniciales de reposo. Calcule nuevamente la correlación y grafíquela.
Genere con la salida de dicho sistema un archivo .wav y escúchelo. Nota alguna
diferencia entre ambos sonidos? Cómo explicaría el comportamiento escucha-
do a partir del filtro utilizado?

1.2.2 Cálculo de los coeficientes de predicción lineal


El desarrollo teórico que sigue explica cómo se calculan los coeficientes de predic-
ción lineal de una señal estacionaria de la forma (1.2), suponiendo conocida su fun-
ción de correlación. En la práctica esto equivale a contar con un segmento de señal
suficiente como para que los promedios con los que estimamos la correlación sean
representativos de la verdadera probabilidad. Debe notarse además que el desarro-
llo que sigue no será necesario para realizar este proyecto, ya que Matlab cuenta
con una función que calcula los coeficientes LPC, que se podrá utilizar en este ca-
so. Sin embargo la explicación siguiente es un ejemplo de cálculo de estimación, y
constituye un punto de partida sencillo para todos los que estén interesados en los
problemas de estimación de cuadrados mínimos, que aparecen en una infinidad de
problemas de ingeniería.
Como ya anticipamos en los ejercicios la forma de encontrar el predictor lineal ŷ(n)
como en (1.3) sujeto a que la diferencia entre esta estimación y el valor real y(n) sea
mínimo, es pidiendo que el error de predicción o innovación sea perpendicular al
espacio generado por las variables aleatorias correspondientes a las muestras ante-
riores, es decir
E{[y(n) − ŷ(n)] hT yn } = 0
donde yn = {y(n − 1), y(n − 2), . . . , y(n − N )}, son las variables aleatorias puestas en
forma de columna, y donde h es un vector cualquiera de dimensión N que nos ayuda
a expresar el hecho de que la innovación debe ser ortogonal a cualquier combinación
lineal de los vectores en el conjunto yn de variables. Desarrollando esta expresión:
E{y(n)hT yn }} = E{ŷ(n) hT yn }
N
X
T
h E{y(n) yn }} = E{ ak y(n − k) hT yn }
k=1
h E{y(n) yn }} = E{hT yn ynT a}
T

1.2. Predicción Lineal 13


Proyecto Especial 2do Cuat 2009, LPC

donde hemos escrito al estimador como el producto ynT a, con a igual al vector co-
lumna formado por los elementos del estimador. De acuerdo a esto,

hT E{y(n) yn }} = hT E{y ynT }a

Como el vector h es arbitrario, debe cumplirse lo anterior independientemente de h.


Entonces, en verdad lo que se debe cumplir es

E{y(n) yn } = E{y ynT }a

que podemos escribir de manera más compacta como

c = Ra

El vector c estará definido como


   
E{y(n)y(n − 1)} R(1)
 E{y(n)y(n − 2)}   R(2) 
c= =  (1.4)
 ...   ... 
E{y(n)y(n − N )} R(N )

y la matriz R es
 
R(0) R(1) R(2) . . . R(N − 1)

 R(1) R(0) R(1) . . . R(N − 2) 

R=
 R(2) R(1) R(0) . . . R(N − 3) 
 (1.5)
 ... ... ... ... ... 
R(N − 1) . . . R(2) R(1) R(0)

Este tipo de matriz tiene una simetría especial, y es conocida con el nombre de ma-
triz de Toeplitz. En ella las diagonales son todas iguales, y además es una matriz si-
métrica. Estas propiedades serán aprovechadas en el algoritmo que explicaremos
a continuación para agilizar el cálculo, obtenido por un algoritmo progresivo. Pero
antes de eso, debemos resaltar que el método de predicción lineal consiste simple-
mente en encontrar la autocorrelación R(n) de la señal, formar la matriz R como
se indica arriba, y el vector c con los valores de R(n) para n = 1, . . . , N e invertir la
matriz, para encontrar

a = R−1 c

El método de Levinson-Durbin
Si bien para la época que se desarrolló la codificación por predicción lineal ya se
conocían métodos numéricos para invertir una matriz, el método se volvía inútil si
había que usar esos cálculos tan costosos computacionalmente. La idea que se tenía
en mente no era solamente codificar la señal de habla para almacenarla, sino para
transmitirla. Y todavía más: el problema era transmitirla en tiempo real. La señal de
habla es una señal que puede ser considerada estacionaria por tramos, pero esos
tramos no son muy largos. Por lo tanto el requerimiento era calcular un juego de
coeficientes LPC por cada tramo estacionario, y eso significaba calcular una inversa

14 Capítulo 1. Introducción
Proyecto Especial 2do Cuat 2009, LPC

de una matriz de orden 20 más o menos cada 10 mseg. Esto hizo que se aplicaran
viejos métodos para invertir matrices de esta forma, que luego tomó el nombre de
Método de Levinson-Durbin, que explicaremos a continuación y que logró bajar el
costo computacional en un orden de magnitud.
El método es un caso particular de cálculo progresivo: se harán una secuencia
de N cálculos que darán una secuencia de N vectores a1 , a2 , . . . , aN de dimensión
1, 2, . . . , N . El último vector de esta secuencia será el vector predictor verdadero a. El
esquema consiste en resolver N sistemas de ecuaciones reducidas

ck = Rk ak (1.6)

donde ck son los primeros k elementos del vector c, y Rk es la submatriz principal


de dimensión k. En esta reducción del problema podemos ver que no sólo la matriz
R sino todas las submatrices Rk son matrices de Toeplitz, cuya estructura particular
posibilita la existencia de este método. Supongamos que tenemos resuelto hasta el
sistema k anterior, y queremos calcular el siguiente. El sistema que nos queda se
puede descomponer en bloques de la siguiente manera:

ck+1 = Rk+1 ak+1 ⇒


" #
(−)
ak+1
  
Rk ck k ck
=
(−)T
ck R(0) ak+1
k+1 R(k + 1)

(−)
donde ck es una notación que significa los elementos del vector ck tomados en or-
den inverso, como fácilmente se puede verificar de las expresiones (1.4) y (1.5), y
donde además el nuevo vector ak+1 a calcular en este paso fue dividido en sus prime-
ras k componente y la última. Esto es lo mismo que tener 2 sistemas de ecuaciones:

(−)
Rk ak+1
k + ak+1
k+1 ck = ck
(−)T
(1.7)
ck ak+1
k + ak+1
k+1 R(0) = R(k + 1)

Supongamos que en la primera de estas ecuaciones pudiéramos premultiplicar por


la matriz R−1
k . Esto nos daría el siguiente sistema:

(−)
ak+1
k = R−1 k+1 −1
k ck − ak+1 Rk ck ⇒ (1.8)
−1 (−)
ak+1
k = ak − ak+1
k+1 Rk ck

donde ak es el que calculamos en el paso anterior. En este punto es donde utilizare-


mos el hecho de que la matriz R es Toeplitz. Supongamos que en la ecuación como
la (1.6) queremos que cada fila del sistema aparezca revertido:
 
R(k − 1) . . . R(2) R(1) R(0)
 ... ... ... ... ... 
(−)
  k
ck =  R(2)
 R(1) R(0) . . . R(k − 3)  a
 R(1) R(0) R(1) . . . R(k − 2) 
R(0) R(1) R(2) . . . R(k − 1)

1.2. Predicción Lineal 15


Proyecto Especial 2do Cuat 2009, LPC

Supongamos ahora que queremos que ak aparezca revertido. Esto equivaldría a re-
vertir el orden de las columnas de la matriz anterior:
 
R(0) R(1) R(2) . . . R(k − 1)
 R(1) R(0) R(1) . . . R(k − 2) 
(−)
  k(−)
ck =  R(2) R(1) R(0) . . . R(k − 3)  a = Rk ak(−)
 ... ... ... ... ... 
R(k − 1) . . . R(2) R(1) R(0)
y entonces,
(−)
ak(−) = R−1
k ck

Reemplazando este resultado en la ecuación (1.8),


ak+1
k = ak − ak+1
k+1 a
(−)k
(1.9)
con lo cual podríamos calcular el valor de los primeros k elementos del vector actua-
lizado ak+1 si conociéramos el valor de ak+1
k+1 , que es la última componente del vector
que tenemos que calcular en este paso. Para encontrar este último elemento del vec-
tor ak+1
k+1 utilizaremos la última ecuación del sistema (1.7), que todavía no estamos
teniendo en cuenta. Reemplazando el valor encontrado anterior para ak+1 k , tendre-
mos
(−)T
ak+1
k+1 R(0) + ck ak+1
k = R(k + 1) ⇒
(−)T (−)T
ak+1
k+1 R(0) + ck ak − ck ak+1
k+1 a
(−)k
= R(k + 1)
 
(−)T (−)k (−)T
ak+1
k+1 R(0) − ck a = R(k + 1) − ck ak ⇒
(−)T
R(k + 1) − ck ak
ak+1
k+1 =
R(0) − cTk ak
que como vemos es una expresión que depende sólo de valores calculados en el paso
anterior, con lo cual se completaría el cálculo. Pero es posible encontrar una recur-
sión final que disminuye todavía más el tiempo de computación, y que además nos
brindará otras ventajas como veremos más abajo. Si en esta última ecuación defini-
mos
βk+1
ak+1
k+1 =
αk+1
(−)T
donde αk+1 = R(0) − cTk ak y βk+1 = R(k + 1) − ck ak , podemos ver lo siguiente:
αk+1 = R(0) − cTk ak
= R(0) − cTk−1 akk−1 − R(k) akk
que, reemplazando la forma de la actualización de los primeros k − 1 elementos del
vector ak de (1.9), tendremos
αk+1 = R(0) − cTk−1 ak−1 − akk (R(k) − cTk−1 a(−)(k−1) )
= αk − akk βk = αk 1 − (akk )2 ⇒


αk+1 = αk 1 − (akk )2

(1.10)
Recapitulando y ordenando un poco las cosas, para calcular cada iteración del vector
ak+1 , hay que realizar los siguientes tres pasos:

16 Capítulo 1. Introducción
Proyecto Especial 2do Cuat 2009, LPC


1. Actualización de αk+1 = αk 1 − (akk )2
βk+1
2. Cálculo de la última componente del vector ak+1 , ak+1
k+1 = αk+1
, con βk+1 = R(k +
(−)T
1) − ck ak .

3. Y por último calcular los k primeros elementos de ak+1 , es decir ak+1


k = ak −
k+1 (−)k
ak+1 a .

Volviendo a la ecuación (1.10) para el cálculo de αk+1 , vamos a mostrar que esta mag-
nitud tiene una relación interesante con las señales que estamos calculando. Si cal-
culáramos la energía de la señal de error, se puede ver que

e(n) = y(n) − ŷ(n) ⇒


< e(n), e(n) >=< y(n) − ŷ(n), y(n) − ŷ(n) >= R(0) − aT R a = R(0) − aT c = αN +1

O sea, que podemos decir que la energía del error de predicción puede ser calculada
al mismo tiempo que vamos calculando los elementos del vector a en cada paso de
manera iterativa también, utilizando la recursión de la ecuación (1.10), que ahora
podremos reescribir como

< ek+1 (n), ek+1 (n) >=< ek (n), ek (n) > 1 − (akk )2

(1.11)

Pero esta última expresión tiene una implicancia acerca del valor que puede tomar
el coeficiente akk , que es de utilidad en codificación. Recordando que la expresión
< e(n), e(n) > es una norma, y como tal nunca puede ser un número negativo, po-
demos ver que akk tiene que ser un número de módulo comprendido entre 0 y 1. Este
hecho, sumado al de que todo el vector aN final del predictor puede calcularse fá-
cilmente a partir del cálculo de estos coeficientes, hace que a la hora de codificar la
señal para ser transmitida, se prefiera enviar como código LPC el valor de los coe-
ficientes akk de la recursión del cálculo en lugar de los verdaderos coeficientes del
predictor aN , ya que es más fácil distribuir la codificación binaria entre números de
magnitud comparable, que entre números cuyos valores no se sabe a ciencia cierta
cual será su rango de variación.

LPC y la señal de habla


Vamos a ver ahora porqué decimos que el método de LPC está especialmente adap-
tado a la codificación y representación de la señal de habla. Para entenderlo es ne-
cesario comprender cómo se genera esta señal. Los sonidos de la señal de habla son
producidos por el humano en una manera muy similar a la que los intrumentos de
viento producen sus sonidos. El elemento vibrador son las cuerdas vocales, ubica-
das en la laringe, que producen excitaciones cuasiperiodicas por una combinación
del paso del aire proveniente de los pulmones y la tensión de éstas. El aire vibrante es
impulsado a atravesar diversas cavidades en la cabeza (boca, nariz) que hacen las ve-
ces de cámara de resonancia hasta su salida exterior. El conjunto de estas cavidades
se denomina tracto vocal.
La excitación sonora a la entrada de una cámara resonadora y la onda de salida pro-
ducida se relacionan entre sí mediante una ecuación diferencial. El sistema acústico

1.2. Predicción Lineal 17


Proyecto Especial 2do Cuat 2009, LPC

Figura 1.1: Sistema de producción del habla.

productor de señal de habla que describimos anteriormente también puede descri-


birse por una ecuación diferencial cuya entrada es una señal impulsiva cuasiperió-
dica generada en la glotis y su salida son las porciones sonoras de la señal de habla.
Los coeficientes de esta ecuación diferencial guardan relación con la forma del trac-
to vocal para cada sonido distinto que emitimos al hablar. Si denominamos G x(t) a
la excitación sonora, e y(t) a la onda de salida producida, tendremos una expresión
de este tipo
d(N ) y(t) d(N −1) y(t) (1.12)
y(t) = bN + b N −1 + . . . + G x(t)
dt(N ) dt(N −1)
Esta descripción corresponde a la porción sonora de la señal de habla, por ejemplo
cuando decimos una vocal o las consonantes sonoras, como la /n/ o la /m/. Pero otro
tanto puede ser pensado para los sonidos ruidosos de la señal de habla, como la /f/,
/s/ o /j/. En este caso las cuerdas vocales están totalmente abiertas, dejando pasar
el aire de manera libre, es decir que no son las generadoras del sonido. La fuente
sonora en este caso se produce por una oclusión parcial en alguna parte superior del
tracto vocal, como por ejemplo entre la lengua y paladar, o lengua y dientes, lo cual
produce una turbulencia en el flujo de aire que viene de los pulmones, quedando el
tracto vocal o cavidad de resonancia restringido a la parte restante desde la oclusión
hasta la salida del aire. En este caso la dinámica de la señal es la misma, es decir hay
una excitación que en este caso es ruidosa, o aleatoria, que atraviesa una cavidad de
resonancia, por lo cual la relación entre entrada y salida también corresponde a una
ecuación diferencial de la forma anterior.

Ejercicios:
7. Determine en la señal fantasia.wav las porciones sonoras y sordas de la señal,
ayudándose de herramientas como wavesurfer. Muestre la segmentasión en

18 Capítulo 1. Introducción
Proyecto Especial 2do Cuat 2009, LPC

forma simultánea en tiempo y en el espectrograma, verificando la distinción


explicada anteriormente entre señal sorda y sonora.

Si ahora pensamos en términos discretos, es decir en la señal de habla después de


haber sido muestreada, la dinámica de la ecuación diferencial queda plasmada en
una ecuación en diferencias:

y(n) = Gx(n) + d1 y(n − 1) + d2 y(n − 2) + . . . + dN y(n − N ) (1.13)

Si comparamos esta expresión con la de las señales linealmente predecibles (1.2),


vemos que la señal de habla pertenece a esta clase. Por la definición que dimos del
error de predicción que deseamos minimizar, podemos escribir

X
y(n) − ŷ(n) = Gx(n) + d1 y(n − 1) + d2 y(n − 2) + . . . + dN y(n − N ) − a(m) y(n − m)
m=1

Por lo tanto, si por algún método de cálculo lográramos que nuestro estimador
{a1 , a2 , . . .}, fuera igual a los coeficientes d1 , d2 , . . . , dN , entonces nuestro error se-
ría exactamente la señal generadora Gx(n), que constituye la parte impredecible
de nuestra señal. La pregunta sería si utilizando LPC para calcular los coeficientes
{a1 , a2 , . . .}, obtendremos los verdaderos valores de los coeficientes de la ecuación
diferencial. La respuesta es que esto será así en la medida que respetemos las hipó-
tesis en las cuales se basa el método de LPC, que básicamente nos pide dos cosas. Por
un lado se requiere que la señal sea expresable en la forma de las señales linealmen-
te predecibles (1.2), y que por lo que venimos explicando en esta sección parecería
ser así. Pero por otro lado, el método está desarrollado para señales aleatorias, y ade-
más nos pide que la secuencia de innovación sea ortogonal a las muestras pasadas
de la señal a predecir, lo cual se puede demostrar que implica que la secuencia de
innovación debe ser un ruido blanco. Esta última observación parecería indicar que
LPC sería aplicable sólo a los sonidos sordos de la señal de habla, mientras que la
parte sonora de la señal que es más bien determinística quedaría excluída de las hi-
pótesis. Sin embargo la secuencia de innovación obtenida de la aplicación de LPC a
las partes sonoras de la señal de habla tiene un aspecto de tren de impulsos (qua-
si) periódicos. Esto no es lo que se pide para el método de predicción lineal, pero si
se calcula la “correlación” a dicha señal veremos que tiene una forma parecida a la
correlación del ruido blanco, salvo que en lugar de ser una única delta, es un tren
de deltas periódico. Por lo tanto, si bien la secuencia de innovación no cumple ser
una señal aleatoria, su correlación tiene una forma similar a la pedida para el ruido
blanco, lo cual nos permite suponer que los coeficientes encontrados usando LPC
tendrán cierta proximidad con los verdaderos coeficientes del sistema.

Notas:

Esta es la definición de ruido blanco débil, ya que la señal la estamos considerando


de segundo orden.

1.2. Predicción Lineal 19


Proyecto Especial 2do Cuat 2009, LPC

20 Capítulo 1. Introducción
CAPÍTULO 2

Desarrollo del Proyecto

El desarrollo del proyecto se divide en las siguientes partes:

Cálculo de los coeficientes de LPC para un segmento de señal de habla.


Reconstrucción de la señal de LPC a partir de los coeficientes y de la señal error,
para varios niveles distintos de codificación.
Descomposición de la señal de LPC en sus fonemas elementales a partir de los
coeficientes LPC.

2.1 Cálculo de los coeficientes de LPC y reconstrucción de


la señal
Realice el cálculo de los coeficientes de LPC de la señal estaba_la.wav. Como
se dijo anteriormente, se puede utilizar la función de matlab LPC, ya que no
es el objetivo de la materia la programación ni el diseño de algoritmos rápi-
dos de estimación. Como dijimos en la introducción, la señal de habla puede
ser considerada estacionaria por tramos. Esto implica que hay que hacer una
actualización de los coeficientes cada determinado tiempo. Esta actualización
debería coincidir con los tramos donde la señal tiene cierta uniformidad es-
pectral, pero en la práctica la actualización se hace cada un determinado tiem-
po sincrónicamente, supuesto suficientemente pequeño como para no perder
ningún fonema, y no tan chico como para que el método sea impráctico. El uso
estandard es considerar ventanas de señal de longitud 0.025 seg, actualizadas
cada 0.010 seg para calcular la matriz Toeplitz R y el vector c. Una desición a
tomar es cuántos coeficientes utilizar. Se considera que para la mayor parte de
las secciones de la señal de habla 20 coeficientes es suficiente.

Una vez que se tiene la secuencia de 20 coeficientes cada 10 mseg, debe obtenerse
la señal de error correspondiente a ese segmento de 10 mseg, y luego concatenarse
para generar la señal de error completa. La fórmula para obtener el error es simple-
mente deducible de (1.3), de este modo:
ŷ(n) − y(n) = a1 y(n − 1) + a2 y(n − 2) + . . . + aN y(n − N ) − y(n) = e(n)
Es decir, la secuencia de error se obtiene simplemente haciendo un filtrado FIR de la
señal de habla, con el filtro definido por los coeficientes LPC, de la forma anterior.

21
Proyecto Especial 2do Cuat 2009, LPC

Encuentre las secuencias de error y concaténelas para cada segmento de 10


mseg, cuidando de evitar los transitorios del filtro. Esto puede hacerse conser-
vando los transitorios finales de cada sección, y sumándolos al siguiente seg-
mento.

Analice su forma temporal, tratando de determinar mediante esa forma los seg-
mentos sonoros y sordos de la señal. Contraste la segmentación obtenida sobre
el error de predicción con la segmentación realizada escuchando cada porción
de sonido correspondiente. Genere un vector .wav con el error y escúchelo.

Analice su forma espectral. Para ello realice el espectrograma de la señal, y


compare zonas correspondientes a diferentes fonemas. Se puede decir que el
método de LPC hizo un “blanqueado” de la señal?. (Esto significa que las dife-
rentes características espectrales de las porciones sordas y sonoras han desa-
parecido, dejando simplemente las características de la fuente).

También genere la secuencia predicha sólo con la información de predicción


ŷ(n), grafíquela superpuesta a la señal original y escúchela. Qué conclusión
puede sacar acerca de la validez de la aplicación de LPC para estos casos?.

2.2 Reconstrucción de la señal con compresión


Una vez que los coeficientes de LPC y la secuencia de error son obtenidos, queda aun
estudiar el efecto de la cuantización. Para ello debe notarse que mediante este mé-
todo podemos decir que hemos pasado toda la complejidad del mensaje del habla a
los coeficientes de LPC, dejando en la secuencia de error solamente la pequeña parte
que es impredecible, pero no relevante para predecir la señal. Por lo tanto a la hora
de asignar bits para cada parte, podemos asumir que por cada bloque de 10mseg
debemos dedicar una cierta cantidad de bits a la cuantización de los coeficientes,
mientras que con la secuencia de error podemos ser bastante más mezquinos sin
alterar perceptiblemente la calidad de la señal reconstruída.

Realice la reconstrucción de la señal con la calidad máxima permitida por la


representación en punto flotante, es decir sin ninguna cuantización. En este
item estamos realizando la operación inversa al cálculo del error de predicción.
Es decir, si a partir de la señal y(n) calculamos la secuencia de error e(n) =
Gx(n) por medio de un sistema FIR, entonces:

G X(z)
G X(z) = Hk (z)Y (z) ⇒ Y (z) = (2.1)
Hk (z)

Realice la reconstrucción de la señal con los coeficientes de LPC en punto flo-


tante, y el error codificado en 256 niveles (8bits), 16 niveles (4 bits) y cuatro
niveles (2 bit). Calcule en cada caso el ahorro producido con respecto a codifi-
car la señal completa en 16 bits. Suponga además que para la codificación de
los coeficientes utiliza punto flotante, es decir 8bytes por coeficiente. Genere

22 Capítulo 2. Desarrollo del Proyecto


Proyecto Especial 2do Cuat 2009, LPC

un archivo .wav para cada uno y escúchelo. Grafique las salidas temporales y
las secuencias de error superpuestas para su comparación.
Aclaración de implementación: este cálculo debe realizarse concatenando las
salidas correspondientes a cada sección de coeficientes calculados. Es decir, se
deben concatenar las secciones de filtrados cada 10 mseg, de la misma manera
que se calculó el error. Pero a diferencia del caso del error, aquí estamos fil-
trando con filtros IIR, por lo cual el transitorio es infinito, y no se puede evitar.
Sin embargo para que la reconstrucción sea realizable, podemos aproximar la
respuesta IIR de cada filtro a una respuesta FIR, de longitud apropiada. Luego
proceda como en el cálculo del error de predicción.

Item avanzado: cuantifique los coeficientes LPC en punto fijo de 16 bits, y ge-
nere la reconstrucción con el error en punto flotante. Compare este resultado
contra la cuantificación de los coeficientes akk con la misma precisión, explica-
dos en la sección sobre el método de Levenson-Durbin. Los coeficientes akk no
son parte de la salida obtenida de la función lpc de Matlab, pero pueden ser
generados a partir de los coeficientes del predictor de manera simple, o bien
modificando ligeramente el código de la función para que también los devuel-
va.

2.3 Análisis de la señal de habla mediante LPC


Si pensamos en la ecuación (2.1) que nos permite generar la señal de habla a partir
de la secuencia de innovación y la secuencia de transferencias 1/Hk (z) vemos que
hemos desglosado la señal de habla en dos partes: por un lado la secuencia de in-
novación nos representa la excitación con la cual se genera la señal y por el otro
tendremos en la secuencia de transferencias la información de la forma del aparato
fonador para cada sonido. Si observamos la evolución temporal de la secuencia de
innovación para todas las porciones sonoras de la señal veremos que salvo las varia-
ciones de energía e intervalo entre picos, la excitación tiene una naturaleza casi de
tren de deltas, no importa el sonido final que se produce en la señal de habla. Es de-
cir, la excitación sonora es la misma para cualquier vocal o en general para cualquier
sonido sonoro que emitimos. Otro tanto se puede decir para las porciones sordas
de señal de habla. Entonces podemos concluir que la división fina entre los diferen-
tes sonidos sonoros y sordos de la señal de habla está contenida en la transferencia
1/Hk (z) para cada sonido elemental.

Genere la secuencia de tranferencias 1/Hk (z) obtenidos cada 10 mseg y a par-


tir de ellas genere la secuencias de transformadas de Fourier correspondientes.
Grafique el resultado en una superficie con altura dada por pseudocolor, simi-
lar al espectrograma, y compárelo con este.

Elija porciones de señal correspondiente a realizaciones distintas del mismo


sonido vocálico. Grafique las transformadas de Fourier correspondientes a ca-
da una de esas realizaciones superpuestas, y compárelas. Repetir para otro so-
nido, y compararlas entre sí. Determine la posición de los picos del espectro
de cada uno de esos sonidos. Los picos del espectro están relacionados con las

2.3. Análisis de la señal de habla mediante LPC 23


Proyecto Especial 2do Cuat 2009, LPC

resonancias del aparato fonador, y para cada clase de sonido están en una po-
sición distinta.

Item opcional: intercambie los coeficientes de LPC correspondientes a distin-


tas vocales por otra representación. Por ejemplo, reemplace todas las vocales
por /a/, intercambiando los coeficientes correspondientes a otras vocales con
las de la /a/.

Item opcional avanzado: expandiendo o contrayendo temporalmente la señal


de error en las porciones sonoras es posible cambiar el tono de la señal de ha-
bla. Los hombres tienen una frecuencia fundamental prácticamente igual a la
mitad de la de las mujeres. Convierta la señal mujer.wav a un tono de hombre y
la hombre.wav a un tono de mujer mediante esta idea. Para que la representa-
ción suene natural, conserve la misma envolvente de la señal de error original.

24 Capítulo 2. Desarrollo del Proyecto


BIBLIOGRAFÍA

[1] R. Gray, “The 1974 origins of VoIP,” Signal Processing Magazine, IEEE, vol. 22,
pp. 87–90, July 2005.

25

You might also like