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

音響エコーキャンセリング

Streaming Sound Wave と、Capturable Sound Wave などの派生型は、音響エコーキャンセリング(AEC)をサポートしています。AEC は、レンダー信号(例:スピーカーから再生される音声)によって引き起こされるキャプチャされたマイク音声のエコーを取り除きます。これにより、リアルタイム通信シナリオでのクリーンな音声キャプチャが実現します。

このプラグインは、WebRTC AEC3 実装を通じて AEC を提供します。これは、関連する AEC3 コードのみを含む軽量な拡張プラグインとして利用可能です。WebRTC AEC3 は、リアルタイム通信アプリケーションで広く使用されている高品質な音響エコーキャンセラです。スピーカーとマイク間の音響経路をモデル化し、キャプチャされた信号からエコーを差し引きます。

インストール

音響エコーキャンセリングを使用するには、WebRTC AEC3 拡張プラグインをインストールする必要があります:

  1. Runtime Audio Importer プラグインがプロジェクトに既にインストールされていることを確認してください
  2. WebRTC AEC3 拡張プラグインを こちら からダウンロードしてください
  3. ダウンロードしたアーカイブからフォルダーを抽出し、プロジェクトの Plugins フォルダーに配置します(このフォルダーが存在しない場合は作成してください)
  4. プロジェクトを再ビルドします(この拡張には C++ プロジェクトが必要です)
important
  • WebRTC AEC3 は、Runtime Audio Importer がサポートするすべてのエンジンバージョン(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、および 5.8)をサポートしています
  • この拡張はソースコードとして提供されており、使用するには C++ プロジェクトが必要です
  • WebRTC AEC3 は、Windows、Linux、Mac、Android(Meta Quest を含む)、および iOS で利用可能です
  • プラグインを手動でビルドする方法の詳細については、プラグインのビルドに関するチュートリアル を参照してください

基本的な使い方

典型的な AEC のワークフローは 3 つのステップで構成されます:

  1. ストリーミング/キャプチャ可能なサウンドウェーブで AEC を有効にする
  2. 10 ms フレーム配信のために、レンダーサウンドウェーブで レンダーチャンクサイズを設定する
  3. キャプチャ信号からエコーをキャンセルするために使用される音声の レンダーサウンドウェーブをバインドする

AEC の有効化

ストリーミングサウンドウェーブを作成した後に AEC を有効にするには、ToggleAEC 関数を使用します。AEC プロセッサのサンプルレートとチャンネル数を指定する必要があります。入力のキャプチャオーディオまたはレンダーオーディオがこれらの値と一致しない場合、自動的にリサンプリングされますが、設定されたサンプルレートは品質(例:48000 Hz の方が 16000 Hz よりも優れたエコーキャンセリングをもたらします)とパフォーマンスに影響を与えるため、リサンプリングに任せるのではなく、意図的にこれらの値を選択する価値があります。

Toggle AEC ノード

AECが現在有効かどうかを確認できます:

Is AEC Enabled node

レンダーチャンクサイズの設定

WebRTC AEC3 では、オーディオを 10 ms チャンク で処理する必要があります。レンダーサウンドウェーブが正しいフレームサイズでオーディオデータを配信するようにするには、レンダー Imported Sound Wave (スピーカーから再生されるサウンドウェーブ) で SetNumSamplesPerChunk 関数を使用します。

チャンクあたりの正しいサンプル数を計算する式は次のとおりです。

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

たとえば、48000 Hzのオーディオの場合: 48000 / 100 = 480 サンプル/チャンク。

Set Num Samples Per Chunk node

レンダーサウンドウェーブのバインド

AECを有効にし、チャンクサイズを設定した後、キャプチャ信号からエコーを識別して除去するために使用されるオーディオのレンダーサウンドウェーブをバインドします。これは通常、スピーカーから再生され、マイクが拾う可能性のあるサウンドウェーブです。

AECをサウンドウェーブ再生にバインドするノード

レンダリング中のSound Waveのアンバインドを行うには:

Unbind AEC From Sound Wave Playback ノード

追加設定

ストリーム遅延

レンダリングパスとキャプチャオーディオパス間の推定ストリーム遅延(ミリ秒単位)を設定できます。これはハードウェアおよびシステムのレイテンシを考慮したもので、多くの場合 WebRTC AEC3 が自動的に推定できます。

Set AEC Stream Delay node

AECのリセット

内部のAECプロセッサの状態はいつでもリセットでき、蓄積されたエコーモデルをクリアします:

AECリセットノード

ヒント

WebRTC AEC3は、8000、16000、32000、48000 Hzのサンプルレートをサポートしています。不一致のオーディオは自動的にリサンプリングされますが、これにはパフォーマンスのオーバーヘッドがあります。最高の品質とパフォーマンスを得るには、48000 Hzを使用し、キャプチャストリームとレンダーストリームの両方の実際のオーディオ設定を一致させてください。