You are on page 1of 4

Laboratorio de Procesamiento Digital de Voz

Practica 2. FILTROS DIGITALES Objetivos:


Conocer la forma realizar un filtrado digital con las ayuda de las funciones de Matlab. Entender el uso de la Transformada de Fourier en Tiempo Corto (STFT) y los principales tipos de ventanas.

Filtros Digitales
Los filtros son una clase particularmente importante de Sistemas Lineales Invariantes en el Tiempo (SLIT, fig. 1). Estrictamente hablando, el trmino filtro selectivo de frecuencia sugiere un sistema que permite el paso de ciertos componentes frecuenciales y rechaza todos los dems. Pero en un contexto amplio cualquier sistema que modifica ciertas frecuencias relativas a otras es tambin llamado filtro.

s[n] S[z]

h[n] SLIT H[z]

y[n] Y[n]

Figura 1. Sistema Lineal invariante en el tiempo

Los filtros digitales se dividen principalmente en dos tipos: los filtros con respuesta al impulso infinita (IIR) y los filtros con respuesta al impulso finita (FIR). Filtros IIR Los filtros IIR pueden obtenerse fcilmente comenzando con un filtro analgico y que despus se adapta usando una transformacin del plano-s al plano-z. De tal forma que el diseo de un filtro digital se reduce al diseo de un filtro analgico apropiado y despus efectuar la transformacin de H(s) a H[z], con esto se preserva lo ms posible las caractersticas deseadas. Existen varios mtodos para el diseo de filtros digitales IIR, como por ejemplo: las aproximaciones Butterworth, Chevyshev, Elliptic, Bessel, etc. Una de las ventajas que presentan los filtros IIR es que el orden del filtro es mucho menor que los filtros FIR, sin embargo estos filtros pueden ser inestables. La funcin de transferencia general de un filtro IIR tiene la forma de:
M "1

H [ z] =

!a
k =0

k =0 N "1

!b z
k k

"k

(1)
"k

donde ak y bk son los coeficientes del filtro

Funciones en Matlab Para obtener los coeficientes de un filtro IIR de tipo Butterworth analgico y digital se utiliza la funcin butter de la siguiente forma. [b,a] = butter(n,Wn) [b,a] = butter(n,Wn,'ftype') [z,p,k] = butter(...) [b,a] son los coeficientes del filtro de la siguiente funcin de transferencia del filtro. [z,p,k] son los polos, ceros y la constante de ganancia.
!n 1 B(z ) b( )+ b(2 )z + " " " + b(n + 1)z H (z ) = = A(z ) 1 + a(2 )z !1 + " " " + a(n + 1)z !n !1

donde n es el orden del filtro, Wn es la Frecuencia normalizada con respecto a la frecuencia de Nyquist y su valor varia de 0 < Wn < 1; 'ftype' especifica el tipo de filtro, esto es: 'high' pasa altas con frecuencia de corte Wn; 'stop' paso banda Wn = [w1 w2] por defecto es especificado como un filtro paso bajas.

Filtros FIR El diseo de filtros FIR requiere de una seleccin de la secuencia que mejor representa la respuesta al impulso de un filtro ideal. Estos tipos de filtros son siempre estables y son capaces de tener una respuesta de fase lineal. El mayor problema de los filtros FIR es que para ciertas especificaciones dadas, se requiere un filtro de orden mucho mayor que los filtros IIR. Un filtro FIR de longitud M con entrada x[n] y salida y[n] se describe mediante la ecuacin en diferencias:

y[n] = b0 x[n] + b1 x[n " 1] + ... + bM "1 x[n " M + 1] =


donde bk son los coeficientes del filtro Funciones en Matlab

M "1 k =0

! b x[n " k ]
k

(2)

Matlab tiene varias funciones para el diseo de filtros FIR, una de estas funciones es: fir1 que puede tener los siguientes parmetros: b = fir1(n,Wn) b = fir1(n,Wn,'ftype') b = fir1(n,Wn,window) b = fir1(n,Wn,'ftype',window) donde b es un vector con los coeficientes del filtro, n es el orden del filtro, Wn es la frecuencia de corte normalizada con respecto a al frecuencia de Nyquist y varia de 0 < Wn < 1; 'ftype' especifica el tipo de filtro, esto es: 'high' pasa altas con frecuencia de corte Wn; 'stop' paso banda Wn = [w1 w2], por defaul se especifica como como un filtro tipo paso bajas. window Especifica el tipo de ventana a utilizar en el diseo. Por defecto utiliza ventana Hamming.

Ventanas En todas las aplicaciones prcticas de procesamiento digital de seales, es necesario trabajar con partes de la seal (tramas), a menos que la seal sea de corta duracin. Esto es especialmente verdadero si trabajamos con tcnicas de anlisis convencionales con dinmica no estacionaria (tales como la voz). En este caso es necesario seleccionar una parte de la seal que pueda ser razonablemente estacionaria. Llamaremos a una ventana w[n] (en el dominio del tiempo discreto), es una secuencia real de tamao finito usada para seleccionar una deseada trama de la seal original, digamos s[n], por un proceso simple de multiplicacin. Algunas de las ventanas ms comunes son: la ventana Rectangular, de Hamming, de Hanning, Blackman, Kaiser, etc. La figura 2 muestra tres tipos de ventanas en el dominio del tiempo.

Figura 2. Ventana de Hanning, Hamming y Kaiser en el dominio del tiempo

Funciones en Matlab Matlab tiene las siguientes funciones para obtener los puntos correspondientes a una ventana especfica. win = hamming(N) win = hann(N) win = blackman(N) win = kaiser(N, ) donde win es un vector con los valores de la ventana. N es el nmero de puntos de la ventana. Por ejemplo: la siguiente sentencia, obtiene la ventana de hamming de 128 puntos >>win = hamming(128), En el caso de la ventana tipo kaiser, tiene un parmetro extra, , que establece lo ancho o delgado de campana. Por ejemplo, para el valor de =0, la ventana es de tipo rectangular; para valores de > 0 forma una especie de campana muy parecida a la de una gaussiana delimitada.

Desarrollo
1. Disear un filtro FIR de orden 48 paso bajas con banda de corte normalizada 0.35 utilizando la funcin de Matlab fir1. 2. Graficar la respuesta en frecuencia utilizando la funcin de Matlab freqz(b,1,512) donde b son los coeficientes del filtro regresados por fir1. 3. Disear un filtro IIR Butterworth de orden 9, paso bajas con frecuencia de corte 1000 Hz y frecuencia de muestreo fs = 8000 Hz. 4. Graficar la respuesta en frecuencia utilizando la funcin de Matlab freqz(b,a,128,fs) donde b, a son los coeficientes del filtro regresados por butter y fs es la frecuencia de muestreo 5. Obtenga la graficas de los distintos tipos de ventanas existentes en Matlab de 128 puntos (en el caso de la Kaiser utilice, = 1, 4 y 9) 6. Con los filtros previamente diseados, filtre dos archivos de voz, con la funcin de Matlab filter (vea la ayuda en lnea) 7. Grafique el espectrograma de las seales resultantes del punto 6 y comprelas con las seales originales. 8. Utilice un archivo de voz y aplique un filtro de pre-nfasis con parmetro a = 0.95. Observe la seal resultante, en el espectrograma. Recuerde que para un filtro pre-nfasis se tiene que:

H (z ) = 1 ! z !1 ,

0.9 ! a ! 1.0

s(n ) = s (n )! s (n ! 1)
Bibliografa
Digital Signal Processing Principles, Algorithms, and Applications, John G. Proakis, Dimitris G. Manolakis, Ed. Prentice Hall, 1996 DiscreteTime Processing of Speech Signals, John R. Deller Jr, John G. Proakis, John H. L. Hansen, Ed. Prentice Hall 1987 Fundamentals of Speech Recognition, Lawrence Rabiner, Biing Hwang Juang, Ed. Prentice Hall, 1993 http://voltio.ujaen.es/te/enlinea/tts/portal.htm, 2003

You might also like