Professional Documents
Culture Documents
Tpe 092c PDF
Tpe 092c PDF
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
Bibliografía 25
I
II
Proyecto Especial 2do Cuat 2009, LPC
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
Esta guía.
3
Proyecto Especial 2do Cuat 2009, LPC
4 Índice general
CAPÍTULO 1
Introducción
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.
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.
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
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
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
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)
−∞
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)
−∞
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=−∞
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?
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 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 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)
(−)
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
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
α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 .
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
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.
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
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:
20 Capítulo 1. Introducción
CAPÍTULO 2
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
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.
G X(z)
G X(z) = Hk (z)Y (z) ⇒ Y (z) = (2.1)
Hk (z)
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.
resonancias del aparato fonador, y para cada clase de sonido están en una po-
sición distinta.
[1] R. Gray, “The 1974 origins of VoIP,” Signal Processing Magazine, IEEE, vol. 22,
pp. 87–90, July 2005.
25