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 :
© Copyright 2024 Paperzz