(58)【調査した分野】(Int.Cl.,DB名)
物理的なボタンの押下、グラフィカル・ユーザ・インターフェースを介して提供される仮想ボタンの押下、またはコマンドジェスチャを検出することに応じて前記第2の指示を生成する、ことを更に含む、請求項1に記載の方法。
更に、前記第1の指示を検出することに応答して、かつ前記第2の指示を受信する前に、前記受信した音声に対応した音声データに適用されるべきオーディオ補正を算出し、そして、
前記オーディオ補正を前記第2の指示後に受信した音声に対応した更なる音声データに適用する、請求項1に記載の方法。
前記命令は、前記少なくとも1つのプロセッサが差し迫ったデバイスのアクティビティの前記指示を検出し、かつ前記少なくとも1つのプロセッサに結合したセンサからの出力に少なくとも部分的に基づいて前記指示を検出する、ように設定する、請求項5に記載のコンピューティングデバイス。
更に、前記1つまたは複数のプロセッサは、物理的なボタンの押下、前記コンピューティングデバイスのグラフィカル・ユーザ・インターフェースを介して提供される仮想ボタンの押下、またはジェスチャを検出することに応じて前記信号を生成する、ように構成される、請求項10に記載のシステム。
【発明を実施するための形態】
【0011】
図1は、音声をキャプチャするようデバイス100に指示するユーザを予想して、音声を理知的にバッファリングするためのシステムを示している。デバイス100は、差し迫った音声のキャプチャ動作を示唆するインディシアのためにセンサとプロセッサ動作を監視する(122)。監視することができるインディシアの種類の例としては、音声を記録または処理するアプリケーションの起動、デバイス上の入射光強度の変化、動きの視覚的検出、デバイスに近接したユーザの視覚的検出、顔の視覚認識、タッチ感応表示画面への指の近位検出、デバイスの向きの変化(例えば、特定の方向に装置の向きを変える)、デバイスの動き、周囲音の検出、会話の検出、及び特定の話者の検出が含まれる。このようなインディシアに加えて、デバイスはまた、ユーザの記憶された履歴が一日の特定の時間に、または特定の物理的位置で(例えば、位置を決定するためにデバイスで利用可能な全地球測位及びナビゲーションサービスに基づき)音声テキスト口述を用いたパターンを示すかどうかなど、キャプチャされた音声の利用に関連する過去の使用パターンを考察することができる。
【0012】
音声をキャプチャせよとのコマンドが間近に迫っているとの決定がなされた場合、循環バッファは活性化される(124)。循環バッファは、絶えず自体の内容を上書きする先入れ先出し方式(FIFO)バッファである。バッファは、例えば2秒または3秒のような任意のサイズであってもよい。
【0013】
音声を処理し記憶するためのユーザ・コマンドを伝える信号(126)を受信すると、ユーザ・コマンドに先立ってバッファに格納されている最新の音声の一部は、ユーザ・コマンドの後に受信された音声にプリペンドされる。次に、組み合わされた音声は、どのタイプのアプリケーションがキャプチャされた音声を利用しているかに応じて、処理または記録される(128)。
【0014】
高性能バッファの制御及び操作は、音声をキャプチャするソフトウェアアプリケーションに統合されてもよい、或いはオペレーティング・システム・レベル・ライブラリ・コールのようなアプリケーション・プログラミング・インターフェース(API)を介してアプリケーションにアクセスすることができる。しかし、理知的なバッファリングは、アプリケーションよりもむしろデバイスの機能として実装することもでき、その場合はオーディオコーダ・デコーダ(コーデック)またはオーディオドライバがバッファとシームレスに対話することになり、キャプチャされた音声ストリームを利用するアプリケーションは、バッファリングされた音声が受信したストリームにプリペンドされたことを通知されないかも知れない。
【0015】
図2は、デバイス100の動作に関連する特定の構成要素を概念的に示すブロック図である。図示のように、デバイス100は、様々なコンポーネントと通信接続するデータバス224を備えている。コンポーネントは、データバス224を介して接続されることに加えて(または接続される代わりに)、直接接続してもよい。更に後述するように、デバイス100内のモジュールは、ハードウェア、ソフトウェア、またはそれらの組み合わせとして実装することも可能である。
【0016】
デバイス100は、データ及びコンピュータ可読命令を処理するために1つまたは複数の中央処理装置(CPU)を備えるコントローラ/プロセッサ204と、データ及び命令を格納するためのメモリ206を含み得る。メモリ206は、揮発性ランダムアクセスメモリ(RAM)、不揮発性読み出し専用メモリ(ROM)、及び/または他のタイプのメモリを含むことができる。デバイス100は、データ及び命令を格納するための不揮発性記憶装置208も含むことができる。データ・記憶装置208は、磁気記憶装置、光学記憶装置、ソリッドステート記憶装置などの1つまたは複数の蓄積型を含む。デバイス100は、入力/出力装置インターフェース202を介して取り外し可能な或いは外部のメモリ及び/または記憶装置(取り外し可能なメモリカード、メモリキードライブ、ネットワークストレージなど)に接続することもできる。デバイス100及びその様々なコンポーネントを動作させるためのコンピュータ命令は、コントローラ/プロセッサ204によって実行され、メモリ206、記憶装置208、外部デバイス、或いは以下に説明するアクティビティ監視モジュール240に含まれる記憶装置248に格納することができる。代替的に、実行可能命令のいくつかまたは全ては、ソフトウェアに加えて(または代わりに)、 アプリケーション固有のハードウェアに低減或いはファームウェアに埋め込まれてもよい。従って、本明細書に開示されたシステム、プロセス、及びアルゴリズムは、ソフトウェア、ファームウェア、及び/またはハードウェアの様々な組合せで実装することができる。
【0017】
デバイス100は、入力/出力装置インターフェース202を備えている。様々な内部及び外部入力/出力インターフェースがデバイス100に含まれ得る。実施例の入力装置には、カメラ212、プッシュボタン214、タッチインターフェース216、マイクロフォン218、無線ヘッドセット806、及び全地球測位受信機(例えば、GPS、GLONASS)が含まれる。ローカル入力デバイスに加えて、データネットワーク802を介して他の入力デバイスを接続することもできる。出力デバイスは、ディスプレイ210及びスピーカ(図示せず)、並びにデータネットワーク802を介して接続されたデバイスを備えている。
【0018】
また、入力/出力装置インターフェース202は、ユニバーサルシリアルバス(USB)、ファイヤーワイヤー、サンダーボルト、イーサネット(登録商標)などの外部周辺機器及びネットワークインターフェース、並びに無線周波数(RF)及び赤外線トランシーバ、ブルートゥースのような無線インターフェース、WiFiなどの無線ローカルエリア・ネットワーク(WLAN)、ロングタームエボリューション(LTE)、WiMAX、GSM(登録商標)、CDMAなどのプロトコルを支援する携帯通信トランシーバを備えることができる。ネットワーク802は、インターネット及び/またはプライベートネットワークであってもよく、分散コンピューティング環境(
図8と共に以下で詳しく説明する)を含んでいてもよい。
【0019】
慣性センサ266における加速度計は、軸に沿ってデバイス100の加速度を測定することが可能である。3軸加速度センサ(現在、一般的に多くの民生用電子機器で使用されている)は、デバイス100に対してx、y、z軸に沿った加速度を提供する。デバイスのx、y、z軸に沿った加速度は、デバイスの向きに依存している。換言すれば、もしデバイスが画面を上向きにしてテーブルの上に平らに置かれている場合、左側から右に移動するようにデバイスを押すと、x軸に沿った加速度が生成される。しかし、デバイスが90度反時計方向に回された場合には、左から右へデバイスを押すことによってy軸に沿った負の加速度が生成される。また、慣性センサ266にはジャイロスコープも備えることが可能であり、デバイスのx、y、z軸の周りにおける回転経時変化を測定することができる。上下判断する特殊な重力センサ、及び地球の磁場(例えば、コンパス方位)に対して相対的な向きを決定するための磁力計のような他のセンサを利用することも可能である。これらのセンサは、デバイスの動きを検出するために使用することができ、以下に説明するように差し迫ったデバイスアクティビティのインディシアとして用いることが可能である。
【0020】
デバイス100は、オーディオデータを格納する循環バッファ232を更に備えることができる。
図1について上述したように、バッファは2秒または3秒のような任意のサイズであってもよい。循環バッファは、絶えず自分自身の内容を上書きする先入れ先出し方式(FIFO)バッファである。実際には、循環バッファはメモリ206、記憶装置208、記憶装置248、または他のメモリの一部であってもよい。バッファは、短期記憶のために使用されるためRAMなどの揮発性メモリを使用することができる。また、いくつかのシステムでは、バッファリング中に行われる頻繁な「書き込み」を鑑みると、不揮発性メモリに比べて揮発性メモリは低消費電力の利点を享受することができる(例えば、ダイナミックRAMへの書き込みは、フラッシュストレージへの書き込みよりも少ないエネルギーしか使用しない)。プロセッサ204によって実行されるソフトウェアまたはファームウェア、或いは専用のハードウェアは、バッファに割り当てられたメモリ位置を通過してループし、循環ループ内のバッファへ書き込みを順次に行うことができる。
【0021】
デバイス100はまた、アクティビティモニタモジュール240を備えていてもよい。モジュール240にはアクティビティモニタ242が備えられている。
図1に戻って説明するが、アクティビティモニタ242は、差し迫ったデバイスのアクティビティ(122)のインディシアのためにセンサとプロセッサ204を監視し、循環バッファ(124)を活性化する。直接または介在エンジンを介して監視されているセンサは、カメラ212、ボタン214、タッチインターフェース216、マイク218のようなコンポーネント、ワイヤレスヘッドセット806(これにはまた、独自の「ボタン」が具備されていてもよい)、ネットワーク802を介して接続されたリモートデバイス、そして慣性センサ266などの外部コンポーネントを含んでいる。アクティビティモニタは、例えば、プロセッサ(例えば、プロセッサ204)に実装されるソフトウェアまたはファームウェアとして、或いは順序論理回路に実装される有限状態マシンのようなハードウェアとして実装することができる。アクティビティモニタ242の操作については、更に後述する。
【0022】
アクティビティモニタ242を支援する介在エンジンは、センサからの複雑なデータを単純な形に変換する。これらの介在エンジンの例としては、音声認識エンジン244、話者認識エンジン246、及び画像処理エンジン250を含むことができる。これらのエンジンは、プロセッサ204によって実行されるコードによって実装することができ、或いは分散コンピューティング環境内のネットワーク802を介して遠隔プロセッサ上に実装してもよい。
【0023】
音声認識エンジン244は音声をテキストに変換することができ、「コマンド」語のような特定の単語が認識されたときインディシアを提供し、及び/または受信された音声が音声成分を含んでいることを示すことができる。話者認識エンジン246は、特定のユーザが話している時に識別するため、受信した音声信号を保存された音響指紋と比較する。
【0024】
音声認識エンジン244と話者認識エンジン246は、例えば、音声認識と音響指紋処理の両方を実行するように設定された分級機システムの一部として実装することができる。このような分級機システムは、例えば、サポートベクターマシン(SVM)であるが、代わりに、またはSVMを増強するために他の機械学習技術も使用され得る。分級機システムは、隠れマルコフモデル(HMM)、ガウス混合モデル(GMM)、メル周波数ケプストラム係数(MFCC)などを利用することができる。音声認識エンジン244で使用される音声認識技術と話者認識エンジン246で使用される音響指紋やモデルは、同一または類似のパターン認識システムを利用することができるが、異なるモデル(例えば、音声認識は音素モデルを使用することができるのに対して、話者認識は声紋モデルを使用することができる)を伴ってもよいし、或いは完全に異なる技術を使用することも可能である。
【0025】
音声認識エンジン244は特定の「コマンド」語を聞き取るように設定されており、話者認識エンジン246が特定の声を聞き取るように設定されている場合、一致が認められると分級機システムは、アクティビティモニタ242に信号を送ることできる。例えば、この信号は状態マシンへの信号であるが、デバイス100のオペレーティングシステムまたはコントローラ/プロセッサ204上で実行されるアプリケーションのアプリケーション・プログラミング・インターフェース(API)のいずれかを介して送信されるAPIへの高レベルコマンドであってよく、または入力/出力装置インターフェース202によって提供されるネットワーク接続を介して送信されたメッセージであってもよい。信号は、コントローラ/プロセッサ204の予め規定された割込みをトリガすることが可能である。同様に、コントローラ/プロセッサ204上で実行されるコードは、一致が見出されたか否かを決定するために分級機システムを周期的にポーリングすることができる。
【0026】
画像処理エンジン250は、カメラ212にアクセスし、運動解析や顔検出(または顔認識)を実行する分級機システムとして実装することもできる。
【0027】
これらのエンジンで使用されるモデルは、記憶装置248に格納することができるが、この記憶装置は記憶装置208などの専用記憶装置または他の記憶装置の一部であってもよい。例えば、音声認識エンジン244は、受信された音声を、記憶装置248に記憶された音響、言語、及びその他のデータモデル並びに情報と比較することができる。音声認識のために記憶されたモデルは、更に、特定の単語に音素の発音で一致するデータ、及び単語または語彙の辞書、並びに特定のコンテキストで一緒に使用される可能性が高い単語を記述するデータを含むことができる。
【0028】
話者認識エンジン246は、話者が既知の音声を述べているかどうかを判断するために、音声データを記憶装置248に格納された1つまたは複数のテキスト独立型声紋署名やモデルと比較することができる。記憶装置248に格納されている認識された音声署名は、トレーニングセッションを用いて生成することができるか、或いはユーザが音声関連のタスクのためにデバイスを使用する際にアセンブルすることができる。
【0029】
画像処理エンジン250によって実行される顔検出は、ユーザ設定または非ユーザ設定であってもよい。このような顔検出はカメラ機能を提供する装置で急速に普及しており、この機能性はデバイス100上の他の常駐プログラムと共有することができる(また、他のエンジンに関しても同様である)。特定の顔を認識するために顔認識が使用される場合、顔モデルは、デバイスのトレーニングセッションの一部として生成することができるか、またはユーザが自分自身の写真を撮る時にアセンブルすることができる。
【0030】
また、アクティビティ監視モジュール240にはパターン認識エンジン252を含めることが可能であり、このエンジンは、一連の動的モデル(例えば、ベイジアン)を適用してオーディオと音声の記録及び処理に関連したデバイスの使用におけるパターンを識別するために、フィルタ処理することができる。例えば、オーディオと音声を記録及び処理するために、ユーザがアプリケーションを利用する時刻及び/またはデバイスの位置に関連するパターンである。センサデータ及び/または他のエンジンによって提供されるインディシアが差し迫ったアクティビティを示唆している場合、記憶装置248に格納された過去の使用パターン基づいて、パターン認識エンジンは、インディシアがオーディオを記録及び処理するデバイスを用いているユーザに予示する確率を提供することができる。もし、確率が閾値(異なるインディシアについて異なり得る閾値)を超えた場合には十分な共通性を提供し、活動モニタ242が循環バッファ232を活性化することができる。ただし確率が閾値未満である場合、活動モニタ242は活性化を見送ることができる。確率は閾値を下回るがユーザが音声の記録または処理をアクティブにして開始する場合には、パターン認識エンジンは、対応する記憶パターンを変更する、及び/または将来のインディシアに基づいてバッファの活性化のために閾値を調整することができる。
【0031】
図3は、デバイス100の動作のためのアルゴリズムの一例を示す。プロセスは300で開始され、320で音声活動が監視される。監視中に、音声データのストリーム310が受信される。音声ストリームは、特にマイクロフォン218、ヘッドセット806、またはネットワーク802を介して接続されたオーディオキャプチャデバイスなどからキャプチャされる音声とすることができる。
【0032】
活動モニタ242は、音声を記録または処理せよとのユーザ・コマンドが間近に迫っている可能性があることのインディシアのためにアクティビティ320を監視している。この監視は、インディシアが検出される(322「はい」)まで継続的なループ(322「いいえ」)で行ってもよい。
【0033】
図4は、アクティビティを監視する320のためのより詳細な実施例である。監視は、インディシアの存在によってバッファを活性化することができる様々なインディシアを確認する。
図4は一連の連続したステップとしてアクティビティの監視320を示しているが、ステップは任意の方法にアレンジすることができ、また、インディシアのいずれか(または他のインディシア)は、それ自体でまたは他のインディシアとの組み合わせで、バッファの活性化をもたらすことが可能である。一つのインディシアは、オーディオキャプチャまたは処理アプリケーションがプロセッサ204で開始するか(490)を示している。アプリケーション自体は高性能バッファで動作するように設定されているか或いは設定されていないため、これは特定アプリケーションの起動を監視する、及び/またはI/Oデバイス・インターフェース202を介して接続された音声入力装置にバス224を経由して通信チャネルを開始するアプリケーションを監視するプロセッサ204上で実行中のバックグラウンド・プロセスを有するものを含むことができる。
【0034】
別のインディシアは、光強度の変化を監視することである(491)。この機能性は、光の強度を調整するために、バックライトを使用する液晶表示装置またはフロントライトを使用する電子ペーパーディスプレイを有する電子機器に一般に組み込まれている。環境光の強度をどのようにして測定するかの例としては、ディスプレイ210に組み込まれた一つまたは複数の光電セルを使用すること、カメラ212を使用することが挙げられる。光強度の変化は、それ自体で、または他のインディシアとの組み合わせで差し迫ったアクティビティのインディシアとして用いることができる。光強度の変化は、ユーザ(492)の動きや存在または顔認識(493)を監視するように、消費電力が高いレベルの他のプロセスをアクティブ化するために使用することもできる。急激な光強度の変化は、それ自体がインディシアとして有用であり得る。何故なら、ユーザの手が強度変化を引き起こすことでユーザがデバイスに手を伸ばしかけていると指し示すことができるからである。
【0035】
別のインディシアは、カメラ212のようなカメラを用いてユーザ(492)の動きや存在を監視することである。画像処理エンジン250は、動きがカメラの視野内で行われたかどうかを決定するために、カメラを介して取得された一連の画像を比較する。これは独立したプロセスとして実行してもよいし、電力消費を最小限に抑えるために光強度(491)の変化に応答して実施してもよい。
【0036】
もう一つのインディシアは、顔や頭部(493)のために取得した画像を検索することである。顔認識は写真撮影のために使用することができるモバイルデバイスに広く含まれており、画像処理エンジン250と顔認識処理(493)は撮影ソフトウェアコンポーネントによって使用される共有プロセスであってもよい。顔認識処理は独立したプロセスであってもよいし、電力消費を最小限に抑えるために、光強度(491)の変化及び/または動き検出(492)に応答して実施することも可能である。会話するためにユーザが頭部の近くにデバイスを置いている(例えば、頭部の横や口に近い位置に)ことを判断するために、とりわけ顔と頭部検出を使用することができる。
【0037】
別のインディシアは、表示画面210のインターフェース216上で指が検出された時(494)である。静電容量式タッチパネルとジェスチャベースのディスプレイインターフェースとによって、画面に指が接近すると接触する前に検出することができる。
【0038】
もう一つのインディシアは、周囲の音(495)を監視することである。周囲の音は、例えばマイクロフォン218、ヘッドセット806、またはI/Oデバイス・インターフェース202を介して接続された他のオーディオ入力デバイスから受信される背景雑音に勝るオーディオ閾値量を超えた音声であってもよい。周囲の音(495)の検出は、インディシア自体として、他のインディシアとの組み合わせで用いることができ、及び/または会話を検出するために音声を処理する(496)及び/または特定の話者を検出する(497)ために音声を処理する場合のように、大きな電力を消費する他のオーディオ分析プロセスを活性化することができる。
【0039】
別のインディシアは、会話を検出する(496)ことである。このプロセスは音声認識エンジン244によって実行することができ、プロセスとエンジンの双方は、音声テキスト処理のようにデバイスによって提供される他のプロセスと共有することができる。消費電力を減らすためにアクティビティ監視モジュール240によって実行されるので、会話の検出(496)には、音素を単語や文章に完全に変換するのではなく、一連の音素が検出されたことを検出するように、音声認識ツールのサブセットを使用することができる。このプロセス(496)は独立して行われてもよいし、消費電力を最小化するために周囲の音(495)の検出に応答して実施されることも可能である。
【0040】
もう一つのインディシアは、特定の話者が認識されたかどうかである(497)。音声認識エンジン246は、受信した音声をデバイスの所有者のものとして記憶された音声署名と比較することができる。このプロセス(497)は独立して行われてもよいし、消費電力を最小化するために周囲の音(495)の検出及び/または音声検出(496)に応答して実施されることも可能である。
【0041】
別のインディシアは、慣性センサ266を使用して検出されたデバイスの動きである(498)。インディシアはデバイスの動きの変化に基づいてもよいし(例えば、ユーザがデバイスを取り上げた場合のように)、直立状態に維持されているなどデバイスが特定の向きに置かれていることに基づいてもよい。
【0042】
インディシアが検出されると、パターン認識エンジン252は、一つまたは複数のインディシアの発生と現在の条件(例えば、時間、場所など)、並びにインディシアの発生に先行するアクティビティを音声の記録及び/または処理に先行するユーザ・アクティビティの過去のパターンと比較することができる。もし、パターンが類似しており(424「はい」)共通性の閾値を超える場合、プロセスは続行する。
【0043】
図3に戻って説明するが、もしインディシアが検出された場合、循環バッファ232がアクティブ化される(340)。バッファの起動に続いて、オーディオを記録または処理せよとの指令信号をユーザから受信したか否かを確認するためのチェックを行うことができる(330)。アクティビティを監視するプロセス(320)は直列に示されているが、アクティビティの監視(320)とユーザ・コマンド信号があったか否かの監視は、並列に或いは異なる配列で動作させることもできる(330)。
【0044】
音声を処理または記録せよとデバイスに指示するユーザ・コマンド信号を監視する(330)例としては、物理的なボタンを押す行為(例えば、ボタン214)、デバイスのグラフィカル・ユーザ・インターフェースを介して提供される仮想ボタンの押下、発話されたコマンドワード、またはコマンドジェスチャが含まれる。
【0045】
信号がまだ受信されていない場合(330「いいえ」)、ユーザ信号が受信されるまで(330「はい」)バッファリングが継続する。次に、バッファリングされた音声の少なくとも一部はバッファから取得され(350)、ユーザ・コマンドの後に受信した音声にプリペンドされる(360)。そして、組み合わされた音声ストリームは、音声をテキストに処理するように記録及び/または処理される(370)。音声ストリームが終了すると(例えば、人が話すことを停止すると)、或いは終了した(例えば、ボタン214を解除した)との信号を送ると、プロセスは再起動する(380「いいえ」)。
【0046】
図5は、時間領域オーディオ信号502を示している。ライン504は、記録または処理する信号を受信した時点(すなわち、330)を表しており、この時点ではライン504の右側のオーディオサンプル516はコマンド後に受信された音声であり、ライン504の左側の音声はバッファリングされた音声である。直近にバッファリングされた音声の固定部分はプリペンドすることができ(360)(例えば、直前の0.5秒)、或いは使用した部分514は、どこで会話または直近の単語が始まったかを検出することによって決定することができる。「沈黙」は、背景周囲ノイズエンベロープ510に対して決定される。バッファリングされた沈黙512の一部は、処理(370)を容易にするためにサンプル514に含ませることができ、音声認識のようにプロセスの精度に恩恵をもたらすことが可能である。インディシアとしての音の検出(
図4の495)は、この周囲エンベロープ510を基準にしてもよい。
【0047】
図6は、デバイス100に含めることができる追加のコンポーネントを示すブロック図である。循環バッファ232はバッファモジュール630に組み込まれている。更に、バッファモジュール630は、標準化及び/または雑音補償モジュール634、アップ/ダウンオーディオサンプラ636、及びアンチエイリアシングフィルタ638を備えている。
図7は、
図3を補足するフローチャートであり、
図6の追加コンポーネントの使用を示している。
【0048】
図7に示した第1の追加機能は、もし受信した音声を記録または処理せよとの指示をユーザから受けずに一定の時間が経過した場合に(330)、循環バッファ232を遮断するために使用されるタイマーである。プロセスが開始されるとバッファは初期化され(704)、今後あり得るユーザ・コマンドが受信されることをインディシアが示唆した後にカウント728を開始する。所定の時間に到達するまでは(744「いいえ」)、音声のバッファリングが続行される。所定の時間が経過すると(744「はい」)、プロセスが再起動する。加えて、デバイス100上の電力レベルが低い場合には、インディシア320の監視プロセス及び循環バッファの使用は、電力を節約するために一時停止することができる。
【0049】
別の更なる機能は、標準化及び/または受信した音声にノイズ補償を(634によって)適用することである。プロセスが開始されると、レベルが初期化される(704)。補正はバッファリングされた音声に適用され(732)、ポスト・ユーザ・コマンドストリーム上にプリペンドされた以上にバッファリングした音声の大部分(例えば、バッファ全体)を使用しながら補正が継続的に時間をかけて算出され(742)、更に補正を調整することができる。チャネルの標準化及びノイズ低減に加えて、受信した音声に印加されるゲインは調整することができる(例えば、音声「クリッピング」防止するために)。チャネルの標準化にはケプストラムを算出すること、すなわちオーディオフレームのための音声認識機能であるが、そして、ある期間にわたってケプストラムベクトルを平均化し、時間をかけてケプストラム分散を決定することが含まれ得る。ケプストラム分散と平均値は、オーディオチャネルを標準化するために、背景雑音の影響を低減するために使用することができる。他の雑音補償技術を適用することも可能である。
【0050】
一態様では、デバイスまたは音声処理システムに複数の循環バッファを組み込むことができる。バッファは異なる長さであってもよいし、異なる目的のために使用されてもよい。例えば、長いバッファは、デバイスによって経験される音声状態のより大きな拡張サンプルを採取するために使用することができ、これによって長い状態サンプルに基づくオーディオ補正をもたらすことが可能となる(例えば、チャネル標準化など)。より短いバッファは、音声認識処理のためにユーザの会話にプリペンドされることになる音声を実際に格納するために使用することができる。一態様では、より長いレンジのバッファは、より長いレンジのバッファに対応する時間枠にわたってオーディオ性能に関連する統計を格納することができる。更に、より長いレンジのバッファは、枠/時間ベースの間引き(ここではマイクが一定の間隔の間オフ/オンされるが、正常速度で音声はサンプリングされる)及び/またはサンプルレートの間引きを行うことができる。
【0051】
上述したこの調整と従来の音声レベル調整の違いは、音声を記録または処理せよとのユーザ・コマンドの前に計算された補正が、コマンドの後に受信した音声に適用され得ることであり、バッファリングされた音声とライブオーディオとの間の音声品質に継続性を提供し、ストリームの最初から補正された正しいレベルを提供することができるということである。
【0052】
別のさらなる機能は、音声をバッファリングする時に、デシメーションを使用することである。これは、オーディオサンプルの一部だけを循環バッファ232内に格納するため、デシメーションユニット636を使用することによって達成することができる。例えば、デシメーションユニット636は、バッファ内に各N個(例えば、10の1)ユーザ・インターフェースだけのオーディオサンプルを記憶するのみとすることができる。
【0053】
上述した高性能なバッファシステムのコンポーネントの大多数はデバイス100内に常駐しているが、コンポーネントを分散コンピューティング環境内に配置することもできる。例えば、バッファモジュール630及び/またはアクティビティ監視モジュール240を、ネットワーク802を介して接続された他のデバイスに常駐させることができる。更に、処理(360)の一部または全部を、ネットワーク802を介してデバイス100に接続されたプロセッサ上で実行することもできる。例えば、
図8に示すように、無線デバイス804、無線ヘッドセット806、ラップトップ808、タブレットコンピュータ810、端末812、有線ヘッドセット814、及び/またはコンピュータ816がオーディオストリームを取得し、ユーザ・インターフェースを含み、そして慣性センサ266を備えていてもよく、一方でネットワーク802を介して接続されたサーバ818は、バッファモジュール630、アクティビティ監視モジュール240、及び/またはデータ記録と処理(360)の演算性を実行することができる。このような分散環境は、ネットワークに接続されて限られた演算能力と記憶容量しか持たないデバイスに、高性能バッファのメリットを享受させることを可能にする。
【0054】
図2及び
図6のシステムは、
図1、3、4、及び7に示す処理を実行するためのコンピュータ読み取り可能な、及びコンピュータ実行可能な命令を含むことができる。このような命令は、不揮発性のコンピュータ読み取り可能な記憶装置208及び/または248に格納することができる。
【0055】
図2及び6のコンポーネントはシステム100に含まれていてもよいが、図示しない他のコンポーネントを含めることもできる。また、図示したコンポーネントのいくつかは、高性能バッファシステムの一般的な概念を用いることが可能な全てのデバイスには存在しないかもしれない。更に、単一のコンポーネントとしてデバイス100内に示されているいくつかのコンポーネントは、単一のデバイス内で複数回にわたって現れることがある。例えば、デバイス100は、複数の入力/出力装置インターフェース202または複数のコントローラ/プロセッサ204を備えることがある。
【0056】
複数の循環バッファ232、アクティブ監視モジュール240、及びバッファモジュール630は、
図1、3、4、及び7に示す処理を実行するシステムで使用することができる。このようなマルチデバイスシステムにおいて、デバイス100は、これらのプロセスの様々な側面を実行するための種々のコンポーネントを備えることができる。複数のデバイスが重複するコンポーネントを備えていてもよい。
図1、2、及び6に示されているデバイス100は例示的なものであり、デバイスはスタンドアローンのデバイスであってもよいし、全体的または部分的により大きなデバイスまたはシステムのコンポーネントとして備えられてもよい。
【0057】
本明細書に開示した概念は、例えば、デジタルカメラ、携帯電話、携帯情報端末(PDA)、タブレットコンピュータ、ヘッドマウントカメラとディスプレイを備えたウェアラブルコンピュータ、その他のモバイルデバイスなどを含む多くの様々なデバイスやコンピュータシステムに適用することができる。デバイス100のコンポーネントは、汎用コンピューティング・システム、サーバ・クライアント・コンピューティング・システム、メインフレーム・コンピューティング・システム、電話コンピューティング・システム、ラップトップコンピューターなどを含む高性能バッファ機能を提供することができる他のデバイスまたはシステムのコンポーネントであってもよい。
【0058】
様々なコンポーネントは、デバイス100と共に全体的に或いは部分的に使用することができる。例えば、カメラ212は、画像をキャプチャするために電荷結合素子(CCD)イメージセンサやアクティブピクセルセンサ(APS)を備えることができる。液晶表示ディスプレイのようなディスプレイ210、有機発光ダイオードディスプレイ、電子ペーパー、エレクトロクロミックディスプレイ、陰極線管ディスプレイ、フィールドエミッションディスプレイ、ピコプロジェクタや画像/またはビデオを表示するための他の適切なコンポーネント、並びに任意の適切な技術。デバイス218〜210は、それぞれがデバイス100内に一体化され得るか、または分離していてもよい。
【0059】
本開示の上述した態様は、例示的なものであることを意図している。これらは、本発明の原理及び適用を説明するために選択されたものであり、網羅的とする或いは発明を限定する意図はない。開示された態様の多くの変更及び変形は、当業者には明らかであろう。コンピュータ、デジタルイメージング及び/またはコンテンツ変換の分野における通常の知識を有する者は、本明細書に記載の構成要素及びプロセス・ステップは、他の構成要素またはステップ、或いは構成要素またはステップの組み合わせと交換可能であり得ることを認識し、依然として本開示の利益及び利点を達成するであろう。また、本発明は、ここに開示された特定の詳細及びステップの一部または全てがなくても実施できることは、当業者には明らかなはずである。
【0060】
本開示の態様は、コンピュータ方法、システム、或いはメモリデバイスまたは非一時的なコンピュータ可読記憶媒体などの製品として実装することができる。コンピュータ可読記憶媒体はコンピュータによって読み取り可能であり、本開示に記載のプロセスを実行するためにコンピュータまたは他のデバイスを指示する命令を含み得る。コンピュータ可読記憶媒体は、揮発性コンピュータメモリ、不揮発性コンピュータメモリ、ハードドライブ、ソリッドステートメモリ、フラッシュドライブ、リムーバブルディスク、及び/またはその他の媒体によって実行することができる。
【0061】
本明細書で使用されるように、特に指定しない限り、用語「a」または「one」は、1つまたは複数の項目を含み得る。更に、「に基づいて」という語句は、特に記述しない限り、「に少なくとも部分的に基づいて」を意味することが意図させている。
(条項)
【0062】
1.電子デバイス上の音声バッファリングする方法であって、
差し迫ったデバイスのアクティビティのインディシアを検出することを含み、前記インディシアは、音声を記録または処理するアプリケーションの1つまたは複数の起動と、入射光強度の変化と、動きの視覚的検出と、デバイスに近接するユーザの視覚的検出と、顔の視覚的認識と、タッチ感応表示画面への指の近位の検出と、デバイスの動きと、周囲音の検出と、発話の検出と、または特定の話者の検出とを含み、
前記方法は、前記インディシアを検出することに応答して、循環バッファをアクティブ化し、
受信した音声を前記循環バッファ内に格納し、
音声を処理または記録する指示を受信し、
前記指示に応答して、前記指示前に前記バッファに格納された前記音声の少なくとも一部を、前記指示後に受信した音声と組み合わせ、そして、
組み合わされた音声を送信または処理する、
こと含む前記方法。
【0063】
2.前記受信された指示は、物理的なボタンの押下、グラフィカル・ユーザ・インターフェースを介して提供される仮想ボタンの押下、またはコマンドジェスチャである、条項1に記載の方法。
【0064】
3.更に、前記インディシアを検出することに応答して、かつ前記指示を受信する前に、前記受信した音声に適用されるべきオーディオ補正を算出し、そして、
前記オーディオ補正を前記指示後に受信した音声に適用する、条項1に記載の方法。
【0065】
4.前記オーディオ補正は、1つまたは複数のチャンネル標準化またはノイズ除去を含む、条項3に記載の方法。
【0066】
5.コンピューティングデバイスであって、
少なくとも1つのプロセッサと、
一連の動作を実行するために前記少なくとも1つのプロセッサによって実行されるように動作可能な命令を含むメモリ装置を備え、前記少なくとも1つのプロセッサを、
差し迫ったデバイスのアクティビティのインディシアを検出し、
差し迫ったデバイスのアクティビティの前記インディシアを検出することに少なくとも部分的に基づいて循環バッファを活性化させ、
受信した音声を前記循環バッファ内に格納し、
音声を処理または記録するための信号を受信し、
前記信号を受信する前に前記循環バッファに格納された前記音声の少なくとも一部を、前記信号の後に受信した音声と組み合わせ、そして、
前記組み合わされた音声を送信または処理する、
ように設定することを含む前記コンピューティングデバイス。
【0067】
6.差し迫ったデバイスのアクティビティの前記インディシアを前記検出することは、前記少なくとも1つのプロセッサに結合した監視センサに少なくとも部分的に基づいている、条項5に記載のコンピューティングデバイス。
【0068】
7.前記インディシアは、音声を記録または処理するアプリケーションの1つまたは複数の起動と、入射光強度の変化と、動きの視覚的検出と、前記デバイスに近接するユーザの視覚的検出と、顔の視覚的認識と、タッチ感応表示画面への指の近位の検出と、デバイスの動きと、周囲音の検出と、発話の検出と、または特定の話者の検出とを含む、条項6に記載のコンピューティングデバイス。
【0069】
8.音声を記録または処理する前記信号は、物理的なボタンの押下、前記デバイスのグラフィカル・ユーザ・インターフェースを介して提供される仮想ボタンの押下、またはジェスチャに応答して生成される、条項5に記載のコンピューティングデバイス。
【0070】
9.更に、前記少なくとも1つのプロセッサを、
音声を記録または処理する前記信号を受信する前にオーディオ補正を算出し、そして、
前記オーディオ補正を前記信号の後に受信した前記音声に適用するように設定する命令を含む、条項5に記載のコンピューティングデバイス。
【0071】
10.前記少なくとも1つのプロセッサは、
第一の循環バッファに格納された音声に少なくとも部分的に基づいてオーディオ補正を算出し、
前記オーディオ補正を第二の循環バッファに格納された音声に適用し、そして、
前記第二の循環バッファに格納された前記信号の一部を、前記信号の後に受信した音声と組み合わせるように設定される、条項9に記載のコンピューティングデバイス。
【0072】
11.前記オーディオ補正は、1つまたは複数のチャンネル標準化またはノイズ除去を含む、条項9に記載のコンピューティングデバイス。
【0073】
12.更に、前記少なくとも1つのプロセッサを、
ユーザ履歴に少なくとも部分的に基づいてキャプチャされた音声の利用に関連するデバイスのアクティビティのパターンを認識し、そして、
少なくとも差し迫ったデバイスのアクティビティの前記検出されたインディシア及び前記インディシアの発生に関連する他のデータを認識パターンと比較するように設定する命令を含み、
前記循環バッファを活性化させることは、更に、前記比較に少なくとも部分的に基づいている、条項5に記載のコンピューティングデバイス。
【0074】
13.コンピューティングデバイスを制御するためのプロセッサ実行可能命令を格納する非一時的なコンピュータ可読記憶媒体であって、
差し迫ったデバイスのアクティビティのインディシアを検出するプログラムコードと、
差し迫ったデバイスのアクティビティの前記インディシア検出することに少なくとも部分的に基づいて循環バッファを活性化させるプログラムコードと、
受信した音声を前記循環バッファに格納するプログラムコードと、
音声を処理または記録する信号を受信するプログラムコードと、
前記信号を受信する前に前記循環バッファに格納された前記音声の少なくとも一部を、前記信号の後に受信した音声と組み合わせるプログラムコードと、そして、
前記組み合わされた音声を送信または処理するプログラムコードと、
を含む非一時的なコンピュータ可読記憶媒体。
【0075】
14.差し迫ったデバイスのアクティビティの前記インディシアを検出する前記プログラムコードは、前記コンピューティングデバイスのセンサを監視することに少なくとも部分的に基づいている、条項13に記載の非一時的なコンピュータ可読記憶媒体。
【0076】
15.前記インディシアは、音声を記録または処理するアプリケーションの1つまたは複数の起動と、入射光強度の変化と、動きの視覚的検出と、前記デバイスに近接するユーザの視覚的検出と、顔の視覚的認識と、タッチ感応表示画面への指の近位の検出と、前記デバイスの動きと、周囲音の検出と、発話の検出と、または特定の話者の検出とを含む、条項14に記載の非一時的なコンピュータ可読記憶媒体。
【0077】
16.音声を記録または処理する前記信号は、物理的なボタンの押下、前記コンピューティングデバイスのグラフィカル・ユーザ・インターフェースを介して提供される仮想ボタンの押下、またはジェスチャに応答して生成される、条項13に記載の非一時的なコンピュータ可読記憶媒体。
【0078】
17.更に、音声を記録または処理する前記信号を受信する前にオーディオ補正を算出するプログラムコードと、そして、
前記オーディオ補正を前記信号の後に受信した音声に適用するプログラムコードを含む、条項13に記載の非一時的なコンピュータ可読記憶媒体。
【0079】
18.前記オーディオ補正を算出する前記プログラムコードは第一の循環バッファに格納された音声に少なくとも部分的に基づいており、
前記オーディオ補正を適用する前記プログラムコードは前記オーディオ補正を、第二の循環バッファに格納された音声に適用するプログラムコードを含み、そして、
前記第二の循環バッファに格納された前記音声の一部を、前記信号の後に受信した音声と組み合わせるプログラムコードを含む、条項17に記載の非一時的なコンピュータ可読記憶媒体。
【0080】
19.前記オーディオ補正は、1つまたは複数のチャンネル標準化またはノイズ除去を含む、条項17に記載の非一時的なコンピュータ可読記憶媒体。
【0081】
20.更に、ユーザ履歴に少なくとも部分的に基づいてキャプチャされた音声の利用に関連するデバイスのアクティビティのパターンを認識するプログラムコードと、そして、
少なくとも差し迫ったデバイスのアクティビティの前記検出されたインディシア及び前記インディシアの発生に関連する他のデータを認識パターンと比較するプログラムコードを含み、
前記循環バッファを活性化させる前記プログラムコードは、前記比較に少なくとも部分的に更に基づいている、条項13に記載の非一時的なコンピュータ可読記憶媒体。