Electronics">
Nothing Special   »   [go: up one dir, main page]

Tercera Práctica Final

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 16

UNIVERSIDAD CATÓLICA DE SANTA MARÍA

FACULTAD DE CIENCIAS E INGENIERÍAS FÍSICAS Y FORMALES

PROGRAMA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

TEMA: Practica N°3

Procesamiento De Señales De Audio

CURSO: Procesamiento Digital de Señales

INTEGRANTE:

Colcas Dueñas Jean Carlos

Grupo: lunes 9:00-11:00 am

AREQUIPA – 2015
UCSM-PPIE
PROCESAMIENTO DIGITAL DE SEÑALES
TERCERA PRÁCTICA DE LABORATORIO
PROCESAMIENTO DE SEÑALES DE AUDIO

Jean Carlos Colcas Dueñas

I. OBJETIVOS
 Procesar señales de audio
 Implementar efectos sobre dichas señales

II. ACTIVIDADES

1. Crear y guardar un archivo de audio .wav de al menos 30 seg de duración y frecuencia de


muestreo arriba de 11KHz

>> fs=11025;
>> y=wavrecord(10*fs,fs);
>> sound(y,fs)
>> wavwrite(y,fs,'ejemplo.wav')

2. Abra el archivo y cárguelo en un vector y, almacene también fs

>>[y fs]=wavread('ejemplo.wav'); %y vector donde se carga el sonido; fs frecuencia de muestreo

3. Determinar el número de muestras N usando el comando length

>> N=length(y)

ans =

110250

4. Definir la mitad del número de muestras


>> fl=round(N/2)
fl =

55125
5. Graficar la señal en el tiempo y el espectro en frecuencias

>> subplot(2,1,1); %Grafica de Sonido en el tiempo.


>> plot(y,'r');axis([1000,5000,-1,1]);xlabel('Tiempo');ylabel('Amplitud');title('Señal en el tiempo');
>> espectro=abs(fftshift(fft(y)));
>> [menor pri]=sort(espectro); %Ordena el espectro de menor a mayor
>> if 2*fl==N %Detector de Frecuencias medias de sonido
fd1=-fl;
fd2=fl-1;
else 2*fl>n
fd1=1-fl;
fd2=fl-1;
end
>> subplot(2,1,2); %Grafica de espectro de señal
>> plot(fd1:1:fd2,espectro);axis([0,5000,0,menor(n)]);xlabel('Frecuencia');ylabel('Amplitud');
title('Señal en Frecuencia');
>> sound(y,fs);

Señal en el tiempo
1

0.8

0.6

0.4

0.2
Amplitud

-0.2

-0.4

-0.6

-0.8

-1
1000 1500 2000 2500 3000 3500 4000 4500 5000
Tiempo

Señal en Frecuencia

1000

800
Amplitud

600

400

200

0
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
Frecuencia

6. Generar el efecto de reverberación


>> a=0.5; %Magnitud de la reverberación
>> R=5000; %Numero de muestras para el efecto
>> x=zeros(size(y));
>> for i=1:1:R+1
x(i) = y(i); %vector de efecto
end
>> for i=R+1:1:n
x(i)= y(i)+ a*y(i-R); %sonido mas efecto
end;
>> sound(x,fs);
>> end

7. Repita el paso 6 con al menos dos valores diferentes de a y R, consigne en cada caso los
espectros en frecuencia, compare con el de la señal original, comente los resultados
obtenidos

SEÑAL ORIGINAL
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 2 4 6 8 10 12
4
x 10
a=0.1,R=1000
1.5

0.5

-0.5

-1

-1.5
0 2 4 6 8 10 12
4
x 10

a=0.6,R=2000
1.5

0.5

-0.5

-1

-1.5
0 2 4 6 8 10 12
4
x 10
a=0.7,R=3000
2

1.5

0.5

-0.5

-1

-1.5

-2
0 2 4 6 8 10 12
4
x 10
a=0.5,R=1000
1.5

0.5

-0.5

-1

-1.5
0 2 4 6 8 10 12
4
x 10

a=0.3,R=6000
1.5

0.5

-0.5

-1

-1.5
0 2 4 6 8 10 12
4
x 10
a=10,R=6000
15

10

-5

-10

-15
0 2 4 6 8 10 12
4
x 10

8. Aplique un filtro pasabajos de orden 30 con frecuencia de corte 0.20 (1/5 de Fs) y ganancia
0.4

Wn = .20; %Frecuencia de Corte. 0


N = 30; %Grado del filtro
LP = fir1(N,Wn); %filtro pasa bajos
gLP = 0.4
y1 = conv(LP,y); %convolucion señal y filtro
fre=round(length(y1)/2);
if 2*fre==length(y1)%Detector de Frecuencias medias de sonido
fd3=-fre;
fd4=fre-1;
else 2*fre>length(y1)
fd3=1-fre;
fd4=fre-1;
end
yC= gLP * y1; %Señal por filtro pasa baja
espectrobajos=abs(fftshift(fft(yC)));%frecuencias
sound(yC,fs)
0.5

0.4

0.3

0.2

0.1

-0.1

-0.2

-0.3

-0.4

-0.5
0 2 4 6 8 10 12
4
x 10

>> Untitled3 El sonido se escucha más bajo porque al reducirle la ganancia del
gLP = sonido , este baja y con el filtro pasa bajos solo dejamos pasar los
0.4000 sonidos de baja frecuencia atenuando los de alta frecuencia

9. Aplique un filtro pasabanda de orden 30 con frecuencias de corte 0.20 y 0.5 y ganancia 1.5

Wn1 = [.20, .50]; %Frecuencias de corte


BP = fir1(N,Wn1); %Filtro Pasa bandas
gBP = 1.5;
y2 = conv(BP,y); %convolucion señal y filtro
yB= gBP * y2; %Señal por filtro pasa banda
espectrobanda=abs(fftshift(fft(yB)));%frecuencias
sound(yB,fs)
0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8
0 2 4 6 8 10 12
4
x 10
>> pasabanda En este caso el tiempo de duración del sonido es mas corto debido a que el
ancho de la frecuencia de este es corto wn1=[.20, .05] y también se escucha
menores a 0.2 y atenuando las señales mayores a 0.5

10. Aplique un filtro pasaaltos de orden 30 con frecuencias de corte 0.5 y ganancia 1.5

Wn2 = .50; %Frecuencia de corte


HP = fir1(N,Wn2,'high');%filtro pasa altas
gHP = 1.5;
y3 = conv(HP,y); %convolucion señal y filtro
yA= gHP * y3; %Señal por filtro pasa altas
espectroaltas=abs(fftshift(fft(yA)));%frecuencias
sound(yA,fs)
0.5

0.4

0.3

0.2

0.1

-0.1

-0.2

-0.3

-0.4
0 2 4 6 8 10 12
4
x 10
>> pasaaltos
El sonido es mas bajo por solo deja pasar las frecuencias más altas y al atenuar todas las demás el
sonido se reduce

11. Recupere la señal original a partir de las señales filtradas

yD = yA + yB + yC; %Suma de señales filtradas


espectrotodo=abs(fftshift(fft(yD)));
sound(yD,fs)
plot(yD)

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 2 4 6 8 10 12
4
x 10
Aquí está la unión de todas la graficas también se puede comprobar en el audio previamente ya
cargado

12. Muestre los espectros en frecuencia de los filtros aplicados y de la señal original
>> subplot(4,1,1)
>> plot(fd3:fd4,espectroaltas);xlabel('Frecuencia');ylabel('Amplitud');
title('Señal en Frecuencia Pasa Altas');
>> subplot(4,1,2)
>> plot(fd3:fd4,espectrobanda,'r');xlabel('Frecuencia');ylabel('Amplitud');
title('Señal en Frecuencia Pasa Banda');
>> subplot(4,1,3)
>> plot(fd3:fd4,espectrobajos,'k');xlabel('Frecuencia');ylabel('Amplitud');
title('Señal en Frecuencia Pasa Bajos');
>> subplot(4,1,4)
>> plot(fd3:fd4,espectrotodo);xlabel('Frecuencia');ylabel('Amplitud');
title('Señal en Frecuencia Completa');

Señal en Frecuencia Pasa Altas


50

40
Amplitud

30

20

10

0
-6 -4 -2 0 2 4 6
Frecuencia 4
x 10
Señal en Frecuencia Pasa Banda
150

100
Amplitud

50

0
-6 -4 -2 0 2 4 6
Frecuencia 4
x 10
Señal en Frecuencia Pasa Bajos
500

400
Amplitud

300

200

100

0
-6 -4 -2 0 2 4 6
Frecuencia 4
x 10
Señal en Frecuencia Completa
500

400
Amplitud

300

200

100

0
-6 -4 -2 0 2 4 6
Frecuencia 4
x 10
13. Adicione ruido blanco gaussiano a la señal original y reprodúzcala nuevamente

% y el vector de señal,
%N el número de muestras,
%P potencia del ruido;
N=length(y)
b=rand(N,1);
P=1.11111;
fi=2*pi*rand(N,1);
r=sqrt(-2*P*log(1-b));
ruido=r.*cos(fi);
yruido =y+ruido;
sound(yruido)

P=1.11111 el sonido es muy poco perceptible


P=0.00001 el sonido se escucha normal con un pequeño sumbido

El ruido se escucha como un sonido de estática entre más grande sea P el ruido se ira
escuchando mucho mas

14. Grafique la señal original y la señal con ruido en el tiempo, comente

subplot(2,1,1); %Grafica de Sonido en el tiempo.


plot(y,'r');
axis([1000,5000,-1,1]);
xlabel('Tiempo');
ylabel('Amplitud');
title('Señal en el tiempo');
espectro=abs(fftshift(fft(y)));
[menor pri]=sort(espectro); %Ordena el espectro de menor a mayor
if 2*fi==N %Detector de Frecuencias medias de sonido
fd1=-fi;
fd2=fi-1;
else 2*fi>N
fd1=1-fi;
fd2=fi-1;
end

subplot(2,1,2); %Grafica de Sonido en el tiempo.


plot(yruido,'b');

xlabel('Tiempo');
ylabel('Amplitud');
title('Señal con ruido');
espectro1=abs(fftshift(fft(yruido)));
[menor pri]=sort(espectro1); %Ordena el espectro de menor a mayor
if 2*fi==N %Detector de Frecuencias medias de sonido
fd1=-fi;
fd2=fi-1;
else 2*fi>N
fd1=1-fi;
fd2=fi-1;
end
P=0.00001
Señal en el tiempo
1

0.8

0.6

0.4

0.2

Amplitud
0

-0.2

-0.4

-0.6

-0.8

-1
1000 1500 2000 2500 3000 3500 4000 4500 5000
Tiempo

Señal con ruido


1.5

0.5
Amplitud

-0.5

-1

-1.5
0 2 4 6 8 10 12
Tiempo 4
x 10

P=1.111111
Señal en el tiempo
1

0.8

0.6

0.4

0.2
Amplitud

-0.2

-0.4

-0.6

-0.8

-1
1000 1500 2000 2500 3000 3500 4000 4500 5000
Tiempo

Señal con ruido


6

2
Amplitud

-2

-4

-6
0 2 4 6 8 10 12
Tiempo 4
x 10
15. Grafique el espectro en frecuencia de la señal original y la señal con ruido, comente

Lab ftp ships….

espectro en frecuencia de la señal original

espectro en frecuencia de la señal con ruido

Aquí podemos ver como cambia la señal original sin ruido con la señal ruidosa el espectro tiene una
variacion muy grande ya que el ruido que esta en la segunda señal esta con un P=1.100001 lo que
hace que el ruido sea muy fuerte y casi inperseptible la señal original
CONCLUSIONES

Emita al menos cinco conclusiones sobre las operaciones implementadas

• El comando wavrecord es muy importante para el procesamiento de audio ya que con ello
podemos hacer nuestras grabaciones y guardarlas para luego poder manipularlas además es
muy sencillo de usar.

• El comando wavreades muy practicoy fácil de usar ya que con ello podemos leer sonidos
guardados o externos al matlab de los cuales podemos extraer sus parámetros.

• Manipular los audios en Matlab es muy sencillo ya que podemos crear efectos como la
reverberación o el filtrado.

• El ruido es un problema ya que esta esta introducido siempre en el audio analógico.

• En esta práctica vimos como la potencia en el ruido puede ocasionar la pérdida total del
audio original o al menos una distorsión en ella.

También podría gustarte