Sprachvergleichsalgorithmus zur Bewertung von Ähnlichkeiten


8

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.


Hey, ich habe es mit einem ähnlichen Problem zu tun. Wie gehe ich vor, wenn ich Stimmen von zwei verschiedenen Sprechern vergleichen sollte , um eine Ähnlichkeitsbewertung zu erhalten? Gibt es auch eine Möglichkeit, direkt zu berechnen, ob Audioclips von derselben Person stammen oder nicht?
Amanda Cerny

Antworten:


13

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.

ΓΓ

AB

  • AABAB
  • ΓΓAB
  • ΓAB

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.


Vielen Dank, dass Sie mir weitere Anweisungen gegeben haben. Ich habe den ersten MFCC-Wert gemäß Ihrer Antwort auf meine vorherige Frage entfernt. Informationen zur Verwendung von DTW zum Ausrichten von Äußerungen: Soll dies Frame für Frame erfolgen? Dh in meiner 500x14-Matrix habe ich 500 Frames mit 10-ms-Audios, sowohl in A als auch in B. Würde ich DTW zeilenweise verwenden, um A mit B abzugleichen?
YoungMoney

Ich bin nicht sicher, ob ich Ihre Frage verstehe ... Sie verwenden DTW, um die 500 Vektoren von A auf die 500 Vektoren von B
auszurichten

Was ich meine ist, sollte ich die 500 Vektoren für jedes A und B zu einem "langen" Vektor (mit 500x14 Elementen) verketten und dann DTW anwenden? Versus 500-maliges Anwenden von DTW auf die 14 Elementvektoren. Ersteres ist für mich sinnvoller, basierend auf dem, was ich bisher gelesen habe.
YoungMoney

2
Ersteres in der Tat. Sie müssen die optimale Ausrichtung in der 500x500-Matrix finden (gefüllt mit den paarweisen Abständen zwischen den 14-dimensionalen Vektoren)
Pichenettes

Ah. Nun, es sieht so aus, als ob ich wieder zu den Rennen
gehe
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.