Erkennen von Änderungen zwischen Stimme und Musik

7

Ich habe eine Reihe von Audiodateien, die sowohl Sprach- als auch Musikteile enthalten (denken Sie an Radio). Beispielsweise kann eine bestimmte Datei aus den folgenden Abschnitten bestehen:

music --- speech --- music --- speech --- music --- speech --- music

Mein Ziel ist es, zu erkennen, wann die Datei zwischen Musik und Sprache wechselt, und die Musikteile wegzuschneiden, wobei nur die Sprache übrig bleibt. Ich weiß jedoch nicht, mit welcher Methode ich zwischen Sprache und Musik unterscheiden soll. Ich habe überlegt, das Tempo zu erkennen, aber ein Teil der Musik ist sehr langsam oder hat ein unterschiedliches Tempo.

(Gibt es bereits Softwarebibliotheken, die zwischen Sprache und Musik unterscheiden können, damit ich nicht meine eigenen schreiben muss?)

Haroba
quelle
Klingt nach einem Blind Source Separation Problem
Phorce
Die Musik und die Sprache sind nicht gemischt (nun ja, aber nur für ein paar Sekunden zu Beginn und am Ende der Sprachabschnitte), also denke ich nicht.
Haroba
Wie viele Mikrofone? Wie lang ist jedes Segment? Wenn Sie sich die Segmentierungseigenschaften ansehen möchten, ist dies schwierig, da es keine definierenden Merkmale gibt, z. B. könnte die Person länger sprechen und die Musik könnte kürzer als erwartet abgespielt werden. Hast du Trainingsdaten (wie Sprache aussieht und wie Musik aussieht)?
Phorce
Kommt auf die Art der Musik an. Aber stimmhafte Sprache hat normalerweise eine einzige Tonhöhe. Während Musik polyphon sein kann und Tonhöhen außerhalb des menschlichen Sprechbereichs enthalten kann (Bass bis Sopran).
hotpaw2
1
@kRazzyR, am Ende schrieb ich eine Lösung basierend auf diesem Papier: Speech.kth.se/prod/publications/files/3437.pdf
Haroba

Antworten:

13

Dies ist ein gut untersuchtes Problem, das aus der Mitte der 90er Jahre stammt (Herausforderungen bei der Transkription von DARPA / NIST-Sendungen). Suchen Sie nach "Sprach- / Musiksegmentierung" oder "Audiosegmentierung" und Sie finden Tausende von Forschungsarbeiten.

Es gibt zwei breite Ansätze, um dieses Problem zu lösen:

Überwachte Klassifizierung

Trainieren Sie einen Sprach- / Musikklassifikator mit einem Standardansatz für maschinelles Lernen. Sie können MFCCs als Eingangsmerkmale zusammen mit anderen grundlegenden Merkmalen wie Nulldurchgangsrate, Amplitudenmodulation bei 4 Hz usw. verwenden. In letzter Zeit wurde es üblich, so viele Merkmale wie möglich einzufügen und Merkmalerkennungstechniken zu verwenden, um die diskriminantesten zu identifizieren .

Jeder Klassifizierungsalgorithmus unterstützt Vektormaschinen, Gaußsche Mischungsmodelle und Entscheidungsbäume. Sobald die Klassifizierung abgeschlossen ist, haben Sie falsch klassifizierte Frames (z. B. wird ein winziges Acapella-Segment in einem Song als Sprache klassifiziert, oder ein FX oder ein Jingle zwischen den Sprache wird hervorgehoben). Dies erfordert eine Nachbearbeitung. Der häufigste Ansatz besteht darin, eine Modusfilterung (Abstimmung) auf die Sequenz der Klassifiziererausgaben anzuwenden. Die Klassifizierung / zeitliche Glättung wird manchmal durch die Verwendung von Hidden-Markov-Modellen sowohl für die Klassifizierung als auch für die zeitliche Glättung zu einer Einheit zusammengefasst.

Ref: Inhaltsbasierte Audioklassifizierung und -segmentierung unter Verwendung von Support-Vektor-Maschinen , Lu et al.

Unüberwachte Segmentänderungserkennung

Stellen Sie sich ein 10s-Fenster vor, das über das Signal gleitet. Berechnen Sie Audiofunktionen in der ersten und in der zweiten Hälfte und verwenden Sie einen statistischen Test, um zu entscheiden, welche Hypothese am wahrscheinlichsten ist: Die beiden Sätze von Audiofunktionen stammen aus derselben Verteilung oder aus zwei verschiedenen Verteilungen. Die Ausgabe des Tests zeigt an, wie wahrscheinlich es ist, dass die Mitte des Fensters der Grenze zwischen einer Sprache und einem Musiksegment entspricht. Wählen Sie die Punkte mit den höchsten Punktzahlen als Segmentgrenzen aus.

Es können die gleichen Audiofunktionen wie für den überwachten Ansatz (MFCC, ZCR, Amplitudenmodulation bei 4 Hz ...) verwendet werden.

"Lehrbuch" -Kriterium für den statistischen Test: Bayesian Information Criterion (BIC).

Ref: Unüberwachte Segmentierung und Clustering von Audiostreams über das Bayesian Information Criterion , Zhou & Hansen (für eine Einführung in BIC).

Kombinierte überwachte und unbeaufsichtigte Ansätze zur automatischen Segmentierung radiophoner Audioströme , Richard, Ramona & Essid (für exotischere Änderungserkennungstests).

Pichenettes
quelle
Sehr geehrte Damen und Herren, können Sie mich bitte auf Python-Bibliotheken verweisen, die diese "Erkennung von Sprachregionen und Musikregionen usw. in einem Audio" durchführen können? Ich versuche dieses Problem zu lösen, habe aber keine großen Fortschritte gemacht.
KRazzy R