(57)【特許請求の範囲】
【請求項１】
マルチタスクオペレーティングシステムによって管理されるコンピュータ端末の拡声器とマイクロフォンとの間のエコーの除去のための、音声取得及び再生の要求を満たすリアルタイム処理及び管理方法であって、
エコーが、拡声器信号を送出する拡声器と、マイクロフォン信号を受信するマイクロフォンとの間の寄生的な物理結合によって引き起こされ、そして、マイクロフォン信号から、遅延され、フィルタがかけられた拡声器信号の一部によって形成された補正信号を引き算することによって補正される方法において、
拡声器信号、マイクロフォン信号のうちの一方を基準信号として選択し、
拡声器信号、マイクロフォン信号のうちの他方を、前記基準信号に同期させ、
音声取得タスクを音声再生タスクと同期させ、
存在する遅延の測定値を得るために、前記他方の信号と基準信号との間に存在する遅延を定期的に測定し、
現在の遅延値を得るために、存在する遅延の測定値を採用し、かつ、この現在の遅延に基づいて、前記基準信号に与える遅延を制御し、これにより、前記エコー信号を除去することを可能にする
ことを特徴とする方法。
【請求項２】
マイクロフォン信号、拡声器信号のうちの一方を基準信号として確立するステップは、コンピュータシステムのサンプリングの最高周波数での、各々の拡声器信号のサンプルに対応するマイクロフォン信号のサンプルの、各々の伝送に対応して受信を行う補助のサブステップを含み、
そして、デシメーションによって、このサンプリング周波数を、その名目上の値に復元し、それによって、名目上のサンプリング周波数での動作中に、拡声器信号と、マイクロフォン信号との間に存在する可能性があるドリフトを除去することを可能にする
ことを特徴とする請求項１に記載の方法。
【請求項３】
複数の音声取得及び再生タスクを同期させるステップでは、タスク同期化時間基準に基づいて、２つのタスクを同期させる
ことを特徴とする請求項１または２に記載の方法。
【請求項４】
複数の音声取得及び再生タスクを同期させるステップでは、オペレーティングシステムに基づいて、一般の音声取得、再生タスクを生成する
ことを特徴とする請求項１または２に記載の方法。
【請求項５】
前記他方の信号と基準信号との間に存在する遅延を測定するステップは、校正された初期遅延を定義するために、初期化時に存在する遅延を測定し、そして、前記コンピュータ端末のオペレーティングシステムによって始動される動作を考慮して、連続して、この存在する遅延を測定し、エコー除去のための分析ウィンドウを位置決めする
ことを特徴とする請求項１から４のうちのいずれか１つに記載の方法。
【請求項６】
この存在する遅延の連続した測定は、非侵入的な測定処理に基づいて実行される
ことを特徴とする請求項５に記載の方法。
【請求項７】
現在の遅延値 (rcn+1) を得るために、存在する遅延の測定値 (rej) を採用するステップでは、
少なくとも、現在の遅延の以前の値 ( rcn ) に続く、連続して存在する遅延( rej )( rej+1 )のうちの１つと、この現在の遅延の以前の値 ( rcn ) との間の遅延における相違を検出し、
この相違する遅延を、指定された時間と比較し、
もし、遅延におけるこの相違が、この指定された時間より大きければ、現在の遅延値 ( rcn+1 ) として、連続して存在する遅延のうちの少なくとも１つを採用し、
そうでなければ、現在の遅延値 ( rcn+1 ) として、現在の遅延の以前の値 ( rcn ) を採用する
ことを特徴とする請求項６に記載の方法。
【請求項８】
指定された時間は、現在の遅延の関数として、最大値と最小値との間で調整される
ことを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ端末における拡声器とマイクロフォンとの間のエコーの除去のためのリアルタイム処理及び管理方法に関する。
【０００２】
【従来の技術】
音響エコーは、コンピュータ端末における拡声器とマイクロフォンとの間の寄生的な結合によって、マイクロフォン信号内に存在する。端末とは、例えば、パーソナルコンピュータ、PC、ワークステーション、またはその他の機器のことである。前記音響エコーは、ユーザ間の音声通信のためのソフトウェアにおける独持のハンドフリー操作に対する重大な障害である。この音響エコーは、拡声器から送出され、寄生的な結合のために、マイクロフォンが、少なくともその一部を拾うことによる信号に起因する。
【０００３】
エコー除去アルゴリズムは、そのような使用状況に合わせて調整され、テレビ会議の端末間のハンドフリー通信は、この方式の通信につきものである遅延にもかかわらず、否定し難い魅力を提示する。
【０００４】
この目的に関して、現在提案されている解決方法は、主に、端末もしくはホストマシンの外部のシステムから成り、「アドオンオーディオ」と呼ばれる。
【０００５】
そのようなシステムを実装することは、それでもなお、通信機器の普及を抑制する要因になっている。その理由は、第１に、発生する追加コストであり、第２に、組み付けの困難さである。
【０００６】
このような障害を取り除くための１つの可能性は、このようなエコー除去機能を、ホストマシン内のソフトウェアを用いることによって、音声のコーディング／デコーディングのタスクや、画像処理や、ネットワークとのインターフェイスのような、必要な個別のタスクと同様に、それ自身のタスクとして、リアルタイム処理内に組み込むことである。
【０００７】
演繹的には、エコー除去ソフトウェアを、ＰＣコンピュータのようなホストマシン上に移植する操作は、それ自身としては障害にはならない。しかし、そのようなマシンのプロセッサは、高級言語でプログラム可能であって、かつ、一般には、少なくとも最近の世代のマシン上の、お目当てのアプリケーションと互換性がある演算能力を備えていなければならない。
【０００８】
しかしながら、そのような操作は、エコー除去機能の実現のためには、音声データストリームすなわち入力ストリームと送出ストリームとの同期という問題に直面する。これらのストリームは、ホストマシンのサウンドカードによって生成される。
【０００９】
タスクが、単に、入力ストリーム及び出力ストリームを用いる、音声コーディング／デコーディングや、画像処理や、ネットワークとのインターフェイスの場合に、入力バッファあるいはバッファメモリの充填の終了時に、該当するタスクの実行を起動し、かつ、そのタスクの実行の終了時に、出力バッファを充填する限りでは、同期化処理は、比較的簡単である。
【００１０】
一方、図１に示すような、コンピュータ端末における拡声器とマイクロフォンとの間のエコーの除去の場合には、エコーキャンセラーエレメントAECが、適応するフィルタで構成され、マイクロフォン信号上での拡声器信号の一部の減算のための再注入を可能にする。前記エコーキャンセラーは、２つの入力ストリームの存在を必要とする。すなわち、マイクロフォンから発せられる、マイクロフォン信号 smic と称される信号と、遠く離れた相手方から発せられて、拡声器に向かうので、拡声器信号 shp と称される信号である。エコー除去処理は、拡声器／マイクロフォンの寄生的な結合のインパルス応答を見積ることに基づいている。エコーキャンセラー AEC は、少なくとも拡声器信号の再注入された一部を含む、１つあるいは２つの出力ストリームを生成する。そのような方法は、従って、適切なエコー除去タスクの扇動を進めるために、２つの入力バッファの充填が完了するのを待つ必要がある。更に、そして、絶対に、インパルス応答から得られる、寄生的な結合の音響伝達関数の正しい評価を可能にするためには、２つの入力データストリームが、完全に同期していなければならない。
【００１１】
従来技術の場合に、エコー除去機能が、専用の信号プロセッサが備えられたDSPカード経由で実行されるとき、もしくは、追加のオーディオエレメント、もしくは、「アドオンオーディオ」経由で実行されるとき、前述した完全な同期という極めて重要な条件は、満足される。なぜなら、 DSP カードもしくは「アドオン」の、ただ１つのクロックが、駆動のために用いられるからである。同時に、マイクロフォン信号上でのアナログ／デジタル変換器の動作、信号プロセッサへのデジタルデータの転送、同期化が、例えば、専用の信号プロセッサにおける計算プログラムの割込みによって、そして、拡声器用のデジタル／アナログ変換器に対して、計算されたサンプルを供給するために実行される。更に、エコー除去タスク、及び、対応する計算の動作は、後者が専用の信号プロセッサであるときに、信号プロセッサによって実行されるか、あるいは、少なくとも優先順位を超越する方法によって実行される唯一のものである。
【００１２】
前述したタスクのホストマシンへの移植は、それでもなお、以下のような大きな技術的困難に直面する。
【００１３】
そのような場合に、ソフトウェア層に基づいて、オーディオデータストリームの管理が行われる。ソフトウェア層とは、例えば、ウィンドウズ（登録商標）オペレーティングシステムが用いられる場合における、オペレーティングシステムまたはAPIsによって管理される層のようなものである。なお、APIsとは、アプリケーションプログラムインターフェイスを表す。これらのソフトウェア層は、オーディオ信号取得／再生処理に関するリアルタイムな抑制を遮断する。しかしながら、ソフトウェアの最大限の移植性を得るためには、オブジェクトコードが、特別に、ホストマシンの構造に合わせて調整されたソフトウェアを用いることは考えられない。なぜなら、そのようにすると、それらを書き直すことが必要になり、更に、実質的には、マシンのタイプ毎に、１つのバージョンのソフトウェアが必要になるからである。
【００１４】
前述のエコー除去タスクに対して高い優先順位を割当てても、オペレーティングシステムの実行のために必要なシステムタスクは、エコー除去処理プログラムの動作を中断させるかもしれない。従って、オーディオデータストリームの一方または他方あるいは両方を遮断し、これにより、音声信号取得／再生処理における不連続性を引き起こすかもしれない。
【００１５】
その結果、実例としては、音声サンプルに基づく音声の伝送の間に、サンプリング周波数、サイズ、及び、データ転送の要求を満たすために用いられるバッファあるいはバッファメモリの数を指定することによって、サウンドカードの初期化が最初に実行されるものが想起される。第１段階では、全ての指定されたバッファが充填され、かつ、それらの読み出し出力が有効とされる。この第１段階が完了すると、オペレーティングシステムは自身をスタンバイ状態にして、バッファが再生あるいは読み出されるのを待つ。特に、バッファのうちの少なくとも１つが読み出されさえすれば、マルチタスクオペレーティングシステムにおける「スレッド」すなわち処理タスクが、サウンドカードの指示によって起動される。同様の方法の操作が、サウンドカードのマイクロフォン入力から発せられるサンプルの書き込みの取得をも制御する。これらの条件の下で、サウンドカードのAPIsすなわちアプリケーションプログラムインターフェイスによって用いられることが可能なバッファの数が、同様に、指定される。後者は、オペレーティングシステムに指示を返し、ちょうど書き込みが満たされたバッファを識別するのを可能にする。
【００１６】
バッファの書き込み／読み出し動作の微妙な管理の問題を回避するためには、かなりの数の大きいサイズのバッファを指定することが望ましい。残念ながら、そのような選択は、音声の連鎖において、恐らくは最高２〜３秒の、かなりの遅延をもたらす。そのような遅延は、例えばゲームのような、PCパーソナルコンピュータの音声出力のみを用いる現在のアプリケーションの場合には、大きな影響はないが、双方向通信システムあるいはアプリケーションのためには、この遅延は致命的である。
【００１７】
特に、音声の全二重通信のアプリケーションにおいては、一方あるいは他方の通信にもたらされる、いかなる遅延も、会話の自然さ及び流暢さに対して、特に有害な影響を及ぼす。このような理由により、もたらされる各遅延時間を打ち切り、かつ減少させるために、可能な限り小さいサイズで、数も少ないバッファを用いて作業を行うことが必要である。しかしながら、音声取得／再生タスクの管理及び中断は、この制限によって、とりわけ重要になる。
【００１８】
更に、前述の取得及び再生ソフトウェアタスクの停止が、マイク信号と拡声器信号との間の遅延の減少または増加に変換される。この遅延は、その結果、可変となる。特に、オペレーティングシステムに完全に縛られないサウンドカードの場合には、サウンドカードの自律性の程度が、ある程度の負担の軽減をもたらし、かつ、セントラルプロセッサ（中央処理装置）及びオペレーティングシステムの活用(exploitation)時間の軽減をもたらす。時間のシフトが、部分的な自律性を有するカードのハードウェアモジュールと、オペレーティングシステムの様々な要求に対して敏感なソフトウェアモジュールとの間に発生する。
【００１９】
人間の耳は、単に平均的な感度を有するか、あるいは、ある程度の値のストリーム中断時間の進み方向のみの遅延に対して敏感であるが、後者を実行するエコー除去処理及びエコー除去システムは、それらの時間の基準を完全に失う。従って、音声ストリームにおける不連続性は、エコーキャンセラーによって見積られた拡声器／マイクロフォンの寄生的な結合のインパルス応答における時間のシフトに変換される。最悪の場合には、拡声器とマイクロフォンとの間の寄生的な結合のインパルス応答を見積るための時間ウィンドウは、適応するデジタルフィルタによって構成されるエコーキャンセラーの係数の数によって制限される。音声取得／再生における一時的な不連続性は、拡声器信号が存在する間以外は、明白にすることができない。前述の寄生的な物理結合が、この見積もりウィンドウの外に現れる状況をもたらすかもしれない。すると、エコーキャンセラーは、もはや、いかなる効果をも生み出さない。
【００２０】
【発明が解決しようとする課題】
従って、コンピュータ端末上でエコー除去機能のリアルタイム処理を可能にするソフトウェアのインストールに関して解決されるべき問題は、以下の通りである。一つは、拡声器信号とマイクロフォン信号との間の初期遅延が、１つのコンピュータ端末と別のコンピュータ端末とで異なることである。また、もう一つは、この遅延が、端末のオペレーティングシステムによって制御される動作の結果として、或いは、その端末が備えているクロックのドリフト現象の結果として、時間と共に変化することである。
【００２１】
【課題を解決するための手段】
本発明の目的は、従来技術におけるシステムの欠点及び問題を改善することであり、あらゆるタイプのコンピュータ端末上でのリアルタイム処理の要求を満たすように、ソフトウェア形式での、エコー除去機能の効果的なインストールを可能にすることである。
【００２２】
この目的と共に、本発明の目的は、特に、端末のオペレーティングシステムによって管理される、より高い優先順位のタスクに関して、音声取得／再生処理の感度をできる限り下げるようなリアルタイム処理状況に合わせて特別に調整されたエコー除去アルゴリズムの選択を顧慮することである。
【００２３】
従って、本発明の別の目的は、その後に、これらの信号のサブサンプリングが続く、オーバーサンプリングによって、マイクロフォン信号と拡声器信号との間のクロックドリフトの危険を排除し、取得／再生タスクにおけるソフトウェアの方法で実行されるサンプリング周波数の変更を管理することである。
【００２４】
本発明の別の目的は、更に、拡声器とマイクロフォンとの音声ストリーム間の物理的遅延の定期的な見積もりを可能にする、コンピュータ端末におけるエコー除去のオンライン処理方法の実現である。
【００２５】
本発明の別の目的は、最後に、エコーキャンセラーの分析ウィンドウの中で、拡声器／マイクロフォンの寄生的な結合の、見積もられたインパルス応答を最適な形にリセットするために、この物理的遅延の推定値に基づいて、この遅延の補正を可能にする方法を実現することである。
【００２６】
【発明の実施の形態】
音声取得及び再生の要求を満たす、マルチタスクオペレーティングシステムによって管理されるコンピュータ端末の、拡声器とマイクロフォンとの間のエコーの除去のための、リアルタイム処理及び管理方法、すなわち、本発明の主題は、エコー除去処理に適用される。エコーは、拡声器と、マイクロフォン信号を送出するマイクロフォンとの間の寄生的な物理結合によって引き起こされ、そして、マイクロフォン信号から補正信号を引き算することによって補正される。補正信号は、遅れがあり、かつフィルタがかけられた拡声器信号の一部によって形成される。
【００２７】
各々のマイクロフォンに対する、１つの拡声器信号を基準信号として確立し、この基準信号に、各々の拡声器に対する、別のマイクロフォン信号を同期させ、そして、音声取得及び再生タスクを同期させることは、注目に値する。更に、存在する遅延の測定値を得るために、他方の信号と基準信号との間に存在する遅延を定期的に測定する。そして、現在の遅延値を得るために、存在する遅延の測定が確認され、そして、エコー信号を除去するために、基準信号に与えられる遅延が、この現在の遅延に基づいて制御される。
【００２８】
本発明の主題の方法は、ウィンドウズ（登録商標）98あるいはNTファミリー、BeOS、UNIX（登録商標）あるいは同様のオペレーティングシステムを備えた、あらゆるタイプのコンピュータ端末に適用することができる。
【００２９】
それは、記述を読み、かつ、下記の図を参照することによって、更によく理解されるであろう。図 1 は、従来技術に関する。図 2a は、実例として、本発明の主題の方法を実行するためのステップのフローチャートを表す。図 2b 、及び、 2c は、タスクを同期させるためのフラグのタイムチャートを表す。図 2d は、実例として、本発明の主題である、コンピュータ端末の拡声器とマイクロフォンとの間のエコーの除去のためのリアルタイム処理及び管理方法を実現するシステムの、様々なハードウェアかつ／またはソフトウェアモジュール間の関係を示す機能図を表す。図 2e は、実例として、好ましい実施形態における本発明の主題の方法、すなわち、マイクロフォン信号と拡声器信号との間の一時的なドリフトの危険を除去する方法を実行するためのステップのフローチャートを表す。 図 3 は、参照信号と別の信号との間に存在する遅延の定期的な測定のステップの、個別の実行の詳細を表す。図 4a は、現在の遅延値として測定された存在する遅延値の確認のための処理に関するタイムチャートを表す。図 4b は、現在の遅延値として測定された存在する遅延値の確認のための処理を示すシーケンシャルなフローチャートを表す。図 5a 、 5b 、及び、 5c は、実例として、１以上の連続した存在する遅延値に基づいて確立された、各々の現在の遅延値に基づく、基準信号、拡声器信号あるいはマイクロフォン信号の遅延の制御を示す図を表す。
【００３０】
図 2a 、及び、それに続く図を参照し、コンピュータ端末における拡声器 HP とマイクロフォン M との間のエコーの除去のためのリアルタイム処理及び管理方法を、更に詳細に説明する。
【００３１】
説明に先立って図 1 を参照すると、拡声器 HP は、 shp と表示された拡声器信号を受信し、マイクロフォンは、 smic と表示されたマイクロフォン信号を送出する。更に、マルチタスクオペレーティングシステム OS の枠組の中で、音声取得／再生は、オペレーティングシステムが例えばウィンドウズ（登録商標）システムである場合に一般に API と称されるアプリケーションの枠組の中の後者によって管理される。エコーは、拡声器信号 shp を受信する拡声器 HP と、マイクロフォン信号 smic を送出するマイクロフォンとの間の寄生的な物理結合によって生成される。マイクロフォン信号 smic は、前述した寄生的な物理結合によって伝送されるエコーに起因する寄生信号によって損なわれる。マイクロフォン信号は、マイクロフォン信号 smic から、図 1 中に AEC と表示されたエコーキャンセラーの適応するフィルタによってフィルタリングされた拡声器信号 shp の一部によって形成された補正信号 sc を引き算することによって補正される。
【００３２】
図 2a を参照すると、本発明の主題の方法が示されていて、ステップ A で、拡声器信号 shp もしくはマイクロフォン信号 smic のうちの１つを基準信号として確立し、かつ、その他の信号、各々の拡声器信号に対するマイクロフォン信号を、この基準信号に同期させることは注目に値する。
【００３３】
ステップ A は、アルゴリズム的な処理による解決方法によって解決されるように、問題を単純化することを可能にする。実際、この解決方法においては、ただ１つの音声ストリームを修正し、もう１つのストリームは基準ストリームとされる。この方法は、入力及び出力における２つの異なるストリームの管理を可能にし、その結果、処理アルゴリズムが、状況に合わせて調整される。本発明を限定するものではない例として、フランスの特許出願番号2,738,695に、APA2アルゴリズムから成る処理アルゴリズムが開示されている。導入された処理プロセスは、例えば、マイクロフォン信号にのみ作用し、拡声器信号は、後述するように、様々な処理が実行される際の基準信号として扱われる。
【００３４】
図 2a のステップ A においては、基準信号及び他方の信号の二者択一の選択が、式で表されている。
基準信号／他方の信号の選択 =
マイク信号 X 拡声器信号
【００３５】
記号 X は、基準信号として、マイク信号、拡声器信号の二者択一の選択を表す。基準信号の選択は、本発明の主題の方法の複数の用途のためになされるが、使用状況に応じて修正される。
【００３６】
前述のステップ A に続くステップ B では、特定の同期化処理として、音声取得及び再生タスクを同期化させる。前述のステップ B は、オペレーティングシステムによって管理された他のタスクに関して、音声ストリームを管理するためのタスクの感度を減少させることを可能にする。それに対しては、より高い優先順位が割当てられている。「タスク」という用語は、「スレッド」という用語に相当する。
【００３７】
特に、音声取得／再生の管理が、取得及び再生モードにおける、２つの独立した「スレッド」に基づいて行われる場合には、システムタスクの起動、例えば、別のアプリケーションの開始は、一方あるいは他方の音声取得／再生「スレッド」を、それらの起動の機能、及び、それらの優先順位の機能として、停止させるかもしれない。一方あるいは他方のいずれの音声「スレッド」が影響を受けるかどうかに応じて、マイクロフォン信号 smic のストリームは、拡声器信号 shp のストリームに対して、進むか、あるいは遅れるかする。
【００３８】
図 2a に示したステップ B は、本発明の主題の方法における注目に値する様相に対応するものだが、２つの音声取得／再生「スレッド」を同期させることによって、この現象を減少させることができる。このため、「スレッド」を同期させるために、後述する従来のメカニズムが用いられる。
【００３９】
ステップ B で生成された音声取得／再生タスクを同期させるための処理は、それを完全にキャンセルせずに、前述の音声ストリームのシフトを制限するという影響をもたらすことが、特に示されている。これは、ハードウェアすなわちサウンドカードによって導入されたシフトと、APIアプリケーションソフトウェアによって導入されたシフトとは、そのような同期化では、十分に管理されない可能性があるという事実のためである。
【００４０】
更に、オペレーティングシステムによって「スレッド」がスタンバイ状態にされることは、音声ストリームの限られたシフトに変換される。恐らくは、サンプル時間未満のシフトに対応するシフトであって、ユーザが知覚できない、スタンバイ中での、いくらかの連続する置き換えは、反対に、総計では、かなりのシフトに変換される。この総計シフトは、前述のステップ B で実行された同期化処理によっては、完全に減少されない可能性がある。そのシフトは、サンプル時間より大きい可能性があり、従って、ユーザが直接知覚できる。
【００４１】
ステップ B に続くステップ C では、その他の信号と基準信号との間に存在する遅延を、定期的に測定する。存在する遅延のそれぞれの値は、例えば、 rej と表示される。一般に、そして、本発明の主題の方法における特に注目に値する様相に対応する、その他の信号と基準信号との間に存在する遅延の測定が、定期的かつ連続して、信号の期間、実行されることが、後述する更に詳細な条件下でのこの方法の実行を通して、示されている。
【００４２】
ステップ C に続くステップ D では、 rcn と表示された現在の遅延値を得るための存在する遅延の測定を確認する。現在の遅延値は、少なくとも、初期に存在していた遅延の値、あるいは、値の組み合わせに、おおむね一致する。この組み合わせは、後述する特定の基準に基づいて行われる。
【００４３】
もちろん、現在の遅延値として、存在する遅延の測定を確認するステップは、エコー信号をキャンセルするために、現在の遅延に基づいて、基準信号に対して供給されるコマンドによって起動される。
【００４４】
拡声器信号 shp の一部に適用される適応するフィルタリングに適用される遅延を制御することが可能である。そして、もちろん、前述の適応するフィルタのフィルタリング係数を制御することも可能である。導入されたエコーをキャンセルするための、マイクロフォン信号 smic からの減算による補正信号 sc の作成を保証するために、特に、得られた現在の遅延値を考慮することは理解される。基準信号に対して与えられる遅延は、この信号を可変のバッファ内に格納することによって発生する。この格納された、遅延を伴う信号への読み出しアクセスは、シフトされたアドレッシングに対応することによって与えられる。
【００４５】
図 2a を参照して前述したステップ B で実行される、音声取得及び再生タスクの同期化処理の、より詳細な説明を、図 2b 、及び、 2c を参照して、２つの本発明を制限しない好ましい実施形態の中で行う。
【００４６】
一般に、前述のタスク同期化処理は、タスク同期化の時間基準を表すフラグを伝送することによって実行される。これらのフラグは、適切なAPIアプリケーションの処理のために、オペレーティングシステム OS によって伝送される。
【００４７】
図 2b を参照すれば、音声取得及び再生「スレッド」の同期化は、取得すなわち書き込みと、各々の音声再生すなわち読み出しとの２つの独立したタスクの同期化から成る。これは、図 2b に示すように、Wという符号が付けられた、各々の再生すなわち読み取りのために、取得のためのコマンド、あるいは、Rという符号が付けられた、書き込みのためのコマンドを含む連続したフラグを同期させることによる。前述の図は、２つの独立したタスク間の同期化のタイムチャートを示す。書き込みタスクは、スタンバイ状態でフラグ R の起動を待つ。このフラグは、例えば、読み出しタスクがバッファ B0 の読み出しを完了したとき、アクティブにされる。そして、逆に、読み出しタスクは、スタンバイ状態でフラグ W の起動を待つ。このフラグは、書き込みタスクがバッファ B0 の取得を完了したとき、アクティブにされる。フラグの活性化(activation)は、日陰(shaded)であると表現される。
【００４８】
更に、図 2c に示したように、音声取得及び再生タスクを同期させるステップ B は、オペレーティングシステムに基づいて、一般の音声取得／再生タスクを有利に生成することができる。前述の図は、例えば一般のタスクにおいて、バッファ B0r の読み出し管理と、もう１つのバッファ B0w の書き込み管理との不可分性を表している。図 2c に示したような、タスクを同期させることの実施形態のモードは、より簡単であるように思われる。そして、実際、タスクを実行するためにコマンドを節約する。そして、もちろん、１つのタスクからもう１つのタスクに連続して切り替えるための、ポーズ(pause)、または、マイクロポーズ(micropause)も節約する。
【００４９】
図 2d は、実例としての機能図であり、システムの様々なハードウェアかつ／またはソフトウェアモジュールの関係を示す。この関係は、本発明の主題に従ったコンピュータ端末における拡声器とマイクロフォンとの間のエコーの除去のためのリアルタイム処理及び管理方法を実現させる。
【００５０】
基準信号を選択するためのステップ A は、図 2d には示されていないが、意識的な選択に対応する、この選択は、例えば、開発されたソフトウェアのタイプのためのものである。ステップ B が、図 2b 、または、 2c に示された処理に従って実行されることが示されている。そして、遅延 C を測定するステップと、各々の存在する遅延を採用し、基準信号にコマンドを供給するステップとが、後者に与えられる可変の遅延のコマンドを保証するために、用いられる。そして、後述するような、フィルタ AEC を介したマイクロフォン信号 smic のフィルタリングを保証するために、用いられる。
【００５１】
前述のステップ A に関する限り、後者は、図 2e に示したような、本発明の主題の方法の実現の好ましいモードを構成する。すなわち、前もって、あるいは、付随して、基準信号を選択することによって、補助のサブステップを実行し、システムのサンプリングの最高周波数で、マイクロフォン及び拡声器信号のサンプルを受信し、送信する。そして、デシメーションによって、サンプル、及び、名目上のサンプリング周波数でサンプリングされた信号を復元する。この処理は、システムとして、オーバーサンプリング制御によって遂行される。そして、取得周波数パラメータとして、最高のクロック速度をもつサウンドカードの初期化、サンプリング周波数の変更及びサブサンプリングのコマンドの管理が、取得／再生タスクにおけるソフトウェアの方法において遂行される。前述の、取得及び再生タスクは、このように、サウンドカードによって許容される最高周波数で、マイクロフォン信号 smic 、拡声器信号 shp のサンプルを、各々、受信し、伝送する、このような方法で、前述の信号を管理することを可能にする。そして、デシメーションあるいはサブサンプリングによって、この周波数を、その名目上の値まで復元させる。前述の方法は、マイクロフォン信号 smic と、拡声器信号 shp との間に存在する可能性がある、時間ドリフトを除去することを可能にする。これは、システムへの、そして、アプリケーションへのサンプルの直接伝送のためであり、そして、取得／再生タスクによるサンプリング周波数の再確立のためである。その他の信号と、基準信号との間に存在する遅延を測定するステップ C のより詳細な説明、例えば、拡声器信号 shp を構成する基準信号、及び、マイクロフォン信号 smic を構成する他方の信号の説明を、図 3 を参照して行う。
【００５２】
前述の図を参照すると、遅延を測定するステップが、最初のサブステップ Ca によって実行されていることが示されている。ここでは、校正された初期遅延を定義するために、この方法の初期化時に存在する遅延を測定する。これは、本発明、もしくは、システムの主題である。これにより、エコー除去のために、そして、特に、後者、すなわち、この目的のために用いられる、適応するフィルタ AEC の始動時におけるエコーキャンセラーのために、分析ウィンドウを位置決めすることが可能になる。
【００５３】
サブステップ Ca に続くサブステップ Cb は、コンピュータ端末のオペレーティングシステム OS によって始動する動作を考慮して、存在する遅延を、この方法の実行中、連続して切れ目なく測定する。
【００５４】
より具体的には、初期化時における遅延は、用いているハードウェアによる。用いているハードウェアとは、すなわち、コンピュータ端末、そして、この端末が備えているサウンドカードである。それは、もちろん、用いているオペレーティングシステムにもよる。ウィンドウズ（登録商標）NTシステムは、一般に、ウィンドウズ（登録商標）98システムより速い。一般に、遅延の校正値を構成する、初期化時に存在する遅延 ric の測定は、あらゆる侵入的な、もしくは、非侵入的な測定手順に基づいて行なわれる。この初期遅延 ric の校正値は、エコーキャンセラー AEC のための分析ウィンドウの位置を調整することを可能にし、これにより、初期化時の物理的かつ寄生的な結合のインパルス応答の見積もりが可能になる。
【００５５】
例として、エコーキャンセラー AEC の構成要素の適応するフィルタが、8 kHz で 800 という係数を有するとすると、分析ウィンドウは、 100 ms の幅を示す。基準信号を構成する拡声器信号 shp のストリームと、マイクロフォン信号 smic のストリームとの間の遅延が、100msより大きい、例えば130msの場合には、分析ウィンドウの適切な位置決めなしでは、対応するエコーを除去することはできない。なぜなら、前述の一時的な分析長さを通して、２つの信号間に対応が存在しないからである。前述の例では、分析ウィンドウの限界における、そのような遅延の導入の場合に、概算のインパルス応答として、少なくとも、50msに等しい遅延を導入する必要がある。分析ウィンドウの理想的な位置決めのために導入された遅延は、基準信号のストリームを通して、130msより僅かに少ない値をとる。これは、２つのストリームを一致させ、分析ウィンドウの最初におけるインパルス応答のスパイク(spike)を得るためである。
【００５６】
しかしながら、拡声器信号 shp すなわち基準信号と、マイクロフォン信号 smic との間の遅延は、前述したように、オペレーティングシステム OS によって実行されるタスク管理の関数として、組み立ての初期化時から、変化する。このように、この変化は、通信中ずっと、従って、本発明の主題の方法の実行中ずっと、新しい連続する遅延の測定を行うためのステップ Cb の実行を正当化する。
【００５７】
サブステップ Cb の実行のために、非侵入的な測定手順が、好んで用いられる。
【００５８】
本発明を限定しない例として、非侵入的手順が、基準信号すなわち拡声器信号、その他の信号すなわちマイクロフォン信号のエネルギーのエンベロープ相関の計算から成るものが、フランスの特許出願番号2,733,867に開示されている。
【００５９】
前述の２つの信号のエネルギーのエンベロープ相関を計算するための手順に関して、例えば、あるデバイスが音声の働きを検出することによって、拡声器信号 HP の存在を検出するとき、サウンドカードへ送られる信号と、マイクによって受け取られる信号との中期のエネルギーが計算される。２つのスライドする(sliding)エンベロープのための相関係数一式が、これらの２つの信号から推論される。相関カーブのスパイクが、２つの 信号間に存在する遅延を示している。
【００６０】
現在の遅延値を得て、存在する遅延の測定値を採用するためのサブステップ、すなわち、図 2a を参照して説明したステップ D で実行されるサブステップを、図 4a 及び 4b を参照して詳細に説明する。
【００６１】
図 4a において、 rej は、存在する遅延を表し、 rcn は、現在の遅延値を表す。
【００６２】
このように、 rej 及び rej+1 は、 rcn と称される現在の遅延の以前の値の後に続く、ランク j 及び j+1 の２つの連続した存在する遅延を示す。連続した存在する遅延 rej 及び rej+1 自身の採用から生じる現在の遅延は、 rcn+1 と称される。
【００６３】
図 4a を参照すると、現在の遅延値 rcn+1 を得るために、存在する遅延 rej の測定値を採用するステップが示されている。ここでは、現在の遅延の以前の値 rcn に続く、少なくとも前述の連続して存在する遅延 rej 及び rej+1 のうちの１つと、この現在の遅延の以前の値 rcn との間の遅延の相違を、少なくとも検出する。遅延におけるこの相違は、下記のように表される。
δrej,cn = rej - rcn
δrej+1,cn = rej+1 - rcn
【００６４】
この相違、もしくは、これらの相違の値は、τと表記される、指定された時間値と比較される。この指定された時間値は、適切なコンピュータ端末の特性の関数として、後述するように、例えば、15msに等しい値とされる。
【００６５】
前述の比較ステップの終了時に、このサブステップでは、現在の遅延値 rcn+1 として、もし、遅延におけるこの相違が、この指定された時間τより大きければ、少なくとも、連続して存在する遅延のうちの１つ、または、それらの一次結合を採用する。
【００６６】
そうでなければ、現在の遅延の以前の値 rcn が、現在の遅延の次の値 rcn+1 として採用される。
【００６７】
本発明の主題の方法の特に有利な面によれば、指定された時間値が、現在の遅延値の関数として調整される。これは、種々のオペレーティングシステムを備える、あらゆるタイプのコンピュータ端末に対して、本発明の主題の方法の柔軟性及び適応性の特性を導入することを可能にする。一般的に、指定された時間τは、 30msにほぼ等しい最大値と、10msにほぼ等しい最小値との間に調節される。前述の最大及び最小値の間に値τを適合させるための方法が、実験的に確立される。
【００６８】
上記で引用された現在の遅延値の管理は、図 4b に示したように、フィルタリング及びエコー除去の最適化を保証するために、順次、実行される。この最適化は、２つの連続する値を考慮に入れることから離れて、存在する遅延 rej , rej+1 、存在する遅延の次の値 rej+2 に対応する。ステップ 1000 における安定状態に対応するように指定された値と等しい値をとる、現在の遅延が、図 4b に示されている。この平均値は、以下の関係を満たす。
MOY=rcn
【００６９】
値 MOY が、平均値に対応することを、以下で説明する。
【００７０】
rej ≠ MOY のような最初の相違する、いわゆる矛盾する測定がなされると、そのような状況の発生は、前述の変化の検出に続く、スタンバイ状態１である状況 1001 につながる。
【００７１】
存在する遅延の２番目の値、すなわち、存在する遅延の以前の値 rej とは異なり、また、以前の平均値 MOY とも異なる２番目の測定値 rej+1 の出現時に、存在する遅延の以前の値 rej は、存在する遅延値 rej+1 によって置き換えられる。この置換は、図 4b 中のスタンバイ状態 1001 のレベルにおける閉じたループによって表されている。
【００７２】
逆に、存在する遅延の以前の値 rej と同じ、存在する遅延の２番目の測定値 rej+1 の出現時には、存在する遅延値 rej 及び rej+1 が等しいことに応じて、ステップ 1001 のスタンバイ状態 1 は、ステップ 1002 のスタンバイ状態 2 に移行する。このスタンバイ状態 1002 は、確認スタンバイに相当する。
【００７３】
存在する遅延の３番目の測定値 rej+2 が、存在する遅延の以前の値 rej+1 及び rej に等しかった場合には、前述のスタンバイ状態 1002 は、新しい平均値 NMOY が計算される過程である、連続して存在する３つの遅延値 rej 、 rej+1 及び rej+2 の平均値と一致する、新しい安定状態 1003 に移行する。
【００７４】
逆に、存在する遅延の３番目の値 rej+2 が、存在する遅延の最初の値 rej と異なり、かつ、現在の安定状態の平均値とも異なる場合には、この場合には、上記で引用したステップ 1000 の平均値 MOY 、存在する遅延の３番目の測定値 rej+2 が、存在する遅延の最初の測定値 rej を置き換えるために用いられ、スタンバイ状態 1002 は、変化を検出するためのスタンバイ状態 1001 に復元される。
【００７５】
スタンバイ状態 1001 及び 1002 に基づく、次のランクの存在する遅延値の、いわゆる矛盾のない測定、その値が、現在の平均値と一致する、 rex で表記された次の測定では、処理を以前に言及した安定状態 1000 に戻す。
【００７６】
前述したように、確立される、現在の遅延値 rcn に基づく、基準信号の遅延のコマンドのための処理の更に詳細な説明を、図 5a 、 5b 及び 5c を参照して行う。
【００７７】
特に、前述の処理がコンピュータ端末のメモリによって実行されることが示される。そして、このメモリをアドレッシングする２つのポインタ Pwrite 及び Pread 、すなわち、基準信号のサンプルの書き込み専用のポインタ Pwrite と、この同じ信号の遅れたサンプルの読み出しのためのポインタ Pread とが示される。
【００７８】
図 5a を参照すると、現在の遅延値に等しい遅延値が、次の関係式によって与えられることが示されている。
Pwrite - Pread = 遅延値 x サンプリング周期の時間
ただし、遅延値は、いくつかのサンプルとして表現される。
【００７９】
前述の２つのポインタ、すなわちPwrite、Preadの管理は、各々の書き込みもしくは読み出し動作を行う、１つのユニットによってインクリメントされる。
【００８０】
遅延値の修正時に、そのポインタは、図 5b 、5c 及び以下の説明のように修正される。
【００８１】
・もし、図 5b に示したように、遅延が減少すると、読み出しポインタ Pread がインクリメントされ、遅延の減少に等しい量だけ、書き込みポインタ Pwrite に近づく。この量は、現在の遅延値を超えることはできない。
・もし、逆に、図 5c に示すように、遅延が増加すると、読み出しポインタがデクリメントし、遅延の増加に等しい量だけ、書き込みポインタ Pwrite から離れる。
【００８２】
しかしながら、全てのケースにおいて、いかなるメモリオーバーフロー問題も、回避されるべきである。従って、適応するフィルタ AEC のための分析ウィンドウの、作成された初期位置決めに基づいて、エコー信号の除去あるいは最大限の削減が可能になる。
【００８３】
【発明の効果】
コンピュータ端末における拡声器とマイクロフォンとの間のエコーの除去のためのリアルタイム処理及び管理方法について述べてきた。この方法は、それらによって用いられるオペレーティングシステムに関係なく、あらゆるワークステーション、あらゆるパーソナルコンピュータにインストールすることができるので、ソフトウェア設計に対して、とりわけ効果的である。
【００８４】
特に、全ての音声機能は、適切なコンピュータ端末のサウンドカードを要求するので、前述の方法の実施は、このタイプの通信ツールの一般化を可能にする。そして、特に、オペレーティングシステムが、例えば、ウィンドウズ（登録商標）ファミリーである場合の、APIアプリケーションにおいては、通信ツールの一般化が可能になる。このように実行される方法は、専用のカードや、独自のアドオンカードを必要としない。これは、本発明の主題の方法が、ホストマシンにおける、純粋なソフトウェア手段によって実行されるからである。エコー除去機能は、前述のオペレーティングシステムによって通例管理されるタスクと同じ方法で、それ自身がタスクとして設けられる。
【図面の簡単な説明】
【図１】  従来技術に関する図である。
【図２ａ】  実例として、本発明の主題の方法を実行するためのステップのフローチャートである。
【図２ｂ】  タスクを同期させるためのフラグのタイムチャートである。
【図２ｃ】  タスクを同期させるためのフラグのタイムチャートである。
【図２ｄ】  実例として、本発明の主題である、コンピュータ端末の拡声器とマイクロフォンとの間のエコーの除去のためのリアルタイム処理及び管理方法を実現するシステムの、様々なハードウェアかつ／またはソフトウェアモジュール間の関係を示す機能図である。
【図２ｅ】  実例として、好ましい実施形態における本発明の主題の方法、すなわち、マイクロフォン信号と拡声器信号との間の一時的なドリフトの危険を除去する方法を実行するためのステップのフローチャートである。
【図３】  参照信号と別の信号との間に存在する遅延の定期的な測定のステップの、個別の実行の詳細を表す図である。
【図４ａ】  現在の遅延値として測定された存在する遅延値の確認のための処理に関するタイムチャートである。
【図４ｂ】  現在の遅延値として測定された存在する遅延値の確認のための処理を示すシーケンシャルなフローチャートである。
【図５ａ】  実例として、１以上の連続した存在する遅延値に基づいて確立された、各々の現在の遅延値に基づく、基準信号、拡声器信号あるいはマイクロフォン信号の遅延の制御を示す図である。
【図５ｂ】  実例として、１以上の連続した存在する遅延値に基づいて確立された、各々の現在の遅延値に基づく、基準信号、拡声器信号あるいはマイクロフォン信号の遅延の制御を示す図である。
【図５ｃ】  実例として、１以上の連続した存在する遅延値に基づいて確立された、各々の現在の遅延値に基づく、基準信号、拡声器信号あるいはマイクロフォン信号の遅延の制御を示す図である。
【図１】
0004527342.tif 000002
【図２ａ】
0004527342.tif 000003
【図２ｂ】
0004527342.tif 000004
【図２ｃ】
0004527342.tif 000005
【図２ｄ】
0004527342.tif 000006
【図２ｅ】
0004527342.tif 000007
【図３】
0004527342.tif 000008
【図４ａ】
0004527342.tif 000009
【図４ｂ】
0004527342.tif 000010
【図５ａ】
0004527342.tif 000011
【図５ｂ】
0004527342.tif 000012
【図５ｃ】
0004527342.tif 000013