音響エコー除去
音響エコーとは
音響エコーとは、スピーカから出力された音声をマイクロフォンが拾ってしまうことで発生するループのことを指します。音響エコーが発生すると、正確な音声認識が難しくなります。
OpenHRIでは、音響エコーの問題を軽減するため2種類ののコンポーネントを用意しています。それぞれ長所・短所がありますので用途に応じて使い分けてください。
エコーサプレッサ
音声出力コンポーネントからの出力を検出し、それと同じタイミングで音声入力を減衰させることで、スピーカからマイクへの収音を防ぐコンポーネントです。以下の特徴があります。
長所:高速で処理できる。入力音声の変形が少ない。
短所:音声出力中は音声入力できないため、常に音声出力している場合などは使用が難しい。
エコーキャンセラ
音声出力コンポーネントからの出力信号よりエコー成分を推測して、マイクから収音した信号から推測したエコー成分を除去するコンポーネントです。以下の特徴があります。
長所:音声出力中でも音声入力できる。
短所:適応フィルタ係数を毎回更新するため処理が重い。入力音声を加工するため、その影響による変形が認識に悪影響を及ぼす場合がある。
使い方
以下にチュートリアルStep4にて作成した対話システムにエコーサプレッサを接続する例を示します。
コンポーネントの接続
AudioInputの出力ポートとjuliusの入力ポートのリンクを削除し、以下のリンクを接続します。
- AudioInputの出力ポートと EchoSuppressorの入力ポート「from_input」
- AudioOutputの出力ポートと EchoSuppressorの入力ポート「from_output」
- EchoSuppressorの出力ポートと juliusの入力ポート
リンクを作成すると、以下のスクリーンショットのようになります。
動作確認
All Activateボタンで全コンポーネントをアクティブ状態に遷移させます。スピーカとマイクを近づけて発声し、返事が連続しないことを確認しましょう。





AIST
OpenRTM-aist