Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
MUESTREO DE VOZ INTRODUCCION: En el presente documento veremos la transformada de Fourier (discreta) mediante MatLab, con el comando FFT. Como se va a trabajar trabajar en el el dominio de las frecuencias, podremos analizar y observar los diferentes espectros de frecuencias y modificar la señal para luego filtrar con el filtro digital Butterworth(n, Wn).
OBJETIVOS: Se propuso los siguientes objetivos para el desarrollo del proyecto. Verificar
y analizar las características más importantes de las señales de sonido y audio.
Aplicar
la transformada discreta de Fourier para analizar el espectro de frecuencia de la señal de audio.
Demostrar
las aplicaciones de la transformada de Fourier.
Implementar
todos los conocimientos adquiridos en la materia a través del semestre transcurrido.
Diseñar
y desarrollar el software para el presente proyecto.
MARCO TEORICO: La Transformada de Fourier es una herramienta matemática que tiene un uso muy amplio en lo referente al tratamiento digital de señales, se encuentra implementada bajo la forma de dispositivos electrónicos de reconocimiento de voz e imagen; puede ser aplicada a varios campos como análisis espectral, ecuaciones diferenciales, resolución de problemas elásticos estacionarios y dinámicos, etc. El presente trabajo, enlaza los aspectos teóricos con la aplicación práctica de la Transformada de Fourier en el procesamiento digital de SEÑALES mediante el desa desarr rrol ollo lo de aplic plicac acio ion nes que que impl implem emen enta tan n los alg algorit oritm mos de la Transformada Discreta de Fourier,
13
Universitario: Apaza Díaz Yorcy Email:
[email protected] [email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
Importancia
El desarrollo matemático de la transformada de Fourier fue explicado por Jean Baptiste Joseph Fourier, en su libro la Teoría Analítica del Calor, publicado en 1822; posteriormente, en 1965 Cooley y Tukey publicaron su artículo “Un algoritmo para calcular las Series de Fourier Complejas”, el cual es conocido como algoritmo FFT (Fast Fourier Transform) y que con el desarrollo acelerado de las computadoras digitales ha permitido la aplicación de la FFT a diferentes campos. Su aplicación al procesamiento de imágenes se encuentra documentado en los libros específicos sobre la materia a un nivel teórico, en los que no se expone directamente, la forma de implementación de los diferentes algoritmos, y en el mejor de los casos presentan una descripción narrativa del algoritmo, como ejemplo se puede revisar el libro Digital Image Processing de González y Woods. Por otra parte, los libros específicos sobre la Transformada Rápida de Fourier, se centran su aplicación mayormente a la fundamentación matemática y explicación de los algoritmos, presentando aplicaciones más orientadas al Procesamiento Digital de Señales, que corresponde al campo de la Electrónica. Transformada Discreta de Fourier: En matemáticas, la transformada discreta de Fourier o DFT (del inglés, discrete Fourier transform) es un tipo de transformada discreta utilizada en el análisis de Fourier. Transforma una función matemática en otra, obteniendo una representación en el dominio de la frecuencia, siendo la función original una función en el dominio del tiempo. Pero la DFT requiere que la función de entrada sea una secuencia discreta y de duración finita. Dichas secuencias se suelen generar a partir del muestreo de una función continua, como puede ser la voz humana. Al contrario que la transformada de Fourier en tiempo discreto (DTFT), esta transformación únicamente evalúa suficientes componentes frecuenciales para reconstruir el segmento finito que se analiza. Utilizar la DFT implica que el segmento que se analiza es un único período de una señal períodica que se extiende de forma infinita; si esto no se cumple, se debe utilizar una ventana para reducir los espúreos del espectro. Por la misma razón, la DFT inversa (IDFT) no puede reproducir el dominio del tiempo completo, a no ser que la entrada sea periódica indefinidamente. Por estas razones, se dice que la DFT es una transformada de Fourier para análisis de señales de tiempo discreto y dominio finito. Las funciones sinusoidales base que surgen de la descomposición tienen las mismas propiedades. La entrada de la DFT es una secuencia finita de números reales o complejos, de modo que es ideal para procesar información almacenada en soportes digitales. En particular, la DFT se utiliza comúnmente en procesado digital de señales y otros campos relacionados dedicados a analizar las frecuencias que contiene una señal muestreada, también pa ra resolver ecuaciones diferenciales parciales, y para llevar a cabo operaciones como convoluciones o multiplicaciones de enteros largos. Un factor muy importante para este tipo de aplicaciones es que la DFT puede ser calculada
13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
de forma eficiente en la práctica utilizando el algoritmo de la transformada rápida de Fourier o FFT (Fast Fourier Transform). Los algoritmos FFT se utilizan tan habitualmente para calcular DFTs que el término "FFT" muchas veces se utiliza en lugar de "DFT" en lenguaje coloquial. Formalmente, hay una diferencia clara: "DFT" hace alusión a una transformación o función matemática, independientemente de cómo se calcule, mientras que "FFT" se refiere a una familia específica de algoritmos para calcular DFTs. Definición
La secuencia de N números complejos x 0, ..., x N −1 se transforma en la secuencia de N números complejos X 0, ..., X N −1 mediante la DFT con la fórmula:
donde i es la unidad imaginaria y es la N-ésima raíz de la unidad. (Esta expresión se puede escribir también en términos de una matriz DFT; cuando se escala de forma apropiada se convierte en una matriz unitaria y X k puede entonces ser interpretado como los coeficientes de x en una base ortonormal.) La transformada se denota a veces por el símbolo .
, igual que en
o
o
La transformada inversa de Fourier discreta (IDFT) viene dada por
Una descripción simple de estas ecuaciones es que los números complejos X k representan la amplitud y fase de diferentes componentes sinusoidales de la señal de entrada x n. La DFT calcula X k a partir de x n, mientras que la IDFT muestra cómo calcular x n como la suma de componentes sinusoidales con una frecuencia de k / N ciclos por muestra. Escribiendo las ecuaciones de este modo, estamos haciendo un uso extensivo de la fórmula de Euler para expresar sinusoides en términos de exponentes complejas, lo cual es mucho más sencillo de manipular. Del mismo modo, escribiendo X k en forma polar , obtenemos una sinudoide de amplitud Ak / N y fase ϕk a partir del módulo y argumento complejos de X k, respectivamente:
donde atan2 es la forma bi-argumental de la función arcotangente. Nótese que el factor de normalización que multiplica a la DFT y la IDFT (que son 1 y 1/ N ) y los signos de los exponentes se colocan meramente por convenio, y varían dependiendo de la aplicación. El único requisito para este convenio es que la DFT y la IDFT tengan exponentes de signo opuesto y que el producto de 13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
sus factores de normalización sea 1/ N . Una normalización de para ambas DFT y IDFT hace las transformadas unitarias, lo cual tiene ciertas ventajas teóricas, pero suele ser más práctico a la hora de efectuar operaciones numéricas con el ordenador efectuar el escalado de una sóla vez (y un escalado unitario suele ser conveniente en otras ocasiones). (El convenio del signo negativo en el exponente suele ser adecuado porque significa que X k es la amplitud de una "frecuencia positiva" 2πk / N . De forma equivalente, la DFT se suele considerar como un filtro adaptado: cuando se busca una frecuencia de +1, se correla la señal de entrada con una frecuencia de −1.) En adelante, los términos "secuencia" y "vector" serán considerados equivalentes.
Filtro digital:
Como regla general, cualquier algoritmo o sistema de tratamiento puede interpretarse como un filtro. Aquí se entiende por filtro aquel sistema lineal e invariante que permite el paso de las componentes de la señal existentes en un determinado intervalo frecuencial, y elimina las demás. De forma ideal, el módulo de la respuesta frecuencial del filtro toma un valor constante en el margen de frecuencias que queremos conservar, que se denomina banda de paso. El intervalo de frecuencias complementario al anterior en que la respuesta en magnitud es nula se denomina banda de rechazo o atenuada. La banda de transición es aquella que se sitúa entre dos bandas cuyas atenuaciones están especificada, por tanto, se caracteriza porque no imponemos al filtro ningún requisito en dicho intervalo frecuencial dando libertad de esa forma al diseño del filtro siempre y cuando se cumplan los requisitos impuestos en la banda de paso y de rechazo. Los cuatro filtros básicos, desde el punto de vista ideal del comportamiento del módulo de la respuesta frecuencial, según sea la posición relativa de bandas de paso y bandas atenuadas, reciben el nombre de paso bajo, paso alto, paso banda y elimina banda, dependiendo de la parte del espectro de frecuencias en la que se centra la banda de paso. Por ejemplo, el paso bajo se caracteriza porque deja pasar todas las componentes frecuenciales de la señal en el rango bajo de las Frecuencias, por debajo de una determinada frecuencia de corte, siendo el resto de componentes atenuadas por el filtro. Es el típico filtro que en amplificación se emplea en una etapa previa al amplificador para que el ruido no se amplifique y llegue a saturar al mismo. El filtro paso alto presenta el comportamiento complementario al paso bajo; el filtro paso banda cancela las bajas y las altas frecuencias (bandas atenuadas inferior y superior), y conserva una banda determinada de frecuencias; el último, presenta bandas de paso en baja y alta frecuencia, y una banda atenuada en un margen de frecuencias intermedio. 13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
En resumen los filtros más importantes son estos: •
•
•
Filtro paso bajo: atenúa las frecuencias altas y mantiene sin variaciones las
bajas. El resultado en el dominio espacial es equivalente al de un filtro de suavizado, donde las altas frecuencias que son filtradas se corresponden con los cambios fuertes de intensidad. Consigue reducir el ruido suavizando las transiciones existentes. Filtro paso alto: atenúa las frecuencias bajas manteniendo invariables las frecuencias altas. Puesto que las altas frecuencias corresponden en las imágenes a cambios bruscos de densidad, este tipo de filtros es usado, porque entre otras ventajas, ofrece mejoras en la detección de bordes en el dominio espacial, ya que estos contienen gran cantidad de dichas frecuencias. Refuerza los contrastes que se encuentran en la imagen. Filtro paso banda: atenúa frecuencias muy altas o muy bajas manteniendo una banda de rango medio.
Filtro Butterworth:
En diversas aplicaciones de los filtros pasa bajas se necesita que la ganancia en lazo cerrado se aproxime lo más posible a 1 dentro de la banda de paso. Para este tipo de aplicación lo mejor es el filtro Butterworth. A este tipo de filtro también se le conoce como filtro máximamente plano o planoplano. Los filtros Butterworth no se diseñan para mantener un ángulo de fase constante en la frecuencia de corte. EI filtro pasa bajas básico de 20 dB/década tiene un ángulo de fase de 45º en la frecuencia wc. EI filtro Butterworth de 40 dB/década tiene un ángulo de fase de 90º en cl valor wc y el filtro de 60 dB/década tiene un ángulo de fase de 135º en wc. Por lo tanto, por cada aumento de 20 dB/década, el ángulo de fase aumenta en 45º en cl valor wc. Características: • Tiene una respuesta máximalmente plana en f = 0 y f = 1. • Banda de transición es relativamente ancha.
Fig 3: Filtro Butterworth. 13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
Técnica de diseño del Filtro Pasa bajos Butterworth. La técnica que emplearemos será la de diseñar un filtro Butterworth analógicamente, seguido de una transformación del plano s al z. Los parámetros con las especificaciones de diseño los podemos encontrar en la fi Partimos de un prototipo de filtro pasabajos normalizado en el que usamos una frecuencia w normalizada. Para otro tipo de filtro se requerirá la consiguiente transformación de frecuencia. Para este tipo de filtro pasabajos normalizado la función de transferencia es: donde es un polinomio de grado n. El objetivo del diseño de un filtro es encontrar que mejor cumple la especificaciones. Para ello se utilizan algunas aproximaciones. 3.2.1 Aproximación de Butterworth.: Existen 4 etapas de diseño: Normalizar la frecuencia de acuerdo a las especificaciones. Determinar el orden del prototipo de filtro pasabajos. Determinar la función de transferencia normalizada. Desnormalizar a través de las transformaciones en frecuencia en 3. y 1. Aproximación de Butterworth:
Consiste en hacer .Esta aproximacion es tal que: Por lo tanto: Normalizaremos las frecuencias por la frecuencia limite de pasabanda fp, de forma que y
A partir de y , podemos calcular los valores de y n. 3.2.2.- Ejemplo: Diseñar un filtro de Butterworth de pasabajos con las siguientes especificaciones: Una atenuación de pasabanda que sea menor a 1dB a , una atenuación de parabanda que sea mayor a 20dB para Desarrollo: Frecuencia normalizada:
Tomaremos como orden del filtro el entero más cercano, en este caso n=5 Filtro de Butterworth normalizado: Se normaliza respecto a la frecuencia .
Función de transferencia normalizada: Se trata de determinar a partir de . -Reemplazamos w2N por -s2.
13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
-Los polos los calculamos de: Estos resultados muestran que: Los polos normalizados están sobre un circulo de radio 1 en el plano s. Los polos están equidistantes a radianes con donde • •
se mide con respecto al eje positivo jw. Los polos nunca estarán sobre el eje jw. Si n es impar, siempre hay un par de polos reales en
FUNCIONAMIENTO: El funcionamiento y la sintaxis usada en el proyecto se lo describe con detalle aquí. %Programa graba una voz en matlab, y la mezcla con un tono luego %con un filtro le quita el ruido y queda la voz limpia. %proyecto final. clear all clc tiempoReg = 5; %-Periodo de la grabación fs = 44100; %-Frecuencia de muestreo NO MODIFICAR farm = 200; %-Frecuencia fundamental samples = fs*tiempoReg; %-Num de muestras display('************ ================================== **************'); display('************ MENU DE OPCIONES DE SEÑAL DE AUDIO **************'); display('****-------------- SISTEMAS LINALES I --------------------****'); display('**************** UNIV.:YORCY APAZA DIAZ **********************'); display('************ ===== PROYECTO FINAL ===== **********************'); display('.'); display('a) Muestreo de voz'); display('b) Recuperar una muestra de voz ya grabada'); display('c) Leer el archivo de sonido.wap'); display('.'); opcion=input('Elija una opción xfavor: '); %debes oprimir una tecla if (opcion=='a'||opcion=='A') display('.'); display('Se muestreará a 44100Hz por 5 segundos'); input('Presiona cualquier tecla para empezar a grabar'); signal = wavrecord (samples,fs,1,'double'); display('.'); input('Presiona cualquier tecla para reproducir lo grabado'); wavplay ( signal,fs) %Para escuchar lo grabado display('.'); display('El registro de voz quedará en un archivo de disco: “voz.dat”'); [fid,message] = fopen ('voz.dat','wt'); fprintf(fid,'%f\n',signal); 13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
fclose(fid); elseif (opcion=='b'||opcion=='B') %deberás oprimir b o B display('.'); display('Se tomará una frase ya grabada en disco') load voz.dat %Crea la variable vozQ12 signal=voz; clear voz; opcion=input('para escuchar el archivo oprima S:'); if (opcion=='s'||opcion=='S') wavplay ( signal,fs) %Para escuchar lo grabado end elseif (opcion=='c'||opcion=='C') %deberás oprimir b o B display('.'); display('Se leera un archivo.wap en el disco') [y FS]=wavread('chimes.wav'); %yy=5*y(:,1); signal=y; clear y; opcion=input('para escuchar el archivo oprima M:'); if (opcion=='m'||opcion=='M') wavplay ( signal,fs) %Para escuchar lo grabado end else display('Error..! Argumentos incorrectos'); break end %******************************************************** % señal: oscilograma y espectro % % VARIABLES % signal : contiene oscilograma % signalw : contiene espectro % frecDomain : contiene dominio frecuencia %******************************************************** display('.'); display('*******************=============================***************' ); display('****************** SEÑAL: oscilograma y espectro **************'); display('*******************=============================***************' ); display('.'); display('Presione ENTER para observar el oscilograma y el espectro'); input('de la señal de voz'); %subplot(2,2,1); plot(Y); %subplot(2,2,2); plot(YY);
13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
figure(1); plot(signal); title('Oscilograma de la señal de voz'); ylabel('Amplitud'); signalw=fft(signal,samples); %Cálculo de la DFT frecDomain=fs*(0:samples-1)/samples; %Dominio de la frecuencia en Hz figure(2);plot(frecDomain(400:44100),abs(signalw(400:44100)));%exhibición del espectro title('Espectro de la señal de voz'); display('.'); display('****************=====================================*********** '); display('*************** SEÑAL + RUIDO: oscilograma y espectro **********'); display('****************=====================================*********** '); display('.'); display('Presione ENTER para observar el oscilograma y el espectro'); input('de la señal + ruido'); t=(0:1/fs:tiempoReg); t=t(1:samples); % signall es la señal de entrada pero monofonico signall=6*signal(:,1); % en la variable u se almacena el tamaño de la señal de entrada u=length(signall); % se genera un ruido de dimencion n igual a signall ruido=0.8*rand(u,1); %ruido=0.01*sin(2*pi*farm*t); noisySignal = (signall + ruido); figure(3);plot(noisySignal(1:samples)); title('Oscilograma de la señal + ruido'); ylabel('Amplitud'); noisySignalw=fft(noisySignal,samples); %Cálculo de la DFT frecDomain=fs*(0:samples-1)/samples; %Dominio de la frecuencia en Hz figure(4);plot(frecDomain(400:44100),abs(noisySignalw(400:44100))); %exhibición del espectro title('Espectro de la señal + ruido'); ylabel('Amplitud'); xlabel('Frecuencia en Hz'); opcion=input('Desea escuchar el archivo de la señal+ruido? oprima P: '); if (opcion=='p'|| opcion=='P') wavplay ( noisySignal,fs) %Para escuchar lo grabado con ruido end
%******************************************************** % filtrado( señal + ruido): oscilograma y espectro %******************************************************** display('.'); display('********===============================================********' ); 13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
display('******* FILTRADO(señal + ruido): oscilograma y espectro *******'); display('********===============================================********' ); display('.'); %display('Presione una tecla para observar el oscilograma y el espectro'); %input('de la señal + ruido'); %Filtro supresor de banda orden=6; [b,a] = butter(orden,((farm+30)*2)/fs,'low'); filteredSignal=filter(b,a,noisySignal); display('Presione ENTER para observar el oscilograma y el espectro'); input('de la señal + ruido filtrada'); figure(5);plot(filteredSignal(1:samples)); title('Osilograma de la señal + ruido filtrada'); ylabel('Amplitud'); filteredSignalw=fft(filteredSignal,samples); %Cálculo de la DFT frecDomain=fs*(0:samples-1)/samples; %Dominio de la frecuencia en Hz figure(6);plot(frecDomain(400:44100),abs(filteredSignalw(400:44100))); %exhibición del espectro title('Espectro de la filtro señal + ruido'); ylabel('Amplitud'); xlabel('Frecuencia en Hz'); opcion=input('Desea escuhcar el archivo de la señal filtrada? oprima G: '); if (opcion=='g'||opcion=='G') wavplay ( 3*filteredSignal,fs) %Para escuchar lo grabado end %******************************************************** display('.'); display('Presione una tecla para observar la respuesta'); input('en frecuencia del filtro'); [H,W]=freqz(b,a,256); %256 muestras W=W*fs/(2*pi); figure(7);plot(W(1:128),abs(H(1:128))); display('************* El Programa a finalisado ************************** '); %++++++++++++++++++++ ++++++++fin +++++++++++++++++++++++++++++++++++
13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
Señal de entrada:
Señal de entrada más ruido:
13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
Señal de entrada más ruido filtrado:
Espectro de frecuencia del filtro de orden 5
13
Universitario: Apaza Díaz Yorcy Email:
[email protected]
Sistemas Lineales I Y LAB Torres
Doc.: Ing. Máximo
“UNIVERSIDAD PÚBLICA AUTONOMA DE EL ALTO ”
CONCLUSIONES Y OBSERVACIONES: •
•
•
La utilización de programas de simulación y diseño como Matlab, tienen las ventajas primordiales de facilitar un entorno visual para un profundo análisis matemático y por sobre todo la capacidad de minimizar el tiempo de trabajo del diseño y análisis del comportamiento de las señales espectrales. Es especialmente útil poder visualizar con un programa como Matlab y sus herramientas, las diferentes señales al mismo tiempo para darnos una idea de lo que realmente está haciendo nuestro software. El presente trabajo nos sirvió para las aplicaciones prácticas de las transformadas de Fourier ya sea en tiempo continuo o discreto de un sistema real como es el caso de grabar en tiempo real la voz para luego aplicar un Filtro pasa bajos Butterworth y muestrear la señal en el dominio de la frecuencia. Llegándose así a concluir el proyecto con éxito.
BIBLIOGRAFIA:
Gonzalez, C., Woods, R. (2008). Digital Image Processing (3ra. Ed). New Jersey. EE.UU: Prentice Hall
Russ, J. (2006). The Image Processing Handbook , (5ta. Ed). EE.UU. CRC Press
Burger, W., James,M. (2007). Digital Image Processing: An Algorithmic Introduction using Java. EE.UU.: Springer.
James , J. (2003). Student's Guide to Fourier Transforms . EE.UU. Cambridge University Press.
Brigham, E. (1988). Fast Fourier Transform and Its Applications. New York. Prentice Hall.
James, G. (2002). Matemáticas avanzadas para ingeniería. EE.UU.. Prentice Hall. 13
Universitario: Apaza Díaz Yorcy Email:
[email protected]