(57)【要約】エコーキャンセラ（２０）を有する通信システム（１０）が開示される。エコーキャンセラの一実施形態は、送信信号から除去される反射エコーの推定値を提供するために用いられる適応フィルタ（２８）を含む。エコーキャンセラは、近端トーカ信号が存在する時に適応フィルタが適応することを防ぐために使用可能な近端トーカ信号検出器（２６）を含んでもよい。また、エコーキャンセラは、残留エコーをさらに低減しバックグラウンドノイズを保持するために用いられる非線形プロセッサ（３２）を含んでもよい。また、エコーキャンセラは、適応フィルタのフィルタ係数および利得を監視することによりエコーキャンセラの安定性を維持し、純粋遅延を推定し、トーンを検出し、トレーニング信号（４１）を注入するために使用可能な監視制御ユニット（３０）を含んでもよい。また、エコーキャンセラは、適応フィルタの長さを低減するために用いられる非適応フィルタ（３１）を含んでもよい。
2005531200.tif 000002
【特許請求の範囲】
【請求項１】
バックグラウンドノイズに選択的に作用するように音響信号の非線形処理を実行する方法であって、
推定バックグラウンドノイズレベルを生成するために、前記バックグラウンドノイズを選択的に推定すること、
前記推定バックグラウンドノイズレベルが所定の基準を超えるかどうかを判定すること、
所定のバックグラウンドノイズを前記音響信号に選択的に注入すること、
とを含む、方法。
【請求項２】
エコーキャンセラであって、
適応フィルタと、
前記適応フィルタに結合された制御回路と、
前記制御回路に結合され、バックグラウンドノイズを選択的に推定し、近端信号および遠端信号の少なくとも一方が検出される場合にバックグラウンドノイズの推定を停止する非線形プロセッサと、
を備えるエコーキャンセラ。
【請求項３】
近端信号検出を実行する方法であって、
受信パスの出力のパワーを求めること、
誤差信号のパワーを求めること、
前記近端信号が存在するかどうかを検出するために、前記受信パスの出力のパワーおよび前記誤差信号のパワーを使用すること、
とを含む、方法。
【請求項４】
エコーキャンセラであって、
受信パスの出力のパワーおよび誤差信号のパワーを求めることにより近端信号が存在するかどうかを検出する近端信号検出器と、
前記近端信号検出器に結合された適応フィルタと、
前記適応フィルタに結合された制御回路と、
前記制御回路に結合された非線形プロセッサと、
を備えるエコーキャンセラ。
【請求項５】
エコーキャンセレーションを実行する方法であって、
エコーを消去する目的で適応フィルタリングを実行すること、
前記適応フィルタリングを実行するステップと並行して純粋遅延を推定すること、
適応フィルタウィンドウの位置を調節するために、前記純粋遅延を選択的に使用すること、
とを含む、方法。
【請求項６】
エコーキャンセレーションを実行する方法であって、
個別推定遅延値を求めること、
純粋遅延を生成するために、前記個別推定遅延値の非線形フィルタリングを実行すること、
適応フィルタウィンドウの位置を調節するために、前記純粋遅延を選択的に使用すること、
エコーを消去する目的で適応フィルタリングを実行すること、
とを含む、方法。
【請求項７】
エコーキャンセラであって、
エコーを消去する第１の適応フィルタと、
前記第１の適応フィルタに結合された監視制御ユニットと、
を備え、
前記監視制御ユニットは、純粋遅延を推定する第２の適応フィルタを備え、前記純粋遅延は、前記第１の適応フィルタの適応フィルタウィンドウの位置を調節するために使用され、
前記第２の適応フィルタは、個別推定遅延値をフィルタリングすることにより前記純粋遅延を生成する非線形フィルタを備える、エコーキャンセラ。
【請求項８】
通信信号中にトーンが存在するかどうかを指示する方法であって、
第１の遅延信号を生成するために、所定の第１遅延だけ前記通信信号を遅延させること、
第２の遅延信号を生成するために、所定の第２遅延だけ前記通信信号を遅延させること、
推定信号を生成するために、前記第１の遅延信号、前記第２の遅延信号、および前記通信信号を組み合わせること、
前記トーンが存在するかどうかを指示するために、前記推定信号を使用すること、
とを含む、方法。
【請求項９】
通信信号中のトーンを検出するトーン検出器であって、
第１の遅延信号を提供する第１の回路と、
第２の遅延信号を提供する第２の回路と、
前記第１の遅延信号、前記第２の遅延信号、および前記通信信号を組み合わせることにより推定信号を生成する推定器回路と、
前記推定信号を使用することにより前記トーンが存在するかどうかを指示するトーン指示回路と、
を備えるトーン検出器。
【請求項１０】
複数のフィルタ係数を有するフィルタの発散を低減する方法であって、
近端信号のパラメータが第１の所定閾値を下回り、遠端信号のパラメータが第２の所定閾値を下回る時に、前記複数のフィルタ係数の少なくとも一部の適応を停止すること、
を含む、方法。
【請求項１１】
複数のフィルタ係数を有するフィルタの発散を低減する方法であって、前記フィルタは、第１の状態および第２の状態を含む複数の状態を有し、該方法は、
適応フィルタの現在の状態を判定すること、
前記適応フィルタの前記現在の状態が前記第１の状態である時に前記複数のフィルタ係数を記憶すること、
前記適応フィルタの前記現在の状態が前記第２の状態である時に前記複数のフィルタ係数の記憶を実行しないこと、
とを含む、方法。
【請求項１２】
通信システムにおいて使用するための適応フィルタの安定性を改善する方法であって、
誤差信号の利得を選択的に調節すること、
前記誤差信号の利得を選択的に調節したことに応答して、前記通信システムの利得が１よりも大きくないことを保証すること、
とを含む、方法。
【請求項１３】
通信信号中にトーンが存在するかどうかを指示する方法であって、
遅延信号を生成するために、所定の遅延だけ前記通信信号を遅延させること、
発生正弦波信号を発生すること、
第１の相関信号および第２の相関信号を生成するために、前記遅延信号、前記発生正弦波信号、および前記通信信号を組み合わせること、
前記トーンが検出されたかどうかを指示するために、前記第１の相関信号および前記第２の相関信号を使用すること、
とを含む、方法。
【請求項１４】
信号をフィルタリングするフィルタであって、
第１の適応レートで前記信号をフィルタリングする第１の適応フィルタと、
前記第１の適応フィルタに結合され、第２の適応レートで前記信号をフィルタリングする第２の適応フィルタと、
を備え、
前記第１の適応レートは前記第２の適応レートよりも低い、フィルタ。
【請求項１５】
信号の適応フィルタリングを実行する方法であって、
第１のフィルタリングされた出力を生成するために、第１の適応レートで前記信号をフィルタリングすること、
第２のフィルタリングされた出力を生成するために、第２の適応レートで前記第１のフィルタリングされた出力をフィルタリングすること、
とを含み、
前記第１の適応レートは前記第２の適応レートよりも低い、方法。
【請求項１６】
適応フィルタの安定性を改善する方法であって、
前記適応フィルタにおいて複数のフィルタ係数を監視すること、
前記複数のフィルタ係数において所定のパターンを検出すること、
前記所定のパターンが検出される場合、異なる複数のフィルタ係数を前記適応フィルタにロードすること、
とを含む、適応フィルタの安定性を改善する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的にはトーン指示に関し、より詳細には、通信システムにおけるトーン指示のための方法および装置に関する。
［関連出願］
本出願は、代理人整理番号ＳＣ１２０２６ＴＳとして同日に出願された「Monitoring and control of an Adaptive Filter in a Communication System」と題する米国特許出願、代理人整理番号ＳＣ１１９７７ＴＳとして同日に出願された「Method and Apparatus for Non-Linear Processing of an Audio Signal 」と題する米国特許出願、代理人整理番号ＳＣ１２１２０ＴＳとして同日に出願された「Method and Apparatus for Pure Delay Estimation in a Communication System」と題する米国特許出願、および代理人整理番号ＳＣ１２１０７ＴＳとして同日に出願された「Method and Apparatus for Performing Adaptive Filtering」と題する米国特許出願に関連し、そのすべてが本出願の現在の譲受人に譲渡されている。
【背景技術】
【０００２】
電気通信ネットワークにおいて（例えば、公衆交換電話網（ＰＳＴＮ）やパケット電話（ＰＴ）ネットワークにおいて）、電気通信ネットワークからの電気エコーあるいはラインエコーの消去や低減を通じて音声品質を保証するために、エコーキャンセレーションが用いられる。この電気エコーあるいはラインエコーの原因は、４線式通信ネットワークインタフェースと２線式ローカル加入者ループとの間で信号を変換するために用いられる装置であるハイブリッド回路のインピーダンス不整合であると考えられる。通信ネットワークにおける長い遅延を伴うエコーが顕著になると、電話音声通信中に重大な、さらには耐え難い擾乱を生じることがある。したがって、電気通信ネットワークにおいて、エコーを完全に消去し、またはエコーを受容可能なレベルに低減することができるエコーキャンセラが必要とされている。また、安定性を維持しながら、電気通信ネットワーク経由で受信されるトーンを検出することが可能なエコーキャンセラが必要とされている。
【発明を実施するための最良の形態】
【０００３】
本発明を、例として図示すが、添付図面には限定されない。図中、同一参照符号は同様の要素を示す。
当業者には認識されるように、図中の要素は簡単化および明確化のために示されており、必ずしも正しい縮尺で描かれているわけではない。例えば、本発明の実施形態の理解の向上を助けるために、図中の一部の要素の寸法は、他の要素に比べて誇張されていることがある。
【０００４】
本明細書で用いられる場合、「バス」という用語は、データ、アドレス、制御、またはステータスのような１つまたは複数の種々のタイプの情報を転送するために使用可能な複数の信号または導体を指すために用いられる。本明細書に記載の導体は、単一の導体、複数の導体、一方向性の導体、または双方向性の導体であるとして図示または説明することができる。しかし、異なる実施形態では、導体の実施態様が異なってもよい。例えば、双方向性導体ではなく別個の一方向性導体を用いてもよく、その逆でもよい。また、多重信号を直列または時間多重的に転送する単一の導体で、複数の導体を置き換えてもよい。同様に、多重信号を搬送する単一の導体を、これらの信号のサブセットを搬送する種々の異なる導体に分離してもよい。したがって、信号を転送するためには多くのオプションが存在する。
【０００５】
「アサート」および「ネゲート」（または「デアサート」）という用語は、それぞれ、
信号、ステータスビット、または同様の装置を、その論理的に真の状態または論理的に偽の状態にすることを指す場合に用いられる。論理的に真の状態が論理レベル１である場合、論理的に偽の状態は論理レベル０である。また、論理的に真の状態が論理レベル０である場合、論理的に偽の状態は論理レベル１である。記号「＊」および「・」はいずれも乗法演算を示す。本明細書全体を通じて用いられる遅延を提供するために、ＦＩＦＯまたは他のタイプのデータストレージを用いることができる。
【０００６】
なお、本明細書において、変数名は一般に、各グループの関連図面と一貫して用いられることに留意されたい。ただし、一部の変数名は、異なるグループの関連図面で異なるものを指すために再び使用されることがある。例えば、特定のグループの図面に関しては、Ｍは測定サイクルを表し、別のグループの図面に関しては、Ｍはカウンタ値として用いられることがある。ただし、以下の数式および図面における各変数名の説明は、それらが用いられる際に提供される。
【０００７】
［接続］
図１は、通信システム１０の一実施形態を示している。通信システム１０は、送信機／受信機１２、インタフェース１３、ハイブリッド回路１６（ハイブリッド１６ともいう）、エコーキャンセラ２０、通信ネットワーク２４、エコーキャンセラ２２、インタフェース１５、ハイブリッド１８、および送信機／受信機１４を含む。インタフェース１３はハイブリッド１６を含み、インタフェース１５はハイブリッド１８を含む。送信機／受信機１２はハイブリッド１６に双方向的に結合される（ここで、一実施形態では、送信機／受信機１２はツイストペアのような２線式コネクションを通じてハイブリッド１６に結合される）。ハイブリッド１６は、エコーキャンセラ２０に結合され、一方向性導体を通じてエコーキャンセラ２０に送信信号Ｓｉｎ３７を供給し、一方向性導体を通じてエコーキャンセラ２０から受信信号Ｒｏｕｔ４０を受信する（ここで、一実施形態では、Ｓｉｎ３７およびＲｏｕｔ４０はそれぞれワイヤペアを通じて供給および受信される）。エコーキャンセラ２０は、通信ネットワーク２４に結合され、通信ネットワーク２４にエコーキャンセルされた送信信号Ｓｏｕｔ４２を供給し、通信ネットワーク２４からＲｉｎ４３を受信する。  同様に、送信機／受信機１４はハイブリッド１８に双方向的に結合される（ここで、一実施形態では、送信機／受信機１４はツイストペアのような２線式コネクションを通じてハイブリッド１８に結合される）。ハイブリッド１８は、エコーキャンセラ２２に信号を供給するための一方向性導体およびエコーキャンセラ２２から信号を受信するための一方向性導体を通じてエコーキャンセラ２２に結合される（ここで、一実施形態では、一方向性導体の各セットはツイストワイヤペアであってもよい）。エコーキャンセラ２２は、通信ネットワーク２４に結合され、通信ネットワーク２４にエコーキャンセルされた送信信号を供給し、通信ネットワーク２４から受信信号を受信する。コントロール１７は、送信機／受信機１２、ハイブリッド１６、エコーキャンセラ２０、通信ネットワーク２４、エコーキャンセラ２２、ハイブリッド１８、および送信機／受信機１４のそれぞれに必要に応じて供給可能な１つまたは複数の制御信号を含む制御バスであってもよい。したがって、一実施形態では、コントロール１７は通信システム１０内のあらゆるユニットに結合されるが、代替実施形態では、一部のユニットのみがコントロール１７との通信を必要とするとしてもよい。
【０００８】
図２は、図１のエコーキャンセラ２０の一実施形態を示している。（なお、図２に関して説明する実施形態では、エコーキャンセラ２０を近端エコーキャンセラと呼び、エコーキャンセラ２２を遠端エコーキャンセラと呼ぶことに留意されたい。しかし、エコーキャンセラ２２が通信システム１０の近端にありエコーキャンセラ２０が通信システム１０の遠端にある場合には、図２に示されているエコーキャンセラがエコーキャンセラ２２を指してもよいことが認識されるべきである。）エコーキャンセラ２０は、ＤＣノッチフィルタ４５、オプションの非適応フィルタ３１、加算器３４、オプションの非適応フィルタ３
５、利得制御部３３、非線形プロセッサ３２、近端信号検出器２６、適応フィルタ２８、監視制御ユニット３０、ＤＣノッチフィルタ４９、および加算器３６を含む。ＤＣノッチフィルタ４５は、Ｓｉｎ３７を受信し、近端信号検出器２６および監視制御ユニット３０にＳｉｎ３８を出力する。非適応フィルタ３１が存在する場合、Ｓｉｎ３８は非適応フィルタ３１にも供給され、非適応フィルタ３１は、監視制御ユニット３０からコントロールを受信するように結合され、加算器３４にＳｉｎ３９を出力する。これに対して、非適応フィルタ３１が存在しない場合、Ｓｉｎ３８はＳｉｎ３９と同一であり、Ｓｉｎ３９は加算器３４への入力である。加算器３４は、Ｓｉｎ３９および適応フィルタ２８からのエコー推定信号４８を受信し、利得制御部３３、近端信号検出器２６、および監視制御ユニット３０に誤差信号４６を供給する。利得制御部３３は、監視制御ユニット３０に双方向的に結合され、非線形プロセッサ３２に誤差信号４７を供給するように結合される。エコーキャンセラ２０に非適応フィルタ３５が存在する場合、一実施形態では、利得制御部３３は非適応フィルタ３５内にあり、非適応フィルタ３５もまた、誤差信号４６を受信し、監視制御ユニット３０に双方向的に結合され、誤差信号４７を供給する。非線形プロセッサ３２は、監視制御ユニット３０に双方向的に結合され、Ｓｏｕｔ４２を供給する。監視制御ユニット３０は、コントロール１７にも結合され、Ｒｉｎ４３を受信し、加算器３６にトレーニング信号４１を供給し、ＤＣノッチフィルタ４９からＲｉｎ４４を受信し、適応フィルタ２８および近端信号検出器２６に双方向的に結合される。ＤＣノッチフィルタ４９は、加算器３６の出力（Ｒｏｕｔ４０）を受信し、近端信号検出器２６、適応フィルタ２８、および監視制御ユニット３０にＲｉｎ４４を供給する。加算器３６は、トレーニング信号４１およびＲｉｎ４３を受信し、Ｒｏｕｔ４０を供給する。
【０００９】
図３は、図２の近端信号検出器２６の一実施形態を示している。近端信号検出器２６は、近端信号レベル推定器５０、遠端信号レベル推定器５２、Ｓｉｎ信号レベル推定器５４、バックグラウンドプロセッサ５６、近端信号検出閾値セレクタ５８、および近端信号検出器６０を含む。近端信号レベル推定器５０は、誤差信号４６を受信し、近端信号検出器６０に結合される。遠端信号レベル推定器は、Ｒｉｎ４４を受信するように結合され、近端信号検出閾値セレクタ５８にも結合される。Ｓｉｎ信号レベル推定器５４は、Ｓｉｎ３８を受信するように結合され、近端信号検出器６０にも結合される。バックグラウンドプロセッサ５６は、監視制御ユニット３０、近端信号検出閾値セレクタ５８、および近端信号検出器６０に結合される。近端信号検出器６０もまた、近端信号検出閾値セレクタ５８および監視制御ユニット３０に結合される。
【００１０】
図４は、図２の適応フィルタ２８の一実施形態を示している。適応フィルタ２８は、適応フィルタ６２、オプションの非適応フィルタ６４、およびオプションのディレイ６６を含む。非適応フィルタ６４およびディレイ６６が両方とも適応フィルタ２８に存在する場合、ディレイ６６は、Ｒｉｎ４４を受信し、非適応フィルタ６４および監視制御ユニット３０に結合される。非適応フィルタ６４は、ディレイ６６、適応フィルタ６２、および監視制御ユニット３０に結合される。適応フィルタ６２は、誤差信号４６を受信するように結合され、エコー推定信号４８を供給するように結合されるとともに、監視制御ユニット３０にも結合される。非適応フィルタ６４が存在しない場合、ディレイ６６は適応フィルタ６２に直接結合される。ディレイ６６が存在しない場合、非適応フィルタ６４がＲｉｎ４４を受信する。ディレイ６６も非適応フィルタ６４も存在しない場合、適応フィルタ６２がＲｉｎ４４を受信する。
【００１１】
図５は、図２の非線形プロセッサ３２の一実施形態を示している。非線形プロセッサ３２は、信号レベル推定器６８、非線形プロセッサコントローラ７４、および適応バックグラウンドレベル推定器９６を含み、監視制御ユニット３０に双方向的に結合される。信号レベル推定器６８は、近端信号レベル推定器７０および遠端信号レベル推定器７２を含む。非線形プロセッサコントローラ７４は、非線形プロセッサＯＮコントローラ７６、非線
形プロセッサＯＦＦコントローラ７８、快適ノイズ発生器８６、ノイズレベル整合器８２、および出力信号ミキサ８４を含む。適応バックグラウンドレベル推定器９６は、短期バックグラウンドレベル推定器８８、バックグラウンドレベル推定器コントローラ９０、長期バックグラウンドレベル推定器９２、およびバックグラウンドレベルアダプタ９４を含む。近端信号レベル推定器７０は、誤差信号４７を受信し、非線形プロセッサＯＮコントローラ７６およびバックグラウンドレベル推定器コントローラ９０に結合される。遠端信号レベル推定器７２は、Ｒｉｎ４４を受信し、非線形プロセッサＯＮコントローラ７６、非線形プロセッサＯＦＦコントローラ７８、およびバックグラウンドレベル推定器コントローラ９０に結合される。非線形プロセッサＯＮコントローラ７６および非線形プロセッサＯＦＦコントローラ７８はノイズ発生器８６に結合され、ノイズ発生器８６はノイズレベル整合器８２に結合される。出力信号ミキサ８４は、ノイズレベル整合器８２に結合され、誤差信号４７を受信し、Ｓｏｕｔ４２を供給する。短期バックグラウンドレベル推定器８８は、バックグラウンドレベルアダプタ９４に結合され、誤差信号４７を受信する。バックグラウンドレベル推定器コントローラ９０は、短期バックグラウンドレベル推定器８８および長期バックグラウンドレベル推定器９２に結合される。長期バックグラウンドレベル推定器９２は、誤差信号４７を受信し、バックグラウンドレベルアダプタ９４に結合され、バックグラウンドレベルアダプタ９４はノイズレベル整合器８２に結合される。
【００１２】
図６は、監視制御ユニット３０の一部の一実施形態を示している。この部分は、利得モニタ１００およびフィルタ係数モニタ１０２を含む。利得モニタ１００は、Ｓｉｎ３８、誤差信号４６を受信し、適応フィルタ２８および利得制御部３３に結合される。フィルタ係数モニタ１０２は、適応フィルタ２８に結合される。
【００１３】
図７は、監視制御ユニット３０の別の一部の一実施形態を示している。この部分は、デシメーションフィルタ１０４および１０８、デシメータ１０６および１１０、近端信号検出器１１４、オプションのコンパレータ１１２、エコーリターンロスエンハンスメント（ＥＲＬＥ）推定器１１６、パワー推定器１２０および１１８、適応フィルタシステム１２８、ならびにノイズ発生器１３２を含む。適応フィルタシステム１２８は、適応フィルタ１２２、最大値ロケータ１２４、および遅延決定部１２６を含む。デシメーションフィルタ１０４は、Ｒｉｎ４４を受信し、デシメータ１０６に結合される。デシメーションフィルタ１０８は、Ｓｉｎ３８を受信し、デシメータ１１０に結合される。デシメータ１０６は、近端信号検出器１１４、パワー推定器１２０、および適応フィルタ１２２に結合される。パワー推定器１２０および近端信号検出器１１４は、適応フィルタシステム１２８に結合される。オプションのコンパレータ１１２が監視制御ユニット３０に存在する場合には、オプションのコンパレータ１１２は、誤差信号４６およびＳｉｎ３８を受信し、適応フィルタシステム１２８に結合される。デシメータ１１０は、パワー推定器１１８および適応フィルタ１２２に結合される。パワー推定器１１８は、ＥＲＬＥ推定器１１６および適応フィルタシステム１２８に結合され、適応フィルタ１２２は、近端信号検出器１１４、ＥＲＬＥ推定器１１６、および最大値ロケータ１２４に結合される。最大値ロケータ１２４は遅延決定部１２６に結合され、遅延決定部１２６は、適応フィルタ２８に推定遅延１３０を供給する。ノイズ発生器１３２は、Ｒｉｎ４３を受信し、加算器３６に注入信号４１を供給するように結合される。図７の監視制御ユニット３０の部分は、コントロール１７にも結合される。
【００１４】
図８は、監視制御ユニット３０のさらに別の一部の一実施形態を示している。この部分は、ストレージ１５０、パワー推定器１３４、平滑相関器１５２、およびトーン指示判断ユニット１６６を含む。パワー推定器１３４は、ディレイ１３６、ディレイ１３８、乗算器１４０および１４２、加算器１４４、マグニチュード１４６、ならびにローパスフィルタ１４８を含む。平滑相関器１５２は、ディレイ１５４、乗算器１５６および１５８、ローパスフィルタ１６０および１６２、ならびに発振器１６４を含む。ストレージ１５０は
、ディレイ１３６、ディレイ１３８、ローパスフィルタ１４８、ディレイ１５４、ローパスフィルタ１６０および１６２、ならびに発振器１６４に結合される。ディレイ１３６は、Ｒｉｎ４４またはＳｉｎ３８を受信し、ディレイ１３８および乗算器１４２に結合される。ディレイ１３８は乗算器１４０に結合され、乗算器１４０もまたＲｉｎ４４またはＳｉｎ３８を受信する。加算器１４４は、乗算器１４０および１４２ならびにマグニチュード１４６に結合され、マグニチュード１４６はローパスフィルタ１４８に結合され、ローパスフィルタ１４８はトーン指示判断ユニット１６６に結合される。ディレイ１５４は、Ｒｉｎ４４またはＳｉｎ３８を受信し、乗算器１５６に結合される。乗算器１５８もまた、Ｒｉｎ４４またはＳｉｎ３８を受信し、ローパスフィルタ１６０、発振器１６４、および乗算器１５６に結合される。乗算器１５６は、ディレイ１５４を受信し、ローパスフィルタ１６２および発振器１６４に結合される。トーン指示判断ユニット１６６は、ローパスフィルタ１６０からＲ０（ｎ）を受信し、ローパスフィルタ１６２からＲ１（ｎ）を受信し、適応フィルタ２８にトーンインジケータ信号１６８を供給する。
【００１５】
なお、図１〜図８は、通信システム１０およびエコーキャンセラ２０内に見出されるブロックの一実施形態を示していることに留意されたい。代替実施形態は、所望の機能に応じて、図示のもの以外の種々の異なる要素、図示のものよりも多数の要素、または図示のものよりも少数の要素を含んでもよい。さらに、図１〜図８内のブロックは、異なるグループ分けまたは異なる接続がなされることも可能であり、その場合でも同様の結果を達成することができる。したがって、図１〜図８は、以下で説明する概念を例示するために用いられる例を提供することのみを意図している。また、図１〜図８における接続は、単一導体（一方向性または双方向性）として描くことも、または多重導体（一方向性または双方向性）として描くことも可能であるが、多様な異なる接続が使用可能である。例えば、多重導体は、多様な異なる一方向性または双方向性の単一導体で置き換えることができる。同様に、単一導体は、一方向性または双方向性の多重導体に拡張することができる。信号は、単一導体を通じて直列に通信されることも可能であり、あるいは、多重導体を通じて並列に通信されることも可能である。また、信号は、単一導体または多重導体を通じて時間多重化されることが可能である。したがって、図１〜図８に示されている接続は、多様な異なる方法で実施することが可能であり、その場合でも所望の機能を達成することができる。また、以下でさらに説明するように、図１〜図８の設計は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せのいずれで実施することも可能である。
【００１６】
［動作：］
送信機／受信機１２は、ハイブリッド１６にデータ信号を供給し、ハイブリッド１６からデータ信号を受信する。ハイブリッド１６は、送信機／受信機１２と通信ネットワーク２４との間で４線−２線変換を行う。したがって、送信機／受信機１２は、通信ネットワーク２４を通じて通信を行うために用いられる、２線式加入者回線を通じてハイブリッド１６に結合される、例えば電話機またはモデムのようないかなる装置であってもよい。したがって、ハイブリッド１６は、（送信機／受信機１２を有する）ローカル加入者ループと通信ネットワーク（通信ネットワーク２４）との間のインタフェースを提供する。送信機／受信機１４およびハイブリッド１８は、それぞれ送信機／受信機１２およびハイブリッド１６と同様に機能する。
【００１７】
送信機／受信機１２と送信機／受信機１４の間の通信において、電気エコーあるいはラインエコーが、ハイブリッド１６およびハイブリッド１８によって通信に導入される。このエコーの原因は、ハイブリッド１６内のインピーダンス不整合、およびハイブリッド１８内のインピーダンス不整合である。例えば、ハイブリッド１６内のインピーダンスが完全に整合していると仮定すれば、受信信号Ｒｏｕｔ４０からの全エネルギーが送信機／受信機１２に送信されることになる。しかし、ハイブリッド１６内にインピーダンス不整合
がある場合、受信信号Ｒｏｕｔ４０からのエネルギーの一部が送信信号Ｓｉｎ３７を通じて反射される。通信ネットワーク２４を通じての（ハイブリッド１６により導入されるエコーの場合には、送信機／受信機１４からの）ラウンドトリップ遅延が十分に長い場合、送信機／受信機１４によってＳｉｎ３７から受信される反射エコーが通信中に顕著になる。これは、電話音声通信中に、顕著なエコー、さらには耐え難い擾乱を生じることがある。一例では、十分に長い遅延とは、４０ミリ秒よりも大きいラウンドトリップ遅延を指すものとすることができる。ラウンドトリップ遅延が増大すると、エコーが悪化して、より顕著になり、妨害的になることがある。（他方、ラウンドトリップ遅延がかなり小さくなれば、エコーは側音と区別できないため、妨害的ではないであろう。）ラウンドトリップ遅延は、伝送遅延、処理遅延、計算遅延等を含む多様な異なる遅延またはその組合せを含み得る。通信システムによっては、ラウンドトリップ遅延が、通信を途絶させるほど十分に大きくなることがある。そこで、通信システム１０におけるラインエコーを低減するためにエコーキャンセラ２０および２２を用いることが可能である。例えば、（送信機／受信機１４から）Ｒｏｕｔ４０を通じて受信されＳｉｎ３７を通じて反射される信号からハイブリッド１６によって導入されるエコーをエコーキャンセラ２０によって処理することにより、通信ネットワーク２４を通じて送信機／受信機１４へ信号Ｓｏｕｔ４２を返送する前に反射エコーを低減する。
【００１８】
上記のように、ラインエコーは、ハイブリッド１６内のインピーダンス不整合およびハイブリッド１８内のインピーダンス不整合によって導入される。また、音響エコーが、送信機／受信機１２および送信機／受信機１４を通じて通信に導入されることがある。例えば、送信機／受信機１２がスピーカフォンである場合、受信信号が、スピーカを通じて出力された後、周囲環境ではね返り、信号の一部が送信機／受信機１２のマイクロフォンに戻って送信機／受信機１４にも反射されることがある。一実施形態では、エコーキャンセラ２０は、ラインエコーに加えて音響エコーのいくつかの態様も低減するようにも機能することができる。
【００１９】
一実施形態では、通信ネットワーク２４は、パケット電話ネットワーク（例えば、ボイス・オーバー・インターネットプロトコル（ＩＰ）、データ・オーバー・パケット、非同期転送モード（ＡＴＭ）等があり、無線システムまたは有線システムのいずれにも適用可能である）または公衆交換電話網（ＰＳＴＮ）を含み得る。代替実施形態では、通信システム１０は、いかなるタイプの通信システムであってもよい。いかなる通信経路も、インタフェース１３またはインタフェース１５として使用され得る。
【００２０】
コントロール１７は、送信機／受信機１２および１４、ハイブリッド１６および１７、エコーキャンセラ２０および２２、ならびに通信ネットワーク２４の間の制御経路を提供する。コントロール１７経由で伝送される制御信号は一般にインライン信号ではない。例えば、コントロール１７は、エコーキャンセラ２０または２２をイネーブルまたはディセーブルするためのイネーブル／ディセーブル信号を含み得る。コントロール１７は、電話機がオンフックまたはオフフックのいずれであるかを示す信号も含み得る。
【００２１】
本明細書に記載の実施形態では、送信機／受信機１２をエコーキャンセラ２０に関して近端と呼び、送信機／受信機１４をエコーキャンセラ２０に関して遠端と呼ぶ。したがって、本明細書の実施形態は、エコーキャンセラ２０に関して説明されることになる。しかし、エコーキャンセラ２２がエコーキャンセラ２０と同様に動作することが理解されるべきである。すなわち、代替実施形態では、送信機／受信機１４をエコーキャンセラ２２に関して近端と呼び、送信機／受信機１２をエコーキャンセラ２２に関して遠端と呼んでもよい。
【００２２】
図２は、エコーキャンセラ２０の一実施形態を示している。ここで、上記のように、送
信機／受信機１２は近端であり、送信機／受信機１４は遠端である。Ｓｉｎ３７は、送信機１２からハイブリッド１６を通じて送信される送信信号である。エコーキャンセラ２０は、通信ネットワーク２４およびハイブリッド１８を通じて受信機１４にエコーキャンセルされた送信信号Ｓｏｕｔ４２を供給する。Ｒｉｎ４３は、ハイブリッド１８および通信ネットワーク２４を通じて送信機１４から受信される受信信号である。エコーキャンセラは、Ｒｉｎ４３を受信し、ハイブリッド１６を通じて受信機１２にこの送信信号Ｒｉｎ４３をＲｏｕｔ４０として供給する。
【００２３】
上記のように、Ｓｉｎ３７は、ハイブリッド１６内のインピーダンス不整合により導入される反射エコーを含むことがある。したがって、エコーキャンセラ２０は、導入された反射エコーを低減（または消去）し、エコーキャンセルされた送信信号Ｓｏｕｔ４２を供給する。すなわち、ハイブリッド１６内のインピーダンスが完全に整合している場合、（実際には達成不可能な理想的な場合には）反射エコーがないので、ハイブリッド１６の入力で受信される信号（例えばＲｏｕｔ４０）に対して、ハイブリッド１６からの（Ｓｉｎ３７での）実質的な応答はない。しかし、ハイブリッドが不平衡状態にある場合（通常の場合、例えばインピーダンスが不整合である場合）、Ｒｏｕｔ４０経由で受信される信号から、図３７に示すような応答が生じる。ハイブリッド回路の対応するインパルス応答（ｈ）を、その入力（Ｒｏｕｔ４０）および出力（Ｓｉｎ３７）の視点から見た様子を図３７に示す。エコーキャンセラ２０内の適応フィルタ２８は、Ｓｉｎ３７の（入力信号Ｒｏｕｔ４０に対する）ハイブリッド応答を「模倣」しようとし、それを加算器３４で差し引く。なお、信号Ｒｏｕｔ４０には線形歪み（純粋な時間的転移、すなわち、純粋遅延と呼ばれるパラメータだけ時間的にシフトしている場合を含む）があることに留意されたい。この歪みは、図３７のハイブリッド１６のインパルス応答に示すことができる。なお、インパルス応答は、純粋遅延部分およびばらつき時間の両方を含むことに留意されたい。純粋遅延とは、インパルス応答の開始から、何らかの顕著な値が生じ始めるまでの部分を指し、図３７ではＴ１で表される。ばらつき時間とは、インパルス応答継続時間のうち、顕著な応答が発生し始めてから、応答が実質的に消失するまでの部分を指し、図３７ではＴ４＋Ｔ２で表される。インパルス応答の形状（ばらつき時間セグメントに対応する部分による）は、（Ｒｏｕｔ４０／Ｓｉｎ３７の入力／出力ポートから見た）ハイブリッドの周波数特性に変換することができる。
【００２４】
Ｓｉｎ３７は、Ｓｉｎ３７からＤＣ成分を除去するためにＤＣノッチフィルタ４５に供給される。なお、代替実施形態では、ＤＣノッチフィルタ４５の代わりにハイパスフィルタを用いてもよいことに留意されたい。同様に、加算器３６の出力（Ｒｏｕｔ４０）が、Ｒｏｕｔ４０からＤＣ成分を除去するためにＤＣノッチフィルタ４９に供給される（ただし、代替実施形態では、代わりにハイパスフィルタを用いてもよい）。ＤＣノッチフィルタを用いるほうが、ハイパスフィルタよりも計算量的に安価であり、しかもリップル効果が生じないため、フィルタのパスバンド全体を通じて利得をフラットに維持し易い。代替実施形態では、ＤＣノッチフィルタ４５およびＤＣノッチフィルタ４９の機能を実行するために、単一の共有ＤＣノッチフィルタを用いてもよい。
【００２５】
なお、加算器３６は、Ｒｉｎ４３およびトレーニング信号４１を受信し、これら２つの信号の和を出力Ｒｏｕｔ４０として供給することに留意されたい。しかし、トレーニング信号４１がゼロである場合、出力Ｒｏｕｔ４０は単に入力Ｒｉｎ４３と同一である。すぐ後の説明のために、トレーニング信号４１はゼロであり、Ｒｏｕｔ４０はＲｉｎ４３に等しいと仮定する。また、非適応フィルタ３１および非適応フィルタ３５はオプションであり、以下でさらに説明することに留意されたい。すぐ後の説明のために、Ｓｉｎ３８とＳｉｎ３９は等しく、誤差信号４７は誤差信号４６の利得調節バージョンであり、非適応フィルタ３５の効果はないと仮定する。
【００２６】
したがって、Ｓｉｎ３９は、送信機１２によって送信される近端トーカ信号（Ｓｇｅｎ）およびハイブリッド１６によってＲｏｕｔ４０から導入される反射エコーを含む送信信号である。したがって、Ｓｉｎ３９は、「Ｓｇｅｎ＋エコー」と表すことができる。適応フィルタ２８は、加算器３４に、反射エコーの推定であるエコー推定信号４８を供給し、加算器３４は誤差信号４６を出力する。したがって、誤差信号４６は、「Ｓｉｎ３９−推定エコー４８」と表すことができ、あるいは上記の式をＳｉｎ３９に代入すれば、「Ｓｇｅｎ＋エコー−推定エコー」と表すことができる。推定エコーが正確である（すなわち、実際のエコーに等しいかまたは実質的に等しい）場合、誤差信号４６は、実質的なエコーがなく、Ｓｇｅｎのみを含むことになる。これが理想的な場合である。しかし、推定エコーが正確でない場合、誤差信号４６はＳｇｅｎおよび残留エコー成分の両方を含むことになる。この場合、誤差信号４６は、「Ｓｇｅｎ＋残留エコー」と表すことができる。ここで残留エコーは「エコー−推定エコー」である。Ｓｇｅｎが存在しない場合（すなわち近端が無音である場合、つまり送信機１２から送信されている信号がない場合）、誤差信号４６は残留エコーのみを表す。この場合、以下でさらに詳細に説明するように、誤差信号４６を用いて、残留エコーを最小化するための適応プロセスを実行することができる。しかし、Ｓｇｅｎが存在する場合、誤差信号４６を用いて適応プロセスを実行することはできない。というのは、適応フィルタ２８は誤差を用いて適応を行うが、Ｓｇｅｎが存在すると、誤差信号４６はもはや誤差そのものではないからである。したがって、適応プロセスを実行することができるかどうかを判定するために、Ｓｇｅｎの検出が必要である。近端信号検出器２６は、Ｓｉｎ３８（これは本例ではＳｉｎ３９に等しい）およびＲｉｎ４４を受信するように結合され、誤差信号４６および監視制御ユニット３０からの制御信号を用いて、Ｓｇｅｎの存在を検出する（すなわち、送信機１２における近端トーカの存在を検出する）。
【００２７】
適応フィルタユニット２８において、エコー推定信号４８すなわちｙ（ｋ）は、ｙ（ｋ）＝ＸＴ（ｋ）・Ｈ（ｋ）により計算される。ここでＸ（ｋ）＝［ｘ（ｋ），ｘ（ｋ−１），... ，ｘ（ｋ−Ｎ＋１）］Ｔは、ＦＩＲフィルタスパンの継続時間にわたる入力信号ベクトルであり、ｘ（ｎ）＝Ｒｉｎ４４である。Ｈ（ｋ）は、ｋ回目の反復に対するフィルタ係数ベクトルである。ここで、Ｈ（ｋ）＝［ｈ０（ｋ），ｈ１（ｋ），... ，ｈＮ−１（ｋ）］Ｔである。フィルタ係数の実際の更新は、一般的なＬＭＳ型のアルゴリズム、すなわちＨ（ｋ＋１）＝Ｈ（ｋ）＋ｓｔｅｐ＿ｓｉｚｅ・ｅｒｒｏｒ（ｋ）・Ｘ（ｋ）によって支配される。ここで、ｅｒｒｏｒ（ｋ）は誤差信号４６に対応し、ｓｔｅｐ＿ｓｉｚｅは適応レートを制御し、Ｈ（ｋ＋１）は新たなフィルタ係数ベクトルである。
【００２８】
誤差信号４６における残留エコーは、非線形プロセッサ３２によってさらに低減または除去することができる。非線形プロセッサ３２は、誤差信号４７（これは、本実施形態では、誤差信号４６の利得調節バージョンである）および監視制御ユニット３０からの制御信号を受信してＳｏｕｔ４２を生成する。Ｓｏｕｔ４２は、理想的には、エコーを含まない。残留エコーを低減または除去することに加えて、非線形プロセッサ３２は、近端トーカ信号（Ｓｇｅｎ）のバックグラウンドノイズの保持または整合もしようとする。バックグラウンドノイズの整合は、真のバックグラウンドノイズの連続性を維持することによって、通信品質の改善を可能にする。この連続性がないと、遠端リスナは、遠端が話す時に、近端トーカからは無音しか聞こえないであろう。別法として、遠端が話す時に合成バックグラウンドノイズを提供してもよい。しかし、これは、（近端が話す時の）真のバックグラウンドノイズと（遠端が話す時の）合成バックグラウンドノイズとの間で妨害的な切替となることがある。したがって、バックグラウンドノイズの整合は、この妨害的切替を最小限にするのに役立つ。
【００２９】
監視制御ユニット３０は、フィルタ係数モニタ（例えば、図６に関してさらに説明するフィルタ係数モニタ１０２）を含む。フィルタ係数モニタは、真のハイブリッドが存在す
るかどうかを判定することにより、適応フィルタ２８が無効なハイブリッドに適応しようとしないようにするために用いられる。監視制御ユニット３０は、オプションの適応フィルタ３５内の利得制御部３３を制御するための利得モニタも含む。利得制御部３３の１つの目的は、通信システム１０の安定性を維持することである。監視制御ユニット３０は、適応フィルタ２８の効率を改善するために、純粋遅延決定器および疎ウィンドウロケータ（これらは両方とも、図７に関してさらに詳細に説明する）も含む。監視制御ユニット３０は、（図８に関してさらに詳細に説明する）トーンインジケータおよびトーン検出器も含む。トーンインジケータおよびトーン検出器は、通信システム１０内でのシグナリングトーンを検出するために用いることができる。これらのシグナリングトーンとしては、例えば、当該シグナリングトーンの後にデータが送信されることになる時にエコーキャンセラをディセーブルするための、位相反転２１００Ｈｚトーンを挙げることができる。したがって、エコーキャンセラは、必要に応じてディセーブルすることができる。他方、適応フィルタ２８が、送信機１２または送信機１４のいずれかによって送信されるトーン（例えば、単周波または多周波の正弦波等）に曝される場合、通信システム１０の不安定性が生じることがある。したがって、トーンの検出を用いることにより、適応フィルタが発散して不安定性を引き起こすのを防ぐことができる。
【００３０】
上記の実施形態では、エコーキャンセラ２０は非適応フィルタ３１および３５を含まない。しかし、代替実施形態では、非適応フィルタ３１を、ＤＣノッチフィルタ４５と加算器３４の間に結合して、（図４に関してさらに説明するように）適応フィルタ２８の長さを短縮するために用いることができる。この実施形態では、非適応フィルタ３１は、Ｓｉｎ３８および監視制御ユニット３０からの制御信号を受信してＳｉｎ３９を生成する。また、非適応フィルタ３１を有する一実施形態では、エコーキャンセラは、加算器３４と非線形プロセッサ３２の間に結合された非適応フィルタ３５を含んでもよい。非適応フィルタ３５は、利得制御部３３を含んでもよいし、別個のユニットであってもよい。この実施形態では、非適応フィルタ３５は、非適応フィルタ３１の効果を補償することにより、近端信号Ｓｇｅｎが歪まないようにする。非適応フィルタ３５は、誤差信号４６、監視制御ユニット３０からの制御信号を受信し、非線形プロセッサ３２に誤差信号４７を供給する。（非適応フィルタ３１および３５については、図４に関してさらに後述する。）
また、監視制御ユニット３０は、Ｒｉｎ４３に信号を注入してＲｏｕｔ４０を生成するために、加算器３６にトレーニング信号４１を供給する。トレーニング信号４１の注入は、ハイブリッドエコーパス（Ｒｏｕｔ４０から、ハイブリッド１６を通り、Ｓｉｎ３７に戻るパス）の純粋遅延を推定するために用いることができる。純粋遅延とは、Ｒｏｕｔ４０からＳｉｎ３７までの最小時間遅延を指す。トレーニング信号４１の注入は、通信の最初に（電話会話の開始時のように）遠端信号が存在しない時に純粋遅延を推定するために用いることができる。なお、トレーニング信号４１はオプションであることに留意されたい。監視制御ユニット３０は、機能モジュールの全部または一部をイネーブルまたはディセーブルするためにコントロール１７を受信してもよい。
【００３１】
図９は、本発明の一実施形態によるエコーキャンセラ２０の動作を説明するフロー２００を含む。フロー２００は、図２のエコーキャンセラ２０のようなエコーキャンセラによって提供される機能の概観である。フロー２００内の各ステップの詳細は、図３〜図８および図１０〜図３８に関して以下でさらに詳細に提供される。フロー２００は開始２０２から開始され、フローはブロック２０４に進み、ＤＣノッチフィルタリングをＲｉｎおよびＳｉｎの両方に対して実行する。なお、加算器３６が存在するか、またはトレーニング信号４１が存在する場合、ＤＣノッチフィルタリングは、Ｒｉｎ４３ではなく加算器３６の出力（Ｒｏｕｔ４０）に対して実行されることに留意されたい。ＤＣノッチフィルタ４５が、上記のように、Ｓｉｎ３７からＤＣ成分を除去し、Ｓｉｎ３８を生成する。同様に、ＤＣノッチフィルタ４９が、Ｒｉｎ４３（または、トレーニング信号４１によってはＲｏｕｔ４０）からＤＣ成分を除去し、Ｒｉｎ４４を生成する。次に、フロー２００はブロ
ック２０６に進み、Ｒｉｎ４４の長期パワーおよびＳｉｎ３８の短期パワーを推定する。なお、長期パワーおよび短期パワーは相対的な用語であることに留意されたい。すなわち、長期パワーとは、短期パワーに比べて長い期間にわたって測定されるパワーを指す。これらのパワーは、エコーキャンセラ２０の近端信号検出器２６で計算することができる。
【００３２】
次に、ブロック２０６で計算されたパワーを用いて、近端トーカ信号検出（ＮＥＳＤ）閾値を求める。このＮＥＳＤ閾値は、その後、近端トーカ信号（すなわちＳｇｅｎ）の存在を判定するために用いられる。この判定も、エコーキャンセラ２０の近端信号検出器２６で実行することができる。次に、フロー２００はブロック２１０に進み、適応フィルタ２８を監視および制御する。ブロック２１０は、ブロック２０９、２１１、および２１３を含む。なお、監視制御適応フィルタ２１０内の機能はオプションであることに留意されたい。すなわち、ブロック２０９、２１１、および２１３のいかなる組合せを実行してもよく、いずれも実行しなくてもよい。ブロック２０９で、トーン指示処理を実行する。このトーン指示処理は、図２に関して上記で説明したように、そして図８に関してさらに説明するように、監視制御ユニット３０で実行することができる。次に、フロー２００はブロック２１１に進み、遅延（一実施形態では純粋遅延）を検出し、適切なサイズのフィルタリングウィンドウ（疎ウィンドウ）を位置決めする。すなわち、監視制御ユニット３０は、遅延を検出し、適応フィルタ２８の長さ（すなわちタップ数）が短くなるような疎ウィンドウを位置決めすることができる。
【００３３】
適応フィルタ長を短縮するもう１つの方法がブロック２１３で遂行される。一実施形態では、適応フィルタ２８とともに、はるかに短いフィルタ長を有する非適応フィルタ３１および３３の組合せを使用する。詳細は図２８〜図３５に提供する。
【００３４】
監視制御適応フィルタ２１０の後、フロー２００はブロック２１２に進み、適応フィルタを用いてエコー推定信号を生成する。例えば、これは、図２に関して上記で導入したように、適応フィルタ２８がエコー推定信号４８を生成することに対応してもよい。次に、フロー２００はブロック２１４に進み、誤差信号および誤差信号の短期パワーを推定する。すなわち、ブロック２１４は、図２の加算器３４に対応してもよく、Ｓｉｎ３９からエコー推定信号４８を差し引くことによって誤差信号４６を推定する。そして、監視制御ユニット３０を用いて、誤差信号４６の短期パワーを推定することができる。
【００３５】
その後、フローはブロック２１６に進み、ＮＥＳＤ閾値を用いて近端トーカ信号を検出する。すなわち、ブロック２１６で、Ｓｇｅｎが存在するかどうか（信号が図１の送信機１２から送信されているかどうか）を検出する。これは、図２の近端信号検出器２６で実行することができる。フローはブロック２１８に進み、利得制御部３３の利得を監視し、適応フィルタ２８および通信システム１０の安定性を維持するように選択的に調節する（その詳細については以下でさらに詳細に説明する）。次に、フロー２００は判断分岐２２０に進み、フィルタ係数を更新する必要があるかどうかを判定する。例えば、上記のように、Ｓｇｅｎが存在する場合、誤差信号４６は、近端トーカ信号（Ｓｇｅｎ）および残留エコー成分の両方を含む。この場合、誤差信号４６は残留エコーそのものを表しているわけではないので、適応フィルタ２８を更新すべきではない。そして、フローは判断分岐２２４に進む。これに対して、Ｓｇｅｎが存在しない（すなわち、近端トーカが無音である）と判断される場合、適応フィルタ２８を更新することができ、フローはブロック２２２に進み、適応フィルタ２８のフィルタ係数を更新した後、判断分岐２２４に進む。
【００３６】
判断分岐２２４で、バックグラウンド処理が必要であるかどうかを判定する。一実施形態では、バックグラウンド処理は、エコーキャンセラ２０の動作中に周期的に実行される。代替実施形態では、例えば種々の適応フィルタ処理状態に応じて、さまざまな時刻にバックグラウンド処理を行うことができる。バックグラウンド処理を実行すべきでない場合
、フローはステップ２３０に進み、非線形処理を実行する。これに対して、バックグラウンド処理を実行すべきである場合、フローはブロック２２６に進み、フィルタ係数をバックアップする。すなわち、適応フィルタ２８のフィルタ係数を（エコーキャンセラ２０の内部またはエコーキャンセラ２０の外部のいずれに配置されてもよいストレージユニット等に）記憶することができる。次に、フローはブロック２２８に進み、フィルタ係数を監視し、エコーキャンセラ安定性制御のために、ハイブリッドが存在するかどうかを判定する。
【００３７】
バックグラウンド処理がもしあればその後、フローは非線形処理２３０に進み、残りの残留エコーを低減または除去し、必要があればバックグラウンドノイズを挿入する。Ｒｉｎ４３およびＳｉｎ３７を通じて受信されているサンプルがまだ他にある場合（判断分岐２３２で）、処理はブロック２０４に戻って次のサンプルに進み、さもなければ、フローは終了２３４で完了する。なお、電話アプリケーションでは、信号は通常は音声を含むので、信号のサンプリングレートは一般に８ｋＨｚであることに留意されたい。したがって、一実施形態では、サンプリングレートは８ｋＨｚであり、その場合、Ｒｉｎ４３およびＳｉｎ３７のサンプルは０．１２５ｍｓごとに受信される。しかし、代替実施形態では、異なるサンプリングレートを用いてもよい。例えば、音楽アプリケーションでは、より高いサンプリングレートが一般に要求される。さらに、デジタルアプリケーションでは、サンプリングレートはデジタル情報の伝送レートに依存してもよい。
【００３８】
なお、図９のステップは、本発明の一実施形態を表していることに留意されたい。代替実施形態では、種々の異なる順序でそれらのステップを実行してもよい。その場合、一部のステップを、より多く、より少なく、または他のステップと並行して、実行してもかまわない。また、フロー２００におけるステップの一部はオプションであってもよいし、他の実施形態では、所望の動作を実行するために追加のステップまたは異なるステップを用いてもよい。したがって、多くの変形形態が可能であり、フロー２００はエコーキャンセラの動作の単なる一例に過ぎないことを当業者は認識するはずである。同様に、エコーキャンセラ２０もまた、単なる可能な一実施形態を例示しているに過ぎない。代替実施形態では、図２に示したものよりも多数または少数のブロックまたはユニットを用いて、全部の機能、全部よりも少ない機能、またさらには異なる機能を実行してもよい。したがって、図２のエコーキャンセラ２０は、単に一例と見なされるべきである。また、図２のブロックおよび図９のステップはすべて、データプロセッサ（例えば、マイクロプロセッサ、デジタル信号プロセッサ等）上で実行されるソフトウェアによって、ハードウェアによって、またはハードウェアとソフトウェアの組合せによって、実行可能であることに留意されたい。
【００３９】
図３は、近端信号検出器２６の一実施形態を示している。近端信号検出器２６の動作を図１０〜図１３に関して説明する。近端信号検出器２６および図１０〜図１３のフローにより、エコーパス遅延およびエコーリターンロス（ＥＲＬ）によって影響されない、高速で信頼性の高い検出が可能となる。エコーリターンロス（ＥＲＬ）は、エコーパスにおける伝送損失およびハイブリッド損失によるエコーキャンセラのＲｏｕｔポートからＳｉｎポートまでの信号の減衰である。近端トーカ信号が検出される時（すなわち、Ｓｇｅｎの存在が検出される時）、近端トーカ信号の存在は、誤差信号４６がエコーによる誤差のみではないことを示しているので、適応が発散することを防ぐために、上記のように、適応プロセス（残留エコーの平均パワーを最小化するために適応フィルタ２８の係数を変化させる）は中止される。なお、近端信号がシングルトーク状況（すなわち、近端トーカのみが存在する）またはダブルトーク状況（近端トーカおよび遠端トーカの両方が存在する時）のいずれの間であるかにかかわらず、近端信号が検出される時には適応プロセスが中止されることに留意されたい。適応プロセスを中止することに加えて、バックアップされたフィルタ係数からフィルタ係数をリストアすることが必要な場合がある。さらに、近端信
号および遠端信号が両方とも存在しない場合にも、適応プロセスは、エコーキャンセラ２０がチャネルノイズまたは低い誤差信号に適応することを防ぐために停止され、それにより計算を最小限にする。したがって、エコーキャンセラ２０は、遠端信号が比較的強い時や、近端信号が存在しない時のような必要な時に適応を行うように動作する。この状況において、適応フィルタ２８は、エコーをエコー推定信号４８として正しく推定するように適応することができる。また、以下で説明するように、適応フィルタプロセスの状態に応じて、近端トーカ信号検出のための閾値は「ギアシフト」（すなわち調節）される。
【００４０】
図１０〜図１３に記載の実施形態は、適応フィルタ２８の係数をバックアップおよびリストアする方法も提供する。プロセスは、図１３に示すように、状態マシンによって支配されてもよい。これは、バックアップの回数および頻度を最小化し、適応フィルタ２８が発散するのを防ぐ。
【００４１】
図３は、近端信号検出器２６の一実施形態を示している。信号レベル推定器が、近端信号（Ｓｇｅｎ）、遠端信号（Ｒｉｎ）、および送信パス入力信号（Ｓｉｎ）のレベルを追跡する。したがって、近端信号レベル推定器５０は誤差信号４６を受信し、遠端信号レベル推定器５２はＲｉｎ４４を受信し、Ｓｉｎ信号レベル推定器５４はＳｉｎ３８を受信する。そして、これらの信号レベル推定器を用いて、近端信号検出（ＮＥＳＤ）閾値セレクタ５８および近端信号検出器６０を制御する。バックグラウンドプロセッサ５６が、適応フィルタ２８の処理ステータスを監視し、ＮＥＳＤ閾値セレクタ５８および近端信号検出器６０を制御する。なお、一般に、各信号レベル推定器は、測定すべき信号にローパスフィルタを適用してよく、推定は、パワーまたはマグニチュード（大きさ）のいずれにおいて行うことも可能であることに留意されたい。また、図３および図１０〜図１３についての以下の説明では、信号が８ｋＨｚのレート（これは、上記のように、通常の音声アプリケーションで一般的なレートである）でサンプリングされることを仮定する。
【００４２】
Ｓｉｎ信号レベル推定器５４の一実施形態では、次式を用いてＳｉｎのパワー（ＰＳｉｎ）を取得する：
【００４３】
【数１】
2005531200.tif 000003
【００４４】
上式において、Ｓｉｎ（ｎ）は時刻ｎにおけるエコーキャンセラ２０への送信パス入力である。ＰＳｉｎ（ｎ）は時刻ｎにおける推定送信パス入力信号パワーである。Ｎはスムージングファクタであり、一実施形態では３２であると仮定される。代替実施形態では、或る範囲内のＮの値を用いてもよい。一般に、Ｎは、Ｓｉｎに対するパワー推定がＳｉｎの急速な変動に対して敏感になりすぎないくらい大きく選択すべきである。他方、Ｓｉｎのパワー推定が音声信号レベルの変化を追跡できるくらい敏感であり、パワー推定の遅延が最小であるためには、Ｎはそれほど大きくなることはできない。別法として、パワーは、２＊Ｎ−１サンプルのウィンドウサイズによる移動平均法を用いて推定することができる。この手法は式１によるパワー推定器と同等の帯域幅を提供することを示すことができる。
【００４５】
近端信号レベル推定器５０は、誤差信号４６を受信し、時刻ｎにおける近端信号パワーを取得する。しかし、上記のように、エコーキャンセラ２０の近端信号（Ｓｇｅｎ）を直接入手することはできない。すなわち、Ｓｉｎ３８は、Ｓｇｅｎと、Ｒｉｎ４４からの反射エコーとの混合である。したがって、近端信号レベル推定器５０の一実施形態では、Ｓ
ｉｎ３９（これは、図２においてＤＣノッチフィルタ４５と加算器３４の間にフィルタが存在すると仮定すると、Ｓｉｎ３８のフィルタリングされたバージョンである）とエコー推定信号４８との差を用いる。したがって、誤差信号４６が近端信号レベル推定器５０に供給される。誤差信号４６は、エコーキャンセラ２０が入手できる最も精密なＳｇｅｎの推定であるが、この推定の精度は適応フィルタ２８の収束状態に依る。理想的には、適応フィルタが十分に収束している時、エコーの推定（エコー推定信号４８）は正確である。実際には、上記のように、エコー推定信号４８は一般にＲｉｎ４４からの反射エコーに等しくないため、誤差信号４６は単にＳｇｅｎではなく、Ｓｇｅｎ＋残留エコーである。適応プロセスが或る一定の時間ウィンドウにわたって継続すると、残留エコーにより導入される誤差が最小化される。したがって、近端信号レベル推定器５０の一実施形態では次式を用いる：
【００４６】
【数２】
2005531200.tif 000004
【００４７】
上式において、誤差信号（error signal）４６は、加算器３４の出力におけるＳｉｎ３９とエコー推定信号４８との差であり、Ｐｅｒｒｏｒ（ｎ）は時刻ｎにおける推定近端信号パワーであり、Ｎは推定器のスムージングファクタである（これは本実施形態では３２である）。
【００４８】
遠端信号レベル推定器５２の一実施形態では、Ｒｉｎの短期パワーを取得し、これを用いて、Ｒｉｎの過去の短期パワー推定のいくつかにわたるＲｉｎの平均パワー（これは、エコーパスの範囲をカバーする）を計算する。例えば、一実施形態では、次式を用いてＲｉｎの短期パワーを求める：
【００４９】
【数３】
2005531200.tif 000005
【００５０】
上式において、Ｒｉｎ（ｋＮ−ｉ）は、時刻ｋＮ−ｉにおけるエコーキャンセラ２０への受信パス入力であり、ＰＲｉｎ（ｋＮ）は、時刻ｋＮにおける推定遠端信号パワーである（なお、計算コストを低減するために、ＰＲｉｎ（ｋＮ）は１サンプルごとではなくＮサンプルごとに推定されることに留意されたい）。Ｎはウィンドウサイズである（これは一実施形態では３２である）。したがって、式４は、Ｎサンプルごとに（サイズＮの）カレントウィンドウ内でのＲｉｎのパワーを計算し、ここでｋはウィンドウを追跡する。すなわち、最初のウィンドウ（ｋ＝１の場合）はサンプル１〜３２によって定められ、次のウィンドウ（ｋ＝２の場合）はサンプル３３〜６４によって定められ、等とすることができる。すると、次式を用いて、遠端信号の平均パワーを得ることができる：
【００５１】
【数４】
2005531200.tif 000006
【００５２】
上式において、「ＰＲｉｎ（（ｋ−ｉ）Ｎ）」は、時刻（ｋ−ｉ）Ｎにおける遠端信号パワー推定の過去のＭ個のスナップショットであり、ここでｉ＝Ｍ−１，Ｍ−２，... ，０である。ＡＶＧ  ＰＲｉｎ（ｋＮ）は、時刻ｋＮにおける遠端信号レベル推定の平均であり、Ｍはその平均に対するウィンドウサイズである。ここで、６４ｍｓまでのエコーパス遅延をカバーするように設計されたエコーキャンセラの場合、Ｍ＝１６である（すなわち、Ｍ＊Ｎ＝１６＊３２＝５１２サンプル）。例えば、カレントウィンドウが１６番目のウィンドウ（すなわちｋ＝１６）である場合、ＡＶＧ  ＰＲｉｎ（ｋＮ）の値は、過去の１６（すなわちＭ）個のウィンドウのそれぞれについて計算されたＰＲｉｎ（ｋＮ）の値の平均、すなわちＰＲｉｎ（１６＊Ｎ），ＰＲｉｎ（１５＊Ｎ），... ，ＰＲｉｎ（２＊Ｎ），ＰＲｉｎ（Ｎ）の平均となる。過去のデータが十分にない場合（すなわち、処理済のウィンドウがＭ個よりも少ない場合）、利用可能な値のみを用いて平均を求めることができ、まだ計算されていない値についてはゼロとしてよい。例えば、３番目のウィンドウ（ｋ＝３）の場合、利用可能な過去のＰＲｉｎ（ｋＮ）の値は２個だけであるので、ＡＶＧ  ＰＲｉｎ（ｋＮ）は３個の値の平均となり、Ｍ個の値の平均ではない。なお、図１０に関して説明するように、ＡＶＧ  ＰＲｉｎ（ｋＮ）はＮサンプルごとに計算され、ＡＶＧ  ＰＲｉｎ（ｋＮ）を計算した後、ｋの値をインクリメントして、次のＮサンプルのウィンドウの開始を示すことができることにも留意されたい。
【００５３】
代替実施形態では、遠端信号レベル推定器５２は、Ｎ＝２５６として上記の式１または式２のいずれかを用いてＲｉｎの平均パワーを推定することができる。式４と同様に、ＡＶＧ  ＰＲｉｎ（ｋＮ）の測定値は３２サンプルごとにとるべきである。なお、上記のすべてのレベル推定は、パワーではなくマグニチュードを用いて行うことも可能であることにも留意されたい。また、上記の式１および式２は公称レートでデータを処理するが、式３および式４は、連続するサイズＮのウィンドウに対するサブレート計算を実行する（したがって、Ｎサンプルごとに１回計算を実行する）ことにも留意されたい。代替実施形態は、上記の式をいかなる方法で構成してもよく、上記で与えた式には制限されない。
【００５４】
近端信号（Ｓｇｅｎ）、遠端信号（Ｒｉｎ）、および送信パス入力信号（Ｓｉｎ）に対するレベル推定は、近端トーカ信号検出の制御において用いられる。そこで、図１０は、図９のブロック２０６および２０８の一実施形態を示している。ここで、近端信号検出閾値（ＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄ）が求められる。この閾値は、Ｎサンプルごとに１回再評価される。ここで、本実施形態ではＮは３２である。ブロック２５０で、Ｒｉｎの短期パワーＰＲｉｎを求める（例えば上記式３参照）。ここで、カレント時刻ｎは、解析中のカレントサンプルに対応する。ブロック２５２で、サンプルカウンタをインクリメントすることにより、ｎの新しい値を提供する。したがって、サンプルカウンタは、図９のフロー２００を毎回通る間に（したがって、２０６および２０８を毎回通る間に）インクリメントされる。
【００５５】
フローは判断分岐２５４に進み、サンプルカウンタがウィンドウサイズＮに達したかどうかを判定する。達していない場合、フローはブロック２７０に進む（なお、ＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄは更新されないことに留意されたい）。ブロック２７０で、Ｓｉｎのパワー（ＰＳｉｎ）を計算する（例えば上記式１参照）。サンプルカウンタがＮに達している場合、フローはブロック２５６に進み、ブロック２５６〜２６８のパスをＮサンプルごとに１回だけたどるように、カウンタをリセットする（これは、一実施形態では、Ｎ＝３２として、３２サンプルごとに行われる）。サンプルカウンタをリセットした後（一実施形態ではゼロにリセットする）、フローはブロック２５８に進み、Ｒｉｎの平均パワーＡＶＧ  ＰＲｉｎを計算する（例えば上記式４参照）。その後、フローは判断分岐２６０に進み、ＢＡＣＫＵＰ＿ＳＴＡＴＥが０または１であるかどうかを判定する（なお、ＢＡＣＫＵＰ＿ＳＴＡＴＥについては図１３に関してさらに詳細に説明することに留意された
い）。ＢＡＣＫＵＰ＿ＳＴＡＴＥが０または１である場合、フローはブロック２６２に進み、下記の式５に示すように、Ｋ１を用いてＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄを調節する：
【００５６】
【数５】
2005531200.tif 000007
【００５７】
これに対して、ＢＡＣＫＵＰ＿ＳＴＡＴＥが０または１でない場合、フローはブロック２６４に進み、下記の式６に示すように、Ｋ２を用いてＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄを調節する：
【００５８】
【数６】
2005531200.tif 000008
【００５９】
したがって、ＮＥＳＤ＿ＴｈｒｅｓｈｏｌｄはＮサンプルごとに１回再評価され、適応フィルタの状態（すなわちＢＡＣＫＵＰ＿ＳＴＡＴＥ。これは、図１３に関してさらに説明する状態マシンに対応する）に応じて、ＮＥＳＤ＿ＴｈｒｅｓｈｏｌｄはＫ１＊ＡＶＧ
ＰＲｉｎまたはＫ２＊ＡＶＧ  ＰＲｉｎのいずれかとして求めることができる。Ｋ１およびＫ２は、ＮＥＳＤ閾値スケーリングファクタである。適応フィルタ２８の適応プロセスの初期段階の間（すなわち、ＢＡＣＫＵＰ＿ＳＴＡＴＥが０または１である時）、ＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄを比較的大きくし、適応フィルタ２８が適応する機会を増やすことができる。他方、適応フィルタ２８が初期適応段階を過ぎた時（すなわち、ＢＡＣＫＵＰ＿ＳＴＡＴＥが３または４である時）には、ＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄを低減することにより、適応プロセスが発散することを防ぐことができる。一実施形態では、Ｋ１は１〜２の範囲内の値に設定される一方、Ｋ２は０．２５〜１の範囲内の値に設定される。例えば、一実施形態では、ハイブリッドの条件に応じて、Ｋ１は１であり、Ｋ２は０．５である。さらに、Ｋ１およびＫ２のこれらの値は、適応プロセス中に静的または動的のいずれで設定することも可能である。上記の範囲外の代替値を用いてもよく、４状態を有する状態マシン（例えば、ＢＡＣＫＵＰ＿ＳＴＡＴＥが０〜３）の使用以外の他の方法を用いて、適応プロセスがいつまでその初期段階にあるかを判定してもよい。
【００６０】
ブロック２６２または２６４でＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄを調節した後、フローは判断分岐２６６に進み、ＮＥＳＤ＿ＴｈｒｅｓｈｏｌｄがＡよりも小さいかどうかを判定する。ＮＥＳＤ＿ＴｈｒｅｓｈｏｌｄがＡよりも小さくない場合、フローはブロック２７０に進み、ＰＳｉｎを計算する。ＮＥＳＤ＿ＴｈｒｅｓｈｏｌｄがＡよりも小さい場合、ブロック２６８でＮＥＳＤ＿ＴｈｒｅｓｈｏｌｄをＡに設定する。すなわち、ＡＶＧ  ＰＲｉｎが小さすぎる場合に、ＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄは最小レベルがＡに制限される（ここで、一実施形態では、Ａは−４０ｄＢｍ０ないし−４５ｄＢｍ０の範囲内の値に対応してもよい）。そして、フローはブロック２７０に進む。
【００６１】
図１０のフローが完了した後、必要であれば適応フィルタ２８の監視および制御を実行する（図９のブロック２１０参照）。（なお、ブロック２０９、２１０、および２１１については、以下で図２０〜図３４に関してさらに詳細に説明することに留意されたい。）その後、適応フィルタは、ブロック２１２でエコー推定信号４８を生成し、フローは、図１１に関してさらに詳細に説明されるブロック２１４および２１６に進む。すなわち、図
１１のフローは、近端トーカ信号検出（すなわちＳｇｅｎの検出）の制御を詳細に示す図９のブロック２１４および２１６の部分を示している。
【００６２】
ブロック２７６で、誤差信号４６のパワー（Ｐｅｒｒｏｒ）を推定する（上記式２参照）。次に、フローは判断分岐２７８に進み、ＰｅｒｒｏｒとＰＳｉｎのうちの小さいほうがＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄよりも大きいかどうか（すなわち、ＭＩＮ（Ｐｅｒｒｏｒ，ＰＳｉｎ）＞ＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄかどうか）を判定する。大きい場合、フローは判断分岐２８０に進み、ＮＥＳＤ＿Ｈａｎｇｏｖｅｒタイマがゼロまでカウントダウンされたかどうかを判定する。ゼロまでカウントダウンされた場合、近端信号が検出されている。すなわち、ＭＩＮ（Ｐｅｒｒｏｒ，ＰＳｉｎ）＞ＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄであって過去の或る一定の時間ウィンドウ（ＮＥＳＤ＿Ｈａｎｇｏｖｅｒタイマに対応する）の間に近端信号が検出されていない場合に限り、近端信号が検出される。判断分岐２７８で、ＭＩＮ（Ｐｅｒｒｏｒ，ＰＳｉｎ）がＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄよりも大きくない場合、フローはブロック２９０に進み、ＮＥＳＤ＿Ｈａｎｇｏｖｅｒタイマの値をゼロに達するまでデクリメントすることにより、ＮＥＳＤ＿Ｈａｎｇｏｖｅｒ時間で決まるポーズを導入する。判断分岐２８０で、ＮＥＳＤ＿Ｈａｎｇｏｖｅｒタイマがゼロでない場合、ブロック２８６で、ＮＥＳＤ＿Ｈａｎｇｏｖｅｒタイマを所定値に設定する。
【００６３】
近端信号（Ｓｇｅｎ）が検出された場合、フローは判断分岐２８０から判断分岐２８２に進み、フィルタ係数が更新されたかどうかを判定する。更新された場合、係数は、近端信号の存在により破損している可能性が非常に高いとみなされる。すなわち、係数更新のために用いられる信号はもはや純粋な残留エコーではなく、残留エコーとＳｇｅｎの混合であるので、係数はもはや推定エコーを表していない。この場合、フローはブロック２８４に進み、フィルタ係数をリストアする。すなわち、「良好」と証明されているフィルタ係数のセットで置き換える。フィルタ係数をバックアップおよびリストアする方法については、図１２および図１３に関して後述する。次に、フローはブロック２８８に進み、ＢＡＣＫＵＰ＿ＳＴＡＴＥを更新する。判断分岐２８２でフィルタ係数が更新されていない場合、係数は残留エコーとＳｇｅｎの混合を用いた適応をされていないので、係数は破損しているとはみなされない。この場合、フローはブロック２８６に進み、ＮＥＳＤ＿Ｈａｎｇｏｖｅｒタイマを所定値に設定する。
【００６４】
ＮＥＳＤ＿Ｈａｎｇｏｖｅｒタイマに用いられるＮＥＳＤ＿Ｈａｎｇｏｖｅｒ時間の継続時間は、フィルタ係数適応を開始する前にＳｇｅｎがもはや存在しないことを保証するように、しかもフィルタ係数の不要な適応およびリストアを避けるように、選択される。例えば、一実施形態では、ＮＥＳＤ＿Ｈａｎｇｏｖｅｒ時間は１６０サンプル、すなわち２０ミリ秒である。したがって、ＮＥＳＤ＿Ｈａｎｇｏｖｅｒ時間の継続時間は、近端信号検出器２６が過度に敏感になることを防ぎ、近端トーカ信号の検出と近端トーカ信号がないことの検出との間の切替を最小限にする。しかし、ＮＥＳＤ＿Ｈａｎｇｏｖｅｒ時間の設定が長すぎる場合、近端信号検出器２６は、必要な時に近端トーカ信号を正確に検出することができるほど敏感ではなくなる可能性がある。
【００６５】
したがって、ＳｇｅｎおよびＲｉｎの信号レベル（すなわちパワー）のさまざまな組合せの下で、フィルタ係数（例えば、適応フィルタ２８の係数）に関するさまざまなアクションが行われる。例えば、これらのアクションは次の表を用いて要約することができる：
【００６６】
【表１】
2005531200.tif 000009
【００６７】
ＳｉｎはＳｇｅｎとエコーすなわちＲｉｎとの混合であるので、上記の表に記載のいくつかの組合せは、通常の動作モード（すなわち、コネクションが切断されておらず、あるいは、異常な信号が回路に注入されていない）の下では有効な組合せでない。これらの無効な組合せは、項番３（ＳｇｅｎおよびＲｉｎの両方がローである時にＳｉｎはハイとなり得ないため）、項番５および項番６（Ｓｇｅｎがハイである時にＳｉｎはローとなり得ないため）である。残りの５個の組合せに対して３セットのアクションが用いられる。第１に、係数適応プロセスのための条件は、ＲｉｎはハイであるがＳｇｅｎはローである時（Ｓｉｎがハイであるかローであるかにかかわらず遠端シングルトーク期間中、すなわちそれぞれ項番２および項番４）である。これらの条件の下で、誤差（誤差信号４６）は（Ｓｇｅｎがローであるため）主として残留エコーに起因し、適応に対するＳｇｅｎの効果は最小限である。第２に、フィルタ係数適応プロセッサを停止し、前に「良好」と判定されたフィルタ係数をリストアするための条件は、Ｓｇｅｎがハイである時（シングルトークであるかダブルトークであるかにかかわらず近端トーク期間中、すなわちそれぞれ項番７および項番８）である。第３に、近端および遠端の両方のトーカが無音である時には更新が不要である（項番１）。
【００６８】
Ｓｇｅｎの検出のための上記の方法によれば、エコーリターンロスが約６ｄＢ以下である時、エコーをキャンセルすることが可能となる。したがって、（上記の表１の項番４の場合のように）約６ｄＢ以下において、上記の方法は、Ｓｇｅｎ（これは、上記のように、残留誤差が小さいかまたは無視できると仮定すると、誤差信号４６として推定してもよい）とＳｉｎの最小値を用いることにより、これらの条件下での誤検出がなくなる。これ
に対して従来の解決法では、このような低いレベル（約６ｄＢ以下）においてはエコーリターンロスの変動により甚だしく影響を受けることがあるために、Ｓｇｅｎが実際には存在しない時にＳｇｅｎが存在すると誤って検出する傾向がある。また、上記の方法によれば、エコーリターンロスが０ｄＢ（ハイブリッド減衰なし）となるまで適応プロセスを継続することが可能であり、それによりエコーをキャンセルすることができる。これに対して従来の解決法では、例えば６ｄＢのようなレベルで適応プロセスが停止してしまう。
【００６９】
また、図１０および図１１に関して上記で説明した方法によれば、ＳｇｅｎのレベルがＲｉｎに比べて比較的低い時（上記の表１の項番８に対応する）であっても、Ｓｇｅｎの高速な検出が可能である。例えば、従来の解決法では、ダブルトーク検出閾値を、Ｒｉｎエネルギーの１／４以上のＳｉｎエネルギー（すなわち、６ｄＢの損失がハイブリッド回路により導入されることに対応する）として設定している。ハイブリッド減衰が１０ｄＢである場合、検出閾値におけるその４ｄＢの差は、相当量のＳｇｅｎ信号がダブルトークとして検出されずに存在することを許容するほど大きい。したがって、このような従来の解決法は、近端トーク信号を必ずしも常に検出することができるわけではないか、または検出しても遅すぎる。これに対して上記の方法は、近端信号検出のために、Ｒｉｎと比べて、Ｓｇｅｎ（これは、上記のように、残留誤差が小さいかまたは無視できると仮定すると、誤差信号４６として推定してもよい）とＳｉｎの最小値を用いる。検出閾値（ＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄ）設定がエコーリターンロスとは独立となるため、近端信号検出は、従来利用可能な解決法よりも高速で信頼性が高くなる。
【００７０】
さらに、図１０および図１１に関して上記で説明した方法によれば、近端バックグラウンドに或る程度ノイズがある場合に、ダブルトーク（上記の表１の項番８）と遠端シングルトーク（上記の表１の項番４）とを区別することができる。近端バックグラウンドノイズレベルが比較的高い時、従来の解決法は、この状況をダブルトーク状況として検出し、適応プロセスを停止する。バックグラウンドノイズは長期間、さらには電話通話全体の継続時間にわたり持続することがあるため、適応フィルタは収束への変化が全く得られない可能性がある。したがって、本明細書に上記のように近端信号検出のためにＲｉｎに対してＳｇｅｎとＳｉｎの最小値を使用することにより、バックグラウンドノイズレベルが比較的高い時であっても適応プロセスが継続するように検出閾値（ＮＥＳＤ＿Ｔｈｒｅｓｈｏｌｄ）を設定することができる。（なお、唯一の真のダブルトーク条件は、ＲｉｎおよびＳｇｅｎの両方の信号レベルがハイの時であることに留意されたい。しかし、近端シングルトーク期間中であるかダブルトーク期間中であるかにかかわらず、近端トーカ信号が検出される時に、本明細書に記載の適応プロセスは停止され、フィルタ係数がリストアされるべきである。）
図１２は、図９の判断分岐２２４およびブロック２２６の部分を示している。ここで、バックグラウンドプロセスを実行すべきかどうかを判定し、実行すべきである場合、フィルタ係数をバックアップする。図１２のフローは（適応フィルタ２８の）フィルタ係数のバックアップポリシを主に扱う。バックアップポリシの一実施形態は、良好なフィルタ係数が周期的にバックアップされることを保証することにより、バックアップ回数を最小化し、バックアップの頻度を最小化する。図１２はブロック２９１から開始され、バックグラウンド１カウンタをインクリメントする。フローは判断分岐２９３に進み、バックグラウンド１カウンタが所定のカウンタ値Ｊに達したかどうかを判定する。達していない場合、フローはポイントＨ（図９におけるブロック２２８の後）に進む。所定のカウンタ値Ｊに達した場合、フローはブロック２９８に進み、バックグラウンド１カウンタを（ゼロに）リセットした後、判断分岐２９５に進み、適応フィルタ２８のフィルタ係数が更新されたかどうかを判定する。更新されていない場合、フローはポイントＨに進む。更新された場合、フローはブロック２９２に進み、バックグラウンド２カウンタをインクリメントする。
【００７１】
次に、フローは判断分岐２９４に進み、バックグラウンド２カウンタが所定のカウンタ値Ｌに達したかどうかを判定する。達していない場合、フローはポイントＨに進む。所定のカウンタ値Ｌに達した場合、フローはブロック２９６に進み、バックグラウンド処理を実行する。すなわち、本実施形態では、バックグランド処理は、高々Ｊ＊Ｌサンプルごとに実行され、これらの値ＪおよびＬは、バックグラウンド処理の頻度を決定するのに役立つ任意の値に設定することができる。例えば、一実施形態では、Ｊは１６０サンプルであり、Ｌは１０である。この場合、バックグラウンド処理は高々Ｊ＊Ｌすなわち１６００サンプルごとに実行される。すなわち、Ｊサンプルの後に適応フィルタ２８のフィルタ係数が更新されていない場合、フローはポイントＨに進み、バックグラウンド２カウンタはインクリメントされない。したがって、バックグラウンド２カウンタをインクリメントしてＬと比較するのは、Ｊサンプルのカレントウィンドウの間に係数が更新された場合に限る。ブロック２９６で、バックグラウンド２カウンタをリセットする（本実施形態ではゼロにリセットする）。フローはブロック２９６から判断分岐３００に進む。
【００７２】
判断分岐３００で、現在のＢＡＣＫＵＰ＿ＳＴＡＴＥ（これについては図１３に関してさらに詳細に説明する）が０または１であるかどうかを判定する。ＢＡＣＫＵＰ＿ＳＴＡＴＥが０または１である場合、ブロック３０４でＢＡＣＫＵＰ＿ＳＴＡＴＥをインクリメントし、フローはブロック３０８に進む。ＢＡＣＫＵＰ＿ＳＴＡＴＥが０または１でない場合、フローは判断分岐３０２に進み、ＢＡＣＫＵＰ＿ＳＴＡＴＥが２であるかどうかを判定する。ＢＡＣＫＵＰ＿ＳＴＡＴＥが２でない場合、フローはブロック３０６に進み（ＢＡＣＫＵＰ＿ＳＴＡＴＥが３であったことを示す）、ＢＡＣＫＵＰ＿ＳＴＡＴＥを２に設定し、フローはブロック３１０に進む。判断分岐３０２でＢＡＣＫＵＰ＿ＳＴＡＴＥが２である場合、フローはブロック３０８に進み、候補バックアップ係数を良好バックアップ係数にコピーする。（なお、候補バックアップ係数および良好バックアップ係数については図１３に関して後述することに留意されたい。）次に、フローはブロック３１０に進み、現在のフィルタ係数を候補バックアップ係数にコピーする。すなわち、ブロック３０８で、候補バックアップ係数が良好バックアップ係数となり、現在のフィルタ係数が候補バックアップ係数となる。ここで、現在のバックアップ係数、候補バックアップ係数、および良好バックアップ係数はすべて、エコーキャンセラ２０内、またはエコーキャンセラ２０の外部の記憶位置のいずれかにある１つのストレージユニットまたは別々のストレージユニットに記憶することができる。その後、フローは図９のブロック２２８に進む。
【００７３】
本発明の一実施形態では、候補バックアップ係数および良好バックアップ係数という２つの係数バックアップを用い、４つの異なるＢＡＣＫＵＰ＿ＳＴＡＴＥ（０〜３）の組合せを有する。そこで、図１３は、適応フィルタ２８のフィルタ係数のバックアップおよびリストアのプロセスを制御する状態マシンを示している。
【００７４】
図１３の状態マシンは４個のＢＡＣＫＵＰ＿ＳＴＡＴＥ０〜３を含む。ＳＴＡＴＥ０は、候補バックアップ係数が利用可能でなく、良好バックアップ係数も利用可能でないことを示す。ＳＴＡＴＥ１は、候補バックアップ係数は利用可能であるが、良好バックアップ係数は利用可能でないことを示す。ＳＴＡＴＥ２は、候補バックアップ係数および良好バックアップ係数が両方とも利用可能であることを示す。ＳＴＡＴＥ３は、候補バックアップ係数は利用可能でないが、良好バックアップ係数は利用可能であることを示す。なお、図１３の状態マシンは、図９のブロック２１６および２２６の部分を実施していることに留意されたい。
【００７５】
一実施形態では、状態マシンは、リセットまたは初期化時に、ＳＴＡＴＥ０から出発する。バックグラウンド処理への最近のＬ回のエントリにおいて近端信号（Ｓｇｅｎ）が検出されない場合、状態マシンはＳＴＡＴＥ１に遷移する。したがって、フィルタ係数の第１のバックアップに対する最小時間ウィンドウはＪ＊Ｌサンプルである（本実施形態では
、Ｌは１０であり、したがってＪ＊Ｋは１６００サンプル、あるいは、８ｋＨｚのサンプリングレートを仮定すると、２００ｍｓである）。この状態遷移の場合、近端信号は検出されておらず、第１のバックアップが、現在のフィルタ係数を候補バックアップ係数にコピーすることによって実行される。近端信号（Ｓｇｅｎ）を検出すると、状態マシンは元のＳＴＡＴＥ０に遷移する。というのは、記憶されている候補バックアップ係数が、近端信号Ｓｇｅｎの検出における遅延により破損しているかもしれないからである。状態マシンは、バックグラウンド処理への最近のＬ回のエントリにおいて近端信号が検出されなくなるまでＳＴＡＴＥ０にとどまり、バックグラウンド処理への最近のＬ回のエントリにおいて近端信号が検出されなくなると、状態マシンは再び上記のようにＳＴＡＴＥ１に遷移する。
【００７６】
ＳＴＡＴＥ１において、バックグラウンド処理への次のＬ回のエントリにおいて近端信号が検出されない場合、状態マシンはＳＴＡＴＥ２に遷移し、第２のバックアップが、候補バックアップ係数を良好バックアップ係数にコピーし、現在のフィルタ係数を候補バックアップ係数にコピーすることによって実行される。この状態では、候補バックアップ係数および良好バックアップ係数の両方が利用可能であり、近端信号が検出されない場合には状態マシンはこの状態にとどまる。なお、一実施形態では、第２のバックアップ中に、状態が変化しなくても、連続するバックアップにおいて候補バックアップ係数および良好バックアップ係数の両方が更新されることに留意されたい。また、一実施形態では、ＳＴＡＴＥ１からＳＴＡＴＥ２に遷移した時に実行される２回のコピーは、まず候補バックアップ係数を良好バックアップ係数として（例えばポインタを用いて）マークしてから、現在のフィルタ係数を（良好バックアップ係数としてマークされていた）候補バックアップ係数にコピーすることによって、１回のコピーで実行される。
【００７７】
ＳＴＡＴＥ２において、近端信号が検出されると、状態マシンはＳＴＡＴＥ３に遷移する。ここでは、候補バックアップ係数は再び破損しているとみなされるが、良好バックアップ係数は依然として良好であるとみなされる。というのは、これらの良好バックアップ係数は、少なくともＪ＊Ｌの時間ウィンドウの後では良好であることが分かっているからである。状態マシンは、近端信号が持続する限りＳＴＡＴＥ３にとどまり、近端信号がもはや存在しなくなればＳＴＡＴＥ２に戻る。
【００７８】
なお、代替実施形態では、バックグラウンド処理への各エントリ（Ｌ回）は、Ｊサンプルごとではなく１サンプルごとに行うことも可能であることに留意されたい。また、図１３の状態マシンは、多様な異なる方法で実施可能であり、図示したものより多数の状態、より少数の状態、または異なる状態を含んでもよい。
【００７９】
図６は、図２の監視制御ユニット３０の一部の一実施形態を示している。この部分は、図２の利得制御部３３とともに、システム１０および適応フィルタ２８の安定性を制御する。例えば、システム１０は、ハイブリッド１６のインパルス応答とは非常に異なる（適応フィルタ２８の）フィルタ係数のセットに起因する持続的なアーティファクトを生成する場合に、不安定とみなされる。図３７に関して上記で言及したように、適応フィルタ２８の係数は、ハイブリッド１６のインパルス応答を「模倣」しようとし、それを送出信号から差し引くことにより、反射エコーをキャンセルしようとする。しかし、適応フィルタ２８の係数がインパルス応答からあまりに激しく変動する場合、音声やデータ信号の歪み、さらにはシステムハウリングのようなアーティファクトが発生することがある。システム１０の不安定性は、次の２つの条件下で起こり得る。すなわち、（１）エコーキャンセラ２０および２２が閉ループシステムをなし、或る特定のタイプの信号により刺激される結果、システム１０の利得が１よりも大きくなる場合、および（２）エコーキャンセラ２０が開ループシステムをなしている場合である。
【００８０】
図１４は、エコーキャンセラ２０の利得を監視するための動的利得制御方法の一実施形態を示している。この方法は、適応フィルタ２８および利得制御部３３に結合された利得モニタ１００で実行することができる。図１４の動的利得制御方法は、閉ループシステムにおけるエコーキャンセラ２０および２２の安定性を保証する。例えば、誤差信号４６がＳｉｎ３８よりも大きい場合（これは理論的には起こるはずがないが、実際には起こり得る）、エコーキャンセラ２０の利得は１以上となる。同じことがエコーキャンセラ２２で起これば（その結果、エコーキャンセラ２２の利得も１以上になる）、エコーキャンセラ２０および２２を有する閉ループシステムの全ループ利得が１よりも大きくなる可能性があり、ハウリングとして知られるアーティファクトを生じ得る。したがって、図１４の方法は、或る一定の時間ウィンドウ内のＳｉｎ３８のパワー（ＰＳｉｎ）に対する誤差信号４６のパワー（Ｐｅｒｒｏｒ）の比（上記式１および式２参照）がある適応閾値よりも大きい時に誤差信号４６を減衰させる。さらに、図１４の方法は、ＰｅｒｒｏｒがＰＳｉｎの何倍も大きい時に適応フィルタ２８をリセットする。したがって、図１４の方法は、閉ループシステムの全ループ利得が長時間にわたって１よりも大きくなることを防ぎ、それによりシステム１０の安定性を保証する。また、図１４の方法は、ハイブリッド特性が急激に変化した時に適応フィルタ２８の再収束を加速する。
【００８１】
そこで、図１４は、図９のブロック２１８の部分を示している。すなわち、図９のブロック２１６で近端トーカ信号が存在するかどうかを検出した後、フローはブロック２１８に進み、エコーキャンセラ２０の利得を監視して選択的に調節する。そこで、フローは判断分岐３２２から開始され、ＰＳｉｎに対するＰｅｒｒｏｒの比（Ｐｅｒｒｏｒ／ＰＳｉｎ）がリセット閾値よりも大きいかどうかを判定する。大きい場合、フローはブロック３３０に進み、適応フィルタ２８のフィルタ係数をリセットする（すなわち、一実施形態では、ゼロに設定する）。別法として、係数をいかなる値にリセットすることも可能である。したがって、リセット閾値を用いてＰｅｒｒｏｒがＰＳｉｎよりも大きすぎるかどうかを判定することにより、適応フィルタ２８のリセットが不安定性を生じないようにすることができる。したがって、リセット閾値はいかなる値であってもよく、一実施形態では８に設定される。
【００８２】
Ｐｅｒｒｏｒ／ＰＳｉｎがリセット閾値よりも大きくない場合、フローは判断分岐３２４に進み、Ｐｅｒｒｏｒ／ＰＳｉｎが利得閾値よりも大きいかどうかを判定する。利得閾値は一般にリセット閾値よりも小さく、一実施形態では１に設定される。この利得閾値は、利得減衰の活性化を開始するための閾値である。Ｐｅｒｒｏｒ／ＰＳｉｎが利得閾値よりも大きい場合、フローはブロック３２８に進み、次の式７に示すようにａｌｐｈａを用いて利得（gain）を調節する：
【００８３】
【数７】
2005531200.tif 000010
【００８４】
誤差信号４６を減衰させるように、ａｌｐｈａは一般に１よりも小さい。したがって、一実施形態では、ａｌｐｈａは０．９９９６である。フローは判断分岐３２８に進み、利得が利得限界よりも小さいかどうかを判定する。利得が利得限界よりも小さい場合、フローはブロック３３４に進み、利得を利得限界に設定する。これは、利得が決して所定レベルを下回らないことを保証する。所定レベルは、一実施形態では、０．５である。例えば、ハイブリッドが開ループ回路内にある場合のように異常な状況下であっても、送信パス、伝送パスを完全に切断すること（すなわち、利得＝０）は一般に望ましくない。そして、フローはブロック３２６に進む。判断分岐３３２で、利得が利得限界よりも小さくない
と判定された場合、フローはブロック３２６に進み、次の式８に示すように誤差信号（error signal）４７を計算する：
【００８５】
【数８】
2005531200.tif 000011
【００８６】
判断分岐３２４で、Ｐｅｒｒｏｒ／ＰＳｉｎが利得閾値よりも大きくないと判定された場合、フローは判断分岐３３６に進み、利得が１よりも小さいかどうかを判定する。利得が１よりも小さくない場合、フローはブロック３２６に進み、誤差信号４６を減衰させる。これに対して、利得が１よりも小さい場合、フローはブロック３３８に進み、次の式９に示すように利得を調節する：
【００８７】
【数９】
2005531200.tif 000012
【００８８】
ｂｅｔａは一般に１よりも大きい。というのは、利得は既に減衰しているので、回復させる必要があるからである。したがって、一実施形態では、ｂｅｔａは１．０００４である。次に、フローは判断分岐３４０に進み、利得が１よりも大きいかどうかを判定する。利得が１よりも大きい場合、フローはブロック３２６に進み、誤差信号４６を減衰させる。利得が１よりも大きくない場合、フローはブロック３４２に進み、利得を１に設定する。ブロック３４２の後、フローはブロック３２６に進むが、誤差信号４６は減衰しない。というのは、（ブロック３４２で利得が１に設定されたので）誤差信号４７は単に誤差信号４６＊１に等しいからである。したがって、要約すると、Ｐｅｒｒｏｒ／ＰＳｉｎがリセット閾値以上である場合、適応フィルタ２８のフィルタ係数をリセットする。Ｐｅｒｒｏｒ／ＰＳｉｎがリセット閾値よりも小さいが利得閾値以上である場合、（例えばブロック３２６で）誤差を利得値だけ減衰させる。これに対して、Ｐｅｒｒｏｒ／ＰＳｉｎが利得閾値よりも小さい場合、誤差を減衰させないままとする（すなわち誤差信号４７＝誤差信号４６）。したがって、図１４のフローがシステム１０の安定性の維持にどのように役立つかを認識することができる。
【００８９】
図１５は、適応フィルタ２８のフィルタ係数の分布を監視するためのフィルタ係数監視方法の一実施形態を示している。この方法は、監視制御ユニット３０内にあって適応フィルタ２８に結合されるフィルタ係数モニタ１０２で実行することができる。図１５の方法は、開ループシステムにおけるエコーキャンセラ２０の安定性を保証する。この監視方法は、比較的一様な分布を有する適応フィルタ２８のフィルタ係数のセットの形成を検出する。ハイブリッド１６によるインパルス応答が期待されるので、適応フィルタ２８の係数の一様な分布は、ハイブリッドが存在しないことを示しており、したがって開ループ条件の可能性を示している。そこで、適応フィルタ２８の係数の一様な分布を検出すると、フィルタ係数がリセットされ、エコーキャンセラ２０はさらなる監視のためにアラート状態に置かれる。或る特定の時間ウィンドウの間にフィルタ係数が繰り返しリセットされる場合、エコーキャンセラ２０は開ループ条件にあると仮定され、エコーキャンセラ２０は迂回される。すなわち、適応フィルタ２８は、真のハイブリッドが存在する場合にのみ適応を行うべきである。さらに、Ｒｉｎによる連続正弦波入力およびＳｉｎのような非ゼロ信号（例えば正弦波トーン）を伴う開ループシステムにおける適応フィルタ２８は、特に高
速に発散することがあるため、開ループシステムの検出の必要性が増す。
【００９０】
そこで、図１５は、図９のブロック２２８の部分を示している。すなわち、（上記のように）図９のブロック２２６でフィルタ係数をバックアップした後、フローはブロック２２８に進み、適応フィルタ２８の係数を監視する。そこで、フローはブロック３４４から開始され、適応フィルタ２８のフィルタ係数をＢ個のビンに分割する。（Ｂは、フィルタ係数の個数／１６となるように選択する。）フローはブロック３４６に進み、Ｂ個のビンのうちの最大および最小の係数パワーを求める。すなわち、フィルタ係数をＢ個のビンに分割した場合、各ビンはそのビン内の係数のパワー値（例えば、そのビン内の係数の平均パワー）に関連づけられ、ブロック３４６で、Ｂ個のビンのうちの最大パワー値およびＢ個のビンのうちの最小パワー値を選択する。フローは判断分岐３２８に進み、最大パワー値と最小パワー値の比（すなわち、最大パワー／最小パワー）がアラート閾値よりも小さいかどうかを判定する。フィルタが真のハイブリッドに向かって適応する場合、最小パワーに対する最大パワーの比は１よりもはるかに大きいはずである。他方、最小パワーに対する最大パワーの比が１に近い場合、フィルタが真のハイブリッドへ適応していないことを明瞭に示している。ハイブリッドが存在しない可能性を知らせるためのアラート閾値として、或る比が選択される。アラート閾値は、種々のハイブリッドの下での適応フィルタ挙動の統計的解析に基づいて選択される。一実施形態では、アラート閾値は８であるように選択される。
【００９１】
この比較の後、フローはブロック３５０に進み、適応フィルタ２８のフィルタ係数をゼロにリセットする（または他の所定のリセット値（複数可）に設定する）。フローはブロック３５２に進み、アラート状態をインクリメントする。（アラート状態は、最小パワーに対する最大パワーの比がアラート閾値よりも小さいカレント期間中にフィルタ係数が何回リセットされたかを示す。なお、カレント期間は図１２に関して上記で説明したＪ＊Ｌと同一である。というのは、図１２のブロック３１０を出た後、フローは、図１５に記載されている図９のブロック２２８に進み、図１５のブロック３４４から開始されるからである。すなわち、図１５は、図９および図１２に示されているように、高々Ｊ＊Ｌサンプルごとに実行されるバックグラウンド処理の部分とみなされる。）ブロック３５２の後、フローは判断分岐３５４に進み、アラート状態が迂回閾値に等しいかどうかを判定する。等しくない場合、エコーキャンセラ２０は迂回モードには置かれないため、適応フィルタ２８は適応を継続する。これに対して、判断分岐３５４で、アラート状態が迂回閾値に達している場合、フローはブロック３５６に進み、迂回モードを１に設定する。これは、開ループ条件が検出された（すなわち、ハイブリッドが存在しない）ことを示す。したがって、エコーキャンセラ２０は、存在しないハイブリッドに適応しないように、迂回されることになる。
【００９２】
判断分岐３４８で、最小パワーに対する最大パワーの比がアラート閾値よりも小さくないと判定された場合、フローはブロック３５８に進み、アラート状態を０にリセットする。フローは判断分岐３６０に進み、迂回モードが１であるかどうかを判定する。迂回モードが１である場合、ブロック３６２でそれを０にリセットする。したがって、３５８への分岐により、ハイブリッド１６を再接続して適応フィルタ２８の適応を再開することが可能となる。
【００９３】
図５は、図２の非線形プロセッサ３２の部分を示している。上記で説明したように、残留エコーを低減または除去することに加えて、非線形プロセッサ３２は、近端トーカ信号のバックグラウンドノイズの保持または整合も行うことにより通信品質の改善を可能にしようとする。一般に、非線形プロセッサ３２は、残留エコーが或る一定の閾値を下回るかどうかを検出し、電話回線バックグラウンドノイズの突然の消失を避けるために、無音ではなく快適ノイズで残留エコーを置き換える。バックグラウンドノイズのそのような突然
の消失は、電話コネクションが切断されたという印象につながりかねない。
【００９４】
現在用いられている従来技術の一方法では、合成バックグラウンドノイズを使用する。しかし、これは、真のバックグラウンドノイズと合成バックグラウンドノイズとの間で妨害的な切替となることがある。例えば、現在用いられている従来技術の一方法では、快適ノイズとしてホワイトノイズを使用する。しかし、ホワイトノイズは自然なバックグラウンドノイズとは全く異なるため、妨害的に聞こえる。現在利用可能な代替解決法として、あらかじめ記憶しておいたバックグラウンドノイズ信号を、バックグラウンドノイズに整合するように、繰り返し出力するものがある。しかし、この方法は、追加記憶スペースを必要とするし、バックグラウンドノイズの繰り返しが顕著になると、やはり通信にとって妨害的となることがある。
【００９５】
そこで、図５および図１６〜図１９は、前段落で説明した妨害的アーティファクトのようなエコーキャンセレーションの非線形処理により生じるアーティファクトを低減するために、エコーキャンセラ２０における自然バックグラウンドノイズの保持または整合を行う非線形プロセッサ３２の一実施形態を提供している。非線形プロセッサ３２は、短期レベル推定器８８および長期信号レベル推定器９２を利用して、真のバックグラウンドノイズ信号のレベルの推定値を高い信頼性で求め、その閾値（ＮＬＰ＿ＯＮ閾値およびＮＬＰ＿ＯＦＦ閾値、後述）を調節する。短期推定器は、通話の最初にバックグラウンドノイズ信号の短時間のレベル推定値を生成する。他方、長期推定器は、本来適応的であり、長時間にわたりバックグラウンドノイズ信号レベルを高い信頼性で追跡することを目的とする。非線形プロセッサ３２を起動するという判断は、遠端信号、近端信号、およびバックグラウンドノイズ信号の相対レベルに基づいて行われる。バックグラウンドノイズ信号が顕著になると、非線形プロセッサ３２は、元のバックグラウンドノイズ信号をエコーキャンセラ２０に通すことによって、元のバックグラウンドノイズ信号を保持する。バックグラウンドノイズ信号が低く、残留エコーが可聴になると、非線形プロセッサ３２は、推定バックグラウンドノイズ信号レベルよりも数ｄＢ低いレベルの快適ノイズ信号で残留エコーを置き換える。生成される快適ノイズ信号は、遷移の可聴性を最小限にするために、元のバックグラウンドノイズ信号にも徐々にブレンドされる。したがって、非線形プロセッサ３２は、可聴効果を最小限にしながら、可能な時には自然バックグラウンドノイズを保持し、またはバックグラウンドノイズの整合を行う。
【００９６】
エコーキャンセラ２０における自然バックグラウンドノイズの保持または整合は、次の４段階の基本的なステップで実行される：（１）バックグラウンドノイズ信号、遠端トーカ信号、および近端トーカ信号のレベルを推定する；（２）非線形プロセッサ３２の閾値を決定する；（３）非線形プロセッサ３２が必要とされる場合に快適ノイズを生成する；そして（４）非線形プロセッサ３２が必要とされる場合に快適ノイズをバックグラウンドノイズにミキシングする。
【００９７】
図５の非線形プロセッサ３２は適応バックグラウンドレベル推定器９６を含む。適応バックグラウンドレベル推定器９６は、短期バックグラウンドレベル推定器８８、バックグラウンドレベル推定器コントローラ９０、長期バックグラウンドレベル推定器９２、およびバックグラウンドレベルアダプタ９４を含む。バックグラウンドノイズレベルの推定は、短期バックグラウンドレベル推定器８８および長期バックグラウンドレベル推定器９２で行われる。短期バックグラウンドレベル推定器８８は、通話の開始時に初期の短時間の推定を提供し、長期バックグラウンドレベル推定器９２は、長時間にわたりバックグラウンドノイズ信号のレベルに徐々に適応する。なお、バックグラウンドノイズレベルが変化する時、長期バックグラウンドレベル推定器９２の高いノイズレベルへの適応レートは、低いノイズレベルへの適応レートよりも遅いことに留意されたい。したがって、推定器８８および９２は、近端トーカ信号および遠端トーカ信号の両方のレベルが所定閾値を下回
る時にアクティブとなる。すなわち、値が長期バックグラウンドレベル推定に利用可能である場合、推定器９２のみが用いられる。したがって、短期バックグラウンドレベル推定器８８は一般に、長期バックグラウンドレベル推定器９２がまだ利用可能でない開始時（すなわち、通話の開始時）にのみ用いられる。（近端トーカ信号および遠端トーカ信号のレベルは、それぞれ近端信号レベル推定器７０および遠端信号レベル推定器７２で求められる。）
非線形プロセッサ３２をオンにする（これは非線形プロセッサＯＮコントローラ７６によって実行される）ための閾値は、それをオフにする（これは非線形プロセッサＯＦＦコントローラ７８によって実行される）ための閾値とは異なる。非線形プロセッサＯＮコントローラ７６は、近端トーカ信号が小さく、遠端トーカ信号がアクティブである時に、非線形プロセッサ３２をイネーブルする（すなわちオンにする）。非線形プロセッサＯＦＦコントローラ７８は、近端トーカ信号が比較的高いか、またはバックグラウンドノイズ信号が非常に顕著である時に、非線形プロセッサ３２をディセーブルする（すなわちオフにする）。残留エコーを消去することと実際のバックグラウンドノイズを保持することの間のトレードオフは次のように行われる。バックグラウンドノイズ信号が比較的高い時、非線形プロセッサ３２をディセーブルすることにより、バックグラウンドノイズがエコーキャンセラ２０を通過することを可能にする。この場合、無視できる残留エコーが、マスキング効果により、はるかに顕著なバックグラウンドノイズ信号に埋没する。バックグラウンドノイズ信号が比較的低い時には、非線形プロセッサ３２をイネーブルする。というのは、残留エコーは、かなり静かなバックグラウンドノイズ信号とともに存在する時には、より大きく聞こえるからである。いずれの場合でも、適応フィルタ２８によって達成される良好な収束深さのために、残留エコーは小さい。
【００９８】
非線形プロセッサ３２がイネーブルされると、快適ノイズが（快適ノイズ発生器８６によって）生成され、知覚される音声に対する可聴「ノイズゲーティング」（すなわち、或るバックグラウンドから別のバックグラウンドへの、または或るバックグラウンドから無音へのノイズ切替）を最小化するために、ノイズレベルの整合が（ノイズレベル整合器８２によって）行われる。自然バックグラウンドノイズ信号に近くなるように、いくつかのタイプの快適ノイズ信号を選択することができる。さらに、遷移を滑らかにするために、快適ノイズが実際のバックグラウンドノイズに徐々に取って代わり（これは出力信号ミキサ８４によって実行される）、快適ノイズのレベルは推定バックグラウンドノイズレベルよりも数ｄＢ低く設定される。
【００９９】
図１６は、本発明の一実施形態による適応バックグラウンドレベル推定を実行する方法を示している。一般に、バックグラウンドノイズ信号のレベルは、次の３つの条件が満たされる時（図１６の判断分岐４００、４０２、および４０４に対応する）にのみ推定することができる：（１）近端トーカ信号がない、（２）遠端トーカ信号がない（すなわち残留エコーがない）、および（３）上記の２つの条件が或る一定の期間満たされている。まず、判断分岐４００で、近端トーカ信号のレベル（Ｐｅｒｒｏｒ）が誤差パワー閾値を下回るかどうかを判定する。誤差パワー閾値は、誤差信号がバックグラウンドノイズ信号、または近端トーカ信号とみなされるかどうかを判定するための閾値として定義される。一実施形態では、誤差閾値は−３９ｄＢｍ０である。このチェックは、近端トーカ信号をバックグラウンドノイズ信号とミキシングする可能性を低減する。というのは、以下で説明するバックグラウンドエネルギー推定は近端トーカ信号を含み得ないからである。Ｐｅｒｒｏｒが誤差閾値よりも小さい場合、フローは判断分岐４０２に進み、第２の条件をチェックする。判断分岐４０２で、バックグラウンドレベル推定において残留エコーを排除するために、遠端トーカ信号のレベル（ＰＲｉｎ）がＲｉｎ閾値よりも小さいかどうかを判定する。Ｒｉｎ閾値は、非線形プロセッサの前で顕著な残留エコーを生成するほど大きいＲｉｎ信号レベルとして定義される。一実施形態では、Ｒｉｎ閾値は−２７ｄＢｍ０である。ＰＲｉｎがＲｉｎ閾値よりも小さい場合、フローは判断分岐４０４に進み、最初の２
つの条件が或る一定の時間ウィンドウ（すなわちバックグラウンドハングオーバ時間）の間満たされていたかどうかを判定する。すなわち、バックグラウンドハングオーバタイマ＝０である場合には、バックグラウンドハングオーバ時間で定められる時間ウィンドウの間、最初の２つの条件が満たされており、フローはブロック４０８に進む。バックグラウンドハングオーバ時間は、遠端トーカ信号および近端トーカ信号が、或る一定の時間ウィンドウの間、存在していないことを保証するために用いられる。一実施形態では、バックグラウンドハングオーバ時間は１６０サンプル、あるいは、８ｋＨｚのサンプリングレートを仮定すると、２０ｍｓである。
【０１００】
判断分岐４００でＰｅｒｒｏｒが誤差閾値よりも小さくない場合、または判断分岐４０２でＰＲｉｎがＲｉｎ閾値よりも小さくない場合、フローはブロック４０６に進み、バックグラウンドハングオーバタイマを所定値、例えば前段落で説明したバックグラウンドハングオーバ時間に設定する。そして、フローはポイントＣに進む。（なお、ポイントＣで、フローは図１８に続いていることに留意されたい。図１８については以下でさらに説明する。）判断分岐４０４で、バックグラウンドハングオーバタイマが０でない場合、ブロック４１０でバックグラウンドハングオーバタイマをデクリメントし、フローはポイントＣに進む。
【０１０１】
これに対して、判断分岐４００、４０２、および４０４の３つの条件が満たされる場合、フローはブロック４０８に進み、バックグラウンドレベル（Ｐｂａｃｋｇｒｏｕｎｄ）を、後のステップで決定される所望のレベル（Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄ）に適応させる。（なお、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄは、図１７のブロック４２６に関して計算され説明されることに留意されたい。したがって、ブロック４０８を最初に通る際には、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄは任意の適当な初期値を有してよく、例えば快適ノイズレベルを表す初期値としてよい。）快適ノイズレベル整合における或る信号レベルから別の信号レベルへの遷移を滑らかにするために、適応はサンプルごとに行われる。したがって、適応は次の式１０に示すように実行される。
【０１０２】
【数１０】
2005531200.tif 000013
【０１０３】
式１０において、Ｐｂａｃｋｇｒｏｕｎｄ（ｎ）は、時刻ｎにおける推定バックグラウンドパワーレベルである。Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄは、適応すべき新しいバックグラウンドパワーレベルである（そしてこれは第４のステップで求められる）。Ｒは適応レートを制御するファクタであり、ＦＡＳＴ＿ＲＡＴＥ（高速レート）またはＳＬＯＷ＿ＲＡＴＥ（低速レート）のいずれかに設定される。（なお、以下でさらに詳細に説明するように、Ｒは、図１７のブロック４２８で設定されても、図１９のブロック４８０、４７２、または４７６で設定されてもよいことに留意されたい。また、一実施形態では、適応レートについて、ＦＡＳＴ＿ＲＡＴＥは２９に設定され、ＳＬＯＷ＿ＲＡＴＥは２１１に設定されることに留意されたい。）
ブロック４０８の後、バックグラウンドノイズ信号のパワーレベルの推定が開始される。これは３つの主要なステップを含む。バックグラウンドノイズ信号のパワーレベルを推定する際の第１のステップは、或るウィンドウ内のバックグラウンドパワーレベルを計算することである。そこで、フローはブロック４１２に進み、次の式１１に示すように、ウィンドウ内バックグラウンドのパワー（Ｐｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄ）を計算する。
【０１０４】
【数１１】
2005531200.tif 000014
【０１０５】
式１１において、Ｐｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄは、ウィンドウ内バックグラウンドパワーレベル推定値であり、誤差信号４６は、図２の加算器３４の出力におけるＳｉｎ３９とエコー推定信号４８との差であり、ｗ＿ｓｉｚｅは平均のためのウィンドウサイズである。一実施形態では、ｗ＿ｓｉｚｅは６４サンプルである。次に、フローはブロック４１４に進み、バックグラウンドサンプルカウンタをインクリメントする。
【０１０６】
第２のステップは、或る一定の数の時間ウィンドウｗ＿ｃｏｕｎｔにわたる最小のＰｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄを求めることを含む。（一実施形態では、ｗ＿ｃｏｕｎｔは１２８サンプルである。しかし、代替実施形態では、ｗ＿ｃｏｕｎｔは、最小のＰｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄを計算するために所望される時間ウィンドウの数に応じて任意の値をとり得る。）そこで、ブロック４１８の計算（次の式１２に示す）は、ｗ＿ｓｉｚｅ個のサンプルごとに１回実行される。第２のステップを実行するため、フローは判断分岐４１６に進み、バックグラウンドサンプルカウンタがｗ＿ｓｉｚｅであるかどうかを判定する。バックグラウンドサンプルカウンタがｗ＿ｓｉｚｅでない場合、フローは（図１８の）ポイントＣに進む。バックグラウンドサンプルカウンタがｗ＿ｓｉｚｅである場合、フローはブロック４１８に進み、次の式１２に示すように、ウィンドウ内バックグラウンドの最小パワーを求める。
【０１０７】
【数１２】
2005531200.tif 000015
【０１０８】
したがって、Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄは、前の最小パワー（前にブロック４１８を通った時に求められた最小パワー）とブロック４１２で求められたＰｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄとの最小値を選択することによって求められる。次に、フローはブロック４２０に進み、Ｐｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄをゼロにリセットする。フローはブロック４２２に進み、バックグラウンドサンプルカウンタを０にリセットし、ウィンドウカウンタをインクリメントする。そして、フローはポイントＡに進み、図１７に続く（判断分岐４２４から開始される）。
【０１０９】
適応バックグラウンドレベル推定における第３のステップは、ブロック４０８に関して説明したバックグラウンドレベル適応のためのＰｎｅｗ＿ｂａｃｋｇｒｏｕｎｄを決定すること、およびブロック４０８で用いられる適応レートを決定することである。Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄを決定するのが初めてであるかどうかに応じて２つの異なる手法がある。したがって、判断分岐４２４で、今回が初期推定である（通話の開始時のように、利用可能な長期データがないことを示す）かどうかを判定する。初期推定である場合、フローはブロック４２６に進み、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄを、第１のステップで計算したＰｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄに設定する。次にフローはブロック４２８に進み、適応レートＲをＦＡＳＴ＿ＲＡＴＥに設定する。これに対して、判断分岐４２４で、今回が初期推定でないと判定された場合（長期データ、例えば過去のＮ個のサンプルが利用可能であるため、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄが既に利用可能であることを
示す）、フローは判断分岐４３０に進む。なお、初期推定でない場合、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄを決定するプロセスは、ｗ＿ｃｏｕｎｔ個のウィンドウごとに１回行われることに留意されたい。したがって、判断分岐４３０で、ウィンドウカウンタがｗ＿ｃｏｕｎｔに達したかどうかを判定する。達していない場合、フローは（図１８の）ポイントＣに進む。これに対して、ウィンドウカウンタがｗ＿ｃｏｕｎｔに達した場合、フローはブロック４３２に進み、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄを計算する。次に、フローはブロック４３４に進み、適応レートＲを決定する。（Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄおよびＲの決定の詳細については図１９に関してさらに説明する。）フローはブロック４３６に進み、ウィンドウカウンタを０にリセットした後、ブロック４３８に進み、Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄを０にリセットする。そして、フローはポイントＣに進む。
【０１１０】
図１９は、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄが利用可能である時にＰｎｅｗ＿ｂａｃｋｇｒｏｕｎｄおよびＲを決定する方法を示している。図１９の方法は、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄが低レベルから高レベルに大きくジャンプしないようにしているが、高レベルから低レベルへの変化の時には、この変化はより高速であるため、そのような制約を課さない。したがって、一実施形態では、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄは、Ｐｂａｃｋｇｒｏｕｎｄの２倍以下であるように上限が課される。また、図１９の方法は、適応が高レベルから低レベルへのものである場合に、より高速の適応レート（ＦＡＳＴ＿ＲＡＴＥ）を設定し、適応が低レベルから高レベルへのものである場合に、より低速のレート（ＳＬＯＷ＿ＲＡＴＥ）を設定する。異なるレートを用いるのは、バックグラウンドノイズレベルに関して、低から高へはゆっくりと変化させる一方、高から低へはかなり速く変化させるほうが、一般に良好に聞こえるからである。
【０１１１】
図１９は、図１７のブロック４３２および４３４の部分を示している。図１９において、フローは判断分岐４６６から開始され、Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄがＰｂａｃｋｇｒｏｕｎｄの定数倍よりも大きいかどうか、すなわち「Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄ＞定数＊Ｐｂａｃｋｇｒｏｕｎｄ」であるかどうかを判定する。ここで、一実施形態では、この定数は０．５である。Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄがＰｂａｃｋｇｒｏｕｎｄの定数倍よりも大きい場合、フローはブロック４７８に進み、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄを「（定数＊Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄ）＋快適ノイズレベル」に設定する。一実施形態では、ブロック４７８における定数は２である（ここで、この２は、前の文の０．５に対応する）。フローはブロック４８０に進み、適応レートをＳＬＯＷ＿ＲＡＴＥに設定する。そして、フローは図１７のブロック４３６に進む。
【０１１２】
判断分岐４６６で、Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄが「定数＊Ｐｂａｃｋｇｒｏｕｎｄ」よりも大きくない場合、フローは判断分岐４６８に進み、Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄがＰｂａｃｋｇｒｏｕｎｄよりも大きいかどうかを判定する。大きい場合、フローはブロック４７４に進み、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄをＰｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄに設定する。次に、フローはブロック４７６に進み、適応レートＲをＳＬＯＷ＿ＲＡＴＥに設定する。そして、フローは図１７のブロック４３６に進む。これに対して、判断分岐４６８で、Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄがＰｂａｃｋｇｒｏｕｎｄよりも大きくないと判定された場合、フローはブロック４７０に進み、Ｐｎｅｗ＿ｂａｃｋｇｒｏｕｎｄを「Ｐｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏｕｎｄ＋快適ノイズレベル」に設定する。次に、フローはブロック４７２に進み、適応レートＲをＦＡＳＴ＿ＲＡＴＥに設定した後、図１７のブロック４３６に進む。
【０１１３】
したがって、ＰｂａｃｋｇｒｏｕｎｄまたはＰｍｉｎ＿ｗｉｎｄｏｗ＿ｂａｃｋｇｒｏ
ｕｎｄがたまたま０になった時にＰｎｅｗ＿ｂａｃｋｇｒｏｕｎｄが無音にならないようにするために、（ブロック４７８および４７０で）快適ノイズレベル（ＣＮＬ）が加えられることに留意されたい。例えば、一実施形態では、ＣＮＬは−６６ｄＢｍ０に設定される。別法として、ＣＮＬは−６０ｄＢｍ０ないし−７２ｄＢｍ０の範囲内であってもよい。また、図１９のフローはパワーレベル推定を用いて実行されているが、マグニチュード推定を用いても同じフローを遂行することができる。
【０１１４】
図１８は、本発明の一実施形態による、上記で得られたすべてのレベル推定を用いた非線形プロセッサ制御の方法を示している。すなわち、図１８は、非線形処理が実行される図９のブロック２３０の部分を示している。図１８において、フローはポイントＣ（これには、例えば、図１６のブロック４０６、ブロック４１０、もしくは判断分岐４１６から、または図１７のブロック４３８から到達することができる）から開始される。ポイントＣから、フローは判断分岐４４０に進み、Ｐｅｒｒｏｒが非線形プロセッサオフ（ＮＬＰ＿ＯＦＦ）閾値よりも大きいかどうかを判定する。大きい場合、フローはブロック４５２に進み、ＮＬＰ＿ＯＦＦをセット（これは、非線形プロセッサ３２がオフにされることを示す）した後、ブロック４５４に進み、ノイズ傾斜（ramping ）ファクタを所定値にリセットする。ノイズ傾斜ファクタは、低から高への信号レベル遷移を滑らかにするために用いられる。（ブロック４５４の後、フローは図９のブロック２３２に進む。）判断分岐４４０で、ＰｅｒｒｏｒがＮＬＰ＿ＯＦＦ閾値よりも大きくないと判定された場合、フローは判断分岐４４２に進み、Ｐｂａｃｋｇｒｏｕｎｄがバックグラウンド閾値よりも大きいかどうかを判定する。大きい場合、フローはブロック４５２に進み、非線形プロセッサ３２をオフにした後、ブロック４５４に進む。したがって、非線形プロセッサ３２は、ＰｅｒｒｏｒがＮＬＰ＿ＯＦＦ閾値よりも大きい場合、またはＰｂａｃｋｇｒｏｕｎｄがバックグラウンド閾値よりも大きい場合にオフにされる。一実施形態では、ＮＬＰ＿ＯＦＦ閾値は−２７ｄＢｍ０に設定され、バックグラウンド閾値は−３９ｄＢｍ０に設定される。
【０１１５】
判断分岐４４２で、Ｐｂａｃｋｇｒｏｕｎｄがバックグラウンド閾値よりも大きくないと判定された場合、フローは判断分岐４４４に進み、Ｐｅｒｒｏｒが非線形プロセッサオン（ＮＬＰ＿ＯＮ）閾値よりも小さいかどうかを判定する。小さい場合、フローは判断分岐４４６に進み、ＡＶＧ  ＰＲｉｎがＰＲｉｎ閾値よりも大きいかどうかを判定する。ＡＶＧ  ＰＲｉｎがＰＲｉｎ閾値よりも大きい場合、フローはブロック４４８に進み、ＮＬＰ＿ＯＮをセットする（これは、非線形プロセッサ３２がオンにされることを示す）。したがって、非線形プロセッサ３２は、ＰｅｒｒｏｒがＮＬＰ＿ＯＮ閾値よりも小さく、ＡＶＧ  ＰＲｉｎがＰＲｉｎ閾値よりも大きい場合にオンにされる。ＡＶＧ  ＰＲｉｎがＰＲｉｎ閾値よりも大きいという条件は、非線形プロセッサ３２が、必要な時にのみオンにされることを保証する（というのは、顕著なエコーは、遠端トーカ信号が比較的強い時にのみ生じ得るからである）。他方、ＰｅｒｒｏｒがＮＬＰ＿ＯＮ閾値よりも小さいという条件は、さらに、残留エコーが小さくなければならないこと、および、近端トーカ信号が、除去されるべき残留エコーと誤ってみなされないことを保証する。したがって、一実施形態では、ＰＲｉｎ閾値は−３６ｄＢｍ０に設定され、ＮＬＰ＿ＯＮ閾値は−４２ｄＢｍ０に設定される。しかし、代替実施形態では、これらを任意の適当な値に設定することができる。
【０１１６】
なお、上記の実施形態では、ＮＬＰ＿ＯＦＦ閾値とＮＬＰ＿ＯＮ閾値の差（これは、一実施形態では、−１５ｄＢｍ０である）は、非線形プロセッサ３２の「不感帯」であり、ＮＬＰ＿ＯＮとＮＬＰ＿ＯＦＦの間の急速な切替を避けるのに役立つ。
【０１１７】
（判断分岐４４４で）ＰｅｒｒｏｒがＮＬＰ＿ＯＮ閾値よりも小さくないと判定されるか、または（判断分岐４４６で）ＡＶＧ  ＰＲｉｎがＰＲｉｎ閾値よりも大きくないと判定された場合、フローは判断分岐４５０に進み、ＮＬＰ＿ＯＮがセットされているかどう
か（すなわち、非線形プロセッサ３２がオンであるかどうか）を判定する。ＮＬＰ＿ＯＮがセットされていない場合、フローは図９のブロック２３２に進む。これに対して、ＮＬＰ＿ＯＮがセットされている場合（またはブロック４４８を出た後）、フローは判断分岐４５６に進み、快適ノイズがオンであるかどうかを判定する。快適ノイズがオンでない場合、フローは図９のブロック２３２に進む。これに対して、快適ノイズがオンである場合、フローはブロック４５８に進み、快適ノイズを生成する。ブロック４５８の後、フローはブロック４６０に進み、快適ノイズレベルを決定してから、ブロック４６２に進み、快適ノイズをバックグラウンドノイズとミキシングする。そして、フローはブロック４６４に進み、ノイズ傾斜ファクタを適応させた後、図９のブロック２３２に進む。
【０１１８】
したがって、快適ノイズ信号は、非線形プロセッサ３２がオンである時に生成されることになる。ホワイトノイズは一般に、快適ノイズとして好ましい選択ではない。というのは、ホワイトノイズは、日常生活の真のバックグラウンドノイズ信号とはスペクトル的にかけ離れているからである。したがって、本発明のいくつかの実施形態では、快適ノイズとして、ピンクノイズ、ブラウンノイズ、またはホス（Hoth）ノイズを用いる。例えば、一実施形態では、ピンクノイズが選択される。その理由は、ピンクノイズは計算に関する複雑さが低いからである。ピンク様ノイズは、（例えばブロック４５８において、）次の式１３に示すように、一様分布擬似ランダム変数Ｘの２つの連続する実現を用いることによって生成される。
【０１１９】
【数１３】
2005531200.tif 000016
【０１２０】
上記の式１３において、Ｘ（ｎ）は時刻ｎに生成される擬似ランダム変数（−１≦Ｘ（ｎ）＜１）であり、Ｃ１およびＣ２は、２つのランダムサンプルの混合比（mixture ）およびＹｐｉｎｋのマグニチュードを修正するための定数である。したがって、Ｙｐｉｎｋ（ｎ）は、時刻ｎに生成されるピンク様ノイズサンプルである。２つの定数Ｃ１およびＣ２は、ピンクノイズ信号の平均パワーレベルがＰｂａｃｋｇｒｏｕｎｄよりも約２ｄＢ低いことを保証するように選択される。例えば、一実施形態では、Ｃ１およびＣ２はそれぞれ０．７５および１に選択される。したがって、一実施形態では、快適ノイズ整合レベルは、推定バックグラウンドノイズレベルに対して０〜４ｄＢの範囲にわたる。
【０１２１】
次に、生成された快適ノイズ（本実施形態ではＹｐｉｎｋ）を、次の式１４に示すように、バックグラウンドノイズとミキシングする（図１８のブロック４６２も参照）。
【０１２２】
【数１４】
2005531200.tif 000017
【０１２３】
上記の式１４において、Ａは、整合対象のバックグラウンドノイズレベルのマグニチュードである（ブロック４６０に対応する）。例えば、一実施形態では、Ａ＝（Ｐｂａｃｋｇｒｏｕｎｄ）の平方根、である。代替実施形態では、Ｐｂａｃｋｇｒｏｕｎｄがパワーではなくマグニチュードで表されている場合、Ａ＝Ｐｂａｃｋｇｒｏｕｎｄである。式１４において、α（ｎ）は、時刻ｎにおけるノイズ傾斜ファクタ（ここで０≦α＜１）であり、これにより、非線形プロセッサ３２のオンセット時に、或るレベルから別のレベルへ
の滑らかな遷移が可能となる。Ｓｏｕｔ（ｎ）は、時刻ｎにおける非線形プロセッサ３２の最終出力である（すなわち、Ｓｏｕｔ（ｎ）は図２のＳｏｕｔ４２である）。ノイズ傾斜ファクタ（ブロック４６４で適応される）は、式１５に示すように、サンプルごとに計算される。
【０１２４】
【数１５】
2005531200.tif 000018
【０１２５】
式１５において、ｂは、１よりも小さいように選択される傾斜定数である。一実施形態では、ｂは約０．９９８６であり、０．９９８６５００＝０．４９６であるので、５００ｍｓでその約半分に減衰する。この傾斜プロセス中に、Ｓｏｕｔ（ｎ）は、傾斜プロセスが継続する場合、誤差信号４６（これは図２のＳｉｎ３９−誤差推定信号４８である）から出発して、α（ｎ）が１から０に変化するにつれてＡ＊Ｙｐｉｎｋ（ｎ）に徐々に切り替わる。傾斜は、非線形プロセッサ３２のオンセット時およびオフセット時の両方に適用することができる。しかし、一実施形態では、傾斜は、非線形プロセッサ３２のオンセット時にのみ適用される。その理由は、非線形プロセッサ３２がオフになる時には通常、大きいレベルの近端トーカ信号を検出しており、快適ノイズ（一実施形態ではピンクノイズ信号）から近端トーカ信号に徐々に切り替わることは望ましくない可能性があるからである。しかし、代替実施形態では、非線形プロセッサ３２がオンになる時およびオフになる時の両方にこの傾斜を適用してもよい。
【０１２６】
図７は、純粋遅延を推定するように機能する監視制御ユニット３０の部分を示している。純粋遅延推定は、適応フィルタ２８のタップ数を低減することにより、上記で説明したように、より少ない計算量で、より高速かつより深い収束を得ることを意図している。すなわち、図７と、図２０〜図２４のフロー図に示されている監視制御ユニット３０の部分を用いて、純粋遅延を検出し疎ウィンドウを位置決めする（図９のブロック２１１）ことができる。一実施形態では、純粋遅延を検出し、適応フィルタ２８の長さ（すなわちタップ数）が低減されるように適切なサイズのフィルタリングウィンドウ（疎ウィンドウ）を位置決めする。そこで、図７について、図２０〜図２４のフローに関して説明する。
【０１２７】
図７および図２０〜図２４は、エコーキャンセラ２０における疎ウィンドウの動的位置決めのためのエコー信号の純粋遅延（すなわち、図３７のＴ１）の推定を実現するために用いられる一実施形態を提供する。純粋遅延推定は、以下でさらに詳細に説明するように、大きいエコーパス遅延範囲をカバーすることに伴う計算コストを低減するために、フルウィンドウ適応フィルタを、適切に位置決めされた狭ウィンドウ適応フィルタで置き換えることによって、実行される。すなわち、図３７のインパルス応答全体をカバーするフルウィンドウ適応フィルタ（Ｔ１およびＴ４＋Ｔ２の両方をカバーするほどに大きい）を使用するのではなく、純粋遅延部分を排除し、大きい応答が生じる部分であるＴ４＋Ｔ２を捕捉するために位置決めされた、より小さいウィンドウ（疎ウィンドウ）を用いることができる。また、純粋遅延推定は、より短い長さの適応フィルタを用いることによって、適応フィルタ２８の収束の速さおよび深さを増大させる。また、純粋遅延推定を用いて、（例えば電話通話中に）エコーの動的に変化する純粋遅延を監視し、それに従って適応フィルタウィンドウ（例えば疎ウィンドウ）を調節することができる。
【０１２８】
本明細書に記載の実施形態は、能動的手法（例えば、両方向に無音で開始される通話の純粋遅延を確定するために、短時間で狭帯域の非常に低レベルのノイズパルスを通話の最初に注入すると同時にサブレート適応を実行する。この場合、一般に、無音が３００ｍｓ
持続すれば、低レベルのプロービング信号を注入して純粋遅延を求めるには十分な長さである）だけでなく、受動的手法（例えば、音声信号のみを用いたサブレートフィルタ適応）を含んでもよい。また、本明細書に記載の実施形態は、純粋遅延を扱うための２つのシナリオを含む。第１のシナリオは、サービス品質（ＱｏＳ）原理からエコーを直ちに低減することが必要な、電話通話の開始に関連する。第２のシナリオは、電話通話中のエコーパスの変化に関連する。通常、疎ウィンドウ（および関連する純粋遅延）は、電話通話の継続時間全体を通じて変動しない。しかし、一部の通話（特に、例えば「コールフォワード」機能や「会議通話」機能がアクティブである通話）に関しては、純粋遅延がかなり変化することがある。したがって、本明細書に記載の種々の実施形態は、毎秒１回までの疎ウィンドウの変動に対応する純粋遅延のダイナミクスをサポートする。なお、本明細書に記載の実施形態は、通話の開始または終了を判定するために、制御信号１７を通じて提供される独自仕様の（すなわち非標準の）シグナリングを用いて、電話機がオンフックまたはオフフックのいずれであるかを判定してもよいことに留意されたい。
【０１２９】
図７および図２０〜図２４の実施形態では、サブレート適応プロセスを用いることにより、計算効率の高い純粋遅延の推定が可能である。しかし、代替実施形態では、サブレートプロセスを用いなくてもよい。また、一実施形態では、本質的に可変の純粋遅延の推定を扱うために、純粋遅延の生の測定結果を非線形フィルタリング（すなわち、判定あるいは制限プロセスを用いた処理。その一例は、図２３に関して後述する）した後、適応フィルタ２８に戻してもよい。上記のサブレートプロセスは、ＮＬＭＳ（正規化最小平均二乗）適応フィルタを（図７の適応フィルタ１２２として）用いてもよい。しかし、適応フィルタ１２２は、このタイプの適応フィルタリングに限定されない。例えば、ＰＮＬＭＳ、ＲＬＳ、または他の適応フィルタを用いてもよい。なお、ＮＬＭＳ適応フィルタリングアルゴリズムは一般に単純であり、受容可能な収束特性を有することに留意されたい。他の適応フィルタアルゴリズムは、計算量的にさらに要求が厳しい。ＰＮＬＭＳ（比例正規化ＬＭＳ）アルゴリズムは、適度の計算コストで収束性が明確に向上する。ＲＬＳ（再帰最小二乗）適応アルゴリズムは一般に、大幅に高速である（しかし、計算コストも大幅に高くなる）。しかしＲＬＳ適応アルゴリズムは、数値誤差に敏感であり、数値不安定性を示す。収束性の観点からは、他の適応フィルタ（例えば、サブバンド、アフィンおよびそれらの変種）のほうが魅力的なことがあるが、それらはＮＬＭＳと比較して、計算量的にさらに要求が厳しい。しかし、本明細書に記載の実施形態は、ＮＬＭＳ適応フィルタリングの使用に限定されない。メインレート適応フィルタおよびサブレート適応フィルタの両方とも、他のタイプの適応フィルタリングソリューションに基づくことが可能である。
【０１３０】
（ノイズまたは近端トークによる影響から）本質的に信頼性が低いためにサブレート適応フィルタ１２２の発散を引き起こしかねないような測定値の生成を防ぐために、純粋遅延推定は、短期サブレート信号パワー推定およびサブレート近端トーカ信号検出のようなメカニズムによって制御することができる。なお、適応フィルタ２８に関しては、上記で説明したように、誤った係数の生成を避けるためにＳｇｅｎの検出時に適応プロセスを停止させるが、同じ原理を、純粋遅延を求める際に用いられる適応フィルタ１２２に適用してもよいことに留意されたい。
【０１３１】
適応フィルタ長を短縮することに加えて、純粋遅延の推定は、例えば、遠端エコーキャンセラがオフにされる時、通話が市内通話から長距離通話に（コールフォワード機能、コールトランスファ機能等により）切り替わる時、会議通話動作で発呼者／被呼者が広い地域にわたって分散している時のような、他の状況に対処するために用いることができる。
【０１３２】
図７は、ブロック図形式で、推定遅延１３０を提供するために用いられる監視制御ユニット３０の部分を示している。適応フィルタ１２２（これは、サブレート処理を利用する一実施形態では、サブレート適応フィルタである）は、電話通話の継続時間中、連続的に
、バンドパスインパルス応答の短期推定値を提供する。インパルス応答の純粋遅延測定値が、制限プロセスすなわち判断ブロック（例えば図２３）を用いて連続的にフィルタリングされる。この制限プロセスすなわち判断ブロックは、上記のように、非線形フィルタとしてよい。このフィルタにより、通話の開始時における純粋遅延の高速判定が可能となり、新たな純粋遅延値が新たな値の有効性に関する基準を満たす場合には、通話中に純粋遅延の調節または新たな純粋遅延の選択が可能である。すなわち、エコーの発生を最小限にするため、或る純粋遅延から別の純粋遅延への通話中の切替は、純粋遅延測定値の適切な確認に基づくことができる。一実施形態では、この確認は、通話中に純粋遅延を変化させるための保守的メカニズム（例えば、サブレートインパルス応答最大値の位置の３個以上の測定結果を解析することによる）を提供する。
【０１３３】
オプションの一変形形態では、図２４に関して説明するように、エコーキャンセラ２０は監視モードで動作してもよい。このモードでは、図７のシステムは、電話通話の開始時にのみアクティブであり（すなわち、純粋遅延が推定され）、その場合、或る一定の条件が満たされれば、休止状態に入る。休止状態の間、ＥＲＬＥ推定器が、適応フィルタ２８に対応するＥＲＬＥを、或る閾値と比べて連続的にチェックする。ＥＲＬＥが閾値を下回り、所定継続時間そのままにとどまる場合、図７のシステムはアクティブモードに復帰し、純粋遅延の推定に進む。
【０１３４】
図２０のフローは判断分岐４８２から開始され、純粋遅延推定オプションがアクティブであるかどうかを判定する。なお、このオプションは、エコーキャンセラ２０にプログラムされた設定に対応してもよいことに留意されたい。この場合、オプションがアクティブであるかどうかの判定は、図２０に示されているようにサンプルごとに行う必要はない。代替実施形態では、判断分岐４８２の判定は、電話通話の開始時に行うことができる。しかし、純粋遅延推定オプションがアクティブである場合にのみ、フローは判断分岐４８３に進む。純粋遅延推定オプションがアクティブでない場合（通話の開始時に判定するか、またはサンプルごとに判定するかにかかわらず）、純粋遅延推定を実行すべきではないので、フローは図９のブロック２１３に進む。
【０１３５】
判断分岐４８３で、通話の開始時におけるオプションのトレーニングがアクティブであるかどうかを判定する。純粋遅延推定オプションと同様に、トレーニングオプションもまたエコーキャンセラ２０にプログラムすることが可能であり、したがって、図２０に示されているように各サンプルごとにではなく電話通話の開始時にチェックすることができる。オプションのトレーニングがアクティブでない場合、フローは図２１の判断分岐４８４に進む。これに対して、オプションのトレーニングがアクティブである場合、フローは判断分岐４９７に進む。要約すれば、オプションのトレーニングがアクティブでない場合、図２０のフローは不要である。同様に、純粋遅延推定オプションがアクティブでない場合、図２０および図２１のフローは不要である。したがって、エコーキャンセラ２０は、選択されている設定およびオプションに応じて、多様な異なる方法で動作し得る。
【０１３６】
また、各電話通話の開始時に、図２０〜図２４のフローで用いるために多くの変数を初期化してもよいことに留意されたい。例えば、一実施形態では、トレーニング迂回フラグをＦＡＬＳＥに設定し、純粋遅延サンプルカウンタをリセットし、トレーニングインデックスをリセットし、ＥＲＬＥカウンタをリセットする。これらの変数については、図２０〜図２４のフロー全体で説明する。また、いくつかの値は、エコーキャンセラ２０内にプログラムしても、固定配線してもよい。例えば、測定サイクルＮは、各通話の開始時に特定の値に初期化してもよく、エコーキャンセラ２０内に固定配線してもよい。なお、本明細書全体を通じて記載される他の変数は、通話の開始時に初期化してもよく、エコーキャンセラ２０内に固定配線しても、（永久的かどうかを問わず）プログラムしてもよいことに留意されたい。
【０１３７】
判断分岐４８３で、通話の開始時におけるオプションのトレーニングがアクティブであると判定された場合、フローは判断分岐４９７に進む。オプションのトレーニングにより、純粋遅延を通話の開始時に推定することが可能となる。通話がまさに開始される時には、一般にはまだ音声がないので、トレーニング信号をＲｉｎ４３に注入してＲｏｕｔ４０を生成することができる（図２のトレーニング信号４１参照。これは、加算器３６経由でＲｉｎ４３に注入することができる）。すなわち、十分なＲｉｎ４３のエネルギーがない時には、純粋遅延を求めることは不可能である。そこで、トレーニング信号４１を注入することによって、純粋遅延推定値を求めることができる。一般に、トレーニング信号４１は、電話通話の開始時に、会話の前に、注入される比較的低エネルギーの短いバーストである。すなわち、トレーニング信号４１は一般に、注入閾値よりも小さい。注入閾値は、一実施形態では、−３０ｄＢｍ０ないし−５５ｄＢｍ０の範囲にある。そこで、オプションのトレーニングがアクティブである場合、フローは判断分岐４９７に進み、トレーニング迂回フラグがＴＲＵＥであるかどうかを判定する。ＴＲＵＥである場合、フローは図２１の判断分岐４８４に進み、トレーニングをすべて迂回し、以下で説明するように、図２１の純粋遅延推定に進む。
【０１３８】
判断分岐４９７で、トレーニング迂回フラグがＴＲＵＥに設定されていないと判定された場合、フローは判断分岐４９９に進み、トレーニングインデックスが２以下であるかどうかを判定する。トレーニングインデックスは、トレーニング信号を用いる場合に、トレーニング信号が通話の開始時にのみ注入されることを保証する。上記で言及したように、トレーニングインデックスは、通話の開始時にリセットすることができるので、初めて判断分岐４９９に到達した時には、トレーニングインデックスは（当初ゼロにリセットされているので）１以下のはずである。これに対して、以下で説明するように、第１の測定サイクル（これは、一実施形態では、３００ミリ秒である）の後、トレーニングインデックスは（例えば図２１のブロック５０５で）１にインクリメントされる。この場合でも、トレーニングインデックスは依然として１以下であるので、トレーニング信号の注入が可能である。しかし、次の測定サイクルの後、トレーニングインデックスは（例えば図２１のブロック５０５で）２にインクリメントされ、この時点以降、判断分岐４９９では、フローは図２１の判断分岐４８４に進むことになり、もはやトレーニング信号４１を注入する可能性はなくなる。というのは、トレーニングインデックスが２であることは、もはや通話の開始時とはみなされないことを示しているからである。一般に、通話の開始時以外の時にトレーニング信号を注入するのは望ましくない。というのは、そのトレーニング信号が通話の当事者に聞こえてしまうかもしれないからである。
【０１３９】
判断分岐で、トレーニングインデックスが１以下である場合、フローはブロック４８９に進む。これは、依然として通話の開始時とみなされることを示す。ブロック４８９で、Ｓｉｎの長期パワー（ＰＳｉｎ）およびＲｉｎの長期パワー（ＰＲｉｎ）を計算する（これは、上記の式１、式３、および式４を用いて行うことができる）。次に、フローは判断分岐４９０に進み、ＰＳｉｎがＰＳｉｎ閾値よりも小さくＰＲｉｎがＰＲｉｎ閾値よりも小さいかどうかを判定する。第１のチェック（ＰＳｉｎがＰＳｉｎ閾値よりも小さいかどうか）は、近端トーカ信号Ｓｇｅｎがないことを保証する。一実施形態では、このＰＳｉｎ閾値は−５０ｄＢｍ０である。第２のチェック（ＰＲｉｎがＰＲｉｎ閾値よりも小さいかどうか）は、遠端トーカ信号が存在しないことを保証する。一実施形態では、このＰＲｉｎ閾値は−５０ｄＢｍ０である。両方の条件が満たされる場合、フローはブロック４９２に進む。これは、会話がまだ開始されておらず、トレーニング信号を注入することができることを示している。そこで、ブロック４９２で、トレーニング信号（例えば、図２のトレーニング信号４１）を注入するか、または、ブロック４９２を通るのは今回が２回目である場合には注入を継続する。これに対して、判断分岐４９０で、両方の条件とも満たされるわけではない場合、フローはブロック４９５に進み、トレーニング信号フラグをＴ
ＲＵＥに設定する。すなわち、一旦ＰＳｉｎまたはＰＲｉｎがそれぞれの閾値を超過したら、トレーニングインデックスにかかわらずトレーニングを（判断分岐４９７で）迂回し、それにより、現在の通話中にトレーニング信号が注入されることを防ぐ。ブロック４９５および４９２の後、フローは図２１の判断分岐４８４に進む。
【０１４０】
図２１は、純粋遅延推定を実行する一実施形態を示している。図２１のフローはサブレート処理を使用するので、フローはＤ個のサンプルごとにのみ実行される。ここでＤは図７のデシメータ１０６および１１０に対応する。例えば、一実施形態では、Ｄは８であり、Ｒｉｎ４４およびＳｉｎ３８のサンプルが８個ごとにのみ処理される。しかし、代替実施形態では、Ｄは任意の値（１を含む。１の場合、全サンプルが処理されるので、サブレート処理は使用されないことを示す）とすることができる。したがって、Ｄ個ごとのサンプルはサブレートサンプルとみなされる。Ｄ個ごとのサンプルを捕捉するために、純粋遅延サンプルカウンタを用いて、Ｒｉｎ４４およびＳｉｎ３８の入来サンプルを追跡する。一般に、純粋遅延サンプルカウンタは、各サンプルの後にインクリメントされ、Ｄ個のサンプルごとにリセットされる。また、純粋遅延サンプルカウンタは、上記のように、各電話通話の開始時にリセットされることも可能である。また、遅延サンプルカウンタは、本明細書に記載の他のフローのサンプルカウンタと共用してもよく、純粋遅延を推定するためにのみ用いられる専用のカウンタであってもよい。
【０１４１】
判断分岐４８４で、純粋遅延サンプルカウンタがＤ−１に等しいかどうかを判定する。なお、純粋遅延サンプルカウンタがリセットされる（すなわちゼロに設定される）実施形態では、Ｄ−１に達することはＤ番目のサンプルに達することに対応することに留意されたい。しかし、代替実施形態では、純粋遅延サンプルカウンタは１に初期化されてもよく、その場合、Ｄ−１ではなくＤと比べてチェックが行われる。また、他の実施形態では、純粋遅延サンプルカウンタをＤまたはＤ−１に初期化し、それぞれ１または０に達するまでデクリメントしてもよい。したがって、図７のデシメーションフィルタ１０４および１０８ならびにデシメータ１０６および１１０として、デシメーションフィルタおよびデシメータの種々の実施形態を用いることができる。また、デシメータ１０６の出力はＲｉｎ４４のサブレートサンプル（これをＲｉｎＳＲと呼ぶことがある）であり、デシメータ１１０の出力はＳｉｎ３８のサブレートサンプル（これをＳｉｎＳＲと呼ぶことがある）であることにも留意されたい。
【０１４２】
判断分岐４８４で、純粋遅延サンプルカウンタがまだＤ−１に達していないと判定された場合、フローはブロック５０２に進み、純粋遅延サンプルカウンタを１だけインクリメントして、フローは図９のブロック２１３に進む。これに対して、純粋遅延サンプルカウンタがＤ−１に達した場合、フローは判断分岐４８４からブロック４９１に進む。これは、サブレートサンプルに達したことを示す。ブロック４９１で、上記のように次のサブレートサンプルを検出するために、純粋遅延サンプルカウンタをリセットする。
【０１４３】
フローはブロック４８５に進み、サブレートＲｉｎのパワー（ＰＲｉｎＳＲ）、サブレートＳｉｎのパワー（ＰＳｉｎＳＲ）、およびサブレート近端トーカ検出フラグ（ｓｒ＿ｎｅａｒ＿ｅｎｄ＿ｄｅｔｅｃｔ＿ｆｌａｇ）を決定する。例えば、以下の式を用いてＰＲｉｎＳＲ、ＰＳｉｎＳＲ、およびＰｅｒｒｏｒＳＲ（ｋ）を求めることができる：
【０１４４】
【数１６】
2005531200.tif 000019
【０１４５】
なお、上記の式（式１６〜式１８）において、ｋは信号サブレートサンプル番号であり、例えば、ＳｉｎＳＲ（ｋ）＝Ｓｉｎ（ｋ・Ｄ）となっていることに留意されたい。式１８は、サブレート誤差ｅｒｒｏｒＳＲに対応する。サブレート誤差ｅｒｒｏｒＳＲは、ＳｉｎＳＲとサブレートエコー推定値ｙ（ｋ）の差に対応する。サブレートエコー推定値ｙ（ｋ）は、図７のサブレート適応フィルタ１２２で求められ、ブロック４９４に関して後述する。したがって、ｅｒｒｏｒＳＲ（ｋ）およびＰｅｒｒｏｒＳＲ（ｋ）は、以下でさらに詳細に説明する。また、上記の式の一実施形態では、αは１／２８０に設定される。これは、電話チャネルで観測される人間音声の統計に対応する。なお、１／２８０は、フィルタ帯域幅に関して約７０ミリ秒のスライディングウィンドウ平均にも対応することに留意されたい。しかし、代替実施形態では、異なるａｌｐｈａの値を用いてもよい。（なお、上記のサブレートパワー計算値は、図７のパワー推定器１２０およびパワー推定器１１８で計算することができることに留意されたい。）
ｓｒ＿ｎｅａｒ＿ｅｎｄ＿ｄｅｔｅｃｔ＿ｆｌａｇの決定は、図１１に関して上記で説明した近端信号検出と同様に行うことができる。したがって、ＰｅｒｒｏｒＳＲ（ｋ）とＰＳｉｎＳＲ（ｋ）の最小値をＮＥＳＤサブレート閾値（ＮＥＳＤ＿ＳＲ＿ｔｈｒｅｓｈｏｌｄ）と比較して、近端トーカ信号（Ｓｇｅｎ）が存在するかどうかを判定する。（なお、これは、図７の近端信号検出器１１４で実行可能であることに留意されたい。）Ｓｇｅｎが存在する場合、ｓｒ＿ｎｅａｒ＿ｅｎｄ＿ｄｅｔｅｃｔ＿ｆｌａｇは真であると判定され、ＴＲＵＥに設定される。このフラグは、サブレートフィルタ１２２のフィルタ係数の更新を迂回するために用いられる。というのは、近端トーカ信号が存在する場合、上記のように、Ｓｉｎ３８は純粋な残留エコーをもはや表しておらず、Ｓｇｅｎと残留エコーの混合であるためである。したがって、適応フィルタ２８に関して上記で説明したように、サブレート適応フィルタ１２２は、ＳｉｎＳＲがサブレートエコーのみを含む時（すなわち、近端トーカ信号が存在しない時）に限り適応を行うべきである。また、適応フィルタ２８に関して上記で説明したように、チャネルノイズへの適応を防ぐために、サブレート適応フィルタ１２２は、ＰＲｉｎＳＲが十分に高い時に適応を行うべきである。
【０１４６】
なお、適応フィルタ２８に関して上記で説明したように、近端トーカ信号は、シングルトークおよびダブルトークのいずれの状況の間にも検出することができることに留意されたい。すなわち、上記のアルゴリズムを用いると、近端トーカのみが存在する時、または近端トーカおよび遠端トーカの両方が存在する時のいずれにも、Ｓｇｅｎを検出することができる。また、代替実施形態では、近端トーカ信号が存在するかどうかを判定するための他の方法を用いてもよいことに留意されたい。例えば、一実施形態では、Geigelアルゴリズムを用いてもよい。これは、近端トーカ信号を検出することが当技術分野において既知である。
【０１４７】
ブロック４８５の後、フローは判断分岐４８６に進み、ＰＲｉｎＳＲがサブレートＲｉｎの最小パワー閾値よりも大きいかどうかを判定する。大きくない場合、フローはサブレート適応フィルタ１２２の更新を迂回して図９のブロック２１３に進む。上記のように、これは、サブレート適応フィルタ１２２がチャネルノイズに適応するのを防ぐ。一実施形態では、サブレートＲｉｎの最小パワー閾値は−４５ｄＢｍ０に設定される。最小閾値を
満たす場合、フローは判断分岐４８７に進み、ｓｒ＿ｎｅａｒ＿ｅｎｄ＿ｄｅｔｅｃｔ＿ｆｌａｇがＦＡＬＳＥであるかどうかを判定する。最小閾値を満たさない場合、フローは、前段落で説明したように、近端トーカ信号の存在に起因するサブレート適応フィルタ１２２の更新を迂回して、図９のブロック２１３に進む。ｓｒ＿ｎｅａｒ＿ｅｎｄ＿ｄｅｔｅｃｔ＿ｆｌａｇがＦＡＬＳＥである場合、フローはブロック４９４に進む。これは、ＰＲｉｎＳＲが十分であり、近端トーカ信号が存在しないことを示す。
【０１４８】
ブロック４９４で、サブレートエコー推定値ｙ（ｋ）を計算した後、ブロック４９６で、サブレート適応フィルタ１２２の係数を更新する。一実施形態では、修正ＮＬＭＳアルゴリズム（サブレートプロセスにおいて使用するために修正されたもの）を用いてｙ（ｋ）を計算し係数を更新してもよい。
【０１４９】
【数１７】
2005531200.tif 000020
【０１５０】
上記の式１９は、入力信号ＸのＦＩＲフィルタリングを表す。ここで、Ｘ（ｋ）＝［ｘ（ｋ），ｘ（ｋ−１），... ，ｘ（ｋ−Ｎ＋１）］ＴはＦＩＲフィルタスパンの継続時間にわたる（サブレートＤでの）入力信号ベクトルである。したがって、ｘ（ｎ）＝ＲｉｎＳＲ（ｎ）である。また、式１９において、Ｈ（ｋ）はｋ回目の反復に対する（サブレートサンプリングでの）フィルタ係数ベクトルである。ここで、
【０１５１】
【数１８】
2005531200.tif 000021
【０１５２】
である。
上記の式２１は、ＮＬＭＳアルゴリズムによるフィルタ係数更新公式を表す。ここで、ＮＬＭＳサブレートのｓｔｅｐ＿ｓｉｚｅは次のように表すことができる。
【０１５３】
【数１９】
2005531200.tif 000022
【０１５４】
式２２において、βは適応定数である。γは「保護」項であり、ＰＲｉｎＳＲ（ｋ）が一時的に小さくなった時に適応公式における更新項が過度に大きくならないことを保証する。ＰＲｉｎＳＲ（ｋ）はサブレートサンプリングでの入力信号パワー（式１６参照）である。
【０１５５】
【数２０】
2005531200.tif 000023
【０１５６】
上記の式において、ＲｉｎＳＲは、フィルタリングされデシメートされた遠端信号（これは図７のデシメータ１０６の出力に対応する）に対応し、ＳｉｎＳＲは、（図７のデシメータ１１０の出力における）フィルタリングされデシメートされたエコー信号に対応する。なお、Ｓｇｅｎが存在しない時間中、Ｓｉｎ３８は残留エコーのみを含むので、デシメータ１１０の出力におけるＳｉｎＳＲを、フィルタリングされデシメートされたエコー信号として用いることができることに留意されたい。変数Ｈ（式１９に関して説明した）は、サブレート適応フィルタ１２２の係数推定値を表す列ベクトルに対応し、Ｈの後ろの「Ｔ」はベクトル転置を示す。信号ｙは、適応フィルタ１２２によって提供されるＳｉｎＳＲの推定値を表し、ｅｒｒｏｒＳＲはＳｉｎＳＲとｙの差である。また、上記の式の一実施形態では、βは２−９＊２．５に設定され、αは１／１２８に設定される。一実施形態では、γは（ＰＲｉｎＳＲ（ｋ）に比べて）小さい値に設定される。例えば、ＰＲｉｎＳＲ（ｋ）が１６ビット小数として表現される場合、γの典型的値は、ｋを小さい整数としてｋ・２−１５である。
【０１５７】
次に、フローは判断分岐４９８に進み、ｎがＮに等しいかどうかを判定する。ここで、本実施形態では、Ｎは単一の測定サイクルの継続時間に対応する。一実施形態では、Ｎは３００ｍｓに対応し、したがって、３００個のサブレートサンプル（Ｄ＝８と仮定する）に対応する。例えば、信号（例えばＲｉｎ４４およびＳｉｎ３８）が８ｋＨｚのレートでサンプリングされている場合、サンプルは１２５マイクロ秒ごとに受信される。本例ではＤ＝８であるので、Ｄ個ごとのサンプルは８＊１２５マイクロ秒に対応し、これは１ミリ秒に等しい。したがって、Ｎ個のサブレートサンプルごとに、フローはブロック５０３、５００および５０１に進む。ここで、本実施形態ではＮは３００であるので、３００＊１ミリ秒は３００ミリ秒となる。したがって、Ｎは、所定の継続時間を有する時間ウィンドウとして、またはブロック５００および５０１で推定遅延を求める前に処理しなければならない所定数のサブレートサンプルとしてのいずれで定義することも可能である。Ｎの値は、エコーキャンセラ２０内にプログラムされても固定配線されてもよく、また、新たな推定遅延値を計算する所望の頻度に応じて、いかなる値としてもよい。なお、Ｎは、サブレート適応フィルタ１２２の収束時間（すなわち短期収束時間）に対応することに留意されたい。例えば、１０２４サンプルのウィンドウ（これは、本実施形態では、１０２４＊１２５マイクロ秒に対応し、８ｋＨｚのベースサンプリングレートを仮定すると、これは１２８ミリ秒のウィンドウサイズに等しい）を用いてインパルス応答（例えば図３７のＴ３）を捕捉する場合、１０２４／Ｄ個のサブレートサンプルが採られる（例えば、本実施形態では、１０２４／８＝１２８個のサブレートサンプル）。すなわち、本実施形態によれば、３００ｍｓの収束時間で、（エコーキャンセラのＲｉｎ−Ｓｉｎ終端から分かるように）チャネルのサブレートインパルス応答の１２８個のサブレートサンプルの値を達成し、その最大値を求めることが可能となる。しかし、上記のように、代替実施形態では、異なる収束時間（すなわち、異なるサイズの測定サイクルＮ）、異なるウィンドウサイズ（すなわち、１０２４ベースレートサンプルすなわち１２８ミリ秒に限定されない）、異なるサブレート（Ｄは、１を含め、いかなる値も取り得る）、および８ｋＨｚ以外の異なるサンプリングレートを用いてもよい。
【０１５８】
判断分岐４９８で、インデックスｎ（これは、通話の開始時に、例えば１または０のような開始値に初期化してもよい）がまだＮに達していないと判定された場合、フローはブロック５０２に進み、ｎをインクリメントし、フローは図９のブロック２１３に進む。こ
れに対して、判断分岐４９８で、ｎがＮに等しいと判定された場合、これは、３００個のサンプル（３００ミリ秒の継続時間に対応する）が処理されたことを示しており、フローはブロック５０３に進み、ｎを１に初期化し、他の測定サイクル変数も初期化する（例えば、ＰＲｉｎＳＲ、ＰＳｉｎＳＲ、ｓｒ＿ｎｅａｒ＿ｅｎｄ＿ｄｅｔｅｃｔ＿ｆｌａｇ等）。次に、フローは判断分岐５０４に進み、トレーニングインデックスが２であるかどうかを判定する。トレーニングインデックスが２である場合、フローはブロック５０５を迂回してブロック５００に進む。これに対して、トレーニングインデックスが２でない場合、フローはブロック５０５に進み、トレーニングインデックスをインクリメントする。図２０に関して上記で説明したように、トレーニングインデックスは、オプションのトレーニングモードによって用いられる。その場合、トレーニング信号は、電話通話の開始時にのみ注入することができる。したがって、トレーニングインデックスは、通話の開始を示すために用いられる。
【０１５９】
フローはブロック５０５または判断分岐５０４からブロック５００に進み、個別推定純粋遅延を計算する。なお、図２２に関してさらに詳細に説明するように、個別推定純粋遅延は、各測定サイクルごとに（すなわち、Ｎ個のサブレートサンプルごとに）推定された純粋遅延に対応することに留意されたい。個別純粋遅延を推定した後、フローはブロック５０１に進み、図２３に関してさらに詳細に説明するように、数個（個々の実施態様に応じて、さらには通話の段階に応じて、２個、３個またはそれ以上）の有効な個別純粋遅延推定値を用いて、推定遅延１３０を求める。
【０１６０】
図２２は、個別推定遅延が求められる図２１のブロック５００の一実施形態を示している。フローはブロック５０６から開始され、サブレート・エコーリターンロスエンハンスメント（ＳＲ＿ＥＲＬＥ）を求める。次式を用いてＳＲ＿ＥＲＬＥを求めることができる：
【０１６１】
【数２１】
2005531200.tif 000024
【０１６２】
したがって、ＳＲ＿ＥＲＬＥはＰＳｉｎＳＲとＰｅｒｒｏｒＳＲの比に対応し、純粋遅延測定値の有効性を確認するために用いられる。ＳＲ＿ＥＲＬＥは、サブレート適応フィルタ１２２の収束性の「良さ」（すなわち、どの程度のエコーがキャンセルされたか）に関する情報を提供する。すなわち、ＳＲ＿ＥＲＬＥが（例えば５ｄＢ以上のように）高いほど、現在の測定サイクル内で適応フィルタ１２２が十分に収束していることを示す。（なお、ＳＲ＿ＥＲＬＥは、与えられたサブレートで動作するＥＲＬＥ推定器１１６で求めることができることに留意されたい。図７参照。）したがって、ブロック５０６の後、フローは判断分岐５０８に進み、ＳＲ＿ＥＲＬＥをサブレートＥＲＬＥ閾値と比較し、ＳＲ＿ＥＲＬＥがこの閾値よりも大きくない場合、フローはブロック５１４に進む。これは、現在の測定サイクルは、そのＳＲ＿ＥＲＬＥが低いため用いるべきではないことを示している。したがって、（現在の測定サイクルに対する）現在の測定値を破棄し、フローは図２１のブロック５０１に進む。これに対して、ＳＲ＿ＥＲＬＥがサブレートＥＲＬＥ閾値を超過している場合、フローはブロック５１０に進み、サブレート適応フィルタ１２２の収束性に関する別のチェックを実行する。
【０１６３】
ブロック５１０で、サブレート適応フィルタ１２２の係数のピーク対平均比（ＰＡＲ）を求める。図３７を参照すると、ピークは｜ｈ｜の最大値に対応する（すなわち、ピークは、正負いずれかの方向におけるゼロ軸からの最大距離である）。図３７において、ピー
クはラベル付けされている通りである。平均は、サブレート適応フィルタ係数の絶対値を用いて計算される。ＰＡＲがＰＡＲ＿Ｔｈｒｅｓｈｏｌｄよりも大きくない場合、フローは判断分岐５１２からブロック５１４に進み、現在の測定値を破棄する。というのは、現在の測定サイクルは、サブレート適応フィルタ１２２の十分な収束性を提供しないからである。これに対して、ＰＡＲがＰＡＲ＿Ｔｈｒｅｓｈｏｌｄよりも大きい場合、フローはブロック５１６に進む。これは、サブレート適応フィルタが現在の測定サイクル中に十分に収束したことを保証する２つの条件が満たされたことを示す。ブロック５１６で、サブレート適応フィルタ１２２の係数の最大値（ピークに対応する）を位置特定し（これは図７の最大値ロケータ１２４で実行することができる）、それに対応する時間値（図３７のＴｐｅａｋ）を求める。そして、フローは図２１のブロック５０１に進む。これについては図２３でさらに詳細に説明する。
【０１６４】
図２３は、図２１のブロック５０１の一実施形態を示している。これは、純粋遅延推定値を求める（図７の遅延決定部１２６および推定遅延１３０に対応する）。上記のように、純粋遅延は一般に通話の開始時に推定され、或る特定の条件が満たされれば、通話中に変化させてもよい。一般に、通話中に純粋遅延推定値を変化させるための条件はかなり保守的である。その理由は、（ａ）電話通話（ＰＳＴＮ通話およびパケット電話通話の両方）の統計は、純粋遅延が通話中にはあまり頻繁に変化しないことを示しており、（ｂ）純粋遅延推定値を（純粋遅延をあまりに精密に追跡しようとすることにより）あまり頻繁に変化させると、電話ユーザの観点からは妨害的となることがあるためである。したがって、フローは判断分岐５２８から開始され、フローを通るのは今回が初回であるか（すなわち電話通話の開始を示す）、または前に推定された遅延がゼロに等しいか（これは、通話の開始時、または前に推定された遅延値がゼロの通話の途中、のいずれかに対応し得る）を判定する。これらの場合のいずれかが真である場合、フローは判断分岐５２９に進み、２つの有効な測定値が利用可能であるかどうかを判定する。図２２に関して上記で説明したように、それぞれの個別推定遅延は、ＳＲ＿ＥＲＬＥおよびＰＡＲの両方を用いて確認され、個別推定遅延が確認される場合にのみ、対応する遅延測定値が記憶される。したがって、測定サイクルごとに（本実施形態では３００ミリ秒ごとに）、新たに有効な測定値を取得する可能性が存在する。少なくとも２つが利用可能であると仮定すると（これを取得するには少なくとも２サイクルの測定サイクルを要する）、フローはブロック５３０に進み、推定遅延の「高速追跡」計算がブロック５３０から開始される。
【０１６５】
ブロック５３０で、第１のバッファに２つの連続する有効な測定値を入れる。フローはブロック５３２に進み、これらの２つの測定値の間のばらつきおよび２つの測定値の平均をとる。ばらつきは、例えば、２つの測定値の差とすることができる。フローは判断分岐５３４に進み、ばらつきがばらつき閾値１よりも小さく、平均が平均閾値１よりも大きいかどうかを判定する。ばらつきがばらつき閾値１よりも小さく平均が平均閾値１よりも大きいのではない場合、新たな推定遅延を計算せず、フローは図９のブロック２１３に進む。これに対して、これらの条件が満たされる場合、フローはブロック５４２に進み、新たな推定遅延を計算する。したがって、ばらつき閾値１および平均閾値１は、２つの測定値が互いに十分に一致している場合にのみ新たな推定遅延が計算されることを保証する。すなわち、インパルス応答がその最大値に達した時の後続の測定値があまりにかけ離れている場合、遅延の推定は、後続の測定値がよりよく一致する（すなわち互いにより近くなる）まで保留される。ブロック５４２で、次式を用いて新たな推定遅延を計算することができる：
【０１６６】
【数２２】
2005531200.tif 000025
【０１６７】
上式において、ａｖｅｒａｇｅ（平均）は、ブロック５３２でとった２つの測定値の平均に対応し、ｏｆｆｓｅｔ（オフセット）は、実質的な応答を開始したインパルス応答内でピークに達する前の時間の長さに対応する値である。すなわち、図３７を参照すると、ピークはＴ１（純粋遅延）よりもＴ４の分だけ長い時間に対応する。したがって、ピークにおける時間の値（Ｔｐｅａｋ）からＴ４を差し引かなければならない。オフセットはこのＴ４の値に対応する。オフセットは、当技術分野に存在する、異なるが典型的なハイブリッド回路のインパルス応答に関する統計的情報を用いて決定し、エコーキャンセラ２０にプログラムすることができる。そして、ブロック５４４で、新たな推定遅延（推定遅延１３０に対応する）を適用する。例えば、推定遅延１３０の適用は、適応フィルタユニット２８の一実施形態を示している図４のオプションの遅延ブロック６６をイネーブルすることに対応してもよい。したがって、純粋遅延推定を用いることにより、適応フィルタユニット２８によって要求されるフィルタタップの数が削減される。というのは、応答の純粋遅延部分に対する係数をゼロとみなすことができるからである。
【０１６８】
なお、代替実施形態では、「高速追跡」計算に進むために判断分岐５２９で必要とされる測定値の個数は２個より多くても少なくてもよいことに留意されたい。一実施形態では、必要とされる有効な測定値は１個だけでもよい。この場合、（ただ１つの測定値しか用いないので）ばらつきおよび平均は計算しない。また、したがって、ブロック５４２に進むかどうかを判定する前に実際の値を平均閾値１と比べてチェックすることができ、ばらつきの比較は不要となる。２個より多くの有効な測定値が必要とされる代替実施形態では、ばらつきは、有効な測定値に関してとった分散に対応してもよい。したがって、代替実施形態では、必要とする有効な測定値は任意個数でよい。
【０１６９】
判断分岐５２８で、通話を通るのは今回が初回ではなく（すなわち、一般的には、純粋遅延の推定が通話の途中で実行されることを示す）、前の遅延推定値がゼロではないと判定された場合、フローは判断分岐５３５に進み、Ｍ個の有効な測定値が利用可能であるかどうかを判定する。一実施形態では、Ｍは（エコーキャンセラ設置者によって選択された特定の設定に応じて）３、または４、または５であるように選択される。Ｍの値は、現在の推定遅延値を更新する（すなわち変化させる）ことが可能となる前に必要とされる有効な測定値の個数がより多くなるように選択しても、またはより少なくなるように選択してもよい。Ｍの値が高いほど、フローがブロック５３６に進む頻度が少なくなる。したがって、Ｍはいかなる値に選択してもよく、３〜５には限定されない。Ｍ個の有効な測定値が利用可能でない場合、フローは、推定遅延値が変化する可能性を迂回して図９のブロック２１３に進む。これに対して、Ｍ個の有効な測定値が利用可能である場合、フローはブロック５３６に進み、第２のバッファにＭ個の連続する有効な測定値を入れる。
【０１７０】
ブロック５３８で、ばらつき、平均、および平均と前の平均との差を計算する。上記のように、ばらつきはさまざまな方法で計算することができる。例えば、Ｍが単に２である場合、ばらつきは単に差とすることができる。別法として、ばらつきは、分散として計算することができる。前の平均は、ブロック５３８または５３２のいずれかを前に通った時に計算した平均に対応する。ブロック５３８の計算の後、フローは判断分岐５４０に進み、種々の閾値を用いて、推定遅延の変化が有意味であるかどうかを判定する。したがって、判断分岐５４０の閾値を用いて、通話中に推定純粋遅延を変化させるためのかなり保守的な基準を設定することができる。
【０１７１】
判断分岐５４０で、ばらつきをばらつき閾値２と比較し、平均を平均閾値２と比較し、平均と前の平均との差を差閾値と比較する。ばらつきがばらつき閾値２よりも小さいか、または平均が平均閾値２よりも大きいか、または差が差閾値よりも小さい場合、フローは図９のブロック２１３に進み、新たな推定遅延を計算しない（すなわち、現在の推定遅延を維持する）。これに対して、これらのすべての条件が満たされる（ばらつきがばらつき閾値２よりも小さく、平均が平均閾値２よりも大きく、かつ差が差閾値よりも大きい）場合、フローはブロック５４２に進み、（式２５に関して説明したように）新たな推定遅延を計算し、ブロック５４４で上記のようにそれを適用する。「高速追跡」と同様に、ばらつき閾値２は、Ｍ個の有効な測定値が互いにあまりにかけ離れないことを保証し、平均は、Ｍ個の有効な測定値がその平均を変化させる必要性を正当化するほど大きいことを保証する（例えば、平均が比較的小さい場合、適応フィルタ２８が適切に設定されていれば小さい純粋遅延は適応フィルタ２８で吸収（accommodate ）できるので、エコーキャンセラの純粋遅延を変化させる必要はないと考えられる）。差と差閾値との比較は、差があまりに小さい（すなわち差閾値よりも小さい）ため現在の推定遅延を変化させる意味がない場合に、現在の推定遅延が変化することを防ぐ。
【０１７２】
図２４は、エコーキャンセラ２０によるＭＩＰＳ（毎秒百万命令。デジタル信号プロセッサ使用量の一般的な尺度）を低減するために使用可能なオプションの監視モードの一実施形態を示している。図２４のフローは、図２１のフローをいつ実行すべきかを判定するために使用可能な図９の２１１の部分である。フローはブロック５１８から開始され、エコーリターンロスエンハンスメント（ＥＲＬＥ）を計算する。このＥＲＬＥは、適応フィルタ２８の収束性の「良さ」に対応する（すなわち、適応フィルタ２８によってどの程度のエコーが実際にはキャンセルされなかったかに関する情報を提供する）。次式を用いてＥＲＬＥを計算することができる：
【０１７３】
【数２３】
2005531200.tif 000026
【０１７４】
したがって、ＥＲＬＥは、ＰＳｉｎとＰｅｒｒｏｒの比に対応する。ここでｎはサンプル番号である。（なお、ＰＳｉｎとＰｅｒｒｏｒは、上記の式１および式２を用いて計算することができることに留意されたい。）したがって、このＥＲＬＥ値は、図２１の純粋遅延調節プロセスに入るために監視モード中に用いられる。フローは判断分岐５２０に進み、ＥＲＬＥをＥＲＬＥ閾値と比較する。ＥＲＬＥがＥＲＬＥ閾値以上である場合、適応フィルタ２８の収束性は十分であり、純粋遅延推定を実行する必要はないので、フローは図９のブロック２１３に進む。これに対して、ＥＲＬＥがＥＲＬＥ閾値よりも小さい場合、適応フィルタ２８の収束性は十分でないので、フローはブロック５２１に進み、ＥＲＬＥカウンタをインクリメントする。（なお、このＥＲＬＥカウンタは、各通話の開始時に初期化可能であることに留意されたい。）。次に、フローは判断分岐５２３に進み、ＥＲＬＥカウンタをＥＲＬＥカウンタ閾値と比較する。ＥＲＬＥカウンタがＥＲＬＥカウンタ閾値に達していない場合、フローはブロック５２２（図２１のフローに対応する）を迂回して図９のブロック２１３に進む。これに対して、ＥＲＬＥカウンタがＥＲＬＥカウンタ閾値に達している場合、フローはブロック５２２に進み、図２１のフロー全体（上記の通り）を実行する。そして、フローはブロック５２４に進み、ＥＲＬＥカウンタをリセットしてから、図９のブロック２１３に進む。
【０１７５】
ＥＲＬＥカウンタおよびＥＲＬＥカウンタ閾値は、ブロック５１８で計算されたＥＲＬ
Ｅが境界線上にある（ＥＲＬＥ閾値よりも上からＥＲＬＥ閾値よりも下への変化があまりに頻繁に起こる）場合、純粋遅延が再計算および更新されないことを保証する。すなわち、ＥＲＬＥは、図２１のフローに入ることができるためには、（ＥＲＬＥカウンタおよびＥＲＬＥカウンタ閾値によって制御される）或る期間、ＥＲＬＥ閾値を下回らなければならない。これは、純粋遅延推定値の急速で不要な変化を防ぐのに役立つ。
【０１７６】
図８および図２５〜図２７は、エコーキャンセラ２０内で使用可能なトーン検出の一実施形態に関連する。ここで、図８は、監視制御ユニット３０の一部をブロック図形式で示し、図２５〜図２７は、図９のブロック２０９の部分をフロー図の形式で示している。エコーキャンセラ２０への入力（例えばＲｉｎ４４またはＳｉｎ３８）の少なくとも１つがトーンである時、適応フィルタ６２の安定性が影響を受け、電気通信ネットワークにおける望ましくない歪みおよびサービス品質の劣化を引き起こす可能性がある。トーンとは、或る特定の期間にわたって一定のマグニチュード、周波数および位相を有するいくつかの正弦波成分からなる信号である。
【０１７７】
残留エコーの平均パワーを最小化しようとする（適応フィルタ６２で用いられるような）いかなる適応アルゴリズムも、Ｒｉｎ４４の自己相関行列に依存する動的挙動を有する。いくつかの特定のクラスの受信パス信号では、この行列が特異になることがあり、これにより、適応プロセスが一時的に妨害され、適応フィルタ６２のフィルタ係数が所望の値からずれることがある。例えば正弦波信号（単周波トーン）は、この条件を作り出すことがある。この場合、正弦波信号Ｒｉｎ（ｎ）＝Ａｃｏｓ（Ωｎ＋φ）の自己相関ｒ（ｋ）はｒ（ｋ）＝Ａ２ｃｏｓ（Ωｋ）／２で与えられ、これは、ほとんどの実際的な場合（すなわち、自己相関行列の次元が大きい場合）に、特異自己相関行列を生じる。それが起こると、適応アルゴリズムの結果の１つの可能性として、（適応フィルタ６２の）フィルタ係数のセットが正弦波型になるが、これは実際のハイブリッド回路インパルス応答（その例は図３７に与えられている）の不正確な推定値である。
【０１７８】
同様に、多周波トーンもまた、同様の問題を生じることがある。というのは、それらの自己相関
【０１７９】
【数２４】
2005531200.tif 000027
【０１８０】
はやはり、成分数Ｍが十分に大きくない場合、または行列の次元が大きい場合に、特異自己相関行列を生じる可能性があるからである。なお、行列の次元は、ハイブリッド回路のインパルス応答を推定するために用いられるフィルタ係数の個数に依存することに留意されたい。したがって、シグナリングトーンや制御トーンの存在を検出して適応フィルタ６２の適応プロセスを停止することにより、フィルタ係数の良好なセットの発散を防ぐことが望ましい。
【０１８１】
図２５〜図２７に関して以下で説明する一実施形態では、任意周波数の正弦波信号の存在を示すためのTeager-Kaiser フィルタの修正バージョンのような多項式フィルタと、所定の単周波トーンを識別するための平滑相関手法と、高い信頼性でトーンを検出するための判断ロジックとを用いる。なお、いかなる適当な多項式フィルタを用いてもよいことに留意されたい。図８に示されている多項式フィルタは単なる一例である。本明細書に記載の実施形態は、一般にエコーキャンセラ２０に関するものであるが、トーンの指示および検出を必要とするいかなる装置あるいは電気通信装置においても使用可能であり、エコー
キャンセラのみに限定されない。
【０１８２】
図８は、パワー推定器１３４の一実施形態を含む。これは、修正エネルギー演算子を通じて任意の単周波トーンを定数にマッピングする。すなわち、単周波トーンは次のように表すことができる。
【０１８３】
【数２５】
2005531200.tif 000028
【０１８４】
修正エネルギー演算子Ψｋは次のように表すことができる。
【０１８５】
【数２６】
2005531200.tif 000029
【０１８６】
上式において、ｘ２（ｎ−ｋ）−ｘ（ｎ）ｘ（ｎ−２ｋ）は図８の加算器１４４の出力に対応することに留意されたい（すなわち、ディレイ１３６の出力はｘ（ｎ−ｋ）であり、ディレイ１３８の出力はｘ（ｎ−２ｋ）であり、乗算器１４０の出力はｘ（ｎ）ｘ（ｎ−２ｋ）であり、乗算器１４２の出力はｘ２（ｎ−ｋ）であり、加算器１４４の出力は乗算器１４２の出力と乗算器１４０の出力をマイナスにしたものとの和である）。なお、入力信号ｘ（ｎ）は、Ｒｉｎ４４またはＳｉｎ３８のいずれかに対応し得ることに留意されたい。さらに、式２７のｘ（ｎ）をｘ２（ｎ−ｋ）−ｘ（ｎ）ｘ（ｎ−２ｋ）に代入することにより、結果Ａ２ｓｉｎ２（ｋΩ）が得られる。したがって、Ψは、トーンのマグニチュードＡおよび正規化周波数Ω（Ω＝２πｆ／ｆｓ。ここでｆはトーン周波数であり、ｆｓはサンプリング周波数であり、ｆｓは一実施形態では８ｋＨｚである）の両方に依存することに留意されたい。これらの式におけるパラメータｋは、基礎となるサブレート処理を定める。ここで、ｋは、１を含め、任意の整数値とすることができる。したがって、サンプリングレートｆｓでΨｋを適用することは、サンプリングレートｆｓ／ｋでΨ１を適用することと等価である。上記のように、サブレート処理を用いて、ｋ番目ごとのサンプルのみを処理するように、計算要件を低減することが可能である。また、Ψｋ（ｘ（ｎ））は初期位相φに依存しないが、急激な位相変化の時に短期的な過渡現象を生じることにも留意されたい。これを用いて、通信信号ｘ（ｎ）における位相変化を検出してもよい。
【０１８７】
ｘ（ｎ）（式２７）のパワーは、次式を用いて表すことができる。
【０１８８】
【数２７】
2005531200.tif 000030
【０１８９】
したがって、Ψｋ（ｘ（ｎ））は、次式のように、ｘ（ｎ）のパワーを２ｓｉｎ２（ｋΩ）倍にスケーリングしたものを与えることに留意されたい。
【０１９０】
【数２８】
2005531200.tif 000031
【０１９１】
そこで、Ｐｏｗｅｒｘ（ｎ）をΨｋ（ｘ（ｎ））に関して解くと次式が得られる。
【０１９２】
【数２９】
2005531200.tif 000032
【０１９３】
しかし、実際には、信号ｘ（ｎ）（これは、上記のように、図８に示した実施形態ではＲｉｎ４４またはＳｉｎ３８のいずれに対応していてもよい）は、ノイズにより破損し、その結果、ノイズのある推定値Ψｎｏｉｚｙｋ（ｘ（ｎ））となる可能性がある。その場合、結果を平滑化するために、例えば単極ローパスフィルタのようないかなるローパスフィルタを用いることも可能である。したがって、図８に見られるように、パワー推定器１３４はローパスフィルタを含み、このローパスフィルタは、（加算器１４４の出力の絶対値に対応する）マグニチュード１４６の出力を受信し、ストレージ１５０からａを受信し、Ψｎｏｉｚｙｋ（ｘ（ｎ））の滑らかな推定値Ｐ（ｎ）を提供する。Ｐ（ｎ）は、次式を用いて表すことができる。
【０１９４】
【数３０】
2005531200.tif 000033
【０１９５】
上式において、ａは平滑化ローパスフィルタの帯域幅を制御する平滑化パラメータ（０＜ａ＜１）である。なお、固定または可変のいずれの平滑化パラメータａを用いてもよいことに留意されたい。そして、Ｐ（ｎ）は、図８のトーン指示判断ユニット１６６に供給される。トーン指示判断ユニット１６６は、図２６に関して以下でさらに詳細に説明するように、推定値Ｐ（ｎ）の分散に基づいて、トーンが存在するかどうかを示す。図２６はパワーについて述べているが、相関（図２７参照）や、さらには通信信号自体のような、通信信号の他の関数を用いてもよい。
【０１９６】
トーンが存在する場合、一実施形態では、位相反転の有無にかかわらず、２１００Ｈｚシグナリングトーンのような所定の単周波トーンを検出する。所定のトーンを検出する一実施形態について、図２７に関して以下でさらに詳細に説明する。したがって、一実施形態は図２６のトーン検出のみを含んでもよいが、代替実施形態は、図２５に示すように、図２６および図２７のアルゴリズム間の相互作用を含む。さらに、図２６の実施形態は、トーンが受信された後に適応フィルタ６２の適応プロセスを再イネーブルするために監視モードにおいて用いてもよい。すなわち、Ｐ（ｎ）の分散を用いて、シグナリングトーンと音声信号の間の遷移を検出することも可能である（すなわち、遷移は、分散が或る所定の閾値よりも大きい時に検出される）。
【０１９７】
推定値Ｐ（ｎ）が与えられると、トーン指示判断ユニット１６６を用いて、図２６のフローに従ってトーンを検出することができる。図２６のフローは、Ｐ（ｎ）の分散が小さ
い時間間隔を検出する。ｘ（ｎ）上に単周波トーンが存在する時にはいつでも、一定レベルのＰ（ｎ）（これは、Ｐ（ｎ）の分散が小さいことに対応する）が期待される。トーンが複数の周波数から構成される場合、Ｐ（ｎ）の分散は増大するが、平均レベルは一定のままとなる。したがって、分散レベルに応じて、単周波トーンまたは多周波トーンのいずれかを示すことができる。そこで、図２６において、フローはブロック５８８から開始され、ｋ、ａ、ｍ、ｒ、Ｐｌｏｗ、およびＮｍｉｎを所望の値に設定する。システムにおいて期待されるトーン周波数範囲およびノイズレベルに応じて、これらの値は、例えば、ｋ＝２、ａ＝０．９、ｍ＝１、ｒ＝０．９５、Ｐｌｏｗ＝２−８とすることができる。Ｎｍｉｎは、検出すべきトーンのサンプリングレートおよび最小必要継続時間に依存する。フローは判断分岐５９０に進み、Ｐ（ｎ）がＰｌｏｗよりも大きいかどうかを判定する。ここで、Ｐｌｏｗは、考慮すべき最低信号レベルを示す閾値に対応する。Ｐ（ｎ）がＰｌｏｗよりも大きくない場合、フローはブロック５９８に進み、検出カウンタを（ゼロに）リセットしてから、ブロック６０４に進み（これは、トーンが検出されていないことを示す）、その後、図２５のブロック５５４に進む。これに対して、Ｐ（ｎ）が少なくともＰｌｏｗよりも大きい場合、フローは判断分岐５９０からブロック５９２に進み、ＰｍｉｎおよびＰｍａｘを計算する。Ｐｍｉｎはｍサンプルだけ離れたＰ（ｎ）の２つの推定値の最小値に対応し、Ｐｍａｘはｍサンプルだけ離れたＰ（ｎ）の２つの推定値の最大値に対応する。
【０１９８】
【数３１】
2005531200.tif 000034
【０１９９】
分散レベルは、ＰｍｉｎとＰｍａｘを比較することによって推定される。そこで、フローは判断分岐５９４に進み、Ｐｍａｘに対するＰｍｉｎの比（すなわちＰｍｉｎ／Ｐｍａｘ）をトーン指示閾値と比較する。Ｐｍｉｎ／Ｐｍａｘがトーン指示閾値ｒよりも大きくない場合、フローはブロック５９８に進み、検出カウンタをリセットしてから、ブロック６０４に進み（これは、トーンが検出されていないことを示す）、その後、図２５のブロック５５４に進む。これに対して、Ｐｍｉｎ／Ｐｍａｘがトーン指示閾値よりも大きい場合、Ｐ（ｎ）は十分一定である（すなわち、ＰｍｉｎとＰｍａｘが十分に近い）とみなされる。これは、トーンの存在の可能性を示す。この場合、フローはブロック５９６に進み、検出カウンタをインクリメントする（なお、検出カウンタは、通話の開始時に、または図２６のフローに入る前の任意の他の適当な時に、初期化またはリセットが可能であることに留意されたい）。
【０２００】
フローは判断分岐６００に進み、検出カウンタがＮｍｉｎよりも大きいかどうかを判定する。検出カウンタがＮｍｉｎに達していない場合、フローはブロック６０４に進み（これは、トーンが検出されなかったことを示す）、その後、図２５のブロック５５４に進む。これに対して、検出カウンタがＮｍｉｎよりも大きい場合、フローはブロック６０２に進み、トーンが検出される（これは、図８のトーンインジケータ信号１６８のアサートに対応する）。そして、フローは図２５のブロック５５４に進む。したがって、Ｐ（ｎ）が最小レベル（Ｐｌｏｗ）よりも大きく、Ｐ（ｎ）の分散が（トーン指示閾値に関係する）最小値よりも小さく、検出カウンタが最小値（Ｎｍｉｎ）よりも大きい場合に、トーンが検出される。検出カウンタは、トーンを検出してトーンインジケータ信号１６８をアサートする前に少なくとも所定時間（Ｎｍｉｎに対応する）の間、トーンが存在していることを保証する。これは、トーンの検出とトーンの非検出の間の急速な切替により、適応フィルタ６２の適応プロセスがあまりに頻繁にイネーブルまたはディセーブルされるようなこ
とを防ぐのに役立つ。
【０２０１】
図８は、平滑相関器１５２の一実施形態を含む。この相関器は、所定の単周波トーンの検出、振幅変調信号のキャリアの検出、公称周波数に近い周波数の多成分トーンの検出等さまざまに利用可能である。平滑相関器１５２は、入力信号ｘ（ｎ）（これは、上記のように、Ｒｉｎ４４またはＳｉｎ３８とすることができる）のサンプルおよびストレージ１５０からの３個の制御パラメータ（ｃ、ｂ、およびｅ）を受信し、２個の相関推定値Ｒ０（ｎ）およびＲ１（ｎ）を生成する。これらの相関は、以下で説明するように、所定のトーンの存在を示すために用いられる。制御パラメータｃは、正規化周波数Ωｄ＝２πｆｄ／ｆｓを有する所定の単周波トーンを生成する２次デジタル発振器ｗ（ｎ）の係数の１つを定める。ここで、前と同様、ｆｓは入力サンプリング周波数である。発振器は、状態ｗ（−１）＝１およびｗ（−２）＝ｃ＝ｃｏｓ（Ωｄ）で初期化され、ｗ（ｎ）＝２＊ｃ＊ｗ（ｎ−１）−ｗ（ｎ−２）で与えられる標準的な２次デジタル発振器を使用する。（なお、発振器は、ｃを受信しｗ（ｎ）を出力として乗算器１５６および１５８に供給する図８の発振器１６４に対応してもよいことに留意されたい。）入力信号ｘ（ｎ）および遅延バージョンｘ（ｎ−ｅ）（すなわち、図８のディレイ１５４の出力）とｗ（ｎ）との相関を（乗算器１５６および１５８によって）とってから、ローパスフィルタに通す（すなわち、図８のローパスフィルタ１６０は、ｘ（ｎ）ｗ（ｎ）と表現することができる乗算器１５８の出力を受信し、図８のローパスフィルタ１６２は、ｘ（ｎ−ｅ）ｗ（ｎ）と表現することができる乗算器１５６の出力を受信する）。ローパスフィルタ１６０および１６２に入力として供給されるパラメータｂ（ここで０＜ｂ＜１）は、ローパスフィルタの帯域幅を定める。また、平滑相関器１５２の一実施形態では、ローパスフィルタ１６０および１６２として平滑単極ローパスフィルタを用いてもよい。また、代替実施形態では、ｗ（ｎ）とｘ（ｎ）およびｘ（ｎ−ｅ）との相関をとるのではなく、発振器信号ｗ（ｎ）および遅延バージョンｗ（ｎ−ｅ）とｘ（ｎ）との相関をとってもよい。また、一実施形態では、ｅは次のように表される遅延ファクタである。
【０２０２】
【数３２】
2005531200.tif 000035
【０２０３】
上式は、９０°に近い位相差に対応する。ここで、
【０２０４】
【数３３】
2005531200.tif 000036
【０２０５】
は、その引数ｘ以上の最小の整数を示す。
図８に戻って、ローパスフィルタ１６０の出力は相関推定値Ｒ０（ｎ）であり、ローパスフィルタ１６２の出力は相関推定値Ｒ１（ｎ）であり、これらが両方ともトーン指示判断ユニット１６６に供給される。Ｒ０（ｎ）およびＲ１（ｎ）は、Ｒ０（ｎ）＝ｂ・Ｒ０（ｎ−１）＋（１−ｂ）・ｗ（ｎ）・ｘ（ｎ）、およびＲ１（ｎ）＝ｂ・Ｒ１（ｎ−１）＋（１−ｂ）・ｗ（ｎ）・ｘ（ｎ−ｅ）と表すことができる。したがって、未知トーンがトーン指示判断ユニットによって（上記の図２６のフローを用いて）示されている場合、Ｒ０（ｎ）およびＲ１（ｎ）は、（発振器１６４に対応する）所定の単周波トーンの存在
を識別するための図２７のフローを用いて解析される。
【０２０６】
図２７のフローは、特定のトーンを検出するために、検出されたトーンと所定の単周波トーンとの相関をとる。図２７において、フローはブロック６０６から開始され、ｃ、ｅ、ｂ、ｕ、ｑ、およびＭｍｉｎを所望の値に設定する。パラメータｃは、検出すべき目標トーンの周波数に直接関係し、この周波数は遅延値ｅも定める。システムにおけるノイズレベルに応じて、残りの値は、例えば、ｂ＝０．９、ｕ＝１、ｑ＝０．９５、Ｐｌｏｗ＝２−８とすることができる。Ｍｍｉｎは、検出すべき目標トーンのサンプリングレートおよび最小必要継続時間に依存する。次に、フローはブロック６０８に進み、以下の式に示すように、Ｒ（ｎ）、Ｒｍｉｎ、およびＲｍａｘを評価する。
【０２０７】
【数３４】
2005531200.tif 000037
【０２０８】
Ｒ（ｎ）は、Ｒ０（ｎ）とＲ１（ｎ）の間のピークマグニチュード相関である。Ｒｍｉｎは、ｕサンプルだけ離れたＲ（ｎ）の２つの推定値の最小値に対応し、Ｒｍａｘはｕサンプルだけ離れたＲ（ｎ）の２つの推定値の最大値に対応する。次に、フローは判断分岐６１０に進み、Ｒｍａｘに対するＲｍｉｎの比（すなわちＲｍｉｎ／Ｒｍａｘ）を相関閾値ｑ（これは、一実施形態では、０．９５に設定される）と比較する。この比が相関閾値よりも大きくない場合、フローはブロック６１６に進み、相関カウンタを（ゼロに）リセットしてから、ブロック６１８に進み（これは、所定の周波数が検出されたなかったこと（Ｄｒ＝０）を示す）、その後、図２５のブロック５６０に進む。これに対して、比が閾値よりも大きい場合、フローはブロック６１２に進み、相関カウンタをインクリメントする。（なお、相関カウンタもまた、通話の開始時に初期化またはリセットが可能であることに留意されたい。）フローは判断分岐６１４に進み、相関カウンタをＭｍｉｎと比べてチェックする。相関カウンタがＭｍｉｎよりも大きくない場合、フローはブロック６１８に進む。これは、所定の周波数が検出されたなかったこと（Ｄｒ＝０）を示す。
【０２０９】
これに対して、判断分岐６１４で、相関カウンタがＭｍｉｎよりも大きい場合、フローは判断分岐６２０に進み、Ｒ（ｎ）がＲ０（ｎ）の絶対値に等しいかどうかを判定する。等しい場合、フローはブロック６２２に進み、所定の周波数がＲ０（ｎ）の符号で検出される（すなわち、Ｄｒ＝ｓｉｇｎ（Ｒ０（ｎ）））。Ｒ（ｎ）がＲ０（ｎ）の絶対値に等しくない場合、フローはブロック６２４に進み、所定の周波数がＲ１（ｎ）の符号で検出される（すなわち、Ｄｒ＝ｓｉｇｎ（Ｒ１（ｎ）））。ブロック６２２または６２４から、フローは図２５のブロック５６０に進む。したがって、任意のトーンを検出するための図２６に記載のフローと同様に、相関カウンタおよびＭｍｉｎによって定められる所定の時間にわたりＲ（ｎ）の分散が小さい場合に、所定のトーンが検出される。これは、検出カウンタおよびＮｍｉｎに関して上記で説明したように、急速な切替を防ぐのに役立つ。図２７の方法は、次式で与えられる有効平滑相関を用いることと等価である：
【０２１０】
【数３５】
2005531200.tif 000038
【０２１１】
上式は、最大マグニチュードの成分に応じて、Ｒ０（ｎ）またはＲ１（ｎ）のいずれかを生成する。
図２６および図２７のフローを含む全体的プロセスフローの一実施形態を図２５に示す。ここで、図２５は、一実施形態による図９のブロック２０９の部分を示している。図２５において、フローはブロック５５０から開始され、Ｄｐｏｓｉｔｉｖｅ（Ｄｐ）およびＤｎｅｇａｔｉｖｅ（Ｄｎ）に対して最小カウンタ値（Ｌｍｉｎ−ｐおよびＬｍｉｎ−ｎ）をそれぞれ選択する。これらの値は、正および負の位相の望ましい最小継続時間が満たされるように選択される。Ｄｐは正の位相に対するカウンタに対応し、Ｄｎは負の位相に対するカウンタに対応する。
【０２１２】
次に、フローはブロック５５２に進み、任意の単周波トーンを探索（検出）する。図２６のフローは、任意の単周波トーンの存在を判定するために使用可能である。フローは判断分岐５５４に進み、トーンが検出されない場合、フローはブロック５５８に進み、ＤｐカウンタおよびＤｎカウンタを（ゼロに）リセットし、フローはブロック５８２に進み（これは、トーンが検出されていないことを示す）、その後、図９のブロック２１１に進む。これに対して、トーンが検出されている場合、フローはブロック５５６に進み、検出されたトーンと所定の単周波トーンとの相関をとる。そこで、図２７のフローを用いてブロック５５６を実行することができる。フローは判断分岐５６０に進み、Ｄｒがゼロであるかどうかを判定する。ゼロである場合、所定の周波数がブロック５５６（例えば、図２７のブロック６１８）で判定されておらず、フローはブロック５５８に進み、カウンタＤｐおよびＤｎをリセットする。これに対して、Ｄｒがゼロでない場合、フローは判断分岐５６２に進み、Ｄｒがゼロよりも大きいかどうかを判定する。Ｄｒがゼロよりも大きい場合、フローはブロック５６４に進み、正位相カウンタをインクリメントする。さもなければ、フローはブロック５６６に進み、負位相カウンタをインクリメントする。
【０２１３】
ブロック５６４または５６６の後、フローは、ポイントＧ経由でブロック５６８に進み、Ｆｌａｇｐｏｓｉｔｉｖｅ（Ｆｐ）およびＦｌａｇｎｅｇａｔｉｖｅ（Ｆｎ）を（ゼロに）リセットする。フローは判断分岐５７０に進み、ＤｐがＬｍｉｎ−ｐよりも大きい場合、ブロック５７２でＦｐを１に設定し、さもなければフローはブロック５７２を迂回して判断分岐５７４に進む。判断分岐５７４で、ＤｎがＬｍｉｎ−ｎよりも大きいかどうかを判定し、大きい場合、ブロック５７６でＦｎを１に設定する。ＤｎがＬｍｉｎ−ｎよりも大きくない場合、フローはブロック５７６を迂回して判断分岐５７８に進む。判断分岐５７８で、ＦｐおよびＦｎがゼロである場合（すなわち、Ｆｐ＋Ｆｎがゼロである場合）、フローはブロック５８２に進む。これは、トーンが検出されたなかったことを示す。すなわち、いずれのカウンタ（ＤｎまたはＤｐ）も或る最小値（例えばそれぞれＬｍｉｎ−ｐまたはＬｍｉｎ−ｎ）より大きくない場合、所望のトーンは検出されない。
【０２１４】
これに対して、Ｆｐ＋Ｆｎがゼロでない場合、フローは判断分岐５８０に進む。これは、トーンが検出されていることを示す。一方のカウンタ（ＤｐまたはＤｎ）のみがＬｍｉｎよりも大きい場合、Ｆｐ＋Ｆｎは１よりも大きくなく、フローはブロック５８４に進む。これは、所望のトーンが相関符号反転なしで検出されていることを示す。ＤｐおよびＤｎが両方ともそれぞれのＬｍｉｎよりも大きい場合、フローはブロック５８６に進む。これは、所望のトーンが相関符号反転ありで検出されていることを示す。Ｒ（ｎ）の平均レ
ベルが相関符号反転中に同一である場合、位相反転を示している。したがって、図２５のフローは図２６および図２７のフローを組み合わせて位相反転を検出する。代替実施形態では、Ｐ（ｎ）の急激な変化を検出することによって、所与の単周波トーンにおける位相変化（必ずしも１８０°ではない）を識別する。
【０２１５】
なお、ここまでの説明では、適応フィルタユニット２８内のオプションの非適応フィルタ６４が存在しない（図４参照）と仮定しているので、適応フィルタ２８の係数あるいはタップへの言及は、適応フィルタユニット２８内の適応フィルタ６２の係数あるいはタップへの言及と同等であったことに留意されたい。したがって、前の説明では、適応フィルタユニット２８とは別個に適応フィルタ６２に言及する必要はなかった。しかし、図２８〜図３６についての以下の説明では、非適応フィルタ６４が存在してもよく、非適応フィルタ６４を適応フィルタユニット２８の一部とみなしてもよい。したがって、上記の説明の全体を通じて用いられた適応フィルタ６２の係数は、今度は、適応フィルタ６２の係数またはタップをより限定的に指すことになる。というのは、適応フィルタユニット２８は、適応フィルタ６２および非適応フィルタ６４のような種々の異なるフィルタの組合せを含んでもよいからである。
【０２１６】
上記のように、適応フィルタ６２は、ハイブリッド１６によって導入されるエコーを追跡するため、一般に多数のタップを必要とする。例えば、図３７のインパルス応答全体を追跡するためには、適応フィルタユニット２８の適応フィルタ６２は、（サンプリングレートを８ｋＨｚと仮定すると）３２ミリ秒にわたってインパルス応答全体をカバーする２５６個のタップを必要とする。適応フィルタ６２のタップ数が増大すると、計算の複雑さが増大し、通常は収束速度が低下する。適応フィルタ６２が純粋遅延後のインパルス応答をカバーする疎ウィンドウを使用することを可能にするために、図２０〜図２４に関して上記で説明した方法は、純粋遅延の検出を可能にしている。図２８〜図３６に関して以下で説明する方法は、エコーパススパンを短縮するためのメカニズムに関する。すなわち、微調整された純粋遅延を検出することに加えて、インパルス応答のエコーパススパンを短縮するために、ばらつき時間も検出し、圧縮する。以下で説明するように、一実施形態では、残留エコーを最小化するために必要な有効タップ数を短縮する目的で、固定型または適応型のフィルタを追加する。
【０２１７】
図３７に示されているように、インパルス応答にとって本質的であるのは零点および極である。零点は、対応する周波数における応答を妨げるのに対して、極は、対応する周波数における応答を高める。したがって、極を補償するために１つまたは複数のフィルタを追加することにより、インパルス応答を圧縮して、必要なタップ数を少なくすることができる。例えば、或るＩＩＲフィルタが、比Ｂ（ｚ）／Ａ（ｚ）で表される伝達関数Ｈ（ｚ）を有すると仮定すると、
【０２１８】
【数３６】
2005531200.tif 000039
【０２１９】
となるようにして、Ｈ（ｚ）の極を補償するようにフィルタＡ′（ｚ）を設計することができる。一実施形態では、図２に示したように、オプションの非適応フィルタ３１および３５を用いることにより、非適応フィルタ３１の出力（すなわちＳｉｎ３９）がエコーと非適応フィルタ３１との畳込みと等価になるようにしている。しかし、ＤＣノッチフィルタ４５の後に非適応フィルタ３１が存在すると、Ｓｉｎ３７に歪みが導入され、それを補償することが必要となる。そこで、誤差信号４６を受信し、フィルタリングされた誤差信
号４７を生成するように、非適応フィルタ３５を導入することができる。非適応フィルタ３１が伝達関数Ａ′（ｚ）を有するＦＩＲフィルタであると仮定すると、非適応フィルタ３５は、伝達関数１／Ａ′（ｚ）を有する逆ＩＩＲフィルタとなる。しかし、ＦＩＲフィルタ３１のＡ′（ｚ）の零点は逆ＩＩＲフィルタ３５の１／Ａ′（ｚ）の極となるため、Ａ′（ｚ）に対して制限が必要である。Ａ′（ｚ）の零点に対するこのような制限は、以下でさらに説明するが、非適応ＩＩＲフィルタ３５の極が誤差信号４７を急激に増大させることを防ぐ。
【０２２０】
代替実施形態では、非適応フィルタの異なる構成を用いてもよい。例えば、非適応フィルタ３５は、加算器３４の出力に配置するのではなく、加算器３４の前で、非適応フィルタ３１および適応フィルタ６２の両方の出力に配置することも可能である（この場合でも正味の効果は同じである）。この実施形態では、非適応フィルタ３１の直後に非適応フィルタ３５を置くことで、互いに効果的にキャンセルし合うため、Ｓｉｎ３８とＳｉｎ３９の間にフィルタが不要となる（すなわち、Ｓｉｎ３９とＳｉｎ３８は等価となる）。その場合、適応フィルタ２８は、（非適応フィルタ３５と同様の）オプションの非適応フィルタ６４を含むように設計することができる。したがって、この実施形態では、必要な追加フィルタは１つだけでよい。しかし、非適応フィルタ６４としてＩＩＲフィルタを用いる場合、安定性に対する制限が依然として要求される。すなわち、以下でさらに詳細に説明するように、フィルタ６４の係数によって定義される多項式のすべての根が１よりも小さく（すなわち単位円内に）なければならない。なお、本明細書全体を通じて、伝達関数Ｈ（ｚ）＝Ｗに対して、Ｗの根はＨ（ｚ）の零点に対応する一方、Ｈ（ｚ）＝１／Ｗに対して、Ｗの根はＨ（ｚ）の極に対応することに留意されたい。オプションのフィルタ３１、３５および６４は、それらの係数が、メインの適応フィルタ６２の係数のように周期的に適応されないという意味で、非適応である。一般に、オプションのフィルタ３１、３５および６４は、適応レートがイベント駆動で定まる適応フィルタとみなすことができる。
【０２２１】
図２８は、本発明の一実施形態による図９のブロック２１３の部分を示している。フローは判断分岐６２６から開始され、適応フィルタ短縮推定オプションがイネーブルされているかどうかを判定する。イネーブルされていない場合、フローは図２８のフローを迂回して図９のブロック２１２に進む。これに対して、イネーブルされている場合、フローは判断分岐６２８に進む。適応フィルタ短縮推定オプションは、さまざまな異なる方法でイネーブルされることが可能である。例えば、システムリセットに応答してイネーブルされる場合のように、自発的にイネーブルされることが可能である。別法として、図４の遅延ユニット６６（もし存在する場合）内で異なる遅延が検出された時はいつも、または新たなハイブリッドが検出された時はいつもイネーブルされてもよい。非適応フィルタ６４または非適応フィルタ３１および３５のために選択される係数は、具体的なハイブリッド１６に依る。というのは、それぞれの異なるハイブリッドは、異なる純粋遅延または異なるばらつき時間を有する異なるインパルス応答を有し得るからである。
【０２２２】
一実施形態では、図２０〜図２４に関して上記で説明した純粋遅延推定は、通話の開始時に、または（例えば、コールトランスファやコールフォワードの際のような）ハイブリッドに影響を及ぼす変化の際に、サブレート処理を用いて推定される純粋遅延を迅速に検出する。図２８に関して説明する方法は、非適応フィルタ６４または非適応フィルタ３１および３５のフィルタ係数を得るために、純粋遅延およびばらつきの両方を求める。図２８における純粋遅延の計算は一般に、より精密である。しかし、一般に、求めるにはより長い時間がかかる。したがって、図２８の方法は、適応フィルタ６２によって要求される係数の実効的な個数を削減することに加えて、図２０〜図２４によって提供される純粋遅延推定値を「微調整」することができる。図２８の方法は、追加されるフィルタ（６４またはフィルタ３１および３５）を補償するために遅延ユニット６６に追加する必要のある追加純粋遅延を求める。すなわち、以下で説明するように、ばらつき時間を短縮するため
のフィルタの追加は、純粋遅延量をわずかに増大させる傾向もあるので、（もともと図２０〜図２４の方法により求められた）遅延ユニット６６の遅延をそれに従って更新することができる。図２４の監視モードを用いる場合、ＥＲＬＥがＥＲＬＥ閾値を下回るたびに、遅延ユニット６６に対する新たな純粋遅延を求める。さらに、図２８の適応フィルタ短縮推定オプションは、ＥＲＬＥがＥＲＬＥ閾値を下回ったことに応答して（すなわち、新たな純粋遅延が図２１のフローによって遅延ユニット６６に対して求められたことに応答して）イネーブルされることが可能である。
【０２２３】
代替実施形態では、適応フィルタ短縮推定オプションなしで図２０〜図２４のフローを用いてもよい。あるいは、同様に、図２０〜図２４の純粋遅延推定方法のないエコーキャンセラに、適応フィルタ短縮推定オプションが存在してもよい。別法として、図２０〜図２４の方法を有するエコーキャンセラにおいて、適応フィルタ短縮推定オプションが図２０〜図２４の方法とは独立にイネーブルされることも可能である。また、このオプションがイネーブルされない場合、（または、このオプションが、追加の非適応フィルタ６４や追加の非適応フィルタ３１および３５の係数だけでなく適応フィルタ６２の新たな係数を求めるために依然として機能している場合）、追加のフィルタ（複数可）は単に迂回されてもよい（あるいは、信号をフィルタリングせずに通過させてもよい）。
【０２２４】
判断分岐６２６でオプションがイネーブルされている場合、フローは判断分岐６２８に進み、ＥＲＬＥが十分に良好であるかどうかを判定する。（ＥＲＬＥは、上記で式２６に示したように計算することができる。ここで、ＥＲＬＥはＰＳｉｎとＰｅｒｒｏｒの比に対応し、ＰＳｉｎおよびＰｅｒｒｏｒは上記の式１および式１を用いて計算することができる。）ＥＲＬＥが十分に良好であるかどうかを判定するため、ＥＲＬＥを閾値と比較することができる。例えば、閾値は、２０ｄＢよりも大きい値に設定することができる。別法として、閾値は、３０〜４０ｄＢの範囲内に設定することができる。一般に、ＥＲＬＥが高いほど（誤差Ｐｅｒｒｏｒが低くなるので）信号は良好である。十分に高いＥＲＬＥは、Ｓｇｅｎ（近端トーカ信号）が存在しない時に生じる。というのは、Ｓｇｅｎが存在すればＥＲＬＥが低下するからである。別法として、引き続きＥＲＬＥを求めてそれを閾値と比較する前に、上記の近端信号検出器２６から、近端トーカ信号が存在するかどうかを判定することも可能である。近端トーカ信号が存在する場合、またはＥＲＬＥが十分に良好でない場合、フローは図２８の残りの部分を迂回して図９のブロック２１２に進む。これに対して、ＥＲＬＥが十分に良好である（閾値よりも高い）場合、フローはブロック６３０に進む。すなわち、良好な信号が存在し、誤差信号４６が良好なエコー推定値４８から得られる時には、適応フィルタ短縮推定オプションを実行すべきである。なお、代替実施形態では、このオプションを実行するための良好な信号が存在するかどうかを判定するために、システム内の多くの信号を用いてもよいことに留意されたい。
【０２２５】
ブロック６３０で、適応フィルタ６２の現在の係数に基づく純粋遅延およびばらつきを求める。（なお、ブロック６３０の詳細は図２９に関して後述することに留意されたい。）ブロック６３０の後、フローはブロック６３２に進み、ブロック６３０で求められた純粋遅延およびばらつきに基づいて、追加の非適応フィルタ６４またはフィルタ３１および４５の係数Ｗと、適応フィルタ６２の新たに短縮されたバージョンに対応する適応フィルタ６２の新たな係数を求める。（なお、ブロック６３２の詳細は図３０に関して後述することに留意されたい。）次に、フローは判断分岐６３４に進み、新たな構成が十分に良好であるかどうかを判定する。すなわち、新たな構成が満足できるものであるかどうかを判定するためにさまざまな基準を用いることができる。例えば、一実施形態では、新たな構成の削減された係数の個数が、所望の削減された係数の個数よりも依然として大きい場合、係数の個数をさらに削減するために、ブロック６３２のプロセスを繰り返すことができる。別法として、判断分岐６３４が存在しなくてもよい。その場合、ブロック６３２を１回だけ実行し、その結果を十分とみなす。
【０２２６】
判断分岐６３４で新たな構成が十分に良好である場合、フローはブロック６３６に進み、適応フィルタ６２を再構成する。すなわち、ブロック６３２で求められた適応フィルタ６２のための新たな係数を適応フィルタ６２にロードし、非適応フィルタ６４とともに、または非適応フィルタ３１および３５とともに、適応フィルタ６２を用いる。（なお、ブロック６３６の詳細は図３１に関して後述することに留意されたい。）また、ブロック６３６において、非適応フィルタの追加から生じる必要な遅延をディレイ６６の既存の遅延値に追加することによって、遅延ユニット６６の遅延値を更新することができることにも留意されたい。そして、フローはブロック６３８に進み、フィルタ短縮推定オプションをディセーブルする。すなわち、図２８のフローは一般に、サンプルごとには実行されない。このフローは、適応フィルタ短縮推定オプションをイネーブルするために、例に関して上記で説明した状況のような必要な時にのみ実行される。しかし、代替実施形態では、図２８のフローはサンプルごとに実行してもよい。
【０２２７】
なお、図２８に示されている実施形態では、ＥＲＬＥが十分に良好であると判定した後、ブロック６３０〜６３８は順次実行されることに留意されたい。しかし、代替実施形態では、ブロック６３０〜６３８（またはブロック６３０〜６３８のサブセット）は、エコーキャンセラ２０の他のタスクと並列に実行される別個のスレッドとして起動されることも可能である。図２８のフローの完了後、図２８の方法は、エコーキャンセラ２０に対して、適応フィルタ６２を更新することができるような結果の準備が完了していることを通知することができる。別法として、エコーキャンセラ２０には、フィルタ短縮全体が完了したことが通知されることも可能である。例えば、ブロック６３０〜６３８（またはブロック６３０〜６３８のサブセット）の完了を示す信号または割込みをエコーキャンセラ２０に供給してもよい。
【０２２８】
図２９は、図２８のブロック６３０の部分を示している。すなわち、図２９のフローは、適応フィルタ６２の現在の係数から純粋遅延およびばらつきを求める一実施形態を示している。フローはブロック６４０から開始され、適応フィルタ６２の係数のマグニチュードを巡回バッファに移動する。すなわち、適応フィルタ６２のフィルタ係数のスナップショットをとり、位置０〜Ｎ−１を有するサイズＮの巡回バッファに記憶する。適応フィルタ６２の現在の係数Ｈは、Ｈ＝［ｈ０，... ，ｈＮ−１］と表すことができる。ここで、ｈ０，... ，ｈＮ−１は係数に対応し、Ｎは、適応フィルタ６２の係数あるいはタップの個数に対応する。したがって、｜ｈｎ｜に対応する値を巡回バッファ内の位置「ｎ  ＭＯＤ  Ｎ」に記憶する。ここで、ｎはサンプル番号に対応し、「｜ｘ｜」は「ｘのマグニチュード（大きさ）」を示す（そして正の値に対応する）。「ｎ  ＭＯＤ  Ｎ」という表現はｎのモジュラスに対応し、演算ｎ／Ｎの剰余を指す。例えば、Ｎが２５６であり、ｎの値が２７０である場合、ｎ  ＭＯＤ  Ｎは１４であり、｜ｈ２７０｜の値は「位置２７０」（これは、サイズＮの巡回バッファの範囲を超える）から巡回バッファの位置１４に折り返される。したがって、ｎの値がＮよりも大きい場合、ｎが０〜Ｎ−１の範囲内に入るまで、Ｎの値をｎから連続的に差し引くことができる。同様に、ｎの値が０よりも小さい場合、ｎが０〜Ｎ−１の範囲内に入るまで、Ｎの値をｎに連続的に加えることができる。
【０２２９】
次に、フローはブロック６４２に進み、係数ｈごとに、サイズＬＷのスライディングウィンドウ内のマグニチュード値の和としてエネルギーＥ（ｎ）（ｎ＝０〜Ｎ−１）を計算する。一実施形態では、ＬＷは目標ウィンドウサイズの長さ、すなわち、適応フィルタ６２の係数の実効的な個数を削減した後のタップあるいは係数の目標個数に関連する。例えば、一実施形態では、ＬＷはサイズ１０サンプルのスライディングウィンドウに対応してもよい。ここで、１０個のタップが、所望のフィルタ長である。したがって、Ｎが２５６である場合（適応フィルタ６２の係数ｈが２５６個であることを示す）、２５６個のＥ（ｎ）の値を求める。ここで、２５６個のＥ（ｎ）の値のそれぞれは、１０個のマグニチュ
ード（ＬＷ内の１０個のサンプルに対応する）の和である。したがって、Ｅ（ｎ）は、次の式４０に示すように表すことができる。
【０２３０】
【数３７】
2005531200.tif 000040
【０２３１】
上式（および本明細書に記載の他の式）において、記法［Ｘ］Ｎは、Ｘ  ＭＯＤ  Ｎに対応することに留意されたい。次に、フローはブロック６４２からブロック６４４に進み、遅延Ｄを、エネルギーピークからＬＷを引いた位置として設定する。すなわち、Ｎ個のＥの値（スライディングウィンドウＬＷ内のエネルギー）を求めた後、Ｅが最大になる点（サンプル時刻）からＬＷを引いたものが、インパルス応答の純粋遅延に対応する。したがって、Ｄは式４１に示すように表すことができる。
【０２３２】
【数３８】
2005531200.tif 000041
【０２３３】
上式において、ｍａｘ  Ｅ（ｎ）は、Ｎ個とったＥの値のうちのＥの最大値であり、ａｒｇ（ｍａｘ  Ｅ（ｎ））は、Ｅが最大となる引数すなわち点である。ここで、「引数」はサンプル時刻に対応する。したがって、Ｄは純粋遅延に対応する。
【０２３４】
次に、フローはブロック６４６に進む。ここで、ばらつき時間は、Ｄと、エネルギーＥが所定閾値よりも小さくなる次の位置との間のサンプル数に対応する。すなわち、ｎ＝０，１，... ，Ｎ−１の範囲にわたるＥ（ｎ）（インパルス応答のマグニチュード（大きさ）に対応する）の一般的傾向は、最大ピークへと略増大してからまた減少するように記述することができる。したがって、Ｅ（ｎ）は最大値に達した後に減少し、所定閾値を超えて減少する点がばらつき時間の終端に対応する。したがって、ばらつき時間は、Ｄと、Ｅ（ｎ）がそのピーク値に到達した後に所定閾値に達する点（サンプル時刻）との間のサンプル数となる。所定値は、ばらつき時間の終端を示すことができる任意の値に設定することができる。例えば、一実施形態では、１９２サンプル（すなわち、８ｋＨｚのサンプリングレートで２４ミリ秒）に設定することができる。
【０２３５】
図３０は、図２８のブロック６３２の部分の一実施形態を示している。ここで、（１）（非適応フィルタ６４または非適応フィルタ３１および３５のいずれかに対する）非適応フィルタ係数Ｗと、（２）適応フィルタ６２の係数の短縮バージョンと、の両方を求める。フローはブロック６４８から開始され、（非適応フィルタ６４または非適応フィルタ３１および３５のいずれかに対する）新たなフィルタ係数Ｗを求める（なお、ブロック６４８の詳細は図３２〜図３６に関して後述することに留意されたい）。次に、フローはブロック６５０に進み、係数Ｗと現在の適応フィルタ６２の係数との（すなわち、図２９のブロック６４０でとったスナップショットとの）畳込みをとることにより、短縮されたフィルタ係数Ｂを求める。ここで、Ｂは、非適応フィルタ６４または３１および３５の追加後の適応フィルタ６２の新たな係数を含む。フローはブロック６５２に進み、短縮されたフィルタ係数Ｂの新たな純粋遅延Ｄおよびばらつき時間を求める。したがって、図２９のフ
ローならびに式４０および式４１を用いてブロック６５２を遂行することができる。そして、フローはブロック６５４に進み、Ｂ（すなわち所定の長さのＢの部分）から適応フィルタ６２に対する新たな適応フィルタ係数を求め、適応すべきフィルタ係数の最大数（すなわち、選択されたＢの部分のサンプル数）を選択する。
【０２３６】
図３１は、適応フィルタ６２が再構成される図２８のブロック６３６の部分の一実施形態を示している。フローはブロック６５６から開始され、現在の適応フィルタ係数Ｈを、図３０のブロック６５４で前に求められた短縮された係数で置き換える。フローはブロック６５８に進み、（図３０のブロック６４８で求められた）新たな係数Ｗを非適応フィルタ（フィルタ６４またはフィルタ３１および３５）にロードする。したがって、非適応フィルタ（複数可）にＷをロードすることによってＷはイネーブルされ、それにより適応フィルタ６２は削減されたフィルタ長を有することが可能となる。そして、フローはブロック６６０に進み、適応フィルタ２８内の遅延ユニット６６を新たな遅延で更新する。例えば、一実施形態では、単に、新たに求められた純粋遅延Ｄで遅延ユニット６６を更新してもよい。代替実施形態では、遅延ユニット６６に現在記憶されている遅延を判定し、必要に応じて既存の値を更新してもよい。別法として、新たな遅延が、遅延ユニット６６内の既存の遅延からあまり変わっていない場合、遅延ユニット６６を全く更新しなくてもよい。また、ブロック６６０において、ブロック６５６における新たな係数を適応フィルタ６２にロードした後は、新たな係数の個数に適応するように適応フィルタ６２を構成しなければならない。
【０２３７】
図３２は、（フィルタ６４またはフィルタ３１および３５に対応する）新たなフィルタ係数Ｗを求める図３０のブロック６４８の一実施形態を示している。フローは判断分岐６６２から開始され、事前に計算されたフィルタ係数Ｗが存在するかどうかを判定する。例えば、異なるハイブリッドおよびチャネルの条件に対応するさまざまな異なる可能なＷのセットを含むライブラリを事前に計算したものが存在してもよい。その場合、新たなＷは、単にライブラリから選択すればよく、フローは、適応フィルタ係数とライブラリからのすべての既存のＷとの畳込みをとり、最良のパフォーマンスを提供するものを選び出すことによって、図３０のブロック６５０に進む。別法として、さまざまなシナリオを最もよく表す事前に計算された単一のＷを用いてもよい。その場合、Ｗは、多様な異なる方法（その１つは図３６に関して後述する）でオフラインで計算することができ、そうして事前に計算されたＷを用いることができる。フィルタ係数Ｗを事前に計算しない場合、フローはブロック６６４に進み、新たなフィルタ候補を決定するための任意の方法を用いてＷを求めることができる。Ｗを決定するための種々の実施形態については、図３３〜図３５に関してさらに詳細に説明する。
【０２３８】
次に、フローはブロック６６６に進み、Ｗの根を求める。例えば、ＷはＷ＝［ｗ０，ｗ１，... ，ｗＭ−１］と表すことができる。ここで、ｗ０，ｗ１，... ，ｗＭ−１はフィルタ係数に対応し、Ｍはフィルタ係数の個数に対応する。すると、Ｗ（ｚ）は、次の式４２に示すように表すことができる：
【０２３９】
【数３９】
2005531200.tif 000042
【０２４０】
Ｗの根を求めるため、Ｗ（ｚ）を０と置き、ｚについて解くと、ｚはＭ−１個の解を有する。したがって、Ｗ（ｚ）の根Ｒは、Ｒ＝［ｒ０，ｒ１，... ，ｒＭ−１］と表すこと
ができる。ここで、根は複素数およびその共役を含む。したがって、Ｗ（ｚ）＝０は、次の式４３に示すように表すこともできる：
【０２４１】
【数４０】
2005531200.tif 000043
【０２４２】
次に、フローはブロック６６８に進み、根に対する追加的制約を課す。それにより、ＷがＦＩＲ処理モードまたはＩＩＲ処理モードのいずれで用いられても、安定なままにとどまることができる。例えば、ＷがＦＩＲ実施態様で用いられる場合には、安定性を保証するために制約を課すことは不要であるが、ＷがＩＩＲ実施態様で用いられる場合には、根が単位円内になければならない。単位円とは、実数に対応するｘ軸および虚数に対応するｙ軸によって定義される平面内の円であって、原点（ｘ軸とｙ軸の交点であり、ｘ軸およびｙ軸の両方の０に対応する）の周りに描かれた半径１の円である。単位円内にないＷ（ｚ）のそれぞれの根ｒｋに対して、ｒｋが単位円内に入るようにｒｋを置き換える。別法として、根が単位円内にあるべきことを課すのではなく、ρが１よりも小さいとして、Ｗ（ｚ）の根が原点を中心とする半径ρの円内にあるように制約を課すことも可能である。したがって、この実施形態では、半径ρの円内にないＷ（ｚ）のそれぞれの根ｒｋに対して、根ｒｋが半径ρの円内に入るように根ｒｋを置き換える。したがって、｜ｒｋ｜（すなわちｒｋの大きさ）がρよりも大きい場合、この置き換えは式４４に示すように表すことができる：
【０２４３】
【数４１】
2005531200.tif 000044
【０２４４】
なお、上式において、ｒｋ＊はｒｋの複素共役を表すことに留意されたい。そして、フローはブロック６７０に進み、修正された根から新たなフィルタ係数Ｗｎｅｗを構築する。すなわち、ブロック６６８で課された制約によりいずれかの根を修正しなければならない場合、修正された根を用いてＷｎｅｗを求めることができる。新たな根を上記の式４３のｒ０，... ，ｒＭ−１に代入することにより、新たなＷ（ｚ）（すなわちＷｎｅｗ）を求めることができる。そして、フローの残りの部分（これは図３０のブロック６５０に続く）では、Ｗｎｅｗをフィルタ係数Ｗとして用いる。したがって、図３２は、Ｗの根を条件づける、または計画する（project ）ために用いることができる。
【０２４５】
図３６は、インパルス応答推定値のトレーニングセットが与えられた場合に、フィルタ係数Ｗをオフラインで設計するために用いられる方法の一実施形態を示している。フローはブロック７０４から開始され、すべての設計方法について、トレーニングセット内のあらゆるチャネルインパルス応答に対する解Ｗを求める。したがって、トレーニングセット内の８個のチャネルインパルス応答に対して２つの設計方法が用いられる場合、合計１６個の解（Ｗ０〜Ｗ１５）が求められる。さらに、図３６の方法は、Ｗを求めるいかなる特定の方法にも限定されない。次に、フローはブロック７０６に進み、あらゆる解Ｗについて、Ｗと、トレーニングセット内のあらゆるインパルス応答との畳込みＢｋを推定する。したがって、１６個の解（Ｗ０〜Ｗ１５）およびトレーニングセット内の８個のインパル
ス応答がある本例では、合計１２８個の畳込みが推定される。したがって、任意の解Ｗに対して、それぞれのＢｋはＢｋ＝［ｂｋ，０，ｂｋ，１，... ，ｂｋ，Ｎ−１］と表すことができる。ここで、ｂｋ，０，ｂｋ，１，... ，ｂｋ，Ｎ−１は係数であり、ＮはＢｋの長さである。なお、［ｋ］８は、トレーニングセット内のチャネル数を示すことに留意されたい。
【０２４６】
次に、フローはブロック７０８に進み、あらゆるＢｋに対して、最大エネルギーを有する望ましい長さ（すなわち目標フィルタ長）のばらつき領域を位置特定する。すなわち、最大エネルギーのばらつき領域は、上記の式４０および式４１を用いて位置特定することができる。ここで、ＬＷは、ばらつき領域の望ましい長さに対応する。したがって、ブロック７０８に対する式は次のように表すことができる。
【０２４７】
【数４２】
2005531200.tif 000045
【０２４８】
上式は、上記の式４０に類似している。式４５において、Ｎは特定のＢｋの長さであり、Ｅｋ（ｎ）は、スライディングウィンドウＬＷ（ばらつき領域の望ましい長さに対応する）内のエネルギーに対応する。したがって、それぞれのＢｋに対してＮ個のエネルギー値（Ｅｋ（０），... ，Ｅｋ（Ｎ−１））が求められる。したがって、それぞれのＢｋに対して最大エネルギーを有するばらつき領域は、次式を用いて求めることができる。
【０２４９】
【数４３】
2005531200.tif 000046
【０２５０】
式４６は、上記の式４１に類似している。式４６において、Ｄｋは、最大エネルギーにおけるＢｋの純粋遅延に対応するので、ばらつき領域は、Ｄｋから始まり、Ｄｋ＋ＬＷで終わり、最大エネルギーを有する領域である。（別法として、式４１に関して上記で説明したように、ばらつき領域の終端は、エネルギーＥｋ（ｎ）が所定閾値を下回る点として定義することも可能である。）したがって、それぞれのＢｋに対して、最大エネルギーのばらつき領域が求められる。次に、フローはブロック７１０に進み、あらゆるＢｋに対して性能指数ＦＭｋを推定する。性能指数は、（ブロック７０８からの）最大エネルギーｍａｘ  Ｅｋ（ｎ）とＢｋの全エネルギーＥｋとの比として定義される。そこで、Ｅｋは次式を用いて求めることができる：
【０２５１】
【数４４】
2005531200.tif 000047
【０２５２】
上式において、ＮはＢｋの長さである。したがって、性能指数は次のように表すことができる。
【０２５３】
【数４５】
2005531200.tif 000048
【０２５４】
上式において、ＮはＢｋの長さである。フローはブロック７１２に進み、すべてのチャネルインパルス応答に対する平均性能指数ＦＭＡＶＧを求める。あらゆる解Ｗｋ（上記の例ではｋ＝０，１，... ，１５）は固有の平均性能指数ＦＭＡＶＧを有することになる。フローはブロック７１４に進み、すべての可能な設計方法のうちでＦＭＡＶＧが最大になるような最適フィルタＷを選択する。図３６の方法はオフラインで実行可能であり、最終的に選択されるＷは、エコーキャンセラ２０内に記憶し、必要に応じて非適応フィルタ６４、３１、または３５にロードすることができる。
【０２５５】
なお、上記のＷの説明では追加的フィルタが非適応フィルタであると仮定しているが、非適応フィルタ６４、３１、および３５の代わりに適応フィルタを用いてもよいことに留意されたい。しかし、安定性を保証するために、上記のように、Ｗに対して制約を課さなければならないことがあり、フィルタが適応フィルタである場合、フィルタ適応の結果として不安定なフィルタとなる可能性があるため、安定性制約をサンプルごとに課さなければならないことがある。
【０２５６】
図３３〜図３５は、Ｗを求めるための可能な設計方法を示している。例えば、図３３〜図３５は、図３６のブロック７０４で用いられる設計方法のうちの３つに対応していてもよい。別法として、図３３〜図３５の方法の一部または全部が、エコーキャンセラ２０によってその動作中に実行されることが可能である。一実施形態では、エコーキャンセラ２０は、Ｗを求めるために３つの設計方法をすべて（例えば図３２のブロック６６４で）実行し、最後に（図２８のブロック６３２の後で）どの方法が最良の解を提供しているかを判定してもよい。なお、異なる方法では、修正された根から新たなフィルタ係数を再構成した後の最良の解ではなく、根またはＷを修正する（図３２のブロック６６８）前の最良の解を提供してもよいことに留意されたい。したがって、さまざまな方法が、エコーキャンセラ２０で、実施形態に応じてさまざまな時に解析または選択されてもよい。別法として、単一の設計方法がエコーキャンセラ２０で用いられてもよい。
【０２５７】
図３３は、本発明の一実施形態による、新たなフィルタ係数Ｗを求めるための１つの設計方法に対応する図３２のブロック６６４の部分を示している。フローはブロック６７２から開始され、適応フィルタ６２の係数のばらつき領域を巡回バッファに移動することにより、（ブロック６４４で計算された）遅延Ｄを補償する。したがって、遅延補償された係数ＧはＧ＝［ｇ０，ｇ１，... ，ｇＮ−１］と表すことができる。ここで、ｇ０，ｇ１，... ，ｇＮ−１は、遅延補償された係数Ｇの係数であり、Ｎは適応フィルタ６２の長さである。したがって、Ｈ（図２９のブロック６４０でとられた元のスナップショットに対応する適応フィルタ６２の未補償係数）とＧの間の関係は次のように表すことができる。
【０２５８】
【数４６】
2005531200.tif 000049
【０２５９】
式４９において、ｇｉは遅延補償された係数であり、対応する巡回バッファのｉ番目の位置に記憶される。図３８は、図３７のインパルス応答例を遅延Ｄ（図３７のＴ１に対応
する）だけ時間補償することにより、インパルス応答がばらつき時間（図３７のＴ４＋Ｔ２で定義される）から開始するようにした一実施形態を示している。したがって、Ｈの係数は図３７のインパルス応答を表すのに対して、Ｇの係数は図３８の時間補償されたインパルス応答を表す。次に、フローはブロック６７４に進み、望ましいフィルタ長を定める。例えば、一実施形態では、上記のように、望ましいフィルタ長は１０であるように定められる（この場合、インパルス応答のばらつき時間は１０サンプルに圧縮されることが望ましい）。図３８の例を参照すると、望ましいフィルタ長はＴ５、すなわち、０とＳ１の間の時間に対応する。ここで０はばらつき時間の開始を定め（そして、Ｇの最初の係数にも対応する。というのは、Ｇは遅延補償されているからである）、Ｓ１は望ましいフィルタ長の終端を定める。
【０２６０】
望ましいフィルタ長が求められた後、望ましいフィルタ長内のばらつき領域の係数を消去して残留係数Ｖを定める。すなわち、ｉ＝０，１，... ，Ｓ１に対してｇｉを０とおく。したがって、ＶはＶ＝［０，... ，０，ｖ０，ｖ１，... ，ｖＫ−１］と表すことができる。ここでＫはＶの非ゼロ成分の数であり、Ｖのそれぞれの非ゼロ係数は次のように定義される。
【０２６１】
【数４７】
2005531200.tif 000050
【０２６２】
したがって、図３８の例を参照すると、時間Ｔ５に対応するＧの係数はゼロに設定され、Ｖの係数は残留歪み、すなわち、時間Ｔ６に対応するインパルス応答の部分を表す。フローはブロック６７６〜６８０に進み、残留歪みＶを等化するように動作する。
【０２６３】
ブロック６７６で、Ｖの高速フーリエ変換（ＦＦＴ）を計算する。フローはブロック６７８に進み、ＦＦＴ（Ｖ）の逆数Ｉを計算する。ここで、Ｉ＝１／ＦＦＴ（Ｖ）である。フローはブロック６８０に進み、Ｉの逆ＦＦＴ（ＩＦＦＴ）としてＷ１を計算する。ここで、Ｗ１＝ＩＦＦＴ（Ｉ）である。したがって、Ｗ１はＶの逆であり、残留歪みＶを等化するために用いることができる。フローはブロック６８２に進み、（図２９でのチャネルばらつきの推定と同様に）最大エネルギーを有する所定の長さのＷ１のウィンドウからＷを求める。ここで、所定の長さは、望ましい適応フィルタタップ数である。そして、フローはブロック６８４に進み、例えばＷのユークリッドマグニチュード（すなわちＬ２ノルム）によりフィルタ係数Ｗを正規化する。
【０２６４】
図３４は、本発明の一実施形態による係数Ｗを求めるための代替方法を示している。フローはブロック６８６から開始され、（ブロック６７２および式４９からの）遅延補償されたフィルタ係数Ｇを用いて、上記のように、望ましいフィルタ長を定め、畳込み行列Ｃを求める。畳込み行列Ｃは次のように定義することができる。
【０２６５】
【数４８】
2005531200.tif 000051
【０２６６】
ＳＬは、次のように表し得る選択行列に対応する。
【０２６７】
【数４９】
2005531200.tif 000052
【０２６８】
式５２において、０は（Ｎ＋Ｍ−Ｌ−１）×Ｌ型の零行列であり、Ｉは（Ｎ＋Ｍ−Ｌ−１）×（Ｎ＋Ｍ−Ｌ−１）型の単位行列である。この式において、ＮはＧの長さに対応し、ＭはＷの長さ（望ましい適応フィルタ長を実現するための所定の非適応フィルタタップ数）に対応し、Ｌは望ましい適応フィルタ長に対応する。ＣｏｎＧは、Ｇの畳込み行列に対応し、次のように表すことができる。
【０２６９】
【数５０】
2005531200.tif 000053
【０２７０】
したがって、行列Ｃは、遅延補償されたフィルタ係数Ｇの畳込み行列ＣｏｎＧから、その最初のＬ行を無視することによって得られる。これは、この設計プロセスの最後までに、短縮されたチャネルの係数を定めることになる。
【０２７１】
フローはブロック６８８に進み、式５１の行列Ｃの第１行を列ベクトルとしたものとしてｂｗを定義する。フローはブロック６９０に進み、行列Ａを計算する。
【０２７２】
【数５１】
2005531200.tif 000054
【０２７３】
式５４において、ＣＴという表記は行列Ｃの転置を表す。フローはブロック６９２に進み、ＡＷ＝ｂｗで与えられる方程式系をＷについて解く。そして、フローはブロック６９４に進み、フィルタ係数Ｗを正規化する。当業者には直ちに認識されるように、上記の解は、系ＣＷ＝［１，０，... ，０］Ｔの最小平均二乗誤差解に対応する。これは、適応フィルタ６２の係数とＷとの全体的畳込みを考慮することによって歪みを等化しようとしている。
【０２７４】
図３５は、本発明のもう１つの実施形態による係数Ｗを求めるための代替方法を示している。フローはブロック６９６から開始され、（ブロック６７２および式４９からの）遅延補償されたフィルタ係数Ｇを用いて、上記のように、望ましいフィルタ長を定め、畳込み行列Ｃを求める。したがって、式５１で定義したのと同じＣ行列が図３５で用いられる。次に、フローはブロック６９８に進み、図３４のブロック６９０と同様に、行列Ａを計算する（式５４参照）。フローはブロック７００に進み、ＷＴＷ／ＷＴＡＷの最大解を推定する。なお、ＷＴＷ／ＷＴＡＷは、行列Ａで重み付けされたＷの正規化タップのエネル
ギーの比を与えるので、ＷＴＷ／ＷＴＡＷの最大解は、ＷＴＷ＝１という条件の下でエネルギーＷＴＡＷを最小化することに留意されたい。また、ＷＴＷ／ＷＴＡＷは、Ｉが単位行列であるとしてＷＴＩＷ／ＷＴＡＷと等価であるので、解Ｗは、ペア（Ｉ，Ａ）の最大固有値に対応する一般化固有ベクトルであることにも留意されたい。これは、固有ベクトルを推定するための既製のアルゴリズムを用いて計算することができる。そして、フローはブロック７０２に進み、ブロック７００で求められたフィルタ係数Ｗを正規化する。
【０２７５】
したがって、図３３〜図３５は、フィルタ係数Ｗを求めるために使用可能な３つの設計方法を提供している。なお、図３３の方法は、望ましい（目標）フィルタ長の外部の残留歪みを等化しようとすることに留意されたい。図３４の方法は、適応フィルタ６２の係数とＷとの全体的畳込みを考慮しながら歪みを等化しようとする点で、より大域的である。しかし、図３４の場合、方程式がより複雑になる。図３５の方法は、適応フィルタ６２の係数とＷとの畳込みの後に残留歪みのエネルギーを実際に最小化しようとする。上記のように、すべての方法がエコーキャンセラ２０により実施可能であり、Ｗの根を修正する前、または修正された根から新たなフィルタ係数Ｗを再構築した後のいずれかに、最良の解が選択される。
【０２７６】
以上、本明細書では、特定の実施形態に関して本発明を説明している。しかし、当業者には認識されるように、添付の特許請求の範囲に記載の本発明の範囲から逸脱することなく、種々の変更および変形を行うことが可能である。例えば、本明細書に教示されているいずれの方法も、コンピュータハードディスク、フロッピー（登録商標）ディスク、３．５インチディスク、コンピュータストレージテープ、磁気ドラム、スタティックランダムアクセスメモリ（ＳＲＡＭ）セル、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）セル、電気的消去可能（ＥＥＰＲＯＭ、ＥＰＲＯＭ、フラッシュ）セル、不揮発性セル、強誘電体または強磁性体メモリ、コンパクトディスク（ＣＤ）、レーザーディスク、光ディスク、および任意の同様のコンピュータ可読媒体の１つまたは複数の上のソフトウェアとして具現化可能である。また、ブロック図は、図示のものとは異なるブロックであってもよく、ブロックはより多くてもより少なくてもよく、別様に配置されてもよい。また、フロー図も、別様に配置されてもよく、含まれるステップはより多くてもより少なくてもよく、別様に配置されてもよく、複数のステップに分離可能なステップや互いに同時に実行可能なステップを有してもよい。したがって、明細書および図面は、限定的ではなく例示的なものとみなされるべきであり、すべてのこのような変更は本発明の範囲内に含まれることが意図されている。
【０２７７】
上記では、特定の実施形態に関して、利益、他の利点、および課題の解決法を説明している。しかし、利益、利点、課題の解決法、およびいかなる利益、利点、または解決法を生じさせ得る、またはより顕著にし得るいかなる要素（複数可）も、一部または全部の請求項の重要な、必要な、または本質的な特徴または要素と解釈されてはならない。本明細書で用いられる場合、「含む（comprises, comprising ）」という用語、またはそのいかなる他の変化形も、非排他的な包含の意味を含むことが意図されているので、要素のリストを含むプロセス、方法、物品、または装置は、それらの要素のみを含むだけでなく、明示的に挙げられていない他の要素や、そのようなプロセス、方法、物品、または装置に固有の他の要素を含んでもよい。
【図面の簡単な説明】
【０２７８】
【図１】本発明の一実施形態による通信システムを示す。
【図２】本発明の一実施形態による図１の通信システムのエコーキャンセラを示す。
【図３】本発明の一実施形態による図２のエコーキャンセラの近端信号検出器を示す。
【図４】本発明の一実施形態による図２のエコーキャンセラの適応フィルタを示す。
【図５】本発明の一実施形態による図２のエコーキャンセラの非線形プロセッサを示す。
【図６】本発明の一実施形態による図２のエコーキャンセラの監視制御ユニットの一部を示す。
【図７】本発明の別の実施形態による図２のエコーキャンセラの監視制御ユニットの一部を示す。
【図８】本発明のさらに別の実施形態による図２のエコーキャンセラの監視制御ユニットの一部を示す。
【図９】本発明の一実施形態による図２のエコーキャンセラの動作をフロー図の形式で示す。
【図１０】本発明の一実施形態による、図２のエコーキャンセラの近端信号検出器の動作および図２のエコーキャンセラの適応フィルタのフィルタ係数をバックアップおよびリストアする方法をフロー図の形式で示す。
【図１１】本発明の一実施形態による、図２のエコーキャンセラの近端信号検出器の動作および図２のエコーキャンセラの適応フィルタのフィルタ係数をバックアップおよびリストアする方法をフロー図の形式で示す。
【図１２】本発明の一実施形態による、図２のエコーキャンセラの近端信号検出器の動作および図２のエコーキャンセラの適応フィルタのフィルタ係数をバックアップおよびリストアする方法をフロー図の形式で示す。
【図１３】本発明の一実施形態による、図２のエコーキャンセラの近端信号検出器の動作および図２のエコーキャンセラの適応フィルタのフィルタ係数をバックアップおよびリストアする方法をフロー図の形式で示す。
【図１４】本発明の一実施形態による図２のエコーキャンセラの利得を監視する動的利得制御方法をフロー図の形式で示す。
【図１５】本発明の一実施形態による図２のエコーキャンセラの適応フィルタのフィルタ係数の分布を監視するフィルタ係数監視方法をフロー図の形式で示す。
【図１６】本発明の一実施形態による図２のエコーキャンセラ内の非線形プロセッサの動作をフロー図の形式で示す。
【図１７】本発明の一実施形態による図２のエコーキャンセラ内の非線形プロセッサの動作をフロー図の形式で示す。
【図１８】本発明の一実施形態による図２のエコーキャンセラ内の非線形プロセッサの動作をフロー図の形式で示す。
【図１９】本発明の一実施形態による図２のエコーキャンセラ内の非線形プロセッサの動作をフロー図の形式で示す。
【図２０】本発明の一実施形態による純粋遅延および疎ウィンドウの位置の推定をフロー図の形式で示す。
【図２１】本発明の一実施形態による純粋遅延および疎ウィンドウの位置の推定をフロー図の形式で示す。
【図２２】本発明の一実施形態による純粋遅延および疎ウィンドウの位置の推定をフロー図の形式で示す。
【図２３】本発明の一実施形態による純粋遅延および疎ウィンドウの位置の推定をフロー図の形式で示す。
【図２４】本発明の一実施形態による純粋遅延および疎ウィンドウの位置の推定をフロー図の形式で示す。
【図２５】本発明の一実施形態によるトーン検出方法をフロー図の形式で示す。
【図２６】本発明の一実施形態によるトーン検出方法をフロー図の形式で示す。
【図２７】本発明の一実施形態によるトーン検出方法をフロー図の形式で示す。
【図２８】本発明の一実施形態によるエコーパススキャンを短縮する方法をフロー図の形式で示す。
【図２９】本発明の一実施形態によるエコーパススキャンを短縮する方法をフロー図の形式で示す。
【図３０】本発明の一実施形態によるエコーパススキャンを短縮する方法をフロー図の形式で示す。
【図３１】本発明の一実施形態によるエコーパススキャンを短縮する方法をフロー図の形式で示す。
【図３２】本発明の一実施形態によるエコーパススキャンを短縮する方法をフロー図の形式で示す。
【図３３】本発明の一実施形態によるエコーパススキャンを短縮する方法をフロー図の形式で示す。
【図３４】本発明の一実施形態によるエコーパススキャンを短縮する方法をフロー図の形式で示す。
【図３５】本発明の一実施形態によるエコーパススキャンを短縮する方法をフロー図の形式で示す。
【図３６】本発明の一実施形態によるエコーパススキャンを短縮する方法をフロー図の形式で示す。
【図３７】本発明の実施形態によるインパルス応答の例をグラフ形式で示す。
【図３８】本発明の実施形態によるインパルス応答の例をグラフ形式で示す。
【図１】
2005531200.tif 000055
【図２】
2005531200.tif 000056
【図３】
2005531200.tif 000057
【図４】
2005531200.tif 000058
【図５】
2005531200.tif 000059
【図６】
2005531200.tif 000060
【図７】
2005531200.tif 000061
【図８】
2005531200.tif 000062
【図９】
2005531200.tif 000063
【図１０】
2005531200.tif 000064
【図１１】
2005531200.tif 000065
【図１２】
2005531200.tif 000066
【図１３】
2005531200.tif 000067
【図１４】
2005531200.tif 000068
【図１５】
2005531200.tif 000069
【図１６】
2005531200.tif 000070
【図１７】
2005531200.tif 000071
【図１８】
2005531200.tif 000072
【図１９】
2005531200.tif 000073
【図２０】
2005531200.tif 000074
【図２１】
2005531200.tif 000075
【図２２】
2005531200.tif 000076
【図２３】
2005531200.tif 000077
【図２４】
2005531200.tif 000078
【図２５】
2005531200.tif 000079
【図２６】
2005531200.tif 000080
【図２７】
2005531200.tif 000081
【図２８】
2005531200.tif 000082
【図２９】
2005531200.tif 000083
【図３０】
2005531200.tif 000084
【図３１】
2005531200.tif 000085
【図３２】
2005531200.tif 000086
【図３３】
2005531200.tif 000087
【図３４】
2005531200.tif 000088
【図３５】
2005531200.tif 000089
【図３６】
2005531200.tif 000090
【図３７】
2005531200.tif 000091
【図３８】
2005531200.tif 000092
【国際調査報告】
2005531200.tif 000093
2005531200.tif 000094
2005531200.tif 000095
2005531200.tif 000096
2005531200.tif 000097
2005531200.tif 000098