Un exercice avec Fourier sur Scilab : retrouver le son caché

Un exercice avec Fourier sur Scilab : retrouver le son caché
Objectif : Utiliser les théorèmes de Fourier pour déparasiter un son.
Mise en place de l’exercice :
A partir d’un son court (empereur.wav) donnant le nom d’un empereur romain, à l’aide de Scilab, je parasite le son
par un « tuuut » sur 3 fréquences. Je sauve ce son sous le nom empereur_tut.wav :
Signal « empereur.wav » (en 44100Hz – monocanal)
Spectre des fréquences
Algorithme Scilab parasitant ce signal :
Ligne 1 : Charge le signal de « empereur.wav » dans x. Dans y, les caractéristiques du signal.
Ligne 2 : On définit le vecteur temps dans t (y(8) = nb d’échantillons, y(8)/44100 = durée du signal)
Ligne 3 : Dans z, le « tuuut » sur les fréquences 250, 500 et 1000 Hz.
Ligne 4 : On ajoute le signal et le tuuut mis dans x.
Ligne 5 : on sauve le signal sous le nom « empereur_tut.wave » avec une fréquence d’échantillonnage de 44100Hz.
Signal « empereur_tut.wav » (en 44100Hz – monocanal)
Spectre des fréquences
On voit bien dans le spectre des fréquences les 3 pics correspondants aux « tuuuts ».
L’exercice :
L’étudiant est en possession de ce fichier empereur_tut.wav. Il doit débruiter le signal et dire de quel empereur il
s’agit…
Méthode attendue :
1- Analyser les fréquences du signal et trouver à peu près les fréquences des tuuuts:
En grossissant le spectre des fréquences, on voit les fréquences des tuuuts : environ 250, 500 et 1000Hz
2- Calculer les coefficients de Fourier du signal :
A=fft(x,-1); Les coefs complexes de Fourier sont dans A.
On peut les voir, tracer les parties imaginaire et réelle, le module..
Par exemple tracer les modules de A : plot(abs(A));
On constate le symétrie de Abs(A)). En y regardant de plus près, on peut voir quels sont les coefs « énormes » :
Le 1er pic : A(210 :240)
Le 2ème pic : A(440 :460)
Le 3ème pic : A(890 :910)
Il faut maintenant vérifier sur les coefs : Afficher la matrice D = abs(A) ;
Vers D(230) :
Il faudrait donc supprimer ces coefficients : A(215 :237)=0 ;
On fait pareil avec les 2 autres pics :
On peut annuler les coefs (2ème pic) : A(440 :464)=0 ;
On peut annuler les coefs (3ème pic) : A(896 :909)=0 ;
Voyons maintenant les modules de A : (plot(abs(A))
La partie gauche convient, mais le symétrique à
droite n’a pas été changé.
On peut faire comme précédement, oubien faire un
petit algorithme qui rend symétrique :
La 2ème partie de la matrice A (de n/2 à n) est conjuguée de la
première..
Voici maintenant ce qu’on obtient pour abs(A) :
Il ne reste plus qu’à obtenir le signal reconstruit à partir de ces
coefs :
x1=real(fft(A,1)); (seule la partie réelle est audible)
sound(x1,44100) ; permet d’entendre très bien le nom de
l’empereur … (avec un petit sifflement tout de même).
On peut sauver ce son x1 au format wave :
savewave('D:/sitefree/theme/musique/son/empereur_sol.wav',x1,44100);
Par curiosité, voir le signal et le
spectre de x1 :