以下、図面を参照して、この発明の実施形態について説明する。図1は、この発明の第1の実施形態に係わるエコーキャンセル回路とその周辺の構成を示すブロック図である。このエコーキャンセル回路は、例えば携帯電話機などの通信機器に実装され、この回路の動作に先立って、上記通信機器により通信リンクが確立し、通信相手と双方向通話が可能な状態となる。
図示しない無線通信部によって受信された受信データは、図示しないデコーダによって、ディジタル信号に復号される。このディジタル信号は、受話信号として受話ディジタルユーザボリューム1に出力される。
ユーザボリューム入力手段15は、利用者が設定する受話信号の音量をキー入力ないしボリュームつまみ操作などで受け付けるものであり、この受け付けた音量の値を示すボリューム値が制御手段(CONT)17によって読み出される。
モード入力手段16は、例えばスルーモード(エコーキャンセル回路の機能オフ)、ハンドセットモード(ハンドセット用スピーカを用いたハンドセット通話)、ハンズフリーモード(ハンズフリー用スピーカを用いたハンズフリー通話)、イヤホンモード(イヤホンを用いた通話)、外部機器接続モード(外部接続されたスピーカを用いた通話)などの少なくとも2つ以上のモードのうち、利用者が希望するモードをキー入力ないしスイッチつまみ操作などで受け付けるものであり、この受け付けたモードを示すモード識別情報が制御手段17によって読み出される。
制御手段17は、ユーザボリューム入力手段15およびモード入力手段16から読み出した情報に基づいて、エコーキャンセラ21を制御すると共に、モード入力手段16から読み出したモード識別情報に基づいて、受話アナログパス切換手段4および送話アナログパス切換手段13の切り替え制御を行う。
この受話アナログパス切換手段4に対する切り替え制御では、2チャネルスピーカ6(6a、6b)およびこの2チャネルスピーカの受話アナログゲイン5(5a、5b)か、あるいはスピーカ8とこのスピーカ8の受話アナログゲイン7のいずれかを選択的に機能させる。
そして送話アナログパス切換手段13に対する切り替え制御では、マイクロホン9およびこのマイクロホン9の送話アナログゲイン10か、あるいはマイクロホン11およびこのマイクロホン11の送話アナログゲイン12のいずれかを選択的に機能させる。
なお、2チャネルスピーカ6、受話アナログゲイン5およびマイクロホン9、送話アナログゲイン10は、外部接続されるカーキットやBluetooth(登録商標)などの無線通信によって外部接続されるヘッドセットなどの機器に搭載されることを想定してもよい。このような機器を用いる場合には外部機器接続モードが設定され、受話アナログパス切換手段4に任意に着脱できる。これに代わって受話アナログパス切換手段4に、イヤホンマイクを接続することも可能である。この場合、上記イヤホンモードが設定される。
また制御手段17は、ユーザボリューム入力手段15から読み出したボリューム値および上記モード識別情報、内蔵するテーブルデータに基づいて、ユーザボリューム値を決定し、このユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報をエコーキャンセラ21に出力する。なおここで、制御手段17は、上記ボリューム値の代わりに上記ユーザボリューム値をエコーキャンセラ21に出力してもよい。
図2に、制御手段17が内蔵するテーブルデータの一例を示す。この例では、モード入力手段16を通じて選択可能なモードがモード0、モード1、モード2の3モードあり、ユーザボリューム入力手段15を通じて選択できるボリューム値が1から5の5段階であるときを示すもので、これらに対応づけたユーザボリューム値をdB単位で格納している。なお、格納されている利得は、dB単位であっても、利得の乗算係数単位であってもよい。
受話ディジタルユーザボリューム1は、制御手段17によって設定されるユーザボリューム値に基づいて、ディジタル処理により受話信号を増幅する。この増幅された受話信号は、エコーキャンセラ21とD/A変換器(D/A)3に出力される。このように、受話ディジタルユーザボリューム1を、後述するエコーキャンセラ21の信号記憶手段2aより前段に設けることで、エコーキャンセラ21にとっては、ユーザボリューム変動によるエコーパス変動を回避できる。このため、ダブルトーク検出が困難になったり適応学習が困難になったりすることを避けることができる。
また、アナログフロントエンド(D/A変換器3、受話アナログゲイン5(5a、5b)または7、スピーカ6(6a、6b)または8、マイクロホン9または11、送話アナログゲイン10または12、A/D変換器14)での非線形歪み等で、信号記憶手段2aに記憶された受話信号と回り込む送話入力信号との相関が少なくなりエコー抑圧性能が劣化することを避けることができる。
D/A変換器3は、上記受話信号をアナログ信号に変換する。このアナログ信号は、受話アナログパス切換手段4を通って、受話アナログゲイン5(5a、5b)または7で増幅された後、スピーカ6(6a、6b)または8より拡声出力される。
このようにして音響空間に出力された信号は、送話音声と音響結合してマイクロホン9または11で集音され、アナログ信号に変換される。このアナログ信号は、送話アナログゲイン10または12で増幅された後、送話アナログパス切換手段13を通じてA/D変換器14に入力され、ディジタル信号に変換される。
エコーキャンセラ21は、上記ディジタル信号からエコー成分を除去するものであって、そのエコー除去後の信号を送話出力信号として、図示しないエンコーダに出力するものであり、受話信号のノルムの二乗を用いる適応アルゴリズム、例えば学習同定法(NLMSアルゴリズム)などで動作するものとする。以下、エコーキャンセラ21の適応アルゴリズムを時間領域型の学習同定法で動作するものとして説明する。
エコーキャンセラ21は、信号記憶手段(XREG)2a、ノルム算出手段(NORMX)2b、乗算手段2c、修正量算出手段(KCAL)2d、係数更新量算出手段(CORR)2f、係数更新手段(HCAL)2h、係数記憶手段(HREG)2i、擬似エコー算出手段(CONV)2j、乗算手段2k、エコー除去手段2l、利得記憶手段(GREG)2m、乗算制御部(GCON)2nを備える。
なお、エコーキャンセラ21は、ダブルトークを検出する構成を備えるようにしてもよい。ダブルトークを検出する場合には、ダブルトーク検出手段(DTD)2oや乗算手段2pを備える。以下の説明では、まず、これらの構成を備えない場合について説明し、ダブルトーク検出手段2oや乗算手段2pを備える場合については後述する。
信号記憶手段2aは、受話ディジタルユーザボリューム1より出力される受話信号x(n)を一時的に蓄えて遅延させ、ノルム算出手段2b、係数更新量算出手段2fおよび擬似エコー算出手段2jに出力する。
ノルム算出手段2bは、上記信号記憶手段2aで遅延した受話信号x(n)の各データの二乗和であるノルムの二乗norm(n)を算出し、この算出結果の逆数を乗算手段2cに出力する。勿論、受話信号x(n)の各データの二乗平均を出力してもよい。
乗算手段2cは、上記ノルム算出手段2bで求めたノルムの二乗norm(n)の逆数に、後述する乗算制御部2nから出力された利得αの逆数を乗じ、この結果を修正量算出手段2dに出力する。このとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。
修正量算出手段2dは、上記乗算手段2cの乗算結果に、後述するエコー除去手段2lが出力する送話出力信号e(n-1)とステップサイズμを乗算して修正量k(n)を算出し、これを係数更新量算出手段2fに出力する。なお、ステップサイズμは収束係数とも呼ばれる正定数である。学習同定法の場合、0<μ<2の範囲であれば可変値でも固定値でもよい。
係数更新量算出手段2fは、上記信号記憶手段2aで遅延した受話信号x(n)に、上記修正量算出手段2dで求めた修正量k(n)を乗算して、係数更新量Δh(n)を算出し、これを係数更新手段2hに出力する。
係数更新手段2hは、係数記憶手段2iに格納されているタップ係数h(n-1)と、上記係数更新量算出手段2fが算出した係数更新量Δh(n)とを加算して、更新したタップ係数h(n)を求め、これを上記タップ係数h(n-1)の代わりに係数記憶手段2iに格納(更新)する。
擬似エコー算出手段2jは、上記信号記憶手段2aで遅延した受話信号x(n)と、係数記憶手段2iに格納されているタップ係数h(n)とを畳込み演算して、擬似エコー信号y’(n)を生成し、乗算手段2kに出力する。
利得記憶手段2mは、制御手段17から出力されるボリューム値とモード識別情報に対応する利得のテーブルデータを予め記憶するものである。このテーブルデータに記憶される利得は、エコー経路の利得の変動幅に合わせるように動作開始前に外部から予め設定可能である。
図3に、利得記憶手段2mに記憶されるテーブルデータの一例を示す。この例では、前述した制御手段17に対応し、モード入力手段16を通じて選択可能なモードがモード0、モード1、モード2の3モードあり、ユーザボリューム入力手段15を通じて選択できるボリューム値が1から5の5段階であるときを示すもので、これらに対応づけた利得をdB単位で格納している。なお、格納されている利得は、dB単位であっても、利得の乗算係数単位であってもよい。
乗算制御部2nは、利得記憶手段2mが記憶する上記テーブルデータから、制御手段17から出力されるボリューム値とモード識別情報に対応する利得αを選択的に読み込む。そして、乗算制御部2nは、その利得αを乗算手段2kの乗算係数として設定するとともに、その利得αの逆数を乗算手段2cの乗算係数として設定する。
乗算手段2kは、擬似エコー算出手段2jから与えられた擬似エコー信号y’(n)に、乗算制御部2nによって設定された利得αを乗じる。なおこのとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。
エコー除去手段2lは、A/D変換器14より出力された送話入力信号y(n)から上記利得αを乗じた擬似エコー信号を減じることでエコー成分を除去し、エコー成分が除去された信号e(n)を送話出力信号として、図示しないエンコーダおよび修正量算出手段2dに出力する。
このようにしてエコーキャンセラ21から出力された送話出力信号は、図示しないエンコーダによって符号化される。この符号化によって得られたデータは、前述した無線通信部を通じて、送信データとして通信相手に無線送信される。
なお、ここではエコーキャンセラ21の適応アルゴリズムを時間領域型の学習同定法で動作するものとして説明したが、受話信号のノルムを用いるその他の適応アルゴリズムも同様に動作させることができる。
次に、エコーキャンセラ21がダブルトーク検出手段2oおよび乗算手段2pを備えて、ダブルトークの検出を行う場合について説明する。なおここでは、ダブルトーク検出手段2oのダブルトーク検出アルゴリズムとして、A/D変換器14の出力と上記信号記憶手段2aで遅延した受話信号を用いる手法を例に挙げて説明する。
乗算手段2pは、上記エコー除去手段2lより出力された送話出力信号e(n)に、乗算制御部2nから与えられる利得αの逆数を乗じ、この結果をダブルトーク検出手段2oに出力する。
ダブルトーク検出手段2oは、A/D変換器14の出力、上記信号記憶手段2aで遅延した受話信号および乗算手段2pの出力に基づいて、ダブルトーク状態か否かを判定する。具体的には、A/D変換器14の出力y(n)のパワー特性(パワー値またはピーク値)Py(n)と上記信号記憶手段2aで遅延した受話信号x(n)のパワー特性(パワー値またはピーク値)Px(n)と乗算手段2pの出力のパワー特性(パワー値またはピーク値)Pe(n)とをサンプル単位で算出し、Pe(n)>λ(n)・Px(n)またはPy(n)>δ・Px(n)となる場合にダブルトーク状態と判定する。ここで、λ(n)はエコー経路の利得の推定値であり、タップ係数h(n)を適応学習したサンプル数に基づいて算出し、適応学習が進めば小さくなり、適応学習が間違っていれば大きくなる可変量である。また、δは動作開始前に外部から予め設定可能な固定値である。
なお、上記Pe(n)の代わりに、上記エコー除去手段2lより出力された送話出力信号e(n)のパワー特性(パワー値またはピーク値)に乗算制御部2nから乗算手段2cに与えられる利得αの逆数を乗じ、この結果をダブルトーク検出手段2oに出力する構成としてもよい。
ダブルトーク検出手段2oは、ダブルトーク状態を検出した場合、この旨を修正量算出手段2d、係数更新量算出手段2fおよび係数更新手段2hに通知する。これに対して修正量算出手段2d、係数更新量算出手段2fおよび係数更新手段2hは、上記通知を受けると、それぞれ上述した演算は行わない。これにより、ダブルトーク検出時には、係数記憶手段2iに格納されるタップ係数が、演算(更新)されることなく維持されることになり、計算量が少なくすることができる。
このような構成によれば、エコー経路の利得が、1倍以上になる時(エコー増幅時)と1倍未満になる時(エコー減衰時)とでダブルトーク検出アルゴリズムを大きく変更することなく、ダブルトーク検出精度が同程度のダブルトーク検出手段を実現することができる。
次に、上記構成のエコーキャンセル回路の動作について説明する。図4は、その動作を説明するフローチャートである。この図に示す処理は、実装される通信機器による発呼または通信相手からの着呼に伴って開始される。
まず、step101において制御手段17は、モード入力手段16を通じて予め設定されたモード識別情報を読み込み、続いてstep102において、ユーザボリューム入力手段15を通じて予め設定されたボリューム値を読み込み、step103に移行する。
step103において制御手段17は、step101で読み込んだモード識別情報およびstep102で読み込んだボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定し、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step104に移行する。
これに対してstep104において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。そして、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、上記利得αの逆数を乗算手段2cに乗算係数として設定し、step105に移行する。
そしてstep105において制御手段17は、step101で読み込んだモード識別情報に基づいて受話アナログパス切換手段4および送話アナログパス切換手段13の切り替えを行う。その後、上記通信機器により通信相手と通信リンクが確立し、通信相手と双方向通話が可能な状態となると、step106に移行する。双方向通話が可能な状態においては、エコーキャンセラ21は所望の動作を行う。
step106において制御手段17は、モード入力手段16を通じてモード変更の有無を判定し、step107に移行する。ここで、モード変更有りと判定された場合には、step109に移行し、一方、モード変更無しと判定された場合には、step107に移行する。
step107において制御手段17は、ユーザボリューム入力手段15を通じてボリューム値の変更の有無を判定する。ここで、ボリューム値変更有りと判定された場合には、step112に移行し、一方、ボリューム値変更無しと判定された場合には、step108に移行する。
step109において制御手段17は、モード入力手段16からモード識別情報を読み込むとともに、ユーザボリューム入力手段15からボリューム値を読み込み、そしてこれら読み込んだモード識別情報およびボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定する。そして制御手段17は、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step110に移行する。
step110において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。そして、乗算制御部2nは、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、上記利得αの逆数を乗算手段2cに乗算係数として設定し、step111に移行する。
step111において制御手段17は、step109で読み込んだモード識別情報に基づいて受話アナログパス切換手段4および送話アナログパス切換手段13の切り替えを行い、step108に移行する。
一方、step112において制御手段17は、モード入力手段16からモード識別情報を読み込むとともに、ユーザボリューム入力手段15からボリューム値を読み込み、そしてこれら読み込んだモード識別情報およびボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定する。そして制御手段17は、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step113に移行する。
step113において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。そして、乗算制御部2nは、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、上記利得αの逆数を乗算手段2cに乗算係数として設定し、step108に移行する。
step108において制御手段17は、終話要求が生じたか否かを判定する。ここで、終話要求が生じた場合には、当該処理を終了して、図示しない通信制御手段により通信リンクを切断し、双方向通信を終了する。終話要求が生じない場合には、step106に移行する。
以上のように、上記構成のエコーキャンセル回路では、擬似エコー算出手段2jで求めた擬似エコー信号を、ボリューム値とモードに応じた利得αで増幅し、これを送話出力信号から減じることでエコー成分を除去するとともに、ノルム算出手段2bで求めたノルムの二乗と上記利得αの積の逆数と、上記エコー成分が除去された送話出力信号とに基づいて、上記擬似エコー信号生成に用いるタップ係数の更新を行うようにしている。
すなわち、エコー減衰時に比べてエコー増幅時では上記残留エコー信号が増大することになるが、上記構成のエコーキャンセル回路では、上記乗算手段2cを用いることで、修正量算出手段2dにおける演算量が、上記ノルムの二乗の次数分の乗算という比較的少ない演算量になり、修正量算出手段2dにおける桁落ちを防止できる。
したがって、上記構成のエコーキャンセル回路によれば、エコー減衰時とエコー増幅時で適応アルゴリズムを変更することなく、エコー経路の利得が1倍以上になるとき(エコー増幅時)でも、有限語長演算(固定小数点演算)過程でオーバーフローおよび桁落ちを生じないため所望のエコー抑圧量を得ることができ、受話信号、送話入力信号、残留エコー信号に音声品質劣化が生じることを防ぐことができる。
次に、この発明の第2の実施形態に係わるエコーキャンセル回路について説明する。図5は、上記エコーキャンセル回路とその周辺の構成を示すブロック図である。このエコーキャンセル回路は、例えば携帯電話機などの通信機器に実装され、この回路の動作に先立って、上記通信機器により通信リンクが確立し、通信相手と双方向通話が可能な状態となる。
図示しない無線通信部によって受信された受信データは、図示しないデコーダによって、ディジタル信号に復号される。このディジタル信号は、受話信号として受話ディジタルユーザボリューム1に出力される。
ユーザボリューム入力手段15は、利用者が設定する受話信号の音量をキー入力ないしボリュームつまみ操作などで受け付けるものであり、この受け付けた音量の値を示すボリューム値が制御手段(CONT)17によって読み出される。
モード入力手段16は、例えばスルーモード(エコーキャンセル回路の機能オフ)、ハンドセットモード(ハンドセット用スピーカを用いたハンドセット通話)、ハンズフリーモード(ハンズフリー用スピーカを用いたハンズフリー通話)、イヤホンモード(イヤホンを用いた通話)、外部機器接続モード(外部接続されたスピーカを用いた通話)などの少なくとも2つ以上のモードのうち、利用者が希望するモードをキー入力ないしスイッチつまみ操作などで受け付けるものであり、この受け付けたモードを示すモード識別情報が制御手段17によって読み出される。
制御手段17は、ユーザボリューム入力手段15およびモード入力手段16から読み出した情報に基づいて、エコーキャンセラ22を制御すると共に、モード入力手段16から読み出したモード識別情報に基づいて、受話アナログパス切換手段4および送話アナログパス切換手段13の切り替え制御を行う。
この受話アナログパス切換手段4に対する切り替え制御では、2チャネルスピーカ6(6a、6b)およびこの2チャネルスピーカの受話アナログゲイン5(5a、5b)か、あるいはスピーカ8とこのスピーカ8の受話アナログゲイン7のいずれかを選択的に機能させる。
そして送話アナログパス切換手段13に対する切り替え制御では、マイクロホン9およびこのマイクロホン9の送話アナログゲイン10か、あるいはマイクロホン11およびこのマイクロホン11の送話アナログゲイン12のいずれかを選択的に機能させる。
なお、2チャネルスピーカ6、受話アナログゲイン5およびマイクロホン9、送話アナログゲイン10は、外部接続されるカーキットやBluetoothなどの無線通信によって外部接続されるヘッドセットなどの機器に搭載されることを想定してもよい。このような機器を用いる場合には外部機器接続モードが設定され、受話アナログパス切換手段4に任意に着脱できる。これに代わって受話アナログパス切換手段4に、イヤホンマイクを接続することも可能である。この場合、上記イヤホンモードが設定される。
また制御手段17は、ユーザボリューム入力手段15から読み出したボリューム値および上記モード識別情報、内蔵するテーブルデータに基づいて、ユーザボリューム値を決定し、このユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報をエコーキャンセラ22に出力する。なおここで、制御手段17は、上記ボリューム値の代わりに上記ユーザボリューム値をエコーキャンセラ22に出力してもよい。
図2に、制御手段17が内蔵するテーブルデータの一例を示す。この例では、モード入力手段16を通じて選択可能なモードがモード0、モード1、モード2の3モードあり、ユーザボリューム入力手段15を通じて選択できるボリューム値が1から5の5段階であるときを示すもので、これらに対応づけたユーザボリューム値をdB単位で格納している。なお、格納されている利得は、dB単位であっても、利得の乗算係数単位であってもよい。
受話ディジタルユーザボリューム1は、制御手段17によって設定されるユーザボリューム値に基づいて、ディジタル処理により受話信号を増幅する。この増幅された受話信号は、エコーキャンセラ22とD/A変換器(D/A)3に出力される。このように、受話ディジタルユーザボリューム1を、後述するエコーキャンセラ22の信号記憶手段2aより前段に設けることで、エコーキャンセラ22にとっては、ユーザボリューム変動によるエコーパス変動を回避できる。このため、ダブルトーク検出が困難になったり適応学習が困難になったりすることを避けることができる。
また、アナログフロントエンド(D/A変換器3、受話アナログゲイン5(5a、5b)または7、スピーカ6(6a、6b)または8、マイクロホン9または11、送話アナログゲイン10または12、A/D変換器14)での非線形歪み等で、信号記憶手段2aに記憶された受話信号と回り込む送話入力信号との相関が少なくなりエコー抑圧性能が劣化することを避けることができる。
D/A変換器3は、上記受話信号をアナログ信号に変換する。このアナログ信号は、受話アナログパス切換手段4を通って、受話アナログゲイン5(5a、5b)または7で増幅された後、スピーカ6(6a、6b)または8より拡声出力される。
このようにして音響空間に出力された信号は、送話音声と音響結合してマイクロホン9または11で集音され、アナログ信号に変換される。このアナログ信号は、送話アナログゲイン10または12で増幅された後、送話アナログパス切換手段13を通じてA/D変換器14に入力され、ディジタル信号に変換される。
エコーキャンセラ22は、上記ディジタル信号からエコー成分を除去するものであって、そのエコー除去後の信号を送話出力信号として、図示しないエンコーダに出力するものであり、受話信号に基づいて係数更新量を算出する適応アルゴリズム、例えばLMSアルゴリズム、学習同定法、NLMSアルゴリズム、アフィン射影アルゴリズムなどで動作するものとする。
以下の説明でエコーキャンセラ22は、モード1とモード2の2つのモードを選択できるものとし、モード1が選択される時は時間領域型のLMSアルゴリズムで動作し、モード2が選択される時は時間領域型の2次のアフィン射影アルゴリズムで動作するものとする。
このように、エコー抑圧量が小さくてもエコー感が気になりにくく利用頻度が高いようなモードでは、計算量の少ない適応アルゴリズムを用い、エコー感が気になるためにエコー抑圧量を大きくしなければならないが利用頻度が少ないようなモードでは、計算量の多い適応アルゴリズムを用いることで、通信機器全体としての計算量の期待値は削減され、携帯電話機のような通信機器では待ち受け時間を長くすることができる。また、ここでは選択されたモードによって適応アルゴリズムが変化する例であるが、ボリューム値やエコーキャンセラの適応状態やその他のエコーキャンセラの状態によって適応アルゴリズムが変化する場合でも、ほぼ同様に動作する。
エコーキャンセラ22は、信号記憶手段(XREG)2a、修正量算出手段(KCAL)2d、乗算手段2e、係数更新量算出手段(CORR)2f、係数更新手段(HCAL)2h、係数記憶手段(HREG)2i、擬似エコー算出手段(CONV)2j、乗算手段2k、エコー除去手段2l、利得記憶手段(GREG)2m、乗算制御部(GCON)2nを備える。
なお、エコーキャンセラ22は、ダブルトークを検出する構成を備えるようにしてもよい。ダブルトークを検出する場合には、ダブルトーク検出手段(DTD)2oや乗算手段2pを備える。以下の説明では、まず、これらの構成を備えない場合について説明し、ダブルトーク検出手段2oや乗算手段2pを備える場合については後述する。
信号記憶手段2aは、受話ディジタルユーザボリューム1より出力される受話信号x(n)を一時的に蓄えて遅延させ、係数更新量算出手段2fおよび擬似エコー算出手段2jに出力する。
修正量算出手段2dは、上記信号記憶手段2aで遅延した受話信号x(n)と、後述するエコー除去手段2lが出力する送話出力信号e(n-1)と、ステップサイズμとに基づき、モード1の場合は下式(1)にしたがい、またはモード2の場合は下式(2)にしたがって修正量k(n)を算出し、これを乗算手段2eに出力する。
乗算手段2eは、上記修正量算出手段2dで求めた修正量k(n)に、後述する乗算制御部2nから出力された利得αの逆数を乗じ、この結果を係数更新量算出手段2fに出力する。このとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。なお、モード1の場合は下式(3)にしたがい、またはモード2の場合は下式(4)にしたがう。
係数更新量算出手段2fは、上記信号記憶手段2aで遅延した受話信号x(n)に上記乗算手段2eの乗算結果を乗算して、係数更新量Δh(n)を算出し、これを係数更新手段2hに出力する。なお、モード1の場合は下式(5)にしたがい、またはモード2の場合は下式(6)にしたがう。
係数更新手段2hは、係数記憶手段2iに格納されているタップ係数h(n-1)と、上記係数更新量算出手段2fが算出した係数更新量Δh(n)とを加算して、更新したタップ係数h(n)を求め、これを上記タップ係数h(n-1)の代わりに係数記憶手段2iに格納(更新)する。
擬似エコー算出手段2jは、上記信号記憶手段2aで遅延した受話信号x(n)と、係数記憶手段2iに格納されているタップ係数h(n)とを畳込み演算して、擬似エコー信号y’(n)を生成し、乗算手段2kに出力する。
利得記憶手段2mは、制御手段17から出力されるボリューム値とモード識別情報に対応する利得のテーブルデータを予め記憶するものである。このテーブルデータに記憶される利得は、エコー経路の利得変動幅に合わせるように動作開始前に外部から予め設定可能である。
図3に、利得記憶手段2mに記憶されるテーブルデータの一例を示す。この例では、前述した制御手段17に対応し、モード入力手段16を通じて選択可能なモードがモード0、モード1、モード2の3モードあり、ユーザボリューム入力手段15を通じて選択できるボリューム値が1から5の5段階であるときを示すもので、これらに対応づけた利得をdB単位で格納している。なお、格納されている利得は、dB単位であっても、利得の乗算係数単位であってもよい。
乗算制御部2nは、利得記憶手段2mが記憶する上記テーブルデータから、制御手段17から出力されるボリューム値とモード識別情報に対応する利得αを選択的に読み込む。そして、乗算制御部2nは、その利得αを乗算手段2kの乗算係数として設定するとともに、その利得αの逆数を乗算手段2eの乗算係数として設定する。
乗算手段2kは、擬似エコー算出手段2jから与えられた擬似エコー信号y’(n)に、乗算制御部2nによって設定された利得αを乗じる。なおこのとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。
エコー除去手段2lは、A/D変換器14より出力された送話入力信号y(n)から上記利得αを乗じた擬似エコー信号を減じることでエコー成分を除去し、エコー成分が除去された信号e(n)を送話出力信号として、図示しないエンコーダおよび修正量算出手段2dに出力する。
このようにしてエコーキャンセラ22から出力された送話出力信号は、図示しないエンコーダによって符号化される。この符号化によって得られたデータは、前述した無線通信部を通じて、送信データとして通信相手に無線送信される。
なお、ここではエコーキャンセラ22の適応アルゴリズムを、モード1が選択される時は時間領域型のLMSアルゴリズムで動作し、モード2が選択される時は時間領域型の2次のアフィン射影アルゴリズムで動作するものとして説明したが、受話信号に基づいて係数更新量を算出するその他の適応アルゴリズムも同様に動作させることも可能である。
次に、エコーキャンセラ22がダブルトーク検出手段2oおよび乗算手段2pを備えて、ダブルトークの検出を行う場合について説明する。なおここでは、ダブルトーク検出手段2oのダブルトーク検出アルゴリズムとして、A/D変換器14の出力と上記信号記憶手段2aで遅延した受話信号を用いる手法を例に挙げて説明する。
乗算手段2pは、上記エコー除去手段2lより出力された送話出力信号e(n)に、乗算制御部2nから乗算手段2eに与えられる利得αの逆数を乗じ、この結果をダブルトーク検出手段2oに出力する。
ダブルトーク検出手段2oは、A/D変換器14の出力、上記信号記憶手段2aで遅延した受話信号および乗算手段2pの出力に基づいて、ダブルトーク状態か否かを判定する。具体的には、A/D変換器14の出力y(n)のパワー特性(パワー値またはピーク値)Py(n)と上記信号記憶手段2aで遅延した受話信号x(n)のパワー特性(パワー値またはピーク値)Px(n)と乗算手段2pの出力のパワー特性(パワー値またはピーク値)Pe(n)とをサンプル単位で算出し、Pe(n)>λ(n)・Px(n)またはPy(n)>δ・Px(n)となる場合にダブルトーク状態と判定する。ここで、λ(n)はエコー経路の利得の推定値であり、タップ係数h(n)を適応学習したサンプル数に基づいて算出し、適応学習が進めば小さくなり、適応学習が間違っていれば大きくなる可変量である。また、δは動作開始前に外部から予め設定可能な固定値である。
なお、上記Pe(n)の代わりに、上記エコー除去手段2lより出力された送話出力信号e(n)のパワー特性(パワー値またはピーク値)に乗算制御部2nから乗算手段2cに与えられる利得αの逆数を乗じ、この結果をダブルトーク検出手段2oに出力する構成としてもよい。
ダブルトーク検出手段2oは、ダブルトーク状態を検出した場合、この旨を修正量算出手段2d、係数更新量算出手段2fおよび係数更新手段2hに通知する。これに対して修正量算出手段2d、係数更新量算出手段2fおよび係数更新手段2hは、上記通知を受けると、それぞれ上述した演算は行わない。これにより、ダブルトーク検出時には、係数記憶手段2iに格納されるタップ係数が、演算(更新)されることなく維持されることになり、計算量が少なくすることができる。
このような構成によれば、エコー経路の利得が、1倍以上になる時(エコー増幅時)と1倍未満になる時(エコー減衰時)とでダブルトーク検出アルゴリズムを大きく変更することなく、ダブルトーク検出精度が同程度のダブルトーク検出手段を実現することができる。
次に、上記構成のエコーキャンセル回路の動作について説明する。図6は、その動作を説明するフローチャートである。この図に示す処理は、実装される通信機器による発呼または通信相手からの着呼に伴って開始される。
まず、step201において制御手段17は、モード入力手段16を通じて予め設定されたモード識別情報を読み込み、続いてstep202において、ユーザボリューム入力手段15を通じて予め設定されたボリューム値を読み込み、step203に移行する。
step203において制御手段17は、step201で読み込んだモード識別情報およびstep202で読み込んだボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定し、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step204に移行する。
これに対してstep204において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。そして、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、上記利得αの逆数を乗算手段2eに乗算係数として設定し、step205に移行する。
そしてstep205において制御手段17は、step201で読み込んだモード識別情報に基づいて受話アナログパス切換手段4および送話アナログパス切換手段13の切り替えを行う。その後、上記通信機器により通信相手と通信リンクが確立し、通信相手と双方向通話が可能な状態となると、step206に移行する。双方向通話が可能な状態においては、エコーキャンセラ22は所望の動作を行う。
step206において制御手段17は、モード入力手段16を通じてモード変更の有無を判定し、step207に移行する。ここで、モード変更有りと判定された場合には、step209に移行し、一方、モード変更無しと判定された場合には、step207に移行する。
step207において制御手段17は、ユーザボリューム入力手段15を通じてボリューム値の変更の有無を判定する。ここで、ボリューム値変更有りと判定された場合には、step213に移行し、一方、ボリューム値変更無しと判定された場合には、step208に移行する。
step209において制御手段17は、モード入力手段16からモード識別情報を読み込むとともに、ユーザボリューム入力手段15からボリューム値を読み込み、そしてこれら読み込んだモード識別情報およびボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定する。そして制御手段17は、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step210に移行する。
step210において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。そして、乗算制御部2nは、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、上記利得αの逆数を乗算手段2eに乗算係数として設定し、step211に移行する。
step211において制御手段17は、step209で読み込んだモード識別情報に基づいて適応アルゴリズムを切り替えを行い、step212に移行する。なお、モード1が選択される時は時間領域型のLMSアルゴリズムで動作し、モード2が選択される時は時間領域型の2次のアフィン射影アルゴリズムで動作するように適応アルゴリズムを変更する。
step212において制御手段17は、step209で読み込んだモード識別情報に基づいて受話アナログパス切換手段4および送話アナログパス切換手段13の切り替えを行い、step208に移行する。
一方、step213において制御手段17は、モード入力手段16からモード識別情報を読み込むとともに、ユーザボリューム入力手段15からボリューム値を読み込み、そしてこれら読み込んだモード識別情報およびボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定する。そして制御手段17は、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step214に移行する。
step214において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。そして、乗算制御部2nは、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、上記利得αの逆数を乗算手段2eに乗算係数として設定し、step208に移行する。
step208において制御手段17は、終話要求が生じたか否かを判定する。ここで、終話要求が生じた場合には、当該処理を終了して、図示しない通信制御手段により通信リンクを切断し、双方向通信を終了する。終話要求が生じない場合には、step206に移行する。
以上のように、上記構成のエコーキャンセル回路では、擬似エコー算出手段2jで求めた擬似エコー信号を、ボリューム値とモードに応じた利得αで増幅し、これを送話出力信号から減じることでエコー成分を除去するとともに、修正量算出手段2dで求めた修正量k(n)に上記利得αの逆数を乗じた積と、上記エコー成分が除去された送話出力信号とに基づいて、上記擬似エコー信号生成に用いるタップ係数の更新を行うようにしている。
すなわち、エコー減衰時に比べてエコー増幅時では上記残留エコー信号が増大することになるが、上記構成のエコーキャンセル回路では、上記乗算手段2eを用いることで、係数更新量算出手段2fにおける演算量が、上記修正量k(n)の次数分の乗算という比較的少ない演算量になり、係数更新量算出手段2fにおける桁落ちを防止できる。
したがって、上記構成のエコーキャンセル回路によれば、エコー減衰時とエコー増幅時で適応アルゴリズムを変更することなく、エコー経路の利得が1倍以上になるとき(エコー増幅時)でも、有限語長演算(固定小数点演算)過程でオーバーフローおよび桁落ちを生じないため所望のエコー抑圧量を得ることができ、受話信号、送話入力信号、残留エコー信号に音声品質劣化が生じることを防ぐことができる。
また、上記構成のエコーキャンセル回路では、受話信号に基づいて係数更新量を算出する適応アルゴリズム、例えばLMS(Least-Mean-Square)アルゴリズム、NLMS(Normalized-Least-Mean-Square)アルゴリズム、学習同定法、アフィン射影(AP:Affine-Projection)アルゴリズム、逐次最小二乗(RLS:Recursive-Least-Squares)アルゴリズムなどを時間領域処理・サブバンド処理・周波数領域処理で用いる場合において、上記エコーキャンセラの状態に応じて他の上記受話信号に基づいて上記係数更新量を算出する適応アルゴリズムを用いる動作に変化するときにでも、構成を変更することなく、上記修正量の次数分の乗算という比較的少ない演算量で、エコー増幅時に対応することができる。
次に、この発明の第3の実施形態に係わるエコーキャンセル回路について説明する。図7は、上記エコーキャンセル回路とその周辺の構成を示すブロック図である。このエコーキャンセル回路は、例えば携帯電話機などの通信機器に実装され、この回路の動作に先立って、上記通信機器により通信リンクが確立し、通信相手と双方向通話が可能な状態となる。
図示しない無線通信部によって受信された受信データは、図示しないデコーダによって、ディジタル信号に復号される。このディジタル信号は、受話信号として受話ディジタルユーザボリューム1に出力される。
ユーザボリューム入力手段15は、利用者が設定する受話信号の音量をキー入力ないしボリュームつまみ操作などで受け付けるものであり、この受け付けた音量の値を示すボリューム値が制御手段(CONT)17によって読み出される。
モード入力手段16は、例えばスルーモード(エコーキャンセル回路の機能オフ)、ハンドセットモード(ハンドセット用スピーカを用いたハンドセット通話)、ハンズフリーモード(ハンズフリー用スピーカを用いたハンズフリー通話)、イヤホンモード(イヤホンを用いた通話)、外部機器接続モード(外部接続されたスピーカを用いた通話)などの少なくとも2つ以上のモードのうち、利用者が希望するモードをキー入力ないしスイッチつまみ操作などで受け付けるものであり、この受け付けたモードを示すモード識別情報が制御手段17によって読み出される。
制御手段17は、ユーザボリューム入力手段15およびモード入力手段16から読み出した情報に基づいて、エコーキャンセラ23を制御すると共に、モード入力手段16から読み出したモード識別情報に基づいて、受話アナログパス切換手段4および送話アナログパス切換手段13の切り替え制御を行う。
この受話アナログパス切換手段4に対する切り替え制御では、2チャネルスピーカ6(6a、6b)およびこの2チャネルスピーカの受話アナログゲイン5(5a、5b)か、あるいはスピーカ8とこのスピーカ8の受話アナログゲイン7のいずれかを選択的に機能させる。
そして送話アナログパス切換手段13に対する切り替え制御では、マイクロホン9およびこのマイクロホン9の送話アナログゲイン10か、あるいはマイクロホン11およびこのマイクロホン11の送話アナログゲイン12のいずれかを選択的に機能させる。
なお、2チャネルスピーカ6、受話アナログゲイン5およびマイクロホン9、送話アナログゲイン10は、外部接続されるカーキットやBluetoothなどの無線通信によって外部接続されるヘッドセットなどの機器に搭載されることを想定してもよい。このような機器を用いる場合には外部機器接続モードが設定され、受話アナログパス切換手段4に任意に着脱できる。これに代わって受話アナログパス切換手段4に、イヤホンマイクを接続することも可能である。この場合、上記イヤホンモードが設定される。
また制御手段17は、ユーザボリューム入力手段15から読み出したボリューム値および上記モード識別情報、内蔵するテーブルデータに基づいて、ユーザボリューム値を決定し、このユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報をエコーキャンセラ23に出力する。なおここで、制御手段17は、上記ボリューム値の代わりに上記ユーザボリューム値をエコーキャンセラ23に出力してもよい。
図2に、制御手段17が内蔵するテーブルデータの一例を示す。この例では、モード入力手段16を通じて選択可能なモードがモード0、モード1、モード2の3モードあり、ユーザボリューム入力手段15を通じて選択できるボリューム値が1から5の5段階であるときを示すもので、これらに対応づけたユーザボリューム値をdB単位で格納している。なお、格納されている利得は、dB単位であっても、利得の乗算係数単位であってもよい。
受話ディジタルユーザボリューム1は、制御手段17によって設定されるユーザボリューム値に基づいて、ディジタル処理により受話信号を増幅する。この増幅された受話信号は、エコーキャンセラ23とD/A変換器(D/A)3に出力される。このように、受話ディジタルユーザボリューム1を、後述するエコーキャンセラ23の信号記憶手段2aより前段に設けることで、エコーキャンセラ23にとっては、ユーザボリューム変動によるエコーパス変動を回避できる。このため、ダブルトーク検出が困難になったり適応学習が困難になったりすることを避けることができる。
また、アナログフロントエンド(D/A変換器3、受話アナログゲイン5(5a、5b)または7、スピーカ6(6a、6b)または8、マイクロホン9または11、送話アナログゲイン10または12、A/D変換器14)での非線形歪み等で、信号記憶手段2aに記憶された受話信号と回り込む送話入力信号との相関が少なくなりエコー抑圧性能が劣化することを避けることができる。
D/A変換器3は、上記受話信号をアナログ信号に変換する。このアナログ信号は、受話アナログパス切換手段4を通って、受話アナログゲイン5(5a、5b)または7で増幅された後、スピーカ6(6a、6b)または8より拡声出力される。
このようにして音響空間に出力された信号は、送話音声と音響結合してマイクロホン9または11で集音され、アナログ信号に変換される。このアナログ信号は、送話アナログゲイン10または12で増幅された後、送話アナログパス切換手段13を通じてA/D変換器14に入力され、ディジタル信号に変換される。
エコーキャンセラ23は、上記ディジタル信号からエコー成分を除去するものであって、そのエコー除去後の信号を送話出力信号として、図示しないエンコーダに出力するものである。以下、エコーキャンセラ23の適応アルゴリズムを、周波数領域型のCircular-Convolution Method アルゴリズム(例えば、J.J.Shynk:”Frequency-Domain and Multirate Adaptive Filtering”,IEEE Signal Processing Magazine, Vol.9,Issue1,pp.14-37,1992/01.)で動作するものとして説明する。
エコーキャンセラ23は、信号記憶手段(XREG)2a、乗算手段2g、係数更新手段(HCAL)2h、係数記憶手段(HREG)2i、擬似エコー算出手段(CONV)2j、乗算手段2k、エコー除去手段2l、利得記憶手段(GREG)2m、乗算制御部(GCON)2n、係数更新量算出手段(DHCAL)2q、周波数領域変換手段(FT)2r、周波数領域変換手段(FT)2s、周波数領域逆変換手段(IFT)2tを備える。但し、信号記憶手段(XREG)2a、乗算手段2g、係数更新手段(HCAL)2h、係数記憶手段(HREG)2i、擬似エコー算出手段(CONV)2j、乗算手段2k、エコー除去手段2l、利得記憶手段(GREG)2m、乗算制御部(GCON)2n、係数更新量算出手段(DHCAL)2qは、事前に設定された周波数帯域分割幅ω毎に処理を行う。
なお、エコーキャンセラ23は、ダブルトークを検出する構成を備えるようにしてもよい。ダブルトークを検出する場合には、ダブルトーク検出手段(DTD)2oや乗算手段2pを備える。以下の説明では、まず、これらの構成を備えない場合について説明し、ダブルトーク検出手段2oや乗算手段2pを備える場合については後述する。
周波数領域変換手段2rは、受話ディジタルユーザボリューム1により出力される時間領域の受話信号x(n)をFFT(Fast Fourier Transform)などによって周波数領域に変換する。このようにして得られた周波数領域の受話信号X(n,ω)は、信号記憶手段2aに出力される。
信号記憶手段2aは、周波数領域変換手段2rによって出力される周波数領域の受話信号X(n,ω)を一時的に蓄えて遅延させ、係数更新量算出手段2qおよび擬似エコー算出手段2jに出力する。
係数更新量算出手段2qは、上記信号記憶手段2aで遅延した受話信号X(n,ω)の共役(conjugate)に、後述するエコー除去手段2lが出力する送話出力信号E(n-1,ω)を乗算して、係数更新量ΔH(n,ω)を算出し、これを乗算手段2gに出力する。
乗算手段2gは、上記係数更新量算出手段2qで求められた係数更新量ΔH(n,ω)に、後述する乗算制御部2nから出力された利得α(ω)の逆数を乗じ、この結果を係数更新量として係数更新手段2hに出力する。このとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。
係数更新手段2hは、係数記憶手段2iに格納されている周波数領域のタップ係数H(n-1,ω)と、上記乗算手段2gから出力される係数更新量とを加算して、更新した周波数領域のタップ係数H(n,ω)を求め、これを上記タップ係数H(n-1,ω)の代わりに係数記憶手段2iに格納(更新)する。
擬似エコー算出手段2jは、上記信号記憶手段2aで遅延した受話信号X(n,ω)と、係数記憶手段2iに格納されているタップ係数H(n,ω)とを畳込み演算して、擬似エコー信号Y’(n,ω)を生成し、乗算手段2kに出力する。
利得記憶手段2mは、制御手段17から出力されるボリューム値とモード識別情報に対応する利得のテーブルデータを予め記憶するものである。このテーブルデータに記憶される利得は、エコー経路の利得の変動幅に合わせるように動作開始前に外部から予め設定可能である。
図3に、利得記憶手段2mに記憶されるテーブルデータの一例を示す。この例では、前述した制御手段17に対応し、モード入力手段16を通じて選択可能なモードがモード0、モード1、モード2の3モードあり、ユーザボリューム入力手段15を通じて選択できるボリューム値が1から5の5段階であるときを示すもので、これらに対応づけた利得をdB単位で格納している。なお、格納されている利得は、dB単位であっても、利得の乗算係数単位であってもよい。
乗算制御部2nは、利得記憶手段2mが記憶する上記テーブルデータから、制御手段17から出力されるボリューム値とモード識別情報に対応する利得α(ω)を選択的に読み込む。そして、乗算制御部2nは、その利得α(ω)を乗算手段2kの乗算係数として設定するとともに、その利得α(ω)の逆数を乗算手段2gの乗算係数として設定する。
乗算手段2kは、擬似エコー算出手段2jから与えられた擬似エコー信号Y’(n,ω)に、乗算制御部2nによって設定された利得α(ω)を乗じる。なおこのとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。
周波数領域変換手段2sは、A/D変換器14より出力された送話入力信号y(n)をFFT(Fast Fourier Transform)などによって周波数領域に変換する。このようにして得られた周波数領域の送話入力信号Y(n,ω)は、エコー除去手段2lに出力される。
エコー除去手段2lは、周波数領域変換手段2sより出力された送話入力信号Y(n,ω)から上記利得α(ω)を乗じた擬似エコー信号を減じることでエコー成分を除去し、エコー成分が除去された信号E(n,ω)を送話出力信号として、図示しないエンコーダおよび係数更新量算出手段2qに出力する。
周波数領域逆変換手段2tは、エコー除去手段2lより出力された送話出力信号E(n,ω)を、IFFT(Inverse Fast Fourier Transform)などによって時間領域に変換し、図示しないエンコーダに出力する。このようにしてエコーキャンセラ23から出力された送話出力信号は、エンコーダによって符号化される。この符号化によって得られたデータは、前述した無線通信部を通じて、送信データとして通信相手に無線送信される。
なお、ここではエコーキャンセラ23の適応アルゴリズムを周波数領域型のCircular-Convolution Method アルゴリズムで動作するものとして説明したが、その他の適応アルゴリズムも同様に動作させることができる。
次に、エコーキャンセラ23がダブルトーク検出手段2oおよび乗算手段2pを備えて、ダブルトークの検出を行う場合について説明する。なおここでは、ダブルトーク検出手段2oのダブルトーク検出アルゴリズムとして、周波数領域変換手段2sの出力と上記信号記憶手段2aで遅延した受話信号を用いる手法を例に挙げて説明する。
乗算手段2pは、上記エコー除去手段2lより出力された送話出力信号E(n,ω)に、乗算制御部2nから与えられる利得α(ω)の逆数を乗じ、この結果をダブルトーク検出手段2oに出力する。
ダブルトーク検出手段2oは、周波数領域変換手段2sの出力、上記信号記憶手段2aで遅延した受話信号および乗算手段2pの出力に基づいて、事前に設定された周波数分割帯域幅ω毎に処理を行い、ダブルトーク状態か否かを判定する。具体的には、周波数領域変換手段2sの出力Y(n,ω)のパワー特性(パワー値またはピーク値)Py(n,ω)と上記信号記憶手段2aで遅延した受話信号X(n,ω)のパワー特性(パワー値またはピーク値)Px(n,ω)と乗算手段2pの出力のパワー特性(パワー値またはピーク値)Pe(n,ω)とを周波数帯域に基づいて算出し、Pe(n,ω)>λ(n,ω)・Px(n,ω)またはPy(n,ω)>δ(ω)・Px(n,ω)となる場合にダブルトーク状態と判定する。ここで、λ(n,ω)はエコー経路の利得の推定値であり、タップ係数H(n,ω)を適応学習したサンプル数に基づいて算出し、適応学習が進めば小さくなり、適応学習が間違っていれば大きくなる可変量である。また、δ(ω)は動作開始前に外部から予め設定可能な固定値である。
なお、上記Pe(n,ω)の代わりに、上記エコー除去手段2lより出力された送話出力信号E(n,ω)のパワー特性(パワー値またはピーク値)に乗算制御部2nから乗算手段2cに与えられる利得α(ω)の逆数を乗じ、この結果をダブルトーク検出手段2oに出力する構成としてもよい。
ダブルトーク検出手段2oは、ダブルトーク状態を検出した場合、この旨を係数更新量算出手段2qおよび係数更新手段2hに通知する。これに対して係数更新量算出手段2qおよび係数更新手段2hは、上記通知を受けると、それぞれ上述した演算は行わない。これにより、ダブルトーク検出時には、係数記憶手段2iに格納されるタップ係数が、演算(更新)されることなく維持されることになり、計算量が少なくすることができる。
このような構成によれば、エコー経路の利得が、1倍以上になる時(エコー増幅時)と1倍未満になる時(エコー減衰時)とでダブルトーク検出アルゴリズムを大きく変更することなく、ダブルトーク検出精度が同程度のダブルトーク検出手段を実現することができる。
次に、上記構成のエコーキャンセル回路の動作について説明する。図8は、その動作を説明するフローチャートである。この図に示す処理は、実装される通信機器による発呼または通信相手からの着呼に伴って開始される。
まず、step301において制御手段17は、モード入力手段16を通じて予め設定されたモード識別情報を読み込み、続いてstep302において、ユーザボリューム入力手段15を通じて予め設定されたボリューム値を読み込み、step303に移行する。
step303において制御手段17は、step301で読み込んだモード識別情報およびstep302で読み込んだボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定し、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step304に移行する。
これに対してstep304において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得α(ω)を上記テーブルデータから読み出す。そして、この読み出した利得α(ω)を乗算手段2kに乗算係数として設定するとともに、上記利得α(ω)の逆数を乗算手段2gに乗算係数として設定し、step305に移行する。
そしてstep305において制御手段17は、step301で読み込んだモード識別情報に基づいて受話アナログパス切換手段4および送話アナログパス切換手段13の切り替えを行う。その後、上記通信機器により通信相手と通信リンクが確立し、通信相手と双方向通話が可能な状態となると、step306に移行する。双方向通話が可能な状態においては、エコーキャンセラ23は所望の動作を行う。
step306において制御手段17は、モード入力手段16を通じてモード変更の有無を判定し、step307に移行する。ここで、モード変更有りと判定された場合には、step309に移行し、一方、モード変更無しと判定された場合には、step307に移行する。
step307において制御手段17は、ユーザボリューム入力手段15を通じてボリューム値の変更の有無を判定する。ここで、ボリューム値変更有りと判定された場合には、step312に移行し、一方、ボリューム値変更無しと判定された場合には、step308に移行する。
step309において制御手段17は、モード入力手段16からモード識別情報を読み込むとともに、ユーザボリューム入力手段15からボリューム値を読み込み、そしてこれら読み込んだモード識別情報およびボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定する。そして制御手段17は、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step310に移行する。
step310において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得α(ω)を上記テーブルデータから読み出す。そして、乗算制御部2nは、この読み出した利得α(ω)を乗算手段2kに乗算係数として設定するとともに、上記利得α(ω)の逆数を乗算手段2gに乗算係数として設定し、step311に移行する。
step311において制御手段17は、step309で読み込んだモード識別情報に基づいて受話アナログパス切換手段4および送話アナログパス切換手段13の切り替えを行い、step308に移行する。
一方、step312において制御手段17は、モード入力手段16からモード識別情報を読み込むとともに、ユーザボリューム入力手段15からボリューム値を読み込み、そしてこれら読み込んだモード識別情報およびボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定する。そして制御手段17は、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step313に移行する。
step313において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得α(ω)を上記テーブルデータから読み出す。そして、乗算制御部2nは、この読み出した利得α(ω)を乗算手段2kに乗算係数として設定するとともに、上記利得α(ω)の逆数を乗算手段2gに乗算係数として設定し、step308に移行する。
step308において制御手段17は、終話要求が生じたか否かを判定する。ここで、終話要求が生じた場合には、当該処理を終了して、図示しない通信制御手段により通信リンクを切断し、双方向通信を終了する。終話要求が生じない場合には、step306に移行する。
以上のように、上記構成のエコーキャンセル回路では、擬似エコー算出手段2jで求めた擬似エコー信号を、ボリューム値とモードに応じた利得α(ω)で増幅し、これを送話出力信号から減じることでエコー成分を除去するとともに、係数更新量算出手段2qで求めた係数更新量ΔH(n,ω)に上記利得α(ω)の逆数を乗じた積に基づいて、上記擬似エコー信号生成に用いるタップ係数の更新を行うようにしている。
すなわち、エコー減衰時に比べてエコー増幅時では上記残留エコー信号が増大することになるが、上記構成のエコーキャンセル回路では、上記乗算手段2gを用いることで、係数更新手段2hにおける演算量が、上記係数更新量ΔH(n,ω)の次数分の乗算という比較的少ない演算量になり、係数更新手段2hにおける桁落ちを防止できる。
したがって、上記構成のエコーキャンセル回路によれば、エコー減衰時とエコー増幅時で適応アルゴリズムを変更することなく、エコー経路の利得が1倍以上になるとき(エコー増幅時)でも、有限語長演算(固定小数点演算)過程でオーバーフローおよび桁落ちを生じないため所望のエコー抑圧量を得ることができ、受話信号、送話入力信号、残留エコー信号に音声品質劣化が生じることを防ぐことができる。
また、上記構成のエコーキャンセル回路では、受話信号に基づいて係数更新量を算出する適応アルゴリズム、例えばLMS(Least-Mean-Square)アルゴリズム、NLMS(Normalized-Least-Mean-Square)アルゴリズム、学習同定法、アフィン射影(AP:Affine-Projection)アルゴリズム、逐次最小二乗(RLS:Recursive-Least-Squares)アルゴリズムなどを時間領域処理・サブバンド処理・周波数領域処理で用いる場合において、上記エコーキャンセラの状態に応じて他の上記受話信号に基づいて上記係数更新量を算出する適応アルゴリズムを用いる動作に変化するときにでも、構成を変更することなく、エコー増幅時に対応することができる。
例えば、係数更新量算出手段2qに代わって、周波数分割帯域ω毎に周波数領域で処理を行う、図1に示したノルム算出手段2b、乗算手段2c、修正量算出手段2dおよび係数更新量算出手段2fを備えるようにしてもよい。また、係数更新量算出手段2qに代わって、周波数分割帯域ω毎に周波数領域で処理を行う、図3に示した修正量算出手段2d、乗算手段2eおよび係数更新量算出手段2fを備えるようにしてもよい。
さらに、周波数領域変換手段2r、周波数領域変換手段2sおよび周波数領域逆変換手段2tを省き、係数更新量算出手段2qに代わって、図1に示したノルム算出手段2b、乗算手段2c、修正量算出手段2dおよび係数更新量算出手段2fを備えるようにしてもよい。さらにまた、周波数領域変換手段2r、周波数領域変換手段2sおよび周波数領域逆変換手段2tを省き、係数更新量算出手段2qに代わって、図3に示した修正量算出手段2d、乗算手段2eおよび係数更新量算出手段2fを備えるようにしてもよい。
次に、この発明の第4の実施形態に係わるエコーキャンセル回路について説明する。図9は、上記エコーキャンセル回路とその周辺の構成を示すブロック図である。このエコーキャンセル回路は、例えば携帯電話機などの通信機器に実装され、この回路の動作に先立って、上記通信機器により通信リンクが確立し、通信相手と双方向通話が可能な状態となる。
図示しない無線通信部によって受信された受信データは、図示しないデコーダによって、ディジタル信号に復号される。このディジタル信号は、受話信号として受話ディジタルユーザボリューム1に出力される。
ユーザボリューム入力手段15は、利用者が設定する受話信号の音量をキー入力ないしボリュームつまみ操作などで受け付けるものであり、この受け付けた音量の値を示すボリューム値が制御手段(CONT)17によって読み出される。
モード入力手段16は、例えばスルーモード(エコーキャンセル回路の機能オフ)、ハンドセットモード(ハンドセット用スピーカを用いたハンドセット通話)、ハンズフリーモード(ハンズフリー用スピーカを用いたハンズフリー通話)、イヤホンモード(イヤホンを用いた通話)、外部機器接続モード(外部接続されたスピーカを用いた通話)などの少なくとも2つ以上のモードのうち、利用者が希望するモードをキー入力ないしスイッチつまみ操作などで受け付けるものであり、この受け付けたモードを示すモード識別情報が制御手段17によって読み出される。
制御手段17は、ユーザボリューム入力手段15およびモード入力手段16から読み出した情報に基づいて、エコーキャンセラ24を制御すると共に、モード入力手段16から読み出したモード識別情報に基づいて、受話アナログパス切換手段4および送話アナログパス切換手段13の切り替え制御を行う。
この受話アナログパス切換手段4に対する切り替え制御では、2チャネルスピーカ6(6a、6b)およびこの2チャネルスピーカの受話アナログゲイン5(5a、5b)か、あるいはスピーカ8とこのスピーカ8の受話アナログゲイン7のいずれかを選択的に機能させる。
そして送話アナログパス切換手段13に対する切り替え制御では、マイクロホン9およびこのマイクロホン9の送話アナログゲイン10か、あるいはマイクロホン11およびこのマイクロホン11の送話アナログゲイン12のいずれかを選択的に機能させる。
なお、2チャネルスピーカ6、受話アナログゲイン5およびマイクロホン9、送話アナログゲイン10は、外部接続されるカーキットやBluetoothなどの無線通信によって外部接続されるヘッドセットなどの機器に搭載されることを想定してもよい。このような機器を用いる場合には外部機器接続モードが設定され、受話アナログパス切換手段4に任意に着脱できる。これに代わって受話アナログパス切換手段4に、イヤホンマイクを接続することも可能である。この場合、上記イヤホンモードが設定される。
また制御手段17は、ユーザボリューム入力手段15から読み出したボリューム値および上記モード識別情報、内蔵するテーブルデータに基づいて、ユーザボリューム値を決定し、このユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報をエコーキャンセラ24に出力する。なおここで、制御手段17は、上記ボリューム値の代わりに上記ユーザボリューム値をエコーキャンセラ24に出力してもよい。
図2に、制御手段17が内蔵するテーブルデータの一例を示す。この例では、モード入力手段16を通じて選択可能なモードがモード0、モード1、モード2の3モードあり、ユーザボリューム入力手段15を通じて選択できるボリューム値が1から5の5段階であるときを示すもので、これらに対応づけたユーザボリューム値をdB単位で格納している。なお、格納されている利得は、dB単位であっても、利得の乗算係数単位であってもよい。
受話ディジタルユーザボリューム1は、制御手段17によって設定されるユーザボリューム値に基づいて、ディジタル処理により受話信号を増幅する。この増幅された受話信号は、エコーキャンセラ24とD/A変換器(D/A)3に出力される。このように、受話ディジタルユーザボリューム1を、後述するエコーキャンセラ24の信号記憶手段2aより前段に設けることで、エコーキャンセラ24にとっては、ユーザボリューム変動によるエコーパス変動を回避できる。このため、ダブルトーク検出が困難になったり適応学習が困難になったりすることを避けることができる。
また、アナログフロントエンド(D/A変換器3、受話アナログゲイン5(5a、5b)または7、スピーカ6(6a、6b)または8、マイクロホン9または11、送話アナログゲイン10または12、A/D変換器14)での非線形歪み等で、信号記憶手段2aに記憶された受話信号と回り込む送話入力信号との相関が少なくなりエコー抑圧性能が劣化することを避けることができる。
D/A変換器3は、上記受話信号をアナログ信号に変換する。このアナログ信号は、受話アナログパス切換手段4を通って、受話アナログゲイン5(5a、5b)または7で増幅された後、スピーカ6(6a、6b)または8より拡声出力される。
このようにして音響空間に出力された信号は、送話音声と音響結合してマイクロホン9または11で集音され、アナログ信号に変換される。このアナログ信号は、送話アナログゲイン10または12で増幅された後、送話アナログパス切換手段13を通じてA/D変換器14に入力され、ディジタル信号に変換される。
エコーキャンセラ24は、上記ディジタル信号からエコー成分を除去するものであって、そのエコー除去後の信号を送話出力信号として、図示しないエンコーダに出力するものであり、受話信号のノルムを用いる適応アルゴリズム、例えば学習同定法やNLMSアルゴリズムなどで動作するものとする。以下、エコーキャンセラ24の適応アルゴリズムを時間領域型の学習同定法で動作するものとして説明する。
エコーキャンセラ24は、信号記憶手段(XREG)2a、ノルム算出手段(NORMX)2b、乗算手段2c、修正量算出手段(KCAL)2d、乗算手段2e、係数更新量算出手段(CORR)2f、乗算手段2g、係数更新手段(HCAL)2h、係数記憶手段(HREG)2i、擬似エコー算出手段(CONV)2j、乗算手段2k、エコー除去手段2l、利得記憶手段(GREG)2m、乗算制御部(GCON)2nを備える。
なお、エコーキャンセラ24は、ダブルトークを検出する構成を備えるようにしてもよい。ダブルトークを検出する場合には、ダブルトーク検出手段(DTD)2oや乗算手段2pを備える。以下の説明では、まず、これらの構成を備えない場合について説明し、ダブルトーク検出手段2oや乗算手段2pを備える場合については後述する。
信号記憶手段2aは、受話ディジタルユーザボリューム1より出力される受話信号x(n)を一時的に蓄えて遅延させ、ノルム算出手段2b、係数更新量算出手段2fおよび擬似エコー算出手段2jに出力する。
ノルム算出手段2bは、上記信号記憶手段2aで遅延した受話信号x(n)の各データの二乗和であるノルムの二乗norm(n)を算出し、この算出結果の逆数を乗算手段2cに出力する。
乗算手段2cは、上記ノルム算出手段2bで求めたノルムの二乗norm(n)の逆数に、後述する乗算制御部2nから出力された利得βの逆数を乗じ、この結果を修正量算出手段2dに出力する。このとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。
修正量算出手段2dは、上記乗算手段2cの乗算結果に、後述するエコー除去手段2lが出力する送話出力信号e(n-1)とステップサイズμを乗算して修正量k(n)を算出し、これを乗算手段2eに出力する。
乗算手段2eは、上記修正量算出手段2dで求められた修正量k(n)に、後述する乗算制御部2nから出力された利得γの逆数を乗じ、この結果を係数更新量算出手段2fに出力する。このとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。
係数更新量算出手段2fは、上記信号記憶手段2aで遅延した受話信号x(n)に、上記乗算手段2eから出力される修正量を乗算して、係数更新量Δh(n)を算出し、これを乗算手段2gに出力する。
乗算手段2gは、上記係数更新量算出手段2fで求められた係数更新量Δh(n)に、後述する乗算制御部2nから出力された利得εの逆数を乗じ、この結果を係数更新量として係数更新手段2hに出力する。このとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。
係数更新手段2hは、係数記憶手段2iに格納されているタップ係数h(n-1)と、上記乗算手段2gから出力される係数更新量とを加算して、更新したタップ係数h(n)を求め、これを上記タップ係数h(n-1)の代わりに係数記憶手段2iに格納(更新)する。
擬似エコー算出手段2jは、上記信号記憶手段2aで遅延した受話信号x(n)と、係数記憶手段2iに格納されているタップ係数h(n)とを畳込み演算して、擬似エコー信号y’(n)を生成し、乗算手段2kに出力する。
利得記憶手段2mは、制御手段17から出力されるボリューム値とモード識別情報に対応する利得のテーブルデータを予め記憶するものである。このテーブルデータに記憶される利得は、エコー経路の利得の変動幅に合わせるように動作開始前に外部から予め設定可能である。
図3に、利得記憶手段2mに記憶されるテーブルデータの一例を示す。この例では、前述した制御手段17に対応し、モード入力手段16を通じて選択可能なモードがモード0、モード1、モード2の3モードあり、ユーザボリューム入力手段15を通じて選択できるボリューム値が1から5の5段階であるときを示すもので、これらに対応づけた利得をdB単位で格納している。なお、格納されている利得は、dB単位であっても、利得の乗算係数単位であってもよい。
乗算制御部2nは、利得記憶手段2mが記憶する上記テーブルデータから、制御手段17から出力されるボリューム値とモード識別情報に対応する利得αを選択的に読み込む。そして、乗算制御部2nは、その利得αを乗算手段2kの乗算係数として設定するとともに、その利得αに基づいて決定される利得β、γ、εをそれぞれ上述したように乗算手段2c、2e、2gの乗算係数として設定する。
利得αは、利得β、γ、εと下式の関係にある。そして、利得βは、乗算手段2cの出力が桁落ちまたはアンダーフローしないだけの値となるように設定され、そして、これに応じて、利得γは、乗算手段2eの出力が桁落ちまたはアンダーフローしないだけの値となるように設定され、そして利得εは、上記利得β、γの設定に応じて設定される。
乗算手段2kは、擬似エコー算出手段2jから与えられた擬似エコー信号y’(n)に、乗算制御部2nによって設定された利得αを乗じる。なおこのとき、上記利得が6dBの倍数であったときは、上述した乗算にビットシフト演算を用いることも可能である。
エコー除去手段2lは、A/D変換器14より出力された送話入力信号y(n)から上記利得αを乗じた擬似エコー信号を減じることでエコー成分を除去し、エコー成分が除去された信号e(n)を送話出力信号として、図示しないエンコーダおよび修正量算出手段2dに出力する。
このようにしてエコーキャンセラ24から出力された送話出力信号は、図示しないエンコーダによって符号化される。この符号化によって得られたデータは、前述した無線通信部を通じて、送信データとして通信相手に無線送信される。
なお、ここではエコーキャンセラ24の適応アルゴリズムを時間領域型の学習同定法で動作するものとして説明したが、受話信号のノルムを用いるその他の適応アルゴリズムも同様に動作させることができる。
次に、エコーキャンセラ24がダブルトーク検出手段2oおよび乗算手段2pを備えて、ダブルトークの検出を行う場合について説明する。なおここでは、ダブルトーク検出手段2oのダブルトーク検出アルゴリズムとして、A/D変換器14の出力と上記信号記憶手段2aで遅延した受話信号を用いる手法を例に挙げて説明する。
乗算手段2pは、上記エコー除去手段2lより出力された送話出力信号e(n)に、乗算制御部2nから与えられる利得αの逆数を乗じ、この結果をダブルトーク検出手段2oに出力する。
ダブルトーク検出手段2oは、A/D変換器14の出力、上記信号記憶手段2aで遅延した受話信号および乗算手段2pの出力に基づいて、ダブルトーク状態か否かを判定する。具体的には、A/D変換器14の出力y(n)のパワー特性(パワー値またはピーク値)Py(n)と上記信号記憶手段2aで遅延した受話信号x(n)のパワー特性(パワー値またはピーク値)Px(n)と乗算手段2pの出力のパワー特性(パワー値またはピーク値)Pe(n)とをサンプル単位で算出し、Pe(n)>λ(n)・Px(n)またはPy(n)>δ・Px(n)となる場合にダブルトーク状態と判定する。ここで、λ(n)はエコー経路の利得の推定値であり、タップ係数h(n)を適応学習したサンプル数に基づいて算出し、適応学習が進めば小さくなり、適応学習が間違っていれば大きくなる可変量である。また、δは動作開始前に外部から予め設定可能な固定値である。
なお、上記Pe(n)の代わりに、上記エコー除去手段2lより出力された送話出力信号e(n)のパワー特性(パワー値またはピーク値)に乗算制御部2nから乗算手段2cに与えられる利得αの逆数を乗じ、この結果をダブルトーク検出手段2oに出力する構成としてもよい。
ダブルトーク検出手段2oは、ダブルトーク状態を検出した場合、この旨を修正量算出手段2d、係数更新量算出手段2fおよび係数更新手段2hに通知する。これに対して修正量算出手段2d、係数更新量算出手段2fおよび係数更新手段2hは、上記通知を受けると、それぞれ上述した演算は行わない。これにより、ダブルトーク検出時には、係数記憶手段2iに格納されるタップ係数が、演算(更新)されることなく維持されることになり、計算量が少なくすることができる。
このような構成によれば、エコー経路の利得が、1倍以上になる時(エコー増幅時)と1倍未満になる時(エコー減衰時)とでダブルトーク検出アルゴリズムを大きく変更することなく、ダブルトーク検出精度が同程度のダブルトーク検出手段を実現することができる。
次に、上記構成のエコーキャンセル回路の動作について説明する。図10は、その動作を説明するフローチャートである。この図に示す処理は、実装される通信機器による発呼または通信相手からの着呼に伴って開始される。
まず、step401において制御手段17は、モード入力手段16を通じて予め設定されたモード識別情報を読み込み、続いてstep402において、ユーザボリューム入力手段15を通じて予め設定されたボリューム値を読み込み、step403に移行する。
step403において制御手段17は、step401で読み込んだモード識別情報およびstep402で読み込んだボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定し、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step404に移行する。
これに対してstep404において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。
そして、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、上記利得αに基づいて決定した利得β、γ、εをそれぞれ乗算手段2c、2e、2gの乗算係数として設定し、step405に移行する。
ここで、step404にてなされる乗算制御部2nに利得決定動作について説明する。図11は、上記動作を説明するためのフローチャートである。
step501において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。そして、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、利得αの逆数を算出し、step502に移行する。
step502において乗算制御部2nは、step501で読み込んだ利得αの逆数が、予め設定された第1閾値よりも大きいか否かを判定する。なお、上記第1閾値は、乗算手段2cが乗算係数として用いた場合に、その出力が桁落ちまたはアンダーフローをしないような値となっている。ここで、利得αの逆数が、上記第1閾値よりも大きい場合には、step509に移行し、一方、大きくない場合には、step503に移行する。
step509において乗算制御部2nは、乗算手段2cで用いる乗算係数βの値を、乗算手段2kで用いる乗算係数αの値に設定し、step510に移行する。
step510において乗算制御部2nは、乗算手段2eで用いる乗算係数γの値を「1」、すなわち0dBに設定し、step511に移行する。
step511において乗算制御部2nは、乗算手段2gで用いる乗算係数εの値を「1」、すなわち0dBに設定し、当該処理を終了する。
一方、step503において乗算制御部2nは、乗算手段2cで用いる乗算係数βの値を、上記第1閾値の値に設定する。また乗算制御部2nは、乗算手段2kで用いる乗算係数αを上記第1閾値で除算(dB単位では減算)し、step504に移行する。
step504において乗算制御部2nは、step503の除算結果が、予め設定された第2閾値よりも大きいか否かを判定する。なお、上記第2閾値は、乗算手段2eが乗算係数として用いた場合に、その出力が桁落ちまたはアンダーフローをしないような値となっている。ここで、上記除算結果が、上記第2閾値よりも大きい場合には、step507に移行し、一方、大きくない場合には、step505に移行する。
step507において乗算制御部2nは、乗算手段2eで用いる乗算係数γの値を上記除算結果の値に設定し、step508に移行する。
step508において乗算制御部2nは、乗算手段2gで用いる乗算係数εの値を「1」、すなわち0dBに設定し、当該処理を終了する。
一方、step505において乗算制御部2nは、乗算手段2eで用いる乗算係数γの値を、上記第2閾値の値に設定する。また乗算制御部2nは、step503で求めた除算結果の値を上記第2閾値で除算(dB単位では減算)し、step506に移行する。 step506において乗算制御部2nは、乗算手段2gで用いる乗算係数εの値を、step505で求めた除算結果の値に設定し、当該処理を終了する。
ここで例えば、利得記憶手段が図3に示したテーブルデータを記憶し、モードが「2」、ユーザボリューム値が「5」であったとき、乗算制御部2nは、乗算手段2kに15dBを設定し、その逆数−15dBを分配して、乗算手段2c、乗算手段2eおよび乗算手段2gに設定する。
ここで仮に、乗算手段2cの乗算係数を−12dBより大きくすると桁落ちまたはアンダーフローを生じ、乗算手段2eの乗算係数を−3dBより大きくすると桁落ちまたはアンダーフローを生じるとき、すなわち第1閾値が−12dBで、第2閾値が−3dBの時は、乗算手段2cの乗算係数を−12dBとし、乗算手段2eの乗算係数を−3dBとし、乗算手段2gの乗算係数を0dBとする。
但しここで、第1閾値および第2閾値をそれぞれ6dBの倍数にしておくことで、各乗算手段2c、2e、2gでの乗算がビットシフト演算で代用できるので演算量を少なくすることができる。
ここで再び図10を参照して、step405以降の動作について説明する。
step405において制御手段17は、step401で読み込んだモード識別情報に基づいて受話アナログパス切換手段4および送話アナログパス切換手段13の切り替えを行う。その後、上記通信機器により通信相手と通信リンクが確立し、通信相手と双方向通話が可能な状態となると、step406に移行する。双方向通話が可能な状態においては、エコーキャンセラ24は所望の動作を行う。
step406において制御手段17は、モード入力手段16を通じてモード変更の有無を判定し、step407に移行する。ここで、モード変更有りと判定された場合には、step409に移行し、一方、モード変更無しと判定された場合には、step407に移行する。
step407において制御手段17は、ユーザボリューム入力手段15を通じてボリューム値の変更の有無を判定する。ここで、ボリューム値変更有りと判定された場合には、step412に移行し、一方、ボリューム値変更無しと判定された場合には、step408に移行する。
step409において制御手段17は、モード入力手段16からモード識別情報を読み込むとともに、ユーザボリューム入力手段15からボリューム値を読み込み、そしてこれら読み込んだモード識別情報およびボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定する。そして制御手段17は、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step410に移行する。
step410において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。
そして、乗算制御部2nは、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、上記利得αに基づいて決定した利得β、γ、εをそれぞれ乗算手段2c、2e、2gの乗算係数として設定し、step411に移行する。なお、ここでの処理(上記乗算係数の決定アルゴリズム)は、図11に示したstep404の処理と同様であるため、詳細な説明は省略する。
step411において制御手段17は、step409で読み込んだモード識別情報に基づいて受話アナログパス切換手段4および送話アナログパス切換手段13の切り替えを行い、step408に移行する。
一方、step412において制御手段17は、モード入力手段16からモード識別情報を読み込むとともに、ユーザボリューム入力手段15からボリューム値を読み込み、そしてこれら読み込んだモード識別情報およびボリューム値、図2に示したテーブルデータに基づいて、ユーザボリューム値を決定する。そして制御手段17は、この決定したユーザボリューム値を受話ディジタルユーザボリューム1に設定するとともに、上記ボリューム値および上記モード識別情報を乗算制御部2nに出力し、step413に移行する。
step413において乗算制御部2nは、制御手段17から出力されたボリューム値およびモード識別情報と、利得記憶手段2mが記憶するテーブルデータとに基づいて、上記ボリューム値およびモード識別情報に対応する利得αを上記テーブルデータから読み出す。
そして、乗算制御部2nは、この読み出した利得αを乗算手段2kに乗算係数として設定するとともに、上記利得αに基づいて決定した利得β、γ、εをそれぞれ乗算手段2c、2e、2gの乗算係数として設定し、step411に移行する。なお、ここでの処理(上記乗算係数の決定アルゴリズム)は、図11に示したstep404の処理と同様であるため、詳細な説明は省略する。
step408において制御手段17は、終話要求が生じたか否かを判定する。ここで、終話要求が生じた場合には、当該処理を終了して、図示しない通信制御手段により通信リンクを切断し、双方向通信を終了する。終話要求が生じない場合には、step406に移行する。
以上のように、上記構成のエコーキャンセル回路では、擬似エコー算出手段2jで求めた擬似エコー信号を、ボリューム値とモードに応じた利得αで増幅し、これを送話出力信号から減じることでエコー成分を除去するとともに、ノルム算出手段2bで求めたノルムの二乗と上記利得αの積の逆数と、上記エコー成分が除去された送話出力信号とに基づいて、上記擬似エコー信号生成に用いるタップ係数の更新を行うようにしている。
以上のように、上記構成のエコーキャンセル回路では、擬似エコー算出手段2jで求めた擬似エコー信号を、ボリューム値とモードに応じた利得αで増幅し、これを送話出力信号から減じることでエコー成分を除去するとともに、ノルム算出手段2bで求めたノルムの二乗に基づいて上記擬似エコー信号生成に用いるタップ係数を更新する過程において、上記利得αの逆数が乗算係数として配分された乗算手段2c、2e、2gを用いるようにしている。
すなわち、エコー減衰時に比べてエコー増幅時では上記残留エコー信号が増大することになるが、上記構成のエコーキャンセル回路では、上記乗算手段2cを用いることで、修正量算出手段2dにおける演算量が、上記ノルムの二乗の次数分の乗算という比較的少ない演算量になり、修正量算出手段2dにおける桁落ちを防止できる。
同様に、上記乗算手段2e、2gを用いることで、係数更新量算出手段2fおよび係数更新手段2hにおける演算量を、比較的少ない演算量にすることができ、係数更新量算出手段2fおよび係数更新手段2hにおける桁落ちを防止できる。
したがって、上記構成のエコーキャンセル回路によれば、エコー減衰時とエコー増幅時で適応アルゴリズムを変更することなく、エコー経路の利得が1倍以上になるとき(エコー増幅時)でも、有限語長演算(固定小数点演算)過程でオーバーフローおよび桁落ちを生じないため所望のエコー抑圧量を得ることができ、受話信号、送話入力信号、残留エコー信号に音声品質劣化が生じることを防ぐことができる。
また、上記構成のエコーキャンセル回路では、受話信号に基づいて係数更新量を算出する適応アルゴリズム、例えばLMS(Least-Mean-Square)アルゴリズム、NLMS(Normalized-Least-Mean-Square)アルゴリズム、学習同定法、アフィン射影(AP:Affine-Projection)アルゴリズム、逐次最小二乗(RLS:Recursive-Least-Squares)アルゴリズムなどを時間領域処理・サブバンド処理・周波数領域処理で用いる場合において、上記エコーキャンセラの状態に応じて他の上記受話信号に基づいて上記係数更新量を算出する適応アルゴリズムを用いる動作に変化するときにでも、構成を変更することなく、エコー増幅時に対応することができる。
なお、この発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また上記実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
1…受話ディジタルユーザボリューム、2a…信号記憶手段、2b…ノルム算出手段、2c…乗算手段、2d…修正量算出手段、2e…乗算手段、2f…係数更新量算出手段、2g…乗算手段、2h…係数更新手段、2i…係数記憶手段、2j…擬似エコー算出手段、2k…乗算手段、2l…エコー除去手段、2m…利得記憶手段、2n…乗算制御部、2o…ダブルトーク検出手段、2p…乗算手段、2q…係数更新量算出手段、2r…周波数領域変換手段、2s…周波数領域変換手段、2t…周波数領域逆変換手段、3…D/A変換器、4…受話アナログパス切換手段、5a,5b…受話アナログゲイン、6a,6b…スピーカ、7…受話アナログゲイン、8…スピーカ、9…マイクロホン、10…送話アナログゲイン、11…マイクロホン、12…送話アナログゲイン、13…送話アナログパス切換手段、14…A/D変換器、15…ユーザボリューム入力手段、16…モード入力手段、17…制御手段、21,22,23,24…エコーキャンセラ。