(57)【特許請求の範囲】
【請求項１】
エコーを抑制するシステムであって：
所望信号を入力し、前記所望信号に基づいて出力信号を出力するエコー・キャンセラ；
および
前記エコー・キャンセラに結合され、ゼロ・エコー・パスの検出時に、前記出力信号を前記所望信号と置換すべく動作するコントローラ；
によって構成されることを特徴とするシステム。
【請求項２】
前記コントローラは、前記出力信号が前記所望信号をパワー比較閾値だけ超える場合に、前記出力信号を前記所望信号と置換することを特徴とする請求項１記載のシステム。
【請求項３】
前記コントローラは、前記出力信号の大きさが前記所望信号の大きさよりも大きい場合に、前記出力信号を前記所望信号と置換することを特徴とする請求項１記載のシステム。
【請求項４】
前記エコー・キャンセラおよび前記コントローラは、メモリに格納されたソフトウェア・プログラムを利用して実行されることを特徴とする請求項１記載のシステム。
【請求項５】
前記コントローラは、リンギングを検出すべく動作することを特徴とする請求項１記載のシステム。
【請求項６】
前記コントローラは、いつ電話回線がオフフックになるかを検出すべく動作することを特徴とする請求項１記載のシステム。
【請求項７】
前記エコー・キャンセラは、遠距離通信インフラにおいて実装されることを特徴とする請求項１記載のシステム。
【請求項８】
前記エコー・キャンセラは、セルラ電話において実装されることを特徴とする請求項１記載のシステム。
【請求項９】
セルラ電話においてエコーを抑制する方法であって：
基準信号，所望信号，エコー・キャンセラおよび出力信号を準備する段階であって、
前記エコー・キャンセラは、前記所望信号を入力し、前記所望信号に基づいて出力信号を出力する、前記準備する段階；
所望信号パワーを算出する段階；
前記所望信号パワーを所望信号パワー閾値と比較する段階；および
前記出力信号を前記所望信号と置換する段階；
によって構成されることを特徴とする方法。
【請求項１０】
前記所望信号の無音と関係付けされるカウンタをインクリメントする段階；
前記カウンタをカウンタ閾値と比較する段階；
前記エコー・キャンセラ内のフィルタを動作させるための係数の集合が集束したかどうかを調べる段階；
前記係数の集合に基づいてエコー・リターン・ロスを判定し、判定されたエコー・リターン・ロスをエコー・リターン・ロス閾値と比較する段階；
前記カウンタが前記カウンタ閾値を超え、前記エコー・キャンセラ内のフィルタを動作させるための係数の集合が集束し、且つ前記エコー・リターン・ロスが前記エコー・リターン・ロス閾値未満である場合に、前記エコー・キャンセラにおける合成エコーの生成をリセットする段階；
をさらに含むことを特徴とする請求項９記載の方法。
【発明の詳細な説明】
（産業上の利用分野）
本発明は、遠距離通信システムにおけるエコー・キャンセレーションに関する。さらに詳しくは、本発明は、エコー・キャンセラによる合成エコーの不必要かつ多くの場合悪影響のあるサブトラクション(subtraction)に対処するためのものである。
【０００１】
（従来の技術）
エコー・キャンセレーション装置は、現在の通信システムでは必要な構成要素である。不完全なインピーダンス整合(impedance matching)の場合、通信ネットワーク上で放送される信号は、信号の発生源に反射して戻る。反射した信号はインピーダンス不整合(impedance mismatching)の位置から発生源に戻らなければならないので、信号の発生源は遅延を有した反射信号を受信する。この遅延とともに反射した信号が戻ってくることは、一般にエコー(echo)として知られている。エコー・キャンセレーション(echo cancellation)がなければ、電話ユーザは効果的に通話できない。なぜならば、反射信号は各発声音の後に話者の音声を自分に戻すためである。
【０００２】
一般に、エコー・キャンセラ(echo canceller)は、電話ユーザによって受信されるエコー信号を複製するために生成された合成エコー(synthetic echo)を発生することによって動作する。次に、エコー・キャンセラは、着信信号から合成エコーを差し引く（サブトラクション：subtraction）。通常状態時に合成エコーをサブトラクションすることは、電話ユーザが聞こえるエコーを軽減することによって電話の性能を改善する。ただし、特定の状態では、エコー・キャンセラは電話の性能を劣化させることがある。エコー・キャンセラは、著しいエコー信号がない場合に合成エコーを生成することにより、リンギング中に誤って適応することがある。さらに、エコー・キャンセラは、合成エコーの発生時に反応が遅くなりすぎることがあり、またゼロ（zero）エコー・パス接続から有限（finite）エコー・パス接続への変化およびその逆の変化がある場合に、エコーを増強させることがある。例えば、エコー・キャンセラは、呼を受信中の電話がオフフックすると、誤って適応することがある。
【０００３】
リンギング検出器およびオフフック検出器がなければ、移動体発呼者が陸線(landline)またはアナログ電話に呼を発呼する場合に、エコー・キャンセラはセルラ電話の性能を劣化させることがある。この劣化は、初期エコー増強(initial echo enhancement)または著しく増加した集束時間(convergence time)のいずれかとして現れ、それによりキャンセルされないままのエコーが生じる。
【０００４】
一般に、ほとんどのエコー・キャンセラはダブルトーク検出アルゴリズム(double-talk detection algorithm)を利用する。このアルゴリズムは、発呼者がリンギング中に沈黙するという前提に基づく。しかし、移動体発呼者が沈黙していない場合や、バックグランド雑音がある場合、ダブルトーク検出アルゴリズムでは、基準信号パワー(reference signal power)ともいう移動体発呼者信号レベルがリンギング・レベルを超える場合に、エコー・キャンセラは合成エコーを生じさせることがある。その結果、エコー・キャンセラは、リンギング期間中に合成エコーを不適切に生成することにより誤って適応する。さらに、受信側の電話がオフフックすると、エコー・キャンセラは最初にエコー増強を示したり、あるいはエコー信号のキャンセルに失敗することがある。
【０００５】
また、エコー・キャンセレーションの従来の方法の問題は、著しいエコー・パス変化のために生じることがある。これは、通信ネットワークがゼロ・エコー・パスから有限エコー・パスに、あるいはその逆に変化した場合に生じる。典型的なゼロ・エコー・パス・ネットワークは、４線式電話網である。ディレクトリ・アシスタンス(directory assistance)への接続は、４線式システムを利用する。ほとんど他の接続は、エコー信号を生成する２線式システムを利用する。ネットワーク内のエコー信号の存在は、有限エコー・パスを生じる。
【０００６】
著しいエコー・パス変化は、２線式陸線電話の有限エコー・パス・ネットワークに接続された移動体発呼者が４線式電話のゼロ・エコー・パス・ネットワークに転送される場合に生じる可能性がある。また、著しいエコー・パス変化は、４線式電話のゼロ・エコー・パスネットワークに接続された移動体発呼者が２線式電話の有限エコー・パス陸線電話に転送される場合に生じることがある。この状況は、移動体発呼者がディレクトリ・アシスタンスによって転送される場合に生じる可能性がある。
【０００７】
従来技術は、電話回線がオフフックになったときに生じる状態を考慮するために、リンギング中または故障中に誤って適応する傾向に対処すべくエコー・キャンセラを適切に制御する能力が欠如している。さらに、従来技術は、ゼロ・エコー・パスネットワークから有限エコー・パス・ネットワークおよびその逆の変化に適切に対処しない。
【０００８】
（好適な実施例の説明）
好適な実施例は、複雑度の低いリンギング検出器，オフフック検出器およびゼロ・エコー・パス検出器を、セルラ電話技術向けのエコー・キャンセレーション・システムに組み込む。特に、好適な実施例は、通信インフラ(telecommunication infrastructure)において実装される。具体的には、好適な実施例は、インフラのトランスコーダ(transcoder)レベルで実装される。あるいは、エコー・キャンセレーション・システムは、セルラ電話内に直接実装でき、あるいはインフラ内の別の個所で実装できる。
【０００９】
本実施例は、リンギング・トーンの検出時にエコー・キャンセラによる合成エコーのサブトラクションを迂回する、リンギングを検出するシステムおよび方法を提供する。エコー・キャンセラの出力をその入力で置換することにより、本実施例はリンギング中の誤った適応の問題を回避する。
【００１０】
また、本実施例は、陸線またはアナログ電話がオフフックすると、入力信号の適応を再開するようにエコー・キャンセラに指示する、オフフック検出のシステムおよび方法を含む。従って、オフフック検出器は、エコー・キャンセラによる合成エコーのサブトラクションを再開する。
【００１１】
さらに、本実施例は、ゼロ・エコー・パス・ネットワークから有限エコー・パス・ネットワークへの変化およびその逆の変化によって生じるおそらくは逸脱(divergence)に起因するエコー強化を除外する、ゼロ・エコー・パス検出器を提供する。ゼロ・エコー・パスが検出されると、本システムおよび方法は、エコー・キャンセラにおける合成エコーのサブトラクションを迂回する。これは、エコー・キャンセラが、ゼロ・エコー・パス、すなわちエコーの無いシステムに対してエコーを追加することを防ぐ。着信信号のレベルが十分低い場合、エコー・キャンセラはエコーが無いところにエコーを生成することがある。従って、本実施例は、システム状態が無視できる程度のエコーを示す場合に、エコー・キャンセラを迂回する。さらに、本発明は、着信信号レベルが十分な時間だけ十分小さく、また一方で、集束するための十分な時間が与えられた適応型フィルタ(adaptive filter)がわずかな量の係数エネルギ(coefficient energy)を生じる場合に、エコー・キャンセラの適応型フィルタをリセットする。
【００１２】
好適な実施例では、エコー・キャンセラは、アセンブリ言語で書かれ、かつMotorola 56301などのデジタル信号プロセッサによって実行されるコンピュータ・プログラムとして、メモリに格納される。あるいは、本実施例は汎用プロセッサおよびＣ＋＋などさまざまなプログラミング言語を利用して実装できる。さらに、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：field programmable gate array)によるハードワイヤ方式の実装も利用できる。エコー・キャンセラと同様に、リンギング，オフフックおよびゼロ・エコー・パス検出は、デジタル信号プロセッサによって実行されるコンピュータ・プログラムをメモリに格納することによって実装される。従って、好適な実施例は、既存のエコー・キャンセラを邪魔せずに実装できる。
【００１３】
図１は、典型的な従来技術のエコー・キャンセレーション・システムを示す。基準信号１０は、エコー発生システム２０に入力される。エコー発生システム２０の結果、エコー信号３０が生成される。遠端音声(far-end speech) x(n)ともいう基準信号１０は、エコー・キャンセレーション信号における２つの音声信号のうちの一つである。他方の音声信号は、近端音声(near-end speech)信号４０である。近端音声信号４０およびエコー信号３０の総和が所望信号(desired signal)５０となる。所望信号５０は、s(n)と記される。エコー・キャンセラ６０は、所望信号５０をできるだけエコーなしに送信することを試みる。エコー・キャンセラ６０は、e(n)と記された出力信号７０を生成する。
【００１４】
最適な出力信号７０を送信するためには、エコー・キャンセラ６０は所望信号５０から合成エコーを発生する。この合成エコーは、エコー信号３０をエミュレートするように生成される。次に、エコー・キャンセラ６０は、所望信号５０から合成エコー信号を差し引いて、出力信号７０を生成する。このエコー・キャンセラ６０の機能は、エコー発生システム２０の影響を無効にすることである。
【００１５】
図２は、ゼロ・エコー・パス，リンギングおよびオフフック検出を利用してエコー・キャンセレーションを制御するための一好適な実施例のシステム・ブロック図である。コントローラ８０は、エコー・キャンセラ６０と結合される。エコー・キャンセラ６０内には、ゼロ・エコー・パス検出器９０，リンギング検出器１００およびオフフック検出器１１０が内蔵される。コントローラ８０は、リンギングまたはゼロ・エコー・パスがある場合に、エコー・キャンセラ６０による合成エコーのサブトラクションを迂回すべく機能する。陸線またはアナログ電話がリンギングしている場合、あるいはゼロ・エコー・パスが存在する場合、エコー発生システム２０の影響はわずかである。従って、これらの状態では、エコー・キャンセラ６０は誤って合成エコーを生成することになり、この合成エコーはサブトラクションされると、出力信号７０においてエコーを生じさせる。この状況では、生成した合成エコーは所望信号５０における相当な同等はない。その結果、エコーの無い所望信号から合成エコーをサブトラクションすると、劣化した出力信号７０が得られる。コントローラ８０は、エコー・キャンセラが所望信号５０にエコーを追加するのを防ぐために、エコー・キャンセラ６０を無効にする。
【００１６】
好適な実施例では、エコー・キャンセラ６０およびコントローラ８０の両方は、ソフトウェア・ルーチンとしてデジタル信号プロセッサ１２０に格納される。従って、本実施例は、コントローラ８０を単純に内蔵して、従来のエコー・キャンセレーション・システムを大幅に変更せずに、既存の移動体電話技術に組み込むことができる。また、本実施例は、モトローラ社製の563xシリーズの他のデジタル信号プロセッサや、テキサス・インスツルメンツ社製のTMS320C5xシリーズのプロセッサを利用しても実装できる。
【００１７】
好適な方法を図３ないし図６に示す。図３は、好適なメイン・フローチャートである。呼び出された電話がリンギング中にオフフックしたことを示すROFHKフラグは、初期化中にOFFに設定される。初期化後に、本方法は、矩形平均方式(rectangular averaging scheme)に基づいて、基準信号エネルギP_xおよび所望信号エネルギP_sのサンプルを算出することにより、ステップ２００から開始する。好適な方法は、各３２個のサンプルの二乗を加算して、その和を３２で除することによって生成されるエネルギ計算を利用する。好適なサンプリング・レートである８０００サンプル／秒を利用すると、これは信号の４ミリ秒区分に相当する。当業者に理解されるように、基準信号エネルギおよび所望信号エネルギを計算するために他のサンプル・サイズおよび別のエネルギ計算を利用してもよい。
【００１８】
次に、本方法はステップ２０２に進み、ここで基準信号パワーP_x32および所望信号パワーP_s32が算出され、現在値ならびに以前の１０個の値を保持するバッファに格納される。従って、基準信号パワーおよび所望信号パワーの履歴はバッファに格納される。好適な実施例は１１個の値を格納するバッファを利用するが、当業者であれば、より大きいおよびより小さいバッファ・サイズも本発明の本質的な精神および範囲から逸脱せずに利用できることが理解されよう。
【００１９】
次に、ステップ２０４は、ROFHKフラグがオンであるかどうか、そして過去のバッファ済みエネルギが過去のバッファ済みエネルギ閾値よりも小さいかどうかを調べる。好適な実施例では、この閾値は−７０デシベル（ｄＢ）であるが、この値はユーザ指定のバックグランド雑音推定値に変更できる。
【００２０】
ステップ２０４の条件が真であるならば、本方法はステップ２０６に進み、ここでROFHKフラグはオンに設定される。さらに、オフに設定されるとコントローラにオフフックをチェックさせるOFF_HOOKフラグは、オフに設定される。最後に、オンに設定されるとコントローラにリンギングをチェックさせるRing_Flagは、オンに設定される。ステップ２０６の次に、本方法はステップ２０８に進む。ステップ２０４の条件のうちいずれかが真であるならば、本方法はステップ２０６をスキップして、ステップ２０８に進む。
【００２１】
ステップ２０８において、所望信号パワーは所望信号パワー閾値に対してチェックされる。好適な実施例では、この閾値は−７０ｄＢに設定される。所望信号パワーがこの閾値より小さい場合、本方法はステップ２１０に進む。それ以外の場合、本方法はステップ２２２に進む。
【００２２】
ステップ２１０において、本方法は所望信号は十分無音(silent)であると判断し、無音カウンタ(silence counter)をインクリメントする。次に、ステップ２１２にて、本方法は出力信号を所望信号と置換して、基準信号を基準信号バッファに格納する。基準信号バッファは、現在値と、基準信号の以前の値とを格納すべく機能する。好適な実施例では、この基準信号バッファは、６４ミリ秒のエコー・キャンセラに相当する全部で５１２個の基準信号値を格納する。当業者に理解されるように、基準信号バッファはより多くのあるいはより少ない数の基準信号値を格納できる。ステップ２１２は、出力信号を所望信号と置換することにより、エコー・キャンセラによる合成エコーのサブトラクションを迂回する。
【００２３】
次に、本方法は、エコー・キャンセラを初期状態にリセットすべきかどうかを判定する。ステップ２１４において、評価される３つの条件がある。これら３つの条件は、（１）無音カウンタの値；（２）集束フラグの設定；および（３）エコー・リターン・ロス（ＥＲＬ）を調べる。第１条件は、無音カウンタを一次無音カウンタ閾値(primary silence counter threshold)と比較する。無音カウンタがこの閾値よりも大きい場合、この条件は満たされたことになる。好適な実施例では、この値は１０００に設定される。従って、この第１条件を満たすためには、無音カウンタは１０００回インクリメントされていなければならない。これは、１２５ミリ秒以上で、−７０ｄＢより小さい所望信号を有することを意味する。
【００２４】
第２条件は、エコー・キャンセラの適応型フィルタが十分な適応カウントを有することを示すために、集束フラグが設定されているかどうかを調べる。すなわち、集束フラグは、エコー・キャンセラが適応型フィルタを集束に駆動する係数のセットについて十分な時間を有するかどうかを示す。好適な実施例では、オンの設定は十分な適応カウントを示す。
【００２５】
第３条件は、エコー・リターン・ロス（ＥＲＬ）をエコー・リターン・ロス閾値と比較する。好適な実施例では、ＥＲＬは、エコー・キャンセラによって生成される合成エコーの強度を評価することによって求められる。ＥＲＬが低い場合、エコー・キャンセラは所望信号内の強いエコーを検出していない。好適な実施例では、適応型フィルタを駆動する係数のセットを二乗することによってＥＲＬは求められ、エコー・リターン・ロス閾値は所定の閾値に設定される。好適な実施例では、この閾値は−２７ｄＢに設定される。ＥＲＬが−２７ｄＢよりも小さい場合、この第３条件は満たされたことになる。
【００２６】
３つの条件全てが満たされると、コントローラは、エコー・キャンセラが十分な適応カウントを行い、小さなＥＲＬとなる際に、十分長い時間で、十分小さい所望信号パワーを識別したことになる。この状況では、本方法はエコー・キャンセラを初期状態に戻す。これは、ステップ２１６および２１８において達成される。ステップ２１６において、本方法はゼロ・エコー・パス状態をフラグして、ＥＲＬを値１にリセットする。ステップ２１８において、本方法はエコー・キャンセラをリセットする。ステップ２１８の次に、本方法はステップ２２０に進み、ここで本方法はメインのエコー・キャンセレーション・ルーチンに戻る。ただし、ステップ２１４の条件のうちいずれかが満たされない場合、本方法はステップ２２０にスキップして、ここで本方法はメインのエコー・キャンセレーション・ルーチンに戻る。
【００２７】
ステップ２０８に戻って、本方法が所望パワー信号閾値よりも小さい所望パワー信号を検出しない場合、本方法はステップ２２２に進む。この時点で、本方法は、リンギング検出およびオフフック検出を行うべきかどうかについて評価を開始する。ステップ２２２において、本方法は、ステップ２１０で言及した無音カウンタが二次無音カウンタ閾値(secondary silence counter threshold)よりも大きいかどうかを調べる。好適な実施例では、この二次無音カウンタ閾値は１０に設定される。従って、所望信号パワーは、この条件を満たすためには、少なくとも１．２５ミリ秒の間−７０ｄＢよりも小さくなければならない。この条件が満たされると、本方法はステップ２２４に進み、ここで本方法は、本方法がリンギングについてチェックすべことを示すために、Ring_Flagと記されたリンギング・フラグのチェックを設定する。ステップ２２４の次に、本方法はステップ２２６に進む。この条件が満たされない場合、ステップ２２４はスキップされ、本方法は、リンギング・フラグのチェックを設定せずに、ステップ２２２からステップ２２６に進む。
【００２８】
ステップ２２６において、本方法はサンプルの数がサンプル閾値よりも大きいかどうかを調べ、またリンギング検出を迂回するようにリンギング・フラグのチェックが設定されているかどうかを調べる。好適な実施例では、サンプル閾値は１６０サンプルであり、Ring_Flagはオフに設定される。サンプルの数が十分であり、かつリンギング・フラグのチェックがリンギングを迂回するように設定されている場合、本方法はステップ２２８に進み、ここで本方法は、オフフック検出の迂回を示すために、Off_Hookと記されたオフフック・フラグのチェックを設定する。ステップ２２８の次に、本方法はステップ５００に進む。ステップ２２６の条件が満たされない場合、本方法はステップ２３０に進み、ここでリンギング・フラグのチェックは３２サンプル毎に調べられる。リンギング・フラグがリンギング検出の必要性を示すように設定される場合、本方法はステップ３００および４００に進む。リンギング・フラグがリンギング検出の必要性を示すように設定されない場合、本方法はステップ５００に進む。
【００２９】
図３に示すように、ステップ３００から開始するリンギング検出およびステップ４００から開始するオフフック検出の両方は、ステップ５００の開始で終了する。従って、ステップ２０８において所望信号パワーが所望信号パワー閾値よりも大きい場合を除いて、本方法は常にステップ５００に達する。
【００３０】
ここで図４を参照して、リンギング検出の好適な方法のフローチャートを示し、これは以下に含まれるリンギング検出の好適な実施例の条件の表を伴う。この表は、ステップ３０２，３０６および３０８の条件を与える。
【００３１】
【表１】
0004657556.tif 000002
図４において、ステップ３００はリンギング検出の開始を示す。ステップ３０２において、本方法は、３２サンプル毎に、上記の表に含まれる条件Ａ３を調べる。従って、ステップ３０２は、集束フラグがオフに設定されているかどうか，Ring_Flagがオンに設定されているかどうか、そしてOff_Hookフラグがオフに設定されているかどうかを調べる。当業者に理解されるように、これら特定の設定は、設定をオンまたはオフにすべきかを設計優先条件に応じて選ぶことができるので、若干自由裁量による。条件Ａ３は、エコー・キャンセラが十分な適応カウントに達しておらず、本方法がリンギングおよびオフフック検出を行うべきであることを示す。条件Ａ３が真である場合、本方法はステップ３０４に進む。条件Ａ３が偽である場合、本方法はステップ５００に進む。
【００３２】
ステップ３０４において、本方法は所望信号パワーP_s32の平均エネルギを算出する。これは、Ave_sと記される。基準信号パワーP_x32の平均エネルギも生成される。フローチャートでは、これはAve_xと記される。Ave_sおよびAve_xの両方は、サイズ６のバッファに格納される。当業者に理解されるように、平均エネルギはさまざまな方法で算出でき、またリンギングを検出する所望の精度に応じて、より短いあるいはより長いバッファ長を採用してもよい。好適な実施例では、Ave_xおよびAve_sは、それぞれP_x32およびP_s32に対して指数平均(exponential averaging)を実行することによって算出される。あるいは、矩形窓平均(rectangular window averaging)などの他の平均方式を利用してもよい。次に、本方法はステップ３０６に進む。
【００３３】
ステップ３０６において、本方法は条件Ａ４を調べる。上記の表に示すように、条件Ａ４は平均所望信号エネルギの一貫性(consistency)を調べる。ステップ３０６は、条件Ａ４により、まず過去の平均所望信号エネルギが過去の平均所望信号エネルギ閾値よりも大きいかどうかを調べる。条件Ａ４のこの部分は、リング信号を含むのに十分なエネルギが所望信号にあるかどうかを調べる。好適な実施例では、条件Ａ４は５つの以前のサンプルから過去の平均所望信号エネルギを調べて、−５０ｄＢの閾値を利用する。
【００３４】
過去の平均所望信号エネルギがこの閾値よりも大きい場合、条件Ａ４は平均所望信号エネルギの一貫性を調べる。条件Ａ４の第２および第３不等式に示すように、ステップ３０６にて条件Ａ４を調べる本方法は、平均所望信号エネルギが過去の平均所望信号エネルギから十分に逸脱していないかどうかを判定する。このリンギング検出の方法は、周期的なリンギング信号を含む信号からの平均エネルギは一定のままであるという事実に基づく。好適な実施例では、本方法は平均所望エネルギが過去の平均所望信号エネルギの１．２ｄＢ以内に維持されているかどうかを調べて、以前の５サイクルからの過去の平均所望信号エネルギを利用する。当業者に理解されるように、平均所望信号エネルギの一貫性はさまざまな方法で評価できる。例えば、より多くの過去の平均所望信号エネルギや、平均所望信号エネルギと過去の平均所望信号エネルギとの間のより長いあるいはより短い期間を利用してもよい。
【００３５】
条件Ａ４が満たされると、本方法はリンギング信号を十分に検出している。ただし、好適な実施例では、本方法は基準信号エネルギの一貫性の評価を続ける。これはステップ３０８において実施され、このステップ３０８は、ステップ３０６で条件Ａ４が真であると判断した場合に達する。ステップ３０８および条件Ａ５は、所望信号エネルギではなく基準信号エネルギが調べられる点を除いて、ステップ３０６と同様である。ステップ３０８は、エコー・キャンセレーション・システムを試験するためにトーン信号(tonal signal)が用いられる際に、誤ったリンギング検出を防ぐために挿入される。当業者に理解されるように、リンギング検出はステップ３０６で十分である。さらに、条件Ａ４で用いられる境界(bounds)が変化しても、Ａ４境界と同一のままとはならずに、条件Ａ５の境界も変化してもよい。
【００３６】
ステップ３０６に戻って、本方法は、条件Ａ４が満たされない場合、ステップ３１０に進む。ステップ３１０〜３１８は、ring_onカウンタおよびring_offカウンタを設定し、インクリメントすることにより、リンギング信号の存在を調べる。これらの値を調べることにより、本方法は、さらなるリンギングおよびオフフック検出を迂回すべきかどうか判断する。ステップ３１０〜３１８は好適な実施例を示し、リンギングおよびオフフック検出をさらに迂回すべきかどうかを調べる唯一の方法ではない。あるいは、当業者は、リンギングおよびオフフック検出を迂回すべきかどうかを判断するために、ステップ３１０および３１６におけるRing_offのカウント値を変更してもよい。
【００３７】
ステップ３１０において、本方法はring_offカウンタが３よりも大きいかどうかを調べる。３よりも大きい場合、本方法はステップ３１２に進み、ここでring_onフラグはゼロに設定される。次に、本方法はステップ３１４に進み、ここでring_offカウンタはインクリメントされる。ステップ３１０におけるring_offカウンタが３よりも大きくない場合、本方法はステップ３１２をスキップして、ステップ３１４に進む。ステップ３１６において、本方法はring_offフラグが５０よりも大きいかどうかを調べる。５０よりも大きい場合、本方法は、ステップ３１８において、off_hookフラグをオンに設定し、Ring_Flagをオフに設定する。ステップ３１８の次に、本方法はステップ５００に進む。ステップ３１６において、ring_offフラグが５０よりも大きくない場合、本方法はステップ５００にスキップする。
【００３８】
再度ステップ３０８を参照して、条件Ａ５が満たされる場合、本方法は、ステップ３２０において、ring_offカウンタがring_offカウンタ閾値よりも大きいかどうかを調べる。好適な実施例では、これは３０に設定される。ｒring_offカウンタがこの閾値よりも大きい場合、本方法はステップ３２２に進み、ここで本方法はリンギングおよびオフフック検出を継続すべきでないことを示す。ステップ３２２の次に、本方法はステップ５００に進む。ただし、条件Ａ５が満たされない場合、本方法は、ステップ３２４において、ring_onカウンタをインクリメントし、ring_offカウンタをゼロに設定する。
【００３９】
ステップ３２４の次に、本方法はステップ３２６に進み、ここで本方法はring_onカウンタの値を調べる。好適な実施例では、本方法はring_onカウンタが３に設定されているかどうかを調べる。ただし、当業者に理解されるように、ステップ３２６において他の値も利用できる。このテストが真である場合、本方法はステップ３２８に進み、ここでP_ring_lvlと記されたリンギング・パワー・レベルは平均所望信号エネルギに設定される。ステップ３２８の次に、本方法はステップ５００に進む。ステップ３２６のテストが偽である場合、本方法はステップ３２８をスキップして、ステップ５００に進む。
【００４０】
それぞれステップ３０６および３０８において条件Ａ４およびＡ５が満たされているステップ３２０を再度参照する。前述のように、ring_offカウンタがring_offカウンタ閾値よりも大きい場合、本方法はステップ３２２に進み、それからステップ５００に進む。しかし、ring_offカウンタがその閾値を超えない場合、本方法はステップ３３０に進む。ステップ３３０において、本方法はring_onカウンタがring on閾値よりも大きいかどうかを調べる。好適な実施例では、ring on閾値は５に設定される。ring_onカウンタがこの閾値よりも大きい場合、本方法はステップ３３２に進み、ここでring_onカウンタはゼロに設定される。次に、本方法はステップ３３４に進み、ここでring_offカウンタはインクリメントされる。ステップ３３０において、ring_onカウンタがこの閾値を超えない場合、本方法はステップ３３２をスキップして、ステップ３３４に進む。ステップ３３４の次に、本方法はステップ５００に進む。
【００４１】
ここで図５を参照して、オフフック検出の開始は、フローチャート内のステップ４００にて示される。ステップ４０２において、本方法は、回線がリンギング中にオフフックしたことをリンギング・フラグが示す際に、オフフックであるかどうかを調べ、また過去の平均所望パワーが過去の平均所望パワー閾値よりも大きいかどうかを調べる。好適な実施例では、これは、ROFHKフラグがオンに設定されているかどうかを調べ、また過去の平均所望パワーが−７０ｄＢよりも大きいかどうかを調べることによって達成される。これらの条件が満たされる場合、本方法はステップ４０４に進む。ここで、本方はリンギングおよびオフフック検出は必要ないことを示す。次に、本方法はステップ５００に進む。ステップ４０２の条件が満たされない場合、本方法はステップ４０６において条件Ａ１が満たされているかどうかを調べる。条件Ａ１は、リンギング中の信号エネルギの急激な低下について調べる。好適な実施例では、条件Ａ１は４つの評価からなる：（１）過去の所望信号パワーを調べて、−７０ｄＢに設定された過去の所望信号パワーよりも大きいかどうかを判定する；（２）過去の所望信号パワーを以前の過去の信号パワーと比較して、以前の過去の信号パワーよりも著しく小さいかどうかを判定する；（３）リンギング・パワー・レベルを以前の過去の信号パワーと比較して、以前の過去の信号パワーがリンギング・パワー・レベルに十分近いかどうかを調べる；および（４）Ring_onフラグは１よりも大きくなければならない。条件Ａ１は、過去の状態がリンギング状態であるとすると、所望信号レベルの少なくとも１５ｄＢの低下について調べることにより、リンギング中に電話がオフフックすることを表す。
【００４２】
ステップ４０６において条件Ａ１が満たされると、本方法はステップ４０８に進み、ここで電話回線がリンギング中にオフフックしたことを示すために、リンギング・フラグ中のオフフックが設定される。次に、本方法はステップ４１０に進む。条件Ａ１が満たされない場合、本方法はステップ４０８をスキップして、ステップ４１０に直接進む。
【００４３】
ステップ４１０において、本方法は、以前の過去の所望信号エネルギが過去の所望信号パワー閾値よりも小さいかどうかを調べる。好適な実施例では、この閾値は−７０ｄＢに設定される。あるいは、ステップ４０６で用いられる過去の所望の信号エネルギとは異なるレベルを含む、他のレベルも利用できる。以前の過去の所望信号パワーがこの閾値よりも大きい場合、本方法はステップ４１６に進み、ここで無音カウンタはゼロに設定される。ステップ４１６から、本方法はステップ５００に進む。以前の過去の所望信号パワーがこの閾値よりも小さい場合、本方法は、リンギング間の期間中に回線がオフフックしたかどうかを調べることによって継続する。これは、ステップ４１２において、条件Ａ２を調べることによって達成される。条件Ａ２では、本方法は、過去の所望信号パワーが過去の信号パワー閾値よりも大きいが、リンギング・パワー・レベルよりもリンギング・パワー・レベル閾値だけ小さいかどうかを調べる。好適な実施例では、過去の信号パワー閾値は７０ｄＢであり、リンギング・パワー・レベル閾値は２０ｄＢである。条件Ａ２が満たされると、本方法は、リンギング間で回線がオフフックしたことを検出したことになる。次に、本方法はステップ４１４に進み、ここでring_onフラグはゼロに設定され、リンギングおよびオフフック検出フラグはさらなるリンギングおよびオフフック検出を迂回するように設定される。次に、本方法はステップ４１６に進む。ステップ４１２で条件Ａ２が満たされないことが判断されると、本方法はステップ４１６に直接進む。いずれの場合でも、ステップ４００における開始は、ステップ５００で終了する。
【００４４】
ここで図６を参照して、好適な方法のnxtchk部分のフローチャートを示す。nxtchkサブルーチンは、ステップ５００から開始する。ステップ５０２において、本方法はring_onカウンタが２よりも大きいかどうかを調べる。当業者に理解されるように、ステップ５０２は異なるring_onカウンタ値について調べてもよい。好適な実施例では、２よりも大きいring_onカウンタ値は、リンギングおよびゼロ・エコー・パスを表すとみなされる。従って、この条件が満たされると、本方法はステップ５０４に進み、ここでリンギング・フラグのチェックはオンに設定される。次に、本方法はステップ５０６に進み、ここで集束フラグはオフに設定され、オフフック・フラグはオフに設定され、オフフック状態を検出する必要性を示す。次に、本方法は、ステップ５０８において、エコー・キャンセラによる合成エコーのサブトラクションを迂回して、基準信号をサイズ５１２のバッファに入れる。次に、本方法はステップ５１０に進み、ここで本方法はゼロ・エコー・パスの存在を示し、ＥＲＬを１に設定する。本方法は、ステップ５１２においてエコー・キャンセラをリセットし、ステップ５１４によりメインのキャンセレーション・ルーチンに戻る。
【００４５】
ring_onカウンタが２よりも大きくない場合、本方法はステップ５２０からステップ５１６に進み、ここで本方法は、集束フラグが十分な適応カウントを示しているかどうかを調べる。十分な適応カウントがある場合、本方法はステップ５１８に進む。ステップ５１８において、本方法はリンギングおよびオフフック検出が必要ないことを示し、ring_onフラグをゼロに設定する。次に、本方法はステップ５２０に進む。十分な適応カウントが無い場合、本方法はステップ５１８をスキップして、ステップ５２０に進む。
【００４６】
ステップ５２０において、本方法は基準信号パワーが基準信号パワー閾値よりも小さいかどうかを調べる。好適な実施例では、この閾値は基準信号の雑音フロア(noise floor)に設定される。基準信号パワーがこの閾値よりも小さい場合、本方法は、ステップ５２２において、基準信号パワー・カウンタをインクリメントする。次に、本方法は、ステップ５２４において、基準信号パワー・カウンタが基準信号パワー・カウンタ閾値よりも大きいかどうかを調べる。好適な実施例では、この閾値は５１２に設定される。基準信号パワーがこの閾値よりも大きい場合、本方法は、ステップ５２６において、エコー・キャンセラを再度迂回して、基準信号をサイズ５１２のバッファに入れる。ステップ５２６から、本方法は、ステップ５２８により、メインのエコー・キャンセレーション・ルーチンに戻る。ステップ５２０またはステップ５２６のいずれかの条件が満たされない場合、本方法は、ステップ５３０に表されるように、通常のエコー・キャンセレーション方法に進む。
【００４７】
また、本実施例は、ステップ５３２〜５４０において表されるように、エコー・キャンセラの出力を調べる。ステップ５３２において、本方法は所望信号および出力信号をサンプリングして、平均所望信号パワーおよび平均出力信号パワーを調べる。次に、ステップ５３４において、本方法は、平均出力信号パワーが平均所望信号パワーをパワー比較閾値だけ超えているかどうかを調べる。好適な実施例では、パワー比較閾値は１０ｄＢである。当業者に理解されるように、１０ｄＢ以外の他の値も利用できる。あるいは、ステップ５３４における方法は、平均出力信号パワーが平均所望信号パワーよりも単純に大きいかどうかを判定できる。ステップ５３４の条件が満たされると、本方法はステップ５３６に進む。満たされない場合、本方法は、ステップ５４０により、メインのエコー・キャンセレーション・ルーチンに戻る。
【００４８】
ステップ５３６において、本方法は出力信号の大きさが所望信号の大きさよりも大きいかどうかを調べる。この条件が満たされると、本方法は、ステップ５３８において、エコー・キャンセラを迂回する。これは、出力信号を所望信号と置換することによって行われる。ステップ５３８の次に、本方法は、ステップ５４０により、メインのエコー・キャンセレーション・ルーチンに戻る。ステップ５３４またはステップ５３６の条件が満たされない場合、本方法は、ステップ５４０により、メインのエコー・キャンセレーション・ルーチンに単純に戻る。
【００４９】
本発明は、エコー・キャンセレーションを制御するために、リンギング，オフフックおよびゼロ・エコー・パス検出を提供する。従来技術のエコー・キャンセラの通常動作が出力信号の品質を劣化させる状況を識別することにより、本実施例はエコー・キャンセレーションの最適モードの利用を指示できる。リンギングおよびゼロ・エコー・パス検出は、いつエコー・キャンセレーションを迂回すべきかを識別する。オフフック検出は、リンギング検出が生じた後に、いつエコー・キャンセレーションを再開すべきかを識別する。
【００５０】
本実施例はエコー・キャンセレーションを迂回すべく機能するが、本発明はエコー・キャンセレーションの別の方法を選択するためにも利用できる。すなわち、リンギング，オフフックまたはゼロ・エコー・パス検出は、一方のエコー・キャンセレーション・システムから別のシステムに切り換えるために利用できる。従来のエコー・キャンセレーション・モードの完全な迂回は、本発明では必要ない。本発明は、既存のエコー・キャンセレーション・システムに対する追加として実装でき、あるいは新規のエコー・キャンセレーション・システムの要素として組み込むことができる。通信ネットワークにおける信号を評価することにより、本発明はエコー・キャンセレーションのモードをよりよく制御でき、従ってよりクリアな出力信号を一貫して生成できる。
【００５１】
なお、上記の実施例に対する幅広い範囲の変更および修正は当業者に明白であり、想起されることが理解される。従って、上記の詳細な説明は制限的ではなく、例示的とみなすべきであり、発明の精神および範囲を定めることを意図するのは、一切の同等を含む特許請求の範囲であることを理解されたい。
【図面の簡単な説明】
【図１】  従来技術のエコー・キャンセレーション・システムのブロック図を示す。
【図２】  ゼロ・エコー・パス，リンギングおよびオフフック検出を利用してエコー・キャンセレーションを制御するためのシステムの一実施例のブロック図である。
【図３】  ゼロ・エコー・パス，リンギングおよびオフフック検出を利用してエコー・キャンセレーションを制御するための方法の全体的なフローを示す一好適なメイン・フローチャートである。
【図４】  図３で言及したリンギング検出の方法のより詳細なフローチャートである。
【図５】  図３で言及したオフフック検出の好適な方法のより詳細なフローチャートである。
【図６】  図３で言及したゼロ・エコー・パス，リンギングおよびオフフック検出を利用する方法のnxtchk部分のより詳細なフローチャートである。
【図１】
0004657556.tif 000003
【図２】
0004657556.tif 000004
【図３】
0004657556.tif 000005
【図４】
0004657556.tif 000006
【図５】
0004657556.tif 000007
【図６】
0004657556.tif 000008