メインコンテンツまでスキップ

ストリーミングサウンドウェーブ

Voice Activity Detection (VAD)については、このページを参照してください。

ストリーミングサウンドウェーブは、再生中でも動的にオーディオデータを追加できるタイプのインポートされたサウンドウェーブです。巻き戻しなどのインポートされたサウンドウェーブと同じ機能を提供し、SoundCueなどで使用できます。

ストリーミグサウンドウェーブの作成

まずストリーミングサウンドウェーブを作成する必要があります。早期破棄を防ぐため、強力な参照として扱う必要があることに注意してください(例:Blueprintsで別の変数に割り当てるか、C++でUPROPERTY()を使用する)。

Create Streaming Sound Waveノード

音声波形の再生

その後、その音声波形を再生することができます。ただし、今すぐ行う必要はなく、後で音声波形の再生を開始することも可能です。

音声波形を再生する様々な例

オーディオデータの事前割り当て

オプションとして、新しいオーディオデータが追加されるたびにPCMバッファ全体を再割り当てするのを避けるために、オーディオデータ(バイト)を事前に割り当てることができます。

Pre Allocate Audio Dataノード

オーディオデータの追加

既存のバッファの末尾にオーディオデータを追加するには、動的にオーディオデータを追加するための適切な関数を使用します。再生はこれらの追加のキュー順に従って行われます。

Append Audio Data node

加速または歪んだオーディオ再生の回避

サウンドウェーブの再生中にオーディオデータをストリーミングすると、特定のシナリオで再生が加速したり歪んだりする場合があります。この問題は通常、以下の状況で発生します:

  1. サウンドウェーブの再生が現在のバッファの終端近く/終端に達している
  2. 新しいオーディオデータがストリーミングサウンドウェーブに継続的にキューイングされている
  3. 再生が受信データストリームに追いついてしまう

オーディオデータの投入はいつでも問題なく停止できます。ただし、リアルタイムオーディオストリーミングなどの継続的なストリーミングが必要なシナリオでは、オーディオデータストリーミングの信頼性に応じて2つのアプローチがあります:

信頼性が高く一貫したストリーミングの場合: OnPopulateAudioState デリゲートを使用して、最初のチャンクを受信した直後に再生を開始します。

信頼性の低いストリーミング(ネットワーク問題、断続的なデータ)の場合: OnPopulateAudioState がトリガーされた後でも追加の遅延を設け、再生開始前に大きなバッファを構築します。

再生問題を回避するためのOnPopulateAudioStateの使用

注記: オーディオデータの送信はいつでも停止しても再生に問題は発生しません。正確なアプローチはオーディオデータストリーミングの信頼性に依存します - 安定したストリームには即時再生を、信頼性の低いストリーム(例:ネットワーク接続問題)には追加のバッファリング遅延を使用してください。

使用例

最終的に、実装は次のようになるかもしれません:

ストリーミングサウンドウェーブの使用例

オーディオ状態のポピュレート時

OnPopulateAudioState デリゲートは OnPopulateAudioData と同様に機能しますが、ポピュレートされたオーディオデータをブロードキャストしません。これは、パフォーマンスを向上させるために、ポピュレートされたオーディオデータの配列を渡すことなく、オーディオデータがポピュレートされたタイミングを追跡したい場合に便利です。

On Populate Audio State デリゲート

PCMデータの操作

再生中のPCMデータにリアルタイムでアクセスするには、PCMデータ処理を参照してください。