Synchronisieren von zwei Audiospuren


9

Ich möchte einen Algorithmus implementieren, der zwei Audiospuren synchronisiert.

Die beiden Spuren sind sehr ähnlich; Sie können sich vorstellen, dass es sich um zwei Tonaufnahmen (nicht unbedingt Musik) von zwei Mikrofonen im selben Raum handelt. Dies bedeutet, dass sie als ein Signal erscheinen, das zwei verschiedene (lineare) Kanäle mit unterschiedlichem additivem Rauschen durchläuft.

Ich verstehe, dass die erste Idee darin bestehen könnte, nach dem Höhepunkt ihrer Kreuzkorrelation zu suchen, aber ich bin besonders daran interessiert, Literatur zu diesem Thema zu finden, aber alle Artikel, die ich finden konnte, synchronisieren entweder zwei Musikspuren (unter Verwendung von Chroma-basierten Audiofunktionen) ) oder Audio mit einer Partitur synchronisieren. Sie gehen auch davon aus, dass es zu Zeitverzerrungen kommen kann, was in meinem Fall eine unnötige Annahme ist.

Antworten:


4

Chroma-basierte Ansätze werden verwendet, wenn es sich bei den auszurichtenden Spuren um zwei Performances desselben Materials mit sehr unterschiedlichen Instrumenten handelt. In diesem Fall müssen Sie den "kleinsten gemeinsamen Nenner" finden, der Harmonie, Melodie, Akkordfolge usw. ist. Chroma ist gut für das - sie sind völlig abstraktes Timbre, Aufnahmetechniken. Aber die brauchen Sie in Ihrem Fall nicht.

Wie Sie vermutet haben, wäre die Kreuzkorrelation des Roh-Audios 1 / nicht sehr robust gegenüber Rauschen, 2 / nicht sehr robust gegenüber Unterschieden bei den Wandlern (die beiden Mikrofone haben möglicherweise sehr unterschiedliche Reaktionen) 3 / sehr kostspielig, wenn Sie Minuten Zeit haben Audio.

Ich empfehle Ihnen:

  • Extrahieren Sie eine Folge von MFCC-Vektoren aus beiden Signalen. Auf diese Weise haben Sie eine geringere Dimensionalität und sind etwas robuster gegenüber Rauschen und Unterschieden bei den Wandlern.
  • Optionalisieren Sie optional das MFCC (der Koeffizient 0 "vom Design" hat mehr Varianz als der Koeffizient 1 usw.) ... Idealerweise möchten Sie, dass jede Zeile der MFCC-Matrix die Varianz 1 hat.
  • Berechnen Sie die Kreuzkorrelation zweier Matrizen entlang der Zeitachse (dh berechnen Sie die 2D-Kreuzkorrelation und behalten Sie nur die Daten für die Zeitachse bei).

Interessanter Ansatz. Welche Art von Zeitauflösung können Sie aus einer MFCC-Analyse erhalten? Ist dies durch die spektrale Auflösung begrenzt?
Hilmar

Poster sagte nicht, welche Auflösung er erwartete. Dieser Ansatz ist auf die Auflösung der MFCC-Analyse beschränkt, die typischerweise mit 50 bis 100 Bildern pro Sekunde durchgeführt wird. Dies ist ausreichend für Anwendungen mit Sprache und "alltäglichem Audio" (z. B. Ausrichten von Aufnahmen von mehreren nicht TCed-Kameras bei der Videobearbeitung). wahrscheinlich keine Musik. Um eine höhere Auflösung zu erzielen, schlage ich vor, eine "grobkörnige" Ausrichtung mit MFCC durchzuführen, um eine Ausrichtung bei +/- 10 ms (Dauer eines FFT-Rahmens) zu erhalten. Nehmen Sie dann alle 10 Sekunden ein paar Stücke von 100 ms Audio von beiden Quellen. und ein erschöpfendes Matching mit diesen durchzuführen.
Pichenettes

2
Tatsächlich ist das Kreuzkorrelationsverfahren normalerweise ziemlich unempfindlich gegenüber Rauschen. Die Kreuzkorrelation des rauschfreien Teils des Klangs erzeugt eine Spitze in der Kreuzkorrelation. Da andererseits das Rauschen zufällig ist, ist es unwahrscheinlich, dass das Rauschen in einer Aufzeichnung in irgendeiner spezifischen Weise mit irgendetwas in der anderen Aufzeichnung korreliert, und daher wird nur mehr Rauschen in der Kreuzkorrelation verursacht. Dieses Rauschen ist im Vergleich zur Spitze sehr schwach, und daher bleibt die Genauigkeit beim Lokalisieren der Spitze nahezu unberührt.
HelloGoodbye

Ich bin skeptisch, ob auch leicht unterschiedliche Antworten eine so große Rolle spielen werden. Sie würden immer noch einen Spitzenwert in der Kreuzkorrelation erhalten, obwohl dieser möglicherweise geringfügig übersetzt wird, was in diesem Fall durch eine Verzögerung in einem der Wandler verursacht würde. Wenn Sie jedoch eine solche Verzögerung haben, sehe ich nicht, wie MFCC dies verbessern würde.
HelloGoodbye

Selbst wenn Sie Minuten Audio haben, kann die Kreuzkorrelation mit FFT sehr effizient berechnet werden. Ich vermute, dass das Extrahieren einer Sequenz von MFCC-Vektoren aus beiden Signalen erheblich länger dauern würde.
HelloGoodbye
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.