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.