(57)【要約】【課題】差分型ＦＧ/ＢＧ構成において、ＢＧ部の適応フィルタ係数Ｈｂｊが、時間に連続するＦＧフィルタ係数Ｈｆｊが互いに拘束条件を満たさない部分を打ち消し合わないように加算される処理が行なわれる状況が継続することを解決する。【解決手段】ＢＧ部は周波数領域で処理を行うものであり、周波数領域の上記適応フィルタ係数を時間領域に変換した場合に、最初の係数或いは半分より１つ後方の係数が０になり、その他はそのままであるような帯域阻止フィルタのフィルタ係数で巡回畳み込みした結果と同一になるように、上記適応フィルタ係数を更新する過程の少なくとも一つにおけるデータに対して、周波数領域処理して更新された適応フィルタ係数として適応フィルタ係数レジスタに格納する部分拘束処理部を備える。【選択図】図４
2008124914.tif 000002
【特許請求の範囲】
【請求項１】
受話信号をＦＧフィルタ係数でフィルタ処理して、ＦＧ推定信号を求めるＦＧ推定信号生成部と、
収音信号から上記ＦＧ推定信号を減算して、ＦＧ誤差信号を求めるＦＧ減算部と、を備えるＦＧ部と、
上記受話信号を適応フィルタ係数でフィルタ処理して、ＢＧ推定信号を生成するＢＧ推定信号生成部と、
上記ＦＧ誤差信号から上記ＢＧ推定信号を減算して、ＢＧ誤差信号を求める誤差計算部と、
上記ＢＧ誤差信号と上記受話信号とを用いて、上記ＢＧ誤差信号のパワーが減少するように上記適応フィルタ係数を更新するＢＧフィルタ係数更新部と、を備えるＢＧ部と、
上記適応フィルタ係数を上記ＦＧフィルタ係数に加算し、上記ＦＧフィルタ係数を更新するＦＧフィルタ係数更新部と、を具備するエコーキャンセル装置において、
上記ＢＧ部は周波数領域で処理を行うものであり、
周波数領域の上記適応フィルタ係数を時間領域に変換した場合に、最初の係数或いは半分より１つ後方の係数が０になり、その他はそのままであるような帯域阻止フィルタのフィルタ係数で巡回畳み込みした結果と同一になるように、上記適応フィルタ係数を更新する過程の少なくとも一つにおけるデータに対して、周波数領域処理して更新された適応フィルタ係数として適応フィルタ係数レジスタに格納する部分拘束処理部を具備することを特徴とするエコーキャンセル装置。
【請求項２】
請求項１に記載のエコーキャンセル装置において、
上記ＢＧ部は、上記ＦＧ誤差信号と、
上記ＢＧ誤差信号又は上記ＢＧ推定信号とから収束した周波数領域適応フィルタ係数を選択して拘束条件指令を出力する選択的拘束条件適用部と、
上記拘束条件処理指令を受けた選択された周波数領域適応フィルタ係数に対して拘束条件処理を行なう拘束条件適用部と、
を備え、
上記部分拘束処理部における少なくとも一つにおけるデータは、上記拘束条件処理指令を受けていない非選択周波数領域適応フィルタ係数であることを特徴とするエコーキャンセル装置。
【請求項３】
請求項１に記載のエコーキャンセル装置において、
上記ＢＧフィルタ係数更新部は、上記ＢＧ誤差信号と上記受話信号とを用いて更新量を求める更新量計算部と、
上記更新量と前回の適応フィルタ係数とを加算して適応フィルタ係数を更新する加算部と、を備え、
上記部分拘束処理部における上記少なくとも一つにおけるデータは、上記更新量であることを特徴とするエコーキャンセル装置。
【請求項４】
請求項１乃至３の何れかに記載のエコーキャンセル装置において、
上記部分拘束処理部は、周波数領域の適応フィルタ係数の平均値を求める平均値計算部と、
上記平均値を上記適応フィルタ係数のそれぞれから減算して上記更新適応フィルタ係数を求める係数計算部と、を具備し、
若しくは、上記適応フィルタ係数の偶数番目と奇数番目のそれぞれを、上記誤差の平均値に対し減算又は加算を行なって上記更新適応フィルタ係数を求める係数計算部と、を備えることを特徴とするエコーキャンセル装置。
【請求項５】
請求項１乃至４の何れかに記載のエコーキャンセル装置において、
上記ＢＧ部の誤差計算部は、データ数の半分の０を付加して上記時間領域のＦＧ誤差信号を周波数領域の信号に変換するＦＧ誤差周波数領域変換部を備え、
上記部分拘束処理部は、上記ＦＧ誤差周波数領域変換部が古いデータ側に０を付加して変換処理を行なうものであれば、
上記周波数領域適応フィルタ係数を時間領域に変換した場合に半分より１つ後方の係数が０になる周波数領域処理を行なうものであり、
上記ＦＧ誤差周波数領域誤差計算部が新しいデータ側を０とした場合、上記周波数領域適応フィルタ係数を時間領域に変換した最初の係数を０とするものであることを特徴とするエコーキャンセル装置。
【請求項６】
ＦＧ推定信号生成部が、受話信号をＦＧフィルタ係数でフィルタ処理して、ＦＧ推定信号を求める過程と、
ＦＧ部が、収音信号から上記ＦＧ推定信号を減算して、ＦＧ誤差信号を求める過程と、
ＢＧ推定信号生成部が、上記受話信号を適応フィルタ係数でフィルタ処理して、ＢＧ推定信号を生成する過程と、
誤差計算部が、上記ＦＧ誤差信号から上記ＢＧ推定信号を減算して、ＢＧ誤差信号を求める過程と、
ＢＧフィルタ係数更新部が、上記ＢＧ誤差信号と上記受話信号とを用いて、上記ＢＧ誤差信号のパワーが減少するように上記適応フィルタ係数を更新する過程と、
ＦＧフィルタ係数更新部が、上記適応フィルタ係数を上記ＦＧフィルタ係数に加算し、上記ＦＧフィルタ係数を更新する過程と、から成るエコーキャンセル方法において、
上記ＢＧ部は周波数領域で処理を行うものであり、周波数領域の上記適応フィルタ係数を時間領域に変換した場合に、最初の係数或いは半分より１つ後方の係数が０になり、その他はそのままであるような帯域阻止フィルタのフィルタ係数で巡回畳み込みした結果と同一になるように、上記適応フィルタ係数を更新する過程の少なくとも一つにおけるデータに対して、周波数領域処理して更新された適応フィルタ係数として適応フィルタ係数レジスタに格納する過程を、含むことを特徴とするエコーキャンセル方法。
【請求項７】
請求項６に記載のエコーキャンセル方法において、
上記ＦＧ誤差信号と、上記ＢＧ誤差信号又は上記ＢＧ推定信号とから収束した周波数領域適応フィルタ係数を選択して拘束条件指令を出力する過程と、
上記周波数領域適応フィルタ係数を更新する過程の少なくとも一つにおけるデータは、上記拘束条件処理指令を受けていない非選択周波数領域適応フィルタ係数である周波数領域適応フィルタ係数であることを特徴とするエコーキャンセル方法。
【請求項８】
請求項６に記載のエコーキャンセル方法において、
上記ＢＧ誤差信号を求める過程が、データ数の半分の０を付加して上記時間領域のＦＧ誤差信号を周波数領域の信号に変換する過程を備え、
上記ＦＧ誤差信号を周波数領域の信号に変換する過程が古いデータ側に０を付加して変換処理を行なうものであれば、
上記周波数領域適応フィルタ係数を時間領域に変換した場合に半分より１つ後方の係数が０になる周波数領域処理過程を行なうものであり、
上記ＦＧ誤差信号を周波数領域の信号に変換する過程が新しいデータ側を０とした場合、上記周波数領域適応フィルタ係数を時間領域に変換した最初の係数を０とする周波数領域処理過程を含むことを特徴とするエコーキャンセル方法。
【請求項９】
請求項１乃至５の何れかに記載した各装置としてコンピュータを機能させるための装置プログラム。
【請求項１０】
請求項９に記載した何れかのプログラムを記録したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、ＴＶ会議や音声会議などハンズフリー通信のエコーキャンセル装置、回線エコーキャンセル装置などのエコーキャンセル装置、その方法、そのプログラム、およびその記録媒体に関する。
【背景技術】
【０００２】
エコーが伝達する未知の系をディジタルフィルタでモデル化し、受話信号と収音信号を用いてエコーの伝達系を推定する基本的な技術として適応フィルタを用いるものがある。適応フィルタによりエコー伝達系を推定する際にエコー伝達系の推定精度を大きく劣化させる要因として収音信号に含まれる雑音が挙げられる。特に、音響および回線エコーキャンセル装置等で同時通話あるいはダブルトークと呼ばれるエコーへの話者からの送話音声の混入は、混入するまで持っていたディジタルフィルタの推定精度を大きく低下させ、エコーキャンセル装置等がエコー伝達を推定するため、何らかの対策が必要となる。以下、適応フィルタを用いた従来のエコーキャンセル装置、その従来のダブルトーク対策について説明する。
【０００３】
図１に従来のエコーキャンセラの機能構成例を示す。図１において、受話信号をｘ（ｋ）、エコー推定信号をｙ（ｋ）、収音信号をｄ（ｋ）、誤差信号をｅ（ｋ）、適応フィルタの係数からなるベクトルをｈ（ｋ）とし、ｋは離散的時刻を表す。
図示しない遠端話者からの音声信号が、受話信号ｘ（ｋ）として、エコーキャンセラ１０を通じて再生手段４に入力される。エコーキャンセラ１０は推定信号生成部１１と、フィルタ係数更新部１２と、減算部１３と、適応フィルタ係数レジスタ１４と、により構成されており、受話信号ｘ（ｋ）はフィルタ係数更新部１２と推定信号生成部１１とに入力される。
【０００４】
推定信号生成部１１で、受話信号ｘ（ｋ）を適応フィルタ係数レジスタ１４よりの適応フィルタ係数ｈ（ｋ）でフィルタ処理することでエコー推定信号ｙ（ｋ）を生成する。エコー推定信号ｙ（ｋ）を生成する手段は様々であるが、一時刻分のエコー推定信号ｙ（ｋ）を生成する場合には、受話信号ｘ（ｋ）から成るベクトルと適応フィルタ係数のベクトルｈ（ｋ）の内積により生成し、つまりｙ（ｋ）は、以下の式（１）で表すことができる。
ｙ（ｋ）＝[ｘ（ｋ−L+1）、ｘ（ｋ−L+２），．．．，ｘ（ｋ）]ｈ（ｋ）
式（１）
【０００５】
ただし、Lは推定信号生成部１１を構成する適応フィルタの係数の数（タップ数）を表す。一般の適応フィルタにおいて、複数の時刻分の推定信号を生成する場合には、演算量低減のために周波数領域で行うことが多いが、その詳細は非特許文献１に記載されている。減算部１３では、収音手段６で収音された収音信号ｄ（ｋ）からエコー推定信号ｙ（ｋ）を減算して誤差信号ｅ（ｋ）求める。つまり、減算部１３で、以下の式（２）を計算する。
ｅ（ｋ）=ｄ（ｋ）−ｙ（ｋ）    式（２）
【０００６】
フィルタ係数更新部１２では誤差信号e（ｋ）と受話信号ｘ（ｋ）から適応アルゴリズムにより適応フィルタ係数修正量Δｈを求める。そして、適応フィルタ係数修正量Δｈに修正量を調節するステップサイズμを乗算して、１時刻前の適応フィルタ係数ｈ（ｋ−１）に加算することで、適応フィルタ係数レジスタ１４内の適応フィルタ係数を更新する。つまり、このフィルタ係数の更新は、以下の式（３）で表すことができる。
ｈ（ｋ）＝ｈ（ｋ−１）＋μΔｈ（ｋ）      式（３）
【０００７】
適応フィルタ係数修正量Δｈは、適応アルゴリズムにより誤差信号ｅ（ｋ）のパワーが減少するように求められる。なお、代表的な適応アルゴリズムとしては、時間領域で処理する最小二乗（ＬＭＳ：Least-Mean-Squares）法、学習同定（ＮＬＭＳ：Normalized LMS)法、逐次最小二乗（ＲＬＳ：Recursive-Least-Square)法が良く知られている。減算部１３で収音信号ｄ（ｋ）からエコー推定信号ｙ（ｋ）が除去され、送話信号として、受話信号ｘ（ｋ）の送信側に送信される。
【０００８】
＜ダブルトーク対策手段＞
従来のダブルトーク対策手段としてフィルタ二重化による手段を一例として説明する。これは、Foreground/Background(以下ＦＧ/ＢＧと称する)とも呼ばれるものである。
図２に従来のＦＧ/ＢＧ方式を用いて構成されたＦＧ/ＢＧエコーキャンセラ２０の機能構成例を示す。図１と同一の機能構成部分には同一参照番号を付けて重複説明を省略する。このことは以下の説明においても同様である。
ＦＧ/ＢＧエコーキャンセラ２０では、まず、ＢＧフィルタ係数更新部２２で、反響路（再生手段４から収音手段６へのエコー経路）２４のインパルス応答を推定し、その推定値ｈｂ（ｋ）を適応フィルタ係数レジスタ２７に適応フィルタ係数ｈｂ（ｋ）として転送する。
【０００９】
ＢＧ推定信号生成部２６で、受話信号ｘ（ｋ）を適応フィルタ係数ｈｂ（ｋ）で上記と同様のフィルタ処理をして、ＢＧ推定信号ｙｂ（ｋ）を生成する。適応フィルタ係数ｈｂ（ｋ）は適応フィルタ係数レジスタ２７に格納されている。
減算部２８において、収音手段６から収音された収音信号ｄ（ｋ）からＢＧ推定信号ｙｂ（ｋ）を減算して、ＢＧ誤差信号ｅｂ（ｋ）が生成される。反響路２４のインパルス応答の推定が良好に行われていれば、再生手段４よりの収音手段６に収音された反響信号と推定信号ｙｂ（ｋ）はほぼ等しいものとなる。
【００１０】
一方、ＦＧ推定信号生成部３０で、受話信号ｘ（ｋ）をＦＧフィルタ係数ｈｆ（ｋ）でフィルタ処理して、ＦＧ推定信号ｙｆ（ｋ）を生成する。ＦＧフィルタ係数はＦＧフィルタ係数レジスタ２９に格納されている。そして、減算部３１で、収音信号ｄ（ｋ）からＦＧ推定信号ｙｆ（ｋ）を減算して、ＦＧ誤差信号ｅｆ（ｋ）が生成される。
ＢＧ推定信号生成部２６の特性が真の反響路２４の特性に近ければ（詳細は以下で述べる）、適応フィルタ係数レジスタ２７中の適応フィルタ係数ｈｂ（ｋ）をＦＧフィルタ係数レジスタ２９に転送し、ＦＧフィルタ係数ｈｆ（ｋ）をその適応フィルタ係数ｈｂ（ｋ）に更新する。
【００１１】
また、ＢＧ誤差信号ｅｂ（ｋ）とＦＧ誤差信号ｅｆ（ｋ）とが誤差比較部３８に入力される。受話信号ｘ（ｋ）のパワーが所定値以上であり、かつダブルトークでない状態において、誤差比較部３８で、ＢＧ誤差信号ｅｂ（ｋ）のパワーＰｅｂ（ｋ）がＦＧ誤差信号ｅｆ（ｋ）のパワーＰｅｆ（ｋ）よりも小さいと判断された場合、適応フィルタ係数ｈｂ（ｋ）は、ＦＧフィルタ係数ｈｆ（ｋ）と比べて、実際の反響路２４のインパルス応答ｈ（ｋ）をより良く模擬していると考えられる。この場合、適応フィルタ係数ｈｂ（ｋ）をＦＧ推定信号生成部３７に転送してＦＧフィルタ係数ｈｆ（ｋ）を更新する。
ここでパワーとは信号の時間積分値であり、離散化された信号を扱う場合には、例えばＰｘ（ｋ）＝Σｘ2 （ｋ−ｉ）（Σはｉ＝０からｎ−１まで）のように計算される。ここでｎは積分時間を表す。
【００１２】
そして、発話者の音声が収音手段６に収音された状態では、ＦＧ誤差信号ｅｆ（ｋ）が受話信号ｘ（ｋ）の送信側に、出力される。なお、ＦＧ/ＢＧエコーキャンセラ２０の詳細については、特許文献１に記載されている。
このように、ＦＧ/ＢＧ構成とすることで、ダブルトーク時には適応フィルタ係数ｈｂ（ｋ）が乱れ、ＦＧフィルタ係数ｈｆ（ｋ）への複製が起きずＦＧフィルタ係数ｈｆ（ｋ）はダブルトーク前の値を保持しているので、ＦＧ誤差信号ｅｆ（ｋ）にダブルトークによる影響が現れない。
【００１３】
＜差分型ＦＧ/ＢＧ構成＞
さらに、同時通話による適応フィルタ係数ｈｂ（ｋ）の乱れがＦＧフィルタ係数ｈｆ（ｋ）に及ぼす影響を小さくし、良好な同時通話性能を保持する手法として、ＦＧ誤差信号ｅｆ（ｋ）をＢＧ部に入力させることで、適応フィルタ係数ｈｂ（ｋ）として、ＦＧフィルタ係数ｈｆ（ｋ）の変化分を推定する差分型ＦＧ/ＢＧエコーキャンセラがある。
差分型ＦＧ/ＢＧエコーキャンセラ４５の機能構成例を図３に示す。ＢＧ部４０はＢＧフィルタ係数更新部２２、ＢＧ推定信号生成部２６、ＢＧ減算部２８、適応フィルタ係数レジスタ２７、とで構成されている。またＦＧ部５０は、ＦＧフィルタ係数レジスタ２９、ＦＧ推定信号生成部３０、ＦＧ減算部３１とで構成されている。
【００１４】
ＢＧ減算部２８では、ＦＧ減算部３１よりのＦＧ誤差信号ｅｆ（ｋ）が誤差比較部３８とＢＧ減算部２８とに入力される。ＢＧ減算部２８で、ＢＧ推定信号生成部２６よりのＢＧ推定信号ｙｂ（ｋ）から、ＦＧ誤差信号ｅｆ（ｋ）を減算することにより、ＢＧ誤差信号ｅｂ（ｋ）が求められる。ｅｂ（ｋ）はＢＧフィルタ係数更新部２２に入力される。誤差比較部３８で、ＢＧ誤差信号ｅｂ（ｋ）のパワーＰｅｂ（ｋ）がＦＧ誤差信号ｅｆ（ｋ）のパワーＰｅｆ（ｋ）よりも小さいと判断された場合、ＦＧフィルタ係数更新部５２において、適応フィルタ係数レジスタ２７中の適応フィルタ係数ｈｂ（ｋ）を、ＦＧフィルタ係数レジスタ２９中のｈｆ（ｋ）と加算、もしくは重み付け加算して、その加算結果のフィルタ係数を新たなＦＧフィルタ係数ｈｆ（ｋ）として更新する。なお、差分型ＦＧ/ＢＧエコーキャンセラの詳細は、特許文献２に記載されている。
【００１５】
上記のように、この差分型ＦＧ/ＢＧエコーキャンセラ構成は、ＢＧ部の適応アルゴリズムとして、適応フィルタ係数ｈｂ（ｋ）をＦＧフィルタ係数ｈｆ（ｋ）に反映するまでの間に、少ないエコー消去量さえ得られればよいという特徴がある。
【特許文献１】特許３２４８５５１号、図７
【特許文献２】２８３６２７７号
【非特許文献１】”Multidelay  block  frequency  domain  adaptive  filter,”  Jia  Sien  Soo  and  Khee  K.  Pang,  IEEE  Transaction  on  Acoustics,  Speech,  and  Signal  Processing,  vol.  38,  No.  2,  pp.  373-376  (1990.2)
【非特許文献２】”Frequency−domain and mulirate adaptive filtering,”JohnSynk,IEEE SPmagazin,Jabuary 1992
【非特許文献３】“Connecting Partitioned Frequency−Domain Filters in Parallel or in Cascade,section I，II，III，”M.Joho and G.S.Moschytz,vol47.pp.685−698(2000.8)
【発明の開示】
【発明が解決しようとする課題】
【００１６】
上記で説明した従来の差分型ＦＧ/ＢＧ型エコーキャンセラでは、適応フィルタ係数のフィルタ数が多いと、演算量が多いという問題点があった。そこで、上記の演算を時間領域でなく、周波数領域で行うということを考えた。周波数領域で動作するＦＧ/ＢＧ型エコーキャンセラの場合、ＢＧ部４０の適応フィルタ係数ｈｂ（ｋ）をＦＧフィルタ係数ｈｆ（ｋ）に加算する際に適応フィルタ係数ｈｂ（ｋ）がある拘束条件を満たすように変換した後に加算を行う必要がある。この拘束条件とは、ＦＧ部５０における周波数領域で行うフィルタ処理の結果が時間領域でフィルタ処理を行った場合の結果と一致させるというものである。
【００１７】
この拘束条件を満たすための具体的な処理手順としては、周波数領域にある適応フィルタ係数ｈを時間領域に変換し、その結果の半分以上を０で置き換えた後、再度周波数領域に変換するというものである。このことは、一般的に、適応フィルタにおいて、周波数領域で処理する場合に、適応フィルタ係数を更新する際と同様に考えられ、また、時間領域に変換した適応フィルタ係数のどの要素を０に置き換えるか等の詳細な説明は上記非特許文献１、もしくは、上記非特許文献２に記載されている。なお、FGフィルタ係数が時間領域の値である場合は、再度の周波数領域への変換は不要であり０に置き換えない係数を用いればよい。
【００１８】
しかし、上記のように、ＢＧ部４０のＢＧ推定信号生成部２６を周波数領域で動作させる差分型ＦＧ/ＢＧ構成の場合、ダブルトークやエコーに重畳したノイズのために適応フィルタ係数hｂ（ｋ）が大きく乱れた結果、拘束条件を満たす値から大きく外れた状況が継続することが考えられる。この状況では、適応フィルタ係数の個々の要素は、拘束条件を満たさないが、時間的に連続する適応フィルタ係数が互いに拘束条件を満たさない部分を打ち消しあうように、更新され、このためＢＧ誤差信号ｅｂ（ｋ）のレベルは小さくなる。そのため、適応フィルタ係数ｈｂ（ｋ）をＦＧフィルタ係数ｈｆ（ｋ）に加算する動作が行われるが、この際のフィルタ係数ｈｆ（ｋ）の更新はＦＧ誤差信号ｅｆ（ｋ）が減少するようには必ずしもならずに、ＦＧ誤差信号ｅｆ（ｋ）のレベルが時間とともに増加していくという問題が生じるおそれがあると考えられる。また、この問題を解決するためには、周波数領域で処理するＢＧフィルタ係数更新部２２において、適応フィルタ係数ｈｂ（ｋ）が拘束条件を満たすためには適応フィルタ係数hｂ（ｋ）を時間領域に変換しなければならないため演算量が増加するという問題が生じる。
【課題を解決するための手段】
【００１９】
この発明によるエコーキャンセル装置は、ＦＧ推定信号生成部が受話信号をＦＧフィルタ係数でフィルタ処理してＦＧ推定信号を求め、ＦＧ減算部が収音信号から上記ＦＧ推定信号を減算してＦＧ誤差信号を求めるＦＧ部と、
ＢＧ推定信号生成部が上記受話信号を適応フィルタ係数でフィルタ処理してＢＧ推定信号を生成し、誤差計算部が上記ＦＧ誤差信号から上記ＢＧ推定信号を減算してＢＧ誤差信号を求め、ＢＧフィルタ係数更新部が上記ＢＧ誤差信号と上記受話信号とを用いて上記ＢＧ誤差信号のパワーが減少するように上記適応フィルタ係数を更新するＢＧ部と、
上記適応フィルタ係数を上記ＦＧフィルタ係数に加算し、上記ＦＧフィルタ係数を更新するＦＧフィルタ係数更新部と、を具備するエコーキャンセル装置において、
上記ＢＧ部は周波数領域で処理を行うものであり、
周波数領域の上記適応フィルタ係数を時間領域に変換した場合に、最初の係数或いは半分より１つ後方の係数が０になり、その他はそのままであるような帯域阻止フィルタのフィルタ係数で巡回畳み込みした結果と同一になるように、上記適応フィルタ係数を更新する過程の少なくとも一つにおけるデータに対して、周波数領域処理して更新された適応フィルタ係数として適応フィルタ係数レジスタに格納する部分拘束処理部を具備する。
【発明の効果】
【００２０】
この構成によれば、部分拘束処理部による簡単な処理により、ＦＧ誤差信号のレベルがＦＧ適応フィルタ係数の更新とともに増加して行く問題が解決される。また、ＢＧ部において適応フィルタの更新処理で拘束条件を満たすための処理を行なわないため、演算量が増加する問題が解決される。
【発明を実施するための最良の形態】
【００２１】
以下に、この発明を実施するための最良の形態を示す。複数の図面中同一のものには同じ参照符号を付し、説明は繰り返さない。
【実施例１】
【００２２】
後述するＵＭＤＦ法にこの発明を適用した実施例１のエコーキャンセラ１２０の機能構成例を図４に示し、その処理の流れを図５に示す。この発明において、少なくとも、ＢＧ部は、周波数領域で処理を行うものであり、ＦＧ部は、周波数領域、もしくは時間領域で処理を行うことができる。一般的に、時間領域で行う処理は遅延量が少ないが、演算量が多くなる。よって、ＦＧ部の処理は、状況に応じて、周波数領域で行うか、時間領域で行うかを使い分けて実施すればよい。
この実施例１では、ＢＧフィルタ係数更新部９０は上記したＬＭＳ法あるいはＮＬＭＳ（Normalized LMS）法を周波数領域で実行し、非特許文献１で挙げられているＭＤＦ法（MultiDelay  block  Frequency  domain  adaptive  filter）もしくはＵＭＤＦ法（Unconstrained MultiDelay  block  Frequency  domain  adaptive  filter）などを対象とする。
【００２３】
ここでは、ＢＧ部６０内の周波数領域適応フィルタ処理に用いる時間領域の適応フィルタ係数ｈｂを連続するＮ/２要素（Ｎは後で説明する）ごとにＪ分割し、分割した適応フィルタを周波数領域で更新する演算量の少ない適応アルゴリズムであるＵＭＤＦ法に基づいて説明する。
なお、受話信号ｘ（ｋ）が複数チャネルある場合についても受話信号ｘ（ｋ）と適応フィルタ係数ｈ（ｋ）の要素がチャネル分増加するだけで以下の全ての事項が適用できるため説明を略する。この実施例１では、ＦＧ部７０が周波数領域で処理を行う場合を説明する。
【００２４】
ＦＧ部７０の処理
以下、図５を参照して各部の処理を説明する。ＦＧ部７０では、まず時間領域の受話信号ｘ（ｋ）と収音信号ｄ（ｋ）が新たに得られると（図５、ステップＳ２）時間領域の受話信号ｘ（ｋ）は再生手段４と、周波数領域変換部６２に入力される。周波数領域変換部６２で、周知の技術である短時間離散的フーリエ変換などで、例えば、ω１〜ωＮまでのＮ個の周波数に対応するＮ個の離散周波数領域信号、ｘ（ω１），…，ｘ（ωｎ），…，ｘ（ωＮ）に変換される。ただし、受話信号ｘ（ｋ）は一定周期でサンプリングされ、各サンプルがディジタル値に変換されたディジタル信号である。このＮは正整数で上記時間領域の適応フィルタ係数ｈｂを分割する時のＮ/２のＮと同一である。
【００２５】
周波数領域変換部６２は、時間領域の適応フィルタ係数ｈｂをＮ/２個の要素毎に分割したｊ番目の分割ｈｊ（ｊ＝０，１，…，ｊ−１）に対応する周波数領域受話信号Ｘｊを式（４）により生成する（ステップＳ４）。以降、周波数領域の信号の符号を大文字で表す。
Ｘｊ＝Ｆ［ｘ（ｋ−ｊ×（Ｎ／２）−Ｎ＋１），ｘ（ｋ−ｊ×（Ｎ/２）−Ｎ＋２），…，ｘ（ｋ−ｊ×（Ｎ／２））] T                    式（４）
ここでＦはフーリエ変換を施すことであり、Ｎは１フレームのサンプル数であり、（フレームシフトはＮ／２）、Ｔは転置行列を表す。
【００２６】
周波数領域の受話信号Ｘｊは、ＦＧ部７０に入力される。ＦＧ部７０は、図４に示すように、ＦＧフィルタ係数レジスタ７４、ＦＧ推定信号生成部７６、ＦＧ時間領域変換部７８、ＦＧ減算部３１とで構成される。受話信号Ｘｊは、ＦＧ推定信号生成部７６に入力される。
ＦＧ推定信号生成部７６は、時間領域での受話信号ｘ（ｋ）と適応フィルタ係数ｈ（ｋ）によるフィルタ処理に相当する演算を周波数領域で行う。つまり受話信号ＸｊとＦＧフィルタ係数レジスタ７４に記録されている周波数領域適応フィルタ係数Ｈｆｊとの内積を周波数毎に取ることで周波数領域推定信号Ｙｆを得る。周波数領域推定信号Ｙｆは、式（５）で計算される。
Ｙｆ＝Σｄｉａｇ（Xｊ）（Hｊ）                        式（５）
ただし、ｄｉａｇ（Ａ）はＡの対角行列を表わす。
【００２７】
周波数領域推定信号Ｙｆは、時間領域変換部７８に入力され公知の技術である短時間離散的フーリエ変換などで時間領域の推定信号ｙｆ（ｋ）に変換される（ステップ６）。
ｙf（k）＝[ｙ（ｋ−N/2＋１），ｙ（ｋ−N/2＋２），…，ｙ（ｋ）] Ｔ＝WF-1Yｆ
式（６）
ただし、Ｗは、Ｗの右からベクトルを乗じた場合に乗じたベクトルの下半分の要素を抜き出すＮ/２行Ｎ列の行列を表わし、Ｆ-１は逆フーリエ変換を施すことを表わす。つまり、このＦＧ時間領域変換部７８はｙｆを時間領域信号に変換した後、その変換された時間領域信号中から下半分の要素をＮ/２行Ｎ列だけ取り出す（ステップＳ６）。
【００２８】
時間領域の推定信号ｙｆ（ｋ）の各要素ｙｆ（ｋ−ｉ），（ｉ＝０，１，…，Ｎ/２）は、ＦＧ減算部３１に入力される。ＦＧ減算部３１は収音信号ｄ（ｋ−ｉ）から推定信号ｙ（ｋ−ｉ）を減算し誤差信号ｅｆ（ｋ−ｉ）を求める（ステップＳ８）。
ｅｆ(ｋ−ｉ)＝ｄ（ｋ−ｉ）−ｙｆ（ｋ−ｉ），ｉ＝０，１，…，Ｎ/２−１
式（７）
このＦＧ誤差信号ｅｆ（ｋ−ｉ）がエコーキャンセル装置の出力になる。この時間領域のＦＧ誤差信号ｅｆ（ｋ−ｉ）は図示しない通信網を通じて、遠端話者のスピーカ、及び、ＢＧ部６０に入力される。
【００２９】
ＢＧ部６０の処理
次に、ＢＧ部６０の動作を説明する。ＢＧ部６０は、図４に示すように、ＢＧフィルタ係数更新部９０、部分拘束処理部６７、適応フィルタ係数レジスタ６８、ＢＧ推定信号生成部６４、周波数領域誤差計算部６１、係数更新判定部９６とで構成されている。
一方、ＢＧ部６０でも適応フィルタ係数レジスタ６８に記録されている適応フィルタ係数ＨＢｊ（以下適応フィルタ係数Ｈｂｊと称する）と受話信号Ｘｊとの内積を周波数毎に取ることで周波数領域推定信号Ｙｂ（以下ＢＧ推定信号Ｙｂと称する）が求められる（ステップＳ１０）。つまり、ＢＧ推定信号生成部６４で式（８）によってＢＧ推定信号Ｙｂが計算される。
Ｙｂ＝Σｊ（ｄｉａｇ（Ｘｉ）Ｈｂｊ）                    式（８）
【００３０】
ＦＧ誤差信号ｅｆ（ｋ）は、周波数領域誤差計算部６１のＢＧ周波数領域変換部６１ａに入力され周波数領域ＦＧ誤差信号Ｅｆｊ（以下ＦＧ誤差信号Ｅｆｊと称する）に変換される。つまり、ＦＧ部７０からのＮ/２個の誤差信号ｅｆ（ｋ−ｉ），ｉ＝０，１，…，Ｎ/２−１の前にＮ/２個の０をつけて式（９）で計算される。
Ｅｆｊ＝Ｆ[０，０，…，０，ｅｆ（ｋ−Ｎ/２＋１），ｅｆ（ｋ−Ｎ/２＋２），…，ｅｆ（ｋ）]Ｔ                                              式（９）
【００３１】
ＢＧ推定信号Ｙｂが、周波数領域誤差計算部６１のＢＧ減算部６１ｂに入力される。減算部６１ｂでは、ＦＧ誤差信号Ｅｆｊの各要素からＢＧ推定信号Ｙｂの対応する要素を減算してＢＧ誤差信号Ｅｂｊを求める（ステップＳ１２）。つまり式（１０）を計算する。
Ｅｂ＝Ｅｆ−ＧＹｂ                  式（１０）
ただし、ＧはＷＮをＷＮの右からベクトルを乗じた場合に乗じたベクトルの下半分の要素を抜き出し、上半分を０にするＮ行Ｎ列の行列としてＦＷＮＦ−１そのものかそれを近似する行列である。
【００３２】
ＢＧ誤差信号Ｅｂは、ＢＧフィルタ係数更新部９０に入力される。ＢＧフィルタ係数更新部９０は、ＢＧ誤差信号Ｅｂと受話信号Ｘｊとを用いてＢＧ誤差信号Ｅｂのパワーが減少するように、周波数領域の適用フィルタ係数の更新量であるΔＨｂｊを求める（ステップＳ１４）。ΔＨｂｊの具体的な求め方は後述する。
ここで、上記した課題である時間的に連続する適応フィルタ係数が互いに拘束条件を満たさない部分を打ち消し合うとＦＧ推定誤差が増加する理由について説明する。
【００３３】
まず、式（８）と式（６）による周波数領域での畳み込みについて述べる。式（８）に右辺でｊに関するものだけを抜き出したものを、式（１１）で表わし、
Ｙｂｊ＝ｄｉａｇ（Ｘｊ）Ｈｂｊ        式（１１）
これを式（６）のように時間領域に変換したものを式（１２）に表わす。
ｙｂｊ＝ＷＦ−１Ｙｂｊ        式（１２）
ｙｂｊは、Ｎ個の受話信号ｘ（ｋ−ｊ×（Ｎ／２）−Ｎ＋１）、ｘ（ｋ−ｊ×（Ｎ／２）−Ｎ＋２）、‥‥、ｘ（ｋ−ｊ×（Ｎ／２））と周波数領域の適応フィルタの第ｊ分割Ｈｂｊを時間領域に変換したＦ−１Ｈｂｊを巡回畳み込みし、その結果の例えば上半分Ｎ／２個を抜き出したものになる。この巡回畳み込みの結果ｙｂｊを分割番号ｊに関して総和をとると推定信号ｙｂ（ｋ）になる。
【００３４】
もし、ＦＧ側のフィルタ係数がそうであるようにＦ−１Ｈｂｊの下半分が０であるとするとｙｂｊはＮ−１個の受話信号ｘ（ｋ−ｊ×（Ｎ／２）−Ｎ＋２）、ｘ（ｋ−ｊ×（Ｎ／２）−Ｎ＋３）、‥‥、ｘ（ｋ−ｊ×（Ｎ／２））と周波数領域の適応フィルタの第ｊ分割Ｈｂｊを時間領域に変換したｈｂｊ（＝Ｆ−１Ｈｂｊ）とｘとが重なる範囲で直線畳み込みをした結果に一致する。
【００３５】
以上の式（８）と式（１２）による周波数領域での畳み込みで注意したいのは、Ｆ−１Ｈｂｊの下半分が０であれば、ｙｂｊにはｘ（ｋ−ｊ×（Ｎ／２）−Ｎ＋１）が影響しないが、ＵＭＤＦ法をＢＧ側に用いた場合の適応フィルタ係数がそうであるようにＦ−１Ｈｂｊの下半分が０でなければ、ｙｂｊにはｘ（ｋ−ｊ×（Ｎ／２）−Ｎ＋１）が影響するということである。
【００３６】
また、一方でｘ（ｋ−ｊ×（Ｎ／２）−Ｎ＋１）というデータは、ｋ−ｊ×（Ｎ／２）−Ｎ＋１がｋ−（ｊ＋１）×（Ｎ／２）−（Ｎ／２）＋１と変形できることから分かるようにＸｊ＋１を時間領域に変換した受話信号列のＮ／２番目にも存在する。このため、ＭＤＦ法においてはＸｊ＋１に対応する適応フィルタ係数の分割はＨｂｊ＋１だけであるのに、ＵＭＤＦ法では隣の分割ＨｂｊにもＸｊ＋１の影響が現れる。そして、適応フィルタの更新において、ＨｂｊとＨｂｊ＋１は、式（８）のように分割番号に関して総和をとったＹｂにおいて分割Ｈｂｊに現れたＸｊ＋１の影響をｄｉａｇ（Ｘｊ＋１）Ｈｂｊ＋１が打ち消すように更新される。
【００３７】
時間領域で見ると、Ｘｊ＋１の分割Ｈｂｊへの影響はｈｂｊの先頭（つまり最も新しい信号に対応する位置）ｈｊ０に現れ、これを打ち消すＨｊ＋１の時間領域の係数はｈｊ＋１のＮ／２番目の位置にあるｈｊ＋１  Ｎ／２に現れる。
ところでＢＧ側の適応フィルタ係数ＨｂｊをＦＧ側のフィルタＨｆｊに転送する際には、Ｈｂｊを時間領域に変換し、前半部を０として再度周波数領域に変換する拘束条件処理が行なわれる。この拘束条件処理の際に、Ｘｊ＋１の分割Ｈｂｊへの影響が現れるｈｂｊの先頭は取り除かれるが、それを打ち消していたｈｊ＋１  Ｎ／２はそのままＨｆｊに転送される。こうなると、ＢＧ側では式（８）の総和を取る際に打ち消し合っていた値がＦＧ側では打ち消し合わずに誤差として表れ推定誤差が増加することになる。
【００３８】
このｈｊ０にＸｊ＋１の影響が現れることが原因となる推定誤差の増加を防止するためには、ｈｊ０を０にすればよいことが分かる。
データの並び方によっては、ｈｊのＮ/２番目の係数を０にする必要がある。このｈｊの最初の係数を０、若しくはｈｊのＮ/２番目の係数を０にする処理を部分拘束処理と呼ぶ。この実施例１では、ＢＧフィルタ係数更新部９０で更新された適応フィルタ係数ＨＢｊに対して部分拘束処理を行なう（ステップＳ１６）。
【００３９】
部分拘束処理
０番目の係数ｈｊ0を０にし、他の係数はそのままに保つ部分拘束処理部６７を実現する帯域阻止フィルタＢの係数は、Ｂ＝[１−１/Ｎ，−１/Ｎ，…，−１/Ｎ]である。ここで−１/Ｎの係数は（Ｎ−１）個である。この帯域阻止フィルタＢとＢＧ部６０の適応フィルタ係数Ｈｂｊを巡回畳み込みする演算は例えば次のようにして行なえばよい。図６ａに示すようにＢＧ部の適応フィルタ係数Ｈｂｊの各要素の平均値をＨｊ平均値算出部６７１ａで求め、その平均値ＡＨｊをＢＧ部６０の適応フィルタ係数Ｈｂｊの各要素Ｈｂｊｉから減じる。つまり係数算出部６７２ａで式（１３）に示す演算を行う。
Ｈｊ，ｉ＝Ｈｊ，ｉ−Σｉ（Ｈｊ，ｉ）／Ｎ，ｉ＝０，１，２，…，Ｎ−１
式（１３）
この部分拘束処理は、このように大きな演算量を必要としない。
【００４０】
また、ｈｊのＮ/２番目の係数を０にする部分拘束処理部６７を実現する帯域阻止フィルタＢのフィルタ係数は、Ｂ＝[１−１/Ｎ，1/N，−１/Ｎ，1/N，−１/Ｎ，…，１/Ｎ]である。この係数の個数はＮ個である。この帯域阻止フィルタＢとＢＧ部の適応フィルタ係数Ｈｊを巡回畳み込みする演算は例えば次のようにして行なえばよい。図６ｂに示すようにＢＧ部の適応フィルタ係数Ｈｊの偶数番目と奇数番目の係数の差の平均値をＨｊ平均値算出部６７１ｂで式（１４）に示すように求め、その平均値ＨｔｍｐをＢＧ部の適応フィルタ係数Ｈｂｊから減じるか加算する。つまり係数算出部６７２ｂで式（１５）、または式（１６）を計算すればよい。
Ｈｔｍｐ＝Σｉ（（Ｈｊ，２×ｉ）−（Ｈｊ，２×ｉ+1））／Ｎ，ｉ＝0，1，2，…，N/2-1 
式（１４）
Ｈｊ，ｉ＝Ｈｊ，ｉ−Ｈｔｍｐ，ｉ＝0，2，4，…，N-2        式（１５）
Ｈｊ，ｉ＝Ｈｊ，ｉ−Ｈｔｍｐ，ｉ＝1，3，5，…，N-1        式（１６）
【００４１】
部分拘束処理として式（１３）と、式（１５）又は式（１６）の何れを用いるかは、上記周波数領域誤差計算部６１のＢＧ周波数領域変換部６１ａがｅｆ（ｋ）を周波数領域の信号に変換する際の処理方法による。古いデータ側を０として周波数領域に変換した場合は、時間領域に変換した適応フィルタ係数ｈｊの半分より１つ後方の係数を０とする。
その反対にＢＧ周波数領域変換部６１ａが新しいデータ側を０とした場合、上記周波数領域適応フィルタ係数を時間領域に変換した最初の係数を０とする。部分拘束処理された適応フィルタ係数Ｈｂｊ’は、適応フィルタ係数レジスタ６８に上書きされる。
【００４２】
ＦＧフィルタ係数更新処理
次に、ＦＧフィルタ係数更新部７２の具体的構成例を図７に示して説明する。ＦＧフィルタ係数更新部７２は適応フィルタ係数ＨｂｊをＦＧフィルタ係数Ｈｆｊに加算し、ＦＧフィルタ係数Ｈｆｊを更新する（ステップＳ１８）。また、周波数領域で、適応フィルタ係数ＨｂｊをＦＧフィルタ係数Ｈｆｊに加算する際に、後述する拘束条件を満たしていなければならない。図７に示すように、この実施例では、ＦＧフィルタ係数更新部７２は時間領域変換手段８０２、半分０化手段８０４、周波数領域変換手段８０６、加算手段８０８により構成されている。なお、係数更新判定部９６により、ＦＧフィルタ係数の更新を行う旨の判定がされなかった周波数ωｎの要素には０を詰めて、ＦＧフィルタ係数更新部７２のＦＧフィルタ係数更新処理は作動する。
【００４３】
適応フィルタ係数レジスタ６８に記録された適応フィルタ係数Ｈｂｊ’は、時間領域変換手段８０２で、時間領域の適応フィルタ係数ｈｂ（ｋ）に変換される。
適応フィルタ係数ｈｂ（ｋ）は半分０化手段８０４に入力され、半分０化手段８０４で、適応フィルタ係数ｈｂ（ｋ）の要素の半分以上を０にする。時間領域に変換した適応フィルタ係数のどの要素を０に置き換えるかは、上記非特許文献１もしくは上記参考文献に記載されている。適応フィルタ係数ｈｂ（ｋ）の要素の半分以上を０にされた適応フィルタ係数ｈｂ（ｋ）’は、周波数領域変換手段８０６に入力され、再び、周波数領域に変換され、適応フィルタ係数Ｈｂｊ”が求められる。周波数領域の適応フィルタ係数Ｈｂｊ”とＦＧフィルタ係数レジスタ７０１に格納されているＦＧフィルタ係数Ｈｆｊとが加算手段８０８に入力される。
【００４４】
加算手段８０８で、Ｈｆｊの各要素とＨｂｊ”の対応要素とが加算され、ＦＧフィルタ係数Ｈｆｊが求められる。新たに求められたＦＧフィルタ係数ＨｆｊがＦＧフィルタ係数レジスタ７４に格納され、ＦＧフィルタ係数は更新される。このようにして、ＦＧ部７０、ＢＧ部６０の処理は繰り返される。
次に、適応フィルタ係数ｈｂよりも長い時間かけて全ての分割Ｊについて拘束を行うＰＦＤＬＭＳ法（Partitioned Frequency Domain Least Mean Square）に基づいて説明する。
【００４５】
図８は、実施例１にＰＦＤＬＭＳ法を適用した例を示す。図８では、この発明の要部である部分拘束処理部６７を省略し、その部分を図１０に示す。
ＰＦＤＬＭＳ法では、演算量を減らす目的で適応フィルタ係数ＨＢｊの学習が進んだ分割ｊに対応する適応フィルタ係数ＨＢｊのみに拘束条件処理を課す拘束条件処理指令を出力する。その選択は、ＦＧ誤差信号ＥｆｊとＢＧ誤差信号Ｅｂｊが入力される選択的拘束条件適用部６６が行う。その選択の判断は、ＦＧ誤差信号Ｅｆｊの周波数ωｎのパワーＰＥｆωｎからＢＧ誤差信号Ｅｂｊの周波数ωｎのパワーＰＥｆωｎを減算した値が、ある閾値αより大きければ、つまり、式（１７）を満たしているか否かで行う。
【００４６】
ＰＥｆωｎ−ＰＥｂωｎ≧α                        式（１７）
パワーの差がある程度大きければ、選択的拘束条件適用部６６は適応フィルタ係数ＨＢｊの学習が進んだと判断し、その分割ｊに対応する適応フィルタ係数ＨＢｊに拘束を課すように拘束条件処理指令を出力する。
拘束条件処理指令が入力される選択部８０は、その選択された分割ｊに対応する適応フィルタ係数ＨＢｊを拘束条件適用部６９に出力する。
また選択の判断は、ＢＧ推定信号生成部６４よりのＢＧ推定信号Ｙｂの周波数ωｎのパワーＰＹｂωｎと、ＢＧ誤差信号Ｅｂｊの周波数ωｎのパワーＰＥｂωｎと、を用いて行ってもよい。この場合は、ＰＹｂωｎからＰＥｂωｎを減算した値が、閾値βより大きければ学習が進んだと判断できる。つまり式（１８）を満たしていれば、上記と同様に、その分割ｊに対応する適応フィルタ係数ＨＢｊに拘束を課すように拘束条件処理指令を出力する。
【００４７】
これは、適用フィルタ係数Ｈｂｊの学習が十分に進むと、ＢＧ推定信号Ｙｂは、ＦＧ誤差信号Ｅｆｊに近い値になることによる。
ＰＹｂωｎ−ＰＥｂωｎ≧β                        式（１８）
拘束条件とは、周波数領域で行うフィルタ処理の結果を、時間領域でフィルタ処理した場合の結果と一致させるものである。この拘束条件を満たすための具体的な処理手順としては、図９に示すように周波数領域にある適応フィルタ係数Ｈｂｊを時間領域変換手段６９１で時間領域に変換し、その結果の半分を半分０化手段６９２で０に置き換えた後に、周波数領域変換手段６９３で再度周波数領域に変換するというものであり、式（１９）で計算される。
Ｈｂｊ’＝ＦＷ’Ｆ−1Ｈｂｊ                      式（１９）
ただし、Ｗ’はＷ’の右からベクトルを乗じた場合に乗じたベクトルの上半分の要素を抜き出すＮ行Ｎ列の行列を表わす。
この拘束条件処理がなされた適用フィルタ係数Ｈｂｊ、つまり収束した適用フィルタ係数Ｈｂｊは、適用フィルタ係数レジスタ６８に入力され、適用フィルタ係数が更新される。
【００４８】
ＰＦＤＬＭＳ法においては、選択部８０で非選択となった非選択周波数領域適応フィルタ係数Ｈ〜ｂｊ、または適応フィルタ係数Ｈｂｊの初期値が０として、適応フィルタ係数Ｈｂｊに加算あるいは上書きする適応フィルタ係数Ｈｂｊの更新量ΔＨｂｊのどちらか、又は双方に部分拘束処理を課してもよい。
ここで周波数領域の適用フィルタ係数の更新量であるΔＨｂｊの求め方を述べる。ΔＨｂｊの計算方法はＮＬＭＳ法を周波数領域で行なう場合を例とした。受話信号Ｘｊは、ＢＧフィルタ係数更新部９０内の乗算部９０４とパワー計算部９０２に入力される。パワー計算部９０２では、受話信号Ｘｊのパワー、つまり以下の式（２０）が計算される。
Σｄｉａｇ（Ｘｊ）ｄｉａｇ（ｃｏｎｊ（Ｘｊ））    式（２０）
ただしｃｏｎｊ（Ａ）はＡ内のスカラーあるいはベクトル、行列の個々の要素に対して複素共役をとることを示す。
また、ＢＧ減算部９４で求められた周波数領域のＢＧ誤差信号Ｅｂｊは乗算部９０４に入力される。
【００４９】
乗算部９０４では、受話信号Ｘｊと、誤差信号Ｅｂｊが乗算され、つまり、以下の式（２１）が計算される。
ｄｉａｇ（ ｃｏｎｊ（Ｘｊ））Ｅｂｊ              式（２１）
乗算部９０４の結果であるｄｉａｇ（ ｃｏｎｊ（Ｘｊ））Ｅｂｊと、パワー計算部９０２の結果であるΣｄｉａｇ（Ｘｊ）ｄｉａｇ（ｃｏｎｊ（Ｘｊ））とが、除算部９０６に入力され、以下の式（２２）が計算され、周波数領域の適応フィルタ係数の更新量であるΔＨｂｊが求められる。
ΔＨｂｊ＝（Σ(ｄｉａｇ（Ｘｊ）ｄｉａｇ（ｃｏｎｊ（Ｘｊ））)−１ｄｉａｇ（ｃｏｎｊ（Ｘｊ））Ｅｂｊ                                          式（２２）
【００５０】
この更新量ΔＨｂｊに対して部分拘束処理を課す部分拘束処理部６７２を、除算部９０６と乗算部９０８との間に設けてもよい。その場合、上記した式（１３）乃至式（１６）の演算は、それぞれ式（１３）が式（２３）に、以下式（２６）まで順番に対応する。
ΔHｂｊ，ｉ＝ΔＨｂｊ，ｉ−Σｉ（ΔＨｂｊ，ｉ）/Ｎ         式（２３）
ΔＨｂｔｍｐ＝Σｉ（ΔＨｂｊ，２×ｉ−ΔＨｂｊ，２×ｉ＋1）/N，ｉ
＝0，1，2，..…，Ｎ/2−１                         式（２４）
ΔＨｂｊ，ｉ＝ΔＨｂｊ，ｉ−ΔＨｂｔｍｐ，ｉ＝0，2，4，…，Ｎ−２
式（２５）
ΔＨｂｊ，ｉ＝ΔＨｂｊ，ｉ−ΔＨｂｔｍｐ，ｉ＝1，3，5，…，Ｎ−１  
式（２６）
ΔＨｂｊは乗算部９０８に入力される。
【００５１】
人手により、もしくは、図示しない制御部により、ステップサイズ選択部９０９において、周波数帯域のステップサイズＳが選択される。ここで、Ｓは各周波数帯域のステップサイズを対角要素に持つ行列を意味する。選択されたステップサイズＳは乗算部９０８に入力される。乗算部９０８では、ステップサイズＳとΔＨｂｊとが乗算される、つまり以下の式（２７）が計算される。
ＳΔＨｂｊ      式（２７）
この結果が加算部９１０に入力される。加算部９１０では、適応フィルタ係数レジスタ９１２に格納されているＨｂｊ-1がＳΔＨｂｊに加算される。つまり、以下の式（２８）が計算され、その結果により、前回の適応フィルタ係数Ｈｂｊ-1が更新される。
Ｈｂｊ＝Ｈｂｊ-1＋ＳΔＨｂｊ    式（２８）
つまり式（２０）〜（２２）と式（２４）と（２５）又は（２６）と、以下の式（２９）で、周波数領域の適応フィルタ係数は更新される（ステップＳ６）。
Ｈｂｊ＝Ｈｂｊ-1＋Ｓ（Σ（ｄｉａｇ（Ｘｊ））ｄｉａｇ（conj（Ｘｊ））））−1ｄｉａｇ（conj（Ｘｊ））Ｅｂｊ        式（２９）
【００５２】
加算部９１０で更新された適応フィルタ係数Ｈｂｊは、選択的拘束条件適用部６６において、上記説明したように学習が進んだと判断された分割ｊに対してのみ拘束条件処理が課せられる。
そして、上記拘束条件処理指令を受けていない非選択周波数領域適応フィルタ係数Ｈ〜ｂｊが選択部８０によってが部分拘束処理部６７１に供給されて、部分拘束処理が行なわれる。この場合の非選択周波数領域適応フィルタ係数Ｈ〜ｂｊに対する処理を式（３０）乃至式（３３）に示す。
Ｈ〜ｂｊ，ｉ＝Ｈ〜ｂｊ，ｉ−Σｉ（Ｈ〜ｂｊ，ｉ）/Ｎ         式（３０）
Ｈ〜ｂｔｍｐ＝Σｉ（Ｈ〜ｂｊ，２×ｉ−Ｈ〜ｂｊ，２×ｉ＋1）/N，ｉ
＝0，1，2，…，Ｎ/2−１                          式（３１）
Ｈ〜ｂｊ，ｉ＝Ｈ〜ｂｊ，ｉ−Ｈ〜ｂｔｍｐ，ｉ＝0，2，4，…，Ｎ−２
式（３２）
Ｈ〜ｂｊ，ｉ＝Ｈ〜ｂｊ，ｉ−Ｈ〜ｂｔｍｐ，ｉ＝1，3，5，…，Ｎ−１
式（３３）
【００５３】
以上説明した周波数領域適応フィルタＨｂｊ、周波数領域適応フィルタ係数Ｈの更新量ΔＨｂｊ、非選択周波数領域適応フィルタＨ〜ｂｊは適応フィルタ係数を更新する過程で得られるものであり、その何れに部分拘束を課してもよい。また複数に課してもよい。
図８に示すようにそれぞれのフィルタ係数に対して部分拘束処理部を設け、部分拘束を課さないときは、各部分拘束処理部を構成する帯域阻止フィルタのフィルタ係数をＢ＝[１，０，０，…，０]にすればよい。
【００５４】
また、実施例１の変形例として、ＦＧ部のＦＧ減算部３１で周波数領域の信号同士の差を求める方法も考えられる。ＦＧ部７０中に図４中に破線で示すようにＦＧ時間領域変換部７８の後段にＦＧ周波数領域変換部７０５を設けて、上記拘束条件を満たすようにして、その出力であるＦＧ推定信号ＹｆをＦＧ減算部３１に入力する。時間領域の収音信号ｄ（ｋ）を周波数領域に変換してＦＧ減算部３１に入力するＦＧ周波数領域変換部７０８（図４中に破線で示している）を設ける。ＦＧ減算部３１で、周波数領域の収音信号Ｄｊの各要素からＦＧ推定信号Ｙｆの対応要素を減算して、周波数領域のＦＧ誤差信号Ｅｆｊが求められる。このＦＧ誤差信号Ｅｆｊは図４中には破線で示すように、ＢＧ部６０内のＢＧ減算部６１ｂと選択的拘束条件適用部６６に入力される。この場合、ＢＧ周波数領域変換部６１ａは省略される。ＦＧ誤差信号Ｅｆｊが周波数領域の信号であるので、ＦＧ誤差信号Ｅｆｊを時間領域に変換する時間領域変換部７１０（図４中に破線で示している）を設けて時間領域のＦＧ誤差信号ｅｆ（ｋ）を通信網に出力する。
【実施例２】
【００５５】
この実施例２では、ＦＧ部７０中のＦＧ推定信号生成部７６が時間領域で処理を行う。また、図４において時間領域処理を行うことを同一番号にダッシュ「’」を付け、かつ括弧書きで示す。ＦＧ部７０中のＦＧ時間領域変換部７８は設けられない。
この場合、受話信号ｘ（ｋ）は周波数領域変換部６２に入力されずに、図４に破線で示すように、ＦＧ推定信号生成部７６’に直接入力される。また、ＦＧフィルタ係数レジスタ７４’には、時間領域のＦＧフィルタ係数ｈｆ（ｋ）が、格納されている。ＦＧ推定信号生成部７６’では、上記式（１）において、ｈ（ｋ）をｈｆ（ｋ）に置き換えた式の左辺により、ＦＧ推定信号ｙｆ（ｋ）が求められる。
【００５６】
また、この実施例２では、図７に示すようにＦＧフィルタ係数更新部７２は、時間領域変換手段８０２と、加算手段８０８’と、で構成されている。
ＢＧ部６０中の適応フィルタ係数レジスタ６８に周波数領域で格納されているＨｂｊ’は、時間領域変換手段８０２に入力され、時間領域の適応フィルタ係数ｈｂ（ｋ）’に変換され、０に置き換える処理が行われることなく、加算手段８０８’に入力される。加算手段８０８’において、ｈｆ（ｋ）とｈｂ（ｋ）とが加算される。加算された値ｈｆ（ｋ）がＦＧフィルタ係数レジスタ７４’に格納され、ＦＧフィルタ係数は更新される。
【００５７】
シミュレーション結果
図１１にこの発明の部分拘束処理を行った差分型ＦＧ/ＢＧエコーキャンセル装置と従来法とを比較した結果を示す。図１１の横軸は、動作開始後の時間（秒）であり、縦軸は係数誤差をｄＢで表す。
係数誤差とは、伝達系とＢＧ部フィルタ係数ｈの差を表す量であり、伝達系をｈ０と表すと係数誤差ＣはＣ＝‖ｈ−ｈ０‖２/‖ｈ０‖２により定義される。
【００５８】
シミュレーション条件
「ＦＧ部７０のＦＦＴ点数：２５６、ＢＧ部６０のＦＦＴ点数：５１２、ＦＧ部７０の時間領域の適応フィルタ係数を周波数領域に変換した一つの周波数帯域当たりのフィルタ長：１２、受話信号：男性音声、収音信号：受話信号＋女性音声＋背景雑音、伝達系の変化：動作開始後約３秒で伝達系の正負を反転することで系の変化を模擬」
例えば動作開始後約３秒後にマイクロホン（収音手段６）の位置をずらす等の伝達系を変化させたのち、約７秒で係数誤差が収束を開始する。動作開始後２０秒の係数誤差は、この発明の方が従来法よりも２〜３ｄＢ程度よいことが分かる。
【００５９】
以上の各実施形態の他、本発明であるエコーキャンセル装置は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、エコーキャンセル装置において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
また、この発明のエコーキャンセル装置における処理をコンピュータによって実現する場合、エコーキャンセル装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、エコーキャンセル装置における処理機能がコンピュータ上で実現される。
【００６０】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（ＤｉｇｉｔａｌＶｅｒｓａｔｉｌｅＤｉｓｃ）、ＤＶＤ−ＲＡＭ（ＲａｎｄｏｍＡｃｃｅｓｓＭｅｍｏｒｙ）、ＣＤ−ＲＯＭ（ＣｏｍｐａｃｔＤｉｓｃＲｅａｄＯｎｌｙＭｅｍｏｒｙ）、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）／ＲＷ（ＲｅＷｒｉｔａｂｌｅ）等を、光磁気記録媒体として、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌｄｉｓｃ）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  ＰｒｏｇｒａｍｍａｂｌｅＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００６１】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（ＡｐｐｌｉｃａｔｉｏｎＳｅｒｖｉｃｅＰｒｏｖｉｄｅｒ）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００６２】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、エコーキャンセル装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図面の簡単な説明】
【００６３】
【図１】従来技術のエコーキャンセラ１０の機能構成例を示すブロック図。
【図２】従来技術のＦＧ/ＢＧ構成のエコーキャンセラ２０の機能構成例を示すブロック図。
【図３】従来技術の差分型ＦＧ/ＢＧ構成のエコーキャンセラ４５の機能構成例を示すブロック図。
【図４】この発明の実施例１のエコーキャンセラ１２０の機能構成例を示すブロック図。
【図５】実施例１の処理の流れを示す図。
【図６】図６ａは０番目の係数ｈｊを０にする部分拘束処理部の機能構成例を示すブロック図、図６ｂはＮ/２番目の係数ｈｊを０にする部分拘束処理部の機能構成例を示すブロック図である。
【図７】ＦＧフィルタ係数更新部７２の機能構成例を示すブロック図。
【図８】実施例１にＰＦＤＬＭＳ法を適用した機能構成例を示すブロック図。
【図９】実施例１の拘束条件適用部６９の機能構成例を示すブロック図。
【図１０】図８のＢＧフィルタ係数更新部９０と部分拘束処理部６７についての機能構成例を示すブロック図。
【図１１】係数誤差についてのシミュレーション結果を示す図。
【図１】
2008124914.tif 000003
【図２】
2008124914.tif 000004
【図３】
2008124914.tif 000005
【図４】
2008124914.tif 000006
【図５】
2008124914.tif 000007
【図６】
2008124914.tif 000008
【図７】
2008124914.tif 000009
【図８】
2008124914.tif 000010
【図９】
2008124914.tif 000011
【図１０】
2008124914.tif 000012
【図１１】
2008124914.tif 000013