Professional Documents
Culture Documents
LPC
SyS (66.74)
19 de Octubre de 2009
NDICE GENERAL
1. Introduccin 5
1.1. Algunos conceptos sobre codificacin . . . . . . . . . . . . . . . . . . . 5
1.2. Prediccin Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Bibliografa 25
I
II
Proyecto Especial 2do Cuat 2009, LPC
Transformada Z (de forma racional). Relacin entre forma de polos y ceros y las
propiedades temporales de la seal (causalidad, estabilidad).
ndice general 1
Proyecto Especial 2do Cuat 2009, LPC
2 ndice general
Requisitos para la aprobacin
Esta gua.
3
Proyecto Especial 2do Cuat 2009, LPC
4 ndice general
CAPTULO 1
Introduccin
5
Proyecto Especial 2do Cuat 2009, LPC
con el que estaba concevido TCP para que la totalidad de la informacin fuera trans-
misible de manera confiable, haca imposible la transmisin en tiempo real de una
seal como la voz. Se extrajo entonces del protocolo original una versin ms simple
aceptable para procesamiento en tiempo real y que se le dio el nombre de IP (In-
ternet Protocol). Esta distincin entre protocolos TCP e IP dio origen a una famosa
frase, de D. Cohen el autor del protocolo IP, cuya traduccin libre sera 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 ms prolijo, dando a
entender que hay una diferencia de requerimientos escencial entre el transporte de
datos en tiempo real como es la seal de habla y el transporte de datos en s (como
por ejemplo una transaccin bancaria). De aqu en adelante los mtodos de codifi-
cacin de voz se realizan por IP, y es lo que se llama VoIP, y la tcnica utilizada es la
codificacin LPC, que da muy buen rendimiento de compresin y que fue desarro-
llada paralelamente al protocolo que la contendra.
Wavecoders y vocoders
Debe tenerse en cuenta sin embargo que los mtodos de codificacin pueden ser
utilizados para representar la misma informacin dispersa de la seal no solo de
una manera ms compacta sino tambin ms conceptual. Como ya veremos ms en
detalle, LPC est especialmente adaptado a seales de habla ya que tiene una re-
lacin muy cercana con la manera en que la seal 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 significacin como unidad. Los sonidos elementales de nuestro len-
guaje (el sonido correspondiente a la a, a la s, a la n, etc.) podran describirse desde
un punto de vista fsico (en promedio) como una cierta configuracin del aparato fo-
nador para cada uno de ellos. LPC logra asociar a cada una de esas configuraciones
un cdigo diferente. Por lo tanto se la considera no slo una tcnica para codificar
una seal sin importar su contenido, que lleva de nombre de codificador de onda o
en ingls wavecoder, sino una metodologa para conceptualizar el mensaje conteni-
do en la seal, para las cuales se haba acuado desde los comienzos del siglo XX el
termino vocoder. Los coeficientes obtenidos por LPC no slo constituyen un ahorro
de coeficientes de representacin, sino que de alguna manera podran simular los
mismos procesos que hace nuestro cuerpo cuando genera la seal de habla, y por lo
tanto es posible preguntarse si esa representacin no es adecuada para entender el
mensaje inmerso en la seal de habla (reconocimiento de habla). Y realmente lo es,
a tal punto que actualmente los mtodos ms existosos para la representacin de la
seal de habla para reconocimiento estn basados en LPC. Este mtodo tambin es
apto para sntesis, como tambin veremos en este proyecto especial.
6 Captulo 1. Introduccin
Proyecto Especial 2do Cuat 2009, LPC
ximacin del valor de una seal en el tiempo actual basado en el valor que esta seal
haba tomado en el pasado. El trmino prediccin 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 informacin del pasa-
do de la seal. Vamos a abrir aqu una bifurcacin en la explicacin y dejar (otra vez)
en suspenso el tema de prediccin para detenernos un poco en la segunda parte del
nombre del mtodo: prediccin lineal.
De estas expresiones podemos ver que todo el conjunto de vectores slo tiene com-
ponentes distintas de cero en los dos primeros vectores de la base. Si por alguna
razn pudiramos saber que todos los vectores con los que trabajaremos siempre
van a tener cero en las ltimas dos componentes de esta base, podramos plantear
una codificacin expresando los vectores en dicha base y reteniendo slo el valor
de las dos primeras componentes. El proceso de reconstruccin bajo esta supues-
ta codificacin consistira en completar con ceros los lugares correspondientes a las
8 Captulo 1. Introduccin
Proyecto Especial 2do Cuat 2009, LPC
Ejercicios:
1. Suponga las seales 2 y 5 del ejercicio 11 de la guia 1. Encuentre el subespacio
de seales en el cual estn representados cada una de ellas y su ortogonal. Para
ello escriba la frmula de sntesis de la seal y determine qu elementos de
la base de Fourier tienen coeficientes ak distintos de cero, que constituye el
grupo de vectores del subespacio de representacin. El resto de elementos de la
base generan el subespacio ortogonal. En cual de las dos seales sera ventajoso
utilizar la proyeccin lineal a un subespacio y su ortogonal como mtodo de
compresin?
Aproximaciones a un subespacio
Los mtodos de prediccin lineal pertenecen al tipo de codificacin que puede ser
expresada por una transformacin lineal. En este tipo de transformaciones la seal
debe ser expresable mediante una suma de (una cantidad pequea de) vectores mul-
tiplicados por coeficientes. En el caso del ejercicio anterior nuestras seales queda-
ron totalmente determinadas por la divisin en dos subespacios ortogonales entre
s: el que contiene totalmente a la seal y el que es ortogonal a l. Esto fue porque
nuestras seales en ese ejercicio ya estaban generadas como superposicin lineal
de algunos vectores de esa base. Pero en una seal 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 compresin por estos medios deja de ser til. En la
realidad nuestras seales del mundo fsico real nunca podrn ser representadas de
forma exacta en un subespacio de dimensin finita, por lo cual si usamos este tipo
de codificacin lineal deberemos conformarnos con representaciones aproximadas.
Sin embargo, si el error de nuestra aproximacin es pequeo, podremos lograr una
reconstruccin basada en la representacin aproximada que sea aceptable a nues-
tros propsitos. Si la base de representacin es ortogonal siempre es posible saber el
error de aproximacin por el teorema de Parseval.
Ejercicios:
2. Suponga la seal dada por
6 |n| si |n| 5
x(n) =
0 resto
La expresin anterior corresponde a una seal predecible con pasado finito de or-
den N . Obsrvese que una seal 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 caractersticas que hagan que no tenga demasiada relevancia. Ade-
ms, como estamos pensando que la seal y(n) depende de las muestras anteriores
y(nk), con k = 1, . . . , N , estamos asumiendo que este sistema IIR es causal. Es decir,
que en la medida que la seal x(n) no aporte una informacin significativa, si cono-
ciramos el valor de los coeficientes bk con k = 1, . . . , N y el valor de las N muestras
10 Captulo 1. Introduccin
Proyecto Especial 2do Cuat 2009, LPC
pasadas, tendramos una prediccin del valor presente de la seal y(n) salvo por lo
que pueda aportarnos el valor de la seal x(n) en ese instante. En esta terminologa
se denomina a x(n) seal innovacin o secuencia de innovacin, porque justamente
es la parte impredecible de la seal. El mtodo de prediccin lineal consiste en ob-
tener coeficientes ak para una seal estacionaria tales que la seal predicha sea de la
forma
Como vemos, si la seal tiene la expresin (1.2), este mtodo nos dara idealmente el
valor de los coeficientes de la ecuacin diferencial asociada a esa expresin , es decir
los ak que nos da el mtodo sern aproximadamente iguales a los bk de la ecuacin
(1.2) (suponiendo que la secuencia de innovacin tiene informacin no contenida
en el pasado de la seal).
Volviendo al tema de aproximacin que habamos explicado en la seccin anterior,
en este caso se puede ver que tenemos una combinacin lineal de elementos que
formarn una aproximacin de nuestra incgnita (la seal en el tiempo presente), y
que sabemos que no vamos a poder representar en forma exacta, sino que existir
un error de aproximacin, el cual debemos minimizar para que todo esto sea til.
Sin embargo en este caso puede resultar un poco oscuro cul sera la base de repre-
sentacin o subespacio de representacin que estamos eligiendo. En los casos del
apartado anterior, habamos visto que las seales se descomponan en bases com-
puestas de otras seales (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 prediccin
lineal en la frmula (1.3) parecera que estamos expresando muestras de la seal en
trmino de otras muestras anteriores, y no funciones en trminos de otras funcio-
nes. Esto es exactamente as, y la razn es que los mtodos de prediccin lineal estn
desarrollados para seales aleatorias y no determinsticas. En una seal aleatoria los
valores que toma para cada tiempo no pueden expresarse por un valor determinado,
sino por la probabilidad de que la seal tenga ese determinado valor. Asimismo, la
relacin temporal que siguen las muestras no puede expresarse explcitamente co-
mo valor que vara en funcin del tiempo sino por la variacin de la probabilidad del
valor de la seal en funcin del tiempo. La clase ms simple de seales aleatorias o
estocsticas que se puede definir son las seales de segundo orden, en las cuales la
funcin de probabilidad de la seal en funcin del tiempo toma una forma simple,
quedando absolutamente definida por las probabilidades conjuntas de las muestras
de la seal tomadas de a dos. Para este tipo de seales aleatorias toda la informacin
de la seal estar contenido en la funcin de dos variables llamada expectacin de la
densidad conjunta o ms simplemente correlacin:
Z Z
E{y(n), y(m)} = y(n)y (m)pn,m (y(n), y(m)) dy(n) dy(m) = R(n, m)
Si comparamos esta expresin con la expresin (1.1) vemos que tiene semejanza con
un producto interno, y de hecho cumple todas las propiedades necesarias para serlo.
Es decir que la correlacin es el producto interno entre las muestras de la seal. Por
ltimo, de entre las seales aleatorias de segundo orden nos interesa las seales esta-
cionarias. Estas son aquellas en las cuales dos valores de la seal tienen una relacin
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 seal estacionaria perdi nocin de
sus orgenes y solo le incumbe la relacin que cada uno de sus valores guardan con
los previos ordenadamente. En este caso se podr afirmar que la correlacin 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)plm (y(l), y(n + l)) dy(l) dy(n + l) = R(l, l + n) = f (n)
Para estimar esta expectacin se tomara a todos los alumnos que se pueda conseguir
y se hara 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 correlacin entre dos muestras de una seal aleatoria estacionaria,
lo que se hace es suponer que todos los valores igualmente distanciados en tiempo
tendrn el mismo valor de correlacin 1 . Por lo tanto un estimador de la correlacin
ser
X
R(n) = K y(m)y(m + n)
m=
12 Captulo 1. Introduccin
Proyecto Especial 2do Cuat 2009, LPC
Ejercicios:
5. Genere con Matlab una seal aleatoria mediante el comando randn. Este co-
mando puede generar una seal aleatoria estacionaria. Calcule mediante el co-
mando xcorr su autocorrelacin y grafquelo (primeramente descuente a toda
la seal el valor medio para evitar los problemas de hacer la autocorrelacin
con ventanas). El tipo de correlacin obtenido nos dar algo parecido a una del-
ta. Esto significa que la seal en cada punto tiene correlacin casi cero con los
puntos anteriores. Es una seal absolutamente descorrelacionada, o tambin
llamada ruido blanco . Genere con dicho vector un archivo .wav y escchelo.
6. Utilice la seal aleatoria generada en el ejercicio anterior como entrada a un
sistema como el propuesto en la gua 2, ejercicio 10a, para A = 0,95, con con-
diciones iniciales de reposo. Calcule nuevamente la correlacin y grafquela.
Genere con la salida de dicho sistema un archivo .wav y escchelo. Nota alguna
diferencia entre ambos sonidos? Cmo explicara el comportamiento escucha-
do a partir del filtro utilizado?
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,
c = Ra
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 simetra especial, y es conocida con el nombre de ma-
triz de Toeplitz. En ella las diagonales son todas iguales, y adems es una matriz si-
mtrica. Estas propiedades sern aprovechadas en el algoritmo que explicaremos
a continuacin para agilizar el clculo, obtenido por un algoritmo progresivo. Pero
antes de eso, debemos resaltar que el mtodo de prediccin lineal consiste simple-
mente en encontrar la autocorrelacin R(n) de la seal, 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 = R1 c
El mtodo de Levinson-Durbin
Si bien para la poca que se desarroll la codificacin por prediccin lineal ya se
conocan mtodos numricos para invertir una matriz, el mtodo se volva intil si
haba que usar esos clculos tan costosos computacionalmente. La idea que se tena
en mente no era solamente codificar la seal de habla para almacenarla, sino para
transmitirla. Y todava ms: el problema era transmitirla en tiempo real. La seal de
habla es una seal 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 Captulo 1. Introduccin
Proyecto Especial 2do Cuat 2009, LPC
de una matriz de orden 20 ms o menos cada 10 mseg. Esto hizo que se aplicaran
viejos mtodos para invertir matrices de esta forma, que luego tom el nombre de
Mtodo de Levinson-Durbin, que explicaremos a continuacin y que logr bajar el
costo computacional en un orden de magnitud.
El mtodo es un caso particular de clculo progresivo: se harn una secuencia
de N clculos que darn una secuencia de N vectores a1 , a2 , . . . , aN de dimensin
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 es una notacin que significa los elementos del vector ck tomados en or-
den inverso, como fcilmente se puede verificar de las expresiones (1.4) y (1.5), y
donde adems 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)
()
ak+1
k = R1 k+1 1
k ck ak+1 Rk ck (1.8)
1 ()
ak+1
k = ak ak+1
k+1 Rk ck
Supongamos ahora que queremos que ak aparezca revertido. Esto equivaldra 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() = R1
k ck
k+1 = k 1 (akk )2
(1.10)
Recapitulando y ordenando un poco las cosas, para calcular cada iteracin del vector
ak+1 , hay que realizar los siguientes tres pasos:
16 Captulo 1. Introduccin
Proyecto Especial 2do Cuat 2009, LPC
1. Actualizacin de k+1 = k 1 (akk )2
k+1
2. Clculo de la ltima componente del vector ak+1 , ak+1
k+1 = k+1
, con k+1 = R(k +
()T
1) ck ak .
Volviendo a la ecuacin (1.10) para el clculo de k+1 , vamos a mostrar que esta mag-
nitud tiene una relacin interesante con las seales que estamos calculando. Si cal-
culramos la energa de la seal de error, se puede ver que
O sea, que podemos decir que la energa del error de prediccin puede ser calculada
al mismo tiempo que vamos calculando los elementos del vector a en cada paso de
manera iterativa tambin, utilizando la recursin de la ecuacin (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 expresin tiene una implicancia acerca del valor que puede tomar
el coeficiente akk , que es de utilidad en codificacin. Recordando que la expresin
< e(n), e(n) > es una norma, y como tal nunca puede ser un nmero negativo, po-
demos ver que akk tiene que ser un nmero de mdulo 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 clculo de estos coeficientes, hace que a la hora de codificar la
seal para ser transmitida, se prefiera enviar como cdigo LPC el valor de los coe-
ficientes akk de la recursin del clculo en lugar de los verdaderos coeficientes del
predictor aN , ya que es ms fcil distribuir la codificacin binaria entre nmeros de
magnitud comparable, que entre nmeros cuyos valores no se sabe a ciencia cierta
cual ser su rango de variacin.
Ejercicios:
7. Determine en la seal fantasia.wav las porciones sonoras y sordas de la seal,
ayudndose de herramientas como wavesurfer. Muestre la segmentasin en
18 Captulo 1. Introduccin
Proyecto Especial 2do Cuat 2009, LPC
Por lo tanto, si por algn mtodo de clculo logrramos que nuestro estimador
{a1 , a2 , . . .}, fuera igual a los coeficientes d1 , d2 , . . . , dN , entonces nuestro error se-
ra exactamente la seal generadora Gx(n), que constituye la parte impredecible
de nuestra seal. La pregunta sera si utilizando LPC para calcular los coeficientes
{a1 , a2 , . . .}, obtendremos los verdaderos valores de los coeficientes de la ecuacin
diferencial. La respuesta es que esto ser as en la medida que respetemos las hip-
tesis en las cuales se basa el mtodo de LPC, que bsicamente nos pide dos cosas. Por
un lado se requiere que la seal sea expresable en la forma de las seales linealmen-
te predecibles (1.2), y que por lo que venimos explicando en esta seccin parecera
ser as. Pero por otro lado, el mtodo est desarrollado para seales aleatorias, y ade-
ms nos pide que la secuencia de innovacin sea ortogonal a las muestras pasadas
de la seal a predecir, lo cual se puede demostrar que implica que la secuencia de
innovacin debe ser un ruido blanco. Esta ltima observacin parecera indicar que
LPC sera aplicable slo a los sonidos sordos de la seal de habla, mientras que la
parte sonora de la seal que es ms bien determinstica quedara excluda de las hi-
ptesis. Sin embargo la secuencia de innovacin obtenida de la aplicacin de LPC a
las partes sonoras de la seal de habla tiene un aspecto de tren de impulsos (qua-
si) peridicos. Esto no es lo que se pide para el mtodo de prediccin lineal, pero si
se calcula la correlacin a dicha seal veremos que tiene una forma parecida a la
correlacin del ruido blanco, salvo que en lugar de ser una nica delta, es un tren
de deltas peridico. Por lo tanto, si bien la secuencia de innovacin no cumple ser
una seal aleatoria, su correlacin tiene una forma similar a la pedida para el ruido
blanco, lo cual nos permite suponer que los coeficientes encontrados usando LPC
tendrn cierta proximidad con los verdaderos coeficientes del sistema.
Notas:
20 Captulo 1. Introduccin
CAPTULO 2
Una vez que se tiene la secuencia de 20 coeficientes cada 10 mseg, debe obtenerse
la seal de error correspondiente a ese segmento de 10 mseg, y luego concatenarse
para generar la seal de error completa. La frmula para obtener el error es simple-
mente deducible de (1.3), de este modo:
y(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
seal de habla, con el filtro definido por los coeficientes LPC, de la forma anterior.
21
Proyecto Especial 2do Cuat 2009, LPC
Analice su forma temporal, tratando de determinar mediante esa forma los seg-
mentos sonoros y sordos de la seal. Contraste la segmentacin obtenida sobre
el error de prediccin con la segmentacin realizada escuchando cada porcin
de sonido correspondiente. Genere un vector .wav con el error y escchelo.
G X(z)
G X(z) = Hk (z)Y (z) Y (z) = (2.1)
Hk (z)
un archivo .wav para cada uno y escchelo. Grafique las salidas temporales y
las secuencias de error superpuestas para su comparacin.
Aclaracin de implementacin: este clculo debe realizarse concatenando las
salidas correspondientes a cada seccin 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 reconstruccin sea realizable, podemos aproximar la
respuesta IIR de cada filtro a una respuesta FIR, de longitud apropiada. Luego
proceda como en el clculo del error de prediccin.
Item avanzado: cuantifique los coeficientes LPC en punto fijo de 16 bits, y ge-
nere la reconstruccin con el error en punto flotante. Compare este resultado
contra la cuantificacin de los coeficientes akk con la misma precisin, explica-
dos en la seccin sobre el mtodo de Levenson-Durbin. Los coeficientes akk no
son parte de la salida obtenida de la funcin lpc de Matlab, pero pueden ser
generados a partir de los coeficientes del predictor de manera simple, o bien
modificando ligeramente el cdigo de la funcin para que tambin los devuel-
va.
resonancias del aparato fonador, y para cada clase de sonido estn en una po-
sicin distinta.
[1] R. Gray, The 1974 origins of VoIP, Signal Processing Magazine, IEEE, vol. 22,
pp. 8790, July 2005.
25