Práctica 2

Anuncio
Prácticas de laboratorio
Práctica 2:
Análisis en el Dominio
del Tiempo
1. INTRODUCCIÓN
El objetivo de la práctica es programar funciones en C, dentro del
entorno LTVWIN, para el cálculo de parámetros temporales de la voz.
Concretamente:
•
•
•
Energía
Densidad de Cruces por Cero
Autocorrelación.
Estas funciones se aplicarán sobre señales reales con el objetivo de
evaluar los resultados con diferentes parámetros de cálculo (tamaño de
las ventanas, desplazamiento, etc...)
Las funciones de energía y densidad de cruces por cero se evalúan
por ventanas solapadas temporalmente. Además, el entorno presupone
que las ventanas se encuentran centradas, es decir, el resultado se
asocia al instante temporal del centro de la ventana. La siguiente figura
aclara estas ideas:
Fco Javier Molina Cantero
Pag. 1
1.1 Cálculo de la ENERGÍA INSTANTÁNEA
En el cálculo de la energía, utilice la siguiente expresión:
1 L/2
2
En = ∑ s(n + i )
L i = − L/2
Al dividir por L se reduce el rango de valores que se alcanza con esta
función, que podría desbordar el formato FLOAT si el tamaño de la
ventana utilizada es my grande. La función a programar es la siguiente:
FICHERO: AnalisisTemporal.cpp
VOZDLL_API long Energia(DataIn,DataOut,NumDatosIn, LonVent,
DespVent)
float * DataIn;
float *DataOut;
long NumDatIn;
long LonVent;
{
}
Pag. 2
long DespVent;
return XXX;
// Array con los datos de audio
// Array con los resultados
// Número de datos de entrada
// Tamaño de las ventanas de
análisis
// Desplazamiento entre ventanas
// La función debe devolver el
número de datos del array de salida
1.2 Cálculo de la DENSIDAD DE CRUCES POR CERO
La densidad de cruces por cero se evaluará contabilizando los
cambios de signo de los datos a lo largo de la ventana.
D=
C. Signo
L
La función a programar es la siguiente:
FICHERO: AnalisisTemporal.cpp
VOZDLL_API long Ceros(DataIn,DataOut,NumDatosIn, LonVent,
DespVent)
float * DataIn;
float *DataOut;
long NumDatIn;
long LonVent;
{
// Array con los datos de audio
// Array con los resultados
// Número de datos de entrada
// Tamaño de las ventanas de
análisis
// Desplazamiento entre ventanas
long DespVent;
return XXX;
// La función debe devolver el
número de datos del array de salida
}
1.2 Cálculo de la AUTOCORRELACIÓN
El cálculo de la función de autocorrelación se realizará sobre la
ventana de tamaño M que se define mediante las marcas de selección
del visor de señales. Por tanto, ES NECESARIO QUE SELECCIONE
UNA VENTANA con el editor continuo de señales. Para el cálculo, utilice
la definición que ofrece la siguiente ecuación:
Rn (k ) =
M − 1− k
∑ x(n + m) ⋅ x(n + m + k )
m= 0
k ∈ [0, NCoef ]
donde:
n es el índice donde comienza la ventana
M es el tamaño de la ventana
k es el desplazamiento
NCoef es el número de coeficientes a calcular
Fco Javier Molina Cantero
Pag. 3
La función a programar es:
FICHERO: AnalisisTemporal.cpp
VOZDLL_API long AutoCorrelacion(DataIn,NumDat,DataOut,Inicio,
LongVentana,NumCoef)
float *DataIn;
// Array con los datos de audio
long NumDat;
// Número total de datos en DataIn
float *DataOut;
// Array con los resultados
long Inicio;
// Índice del primer dato de la
ventana de análisis
long LongVentana;
// Número de datos de la ventana de
análisis
long NumCoef;
// Número de coeficientes a calcular
{
return NumCoef;
// Debe devolver el número de
coeficientes calculados
}
Pag. 4
2. CUESTIONES
1. Aplique la función de Energía sobre el fichero Buenos.wav.
Compruebe si las ventanas que ha programado están centradas.
Utilice para ello un valor de desplazamiento pequeño.
2. Aplique también la función de densidad de cruces por ceros y
responda a las siguientes preguntas:
A) ¿A qué tipo de sonidos corresponden las regiones donde la la
energía es alta y la densidad de cruces por cero baja?.
Compruébelo marcando estas zonas y escuchando el audio.
B) ¿Y aquellas regiones donde la densidad de cruces es alta y la
energía baja?. Compruébelo también.
C) Verifique si existe algún otro tipo de zona. ¿De qué tipo sería?
D) Compruebe y justifique cómo cambian las curvas de energía y
Densidad de cruces al modificar el tamaño de las ventanas de
análisis.
3. Seleccione una ventana en el editor de señales, y ejecute el cálculo
de la función de autocorrelación. Cambie la ventana de prueba
seleccionando diversos tamaños, y conteste a las cuestiones que se
plantean:
A) Si la región seleccionada posee baja energía y alta densidad de
cruces por cero, cuál es la forma de la función de autocorrelación
resultante.
B) Si por el contrario la región elegida es de alta energía y baja
densidad de cruces por cero, cómo resulta la curva.
C) Estime a partir de la densidad de cruces por cero, el PITCH o
tono fundamental de la voz del tramo seleccionado.
D) ¿Cuántos coeficientes deben ser seleccionados, como mínimo,
para estimar el PITCH con la señal de prueba?. ¿Y en general?
E) ¿Qué tamaño mínimo de ventana necesita definir para analizar
P coeficientes?.
Fco Javier Molina Cantero
Pag. 5
Descargar