Discrete Fourier Transform : Let's play with the audio spectrum

refl Messages postés 4 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 26 septembre 2016 - 26 sept. 2016 à 21:06
 refl - 30 sept. 2016 à 20:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/101643-discrete-fourier-transform-let-s-play-with-the-audio-spectrum

Milles excuses. Un mauvais réflexe… Alors, en français :

Petite application pour calculer le spectre d’un fichier audio (.wav) au moyen de la Transformée de Fourier Discrète en utilisant l’algorithme de la Transformée de Fourier Rapide.

Je ne charge pas le fichier WAV en mémoire : Je le parcours octet par octet et je calcule les coefficients de la Transformée de Fourier Discrète au fur et à mesure. Je ne stocke que la moitié des coefficients. L’autre moitié, c’est le conjugué complexe… Tout simplement.

Une fois que j’ai les coefficients (le spectre), je crée un fichier bitmap. Comment lire le bitmap : De gauche à droite, le temps qui passe. De bas en haut les fréquences (bas = basses fréquences, haut = hautes fréquences). La couleur donne une indication sur l’intensité de la fréquence (du noir au blanc en passant par une gamme de couleurs froides (bleus > violets) vers des couleurs chaudes (rouges > jaunes)).

Le programme permet d’intervenir directement sur les coefficients de la TFD via un fichier bitmap (256 couleurs) qui s’appliquera comme un calque sur le spectre.
/!\ Ce fichier BMP filtre doit avoir les mêmes dimensions que le BMP du spectre audio.

Deux possibilités sont offertes :

1/ Incruster des images ou des messages dans le spectre.
Dans l’exemple fournis, j’insère un petit texte dans les hautes fréquences. Si tu cherches « stripes spectrogram » sur youtube, tu auras un autre exemple de ce qui est possible de faire.

2/ Filtrer le fichier audio.
Permet de supprimer (ou de doubler) la valeur des coefficients du spectre. Il faut jongler avec deux instances de Paint pour concevoir le fichier filtre afin de bien positionner les pixels du filtre sur le coefficient à modifier. Bon, je sais, c’est pas génial comme méthode. C’est pour cette raison que je fournis un exemple. Le gris (valeur de 128) = On ne touche pas à la valeur du coefficient. Le noir (valeur 0) = On annule le coefficient. Le blanc (valeur 255) = On double la valeur du coefficient. On voit qu'il s'agit d'un facteur de 0 à 2.
Ainsi, tu peux éliminer des fréquences parasites (comme les sifflements aiguës qui se traduisent par des lignes horizontales dans le spectre) ou des extraits (dans l’exemple que je fournis, j’efface les passages où le gars tape dans les mains).

Enfin, à partir du spectre ainsi filtré, je reconstruis le fichier WAV en faisant la transformée inverse (Transformée de Fourier Discrète Inverse).

Voilà, j’espère que cela vous sera utile…
Si vous avez des questions, n’hésitez surtout pas !
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
29 sept. 2016 à 10:12
bonjour
Et en français ça donne quoi ?
Car tu es sur un site francophone et tout le monde ne maitrise pas la langue de Shakespeare
Rejoignez-nous