(57)【特許請求の範囲】
【請求項１】
通信中に生じるエコーを除去するエコーキャンセラにおいて、
エコー除去処理の初期値として用いる初期値候補を複数格納しておく初期値データ格納部と、
この初期値データ格納部に格納された初期値候補の中から、それぞれを適用した場合の残差信号を得て最適な初期値を特定する初期値判定部と、
この初期値判定部で特定された初期値を初期値として、内部状態量を更新する内部状態更新部と、
前記内部状態量を用いてエコーレプリカを作成する適応フィルタ部とを有し、
前記初期値判定部は、当該エコーキャンセラにおいて、入力信号と出力信号がともにない状態から入力信号又は出力信号がある場合に変化したとき、入力信号と出力信号がともにある状態から入力信号又は出力信号がある場合に変化したとき、近端入力信号のパワーが所定のしきい値を超え、遠端入力信号のパワーが所定のしきい値を下回る場合のとき、又は、近端入力信号のパワーが所定のしきい値を下回り、遠端入力信号のパワーが所定のしきい値を超える場合のときのいずれか一方であるとき、最適な初期値を特定する
ことを特徴とするエコーキャンセラ。
【請求項２】
請求項１に記載のエコーキャンセラにおいて、
前記適応フィルタ部で作成されたエコーレプリカを用いてエコー消去した後の残差信号の状態からエコー除去動作が収束したかを判定する収束判定部を有し、
前記内部状態更新部は、さらに、前記収束判定部で未収束状態と判定したときに、高速な収束特性を持つアルゴリズムに従って内部状態量を更新し、収束状態と判定したときに安定なアルゴリズムに従って内部状態量を更新する
ことを有することを特徴とするエコーキャンセラ。
【請求項３】
請求項２に記載のエコーキャンセラにおいて、
高速な収束特性を持つアルゴリズムは、ＲＬＳアルゴリズムであり、安定なアルゴリズムは、ＬＭＳアルゴリズムであることを特徴とするエコーキャンセラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ハイブリッド回路の回線エコー等を消去するエコーキャンセラに関するものである。
【０００２】
【従来の技術】
一般に、国際回線のハイブリッド回路等において生じる回線エコーを消去するために、エコーキャンセラが設けられている。このエコーキャンセラにおいては、エコーパスの変動や雑音混入等に対して柔軟に対応するために、適応アルゴリズムが設けられている。
【０００３】
ところで、昨今のＦＡＸやモデム等の使用増大に伴って、既存の学習同定法よりもさらに高速の追従性、収束特性が求められている。これを解決するものとして、高速の収束特性を持つ適応アルゴリズムであるＲＬＳアルゴリズム（参考文献：「最近の適応アルゴリズムの動向  −ＲＬＳ法を中心として−」日本音響学会誌４８巻７号、１９９２年、ｐｐ．４９３〜５００）を用いたものがある。
【０００４】
【発明が解決しようとする課題】
ところが、この適応アルゴリズムは、回線に突発的かつ瞬間的な変動が現れる等の現象によって一時的に特性が変化した場合、高速の収束特性ゆえにその変動にも追従動作を示してしまう。即ち、回線変動の影響を長く引きずってしまうことがあり、結果的に低速な収束特性のアルゴリズムよりもエコー消去特性が悪化する場合がある。
【０００５】
この現象に対しては、一般的に忘却係数を用いて適応フィルタの内部状態の継続性を制限することで、変動要素の影響を長時間引きずらないようにする対策が行われている。
【０００６】
しかしながら、この場合、係数の更新に用いる内部状態の情報が制限されるため、収束特性が悪化してしまうことがある。
【０００７】
また、忘却係数を用いた場合でも、変動要素の混入に対する瞬間的なエコー消去特性の劣化による動作の不安定さが生じてしまうことがある。
【０００８】
【課題を解決するための手段】
前記課題を解決するために、本発明に係るエコーキャンセラは、通信中に生じるエコーを除去するエコーキャンセラにおいて、エコー除去処理の初期値として用いる初期値候補を複数格納しておく初期値データ格納部と、この初期値データ格納部に格納された初期値候補の中から、それぞれを適用した場合の残差信号を得て最適な初期値を特定する初期値判定部と、この初期値判定部で特定された初期値を初期値として、内部状態量を更新する内部状態更新部と、前記内部状態量を用いてエコーレプリカを作成する適応フィルタ部とを有し、前記初期値判定部は、当該エコーキャンセラにおいて、入力信号と出力信号がともにない状態から入力信号又は出力信号がある場合に変化したとき、入力信号と出力信号がともにある状態から入力信号又は出力信号がある場合に変化したとき、近端入力信号のパワーが所定のしきい値を超え、遠端入力信号のパワーが所定のしきい値を下回る場合のとき、又は、近端入力信号のパワーが所定のしきい値を下回り、遠端入力信号のパワーが所定のしきい値を超える場合のときのいずれか一方であるとき、最適な初期値を特定することを特徴とする。
【０００９】
前記構成により、入力信号がなくなって出力信号だけになったとき等のように、通信状態が変化したときに、初期値判定部で、初期値候補の中から、それぞれを適用した場合の残差信号を得て最適な初期値を特定する。この初期値を用いてエコー除去処理を開始する。これにより、収束速度を大幅に向上させることができ、迅速にエコーを除去することができる。
【００１０】
【発明の実施の形態】
次に本発明の実施形態を添付図面に基づいて説明する。
【００１１】
［第１の実施形態］
本実施形態に係るエコーキャンセラは、ＲＬＳアルゴリズムの収束動作における内部の状態遷移行列の初期値に着目し、状況に応じて予め設定された複数の初期値の中から最適な初期値を選択して用いることで、収束動作を促進するものである。即ち、ＲＬＳアルゴリズムの性質を利用し、初期値の最適な選択操作によって、より高速な収束特性を実現するものである。
【００１２】
図１に本実施形態に係るエコーキャンセラの構成を示す。図中の１０２は適応フィルタ部である。この適応フィルタ部１０２では、内部状態更新部１１０からのゲインベクトルk(t)によってフィルタ係数ｈ’(t) を更新すると共に、エコーレプリカＥＲを作成する。この更新は、後述の式（６）による。１０８は初期値データ格納部である。この初期値データ格納部１０８には、各種の条件に応じて、複数段階に設定した複数の初期値が格納されている。１０９は初期値判定部である。この初期値判定部１０９では、後述する式（３）により最適の初期値を選択する。内部状態更新部１１０は、初期値判定部１０９で選択された初期値でベクトルゲインk(t)及び内部状態変数P(t)を更新する。
【００１３】
［動作］
次に、前記構成のエコーキャンセラの動作を、図２のフローチャートに基づいて説明する。
【００１４】
遠端入力端子１０１からサンプル単位で入力された遠端入力信号Ｒｉｎは、近端出力端子１０３から出力されると共に、近端のエコーパス１０４でエコー信号ETを生じる。近端入力端子１０５からの入力信号Ｓｉｎには、エコー信号ETが１０６で加算され、信号Ｓｉｎ’となる。この信号Ｓｉｎ’は、エコーパス１０４での遅延時間をｄとすると、時刻ｔ＋ｄにおける近端入力信号となる。
【００１５】
また、遠端入力端子１０１からの遠端入力信号Ｒｉｎは、適応フィルタ部１０２、初期値判定部１０９及び内部状態更新部１１０にも入力し、各部で以下の処理が行われる。
【００１６】
まず、適応フィルタ部１０２で適用する初期値を選択する（ステップ１）。この初期値は、初期値データ格納部１０８に格納された初期値の中から予め任意に選択しておき、この初期値で動作させ、以下の各ステップで適正値に補正していく。
【００１７】
次に、初期値判定部１０９で、時刻ｔにおける遠端入力信号Ｒｉｎと近端入力信号Ｓｉｎとを受け、一定の基準に基づいて系の初期化を行うか否かを判定する（ステップ２）。一定の基準としては、通信状態が大きく変動する場合が用いられる。例えば、入力信号及び出力信号が両方ともにない状態から一方の信号だけが入出力された場合や、入出力信号が両方ともにある状態から一方の信号だけがなくなった場合等、近端入力信号Ｓｉｎのパワーと遠端入力信号Ｒｉｎのパワーが一定のしきい値を境に、一方が越え、他方が下回る場合である。このような場合に、系の初期化を開始する。以上の状態になっていないときには、系の初期化をせずに次の処理に進む。
【００１８】
ステップ２において初期化を開始すると判定したときには、初期値判定部１０９で、以下の式に基づいた評価方法によって、最適な初期値を選択する（ステップ３）。
【００１９】
まず、ゲインベクトルk(t)を次の式で求める。
【００２０】
k(t)＝｛PO(i) ｘ(t) ｝／｛λ＋ｘＴ (t)PO(i)ｘ(t) ｝    ……（１）
k(t) ：ｎ次元のゲインベクトル
ｘ(t) ：時刻ｔから過去ｎ個までの遠端入力Rinベクトル
λ  ：忘却係数（０＜λ≦１）
PO(i) ：ｎ×ｎ次元の初期値係数行列（初期値データ格納部１０８に格納された複数の初期値）
タップ長ｎのフィルタ係数（タップ係数）ｈ’(t) は、式（１）のゲインベクトルk(t)を用いて次の式のようになる。
【００２１】
ｈ’(t) ＝ｈ’(t-1) ＋k(t)（ｙ(t) −ｈ’Ｔ (t-1) ｘ(t) ）  ……（２）
ｈ’(t) ：タップ長ｎのフィルタ係数
ｙ(t)   ：時刻ｔにおける近端入力信号Ｓｉｎ’の値
このタップ長ｎのフィルタ係数ｈ’(t) を用いて評価値EOを求めると、次の式のようになる。
【００２２】
EO＝ｙ(t) −ｈ’Ｔ (t) ｘ(t)     ……（３）
EO  ：評価値
この（３）式において、初期値データ格納部１０８に格納された初期値係数行列PO(i) を順次読み出して評価値EOを計算し、この評価値EOが最少となるときの初期値係数行列PO(i) を初期値として選択する。
【００２３】
次いで、内部状態更新処理を行う（ステップ４）。具体的には、内部状態更新部１１０で、前述のようにして初期値判定部１０９で選択された初期値PO(i) を用いて、次式のように、内部状態変数P(t-1)を初期化する。
【００２４】
P(t-1)＝PO(i)       ……（４）
この初期化されたP(t-1)を用いて、遠端入力信号Ｒｉｎから、ゲインベクトルk(t)と内部状態変数P(t)とを更新する。それぞれの更新は以下の式に基づいて行われる。
【００２５】
k(t)＝｛P(t-1)ｘ(t) ｝／｛λ＋ｘＴ (t)P(t-1) ｘ(t) ｝  ……（５）
k(t)：ｎ次元のゲインベクトル
ｘ(t) ：時刻ｔから過去ｎ個までの遠端入力Rin ベクトル
λ  ：忘却係数（０＜λ≦１）
P(t-1)：ｎ×ｎ次元の内部状態変数行列
内部状態変数行列P(t)は、式（５）のゲインベクトルk(t)を用いて、次式のようになる。
【００２６】
P(t)＝｛１／λ｝×｛P(t-1)−k(t)ｘＴ (t)P(t-1) ｝   ……（６）
P(t)：ｎ×ｎ次元の内部状態変数行列
次いで、フィルタ係数の更新処理を行う（ステップ５）。具体的には、適応フィルタ部１０２で、近端入力信号Ｓｉｎ’とゲインベクトルk(t)によってフィルタ係数ｈ’(t) を更新する。更新は以下の式に基づいて行われる。
【００２７】
ｈ’(t) ＝ｈ’(t-1) ＋k(t)｛ｙ(t) −ｘＴ (t) ｈ’(t-1) ｝……（７）
ｙ(t) ：時刻ｔにおける近端入力信号Ｓｉｎ’の値
次いで、エコーレプリカの作成、減算処理を行う（ステップ６）。具体的には、適応フィルタ部１０２で、前記（７）式で更新した時刻ｔにおけるインパルス応答のフィルタ係数ｈ’(t) と遠端入力信号ＲｉｎとからエコーレプリカＥＲを作成する。この作成は以下の式の基づいて行われる。
【００２８】
ＥＲ＝ｈ’ (t) ｘ(t)                     ……（８）
ｘ(t) ：時刻ｔから過去ｎ個までの遠端入力信号Rinベクトルこの式（８）によって作成されたエコーレプリカＥＲが適応フィルタ部１０２から加算器１０７に出力される。加算器１０７では、近端入力信号Ｓｉｎ’からＥＲが減算されて、時刻ｔにおける残差信号ＺＳが計算される。この残差信号ＺＳは、遠端出力端子１１１から遠端出力信号Ｓｏｕｔとして出力される。
【００２９】
次いで、ステップ２に戻り、再び前記処理動作を繰り返す。ステップ２において、通信状態の変動がなければ、初期化はされず、ｔを１すすめて｛P(t-1)←P(t)，ｈ(t-1) ←ｈ(t) ｝の処理がされる。通信状態が変動したときには、変動した通信状態に近い初期値で初期化されてからその後の処理がなされる。
【００３０】
なお、前記処理以外は、ＲＬＳアルゴリズムに基づいて動作する。
【００３１】
［効果］
以上のように、初期値データ格納部１０８に複数の初期値が格納され、その中から最適な初期値を選択して用いることで、エコーパスに対する収束速度を大幅に向上させることができ、迅速なエコーの除去が可能になる。
【００３２】
［第２の実施形態］
本実施形態のエコーキャンセラは、ＲＬＳアルゴリズムの高速な収束特性をそのままに、一旦収束した後、高速故に収束動作が不安定になるのを解消するために、安定なアルゴリズムに切り替えるようにしたものである。具体的には、ＲＬＳアルゴリズムの性質を利用して、一旦収束した後、比較的安定な特性を有するＬＭＳアルゴリズムと同様の性質を持つ動作へ移行するようにした。
【００３３】
図３に本実施形態に係るエコーキャンセラの構成を示す。図中の２０２は適応フィルタ部である。この適応フィルタ部２０２では、時刻ｔにおける近端入力信号Ｓｉｎ’の値y(t)とゲインベクトルk(t)によって、インパルス応答の推定値であるタップ長ｎのフィルタ係数ｈ’(t) を更新すると共に、エコーレプリカＥＲを作成する。
【００３４】
２０９は収束判定部である。この収束判定部２０９では、エコー除去動作の収束状態を判定し、それに応じた制御信号ＣＣを出力する。このエコー除去動作の収束の判定は、例えば、時刻t-1 の残差信号ＺＳのパワーを監視する等の手法で行う。
【００３５】
２１０は内部状態更新部である。この内部状態更新部２１０では、収束判定部２０９からの制御信号ＣＣを受けて、時刻(t-1) での内部状態変数行列P(t-1)と、時刻ｔにおける過去ｎ個までの遠端入力信号Ｒｉｎによるベクトルx(t)とによって、ゲインベクトルk(t)及び内部状態変数行列P(t)を更新する。
【００３６】
［動作］
次に、前記構成のエコーキャンセラの動作を、図４のフローチャートに基づいて説明する。
【００３７】
前記第１の実施形態の場合と同様に、近端のエコーパス２０４でエコー信号ETを生じ、入力信号Ｓｉｎにエコー信号ＥＴが加算され、近端入力信号Ｓｉｎ’となる。
【００３８】
また、遠端入力端子２０１からの遠端入力信号Ｒｉｎは、適応フィルタ部２０２、収束判定部２０９及び内部状態更新部２１０にも入力し、各部で以下の処理が行われる。
【００３９】
まず、適応フィルタ部２０２で適用される内部状態の初期化が行われる（ステップ１１）。具体的には、次式（９）、（１０）に基づいて動作が開始される。
【００４０】
k(t)＝｛μｘ(t) ｝／｛λ＋μｘＴ (t) ｘ(t) ｝  ……（９）
k(t)：ｎ次元のゲインベクトル
μ ：ステップゲイン
ｘ(t) ：時刻ｔから過去ｎ個までの遠端入力Rin ベクトル
λ  ：忘却係数（０＜λ≦１）
P(t)＝αμＩ                            ……（１０）
P(t)：ｎ×ｎ次元の内部状態変数行列
α ：任意の係数
μ ：ステップゲイン
Ｉ ：単位行列
次に、収束判定部２０９で、エコー除去動作の収束状態を判定し、それに応じた制御信号ＣＣを出力する（ステップ１２）。
【００４１】
収束判定部２０９で、未収束と判定した場合には、内部状態更新部２１０で次式（１１）に基づいて内部状態を更新し、次式（１２）に基づいて未収束時の処理が動作する（ステップ１３）。
【００４２】
k(t)＝｛P(t-1)ｘ(t) ｝／｛λ＋ｘＴ (t)P(t-1) ｘ(t) ｝  ……（１１）
k(t)：ｎ次元のゲインベクトル
ｘ(t) ：時刻ｔから過去ｎ個までの遠端入力Rin ベクトル
λ ：忘却係数（０＜λ≦１）
P(t-1) ：ｎ×ｎ次元の内部状態変数行列
P(t)＝｛１／λ｝×｛P(t-1)−k(t)ｘＴ (t)P(t-1) ｝   ……（１２）
次いで、適応フィルタ部２０２で、タップ長ｎのフィルタ係数ｈ’(t) を更新する（ステップ１４）。具体的には、次式（１３）による。
【００４３】
ｈ’(t) ＝ｈ’(t-1) ＋k(t)｛ｙ(t) −ｘＴ (t) ｈ’(t-1) ｝……（１３）
ｙ(t) ：時刻ｔにおける近端入力Ｓｉｎ’の値
次いで、エコーレプリカの作成、減算処理を行う（ステップ１５）。具体的には、適応フィルタ部２０２で、前記（１３）式で更新したフィルタ係数ｈ’(t) と、時刻ｔから過去ｎ個までの遠端入力Rinベクトルｘ(t) とからエコーレプリカＥＲを作成する。具体的には、次式（１４）による。
【００４４】
ＥＲ＝ｈ’Ｔ (t) ｘ(t)                        ……（１４）
この後、ステップ１２に戻り、収束判定部２０９でエコー除去動作の収束状態を判定する。この判定により、依然として未収束状態と判定した場合には、ステップ１３からステップ１５までを繰り返す。収束状態と判定したい場合には、収束時の処理を行う。
【００４５】
この収束状態との判定を受けて、内部状態更新部２１０で前述の式（１１）に基づいて内部状態が更新され、次式（１５）に基づいて収束時の処理が動作する（ステップ１６）。なお、次式（１５）は、内部状態変数P(t)をμＩで近似させたものである。
【００４６】
P(t)＝μＩ                            ……（１５）
次いで、適応フィルタ部２０２で、フィルタ係数ｈ’(t) を、前述した式（１３）に基づいて更新する（ステップ１７）。さらに、前述した式（１４）に基づいて、エコーレプリカＥＲの作成、減算処理を行う（ステップ１８）。
【００４７】
次いで、前記ステップ１２での処理と同様にして収束状態を判定する（ステップ１９）。これにより、収束状態が維持されていれば、前記ステップ１６からステップ１８までを繰り返す。
【００４８】
一方、ステップ１９での判定で、収束状態から未収束状態に移行した場合には、内部状態を一定状態で初期化して、未収束状態の動作に戻る。具体的には、次式（１６）、（１７）による。
【００４９】
k(t)＝｛μｘ(t) ｝／｛λ＋μｘＴ (t) ｘ(t) ｝  ……（１６）
k(t)：ｎ次元のゲインベクトル
μ ：ステップゲイン
ｘ(t) ：時刻ｔから過去ｎ個までの遠端入力Rinベクトル
λ  ：忘却係数（０＜λ≦１）
P(t)＝αμＩ                            ……（１７）
P(t)：ｎ×ｎ次元の内部状態変数行列
α ：任意の係数
μ ：ステップゲイン
Ｉ ：単位行列
前記初期化をした後に、前記ステップ１３に戻って、未収束時の処理を行う。
【００５０】
［効果］
以上のように、未収束状態のときに、高速な収束特性を持つアルゴリズムに従って内部状態量を更新することで、エコー除去動作を迅速に収束状態にすることができる。さらに、一旦収束状態になった後は、安定なアルゴリズムに従って内部状態量を更新することで、迅速に収束した後のエコー除去動作を安定させることができる。これにより、エコー除去動作を迅速に収束させることができると共に、その後の動作を安定させることができる。
【００５１】
［変形例］
前記各実施形態では、エコーキャンセラに用いる適応アルゴリズムとしてＲＬＳアルゴリズムを用いた場合を例に説明したが、同様の特性を示すカルマンフィルタや、一般的なマイクとスピーカで生じるエコー等に対しても、本発明のエコーキャンセラを適用することで、前記各実施形態同様の効果を奏することができる。
【００５２】
また、前記各実施形態の機能を合わせてエコーキャンセラを構成してもよい。これにより、エコー除去動作をさらに迅速に収束させることができると共に、その後の動作を安定させることができるようになる。
【００５３】
【発明の効果】
以上、詳述したように、本発明のエコーキャンセラによれば、初期値データ格納部に複数の初期値候補が格納され、その中から最適な初期値を選択して用いることで、エコーパスに対する収束速度を大幅に向上させることができ、迅速なエコーの除去が可能になる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るエコーキャンセラを示す構成図である。
【図２】第１の実施形態に係るエコーキャンセラの処理機能を示すフローチャートである。
【図３】本発明の第２の実施形態に係るエコーキャンセラを示す構成図である。
【図４】第２の実施形態に係るエコーキャンセラの処理機能を示すフローチャートである。
【符号の説明】
１０２, ２０２：適応フィルタ部、１０８：初期値データ格納部、１０９：初期値判定部、１１０, ２１０：内部状態更新部、２０９：収束判定部。
【図１】
0003708040.tif 000002
【図２】
0003708040.tif 000003
【図３】
0003708040.tif 000004
【図４】
0003708040.tif 000005