Zum Hauptinhalt springen

Streaming Sound Wave

Ein Streaming-Sound-Wave ist eine Art importierter Sound-Wave, der das dynamische Hinzufügen von Audiodaten unterstützt, sogar während der Wiedergabe. Er bietet die gleiche Funktionalität wie ein importierter Sound-Wave, z.B. Rückspulen, und kann in SoundCues usw. verwendet werden.

tipp

Für Voice Activity Detection (VAD) siehe diese Seite.

Einen Streaming-Sound-Wave erstellen

Zuerst sollten Sie einen Streaming-Sound-Wave erstellen. Bitte beachten Sie, dass Sie ihn als starke Referenz behandeln sollten, um eine vorzeitige Zerstörung zu verhindern (z.B. durch Zuweisung zu einer separaten Variable in Blueprints oder Verwendung von UPROPERTY() in C++).

Create Streaming Sound Wave node

Abspielen der Soundwelle

Sie können diese Soundwelle dann wiedergeben. Dies ist jedoch nicht notwendig, um es jetzt zu tun, Sie können die Soundwelle später abspielen.

Verschiedene Beispiele zum Abspielen einer Soundwelle

Vorabzuweisung von Audiodaten

Optional können Sie Audiodaten (Bytes) vorab zuweisen, um eine Neuzuweisung des gesamten PCM-Puffers bei jedem Anhängen neuer Audiodaten zu vermeiden.

Pre Allocate Audio Data node

Anhängen von Audiodaten

Um Audiodaten an das Ende des vorhandenen Puffers anzuhängen, verwenden Sie die entsprechenden Funktionen zum dynamischen Anhängen von Audiodaten. Die Wiedergabe folgt der Warteschlangenreihenfolge dieser Anhänge.

Append Audio Data node

Vermeidung von beschleunigter oder verzerrter Audiowiedergabe

Beim Streamen von Audiodaten während die Soundwelle abgespielt wird, kann es in bestimmten Szenarien zu beschleunigter oder verzerrter Audiowiedergabe kommen. Dieses Problem tritt typischerweise auf, wenn:

  1. Die Soundwelle-Wiedergabe sich dem Ende des aktuellen Puffers nähert oder dort ist
  2. Neue Audiodaten kontinuierlich in die Streaming-Soundwelle eingereiht werden
  3. Die Wiedergabe mit dem eingehenden Datenstrom gleichzieht

Sie können das Auffüllen mit Audiodaten jederzeit ohne Probleme stoppen. Für Szenarien, die kontinuierliches Streaming erfordern (wie Echtzeit-Audio-Streaming), gibt es jedoch zwei Ansätze, abhängig von der Zuverlässigkeit Ihres Audiodaten-Streamings:

Für zuverlässiges, konsistentes Streaming: Verwenden Sie den OnPopulateAudioState-Delegaten, um die Wiedergabe unmittelbar nach dem Empfang des ersten Datenblocks zu starten.

Für unzuverlässiges Streaming (Netzwerkprobleme, unterbrochene Daten): Fügen Sie eine zusätzliche Verzögerung hinzu, selbst nachdem OnPopulateAudioState ausgelöst wurde, um einen größeren Puffer aufzubauen, bevor die Wiedergabe beginnt.

Verwendung von OnPopulateAudioState zur Vermeidung von Wiedergabeproblemen

Hinweis: Sie können die Audio-Daten jederzeit ohne Wiedergabeprobleme stoppen. Der genaue Ansatz hängt von der Zuverlässigkeit Ihres Audio-Daten-Streams ab - verwenden Sie die sofortige Wiedergabe für konsistente Streams oder fügen Sie eine zusätzliche Pufferverzögerung für unzuverlässige Streams hinzu (z. B. bei Netzwerkverbindungsproblemen).

Beispielhafte Verwendung

Schließlich könnte Ihre Implementierung so aussehen:

Ein Beispiel für die Verwendung einer Streaming-Soundwelle

On Populate Audio State

Der OnPopulateAudioState-Delegat funktioniert ähnlich wie OnPopulateAudioData, sendet aber die gefüllten Audiodaten nicht aus. Dies kann nützlich sein, wenn Sie verfolgen möchten, wann die Audiodaten gefüllt werden, ohne ein Array der gefüllten Audiodaten zu übergeben, was die Leistung verbessern kann.

On Populate Audio State delegate

Arbeiten mit PCM-Daten

Für den Echtzeitzugriff auf PCM-Daten während der Wiedergabe siehe PCM-Datenverarbeitung.