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

音響エコーキャンセレーション

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) をサポートしています
  • この拡張機能はソースコードとして提供されており、使用するには C++ プロジェクトが必要です
  • プラグインを手動でビルドする方法の詳細については、Building Plugins チュートリアルを参照してください

基本的な使用方法

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

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

AEC の有効化

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

Toggle AEC node

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

Is AEC Enabled node

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

WebRTC AEC3は、オーディオを10ミリ秒のチャンクで処理する必要があります。レンダーサウンドウェーブが正しいフレームサイズでオーディオデータを提供することを保証するために、レンダー側の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を有効にし、チャンクサイズを設定した後、キャプチャ信号からエコーを識別して除去するために使用されるオーディオのレンダーサウンドウェーブをバインドします。これは通常、マイクが拾う可能性のあるスピーカーから再生されているサウンドウェーブです:

Bind AEC To Sound Wave Playback node

レンダリングされたサウンドウェーブのバインドを解除するには:

Unbind AEC From Sound Wave Playback node

追加設定

Stream Delay

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

Set AEC Stream Delay node

AECのリセット

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

Reset AEC node

ヒント

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