TECNOLOGIAS DE LA VOZ PRÁCTICA IV Análisis y Síntesis LPC

Anuncio
DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA Y
COMUNICACIONES
CENTRO POLITÉCNICO SUPERIOR
UNIVERSIDAD DE ZARAGOZA
TECNOLOGIAS DE LA VOZ
señal original
5000
0
-5000
200
250
10000
5000
0
-5000
200
250
Señal sintetizada
300
350
300
350
PRÁCTICA IV
Análisis y Síntesis LPC de la señal de voz:
el vocoder LPC
Análisis y Síntesis LPC de la señal de voz: el vocoder LPC
0. Introducción
En esta práctica se estudian los principios del análisis y síntesis de la señal de voz utilizando predicción
lineal. La base de la práctica es el vocoder LPC, estudiando sobre él diversas técnicas utilizadas en los
sistemas de conversión texto-voz para la transformación de la señal de voz. El objetivo básico de la
práctica es que el alumno experimente con las técnicas básicas de análisis y síntesis LPC, viendo sus
posibilidades así como su problemática.
Al finalizar la práctica, el alumno debe consolidar los siguientes conceptos:
1.
2.
3.
4.
5.
Análisis LPC: coeficientes del predictor, parcors.
Detección de pitch y sonoridad: Autocorrelación de la señal, Autocorrelación error de predicción.
Excitación: pulso glotal, ruido.
Síntesis LPC: filtrado variante en el tiempo, lattice.
Cuantificación Vectorial: transformación de la voz.
I. Estudio Teórico
I.0. Introducción
La figura 1 muestra un diagrama de bloques del sistema de análisis y síntesis que vamos a estudiar en esta
práctica. Básicamente, existe un proceso de análisis LPC de la señal a procesar, un proceso de detección
de pitch, generación sintética de la señal de estímulo y proceso de síntesis. Adicionalmente se permite
transformar el espectro de la señal de voz a sintetizar mediante cuantificación vectorial.
Señal de voz
referencia
Señal de voz
original
Análisis LPC
y cálculo del
Codebook
Cuantificación
Vectorial
Filtro
de
Síntesis
Análisis LPC
Detección de
pitch
Señal de voz
sintetizada
Generación
señal estímulo
Fichero
Figura 1.
En los apartados siguientes se comentan los aspectos mas relevantes de cada bloque.
I.1. Análisis LPC, parámetros representativos
El proceso de análisis LPC, estudiado en la práctica 2, requiere fijar el valor de una serie de parámetros
como el tamaño de la ventana de análisis, el desplazamiento, el factor de preénfasis, orden del predictor, y
tipo de ventana.
1. Comentar como influyen en la estimación del espectro de un segmento de voz los parámetros
anteriormente definidos.
El método utilizado para el cálculo de los coeficientes del predictor es el método de la autocorrelación,
utilizando el algoritmo de Levinson-Durbin para la resolución eficiente del sistema de ecuaciones. A
partir de los coeficientes del predictor se calculan los coeficientes parcor que serán utilizados para la
síntesis con una estructura en celosía. El algoritmo de Levinson-Durbin da como salida los coeficientes
del predictor y los coeficientes parcor. En nuestro caso, para evitar problemas de sobreestimación de
ancho de banda de los formantes, se aumenta el ancho de banda mediante una transformación sobre los
coeficientes del predictor definida como
a$ i = λ i ai , i = 1,2,L , P
donde P es el orden del análisis LPC y 0 < λ < 1, siendo un valor recomendado
 253 
λi = 

 256 
i
P
$ ( z ) = 1 + a$ z$ − i hacia el origen,
El resultado final es un movimiento de las raíces del polinomio A
∑ i
i= 1
con el consiguiente aumento del ancho de banda de los formantes.
2. Demostrar que la transformación definida anteriormente sobre los coeficientes del predictor tiene
como resultado el aumento del ancho de banda de los formantes.
Con estos nuevos coeficientes del predictor se calculan mediante una recursión los coeficientes Parcor o
los Log-Área , útiles para cuantificar y transmitir por un canal de transmisión o para interpolar parámetros
entre segmentos. En esta práctica no vamos a estudiar el problema de la cuantificación, con lo que
utilizaremos los coeficientes Parcor. La función atok permite realizar la transformación de parámetros.
Para la generación de la señal de estímulo se realiza también una estimación del factor de ganancia para
cada segmento. Esta estimación se realiza utilizando la energía de la señal y la energía del error de
predicción. Este proceso es realizado seleccionando el menú LPC del programa voclpc.
I.2. Detección de pitch
En la práctica 2 estudiamos un método de detección de pitch basado en la autocorrelación de la señal de
voz. En la misma práctica vimos como la señal obtenida en el proceso de filtrado inverso es igualmente
útil para la detección de pitch. Efectivamente, la señal de error de predicción contiene la información
sobre la señal de excitación, no predecible con un predictor corto. Aplicando el método de
autocorrelación sobre la señal error podemos disponer de otro método de detección de pitch. Este método,
conjuntamente con el método de la autocorrelación de la señal, se encuentran disponibles en el menú
Pitch del programa voclpc.m que utilizaremos en la realización práctica.
I.3. Excitación
La señal de excitación se genera a partir de la información de pitch y utilizando un modelos de pulso
glotal como el estudiado en la práctica 1 para el caso de sonidos sonoros. Al mismo tiempo que se genera
la señal de estímulo se genera una señal que marca las posiciones donde se inicia el pulso glotal en el caso
de segmentos sonoro s y posiciones uniformemente distribuidos en los segmentos sordos. Esta
información se necesita posteriormente para el proceso de interpolación de parámetros para el proceso de
filtrado.
En este punto se pueden introducir efectos interesantes sobre la señal de voz como pueden ser la
modificación de la frecuencia de pitch (aumentar o disminuir utilizando la misma variación de la
entonación), utilizar un pitch fijo (voz robótica), o utilizar otra fuente, como música, como señal de
excitación. El menú Estímulo del programa voclpc permite realizar este proceso.
I.4. Síntesis LPC: filtrado variante en el tiempo
Como ya es conocido por el alumno, la síntesis LPC utiliza el modelo digital de producción de la voz. El
filtro que modela el tracto vocal es un filtro todo-polos variante en el tiempo. Teóricamente, los
coeficientes del filtro deberían actualizarse muestra a muestra dado que el proceso de producción de voz
es un proceso continuo. En nuestro caso, en el proceso de análisis obtenemos una estimación del filtro
cada Td ms (típicamente de 10 a 15 ms). A la hora de sintetizar la señal, y para evitar transiciones muy
bruscas en la evolución espectral, realizaremos un proceso de interpolación del filtro de síntesis entre
segmentos de Td ms. En el caso de segmentos sonoros la actualización del filtro de síntesis lo
realizaremos en el instante de iniciarse un impulso glotal (instante de menor energía residual en el filtro) y
para los segmentos sordos cada Td / 5 ms. Los coeficientes del filtro se obtienen por un proceso de
interpolación lineal de los parámetros de dos segmentos consecutivos, tal y como se muestra en la figura
2.
Normalmente, el filtro de síntesis se realiza con una estructura tipo lattice que utilizan los coeficientes
parcor obtenidos del análisis LPC. El proceso de interpolación de parámetros se realiza directamente
sobre este conjunto de parámetros puesto que se garantiza la estabilidad del filtro. En nuestro caso, al
utilizar las facilidades de MATLAB en el que no está implementada esta estructura de filtro, utilizaremos
la función filter que está optimizada (función compilada) y permite una ejecución mas o menos rápida. A
la hora de realizar el filtrado, hay que almacenar el estado final del filtro antes de la actualización de
coeficientes para utilizarlo como condiciones iniciales para el siguiente segmento y así mantener la
continuidad en la señal. Cuando existe un cambio de sonoridad, se reinicializa las condiciones iniciales a
cero. Todo este proceso de síntesis LPC se realiza con la función parcorsy.m y en el menú síntesis del
programa voclpc.m.
k
T
a
n
k
n+1
Señal
estímulo
Instantes
actualización
coeficientes
filtro de síntesis
T
d
T
n
T
t
k t = (1 − α ) k n + αk n +1
α =
Tt − Tn
Td
Figura 2
I.5. Cuantificación Vectorial: transformación de la voz
Mediante la alteración de la señal de excitación del filtro de síntesis podemos modificar ciertas
propiedades de la señal de voz como la entonación y sexo, pero no podemos modificar cualidades
espectrales asociadas al tracto vocal como pueden ser edad y también sexo. Igualmente podemos querer
transformar la voz de una persona para que se asemeje a otra (voz de referencia). Para ello necesitamos
modificar las características espectrales de la señal. Un método sencillo es utilizando un cuantificador
vectorial. Generando un codebook representativo del espacio vectores espectrales de la voz de referencia,
podemos cuantificar vectorialmente los vectores espectrales de la señal de voz bajo análisis de forma que
a la hora de sintetizar utilizamos los vectores espectrales correspondientes a los codewords que mas se
asemejan a los analizados. El menú VQ del programa voclpc permite generar el codebook dado un
fichero. En este caso utilizaremos dos ficheros de voz, uno de referencia y otro para transformar con la
misma frase para que así el codebook sea representativo de los vectores espectrales de la frase. En un caso
general es proceso sería mas complicado, pues habría que definir clases de sonidos (p.e. alófonos ) y
realizar un proceso de clasificación.
II. Realización práctica
Para la realización de esta práctica utilizaremos el programa voclpc.m que permite realizar todos los
pasos de la práctica mediante un interface gráfico basado en menús.
II.1. Vocoder LPC
1.
Utilizando los fichero mujer.wav y hombre.wav, realizar todo el proceso de análisis y síntesis LPC
para cada una de las frases con los valores por defecto de los distintos parámetros del sistema.
Comparar los errores cometidos por los dos métodos de detección de pitch disponibles. Para cada
paso del proceso, ir visualizando las distintas señales (espectro LPC, pitch, sonoridad, excitación,
señal sintetizada, etc).
2.
Utilizando el sistema de grabación de sonidos, grabar una frase de vuestra invención y repetir el
apartado anterior.
3.
Seleccionar una de las señales y realizar el proceso de análisis y síntesis para otros valores de orden
del filtro de predicción (p.e. 6 y 12) y longitud (p.e. 20 y 50 ms.) y desplazamiento (p.e. 10 y 30 ms.)
de la ventana de análisis.
4.
Estudiar sobre la señal seleccionada la influencia del pulso glotal. Para ello realizar el proceso de
síntesis con diversos valores para el inicio y fin del pulso glotal (menu datos)
II.3. Transformaciones de la voz
5.
Transformación de la frecuencia de pitch.
a. En el menú de datos fijar el factor de modificación de pitch a un valor >1 para aumentarla
frecuencia y <1 para disminuirla.
b. En el menú de pitch seleccionar pitch fijo, dar un valor de pitch.
c. En el menú de estímulo seleccionar fichero, leer el fichero musica.wav que actuará como señal de
excitación.
6.
Transformación espectral.
a. En el menú VQ construir un codebook de transformación con 16 codewords con una de las
señales grabadas y utilizar la otra para realizar el análisis y síntesis LPC. Seleccionar en el menú
síntesis la opción filtrado con VQ.
b. Repetir el proceso anterior con codebooks de 8 y 32 codewords. Comentar las diferencias y
justificarlas.
Descargar