Comment comparer 2 fichiers audio en retournant un pourcentage de différence

12

Existe-t-il un moyen de comparer 2 fichiers audio, par lequel un pourcentage de différence sera retourné? J'utilise C # VS08 , .net framework 3.5.

Modifié: différence dans le son (comme par exemple pour Audio 1:, "HELP"Audio 2:, "HELP ME PLEASE"il retournera la différence de pourcentage entre ces 2 audio.)

Je sauvegarde actuellement des fichiers enregistrés au format wav, et son débit binaire et sa qualité seront également les mêmes que ceux qui seront enregistrés et comparés. Je souhaite demander s'il existe un moyen de comparer le son (pas seulement les binaires) dans 2 fichiers audio de mêmes propriétés et même format (WAV), et de montrer la différence en pourcentage entre les 2 sons dans les 2 fichiers audio.

L'aide sera grandement appréciée.

Jav_Rock
la source
7
Ce que vous décrivez relève du domaine du traitement numérique du signal. Autrement dit, si vous avez besoin de demander comment le faire, vous n'êtes pas prêt à le faire. Je doute fort que .NET ait quelque chose de si sophistiqué intégré.
J'ai récemment vu un article de recherche sur le sujet: Un algorithme de recherche audio de puissance industrielle (PDF) Ils comparent les spectres de fréquence. La technique est utilisée dans une application iPhone populaire Shazam .
3
Pour répondre à la question, nous aurons besoin d'une définition précise et précise de ce que signifie "similaire". Que pensez-vous que "similaire" signifie dans le contexte des fichiers wav?
1
Vous essayez d'aborder un problème de reconnaissance vocale auquel des chercheurs sérieux du monde entier s'attaquent depuis des décennies. Autant que c'est une chose cool à faire, je ne pense pas que ce soit réalisable pour une personne sans connaissance préalable du DSP, des réseaux bayésiens, des classificateurs, etc.
Phonon
2
Voulez-vous vraiment comparer la différence dans l'audio, ou simplement dans le texte transcrit? C'est beaucoup plus facile, une fois que vous avez franchi l'obstacle initial.
Emre

Réponses:

8

Pourriez-vous définir le "pourcentage de différence"?

Par exemple, veuillez nous indiquer quelle valeur espérez-vous obtenir:

  • Entre deux versions du même fichier encodé avec des paramètres différents?
  • Entre deux versions du même fichier, sauf que l'une est légèrement plus rapide que l'autre?
  • Entre deux enregistrements de la même entrée audio, mais via un microphone / équipement d'enregistrement différent?
  • Entre deux enregistrements d'une même personne disant le même mot?
  • Entre deux enregistrements d'une même personne disant le même mot, avec une prosodie différente (rythme / mélodie)?
  • Entre deux enregistrements de personnes différentes disant le même mot?
  • Entre deux enregistrements d'une même personne prononçant la même phrase à l'exception de quelques mots?
  • Entre un enregistrement d'une personne et celui d'une vache?
  • Entre l'enregistrement d'un avion et la musique?

Que voulez-vous mesurer? Le contenu du discours (mots)? La mélodie, le rythme? La similitude audio globale? Différences entre l'équipement de codage / enregistrement?

pichenettes
la source
3
Ne retenons pas notre souffle; la question a deux ans et l'OP est AWOL.
Emre
1
Oups, je n'ai remarqué que la date de migration (récente).
pichenettes
3

Veuillez consulter l' UIT-T P.862 . Il s'agit d'une forme normalisée de PESQ (Perceptual Evaluation of Speech Quality) , famille de normes pour évaluer la qualité de la parole telle qu'elle est ressentie par un utilisateur d'un système de téléphonie.

C'est seulement autour de la parole (pas d'autres informations audio). Vous comparez deux fichiers audio, source et dégradé et vous obtenez une valeur en pourcentage ou équivalent MOS.

JJPOMBAR
la source
2
Bienvenue sur DSP.stackexchange! Merci d'avoir fourni des réponses, mais je vous suggère de consulter la FAQ pour améliorer vos réponses / questions. Les signatures sont déconseillées - vous "signez" avec votre identifiant enregistré de toute façon. En outre, fournir des liens vers du matériel externe, des exemples et des clarifications pour les approches que vous mentionnez dans vos réponses est une bonne pratique :)
penelope
-3

J'utilise une fonction javascript pour comparer le fichier audio de remorquage. En utilisant la même logique, vous pouvez comparer n'importe quel fichier dans n'importe quelle langue.

function compireAudio(){ 
var audio1 = "http://soundjax.com/reddo/86502%5Ealarm.mp3"; 
var audio2 = "http://soundjax.com/reddo/44368%5EALARME.mp3";
var i,j,d;
var matching = 0;
var t = 0;var i,j,d;
var matching = 0;
var t = 0;
var audio1Arr = Array();
var audio1Len = audio1.length;
for (i = 1; i<=audio1Len; i++)
{
    //reverse so its like a stack
    d = audio1.charCodeAt(audio1Len-i);
    for (j = 0; j < 8; j++) 
    {
        audio1Arr.push(d%2);
        d = Math.floor(d/2);
    }
}
var audio2Len = audio2.length;
for (i = 1; i<=audio2Len; i++)
{
    //reverse so its like a stack
    d = audio2.charCodeAt(audio2Len-i);
    for (j = 0; j < 8; j++) 
    {
        if(d%2 == audio1Arr[t])
        {
            matching++;
        }
        d = Math.floor(d/2);
        t++;
    }
}
var avarage = Number(matching)/((Number(t)+Number(audio1Arr.length))/Number(2))*Number(100);
alert('The Matching with the two audio is '+avarage+' %.');

}

Punnoose dur
la source
3
La comparaison directe du bytestream ne fonctionne pas. Il est possible de distinguer deux enregistrements de manière perceptuelle, mais de les encoder en deux flux différents avec une correspondance de 0% selon votre code.
pichenettes