Zum Hauptinhalt springen

Akustische Echokompensation

Streaming Sound Wave sowie davon abgeleitete Typen wie Capturable Sound Wave unterstützen Akustische Echokompensation (AEC). AEC entfernt Echo aus dem aufgenommenen Mikrofon-Audio, das durch die Wiedergabe eines Render-Signals verursacht wird (z. B. Audio, das über Lautsprecher abgespielt wird). Das Ergebnis ist eine sauberere Stimmaufnahme in Echtzeit-Kommunikationsszenarien.

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

Installation

Um Akustische Echokompensation zu verwenden, 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. Extrahieren Sie den Ordner aus dem heruntergeladenen Archiv in den Plugins-Ordner Ihres Projekts (erstellen Sie diesen Ordner, falls er nicht existiert)
  4. Bauen 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 und 5.7)
  • Diese Erweiterung wird als Quellcode bereitgestellt und erfordert ein C++-Projekt zur Verwendung
  • Weitere Informationen zum manuellen Bauen von Plugins finden Sie im Building Plugins tutorial

Grundlegende Verwendung

Der typische AEC-Workflow umfasst drei Schritte:

  1. Aktivieren Sie AEC auf Ihrer Streaming-/Capturable Sound Wave
  2. Konfigurieren Sie die Render-Chunk-Größe auf der Render-Sound-Wave für eine 10-ms-Frame-Lieferung
  3. Binden Sie die Render-Sound-Wave, deren Audio verwendet wird, um Echo vom Aufnahmesignal zu kompensieren

Aktivieren von AEC

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. Dennoch beeinflusst die konfigurierte Abtastrate die Qualität (z. B. liefert 48000 Hz eine bessere Echokompensation als 16000 Hz) und die Leistung, daher ist es sinnvoll, diese Werte bewusst zu wählen, anstatt sie der Neuabtastung zu überlassen.

Toggle AEC node

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

Is AEC Enabled node

Konfiguration der Render-Chunk-Größe

WebRTC AEC3 erfordert, dass Audio in 10 ms Chunks verarbeitet wird. Um sicherzustellen, dass die Render-Soundwelle Audiodaten in der korrekten Framegröße liefert, verwenden Sie die Funktion SetNumSamplesPerChunk auf der Render-Imported Sound Wave (der Soundwelle, die über die Lautsprecher abgespielt 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 48000 Hz Audio: 48000 / 100 = 480 Samples pro Chunk.

Set Num Samples Per Chunk node

Binden des Render-Sound-Waves

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

Bind AEC To Sound Wave Playback node

Um die Render-Sound-Welle zu entbinden:

Unbind AEC From Sound Wave Playback node

Configuration supplémentaire

Délai de Stream

Vous pouvez définir le délai de stream estimé (en millisecondes) entre les chemins de rendu et de capture audio. Cela permet de compenser la latence matérielle et système, bien que WebRTC AEC3 puisse l'estimer automatiquement dans de nombreux cas :

Set AEC Stream Delay node

Zurücksetzen der AEC

Sie können den internen AEC-Prozessorstatus jederzeit zurücksetzen und dabei alle akkumulierten Echomodelle löschen:

Reset AEC node

tipp

WebRTC AEC3 unterstützt Abtastraten von 8000, 16000, 32000 und 48000 Hz. Nicht übereinstimmende Audiodaten werden automatisch neu abgetastet, was jedoch mit einem Leistungsaufwand verbunden ist. Für beste Qualität und Leistung verwenden Sie 48000 Hz und passen Sie die tatsächliche Audiokonfiguration sowohl der Aufnahme- als auch der Wiedergabestreams an.