pr4

Anuncio
Departamento de Señales, Sistemas y Radiocomunicaciones
Asignatura:
Laboratorio de Tratamiento Digital de la Voz
PRÁCTICA 4
TÍTULO: CODIFICACIÓN DE VOZ BASADA EN PREDICCIÓN LINEAL
REQUISITOS/ CONOCIMIENTOS PREVIOS

Conocimientos de Estima de Frecuencia Fundamental y Predicción Lineal de prácticas anteriores.

Interpretación de la señal de error de predicción.

Filtrado digital.

Conocimientos básicos de Codificación de Voz en general, y VOCODER LPC en particular.
INSTRUCCIONES GENERALES
En esta práctica se orientarán muchos de los conocimientos obtenidos en prácticas anteriores hacia el
diseño de dos funciones MATLAB que permitan realizar la codificación y decodificación de señales de voz
según el esquema básico del VOCODEL LPC.
Como fase previa al diseño del VOCODER se realizarán prácticas sencillas relacionadas con la obtención
del error de predicción y su sustitución por señales simples para la síntesis artificial de sonidos.
OBJETIVOS GENERALES
Los objetivos de esta práctica son:
 Interpretar la señal de error de predicción y realizar la síntesis de sonidos con "réplicas" de dicha señal.
 Experimentar la aplicación de la Predicción Lineal y la Estima de la Frecuencia Fundamental sobre el
diseño de un sencillo esquema de VOCODER LPC.
 Aplicar conocimientos de esta práctica y prácticas anteriores para dos objetivos diferentes: a) mejora del
esquema de codificación inicial, y b) estudio de modificaciones prosódicas mediante el esquema de
codificación desarrollado.
ACTIVIDADES
1. Estudio de la Señal de Error de Predicción.
Como primera actividad de esta práctica obtendremos el error de predicción de un segmento de voz sobre el
que hayamos calculado previamente los coeficientes de predicción lineal.
P
Voz
Error de Predicción
1 -
ak
z
-k
k=1
En MATLAB utilizaremos la función FILTER que permite la realización del filtrado digital correspondiente
para el cálculo del error de predicción err:
>>err=filter([1 -a'], 1, voz)
siendo: a el vector de coeficientes de Predicción Lineal y voz el segmento de voz sobre el que fueron
obtenidos.
El análisis tanto en el tiempo como en la frecuencia nos dará información sobre las características de esta
señal de error. Es importante tener claro los puntos siguientes:
 Que err será una señal más blanca que voz (ver sus Transformadas de Fourier). Es por esto
por lo que podemos utilizar err mejor que voz en la estima de la frecuencia fundamental.
 Cómo se combina la información de err con los coeficientes de Predicción Lineal para recuperar
la información de voz: a) En frecuencia, multiplicando las transformadas de Fourier de err y
voz, y b) en el tiempo mediante el filtrado de err:
Error
Voz original ó
1
____________________
_
"sucedáneo"
ó
P
Voz sintetizada.
1 -
ak
z
-k
k=1
>> voz_sint=filter(1,[1 -a'], err)
y voz_sint será idéntica a voz.
Llegados a este punto estamos en condiciones de obtener voz sintética poniendo señales sencillas que
realicen el papel de err:
 Un tren de unos y ceros con PERIODO IGUAL al de la voz original para segmentos sonoros.
 Un ruido aleatorio para fricativas.
Nota 1: Como ya apuntamos en la práctica anterior en estos casos es importante considerar la energía de
las señales a filtrar en función de la energía de la voz a sintetizar.
Nota 2: También es importante considerar que en un codificador de voz tendremos que ir sintetizando
sucesivos trozos de voz, por lo que el filtrado debería evitar discontinuidades entre trozos sucesivos. Para
ello es útil la consideración de condiciones iniciales durante el uso de la función MATLAB FILTER.
2. Diseño Inicial de un VOCODER LPC.
Como hemos visto en el punto anterior, la Predicción Lineal nos permite disponer de un modelo de tracto
vocal como un filtro digital de respuesta al impulso infinita (IIR). Podemos, por tanto, analizar o
descomponer una ventana o segmento de voz en:
-
El filtro digital descrito por los coeficientes de Predicción Lineal correspondientes a ese segmento.
-
Los parámetros que describan la excitación del filtro anterior tanto para una ventana o segmento sonoro
como sordo.
De forma análoga podemos realizar la síntesis del segmento de voz analizado sin más que realizar el filtrado
de la señal de excitación por el filtro IIR definido a partir de los coeficientes de Predicción Lineal.
Haciendo uso de las ideas anteriores, podemos pasar al desarrollo de dos funciones MATLAB:

Una (TRANSMISOR) que, a partir de un vector de voz (representando una palabra o frase corta),
obtenga trama a trama o ventana a ventana los parámetros de análisis de la voz (decisión sonoro/sordo;
periodo o frecuencia fundamental y coeficientes de Predicción Lineal).

Otra (RECEPTOR) que a partir de los parámetros de análisis obtenga un vector de voz Sintetizada.
El esquema del programa o función básica de análisis será el de un esquema genérico de análisis
localizado, que, tras definir un tamaño de ventana y un desplazamiento vaya obteniendo, sobre un vector de
voz de entrada, ventana a ventana los parámetros siguientes:
- decisión sonoro/sordo y estima del Período Fundamental To
- coeficientes de Predicción Lineal : {a} = a1, a2, ... aP
- energía de la señal de excitación
Así, esquemáticamente, esta función generaría la matriz de análisis : TRAMA, siguiente:
||=========================vector de voz de entrada======================||
|--ventana 1--|
|
| |--ventana 2 --|
|
|
|
|
|--ventana 3 --|
|
|
|
|
|
|
|
...
|
|
|--ventana N --|
|
|
|
…
|
To
To
To
To
a1
a1
a1
...
a2
a2
a2
...
a1
a2
TRAMA =
.
.
.
.
...
aP
aP
aP
...
G
G
G
...
aP
G
El esquema del programa o función básica de síntesis (RECEPTOR), partiría de la Matriz de Análisis
(TRAMA) para ir generando la señal sintética. Esto se conseguirá filtrando una señal periódica o ruidosa
(según To) a través del filtro definido por los coeficientes de predicción lineal {ak}, tal y como se muestra en
el esquema siguiente:
To
To
To
To
a1
a1
a1
...
a2
a2
a2
...
a1
a2
TRAMA =
.
.
.
aP
.
aP
...
aP
...
aP
G
G
G
...
|
|
|
…
G
|
|--vent 1-|
|
|
…
|
|
|
|
…
|
|
|
|
|
|
|
|-vent 2 -|
|
|
|
|
|
|--vent 3 -|
|
|
...
|
|
|
|
|
|
…
|--vent N -|
||=========================vector
de
voz
sintetizada
======================||
Notar:
 Que las ventanas de análisis suelen solaparse, y las de síntesis no.
 Por tanto, las dimensiones de las ventanas de síntesis no tienen por qué coincidir con las de análisis,
y que el filtro de síntesis va variando trama a trama o ventana a ventana, por lo que suele ser necesario
mantener las condiciones finales de un filtro como iniciales del filtro siguiente.
En el laboratorio está disponible un ejemplo de esquema de análisis: función vocodt2 ; y de síntesis
vocodr2.
EJERCICIO DE APLICACIÓN
Como actividad de aplicación del esquema anterior, puede iniciarse (y si se desea desarrollarse más en la
práctica libre) alguna de las múltiples facetas de aplicación del esquema básico en campos tales como:
codificación de voz y síntesis de habla.
Concretamente se proponen las posibilidades siguientes:
- Mejoras del esquema básico: evidentemente el esquema realizado puede presentar claras deficiencias en
algunos puntos como, por ejemplo, la decisión sonoro/sordo y la estima del periodo fundamental. Puede por
tanto pensarse en trabajar sobre técnicas de análisis más precisas (como algún algoritmo de mejora de la
estima de la Frecuencia Fundamental).
- El esquema básico es el de un codificador tipo VOCODER LPC, pero haría falta cuantificar los parámetros
de análisis (por ejemplo representar {ak} con un determinado número de bits) para establecer la velocidad
en bits/seg y comprobar su calidad.
- El VOCODER es un esquema de codificación simple, se podría intentar hacerle evolucionar hacia un
esquema similar al del codificador Full-Rate de GSM. Existen versiones de libre distribución del codificador
GSM escritas en C (y otros codificadores) en:
ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/coding/
y en la información del laboratorio hay una versión MATLAB simplificada del esquema recientemente
estandarizado por la UIT (LD-CELP a 16 Kbps). Este esquema fue desarrollado por Salvador Castejón,
Proyecto Fin de Carrera. (Hay versiones comprimidas MATLAB y C).
- El esquema de análisis-síntesis puede también utilizarse para ensayar la modificación prosódica de
palabras o frases cortas. Simplemente habría que aplicar variaciones de duración (repitiendo o quitando
tramas en la Matriz de Análisis) o de frecuencia fundamental (cambiando los valores de N de la Matriz de
Análisis).
Para esta práctica también puede consultarse las direcciones siguientes que se referenciaron en dos
trabajos de la asignatura teórica de Tratamiento Digital de Voz.
http://ceres.ugr.es/~alumnos/luis/c_voz.htm
(referencia en el trabajo presentado por Emilio Vianco Peñalba)
http://www.eas.asu.edu/~spanias/papers.html
(referencia en el trabajo presentado por Eduardo Vianco Peñalba)
Descargar