(57)【要約】      （修正有）【課題】複数の入力を同時に受信する環境で、アナログマイクロホンゲインを自動的に初期化し制御するシステムレベル自動ゲイン制御（「システムＡＧＣ」）を提供すること。【解決手段】システムＡＧＣは外部ゲイン制御コマンドを横取りし、マイクロホンからの入力信号に適用される対応するデジタルゲインを対応するアプリケーションに返すことによって、個別にゲインを制御するように動作することも阻止する。結果として複数のアプリケーションが同時にゲインを制御しようとすることによって生ずるマイクロホンゲインの発振および不安定に関連する問題を回避するとともに、逆に各アプリケーションが他のアプリケーションのオーディオキャプチャ信号に影響を与えることも阻止する。さらにシステムＡＧＣは、背景環境に応じて、クリッピングを発生させることなくマイクロホンの信号対雑音（ＳＮＲ）比を最大にするように動作する。【選択図】図３
2006270949.tif 000002
【特許請求の範囲】
【請求項１】
オーディオ入力ゲインレベルを自動的に制御するためのコンピュータ実行可能命令を備えたコンピュータ可読媒体であって、
１つまたは複数の各オーディオチャネルごとに、対応するオーディオ信号のサンプルの解析を通して背景ノイズフロアエンベロープを推定する命令と、
前記背景ノイズフロアエンベロープが前記オーディオチャネルのいずれかの所定の閾値を下回っているかどうかを判定する命令と、
各オーディオチャネルからの前記オーディオ信号のアナログ−デジタル変換によって得られた前記各オーディオ信号のクリッピングの可能性を評価する命令と、
前記ノイズフロアエンベロープが前記所定の閾値を下回るとともに、前記対応するオーディオ信号がクリップすることが予測されておらずかつ実際にクリップしていない場合には、いずれかのオーディオチャネルの前記ゲインを増加させる命令と、
前記対応するオーディオ信号がクリップすることが予測されるか、または実際にクリップしている場合には、いずれかのオーディオチャネルの前記ゲインを減少させる命令とを備えることを特徴とするコンピュータ可読媒体。
【請求項２】
前記各オーディオ信号の同時コピーを各オーディオチャネルから複数の各個別のオーディオ処理アプリケーションに提供する命令をさらに備えることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記個別のオーディオ処理アプリケーションのいずれかによって発行されたゲイン制御コマンドを横取りする命令と、
前記個別のオーディオアプリケーションにとっては前記発行されたゲインコマンドが前記対応するオーディオチャネルのプリアンプによって受信され実行されたように見えるように、前記対応する個別のオーディオ処理アプリケーションに応答する命令と、
前記横取りしたゲイン制御コマンドに対応するデジタルゲインを、前記対応する各個別のオーディオ処理アプリケーションに提供される前記オーディオ信号の前記コピーに適用する命令とをさらに備えることを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項４】
単一のグローバルゲイン値がすべてのオーディオチャネルに適用され、
前記オーディオチャネルのいずれかの前記ノイズフロアエンベロープが前記所定の閾値を下回るとともに、前記オーディオ信号のいずれもがクリップすることが予測されておらずかつ実際にクリップしていないときはいつでも、すべてのオーディオチャネルに対して前記ゲインを等しく増加させ、
いずれかのオーディオチャネルのいずれかのオーディオ信号がクリップすることが予測されるか、または実際にクリップしているときはいつでも、すべてのオーディオチャネルの前記ゲインを等しく減少させることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項５】
いずれかのオーディオチャネルの前記ゲインを増加または減少させることなど、前記ゲインに対する何らかの調整は、前記ゲインに対する直前の調整が、前記背景ノイズフロアエンベロープを推定するために使用される前記対応するオーディオ信号のあらゆるサンプルに適用されるために必要な時間に少なくとも等しい時間だけは遅延されることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項６】
いずれかのオーディオチャネルのいずれかのオーディオ信号がフラットライン信号であるかどうかを検出し、フラットライン信号を有するオーディオチャネルが存在する場合にはそのチャネルに対するゲインの増加を阻止する命令をさらに備えることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項７】
システムレベルのオーディオゲイン制御を提供する方法であって、コンピュータ装置を使用して、
前記コンピュータ装置に結合された１つまたは複数のオーディオソースに関連するプリアンプの前記ゲインを制御する集中ゲイン制御処理を提供するステップと、
前記各オーディオソースから受信した各オーディオ信号の同時実時間コピーを複数の個別のオーディオ処理アプリケーションに提供するステップとを備えることを特徴とする方法。
【請求項８】
前記各個別のオーディオ処理アプリケーションが前記オーディオソースのいずれかに関連する前記プリアンプのいずれかにゲイン制御コマンドを発行することを阻止するステップをさらに備えることを特徴とする請求項７に記載の方法。
【請求項９】
前記各個別のオーディオ処理アプリケーションがゲイン制御コマンドを発行することを阻止するステップは、
前記個別のオーディオ処理アプリケーションのいずれかによって発行されたゲイン制御コマンドを横取りするステップと、
前記個別のオーディオアプリケーションにとっては前記発行されたゲインコマンドが前記対応するオーディオソースのプリアンプによって受信され実行されたように見えるように、前記対応する個別のオーディオ処理アプリケーションに応答するステップと、
前記横取りしたゲイン制御コマンドに対応するデジタルゲインを、前記対応する各個別のオーディオ処理アプリケーションに提供される前記オーディオ信号の前記コピーに適用するステップとをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
１つまたは複数のオーディオソースに関連する前記プリアンプに適用された前記ゲインは、推定されたノイズフロアと、前記１つまたは複数のオーディオソースから受信した前記オーディオ信号が前記オーディオ信号のアナログ−デジタル変換の間にクリップすることが予測されるかまたは実際にクリップしているかのいずれかであるかどうかとの組合せに応じて決定されることを特徴とする請求項７に記載の方法。
【請求項１１】
１つまたは複数のオーディオソースに関連するプリアンプの前記ゲインを制御する前記集中ゲイン制御処理は、いずれのゲイン制御コマンドも、直前のゲイン制御コマンドを前記対応するプリアンプに伝えるために必要な時間に少なくとも等しい時間の後まで遅延させることを特徴とする請求項７に記載の方法。
【請求項１２】
前記オーディオソースのいずれかに対応するいずれかのオーディオ信号がフラットライン信号であるかどうかを判定するステップと、前記集中ゲイン制御処理が前記対応するオーディオソースに関連するプリアンプの前記ゲインを増加させることを阻止するステップとをさらに備えることを特徴とする請求項７に記載の方法。
【請求項１３】
前記オーディオソースのいずれかに対応するいずれかのオーディオ信号がフラットライン信号であるかどうかを判定するステップは、各オーディオソースごとに、計算された平均オーディオ信号値を前記対応するオーディオ信号の現在のオーディオデータフレームから減算するステップと、結果として得られたオーディオ信号を検査してその信号がフラットラインオーディオ信号かどうかを判定するステップとを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
オーディオソースのゲインを制御しオーディオ信号を分配するシステムであって、
コンピュータ装置に結合された１つまたは複数のオーディオソースと、
各オーディオソースにゲインを提供する１つまたは複数のプリアンプとを備え、
システムレベル集中ゲイン制御コマンドを各プリアンプに提供し、かつ
前記各オーディオソースから受信した各オーディオ信号の同時実時間コピーを複数の個別のオーディオ処理アプリケーションに提供することを特徴とするシステム。
【請求項１５】
前記個別のオーディオ処理アプリケーションのいずれかによって発行されたゲイン制御コマンドを横取りし、
前記個別のオーディオアプリケーションにとっては前記発行されたゲインコマンドが前記対応するオーディオソースの前記プリアンプによって受信され実行されたように見えるように、前記対応する個別のオーディオ処理アプリケーションに応答し、かつ
前記横取りしたゲイン制御コマンドに対応するデジタルゲインを、前記対応する各個別のオーディオ処理アプリケーションに提供される前記オーディオ信号の前記コピーに適用することをさらに備えることを特徴とする請求項１４に記載のシステム。
【請求項１６】
各プリアンプに提供される前記ゲイン制御コマンドはグローバルゲイン値を含み、
２つ以上のオーディオソースのいずれかの計算されたノイズフロアエンベロープが所定の閾値を下回るとともに、前記オーディオ信号のいずれもがクリップすることが予測されておらずかつ実際にクリップしていないときはいつでも、前記２つ以上のオーディオソースに対するグローバルゲインを等しく増加させ、
前記２つ以上のオーディオソースのいずれかについてのいずれかのオーディオ信号がクリップすることが予測されるか、または実際にクリップしているときはいつでも、前記グローバルゲインを等しく減少させることを特徴とする請求項１４に記載のシステム。
【請求項１７】
各プリアンプに提供された前記ゲイン制御コマンドは、
各オーディオソースからの前記オーディオ信号のアナログ−デジタル変換の間に、前記オーディオ信号のいずれかがクリップすることが予測されるかまたは実際にクリップしているかのいずれかであるかどうかを判定するコマンドと、
計算されたノイズフロアエンベロープが所定の閾値を下回るとともに、前記対応するオーディオ信号がクリップすることが予測されておらずかつ実際にクリップしていない場合には、いずれかのオーディオソースの前記ゲインを増加させるコマンドと、
前記対応するオーディオ信号がクリップすることが予測されるか、または実際にクリップしている場合には、いずれかのオーディオソースの前記ゲインを減少させるコマンドとを含むことを特徴とする請求項１４に記載のシステム。
【請求項１８】
いずれのゲイン制御コマンドも、直前のゲイン制御コマンドを各対応するプリアンプに適用するために必要な時間と少なくとも等しい時間だけは遅延されることを特徴とする請求項１４に記載のシステム。
【請求項１９】
いずれかのオーディオソースのいずれかのオーディオ信号がフラットライン信号であるかどうかを検出し、フラットライン信号を有するオーディオソースに対応するプリアンプが存在する場合には、ゲイン制御命令が前記プリアンプの前記ゲインを増加させることを阻止することをさらに含むことを特徴とする請求項１４に記載のシステム。
【請求項２０】
いずれかのオーディオソースのいずれかのオーディオ信号がフラットライン信号かどうかを検出することは、各オーディオソースごとに、計算された平均オーディオ信号値を前記対応するオーディオ信号の現在のオーディオデータフレームから減算し、結果として得られた前記現在のオーディオデータフレームのレベルを検査することを含むことを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はオーディオ入力信号ゲインの制御に関し、具体的にはマイクロホン信号、「ラインイン（ｌｉｎｅ  ｉｎ）」オーディオ信号、ＣＤオーディオ信号などのオーディオ信号を複数の個別のオーディオキャプチャまたは処理アプリケーションに同時に提供可能にし、各オーディオ入力ソースに対する集中ゲイン制御を実現する自動システムレベルゲイン制御を提供するためのシステムおよび方法に関する。
【背景技術】
【０００２】
従来のアナログマイクロホン、例えば個別のマイクロホンやマイクロホンアレイ型装置などは当業者には良く知られている。パーソナルコンピュータ（ＰＣ）などのコンピュータ装置に接続されたとき、このようなマイクロホンは、例えばボイスオーバＩＰ（ＶＯＩＰ）クライアントや音声認識エンジンなど、マイクロホンによって取り込まれたオーディオ信号を受信しアプリケーションパラメータに従ってその信号を処理するアプリケーションで使用されることも多い。
【０００３】
残念なことに、代表的なコンピュータシステムはもともと、任意の時間にただ１つのアプリケーションだけがハードウェア装置のマイクロホンからデータを取り込むことを可能にしていた。第２のアプリケーションが第１のアプリケーションと同時に、同じマイクロホンからデータを取り込もうとした場合には、第２のアプリケーションは一般に、第１のアプリケーションによってアクセスされているマイクロホン信号へのアクセスを拒絶されることになる。結果として、マイクロホンからの実時間取込みを必要とする各アプリケーションは一般に、同時動作ができなかった。
【０００４】
したがって、この問題に取り組むある試みにおいては、マイクロホンのオーディオ入力を複数のアプリケーションに同時に提供できる方法を提供するための従来の一方式が実装されていた。例えば、Ｗｉｎｄｏｗｓ（登録商標）の「ミレニアムエディション（Ｍｉｌｌｅｎｎｉｕｍ  Ｅｄｉｔｉｏｎ）」版から始まるＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムの最新版では、「ｓｐｌｉｔｔｅｒ．ｓｙｓ」のファイル名を有するシステムレベルドライバが、単一の入力キャプチャストリームから２つ以上の同一出力ストリームを作成するように提供されている。一般に、「ｓｐｌｉｔｔｅｒ．ｓｙｓ」ドライバは、入力ストリームの形式とは無関係に、透過的に入力ストリームを２つ以上の出力ストリームにコピーし、次いでコピーを要求するすべてのアプリケーションにそのストリームのコピーを提供する。
【０００５】
ｓｐｌｉｔｔｅｒ．ｓｙｓによって提供される新しいオーディオ信号分岐機能は、オーディオ入力を２つ以上の並行アプリケーションに同時に提供することができないという問題に取り組むものではあるが、残念なことに、それによりマイクロホンからデータを取り込む多くのアプリケーションに潜在的な新たな問題が生じた。具体的には、多くのオーディオキャプチャアプリケーションはしばしば、マイクロホンのアナログ−デジタル変換器（Ａ／Ｄ）に関連するプリアンプのアナログゲインを連続的に制御して、マイクロホン信号の信号対雑音比（ＳＮＲ）を最適にしようと試みる。したがって、複数のキャプチャアプリケーションがマイクロホンからのデータをキャプチャしている場合には、２つ以上のこれらのアプリケーションがマイクロホンのアナログゲインを同時に制御しようと試みる可能性があり、それによってマイクロホンの信号が劣化するおそれがある。
【０００６】
例えば、ＶＯＩＰクライアントまたは音声認識エンジンなどのアプリケーションは、クリッピングを発生させることなくＳＮＲ比を最大にするようにアナログマイクロホンゲインを制御しようとすることが多い。この場合、複数の閉ループゲイン制御システムが単一のアナログマイクロホンゲインを個別に調整しようとすることになる。このシナリオはしばしばマイクロホンゲインの発振につながり、最悪の場合には、競合するゲイン制御システムに内在する不安定性のために、アナログマイクロホンゲインはマイクロホンのプリアンプによってサポートされる最小値または最大値に追い込まれる。ゲインが最小値に追い込まれた場合には、マイクロホンは無音または抑制されすぎた信号しか録音しないことになる。逆に、ゲインが最大値に追い込まれた場合には、クリッピングの量が大きくなることによって近端音声（ｎｅａｒ  ｅｎｄ  ｓｐｅｅｃｈ）が大幅に歪む可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、マイクロホンのゲイン制御を維持しながら、着信マイクロホン信号の同時アクセスを提供するためのシステムおよび方法が必要とされている。さらに、このようなシステムおよび方法はまた、ゲイン制御コマンドをアプリケーションから横取りし、アプリケーションがマイクロホンゲインに影響を与えることを阻止することによって、マイクロホンゲインを制御するように個別に設計されたアプリケーションとともに動作できることが必要である。
【課題を解決するための手段】
【０００８】
当業者には周知のように、個別のマイクロホンおよびマイクロホンアレイなど従来のマイクロホンは一般に、１つまたは複数のマイクロホンのある所定のレイアウトでの配列を含む。各マイクロホンは一般に、各マイクロホンによって取り込まれたアナログオーディオ信号の増幅またはゲインを提供するための関連するプリアンプを含んでいる。マイクロホンゲインの手動調整が可能なアプリケーションもあるが、多くのアプリケーションはマイクロホンゲインを自動的に調整するように設計されている。その結果、多数のこのようなアプリケーションが同時動作を行うと、競合するゲイン制御システムの結果としてのゲイン不安定が引き起こされることになる。同様の問題は、例えばＣＤオーディオや「ラインイン」信号など他の任意のアナログオーディオソースを含む、コンピュータ装置への他のオーディオ入力のゲイン制御に関しても存在する。
【０００９】
したがって、この問題に対処するために、複数の個別のアプリケーションが単一のオーディオ入力から同時に入力を要求または受信する環境では、オーディオ入力ソースのアナログゲインを自動的に初期化し制御するためのシステムレベル自動ゲイン制御（「システムＡＧＣ」）が提供されている。説明のために、以下の議論では一般にオーディオ入力ソースとしてマイクロホンまたはマイクロホンアレイの使用について言及していることに留意されたい。しかし、オーディオ入力ソースとしてのマイクロホンの例示的な使用が、上述のように他のオーディオ入力ソースに容易に一般化されること、および本明細書に記載のシステムＡＧＣが、オーディオ入力ソースとしてマイクロホンの使用だけに制限されることを意図したものではないことを理解されたい。さらに本明細書では、やはり説明のために、マイクロホンから取り込まれた「音声信号」の例も使用している。しかし、このシステムＡＧＣが、任意の種類の従来のオーディオ入力ソースとともに動作できることに加え、このようなソースによってコンピュータ装置に入力された任意の種類のオーディオ信号とともに同様に動作できることを理解されたい。
【００１０】
一実施形態では、システムＡＧＣは、所望の録音される音声信号のクリッピングを発生させることなく、マイクロホンの信号対雑音（ＳＮＲ）比を最大にするように動作する。さらに、クリッピングを避けるために、アナログゲインは一般に、有用な信号をデジタル化するために十分なビット数を提供するとともに、可能な限りのヘッドルーム（ｈｅａｄｒｏｏｍ）を残すように設定される。
【００１１】
他の実施形態では、システムＡＧＣはまた外部ゲイン制御コマンドを横取りし、マイクロホンからの入力信号に適用される対応するデジタルゲインを対応するアプリケーションに返すことによって、個々のアプリケーションが個別にゲインを制御するように動作することを阻止する。結果として、各アプリケーションは通常通りの動作を続け、それらが実際にはマイクロホンゲインを制御していないことに気づかない。したがって、システムＡＧＣは、複数のアプリケーションがゲインを同時に制御しようとすることに起因するマイクロホンゲインの発振または不安定に関する問題を回避するとともに、逆に各アプリケーションが他のアプリケーションのオーディオキャプチャ信号の品質に影響を与えることも阻止する。
【００１２】
一実施形態では、システムＡＧＣのゲイン制御は、背景ノイズフロアエンベロープ（ｂａｃｋｇｒｏｕｎｄ  ｎｏｉｓｅ  ｆｌｏｏｒ  ｅｎｖｅｌｏｐｅ）の推定値に基づいてなされる。一方、従来のゲイン制御システムは、例えば様々な音声レベルもしくはパワー、またはマイクロホンに対する様々な位置もしくは距離での各個人の会話など、マイクロホンに対する様々な位置で取り込まれた様々なパワーの信号に対して、一般に相対的に一定の振幅またはパワーを維持しようと努める。しかし、システムＡＧＣは、例えば上記の、従来のゲイン制御技術とともに動作することもできることに留意されたい。
【００１３】
システムＡＧＣはまた、クリップした（すなわち、飽和した）音声信号または抑制されすぎた音声信号を生成することなく、相対的に一定のゲインを維持するように動作するという点でも従来のゲイン制御アルゴリズムとは異なる。通常の状況では、システムＡＧＣによって設定されたアナログマイクロホンゲインは、背景ノイズフロアが変化しない限りは変化しない。さらにクリッピングは、マイクロホンによって取り込まれたデータから、様々な形の信号外挿を含む従来の技術を使用して容易に検出または予測することができる。次に、背景ノイズフロアエンベロープの推定値を使用して、アナログマイクロホンゲインが低すぎる値に設定されている場合の状況が検出される。したがって、本明細書に記載のシステムＡＧＣは、信号ピークを追跡しようとするのではなく背景ノイズフロアエンベロープを推定することによって、マイクロホンに対して移動しながら話す各個人によって生成される音声信号などの大幅に変化する音声信号に影響されることはない。
【００１４】
上記の要約に鑑みて、本明細書に記載のシステムＡＧＣは、オーディオ信号入力を複数の個別のアプリケーションに同時に提供するとともに、オーディオ入力ゲインを制御するための自動システムレベルゲイン制御を提供するための独自のシステムおよび方法を提供する。前述の利点に加えて、システムＡＧＣの他の利点については、以下の詳細な説明を添付の図面と併せて読むことによって明らかになるであろう。
【００１５】
本発明の詳細な機能、態様、および利点については、以下の説明、添付の特許請求の範囲、および添付の図面との関係からより良く理解できるようになるはずである。
【発明を実施するための最良の形態】
【００１６】
本発明の好ましい実施形態に関する以下の説明では、添付の図面を参照する。添付の図面は本明細書の一部をなすものであり、例示のために、本発明を実施できる特定の実施形態を示したものである。本発明の範囲を逸脱することなく、他の実施形態を使用し構造的な変更をなし得ることを理解されたい。
【００１７】
１．０  例示的動作環境
図１は、本発明を実装することができる適切なコンピュータシステム環境１００の一例を示す。コンピュータシステム環境１００は適切なコンピュータ環境の一例に過ぎず、本発明の使用または機能の範囲に関するいかなる制限を示唆するものでもない。またコンピュータ環境１００は、例示の動作環境１００に示されたコンポーネントのいずれか１つまたはそれらの組合せに関して、何らかの依存性または要件を有するものと解釈すべきものではない。
【００１８】
本発明は、他の多くの汎用または専用コンピュータシステム環境または構成とともに使用することができる。本発明とともに使用するのに適した周知のコンピュータシステム、環境、および／または構成の例には、これらに限られるものではないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド、ラップトップ、またはモバイルコンピュータ、あるいは携帯電話、ＰＤＡなどの通信装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブル家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピュータ環境などが含まれる。
【００１９】
本発明を、例えばマイクロホンまたはマイクロホンアレイ、「ラインイン」信号、ＣＤオーディオ入力など、１つまたは複数のオーディオ入力１９８からなるコンポーネントなどのハードウェアモジュールと組み合わせたコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般にプログラムモジュールは特定のタスクを実施するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明を、通信ネットワークを介してリンクされたリモート処理装置によって各タスクが実行される分散コンピュータ環境においても実施することができる。分散コンピュータ環境では、各プログラムモジュールをローカルおよびリモートの両方のコンピュータ記憶媒体、例えばメモリ記憶装置に配置することができる。図１を参照すると、本発明を実装するための例示的システムには、コンピュータ１１０の形の汎用コンピュータ装置が含まれる。
【００２０】
コンピュータ１１０のコンポーネントには、これらに限られるものではないが、処理ユニット１２０、システムメモリ１３０、システムメモリなど様々なシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１などが含まれる。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用するメモリバスもしくはメモリコントローラ、ペリフェラルバス、ローカルバスなど、いくつかの種類のバス構造のうちの任意のものとすることができる。限定の意味ではなく例として、このようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）バス、メザニン（Ｍｅｚｚａｎｉｎｅ）バスとも呼ばれるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスなどが含まれる。
【００２１】
コンピュータ１１０は一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセス可能な任意の使用可能媒体であってよく、揮発性および不揮発性媒体、リムーバブルおよび固定媒体の両方を含む。限定の意味ではなく例として、コンピュータ可読媒体にはコンピュータ記憶媒体および通信媒体が含まれる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータなどの情報を記憶するための任意の方法または技術で実装された、揮発性／不揮発性のリムーバブル／固定媒体を含む。
【００２２】
コンピュータ記憶媒体には、これらに限られるものではないが、ＲＡＭ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術製品、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋｓ）またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、あるいは所望の情報を格納するために使用できかつコンピュータ１１０によってアクセス可能な他の任意の媒体が含まれる。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータを、搬送波や他の伝送機構などの被変調データ信号の形で実施するとともに、いずれかの情報送達媒体を含む。「被変調データ信号」という用語は、情報を信号中に符号化するような方法で設定または変更された１つまたは複数の信号特性セットを含む信号を意味する。限定の意味ではなく例として、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外、その他の無線媒体などの無線媒体が含まれる。上記の任意の組合せもコンピュータ可読媒体の範囲に含まれるものとする。
【００２３】
システムメモリ１３０は、ＲＯＭ（読み出し専用メモリ）１３１やＲＡＭ（ランダムアクセスメモリ）１３２など揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入／出力システム（ＢＩＯＳ）１３３は、例えば起動時などに、コンピュータ１１０内の各要素間の情報転送を支援する基本ルーチンを含み、通常はＲＯＭ１３１に格納されている。ＲＡＭ１３２は一般に、処理ユニット１２０によって即時にアクセス可能かつ／または現在実行中の、データおよび／またはプログラムモジュールを含む。限定の意味ではなく例として、図１にはオペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７が示されている。
【００２４】
コンピュータ１１０はまた、他のリムーバブル／固定、揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。単に例示として、図１には固定不揮発性の磁気媒体に読み書きするハードディスクドライブ１４１、リムーバブルな不揮発性磁気ディスク１５２に読み書きする磁気ディスクドライブ１５１、ならびにＣＤ−ＲＯＭや他の光媒体などリムーバブルで不揮発性の光ディスク１５６に読み書きする光ディスクドライブ１５５が示されている。例示の動作環境で使用できる他のリムーバブル／固定、揮発性／不揮発性のコンピュータ記憶媒体には、これらに限られるものではないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は一般に、インターフェース１４０などの固定メモリインターフェースを介してシステムバス１２１に接続されるが、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェース１５０などのリムーバブルメモリインターフェースによってシステムバス１２１に接続される。
【００２５】
上で論じ図１に示したドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ１１０のためのコンピュータ可読命令、データ構造、プログラムモジュール、他のデータなどについての記憶を提供する。図１において、例えばハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するように図示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同一であっても、異なっていてもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は、少なくともそれらが異なるコピーであることを示すために、図１では異なる番号が付与されている。ユーザはキーボード１６２、および一般にマウス、トラックボール、またはタッチパッドなどを意味するポインティング装置１６１などの入力装置を介してコンピュータ１１０に命令または情報を入力することができる。
【００２６】
他の入力装置（図示せず）として、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、無線受信機、テレビまたは放送映像受信機などを含むことができる。これらおよび他の入力装置を、システムバス１２１に結合された有線または無線のユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されることが多いが、例えばパラレルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）、ＩＥＥＥ１３９４インターフェース、Ｂｌｕｅｔｏｏｔｈ（商標）無線インターフェース、ＩＥＥＥ８０２．１１無線インターフェースなど、他の従来のインターフェースおよびバス構造を用いて接続することもできる。さらに、コンピュータ１１０はまた、例えばマイクロホンもしくはマイクロホンアレイ、「ラインイン」、ＣＤもしくはＤＶＤオーディオ入力等１９８の音声またはオーディオ入力装置、ならびに、例えばパラレル、シリアル、ＵＳＢ、ＩＥＥＥ１３９４、Ｂｌｕｅｔｏｏｔｈ（商標）などの従来の有線または無線インターフェースをやはり含むオーディオインターフェース１９９を介して接続されたスピーカ１９７または他の音声出力装置を含むこともできる。
【００２７】
モニタ１９１または他の種類の表示装置もまた、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。コンピュータは、モニタに加えて、例えば出力ペリフェラルインターフェース１９５を介して接続できる、プリンタ１９６など他の周辺出力装置を含むこともできる。
【００２８】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク環境で動作させることができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共通ネットワークノードなどであってもよい。また、図１にはメモリ記憶装置１８１だけが示されているが、リモートコンピュータ１８０は一般に、コンピュータ１１０に関連して上で説明した要素の多く、またはすべてを含むことができる。図１に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、他のネットワークを含めることもできる。このようなネットワーク環境は、オフィス、企業内コンピュータネットワーク、イントラネット、およびインターネットなどにおいては一般的なものである。
【００２９】
ＬＡＮネットワーク環境で使用されるとき、コンピュータ１１０はネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用されるときは、コンピュータ１１０は一般に、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２、その他の手段を備える。モデム１７２は内蔵でも外付けでもよいが、ユーザ入力インターフェース１６０または他の適切な機構によってシステムバス１２１に接続することができる。ネットワーク環境においては、コンピュータ１１０に関連して示されたプログラムモジュールまたはその一部はリモートのメモリ記憶装置に格納することができる。限定の意味ではなく例として、図１ではリモートアプリケーションプログラム１８５はメモリ装置１８１上に存在するように示されている。図示のネットワーク接続が例示的なものであり、コンピュータ間の通信リンクを確立するための他の手段が使用できることが理解されよう。
【００３０】
ここまで例示的動作環境について論じてきたが、本明細書の残りの部分では、マイクロホンアレイの各プリアンプに対する周波数領域補償ゲインを自動的に決定するためのセルフキャリブレーションシステムおよび方法を実施するハードウェアおよびソフトウェアモジュール、ならびに処理について論ずる。
【００３１】
２．０  序論
以下の議論では一般に、マイクロホンアレイについて特に論じる場合を除き、説明のためには単一のマイクロホンについて言及していることに留意されたい。しかし、以下の議論を考慮すると、本明細書に記載のシステムレベル自動ゲイン制御（「システムＡＧＣ」）が、１つまたは複数の個別のマイクロホン、または１つまたは複数のマイクロホンアレイ、またはそれらの任意の組合せとともに完全に動作することができ、それらのマイクロホンのゲインを制御するとともにマイクロホン入力のコピーを１つまたは複数の並列の個別アプリケーションに提供できることは明らかなはずである。さらに、システムＡＧＣは、コンピュータ装置に接続された任意のアナログオーディオソース、例えば、ＣＤまたはＤＶＤオーディオや「ラインイン」などに適用することもできる。
【００３２】
実際には、説明のために、以下の議論および関連する図面では一般に、オーディオ入力ソースとしてマイクロホンまたはマイクロホンアレイの使用に言及する。しかし、オーディオ入力ソースとしてのマイクロホンの例示的使用が上述のような他のオーディオ入力ソースに容易に一般化できること、ならびに本明細書に記載のシステムＡＧＣが、唯一の可能な入力ソースとしてマイクロホンとともに使用されるように限定されることを意図したものではないことを理解されたい。さらに、本明細書における、マイクロホンによって取り込まれた「音声信号」の例もまた説明のために使用されたものである。しかし、システムＡＧＣが、任意の種類の従来のオーディオ入力ソースとともに動作できることに加えて、このようなソースからコンピュータ装置に入力された任意の種類のオーディオ信号とともに同様に動作できることも理解されたい。
【００３３】
当業者には周知のように、個別のマイクロホンやマイクロホンアレイなど従来のマイクロホンは一般に、ある所定のレイアウトで配置された１つまたは複数のマイクロホンを含む。各マイクロホンは一般に、各マイクロホンによって取り込まれたアナログオーディオ信号の増幅またはゲインを提供するための関連するプリアンプを含んでいる。さらに、このようなマイクロホンは、（マイクロホンの内部、またはマイクロホンが接続されるコンピュータ装置の内部に）アナログ−デジタル（Ａ／Ｄ）変換器を含むこともできる。
【００３４】
マイクロホンゲインの手動調整が可能なアプリケーションもあるが、多くのアプリケーションは自動的にマイクロホンゲインを調整するように設計されている。その結果、多くのこのようなアプリケーションが同時動作を行うと、競合するゲイン制御システムの結果としてのゲイン不安定が引き起こされることになる。したがって、図２の従来技術システム図によって示されるような従来のオーディオ信号分岐システムに結合されたとき、競合するゲイン制御システムによってマイクロホンゲインの不安定が生じる可能性がある。同様の問題は、例えばＣＤまたはＤＶＤオーディオや「ラインイン」信号など他の任意のアナログオーディオソースを含む、コンピュータ装置への他のオーディオ入力のゲイン制御に関しても存在する。
【００３５】
具体的には、図２に示されるように、複数のアプリケーション（２１５、２２５、および２３５）によるマイクロホン２００からのオーディオストリームへの同時アクセスを可能にする従来のシステムは、オーディオ分岐モジュール２１０を使用して、プリアンプ２０５によって出力された単一の入力オーディオデータストリームから２つ以上の同一の出力ストリームを作成する。残念なことに、図２に示された従来システムなどのシステムは、アプリケーション（２１５、２２５、および２３５）に含まれることがあるゲイン制御モジュール（２２０、２３０、および２４０）の影響に対処することができない。結果として、各ゲイン制御モジュール（２２０、２３０、および２４０）は、マイクロホン２００のゲインを同時に制御しようと試みる場合がある。一般に、これらのゲイン制御モジュール（２２０、２３０、および２４０）が競合した結果、ゲインが変動し、またはマイクロホンゲインが最小値もしくは最大値に追い込まれ、結果的に信号が劣化することによって、一般に「無音」オーディオ信号またはクリップしたオーディオ信号が生ずることになる。
【００３６】
本明細書に記載のシステムＡＧＣは、集中ゲイン制御を提供するとともに、一実施形態では、個別のアプリケーションが別々にゲインを制御しようとするのを阻止することによってこの問題に対処する。一般に、マイクロホンによって取り込まれたオーディオ信号は、システムＡＧＣによってゲイン制御された状態で前置増幅され、Ａ／Ｄ変換器によってデジタル信号に変換され、再びシステムＡＧＣの信号分岐コンポーネントによってコンピュータ装置内に存在する様々な個別のオーディオ処理ソフトウェアアプリケーションに提供されてさらに処理される。システムＡＧＣによって並列アプリケーションに送信することができる同時オーディオ信号の最大数は、デジタルオーディオ信号を様々なアプリケーションに送信するためにコンピュータが使用できる最大帯域幅によってのみ制限されることに留意されたい。
【００３７】
２．１  システム概観
一般に、本明細書に記載のシステムＡＧＣは、複数の個別のアプリケーションが単一のアナログマイクロホンまたはマイクロホンアレイからの入力を同時に要求または受信する環境で、アナログマイクロホンゲイン（または、上述の他の任意のオーディオ入力ソースのゲイン）を自動的に初期化し、制御するように動作する。一実施形態では、システムＡＧＣはまた、サンプルされた背景環境に応じて、クリッピングを発生させることなくマイクロホンの信号対雑音（ＳＮＲ）比を最大にするようにも動作する。以下でより詳細に説明するように、クリッピングを避けるためにアナログゲインは一般に、有用な信号をデジタル化するために十分なビット数を提供するとともに、可能な限り多くのヘッドルームを残すように設定される。
【００３８】
一実施形態では、システムＡＧＣは最初に背景ノイズフロアエンベロープを継続的に推定する。次いで、このノイズフロア推定値に応じてゲインが制御される。あるいは、システムＡＧＣは、例えばマイクロホンに対する様々な位置で取り込まれた様々なパワーの信号に対して（時間または周波数領域で）相対的に一定の振幅またはパワーを維持するように動作することにより、従来のゲイン制御技術を使用することもできる。様々なパワーの信号は、例えばマイクロホンに対する様々な位置または距離での、様々な音声レベルまたはパワーを有する各個人の会話を含むことも多い。これら従来のゲイン技術は、個々のマイクロホンのゲイン制御用としては当業者には周知である（しかし、システムＡＧＣに関して本明細書に記載のシステムレベルでは周知ではない）ことに留意されたい。したがって、本明細書で提供される議論を考慮すると、従来のゲイン制御技術をシステムＡＧＣで使用するように適合させることは当業者にはよく理解されるはずである。
【００３９】
背景ノイズに応じてゲインを制御する際に、システムＡＧＣは、クリップした（すなわち、飽和した）オーディオ信号または抑制されすぎたオーディオ信号を発生することなしに相対的に一定のゲインを維持する。通常の状況下では、システムＡＧＣによって設定されたアナログマイクロホンゲインは、取り込まれた信号がクリップするか、またはクリップすることが予測されるか、または背景ノイズフロアが変化する場合を除けば変化することはない。さらに、クリッピングは、マイクロホンによって取り込まれたデータから、様々な形の信号外挿などの従来技術を用いて容易に検出または予測することができる。次に、背景ノイズフロアエンベロープの推定値を使用して、アナログマイクロホンゲインが低く設定されすぎた場合の状況を検出する。したがって、本明細書に記載のシステムＡＧＣは、信号ピークを追跡しようとするのではなく背景ノイズフロアエンベロープを推定することによって、マイクロホンに対して移動しながら話す各個人によって生成される音声信号など大きく変化する音声信号の影響を受けることはない。
【００４０】
さらに上述のように、一実施形態では、システムＡＧＣはまた個別のアプリケーションが別々にゲインを制御するように動作することを阻止する。この機能は、従来技術を使用して、いずれかのアプリケーションによって発行された外部ゲイン制御コマンドを横取りすることによって可能になる。アクティブなアプリケーションによって発行された呼出しを横取りする概念は、当業者には良く知られた概念であり本明細書では詳細には説明していないことに留意されたい。横取りした後で、システムＡＧＣは、マイクロホンのプリアンプがゲイン制御コマンドを受信したものとアプリケーションに認識させるような方法でアプリケーションに応答する。次に、システムＡＧＣはさらに、マイクロホンからの入力信号に適用される対応するデジタルゲインを対応するアプリケーションに返す。その結果、各アプリケーションは、それらが実際にはマイクロホンゲインを制御していないことに気づかないことになる。したがってシステムＡＧＣは、各アプリケーションが逆に他のアプリケーションのオーディオキャプチャ信号の品質に影響を与えることを阻止するとともに、複数のアプリケーションが同時にゲインを制御しようとすることに起因するマイクロホンゲインの発振および不安定に関する問題を回避する。
【００４１】
２．２  システムアーキテクチャ
上で要約した各処理は、図３の一般的なシステム図によって示される。具体的には、図３のシステム図は、システムレベル自動ゲイン制御（「システムＡＧＣ」）を実装するためのハードウェアおよびソフトウェアモジュールの間の相互関係を示す。図３の破線または点線によって示されたボックスおよびそれらボックス間の相互接続がいずれも本明細書に記載のシステムＡＧＣの代替実施形態を表すこと、および、以下で説明するように、これらの代替実施形態の一部またはすべてが本明細書を通して記載される他の代替実施形態と組み合わせて使用できることに留意されたい。さらに図３では、システムＡＧＣはオーディオ入力ソースとして１つまたは複数のマイクロホンに関連して記載されているが、このシステムＡＧＣがコンピュータ装置に接続された他の任意のオーディオ入力ソースとともに完全に動作することができることに再度留意されたい。したがって、以下の議論におけるマイクロホンの使用は、単に例示のためだけのものであることは明らかなはずである。
【００４２】
一般に、図２に関連して先に説明した従来のシステムと同様に、図３に示されたシステムＡＧＣは、マイクロホン２００からのオーディオストリームに対する複数アプリケーション（２１５、２２５、および２３５）の同時アクセスを提供する。さらに、システムＡＧＣはまた、１つまたは複数のプリアンプ２０５によって出力された単一の入力オーディオデータストリームから２つ以上の同一出力ストリームを作成するためのオーディオ分岐モジュール２１０も使用している。
【００４３】
しかし、図２に関連して説明した従来のシステムとは異なり、図３に示されたシステムＡＧＣは、モニタされたオーディオデータストリームに応じてコンピュータシステムに接続されたマイクロホンのゲインを制御するシステムレベル自動ゲイン制御モジュール３００を提供する。システムレベル自動ゲイン制御モジュール３００によって提供されるゲインは、マイクロホン２００のプリアンプ２０５によって出力されたオーディオデータに適用される唯一のゲインである。次いで、前置増幅されたオーディオデータストリームは、オーディオデータ分岐モジュール２１０に提供され、それによりプリアンプ２０５によって出力された単一の入力オーディオデータストリームから２つ以上の同一の出力ストリームが作成される。
【００４４】
上述のように、各個別のアプリケーション（２１５、２２５、および２３５）はまた、個別のゲイン制御モジュール（２２０、２３０、および２４０）を含むことができる。したがって、一実施形態では、システムＡＧＣはゲイン制御横取りモジュール３１０を含む。一般に、ゲイン制御横取りモジュール３１０は、従来技術を使用していずれかのアプリケーションによって発行された外部ゲイン制御コマンドを横取りする。横取りした後でゲイン制御横取りモジュールは、関連するゲイン制御モジュール（２２０、２３０、および／または２４０）を介して、そのゲイン制御コマンドをマイクロホンが受信したとアプリケーションに認識させるような方法で、ゲイン制御コマンドを発行したアプリケーション（２１５、２２５、および／または２３５）に応答する。
【００４５】
ただし、ゲイン制御横取りモジュール３１０は、対応するゲイン制御モジュール（２２０、２３０、および／または２４０）に応答することに加えて、対応するゲイン制御モジュールによって要求されたゲインをデジタルゲインモジュール３２０にも送る。次いで、デジタルゲインモジュールは、オーディオデータ分岐モジュール２１０によって対応するアプリケーション（２１５、２２５、または２３５）に送られるオーディオデータストリームのコピーに、そのデジタルゲインを適用する。上述のようにシステムＡＧＣは、各個別のアプリケーション（２１５、２２５、および２３５）によって要求されたゲインレベルを有するオーディオ信号を、デジタルゲインモジュール３２０を介してそのアプリケーションに提供するとともに、各アプリケーションに実際にはマイクロホンゲインを制御していないことを気づかせないようにするという２つの目的を果たすように動作する。
【００４６】
最後に、１つまたは複数のアプリケーション（２１５、２２５、および２３５）がゲイン変更を要求または指令しない場合は、そのアプリケーションに送られるオーディオデータストリームのコピーに適用される唯一のゲインは、システムレベル自動ゲイン制御モジュール３００によってオーディオデータストリームに提供される元のゲインであることにも留意されたい。
【００４７】
３．０  動作概要
上述のハードウェアおよびソフトウェアモジュールは、本明細書に記載のシステムＡＧＣを実装するために使用される。上で要約したように、システムＡＧＣは、１つまたは複数のオーディオ入力ソースに対する自動システムレベルゲイン制御を提供し、１つまたは複数の個別のアプリケーションにオーディオ入力信号のコピーを並列分配し、また、一実施形態では、システムＡＧＣとは独立している任意のアプリケーションによって発行されたゲイン制御コマンドを横取りし処理する。以下のセクションでは、システムＡＧＣの動作についての詳細な議論、ならびに図３の動作フロー図に関連してセクション２で説明したハードウェアおよびソフトウェアモジュールを実装するための例示的方法についての詳細な議論を提供する。
【００４８】
上述のように、システムＡＧＣは任意の数または種類のオーディオ入力、例えばマイクロホンまたはマイクロホンアレイ、「ラインイン」信号、ＣＤまたはＤＶＤオーディオなどとともに動作することができる。しかし、例示のために、以下では図４に関連して、システムＡＧＣの制御の下で多チャネルマイクロホンオーディオキャプチャシステムを実装するための一般化された機能図について説明する。図４では、システムＡＧＣは、オーディオ入力ソースとしての１つまたは複数のマイクロホンに関連して記載されているが、システムＡＧＣはコンピュータ装置に接続された他の任意のオーディオ入力ソースとともに完全に動作できることに再度留意されたい。
【００４９】
具体的には、図４に示されるように、本明細書に記載のシステムＡＧＣに基づく（Ｌチャネルを有する）基本多チャネルオーディオキャプチャシステムの可能な一実施形態は一般に、関連するプリアンプ２０５を備えた１つまたは複数のマイクロホン（またはマイクロホンアレイ）２００を含む。ｉ番目のチャネルのマイクロホンによって取り込まれた生のアナログオーディオ信号は、時間ｔ、ｉ＝０〜Ｌ−１に対してｘi（ｔ）で与えられる。アナログ信号は、時間指標ｋにおけるＡ／Ｄモジュール４１０によってインタリーブされたデジタル値（ｉｎｔｅｒｌｅａｖｅｄ  ｄｉｇｉｔａｌ  ｖａｌｕｅ）、ｙ［ｋ，ｉ］に変換されアプリケーションに送られる。次に、多チャネルデジタル信号はシステムレベル自動ゲイン制御モジュール３００によってモニタされる。システムレベル自動ゲイン制御モジュール３００によって計算された新たなデジタルゲインはｇ［ｋ］によって表される。一方、プリアンプに適用されるアナログゲインは、従来のＤ／Ａモジュール４２０によってデジタルゲインからアナログゲインに変換された後で、ｇ’（ｔ）によって与えられる。
【００５０】
図４は、すべてのマイクロホンに対して単一のゲインを制御するシステムＡＧＣを示しているが、システムＡＧＣは複数のマイクロホンに対して個別のゲインを制御するように使用することもできることに留意されたい。インタリーブされたデジタル信号を提供する代わりに、各オーディオチャネルを分岐したままで、各オーディオチャネルごとに個別のＡ／Ｄ変換器４１０を使用することもできることに留意されたい。
【００５１】
図４に示されたシステムは閉ループゲイン制御システムとして示されているので、システムが不安定になってアナログゲインをプリアンプによってサポートされる最大値または最小値に追い込むことがないように注意しなければならない。したがって、システムＡＧＣはオーディオデータストリームを連続的にサンプルし、必要なときだけゲインを調整することになるが、このことについては、後で図５から図７に関連してさらに詳細に説明する。
【００５２】
一般に、システムＡＧＣの様々な実施形態によって実施される各処理は、どの実施形態が実装されるかに応じて、以下のステップの一部またはすべてを含む。以下のパラグラフで一般的に説明する各ステップについては、セクション３．１で始まる後のセクションでより詳細に説明されることに留意されたい。
【００５３】
具体的には図５に示されるように、最初のステップとして、システムＡＧＣは先ず初期最適アナログゲインを各個別のマイクロホン（または他のオーディオ入力ソース）に割り当てることによって動作を開始する。一般に、当業者には周知のように、マイクロホンの多くは、通常はマイクロホンメーカによって提供される所定の最適ゲイン値を含むか、または初期マイクロホンキャリブレーションプロセスすなわち「ウィザード」を動作させて初期マイクロホンゲイン値を決定する。初期最適マイクロホンゲインを決定あるいは識別するこのようなプロセスについては当業者には周知であり、本明細書では説明しない。
【００５４】
次に、各マイクロホンごとの初期最適ゲインが識別された後で、アプリケーションが任意の１つまたは複数のマイクロホンから最初にデータの取込みを開始したときはいつでも、システムＡＧＣは、５１０で対応するマイクロホンの（複数の）ゲインを識別された最適値に初期化し、５５０で処理する追加のフレームが存在する限り、５２０で各マイクロホンからのオーディオデータフレーム（例えば、各オーディオ入力チャネルからのデータフレーム）の受信を開始する。
【００５５】
次に、システムＡＧＣは、５３０で各チャネル（すなわち、各マイクロホンまたは他のオーディオ入力）からのデータ（すなわち、現在のフレームまたはボックス５２０で読み込んだ「集約フレーム」）の処理を開始し、５４０で各チャネルごとにゲインを調整すべきかどうかを判定する。処理５３０の一実施形態を、図６で詳細に説明する。セクション３．５．１でより詳細に説明するように、ハードウェアから取り込まれたデータのフレームが、システムの最大待ち時間（すなわち、ゲイン変更命令がシステム全体に完全に伝わるための時間）と新しいゲイン更新推定値を生成するために必要な時間とを加算した時間より短い場合には、システムＡＧＣはオーディオデータの２つ以上のフレームを集約することが必要になる場合があることに留意されたい。図６は、集約されたフレームについて記載されているが、図６が、フレームが集約されていない場合にも適用できることに留意されたい。具体的には、特定の実装でフレーム長に対して待ち時間が十分に短い場合は、フレームを集約する必要はない。そうでない場合は、セクション３．５．１に記載し、図８に示したようにフレームは集約される。
【００５６】
上述のように、またセクション３．５．１でより詳細に説明するように、６２０で「待ち時間」は、システムＡＧＣによって発行された以前の任意のゲイン変更命令が、システムを通してマイクロホンのプリアンプ（または他のオーディオ入力チャネルのプリアンプ）およびマイクロホンから記録されたバッファフレームに伝わる機会を有するような十分に長い遅延時間を提供する。したがって、以前のゲイン変更命令に続く待ち時間が終了した後では、現在のフレームまたは集約フレームの後続のサンプルはすべて同一のゲインに従うことになる。
【００５７】
図６に示されているように、背景ノイズフロアに応じてゲインが決定される実施形態では、６０５で第１のマイクロホン（または他のオーディオチャネル）から現在の集約フレームを取得することによってシステムＡＧＣが開始され、次いで６１０でそのフレームの平均値が計算される。６２０で「待ち時間」が終了している場合は、次いでシステムＡＧＣは、６１５で得られた現在の集約フレームの現在のサンプルに対して、Ａ／Ｄからのデジタル化されたデータが、６２５でクリップしているかどうか、またはクリップすることが予測されるかどうかを判定する。６２５でクリッピングが識別されたかまたは予測される場合には、フラグを設定して特定のチャネルの信号がクリップしたか、または現在のゲインレベルではクリップする可能性が高いことを示すことができる。待ち時間が終了していない場合は、６１５で得られた現在の集約フレームの現在のサンプルに対する、６２５でのクリッピングの検出または予測はスキップされる。
【００５８】
待ち時間が終了したか否かのどちらの場合でも、次にシステムＡＧＣは、各チャネルごとに各データフレームを解析し、６１０で計算された平均を６３０で現在の集約フレームから減算してその残りを解析することによって、６３５で（一般に、ゼロゲインから、または接続されていないマイクロホンから生じる）フラットライン信号が存在するかどうかを判定する。
【００５９】
次に、システムＡＧＣは、各オーディオチャネルごとに各フレームのすべてのサンプルに対するマイクロホン信号の絶対値のローパスフィルタされたバージョンを計算して、６４０で背景ノイズフロアエンベロープを推定する。６４５で待ち時間がすでに終了している場合は、６５０で後の使用のためにノイズフロアエンベロープをバッファに格納する。一般にこのようなバッファの小さなメモリ要件のために、この場合は循環型またはＦＩＦＯ（ｆｉｒｓｔ−ｉｎ  ｆｉｒｓｔ−ｏｕｔ）型バッファの使用が好ましいが、必須ではないことに留意されたい。次いで、このプロセス（ボックス６１５から６５０）は、現在の集約フレームの各サンプル（６５５、６１５）に対して、現在の集約フレームのすべてのサンプルが処理されるまで継続される。次に、６５０でバッファに格納された現在のフレームに対するノイズフロアエンベロープの最大値が、６６０で現在のチャネルおよび集約フレームのノイズエンベロープとして選択される。「待ち時間」の後に収集された集約フレーム中のサンプルがノイズではなく音声を含む場合は、この集約フレームはノイズフロアの正確な推定にならないことに留意されたい。ただし、ノイズフロアのこの不正確な推定値は、システムＡＧＣの性能に悪影響を与えるものではない。
【００６０】
次に、図６のループによって指示されているように、上記のステップ（ボックス６１０から６６０）は各マイクロホン（または他のオーディオチャネル）に対する現在の集約フレームに対して繰り返される（６６５、６７０）。図６に示された各ステップの代替実施形態では、このアルゴリズムは、全体の集約フレームが読み込まれるまで待つ代わりに、マイクロホンからのデータの１つのフレームを受信した後で、６１０、６３０、６３５、６４０など一部のブロックを計算することができることに留意されたい。
【００６１】
次に、図５に戻って、すべてのマイクロホンに対して単一のグローバルゲイン値が設定される場合で、いずれかのチャネルの信号がクリップしたか、またはクリップすることが予測される場合には、５４０ですべてのチャネルに対するグローバルゲインを減少させ、上記のステップを着信オーディオデータストリームの次のフレームに対して繰り返す。あるいは、各マイクロホンに対して個別にアドレス指定可能なプリアンプが使用できる場合は、５４０で個々のクリッピングチャネルに対して個別にゲインを減少させる。
【００６２】
すべてのマイクロホンに対して単一のグローバルゲイン値が設定される場合で、逆に、各チャネルからの最大エンベロープ値すべての中の最小値が（後で信号がクリップすることが予測される最大レベルに対する）ある所定の閾値レベル未満の場合には、５４０ですべてのチャネルに対するグローバルゲインを増加させ、上記のステップを着信オーディオデータストリームの次のフレームに対して繰り返す。あるいは、各マイクロホンに対して個別にアドレス指定可能なプリアンプが使用できる場合は、５４０で最大エンベロープ値が閾値レベル未満である個々のチャネルに対して個別にゲインを増加させる。
【００６３】
これらのゲイン制御概念（例えば、ボックス５４０）は一般に、図７の流れ図によって示される。具体的には、図７によって示されるように、７１０で各オーディオチャネルのノイズエンベロープに関する前述の解析が与えられると、７２０で対応する信号がクリップするかどうかについての判定が行われる。信号がクリップする場合には、７３０でゲインを減少させる。信号がクリップしない場合で、７４０でノイズエンベロープが低すぎる場合は、７５０でゲインを増加させる。
【００６４】
３．１  マイクロホンゲインの初期化
上述のように、システムＡＧＣの制御下にあるマイクロホン（または他のオーディオ入力ソース）が最初にオーディオ信号の取り込みを開始したとき、システムＡＧＣはアナログマイクロホンゲインを既知の最適ゲイン設定値に初期化する。この初期アナログマイクロホンゲインは、アナログチューニングウィザードによって、またはコンピュータメーカもしくはハードウェアメーカによって指定された値によって、または通常の近端音声および背景ノイズの期間に最適値を学習することによって、またはそれらの方法の組合せによってなど、いくつかの方法によって設定することができる。これらの技術が当業者には周知であること、および本明細書では概要だけを説明することに留意されたい。
【００６５】
例えば、第１のシナリオでは、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）メッセンジャー（Ｍｅｓｓｅｎｇｅｒ）、またはＭｉｃｒｏｓｏｆｔ（登録商標）Ｏｆｆｉｃｅの現在のバージョンに含まれる音声認識エンジン（Ｓｐｅｅｃｈ  Ｒｅｃｏｇｎｉｔｉｏｎ  ｅｎｇｉｎｅ）によって使用されている従来のシステムに類似した「オーディオチューニングウィザード（ａｕｄｉｏ  ｔｕｎｉｎｇ  ｗｉｚａｒｄ）」を使用してゲインを初期化する。例えば、このような従来のオーディオチューニングウィザードは一般に、ユーザにマイクロホンに向かって話すように指示する。次いで、ウィザードはマイクロホンゲインを自動的に所望のレベルに調整する。従来のオーディオチューニングウィザードを使用する１つの利点は、初期ゲインが正しく設定されることを保証するために、オペレーティングシステムがテレビ、ラジオなどの背景ノイズ源を検出し、ユーザにそれらを消すように指示することができることである。
【００６６】
第２のシナリオでは、ハードウェアメーカがすでに、個別のマイクロホンハードウェア、ならびに、分離している場合には、プリアンプおよびＡ／Ｄハードウェアに基づいて、所望のアナログマイクロホンゲインを指定している。ＵＳＢ、１３９４、またはＢｌｕｅｔｏｏｔｈマイクロホンなどのデジタルマイクロホンはマイクロホン、プリアンプ、およびＡ／Ｄを製品中に一体化しており、それらのいずれもが本明細書に記載のシステムＡＧＣによって使用できることに留意されたい。あるいは、アナログマイクロホンおよびサウンドカードについては、これらは一般に別々のメーカによって製造されるものであるが、ハードウェアメーカはマイクロホンおよびコンピュータに内蔵されたサウンドカードに基づいてアナログマイクロホンゲインを指定することができる。他の可能性としては、ユーザがアナログマイクロホンの種類およびサウンドカードを指定して、オペレーティングシステムが最適ゲイン値を選択することもできる。さらに、音声キャプチャハードウェアはマイクロホンのインピーダンスを測定することができ、それをメーカおよびモデル番号と組み合わせて使用して初期最適ゲインを設定することもできる。
【００６７】
第３のシナリオでは、オペレーティングシステムが、近端音声および背景ノイズについての通常レベルの期間を識別するように動作する。近端音声の通常レベルには、ピークまたは平均の近端音声パワーがある妥当な範囲内にあることが測定される期間が含まれる。背景ノイズの通常レベルには、背景ノイズが同一の状態を保っているように見える期間を含めることができる。背景ノイズの通常レベルは、背景でテレビがついている期間、ステレオを演奏中の期間、または人々が会話をしている期間を含まない。次に、これらの通常レベルは、従来の周知の技術を用いて初期最適値を知るために使用される。
【００６８】
初期最適値を選択するためにどの方法が使用されるかには関係なく、マイクロホン（または他のオーディオ入力）からのデータを取り込むことを必要とする第１のアプリケーションが開始されたときはいつでも、システムＡＧＣは、最適アナログマイクロホンゲインを読み出し、プリアンプゲインをその値に設定する。その後、第２のアプリケーションが、第１のアプリケーションと並列にマイクロホン（または他のオーディオ入力）からのデータの取り込みを開始した場合には、システムＡＧＣは現在のマイクロホンゲインをリセットしようとするのではなく、現在のゲイン設定値を使用し続けようとする。この設定値は、所望のユーザからの現在の音声、または他の背景ノイズによって初期最適値から変更されている可能性がある。
【００６９】
３．２  クリッピングの検出または予測
当業者には周知のように、クリッピングは取り込まれたデータへの非線形効果であり、一般に可能な限り回避されるものである。具体的には、クリッピングによってデジタル信号処理アルゴリズムが正しく動作する機能を大幅に低下させるおそれがある。一例だけをあげると、クリップした信号が存在する場合には、従来のアコースティックエコーキャンセレーション（ＡＥＣ）アルゴリズムはスピーカからマイクロホンにフィードバックされるエコーを除去できない可能性があることは良く知られている。代表的なＡＥＣアルゴリズムは、線形時変適応フィルタを用いて室内のインパルス応答をモデル化することによって動作するが、この適応フィルタはクリッピングによる非線系効果をモデル化することができない。クリッピングの間に、ＡＥＣアルゴリズムは、スピーカからのエコーをキャンセルするように適応フィルタ係数を正しく導くことができない。
【００７０】
一実施形態では、クリッピングをオーディオデータの所与のフレームにおける最大サンプル値のデジタル値に応じて簡単に検出することができる。以下の議論における「フレーム」という用語の使用は、ゲイン変更命令がシステムを通して伝えられるのに必要な「待ち時間」のためにフレームを集約する必要がある場合には、本明細書に記載の「集約フレーム」も意味することを意図したものであることに留意されたい。具体的には、Ａ／Ｄから読み出したサンプルが最大正値（例えば、符号付１６ビットＡ／Ｄでは３２７６７）または最大負値（例えば、符号付１６ビットＡ／Ｄでは−３２７６８）である場合は、Ａ／Ｄへのアナログ信号入力は、おそらくそのＡ／Ｄによってデジタル化できる範囲の外に存在する可能性が高い。したがって、信号がクリップされたことが想定される。クリッピングのこの検出は、将来のクリッピングの予測と見なすことができる。なぜならば、一度信号がクリップされると、再度クリップされる可能性が高いからである。
【００７１】
あるいは他の実施形態では、システムＡＧＣはクリッピングが実際に発生するまで待つのではなく、クリッピングが発生しそうなことを予想し、実際にクリッピングが発生した場合と同様にゲインを調整して、可能な場合にはクリッピングを避けるように動作する。現在の信号レベルの評価に基づいて信号レベルを予測し、信号がクリップされる可能性が高いかどうかを予測する多くの従来技術が存在する。例えば一実施形態では、信号の振幅がその信号のフルスケール振幅のある一定のまたは調整可能なパーセンテージ（例えば、９５％）よりも大きいときにクリッピングが予測される。他の実施形態では、現在の信号が将来に向けて外挿され、将来の信号がクリップされる可能性が高いかどうかを判定する。この場合もやはり、信号の外挿は当業者には周知の技術であり、本明細書においては説明を省略する。信号外挿技術は、例えば外挿されたレベルが信号のフルスケール振幅の閾値レベル（例えば、９５％）を越えた場合にやはり信号がクリップされると予測するなど、クリッピング閾値レベルと組み合わせて使用することも可能であることに留意されたい。
【００７２】
システムＡＧＣが実際のクリッピングを使用するのか、またはクリッピングの予測を使用するのかにはかかわらず、システムＡＧＣが将来のクリッピングの可能性が高いと判断すると、システムＡＧＣは将来のクリッピングの可能性を低減するように、ある量だけゲインを減少させるように命令する。このことについては、セクション３．６でより詳細に説明する。
【００７３】
３．３  平均値の計算と除去
上述のように一実施形態では、システムＡＧＣは計算されたノイズフロアエンベロープに応じてゲインを制御する。したがってこの実施形態では、ノイズフロアエンベロープを検出する前に、先ず平均値を推定し除去することが必要になる。平均値の推定は、フレーム（または集約フレーム）中のいずれかのサンプルを処理する前に実施しなければならない。（複数のチャネルを含む）データｙのフレームに対して、各チャネルｉの平均値μは、次の式１で示されるように簡単に推定される。
【００７４】
【数１】
2006270949.tif 000003
【００７５】
上式で、Ｎはフレーム長さ、ｋはフレーム中のサンプル指標である。
【００７６】
上述のように、データの現在のフレームに対して計算された平均値は、次いでノイズフロアエンベロープを推定する前に除去される。データｙのフレームに対して、チャネルｉの平均値μは、各サンプルｋに対して式２によって除去される。
【００７７】
ｙMean（ｋ，ｉ）＝ｙ（ｋ，ｉ）−μ（ｉ）                              式２
【００７８】
３．４  フラットライン信号のチェック
マイクロホン（または他のオーディオ入力）が接続されていないときに、オーディオフロントエンドから取り込んだ結果得られた信号はフラットライン信号と呼ばれる。マイクロホンは接続されていないので、ゲインを高めると、いつかマイクロホンが接続されたときには、ゲインが高すぎることになる。したがって、（マイクロホンが接続されていないことを示す）フラットライン信号が検出されたと判定されたときはどのような場合でも、システムＡＧＣがゲインを増加させることはない。ほぼゼロに等しいサンプルを探すなど、フラットライン信号をチェックする多くの方法が存在する。しかし、一般にプリアンプには、（アナログマイクロホンがプリアンプと分離していると想定して）あるレベルの電気的な「ノイズ」またはバイアスが存在する。
【００７９】
したがって、フラットライン信号の１つの簡単なチェック方法は、先に式２（および図６）に関して説明したように、最初に信号から平均値を除去し、次いで単に残りの信号レベルを調べることである。しかし、フラットライン信号のデータはまた、不要（ｓｐｕｒｉｏｕｓ）データスパイクなど、わずかな量のノイズを含むことも多い。したがって、他の実施形態では、フラットライン信号を確認するための第２のチェック方法は、ゲインがある量だけ変化したときに信号の標準偏差が変化するか否かを判定するように実施される。ゲインの変化とともに標準偏差が変化しない場合は、マイクロホンが接続されていないと想定され、セクション３．１で先に論じたように、初期最適値を越えてゲインを増加させることはない。
【００８０】
３．５  背景ノイズフロアエンベロープの推定
上述のように、背景ノイズフロアエンベロープは、いずれかのマイクロホンチャネルに対してアナログマイクロホンゲインが低く設定されすぎていないかどうかを検出するために推定される。当業者には周知のように、従来のマイクロホンアレイオーディオ処理アルゴリズムなど先進のデジタル信号処理アルゴリズムは、マイクロホンアレイから取り込まれた信号の信号対雑音比（ＳＮＲ）を改善することができる。
【００８１】
しかし、これらの先進デジタル信号処理アルゴリズムは、ある最小のＳＮＲを越える信号を回復することだけが可能である。例えば、背景ノイズフロアより３０から４０ｄＢ低い信号をデジタル化するのは得策ではない。なぜならば、先進の信号処理の後でさえ、取り込まれたデータはやはりノイズだからである。したがって、非常に低位のビットが浪費されることになるので、一実施形態では、これらのビットを代わりに使用して、計算されたノイズフロアに応じて追加のヘッドルームを提供し、所望の音声信号のクリッピングを避ける。
【００８２】
具体的には、フィルタされたマイクロホン信号推定値のエンベロープまたは最大値は、近端音声が存在しないときは、ノイズフロアのエンベロープの推定値と見なすことができる。したがって、ノイズフロアエンベロープの推定値が所望の最小ノイズビット数以上であることを確かめることによって、ある最小ノイズビット数がデジタル化される。例えば、所望のノイズフロアエンベロープ推定値が少なくとも３ビットに設定されていると想定する。信号推定値は、生の信号ではなく信号の絶対値に基づくので、上述のように、この最小ノイズフロア閾値は約４ビットまたは２４ｄＢに等しくなる。したがって、ノイズフロアエンベロープを３ビットに設定することによって、システムＡＧＣは、ノイズフロアより２４ｄＢ低い最大ダイナミックレンジを有する任意の信号がデジタル化されることを保証する。ノイズフロアエンベロープを３ビットに設定することは、テスト済みの実施形態では有用なレベルであることが確認されているが、３ビットのノイズフロアエンベロープは要件ではなく、本明細書に記載のシステムレベルＡＧＣに関して、他の任意の所望のノイズフロアエンベロープビットサイズが使用できることに留意されたい。
【００８３】
一実施形態では、マイクロホン信号のエンベロープの推定は、フレームｙ中のオーディオデータ信号の大きさをローパスフィルタにかけ、その結果を相当するビット数に変換することによって実施される。この推定値を計算するために、マイクロホンデータのローパスフィルタされた（すなわち、平滑された）バージョンが計算される。当業者には周知のように、データをローパスフィルタリングするための膨大な数の技術が存在するが、本明細書に記載のシステムＡＧＣではそれらのうちの任意のものを使用することができる。例えば、テスト済みの実施形態では、現在のオーディオデータのフィルタされた推定値、ｙFilt（ｋ，ｉ）は、以下に示される式３によって与えられる。
【００８４】
ｙFilt（ｋ，ｉ）＝（１−α）ｙFilt（ｋ−１，ｉ）＋α｜ｙMean（ｋ，ｉ）｜                                                                            式３
【００８５】
上式で、αは０と１の間の平滑パラメータ、ｙMean（ｋ，ｉ）は、マイクロホンチャネルｉのサンプルｋでＡ／Ｄから読み込まれた値の調整された現在の平均値である。式３の例示的平滑フィルタを使用したとき、αの大きさが減少するにつれてオーディオデータの平滑度が増加することに留意されたい。
【００８６】
一般に、オーディオ信号は正値と負値の両方を含む複雑な波形をとる。正のスケールファクタであるゲインを更新しようとすることが望ましいので、ゲインの更新は、生の信号ではなくＡ／Ｄからのデータの絶対値に基づいてなされる。したがって、パラメータαを設定することは一般に、αが小さすぎる場合にノイズフロアエンベロープを過小評価するおそれがあること、およびαが大きすぎる場合にゲインの増加を求める不要な要求を生成することの間のトレードオフになる。
【００８７】
代替実施形態では、特定の時間枠の間にエンベロープ推定値が指定された回数を越えて最小閾値を下回ったことが観測された場合にのみゲインを増加させるように、カウンタと組み合わせてより大きなαの値が使用される。システムＡＧＣの様々な追加の実施形態では、ノイズフロアのスペクトルに基づく推定値など、ノイズフロアの他の推定値も使用される。
【００８８】
一実施形態では、システムＡＧＣは各サンプルごとにゲイン調整をチェックする。しかし、各サンプルごとにゲインをチェックする代わりに、他の実施形態では、ゲインチェックはある所望の間隔で周期的に実施される。さらに、一実施形態では、ゲイン更新間のサンプルの回数は平滑パラメータαに応じて決定される。具体的には、式３に示したように、αのサイズが小さくなるにつれて適用される平滑量が大きくなるので、信号のクリッピングの可能性も減少する。したがってこの実施形態では、αのサイズが小さくなるにつれて、ゲイン更新チェックの頻度は減少する。逆に、αのサイズが大きくなるにつれてゲイン更新チェックの頻度は増加する。
【００８９】
３．５．１  ゲインを調整前の「待ち時間」
現在のサンプルのフィルタされた信号値が計算された後で、その値をバッファに格納して、そのバッファ中の最大値であるこのフレームのエンベロープ推定値を後から計算できるようにする必要がある。しかし、オーディオキャプチャサブシステムでは、前のゲイン変更は一般に、Ａ／Ｄによって取り込まれた新しいデータに即座には適用されない。新しいゲイン更新が要求されたときと新しいゲインがＡ／Ｄから受信した信号に実際に適用されたときの間の時間は一般に「待ち時間」と呼ばれる。この待ち時間を図８に示す。
【００９０】
一般に、待ち時間の上限は、着信オーディオデータフレームを解析することによって、実験的に容易に決定できる。しかし、ハードウェアから取り込まれたデータのフレームが、システムの最大待ち時間と新しいゲイン更新推定値を生成するために必要な時間とを加算したものより短い場合には、システムＡＧＣはオーディオデータの２つ以上のフレームを集約することが必要になることがある。集約されるフレームの数は、ゲイン変更命令がシステムを通して完全に伝わるのに必要な時間とフレームの長さとの関係によって完全に決まることに留意されたい。
【００９１】
例えば、図８に示したように、システムＡＧＣモジュール３００は最初に（隣接するフレーム８０５および８１０からなる）現在の集約フレーム８００を読み込み、新しいマイクロホンゲイン（ゲインの増加または減少）を決定する。この新しいゲインはドライバインターフェース８２０に送られ、ドライバインターフェースはその新しいゲインを順にマイクロホンまたはプリアンプハードウェア中のレジスタ８３０に送る。ハードウェアはマイクロホンによって取り込まれた新しいデータに（８４０〜８５０で）そのゲインを適用する。
【００９２】
最終的に、データフレーム中のデータはシステムＡＧＣに送られて処理されるが、マルチレベルゲイン変更命令が即座に行われるものではないことは明らかなはずである。したがって、システムＡＧＣは、任意のゲイン変更要求に続く「待ち時間」の後まで待ってから、クリッピングを検出または予測し、フィルタされたサンプルをバッファに格納する。そうでなければ、将来のゲイン変更要求は、最も新しく選択されたゲインの効果を解析するという利点なしに集められたデータに基づくものになるおそれがある。したがって、待ち時間が終了した後で、ノイズフロアエンベロープを推定するために、フィルタされたサンプルがバッファに格納される。
【００９３】
一実施形態では、アナログゲインは最初に、計算されたノイズフロアエンベロープ推定値を、対数スケールを使用して等価なビット数に変換することによって調整される。計算されたノイズフロアエンベロープ推定値を等価なビット数に変換する一方法は、例えばフィルタされた値を以下の式４によって示されるように等価なビット数に変換することを含む。
【００９４】
ｙFilt-Bits（ｋ，ｉ）＝20ｌｏｇ10（ｙFilt（ｋ，ｉ））／20ｌｏｇ10（２）                                                                        式４
【００９５】
しかし、システムＡＧＣは、対数の計算によるＣＰＵ消費を避けるために、フィルタされた値を単に特定のビットレベルに量子化することなどによって、線形演算を使用して実装することもできることは明らかなはずである。
【００９６】
３．６  ゲインの調整
最大待ち時間（セクション３．５．１参照）が終了し、上述のようにノイズフロアが計算された後で、次のステップは、マイクロホン信号（または他のオーディオ入力ソース）のいずれかのチャネルのノイズフロアエンベロープが低すぎないかどうかを判定することであり、低すぎる場合にはゲインを増加させる。このことについては以下でより詳細に説明する。逆に、クリッピングが検出されたか、または予測される場合にはゲインを減少させる。このことについても、以下でより詳細に説明する。
【００９７】
セクション３．５で前述のように、待ち時間が経過した後で、フィルタされた信号値がフレームの各チャネルのバッファに格納される。さらに、各チャネルのノイズフロアエンベロープが、集約フレームのそのチャネルのバッファに格納された、フィルタされた信号の最大値になるように決定される。いずれかのチャネルのノイズフロアエンベロープが低すぎるかどうかを判定するために、現在のフレームのすべてのチャネルについての最小のノイズフロアエンベロープを、（グローバルゲインが設定されるか、または各チャネルが個別に処理されるものと想定して）すべてのマイクロホンチャネルからの各個別のノイズフロア推定値の中の最小のノイズフロアになるように決定する。
【００９８】
システムＡＧＣが、信号がクリップされたかまたはクリップされる可能性が高いことを検出した場合は、ゲインを減少させる。ゲインは現在のゲインに１未満のある正値を乗算することによって減少させることができる。あるいは、ゲインは現在のゲインから（現在のゲイン値よりも小さい）ある正値を減算することによっても減少させることができる。どちらの場合も、結果として得られるゲインは、マイクロホン／プリアンプハードウェアによって許容される最小ゲイン値より低い値にまで減少させることはできない。したがって、新しく計算されたゲインがハードウェアによってサポートされる最小値より低い場合は、新しいゲインは単純にハードウェアの最小値に設定される。
【００９９】
上記以外の場合で、すべてのチャネルの最小ノイズフロアエンベロープが所望の最小ビット数（例えば、上述のように、１６ビットデータのノイズフロアエンベロープに対して所望された３ビット）よりも小さい場合は、ゲインを増加させる。ゲインは現在のゲインに１より大きい、ある値を乗算することによって増加させることができる。あるいは、現在のゲインに正値を加算することによって増加させることもできる。どちらの場合でも、結果として得られるゲインは、マイクロホン／プリアンプハードウェアによって許容される最大ゲイン値を越えることがあり得る。したがって、新しく計算されたゲインがハードウェアによってサポートさる最大ゲインよりも大きい場合は、新しいゲインは単純にハードウェアによって許容される最大値に設定される。上記以外の場合は、この集約フレームに対してゲインは調整されない。
【０１００】
最後に、クリッピングは一般に、抑制されすぎた信号よりさらに重大な問題を信号処理アルゴリズムに引き起こすので、ゲインを減少させる割合をゲインを増加させる割合より大きくしておくことが有利なことも多い。選択されるゲイン増加または減少の実際のレベルに関しては、ゲインを増加させるかまたは減少させるかに応じて、これらの値を固定のステップサイズ、またはノイズフロアもしくは信号のクリッピングまでに残されたオーバヘッドに応じて選択することができる。
【０１０１】
１つまたは複数のマイクロホンに対する自動システムレベルゲイン制御、および１つまたは複数の個別のアプリケーションへのマイクロホン信号の並列分配を提供するシステムＡＧＣに関する前述の説明は、例示および説明のために示されたものである。前述の説明は、本発明を網羅することを意図したものでも、あるいは本発明を開示の形そのものに限定することを意図したものでもない。上記の教示を考慮すると、多くの修正形態および変形形態が可能になる。さらに、前述の代替実施形態の一部またはすべてを任意の所望の組合せで使用して、システムＡＧＣの追加の混成実施形態を形成することができることに留意されたい。本発明の範囲は、この詳細な説明によって制限されるものではなく、むしろ添付の特許請求の範囲によって制限されることが意図される。
【図面の簡単な説明】
【０１０２】
【図１】マイクロホンまたはマイクロホンアレイ、「ラインイン」、ＣＤ入力などのオーディオ入力とインターフェースし、システムレベル自動ゲイン制御（「システムＡＧＣ」）によって提供されるゲイン制御と信号分配を備えた例示的システムを構成する汎用コンピュータ装置を示す概略システム図である。
【図２】着信オーディオ信号を分岐し、その分岐された信号を複数の個別の並列アプリケーションに同時に提供する従来技術のシステムを示す図である。
【図３】１つまたは複数のマイクロホンまたはマイクロホンアレイのゲインを制御するとともにマイクロホン信号を１つまたは複数の並列アプリケーションに分配する、本明細書に記載のシステムＡＧＣを実装するための例示的ハードウェアおよびソフトウェアモジュールを示す例示的システム図である。
【図４】本明細書に記載のシステムＡＧＣの制御下で、多チャネルマイクロホンオーディオキャプチャシステムを実装するための一般的な機能図である。
【図５】１つまたは複数のマイクロホンまたはマイクロホンアレイのゲインを制御するためのシステムＡＧＣの全体動作を示す例示的動作フロー図である。
【図６】マイクロホンオーディオ信号を処理してローカルノイズエンベロープを決定するためのシステムＡＧＣの一実施形態を示す例示的動作フロー図である。
【図７】オーディオ信号のサンプルウィンドウのクリッピングレベルに関連するローカルノイズエンベロープに応じてマイクロホンゲインを調整するシステムＡＧＣの一実施形態を示す例示的動作フロー図である。
【図８】直前のゲイン調整の効果がマイクロホンによって提供された着信オーディオ信号に十分に反映される機会が得られるまで将来のゲイン調整を遅延させるように、マイクロホンゲイン応答時間に影響を与える各要素を一般的に示した例示的動作フロー図である。
【符号の説明】
【０１０３】
１００  コンピュータシステム環境
１１０  コンピュータ
１２０  処理ユニット（群）
１２１  システムバス
１３０  システムメモリ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  固定不揮発メモリインターフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  リムーバブル不揮発メモリインターフェース
１５１  磁気ディスクドライブ
１５２  リムーバブルな不揮発性磁気ディスク
１５５  光ディスクドライブ
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  ワイドエリアネットワーク
１８０  リモートコンピュータ
１８１  メモリ装置
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力ペリフェラルインターフェース
１９６  プリンタ
１９７  スピーカ
１９８  オーディオ入力（マイク、ライン、ＣＤ等）
１９９  オーディオインターフェース
２００  （複数の）マイクロホン
２０５  アナログプリアンプ（群）
２１０  オーディオデータ分岐モジュール
２１５  アプリケーション１
２２０  ゲイン制御モジュール１
２２５  アプリケーション２
２３０  ゲイン制御モジュール２
２３５  アプリケーションＮ
２４０  ゲイン制御モジュールＮ
３００  システムレベル自動ゲイン制御モジュール
３１０  ゲイン制御横取りモジュール
３２０  デジタルゲインモジュール
４１０  Ａ／Ｄモジュール
４２０  Ｄ／Ａモジュール
５１０  すべてのマイクロホンのゲインを初期化する
５２０  （複数の）マイクロホンから次のデータフレームを読み込む
５３０  各チャネルからのデータを処理する
５４０  必要な場合は（複数の）マイクロホンのゲインを調整する
５５０  さらにフレームを処理するか？
６０５  第１のマイクロホンから集約フレーム（図８参照）を取得する
６１０  集約フレームの平均を計算する
６１５  集約フレーム中の次のサンプルを取得する
６２０  待ち時間は終了したか？
６２５  クリッピングを検出／予測する
６３０  平均を除去する
６３５  フラットライン信号を検出する
６４０  エンベロープ推定値を更新する
６４５  待ち時間は終了したか？
６５０  エンベロープをバッファに格納する
６５５  フレーム中でさらにサンプルするか？
６６０  エンベロープをバッファの最大値に設定する
６６５  さらにマイクロホンはあるか？
６７０  次のマイクロホンから集約フレームを取得する
７１０  チャネルの最大エンベロープ値の最小値を見つける
７２０  信号はクリップするか？
７３０  ゲインを減少させる
７４０  ノイズエンベロープは低すぎるか？
７５０  ゲインを増加させる
８００  現在の集約フレーム
８０５  Ａ／Ｄからのフレーム
８１０  Ａ／Ｄからのフレーム
８２０  ドライバインターフェース
８３０  ハードウェアレジスタ
８４０  次の集約フレーム
８４５  Ａ／Ｄからのフレーム
８５０  Ａ／Ｄからのフレーム
【図１】
2006270949.tif 000004
【図２】
2006270949.tif 000005
【図３】
2006270949.tif 000006
【図４】
2006270949.tif 000007
【図５】
2006270949.tif 000008
【図６】
2006270949.tif 000009
【図７】
2006270949.tif 000010
【図８】
2006270949.tif 000011