Etude d'un son (spectrogramme)
Répondre à la discussion
Affichage des résultats 1 à 27 sur 27

Etude d'un son (spectrogramme)



  1. #1
    gav91

    Etude d'un son (spectrogramme)


    ------

    Bonjour,
    Je cherche à acquérir des informations sur un son enregistré (une musique) et en particulier à étudier son spectrogramme. Problème: je n'arrive pas à "extraire" les données trouvés avec un logiciel genre Audacity sous forme de tableau (temps, fréquence, amplitude) que je pourrais ensuite traiter sur un programme python...
    Sauriez vous comment faire ? Ou alors, est-il possible de calculer les fréquences instantanées et amplitudes d'un signal quelconque afin que je puisse construire le spectrogramme moi même ?
    Merci d'avance de vos réponses

    -----

  2. #2
    rsimon12

    Re : Etude d'un son (spectrogramme)

    Bonsoir,
    De mémoire, l'une des bibliothèques de Matlab permet un import direct des fichiers waves.
    Simon - Chef de service énergies

  3. #3
    lucas.gautheron

    Re : Etude d'un son (spectrogramme)

    Que pensez vous de ceci : https://docs.python.org/2/library/wave.html

    A+
    Étonnant, non ?

  4. #4
    gav91

    Re : Etude d'un son (spectrogramme)

    Merci de vos réponses, mais je ne crois pas qu'elle me permettent d'obtenir les données du types fréquences instantanées et amplitudes qui n'apparaissent pas dans le fichier wave de base... Peut on les calculer "a la main" ?

  5. A voir en vidéo sur Futura
  6. #5
    LPFR

    Re : Etude d'un son (spectrogramme)

    Bonjour.
    Avez-vous cherché Audacity+spectrogram dans Google ?
    Vous trouverez des pages comme celle ci :
    http://manual.audacityteam.org/o/man...eferences.html
    Au revoir.

  7. #6
    Boumako
    Invité

    Re : Etude d'un son (spectrogramme)

    Bonjour

    Je ne connais pas le logiciel Audacity, mais sur celui que j'utilise il est possible de sauvegarder au format txt, les valeurs correspondent alors directement à la forme d'onde.

  8. #7
    lucas.gautheron

    Re : Etude d'un son (spectrogramme)

    Je connais pas la définition de ces grandeurs.
    Peut être jugerez vous la partie "rappels" de ce PDF éclairante : http://www.atiam.ircam.fr/Archives/Stages0304/emiya.pdf
    Ca peut aider si vous calculez toutà la main.
    Sinon : http://forum.audacityteam.org/viewto...p?f=17&t=61574

    A+
    Étonnant, non ?

  9. #8
    gav91

    Re : Etude d'un son (spectrogramme)

    J'ai déjà fait des spectrogrammes sur audacity, ce n'est pas le problème... Le problème est qu'on ne peut pas, il me semble, exporter les données en dehors du logiciel, et donc on ne peut pas les exploiter...

  10. #9
    lucas.gautheron

    Re : Etude d'un son (spectrogramme)

    Vous avez lu le lien que je vous ai donné au moins ?
    Étonnant, non ?

  11. #10
    Boumako
    Invité

    Re : Etude d'un son (spectrogramme)

    Citation Envoyé par Boumako Voir le message
    Bonjour

    Je ne connais pas le logiciel Audacity, mais sur celui que j'utilise il est possible de sauvegarder au format txt, les valeurs correspondent alors directement à la forme d'onde.
    Après vérification on peut le faire aussi avec ce logiciel : http://manual.audacityteam.org/o/man...ta_export.html

  12. #11
    gav91

    Re : Etude d'un son (spectrogramme)

    Alors j'ai tout bien lu et tout bien testé. Néanmoins, Boumako, exporter les données ne nous donne que l'amplitude du signal ce qui n'est pas suffisant pour moi... Lucas.gautheron, le spectre que l'on peut exporter est le spectre "global" du signal, qui ne semble donc pas exploitable, ou alors peut être en faisant le spectre pour chaque petite période ? Mais j'ai peur que ça ne soit trop long à faire, et surtout pas assez précis...
    Dernière modification par gav91 ; 28/12/2014 à 10h09.

  13. #12
    Boumako
    Invité

    Re : Etude d'un son (spectrogramme)

    Oui, tu as la forme d'onde. A partir de ces données tu peux faire une FFT, sur Excel par exemple, pour récupérer le spectrogramme.

  14. #13
    lou_ibmix_xi

    Re : Etude d'un son (spectrogramme)

    Pourquoi passer par audacity (ou n'importe quoi d'autre).
    Lire un fichier WAV avec python (déjà donné je crois)
    Calculer une FFT avec python
    Google reflex...

  15. #14
    lou_ibmix_xi

    Re : Etude d'un son (spectrogramme)

    le spectre que l'on peut exporter est le spectre "global" du signal, qui ne semble donc pas exploitable, ou alors peut être en faisant le spectre pour chaque petite période ? Mais j'ai peur que ça ne soit trop long à faire, et surtout pas assez précis...
    Heisenberg a encore frappé...
    Tu ne feras pas de miracle, tu dois trouver le compromis entre résolution fréquentielle et localisation temporelle pour ton application.

  16. #15
    phuphus

    Re : Etude d'un son (spectrogramme)

    Bonjour,

    petite confusion de vocabulaire, il me semble. Gav91, ce qui t'intéresse est de récupérer les données d'un sonagramme ("spectrogram" en anglais) ; en français, "spectrogramme" sera souvent compris comme "spectre".

    Tu parles de fréquence instantanée, c'est juste une interprétation un peu excessive de ce que donne un sonagramme, ou bien tu as réellement un signal genre modulation de fréquence pour lequel tu veux récupérer la fréquence instantanée ? Dans ce cas, la transformée de Hilbert est plus indiquée. Tu peux y arriver via Fourier.

    Si c'est réellement du temps / fréquence que tu veux faire, dès que tu sais faire une FFT c'est bon. Je ne connais pas la syntaxe Python, mais pour l'algorithme je peux t'aider (avec quelques astuces pour aller un peu au délà du compromis temps / fréquence brut d'un sonagramme fait avec des FFT simples).
    Tu as aussi d'autres outils à disposition (pas vraiment du temps / fréquence, mais OK pour l'analyse quand on a un peu de recul) :
    - ondelettes
    - Wigner-Ville
    - etc.

    Et pour rester sur ton idée de départ, tu fais juste une capture d'écran, et dans ton programme Python tu as une échelle de couleur pour la correspondance couleur / niveau...
    Dernière modification par phuphus ; 30/12/2014 à 14h44.

  17. #16
    gav91

    Re : Etude d'un son (spectrogramme)

    Merci phuphus de cette petite rectification! En fait je ne cherche pas particulièrement à déterminer les fréquences instantanées du signal mais bien à construire un sonagramme temps/frequence/intensité que je pourrais étudier après... Savoir faire des FFT est donc suffisant ?

  18. #17
    phuphus

    Re : Etude d'un son (spectrogramme)

    Bonsoir,

    oui, juste avec des FFT c'est bon. Un sonagramme, c'est :
    - un découpage du signal en tranches sucsessives (ou bien avec un recouvrement, ça devra figuer dans les paramètres de ton algorithme)
    - un éventuel bourrage de zéros pour chaque tranche histoire de casser (autant que faire se peut) le compromis temps / fréquence
    - une FFT, et exploitation des amplitudes (donc, de la manière la plus simple : normer la résultat de la FFT en divisant par la moitié du nombre de points, et prendre l'argument du résultat fréquence par fréquence)
    - passer en échelle log


    A ce stade, tu as donc un tableau à deux dimensions (temps via le découpage en tranches du début et fréquence via la FFT). Y'a plus qu'à associer aux niveaux en dB une échelle de couleurs pour avoir une image. L'algo en Matlab fait quelques lignes, je pourrai voir une fois revenu de vacances si j'en ai un simple tout prêt à te filer.

  19. #18
    gav91

    Re : Etude d'un son (spectrogramme)

    Merci beaucoup phuphus ! J'ai plus qu'à maintenant
    (et bonne année!)

  20. #19
    gav91

    Re : Etude d'un son (spectrogramme)

    Alors, je me suis repenché dessus, et une question me vient en tête... Comment découper le signal en tranche? Enfin, quel est le nombre optimal de points à prendre pour que la FFT soit la plus juste possible?

  21. #20
    LPFR

    Re : Etude d'un son (spectrogramme)

    Bonjour
    À la louche, ça dépend de combien vous voulez descendre en fréquence analysée. Si vous vous voulez vous arrêter à 20 Hz il faut un temps de signal de 1/20 de seconde.
    Mais il y a des subtilités, comme celle de ne pas prendre une fenêtre tout ou rien, mais avec des bords qui s’atténuent doucement. Suivant ce que l’on choisit, la durée et la forme de la fenêtre, le résultat varie.
    Au revoir.

  22. #21
    phuphus

    Re : Etude d'un son (spectrogramme)

    Bonjour,

    comme l'écrit LPFR, la résultat va non seulement dépendre de la taille de la "tranche", mais aussi si on fenêtre ou pas. Ce sont des paramètres que tu dois inclure dans ton programme.

    Basiquement :
    - tu as un signal de 10 000 échantillons
    - tu le découpes, par exemple, en 199 "tranches" :
    . Tranche 1 : échantillons 1 à 100
    . Tranche 2 : échantillons 51 à 150 (on a donc du "recouvrement" !)
    . Tranche 3 : échantillons 101 à 200
    - chaque tranche est ensuite "apodisée", donc multipliée dans le domaine temporel par une fenêtre. Pas de multiplication équivaut en fait à une fenêtre rectangulaire. Quelques fenêtres communes : Hanning, Hamming, triangulaire, Blackmann, etc.
    - tu fais ensuite un éventuel "bourrage de zéros", en ajoutant des 0 à chaque tranche apodisée de manière à augmenter ta précision fréquentielle (par exemple, chaque tranche de 100 échantillons est complétée par 100 nouveaux échantillons égaux à 0)
    - FFT
    - niveaux
    - code couleur
    - image
    - affichage

    Si tu connais Matlab, le mieux est de commencer par là : tu auras tous les outils de base pour faire les étapes décrites ci-dessus, avec grosso modo une étape = une ligne de commande. Ca te permet de dégrossir l'algorithme avant de mettre les mains dans la graisse en Python.

  23. #22
    Zatrzz

    Re : Etude d'un son (spectrogramme)

    Bonsoir

    Je travaille moi aussi sur l'implémentation d'un sonagramme en Python. J'ai lu le sujet, et j'aurais besoin de quelques conseils :3
    J'ai déjà fait un programme pour découper le signal en fenêtres, j'obtiens une liste de fenêtres du signal. Puis j'applique à chacune une fonction (Hamming ou autre), et ensuite à chacune je fais la FFT.
    Mon programme de FFT renvoie :
    (liste des fréquences présentes dans le signal (enfin ce que scipy_fftfreq donne), liste des amplitudes associées à ces fréquences).

    J'ai donc une liste [fenetre0_mplf, fenetre1_mplf, fenetre2_mlpf,..] (mlpf = modifiée par une fonction), une liste [freq(0), freq(1), freq(2),...] avec freq(n) la liste des fréquences présentes dans fenetre(n).
    Bon, tout à coup il me semble que freq(n) ne varie pas selon n, puisque les fenêtres ont toutes le même nombre d'échantillons (je ne compte pas la dernière) et la même fréquence d'échantillonnage, je me trompe ? Dans ce cas, ma liste des fréquences est inutile, j'ai juste besoin de freq(0) pour avoir l'axe des ordonnées de mon sonogramme ?

    Et j'ai aussi une liste [ampli(0), ampli(1),...] avec ampli(n) la liste des amplitudes associées aux fréquences présentes dans freq(n). (ampli(n)[i] amplitude de la fréquence freq(n)[i])

    A partir de là, j'ai longuement cherché comment plotter ordonnée fréquence / abscisse temps / points d'intersection spectre en couleur. Tout ce que je trouve, c'est d'utiliser la fonction specgram de matplotlib, mais je tiens à le faire moi-même... du coup, à part utiliser une matrice et matshow() pour tout représenter, je ne vois pas comment faire. Un peu d'aide ? :3
    Si je le faisais sur papier, je verrais ça comme une grille à colorier avec des axes un peu spéciaux, mais pythoniquement parlant ?

    D'ailleurs, avec specgram, on doit juste rentrer la liste des amplitudes (data) et la fréquence d'échantillonnage, et la longueur des fenêtres que l'on veut, éventuellement la fonction de découpage désirée, et specgram s'occupe de faire le découpage, la FFT de tout le monde et la représentation, c'est bien ça ? Je me pose surtout la question sur la FFT incluse dans specgram.

    Merci à phuphus (tu m'avais l'air bien renseigné !) ou d'autres qui voudront répondre ^^

  24. #23
    phuphus

    Re : Etude d'un son (spectrogramme)

    Bonsoir,

    tu as fait le plus dur !

    La fréquence d'échantillonnage et la taille de tes tranches te donne la durée de chaque tranche, et donc l'instant associé à chaque tranche : tu as ton axes des abscisses.
    Comme tu le dis, l'axe des ordonnées se réduit à freq(0), et pour la dernière tranche il suffit de compléter avec des 0 pour avoir le même nombre de points et donc le même vecteur freq.
    Ensuite, je ne connais pas du tout Python, donc je ne sais pas ce qui est proposé pour afficher des images. Il faut que tu prennes un dégradé de couleurs (pour commencer : fais ça en niveaux de gris, c'est plus simple !) et que tu associes à chaque amplitude une couleur. Pour que ce soit propre :
    - une échelle log est préférable
    - fixer la dynamique aide (donc par exemple : -80 dB = blanc / 0 dB = noir / et ce qui est en dessous de 80 dB = blanc / tout ce qui est au dessus de 0 dB = noir)

    Le dégradé par défaut de Matlab ('Jet') est très sympa :
    http://stackoverflow.com/questions/7...p-to-grayscale

  25. #24
    Zatrzz

    Re : Etude d'un son (spectrogramme)

    Bonsoir ^^

    Merci de tes conseils
    Finalement, le seul moyen que j'aie trouvé, c'est de considérer l'amplitude comme une fonction de 2 variables, la fréquence et le temps, parce que Python sait faire un tracé de fonctions de deux variables.

    Voilà ce que j'obtiens pour un "a" assez long :

    file_def_zommed.jpg
    (ici, fonction de fenêtrage rectangulaire)
    file_def_zoomed_hann.jpg
    (ici, fonction de fenêtrage de Hann)
    (! l'image est zoomée sur la partie inférieure, celle où il y a des couleurs intéressantes, sinon le haut était bleu foncé partout)
    (on peut remarquer la longueur de 30ms de mes fenêtres temporelles sur lesquelles j'ai effectué une FFT à chaque fois)


    Et voilà la version d'Audacity :
    file_def_audacity.png

    Je remarque qu'à peu près au même endroit de temps, et sur une même durée, la couleur est très rouge, c'est l'endroit où le a est parlé.

    Néanmoins, il y a de nettes différences avec la coloration d'Audacity... notamment sa grande zone blanche, où est l'équivalent chez moi ? Peut-être juste un pb d'échelle ?

    Que penses-tu de mon rendu de spectrogramme ? ^^'

  26. #25
    LPFR

    Re : Etude d'un son (spectrogramme)

    Bonjour.
    Si vous voulez comparer de choses, commencez par utiliser les mêmes échelles. Le « truc » blanc chez Audacity comprend toutes les basses fréquences de chez vous. Et, probablement, le blanc correspond à une amplitude plus grande que le rouge.
    Au revoir.

  27. #26
    karimarchi

    Re : Etude d'un son (spectrogramme)

    bonjour
    jai la méme probléme comme vous je n'arive pas a enregistrer les donner de le Spectrograms sous la forme text car ca et peut donne des image sonore avec l'exel plus simple et plus lisible Nom : sssssss.JPG
Affichages : 495
Taille : 61,9 Ko
    svp si vous cannais un logiciel qui nous permétre de enregistrer spectrograms sous forme text tabulair aider nous

  28. #27
    karimarchi

    Re : Etude d'un son (spectrogramme)

    Citation Envoyé par Boumako Voir le message
    Bonjour

    Je ne connais pas le logiciel Audacity, mais sur celui que j'utilise il est possible de sauvegarder au format txt, les valeurs correspondent alors directement à la forme d'onde.
    bonjour svp est-ce que tu peut nous donner le nom de votre logiciel qui vous permetre de souvgarder au format txt

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/07/2014, 10h16
  2. Brillance d'un son , spectrogramme
    Par apdg dans le forum Physique
    Réponses: 1
    Dernier message: 02/03/2013, 15h14
  3. Coordonnée de Points d'un spectrogramme [Logiciel audio]
    Par invite49e47ba5 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 20/06/2012, 22h02
  4. Spectrogramme de Vénus
    Par Dahut dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 0
    Dernier message: 18/10/2011, 11h41
  5. Analyse spectrogramme
    Par inviteb6db8851 dans le forum Chimie
    Réponses: 18
    Dernier message: 17/03/2011, 17h38