Zum Hauptinhalt springen

Acoustic Echo Cancellation

Streaming Sound Wave unterstützt zusammen mit seinen abgeleiteten Typen wie Capturable Sound Wave Acoustic Echo Cancellation (AEC). AEC entfernt Echo von aufgenommenem Mikrofonaudio, das durch die Wiedergabe eines Render-Signals verursacht wird (z. B. Audio, das über Lautsprecher abgespielt wird). Das Ergebnis ist eine sauberere Sprachaufnahme in Echtzeit-Kommunikationsszenarien.

Das Plugin bietet AEC durch die WebRTC AEC3-Implementierung, verfügbar als leichtgewichtiges Erweiterungs-Plugin, das nur den relevanten AEC3-Code enthält. WebRTC AEC3 ist ein hochwertiger akustischer Echokompensator, der in Echtzeit-Kommunikationsanwendungen weit verbreitet ist. Es modelliert den akustischen Pfad zwischen Lautsprechern und Mikrofon, um das Echo vom aufgenommenen Signal zu subtrahieren.

Installation

Um Acoustic Echo Cancellation zu nutzen, müssen Sie das WebRTC AEC3-Erweiterungs-Plugin installieren:

  1. Stellen Sie sicher, dass das Runtime Audio Importer-Plugin bereits in Ihrem Projekt installiert ist
  2. Laden Sie das WebRTC AEC3-Erweiterungs-Plugin von hier herunter
  3. Entpacken Sie den Ordner aus dem heruntergeladenen Archiv in den Plugins-Ordner Ihres Projekts (erstellen Sie diesen Ordner, falls er nicht existiert)
  4. Erstellen Sie Ihr Projekt neu (diese Erweiterung erfordert ein C++-Projekt)
important
  • WebRTC AEC3 unterstützt alle Engine-Versionen, die von Runtime Audio Importer unterstützt werden (UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7 und 5.8)
  • Diese Erweiterung wird als Quellcode bereitgestellt und erfordert ein C++-Projekt zur Nutzung
  • WebRTC AEC3 ist für Windows, Linux, Mac, Android (einschließlich Meta Quest) und iOS verfügbar
  • Für weitere Informationen zum manuellen Erstellen von Plugins siehe das Building Plugins-Tutorial

Grundlegende Verwendung

Der typische AEC-Arbeitsablauf umfasst drei Schritte:

  1. AEC aktivieren bei Ihrer Streaming/Capturable Sound Wave
  2. Render-Chunk-Größe konfigurieren bei der Render Sound Wave für eine 10 ms Frame-Auslieferung
  3. Render Sound Wave binden, deren Audio verwendet wird, um Echo vom Aufnahmesignal zu unterdrücken

AEC aktivieren

Um AEC nach dem Erstellen einer Streaming Sound Wave zu aktivieren, verwenden Sie die Funktion ToggleAEC. Sie müssen die Abtastrate und die Anzahl der Kanäle für den AEC-Prozessor angeben. Wenn das eingehende Aufnahme- oder Render-Audio nicht mit diesen Werten übereinstimmt, wird es automatisch neu abgetastet, jedoch beeinflusst die konfigurierte Abtastrate dennoch die Qualität (z. B. liefert 48000 Hz eine bessere Echounterdrückung als 16000 Hz) und die Leistung. Daher ist es sinnvoll, diese Werte bewusst zu wählen, anstatt sie der Neuabtastung zu überlassen.

Toggle AEC-Knoten

Sie können überprüfen, ob AEC derzeit aktiviert ist:

Is AEC Enabled node

Konfigurieren der Render-Chunk-Größe

WebRTC AEC3 erfordert, dass Audiodaten in 10-ms-Blöcken verarbeitet werden. Um sicherzustellen, dass die Render-Sound-Wave die Audiodaten in der korrekten Frame-Größe liefert, verwenden Sie die Funktion SetNumSamplesPerChunk auf der Render-Imported Sound Wave (die Sound Wave, die über die Lautsprecher wiedergegeben wird).

Die Formel zur Berechnung der korrekten Anzahl von Samples pro Chunk lautet:

Samples per chunk=SampleRate100\text{Samples per chunk} = \frac{\text{SampleRate}}{100}

Zum Beispiel, für 48.000 Hz Audio: 48000 / 100 = 480 Samples pro Chunk.

Set Num Samples Per Chunk node

Binden der Render-Sound-Wave

Nachdem AEC aktiviert und die Chunk-Größe konfiguriert wurde, binden Sie die Render-Sound-Wave, deren Audio verwendet wird, um Echo aus dem Aufnahmesignal zu erkennen und zu entfernen. Dies ist in der Regel die Sound Wave, die über Lautsprecher abgespielt wird und die das Mikrofon möglicherweise aufnimmt:

Bind AEC To Sound Wave Playback node

So heben Sie die Bindung der Render-Sound-Wave auf:

Unbind AEC From Sound Wave Playback node

Zusätzliche Konfiguration

Stream-Verzögerung

Sie können die geschätzte Stream-Verzögerung (in Millisekunden) zwischen dem Render- und Capture-Audiopfad einstellen. Dies berücksichtigt Hardware- und Systemlatenz, obwohl WebRTC AEC3 diese in vielen Fällen automatisch schätzen kann:

Set AEC Stream Delay node

AEC zurücksetzen

Sie können den internen Zustand des AEC-Prozessors jederzeit zurücksetzen und so das angesammelte Echomodell löschen:

Reset AEC node

tipp

WebRTC AEC3 unterstützt Abtastraten von 8000, 16000, 32000 und 48000 Hz. Nicht übereinstimmendes Audio wird automatisch neu abgetastet, dies führt jedoch zu einem Leistungsaufwand. Für beste Qualität und Leistung verwenden Sie 48000 Hz und stimmen Sie die tatsächliche Audiokonfiguration des Aufnahme- und Wiedergabestreams ab.