IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement du signal Discussion :

Analyse fréquentielle d'un son


Sujet :

Traitement du signal

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Points : 49
    Points
    49
    Par défaut Analyse fréquentielle d'un son
    Bonjour, j'essaie de distinguer des voyelles au niveau fréquentiel.
    Pour cela, j'ai utilisé un script sous python calculant la fft.
    Cependant, quand j'affiche le résultat, je n'arrive pas du tout à l'interprété (qu'est ce qui est sur l'axe x ? l'axe y ?).
    J'ai regardé d'autres scripts dessus, mais à chaque fois les axes sont crées à partir de la période du signal, or moi je ne la connait pas.
    Pouvez vous m'aider ?

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut


    Le résultat d'une transformée de Fourier indique des coefficients pour chaque fréquence, c'est-à-dire l'importance de cette fréquence dans le signal d'origine. Pour plus de détails, il vaut mieux te référer à un cours de traitement numérique du signal ou d'analyse des systèmes dynamiques .
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Merci pour la réponse,
    Je me suis déjà renseignée dessus (j'ai même eu des cours) j'ai compris théoriquement ce que c'est, ce que ça fait, mais c'est d'un point de vu "matlab" ou "python" je ne comprends pas les graphiques : normalement en bas il y a les fréquences, en haut l'amplitude si j'ai bien compris, mais j'arrive pas du tout à interpréter le résultat.
    Par exemple, lorsque j'effectue le son "a" voilà ce que ça me donne le fichier joinds. Pouvez vous m'aider à le comprendre? (mon but est de différencier des voyelles)
    Images attachées Images attachées  

  4. #4
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    peux-tu poster le graphe de ton signal d'entrée stp?

    signal réel = fft symétrique : tu ne vas travailler que sur la partie "positive" de ton spectre (le résultat de la fft est un "spectre" composé de "raies" en fréquence en x, et de leur "énergie" en y)

    il faut déterminer :
    - T(s) = le temps d'échantillonnage de ton signal = le temps de ta prise de son
    - N : le nombre de points de mesure (autour de 320 me semble t'il)
    tu auras donc :
    dt = T/N

    idem pour la fréquence d'échantillonnage de ton signal :
    F(Hz) = 1/dt

    le centre de symétrie représente l'origine de ton axe (situé autour de 160).
    tu as une raie maximale autour de 250

    donc la fréquence de cette raie résultante est 1 / [(250-160) x dt]

    bon, ce sont de vague souvenir je peux me tromper ... si c'est le cas, j'invoque le pardon d'avance

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Pour compléter un peu sweetasnz, je dirais que tu peux complètement oublier la moitié des données ressorties par la FFT (puisque ton signal d'entrée est réel) ; si tu as représenté l'entièreté du vecteur renvoyé, tu t'intéresses uniquement aux indices [160,320] (à la grosse louche), c'est-à-dire aux fréquences [0, 160] Hz. Dans le graphique, le plus important est de détecter les pics, les fréquences les plus présentes. L'exemple de MATLAB explique ça : http://nl.mathworks.com/help/matlab/ref/fft.html.

    Intuitivement, cette information pourrait ne pas être suffisante pour détecter les différents sons (si tu as plusieurs personnes, avec un peu de bruit de fond, avec un rhume, etc.) ; dans ce cas, tu peux te tourner vers des techniques d'apprentissage automatique (http://scikit-learn.org/stable/, en Python, par exemple).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  6. #6
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Il y a aussi les méthodes de calcul d'autocorrélation entre ton échantillon test "Atest" et celui de référence "Aref".
    Suffit de calculer le coefficcient de corrélation entre Aref et Atest, si le ratio est bon, tu concluras que "Atest" est bien un "A" ("vrai faux" ou "faux vrai" : aux erreurs de 1ere et 2eme espèces près car on ne sera jamais sur à 100%, c'est évident).
    Pour cela, il faut que ton "Aref" soit le meilleur candidat possible :tu peux moyenner les FFT de plusieurs "A" = "Aref" et ensuite calculer les coef. de corr. avec cette référence sur la FFT de "Atest". Tu mets ensuite un seuil sur ce coefficient pour prendre ta décision si oui ou non, c'est un "A" (ex : si Ccorr > 0.9 alors "Atest" est bien un "A")

    pour info : j'avais fait ça pour des images, pour retirer de façon automatique celles qui était "trop" différentes des autres (mon image de référence était une moyenne de bonnes images et mon seuil ajusté en fonction des résultats sur un jeu de test) , pixels manquants, image saturée, décalage de pixel ... et ça marche plutôt bien avec un effort de calcul et de codage peu couteux.
    En résumé, j'avais un échantillon d'image suffisant pour faire cela ... si tu as de quoi réaliser un "modèle moyen" de "A" avec un nombre suffisant de "A", fonce !

    Idem sur les autres voyelles.
    Bonne chance.

    Rq : pensez à mettre résolu si vous pensez qu'on a fait le tour de la question

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Points : 49
    Points
    49
    Par défaut
    Bonjour,


    Tout d'abord désolé pour le temps de réponse, je ne sais pas pourquoi mais je ne suis plus prévenue par mail lorsqu'il y a des réponses (donc ej pensais que personne n'avait répondu).

    @dourouc05 : pourquoi ça serait de 0 à 160 hertz que ça m'intéresserait ? Je m'intéresse à la détection de voyelles, or de ce que j'ai vu sur internet pour cela la deuxième harmonique est aussi importante (par exemple pour le "a" une source non sur dit que c'est décrit par une fréquence fondamentale à 700 Hz et une première harmonique à 1150).

    @sweetasnz :
    - Pour ton premier message merci pour l'explication ça complète ce que j'avais compris. Cependant j'ai changé j'utilise maintenant la bibliothèque fftw3 et n'ai donc pas besoin de connaître la fréquence d’échantillonnage (sauf pour "rescaler" si nécessaire après l’obtention des résultats, mais vu que je ne veux pas connaître a priori les fréquences c'est peu utile).
    le Aref/ Atest etc j'ai pas tout compris mais il me semble que c'est ce que je fais plus ou moins (j’apprends que c'est "plus un A que un U" ou "plus un U que un A" par exemple).


    Cependnat ça ne fonctionne pas, et je pense savoir pourquoi : regardez la tête de ma fft (que je fais maintenant à l'aide de la bibliothèque fftw3 en C) :
    Son a :Nom : a.png
Affichages : 581
Taille : 4,2 Ko
    Sans son :Nom : bruit.png
Affichages : 563
Taille : 3,2 Ko
    On voit que sans son il y a en permanence de l'activité très forte pou pour la première fréquence et une plus éloigné : avez vous une idée de pourquoi ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/10/2013, 16h55
  2. [Débutant] Analyse fréquentielle d'un profil
    Par macErmite dans le forum Signal
    Réponses: 0
    Dernier message: 10/09/2012, 21h01
  3. Analyse fréquentielle avec codeur angulaire
    Par faivrer dans le forum LabVIEW
    Réponses: 0
    Dernier message: 01/07/2012, 12h20
  4. Analyse fréquentiel (ou spectral) avec Python 2.6
    Par frisou65 dans le forum Calcul scientifique
    Réponses: 2
    Dernier message: 27/09/2011, 19h20
  5. Réponses: 7
    Dernier message: 18/05/2008, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo