(57)【要約】【課題】  エコーキャンセル装置においてダブルトークの影響を除去しつつ迅速な学習を行う。【解決手段】  第１の音声信号を、第１の周波数領域の信号に変換する第１の変換過程と、前記第１の周波数領域の信号に前記各成分毎に係数を乗算する乗算過程と、第２の音声信号を第２の周波数領域の信号に変換する第２の変換過程と、前記第２の周波数領域の信号から、前記乗算過程における乗算結果を減算する減算過程と、前記減算過程により減算された誤差信号と前記第１の周波数領域の信号とに基づいて、前記係数を更新する際の差分である更新加算値を算出する更新加算値算出過程と、前記更新加算値に基づいてダブルトーク状態かシングルトーク状態かを判定する判定過程（SP15,SP35,SP55,SP60）とを設けた。【選択図】  図３
2005318518.tif 000002
【特許請求の範囲】
【請求項１】
第１の音声信号を、複数の周波数成分に対する振幅および位相を規定する第１の周波数領域の信号に変換する第１の変換過程と、
前記第１の周波数領域の信号の前記各成分毎に、適宜更新され得る係数を乗算する乗算過程と、
第２の音声信号を複数の周波数成分に対する振幅および位相を規定する第２の周波数領域の信号に変換する第２の変換過程と、
前記第２の周波数領域の信号から、前記乗算過程における乗算結果を減算する減算過程と、
前記減算過程における減算結果である誤差信号と前記第１の周波数領域の信号とに基づいて、前記係数に対する更新加算値を算出する更新加算値算出過程と、
前記更新加算値に基づいてダブルトーク状態かシングルトーク状態かを判定する判定過程と
を処理装置に実行させることを特徴とするダブルトーク状態判定方法。
【請求項２】
サンプルした第１の音声信号を記憶する信号記憶過程と、
前記信号記憶過程で記憶された信号と、適宜更新され得る係数との畳み込みを行う畳込演算過程と、
第２の音声信号から、前記畳込演算過程の出力信号を減算する減算過程と、
前記減算過程により減算された誤差信号と前記第１の音声信号とに基づいて、前記係数に対する差分である更新加算値を算出する更新加算値算出過程と、
前記更新加算値に基づいてダブルトーク状態かシングルトーク状態かを判定する判定過程と
を処理装置に実行させることを特徴とするダブルトーク状態判定方法。
【請求項３】
前記判定過程は、前記更新加算値が所定の範囲にあった場合において、前記更新加算値と過去の更新加算値とが所定の関係を有しない場合はダブルトーク状態であると判定し、前記更新加算値と前記過去の更新加算値とが前記所定の関係を有し、かつ、前記過去の更新加算値が算出された際に前記係数の更新が行われていない場合はシングルトーク状態であると判定する過程である
事を特徴とする請求項１ないし２の何れかに記載のダブルトーク状態判定方法。
【請求項４】
請求項１ないし２の何れかに記載のダブルトーク状態判定方法における各過程と、
前記判定過程の結果、ダブルトーク状態であると判定した場合には前記係数の更新を停止し、前記判定過程の結果、シングルトーク状態であると判定した場合には前記係数を更新する係数更新過程と
を処理装置に実行させることを特徴とするエコーキャンセル方法。
【請求項５】
請求項１ないし３の何れかに記載のダブルトーク状態判定方法を実行することを特徴とするダブルトーク状態判定装置。
【請求項６】
請求項４記載のエコーキャンセル方法を実行することを特徴とするエコーキャンセル装置。
【請求項７】
請求項１ないし４の何れかに記載の方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハンズフリータイプの通話に用いて好適なダブルトーク状態判定方法、エコーキャンセル方法、ダブルトーク状態判定装置、エコーキャンセル装置およびプログラムに関する。
【背景技術】
【０００２】
マイク・スピーカを用いて遠方にいる相手とハンズフリー通話を行う際に発生する音響エコーを低減するために、エコーキャンセラ（エコーキャンセル装置）が使用されている。エコーキャンセラにおいては、スピーカからの出力信号は壁・ドア等による反射などのスピーカとマイクとの間の伝達系（エコーパス）の影響を受けた後、マイクに入力されるため、マイク出力信号にはこのようなスピーカ出力に起因する音響エコー信号が含まれている。したがって、この伝達系を適応フィルタ等で模擬したフィルタをスピーカ出力に畳み込むことによって得られる擬似エコー信号をマイク出力信号から差し引くことにより、音響エコー信号を打ち消すことが出来る。このようにスピーカ出力信号に起因する信号を模擬した擬似エコー信号との差（誤差信号）を最小化するように擬似エコー信号生成パラメータの更新を逐次行う技術が知られている。
ところが、実際のマイク出力信号には、スピーカ出力に起因する音響エコー信号だけでなく、直接マイクに入力される音声や暗騒音などが含まれている。室内でスピーカからの音とそれ以外の音の放射が同時に発生している状態のことをダブルトーク状態と呼ぶ。
【０００３】
適応フィルタを用いたエコーキャンセラでは参照信号（通常はスピーカ入力信号）と誤差信号とに基づき、誤差信号に含まれる参照信号と相関の高い信号を打ち消すようにフィルタ係数を更新する。したがって、適応フィルタが適切に動作していれば誤差信号が減少していくが、スピーカとマイクとの間の伝達系に変化が生じると、適応フィルタはその変化に追随するために更新量を増加させる。また、誤差信号は上述したダブルトーク状態になることによっても増加する。そして、それに合わせて適応フィルタの更新量も増加することになるが、ダブルトークにより増加した誤差信号はスピーカとマイクとの間の伝達系を含んでいるわけではないので、結果として伝達系を適切に推定することが出来ない。このようなダブルトーク状態においては、誤差信号が急激に増大するため、パラメータの更新を停止する必要がある。そのことを目的として、音響エコーが付加される前の音声信号パワーと誤差信号パワーとの比較によってダブルトーク状態を検出し、パラメータの更新を停止する技術が開示されている（特許文献１）。また、パラメータ更新における修正量に上限値・下限値を設け、その範囲を超えた場合には該上限値・下限値を修正量とし、ダブルトークに対する応答を制限する技術が開示されている（特許文献２）。
また、インパルス応答前段の残留パワーと後段の残留パワーとを比較し、残留パワーの後段の増加率が大きい場合にダブルトーク状態と判定し、パラメータの更新を停止する技術が開示されている（特許文献３）。
【０００４】
【特許文献１】特開２０００−２５２８８４号公報
【特許文献２】特開平１０−３０３７８７号公報
【特許文献３】特開平４−１２７７２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、特許文献１における技術においては、誤差信号の大きさに基づきダブルトーク状態の判定を行っているので、伝達系が変動したために誤差信号が増大したのかダブルトークが発生したために誤差信号が増大したのかの判断が困難であり、そのため本来不要である更新を行ってしまう可能性がある。特許文献２における技術においては、パラメータの修正量を制限しているので、エコーパスの変化に対する追従が遅くなり、迅速な学習が困難である。また、エコーパスが長い場合において、特許文献３における技術を用いると、インパルス応答後段のパワーが大きくなるので、ダブルトークであるとの誤った判定がされる。
本発明は、上述した事情に鑑みてなされたものであり、係数の更新値に基づいてダブルトーク状態の判定を行うダブルトーク状態判定方法、ダブルトーク状態判定装置およびプログラム、また、ダブルトーク状態・エコーパスの変動の影響を除去しつつ伝達系の推定誤差の増大を阻止することが出来るダブルトーク状態判定方法、エコーキャンセル方法、ダブルトーク状態判定装置、エコーキャンセル装置およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記課題を解決するため本発明にあっては、下記構成を具備することを特徴とする。なお、括弧内は例示である。
請求項１記載のダブルトーク状態判定方法にあっては、第１の音声信号を、複数の周波数成分に対する振幅および位相を規定する第１の周波数領域の信号に変換する第１の変換過程（ＦＦＴユニット、８２５）と、前記第１の周波数領域の信号の前記各成分毎に、適宜更新され得る係数を乗算する乗算過程（乗算ユニット、４００）と、第２の音声信号を複数の周波数成分に対する振幅および位相を規定する第２の周波数領域の信号に変換する第２の変換過程（ＦＦＴユニット、８００）と、前記第２の周波数領域の信号から、前記乗算過程における乗算結果を減算する減算過程（減算ユニット、５００）と、前記減算過程における減算結果である誤差信号と前記第１の周波数領域の信号とに基づいて、前記係数に対する更新加算値を算出する更新加算値算出過程（ΔＨユニット、２１０）と、前記更新加算値に基づいてダブルトーク状態かシングルトーク状態かを判定する判定過程（ＳＰ１５、ＳＰ３５、ＳＰ５５、ＳＰ６０）とを処理装置に実行させることを特徴とする。
また、請求項２記載のダブルトーク状態判定方法にあっては、サンプルした第１の音声信号を記憶する信号記憶過程（ｘレジスタ、３０５）と、前記信号記憶過程で記憶された信号と、適宜更新され得る係数との畳み込みを行う畳込演算過程（畳込演算ユニット、４００）と、第２の音声信号から、前記畳込演算過程の出力信号を減算する減算過程（減算ユニット、５０５）と、前記減算過程により減算された誤差信号と前記第１の音声信号とに基づいて、前記係数に対する差分である更新加算値を算出する更新加算値算出過程（Δｈ生成ユニット、２１５）と、前記更新加算値に基づいてダブルトーク状態かシングルトーク状態かを判定する判定過程（ＳＰ１１５、ＳＰ１３５、ＳＰ１５５、ＳＰ１６０）とを処理装置に実行させることを特徴とする。
さらに、請求項３記載の構成にあっては、請求項１ないし２の何れかに記載のダブルトーク状態判定方法において、前記判定過程は、前記更新加算値が所定の範囲にあった場合において、前記更新加算値と過去の更新加算値とが所定の関係（ＳＰ１５５：両者の比が０．９〜１．１の範囲内）を有しない場合はダブルトーク状態であると判定し、前記更新加算値と前記過去の更新加算値とが前記所定の関係を有し、かつ、前記過去の更新加算値が算出された際に前記係数の更新が行われていない場合（ＳＰ１６０：ｆｌａｇ＿ｋ（ｎ）＝０の場合 ）はシングルトーク状態であると判定する過程である事を特徴とする。
また、請求項４記載のエコーキャンセル方法にあっては、請求項１ないし２の何れかに記載のダブルトーク状態判定方法における各過程と、前記判定過程の結果、ダブルトーク状態であると判定した場合には前記係数の更新を停止し、前記判定過程の結果、シングルトーク状態であると判定した場合には前記係数を更新する係数更新過程（ＳＰ１４５）とを処理装置に実行させることを特徴とする。
また、請求項５記載のダブルトーク状態判定装置にあっては、請求項１ないし３の何れかに記載のダブルトーク状態判定方法を実行することを特徴とする。
また、請求項６記載のエコーキャンセル装置にあっては、請求項４記載のエコーキャンセル方法を実行することを特徴とする。
また、請求項７記載のプログラムにあっては、請求項１ないし４の何れかに記載の方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【０００７】
このように、本発明の構成によれば、更新加算値に基づいてダブルトーク状態かシングルトーク状態かを判定するように構成されているので、係数の更新を停止するか、あるいは更新を行うかを的確に判断することが出来る。
【発明を実施するための最良の形態】
【０００８】
1．第１実施例
1．1．実施例の構成
1．1．1．ハードウェア構成
本発明の第１実施例であるエコーキャンセル装置（ダブルトーク状態判定装置）のハードウェア構成を図１を参照して説明する。
図において、１０は入出力インターフェースであり、Ａ／Ｄ変換器、Ｄ／Ａ変換器により構成される。ここで、Ａ／Ｄ変換器はアナログ音声信号をデジタル音声信号に変換し、Ｄ／Ａ変換器はデジタル音声信号をアナログ音声信号に変換する。そして、入出力インターフェース１０にはマイク６００およびスピーカ７００が接続される。２０はＤＳＰであり、入出力インターフェース１０を介して入力された音声信号をデジタル信号処理する。そして、ＤＳＰ２０により信号処理された音声信号が入出力インターフェース１０を介して出力される。３０は操作部であり、スイッチ、ボリューム等により構成される。４０は通信部であり、遠方の相手と通信を行う。５０はＣＰＵであり、各部を制御する。６０はＲＡＭであり、ワークメモリとして使用される。７０はＲＯＭであり、プログラム、パラメータが格納される。８０はバスラインであり、各部を接続する。以上の要素により、エコーキャンセル装置（エコーキャンセラ、ダブルトーク状態判定装置）１００が構成される。
【０００９】
1．1．2．アルゴリズム構成
相手側マイクから入力された音声信号は、通信部４０、ＤＳＰ２０、入出力インターフェース１０を介して、スピーカ７００から放音される。また、マイク６００から入力された音声信号は、入出力インターフェース１０、ＤＳＰ２０、通信部４０を介し、相手側スピーカから放音される。これらは、ＣＰＵ５０、ＤＳＰ２０によるソフトウェア処理によって行われる。以下、エコーキャンセル装置１００のアルゴリズム構成を図２を参照して説明する。なお、本実施例においては、周波数領域において信号処理する場合について説明する。
【００１０】
図において、６５０は相手側マイクであり、音声を電気信号に変換する。７５０は相手側スピーカであり、アナログ音声信号を機械的振動に変換し放音する。１５００は通信ユニットであり、相手側マイク６５０から入力された音声信号を受信すると共に、相手側スピーカ７５０に音声信号を送信する。このとき、受信されたアナログ音声信号が、一定時間毎にサンプルされ、通信ユニット１５００によって、該アナログ音声信号がデジタル音声信号ｘ（ｎ）として出力される。７００はスピーカであり、マイク６５０によって入力された音声信号が後述するＦＦＴユニット、ｉＦＦＴユニットを介して放音される。さらに、スピーカ７００から放音された音声が壁・ドアにより反射されてマイク６００に入力される。このようなスピーカ７００に起因する音がマイク６００により検出された信号を音響エコーといい、スピーカ７００とマイク６００との間の経路をエコーパスＣという。さらに、マイク６００に入力された信号に対して一定時間毎のサンプルが行われることにより、デジタル音声信号ｙ（ｎ）が出力される。
【００１１】
８００，８２５はＦＦＴユニットであり、マイク６００，６５０を介して入力したデジタル音声信号ｘ（ｎ）（またはｙ（ｎ））を所定長のフレーム毎に離散フーリエ変換する。それにより、離散周波数ｉの関数として離散フーリエ変換Ｘ（ｉ）（あるいはＹ（ｉ））が算出される。すなわち、離散フーリエ変換Ｘ（ｉ）はデジタル音声信号ｘ（ｎ）についての複素数データであり、複数の周波数成分に対する振幅および位相を規定する周波数領域の信号である。
【００１２】
なお、周知のようにデジタル音声信号ｘ（ｎ）がエコーパスＣを介した出力信号ｙ（ｎ）は、音声信号ｘ（ｎ）とエコーパスＣのインパルス応答ｈ（ｎ）との畳込演算になる。そのため、出力信号ｙ（ｎ）のフーリエ変換Ｙ（ｉ）は、次式に示されるように、インパルス応答ｈ（ｎ）のフーリエ変換Ｈ（ｉ）と音声信号ｘ（ｔ）のフーリエ変換Ｘ（ｉ）とを乗算した形式に表現される。
Ｙ（ｉ）＝Ｈ（ｉ）・Ｘ（ｉ）  ………（１）
ここで、時間領域でサンプルした信号を変数ｎの小文字ｘ（ｎ），ｙ（ｎ），ｈ（ｎ）等で表し、周波数領域に変換した離散フーリエ変換を変数ｉの大文字Ｘ（ｉ），Ｙ（ｉ），Ｈ（ｉ）等で表現している。すなわち、大文字は複素数の信号であることを表現している。
【００１３】
８５０，８７５はｉＦＦＴユニットであり、離散フーリエ変換Ｘ（ｉ）あるいは後述する誤差信号Ｅ（ｉ）を逆フーリエ変換し、時間領域の信号ｘ（ｎ），ｅ（ｎ）に変換する。３００はＸレジスタであり、フーリエ変換Ｘ（ｉ）の複素数信号をＮ個記憶することが出来るレジスタである。ここで、フーリエ変換Ｘ（ｉ）の音声がｉＦＦＴユニット８５０を介してスピーカ７００から放音されると同時に、フーリエ変換Ｘ（ｉ）がＸレジスタ３００に記憶される。
【００１４】
４００は乗算ユニットであり、次式の乗算を実行し、参照信号Ｒ（ｉ）の複素数データを生成する。
Ｒ（ｉ）＝Ｈｋ（ｉ）・Ｘ（ｉ）  ………（２）
ここで、Ｈｋ（ｉ）は、ｋ回目のフレーム更新におけるフーリエ変換Ｘ（ｉ）に対する推定伝達関数であり、後述する処理によりエコーパスＣの伝達関数Ｈ（ｉ）に徐々に近似するように更新される。すなわち、参照信号Ｒ（ｉ）は推定伝達関数Ｈｋ（ｉ）とフーリエ変換Ｘ（ｉ）とが乗算されたものである。５００は減算ユニットであり、フーリエ変換Ｙ（ｉ）の値から参照信号Ｒ（ｉ）の値を実部および虚部のそれぞれについて減算し、誤差信号Ｅ（ｉ）を得る。ここで、誤差信号Ｅ（ｉ）は、次式のように変形される。
Ｅ（ｉ）＝Ｙ（ｉ）−Ｒ（ｉ）
＝Ｈ（ｉ）・Ｘ（ｉ）−Ｈｋ（ｉ）・Ｘ（ｉ）
＝｛Ｈ（ｉ）−Ｈｋ（ｉ）｝・Ｘ（ｉ）
＝ΔＨｋ（ｉ）・Ｘ（ｉ）
但し、  ΔＨｋ（ｉ）＝Ｈ（ｉ）−Ｈｋ（ｉ）
である。なお、ΔＨｋ（ｉ）を更新加算値といい、推定伝達関数Ｈｋ（ｉ）を更新する際の差分である。
そして、ｉＦＦＴユニット８５０および通信ユニット１５００を介して、誤差信号Ｅ（ｉ）を逆変換した音声信号ｅ（ｎ）が相手側スピーカ７５０から放音される。
【００１５】
２８０は複素共役ユニットであり、フーリエ変換Ｘ（ｉ）の複素共役Ｘ＊（ｉ）を生成する。２１０はΔＨ生成ユニットであり、誤差信号Ｅ（ｉ）の値および複素共役Ｘ＊（ｉ）の値を用いて、更新加算値ΔＨｋ（ｉ）の値を算出する。
Ｅ（ｉ）・Ｘ＊（ｉ）＝ΔＨｋ（ｉ）・Ｘ（ｉ）・Ｘ＊（ｉ）
＝ΔＨｋ（ｉ）・｜Ｘ（ｉ）｜2
ΔＨｋ（ｉ）＝Ｅ（ｉ）・Ｘ＊（ｉ）／｜Ｘ（ｉ）｜2……（３）
すなわち、誤差信号Ｅ（ｉ）がフーリエ変換Ｘ（ｉ）の複素共役Ｘ＊（ｉ）に乗算され、音声信号Ｘ（ｉ）のパワーによって除算された値が更新加算値ΔＨｋ（ｉ）の値である。
【００１６】
２２０はΔＨレジスタであり、ΔＨ生成ユニット２１０によって算出された複素数値を一時記憶する。２３０はμ倍ユニットであり、ΔＨ生成ユニット２１０の出力値に対して収束係数μの値を必要に応じて乗算する。さらに、ΔＨレジスタ２２０の出力値に対してμの値を乗算する。２４０はＨレジスタであり、推定伝達関数Ｈｋ（ｉ）の複素数値を記憶する。２５０は加算ユニットであり、μ倍されたΔＨ生成ユニット２１０の出力値をＨレジスタ２４０の値に加算する。２６０は減算ユニットであり、μ倍されたΔＨレジスタ２２０の出力値をＨレジスタ２４０の値から減算する。これらΔＨ生成ユニット２１０、ΔＨレジスタ２２０、μ倍ユニット２３０、Ｈレジスタ２４０、加算ユニット２５０および減算ユニット２６０によって適応フィルタ２００が構成される。また、Ｘレジスタ３００、乗算ユニット４００、減算ユニット５００および適応フィルタ２００によってエコーキャンセルユニット１０００が構成される。
【００１７】
1．2．第１実施例の動作
1．2．1．エコーキャンセル装置１００の全体動作
前述の通り、相手側マイク６５０に入力後、サンプルされた音声信号ｘ（ｎ）がスピーカ７００から放音されると、該音声信号ｘ（ｎ）がエコーパスＣのインパルス応答ｈ（ｎ）によって畳み込まれ、マイク６００において集音された音声信号ｙ（ｎ）が出力される。ここで、音響エコーを取り除くためには、マイク６００によって集音された音声信号ｙ（ｎ）から音声信号ｘ（ｎ）を取り除く必要がある。しかし、音声信号ｙ（ｎ）はエコーパスＣのインパルス応答ｈ（ｎ）と音声信号ｘ（ｎ）とが畳み込まれているので、単純に各信号を減算することによって取り除くことが出来ない。そこで、エコーパスＣの伝達関数Ｈ（ｉ）に近似する推定伝達関数Ｈｋ（ｉ）が求められる。
【００１８】
1．2．2．エコーキャンセルユニット１０００の動作
マイク６００にスピーカ７００から放音された音声のみがエコーパスＣを介して入力されるシングルトーク状態において、乗算ユニット４００によって乗算が実行されれば、エコーパスＣを介して伝達された信号を模擬した参照データ（擬似エコー）Ｒ（ｉ）が生成される。このとき、推定伝達関数Ｈｋ（ｉ）は、別途、適応フィルタ２００によって設定される。一方、マイク６００が出力する音声信号ｙ（ｎ）がＦＦＴユニット８００によってフーリエ変換され、フーリエ変換Ｙ（ｉ）が算出される。
【００１９】
そして、減算ユニット５００によって、フーリエ変換Ｙ（ｉ）から参照信号Ｒ（ｉ）が減算される。さらに、減算ユニット５００によって算出された誤差信号Ｅ（ｉ）を最小にするように、推定伝達関数Ｈｋ（ｉ）が逐次更新される。そして、該フィルタ係数はｋの値の増加によって伝達関数Ｈ（ｉ）近傍に収束する。そして、誤差信号Ｅ（ｉ）がｉＦＦＴユニット８５０によって音声信号に変換され、該音声信号が通信ユニット１５００を介して相手側スピーカ７５０から放音される。
【００２０】
ところが、誤差信号Ｅ（ｉ）には、マイク６５０からの音声信号および音響エコーの他に、マイク６００側の話者によって発音される音声信号が含まれる。このようなダブルトーク状態においては、マイク６００側の話者による音声信号の成分だけ誤差信号Ｅ（ｉ）が増加する。ここで、適応フィルタ２００は、正当でない誤差信号Ｅ（ｉ）を最小にするように、推定伝達関数Ｈｋ（ｉ）を更新しようとするため、推定伝達関数が不適切な値に設定されるという問題が生ずる。そこで、ダブルトーク状態においては推定伝達関数の更新を強制的に停止する必要が生じる。
【００２１】
1．2．3．適応フィルタ２００の動作
適応フィルタ２００は、ダブルトーク状態において推定伝達関数Ｈｋ（ｉ）の更新を停止し、シングルトーク状態においては誤差信号Ｅ（ｉ）を最小にするようにＨｋ（ｉ）が更新される。そのため、ｋ回目のフレーム更新毎に、Ｘ（ｉ）に対して、図３のルーチンが起動する。ステップＳＰ１０においては、（３）式に基づいて、更新加算値ΔＨｋ（ｉ）が算出される。そして、処理はステップＳＰ１５に進む。
【００２２】
ステップＳＰ１５においては、更新加算値ΔＨｋ（ｉ）の絶対値が任意の設定値α１の値より小さな値であるか否かが判定される。ここで、α１はダブルトーク判定閾値として、ダブルトーク状態であると判定して差し支えない程度の値が設定されている。ΔＨｋ（ｉ）の絶対値がα１の値を超えるか等しい値であるときは、「ＮＯ」と判定され、処理はステップＳＰ２０に進む。ステップＳＰ２０においては、Ｈレジスタ２４０内のＨｋ（ｉ）の値がＨｋ−１（ｉ）の値に設定され、推定伝達関数の更新が行われない。そして、処理はステップＳＰ２５に進み、ΔＨｋ（ｉ）の値がΔＨレジスタ２２０に保存される。そして、ステップＳＰ３０において、ｆｌａｇ＿ｋ（ｉ）の値が「０」に設定され、本ルーチンが終了する。ここで、ｆｌａｇ＿ｋ（ｉ）は、ｋ番目に推定伝達関数Ｈｋ（ｉ）が更新されたか否かを表し、「１」は更新されたことを表し、「０」は更新されなかったことを表す。
【００２３】
一方、ステップＳＰ１５において、更新加算値ΔＨｋ（ｉ）の絶対値がα１の値より小さな値であれば、「ＹＥＳ」と判定され、処理はステップＳＰ３５に進む。ステップＳＰ３５においては、更新加算値ΔＨｋ（ｉ）の絶対値が任意の設定値α２より小さな値であるか否かが判定される。ここで、α２はシングルトーク状態と判定して差し支えない程度の小さな値が設定されている。更新加算値ΔＨｋ（ｉ）の絶対値がα２未満であるときは「ＹＥＳ」と判定され、処理はステップＳＰ４０に進む。ステップＳＰ４０においては、ΔＨｋ（ｉ）の値がΔＨレジスタ２２０に保存され、処理はステップＳＰ４５に進み、μ倍ユニット２３０、加算ユニット２５０によって、推定伝達関数Ｈｋ（ｉ）の値が｛Ｈｋ−１（ｉ）＋μΔＨｋ（ｉ）｝の値に更新される。ここで、収束係数μは任意の値に選定される。そして、ステップＳＰ５０においてｆｌａｇ＿ｋ（ｉ）の値が「１」に設定され、ｋ番目において、推定伝達関数が更新されたことが記憶される。そして、本ルーチンが終了する。
【００２４】
さらに、ステップＳＰ３５において、更新加算値ΔＨｋ（ｉ）の絶対値がα２を超えるか等しい値であるときは「ＮＯ」と判定される。この場合においては、ダブルトーク状態の場合とシングルトーク状態の場合との両方が考えられる。そして、処理はステップＳＰ５５に進む。ステップＳＰ５５においては、更新加算値ΔＨｋ（ｉ）の値が前回の更新加算値ΔＨｋ−１（ｉ）の値にほぼ等しいか否かが判定される。ここで、かかる判定を行う意義を説明する。本実施例においては、エコーパスはマイクとスピーカ間において生ずることを想定している。このため、エコーパスの変動要因はドアの開閉、マイクとスピーカとの距離変動等であり、系の時間的変動が比較的緩やかである。そのため、ΔＨｋ（ｉ）の時間的変化が少なく、ΔＨｋ（ｉ）の値がΔＨｋ−１（ｉ）の値にほぼ等しくなる。すなわち、更新加算値ΔＨｋ（ｉ）が更新加算値ΔＨｋ−1（ｉ）とほぼ等しくなる場合は、エコーパスの変動が発生していると推測できる。ΔＨｋ−１（ｉ）の値がΔＨｋ（ｉ）の値にほぼ等しいと判定する範囲（許容差）は、部屋の大きさ、ドアの開閉による影響の大きさ、マイク・スピーカの距離のみならずサンプリング時間等に応じて決定される。ΔＨｋ−１（ｉ）の値がΔＨｋ（ｉ）の値にほぼ等しければ、「ＹＥＳ」と判定され、処理はステップＳＰ６０に進む。この「ほぼ等しい」の判定には、例えば、
０．９＜｜ΔＨｋ（ｉ）／ΔＨｋ−１（ｉ）｜＜１．１
などの判定式が適宜用いられる。すなわち、更新加算値が所定範囲にあるか否かが判定される。
【００２５】
ステップＳＰ６０においては、ｆｌａｇ＿ｋ−１（ｉ）＝０であるか否かの判定が行われる。ここで、ｆｌａｇ＿ｋ−１（ｉ）＝０であれば、シングルトーク状態であるにもかかわらずエコーパスの変動により前回（ｋ−１）で係数が更新されていないので、ほぼ同じ更新量が検出されたと判断できる。ステップＳＰ６０で「ＹＥＳ」と判定されると、処理はステップＳＰ４０に進み、ステップＳＰ４５、ステップＳＰ５０を介して、係数を変更して本ルーチンが終了する。
【００２６】
また、ステップＳＰ６０において、ｆｌａｇ＿ｋ−１（ｉ）＝１であれば「ＮＯ」と判定される。これは、前回（ｋ−１）で係数が更新されているにもかかわらず、今回の更新加算値がほぼ同じ値になっているということは、ダブルトーク状態であっても係数が更新されたものと判断し、処理はステップＳＰ６５に進む。ステップＳＰ６５においては、μ倍ユニット２３０、減算ユニット２６０によって、推定伝達関数Ｈｋ（ｉ）の値に｛Ｈｋ−１（ｉ）−μΔＨｋ−１（ｉ）｝の値が設定される。すなわち、前回（ｋ−１）における更新が無効にされる。この場合、前回（ｋ−１）の更新を無効にした分、エコー消去量は劣化するがダブルトーク状態による推定伝達関数の乱れは防止できる。そして、処理はステップＳＰ２５に進み、ステップＳＰ３０を介して、本ルーチンが終了する。
【００２７】
また、ステップＳＰ５５において、ΔＨｋ（ｉ）の値がΔＨｋ−１（ｉ）の値と大きく異なっている場合は、ダブルトーク状態であると推定され、処理はステップＳＰ２０に進み、ステップＳＰ２５、ステップＳＰ３０を介して本ルーチンが終了する。
【００２８】
周波数領域で適応制御を行い、エコー消去量を求めた特性を図４（ａ）および図４（ｂ）に示す。双方とも、縦軸はエコー消去量［ｄＢ］であり、横軸は応答時間を表す。図４（ａ）はシングルトーク状態からダブルトーク状態に変動した場合の応答特性を示す。線１２はダブルトーク判定閾値α１＝０．０１の場合であり、線１４はα１＝０．０３の場合であり、線１６はα１＝０．１の場合である。α１＝０．０１では、ダブルトークが検出され、係数の更新が行われない。そのため、ダブルトーク状態下での不適切な係数更新が行われずエコー消去量の低下が少ない。一方、α１＝０．１では、ダブルトークが検出されておらず、ダブルトーク状態下での不適切な係数更新が行われ、エコー消去量が著しく低下している。図４（ｂ）はドアを閉めた状態からドアを開けた状態の応答特性を表し、エコーパスが急激に変動した状態を表す。線２２はダブルトーク判定閾値α１＝０．０１の場合であり、線２４はα１＝０．０３の場合であり、線２６はα１＝０．１の場合である。α１＝０．０１では、エコーパスの変動に追従していないが、α１＝０．１においてはエコーパスの変動に対して復帰するように動作している。したがって、閾値α１を大きな値に設定すると収束速度は速くなるがエコー消去量が小さくなり、ダブルトークに対する耐性が弱くなる事が判る。なお、図４（ａ）および図４（ｂ）の双方の特性を考慮すると、中間のα１＝０．０３が最適値であると判断される。
【００２９】
2．第２実施例
第１実施例においては、推定伝達関数Ｈｋ（ｉ）の推定を周波数領域に変換して行ったが、時間領域の信号を用いても同様の推定を行うことが出来る。この場合においては、ハードウェア構成は第１実施例と同一でよい。しかし、アルゴリズム構成および動作は第１実施例と異なる。
【００３０】
2．1．アルゴリズム構成
次に、エコーキャンセル装置１００の時間領域におけるアルゴリズム構成を図５を参照して説明する。
図５において、相手側マイク６５０、相手側スピーカ７５０、通信ユニット１５００は前述した通りである。さらに、２１５はΔｈ生成ユニットであり、誤差信号ｅ（ｎ）の値および音声信号ｘ（ｎ）の値を用いて、（４）式に示される学習同定法によって、推定インパルス応答ｈｋ（ｎ）を更新する際の差分である更新加算値Δｈｋ（ｎ）の値を算出する。
【数１】
2005318518.tif 000003
ここで、μは収束係数であり、ｈｋ（ｎ）の収束速度を決定する０＜μ≦１の範囲の定数である。すなわち、誤差信号ｅ（ｎ）が音声信号ｘ（ｎ）に乗算され、音声信号ｘ（ｎ）の二乗和によって除算された値に収束係数を乗算した値が更新加算値Δｈｋ（ｎ）の値である。
【００３１】
２２５はΔｈレジスタであり、Δｈ生成ユニット２１５によって算出された値を一時記憶する。２３５はμ倍ユニットであり、Δｈ生成ユニット２１５の出力値に対して収束係数μの値を必要に応じて乗算する。２４５はｈレジスタであり、推定インパルス応答ｈｋ（ｊ）の値を記憶する。２５５は加算ユニットであり、μ倍されたΔｈ生成ユニット２１５の出力値をｈレジスタ２４５の値に加算する。２６５は減算ユニットであり、μ倍されたΔｈレジスタ２２５の出力値をｈレジスタ２４５の値から減算する。３０５はｘレジスタであり、サンプリングデータｘ（ｎ）をＮ個記憶することが出来るレジスタである。４1０は畳込演算ユニットであり、（５)式の畳込演算を実行し、参照信号ｒ（ｎ）を算出する。
【数２】
2005318518.tif 000004
ここで、＊は畳み込みを示す演算子であり、ｈｋ（ｎ）は、エコーパスＣの推定インパルス応答である。すなわち、推定インパルス応答ｈｋ（ｊ）が信号ｘ（ｎ−ｊ）に乗算され、該乗算された結果の和が演算される。なお、推定インパルス応答ｈｋ（ｎ）は後述する更新によりエコーパスＣのインパルス応答ｈ（ｎ）の近似値に収束する。
【００３２】
５０５は減算ユニットであり、マイク６００から入力されサンプルされた音声信号ｙ（ｎ）の値から参照信号ｒ（ｎ）の値を減算する。なお、減算ユニット５０５の出力信号ｅ（ｎ）を誤差信号という。そして、通信ユニット１５００を介して、誤差信号ｅ（ｎ）による音声が相手側スピーカ７５０から放音される。また、Δｈ生成ユニット２１５、Δｈレジスタ２２５、μ倍ユニット２３５、ｈレジスタ２４５、加算ユニット２５０および減算ユニット２６５によって適応フィルタ２０５が構成される。さらに、ｘレジスタ３０５、畳込演算ユニット４１０、減算ユニット５０５および適応フィルタ２０５によってエコーキャンセルユニット１１００が構成される。なお、これらのレジスタ、演算ユニット等においては第１実施例と異なり、複素数の処理が行われず実数のみの処理が行われる。
【００３３】
2．2．第２実施例の動作
2．2．1．エコーキャンセルユニット１１００の動作
第２実施例の全体動作は第１実施例と同様であるので、エコーキャンセルユニットの動作、適応フィルタの動作に分けて説明する。まず、図５を参照してエコーキャンセルユニットの動作を説明する。
マイク６００にスピーカ７００から放音された音声のみがエコーパスを介して入力されるシングルトーク状態において、畳込演算ユニット４１０によって畳込演算が実行されれば、エコーパスＣを模擬した擬似エコーが生成される。すなわち、信号ｘ（ｎ）がｘレジスタ３０５に一定時間毎に逐次記憶・更新されることにより、マイク６００に入力される信号ｙ（ｎ）が（５）式の畳込演算によって模擬される。このとき、推定インパルス応答ｈｋ（ｎ）は、別途、適応フィルタ２０５によって設定される。ここで、Ｎの値はインパルス応答ｈ（ｎ）の応答長であり、インパルス応答ｈ（ｎ）の収束時間により決定され、収束時間が長ければ大きなＮの値が必要になる。
【００３４】
そして、減算ユニット５０５によって、マイク６００から入力後サンプルされた音声信号ｙ（ｎ）から畳込演算により生成された参照信号ｒ（ｎ）が減算される。さらに、減算ユニット５０５によって減算された誤差信号ｅ（ｎ）を最小にするように、推定インパルス応答ｈｋ（ｎ）が逐次更新され、該係数はエコーパスＣのインパルス応答ｈ（ｎ）に収束する。そして、減算された誤差信号ｅ（ｎ）が通信ユニット１５００を介して相手側スピーカ７５０から放音される。
【００３５】
2．2．2．適応フィルタ２０５の動作
適応フィルタ２０５は、ダブルトーク状態において推定インパルス応答の更新を停止し、シングルトーク状態においては誤差信号ｅ（ｎ）を最小にするように推定インパルス応答ｈｋ（ｎ）が更新される。そのため、信号ｘ（ｎ）が入力され、ｋ番目の畳込演算が実行される毎に図６のルーチンが起動する。
ステップＳＰ１１０においては、（４）式に示される学習同定法に基づいて、更新加算値Δｈｋ（ｎ）が算出される。そして、処理はステップＳＰ１１５に進む。
【００３６】
ステップＳＰ１１５においては、Δｈｋ（ｎ）の絶対値が任意の設定値α３の値より小さな値であるか否かが判定される。ここで、α３はダブルトーク判定閾値として、ダブルトーク状態であると判定して差し支えない程度の値が設定されている。Δｈｋ（ｎ）の絶対値がα３の値を超えるか等しい値であるときは、「ＮＯ」と判定され、処理はステップＳＰ１２０に進む。ステップＳＰ１２０においては、ｈレジスタ２４５内のｈｋ（ｎ）の値がｈｋ−１（ｎ）の値に設定され、推定インパルス応答の更新が行われない。そして、処理はステップＳＰ１２５に進み、Δｈｋ（ｎ）の値がΔＨレジスタ２２０に保存される。そして、ステップＳＰ１３０において、ｆｌａｇ＿ｋ（ｎ）の値が「０」に設定され、本ルーチンが終了する。ここで、ｆｌａｇ＿ｋ（ｎ）は、ｋ番目に推定インパルス応答ｈｋ（ｎ）が更新されたか否かを表し、「１」は更新されたことを表し、「０」は更新されないことを表す。
【００３７】
一方、ステップＳＰ１１５において、更新加算値Δｈｋ（ｎ）の絶対値がα３の値より小さな値であれば、「ＹＥＳ」と判定され、ステップＳＰ１３５に進む。ステップＳＰ１３５においては、更新加算値Δｈｋ（ｎ）の絶対値が任意の設定値α４より小さな値であるか否かが判定される。ここで、α４はシングルトーク状態と判定して差し支えない程度の小さな値が設定されている。更新加算値Δｈｋ（ｎ）の絶対値がα４の値未満であるときは「ＹＥＳ」と判定され、処理はステップＳＰ１４０に進む。ステップＳＰ１４０においては、Δｈｋ（ｎ）の値がΔｈレジスタ２２５に保存され、処理はステップＳＰ１４５に進む。ステップＳＰ１４５においては、μ倍ユニット２３５、加算ユニット２５５によって、推定インパルス応答ｈｋ（ｎ）の値が｛ｈｋ−１（ｎ）＋μΔｈｋ（ｎ）｝の値に更新される。ここで、収束係数μは任意の値に選定される。そして、ステップＳＰ１５０においてｆｌａｇ＿ｋ（ｎ）の値が「１」に設定され、ｋ番目において、推定インパルス応答ｈｋ（ｎ）が更新されたことが記憶される。そして、本ルーチンが終了する。
【００３８】
さらに、ステップＳＰ１３５において、更新加算値Δｈｋ（ｎ）の絶対値がα４の値を超えるか等しい値であるときは「ＮＯ」と判定される。この場合においては、ダブルトーク状態の場合とシングルトーク状態の場合との両方が考えられる。そして、処理はステップＳＰ１５５に進み、更新加算値Δｈｋ（ｎ）が前回の更新加算値Δｈｋ−１（ｎ）にほぼ等しいか否かが判定される。更新加算値Δｈｋ（ｎ）がΔｈｋ−１（ｎ）の値とほぼ等しければ、エコーパスの変動が発生していると推測できる。Δｈｋ（ｎ）がΔｈｋ−１（ｎ）の値にほぼ等しければ「ＹＥＳ」と判定され、処理はステップＳＰ１６０に進む。なお、この「ほぼ等しい」の判定には、例えば
０．９＜｜Δｈｋ（ｎ）／Δｈｋ−１（ｎ）｜＜１．１
などの判定式が適宜用いられる。
【００３９】
ステップＳＰ１６０においては、ｆｌａｇ＿ｋ−１（ｎ）＝０であるか否かの判定が行われる。ここでｆｌａｇ＿ｋ−１（ｎ）＝０であれば、シングルトーク状態であるにもかかわらずエコーパスの変動により前回（ｋ−１）で係数が更新されていないので、ほぼ同じ更新量が検出されたと判断できる。ステップＳＰ１６０で「ＹＥＳ」と判定されると、処理はステップＳＰ１４０に進み、ステップＳＰ１４５、ステップＳＰ１５０を介して、本ルーチンが終了する。
【００４０】
また、ステップＳＰ１６０において、ｆｌａｇ＿ｋ−１（ｎ）＝１であれば「ＮＯ」と判定される。これは、前回（ｋ−１）で係数更新が行われているにもかかわらず、今回の更新値がほぼ同じ値になっているということは、ダブルトーク状態であっても係数が更新されたものと判断し、処理はステップＳＰ１６５に進む。ステップＳＰ１６５においては、μ倍ユニット２３５、減算ユニット２６５によって、推定インパルス応答ｈｋ（ｎ）の値に｛ｈｋ−１（ｎ）−μΔｈｋ−１（ｎ）｝の値が設定される。そして、処理はステップＳＰ１２５に進み、ステップＳＰ１３０を介して、本ルーチンが終了する。
【００４１】
また、ステップＳＰ１５５において、Δｈｋ（ｎ）の値がΔｈｋ−１（ｎ）の値と大きく異なっている場合は、ダブルトーク状態であると推定され、処理はステップＳＰ１２０に進み、ステップＳＰ１２５、ステップＳＰ１３０を介して本ルーチンが終了する。
【００４２】
以上のように本実施例によれば、更新加算値の大きさにより、推定インパルス応答の更新を行うか否かの判定をしているから、誤差信号ｅ（ｎ）パワーあるいは残留パワーに基づいてダブルトークの有無を判定している技術に比較して、適応の進み方にかかわらず判定ができるとともに、迅速な収束を可能にする。また、更新加算値の大きさのみならず、該更新加算値の変化に基づいて、推定インパルス応答の更新を行うか否かの判定をしているから、的確な判定をすることが出来る。また、各離散周波数ｉごとにダブルトーク状態の判定を行っているので、直接マイクに入力される音声によりダブルトークが発生している帯域のフィルタ係数の更新を停止し、その他の帯域については係数更新を行うといった処理を容易に行うことができる。
【００４３】
3．変形例
本発明は上述した実施例に限定されるものではなく、例えば以下のように種々の変形が可能であり、全て本発明の範疇に含まれる。
(1)上記実施例においては、学習同定法によって更新加算値を算出したが、ＬＭＳ（最小自乗平均）アルゴリズムなど他のアルゴリズムを用いてもよい。
【００４４】
(2)上記実施例のステップＳＰ１５およびＳＰ３５においては、全ての離散周波数ｉに対する更新加算値ΔＨｋ（ｉ）の絶対値とα１またはα２とを比較することによってダブルトーク状態の成否等を判定したが、ダブルトーク状態の成否等の判定のためには必ずしも全ての離散周波数ｉに対する更新加算値ΔＨｋ（ｉ）を使用する必要はなく、任意の所定個数の更新加算値ΔＨｋ（ｉ）が所定条件を満たしたか否かによってダブルトーク状態の成否等を判定するようにしてもよい。
【００４５】
例えば、離散周波数ｉ毎にα１（ｉ）およびα２（ｉ）を定め、「ΔＨｋ（ｉ）＜α１（ｉ）（またはα２（ｉ））」を満たすΔＨｋ（ｉ）を所定数検出したことを条件としてステップＳＰ１５（またはＳＰ３５）において「ＹＥＳ」と判定するようにしてもよい。この場合、α１（ｉ）およびα２（ｉ）は離散周波数ｉ毎に異なる値にしてもよい。例えば、低周波成分は空間の変動の影響を受け易いため、低周波になるほどα１（ｉ）を小さく設定してもよい。
(3)上記実施例は、ＲＯＭ７０に格納されたプログラムによってエコーキャンセル方法を実行したが、このプログラムのみをＣＤ−ＲＯＭ、フレキシブルディスク等の記憶媒体に格納して頒布し、あるいは電気通信回線を通じて頒布してもよい。
【図面の簡単な説明】
【００４６】
【図１】本発明の第１実施例であるエコーキャンセル装置（ダブルトーク状態判定装置）のハードウェア構成図である。
【図２】本発明の第１実施例であるエコーキャンセル装置（ダブルトーク状態判定装置）のアルゴリズム構成図（周波数領域）である。
【図３】周波数領域におけるフローチャートである。
【図４】シングルトーク状態からダブルトーク状態に変動した場合およびエコーパスが急激に変動した場合の応答特性を示す図である。
【図５】本発明の第２実施例であるエコーキャンセル装置（ダブルトーク状態判定装置）のアルゴリズム構成図（時間領域）である。
【図６】時間領域におけるフローチャートである。
【符号の説明】
【００４７】
１０…入出力インターフェース、２０…ＤＳＰ、３０…操作部、４０…通信部、５０…ＣＰＵ、６０…ＲＡＭ、７０…ＲＯＭ、８０…バスライン、１００…エコーキャンセル装置（ダブルトーク状態判定装置）、２００，２０５…適応フィルタ、２１０…ΔＨ生成ユニット（更新加算値算出過程）、２１５…Δｈ生成ユニット（更新加算値算出過程）、２２０…ΔＨレジスタ、２２５…Δｈレジスタ、２３０，２３５…μ倍ユニット、２４０…Ｈレジスタ、２４５…ｈレジスタ、２５０，２５５…加算ユニット、２６０，２６５…減算ユニット(減算過程）、２８０…複素共役ユニット、３００…Ｘレジスタ、３０５…ｘレジスタ（信号記憶過程）、４００…畳込演算ユニット（乗算過程）、４１０…乗算ユニット（畳込演算過程）、５００,５０５…減算ユニット（減算過程）、６００，６５０…マイク、７００，７５０…スピーカ、８００，８２５…ＦＦＴユニット（変換過程）、８５０，８７５…ｉＦＦＴユニット、１０００，１１００…エコーキャンセルユニット、１５００…通信ユニット、１２，１４，１６，２２，２４，２６…線。
【図１】
2005318518.tif 000005
【図２】
2005318518.tif 000006
【図３】
2005318518.tif 000007
【図４】
2005318518.tif 000008
【図５】
2005318518.tif 000009
【図６】
2005318518.tif 000010