説明

エコーキャンセラ、エコーキャンセル方法及びプログラム

【課題】 エコーを速く除去できるエコーキャンセラを提供する。
【解決手段】 本発明のエコーキャンセラは、通常の適応動作を行う第1の適応フィルタと、第1の適応フィルタが適応動作していない期間内で適応動作し、第1の適応フィルタが適応動作を再開するときのフィルタ係数を供給する第2の適応フィルタとを有する。第2の適応フィルタは、遠端話者信号からそれぞれ所定期間ずつ切り出した信号を同期合成した第1の合成信号と、近端話者信号からそれぞれ所定期間ずつ切り出した信号を同期合成した第2の合成信号とで適応動作する。音声信号の周期性のために合成によって、第1の合成信号に相殺部分があると、第1の合成信号の全体若しくは相殺部分と、対応する第2の合成信号の全体若しくは相殺部分とを、第2の適応フィルタの適応動作で利用させない。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はエコーキャンセラ、エコーキャンセル方法及びプログラムに関し、例えば、ハンズフリー電話装置における音響エコーの消去に適用し得るものである。
【背景技術】
【0002】
近年、VoIPの普及や携帯電話のサービス形態の多様化に伴い、各種電話の通信料金が安価になり、家庭やオフィスにおいては、以前よりも通話料を気にかけず、常時接続を含んだ長時間電話ができるようになってきた。このような利用環境の変化に伴い、電話機のハンドセットを長時間耳に押し当てておく苦痛を解消させるハンズフリー電話装置の普及の要求が急速に高まっている。ハンズフリー電話装置を実現する最も簡単な方法は、近年の携帯電話で見られるようなイヤホン(イヤホンマイク)やヘッドホンを装着したり、コールセンタなどでしばしば見られるヘッドセットを装着したりすることである。
【0003】
しかし、携帯電話用イヤホンは、一時的な通話に向いており、長時間使うと、耳穴とイヤホンがこすれ、ただれを起こす結果になり苦痛を生じてしまう。一方、コールセンタなど一部の業務用に採用されているヘッドセットは、比較的長時間の利用でも顧客とのハンズフリー通話中にパソコン端末等を操作ができる利点があるもの、やはりヘッドセットの長時間の装着による違和感のために利用者が相当の疲労を起こしてしまう欠点があった。
【0004】
加えて、上述のように、一般家庭においても長時間の通話が普通になってきた近年では、ハンズフリー電話装置に求められる機能には、「装着ストレスがなく長時間快適に電話ができること」が求められるようになっている。つまり、近年急速に普及してきた安価なVoIPを用いたハンズフリー通話では、話者の目的は携帯電話や業務用装置と異なり、「ストレスなく長時間快適に通話をすること」が主な目的であり、通話中に他の作業ができるように手を開けることではないのであり、このことに関しては、従来のイヤホンやヘッドセットを装着する方法の「ハンズフリー電話装置」では装着の違和感の解消がほとんど期待できない。このような近年の電話利用者の利用形態の変化を背景に、イヤホンやヘッドセットなどを装着しなくても快適にハンズフリー電話ができる実用的で安価な拡声電話機の普及が望まれているのである。このような拡声電話機(ハンズフリー電話装置)を実現するために、従来から「音響エコーキャンセラ」を用いることが知られており、実用に供されている。
【0005】
従来、音響エコーキャンセラには、非特許文献1に開示されるような適応フィルタ技術を使うのが通例である。中でも、NLMSアルゴリズムは、収束速度が遅く、特に音声信号のような「有色信号」で収束が劣化するという欠点と引き換えても、動作の安定性、ディジタル信号処理プロセッサにかける処理量の負担の小ささに優れて電話機に実装することができるため、広く音響エコーキャンセラに使われている。上記のように、今後一層の拡声通話の普及が予想される現状では、ごく一般的な家庭でも設置が可能な装置規模、価格が廉価で高性能の拡声電話機が望まれている。しかも、従来の電話音質を超える広帯域音声での通話が可能なVoIP機器が既に普及し始めており、拡声電話機やそれに実装されるエコーキャンセラもこれらの音質で利用可能な技術の登場が待ち望まれている。
【特許文献1】特開平8−237174号公報
【非特許文献1】S.ヘイキン著、武部幹訳、「適応フィルタ入門」、現代工学社発行、pp.149〜158
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、従来の適応フィルタ更新アルゴリズムを広帯域向けの音響エコーキャンセラとしてそのまま流用しようとすると以下に述べるような問題があった。
【0007】
電話機において広帯域音質を実現するためには、装置のサンプリング速度を上昇させる必要がある。例えば、従来の電話帯域である8kHz帯域の音声を、広帯域である16kHz帯域の音声に帯域拡張すると、サンプリング周波数は2倍になる。
【0008】
一方で、サンプリングされる側である音響エコー経路の応答長は変わらないので、適応フィルタのタップ数はサンプリング周波数の上昇に応じて大きくなってしまう。不都合なことにエコーキャンセラを実現する適応フィルタはタップ数が大きくなると、応じて収束が遅くなることが公知の事実として知られている。このような収束速度の低下を、高度な演算を用いて回避する公知の技術が、例えば、RLS適応アルゴリズムとして、非特許文献1に述べられている。しかし、残念なことに、RLSのような高速収束アルゴリズムは動作の安定性に乏しいだけでなく、演算規模、メモリ容量規模も非常に大きくなる。すなわち、そもそもの通話音声品質が不安定になり、装置規模、ソフトウェア規模が大きくなり、その結果、一般の家庭向けに装置を普及させるには装置が大規模、高価になってしまうという課題があった。
【0009】
このような課題に対し、特許文献1は、NLMS適応フィルタの係数更新速度を左右する定数であるステップゲインを、推定インパルス応答長と装置の動作開始からの経過時間をパラメータとして、徐々に減少させることにより、初期収束時の収束速度が大きく、定常時の推定精度が高い収束特性を実現する優れたエコーキャンセラが開示されている。
【0010】
しかしながら、特許文献1の記載技術においても、やはりタイミング悪く有色性信号による適応フィルタの収束速度の劣化は避けることができず、例えば、一旦呼制御トーンなどの強度有色信号で収束してしまった後は、逆に、ステップゲインを小さくしてしまった分、係数更新の機会を有効に生かせず、音声帯域をカバーするための適応フィルタ再収束が阻害されてしまい、エコーがなかなか消えないという欠点があった。
【0011】
これらに鑑み、本願発明者は、速やかにエコーキャンセラが収束し、動作が安定なNLMSアルゴリズムを利用できる発明を既に出願した(特願2007−288404(先願1)、特願2008−63086(先願2))。
【0012】
先願1では、予め遠端話者の音声入力ベクトルと、それに応じたエコー信号ベクトルをいくつか保持し、保持したデータベクトルの同期加算結果を適応フィルタの新たな入力として、遠端無音期間で適応フィルタを更新し、安定なNLMSアルゴリズムを採用しつつもエコーキャンセラを速く収束させる発明を提案した。また、先願2では、利用者が特段の複雑な設定をしなくても近端話者側の背景ノイズの状況に応じて、上記同期加算回数を自動的に最適に設定して最適な除去性能を発揮するエコーキャンセラの発明を提案した。
【0013】
しかし、本願発明者は、実際の音声信号を同期加算して、上述した先願1又は先願2の発明を実現しようとしたとき、データ取得のタイミングや同期加算タイミングと、遠端音声データの周期的特性の兼ね合いのため、エコーキャンセラの性能が十分に発揮できない場合があることを見出した。
【0014】
本発明は、以上の点に鑑みなされたものであり、データ取得のタイミングや同期合成タイミングによらず、エコーを速く除去することができるエコーキャンセラ、エコーキャンセル方法及びプログラムを提供しようとしたものである。
【課題を解決するための手段】
【0015】
第1の本発明は、近端話者信号に回り込んだ遠端話者信号であるエコー信号を除去するエコーキャンセラにおいて、(1)遠端話者信号及び近端話者信号に基づいて通話状態を監視する通話状態監視手段と、(2)遠端話者信号だけが有音のシングルトーク状態で適応動作する第1の適応フィルタ手段と、(3)遠端話者信号が無音区間であることを少なくとも条件として適応動作する第2の適応フィルタ手段と、(4)遠端話者信号及び近端話者信号から同期して、遠端話者信号の有音期間を含む所定期間ずつを切り出して、複数の加工用信号を得る加工用信号選択手段と、(5)遠端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の遠端話者信号を得ると共に、近端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の近端話者信号を得る切り出し信号加工手段と、(6)上記第1及び第2の適応フィルタ手段の適応動作の停止、再開を制御するものであって、上記第1の適応フィルタ手段が適応動作を停止し、その停止期間内に、上記第2の適応フィルタ手段が適応動作を実行している期間があれば、上記第1の適応フィルタ手段の適応動作を再開させる際に、上記第2の適応フィルタ手段が適応動作で更新したフィルタ係数を適用して再開させる適応モード制御手段と、(7)上記信号加工手段が得た加工形成の遠端話者信号が、複数の加工用信号の合成による相殺が生じているか否かを判別し、相殺が生じている場合に、加工形成の遠端話者信号の全体、若しくは、相殺が生じている部分、並ぶに、それに対応する加工形成の近端話者信号の全体、若しくは、相殺が生じている部分を、上記第2の適応フィルタ手段の適応動作で利用することを禁止する相殺検出手段とを有することを特徴とする。
【0016】
第2の本発明は、近端話者信号に回り込んだ遠端話者信号であるエコー信号を除去するエコーキャンセル方法において、(1)通話状態監視手段が、遠端話者信号及び近端話者信号に基づいて通話状態を監視するステップと、(2)第1の適応フィルタ手段が、遠端話者信号だけが有音のシングルトーク状態で適応動作するステップと、(3)第2の適応フィルタ手段が、遠端話者信号が無音区間であることを少なくとも条件として適応動作するステップと、(4)加工用信号選択手段が、遠端話者信号及び近端話者信号から同期して、遠端話者信号の有音期間を含む所定期間ずつを切り出して、複数の加工用信号を得るステップと、(5)切り出し信号加工手段が、遠端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の遠端話者信号を得ると共に、近端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の近端話者信号を得るステップと、(6)適応モード制御手段が、上記第1及び第2の適応フィルタ手段の適応動作の停止、再開を制御するステップであって、上記第1の適応フィルタ手段が適応動作を停止し、その停止期間内に、上記第2の適応フィルタ手段が適応動作を実行している期間があれば、上記第1の適応フィルタ手段の適応動作を再開させる際に、上記第2の適応フィルタ手段が適応動作で更新したフィルタ係数を適用して再開させるステップと、(7)相殺検出手段が、上記信号加工手段が得た加工形成の遠端話者信号が、複数の加工用信号の合成による相殺が生じているか否かを判別し、相殺が生じている場合に、加工形成の遠端話者信号の全体、若しくは、相殺が生じている部分、並ぶに、それに対応する加工形成の近端話者信号の全体、若しくは、相殺が生じている部分を、上記第2の適応フィルタ手段の適応動作で利用することを禁止するステップとを含むことを特徴とする。
【0017】
第3の本発明は、近端話者信号に回り込んだ遠端話者信号であるエコー信号を除去するエコーキャンセルプログラムであって、コンピュータを、(1)遠端話者信号及び近端話者信号に基づいて通話状態を監視する通話状態監視手段と、(2)遠端話者信号だけが有音のシングルトーク状態で適応動作する第1の適応フィルタ手段と、(3)遠端話者信号が無音区間であることを少なくとも条件として適応動作する第2の適応フィルタ手段と、(4)遠端話者信号及び近端話者信号から同期して、遠端話者信号の有効期間を含む所定期間ずつを切り出して、複数の加工用信号を得る加工用信号選択手段と、(5)遠端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の遠端話者信号を得ると共に、近端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の近端話者信号を得る切り出し信号加工手段と、(6)上記第1及び第2の適応フィルタ手段の適応動作を停止、再開を制御するものであって、上記第1の適応フィルタ手段が適応動作を停止し、その停止期間内に、上記第2の適応フィルタ手段が適応動作を実行している期間があれば、上記第1の適応フィルタ手段の適応動作を再開させる際に、上記第2の適応フィルタ手段が適応動作で更新したフィルタ係数を適用して再開させる適応モード制御手段と、(7)上記信号加工手段が得た加工形成の遠端話者信号が、複数の加工用信号の合成による相殺が生じているか否かを判別し、相殺が生じている場合に、加工形成の遠端話者信号の全体、若しくは、相殺が生じている部分、並ぶに、それに対応する加工形成の近端話者信号の全体、若しくは、相殺が生じている部分を、上記第2の適応フィルタ手段の適応動作で利用することを禁止する相殺検出手段として機能させることを特徴とする。
【発明の効果】
【0018】
本発明によれば、通常用の第1の適応フィルタが動作しないときに動作する第2の適応フィルタに対する入力する遠端話者信号及び近端話者信号を形成するものであっても、データ取得のタイミングや同期合成タイミングによらず、エコーを速く除去できるようになる。
【発明を実施するための最良の形態】
【0019】
(A)第1の実施形態
以下、本発明によるエコーキャンセラ、エコーキャンセル方法及びプログラムの第1の実施形態を、図面を参照しながら説明する。第1の実施形態は、例えば、ハンズフリー電話装置における音響エコーを除去しようとしたものである。
【0020】
(A−1)第1の実施形態の構成
図1は、第1の実施形態に係るエコーキャンセラ100の機能的構成を示すブロック図である。第1の実施形態に係るエコーキャンセラ100は、ASPなどを用いた専用チップ、専用回路として構築されたものであっても良く、DSPやCPUなどによるソフトウェア(エコーキャンセルプログラム)処理を実行する構成として実現されたものであっても良いが、機能的には、図1に示す構成を有する。
【0021】
図1において、エコーキャンセラ100は、スピーカ3から発音出力され、マイクロホン4によって捕捉された音響エコーを除去するものである。エコーキャンセラ100は、入出力端子として、遠端側からの音声信号(遠端話者信号)を内部に取り込む受信側入力端子(Rin)1と、遠端側からの音声信号をスピーカ3に出力する受信側出力端子(Rout)2と、マイクロホン4からの近端音声信号(近端話者信号)を内部に取り込む送信側入力端子(Sin)5と、エコー除去後の近端音声信号を遠端側に向けて出力する送信側出力端子(Sout)7とを有する。
【0022】
エコーキャンセラ100は、処理部として、通常適応フィルタ(ADF_N)6、音声検出部8、タイミング制御部9、適応モード制御部10、潜行型適応フィルタ(ADF_S)17及び加算器30を有する。
【0023】
ADF_N6は、通常擬似エコー作成部14、通常適応フィルタ係数適応部(通常_ADP)15及びスイッチ(SW1)32を有し、通常擬似エコー作成部14は、適応フィルタ係数部14a、積和演算部14b及び保持レジスタ14cからなっている。
【0024】
ADF_S17は、受信側加算データ選択部11r、送信側加算データ選択部11s、受信側加算データ加工部12r、送信側加算データ加工部12s、受信側加算データ保存部13r、送信側加算データ保存部13s、無音区間適応促進部(STEALS_ADF)16、自己相殺検出部18及び加算器31を有する。
【0025】
なお、受信側加算データ加工部12r及び送信側加算データ加工部12sは、実際には、後述するように減算も行うが、簡単のため、減算は「負の加算」ととらえて便宜的に加算データ加工部と記述することにしている。
【0026】
STEALS_ADF16は、図2に示すように、適応フィルタ係数部16a、積和演算部16b、保持レジスタ16c、ADF_S用適応フィルタ係数更新部(S_ADP)16d及び更新停止指示部16eを有する。
【0027】
自己相殺検出部18は、図3に示すように、参照信号加算結果データパワー計算部18_1、参照信号減算結果データパワー計算部18_2、参照信号対エコー比計算部18_3、保存信号選択部18_5、エコー信号加算結果データパワー計算部18_6及びエコー信号減算結果データパワー計算部18_7を有する。
【0028】
第1の実施形態のエコーキャンセラ100における各処理部の機能については、後述する動作説明の項で明らかにする。
【0029】
(A−2)第1の実施形態の動作
次に、第1の実施形態に係るエコーキャンセラ100の動作(エコーキャンセル方法)を、図1を参照しながら説明する。なお、初期状態においては、2入力1出力構成のスイッチ32は入力端子b側を選択している。
【0030】
(A−2−1)全体動作
遠端話者のディジタル化された音声信号x(n)が受信側入力端子1に入力される。ここで、遠端話者音声信号x(n)の小文字nは第nサンプルを表している。受信側入力端子1に入力された音声信号x(n)は、音声検出部8、ADF_S17、ADF_N6及び受信側出力端子2に与えられ、受信側出力端子2から出力された音声信号x(n)は、図示しないディジタル/アナログ変換器でアナログ信号に変換され、スピーカ3から発音出力される。
【0031】
スピーカ3から音波として放出された音声信号は、図示しない近端話者に供せられ、同時に、マイクロホン4にも漏れ込み、図示しないアナログ/ディジタル変換器でディジタル信号に変換され、送信側入力端子5を介して加算器30に与えられる。加算器30には、ADF_N6からの擬似エコーy’(n)も入力されており、加算器30は、ディジタル化されたマイクロホン4からの音声信号における音響エコー成分を、ADF_N6からの擬似エコー信号で加算相殺する。加算器30から出力された音響エコー成分が除去された音声信号は、送信側出力端子7から遠端側に向けて出力されると共に、通常_ADP15にも与えられる。
【0032】
通常_ADP15は、後述するようにして適応フィルタ(ADF_N6)の係数ベクトルを形成し、この係数ベクトルがスイッチ32を経由して通常擬似エコー作成部14の適応フィルタ係数部14aに入力されて擬似エコーy’(n)を作成するフィルタの係数として用いられる。通常擬似エコー作成部14において、積和演算部14bは、保持レジスタ14cの保持ベクトルと適応フィルタ係数部14aの係数ベクトルの要素を積和演算し、擬似エコーy’(n)として加算器30に出力する。
【0033】
上述したように、受信側入力端子1から出力された遠端話者の音声信号x(n)は音声検出部8に与えられる。音声検出部8は、音声信号x(n)における音声の有無(有音/無音)を検出するものであり、その音声検出結果v_flgは適応モード制御部10及びタイミング制御部9に与えられる。後述する適応モード制御部10のモード選択信号steals_adp_goは、ADF_S17及びADF_N6内部のスイッチ32に出力され、このとき、スイッチ32は初期状態での端子bから端子aに切り替わり、適応フィルタ係数部14aの係数ベクトルとして、通常_ADP15が形成した係数ベクトルに代えて、ADF_S17が形成した係数ベクトルが入力される状態になる。すなわち、遠端無音期間でも適応フィルタを更新し得るようにしている。
【0034】
以下、ADF_N6の内部動作及びADF_S17の内部動作を順に説明する。
【0035】
(A−2−2)ADF_N6の動作
音声検出部8は、受信側入力端子1から出力されたディジタル音声信号x(n)をもとにして、遠端話者音声の有無を検出する。音声の検出には公知の方法を用いれば良く、以下では、音声信号x(n)のパワー長期平均とパワー短期平均を計算し、両者の計算結果の乖離が大きいことで音声ありを検出する方法を適用したとして説明する。すなわち、パワー長期平均を5秒の平均値LPO_Lとし、パワー短期平均を30msの平均値LPO_Sとし、検出マージンをVD_δ(例えば、6dB)とし、(1)式が成立するか否かで音声の有無を検出する。(1)式が成立したとき、「音声あり」として音声検出結果v_flg=1を出力し、(1)式が成立しないとき、「音声なし」として音声検出結果v_flg=0を出力する。なお、音声の検出方法がこの方法に限定されないことは勿論である。
【0036】
LPO_S≧LPO_L+VD_δ …(1)
音声検出部8による音声検出結果v_flgは適応モード制御部10に与えられる。適応モード制御部10は、音声検出結果v_flg=1のときは、後述するADF_S17のS_ADP16dに動作を停止するための信号steals_adp_go=0を出力する。また、適応モード制御部10は、音声検出結果v_flg=1のときはスイッチ32を端子bに接続させ、音声検出結果v_flg=0のときはスイッチ32を端子aに接続させる。音声検出部8の音声検出結果v_flgはタイミング制御部9にも出力され、タイミング制御部9は、後述するように2つの加算データ選択部11r及び11sのデータ選択タイミング信号を出力する。ここで、音声検出結果v_flg=1のときは、タイミング制御部9は、適応モード制御部10には何も出力しないので、ADF_N6の動作系、すなわち、ADF_N6、音声検出部8、適応モード制御部10、受信側入力端子1、受信側出力端子2、送信側入力端子5、送信側出力端子7、スピーカ3及びマイクロホン4からなる構成系にとってみれば、ADF_S17はないも同じとなる。
【0037】
引き続き、ADF_N6の動作を説明する。適応モード制御部10からの信号に応じてスイッチ32の端子が端子bに接続されると、ADF_N6は下記のように動作する。まず、受信側入力端子1から出力された受信信号x(n)は保持レジスタ14cに格納され、(2)式に示すデータベクトルX(n)として扱われる。(2)式において、nはサンプル順、Nは適応フィルタ(通常擬似エコー作成部14)のタップ数(例えば、1024;この値に限定されるものではない)を表している。tはベクトル又は行列の転置を表している。すなわち、(2)式は現在の時刻nを開始時点とし、過去のNサンプルまでを保持したデータの集まりが、データベクトルX(n)を構成していることを表している。
【0038】
X(n)=[x(n),x(n−1),…,x(n−N+1)] …(2)
一方、適応フィルタ係数部14aには、図示しないフィルタ係数(N個の係数値)が格納されている。係数値は、後述するように、通常_ADP15で時々刻々と更新されるものである。以下では、適応フィルタ係数部14aのN個の係数も、(3)式に示すように1つの係数ベクトルH(n)として扱う。
【0039】
H(n)=[h(n),h(n−1),…,h(n−N+1)] …(3)
積和演算部14bは、適応フィルタ係数部14aの係数ベクトルH(n)と保持レジスタ14cのデータベクトルX(n)から、(4)式に示すようベクトルの積y’(n)を計算し、この計算値y’(n)が擬似エコー(のサンプルデータ)となる。擬似エコーy’(n)は1つの値を持つスカラー量である。
【0040】
y’(n)=H(n)X(n) …(4)
以上のようにして作成された擬似エコーy’(n)は加算器30に出力される。加算器30には、上述のようにスピーカ3からマイクロホン4に漏れこんだ打消し対象信号、すなわちエコー信号y(n)が入力されており、加算器30は、(5)式に示すよう両信号を加算相殺し、得られた残差信号e(n)を送信出力端子7に出力する。最後に、送信出力端子7に出力された信号は、送信出力端子7から図示しない遠端への音声信号として送出される。
【0041】
e(n)=y(n)−y’(n) …(5)
一方、加算器30の出力である残差信号e(n)は通常_ADP15に出力される。通常_ADP15は、残差信号e(n)と保持レジスタ14bからの出力X(n)とを用い、例えば、(6)式に示すような公知のNLMSアルゴリズムを適用して、適応フィルタのフィルタ係数H(n)を更新する。
【数1】

【0042】
(6)式は、信号e(n)、X(n)から、次回の擬似エコーの作成に用いるための適応フィルタ係数部14aの係数ベクトルが作成されることを示している。通常_ADP15で作成された係数ベクトルはスイッチ32を経由して適応フィルタ係数部14aに出力され、次回の擬似エコーの作成に備える。何度か(6)式の係数更新が進行すると、(5)式の残差信号e(n)は徐々に小さくなる。やがて十分に残差信号e(n)が小さくなると、(6)式の係数更新で係数の変化はほとんど起きなくなる。これが「適応フィルタが収束した」状態である。以上のように、音声検出部8の出力が音声ありのとき、エコーキャンセラ100はADF_N6が主体となってエコーの同定と打消しを行う。
【0043】
(A−2−3)ADF_S17の動作
続いて、ADF_S17の動作を説明する。
【0044】
ADF_S17は、音声検出部8の検出結果が「音声あり」(音声検出結果v_flg=1)のときに、音声データを収集、加工して無音期間における動作の準備だけを進め、音声検出部8の検出結果が「音声なし」(音声検出結果v_flg=0)のときに、主体となって専らエコー経路の同定を行うものである。ADF_S17は、見かけ上、音声がない期間にエコーキャンセラの係数更新を進行させる適応フィルタと言うことができる。実施形態の説明中では、便宜上、ADF_S17を「潜行型適応フィルタADF_S17(又は単にADF_S17)」と呼ぶことにする。ADF_S17は、音声検出部8の検出結果が音声ありのときには、ADF_N6に何らの信号も出力しないので、上述したADF_N6の動作には影響を与えない。
【0045】
遠端からのディジタル音声信号x(n)について音声ありを示す信号v_flg=1が音声検出部8からタイミング制御部9に入力されると、タイミング制御部9は、受信側加算データ選択部11r及び送信側加算データ選択部11sに対して、音声データの取り込みを指示する信号KEEPを出力する。各加算データ選択部11r、11sは、信号KEEPが出力される間だけデータを取り込みつつ一旦保存する。タイミング制御部9では、信号v_flg=1が一旦入力されると、その時点からカウントして、予め定めたサンプル数LENGTHに達するまでは、以後の音声信号の有無に拘わらず、信号KEEPを継続して出力する。すなわち、一旦、信号v_flg=1が入力されれば、LENGTH個のデータサンプル中には音声データサンプルと無音サンプルとが混じっていることになる。例えば、LENGTHとして38400を適用し得るが、これに限定されないことは勿論である。
【0046】
図4は、加算データ選択部11r及び11sの動作を説明するためのタイミングチャートである。
【0047】
図4(A)は、音声の有無の区間を模擬的に表したものであり、黒い部分が音声のある区間を示しており、音声検出部8がv_flg=1を出力する区間である。
【0048】
図4(B)は、一旦、信号v_flg=1を受けたタイミング制御部9がLENGTHの期間だけ音声サンプルを切り出す時間切り出し窓の様子を表しており、一旦切り出しを開始すると、切り出し区間中の信号v_flgの値には関係なく音声を切り出す様子を示している。この期間のサンプル番号を0からカウントすると、カウント値がLENGTH−1のときのサンプルが切り出しによる最終サンプルとなる。
【0049】
図4(C)は、タイミング制御部9の制御によって、切り出された音声データx(n)のベクトルの様子を示すものであり、図4(C)では、一例として、(7)式に示すような6個のベクトルX0〜X5が作成される様子が示している。
【数2】

【0050】
図4では、説明の簡単化のために、音声がある区間を黒い部分で、しかも、振幅が全て固定として描いている。切り出し窓を適用したベクトルの作成個数は、最大の場合でも6個としているが、ベクトルの最大作成個数は勿論これに限定されるものではない。また、後述するように、いつでも、最大数(ここでは6個)のベクトルの全部を使うわけではない。
【0051】
一方、送信側加算データ選択部11sでも、近端からのディジタル音声信号y(n)の切り出しを行う。送信側加算データ選択部11sも、タイミング制御部9のデータ切り出し信号KEEPがあるときだけ、端子5からのディジタル音声信号y(n)を切り出し、保存する。すなわち、音声データ切り出し開始のタイミングは、あくまでも受信側入力端子1側の音声検出部8の音声検出結果v_flgによっている。近端からのディジタル音声信号y(n)は、近端話者が話していない、遠端からのディジタル音声信号x(n)だけが有音の場合には、エコー信号になっており、エコー経路を経た遅延dが時間遅れとして含まれている。
【0052】
図4(D)は、このようなエコー信号y(n)を示しており、図4(A)に示す信号x(n)がエコーとなって当該エコー信号y(n)となり、これにより、送信側の格納ベクトルY0〜Y5が作成される。データの切り出しタイミングは、タイミング制御部9からの信号KEEPによるので、図4(B)に示す受信側の切り出しタイミングと同一であり、図4(B)に示す受信側と同じタイミングの切り出し窓(図4(E)に再掲載している)を用いて、エコー経路を経由してマイクロホン4に集音された、図4(D)に示すエコー信号y(n)を切り出す。その結果として格納されたベクトルY0〜Y5は、(8)式に示すようになる。
【数3】

【0053】
送信側及び受信側の加算データ選択部11r及び11sは、上述のようなデータの選択と蓄積を継続する。そして、予め定められた最大本数のベクトルを蓄積すると、それ以降は、新たなベクトルを蓄積されている中の最古のベクトルを上書きしていく。例えば、予め定めた最大本数のベクトルを上述のように6本のベクトルとした場合、ベクトルX5、Y5が蓄積し終わると、次のベクトルX6、Y6を、最初のベクトルX0、Y0(のデータ格納エリア)に上書きする。すなわち、(9)式に示すベクトルX0、Y0の格納エリアに、(10)式に示す次のベクトルX6、Y6を上書きする。このような新しいベクトルを最古のベクトルに置き換えることを繰り返し実行し、最大本数のベクトルとして、常に最新側の該当本数のベクトルを蓄積しておく。
【数4】

【0054】
受信側加算データ選択部11rによって作成された入力ベクトルは受信側加算データ加工部12rに出力され、送信側加算データ選択部11sによって作成された入力ベクトルは受信側加算データ加工部12sに出力される。また、受信側加算データ選択部11rは、1本のデータベクトルができ上がるたびに、加算タイミング信号keep_flug_on_to_off=1を受信側加算データ加工部12rに出力し、それ以外のときは何も出力しない。同様に、送信側加算データ選択部11sは、1本のデータベクトルができ上がるたびに、加算タイミング信号keep_flug_on_to_off=1を送信側加算データ加工部12sに出力し、それ以外のときは何も出力しない。何も出力しない代わりに、1以外の値、例えば、keep_flug_on_to_off=0を出力するようにしても良い。ここで、受信側及び送信側の加算データ選択部11r及び11sからの加算タイミング信号keep_flug_on_to_offは同じタイミングであるので、例えば、受信側加算データ選択部11rからの加算タイミング信号keep_flug_on_to_offを受信側及び送信側の加算データ加工部12r及び12sに出力するようにしても良い。
【0055】
受信側及び送信側の加算データ加工部12r及び12sはそれぞれ、予め設計者がハードウェアのメモリ資源の限界から定めた最大本数FULL_PILE(予め定められたベクトルの最大作成本数;上記の例では6本)の限界内で1又は複数のベクトルを加工(加算や減算など)し、STEALS_ADF22に対する2つの入力ベクトルを形成しようとしたものである。この加工は、各ベクトルについて、音声検出開始タイミングがデータの開始タイミングになっているので、音声検出開始タイミングをトリガとした同期した処理となっている。
【0056】
しかしながら、各ベクトルを同期して加工(加算あるいは加算平均)することが好ましくない場合もあり、そのため、この第1の実施形態では、自己相殺検出部18を設けている。
【0057】
以下、受信側及び送信側の加算データ加工部12r及び12s、並びに、自己相殺検出部18の動作を説明する。
【0058】
ここで、受信側及び送信側の加算データ加工部12r及び12sの動作は、入力されるデータが受信側のデータX0〜X5か送信側のデータY0〜Y5かが異なるだけで、計算処理そのものは同様であるので、以下では、主に、受信側加算データ加工部12rについて動作を説明する。計算手順そのものは送信側加算データ加工部12sも同様である。
【0059】
受信側加算データ加工部12rにおいて、データベクトルは最初は何も蓄積されていない。予め定めた最大本数FULL_PILEが蓄積されるまでの途中経過の本数をpile_cntとすると、データベクトルの取り得る本数pile_cntは、1≦pile_cnt≦FULL_PILEを満たす本数である。この本数pile_cntは後述する加算平均の除算に使われる定数である。
【0060】
そして、装置が初期状態から動作し始め、加算平均に用いるベクトルの蓄積が予め定めた本数FULL_PILEに達していないときには、受信側加算データ加工部12rは、その時点までに加算平均用として蓄積できている本数pile_cntで加算平均を計算する。この実施形態では、最大ベクトル本数FULL_PILEを6本に設定したので、ベクトルが最大6本たまった後は継続して最大6本の加算平均が可能であるが、装置の初期動作時などでは最大本数ではなく、後述するように蓄積済み本数分だけで加算平均を計算する。蓄積された途中経過の本数pile_cntの増加の様子に関しては後述する。
【0061】
受信側加算データ加工部12rは、最大6本のうちの1本又は複数本のデータの加工結果を自己相殺検出部18に出力する。自己相殺検出部18は、信号波形の同期加算が有効かどうかを後述の方法で判定するためのものである。
【0062】
この第1の実施形態のエコーキャンセラ100も、先願1のエコーキャンセラと同様に、参照信号(受信信号)及び送信信号をそれぞれ同期加算し、参照信号に対する送信信号側のノイズ比を同期加算によって低減して、潜行状態でもエコー除去性能を向上させるフィルタ係数を形成することを意図している。しかし、音声信号ベクトルを加算すると、しばしば音声の周期的性質によって、送信側のノイズ低減よりも激しく成分の低減を起こす場合がある。
【0063】
図5は、2つの参照信号の同期加算で成分相殺が発生するであろう2つの参照用のベクトルX0、X1を同期させて示す信号波形図である。図5において、横軸はサンプル、縦軸は振幅である。図5の例では、第1000サンプル〜第1300サンプル付近のベクトルX0、X1の波形は、相対的に波形振幅が反転しており、このまま加算すると波形同士が相殺効果を生んでしまうのが分かる。この参照信号の相殺効果が、送信側のノイズ低減効果を上回るときには、エコーキャンセラ入力作成のための同期加算は効果がない。むしろ、場合によっては、擬似エコー作成のための参照信号成分の方を大きく低減させてしまうことになり、エコーキャンセラの性能を劣化させることになり兼ねない。
【0064】
そこで、自己相殺検出部18において、後述するようにして、参照信号同士の自滅的同期加算が発生しているか否かを検出し、検出結果に応じて、無音区間適応促進部(STEALS_ADF)16の入力信号を変更させるようにする。
【0065】
以下、説明の簡単化のために、受信側並びに送信側のそれぞれに、2本のベクトルX0及びX1、並びに、ベクトルY0及びY1があるときの自己相殺検出器18の動作を説明する。受信側のベクトルX0及びX1は上述した(7)式で表されるものであり、送信側のベクトルY0及びY1は上述した(8)式で表されるものである。なお、上述した図3は、受信側及び送信側のそれぞれに、2本のデータがあるときの自己相殺検出器18の機能を機能ブロック図として描いたものである。
【0066】
受信側加算データ加工部11rは、ベクトルX0及びX1から、ベクトルX0及びX1を加算した(11)式に示す入力用加算参照ベクトルsteals_rin_addと、ベクトルX0及びX1を減算した(12)式に示す入力用減算参照ベクトルsteals_rin_subとを作成する。また、送信側データ加工部11sは、ベクトルY0及びY1から、ベクトルY0及びY1を加算した(13)式に示す入力用加算エコーベクトルsteals_sin_addと、ベクトルY0及びY1を加算した(14)式に示す入力用減算参照ベクトルsteals_sin_subとを作成する。
【数5】

【0067】
受信側加算データ加工部12rは、ベクトルX0、X1、steals_rin_add、steals_rin_subを自己相殺検出部18に与え、送信側加算データ加工部12sは、ベクトルY0、Y1、steals_sin_add、steals_sin_subを自己相殺検出部18に与える。
【0068】
自己相殺検出部18の参照信号加算結果データパワー計算部18_1は、ベクトルX0及びX1から、(15)式及び(16)式に係る2種類のパワーabs_rin_plane及びp_steals_rin_addを計算し、参照信号減算結果データパワー計算部18_2は、(17)式に示すパワーp_steals_rin_subを計算する。計算された各パワーabs_rin_plane、p_steals_rin_add、p_steals_rin_subは、参照信号対エコー比計算部18_3及び保存信号選択部18_5に与えられる。(15)式〜(17)式における演算子|A|はベクトルAの大きさを表している(他の式でも同様である)。
【0069】
abs_rin_plane=|X0|+|X1| …(15)
p_steals_rin_add=|X0+X1| …(16)
p_steals_rin_sub=|X0−X1| …(17)
一方、送信側加算データ加工部12sからの入力ベクトルY0及びY1を用いて、エコー信号加算結果データパワー計算部18_6は、(18)式に示すパワーp_steals_sin_addを計算し、参照信号対エコー比計算部18_3及び保存信号選択部18_5に出力し、エコー信号減算結果データパワー計算部18_7は、(19)式に示すパワーp_steals_sin_subを計算し、参照信号対エコー比計算部18_3及び保存信号選択部18_5に出力する。
【0070】
p_steals_sin_add=|Y0+Y1| …(18)
p_steals_sin_sub=|Y0−Y1| …(19)
保存信号選択部18_5は、以下の条件1及び条件2の成立、不成立と、参照信号対エコー比計算部18_3からの信号use_dataとに基づいて、受信側加算データ保存部13r、送信側加算データ保存部13sに保存させるデータベクトルsteals_rin、steals_sinの内容を定める。
【0071】
条件1は、式で記載すると、(20)式で表されるものであり、ベクトルX0及びX1の同期加算を有効と仮判定するための条件である(本判定は、参照信号対エコー比計算部18_3によってなされる)。すなわち、ベクトルX0及びX1のそれぞれの大きさの和abs_rin_planeが、ベクトルX0及びX1の和の大きさp_steals_rin_add以下であれば、同期加算を有効と仮判定する条件である。
【0072】
(条件1)
abs_rin_plane≦p_steals_rin_add …(20)
abs_rin_plane≦p_steals_rin_add+γ
…(20')
この実施形態では(20)式を適用するが、(20')式のように、マージン値γを適用しても構わない。例えば、マージン値γにγ=0.001xabs_rin_planeを適用するなど、設計者が適宜定めれば良い。
【0073】
保存信号選択部18_5は、条件1が成立するときには、ベクトルX0及びX1の同期加算ベクトルsteals_rin_addを、受信側加算データ保存部13rに保存させるデータベクトルsteals_rinとして仮決定し、ベクトルY0及びY1の同期加算ベクトルsteals_sin_addを、送信側加算データ保存部13sに保存させるデータベクトルsteals_sinに仮決定する。仮決定されたデータベクトルsteals_rin及びsteals_sinは参照信号対エコー比計算部18_3に与えられる。そして、本数のパラメータpile_cntを1インクリメントする。
【0074】
保存信号選択部18_5は、条件1が不成立のときに、言い換えると、同期加算が有効と仮決定できないときに、さらに、条件2が成立するかを判定する。
【0075】
条件2は、式で記載すると、(21)式で表されるものであり、ベクトルX0及びX1の同期減算が有効と仮判定するための条件である。すなわち、ベクトルX0及びX1のそれぞれの大きさの和abs_rin_planeが、ベクトルX0及びX1の差の大きさp_steals_rin_sub以下であれば、同期減算が有効と仮判定する条件である。この第1の実施形態では、ベクトルX0、X1の波形が相対的に反転の関係にあっても同期減算によりノイズを抑えることができ、また、減算によって波形が際立つので、フィルタ係数の更新に利用させることとしており、条件2は、このための条件になっている。
【0076】
(条件2)
abs_rin_plane≦p_steals_rin_sub …(21)
abs_rin_plane≦p_steals_rin_sub+γ'
…(21')
この実施形態では(21)式を適用するが、(21')式のように、マージン値γ'を適用しても構わない。例えば、マージン値γ'にγ'=0.001xabs_rin_planeを適用するなど、設計者が適宜定めれば良い。2種類のマージン値γ及びγ'に異なる値を設定しても良いことは勿論である。
【0077】
保存信号選択部18_5は、条件2が成立するときには、ベクトルX0及びX1の同期減算ベクトルsteals_rin_subを、受信側加算データ保存部13rに保存させるデータベクトルsteals_rinとして仮決定し、ベクトルY0及びY1の同期減算ベクトルsteals_sin_subを、送信側加算データ保存部13sに保存させるデータベクトルsteals_sinに仮決定する。この場合も、仮決定されたデータベクトルsteals_rin及びsteals_sinは参照信号対エコー比計算部18_3に与えられる。このときも、保存信号選択部18_5は本数のパラメータpile_cntを1インクリメントする。
【0078】
保存信号選択部18_5は、条件2が成立しないときには、受信側加算データ保存部13rに保存されているデータベクトルsteals_rin、及び、送信側加算データ保存部13sに保存されているデータベクトルsteals_sinをそのまま維持させる。このときには、保存信号選択部18_5は本数のパラメータpile_cntを増加させない。保存信号選択部18_5は、この場合にも、維持しているベクトルを、仮決定したデータベクトルsteals_rin及びsteals_sinとして参照信号対エコー比計算部18_3に与える。ここで、初回判定のときは、データはベクトルX0、Y0しかなく、保存されているデータベクトルsteals_rin、steals_sinがそれぞれ、ベクトルX0、Y0であるので、2入力X0及びX1、Y0及びY1となっても、条件2が不成立の場合には、ベクトルX0、Y0の保存状態を継続する。初回では、本数のパラメータpile_cntは、初期値すなわち1である。
【0079】
参照信号対エコー比計算部18_3は、保存信号選択部18_5から与えられた仮決定された保存用ベクトルsteals_rin、steals_sinを用いて、(22)式に従ってスカラ値である同期効果判定用評価値vevtor_snを計算する。
【0080】
vevtor_sn
=|steals_rin|/|steals_sin| …(22)
評価値vevtor_snの初期値として0を適用できるが、これに限定されるものではない。参照信号対エコー比計算部18_3には、前回計算した評価値vevtor_snが保持されており、前回計算した評価値vevtor_snより今回計算した評価値vevtor_snが大きいときには同期加算若しくは同期減算に効果があるとして、信号use_data=1を保存信号選択部18_5に出力する。これに対して、今回の評価値vevtor_snが前回計算した評価値vevtor_sn以下のときは、参照信号が相対的に低下していっているので、同期加算若しくは同期減算に効果がないとみなして、信号use_data=0を保存信号選択部18_5に出力する。
【0081】
保存信号選択部18_5は、信号use_data=1のとき、今回新たに作成(仮決定)したデータベクトルsteals_rin、steals_sinを各々本数パラメータpile_cntで除算してから加算データ保存部13r、13sに出力し、一方、信号use_data=0のとき、除算することなく、加算データ保存部13r、13sに、それまでのデータベクトルsteals_rin、steals_sinを維持させる。加算データ保存部13r、13sに直前のものを維持させる方法としては、仮決定したときでも書き込みを実行しないようにしておく方法を適用しても良く、また、仮決定したときに書き込むと共にそれまでのデータを引き上げて退避させておき、仮決定したものが本決定されない場合に、退避させたデータを書き込む方法を適用するようにしても良い。前回が初回の場合は、元のデータベクトルはsteals_rin=X0、steals_sin=Y0である。それ以前(装置動作開始時)は、steals_rin=0、steals_sin=0である。
【0082】
保存信号選択部18_5が最終的に選択したデータベクトルが加算データ保存部13r、13sに保存される。このようなデータベクトルは、要素を明示すると、(23)式及び(24)式で表される。
【数6】

【0083】
次に、加算データ保存部13r、13sに保存するデータの候補として、加算データと同時に減算データを計算しておく意味について説明する。同期加算と同時に同期減算を実行するのは、受信側加算データ選択部11rで選択した入力の音声波形が相対的に反転している場合、減算するこことで一方の波形を再反転させ、逆に、同期加算の効果を発揮させることができるからである。このときには、反転した波形のデータベクトルで同期加算の効果を利用するようにしている。
【0084】
上記では、2本のベクトルX0及びX1、ベクトルY0及びY1が選択された場合における加算データ加工部12r、12s、自己相殺検出部18の動作を説明した。3本目のベクトルX2、Y2が選択された場合には、例えば、以下のようにする。2本のベクトルX0及びX1、ベクトルY0及びY1から計算して得られた値vevtor_sn、steals_rin、steals_sinを一旦保持し、3本目の音声データX3及びY3が選択された際には、保持しているsteals_rin及びsteals_sinを、2本のベクトルでの計算時におけるベクトルX0、Y0と同様に扱い、入力された3本目の音声データX3、Y3を、2本のベクトルでの計算時におけるベクトルX1、Y1と同様に扱い、上記と同様の計算を実行する。このような計算を最後の1本の音声データが選択されるまで繰り返し、最大本数になった以降も同様な計算方法を繰り返す。このときは、加算ベクトルの本数はいつでも最大2本であるので、本数パラメータpile_cntの最大値は2である。
【0085】
同期加算や同期減算の有効性を確認しつつ、保存データを決定していく方法は、上述した例に限定されるものではない。
【0086】
例えば、一旦全部の本数の加減算の値を求めて複数の仮の保存データsteals_rin、steals_sinを作成し、その結果を前回の評価値vevtor_snと比較して、全データ本数分の同期加減算の採用可否を決めるようにし、保存データを本決定するようにしても良い。説明の簡単化のために、選択された受信側の全てのデータベクトルがX0〜X2であったとすると、求められる加減算の組み合わせはX1+X2+X3、−X1+X2+X3、X1−X2+X3、X1+X2−X3、−X1−X2+X3、−X1+X2−X3、X1−X2−X3、−X1−X2−X3となり、これらベクトルの中で大きさが最大値のものを仮決定し、前回の評価値vevtor_snと比較し、前回の評価値vevtor_snより大きいときに本決定し、その大きさに評価値vevtor_snを更新するようにしても良い。このように、全データ本数分の同期加減算の採用可否を決めてから、保存データを本決定する場合は、本数パラメータpile_cntは同期加減算の採用回数と一致し、上述の例であれば3本データでの同期加減算の採用がなされた場合には本数パラメータpile_cntの最大値は3となる。つまり、本数パラメータpile_cntは、同期加減算して採用したときの最大本数となるようにする。
【0087】
また例えば、複数あるデータベクトルからの2本の組み合わせで同様の加減算をし、最も評価値vevtor_snの向上があるものを選択するようにしても良く、加減算に供する本数も2本の組み合わせに限定されるものではない。
【0088】
また、加減算回数(加減算本数)に関しても、上述したように、設計者が予め適当な回数を設定しても良いが、近端での背景ノイズ量に応じて自動的に回数を設定するようにしても良い。例えば、遠端からの音声信号及び近端からの音声信号が共に無音であることを検出したときに、近端からの音声信号に基づいて近端の背景ノイズのパワーを求めると共に、遠端からの音声信号だけが有音であることを検出したときに、近端からの音声信号に基づいてエコーパワーを求め、求められた近端の背景ノイズパワーの平均値と、求められたエコーパワーの平均値とに基づいて、加減算回数を決定する。予め、背景ノイズパワーの平均値が属する範囲と、エコーパワーの平均値が属する範囲との組み合わせと、加減算回数とを対応付けたテーブルを用意しておいて、加減算回数を決定する。
【0089】
なお、ハードウェア的な演算量や、信号を表現するビット長に十分な余裕がある場合には、steals_rin、steals_sinを加算データ保存部13r、13sに出力する前に実行される保存信号選択部18_5における除算、すなわち、本数パラメータpile_cntでの除算を行わず、直接、保存データsteals_rin、steals_sinとして用いるようにしても良い。
【0090】
送信側の保存データの決定も、受信側の保存データの決定方法に合わせた方法とすれば良い。
【0091】
受信側加算データ保存部13rは、新たなデータベクトルsteals_rinが入力されると、適応モード制御部10に対して、ADF_S17の係数更新準備ができたことを知らせるフラグsteals_adapt_go=1を出力する。適応モード制御部10は、このフラグsteals_adapt_go=1が入力される。適応モード制御部10は、音声検出部8からの音声検出結果v_flgと加算データ加工部12sからのフラグsteals_adapt_goに応じて適応モードの制御を行う。
【0092】
図6は、適応モード制御部10による適応モードの制御方法の説明図である。
【0093】
適応モード制御部10は、図6に示すように、音声検出部8からの音声検出結果v_flgと加算データ加工部12sからのフラグsteals_adapt_goの組み合わせに応じて、ADF_S17かADF_N6のどちらかの適応フィルタを適応動作させる。但し、ADF_S17及びADF_N6が同時に適応動作することはなく、ADF_S17及びADF_N6が共に適応動作しないことはある。
【0094】
図6から分かるように、遠端からの音声信号に音声がある期間(有音期間)では、ADF_N6が適応動作し、ADF_S17は適応動作しない。ADF_S17が動作するのは、遠端からの音声信号に「音声がなく」(無音)、かつ、フラグsteals_adapt_go=1が受信側加算データ保存部13rから適応モード制御部10に入力されたときである。注意すべきは、フラグsteals_adapt_go=1であっても(新規の保存データが格納されても)、v_flg=1のとき(有音時)には、ADF_S17は適応動作しないことである。この動作は、ADF_S17が選択的に受信入力信号の無音期間だけで動作することを意味している。
【0095】
次に、ADF_S17内部のSTEALS_ADF16における係数更新動作を説明する。STEALS_ADF16は、上述したように、図2に示す詳細構成を有する。
【0096】
S_ADP16dが、適応フィルタ係数部16aの図示しない係数を更新する。保持レジスタ16cには、受信側加算データ保存部13rからの入力ベクトルの要素データが1個ずつ入力されてくる。なお、保持レジスタ16cの初期値は0である。この実施形態では、保持レジスタ16cは、適応モード制御部10からの信号steals_adapt_goが0から1に遷移するときに一度0にリセットされる。
【0097】
ADF_S17における適応フィルタ係数部16aの係数の個数は、ADF_N6の適応フィルタ係数部14aの係数の個数と同じである(上述したN個とする)。また、適応フィルタ係数部16aの係数ベクトルW(m)を(25)式で表すこととする(mはサンプル順)。係数ベクトルW(m)は、装置の動作開始時に0にリセットされ、その後はリセットされずに係数の更新を重ねる。
【0098】
W(m)=[W(0),W(1),…,W(N−1)] …(25)
受信側加算データ保存部13rに保存されたデータベクトルsteals_rinから、要素データrin_keep[m]が1個ずつ保持レジスタ16cに入力されて順番に格納され、別のベクトルになる。すなわち、1サンプルタイミングずつ要素データrin_keep[0]から順番に要素データrin_keep[LENGTH−1]に向かって、保持レジスタ16cに格納されて、N個でなる新たなべクトルになる。このベクトルSx(m)を(26)式で表すこととする。例えば、m=0であれば、データベクトルsteals_rinの最初の要素rin_keep[0]だけが保持レジスタ16cに入力されるから、(27)式に示すようになる。
【0099】
SX(m)=[Sx(m),Sx(m−1),…,Sx(m−N+1)] …(26)
SX(0)=[rin_keep[0],0,…,0] …(27)
積和演算部16bは、(25)式のベクトルW(m)と(26)式のベクトルSX(m)の積を計算して、ADF_S17内部の(28)式に示す擬似エコー信号Sy’(m)を作成し、加算器31に出力する。
【0100】
Sy’(m)=W(m)SX(m) (28)
加算器31には、送信側加算データ保存部13sから送信側ベクトルsteals_sinの要素データsin_keep(m)が受信側加算データ保存部13rと同じタイミングのmで1サンプルずつ入力され、擬似エコー信号Sy’(m)と相殺されて、残差信号Se(m)を出力する。残差信号Se(m)はS_ADP16dに出力される。S_ADP16dは、(29)式に従って、係数ベクトルW(m)をW(m+1)に更新する。
【数7】

【0101】
ここで、係数ベクトルの更新について補足する。この実施形態では、通常ADF_N6が駆動されているときでも、図示しないダブルトーク検出器の検出に基づき、送話信号及び受話信号の話者信号がかち合ったときや送話信号だけのときは、通常ADF_N6では係数更新を停止し、図示しないダブルトーク検出器が、送信側に話者音声があると判定したデータのサンプル順は、更新停止指示部16eに記憶しておき、当該データが加減算データに重複しているタイミングに関しては更新停止指示部16eがS_ADP16dに更新停止信号STPを出力し、S_ADP16dは更新停止信号STPが入力されたとき、更新を停止するようにした。これは、エコーキャンセラが、送話信号があるときに係数更新を停止させなければ性能が劣化することが公知であり、ADF_S17は、加工して得た保存データsteals_sinを利用するものではあるが、送話信号時に係数更新を実行しないという公知技術を尊重するためである。すなわち、通常ADF_N6が適応動作しないダブルトーク状態の受信音声信号及び送信音声信号から切り出された部分(サンプルが単位となっており、この単位の整数倍の期間となる)については、更新停止指示部16eの制御下で、ADF_S17も適応動作で利用しないこととした。これにより、ADF_S17のフィルタ係数が擾乱をうけ、それが通常ADF_N6側に伝わることを防止するようにする。
【0102】
なお、ダブルトーク検出方法は公知の方法を用いれば良く、エコーと送話話者音声信号を区別して送受話の状態検出ができる方法であればどのような方法でも良い。
【0103】
S_ADP16dによって更新された適応フィルタ係数部16aのフィルタ係数W(m)は、図1のスイッチ32に向かって出力される。ADF_S17が動作するとき、スイッチ32は、音声検出結果を受けた適応モード制御部10からの出力に応じて端子aに切り替えられている。フィルタ係数W(m)は、スイッチ32を経由して、(30)式のように、ADF_N6の係数H(m)として、適応フィルタ係数部14aに上書き若しくはコピーされる。
【0104】
H(m)=W(m) …(30)
その後、遠端からの音声信号x(n)について音声が検出され、ADF_N6が再び駆動され始めるときの係数の係数初期値として使われる。
【0105】
すなわち、この実施形態のエコーキャンセラ100では、図示しない遠端からの受信入力信号x(n)があるときは(有音時は)、通常の適応フィルタADF_N6を駆動してエコーキャンセラの収束を進めてエコーを減少させ、その際、受信中の入力を、一定サンプル数だけタイミングをそろえて保存しておいて、音声がないときでもエコーキャンセラの収束を進めるための準備をする。そして、音声が検出できないときには、上述のように予め蓄えた受信参照入力信号が自滅的に相殺しないことを確認した上で、受信参照入力音声信号とエコー信号を各々同期加減算し、本来の入力データとは別のエコーキャンセラ収束用入力データを作成して、見かけ上音声がない区間でも、ADF_S17を用いてエコーキャンセラの収束を進行させる。上述のように、同期加減算にあたっては、音声信号独特の周期特性のために、参照信号自体が自滅的に相殺していないか否かを検出し、相殺が発生しているときは、同期加算データを使わないか、若しくは、信号を符号反転させることによって同期加算効果を発揮させるようにしたので、音声データの選択タイミングに関わりなく、収束までの時間を短くして、素早くエコーのない通話を実現するエコーキャンセラを提供できるようにした。
【0106】
(A−3)第1の実施形態の効果
以上説明したように、第1の実施形態によれば、参照信号の選択タイミングと信号の周期性に関わりなく、従来、係数更新が不可能であった無音区間を利用してエコーキャンセラのフィルタ係数を収束させるようにしたので、仮に高速アルゴリズムを用いなくても、収束を速くでき、エコーを早期に除去できる。また、無音区間の収束に利用するデータの作成では、信号の周期性を考慮したので動作が安定している。また、無音区間の収束に利用するデータを作成する同期加減算を評価する演算式も、簡単な演算を適用しており、演算処理量をほとんど増加させることがない。さらに、上述した効果を得るために、利用者が設定すべき事項はなく、使い勝手を損なうことがない。
【0107】
(A−4)第1の実施形態の変形実施形態
上記では、評価値vevtor_snとして、(22)式に示すようなベクトルsteals_rin及びsteals_sinの大きさの比を適用したものを示したが、これらベクトルsteals_rin及びsteals_sinの大きさの差を適用するようにしても良い。
【0108】
また、上記では、同期加算と同期減算を並行して計算する場合を示したが、これらを順次計算するようにしても良い。例えば、はじめに同期加算を計算してパワーの変化を検出し、同期加算で参照信号の自己相殺が発生しているときにだけ、同期減算を計算するようにしても良い。
【0109】
(B)第2の実施形態
次に、本発明によるエコーキャンセラ、エコーキャンセル方法及びプログラムの第1の実施形態を、図面を参照しながら説明する。
【0110】
(B−1)第2の実施形態の構成
図7は、第2の実施形態に係るエコーキャンセラの機能的構成を示すブロック図であり、第1の実施形態に係る図1との同一、対応部分には同一符号を付して示している。
【0111】
第2の実施形態に係るエコーキャンセラ100Aは、第1の構成に加えて、ADF_S17内に無処理フレーム指定部20が設けられており、また、受信側加算データ加工部12r、送信側加算データ加工部12s、受信側加算データ保存部13r、送信側加算データ保存部13s、無音区間適応促進部(STEALS_ADF)16及び自己相殺検出部18の機能も、第1の実施形態のものから多少異なっている。
【0112】
(B−2)第2の実施形態の動作
以下、第2の実施形態に係るエコーキャンセラ100Aの動作を、図7を参照しながら、第1の実施形態と異なる点を中心に説明する。
【0113】
この第2の実施形態における受信側加算データ加工部12r及び送信側加算データ加工部12sはそれぞれ、対応する受信側加算データ選択部11r、送信側加算データ選択部11sが切り出した複数のベクトルを、同期加算、若しくは、同期加算平均して、加算データ保存部13r、13sに保存するデータベクトルを作成するものである。すなわち、上述した先願1と同様な方法でデータベクトルを得るものである。受信側加算データ加工部12r及び送信側加算データ加工部12sはそれぞれ、作成したデータベクトルを、加算データ保存部13r、13sに保存させる。受信側加算データ加工部12rは、対応する受信側加算データ選択部11rが切り出した複数のベクトルや、同期加算、若しくは、同期加算平均して得たデータベクトルを自己相殺検出部18に与える。また、受信側加算データ加工部12rは、作成したデータベクトルを加算データ保存部13rに保存させたときには、適応モード制御部10に対して、ADF_S17の係数更新準備ができたことを知らせるフラグsteals_adapt_go=1を出力する。
【0114】
第2の実施形態の自己相殺検出部18は、第1の実施形態と異なり、音声信号の周期性のために生じることがある、同期加算、若しくは、同期加算平均による信号相殺を、フレーム単位毎に検出する。例えば、加算データ選択部11r、11sが切り出すデータベクトル長の整数分の1(例えば、20分の1)をフレーム長とする。自己相殺検出部18が判断するフレームは、重なりがないように切り分けたものであっても良く、例えば、1/2フレーム長ずつずらせた位置のフレームに対して判断するようにしても良い。信号相殺が存在するか否かの判断方法は、第1の実施形態で説明した条件1((20)式参照)を適用できる。すなわち、判断に供するサンプル数は異なるが、複数のデータベクトルの該当するフレーム部分の個別の大きさの和が、受信側加算データ加工部12rから与えられた加工後(同期加算後)のデータベクトルの該当するフレーム部分の大きさ以下である条件が成立するか否かで判断する。なお、受信側加算データ加工部12rによる加工が同期加算平均の場合であれば、複数のデータベクトルの該当するフレーム部分の個別の大きさの和をデータベクトル数で除算した値が、受信側加算データ加工部12rから与えられた加工後(同期加算平均後)のデータベクトルの該当するフレーム部分の大きさ以下である条件が成立するか否かで判断する。
【0115】
受信入力音声信号の相殺は、音声検出部8の「音声あり」検出タイミングからの、各入力ベクトルにおける音声信号の微小な周期ずれが原因で発生する。従って、一定サンプル長のデータベクトルの中でも、相殺が発生する部分と発生しない部分があるのが通常である。そこで、第2の実施形態では、条件1の判定をフレーム単位で行うこととした。
【0116】
自己相殺検出部18は、各フレームでの検出結果を無処理フレーム指定部20に出力する。無処理フレーム指定部20は、フレーム順と相殺検出結果を一旦保持し、STEALS_ADF16の係数更新動作に同期させて、STEALS_ADF16内部の更新停止指示部16e(図2参照)に出力する。
【0117】
更新停止指示部16eは、信号相殺が発生しているフレームを処理するときには、S_ADP16dに係数更新停止信号STPを出力する。S_ADP16dは、更新停止指示部16eから係数更新停止信号STPが入力されたときには、第1の実施形態と同様に、適応フィルタの係数更新を停止する。
【0118】
第2の実施形態に係るエコーキャンセラ100Aにおけるその他の動作は、第1の実施形態のエコーキャンセラ100での動作と同様であるので、その説明は省略する。
【0119】
(B−3)第2の実施形態の効果
第2の実施形態によれば、第1の実施形態とほぼ同様な効果を奏することができる。但し、第2の実施形態によれば、第1の実施形態よりも、STEALS_ADF16の係数更新に使えるデータを細かに取捨選択でき、係数収束の機会を多くできる。その結果、第1の実施形態よりも、収束の速いエコーキャンセラを実現できる。
【0120】
(B−4)第2の実施形態の変形実施形態
上記説明では、フレームを単位に参照入力信号の自己相殺を検出するようにしたが、さらに細かく、サンプル単位で参照入力信号の自己相殺を検出するようにしても良いことは勿論である。
【0121】
(C)他の実施形態
上記各実施形態の説明においても、種々変形実施形態に言及したが、さらに、以下に例示するような変形実施形態をあげることができる。
【0122】
第2の実施形態のようなフレーム単位(又はサンプル単位)での自己相殺の判定を利用する方法と、第1の実施形態のような加工データとして同期減算データを用意するという方法とを併用するようにしても良い。同期加算データ又は同期加算平均データに自己相殺が生じていた場合には、同期減算データが参照信号として使えるか否かをもフレーム単位で確認し、使える場合には、同期加算データ又は同期加算平均データに代えて適用することとし、同期減算データも適用できないと判定したときに、無処理フレーム指定部20に無処理の旨を書き込むようにしても良い。
【0123】
本発明のエコーキャンセラは、ハンズフリー電話装置を考慮してなされたものであるが、他の音響エコーが問題となる電話装置に対しても適用することができ、また、回線エコーが問題となる電話装置に対しても適用することができる。ここでの電話装置には、会議電話装置やソフトフォンなども含まれていることは勿論である。
【図面の簡単な説明】
【0124】
【図1】第1の実施形態に係るエコーキャンセラの機能的構成を示すブロック図である。
【図2】第1の実施形態における無音区間適応促進部(STEALS_ADF)の内部構成を示すブロック図である。
【図3】第1の実施形態における自己相殺検出部の内部構成を示すブロック図である。
【図4】第1の実施形態における受信側及び送信側の加算データ選択部の動作を説明するためのタイミングチャートである。
【図5】第1の実施形態における受信側又は送信側加算データ選択部で選択した2つの信号の同期加算で成分相殺が発生するであろう2つの信号を示す信号波形図である。
【図6】第1の実施形態における適応モード制御部による適応モードの制御方法の説明図である。
【図7】第2の実施形態に係るエコーキャンセラの機能的構成を示すブロック図である。
【符号の説明】
【0125】
6…通常適応フィルタ(ADF_N)、8…音声検出部、9…タイミング制御部、10…適応モード制御部、11r…受信側加算データ選択部、11s…送信側加算データ選択部、12r…受信側加算データ加工部、12s…送信側加算データ加工部、13r…受信側加算データ保存部、13s…送信側加算データ保存部、14…通常擬似エコー作成部、14a…適応フィルタ係数部、14b…積和演算部、14c…保持レジスタ、15…通常適応フィルタ係数適応部(通常_ADP)、16…無音区間適応促進部(STEALS_ADF)、16a…適応フィルタ係数部、16b…積和演算部、16c…保持レジスタ、16d…ADF_S用適応フィルタ係数更新部(S_ADP)、16e…更新停止指示部、17…潜行型適応フィルタ(ADF_S)、18…自己相殺検出部、18_1…参照信号加算結果データパワー計算部、18_2…参照信号減算結果データパワー計算部、18_3…参照信号対エコー比計算部、18_5…保存信号選択部、18_6…エコー信号加算結果データパワー計算部、18_7…エコー信号減算結果データパワー計算部、20…無処理フレーム指定部、30…加算器、31…加算器、32…スイッチ(SW1)、100、100A…エコーキャンセラ。

【特許請求の範囲】
【請求項1】
近端話者信号に回り込んだ遠端話者信号であるエコー信号を除去するエコーキャンセラにおいて、
遠端話者信号及び近端話者信号に基づいて通話状態を監視する通話状態監視手段と、
遠端話者信号だけが有音のシングルトーク状態で適応動作する第1の適応フィルタ手段と、
遠端話者信号が無音区間であることを少なくとも条件として適応動作する第2の適応フィルタ手段と、
遠端話者信号及び近端話者信号から同期して、遠端話者信号の有音期間を含む所定期間ずつを切り出して、複数の加工用信号を得る加工用信号選択手段と、
遠端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の遠端話者信号を得ると共に、近端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の近端話者信号を得る切り出し信号加工手段と、
上記第1及び第2の適応フィルタ手段の適応動作の停止、再開を制御するものであって、上記第1の適応フィルタ手段が適応動作を停止し、その停止期間内に、上記第2の適応フィルタ手段が適応動作を実行している期間があれば、上記第1の適応フィルタ手段の適応動作を再開させる際に、上記第2の適応フィルタ手段が適応動作で更新したフィルタ係数を適用して再開させる適応モード制御手段と、
上記信号加工手段が得た加工形成の遠端話者信号が、複数の加工用信号の合成による相殺が生じているか否かを判別し、相殺が生じている場合に、加工形成の遠端話者信号の全体、若しくは、相殺が生じている部分、並ぶに、それに対応する加工形成の近端話者信号の全体、若しくは、相殺が生じている部分を、上記第2の適応フィルタ手段の適応動作で利用することを禁止する相殺検出手段と
を有することを特徴とするエコーキャンセラ。
【請求項2】
上記相殺検出手段は、合成される前の遠端話者信号から切り出された複数の加工用信号のそれぞれの大きさと、合成後の加工形成の遠端話者信号の大きさとに基づいて、相殺を判定すると共に、相殺がないと判定された場合でも、今回の合成による加工形成の近端話者信号の大きさに対する加工形成の遠端話者信号の大きさの比が、前回の合成時の比より改善されていない場合には、上記第2の適応フィルタ手段の適応動作で、加工形成の遠端話者信号及び近端話者信号を利用させないことを特徴とする請求項1に記載のエコーキャンセラ。
【請求項3】
上記切り出し信号加工手段が、合成する加工用信号の数の上限が定まっており、上記切り出し信号加工手段は、上記加工用信号選択手段によって切り出された加工用信号の数が上限に達していない場合にも、切り出された加工用信号に対して合成処理を行うことを特徴とする請求項1又は2に記載のエコーキャンセラ。
【請求項4】
遠端話者信号から切り出された加工用信号とそれに同期して近端話者信号から切り出された加工用信号とがダブルトーク区間を含む場合には、その区間に対応する、加工形成の遠端話者信号及び加工形成の近端話者信号の区間を、上記第2の適応フィルタ手段の適応動作で利用することを禁止する更新停止指示手段をさらに有することを特徴とする請求項1〜3のいずれかに記載のエコーキャンセラ。
【請求項5】
上記相殺検出手段は、上記加工用信号選択手段が、遠端話者信号及び近端話者信号から加工用信号を切り出す所定期間よりも短い期間を単位として、相殺を判定し、相殺が生じている部分を、上記第2の適応フィルタ手段の適応動作で利用することを禁止することを特徴とする請求項1〜4のいずれかに記載のエコーキャンセラ。
【請求項6】
上記信号加工手段における加工方法が、同期加算又は同期加算平均であることを特徴とする請求項1〜5のいずれかに記載のエコーキャンセラ。
【請求項7】
近端話者信号に回り込んだ遠端話者信号であるエコー信号を除去するエコーキャンセル方法において、
通話状態監視手段が、遠端話者信号及び近端話者信号に基づいて通話状態を監視するステップと、
第1の適応フィルタ手段が、遠端話者信号だけが有音のシングルトーク状態で適応動作するステップと、
第2の適応フィルタ手段が、遠端話者信号が無音区間であることを少なくとも条件として適応動作するステップと、
加工用信号選択手段が、遠端話者信号及び近端話者信号から同期して、遠端話者信号の有音期間を含む所定期間ずつを切り出して、複数の加工用信号を得るステップと、
切り出し信号加工手段が、遠端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の遠端話者信号を得ると共に、近端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の近端話者信号を得るステップと、
適応モード制御手段が、上記第1及び第2の適応フィルタ手段の適応動作の停止、再開を制御するステップであって、上記第1の適応フィルタ手段が適応動作を停止し、その停止期間内に、上記第2の適応フィルタ手段が適応動作を実行している期間があれば、上記第1の適応フィルタ手段の適応動作を再開させる際に、上記第2の適応フィルタ手段が適応動作で更新したフィルタ係数を適用して再開させるステップと、
相殺検出手段が、上記信号加工手段が得た加工形成の遠端話者信号が、複数の加工用信号の合成による相殺が生じているか否かを判別し、相殺が生じている場合に、加工形成の遠端話者信号の全体、若しくは、相殺が生じている部分、並ぶに、それに対応する加工形成の近端話者信号の全体、若しくは、相殺が生じている部分を、上記第2の適応フィルタ手段の適応動作で利用することを禁止するステップと
を含むことを特徴とするエコーキャンセル方法。
【請求項8】
上記信号加工手段による加工方法が、同期加算又は同期加算平均であることを特徴とする請求項7に記載のエコーキャンセル方法。
【請求項9】
近端話者信号に回り込んだ遠端話者信号であるエコー信号を除去するエコーキャンセルプログラムであって、
コンピュータを、
遠端話者信号及び近端話者信号に基づいて通話状態を監視する通話状態監視手段と、
遠端話者信号だけが有音のシングルトーク状態で適応動作する第1の適応フィルタ手段と、
遠端話者信号が無音区間であることを少なくとも条件として適応動作する第2の適応フィルタ手段と、
遠端話者信号及び近端話者信号から同期して、遠端話者信号の有効期間を含む所定期間ずつを切り出して、複数の加工用信号を得る加工用信号選択手段と、
遠端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の遠端話者信号を得ると共に、近端話者信号から切り出された複数の加工用信号をその先頭を揃えて合成し、上記第2の適応フィルタ手段が適応動作で利用する加工形成の近端話者信号を得る切り出し信号加工手段と、
上記第1及び第2の適応フィルタ手段の適応動作を停止、再開を制御するものであって、上記第1の適応フィルタ手段が適応動作を停止し、その停止期間内に、上記第2の適応フィルタ手段が適応動作を実行している期間があれば、上記第1の適応フィルタ手段の適応動作を再開させる際に、上記第2の適応フィルタ手段が適応動作で更新したフィルタ係数を適用して再開させる適応モード制御手段と、
上記信号加工手段が得た加工形成の遠端話者信号が、複数の加工用信号の合成による相殺が生じているか否かを判別し、相殺が生じている場合に、加工形成の遠端話者信号の全体、若しくは、相殺が生じている部分、並ぶに、それに対応する加工形成の近端話者信号の全体、若しくは、相殺が生じている部分を、上記第2の適応フィルタ手段の適応動作で利用することを禁止する相殺検出手段として機能させる
ことを特徴とするエコーキャンセルプログラム。
【請求項10】
上記信号加工手段における加工方法が、同期加算又は同期加算平均であることを特徴とする請求項9に記載のエコーキャンセルプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2010−88039(P2010−88039A)
【公開日】平成22年4月15日(2010.4.15)
【国際特許分類】
【出願番号】特願2008−257589(P2008−257589)
【出願日】平成20年10月2日(2008.10.2)
【出願人】(000000295)沖電気工業株式会社 (6,645)
【Fターム(参考)】