Você está na página 1de 10

Apellidos: Moreira Vélez

Nombres: José Gabriel

Asignatura: Procesamiento de Señales, Sonido e Imágenes Digitales

Fecha: 05-07-2017
Tema: Análisis de Audio
Asignatura Datos del alumno Fecha
Apellidos: Moreira Vélez
Procesamiento de
Señales, Sonido e 05/07/2017
Imágenes Digitales Nombre: José Gabriel

Actividades

Laboratorio: Análisis de audio

El objetivo de este laboratorio es aprender a interpretar audio en el dominio


transformado. Antes de acudir al laboratorio deberás haber instalado una herramienta
de edición de audio: preferiblemente Audacity. No está permitido el uso de estructuras
de control (if, for, etc).

Tarea 1: espectrograma de tonos

A partir de la siguiente señal analógica:

Genera la señales muestreadas x1[n] a fs1=300 muestras/seg y x2[n] a fs2=600


muestras/seg.
>> fs1=300;
>> fs2=600;
>> inct1=1/fs1;
>> inct2=1/fs2;
>> t1=[0:inct1:0.4-inct1];
>> t2=[0:inct2:0.4-inct2];
>> a=sin(2*pi*40*t1);
>> b=sin(2*pi*100*t1);
>> c=sin(2*pi*200*t1);
>> a2=sin(2*pi*40*t2);
>> b2=sin(2*pi*100*t2);
>> c2=sin(2*pi*200*t2);
>> m1=[a b c]';
>> m2=[a2 b2 c2]';

TEMA 10 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Moreira Vélez
Procesamiento de
Señales, Sonido e 05/07/2017
Imágenes Digitales Nombre: José Gabriel

Genera con specgram y subplot sus correspondientes espectrogramas para tamaños


de ventana 25, 50 y 150.
subplot(211), specgram(m1,25,fs1);
subplot(212), specgram(m2,25,fs2);
subplot(211), specgram(m1,50,fs1);
subplot(212), specgram(m2,50,fs2);
subplot(211), specgram(m1,150,fs1);
subplot(212), specgram(m2,150,fs2);

Gráfica en Matlab y en Octave


150 300
Frequency

Frequency

100 200
50 100
0 0
0.2 0.4 0.6 0.8 1 0.2 0.4 0.6 0.8 1
Time Time
150 300
Frequency

Frequency

100 200
50 100
0 0
0.2 0.4 0.6 0.8 1 0.2 0.4 0.6 0.8 1
Time Time
150 300
Frequency

Frequency

100 200
50 100
0 0
0.2 0.4 0.6 0.8 0.2 0.4 0.6 0.8 1
Time Time

Responde a las siguientes preguntas:

o ¿Puede ver los tonos en todos los espectrogramas? Si no fuera así, indique por
qué.
o ¿Qué espectrograma tiene un mejor compromiso entre la resolución frecuencial y
la espacial?

Entrega

Entrega la solución en un fichero tarea1.m, la gráfica resultante en tarea1.png y las


respuestas a las preguntas en respuestas.docx (no copiar el enunciado, solo poner las
respuestas).

TEMA 10 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Moreira Vélez
Procesamiento de
Señales, Sonido e 05/07/2017
Imágenes Digitales Nombre: José Gabriel

Tarea 2: modulación en frecuencia

La modulación en frecuencia (FM) consiste en codificar la información a transmitir


modificando la frecuencia instantánea de la portadora.

Si tenemos una señal sinusoidal con información a transmitir con frecuencia fi:

Y una portadora xp(t) a frecuencia fp:

La señal modulada a transmitir en FM xt(t) se produce usando la señal de información


xi(t) para modificar la fase de la portadora xp(t):

Donde m es el índice de modulación, que indica cuánto varía la señal modulada


respecto a la demodulada.

Asumiendo que tenemos una señal xi(t) con fi=3Hz y queremos transmitirla por dos
portadoras xp1(t) a fp1=30Hz xp2(t) a fp2=180Hz, obtendremos las señales moduladas
xt1(t) y xt2(t). Genera en un intervalo de un segundo con frecuencia de muestreo
fs=800 muestras/seg e índice de modulación m=5, las señales xi(t), xp1(t), xp2(t), xt1(t)
y xt2(t) y represéntelas con subplot (5 filas x 1 columna).

fs=800;
m=5;
inct=1/fs;
t=[0:inct:1-inct];
xi=cos(2*pi*3*t);
xp1=cos(2*pi*30*t);

TEMA 10 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Moreira Vélez
Procesamiento de
Señales, Sonido e 05/07/2017
Imágenes Digitales Nombre: José Gabriel

xp2=cos(2*pi*180*t);
xt1=cos(2*pi*30*t+m*xi);
xt2=cos(2*pi*180*t+m*xi);
subplot(511), plot(t,xi);
subplot(512), plot(t,xp1);
subplot(513), plot(t,xp2);
subplot(514), plot(t,xt1);
subplot(515), plot(t,xt2);

Gráficos en Matlab y Octave

1
0
-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
1
0
-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
1
0
-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
1
0
-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
1
0
-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Entrega

Entrega la solución en un fichero tarea2a.m, la gráfica resultante en tarea2a.png.

Si xt1(t) y xt2(t) se transmiten a la vez por el mismo medio obtendremos la señal:

Utiliza el comando specgram para generar con subplot (3 filas x 2 columnas) el


espectrograma de las señales xp1(t), xp2(t), xt1(t), xt2(t), xi(t), xt(t) con tamaño de
ventana N=60.

TEMA 10 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Moreira Vélez
Procesamiento de
Señales, Sonido e 05/07/2017
Imágenes Digitales Nombre: José Gabriel

400 400
Frequency

Frequency
200 200

0 0
0.2 0.4 0.6 0.8 0.2 0.4 0.6 0.8
Time Time
400 400
Frequency

Frequency
200 200

0 0
0.2 0.4 0.6 0.8 0.2 0.4 0.6 0.8
Time Time
400 400
Frequency

Frequency

200 200

0 0
0.2 0.4 0.6 0.8 0.2 0.4 0.6 0.8
Time Time

Entrega

Entrega la solución en un fichero tarea2b.m, la gráfica resultante en tarea2b.png.

Tarea 3: eliminación de tono

El fichero censurado.wav contiene un tono que impide escuchar el mensaje.

Utiliza el comando wavread() para cargar este audio y represéntalo con specgram
usando una ventana de N=256 muestras. Genera el espectrograma de la señal para
estimar la frecuencia del tono F0.

>>[y,Fo,bits]=wavread('censurado.wav');
>>sound(y,Fo)
>> specgram(y,256,Fo)

Elimina el tono usando un filtro de rechazo de banda que implementa la siguiente


función:

function [y] = quita_tono(x,F0,BW,Fs)


w0 = F0/(Fs/2);
bw = w0/BW;
[b,a] = pei_tseng_notch(w0,bw);
y = filter(b,a,x);

TEMA 10 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Moreira Vélez
Procesamiento de
Señales, Sonido e 05/07/2017
Imágenes Digitales Nombre: José Gabriel

Donde x es la señal a quitar al tono, F0 la frecuencia del tono que queremos eliminar,
BW en ancho de banda a filtrar y Fs la frecuencia de muestreo.

[x,Fo,bits]=wavread('censurado.wav');
%Aquí se puede cargar el audio.
sound(x,Fo)
%Aquí lo escuchamos.
m=length(x)
y=quita_tono(x,Fo,bits,m);
m2=length(y)
subplot(211) ,specgram(x, 2^nextpow2(window),Fo, window, window-step);
subplot(212) ,specgram(y, 2^nextpow2(window),8000, window, window-step);
sound(y,Fo)

A continuación genera el espectrograma de la señal con el tono eliminado.

Entrega

Entrega la solución en un fichero tarea3.m, la gráfica resultante en tarea3.png.


Tarea 4: efecto Doppler

Esta tarea es una continuación del trabajo propuesto en:


https://ses.library.usyd.edu.au/handle/2123/8244

Baja los ficheros siren_original.wav y siren_doppler.wav que contienen el sonido que


emite una sirena en reposo y en movimiento. El fichero siren_original.wav está
grabado en estéreo. Empieza utilizando una herramienta de edición de audio (p.e.
Audacity) para convertirlo a mono.

Carga los ficheros de sonido con wavread en las señales x1(t) y x2(t) y represéntalas
con subplot. Ten en cuenta que las muestras en el eje temporal estarán separadas
por t=ts=1/fs (inct).
[y2,fs1,bits2]=wavread('siren_original.wav');

TEMA 10 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Moreira Vélez
Procesamiento de
Señales, Sonido e 05/07/2017
Imágenes Digitales Nombre: José Gabriel

sound(y2,fs1)
[y4,fs2,bits4]=wavread('siren_doppler.wav');
sound(y4,fs2)

Utilizando el procedimiento visto en el trabajo anterior vamos a calcular la FT


muestreada de cada señal X(fm) de cada señal. Dado que se trata de un fichero de
audio no vamos a muestrear la frecuencia angular wn sino la frecuencia cíclica fm con
m=0,..., N-1. Esto quiere decir que f=fs/N.

Representa el valor absoluto de cada señal |X(fm)| en el intervalo:

Junto con sus correspondientes señales en el dominio temporal usando subplot (2


filas x 2 columnas).

TEMA 10 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Moreira Vélez
Procesamiento de
Señales, Sonido e 05/07/2017
Imágenes Digitales Nombre: José Gabriel

Calcula la frecuencia principal de cada sirena. Para obtener la frecuencia principal


de una sirena busca el valor máximo del valor absoluto del espectro |X(fm)| usando
el comando [M,I]=max(). Este comando nos devuelve el valor con mayor número de
ocurrencias M y su índice I. Una vez que tenga el índice de la frecuencia principal
puede conocer su frecuencia multiplicando I por f.

[M,I]=max(abs(xj1))
M = 0.34839
I = 181394
[M2,I2]=max(abs(xj2))
M2 = 0.34283
I2 = 75605

f1=I*i3
f2=I2*i4
f1 = 4.2630e+004
f2 = 1.7420e+004

f11=I*M
f22=I2*M2
f11 = 6.3196e+004
f22 = 2.5920e+004

Ten en cuenta que la sirena con efecto Doppler de nuestro ejemplo tendrá dos
frecuencias principales: una para cuando se acerca y otra para cuando se aleja. Para
los cálculos posteriores utiliza la frecuencia que el comando max haya encontrado
como la que tiene más ocurrencias.

f1 = 4.2630e+004
f2 = 1.7420e+004
f11 = 6.3196e+004
f22 = 2.5920e+004

TEMA 10 – Actividades © Universidad Internacional de La Rioja. (UNIR)


Asignatura Datos del alumno Fecha
Apellidos: Moreira Vélez
Procesamiento de
Señales, Sonido e 05/07/2017
Imágenes Digitales Nombre: José Gabriel

Indica cuál es la diferencia entre las frecuencias. Asumiendo que emisor y receptor
están en una línea recta, que el receptor no se mueve y que la velocidad del sonido es
340 m/seg, usa esta diferencia de frecuencias para determinar la velocidad de la
sirena (en km/h).

f1 = 4.2630e+004
f2 = 1.7420e+004
f11 = 6.3196e+004
f22 = 2.5920e+004

Entrega

Entrega la solución en un fichero tarea4.m, la gráfica resultante en tarea4.png y las


respuestas a las preguntas en respuestas.docx (no copiar el enunciado, solo poner las
respuestas).

TEMA 10 – Actividades © Universidad Internacional de La Rioja. (UNIR)