Professional Documents
Culture Documents
SINTESIS
Se trabajara con una seal de audio a una frecuencia de muestreo a la cual se le aplicara un filtro pasa-bajas y sera diezmada para as tener una nueva seal de audio. En el proceso de esto se observara el comportamiento en las respuestas en frecuencia y se discutirn las diferencias. 2. Grfica la seal en Matlabu Octave. Primero, como si se tratara de una seal analgica (llmale x a t e indica en la grfica su duracin en segundos) y luego, como una seal discreta (indica en la grfica su longitud en muestras).
x [n ]
INTRODUCCION
Existen varias ventajas en sustituir circuitos analgicos por algoritmos digitales. En el caso de la conversin de una seal analgica en una digital se puede utilizar la tcnica de muestrear la seal a una tasa superior a la deseada y, posteriormente, utilizar procesamiento digital de seales para reducir la frecuencia de muestreo. La ventaja de esta tcnica radica en que se puede recurrir a un filtro anti-solapamiento de bajo orden y bajo costo y posteriormente modificar la seal de manera que slo permanezcan los datos deseados. En esta prctica vamos a digitalizar una seal de voz usando una frecuencia de muestreo de 48 KHz y, recurriendo al procesamiento digital de seales, la modificaremos en una seal con frecuencia de muestreo de 8 KHz.
3. Utiliza la transformada discreta de Fourier (DFT por sus siglas en ingls) para graficar la magnitud de la transformada de Fourier de x a t y x [n ] . Cuida que la informacin del eje de la frecuencia tenga sentido en cada grfica (usa para la seal analgica y para la seal discreta). 4. Calcula la seal
filtro pasa-bajas h LP [n ] . Este filtro est disponible en el archivo filtro.mat en la pgina Moodle del curso. 5. Grafica la magnitud de la respuesta en frecuencia H LP ej del filtro pasa-bajas y comprueba que su frecuencia de corte c corresponda a la sealada en la figura 1. 6. Grafica Fourier de
x [n ]
va la convolucin de
x [n ]
con el
x [n ] x [n ]
x d [n ]
x [6n ]
DESARROLLO
1. Graba en la computadora una seal de voz (5 segundos de audio es suficiente) utilizando una frecuencia de muestreo de 48 KHz (sonido monoaural). Utiliza esta seal como la entrada x[n] del sistema mostrado en la figura 1.
8. Grfica la magnitud de la transformada de Fourier de x d [n ] (cuida el eje de la frecuencia). Por qu es distinta la magnitud de esta transformada de Fourier? 9. Escucha y compara las seales
x [n ]
x d [n ]
10. Elabora un reporte donde incluyas todos los pasos anteriores. Agrega comentarios y conclusiones.
ITESO
Instituto Tecnolgico y de Estudios Superiores de Occidente (ITESO), Perifrico Sur Manuel Gmez Morn 8585, Tlaquepaque, Jalisco, Mxico, C.P. 45090. Departamento de Electrnica, Sistemas e Informtica (DESI).
DESARROLLO
Ya teniendo el archivo de voz en formato PCM de 48 KHz y 8 Bits, podemos cargarla en GNU Octave / MATLAB y visualizarla (Fig. 2) [ el programa se encuentra al final del reporte en la seccin de anexos ].
Aplicando la transformada rpida de Fourier (FFT), podemos apreciar sus respuestas en frecuencia.
Podemos ver que los componentes mas dominantes se encuentran por debajo de aproximadamente 3000 Hz en la seal anloga (Fig. 4). ).
x a t
Por lo que de manera anloga se puede ver en la respuesta discreta (Fig. 5) como
Fig. 3 muestra la seal muestreada ( x [n ] ) con una f s de 48,000 Hz; por lo que la grfica termina con una n = 384000.
2 = f s
1 4
en el eje
de la grfica se traduce a 1909 Hz y se puede ver que la mayora de los componentes se encuentran entre 0 y 4000 Hz, aproximadamente.
Tema: Procesamiento Digital de Seales Pag. 2 of 6 Guadalajara, Mxico // lun 20 de abril de 2009.
ITESO
Instituto Tecnolgico y de Estudios Superiores de Occidente (ITESO), Perifrico Sur Manuel Gmez Morn 8585, Tlaquepaque, Jalisco, Mxico, C.P. 45090. Departamento de Electrnica, Sistemas e Informtica (DESI).
h LP [n ] y grafiH LP ej ), tenemos lo
Al analizar la respuesta en frecuencia (Fig. 8) de la seal post-filtrada ( [n ] ), podemos ver que claramente elimino todos los x componentes
c =
al analizar la grfica.
Aplicando este filtro a la seal de audio, nos queda de la siguiente manera (Fig. 7), donde es difcil de percibir los cambios hechos por el filtro.
La Fig. 9 presenta una visualizacin de lo sucedido al aplicarle el filtro a nuestra seal (la visualizacin es en el dominio de la frecuencia para que se pueda multiplicar valor con valor).
ITESO
Instituto Tecnolgico y de Estudios Superiores de Occidente (ITESO), Perifrico Sur Manuel Gmez Morn 8585, Tlaquepaque, Jalisco, Mxico, C.P. 45090. Departamento de Electrnica, Sistemas e Informtica (DESI).
Siguiendo el diagrama de bloques de la figura 1, el siguiente paso es hacer x d [n ] = [6n ] , lo que indica que vamos a x tomar una muestra por cada 6 y as reducir el numero de muestras.
Fig. 11: Espectro en frecuencia de la seal procesada. Fig. 10: Seal de audio diezmada.
Explicando el proceso de manera cualitativa se puede decir lo siguiente: Podemos ver que nuestro numero de muestras disminuyo en una razn de 6, por lo que
N muestras=
f s tiempo n diezmado
, por lo que
1. Fue muestreada una seal de audio a 48,000 Hz por lo que su frecuencia de Nyquist es de 24,000 Hz. 2. Se le aplico un filtro, el cual era un sexto de la frecuencia de Nyquist, dejando solo frecuencias hasta 4,000 Hz. 3. Se redujo la frecuencia de muestreo a un sexto de la original, quedndonos en 8,000 Hz y as por el teorema de Nyquist poder seguir sin distorsin seales de hasta 4,000 Hz. 4. Nos quedamos con una seal de audio con una frecuencia de muestreo de 8,000 Hz que se parece mucho a la original.
Tema: Procesamiento Digital de Seales Pag. 4 of 6 Guadalajara, Mxico // lun 20 de abril de 2009.
ITESO
Instituto Tecnolgico y de Estudios Superiores de Occidente (ITESO), Perifrico Sur Manuel Gmez Morn 8585, Tlaquepaque, Jalisco, Mxico, C.P. 45090. Departamento de Electrnica, Sistemas e Informtica (DESI).
CONCLUSIONES
Es muy interesante trabajar con audio en GNU Octave / MATLAB, porque al verlos meramente como arreglos se pueden procesar de muchas maneras, as como aplicar filtros muy selectivos y especializados requeridas para ciertas aplicaciones sin necesidad de ser limitado por utilidades ya existentes de edicin de audio. Al cambiar la frecuencia de muestreo debemos de preocuparnos por limitar el ancho de banda de nuestra seal para descartar informacin y no provocar distorsin al sobrepasar la frecuencia de Nyquist. Al obtener la salida de audio ya procesado se noto una gran perdida de informacin en frecuencias altas como lo eran platillos de batera y ciertos tonos de guitarra. Pero el archivo de salida resulto ser de menor tamao al reducir la frecuencia de muestreo a 8 KHz.
Tema: Procesamiento Digital de Seales Pag. 5 of 6 Guadalajara, Mxico // lun 20 de abril de 2009.
ITESO
Instituto Tecnolgico y de Estudios Superiores de Occidente (ITESO), Perifrico Sur Manuel Gmez Morn 8585, Tlaquepaque, Jalisco, Mxico, C.P. 45090. Departamento de Electrnica, Sistemas e Informtica (DESI).
ANEXOS
% Changing the sampling frequency % by using discrete time digital % processing. % % Omar X. Avelar & Diego I. Romero. % March 3rd, 2009. # Lowpass filter response HLP = fft(hLP); HLP = fftshift(HLP); omega_d = linspace(-pi,pi,length(HLP)); stem(omega_d,abs(HLP)); ylabel("Magnitude");xlabel('Frequency {\omega}'); print -dpng "Plots/5_H_lowpass_FFT.png"; load filter.mat # hLP is a lp filter # Filtering the audio signal sound_length = 8; truncate file fs = 48000; # Desired length to # Sampling frequency # in seconds x = wavread("sound_file.wav"); # Plot axis variables t = linspace(0,sound_length,sound_length*fs); n = linspace(0,sound_length*fs,sound_length*2000); # Loads the sound file x_filtered = conv(x,hLP); stem(n,x_filtered(1:fs/2000:sound_length*fs)); ylabel("Amplitude");xlabel("Sample [n]"); print -dpng "Plots/6_Filtered_Discrete_Signal.png"; # Fourier transform of the filtered signal X_filtered = fft(x_filtered); X_filtered = fftshift(X_filtered); omega_d = linspace(-pi,pi,length(X_filtered)); stem(omega_d,abs(X_filtered)); ylabel("Magnitude");xlabel('Frequency {\omega}'); # Analog signal plot(t,x(1:sound_length*fs)); ylabel("Amplitude");xlabel("Time [s]"); print -dpng "Plots/1_Analog_Signal.png"; # Discrete signal stem(n,x(1:fs/2000:sound_length*fs)); ylabel("Amplitude");xlabel("Sample [n]"); print -dpng "Plots/2_Discrete_Signal.png"; # Fourier transforms Xc = fft(x,power(2,ceil(log2(length(x)*sound_length)))); Xd = fft(x); Xd = fftshift(Xd); omega_d = linspace(-pi,pi,length(Xd)); omega_c = linspace(0,fs/2,fs*sound_length/8); # Analog Spectrum plot(omega_c,abs(Xc(1:8:fs*sound_length))); ylabel("Magnitude");xlabel("Frequency [Hz]"); print -dpng "Plots/3_Analog_FFT.png"; # Discrete Spectrum stem(omega_d,abs(Xd)); ylabel("Magnitude");xlabel('Frequency {\omega}'); print -dpng "Plots/4_Discrete_FFT.png"; # Saves the resampled audio as file xd_filtered = transpose(xd_filtered); wavwrite(xd_filtered,8000,16,"sound_out.wav"); # Downsampling the signal for n=1:(length(x_filtered)/6) xd_filtered(n) = x_filtered(6*n); endfor stem(xd_filtered(1:fs*sound_length/6)); ylabel("Amplitude");xlabel("Sample [n]"); print -dpng "Plots/8_Filtered_&_Downsampled.png"; # Fourier transform of the downsampled signal Xd_filtered = fft(xd_filtered); Xd_filtered = fftshift(Xd_filtered); omega_d = linspace(-pi,pi,length(Xd_filtered)); stem(omega_d,abs(Xd_filtered)); ylabel("Magnitude");xlabel('Frequency {\omega}'); print -dpng "Plots/9_Filtered_&_Downsampled_FFT.png"; print -dpng "Plots/7_Filtered_FFT.png";
Tema: Procesamiento Digital de Seales Pag. 6 of 6 Guadalajara, Mxico // lun 20 de abril de 2009.