You are on page 1of 8

INSTITUTO TECNOLGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY CAMPUS ESTADO DE MXICO

Departamento de Mecatrnica

Ingeniera en Tecnologas Electrnicas

Anlisis de Seales y Sistemas TE2004

Proyecto 1. Reconocimiento y Representacin del S y del No en MatLab.

Rodolfo Amaury Prez Ruiz 1165708 Jorge Adrin Aguilar Martnez 1163335 Auri Susana Lpez Vargas 965619 Guillermo Laiseca Rodrguez 469388

Profesora Diana Alejandra Snchez Salas

Entrega: Viernes 4 de noviembre de 2011

RESUMEN

OBJETIVOS
Utilizando la herramienta de matlab y los conocimientos adquiridos en clase el alumno ser capaz de poder discriminar una seal tomada a partir de una grabacin de voz de un si y un no, a partir de su frecuencia.

INTRODUCCIN
Transformada rpida de Fourier FFT es la abreviatura usual (del ingls Fast Fourier Transform) de un eficiente algoritmo que permite calcular la transformada de Fourier discreta (DFT) y su inversa. La FFT es de gran importancia en una amplia variedad de aplicaciones, desde el tratamiento digital de seales y filtrado digital en general a la resolucin de ecuaciones diferenciales parciales o los algoritmos de multiplicacin rpida de grandes enteros. El algoritmo pone algunas limitaciones en la seal y en el espectro resultante. Filtro Electrnico Es un elemento que discrimina una determinada frecuencia o gama de frecuencias de una seal elctrica que pasa a travs de l, pudiendo modificar tanto su amplitud como su fase. Filtro Butterwoth Es uno de los filtros electrnicos ms bsicos, diseado para producir la respuesta ms plana que sea posible hasta la frecuencia de corte. En otras palabras, la salida se mantiene constante casi hasta la frecuencia de corte, luego disminuye a razn de 20n dB por dcada, donde n es el nmero de polos del filtro.

DESARROLLO
Implementacin del cdigo

Para la implementacin del cdigo primero capturamos el sonido en .wav. Utilizamos el reproductor de Windows Grabadora de sonidos. Esta aplicacin guarda los sonidos en formato .wma y para poder convertirlos en.wav descargamos un software llamado Format Factory.

Una vez obtenidos los sonidos si, no y nosi, los enviamos a la carpeta de Matlab donde implementamos el cdigo y utilizamos la funcin wavread para poder leerlos.

A nuestros tres sonidos les aplicamos la Transformada Rpidade Fourier (FFT). Para poder visualizar las tres transformadas, con la funcin abs()obtuvimos la magnitud en valor absoluto de la transformada y con la funcin unwrap(angle())obtuvimos la fase y as tener una grfica para cada transformada obteniendo magnitud vs. fase.

Luego aplicamos un filtro pasa bajas Butterworth a nuestro sonido nosi. Para esto guardamos la lectura de nuestro sonido con los argumentos f (para la frecuencia de corte) y el mismo sonido nosi. Para poder analizar nuestros resultados graficamos la forma de onda completa del sonido nosi con ayuda de la funcin subplot, la funcin plot y la funcin smallRangepara poder tomar pequeas muestras de la onda y tener una mejor visualizacin del comportamiento de sta en el tiempo. Tomamos como parmetro de nuestras muestras un tiempo de 100 milisegundos.

Para la implementacin del filtro nos auxiliamos de la funcin filtfilt. Esta funcin toma dos argumentos y un valor; como argumentos tomamos el resultado b y a de la funcin butter obtenida de la onda del sonido nosi, y como valor tomamos el orden del filtro. Para el orden del filtro tomamos 10 ya que es un filtor de orden superior y entre ms grande sea el orden del filtro ms se acerca al ideal. Para nuestra frecuencia de corte utilizamos la operacinfrecuencia = 8000/(f/2) ya que 8000Hz es la frecuencia de nuestra grabadora desonidos de Windows. Para que la

respuesta de nuestro filtro diera en Hz (ya que es un frecuencia lo queresulta) utilizamos la funcin freqz.

Forma de onda completa

Magnitud

Fase

Artculo
Using a new Discretization of the Fourier Transform to Discriminate Voiced From Unvoiced Speech Este artculo describe un trabajo de reconocimiento de voz a base de discriminacin de frecuencias. La clasificacin de frecuencias altas y bajas es posible gracias a la utilizacin de la transformada continua de Fourier discreta y la aplicacin de filtros, esto es en lo que el artculo se relaciona con el proyecto que elaboramos.

CONCLUSIONES
Se observa el barrido que hace MatLab para descomponer las distintas frecuencias que contiene la palabra Si y la palabra No. Se observa que se concentran las frecuencias altas para la palabra Si, en alrededor de los 35 000 Hz, mientras que se observa la concentracin de frecuencias para el No en frecuencias alrededor de los 15 000 Hz. Esto se debe a que los agudos son frecuencias ms altas que los graves.

FUENTES DE INFORMACIN
Proakis, J. G., & Manolakis, D. G. (1998). Tratamiento digital de seales, principios, algoritmos y aplicaciones (Tercera ed.). Madrid: PEARSON.
Universidad Michoacana de San Nicolas de Hidalgo Using a new Discretization of the Fourier Transform to Discriminate Voiced From Unvoiced Speech, July 2005.

Anexo %CAPTURA DE SONIDOS EN ARCHIVOS.WAV sonido_si = wavread('Si.wav'); sonido_no = wavread('No.wav'); nosi = wavread('Nosi.wav'); %APLICACIN DE LA FFT AL ARCHIVO .WAV transformada1 = fft(si); transformada2 = fft(sonido_no); transformada3 = fft(nosi); %SE GUARDA LA MAGNITUD Y LA FASE DE LA TRANSFORMADA magnitud1 = abs(transformada1); fase1 = unwrap(angle(transformada1)); magnitud2 = abs(transformada2); fase2 = unwrap(angle(transformada2)); magnitud3 = abs(transformada3); %SE GUARDA LA LECTURA EN nosi Y f [nosi, f] = wavread('nosi.wav'); %SE ESCUCHA LA GRABACIN wavplay(nosi, f);

%SE GRAFICA LA ONDA COMPLETA figure subplot(2,1,1), plot(nosi), title('Forma de Onda Completa'); smallRange = 100000:100000+floor(f/100); %SE GRAFICA UNA MUESTRA MUY PEQUEA DE LA GRFICA ANTERIOR subplot(2,1,2), plot(smallRange, nosi(smallRange)), title('100 millisegundos'); %SE GRAFICA EL FILTRO PASABAJAS("LOW") figure frecuencia = 8000 / (f/2); [b,a] = butter(10, frecuencia, 'low'); sinoBaja = filtfilt(b, a, nosi); freqz(b,a,128,f); %figure %subplot(2,1,1), plot(sinoBaja), title('E3'); %smallRange = 100000:100000+floor(f/100); %subplot(2,1,2), plot(smallRange, sinoBaja(smallRange)), title('100 milliseconds'); %SE GRAFICAN LAS MAGNITUDES Y LAS FASES DE LAS TRANSFORMADAS figure plot(magnitud1); xlabel('W'); ylabel('|x(jw)|'); title('Magnitud Sonido "Si"'); figure plot(fase1);

xlabel('W'); ylabel('ngulo'); title('Fase Sonido "Si"'); figure plot(magnitud2); xlabel('W'); ylabel('|x(jw)|'); title('Magnitud Sonido "No"'); figure plot(fase2); xlabel('W'); ylabel('Angulo'); title('Fase Sonido "No"'); figure plot(magnitud3); xlabel('Hz'); ylabel('|x(jw)|'); title('Magnitud Sonido "Si No"');

You might also like