Ich versuche 2 Sprachproben zu vergleichen und sie auf Ähnlichkeiten zu bewerten. Stellen Sie sich jemanden vor, der versucht, eine Phrase zu wiederholen und dann diese beiden Audiodateien zu vergleichen.
Ich begann mit der Implementierung des MFCC-Algorithmus (http://en.wikipedia.org/wiki/Mel-frequency_cepstrum). Ich berechne die MFCCs beider Audio-Samples, was ungefähr 500 Audio-Frames (mit jeweils 10 ms, mit etwa 30% Überlappung der vorherigen) mit etwa 14 MFCC-Koeffizienten ergibt. Also eine 500x14 Matrix für jedes Audiosignal.
Dann mache ich den naiven Ansatz, einfach die Matrizen zu differenzieren. Dies liefert keine vielversprechenden Ergebnisse. Die Hälfte der Zeit, in der ich völlig unterschiedliche Audio-Samples vergleiche (wo verschiedene Phrasen gesprochen werden), erhalte ich weniger Unterschiede als beim Vergleichen des Audios, bei dem ich versuche, dieselbe Phrase zu wiederholen! Dies ist eindeutig rückwärts und kann mir keinen guten Bewertungsalgorithmus geben.
Wie kann ich das verbessern? Ich dachte, MFCCs seien ein wirklich wichtiger Bestandteil der Sprachverarbeitung, obwohl ich natürlich mehr damit anfangen muss.
Antworten:
Zunächst müssen Sie zeitliche Unterschiede korrigieren. Wenn beispielsweise eine Äußerung "--heeelloooo ---" und die andere "hellooooooo ----" (- Stille darstellt) ist, zeigt ein direkter paarweiser Vergleich von MFCC-Frames Unterschiede, einfach weil die beiden Abtastwerte nicht ausgerichtet sind. Mit Dynamic Time Warping können Sie die beste Ausrichtung zwischen den beiden Folgen von Merkmalsvektoren ermitteln und den entsprechenden Abstand berechnen.
Eine letzte Sache, die mir in den Sinn kommt, ist, dass Sie den ersten MFCC-Koeffizienten (der ungefähr die Signallautstärke ausdrückt) verwerfen müssen, um die Fähigkeit Ihres Systems zu verbessern, Äußerungen anzupassen, die bei einem anderen Lautstärke- / Aufnahmepegel ausgesprochen werden.
quelle