Auf der Suche nach einer Antwort auf dieses Problem habe ich festgestellt, dass dieses Board diese Frage von Stack Overflow gekreuzt hat .
Ich suche nach einer Methode zur Bestimmung der Ähnlichkeit zwischen einem Audiosegment und einer menschlichen Stimme, die numerisch ausgedrückt wird.
Ich habe ziemlich viel gesucht, aber was ich bisher gefunden habe (siehe unten), passt nicht wirklich zu dem, was ich brauche:
Eine Methode besteht darin, Spracherkennungssoftware zu verwenden , um Wörter aus einem Audiosegment zu erhalten. Mit dieser Methode lässt sich jedoch nicht feststellen, wie "ähnlich" Audio der menschlichen Sprache ist. es kann oft sagen, ob das Audio Wörter enthält oder nicht, aber wenn es keine bestimmten Wörter gibt, kann es nicht sagen, ob das Audio solche Wörter enthält oder nicht.
Beispiele: CMU Sphinx , Dragonfly , SHoUTDie vielversprechendere Methode wird als Voice Activity Detection (VAD) bezeichnet. Dies hat jedoch tendenziell dieselben Probleme: Die Algorithmen / Programme, die VAD verwenden, geben in der Regel nur zurück, ob die Aktivitätsschwelle erreicht wurde oder nicht, und es gibt keinen "Ähnlichkeit" -Wert vor oder nach dieser Schwelle. Alternativ suchen viele nur nach Lautstärke, nicht nach Ähnlichkeit mit menschlicher Sprache.
Beispiele: Speex , Listener , FreeSWITCH
Irgendwelche Ideen?
quelle
Antworten:
Diese Art von Problem wird normalerweise durch maschinelles Lernen gelöst.
Teilen Sie das Signal in eine Sequenz von 20 ms oder 50 ms Frames auf. Extrahieren Sie Features für jeden Frame. MFCC eignen sich im Allgemeinen gut für diese Art von Anwendungen, obwohl es speziellere Spracherkennungsfunktionen gibt (4-Hz-Modulationsenergie - ungefähr die Rate, mit der Menschen sprechen; Nulldurchgangsrate).
Trainieren Sie dann mithilfe eines von Ihnen manuell als Sprache / Nicht-Sprache gekennzeichneten Audiotrainingssatzes einen Klassifikator (Gaußsche Mischungsmodelle, SVM ...) für die Frame-Features.
Auf diese Weise können Sie unbeschriftete Frames in Sprach- / Nichtsprachklassen einteilen. Der letzte Schritt besteht in der Glättung der Entscheidungen (ein Rahmen, der als Nichtsprache klassifiziert ist und von Hunderten von Sprachrahmen umgeben ist, ist wahrscheinlich ein Klassifizierungsfehler), beispielsweise unter Verwendung von HMMs oder nur eines Medianfilters.
Einige Referenzen:
Robuste Sprach- / Musikklassifizierung in Audiodokumenten (Pinquier & al) Sprach- / Musikunterscheidung für Multimediaanwendungen (El-Maleh & al) Ein Vergleich der Funktionen für Sprach- / Musikunterscheidung (Carey & al)
Beachten Sie, dass die beschriebenen Merkmale und Klassifizierungstechniken auch für das 1-Klassen-Problem der Spracherkennung relevant sind (anstatt Sprache von etwas anderem zu unterscheiden). In diesem Fall können Sie 1-Klassen-Modellierungstechniken wie z. B. 1-Klassen-SVM verwenden oder einfach den Likelihood-Score aus einem auf Sprachdaten trainierten GMM als "Sprechen" -Maß nehmen.
Wenn Ihr Problem andererseits darin besteht, Sprache wirklich von etwas anderem zu unterscheiden (z. B. Musik), können Sie auch unbeaufsichtigte Ansätze verwenden, die darauf abzielen, die Grenzen zwischen ähnlichen Audio-Inhalten zu erkennen, anstatt diese Inhalte selbst zu identifizieren.
quelle