(57)【特許請求の範囲】
【請求項１】
遠端入力信号を利用して擬似エコー信号を形成するフィルタと、上記擬似エコー信号を用いて近端入力信号に含まれるエコー成分を除去するエコー成分除去手段とを備えるエコーキャンセラにおいて、
遠端入力信号について、有音状態又は無音状態を検出する有音無音検出手段と、
上記有音無音検出手段により有音状態が検出されている間、近端入力信号に基づいて、上記フィルタに設定するフィルタ係数を求め、求めたフィルタ係数を上記フィルタに設定するフィルタ係数更新設定手段と、
上記有音無音検出手段により、有音状態が検出された場合に、遠端入力信号及び近端入力信号を取得する信号取得手段と、
上記信号取得手段が取得した遠端入力信号及び近端入力信号に基づいて、擬似遠端入力信号及び擬似近端入力信号を生成する擬似信号生成手段と、
上記擬似近端入力信号に含まれるエコー成分を、上記フィルタを用いて除去すると仮定した場合に、上記擬似遠端入力信号及び上記擬似近端入力信号に基づいて、上記フィルタに適用するフィルタ係数を求める潜行型フィルタ係数算出手段と、
上記有音無音検出手段により、無音状態から有音状態に遷移したことが検出されたとき、上記潜行型フィルタ係数算出手段が算出したフィルタ係数を、上記フィルタ係数更新設定手段が更新するフィルタ係数の初期値として設定するフィルタ係数初期値設定手段と
を有することを特徴とするエコーキャンセラ。
【請求項２】
上記信号取得手段は、上記有音無音検出手段により、無音状態から有音状態に遷移したことが検出された場合、その遷移を検出してから所定の時間の間、所定の間隔ごとに、遠端入力信号及び近端入力信号を取得することを特徴とする請求項１に記載のエコーキャンセラ。
【請求項３】
上記擬似信号生成手段が最近に生成した擬似遠端入力信号のうち複数の擬似遠端入力信号と、上記擬似信号生成手段が最近に生成した擬似近端入力信号のうち複数の擬似近端入力信号とを蓄積する擬似信号蓄積手段と、
上記擬似信号蓄積手段が蓄積している複数の擬似遠端入力信号を加算平均して合成擬似遠端入力信号を生成し、上記擬似信号蓄積手段が蓄積している複数の擬似近端入力信号を加算平均して合成擬似近端入力信号を生成する合成擬似信号生成手段とをさらに有し、
上記潜行型フィルタ係数算出手段は、上記合成擬似近端入力信号に含まれるエコー成分を、上記フィルタを用いて除去すると仮定した場合に、上記合成擬似遠端入力信号及び上記擬似近端入力信号に基づいて、上記フィルタに適用するフィルタ係数を算出する
ことを特徴とする請求項２に記載のエコーキャンセラ。
【請求項４】
上記潜行型フィルタ係数算出手段は、上記有音無音検出手段により、無音状態が検出されている間のみ上記フィルタに適用するフィルタ係数を算出することを特徴とする請求項１〜３のいずれかに記載のエコーキャンセラ。
【請求項５】
上記潜行型フィルタ係数算出手段が、上記フィルタに適用するフィルタ係数の算出を開始又は再開するときに、上記フィルタ係数更新設定手段が算出したフィルタ係数を、上記潜行型フィルタ係数算出手段がフィルタ係数を算出する初期値に設定する潜行型フィルタ係数初期値設定手段をさらに有することを特徴とする請求項４に記載のエコーキャンセラ。
【請求項６】
上記合成擬似信号生成手段は、複数の擬似遠端入力信号を重み付平滑計算により合成擬似遠端入力信号を生成し、複数の擬似近端入力信号を重み付平滑計算により合成擬似近端入力信号を生成することを特徴とする請求項３〜５のいずれかに記載のエコーキャンセラ。
【請求項７】
遠端入力信号を利用して擬似エコー信号を形成するフィルタと、上記擬似エコー信号を用いて近端入力信号に含まれるエコー成分を除去するエコー成分除去手段とを備えるエコーキャンセラに搭載されたコンピュータを、
遠端入力信号について、有音状態又は無音状態を検出する有音無音検出手段と、
上記有音無音検出手段により有音状態が検出されている間、近端入力信号に基づいて、上記フィルタに設定するフィルタ係数を求め、求めたフィルタ係数を上記フィルタに設定するフィルタ係数更新設定手段と、
上記有音無音検出手段により、有音状態が検出された場合に、遠端入力信号及び近端入力信号を取得する信号取得手段と、
上記信号取得手段が取得した遠端入力信号及び近端入力信号に基づいて、擬似遠端入力信号及び擬似近端入力信号を生成する擬似信号生成手段と、
上記擬似近端入力信号に含まれるエコー成分を、上記フィルタを用いて除去すると仮定した場合に、上記擬似遠端入力信号及び上記擬似近端入力信号に基づいて、上記フィルタに適用するフィルタ係数を求める潜行型フィルタ係数算出手段と、
上記有音無音検出手段により、無音状態から有音状態に遷移したことが検出されたとき、上記潜行型フィルタ係数算出手段が算出したフィルタ係数を、上記フィルタ係数更新設定手段が更新するフィルタ係数の初期値として設定するフィルタ係数初期値設定手段と
して機能させることを特徴とするエコーキャンセルプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エコーキャンセラ及びエコーキャンセルプログラムに関し、例えばハンズフリー電話端末に適用し得る。
【背景技術】
【０００２】
近年ＶｏＩＰの普及にともない、通信量が安価になり、家庭やオフィスにおいては以前よりも通話料を気にかけずに電話ができるようになってきた。結果、通話時間が従来よりも長くなるケースが多くなった。このような環境の変化にともない、電話端末のハンドセットを長時間通話の間中、ずっと耳に押し当てておく苦痛を解消させるために「ハンズフリー電話端末」装置の普及の要求が急速にたかまってきた。ハンズフリーを実現する最も簡単な方法はイヤホンやヘッドホンを装着することであるが、長時間イヤホンを使ったのでは、やはり耳穴とイヤホンのこすれ、爛れを起こす結果になり苦痛を生じ、ヘッドセットの使用でも長時間の装着違和感のために疲労を起こしてしまう。このような近年の機器の変化中でイヤホンを装着しなくてもハンズフリーを実現できる、実用的で安価なスピーカフォン形式のハンズフリー電話端末の普及が望まれている。
【０００３】
このようなスピーカフォンでハンズフリーを実現するために「音響エコーキャンセラ」をもちいて電話機をハンズフリーにすることが知られており、実際実用に供されている。従来音響エコーキャンセラを動作させるためのエコーキャンセラには非特許文献１に開示されているような、適応フィルタ技術を使うのが通例であり、中でもＮＬＭＳアルゴリズムは、収束速度が遅く、特に音声信号のような「有色信号」で収束が劣化するとうい欠点と引き換えても、動作の安定性に優れて電話機に実装することができるため、広くエコーキャンセラに使われており、今後も有力なアルゴリズムのひとつであることに変わりはない。
【０００４】
上述のように今後一層のハンズフリー通話の普及が予想される現状では、企業会議室向けの高価で装置規模の大きい機器でハンズフリーが出来ればよいだけでなく、たとえば家庭でも設置が可能な装置規模、価格が廉価で高性能のハンズフリー電話機が望まれてくる。しかも従来の電話音質をしのぐ広帯域音声での通話が可能になる機器が、すでにＶｏＩＰの普及にともなって需要が拡大しはじめており、ハンズフリー機器やそれに含まれるエコーキャンセラも、広帯域音声で利用可能なものが望まれている。
【０００５】
従来、広く使われている安定なＮＬＭＳ適応フィルタ更新アルゴリズムを広帯域向けの音響エコーキャンセラとしてそのまま流用しようとすると、演算量と安定性の点で問題があった。細かなサンプリングを実施して広帯域音質を実現するためにサンプリング速度は上昇するからである。例えば、従来８ｋＨｚ帯域の音声品質が１６ｋＨｚ帯域の音声品質になるとサンプリング周波数が２倍になるので、単位時間に処理すべきデータサンプルも２倍になる。
【０００６】
一方でサンプリングされる側である音響エコー経路の時間的長さは変わらない。なぜなら、エコー経路の時間応答長はスピーカから出力された音声信号が空間を経由してマイクに到達する「エコー経路」を音が経由する時間が基本であるので、エコー経路の応答長は、マイクースピーカの距離や、音速、部屋の反響経路の数、反射のなどの「物理量」で決まる長さであって、デジタル処理のためのサンプリング速度とは関係ない独立で特有の応答時間長をもつからである。
【０００７】
したがって適応フィルタのタップ数はサンプリング周波数の上昇に応じて大きくなってしまう。一方、エコーキャンセラを実現する適応フィルタのタップ数が大きくなるとエコーキャンセラの収束は遅くなる。このような収束速度の低下を回避する技術が非特許文献１に述べられている。例えば、収束速度を改善するためには、非特許文献１に開示されるＮＬＭＳアルゴリズムのような高度に複雑な演算を用いた高度な同定アルゴリズムをつかうことになる。しかし、このような高速収束アルゴリズムは動作の安定性に乏しいだけでなく、演算規模、メモリ容量規模も非常に大きくなる。すなわち、通話品質が不安定な上に、ハードウェアやソフトウエアの規模が大きく、コストが高くになるという問題点があった。
【０００８】
一方で、従来の安定なアルゴリズム、例えば、現在広く用いられている公知のＮＬＭＳをそのまま使うと、今度は有色信号での性能劣化や、タップ長が大きくなった分の収束速度劣化などをそのまま被ってしまうので、こんどはエコーを除去するまでの収束時間がかかり、通話品質の劣化を解決できないという問題点があった。
【０００９】
上述のような問題に対して、特許文献１では、適応フィルタの係数を逐次補正するエコーキャンセラの制御方法において、この推定値の逐次補正におけるステップゲインを推定インパルス応答長と、装置の動作開始からの経過時間で制御しステップゲインを時間と共に減少させることにより、収束開始時の収束速度が大きく、定常時の推定精度が高い収束特性を実現するエコーキャンセラが開示されている。
【特許文献１】特開平０８−２３７１７４号公報
【非特許文献１】「適応フィルタ入門」，Ｓ．へイキン著，現代工学社，Ｐ１４９〜Ｐ１５８
【非特許文献２】「技術参考資料  電話サービスのインタフェース  第５版」，東日本電信電話株式会社編，Ｐ１９〜Ｐ２１，[Online]，INTERNET，[２００７年１０月９日検索]，＜ＵＲＬ：http://www.ntt-east.co.jp/gisanshi/analog/edit5j.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に記載の技術においても有色性信号による適応フィルタの収束速度の劣化は避けることができなかった。また、一旦呼制御トーン信号などで収束してしまった後、いろいろな周波数成分を含む音声信号が入力された場合などは、むしろステップゲインを小さくしてしまった分、トーン成分だけで推定したエコー経路から、音声帯域をカバーするための適応フィルタの再収束がむしろ阻害されてしまい、エコーの収束時間が長くなるという問題点があった。
【００１１】
そこで、低コストでエコーの収束時間を短くすることができるエコーキャンセラが望まれている。
【課題を解決するための手段】
【００１２】
第１の本発明のエコーキャンセラは、（１）遠端入力信号を利用して擬似エコー信号を形成するフィルタと、上記擬似エコー信号を用いて近端入力信号に含まれるエコー成分を除去するエコー成分除去手段とを備えるエコーキャンセラにおいて、（２）遠端入力信号について、有音状態又は無音状態を検出する有音無音検出手段と（３）上記有音無音検出手段により有音状態が検出されている間、近端入力信号に基づいて、上記フィルタに設定するフィルタ係数を求め、求めたフィルタ係数を上記フィルタに設定するフィルタ係数更新設定手段と、（４）上記有音無音検出手段により、有音状態が検出された場合に、遠端入力信号及び近端入力信号を取得する信号取得手段と、（５）上記信号取得手段が取得した遠端入力信号及び近端入力信号に基づいて、擬似遠端入力信号及び擬似近端入力信号を生成する擬似信号生成手段と、（６）上記擬似近端入力信号に含まれるエコー成分を、上記フィルタを用いて除去すると仮定した場合に、上記擬似遠端入力信号及び上記擬似近端入力信号に基づいて、上記フィルタに適用するフィルタ係数を求める潜行型フィルタ係数算出手段と、（７）上記有音無音検出手段により、無音状態から有音状態に遷移したことが検出されたとき、上記潜行型フィルタ係数算出手段が算出したフィルタ係数を、上記フィルタ係数更新設定手段が更新するフィルタ係数の初期値として設定するフィルタ係数初期値設定手段とを有することを特徴とする。
【００１３】
第２の本発明のエコーキャンセルプログラムは、（１）遠端入力信号を利用して擬似エコー信号を形成するフィルタと、上記擬似エコー信号を用いて近端入力信号に含まれるエコー成分を除去するエコー成分除去手段とを備えるエコーキャンセラに搭載されたコンピュータを、（２）遠端入力信号について、有音状態又は無音状態を検出する有音無音検出手段と、（３）上記有音無音検出手段により有音状態が検出されている間、近端入力信号に基づいて、上記フィルタに設定するフィルタ係数を求め、求めたフィルタ係数を上記フィルタに設定するフィルタ係数更新設定手段と、（４）上記有音無音検出手段により、有音状態が検出された場合に、遠端入力信号及び近端入力信号を取得する信号取得手段と、（５）上記信号取得手段が取得した遠端入力信号及び近端入力信号に基づいて、擬似遠端入力信号及び擬似近端入力信号を生成する擬似信号生成手段と、（６）上記擬似近端入力信号に含まれるエコー成分を、上記フィルタを用いて除去すると仮定した場合に、上記擬似遠端入力信号及び上記擬似近端入力信号に基づいて、上記フィルタに適用するフィルタ係数を求める潜行型フィルタ係数算出手段と、（７）上記有音無音検出手段により、無音状態から有音状態に遷移したことが検出されたとき、上記潜行型フィルタ係数算出手段が算出したフィルタ係数を、上記フィルタ係数更新設定手段が更新するフィルタ係数の初期値として設定するフィルタ係数初期値設定手段として機能させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、低コストでエコーの収束時間を短くするエコーキャンセラを提供することができる。
【発明を実施するための最良の形態】
【００１５】
（Ａ）第１の実施形態
以下、本発明によるエコーキャンセラ及びエコーキャンセルプログラムの第１の実施形態を、図面を参照しながら詳述する。
【００１６】
（Ａ−１）第１の実施形態の動作
図１は、第１の実施形態のエコーキャンセラ１の機能的構成を示すブロック図である。
【００１７】
遠端から入力された遠端入力信号X(n)が受信入力端子受信入力端子Ｒｉｎ、受信出力端子Ｒｏｕｔを介して、スピーカＳＰに出力される。そして、スピーカＳＰから音響信号が放出され、近端話者に供せられる。一方、スピーカＳＰから放出された音響信号は、マイクロホンＭＩＣに漏れこみ、エコーY(n)として送信側入力端子Ｓｉｎ、送信側出力端子Ｓｏｕｔを介して遠方に出力される。エコーキャンセラ１は、このような音響エコーを消去（除去）するものである。また、スピーカＳＰ、マイクロホンＭＩＣを有する近端側の端末が、例えば、２線−４線変換回路（ハイブリッド回路ともいう）を備え、回線エコーが発生する場合には、回線エコーの消去（除去）にエコーキャンセラ１を用いても良い。
【００１８】
エコーキャンセラ１は、上述のようなエコーを消去するものであって、通常適応フィルタ部１０、潜行型適応フィルタ部２０、音声検出器３０、タイミング制御部４０、適応モード制御部５０を有している。
【００１９】
遠端入力信号X(n)がデジタル信号である場合には、Ｄ／Ａ（デジタル／アナログ）変換器を別途設けて、アナログ信号に変換してスピーカＳＰに入力するようにしても良い。又、近端から入力される近端入力信号が、デジタル信号である必要がある場合には、Ａ／Ｄ（アナログ／デジタル）変換器を別途設けてマイクロホンＭＩＣから出力されたアナログ信号をデジタル信号に変換して、近端入力信号として出力しても良い。ここでは、エコーキャンセラ１の各部に入力される遠端入力信号及び近端入力信号は、デジタル信号であるものとして説明する。遠端入力信号及び近端入力信号がアナログ信号である場合には、別途Ｄ／Ａ変換器、Ａ／Ｄ変換器を設けて変換して入出力するようにしても良い。
【００２０】
また、エコーキャンセラ１は、例えば、ＤＳＰなどの専用チップにより実現しても良いし、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭ、ハードディスクなどのプログラムの実行構成（１台に限定されず、複数台を分散処理し得るようにしたものであっても良い。）に、実施形態のエコーキャンセルプログラム等をインストールすることにより構築しても良いが、機能的には図１のように表すことができる。
【００２１】
音声検出器３０は、受信側入力端子Ｒｉｎを介して入力される遠端入力信号X(n)において、有音又は無音を検出し、有音状態又は無音状態に応じた信号を、タイミング制御部４０及び適応モード制御部５０に与えるものである。
【００２２】
有音・無音の検出には、例えば、信号のパワー長期平均とパワー短期平均を計算し、両者の計算結果の牽離の大きさに基づいて検出方法を用いてもよい。例えば、パワー長期平均を５ｓｅｃの平均値LPO_Lとし、パワー短期平均を３０ｍｓｅｃの平均値LPO_Sとし、検出マージンをＶＤ＿δ（ここではでは６ｄＢとする）とした場合、下記の（１）式が成立したときに有音を検出し、成立しないときは無音を検出しても良い。
【００２３】
LPO_S  ≧  LPO_L  +  VD_δ…（１）
音声検出器３０が有音を検出した場合にタイミング制御部４０及び適応モード制御部５０に与える信号（以下、「v_flg」と表す）は、例えば、有音区間の場合には「v_flg＝１」、無音区間の場合には「v_flg＝０」としても良い。
【００２４】
通常適応フィルタ部１０、潜行型適応フィルタ部２０は、いずれもエコーY(n)消去のための適応動作（フィルタの係数ベクトル（フィルタ係数）の更新）をするものであるが、通常適応フィルタ部１０、潜行型適応フィルタ部２０が同時に適応動作はせず、いずれか一方のみが適応動作するものである。通常適応フィルタ部１０は、音声検出器３０により有音が検出された場合にのみ適応動作し、潜行型適応フィルタ部２０は無音区間が検出されている場合のみ適応動作を行う。なお、潜行型適応フィルタ部２０は無音区間、通常適応フィルタ部１０は有音区間であっても、適応動作を行わない区間があっても良い。通常適応フィルタ部１０、潜行型適応フィルタ部２０が適応動作を行う区間の詳細については後述する。
【００２５】
通常適応フィルタ部１０は、通常擬似エコー作成部１１、通常フィルタ係数適応部１２、ＳＷ１３、ＳＷ１４、加算器１５を有している。
【００２６】
通常擬似エコー作成部１１は、擬似エコーを作成し、加算器１５に与えるものであり、適応フィルタ係数部１１１、積和演算部１１２、保持レジスタ１１３を有している。
【００２７】
適応フィルタ係数部１１１は、通常適応フィルタ部１０において適用する係数ベクトルのデータを格納し、積和演算部１１２に与える。適応フィルタ係数部１１１に格納する係数ベクトルは、ＳＷ１３を介して通常フィルタ係数適応部１２又は、潜行型適応フィルタ部２０（後述する無音区間適応促進部２４）から与えられた係数ベクトルとなる。ＳＷ１３の詳細については後述する。
【００２８】
保持レジスタ１１３は、遠端入力信号X(n)の値のデータを格納し、積和演算部１１２に与えるものである。
【００２９】
積和演算部１１２は、適応フィルタ係数部１１１から与えられたベクトル係数と、保持レジスタ１１３から与えられた値を積和演算（畳み込み演算ともいう）し、積和演算した結果（以下、「擬似エコーy'(n)」と表す）を、ＳＷ１４を介して加算器１５に与える。なお、ＳＷ１４の詳細に関しては後述する。
【００３０】
加算器１５は、送信側入力端子Ｓｉｎを介して近端側から与えられる信号と、通常擬似エコー作成部１１からの擬似エコーy'(n)とが入力されると、加算相殺（近端側から与えられる信号から、擬似エコーy'(n)を減算する）して残差信号ｅ（ｎ）を生成し、送信側出力端子Ｓｏｕｔを介して遠方に出力する。又、加算器１５は、残差信号ｅ（ｎ）を、通常フィルタ係数適応部１２にも与える。
【００３１】
通常フィルタ係数適応部１２は、加算器１５から与えられた残差信号ｅ（ｎ）に応じて擬似エコーy'(n)を作成するための係数ベクトルを計算し、ＳＷ１３を介して適応フィルタ係数部１１１に与えるものである。通常フィルタ係数適応部１２は、近端入力信号として、エコーY(n)以外の信号が入力された場合、すなわち、近端入力信号が有音状態となっている場合には、それを検出して、係数ベクトルを計算する適応動作を行わないようにしても良い。又、音声検出器３０において、無音状態が検出されている間は、適応動作を行わないようにしても良い。
【００３２】
潜行型適応フィルタ部２０は音声検出器３０の検出結果が「有音状態」のときに音声データを収集、加工して準備だけをすすめ、音声検出器３０の検出結果が「無音状態」の時に主体となってもっぱらエコーの同定（エコー経路の同定としても意味は同じ）を行うものである。潜行型適応フィルタ部２０は見かけ上無音期間にエコーキャンセラの係数更新を進行させる適応フィルタといえる。
【００３３】
潜行型適応フィルタ部２０は、受信側加算データ選択部２１１、受信側加算データ加工部２２１、受信側加算データ保存部２３１、送信側加算データ選択部２１２、送信側加算データ加工部２２２、送信側加算データ保存部２３２、無音区間適応促進部２４、加算器２５を有している。
【００３４】
ＳＷ１４は、図１において図示は省略しているが、適応モード制御部５０の制御に応じて動作するスイッチであって、通常擬似エコー作成部１１（積和演算部１１２）から、加算器１５に擬似エコーy'(n)を与えるか否かを選択するものである。また、ＳＷ１３は、適応モード制御部５０の制御に応じて動作するスイッチであって、適応フィルタ係数部１１１に与えるベクトル係数について、通常フィルタ係数適応部１２又は、潜行型適応フィルタ部２０（後述する無音区間適応促進部２４）のいずれかを選択するものである。
【００３５】
潜行型適応フィルタ部２０は、受信側加算データ選択部２１１、受信側加算データ加工部２２１、受信側加算データ保存部２３１、送信側加算データ選択部２１２、送信側加算データ加工部２２２、送信側加算データ保存部２３２、無音区間適応促進部２４、加算器２５を有している。
【００３６】
図６は、無音区間適応促進部２４の内部構成を示したブロック図である。
【００３７】
無音区間適応促進部２４は、適応フィルタ係数部２４１、積和演算部２４２、保持レジスタ２４３、潜行型フィルタ係数適応部２４４を有している。
【００３８】
受信側加算データ選択部２１１は、タイミング制御部４０により制御されたタイミング（ＫＥＥＰ信号が入力されている間）で、遠端入力信号X(n)のデータ（サンプル値）を所定のサンプリング間隔で取得し、受信側加算データ加工部２２１に与えるものである。送信側加算データ選択部２１２も同様に、タイミング制御部４０により制御されたタイミングで、マイクロホンＭＩＣから入力された近端入力信号（エコーY(n)）のデータ（値）を、所定のサンプリング間隔で取得し、送信側加算データ加工部２２２に与えるものである。受信側加算データ選択部２１１、送信側加算データ選択部２１２によるデータ選択の詳細については、後述する動作説明で明らかにする。
【００３９】
受信側加算データ加工部２２１は、受信側加算データ選択部２１１から与えられたデータに基づいて、後述する遠端入力信号
X(n)を擬似的に表したデータベクトルを生成するものである。送信側加算データ加工部２２２も同様に、送信側加算データ選択部２１２から与えられたデータに基づいて後述するデータベクトルを生成し、送信側加算データ保存部２３２に与えるものである。受信側加算データ加工部２２１、送信側加算データ加工部２２２によるデータ加工（データベクトルの生成）の詳細については、後述する動作説明で明らかにする。
【００４０】
また、受信側加算データ加工部２２１は、後述するデータベクトルを生成が完了すると、適応モード制御部５０に対して、無音区間での適応フィルタ更新準備ができたことを知らせる制御信号（以下「steals_adapt_go」と表す）を出力する。
【００４１】
受信側加算データ保存部２３１は、受信側加算データ加工部２２１から与えられたデータベクトルのデータを保存し、無音区間適応促進部２４（適応フィルタ係数部２４１）に与えるものである。
【００４２】
送信側加算データ保存部２３２は、送信側加算データ加工部２２２から与えられたデータベクトルのデータを保存し、加算器２５に与える。
【００４３】
保持レジスタ２４３は、受信側加算データ保存部２３１からデータベクトルのデータが与えられると、そのデータを保存し、積和演算部２４２に与える。
【００４４】
適応フィルタ係数部２４１は、潜行型フィルタ係数適応部２４４から、係数ベクトルが与えられると、その係数ベクトルを、積和演算部２４２及び、適応フィルタ係数部１１１に与える。
【００４５】
積和演算部２４２は、適応フィルタ係数部２４１から与えられた係数ベクトルと、保持レジスタ２４３から与えられたデータベクトルを積和演算（畳み込み演算ともいう）し、演算結果の値を加算器２５に与える。
【００４６】
加算器２５は、送信側加算データ保存部２３２から与えられたデータベクトルから、積和演算部２４２から与えられた値を減算し、残差を潜行型フィルタ係数適応部２４４に与えるものである。
【００４７】
潜行型フィルタ係数適応部２４４は、加算器２５から与えられた信号に基づいて、ＡＤＦにおける係数ベクトルを計算し、適応フィルタ係数部２４１に与えるものである。
【００４８】
タイミング制御部４０は、音声検出器３０から与えられる制御信号（v_flg）に応じて、後述する潜行型適応フィルタ部２０（受信側加算データ選択部２１１、送信側加算データ選択部２１２）に、遠端入力信号又は近端入力信号を取り込むタイミングを指示する信号（以下「ＫＥＥＰ信号」と表す）を与えるものである。タイミング制御部４０では、音声検出器３０から与えられる制御信号（v_flg）が、v_flg＝０から、v_flg＝１に遷移した際に、所定の時間ＫＥＥＰ信号を出力するようにしても良い。
【００４９】
適応モード制御部５０は、音声検出器３０、タイミング制御部４０から与えられる制御信号に応じて、通常適応フィルタ部１０及び潜行型適応フィルタ部２０を制御するものである。
【００５０】
適応モード制御部５０において、音声検出器３０から、v_flg＝１が与えられると、適応モード制御部５０は、ＳＷ１３を端子ｂ１に接続させるとともに、ＳＷ１４を端子ｂ２に接続させる。この場合、通常フィルタ係数適応部１２において計算された係数ベクトルが、通常擬似エコー作成部１１（適応フィルタ係数部１１１）に与えられ、通常擬似エコー作成部１１（積和演算部１１２）において生成された擬似エコーy'(n)が、加算器１５に与えられることになる。
【００５１】
適応モード制御部５０において、音声検出器３０から、v_flg＝０が与えられると、適応モード制御部５０は、ＳＷ１３を端子ａ１に接続させるとともに、ＳＷ１４を端子ａ２に接続させる。この場合、潜行型適応フィルタ部２０（無音区間適応促進部２４）において計算された係数ベクトルが、通常擬似エコー作成部１１（適応フィルタ係数部１１１）に与えられるが、通常擬似エコー作成部１１（積和演算部１１２）において生成された擬似エコーy'(n)は、加算器１５に与えられないことになる。
【００５２】
また、適応モード制御部５０は、音声検出器３０から与えられる制御信号（v_flg）及び、受信側加算データ加工部２２１から与えられる制御信号（keep_flag_on_to_off）に応じて、無音区間適応促進部２４（潜行型フィルタ係数適応部２４４）の動作を制御する。適応モード制御部５０による、無音区間適応促進部２４（潜行型フィルタ係数適応部２４４）の制御の詳細については後述する動作説明において明らかにする。
【００５３】
（Ａ−２）第１の実施形態の動作
次に、以上のような構成を有するこの実施形態のエコーキャンセラ１の動作を説明する。
【００５４】
（Ａ−２−１）通常適応フィルタ部の動作について。
【００５５】
まず、通常適応フィルタ部１０の動作について説明する。
【００５６】
ここでは、初期状態として、ＳＷ１３は端子ｂ１に接続され、ＳＷ１４は、端子ｂ２に接続しているものとする。
【００５７】
まず、受信側入力端子Ｒｉｎから出力された遠端入力信号X(n)は、保持レジスタ１１３に格納され、データベクトルX(n)として取り扱われる。ここでデータベクトルX(n)は以下の（２）式で表されるものとする。
【数１】
0005061853.tif 000002
【００５８】
ｎはサンプル順、Ｎはフィルタのタップ数（例えば、１０２４としても良い）ｔは行列の転置を表している。すなわち、(２)式は現在の時刻ｎを開始時点とし、過去のＮサンプルまでを保持したデータの集まりが、ベクトルX(n)を構成していることを表している。
【００５９】
一方、適応フィルタ係数部１１１にはフィルタの係数が格納されており、Ｎ個の係数値を持つ。係数の値は後述するように、通常フィルタ係数適応部１２で時々刻々と更新される。ここでは、通常フィルタ係数適応部１２のＮ個の係数も以下の（３）式のように１つの係数ベクトルH(n)として扱う。
【数２】
0005061853.tif 000003
【００６０】
ここでのＮはフィルタのタップ数（例えば、１０２４としても良い）である。積和演算部１１２では適応フィルタ係数部１１１の係数H(n)と保持レジスタ１１３のX(n)をうけ、以下の（４）式のように、ベクトルの積y'(n)を計算するが、このy'(n)が擬似エコーである。なお、ベクトルの積の結果であるy'(n)は１つの値を持つ、スカラー値である。
【数３】
0005061853.tif 000004
【００６１】
上述のように作成された擬似エコーy'(n)はＳＷ１４に与えられる。初期状態においてＳＷ１４は、上述の通り、適応モード制御部５０の制御によって、端子ｂ２に接続されているので、y'(n)は加算器１５に与えられる。
【００６２】
加算器１５では、上述のように、スピーカＳＰからマイクロホンＭＩＣに漏れこんだ信号すなわちエコー信号Y(n)が入力されており、以下の式（５）のように、スピーカＳＰからの信号を加算相殺して残差信号ｅ（ｎ）を計算して、送信側出力端子Ｓｏｕｔに出力する。
【００６３】
e(n)=y(n)-y'(n)  …（５）
送信側出力端子Ｓｏｕｔから出力した信号は図示しない遠端への信号として出力される。一方、加算器１５の出力である残差信号ｅ（ｎ）は、通常フィルタ係数適応部１２に出力され、以下の（６）式のように、例えば、ＮＬＭＳアルゴリズム（学習同定法と同様）を用いて、あらたな適応フィルタのフィルタ係数値を計算し、更新する。
【数４】
0005061853.tif 000005
【００６４】
上記の（６）式は、e(n)、X(n)から、次回の擬似エコー作成に用いる適応フィルタ係数部１１１の係数ベクトルが作成されることを示している。通常フィルタ係数適応部１２で作成された係数ベクトルは、ＳＷ１４を経由して適応フィルタ係数部１１１に出力され、次回の擬似エコーの作成に備えられる。上記の（６）式の係数更新が進行し、上記の（５）式の残差信号e(n)は徐々に小さくなり、やがて十分にe(n)が小さくなると、上記の（６）式で係数の変化が起きなくなり、これが「適応フィルタが収束した」状態となる。以上のように、音声検出器３０の出力が有音のとき、第１の実施形態のエコーキャンセラは通常適応フィルタ部１０が主体となってエコーY(n)の同定と打消しを担う。
【００６５】
（Ａ−２−２）潜行型適応フィルタ部の動作について。
【００６６】
次に、潜行型適応フィルタ部２０の動作の詳細について説明する。
【００６７】
まず、前述の説明と同様に、遠端入力信号X(n)が音声検出器３０に与えられ、有音状態が検出されると、v_flg＝１がタイミング制御部４０に入力される。そして、タイミング制御部４０は、受信側加算データ選択部２１１、送信側加算データ選択部２１２にKEEP信号を出力する。加算データ選択部２１１，２１２ではKEEPが与えられる間、入力信号を取り込む。  すなわち受信側加算データ選択部２１１KEEPが与えられる間、遠端入力信号X(n)を取り込みつつ一旦保存する。送信側加算データ選択部２１２はKEEPが与えられる間、近端入力信号Y(n)を取り込みつつ一旦保存する。
【００６８】
タイミング制御部４０では、一旦v_flg＝１が入力されると、その時点からカウントして、あらかじめ定めたサンプル数ＬＥＮＧＴＨに達するまでは以後の音声信号の有無にかかわらず信号KEEPを出力する。すなわち、一旦v_flg＝１が入力されれば、データサンプルＬＥＮＧＴＨ個の中には音声データサンプルと無音サンプルが混じっていることになる。ＬＥＮＧＴＨは、例えば３８４００としても良い。
【００６９】
図２は、受信側加算データ選択部２１１（送信側加算データ選択部２１２）の動作を説明したタイミングチャートである。
【００７０】
図２において、図２（Ａ）は音声の有無の区間を模擬的に表したもので、黒い部分が音声のある部分を示しており、音声検出器３０がv_flg＝１を出力する部分である。
【００７１】
図２（Ｂ）は、一旦v_flg＝１を受けたタイミング制御部４０がＬＥＮＧＴＨの期間だけ音声サンプルを切り出す時間切り出し窓を表しており、いったん切り出しを開始すると、切り出し区間中のv_flgの値には関わり無く音声を切り出す様子を示したものである。
【００７２】
図２（Ｃ）は、タイミング制御部４０の制御によって、音声データブロックが切り出しを受けた結果、作成されるベクトルの様子を示すものであり、図２では、例として、以下の（７）式に示すようなX０〜X５の最大６個のベクトルが作成される様子が示されている。
【数５】
0005061853.tif 000006
【００７３】
図２においては、説明を簡易にするために音声がある部分は黒い部分であり、振幅もすべて固定として記載している。また、図２においては、最大６個のベクトルを作成することとして説明するが、ベクトルの個数はこれに限定されないものである。
【００７４】
一方、送信側加算データ選択部２１２でもデータの切り出しを実施するが、送信側加算データ選択部２１２のデータ切り出しも、タイミング制御部４０のデータ切り出し信号KEEPがあるときだけ端子Ｓｉｎからの信号Y(n)を切り出し保存する。すなわち、音声データ切り出しのタイミングはあくまでも受信側入力端子Ｒｉｎ側の音声検出器３０の音声検出結果v_flgによっている。上述したように、Y(n)はエコー信号であるから、エコー経路を経てきた分遅延（以下、「遅延ｄ」と表す）が時間遅れとして含まれている。
【００７５】
図２（Ｄ）は、エコー信号を示しており、図２（Ａ）に示す信号がエコーとなってY(n)としてサンプリングされ、送信側加算データ選択部２１２のベクトルが作成される様子を示している。データの切り出しタイミングはタイミング制御部４０からの信号KEEPによるので、図２（Ｂ）の切り出しタイミングと同一であるから、図２においては、図２（Ｄ）の信号を、切り出し窓（図２（Ｂ）でも図２（Ｅ）でも同じ）を用いて、エコー経路を経由してマイクロホンＭＩＣに集音された信号を切り出すことに相当し、以下の（８）式のように表される。
【数６】
0005061853.tif 000007
【００７６】
受信側加算データ選択部２１１、送信側加算データ選択部２１２は上述の様に動作し、以後もデータの選択と蓄積を継続するが、予め定めた本数のベクトルを蓄積すると、今度は古い順にデータを上書きしていく。例えば、ここでは予め６本のベクトルを蓄積するように設定した。この場合ではたとえば、ベクトルX5、Y5が蓄積し終わると、今度は図示しない最初のベクトルデータ格納エリア（メモリ）に戻って、
X0=[X(n0)…X(n0+LENGTH-1)]、
Y0=[y(n0)…(n0+LENGTH-1)]
を、
X6=[X(n6)…X(n6+LENGTH-1)]、
Y6=[y(n6)…(n6+LENGTH-1)]
で上書きしながらデータベクトルを蓄積していく。
【００７７】
受信側加算データ選択部２１１、送信側加算データ選択部２１２によって作成された入力ベクトルは、受信側加算データ加工部２２１、送信側加算データ加工部２２２に、各々与えられる。また、受信側加算データ選択部２１１、送信側加算データ選択部２１２は、１本のデータベクトルが出来上がるたびに加算タイミング信号「keep_flag_on_to_off＝１」を、受信側加算データ加工部２２１、送信側加算データ加工部２２２に出力し、それ以外のときは何も出力しないようにしても良い。（もしくは、keep_flag_on_to_off＝０を出力するようにしても良い。）
受信側加算データ加工部２２１、送信側加算データ加工部２２２は、以下のように動作する。すなわち、あらかじめ定めた本数のベクトルを、各々の受信側加算データ選択部２１１、送信側加算データ選択部２１２からの加算タイミング信号keep_flag_on_to_off＝１に応じて、加算平均する。実際には受信側加算データ選択部２１１、送信側加算データ選択部２１２からの加算タイミング信号keep_flag_on_to_offは同じタイミングであるので、たとえば受信側加算データ選択部２１１からの加算タイミング信号keep_flag_on_to_offを送信側加算データ加工部２２２に出力するようにしてもよい。
【００７８】
そして、装置が初期状態から動作し始め、ベクトルの蓄積が予め定めた本数FULL_PILEに達していないときは、その時点までに蓄積されている本数pile_cnt分で加算平均をとる。ここでは、FULL_PILE＝６とし、ベクトルがX0〜X5(Y0〜Y5)の６本たまった後は、６本の加算平均を計算するが、それ以前では、ベクトルは６本以下しか蓄積されていないので、蓄積されてベクトルとして扱える本数分だけで加算平均を計算する。
【００７９】
送信側加算データ加工部２２２の動作は、入力されるデータがX（遠端入力信号）かＹ（エコー）かが異なるだけで、計算処理そのものは同じであるので説明を省略し、ここでは、受信側加算データ加工部２２１についてのみ説明をする。
【００８０】
まず最初に、受信側加算データ加工部２２１は１本〜pile_cnt（最大はFULL_PILE個）本のベクトルの加算平均を、最終的には以下の（９）式、（１０）式のように求める。（９）式、（１０）式にいたるベクトルの蓄積にともなってカウントアップするpile_cntの値を併記しながら説明する。まず、
X0＝［X(n0)…X(n0+LENGTH-1)］→pile_cnt＝１、
X1＝［X(n1)…X(n1+LENGTH-1)］→pile_cnt＝２、
X2＝［X(n2)…X(n2+LENGTH-1)］→pile_cnt＝３、
X3＝［X(n3)…X(n3+LENGTH-1)］→pile_cnt＝４、
X4＝［X(n4)…X(n4+LENGTH-1)］→pile_cnt＝５、
X5＝［X(n5)…X(n5+LENGTH-1)］→pile_cnt＝６  ＝FULL_PILE
のように、最初にX0のデータが蓄積されるとpile_cntは、１にセットされ、順次ベクトル分のデータが蓄積されていき、それに伴ってpile_cntは１ずつカウントアップされていくが、pile_cnt＝６に達すると、pile_cntはそれ以上増加しない。
【００８１】
受信側加算データ加工部２２１は、受信側加算データ選択部２１１からのベクトル加算開始信号keep_flag_on_to_off＝１を入力されると、それまでに蓄積したデータを開始点を一致させて加算し、新たに、潜行型適応フィルタ部２０の入力ベクトルsteals_rin、steals_sinを作成する。
【００８２】
より具体的には、ベクトルsteals_rin＝［rin_keep[0]、…rin_keep［LENGTH-1］］を作成する。同様に送信側加算データ選択部２１２でもベクトルＹでsteals_sinを計算し、ベクトルsteals_sin＝［sin_keep［０］、…sin_keep［LENGTH-1］  ］を作成する。ここで、rin_keep[k]は、以下の（９）式により表される。また、sin_keep［ｋ］は、以下の（１０）式により表される。
【数７】
0005061853.tif 000008
【００８３】
図３は、受信側加算データ選択部２１１（送信側加算データ選択部２１２）における加算平均の計算について示した説明図である。
【００８４】
加算平均の様子は図３のようにデータの頭が揃ったデータが下向き矢印にそって計算される加算平均となる。作成の手順は送信側の送信側加算データ加工部２２２においても同様である。
【００８５】
図４は受信入カベクトルの加算平均ベクトルsteals_rinが作成される様子を示した図である。
【００８６】
図４（Ａ）は、X(n)の様子を模擬的に示しており、黒い部分が、有音の部分である。図２と同様にX(n)は、図４（Ｂ）の時間窓長による一定の切り出し時間だけサンプリングされ集められて、図４（Ｃ）のように切り出されたベクトルとして取り扱われるようになる。図４（Ｂ）、図４（Ｃ）、図４（Ｄ）の１ブロック目のようにX(n)が複数個サンプルされ蓄積されてベクトルX0になる。この時点では、加算データ加工部にはまだ入力ベクトルはX0が１本だけしかない。したがって初めて作成される加算平均ベクトルは図４（Ｄ）の最初のブロックのようになり、平均をとっても何も変わらない。次にベクトルが蓄積されてベクトルがX0とX1の２本になると加算平均ベクトルsteals_rin=(X0+X1)/2となる。音声部分も両方が半分ずつ反映されたデータになるので左から２番目のブロックのようになる。以後、ベクトルが１本入手できた時点で加算平均ベクトルを計算できるようになるので、図４のｔ０〜ｔ５の各々の時刻になった時点で新たな加算平均ベクトルを計算できるようになる。また、ここではベクトルの加算平均による処理量の増加を避けるため、時刻ｔに対して加算平均処理のための時間のマージンδAVをとり、加算平均ベクトルを実際に潜行型適応フィルタ部２０で入力として使うまでにマージンδAVの遅延を設けても良い。δAVは、例えば、１６ｋＨｚサンプリング動作の時、１６０サンプル（時刻にして１０ｍｓｅｃ）としても良い。
【００８７】
時刻ｔ５以後はベクトルが１本入手できた時点で、直近の過去の複数本（ここでは６本）のベクトルとあわせて新たな加算平均ベクトルを計算する。以後、同様に、あらかじめ設定した最大蓄積ベクトル本数FULL_PILE（例えばここでは、６とする）まで、順次加算個数が増えていき、ベクトルを加算する個数はFULL_PILEで頭打ちになり、以後、最新の直近６個のベクトルを加算平均するようになる。送信側入力ベクトルｓｔｅａｌｓ＿ｓｉｎも入力をY(n)にして同様の手順で作成される。ただし、ベクトルを作成するタイミングはあくまでも受信信号のサンプル切り出し窓をタイミングにして、Y(n)をサンプルする点が受信側のベクトル作成と異なっている。受信側加算データ加工部２２１で作成された受信信号入力ベクトルsteals_rinは受信側加算データ保存部２３１に出力されて保存され、送信側加算データ加工部２２２Ｃで作成された送信信号入力ベクトルsteals_sinは送信側加算データ保存部２３２に出力されて保存される。
【００８８】
受信側加算データ加工部２２１はベクトルの加算平均処理が終了すると、適応モード制御部５０に対して、無音区間での適応フィルタ更新準備ができたことを知らせるフラグsteals_adapt_goを１にセット（steals_adapt_go＝１）して出力する。適応モード制御部５０はsteals_adapt_go＝１が入力されると、音声検出器３０の出力v_flgの出力と加算データ加工部の出力steals_adapt_goに応じて適応モードの制御をおこなう。
【００８９】
図８は、通常適応フィルタ部１０と潜行型適応フィルタ部２０の適応動作の関係（組み合わせ）について示した説明図である。
【００９０】
図８に示すように音声検出器３０の出力v_flgと受信側加算データ加工部２２１の出力steals_adapt_goの組み合わせに応じて、適応フィルタ潜行型適応フィルタ部２０か通常適応フィルタ部１０のどちらかが適応動作する。潜行型適応フィルタ部２０か通常適応フィルタ部１０の両方が同時に適応動作することはない。潜行型適応フィルタ部２０の適応動作の詳細に関しては後述する。また、図８に示す通り、音声がある期間では通常適応フィルタ部１０が適応動作し、潜行型適応フィルタ部２０は適応動作しない。潜行型適応フィルタ部２０が動作するのは、無音状態で、且つ、steals_adapt_go＝１が受信側加算データ加工部２２１から適応モード制御部５０に入力されたときだけである。上述したように、steals_adapt_goは加算平均ベクトルの計算が終了した時点で１にセットされて適応モード制御部５０に出力される。
【００９１】
図５は、受信側加算データ選択部２１１（送信側加算データ選択部２１２）において、受信入カベクトルの加算平均をする際の各フラグの遷移について示した説明図である。
【００９２】
図５（Ａ）〜（Ｃ）に関しては図４（Ａ）〜（Ｃ）と同様のものであるので説明を省略する。図５（Ｄ）は、音声検出器３０の音声検出フラグv_flgであって音声検出するとv_flg＝１、検出しないとv_flg＝０である。図５（Ｅ）は、steals_adapt_goをあらわしており、加算平均ベクトルの計算が終了して入力データの準備が完成すると、steals_adapt_go＝１、完成していないとsteals_adapt_go＝０である。
【００９３】
図５（Ｆ）は、通常適応フィルタ部１０が適応フィルタとして動作するときはＯＮそうでないときはＯＦＦとなる信号であり、適応モード制御器から通常適応フィルタ部１０に出力される適応動作制御信号である。
【００９４】
図５（Ｇ）は、潜行型適応フィルタ部２０が適応フィルタとして動作するときはＯＮそうでないときはＯＦＦとなる信号であり、適応モード制御器から潜行型適応フィルタ部２０に出力される適応動作制御信号である。図５（Ｇ）の潜行型適応フィルタ部２０のＯＮ／ＯＦＦは上述したように、v_flg＝０かつ、steals_adapt_go＝１のときに、潜行型適応フィルタ部２０＝ＯＮになる。なお、steals_adapt_go＝１であっても、v_flg＝１の時には潜行型適応フィルタ部２０＝ＯＦＦとなる。これは潜行型適応フィルタ部２０が選択的に受信入力信号の無音期間で動作することを意味している。送信側入力ベクトルsteals_sinも同様に作成されるが、作成のタイミングは受信側の音声信号X(n)による音声検出器３０のv_flgである。
【００９５】
上述のように加算平均ベクトルが、
steals_rin＝［rin_keep[0]、…rin_keep[LENGTH-1]］、
steals_sin＝［sin_keep[0]、…sin_keep[LENGTH-1]］のように作成され、受信側加算データ保存部２３１、送信側加算データ保存部２３２に与えられる。
【００９６】
受信側加算データ保存部２３１、送信側加算データ保存部２３２に保存されたデータを用いて、潜行型適応フィルタ部２０では適応更新がされる。
【００９７】
次に、無音区間適応促進部２４（図６参照）の動作を説明する。
【００９８】
保持レジスタ２４３には、受信側加算データ保存部２３１からベクトルsteals_rinの要素データが、１個ずつ入力されてくる。保持レジスタ２４３の初期値は、例えば、ここでは０とする。この実施形態では保持レジスタ２４３は、適応モード制御部５０からの信号steals_adapt_goが０から１に遷移するときに一度０にリセットされるようにしたが、これに限定せず、保持レジスタのなかみの古いデータから順に新しいデータを上書きするようにしてもよい。適応フィルタ係数部２４１の係数の個数は通常適応フィルタ部１０の適応フィルタ係数部１１１の係数の個数と同じであり、ここでは前述のＮ個として説明する。また適応フィルタ係数部２４１の係数ベクトルを以下の（１１）式のように表す。なお、以下の（１１）式においてｍはサンプル順である。
【数８】
0005061853.tif 000009
【００９９】
ただし、上記の（１１）式は、装置の動作開始時に０にリセットされ、その後はリセットされず係数の更新を重ねる。一方で、ベクトルsteals_rin＝［rin_keep[0]、…rin_keep[LENGTH-1]］から１個ずつ保持レジスタ２４３に入力され、ベクトルsteals_rinの要素が順番に格納される別のベクトルになる。すなわち、１サンプルタイミングずつrin_keep[0]から順番にrin_keep[LENGTH-1]に向かって、レジスタに格納され、できあがる新たなべクトルになる。これをSX(m)とすると、以下の（１２）式のように書き換えることができる。
【数９】
0005061853.tif 000010
【０１００】
例えば、ｍ＝０であれば、ベクトルsteals_rinの要素rin_keep[0]が１個だけ保持レジスタ２４３に入力されるから、以下の（１３）式が成立する。
【数１０】
0005061853.tif 000011
【０１０１】
積和演算部２４２はベクトルSX(m)とベクトルW(m)の積和演算を計算し、潜行型適応フィルタ部２０内部の擬似エコー信号Sy'(m)を作成し、加算器２５に出力する。Ｓｙ’（ｍ）は、以下の（１４）式のようになる。
【数１１】
0005061853.tif 000012
【０１０２】
加算器２５には受信側加算データ保存部２３１からベクトルsteals_sinの要素データsin_keep(m)が受信側加算データ保存部２３１と同じタイミングのｍで１サンプルずつ入力され、Sy'(m)と相殺され、残差信号Se(m)が出力される。残差信号Se(m)は、潜行型フィルタ係数適応部２４４に出力される。潜行型フィルタ係数適応部２４４では以下の（１５）式のようにして係数ベクトルの要素W(m)をW(m+1)として更新する。
【数１２】
0005061853.tif 000013
【０１０３】
更新した係数は、ＳＷ１３（上述の図１参照）に向かって出力される。ＳＷ１３は音声検出結果を受けた適応モード制御部５０からの出力に応じて既に端子がａ１に閉じられている状態である。W(m)は下記の（１６）式のように通常適応フィルタ部１０の係数H(m)として上書きコピーされる。
【数１３】
0005061853.tif 000014
【０１０４】
そして、次に有音状態が検出され、通常適応フィルタ部１０が再び駆動され始めるときのベクトルH(m)の係数初期値として使われる。
【０１０５】
（Ａ−３）第１の実施形態の効果
第１の実施形態によれば、以下のような効果を奏することができる。
【０１０６】
エコーキャンセラ１では、遠端入力信号に基づく複数のベクトルXと、エコー信号に基づく複数のベクトルYが、それぞれ受信側加算データ加工部２２１、送信側加算データ加工部２２２によって加算平均されるので、様々な音声成分をもつ区間が集まった集合データになるため、周波数的な偏りが解消され、比較的均一な周波数特性を持つ入力信号になり、信号の有色性（周波数の偏在）を解消することができる。これにより、従来の安定アルゴリズムの欠点、すなわち安定なエコーキャンセラルゴリズム（たとえばＮＬＭＳ）がもつ欠点である「有色信号で収束を進行させると収束が非常に遅くなる」という現象も改善する効果を奏する。
【０１０７】
また、エコーキャンセラ１では、遠端入力信号X(n)において有音状態の場合にあるときは、通常適応フィルタ部１０を駆動してエコーキャンセラの収束を進めてエコーを減少させ、その際、同時に潜行型適応フィルタ部２０において、受信中の入力を一定サンプル数だけタイミングをそろえて保存しておいて、無音状態であってもエコーキャンセラの収束を進めるための準備をする。そして無音状態のときには上述のように予め蓄えた受信入力信号に基づくベクトルデータを各々加算平均して、入力信号とは別のエコーキャンセラ収束用データを作成して、見かけ上無音の区間でも、エコーキャンセラを収束進行させるのである。これにより、従来フィルタの係数更新が不可能であった無音区間を利用して、エコーキャンセラのフィルタ係数を収束させるので、高速アルゴリズムを用いなくてもよいため動作が安定であり、演算処理量も増加することがなく、エコーをすばやく消去できる。
【０１０８】
（Ｂ）第２の実施形態
以下、本発明によるエコーキャンセラ及びエコーキャンセルプログラムの第２の実施形態を、図面を参照しながら詳述する。
【０１０９】
（Ｂ−１）第２の実施形態の構成
図７は、第２の実施形態のエコーキャンセラ１Ａの機能的構成を示すブロック図であり、上述した図１との同一、対応部分には同一、対応符号を付して示している。
【０１１０】
第２の実施形態のエコーキャンセラ１Ａは、第１の実施形態のエコーキャンセラ１とほぼ同様の構成を有しているため、詳しい説明を省略し、第１の実施形態との差異についてのみ説明する。第２の実施形態のエコーキャンセラ１Ａは、ＳＷ１６が、通常適応フィルタ部１０Ａと潜行型適応フィルタ部２０Ａとの間に設けられ、通常適応フィルタ部１０Ａ内部の適応フィルタ係数部１１１が適応フィルタ係数部１１１Ａに置き換わり、無音区間適応促進部２４が、無音区間適応促進部２４Ａに置き換わっている点で、第１の実施形態と異なっている。
【０１１１】
無音区間適応促進部２４Ａは、上述の図６に示す、第１の実施形態のエコーキャンセラ１における無音区間適応促進部２４と、ほぼ同様の構成を有するため、ここでは、詳しい説明を省略し、第１の実施形態と異なる部分についてのみ説明する。第２の実施形態の無音区間適応促進部２４Ａは、無音区間適応促進部２４Ａ内部の適応フィルタ係数部２４１が、適応フィルタ係数部２４１Ａに置き換わっている点で、第１の実施形態と異なっている。適応フィルタ係数部２４１Ａの詳細については後述する。
【０１１２】
図７において図示は省略しているが、適応モード制御部５０は、ＳＷ１６と接続している。ＳＷ１６は、適応モード制御部５０の制御に基づいて、通常適応フィルタ部１０Ａ（適応フィルタ係数部１１１Ａ）と、潜行型適応フィルタ部２０Ａ（適応フィルタ係数部２４１Ａ）とを接続させるか否かをスイッチするものである。
【０１１３】
ＳＷ１６により、適応フィルタ係数部２４１Ａと、適応フィルタ係数部１１１Ａとが接続されると、適応フィルタ係数部１１１Ａに格納された係数ベクトルが、適応フィルタ係数部２４１Ａにコピーされることになる。
【０１１４】
（Ｂ−２）第２の実施形態の動作
次に、以上のような構成を有するこの実施形態のエコーキャンセラ１Ａの動作を説明する。
【０１１５】
第２の実施形態が第１の実施形態と異なるのは、ＳＷ１６の動作と通常適応フィルタ部１０Ａ内部の適応フィルタ係数部１１１Ａ、無音区間適応促進部２４Ａ、無音区間適応促進部２４Ａ内部の適応フィルタ係数部２４１Ａだけでありここでは第１の実施形態と相違のある部分だけを説明する。より具体的には第２の実施形態が第１の実施形態と異なるのは、適応フィルタ係数部２４１Ａの係数ベクトルと、通常適応フィルタ部１０Ａ内部の適応フィルタ係数部１１１Ａの係数ベクトルのコピーの動作が追加されている点である。
【０１１６】
第２の実施形態では第１の実施形態と異なり、適応フィルタ係数部１１１Ａの係数ベクトルW(m)は装置の動作開始時にだけは０にリセットされるが、その後は適応モード制御部５０からの出力steals_adapt_goが、steals_adapt_go＝０からsteals_adapt_go＝１に移るたびに、適応モード制御部５０が、ＳＷ１６を制御して閉じ、直前のsteals_adapt_go＝０であった時点の通常適応フィルタ部１０Ａ内部の適応フィルタ係数部１１１Ａの係数ベクトルH(m)を適応フィルタ係数部１１１Ａの係数ベクトルW(m)の初期値としてコピーしてから、W(m)の更新を開始する点が異なっている。
【０１１７】
第１の実施形態では、一方的に適応フィルタ係数部２４１の係数ベクトルW(m)が通常適応フィルタ部１０（適応フィルタ係数部１１１）にコピーされる。これに対して、第２の実施形態においては、潜行型適応フィルタの係数ベクトルW(m)が通常適応フィルタのフィルタ係数H(m)と、相互に行き来して継続して更新されていく点が異なっている。
【０１１８】
（Ｂ−２）第２の実施形態の効果
第２の実施形態は、第１の実施形態において、遠方から到来する信号の種別によっては、まれに加算平均処理をほどこしても周波数の偏在が解消できなかったり、収束進行が進まない場合があることを鑑みたものである。たとえばハンズフリー電話に適用するとき、話者の音声でなく、呼び出しトーンなど、呼制御信号の段階からスピーカを鳴動することはよくあることである。このような場合、エコーキャンセラに入力される入力信号は音声信号ではなく、呼び出しトーン信号（ＲＢＴ）などのトーン信号である。
【０１１９】
例えば、非特許文献２によれば、呼び出しトーン信号（ＲＢＴ）は日本国内であれば：周波数４００±２０Ｈｚを１５〜２０Ｈｚで変調した、断続比２０ＩＰＭ±２０％、メーク率３３±１０％の信号である。より具体的には、１秒鳴って、２秒休むボリウム変動を伴った４００Ｈｚのトーン信号とみなせる。トーン信号はもっとも有色程度の強い有色信号のひとつであり、エコーキャンセラはこのような信号が入力された時、エコー経路の真値をなかなか推定できない。このような場合、第１の実施形態では音声検出器３０に検出されるのは通話はじめのうち、すべて４００Ｈｚのトーン信号であり、加算平均をどれだけ繰り返しても得られるのは４００Ｈｚ成分だけを持った信号でしかない。
【０１２０】
第１の実施形態では、一方的に潜行型適応フィルタ部２０の係数ベクトルが、通常適応フィルタ部１０の適応フィルタ係数部１１１にコピーされるので、このような有色性の極端な呼び出しトーン信号の後に、話者同士が会話を始めて通常適応フィルタ部１０が係数ベクトルの更新を始めたとき、せっかく周波数帯域が広くなった信号で通常適応フィルタ部１０が係数更新を収束進行させても、潜行型適応フィルタ部２０の保持レジスタ２４３の中身からトーン信号データが無くなりきるまでは、無音区間が到来して潜行型適応フィルタ部２０が動作するたびに、トーン信号由来で収束させた潜行型適応フィルタの適応フィルタ係数ベクトルW(m)によって、通常適応フィルタ部１０内部の適応フィルタ係数部１１１の係数ベクトルH(m)を上書きしてしまうので、そのたびにエコー消去性能が劣化してしまう可能性がある。
【０１２１】
第２の実施形態ではこの点を、鑑みたものであり、第１の実施形態の効果に加え、以下のような効果を奏することができる。
【０１２２】
ＳＷ１６を設け、適応モード制御部５０は出力がsteals_adapt_go＝０からsteals_adapt_go＝１に移るたびに、適応モード制御部５０が、ＳＷ１６を閉じるようにし、 直前のsteals_adapt_go＝０であった時点の通常適応フィルタ部１０Ａ内部の適応フィルタ係数部１１１Ａの係数ベクトルH(m)を適応フィルタ係数部１１１Ａの係数ベクトルW(m)を初期値としてコピーしてから、W(m)の更新を開始するようにして、上述のような信号の種別が変わったあとでも、通常適応フィルタ部１０Ａの係数収束が潜行型適応フィルタ部２０Ａの係数に反映し、その逆も行われるので、エコーキャンセラ１Ａ全体としてみたとき、エコー経路を推定する適応フィルタの係数は常に、滞りなく最新の入力データによって係数更新がなされたデータが反映され続けるので、たとえエコーキャンセラが呼制御トーンのような特殊な信号から動作開始した場合であってもすばやくエコーを除去することができる。
【０１２３】
（Ｃ）第３の実施形態
以下、本発明によるエコーキャンセラ及びエコーキャンセルプログラムの第３の実施形態を、図面を参照しながら詳述する。
【０１２４】
（Ｃ−１）第３の実施形態の構成
この実施形態のエコーキャンセラ１Ｂは、上述の図１に示す、第１の実施形態のエコーキャンセラ１とほぼ同様の構成を有している。ここでは、この実施形態のエコーキャンセラ１Ｂについては、詳しい説明を省略し、上述の図１に示す第１の実施形態と異なる部分の構成についてのみ説明する。
【０１２５】
第３の実施形態が第１の実施形態と異なるのは、受信側加算データ選択部２１１が受信側加算データ選択部２１１Ｂに送信側加算データ選択部２１２が送信側加算データ選択部２１２Ｂに受信側加算データ加工部２２１が受信側加算データ加工部２２１Ｂに変わったことであり、送信側加算データ加工部２２２が送信側加算データ加工部２２２Ｂに変わったことである。
【０１２６】
この実施形態の、受信側加算データ選択部２１１Ｂ（送信側加算データ選択部２１２Ｂ）、受信側加算データ加工部２２１Ｂ（送信側加算データ加工部２２２Ｂ）は、蓄積した複数本のベクトルの単純加算平均を計算するのではなく、第１の実施形態よりも少ない入力ベクトルで、後述する重み付平滑計算を行い、潜行型適応フィルタ部２０Ｂの入力ベクトルを作成する点で第１の実施形態と異なっている。その他に関しては第１の実施形態と同じである。
【０１２７】
（Ｃ−２）第３の実施形態の動作
次に、以上のような構成を有するこの実施形態のエコーキャンセラ１Ｂの動作を説明する。
【０１２８】
受信側加算データ選択部２１１Ｂ（送信側加算データ選択部２１２Ｂ）では以下のように平均を計算する。
【０１２９】
まず、入力された時刻ｎでのベクトルを、以下の（１７）式とする。
【数１４】
0005061853.tif 000015
【０１３０】
一方、第３の実施形態においても第１の実施形態で説明したものと同様に、潜行型適応フィルタ部２０Ｂの入力ベクトルsteals_rin、steals_sinを計算するが、第３の実施形態では、X(n)は下記のような点が異なっている。
【０１３１】
受信側加算データ加工部２２１Ｂは受信側加算データ選択部２１１Ｂから加算タイミング信号keep_flag_on_to_off＝１を入力されるたびに下記のような計算を実行する。ここでは、keep_flag_on_to_off＝１が順次発生し、入力されるタイミングを(K(0),K(1),K(n)…)とする。K(n)は整数であって、keep_flag_on_to_off＝１が発生した順番である。第３の実施形態ではこのタイミングK(n)が重要であるので、これらのタイミング時点でのベクトルX(n)、Y(n)、steals_rin、steals_sinを、を各々X(K(n))、Y(K(n))、steals_rin(K(n))、steals_sin(K(n))と表すものとする。
【０１３２】
この場合、タイミングK(0)で、X(K(0))＝［X(K(0))、X(K(0)-1)、…X(K(0)-N+1)］ｔが蓄積完了されたとする。例えば、次にベクトルが蓄積完了し、keep_flag_on_to_off＝１が発生するのはタイミングK(1)であるからこのときには、X(K(1))＝［X(K(1))、X(K(1)-1)、…X(K(1)-N+1)］となる。ここで注意すべき点は、ベクトルX(K(n))は音声検出の有無の結果で蓄積タイミングが決まるので、サンプリング周期のような一定のタイミングと異なり、K(0)やK(1)は一定値ではなく、そのときの音声信号の入力される様子によって異なるタイミングである。
【０１３３】
まず始めに受信ベクトルの平均加算の様子を説明する。なお、送信側加算データ加工部２２２Ｂの動作も受信側加算データ加工部２２１Ｂと同様の計算方法である。
【０１３４】
受信側加算データ選択部２１１Ｂからkeep_flag_on_to_off＝１とベクトルX（K(n))を入力された受信側加算データ加工部２２１Ｂは以下の（１８）式のように潜行型適応フィルタ部２０Ｂの入力ベクトルsteals_rin[K(n)]を計算する。
【数１５】
0005061853.tif 000016
【０１３５】
δ_LPOは上記の（１８）式の重み付平滑計算において、ベクトルX(K(n))がsteals_rin[K(n)]に占める比重をきめる定数であり、０≦δ_LPO≦１．０なる定数である。例えば、δ_LPO＝０．５としても良い。
【０１３６】
上記の（１８）式の通り、δ_LPO＝０にすると、潜行型適応フィルタ部２０Ｂの入力ベクトルsteals_rin[K(n)]の成分として巡回的に更新される１本前のベクトルsteals_rin[K(n-1)]だけが反映されることを意味し、δ_LPO＝１．０にすると、潜行型適応フィルタ部２０Ｂの入力ベクトルsteals_rin[K(n-1)]として新しいベクトルX(K(n))だけを反映することを意味している。
【０１３７】
定数δ_LPOがその間の値０≦δ_LPO≦１．０ならばその中間の重みで過去のベクトルと最新のベクトルとが重み配分されて潜行型適応フィルタ部２０Ｂの入力ベクトルに反映することを意味している。
【０１３８】
ここでは新しい入力ベクトルX(K(n)）が重く反映されるようにδ_LPO＝０．８としても良い。更新された計算結果の潜行型適応フィルタ部２０Ｂの入力ベクトルsteals_rin[K(n)]は第１の実施形態と同様、受信側加算データ保存部２３１に出力される。
【０１３９】
また、送信側加算データ選択部２１２Ｂでも同様にデータ選択と、重み付平滑計算がおこなわれる。つまりＹ（Ｋ（ｎ））ベクトルを用い、同様の計算を以下の（１９）式のように潜行型適応フィルタ部２０Ｂの入力ベクトルとして計算し、steals_sin[K(n)]は送信側加算データ保存部２３２に出力される。以後の動作は第１の実施形態と同様である。
【数１６】
0005061853.tif 000017
【０１４０】
（Ｃ−３）第３の実施形態の効果
第３の実施形態によれば、以下のような効果を奏することができる。
【０１４１】
例えば、従来のＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）でエコーキャンセラのような信号処理装置を実現しようとすると、演算規模の中に「メモリ」間におけるデータ転送も制限中に含まれるのが通常である。メモリ間のデータ転送はおもに、データの複写や移動にともなって発生し、ＤＳＰの処理量を消費するのだが、数式的なアルゴリズムの表現には現れてこないために演算規模として気がつかないままカウントされず、アルゴリズムを実用化するときに初めてＤＳＰの演算規模が不足していることに気がつくことが多い。例えば、第２の実施形態を実現するためには通常適応フィルタ部１０Ａの適応フィルタ係数部１１１Ａと、潜行型適応フィルタ部２０Ａの適応フィルタ係数部の複写がモード変更のたびに発生し、上述のようなデータ複写にともなう、いわば「隠れた処理量消費」のために装置実現が困難になることが考えられる。
【０１４２】
第３の実施形態では、このような問題点を鑑みたものであり、簡単な重み定数δ_LPOの加減で過去のベクトルと最新のベクトルが重み配分されて潜行型適応フィルタ部２０Ｂの入力ベクトルに反映され、あたかも、平滑定数の設定次第で、過去のベクトルを巡回的に加算平均し、潜行型適応フィルタ部２０の保持レジスタ２４３の中身から早期にトーン信号が無くなりきる状態に近づける。これにより、第２の実施形態のように、通常適応フィルタ部１０Ａ（適応フィルタ係数部１１１Ａ）から、潜行型適応フィルタ部２０Ａ（適応フィルタ係数部２４１Ａ）に、係数ベクトルを複写しない場合でも、特殊な信号（例えば、上述のトーン信号など）が通話の冒頭にある場合に、入力信号の側で最新データを反映する重み付けを実施しているので、エコーをすばやく除去でき、しかも、第２の実施形態よりも保持するベクトル数が少なくできるので、受信入カベクトルと送信入カベクトルを保持する記憶装置たとえばメモリの規模を小さくでき、装置規模も小さいエコーキャンセラを実現できるのである。
【０１４３】
（Ｄ）第４の実施形態
以下、本発明によるエコーキャンセラ及びエコーキャンセルプログラムの第４の実施形態を、図面を参照しながら詳述する。
【０１４４】
（Ｄ−１）第４の実施形態の構成
この実施形態のエコーキャンセラ１Ｃは、上述の図７に示す、第２の実施形態のエコーキャンセラ１Ａとほぼ同様の構成を有している。ここでは、この実施形態のエコーキャンセラ１Ｃについては、詳しい説明を省略し、上述の図７に示す第２の実施形態と異なる部分の構成についてのみ説明する。
【０１４５】
第４の実施形態のエコーキャンセラ１Ｃが、第２の実施形態のエコーキャンセラＢと異なるのは、受信側加算データ選択部２１１が上述の第３の実施形態における受信側加算データ選択部２１１Ｂに、送信側加算データ選択部２１２が上述の送信側加算データ選択部２１２Ｂに、受信側加算データ加工部２２１が上述の受信側加算データ加工部２２１Ｂに、送信側加算データ加工部２２２が上述の送信側加算データ加工部２２２Ｂに置き変わったことである。その他の構成に関しては第２の実施形態と同様である。
【０１４６】
（Ｄ−２）第４の実施形態の動作
第４の実施形態のエコーキャンセラ１Ｃにおいて、第２の実施形態のエコーキャンセラ１Ａの動作と異なる動作は、受信側加算データ選択部２１１Ｂ、送信側加算データ選択部２１２Ｂ、受信側加算データ加工部２２１Ｂ、送信側加算データ加工部２２２Ｂの動作であるが、これらは第３の実施形態と同様であるので説明を省略する。
【０１４７】
（Ｄ−３）第４の実施形態の効果
第４の実施形態によれば以下のような効果を奏することができる。
【０１４８】
第４の実施形態は第２の実施形態のように、エコーキャンセラ全体としての適応フィルタの係数が通常適応フィルタ部１０と潜行型適応潜行型適応フィルタ部２０で交互にやり取りされながら更新されて、たとえエコーキャンセラが呼制御トーンのような特殊な信号から動作開始した場合であってもすばやくエコーを除去することができる効果に加え、第３の実施形態のように、受信入力ベクトルと送信入カベクトルを保持する記憶装置、たとえばメモリ等の規模を小さくでき、装置規模も小さく、低コストでエコーキャンセラを実現できる。
【０１４９】
（Ｆ）他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【０１５０】
（Ｆ−１）  上記の各実施形態のエコーキャンセラは、ハンズフリー用の電話端末にエコーキャンセラとして適用しても良いし、これに限らず、その他ハンズフリーに対応したパソコン（ソフトフォン）を用いた会議電話装置などに広く用いることができるのは当然である。
【０１５１】
（Ｆ−２）  上記の各実施形態において、例えば、遠端入力信号X(n)について有音状態が検出され、かつ、近端側からの入力信号（マイクロホンＭＩＣへの入力信号）において、近端側の話者の通話信号があった場合などの、いわゆるダブルトーク状態を検出するダブルトーク手段を、エコーキャンセラに別途設けて、その検出した状態により、エコーキャンセラを制御しても良い。上述のダブルトーク検出手段により、ダブルトーク状態が検出された場合には、例えば、受信側加算データ選択部及び送信側加算データ選択部において、X(n)、Y(n)が、それぞれ無音状態を示すダミーのデータを取得させるようにしても良い。また、例えば、受信側加算データ選択部及び送信側加算データ選択部において、X(n)、Y(n)の取得を停止したり、取得データをクリアするようにしてもよい、すなわちダブルトーク検出手段を用いて、ダブルトーク状態における送信および受信データが受信側加算データ選択部及び送信側加算データ選択部に取得されないようにする事はよりいっそう望ましい。
【図面の簡単な説明】
【０１５２】
【図１】第１の実施形態に係るエコーキャンセラの全体構成を示すブロック図である。
【図２】第１の実施形態に係る、受信側加算データ選択部（送信側加算データ選択部）の動作を説明したタイミングチャートである。
【図３】第１の実施形態に係る、受信側加算データ選択部（送信側加算データ選択部）における加算平均の計算について示した説明図である。
【図４】第１の実施形態に係る、受信入カベクトルの加算平均ベクトルsteals_rinが作成される様子を示したタイミングチャートである。
【図５】第１の実施形態に係る、受信側加算データ選択部（送信側加算データ選択部）において、受信入カベクトルの加算平均をする際の各フラグの遷移について示したタイミングチャートである。
【図６】第１の実施形態に係る、無音区間適応促進部の内部構成を示したブロック図である。
【図７】第２の実施形態に係るエコーキャンセラの全体構成を示すブロック図である。
【図８】通常適応フィルタ部と潜行型適応フィルタ部の適応動作の関係（組み合わせ）について示した説明図である。
【符号の説明】
【０１５３】
１…エコーキャンセラ、１０…通常適応フィルタ部、１１…通常擬似エコー作成部、１１１…適応フィルタ係数部、１１２…積和演算部、１１３…保持レジスタ、１２…通常適用フィルタ係数適応部、１３…ＳＷ、１４…ＳＷ、１５…加算器、２０…潜行型適応フィルタ部、２１１…受信側加算データ選択部、２２１…受信側加算データ加工部、２３１…受信側加算データ保存部、２１２…送信側加算データ選択部、２２２…送信側加算データ加工部、２３２…送信側加算データ保存部、２４…無音区間適応促進部、２４１…適応フィルタ係数部、２４２…積和演算部、２４３…保持レジスタ、２４４…潜行型適応フィルタ係数適応部、２５…加算器、３０…音声検出器、４０…タイミング制御部、５０…適応モード制御部。
【図１】
0005061853.tif 000018
【図２】
0005061853.tif 000019
【図３】
0005061853.tif 000020
【図４】
0005061853.tif 000021
【図５】
0005061853.tif 000022
【図６】
0005061853.tif 000023
【図７】
0005061853.tif 000024
【図８】
0005061853.tif 000025