あなたは正しいです。エコーキャンセレーションには多くの方法がありますが、どれもまったく簡単なものではありません。最も一般的で一般的な方法は、適応フィルターによるエコーキャンセレーションです。ある文では、適応フィルターの役割は、入力からの情報量を最小限に抑えることで、再生する信号を変更することです。
適応フィルター
適応(デジタル)フィルターは、係数を変更し、最終的に最適な構成に収束するフィルターです。この適応のメカニズムは、フィルターの出力を望ましい出力と比較することで機能します。以下は、一般的な適応フィルターの図です。
図からわかるように、信号はによってフィルター処理(畳み込み)され、出力信号ます。次に、目的の信号からを減算して、エラー信号を生成します。は係数のベクトルであり、数値ではないことに注意してください(したがって記述しません)。反復ごと(サンプルごと)に変化するため、これらの係数の現在のコレクションにを添え字付けします。を取得したら、それを使用してを更新します→ Wのn D [ N ] 、D [ N ] 、D [ N ] 、E [ N ] → W N W [ N ] N E [ N ] → W N → wの n個のD [ N ] 、D [ n ]x [ n ]w⃗ nd^[ n ]d^[ n ]d[ n ]e [ n ]w⃗ nw [ n ]ne [ n ]w⃗ n選択した更新アルゴリズムによって(詳細は後ほど)。入力と出力が時間とともに変化しない線形関係を満たし、適切に設計された更新アルゴリズムが与えられると、は最終的に最適なフィルターに収束し、はに密接に従います。。w⃗ nd^[ n ]d[ n ]
エコー・キャンセリング
エコーキャンセルの問題は、入力と出力の関係を満たす最適なフィルターを見つけることにより、入力が与えられた場合に既知の理想的な出力を生成しようとする適応フィルターの問題として表すことができます。特に、ヘッドセットをつかんで「こんにちは」と言うと、ネットワークの反対側で受信され、部屋の音響応答によって変更され(大音量で再生されている場合)、ネットワークにフィードバックされて戻りますエコーとしてあなたに。ただし、システムは最初の「hello」の音を認識し、残響と遅延の「hello」の音を認識しているため、適応フィルタを使用してその部屋の応答を推測できます。次に、その推定値を使用できます。すべての着信信号をそのインパルス応答で畳み込み(これによりエコー信号の推定値が得られます)、呼び出した人のマイクに入るものから減算します。次の図は、適応エコーキャンセラを示しています。
d [ n ]x [ n ]d[ n ]w⃗ nx [ n ]y[ n ]d[ n ]e [ n ] = d[ n ] − y[ n ]回線の反対側で誰も話していないので、最終的にはゼロになります。これは、通常、ヘッドセットを取り上げて「こんにちは」と言った場合です。これは常に当てはまるわけではなく、理想的でないケースの考慮事項については後で説明します。
w⃗ n
バツ⃗ n= (x [ n ] 、x [ n − 1 ] 、… 、x [ n − N+ 1 ] )T
Nw⃗ nバツ
w⃗ n= (w [ 0 ] 、w [ 1 ] 、… 、x [ N− 1 ] )T
y[ n ]= x⃗ n= w⃗ n
y[ n ] = x⃗ Tnw⃗ n= x⃗ n⋅ ワット⃗ n
w⃗
w⃗ n + 1= w⃗ n+ μ X⃗ ne [ n ]バツ⃗ Tnバツ⃗ n= w⃗ n+ μ X⃗ nバツ⃗ Tnw⃗ n− d[ n ]バツ⃗ Tnバツ⃗ n
μ0 ≤ μ ≤ 2
実際のアプリケーションと課題
エコーキャンセルのこの方法では、いくつかのことが困難になる場合があります。まず、前述のように、相手があなたの「こんにちは」信号を受信している間、沈黙しているとは限りません。入力信号とエコーが存在するため、回線の反対側にかなりの量の入力が存在する場合でも、インパルス応答を推定することが有用な場合があることを示すことができます(ただし、この応答の範囲外です)。統計的に独立していると想定される; したがって、エラーを最小限に抑えることは依然として有効な手順です。一般に、エコー推定のための適切な時間間隔を検出するには、より洗練されたシステムが必要です。
一方、受信信号がほぼ無音(実際にはノイズ)であるときにエコーを推定しようとするとどうなるかを考えてください。意味のある入力信号がない場合、適応アルゴリズムは発散し、意味のない結果の生成をすぐに開始し、最終的にランダムエコーパターンに達します。これは、音声検出も考慮する必要があることを意味します。最近のエコーキャンセラは、下図のように見えますが、上記の説明はその要点です。
アダプティブフィルターとエコーキャンセレーションの両方に関する文献が豊富にあり、利用できるオープンソースライブラリもあります。