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 :

Comparer 2 sons


Sujet :

Traitement du signal

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut Comparer 2 sons
    J'ai exposé mon problème dans le forum C++ et on m'a conseillé de m'adresser ici, alors voilà.

    Je cherche le meilleur moyen de comparer 2 sons et d'en déduire un pourcentage de ressemblance. Les fichiers à comparer dureront au maximum jusqu'à une dizaine de secondes et je me demande s'il n'existe pas une méthode bit à bit.

    Pour l'instant je me débat avec fmod sans aucun résultat.

  2. #2
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Tu peux les comparer temporellement, en utilisant l'autocorrélation, par exemple.
    Tu peux aussi les comparer fréquentiellement, tout dépend de l'application ?
    L'erreur quadratique moyenne peut être une bonne première approximation.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    Je ne m'y connais pas vraiment en matière de sons mais je cherche avant tout une direction pour mes recherches.

    Mon but est de déterminer un coëfficient de similitude entre 2 sons sachant que l'un des deux sera certainement parasité par un bruit. Vers quelle méthode je devrais d'abord m'orienter ?

  4. #4
    Membre actif Avatar de Biosox
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 298
    Points : 203
    Points
    203
    Par défaut
    en fait ça dépend pas mal de la nature des sons, et de la nature des bruits. Tu devrais nous en dire plus.

    Le problème peut devenir très simple si le son et les bruits sont de nature complétement différentes. Mais il peut devenir tres complexe sinon!

    C'est un problème de "traitement du signal", et les méthodes utilisées dans ce domaines sont aussi variées que les situations rencontrées.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    Je devrais vraisemblablement comparer certains mots d'une voix parmis d'autres voix.
    Mais dans un premier temps, je vais réaliser une version dans laquelle les bruits de fond seront très négligeables. J'augmenterais la "difficulté" plus tard si le besoin s'en fait ressentir.

    Donc, pour le moment il faut que je compare 2 occurences d'une même expression énoncée avec la même voix.

    Je pensais d'abord, enregistrer le son à partir du micro puis analyser les fréquences à intervalles de temps réguliers, faire de même sur la seconde occurence et faire une sorte de moyenne pour obtenir un coëfficient de ressemblance.

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Une méthode possible serait d'effectuer une FT sur tes deux sons et de comparer les résultats. Cette méthode présente les avantages suivants:
    - une fois la FT effectuée (il existe des libs qui font cela très bien), les calculs seront simples
    - le résultat est totalement indépendant du temps
    - méthode facilement paramétrable et "améliorable"

    Hope it helps.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  7. #7
    Membre actif Avatar de Biosox
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 298
    Points : 203
    Points
    203
    Par défaut
    Citation Envoyé par Tymk
    Je devrais vraisemblablement comparer certains mots d'une voix parmis d'autres voix.
    Si je comprends bien, tu as un enregistrement de plusieurs voix, et tu dois isoler certains mots? c'est de la reconnaissance de parole.
    C'est un problème complexe. D'autant plus qu'un même mot peut être prononcé plusieurs fois avec une vitesse et une dynamique différente, même par la même personne.
    Si en plus les plusieurs voix se mettent à parler en même temps la ça devient vraiment problèmatique.

    Je te conseille de chercher des cours de "traitement du signal" et "reconnaissance de la parole"

  8. #8
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Salut,

    Les solutions dans ce domaine passent presques toutes par de l'analyse de spectre, il faut utiliser la FT comme l'a suggéré r0d. Et effectivement c'est un problème complexe.

    XXiemeciel
    XXiemeciel

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    C'est parti pour la FT alors. Je tiens tout de même à préciser que dans mes conditions de départ il n'y a pas de bruit, je pense que cela devrait réduire significativement la difficulté. Enfin, j'espère.

    Merci, à tous pour les conseils. Je vous tiens au courant.

  10. #10
    mat.M
    Invité(e)
    Par défaut Re: Comparer 2 sons
    Citation Envoyé par Tymk
    Pour l'instant je me débat avec fmod sans aucun résultat.
    je ne connais pas fmod mais il faut pour cela que tu puisses accéder octet par octer au fichier son .
    fmod le permet-il ?

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    On m'a certifié que oui mais en parcourant fmod.h je n'ai pas trouvé la définition d'une fonction qui pouvait m'aider.

  12. #12
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Il faudrait regarder dans la doc, c'est possible (j'ai déjà vu quelqu'un sur ce forum le faire).

    en utilisant l'autocorrélation, par exemple.
    Ne serait ce pas l'intercorrelation. Mais hormis ce point, cela est une bonne idée. Pour la FFT, tu vas peut être trouver des sons qui sont peut être resemblant (à un % près) alors que temporellement ce n'est pas la même chose. Je pense qu'il faut faire intervenir une notion temporelle, pour identifier deux sons (un son de 20 sec à très peu de chance de resembler à un son de 1 sec, pourtant si les freq sont les mêmes, tu as de fortes chances de les identifier) prends le code morse par exemple la durée est très importante.

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Déjà, définis ce que tu entends par ressemblant :
    - même durée
    - même contenu spectral
    - identique avec un bruit différent
    - accéléré, ralenti, autre personne, ...

    Selon la ressemblance choisie, les algos seront simples et faisables pour toi ou complètement hors de portée pour qqn qui ne connaît rien au traitement du signal 1D.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    Pour répondre à PRomu@ld :
    Effectivement, c'est une très bonne remarque. Mais le problème reste entier : quelle méthode dois-je utiliser ? Est-ce que la dimension temporelle peut être ajoutée comme simple paramètre supplémentaire de la FFT (ça serait trop beau) ou est-ce que l'intercorrelation répond directement à mes attentes ?

    PS : J'attend d'être fixé sur le problème avant de commencer mes recherches.

  15. #15
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Tymk
    Mais le problème reste entier : quelle méthode dois-je utiliser ?
    Justement, la méthode à utiliser sera en fonction de tes besoins et contraintes. Il est indipensable de bien les définir avant de choisir la façon dont tu va t'y prendre pour coder ça.

    Pour synthétiser ce qui a été dit précédemment, tu dois d'abord répondre à ces questions:
    1/ Importance de la durée des sons (longueur totale du son, vitesse d'élocution, silences, etc.)
    2/ Importance des caractéristiques acoustiques des voix analysée (timbre, hauteur, bruit, etc.)
    3/ Importance des différences de prise de son (bruit, enveloppe, volume...)
    4/ Sur quel(s) type(s) de format audio tu souhaites (ou tu peux) travailler (format, vitesse d'échantillonage, taille des échantillons,...)
    5/ Y aura-t-il des traitements préalable à effectuer sur tes fichiers audio (filtres). Par exemple, dans le cas où il y a plusieurs vois simultanées, s'il y a des fréquences à gérer, etc.
    6/ Une constante dans l'analyse audio: la qualité des silences.
    7/ Souhaites-tu travailler en temps réel?
    ...

    Citation Envoyé par Tymk
    Est-ce que la dimension temporelle peut être ajoutée comme simple paramètre supplémentaire de la FFT (ça serait trop beau) ou est-ce que l'intercorrelation répond directement à mes attentes ?
    Je ne connais pas l'intercorrelation. Mais déjà, tu peux utiliser la (F)FT d'un côté, qui te donnera une partie des renseignements, et puis une analyse temporelle d'un autre côté, qui te fournira d'autres informations. En rassemblant le tout, tu peux arriver à de bons résultats.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    Les définitions que Miles requiert :
    - même durée
    - même contenu spectral
    - identique avec un bruit différent
    - accéléré, ralenti, autre personne, ...

    Pour simplifier le plus possible le problème je me suis confronté à la comparaison de 2 fichiers sonores :
    - de durées sensiblement équivalentes (à quelques secondes près sur une durée totale d'une dizaine de seconde)
    - énoncés par la même personne, sans effet d'aucune sorte (écho, distorsion...) et avec un bruit négligeable.

    Ne sachant pas exactement à quoi correspond un contenu spectral je ne peut pas t'en dire plus.

    Sinon, après avoir réfléchi au problème de temps, je me suis dit que si je pouvais faire sans, cela permetterait d'énoncer les expressions à des vitesses différentes et avoir ainsi un meilleur pourcentage de similitudes. D'autant plus que l'utilisation de la FFT à semble-t-il des avantages selon r0d. Notamment, "l'améloirabilité".
    [/quote]

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Points : 148
    Points
    148
    Par défaut
    Merci r0d pour avoir clarifier la démarche à suivre.
    Il se peut effectivement que seul l'expérimentation me donne les renseignements dont j'ai besoin. Je vais tenté une approche FFT pour commencer.

    Biensûr, je vous remercie tous pour les conseils avisés.

  18. #18
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Je ne connais pas l'intercorrelation
    http://www.ecole.ensicaen.fr/~furon/_traitementsignal/_cours_tns/_correlation/

    Un exemple qui pourra peut être servir pour le sujet de ce post ...

  19. #19
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Oui, effectivement, merci d'avoir relevé ma bourde, j'ai tapé un poil trop vite .

    Pour simplifier, l'intercorrélation va te donner le "degré" de ressemblance de deux signaux temporels (par exemple).
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  20. #20
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    L'intercorrélation, c'est simplement la transformée inverse du produit des transformées des 2 signaux.

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/02/2011, 12h44
  2. Comparer sujet d'un email avec le nom de son attachement
    Par samson_02 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 24/12/2008, 09h14
  3. Analyser un son, le comparer et logger
    Par YoyoS dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/10/2008, 20h45
  4. Comparer 2 sons
    Par Tymk dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 30/01/2006, 13h09
  5. comparer des sons
    Par heidi79 dans le forum DirectX
    Réponses: 2
    Dernier message: 12/08/2003, 01h18

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