Trabajo Práctico Nro. 1
 Introducción al Modelado, Predicción y Síntesis de Señales de 
Voz 
- Objetivos
Al finalizar el Trabajo Práctico usted debería ser capaz de:
- Usar ecuaciones en diferencias para modelar, procesar y sintetizar 
señales de voz.
 
- Usar Matlab para simular la respuesta temporal de modelos en ecuaciones 
en diferencias usados en predicción, procesamiento y síntesis de voz.
 
- Ingresar archivos de sonido (en particular de señales de voz) en formato 
WAV (formato de sonido WAVE de Microsoft) al espacio de trabajo de Matlab, 
mediante el comando wavread. 
 
- Usar Matlab para crear archivos de sonido WAV mediante el comando 
wavwrite.
 
- Usar Matlab para reproducir archivos de sonido mediante el comando  
sound. 
 
- Usar Matlab para representar señales de voz en el dominio tiempo (formas 
de onda), mediante los comandos plot, y en el dominio tiempo-frecuencia 
(espectrogramas), mediante el comando specgram. 
 
- Usar Matlab para sintetizar palabras aisladas y sonidos simples con modelos 
LPC del tracto vocal.
 
 
- Problemas propuestos
- Síntesis de palabras aisladas 
- Mediante el comando wavread, ingrese al espacio de trabajo de 
Matlab el archivo Juan_Carlos_cuadro.wav, que contiene un cuadro del segmento de
voz contenido en el archivo Juan_Carlos.wav. Este archivo contiene un sonido 
correspondiente a la vocal /a/ cantada por J.C.G.
 
- Implemente un algoritmo para la determinación el período aproximado de la 
señal, usando FFT o correlación.
 
- Mediante el uso del comando lpc determine los coeficientes de 
predicción lineal que parametrizan el modelo LPC del tracto vocal.
 
- Sintetice el sonido correspondiente al cuadro haciendo uso del modelo LPC 
estimado para construir un filtro al cual deberá excitar con un tren de impulsos 
de la frecuencia determinada en 2. Para generar el tren de impulsos puede hacer 
uso de la función tren_impulsos2.m. 
 
- Sintetice un segmento de voz de la duración correspondiente al del archivo
Juan_Carlos.wav, repitiendo periódicamente la señal sintetizada 
en 4. 
 
- Compare auditivamente y gráficamente (forma de onda) la señal 
sintetizada en el punto anterior con la correspondiente al archivo 
Juan_Carlos.wav. Para reproducir un archivo .wav desde Matlab 
deberá hacer uso de los comandos sound, o soundsc.
 
- Escriba una función Matlab que permita separar en cuadros de longitud 
determinada un segmento de voz. Para esto puede modificar la función 
rowblock.
 
- Separe en cuadros el segmento de voz contenido en el archivo 
Juan_Carlos.wav, y repita los puntos 2. a 5. para cada cuadro de este 
segmento de voz.
 
- Compare auditivamente y gráficamente (forma de onda) la señal 
sintetizada en el punto anterior con la correspondiente al archivo 
Juan_Carlos.wav.
 
-  Sintetize la palabra /bienvenido/ contenida en el archivo 
tp1_2.wav. Para esto puede usar la función lpc_frames. 
Esta función segmenta en cuadros, estima los coeficientes LPC del modelo del 
tracto vocal en cada cuadro, estima la frecuencia de excitación del modelo LPC 
usando FFT, filtra el tren de impulsos con un modelo exponencial 
de la glotis, y escala la señal sintetizada en cada cuadro de acuerdo a 
la energía de la señal original en dicho cuadro. 
 
 
- Síntesis de un trozo musical
El objetivo de esta sección es sintetizar un trozo musical usando los coeficientes 
LPC del modelo de tracto vocal obtenidos del segmento de voz contenido en el archivo
Juan_Carlos_cuadro.wav.
- Notación Musical
 
- Relación entre la altura de la nota y la frecuencia
 
Se propone sintetizar el siguiente trozo de música que corresponde a los primeros 
compases del Hallelujah Chorus del Oratorio Messiah de G. F. Handel.
La obra se estrenó en Dublin en 1742. A partir de 1750, Messiah se interpretó en
funciones anuales a beneficio del Foundling Hospital, una organización londinense
de caridad que se ocupaba de los niños huérfanos, a la cual Handel estuvo 
vinculado hasta su fallecimiento en 1759. En su testamento, Handel legó los 
derechos de autor de la obra al Foundling Hospital.
 Las cuatro líneas corresponden 
a las voces de soprano, alto, tenor y bajo. 
Para realizar la síntesis puede utilizar 
las funciones nota, que genera un tren de pulsos con la frecuencia y 
la duración de la nota deseada y silencio que genera silencios de 
duración deseada
   
 
 - Archivos Matlab
- Generador de Tren de Impulsos Unitarios. (Matlab-function 
tren_impulsos2.m )
 
- Generador de Tren de Pulsos de Glotis (modelo 
exponencial).(Matlab-function glottal_pulse.m)
 
- Row Operator: Operador que pone los bloques fila de una matriz uno 
al lado del otro. (Matlab-function rowblock.m )
 
- Vec Operator: Operador que pone los bloques columna de una matriz, 
uno debajo del otro. (Matlab-function colblock.m)
 
- Programa para síntesis de una palabra (Separa en frames, determina 
frecuencia de cada frame, escala la señal sintetizada de acuerdo a la energía 
de cada frame)(Matlab-script lpc_frames)
 
- Función nota.  
 
- Función silencio.  
 
 
- Archivos de Sonido (.wav)
 
Juan Carlos Gómez, Octubre de 2004