• No se han encontrado resultados

Práctica 3: Análisis en el Dominio Espectral

N/A
N/A
Protected

Academic year: 2021

Share "Práctica 3: Análisis en el Dominio Espectral"

Copied!
8
0
0

Texto completo

(1)

Prácticas de laboratorio

Práctica 3:

Análisis en el Dominio

Espectral

1. INTRODUCCIÓN

El objetivo de la práctica es programar funciones en C, dentro del entorno LTVWIN, para la estimación espectral de la voz y la extracción de información por varios métodos. En concreto:

Estimación espectral basada en la FFT Estimación espectral mediante análisis LPC

Cálculo de las frecuencias fundamental y formantes.

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...). Podrán emplearse dos tipos de ventana: rectangular y de Hamming.

(2)

Los dos tipos de ventana que se emplearán en la estimación espectral son la rectangular y la de Hamming. Las ecuaciones que las definen son las siguientes:

El entorno LTVWin llamará a la siguiente función para que construya la ventana de análisis cuando se seleccione el tipo de ventana o al cambiar su tamaño.. Prográmela con el siguiente prototipo:

FICHERO: AnalisisEspectral.cpp

VOZDLL_API long TipoVentana( tipo, float *v, ndatos)

int tipo; // 0 - Rectangular 1 - Hamming float *v; // Array donde se construye la ventana int ndatos; // Tamaño de la ventana

{

return ndatos; // Devuelve el tamaño de la ventana }

(3)

1.2 Estimación espectral mediante la FFT - Fast Fourier Transform

El cálculo espectral basado en FFT es un método genérico de estimación del espectro de una señal cualquiera sin utilizar ningún modelo o conocimiento previo de su naturaleza. Para su programación, los pasos que deben seguirse son:

• Aplicar el tipo de ventana seleccionada (se recomienda la de Hamming)

• Calcular la FFT

• Estimar el módulo de cada una de las componentes complejas de la transformada:

Para resolver este ejercicio dispondrá del algoritmo FFT ya programado con el siguiente prototipo:

void FFT(real, imag, Npuntos)

float *real, *imag; // Arrays de datos

Int Npuntos; // Tamaño de la ventana Las condiciones de uso de esta función son tres:

• Los resultados se devuelven sobre los mismos arrays de entrada:

real e imag.

• El tamaño máximo de los arrays es 4096

• El tamaño de los arrays debe ser una potencia de 2.

Programe la función para la estimación espectral con el siguiente prototipo:

FICHERO: AnalisisEspectral.cpp

VOZDLL_API void EnergiaFFT(data, npuntos, energia)

float *data; // Datos del audio

(4)

1.3 Estimación espectral mediante análisis LPC

La estimación espectral LPC propone un modelo de producción de voz lineal y predictivo, a partir del cual podemos separar la señal de excitación de los efectos producidos por el tracto vocal (resonancias). Esta separación permite una mejora en la estimación de las propiedades de una y de otra. Dicho modelo se muestra en la figura:

En este apartado pretendemos obtener la envolvente LPC del espectro, o lo que en teoría, correspondería a las propiedades debidas a las resonancias en el tracto vocal. Siguiendo el método de correlación estudiado en teoría, los pasos a programar son los que se indican: Seleccionada una ventana de longitud L:

1. Calcular P+1 coeficientes de autocorrelación

2. Utilizando los coeficientes calculados, se resuelve la matriz tipo Topelitz.:

(5)

Como puede apreciarse, esta matriz contiene de dorma simétrica los p+1 coeficientes de autocorrelación previamente calculados:

n n n

Ö (0), Ö (1),... Ö (p),

El método Levison-Durbin explota la simetría de la matriz para optimizar las operaciones. Con el prototipo que se indica, en la práctica ya dispone de dicho algoritmo programado:

int MetodoDurbin(float *A, float *LPC_coef, int P)

// Calcula los coeficientes LPC y devuelve el número de // coeficientes realmente calculados

float *A; // Vector con los P+1 coeficientes de

n n

//autocorrelación Ö (0), ... Ö (p) float *LPC_coef; // Devuelve los coeficientes LPC

int P; // Número de coeficientes del vector de // Autocorrelación

3. Con los coeficientes (LPC) se construye la secuencia:

2.

4. Se aplica la FFT a dicha secuencia con la resolución o tamaño de ventana que se desee (npuede ser diferente de L)

5. Se calcula la operación:

• Donde G es la Ganancia o volumen del tracto vocal. Su valor podemos estimarlo siguiendo el algoritmo de XXX por el cual:

(6)

Programe la función con el siguiente prototipo

1.4 Estimación de los primeros formantes.

Localizar los primeros formantes puede facilitar la clasificación del sonido emitido. Programe una función para localizar los tres primeros máximos a partir de la envolvente obtenida del apartado anterior. Utilice el siguiente prototipo:

El entorno mostrará sobre el analizador espectral los valores F1, F2 y F3.

FICHERO: AnalisisEspectral.cpp

VOZDLL_API void EspectroLPC(float *data, int npuntos, int ncoef,\ float *envolvente, int puntosEnvolvente)

// Calcula la envolvente LPC del espectro float *data; // Datos de audio

int npuntos; // Tamaño de la ventana de análisis int P; // Número de coeficientes a calcular float *envolvente; // Array con el resultado de la envolvente

// espectral LPC

int puntosEnvolvente; // Número de puntos con los que trazar // la envolvente

{

// No devuelve nada }

FICHERO: AnalisisEspectral.cpp

VOZDLL_API void Formantes(env, envPoints, F0, F1, F2, fm) float *env; // Array con la envolvente espectral int envPoints; // Número de puntos de la envolvente int *F0;

int *F1;

int *F2; // Punteros donde se devuelven los datos // calculados

float fm; // Frecuencia de muestreo {

// No devuelve nada }

(7)

2. CUESTIONES

Para comprobar el comportamiento de la FFT como herramienta de análisis espectral, se han incluido ficheros:

onda_150_450_1225.wav Compuesta por señales de 150 Hz, 450Hz y 1225Hz

onda_150_250_1225.wav Compuesta por señales de 150 Hz, 250Hz y 1225 Hz

Compruebe la exactitud con la que la FFT mide la frecuencia de las señales de prueba contestando las siguientes cuestiones:

1) ¿Cual es el paso mínimo que se mide con el analizador?. Justifique si este valor se debe al número de puntos de la ventana de análisis o a la resolución de la presentación en pantalla.

2) Mida la composición de la señal onda_150_450_1225 empleando la FFT partiendo de los siguientes parámetros de análisis:

Tamaño de la ventana 250

Desplazamiento 32

Tipo de ventana Hamming

a) Aumente el tamaño de la ventana, y justifique por qué algunas frecuencias de la señal se observan más claramente que otras. b) Repita las medidas empleando el espectro LPC y la búsqueda de

los tres primeros máximos.

c) Aumente el número de coeficientes LPC hasta 40, y compruebe el comportamiento del algoritmo de búsqueda de los máximos espectrales. Modifíquelo como crea más apropiado.

d) Utilizando las señales mezcladas y teniendo en cuenta los resultados anteriores, analice los capacidad de la FFT para separar las frecuencias componentes de la señal.

6) Utilice ahora la señal onda_150_250_1525.wav, y partiendo de un tamaño de ventana de 128, y de 20 coeficientes LPC, compruebe la capacidad de separación de frecuencias formantes de los métodos FFT y LPC. Aumente el tamaño hasta un máximo de 2048.

(8)

El resultado anterior demuestra que la resolución del análisis LPC depende del número de coeficientes. Para análisis de señales de voz se acepta como regla empírica la siguiente:

• Un coeficiente por KHz de la frecuencia de muestreo • Dos más por cada formante a localizar

Utilice esta regla analizando los ficheros de voz incluidos en la carpeta AUDIOGENERAL.

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

De hecho, este sometimiento periódico al voto, esta decisión periódica de los electores sobre la gestión ha sido uno de los componentes teóricos más interesantes de la

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Actualmente y desde hace unos años se está estudiando la manera de controlar en tiempo real el estado de la estructura (conocida como monitorización de salud estructural o SHM por