You are on page 1of 10

ANEXOS.

Cdigo de procesamiento de audio en MATLAB.


clc closeall [x fs] = wavread('original.wav'); %muestreo del archivo de audio size = length(x); %Grafica de la seal de audio en el dominio del tiempo figure(1) plot(x) axis([0 length(x) -1 1]); title ('Seal de audio original'); xlabel ('tiempo [muestras]'); ylabel ('seal de audio [voltios]'); gridon; %espectro de frecuencias de la senial captada figure(2); f = (0:size/2)*fs/size; amplitud = (abs(fft(x,size)))/(size/2); plot(f,amplitud(1:fix(size/2+1))); %axis([min(f) max(f) min(amplitud) max(amplitud)]); grid on; title('Espectro de magnitud de la seal original'); xlabel('frecuencia [Hz]'); ylabel('amplitud de las componentes espectrales [voltios]'); %$$$$$$$$$$ - FRECUENCIAS DE CORTE- $$$$$$$$$$$$ fny = fs/2; % frecuencia de nyquist %Frecuencias de corte para los filtros pasa alta y pasa baja fcn_hp = (fny - 2e3)/fs; % frecuencia de corte de 2 kHz para el filtro pasaaltos fcn_lp = 256/fs; % frecuencia de corte de 256 Hz para el filtro pasabajas %Frecuencias de corte necesarias para el filtro pasa banda fc1 = fny - 256; % frecuencia de corte de 2 kHz para el filtro pasaaltos fc2 = 2e3; % frecuencia de corte de 256 Hz para el filtro pasabajas fcn = [fc1 fc2]/fs ; % frecuencias de corte normalizada %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %$$$$$$$$$$ - PARAMETROS GENERALES DEL FILTRO - $$$$$$$$$$$$ fprintf('\n FILTRO PASA BAJA: deja pasar frecuencias abajo de 256 Hz (solo tonos graves)\n FILTRO PASA ALTA: deja pasar frecuencias arriba de 2 kHz (solo tonos agudos)\n FILTRO PASA BANDA: deja pasar frecuencias entre 256 Hz - 2 kHz (solo tonos medios)\n\nLa frecuencia de muestreo del archivo de audio es %d.\n\n',fs); %********** CALCULO DE LA h[n]************** M = 256; %longitud del filtro, orden = L-1 nn = 0:M-1; %Tiempo Discreto w = hanning(M*2-1); % Aplicando la ventana w1 = hanning(M); hhp1 = (-1).^nn.*2*fcn_hp.* sinc(2*fcn_hp.*(nn-M/2)); % Filtro paso alto ideal hhp = (-1).^nn.*2*fcn(1).* sinc(2*fcn(1).*(nn-M/2)); % Filtro paso alto ideal hlp1 = 2*fcn_lp* sinc(2*fcn_lp*(nn-M/2)); ideal hlp = 2*fcn(2)* sinc(2*fcn(2)*(nn-M/2)); ideal % Filtro Paso Bajo % Filtro Paso Bajo

hbp = conv(hhp,hlp);

% filtro pasabanda, respuesta al impulso ideal

h_highpass = hhp1.*w1'; % filtro pasa alta, respuesta al impulso con ventana h_lowpass = hlp1.*w1'; % filtro pasa baja, respuesta al impulso con ventana h_bandpass = hbp.*w'; % filtro pasabanda, respuesta al impulso con ventana %******************************************** %########## - Senial de salida y1 = conv(x,h_highpass); y2 = conv(x,h_lowpass); y3 = conv(x,h_bandpass); de audio % respuesta % respuesta % respuesta ############# del filtro a la funcion del filtro a la funcion del filtro a la funcion

amplitud1 = (abs(fft(y1,size)))/(size/2); amplitud2 = (abs(fft(y2,size)))/(size/2); amplitud3 = (abs(fft(y3,size)))/(size/2); wavwrite(x,fs,'original.wav'); wavwrite(y1,fs,'agudos.wav'); wavwrite(y2,fs,'graves.wav'); wavwrite(y3,fs,'medios.wav'); wavwrite(x,fs*2,'rapido.wav'); wavwrite(x,fs/2,'lento.wav'); %Seal de salida discreta del fitro pasa alta figure(3) plot(y1) %axis([0 length(x) -1 1]); title('Seal de salida discreta del fitro pasa alta') xlabel ('tiempo [muestras]' ); ylabel ('seal de audio [voltios]' ); grid on; figure(4) plot(f,amplitud1(1:fix(size/2+1))); axis([min(f) max(f) min(amplitud) max(amplitud)]); grid on; title('Espectro de magnitud del fitro pasa alta'); xlabel('frecuencia [Hz]'); ylabel('amplitud de las componentes espectrales [voltios]'); %Seal de salida discreta del fitro pasa baja figure(5) plot(y2) axis([0 length(x) -1 1]); title('Seal de salida discreta del fitro pasa baja') xlabel ('tiempo [muestras]' ); ylabel ('seal de audio [voltios]' ); grid on; figure(6) plot(f,amplitud2(1:fix(size/2+1))); axis([min(f) max(f) min(amplitud) max(amplitud)]); grid on; title('Espectro de magnitud del fitro pasa baja'); xlabel('frecuencia [Hz]'); ylabel('amplitud de las componentes espectrales [voltios]'); %Seal de salida discreta del fitropasabanda figure(7) plot(y3) axis([0 length(x) -1 1]); title('Seal de salida discreta del fitropasabanda' ) xlabel ('tiempo [muestras]' ); ylabel ('seal de audio [voltios]' );

grid on; figure(8) plot(f,amplitud3(1:fix(size/2+1))); axis([min(f) max(f) min(amplitud) max(amplitud)]); grid on; title('Espectro de magnitud del fitropasabanda'); xlabel('frecuencia [Hz]'); ylabel('amplitud de las componentes espectrales [voltios]');

Graficas Generadas por el Cdigo.

Figura 1. Muestreo de la Seal de Audio en el Dominio del Tiempo.

La figura 1 representa el muestreo de la seal de audio original en el dominio del tiempo. Esta seal refleja un fragmento de 47 segundos de una cancin ubicada en un archivo de audio (BohemianRhapsody.wav), este tiempo es definido por las muestras. Esta grfica, en el dominio del tiempo, refleja el comportamiento de la seal de audio, ya que la variacin de las amplitudes representa las diferentes tonalidades que posee la cancin muestreada. En el dominio del tiempo es prcticamente imposible identificar el intervalo donde esta presenta su mayor cantidad de energa concentrada y las diferentes componentes de frecuencia que conforman la seal, es decir su ancho debanda, por lo cual es necesario analizarla en el dominio de la frecuencia.

Figura 2. Seal De Audio en el Dominio de la Frecuencia.

La figura 2 representa la seal de audio original en el dominio de la frecuencia (espectro de frecuencia). Para obtener esta grafica se necesita aplicar la transformada de Fourier a la seal de audio en el dominio del tiempo (Figura 1). De esta manera se observa el comportamiento que tiene la densidad espectral de potencia de la seal. Como tambin, se puede observar que la mayor parte de energa de la seal se encuentra concentrada antes de los 2 kHz y esto significa que la intensidad del tono de la seal muestreada se encuentra en los intervalos antes mencionados.

Figura 3. Seal de Salida del Filtro Pasa Alta en el Dominio del Tiempo.

La figura 3 representa la seal de salida en el dominio del tiempo que se obtiene con un filtro paso alto. Para obtener este grafico es necesario realizar la convolusin de la seal de entrada en el dominio del tiempo (Figura 1), con la respuesta al impulso de un filtro paso alto. Lo que se puede notar en la seal de salida, es que solo se escuchan los tonos ms agudos de la seal de audio, y como debido a que la voz humana presente en el archivo de audio es aguda, aqu es donde se aprecia mejor. Se puede observar adems, que si se compara la figura 3 con la figura 1, existe un cambio de amplitud que interfiere en la calidad de la seal transmitida haciendo muy difcil la percepcin de lo que se desea transmitir.

Figura 4. Seal de Salida del Filtro Pasa Alta en el Dominio de la Frecuencia.

La figura 4 representa la seal de salida en el dominio de la frecuencia, que se obtiene con un filtro paso alto. Para obtener esta grafica es necesario aplicar la transformada de Fourier a la seal de audio de la Figura 3. Con este grafico se puede notar que la frecuencia de corte que se ha utilizado con el filtro paso alto es de 2k [Hz], ya que este solo deja pasar las seales con frecuencias arriba de este valor. En este grafico se puede observar el comportamiento que tiene el espectro de potencia de la seal de salida por el filtrado paso alto.

Figura 5. Seal de Salida del Filtro Pasa Baja en el Dominio del Tiempo.

La figura 5 es la salida que se ha obtenido en el tiempo discreto por el filtro pasa bajas como se puede observar la seal que se tiene es casi la misma de entrada lo nico que cambiado es la amplitud eso se puede ver al comparar la figura 5 con la figura 1 que su amplitud ha disminuido pero en este caso como la seal sigue siendo similar a la de entrada, en la prctica lo que se hace en los sistemas de comunicaciones es amplificar esta seal para que casi se parezca a la seal original.

Figura 6. Seal de Salida del Filtro Pasa Baja en el Dominio de la Frecuencia.

En la figura 6 se puede ver la respuesta del filtro pasa bajas en el dominio de la frecuencia. Este es el espectro que tiene las mayores amplitudes, lo que lleva a pensar que es aqu en donde el mensaje se transmite de mejor manera, sin embargo estas amplitudes mximas son una porcin bastante pequea de la energa del espectro original. Adems al escuchar el audio se puede notar que los tonos de voz humana son muy bajos, (ya que como se dijo antes, la voz presente en el archivo es en su mayora aguda), por lo que el ancho de banda de este filtro, abarca componentes de voz humana muy tenues. Es importante notar que aunque se escuchaba al fondo la voz, todava segua ah y el mensaje no se haba eliminado. Se puede observar tambin, que la energa de la nueva seal de salida, ha sido disminuida lo cual implica una gran prdida de la calidad de la seal creada, por lo cual, ser muy difcil distinguir el mensaje que se desea transmitir.

Figura 7. Seal de Salida del Filtro Pasa Banda en el Dominio del Tiempo.

La figura 7 es la salida que se ha obtenido en el tiempo discreto por el filtro pasa banda como se puede observar la seal que se tiene es lo ms parecido a la seal de entrada comparada a la del filtro pasa alto y pasa bajo ya que estas su amplitud se pierde debido a su tipo de filtrado, en esta grafica se observa que los informacin que se tiene es la que ms se acerca a la informacin original esto es a lo que se apuesta en los sistemas de comunicaciones a que la informacin que se est manejando llegue con mayor eficiencia al destino y que al decodificar la seal esta pueda ser entendible.

Figura 8. Seal de Salida del Filtro Pasa Banda en el Dominio de la Frecuencia.

La figura 8 muestra la respuesta en frecuencia del filtro pasa bandas, se puede ver que el espectro de frecuencias que ste deja pasar frecuencias entre 256 Hz y 2 kHz (las frecuencias que los filtros anteriores no dejaban pasar). En el espectro de frecuencias existe ms variedad en la magnitud y se debe a que esta si deja pasar casi el audio original con un ancho de banda es de 1744 [Hz], al escuchar el audio se puede notar que la voz humana del mensaje, se aprecia de mejor manera con este filtrado en comparacin al filtro pasa baja.

10

You might also like