Ce script permet de filtrer les sons

Telechargé par leotardadoun
%Ce script permet de filtrer les sons^
% Réalisé par Fofo Fidèle
clear all
clc
[Son Fech]= audioread("C:\Users\stone\Desktop\Sons_TNS\son_bruite1.wav");%sa permet de recuperer le son
%sound (Son,Fech);% sa permet de lire le son
Tech=1/Fech;
Nbech=size(Son,1), %T=66559*Tech;
temps=[0:Tech:(Nbech-1)*Tech];
Spectre=fft(Son);
frequence=[0:1/((Nbech-1)*Tech):1/Tech];
subplot(2,1,1),plot(temps,Son);
subplot(2,1,2),plot(frequence,abs(Spectre));
h=firls(300,[0 1400 1401 Fech/2]/(Fech/2),[1 1 0 0]);%passe bas
Son2=filter(h,1,Son);
sound (Son2,Fech);
figure;
subplot(2,1,1),plot(temps,Son);
subplot(2,1,2),plot(frequence,Son2);
%Programme permetant de filtrer un son
clear all
clc
[Son Fech]=audioread("M:\bluetooth\ff4ac5fb76564585b8efbe11dde0864a.mp3");% audioread permet de récupérer
le son et [Son Fech]permet d'avoir le nombre d'échantillon=Son et la fréquence d'échantillonnage
%sound(Son,Fech);%sound(y,Fs) permet de lire le son
Tech=1/Fech;
Nbech=size(Son,1);%size(A,dim) permet de retourner le nombre de colonne du son
T=(Nbech-1)*Tech;
temps=[0:Tech:T];
subplot(2,1,1),plot(temps,Son);
spectre=fft(Son);
frequence=[0:1/((Nbech-1)*Tech):1/Tech];
subplot(2,1,2),plot(frequence,abs(spectre));
h=firls(1000,[0 1699 1700 Fech/2]/(Fech/2),[0 0 1 1]);%passe haut
Son2=filter(h,1,Son);
sound(Son2,Fech);
figure;
subplot(2,1,1),plot(temps,Son);
subplot(2,1,2),plot(temps,Son2);
TRAVAUX PRATIQUE TNS
%Evaluation TP-TNS
%1- Générer un signal sinusoïdal (signal1), grâce à la fonction «sin», de fréquence F = 300 Hz
%la fréquence d’échantillonnage Fe est de 8000 Hz et le nombre d’échantillons étant N = 512.
clc
clear all
A1=4;
F1=300;
Fe=8000;
N1=512;
Tech1=1/Fe;
T1=(N1-1)*Tech1;
temps1=[0:Tech1:T1];
signal1=A1*sin(2*pi*F1*temps1);
figure;
plot(temps1,signal1,'r');
legend('signal1');
xlabel('Echantillon');
ylabel('Amplititude');
grid on % sa permet de quadriller le graphe
%Nbech=size(signal1,2); sa permet de vérifier si le nombre d'échantillon est vraiment 512
% 2-Générer le spectre de ce signal grâce à la fonction « fft ».
spectre1=fft(signal1);
frequence1=[0:1/((N1-1)*Tech1):1/Tech1];
figure;
plot(frequence1,abs(spectre1),'r')
grid on
title('spectre1');
% 3-Représentez sur une même figure le signal et son spectre
figure;
subplot(2,1,1),plot(temps1,signal1,'g')
grid on
legend('signal1');
xlabel('Echantillon');
ylabel('Amplititude');
subplot(2,1,2),plot(frequence1,abs(spectre1),'r')
grid on
title('spectre1');
%4- Générer un autre signal sinusoïdal (signal2), grâce à la fonction «sin», de fréquence F = 800 Hz ; la fréquence
d’échantillonnage Fe est de 8000 Hz et le nombre d’échantillons étant N = 512.
A2=4;
F2=800;
Fe=8000;
N2=512;
Tech2=1/Fe;
T2=(N2-1)*Tech2;
temps2=[0:Tech2:T2];
signal2=A2*sin(2*pi*F2*temps2);
figure;
plot(temps2,signal2,'r');
legend('signal2');
xlabel('Echantillon');
ylabel('Amplititude');
% 5-Générer le spectre de ce signal grâce à la fonction « fft ».
spectre2=fft(signal2);
frequence2=[0:1/((N2-1)*Tech2):1/Tech2];
figure;
plot(frequence2,abs(spectre2),'r')
grid on
title('spectre2');
% 6-Représentez sur une même figure le signal et son spectre
figure;
subplot(2,1,1),plot(temps2,signal2,'g')
grid on
legend('signal2');
xlabel('Echantillon');
ylabel('Amplititude');
subplot(2,1,2),plot(frequence2,abs(spectre2),'r')
grid on
title('spectre2');
%7-Générer un troisième signal (signal3) qui est la somme échantillon par échantillon de signal1 et de signal2.
signal3=signal1+signal2;
figure;
plot(signal3);
grid on
legend('signal3');
xlabel('Echantillon');
ylabel('Amplititude');
%8- Générer le spectre de ce signal grâce à la fonction « fft ».
spectre3=fft(signal3);
figure;
plot(abs(spectre3));
grid on
title('spectre3');
% 9-Représentez sur une même figure le signal et son spectre
figure;
subplot(2,1,1),plot(signal3);
grid on
legend('signal3');
xlabel('Echantillon');
ylabel('Amplititude');
subplot(2,1,2),plot(abs(spectre3));
title('spectre3');
% 10-Synthétisez trois différents filtres :
% -Un passe bas de bande passante (0Hz-500Hz)
h1=firls(200,[0 500 501 Fe/2]/(Fe/2),[1 1 0 0]);
% -Un passe haut de bande passante (500Hz plus Hz)
h2=firls(200,[0 499 500 Fe/2]/(Fe/2),[0 0 1 1]);
% -Un passe haut de bande passante (2000Hz plus Hz)
h3=firls(200,[0 1999 2000 Fe/2]/(Fe/2),[0 0 1 1]);
%11-Appliquez ces différents filtres au signal3.
% Affichez à chaque fois, côte à côte, le spectre du signal d’origine et celui du signal filtré Que constatez-vous ?
Interprétez ces résultats.
signal3a=filter(h1,1,signal3);
figure;
subplot(2,1,1),plot(abs(spectre3));
title('spectre3');
subplot(2,1,2),plot(signal3a);
title('signal3a');
%signal3b
signal3b=filter(h2,1,signal3);
figure;
subplot(2,1,1),plot(abs(spectre3));
title('spectre3');
subplot(2,1,2),plot(signal3b);
title('signal3b');
% signal3c
signal3c=filter(h3,1,signal3);
figure;
subplot(2,1,1),plot(abs(spectre3));
title('spectre3');
subplot(2,1,2),plot(signal3c);
title('signal3c');
1 / 4 100%

Ce script permet de filtrer les sons

Telechargé par leotardadoun
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !