Wie vergleiche ich zwei Audiodateien, wobei ein Prozentsatz der Differenz zurückgegeben wird?


12

Gibt es eine Möglichkeit, 2 Audiodateien zu vergleichen, wobei ein Prozentsatz der Differenz zurückgegeben wird? Ich verwende C # VS08 , .NET Framework 3.5.

Bearbeitet: Unterschied im Klang (wie zum Beispiel Audio 1:, "HELP"Audio 2: "HELP ME PLEASE"gibt den Unterschied in Prozent zwischen diesen 2 Audiodaten zurück.)

Ich speichere momentan aufgezeichnete Dateien im WAV-Format, und die Bitrate und die Qualität entsprechen denen, die aufgezeichnet und verglichen werden. Ich möchte fragen, ob es eine Möglichkeit gibt, den Ton (nicht nur die Binärdateien) in 2 Audiodateien mit denselben Eigenschaften und demselben Format (WAV) zu vergleichen und den prozentualen Unterschied zwischen den 2 Tönen in den 2 Audiodateien anzuzeigen.

Hilfe wird sehr geschätzt.


7
Was Sie beschreiben, liegt im Bereich der digitalen Signalverarbeitung. Kurz gesagt, wenn Sie sich fragen müssen, wie es geht, sind Sie nicht in der Verfassung, dies zu tun. Ich bezweifle sehr, dass in .NET etwas so Raffiniertes eingebaut ist.

Ich habe kürzlich eine Forschungsarbeit zu diesem Thema gesehen: Ein industrieller Audiosuchalgorithmus (PDF) Sie vergleichen Frequenzspektren. Die Technik wird in einer beliebten iPhone-App Shazam verwendet .

3
Um die Frage zu beantworten, benötigen wir eine sorgfältige und genaue Definition dessen, was "ähnlich" bedeutet. Was bedeutet Ihrer Meinung nach "ähnlich" im Zusammenhang mit WAV-Dateien?

1
Sie versuchen, sich einem Spracherkennungsproblem zu nähern, mit dem sich seriöse Forscher auf der ganzen Welt seit Jahrzehnten befassen. So cool das auch sein mag, ich denke nicht, dass es für eine Person ohne Vorkenntnisse in DSP, Bayes'schen Netzwerken, Klassifikatoren usw. praktikabel ist.
Phonon

2
Möchten Sie wirklich den Unterschied zwischen Audio und nur dem transkribierten Text vergleichen? Das ist viel einfacher, wenn Sie die erste Hürde überwunden haben.
Emre

Antworten:


8

Könnten Sie bitte den "Prozentsatz der Differenz" definieren?

Sagen Sie uns zum Beispiel, welchen Wert Sie erwarten:

  • Zwischen zwei Versionen derselben Datei, die mit unterschiedlichen Einstellungen codiert sind?
  • Zwischen zwei Versionen der gleichen Datei, außer dass eine etwas schneller ist als die andere?
  • Zwischen zwei Aufnahmen desselben Audioeingangs, aber über ein anderes Mikrofon / Aufnahmegerät?
  • Zwischen zwei Aufnahmen derselben Person, die dasselbe Wort sagt?
  • Zwischen zwei Aufnahmen einer Person, die dasselbe Wort mit einer anderen Prosodie (Rhythmus / Melodie) sagt?
  • Zwischen zwei Aufnahmen von verschiedenen Personen, die das gleiche Wort sagen?
  • Zwischen zwei Aufnahmen derselben Person, in denen derselbe Satz bis auf ein paar Worte vorkommt?
  • Zwischen einer Aufnahme einer Person und der einer Kuh?
  • Zwischen Flugzeugaufnahme und Musik?

Was möchten Sie messen? Der Sprachinhalt (Wörter)? Die Melodie, der Rhythmus? Die allgemeine Audio-Ähnlichkeit? Unterschiede zwischen Codier- und Aufnahmegerät?


3
Lasst uns nicht den Atem anhalten; Die Frage ist zwei Jahre alt und das OP ist AWOL.
Emre

1
Hoppla, ich habe nur das (aktuelle) Migrationsdatum mitbekommen.
Pichenettes

3

Bitte werfen Sie einen Blick auf ITU-T S.862 . Es ist eine standardisierte Form von PESQ (Perceptual Evaluation of Speech Quality) , einer Reihe von Standards zur Bewertung der Sprachqualität, die ein Benutzer eines Telefoniesystems erlebt.

Hierbei handelt es sich nur um Sprache (keine anderen Audioinformationen). Sie vergleichen zwei Audiodateien, Source und Degraded, und Sie erhalten einen Wert in Prozent oder MOS-Äquivalent.


2
Willkommen bei DSP.stackexchange! Vielen Dank für die Bereitstellung von Antworten. Ich empfehle jedoch, die FAQ zu lesen , um Ihre Antworten / Fragen zu verbessern. Von Unterschriften wird abgeraten - Sie "unterschreiben" trotzdem mit Ihrem registrierten Handle. Das Bereitstellen von Links zu externem Material, Beispielen und Erläuterungen für die in Ihren Antworten genannten Ansätze ist eine gute Praxis :)
penelope

-3

Ich verwende eine Javascript-Funktion, um zwei Audiodateien zu vergleichen. Mit der gleichen Logik können Sie jede Datei in jeder Sprache vergleichen.

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+' %.');

}


3
Der direkte Vergleich des Bytestreams funktioniert nicht. Zwei Aufnahmen können wahrnehmbar nicht zu unterscheiden sein, werden jedoch in zwei verschiedene Bystreams mit 0% Übereinstimmung entsprechend Ihrem Code codiert.
Pichenettes
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.