(57)【要約】  プレイアウトユニットとキャプチャーユニットとの間の異なるサンプリングレートが補償される。該プレイアウトユニットはサンプルを計算ユニットから受け、該キャプチャーユニットはサンプルを該計算ユニットへ送る。プレイアウトＦＩＦＯバッフアーはプレイアウトタイムドメイン内で動作し、キャプチャーＦＩＦＯバッフアーはキャプチャータイムドメイン内で動作する。該計算ユニットは共通のクロックに同期化させられる。第１の関係は該共通のクロックとプレイアウトＦＩＦＯバッフアーリードポインターとの間で計算され、第２の関係は該共通クロックとキャプチャーＦＩＦＯバッフアーライトポインターとの間で計算される。該プレイアウトタイムドメイン内の各サンプルについて、前記計算ユニットからの該サンプル内の対応するサンプルが見出され、プレイアウトＦＩＦＯバッフアーへ送られる。該共通クロックタイムドメイン内の各サンプルについて、該キャプチャータイムドメイン内の対応するサンプルが見出され、該計算ユニットへ送られる。【選択図】  図５
2011512698.tif 000002
【特許請求の範囲】
【請求項１】
プレイアウトユニット及びキャプチャーユニットの間の異なるサンプリングレートを補償する方法であって、該プレイアウトユニットが計算ユニットからサンプルを受けるよう構成されており、該キャプチャーユニットが該計算ユニットへサンプルを送るよう構成されており、該プレイアウトユニットがプレイアウトタイムドメイン内で動作するプレイアウトバッフアーを有しており、前記キャプチャーユニットがキャプチャータイムドメイン内で動作するキャプチャーバッフアーを有している方法において、
前記計算ユニットを共通クロックタイムドメイン内で動作する共通クロックに同期化させる過程と、
前記共通クロックと、前記プレイアウトバッフアーに付随するプレイアウトリードポインターと、の間の第１関係を設定又は計算する過程と、
前記共通クロックと、前記キャプチャーバッフアーに付随するキャプチャーライトポインターと、の間の第２関係を設定又は計算する過程と、
該プレイアウトタイムドメイン内の各サンプルについて、前記第１関係に基づいて、前記計算ユニットからの該サンプル内の対応するサンプルを見出し、そして該対応するサンプルを前記プレイアウトバッフアーへ送る過程と、そして
該共通クロックタイムドメイン内の各サンプルについて、前記第２関係に基づいて、該キャプチャータイムドメイン内の該対応するサンプルを見出し、そして該対応するサンプルを前記計算ユニットへ送る過程と、を具備することを特徴とする方法。
【請求項２】
前記第１関係が設定され、前記第２関係が計算される請求項１記載の方法。
【請求項３】
前記第１関係が計算され、前記第２関係が設定される請求項１記載の方法。
【請求項４】
前記第１及び第２関係が計算される請求項１記載の方法。
【請求項５】
前記計算ユニットがオーディオエコーキャンセラーである請求項１−４の１つに記載の方法。
【請求項６】
統計的モデルが前記第１又は第２関係を計算するため使われる請求項１−４の１つに記載の方法。
【請求項７】
前記統計モデルが、
最小平均２乗アルゴリズムと、そして
丸め誤差を減じるための損失係数を有する最小平均２乗アルゴリズムと、から成るセットから選択された線形回帰法を有する請求項６記載の方法。
【請求項８】
前記共通クロックが、
前記リードポインターに付随するクロック信号と、
前記キャプチャーポインターに付随するクロック信号と、そして
該計算ユニットの中央処理ユニット（ＣＰＵ）に付随するクロック信号と、から成るセットから選択される請求項１−７の１つに記載の方法。
【請求項９】
該キャプチャータイムドメイン内の対応するサンプルを見出す前記過程が、
該共通クロックタイムドメイン内のサンプルに時間で最も近い該キャプチャータイムドメイン内のサンプルを識別する過程と、
もし該共通クロックタイムドメインと該キャプチャータイムドメインの間のオフセットが整数なら、該識別されたサンプルを見出されたサンプルとして提供する過程と、そして
もし前記オフセットが整数でないなら、サブサンプルを計算し、該サブサンプルを見出
されたサンプルとして提供する過程と、を備える請求項１−８の１つに記載の方法。
【請求項１０】
サブサンプルを計算する前記過程が、
共通クロックタイムドメインと該キャプチャータイムドメインの間のオフセットから整数を引き算後の残差である残留係数τを計算する過程と、そして
長さＬ＋１の時間遅延フィルター（ｈτ）を該キャプチャータイムドメインからのサンプルのシリーズと畳み込む過程、
ｙ＝ｈτｘ［ｊ−Ｌ／２．．ｊ＋Ｌ／２］、
であるが、ここでｘは時間で最も近い該サンプル付近に中心を置いたキャプチャータイムドメインからのサンプルの時間シリーズである、該畳み込む過程と、を有する請求項９記載の方法。
【請求項１１】
サブサンプルを計算する前記過程が、
離散数の残留係数（τ）用に時間遅延フィルターのセット（ｈτ）を予め計算する過程と、そして
前記予め計算されたフィルター（ｈτ）の１つを選択する過程であるが、前記選択されたフィルターが前記計算された残留係数τに最も近い該フィルターを表す、該選択する過程と、を更に有する請求項１０記載の方法。
【請求項１２】
サブサンプルを計算する前記過程が、
各サンプルについて前記時間遅延フィルター（ｈτ）を計算する過程を有する請求項１０記載の方法。
【請求項１３】
前記第１及び第２関係が、共通クロック、プレイアウトリードポインターそしてキャプチャーライトポインターデータの読み出し値に基づき、前記第１及び第２関係を計算する該過程が古いデータより新しいデータに強く重みを付ける過程を有する請求項１−１２の１つに記載の方法。
【請求項１４】
前記第１関係を計算する過程が
第１データのセットを読む過程であるが、前記第１データの前記セットが少なくとも前記共通クロック及び前記プレイアウトリードポインターの実質的に同時の読み出し値を有する、該読む過程と、そして
もし予め規定された基準のセットに適合すれば前記第１データのセットを登録する過程と、を更に有する請求項１−１３の１つに記載の方法。
【請求項１５】
前記第２関係を計算する前記過程が
第２データのセットを読む過程であるが、前記第２データの前記セットが少なくとも前記共通クロック及び前記キャプチャーライトポインターの実質的に同時の読み出し値を有する、該読む過程と、そして
もし予め規定された基準のセットに適合すれば前記第１及び第２データのセットを登録する過程と、を更に有する請求項１−１４の１つに記載の方法。
【請求項１６】
前記予め規定された基準は、該データセットの時間付近の連続する共通クロック読み出し値間の時間が予め規定されたしきい値を越えないか、又は
ポインターインクレメントが異常でない、ならば適合される請求項１４又は１５に記載の方法。
【請求項１７】
プレイアウトユニット及びキャプチャーユニットの間の異なるサンプリングレートを補償するクロックドリフト補償ユニットであって、
該プレイアウトユニットが計算ユニットからサンプルを受けており、
該キャプチャーユニットが該計算ユニットへサンプルを送っており、前記プレイアウトユニットはプレイアウトタイムドメイン内で動作し、少なくとも１つのプレイアウトバッフアーを有しており、そして前記キャプチャーユニットがキャプチャータイムドメイン内で動作し、キャプチャーバッフアーを有しているクロックドリフト補償ユニットにおいて、
前記クロックドリフト補償ユニットが、
共通クロックタイムドメイン内で動作し、クロック信号を前記計算ユニットに提供する共通クロックと、
前記共通クロックと、前記プレイアウトバッフアーに付随するプレイアウトリードポインターと、の間の第１関係を設定又は計算するよう構成されたプレイアウトタイムデバイスと、
前記共通クロックと、前記プレイアウトバッフアーに付随するキャプチャーライトポインターと、の間の第２関係を設定又は計算するよう構成されたキャプチャータイムデバイスと、
該プレイアウトタイムドメイン内の各サンプルについて、前記第１関係に基づき、前記計算ユニットからの該サンプル内の対応するサンプルを見出すよう、そして前記対応するサンプルを前記プレイアウトバッフアーへ送るよう、構成されたプレイアウトタイム修正器と、そして
該共通クロックタイムドメイン内の各サンプルについて、前記第２関係に基づき、該キャプチャータイムドメイン内の対応するサンプルを見出すよう、そして前記対応するサンプルを前記計算ユニットへ送るよう、構成されたキャプチャータイム修正器と、を具備することを特徴とするクロックドリフト補償ユニット。
【請求項１８】
前記第１関係が設定され、前記第２関係が計算される請求項１７記載のクロックドリフト補償ユニット。
【請求項１９】
前記第１関係が計算され、前記第２関係が設定される請求項１７記載のクロックドリフト補償ユニット。
【請求項２０】
前記第１及び第２関係が計算される請求項１７記載のクロックドリフト補償ユニット。
【請求項２１】
前記計算ユニットがオーディオエコーキャンセラーである請求項１７−２０の１つに記載のクロックドリフト補償ユニット。
【請求項２２】
統計モデルが前記第１又は第２関係を計算するため使われる請求項１７−２１の１つに記載のクロックドリフト補償ユニット。
【請求項２３】
前記統計モデルが、
最小平均２乗アルゴリズムと、そして
丸め誤差を減ずる損失係数を有する最小平均２乗アルゴリズムと、から成るセットから選択される線形回帰法を有する請求項２２記載のクロックドリフト補償ユニット。
【請求項２４】
前記共通クロックが、
前記リードポインターに付随するクロック信号及び
前記キャプチャーポインターに付随するクロック信号と、そして
該計算ユニットの中央処理ユニット（ＣＰＵ）に付随するクロック信号と、から成るセットから選択される請求項１７−２３の１つに記載のクロックドリフト補償ユニット。
【請求項２５】
前記キャプチャータイム修正器が、
該共通クロックタイムドメイン内のサンプルに時間で最も近い該キャプチャータイムド
メイン内のサンプルを識別する過程と、そして
もし該共通クロックタイムドメインと該キャプチャータイムドメインの間のオフセットが整数なら、該識別されたサンプルを見出されたサンプルとして提供する過程、及び、
もし前記オフセットが整数でないなら、サブサンプルを計算し、前記サブサンプルを該見出されたサンプルとして提供する過程と、を行うよう更に構成される請求項１７−２５の１つに記載のクロックドリフト補償ユニット。
【請求項２６】
前記キャプチャータイム修正器が、
該共通クロックタイムドメインと該キャプチャータイムドメインと間のオフセットから整数を引き算した後の残差である残留係数τを計算する過程と、そして
長さＬ＋１の時間遅延フィルター（ｈτ）を該キャプチャータイムドメインからのサンプルのシリーズと畳み込む過程、
ｙ＝ｈτｘ［ｊ−Ｌ／２．．ｊ＋Ｌ／２］
であり、ここでｘ［ｊ−Ｌ／２．．ｊ＋Ｌ／２］が時間で最も近い該サンプルの付近に中心を置く該キャプチャータイムドメインからのサンプルの時間シリーズである、該畳み込む過程と、を行うよう更に構成される請求項１７−２５の１つに記載のクロックドリフト補償ユニット。
【請求項２７】
前記キャプチャータイム修正器が、
離散数の残留係数（τ）について時間遅延フィルター（ｈτ）のセットを予め計算する過程と、そして
前記予め計算されたフィルター（ｈτ）の１つを選択する過程であるが、前記選択されたフィルターが前記計算された残留係数τに最も近いフィルターを表す、該選択する過程と、を行うよう更に構成される請求項２６に記載のクロックドリフト補償ユニット。
【請求項２８】
前記第１及び第２関係が共通クロック、プレイアウトリードポインター及びキャプチャーライトポインターデータの読み出し値に基づいており、前記プレイアウトタイムデバイス又は前記キャプチャータイムデバイスは、前記第１又は第２関係をそれぞれ計算する時、古いデータより新しいデータを強く重み付けするよう構成される請求項１７−２７の１つに記載のクロックドリフト補償ユニット。
【請求項２９】
前記プレイアウトタイム修正器が、
該プレイアウトタイムドメイン内のサンプルに時間で最も近いサンプルを該計算ユニットからのサンプル内で識別する過程と、そして
もし該プレイアウトタイムドメインと共通クロックタイムドメインの間のオフセットが整数なら、該識別されたサンプルを見出されたサンプルとして提供する過程及び、
もし前記オフセットが整数でないなら、サブサンプル（ｙ）を計算し、前記サブサンプルを該見出されたサンプルとして提供する過程と、を行うよう更に構成される請求項１７−２８の１つに記載のクロックドリフト補償ユニット。
【請求項３０】
前記プレイアウトタイム修正器が、
該プレイアウトタイムドメインと該共通クロックタイムドメインと間のオフセットから整数を引き算した後の残差である残留係数τを計算する過程と、そして
長さＬ＋１の時間遅延フィルター（ｈτ）を該計算ユニットからのサンプルのシリーズと畳み込む過程、
ｙ＝ｈτｘ［ｊ−Ｌ／２．．ｊ＋Ｌ／２］
であり、ここでｘ［ｊ−Ｌ／２．．ｊ＋Ｌ／２］が時間で最も近いサンプルの付近に中心を置く該計算ユニットからのサンプルの時間シリーズである、該畳み込む過程と、を行うよう更に構成される請求項２１に記載のクロックドリフト補償ユニット。
【請求項３１】
前記キャプチャータイム修正器及び前記プレイアウトタイム修正器が、
離散数の残留係数（τ）用の時間遅延フィルター（ｈτ）のセットを予め計算する過程と、そして
前記予め計算されたフィルター（ｈτ）の１つを選択する過程であるが、前記選択されたフィルターが前記計算された残留係数τに最も近いフィルターを表す、該選択する過程と、を行うよう更に構成される請求項３０に記載のクロックドリフト補償ユニット。
【請求項３２】
前記キャプチャータイム修正器が各サンプル用の前記時間遅延フィルター（ｈτ）を計算するよう更に構成される請求項３０記載のクロックドリフト補償ユニット。
【請求項３３】
前記プレイアウトタイムデバイスが、
第１データのセットを読む過程であって、前記第１データの前記セットが前記共通クロック及び前記プレイアウトリードポインターの少なくとも実質的に同時の読み出し値を有する、該読む過程と、そして
もし予め規定された基準のセットに適合するなら前記第１データのセットを登録する過程と、を行うよう更に構成される請求項１７記載のクロックドリフト補償ユニット。
【請求項３４】
前記キャプチャータイムデバイスが、
第２データのセットを読む過程であって、前記第２データのセットが前記共通クロック及び前記キャプチャーライトポインターの少なくとも実施的に同時の読み出し値を有する、該読む過程と、そして
もし予め規定された基準のセットに適合するなら前記第１及び第２データのセットを登録する過程と、行うよう更に構成される請求項１７記載のクロックドリフト補償ユニット。
【請求項３５】
前記予め規定された基準が、もし該データセットの時間付近の連続する共通クロック読み出し値間の時間が予め規定されたしきい値を越えないか又はポインターインクレメントが異常でないなら、適合される請求項３３又は３４記載のクロックドリフト補償ユニット。
【請求項３６】
請求項１７−３５の１つに記載のクロックドリフト補償ユニットを具備する遠隔会議ターミナル。
【請求項３７】
遠隔会議システムのエコーキャンセリング用の請求項１７−３５の１つに記載のクロックドリフト補償ユニットの使用法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクロックドリフト補償に関する。特に、本発明はプレイアウトユニットとキャプチャーユニットの間の異なるサンプリングレートを補償する方法と、プレイアウトユニットとキャプチャーユニットの間の異なるサンプリングレートを補償するクロックドリフト補償ユニットと、に関する。又、本発明はクロックドリフト補償ユニットの使用法に関する。
【背景技術】
【０００２】
従来の会議システム又は何等かのハンドフリーシステムでは、１つ以上のマイクロフォンがサイトＡで音波を取り込み、該音波を第１オーディオ信号に変換する。該第１オーディオ信号はサイトＢへ送信され、そこでテレビジョンセット又は増幅器及び拡声器がサイトＡで発生された該第１オーディオ信号を該音波に変換することにより元の音波を再生する。
【０００３】
図１はハンドフリー通信システムの典型的エコー問題を図解している。遠端（サイトＡ）からのデジタルオーディオ信号１１０１はＤ−Ａ変換器（ＤＡＣ）１３０１によりアナログドメインに変換され、拡声器増幅器１３０２で増幅され、更に拡声器１３０３で音声信号に変換される。直接信号１３０４と、壁／天井他１３０５で反射された反射版１３０６と、の両者はマイクロフォン１３０８により望ましくなくピックアップされる。該マイクロフォンは望ましい近端信号１３０７（例えば、話す人）もピックアップする。該マイクロフォン信号は該マイクロフォン増幅器１３０９で増幅され、Ａ−Ｄ変換器１３１０でデジタル化され、未キャンセルマイクロフォン信号１２０２を出力する。
【０００４】
もし該未キャンセルマイクロフォン信号が該遠端へ送信されるとしたら、該遠端サイトの参加者は彼等自身のエコーを聞くだろうし、もし同様なシステムが該遠端にあるとしたら、ハウリング／フィードバックさえも起きるかも知れない。
【０００５】
この問題を処理するために、該デジタルマイクロフォン信号路に音響エコーキャンセラー１２０３を付加することが提案された。このキャンセラーはデジタル拡声器信号１１０１を信号基準１２０１として使い、拡声器からマイクロフォンの経路の全部１３０４／１３０６を見積り、そしてこれらの見積を未キャンセルマイクフォン信号１２０２から引き算し、キャンセル済みマイクロフォン信号１２０４を作り、該キャンセル済みマイクロフォン信号が信号１１０２として該遠端へ送信される。
【０００６】
２つの主なアプローチ、すなわちフルバンドキャンセラー及びサブバンドキャンセラーは、今日音響エコーキャンセラー用に広く使われている。これらの両者は通常、エコー路見積用に適応型ＦＩＲ（有限インパルス応答）フィルターを使うが、しかしながら、これらをそれぞれフルバンドドメイン及びサブバンドドメインで適用する。
【０００７】
製品で使われる音響エコーキャンセラーは典型的に、本文書の図で示されない幾つかの更に進んだサブブロック；ダブルトークアルゴリズム、非線形処理ユニット、カンフォートノイズ発生、他を有する。明らかなため及び簡潔にするため、これらのサブブロックは省略されるが、それは本発明の原理を可能にするためにはこの様なブロックの詳細開示は不必要と考えられるからである。これらのブロックは種々であり、論文、特許及び文献に良く文書化されている。当業者にはこれらのブロックの組み込みは常識である。
【０００８】
図２は基本的フルバンド音響エコーキャンセラーを示す。
【０００９】
遠端２１０１からのデジタル信号は信号２１０２として拡声器に送られ、又拡声器基準信号２１０３としても使われる。
【００１０】
該拡声器基準信号２１０３は適応型ＦＩＲフィルター２１０４を通してフィルターされる。この適応型フィルターは部屋のインパルス応答に収斂し、該応答を追跡する。最初の収斂用に、そして該室内の何等かの音響的変化（ドアが開く、人々が移動する、他）用に、該適応型ＦＩＲフィルター２１０４は適応せねばならない。この目的用に、低廉な（低処理パワー）ＬＭＳ（最小平均２乗法）から、ＡＰＡ（アフィン投射アルゴリズム）及びＲＬＳ（再帰的最小２乗法）の様なより複雑でもっとリソースを要するアルゴリズムまで、多くの異なる適応型アルゴリズムが使われてもよい。しかしながら、普通全てのこれらのアルゴリズムは適応用にＦＩＲフィルター更新ループ２１０８を使用する。
【００１１】
該適応型ＦＩＲフィルターは反転エコー見積２１０５を出力し、該見積は未キャンセルマイクロフォン信号２１０６に加算され、エコーキャンセル済みマイクロフォン信号２１０７を計算する。
【００１２】
他のアプローチはサブバンド処理を使う。図３はこのアプローチを図解する。
【００１３】
遠端３１０１からのデジタル信号は拡声器へ信号３１０２として渡される。該信号は又アナライズフィルター３３０１を使い選択された数のサブバンドに分けられる。未キャンセルマイクロフォン信号３１０６はもう１つの（しかし等しい）アナライズフィルター３３０２を使いサブバンドに分けられる。
【００１４】
各サブバンドについて、該拡声器アナライズフィルターはサブバンド基準信号３２０３を出力するが、該サブバンド基準信号はサブバンドＦＩＲフィルター３２０４を通してフィルターされ、反転サブバンドエコー見積３２０５として計算される。マイクロフォンアナライズフィルターはサブバンド未キャンセル信号３２０６を出力するが、該信号は該反転エコー見積を加算され、サブバンドエコーキャンセル済みマイクロフォン信号３２０７を出力する。該エコーキャンセル済みマイクロフォン信号は、サブバンドＦＩＲフィルター更新ループ３２０８として示される、該ＦＩＲフィルターの適応用に使われる。
【００１５】
全てのサブバンドからの該エコーキャンセル済みマイクロフォン信号は、シンセサイズフィルター３３０３により、フルバンドキャンセル済みマイクロフォン信号３１０７に一緒に合体される。
【００１６】
フルバンド及びサブバンドの両エコーキャンセラーは出力デジタルサンプル（２１０２／３１０２）から入力デジタルサンプル（２１０６／３１０６）への応答を見積もる。この応答は、サンプリングレート変換器、ミキサー、Ｄ−Ａ変換器、拡声器、音響カップリング、マイクロフォンそしてＡ−Ｄ変換器、を含むが、それらに限定されない、該信号が通過する何等かのソフトウエア又はハードウエア、に影響される。入力信号２１０６／３１０６のサンプルのレートが出力信号２１０２／３１０２のサンプルのレートに等しいことはその設計では本来のことである。最良の性能用には、制御可能な部分の応答（遅延を含む）は一定に保たれるべきである。
【００１７】
良く設計されたシステムでは、Ｄ−Ａ及びＡ−Ｄ変換器用に同じクロック源を使うことにより、等サンプリングレートが保証されるが、一定の（又は少なくとも予測可能な）遅延が適当なハードウエア及びソフトウエア設計により保持される。
【００１８】
しかしながら、或る設計ではＡ−Ｄ及びＤ−Ａ変換器用に異なるクロック源が使われる。これは例えばパーソナルコンピュータ（ＰＣｓ）の場合であり、そこではＡ−Ｄ変換器及びＤ−Ａ変換器は異なるカード上に置かれ、それぞれ各カード上で局所的に発生される変換クロックを有する。典型的で、広く使われる状況は、オーディオはウエブカメラで取り込まれる（Ａ−Ｄ変換される）が、該オーディオはＰＣ’ｓビルトインのオーディオカードによりプレイアウトされる（Ｄ−Ａ変換される）。
【００１９】
Ａ−Ｄ変換器及びＤ−Ａ変換器間のレートの何等かの差は下記の幾つかの問題を引き起こす：
１．周波数シフト：２１０２／３１０２信号から２１０６／３１０６信号までの信号間に周波数シフトがある。線形エコーキャンセラーはこの様なシフト用に設計されてなくて、かくして得られる最大の瞬時性能が被害を受ける。
２．時間ドリフト：スピーカー信号２１０２／３１０２及びマイクロフォン信号２１０６／３１０６内の同じサンプル間の時間はゆっくり変わり、エコーキャンセラーは一定して再適応する必要がある。該エコーキャンセラーは、スピーカー信号２１０２／３１０２が適当に高出力を有する時のみ再適応出来る。従って、時間遅延はゆっくり変化するが、静寂時間（低出力２１０２／３１０２）の後の応答の結果的時間シフトは著しく大きく、可成りの残留エコーに帰着する。
３．サンプルの過大発生／不足発生：Ａ−Ｄ変換器用のサンプルの発生はＤ−Ａ変換器での消耗と異なるので、該システムの１つ以上の場所でサンプルの混雑又は欠如がある。
【００２０】
該Ａ−Ｄ変換レートとＤ−Ａ変換レートの間には２種類のドリフトがある。両者は１度に存在し得る。
【００２１】
ドリフトはクロック源（クリスタル、発振器他）のその公称値からの逸脱のため起こる。クリスタルは種々のレベルの動作を有する。クリスタルについて指定される幾つかのパラメーターは周波数、安定度、精度（１００万当たりの部分）、又はｐｐｍのみならず、温度変化による上記パラメーターの変動の限度、である。一般に、どの２つのクリスタルも精確には同じでない。それらは僅かに異なる周波数で発信し、それらの他の特性も異なる。これは、もしＡ−Ｄ及びＤ−Ａ変換器が異なるクリスタルから得られたクロック信号でドライブされるなら、例え該クリスタルが同じ公称周波数でランし、該Ｄ−Ａ及びＡ−Ｄ用デバイダーがマッチしても、それらの変換器がランするレートには僅かの差があることを意味する。この場合、時間経過時該Ａ−Ｄにより作られるサンプル数はＤ−Ａにより同じ時間中に消耗されるサンプル数とマッチしない。該Ａ−Ｄにより発生されるサンプル数が該Ｄ−Ａにより消耗されるサンプル数と比較されるこの時間が長い程、該Ｄ−Ａ及びＡ−Ｄにより処理されるサンプルの数の差は大きい。
【００２２】
又ドリフトは両立しないサンプルレートに依っても起こり得る。キャプチャー／プレイアウトデバイスがオーディオストリームのサンプルレートをサポートしない時、ソフトウエアサンプルレート変換器が該動作システムにより挿入される。しかしながら、このサンプルレート変換器は限定された分解能しか有せず、かくして公称サンプリング周波数は変化する。差は時間経過中一定であるが、可成り大きい。屡々経験する典型的値は０．６２５％、すなわち６２５０ｐｐｍである。
【００２３】
図４はＰＣ内のプレイアウト及びキャプチャーシステム（それぞれ４１００及び４２００）の典型的セットアップを図解する。精確なセットアップは、選ばれたＡＰＩと、オーディオプレイアウト／キャプチャーデバイスドライバーと、共に変わることを注意すべきである。システムを作動させるために、２重バッフアリング又は類似のものが使われる。これは図では示されてない。図は、応用ソフトウエアから見た、プレイアウト及びキャプ
チャーシステムの主な特性を説明するためのみに作られている。
【００２４】
該プレイアウトシステム４１００では、該ＤＡＣ（Ｄ−Ａ変換器）４１０１はＤＡＣＣＬＫ４１０２によりクロック駆動され、すなわちＤＡＣ４１０１はＤＡＣＣＬＫ４１０２により与えられるレートでサンプルを消耗する。該ＤＡＣＣＬＫ４１０２は発振器の遙かに高い周波数のクリスタルから通常得られる。ＤＡＣ４１０１は該ＤＡＣ  ＦＩＦＯ４１０３からの１度に１つのサンプルを消耗する。該ＤＡＣ  ＦＩＦＯはハードウエア又はソフトウエアの両者で実現されてもよい。該ＤＡＣ  ＦＩＦＯ４１０３が空になると、それはプレイアウトＳＲＣ（サンプルレート変換器）４１０４からのＮｐｌａｙｏｕｔサンプルを消耗するが、該プレイアウトＳＲＣは又、該プレイアウトＦＩＦＯ４１１０の１部であるプレイアウトリングバッフアーからの必要数のサンプルを消耗する。Ｎｐｌａｙｏｕｔは１程低くてもよいが、複数（サンプルのグループ）も普通である（Ｎｐｌａｙｏｕｔ＝１２８が観察された）。該プレイアウトリードポインター４１１３は該プレイアウトＦＩＦＯで消耗された同じ数のサンプルで更新される。該プレイアウトＦＩＦＯ内の正しい数のサンプルを該プレイアウトライトポインター４１１１から充たすことを保証するのは応用ソフトウエアのタスクである。
【００２５】
同様に、キャプチャーシステム４２００では、ＡＤＣ４２０１はＡＤＣＣＬＫ４２０２によりクロック駆動され、すなわち該ＡＤＣはＡＤＣＣＬＫ４２０２のレートでサンプルを作る。ＡＤＣＣＬＫは、前記の様に、ＡＤＣＣＬＫと必ずしも同じでない、発振器の遙かに高い周波数のクリスタルから通常得られる。該ＡＤＣは１度に１サンプルを該ＡＤＣ
ＦＩＦＯ４２０３へ送る。該ＡＤＣ  ＦＩＦＯはハードウエア又はソフトウエアの両者で実現されてもよい。該ＡＤＣ  ＦＩＦＯが満杯の時、該ＦＩＦＯはＮｃａｐｔｕｒｅのサンプルを該キャプチャーＳＲＣ（サンプルレート変換器）４２０４へ送り、該ＳＲＣは又該計算された数のサンプルを、該キャプチャーＦＩＦＯ４２１０の部分である該キャプチャーリングバッフアー４２１２へ送る。Ｎｃａｐｔｕｒｅは１程に低くてもよいが、又より多い数が普通である。該キャプチャーリードポインター４２１３は該キャプチャーＦＩＦＯに送られる同数のサンプルで更新される。該キャプチャーリードポインター４２１１から読み込まれる正しい数のサンプルを該キャプチャーＦＩＦＯから消耗することを保証するのは応用ソフトウエアのタスクである。
【００２６】
応用ソフトウエア４４００はそれぞれ、プレイアウト及びキャプチャーＦＩＦＯへ／からサンプルを送り／受ける。
【００２７】
フアイル又は他のクロック駆動されないソースからオーディオデータを読む／該ソースへオーディオデータを書く応用ソフトウエアについては、正しい数のサンプルを該プレイアウト／キャプチャーＦＩＦＯへ／から、作る／消耗することは通常簡単である。もう１つのクロック駆動されるソース／吸い込み、から／へ、オーディオデータを得る／送る単信応用ソフトウエアについても、プレイアウト／キャプチャーＦＩＦＯ、へ／から、送られる／消耗されるサンプルの数を修正することは、１つ以上のサンプルを挿入するか又は除去するか何れかにより通常寧ろ直裁的である。この様な挿入又は除去は聴取可能な劣化無しに行われ得て、これのための技術は公知である。この様な技術がサンプルを挿入か除去か何れかを行うので、時間遅延変化はあるが、大抵の応用ソフトウエアではこれは受け入れ可能である。
【００２８】
しかしながら、応用ソフトウエアにより送られるサンプルと消耗されるサンプルの間の精確な関係が重要な応用には、もう１つの解が見出されねばならない。これはエコーキャンセリングの場合である。この需要を伴う他の応用、例えば測定応用他があることを指摘されるべきである。
【発明の概要】
【００２９】
本発明の目的は、従来技術に於ける上記問題の少なくとも１つを解決する、本明細書の始めの部分で述べた方法、クロックドリフト補償ユニット、クロックドリフト補償ユニットの使用法を提供することである。
【００３０】
本願の独立請求項に規定された特徴はこの方法、クロックドリフト補償ユニットと使用法を特徴付ける。
【図面の簡単な説明】
【００３１】
本発明をより容易に理解可能にするために、下記論議では付随する図面を参照する。
【図１】ハンドフリー通信システムの典型的エコー問題を図解する。
【図２】基本的フルバンド音響エコーキャンセラーの略図である。
【図３】基本的サブバンド音響エコーキャンセラーの略図である。
【図４】ＰＣ内のプレイアウト及びキャプチャーシステムの典型的セットアップを図解する。
【図５】本発明の１実施例のクロックドリフト補償器を図解する。
【図６】本発明の代わりの実施例のクロックドリフト補償器を図解する。
【図７−８】プレイアウトシステムとキャプチャーシステムの間の異なるサンプリングレートを補償する流れ図を画く。
【図９】典型的ポインター更新計画を図解する。
【実施例１】
【００３２】
下記では、本発明が好ましい実施例の説明と付随する図面の参照により論じられる。但し、同業者は他の応用及び変型を実現すると思われ、それらは本願の独立請求項で規定した本発明の範囲内に入るものと考える。
【００３３】
本発明の或る側面の基本的アイデアは、ＰＣの様な計算ユニット用であり、例えば該計算ユニットに接続された又は該計算ユニットに含まれるオーディオＩ／Ｏデバイスに於ける、アナログからデジタルへ（Ａ／Ｄ）及びデジタルからアナログへ（Ｄ／Ａ）の変換器の異なるサンプリング周波数を補償する、クロックドリフト補償器を提供することである。
【００３４】
上記の様に、図４はＰＣに於けるプレイアウトシステム４１００及びキャプチャーシステム４２００の典型的セットアップを図解する。図５では、図４のセットアップが本発明の或る原理によるクロックドリフト補償器５３００を用いて展開される。該クロックドリフト補償器５３００は該プレイアウト及びキャプチャー信号の異なるサンプリング周波数を補償するよう構成される。該クロックドリフト補償器５３００は、共通の高周波（ＨＦ）クロック５３０１，プレイアウトタイムデバイス、或いはプレイアウトタイム見積器５３１１，プレイアウトタイム修正器５３１２，キャプチャータイムデバイス、或いはキャプチャータイム見積器５３２１，そしてキャプチャータイム修正器５３２２を有する。該ドリフト補償器５３００は、キューバッフアー、特に円形バッフアー又はリングバッフアーの様なＦＩＦＯバッフアーであってもよい、プレイアウトバッフアー５１１０にデータを書き、そしてキューバッフアー、特に円形バッフアー又はリングバッフアーの様なＦＩ
ＦＯバッフアーであってもよいキャプチャーバッフアー５２１０からデータを読む、よう構成される。更に、該ドリフト補償器５３００は、該応用ソフトウエア５４００へ／からデータを送り、受けるよう構成される。用語“応用ソフトウエア”は簡単のため要素５４００用に使われて来たが、この要素は現実にはハードウエア及びソフトウエアの両者を有してもよいことは理解されるべきである。要素５４００は又本明細書では計算ユニットと呼ばれて来ており、該ユニットは例えば、オーディオエコーキャンセルユニットであってもよい。クロックドリフト補償ユニット５３００は、該応用ソフトウエアが共通のＨＦクロック５３０１に同期化されるように、共通のＨＦクロック５３０１からの高周波クロック信号を該応用ソフトウエア５４００へ提供する。
【００３５】
該共通のクロックの周波数はこの文脈では、キャプチャーユニットにより取り込まれるアナログ信号及び該プレイアウトユニットにより出力されるアナログ信号の性質に比較して高いと理解されるべきである。約１ＭＨｚから１ＧＨｚの範囲のクロック周波数が例えば使われてもよい。
【００３６】
クロックドリフト補償器５３００は、該プレイアウトＦＩＦＯ５１１０リードポインター及び共通ＨＦクロック５３０１から、のみならず該キャプチャーＦＩＦＯ５２１０ライトポインター及び該共通ＨＦクロック５３０１から、の位置情報を請求する。該クロックドリフト補償器５３００は該位置及びクロック情報を使い、該共通ＨＦクロック５３０１と該プレイアウトサンプル番号又はプレイアウトリードポインターとの間の第１関係、同様に、該共通ＨＦクロック５３０１と該キャプチャーサンプル番号又はキャプチャーライトポインターとの間の第２関係、を計算する。これらの計算された関係に基づき、該共通のクロックドメイン内の各サンプルについて、対応するするサンプルが該キャプチャーＦＩＦＯ内で見出され、共通のクロックサンプリング周波数に於ける応用ソフトウエア５４００への入力信号を創る。同様に、該プレイアウトドメイン内の各サンプルについて、対応するサンプルが該応用ソフトウエアからのサンプル内に見出され、正しい数のサンプルが該プレイアウトＦＩＦＯへ送られることを保証する。
【００３７】
下記では、クロックドリフト補償器が例により詳細に説明される。もしリングバッフアーがバッフアー（キューバッフアー、ＦＩＦＯバッフアー）として使われるなら、ポインターがラップするであろう。下記でポインターに言及する時は、ラップされないポインターを意味する。ポインターをラップしないことは直裁的で、当業者には良く知られている筈である。
【００３８】
プレイアウトタイムデバイス又はプレイアウトタイム見積器５３１１は多数セットのデータを読むが、各セットは、共通高周波クロック５３０１と、該プレイアウトリードポインター５１１３と、のサンプル／読み出し値である。多くのこの様なセットのデータに基づき、該プレイアウトリードポインターと該高周波クロックの間の関係が見積もられる。該プレイアウトリードポインター５１１３はＤＡＣ変換クロック５１０２の表現として使われる。該ＤＡＣタイムドメイン内の各サンプル時間について、応用ソフトウエア５４００の対応する時間（該応用基準クロック、該共通のＨＦクロック５３０１により測定された）が計算される。かくして、プレイアウト（ＤＡＣ）ドメイン内の各サンプル用の正しいサンプル値が、最も近い応用ドメインサンプルとサブサンプル遅延フィルターを使うことにより該プレイアウトタイム修正ブロック５３１２により計算される。最後に、このサンプルはプレイアウトリングバッフアー５１１２に書かれる。該ＤＡＣ変換クロックが該応用（共通）クロック５３０１に比してドリフトする場合に、該タイム修正器５３１２の出力上に発生したサンプルの数が該タイム修正器５３１２により消耗されたサンプルの数と僅かに異なり、すなわちそれがサンプルレート変換器として働くことを注意すべきである。
【００３９】
同様に、該キャプチャータイムデバイス、又はキャプチャータイム見積器、５３２１は多数セットのデータを読むが、各セットは、該共通の高周波クロック５３０１と該キャプチャーライトポインターのサンプル／読み出し値である。多数セットのデータに基づき、キャプチャーライトポインターと高周波クロックの間の関係が見積もられる。該キャプチャーライトポインターは該ＡＤＣ変換クロック５２０２の表現として使われる。該応用ソフトウエア５４００のタイムドメイン内の各サンプル時間（応用基準クロック、共通ＨＦクロック５３０１により測定された）について、該ＡＤＣの対応する時間が計算される。かくして、該応用ソフトウエアの正しいサンプル値が、最も近いＡＤＣドメインサンプルと既知の補間法を使うことにより、該キャプチャータイム修正ブロックにより計算される。該応用ソフトウエアの（共通）クロック５３０１が該ＡＤＣクロック５２０２に比してドリフトする場合に、キャプチャータイム修正器５３２２の出力上に発生したサンプルの数が、該キャプチャータイム修正器５３２２の入力で消耗されたサンプルの数と僅かに異なり、すなわちそれがサンプルレート変換器として働くことを注意すべきである。
【００４０】
該ＡＤＣ及びＤＡＣ間のみの補償用には、図５で示すドリフト補償器５３００は２つの方法で簡単化される。
【００４１】
本発明の１つの例示用実施例に依れば、該応用ソフトウエアはＤＡＣＣＬＫ５１０２に同期化される。この場合、該プレイアウトリードポインター５１１３は共通のクロックとして作用し、そして図６で図解する様に、キャプチャータイムデバイス及びクロック修正器はこのクロックを該共通のクロックとして使う。該プレイアウトシステム５１００と応用ソフトウエア５４００は同期しているので、該プレイアウトデバイスとタイム修正器は簡単な或いは平凡な仕方で動作するが、それらは本発明の原理となお一貫している。この特別の実施例では、第１関係は計算されるよりも寧ろ設定されるが、第２関係は計算される。
【００４２】
本発明の第２の例示用実施例に依れば、該応用ソフトウエアは該ＡＤＣＣＬＫ５２０２に同期化される。この実施例では、キャプチャーライトポインター５２１３は共通クロックとして作用し、そしてプレイアウトタイム見積器５３１１とプレイアウトクロック修正器５３１２はこのクロックを共通クロック５３０１として使う。該ＡＤＣと応用ソフトウエアは同期しているので、該キャプチャータイムデバイスとタイム修正器は簡単な又は平凡な仕方で動作してもよいが、それらはなお本発明の原理と一貫している。この特別の実施例では、該第２関係は計算されるより寧ろ設定されるが、該第１関係は計算される。
【００４３】
しかしながら、多くの場合、１つの信頼されるクロック源に同期化することは有利である。何よりも、該共通のクロックは高分解能であるべきである（後で説明する様に、該プレイアウト又はキャプチャーポインターは必ずしも高分解能ではない）。第２に、該応用ソフトウエア５４００は出来るだけ真の世界クロックと同期したクロックを使うべきである。後者は、通信システムがもう１つのシステムと通信する時、或いは測定システムが真の世界時間での測定を参照する時、重要である。
【００４４】
従って、本発明の１実施例に依れば、安定で信頼されるクロック源（ＤＡＣＣＬＫ又はＡＤＣＣＬＫではない）が共通のＨＦクロック５３０１として選択される。この共通クロックは又応用ソフトウエア５４００の基準クロックとして作用する。例えば、共通のＨＦクロック５３０１はＰＣのシステムクロックであってもよい。この実施例で、該第１及び第２関係は共に計算される。
【００４５】
図７及び８は本発明の１実施例によるクロックドリフト補償器の動作の展望のフローチャート表現を示す（下記論議では図５を参照する）。図７及び８のブロックの各々は下記論議で更に規定される過程を表す。
【００４６】
動作は過程６００で始まるが、そこでは該応用ソフトウエア５４００はスタートし、それぞれプレイアウト／キャプチャーシステム５１００／５２００へ／からデータを送ること５４０２及び請求すること５４０１を始動する。本発明の１つの例示用実施例に依れば、５４００は、通信ネットワークを経由して遠隔側（示されてない）からデジタルオーディオ信号を受信し、そしてプレイアウトシステム５１００を経由してスピーカー上でそれを演奏する、オーディオエコーキャンセラー（ＡＥＣ）である。近端からの音声はキャプチャーシステム５２００により取り込まれ、デジタル化される。背景セクションで説明した様に、該ＡＥＣはエコーのないオーディオ信号を計算し、それを通信ネットワーク経由で遠隔側（図示されていない）へ送り返す。
【００４７】
上記説明の補償計画を複雑化する幾つかの要因がある。
【００４８】
該プレイアウト／キャプチャータイム見積器５３１１／５３２１がデータセットを読む（過程６０１）時、該共通のＨＦクロック５３０１と該プレイアウト／キャプチャーＦＩＦＯポインター５１１３／５２１３は全部が同時には得られない。それらの１つは常に最初に、そして他のものは次に読まれねばならない。勿論、該データセット内の該第１クロックが読まれると、第２クロックはランを続ける。読みの間の時間が一定である限り、これは何等問題を創らない。しかしながら、コンピュータハードウエア及び応用ソフトウエアはあらゆる種類の割り込み他を屡々要求し、今度はそれが読みの間の変化する時間となる。或る場合は、割り込みを不可にすることにより、該タイム見積器５３１１／５３２１は、各セット内の２つの読みの間の時間偏差が重要でない、或いは少なくとも、フィルター動作により該時間の不確かさを除去することを可能にする程充分小さい、ことを保証する（状況１ａ）。しかしながら、或る応用ソフトウエアは割り込みを不可にする権威を有さず、読み出し間に有意な時間偏差へ導く。
【００４９】
或る応用ソフトウエアは割り込みを不可にする権威を有しないので、本発明の或る側面に依る方法とデバイスは各データセットを或る基準に依りチェックし、前記基準に適合しないデータセットを除去する。過程６０２に図解される様に、各データセットについて、該ＨＦクロック５３０１の読み出し値は受け入れ可能かがチェックされる。これは該共通ＨＦクロック５３０１を最初に読むことで行われ、その後該ＦＩＦＯポインター５１１３／５２１３に該共通ＨＦクロック５３０１のもう１つの読みが続くことで行われる。今、データの各セットは２つの代わりに３つのデータ点を有する（三つ組み）。データの多くのセットを解析することにより、２つの共通ＨＦクロック５３０１読み出しの間の時間の分布が計算される。もしデータセット（三つ組み）内の２つの共通ＨＦクロック５３０１間の時間が異常（該分布に従うには余りに長い）なら、異常な何か（例えば、割り込み）が起こったと取られ、該データセットを不確かとする。この様な不確かなデータセットは不適格化されねばならず（過程６０５）、更に進んだ計算用には不確かさの低いデータセットのみを残す（過程６０３）。
【００５０】
上記で説明した、もう１つの問題は、該ＦＩＦＯポインターが可成り大きなステップで更新されてもよいことである。換言すれば、該ＦＩＦＯバッフアー５１１０／５２１０は１度に１つづつのサンプルを書かなくても／読まなくてもよく、寧ろ周期的にデータの塊、例えば１度に１２８サンプル又は１度に１６サンプル、を読み／書きしてもよい。従って、該プレイアウト／キャプチャーポインター５１１３／５２１３の連続した読み出し値は同じ結果を与えるか、或いは２つの連続する読み値も大きな値で異なるかも知れない。これは図９の例で図解される。この例で、データの読みのセットは；（０；０）、（１；０）、（２；０）、（３；０）、（４；０）、（５；２）、（６；２）、（７；２）、（８；２）、（９；４）、（１０；４）、他である。これは現実の変換クロックの量子化として作用し、正しく扱われないなら問題を引き起こすかも知れない。直接、読むと、この
量子化は量子化ノイズを導入するが、“定例の”量子化ノイズと異なり、このノイズは白色／ランダム過程であるとは仮定出来ず、それは非常に規則的で、クロックと相関がある。該ノイズは３角形信号パターンとして現れ、該パターンは少なくサンプルされた時、エイリアス問題等をもたらす（ＣＰＵの複雑さのために、データセットは頻繁には読まれるべきでない）。
【００５１】
本発明の或る側面では、この問題はポインターが更新する時に該ＦＩＦＯポインター５１１３／５２１３を読むことにより解決されてもよい。これは貴重なＣＰＵ資源を節約し、何故ならば該ＣＰＵは更新の間の期間はフリーにされ得るからである。典型的に応用ソフトウエア５４００は該ポインターの期待される更新の直前のラン時間を保証／請求せねばならない（例えば、タイム割り込みを使って）。期待される更新タイムは初期の段階で該ＦＩＦＯの更新手順を分析することにより見出されてもよい。例えば、もしＦＩＦＯが典型的に１２８サンプルの塊で更新し、変換クロック５１０２／５２０１が４８ｋＨｚの周波数を有するなら、該ドリフト補償器５３００は更新後それが新データセットの読みに復帰する前に、約Ｎ＊１２８／４８０００秒（ここでＮはＣＰＵの複雑さと精度の間の妥協として選ばれた、何等かの正の整数）の間、該ＦＩＦＯポインター（５１１３及び／又は５２１３）を読むことを停止してもよい。期待される更新の直前に、該ドリフト補償器５３００は、該ポインターが２つの連続する共通ＨＦクロック読み出し間で更新するまで、三つ組みを読む。実際にはこれは例えば、Ｃ−がクロックの読みを示し、Ｐ−がポインターの読みを示すとして、Ｃ−１、Ｐ−１、Ｃ−２、Ｐ−２、Ｃ−３、Ｐ−３、Ｃ−４他の様に、該ポインターが更新されるまで、共通のＨＦクロック５３０１、次いでＦＩＦＯポインター５１１３／５２１３、ＨＦクロック、ＦＩＦＯポインター等々を読むことにより実施される。もしＦＩＦＯポインター５１１３／５２１３がＰ−１からＰ−２へ更新するなら、登録されている該共通のＨＦクロック５３０１はＣ−２か、又はＣ−１，Ｃ−２及びＣ−３のある平均（又は重み付け）となる。登録されるポインターは典型的に（しかし他の変形も適用可能である）Ｐ−１及びＰ−２の平均である。前の基準に適合するために、Ｃ−１及びＣ−２の間の時間は異常に高くあってはならないか、又は該データセットは捨てられるだろう（過程６０５）。ＣＰＵ負荷の観点からは、それらを読みながら該ポインター内の移行についてテストするのが最善であろう。しかしながら、時間の不確かさを減ずる、すなわち、（この場合）Ｃ−１からＣ−２への出来るだけ短時間を保証するために、与えられた時間の間（ポインターの期待される移行＋マージンまで）該シーケンスを記録保存し、後で該移行を配置することが有利である。
【００５２】
更に進んだ計算が、正しくない又は不確かなデータセットにより影響されないことを保証するために、なおもう１つの問題が取り組まれる必要がある。パーソナルコンピュータに於ける不充分さのために、ＦＩＦＯポインターの不思議で予期しない動作；予期しない更新過程、ポインターが後ろへ戻る他、が経験される。この動作はドリフト、キュー問題（請求の誤った実行）を補償するよう努めるオーディオカードドライバーにより引き起こされる。従って、過程６０４に図解する様に、過程６０２で捨てられてない各データセットについて、もう１つのチェックが行われる。上記の様に、データは時間経過中解析され、統計も正規のポインターインクレメントに亘り保たれる。もしポインターが異常な値により更新されるなら、そのデータセットは捨てられる（過程６０５）。例えば、ポインターが或る時間に亘り１２８サンプルで連続的に更新されるなら、１２８サンプルから可成り逸れる更新は不確かなデータセットと見なされ、従って捨てられる。しかしながら、サンプルレート変換器５１０４／５２０４のために、１サンプルでの逸れ（すなわち、１２７か又は１２９の更新）は有効な更新と見なされねばならない。
【００５３】
時間経過に亘り、多数対のＣ及びＰデータが過程６０２及び６０４の両者で承認され、次いで登録される（過程６０６）。このデータは全ての無資格の対を許すアルゴリズムで処理されねばならず、それは該アルゴリズムが均一なサンプリングを要求してはならない
ことを意味する。更に、ノイズの多い（状況１ａからのノイズ）セットの対から、該アルゴリズムは該共通ＨＦクロック５３０１（Ｃにより示される）とポインター５１１３／５２１３（Ｐにより示される）の間の関係を適当な精度で見積もらねばならない。従って、本発明の１実施例に依れば、共通クロックとキャプチャーポインターの間及び共通クロックとプレイアウトポインターの間の関係は、統計モデルに基づき計算される。下記では或る適当な線形回帰法が導入される。しかしながら、本発明の範囲内で他の統計モデルが使われてもよい。
【００５４】
１つのサンプルの現実のクロック（共通ＨＦクロック５３０１により測られる）は下記で計算される。
【００５５】
Ｃｆｉｌｔｅｒｅｄ＝α＊Ｐｓａｍｐｌｅ＋β                      ［１］
【００５６】
係数αは、共通ＨＦクロック５３０１とポインター５１１３／５２１３の間のレート関係であり、公称ＨＦクロック周波数をポインター更新レートで割った値にクロックドリフト定数を規定する小さい値をプラス／マイナルした値を有する。係数βは、オフセットに過ぎず、Ｃ及びＰが同じ時間にゼロでスタートしない普通の場合を除く。
【００５７】
従って、過程６０７で、該係数α及びβが計算される。本発明の１例示用実施例に依れば、最小平均２乗アルゴリズムがフィルター用アルゴリズムとして使われる。
【００５８】
ＳＰ＝ΣＰｉ                                                    ［２］
ＳＣ＝ΣＣｉ                                                    ［３］
ＳＰＰ＝ΣＰｉ２                                                ［４］
ＳＰＣ＝ΣＰｉ＊Ｃｉ                                            ［５］
Ｍ＝計算内のデータセットの数、
ｉは合計を計算するデータセットのセットを示す
α＝（Ｍ＊ＳＰＣ−ＳＰ＊ＳＣ）／（Ｍ＊ＳＰＰ−ＳＰ２）          ［６］
β＝（ＳＣ＊ＳＰＰ−ＳＰ＊ＳＣ）／（Ｍ＊ＳＰＰ−ＳＰ２）        ［７］
【００５９】
Ｃｆｉｌｔｅｒｅｄの精度はより多い数のデータ対（Ｍ）で改善する。しかしながら、時間経過するとドリフトオフセットは変わり、ＰｓａｍｐｌｅとＣｆｉｌｔｅｒｅｄの間の線形関係を無効化させる（αが変化する）。従って、該計算の最初と最後のデータセット間の時間は、精度（長時間を要する）と、変化するドリフト係数を追跡する能力（線形関係が良好な近似であること、従って時間の限定、を要する）と、の間の妥協として選択されねばならない。高次モデルは使われ得て、この妥協を簡単化するが、実際には、該ドリフト係数は、線形／１次モデルを使って適当な妥協を行うのに充分な程ゆっくり変化する。
【００６０】
変化するドリフト係数の追跡を続ける必要性は、新データセットが検索される、すなわち上記合計はスライドする窓として計算されるので、クロック／ポインターデータの最も古いセットが計算外に残されねばならぬことを意味する。直接各新しい対のデータ用に合計を計算することは必ずしも必要でない。ＣＰＵサイクルを節約するために、新及び最も古いデータセットの更新で充分である。
【００６１】
ＳＰ，ｍ＝ＳＰ，ｍ−１＋Ｐｍ−Ｐｍ−Ｍ                        ［８］
ＳＣ，ｍ＝ＳＣ，ｍ−１＋Ｃｍ−Ｃｍ−Ｍ                        ［９］
ＳＰＰ，ｍ＝ＳＰＰ，ｍ−１＋Ｐｍ２−Ｐｍ−Ｍ２                ［１０］
ＳＰＣ，ｍ＝ＳＰＣ，ｍ−１＋Ｐｍ＊Ｃｍ−Ｐｍ−Ｍ＊Ｃｍ−Ｍ    ［１１］
ここでＭ＝計算内のデータセットの数、
ｍは最も最近の対のインデックスを示す
α＝（Ｍ＊ＳＰＣ，ｍ−ＳＰ，ｍ＊ＳＣ，ｍ）／（Ｍ＊ＳＰＰ，ｍ−ＳＰ，ｍ２）
［１２］
β＝（ＳＣ，ｍ＊ＳＰＰ，ｍ−ＳＰ，ｍ＊ＳＣ，ｍ）／（Ｍ＊ＳＰＰ，ｍ−ＳＰ，ｍ
２）                                                          ［１３］
【００６２】
上記式は理論的には正しいが、限られた精度／丸め込みのために形成される誤差が問題を引き起こす。従って、本発明のもう１つの例示用実施例に依れば、その計算に損失係数（δ）が付加される。
【００６３】
ＳＰ，ｍ＝δ＊ＳＰ，ｍ−１＋Ｐｍ−δＭ＊Ｐｍ−Ｍ              ［１４］
ＳＣ，ｍ＝δ＊ＳＣ，ｍ−１＋Ｃｍ−δＭ＊Ｃｍ−Ｍ              ［１５］
ＳＰＰ，ｍ＝δ＊ＳＰＰ，ｍ−１＋Ｐｍ２−δＭ＊Ｐｍ−Ｍ２      ［１６］
ＳＰＣ，ｍ＝δ＊ＳＰＣ，ｍ−１＋Ｐｍ＊Ｃｍ−δＭ＊Ｐｍ−Ｍ＊Ｃｍ−Ｍ
［１７］
ＳＭ＝Σδｉ，ｉ＝０．．（Ｍ−１）                            ［１８］
α＝（ＳＭ＊ＳＰＣ，ｍ−ＳＰ，ｍ＊ＳＣ，ｍ）／（ＳＭ＊ＳＰＰ，ｍ−ＳＰ，ｍ２
）                                                            ［１９］
β＝（ＳＣ，ｍ＊ＳＰＰ，ｍ−ＳＰ，ｍ＊ＳＣ，ｍ）／（ＳＭ＊ＳＰＰ，ｍ−ＳＰ，
ｍ２）                                                        ［２０］
【００６４】
ＳＭは一定であり、かくして１度計算する必要があるのみである。
【００６５】
該損失係数δは１より少し小さく選択されるのが典型的である。この係数はより古いデータの影響を低減し、それは又丸め誤差について忘却係数（ｆｏｒｇｅｔｔｉｎｇ  ｆａｃｔｏｒ）を導入する。
【００６６】
損失係数δの付加は該低減を１つの更に進んだ簡単化で可能にする。Ｍを無限大として選択することにより、δＭは０に近付き、従ってスライドする合計［１４］−［１７］内の引き算は省略出来て、合計する目的用の遅延ライン内にはデータは蓄積されない。欠点は適当なフィルタリングと変化するドリフト係数を追跡する能力との間のより難しい妥協である。全てのデータ対は“永久に生きる”が、ドリフト係数の追跡は多くの場合可能であり、それはより古いデータ対（損失係数δの適当な選択により）は計算内に有意でない重みを有するからである。
【００６７】
どんなサンプル／ポインターの正しい時間Ｃｆｉｌｔｅｒｅｄ（共通ＨＦクロック５３０１に対する）も、見積もられたα、β及び式［１］、Ｃｆｉｌｔｅｒｅｄ＝α＊Ｐｓａｍｐｌｅ＋β、過程７０１に基づき、計算されてもよい。
【００６８】
プレイアウトタイム修正器５３１２及びキャプチャータイム修正器５３２１のタスクは、異なるドメイン間の時間オフセット／スキューを知って、１つのタイムドメイン内の正しいサンプル値を、もう１つのタイムドメイン内の既知のサンプルに基づき、計算することである。下記では、本発明の１実施例により、キャプチャードメインサンプルが如何にして共通ドメインサンプルに変換されるかを説明する。しかしながら、共通ドメインからプレイアウトドメインへの変換は同様である。
【００６９】
計算されたクロック関係（過程７０１）に基づき、共通ドメイン内の各サンプルについて、キャプチャーサンプルタイム修正器５３２１はキャプチャードメイン内の対応するサンプルを見出す。用語、対応するサンプルとは、共通ドメイン内の各サンプル時間について、その時間用のキャプチャードメイン内のそのサンプル値が、その時間にサンプルが存
在し、サンプル値を直接コピーすることによるか、又は或る種の間挿法の技術を使ってその時間のサンプル値を計算することによるか、何れかにより見出されるサンプルと解釈されるべきである。それで、共通ドメイン内の各サンプルについて、キャプチャーサンプルタイム修正器５３２１は、共通ドメイン内のサンプルに時間的に最も近いキャプチャードメイン内のサンプル（インデックスｊ）を見出す（過程７０２）。もしドメイン間のオフセット（時間スキュー）が整数なら、サンプルｊはコピーされ、直接使われる（過程７０６）。しかしながら、該オフセット（時間スキュー）は通常整数ではない。従って、分数値τ、以後残留係数τと呼ぶ、が計算される（過程７０３）。該残留係数、τ、は該整数のオフセット／スキュー値を引き算した後の剰余であり、サブサンプル遅延を規定し、概略−０．５と０．５の間にあるべきである。サンプリング周波数のドリフトのために範囲［−０．５、０．５］の僅かに外側の値が起こることを注意すべきである。
【００７０】
サブサンプル遅延で信号を遅延させることは、一定時間遅延を有する全帯域通過フィルターを使って行われてもよい。オフセットを有するシンクパルスはこれらの特性を有する。シンクパルスはしかしながら、規定により長さが無限大であり、実用的実施では窓が適用されねばならない。該窓の特性と長さは、その周波数応答（大きさ及び遅延の両面で）が関心のある全周波数で適当な精度を有することを保証するよう選ばれねばならない。例えば、もしエコーキャンセラーが１６ｋＨｚのサンプリングレートで作動するなら、７ｋＨｚまでのオーディオ信号が普通存在する。この場合、周波数応答の大きさと遅延は７ｋＨｚまでフラットであらねばならないが、７ｋＨｚより上では大きさ及び位相は理想的応答から逸れてもよく、それはこの帯域では信号が無いからである。この目的で非常に良い特性を有すると見出された１つの窓の種類はブラックマン窓である。
【００７１】
かくして長さＬ＋１のサブサンプル時間遅延フィルター（ｈτ）が計算される。
【００７２】
ｈτ＝ｓｉｎｃ｛（−Ｌ／２．．Ｌ／２）−τ｝＊ｗｉｎｄｏｗ（ｌｅｎｇｔｈ  Ｌ
＋１）                                                        ［２１］
【００７３】
Ｌ＝４８、ブラックマン窓、１６ｋＨｚのサンプリング周波数、７ｋＨｚまでの関心のある周波数を選ぶと、このフィルターの時間遅延誤差は０．００５サンプルより小さく、そして増幅誤差は０．００５ｄＢより小さく、この様な小さい誤差はエコーキャンセラー性能の気付き得る劣化を引き起こさないであろう。
【００７４】
最後に、過程７０５で、該共通クロックドメインのサンプルｙ（換言すれば、ｊ±τに於けるサンプル値）が、時間遅延フィルター（ｈτ）とキャプチャードメインからのサンプルのシリーズとの畳み込みとして計算される。
【００７５】
ｙ＝ｈτｘ［ｊ−Ｌ／２．．ｊ＋Ｌ／２］                        ［２２］
【００７６】
ここでｘはキャプチャータイムドメインからのサンプルのタイムのシリーズである。該計算で使われるサンプルのベクトルは時間的に最も近いサンプル付近に中心を有し、ｊにより規定されるが、残るサブサンプルの遅延は該全域通過フィルターｈτにより規定される。
【００７７】
ドリフティングの場合、残留係数τは各サンプルについて変わり、従って各サンプル用に新フィルターｈτが必要である。各サンプル用に新フィルターを計算するのは余りにも消耗する計算となる。データセットの適切な選択及び適当なフィルタリングは確保されるが、時間遅延に際して或る残留ノイズが常にあるであろう。従って、気付き得る劣化無しに、（例えば、均一に分布した）離散したセットの遅延と予め計算されたフィルターの対応するセットとを規定することは可能である。処理中に、現実の遅延と比較して最小の誤
差を有する予め計算されたフィルターが選択される。この効果はτの量子化と同じである。サブサンプル遅延が該［−０．５、０．５］範囲を越えるので、これらの超過遅延をも処理する或る予め計算されたフィルターもあるべきこと、を注意すべきである。
【００７８】
このタイム修正アルゴリズムは、連続する共通クロックドメインサンプル用に、キャプチャードメインから共通ドメインへのリサンプラーとして作用する。もし周波数に何等かのドリフトがあるなら、見積もりタイムも対応してドリフトし、従ってレート（そしてサンプル数）は意図された様に、キャプチャードメインから共通クロックドメインへ僅かに変えられる。本発明の１実施例に依り、全帯域通過フィルターをレート変換アルゴリズムのフィルターとして使うことは或る理論的“ためらい”を有し、例えばシンク幅がサンプル変換レートに理想的に適合されるべきことを指摘されるべきである。しかしながら、実用目的では、変換レートが常に１に非常に近いので、これらの理論的側面は重要でない。
【００７９】
上記で論じた同じ種類の修正はプレイアウト側でも行われる。従って、応用ソフトウエア（例えば、計算ユニットで実施されるエコーキャンセラーアルゴリズム）は送信され、受信される全信号について同じサンプル周波数（時間ベース）を見る。従って、非同期ＡＤＣ及びＤＡＣ変換レートを有するシステムでそれを働かせるために、例えば、標準エコーキャンセリングアルゴリズムの修正は必要でない。
【００８０】
ＰＣでは、オーディオキャプチャー又はプレイアウトのグリッチは屡々存在する。これらはオーディオデータの完全な失われたフレーム又は１つのサンプルの消失により引き起こされる大きなグリッチであってもよい。理由はＣＰＵ過負荷等であってもよい。この様なグリッチの検出と調整の方法を規定するのは本発明の範囲外である。しかしながら、説明したアプローチを使い、サンプルの小部分の精度を用いたタイミングの計算は可能であり、この様な検出と修正を簡易化する。
【００８１】
本発明の方法及びドリフト補償器は幾つかの利点を有する。何等かのドリフト又はタイミングの他の差は高精度で効率的に検出され、応用ソフトウエア５４００，例えばエコーキャンセラー又は他の計算ユニットを適当に働かせる。該高精度のため、グリッチの様な他の欠陥は容易に検出され、補償される。
【００８２】
リセット用アルゴリズムは無いので、状況の何等かの変化は自動的に検出され、アルゴリズムにより補償される。誤差又はオフセット形成は無く、応用ソフトウエア５４００の出力（例えば、エコーキャンセラー拡声器信号２１０２／３１０２）からプレイアウト及びキャプチャーシステム及びソフトウエア層を通って該応用ソフトウエア入力（例えば、該エコーキャンセラーマイクロフォン入力２１０６／３１０６）までの経路は常に一定である。
【００８３】
完全なシステムは信頼され、良く知られたクロック源に合うようクロック駆動及び同期化され、何等かのベンダーのＡＤＣ又はＤＡＣサブシステムに依存しない。
【００８４】
クロックドリフト補償器５３００は完全に別のモジュールであり、そのことは該補償器が標準の応用ソフトウエアを調整する何の必要も無しに該標準の応用ソフトウエアと共に使用され得ることを意味する。例えば、同期ＡＤＣ及びＤＡＣを有する埋め込まれた製品用に開発されたエコーキャンセラーは、更に修正すること無しに、論じられたドリフト主題を用いて、ＰＣ内で使われ得る。
【００８５】
本発明のクロックドリフト補償器５３００は、ＤＡＣ及びＡＤＣ間の既知の／固定した関係を要するどんな種類の応用ソフトウエア用にも適用可能である。
【００８６】
該クロックドリフト補償器は、電話会議システム又はビデオ会議システムの様な、遠隔会議システムでの音響エコーキャンセリング用に使用されてもよい。
【００８７】
特に、該クロックドリフト補償器は、遠隔会議ターミナルが通信ネットワークを経由して相互通信する遠隔会議システムで音響エコーキャンセリングを得るために、電話会議ターミナル又はビデオ会議ターミナルの様な遠隔会議ターミナルに組み入れられてもよい。
【００８８】
この様な遠隔会議ターミナルは更に、オペレーティングシステム及び応用ソフトウエアを動作させる定例のパーソナルコンピュータの様な計算ユニットと、該クロックドリフト補償器内に含まれるプレイアウトユニットにより含まれるプレイアウトＦＩＦＯバッフアーからデジタルデータを読むよう構成されたＤ−Ａ変換器と、該Ｄ−Ａ変換器により提供されるアナログ信号を増幅するよう構成されたオーディオ増幅器と、該オーディオ増幅器の出力に接続されたオーディオ拡声器と、マイクロフォンと、該マイクロフォンに接続されたマイクロフオン増幅器と、該マイクロフォン増幅器出力信号をデジタル形式に変換し、該デジタル信号を該クロックドリフト補償器内に含まれるキャプチャーユニットにより含まれるキャプチャーＦＩＦＯバッフアーへ提供するよう配備されたＡ−Ｄ変換器と、を具備する。該計算ユニットはローカルエリアネットワーク及び／又はインターネットの様な通信ネットワークに動作的に接続されてもよく、かくして該ネットワーク上の遠隔会議を可能にする。該遠隔会議ターミナルはカメラと、ディスプレーとビデオ会議を可能にする更に進んだ構造的及び機能的特徴と、を追加して具備してもよい。
【図１】
2011512698.tif 000003
【図２】
2011512698.tif 000004
【図３】
2011512698.tif 000005
【図４】
2011512698.tif 000006
【図５】
2011512698.tif 000007
【図６】
2011512698.tif 000008
【図７】
2011512698.tif 000009
【図８】
2011512698.tif 000010
【図９】
2011512698.tif 000011
【国際調査報告】
2011512698.tif 000012
2011512698.tif 000013