(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
様々な図面における同様の参照番号および名称は同様の要素を示す。
【0015】
図1は、通話中に話者ダイアライゼーションを用いてオーディオを編集する一例のシステム100を示している。簡潔に言うと、以下により詳細に説明するように、息子105および母110が、コンピューティングデバイス115およびコンピューティングデバイス120を用いてネットワーク165を介して通話している。息子105は、ホットワード「ok computer(オッケー、コンピュータ)」およびコマンド「call mom(お母さんに電話して)」を含む発話130を話すことによって通話を開始した。通話中、コンピューティングデバイス115のマイクロフォンは、息子105と娘125との両方からの音声を検出する。息子105がホットワードを話したため、コンピューティングデバイス115は、息子105からの音声を含むオーディオデータを送信するが、娘125などの他のユーザからのものは送信しない。
【0016】
図1に示す例において、息子105は発話130「Ok computer, call mom(オッケー、コンピュータ、お母さんに電話して)」を話すことによって通話を開始する。コンピューティングデバイス115は、発話130を検出し、対応するオーディオデータを処理する。コンピューティングデバイス115は、電話、スマートフォン、ラップトップコンピュータ、デスクトップコンピュータ、スマートスピーカ、テレビ、スマートウォッチ、または任意の他の同様のデバイスなど、電話をかけるように構成された任意のタイプのデバイスであり得る。
【0017】
コンピューティングデバイス115は、オーディオデータ170を処理し、ホットワード172「ok computer(オッケー、コンピュータ)」を識別する。コンピューティングデバイス115は、続けてオーディオデータ175を処理し、コマンド「call mom(お母さんに電話して)」を識別する。コンピューティングデバイス115は、コンピューティングデバイス115の連絡先における「mom(お母さん)」の電話番号に対応するコンピューティングデバイス120とネットワーク165を介して通話を開始する。
【0018】
この通話は、ネットワーク165を介してコンピューティングデバイス115とコンピューティングデバイス120との間を接続する。通話中、息子105は「Hi Mom, I'm about to leave(もしもし、お母さん、もうすぐ出るよ)」と言う発話135を話す。コンピューティングデバイス115のマイクロフォンは発話135を検出し、コンピューティングデバイス115は、対応するオーディオデータ180を処理する。コンピューティングデバイス115は、同じ人が発話130におけるホットワードおよび発話135を話したと判定する。コンピューティングデバイス115は、発話135のオーディオデータ180を、ネットワーク165を介してコンピューティングデバイス120に送信する。コンピューティングデバイス120のオーディオスピーカは、発話135に対応するオーディオ145を出力する。母110は「Hi Mom, I'm about to leave(もしもし、お母さん、もうすぐ出るよ)」と聞く。
【0019】
通話は続く。息子105がスピーカモードで、または周囲の領域におけるあらゆる音を拾うスマートスピーカを用いて電話をしている部屋に娘125が入ることができる。娘125は、息子105が母110に話しかけて発話135を言うのに気付くことができる。コンピューティングデバイス115のマイクロフォンは、娘125が「Hi Mom(もしもし、お母さん)」と言う発話140を話すのを検出する。コンピューティングデバイス115は、発話140に対応するオーディオデータ182を処理する。コンピューティングデバイス115は、異なる人が発話140および発話130におけるホットワード172を話したと判定する。発話130においてホットワード172を話した人以外の人が発話140を話したため、コンピューティングデバイス115は、発話140に対応するオーディオデータ182の送信を抑制する。この場合、娘125が発話140を話した。娘125は、偶然のユーザまたは意図しないユーザまたは両方であり得る。
【0020】
コンピューティングデバイス115が、スマートフォンまたはスマートスピーカなどの、電話アプリケーションを実行するコンピューティングデバイスである場合、コンピューティングデバイス115は、発話140のオーディオデータ182を送信する代わりに、対応する期間の無音150を送信することができる。たとえば、娘125が1秒間発話140を話せば、コンピューティングデバイス115は、対応するオーディオデータ182のコンピューティングデバイス120への送信を抑制し、代わりに1秒間の無音150に対応するオーディオデータを送信する。発話135および発話140のタイミングを保持することによって、母110には会話が変更されたようには聞こえない。代わりに、母110は、会話中に息子105が止まったと信じることができる。
【0021】
息子105は続けて「I'll be there in 30 minutes(30分で着くよ)」と言う発話155を話す。コンピューティングデバイス115のマイクロフォンは発話155を検出する。コンピューティングデバイス115は、発話155に対応するオーディオデータ185を処理する。コンピューティングデバイス115は、同じ人が発話130におけるホットワード172および発話155を話したと判定する。
【0022】
コンピューティングデバイス115は、発話155のオーディオデータ185を、ネットワーク165を介してコンピューティングデバイス120に送信する。コンピューティングデバイス120のオーディオスピーカは、発話155に対応するオーディオ160を出力する。母110は「I'll be there in 30 minutes(30分で着くよ)」と聞く。通話は、息子105または母110が通話を終了するまで続く。
【0023】
図2は、話者ダイアライゼーションを実装するための一例のシステム200を示している。システム200は、音声オーディオを受信、処理、および送信するように構成された任意のタイプのコンピューティングデバイスであり得る。たとえば、システム200は、
図1のコンピューティングデバイス115またはコンピューティングデバイス120と同様であり得る。システム200のコンポーネントは、単一のコンピューティングデバイスに実装されても、複数のコンピューティングデバイスに分散されてもよい。
【0024】
システム200はオーディオサブシステム202を含む。オーディオサブシステム202は、マイクロフォン204、アナログデジタル変換器206、バッファ208、および様々な他のオーディオフィルタを含むことができる。マイクロフォン204は、音声などの周囲の領域における音を検出するように構成することができる。アナログデジタル変換器206は、マイクロフォン204によって検出されたオーディオデータをサンプリングするように構成することができる。バッファ208は、システム200による処理のために、サンプリングされたオーディオデータを格納することができる。いくつかの実装形態において、オーディオサブシステム202は継続的にアクティブであり得る。この場合、マイクロフォン204は絶えず音を検出していることができる。アナログデジタル変換器206は、検出されたオーディオデータを絶えずサンプリングしていることができる。バッファ208は、最後の10秒間の音などの最新のサンプリングされたオーディオデータを格納することができる。システム200の他のコンポーネントがバッファ208におけるオーディオデータを処理しなければ、バッファ208は前のオーディオデータを上書きすることができる。
【0025】
図2に示す例において、マイクロフォン204は「Hi Mom, I'm about to leave. Hi Mom. I'll be there in 30 minutes.(もしもし、お母さん、もうすぐ出るよ。もしもし、お母さん。30分で着くよ。)」に対応する発話を検出することができる。アナログデジタル変換器206は、受信されたオーディオデータをサンプリングすることができ、バッファ208は、サンプリングされたオーディオデータ212を格納することができる。
【0026】
オーディオサブシステム202は、オーディオデータ212をホットワーダ210に提供する。ホットワーダ210は、マイクロフォン204を介して受信され、および/またはバッファ208に格納されたオーディオにおけるホットワードを識別するように構成されている。ホットワーダ210は、ホットワード検出器、キーワードスポッタ、またはキーワード検出器と呼ぶことができる。いくつかの実装形態において、ホットワーダ210は、システム200の電源がオンになっているときはいつでもアクティブになり得る。ホットワーダ210は、バッファ208に格納されたオーディオデータを継続的に分析する。ホットワーダ210は、バッファ208における現在のオーディオデータがホットワードを含む可能性を反映するホットワード信頼性スコアを計算する。ホットワード信頼性スコアを計算するため、ホットワーダ210はホットワードモデル214を用いることができる。ホットワーダ210は、フィルタバンクエネルギーまたはメル周波数ケプストラム係数などのオーディオ特徴をオーディオデータ212から抽出することができる。ホットワーダ210は、サポートベクターマシンまたはニューラルネットワークを用いることによってなど、分類ウィンドウを用いてこれらのオーディオ特徴を処理することができる。いくつかの実装形態において、ホットワーダ210は、ホットワード信頼性スコアを決定するために音声認識を実行しない。ホットワード信頼性スコアがホットワード信頼性スコア閾値を満たせば、ホットワーダ210は、オーディオデータがホットワードを含むと判定する。たとえば、ホットワード信頼性スコアが0.8であり、ホットワード信頼性スコア閾値が0.7であれば、ホットワーダ210は、オーディオデータ212がホットワードを含むと判定する。
【0027】
図2に示す例において、ホットワーダ210は、オーディオデータ212における最初の話者がホットワード「ok computer(オッケー、コンピュータ)」を話したと判定する。ホットワーダ210は、ホットワードを含むオーディオデータ212の部分を識別することができる。たとえば、ホットワーダ210は、0.0秒と0.5秒との間のオーディオデータがホットワード220を含むことをコマンド識別器216およびダイアライゼーションモジュール218に提供することができる。ホットワーダ210は、話者がホットワードを発したことを示すデータをコマンド識別器216に提供することができるとともに、0.0秒と0.5秒との間のオーディオデータがホットワードを含むことをダイアライゼーションモジュール218に提供することができる。
【0028】
いくつかの実装形態において、ホットワーダ210は話者識別能力を含むことができる。この場合、ホットワーダ210は、ホットワードを話した特定の人を識別することができる。たとえば、ホットワーダ210は、アリスがホットワードを話した可能性が高いと判定することができる。ホットワーダ210は、アリスがホットワードを話した可能性が高いことを示すデータをダイアライゼーションモジュール218に提供することができる。話者識別を実行するため、ホットワーダ210は、ユーザが様々なフレーズを繰り返すように要求することによって、そのユーザについての音声データを前もって収集しておくことができる。ホットワーダ210は、収集された音声サンプルを用いて、話者識別モデルをトレーニングしておくことができる。
【0029】
コマンド識別器216は、オーディオサブシステム202から、またはホットワーダ210からオーディオデータ212を受信する。いくつかの実装形態において、ホットワーダ210が話されたホットワードを識別するか、またはユーザが、たとえば、コマンドボタンを選択することによってコマンドを話していることを示さない限り、コマンド識別器216はオーディオデータ212でコマンドを検索しないことがある。コマンド識別器216は、オーディオデータ212に対して音声認識を実行する音声認識器222を含むことができる。音声認識器222は、コマンド識別器216がコマンドについて分析するトランスクリプションを生成することができる。コマンド識別器216は、このトランスクリプションをコマンド224と比較して、トランスクリプションにおける用語のいずれかがコマンド224における用語と一致するかどうかを判断することができる。コマンド識別器216は、目的語を必要とするコマンドのためのコマンドの目的語を識別することもできる。たとえば、コマンド「call(電話する)」は目的語を必要とすることがある。コマンド識別器216は「call(電話する)」に続く言葉が、目的語、たとえば、「mom(お母さん)」であり得ると判定することができる。したがって、コマンドは「call mom(お母さんに電話して)」である。
【0030】
いくつかの実装形態において、コマンド識別器216は、ダイアライゼーションモジュール218にタイミングデータ226を提供することができる。たとえば、コマンド識別器216は、コマンド「call mom(お母さんに電話して)」が0.7秒と1.3秒との間に発生していることを示すことができる。
図2における例に従うと、オーディオデータ212は、0.0秒と0.5秒との間にホットワードを、そして0.7秒と1.3秒との間にコマンドを含む。いくつかの実装形態において、コマンド識別器216がコマンドを識別するまで、コマンド識別器216は音声認識器222を用いてオーディオデータ212を処理する。コマンド識別器216は、コマンド、たとえば、「call mom(お母さんに電話して)」を識別した後、音声認識の実行を停止するように音声認識器222に命令することができる。
【0031】
ダイアライゼーションモジュール218は、オーディオデータ212を分析し、異なるユーザによって話されたオーディオデータの部分を識別する。ダイアライゼーションモジュール218は、オーディオデータ212、オーディオデータ212が0.0秒と0.5秒との間にホットワードを含むことを示すデータ、およびオーディオデータ212が0.7秒と1.3秒との間にコマンドを含むことを示すデータを受信する。ダイアライゼーションモジュール218は、ダイアライゼーションモデル234を適用することによって、ホットワード話者によって話された、またはホットワード話者によって話されていないとしてオーディオデータ212の部分を分類する。いくつかの実装形態において、ダイアライゼーションモジュール218は、それらの話者に従ってオーディオデータ212の部分を分類する。ダイアライゼーションモデル234は、特定の人からの音声を識別するようにトレーニングされていないことがある。ダイアライゼーションモジュール218は、ダイアライゼーションモデル234をオーディオデータ212に適用して、共通の話者によって話された部分を、ダイアライゼーションモデル234がその同じ話者についてのデータを含まなくても、識別する。ダイアライゼーションモジュール218は、同じ人によって話された部分におけるパターンを識別することができる。たとえば、ダイアライゼーションモジュール218は、共通のピッチの部分を識別することができる。
【0032】
図2に示す例において、ダイアライゼーションモジュール218はオーディオデータ212を分析する。ダイアライゼーションモジュール218は、0.0秒と0.5秒との間にホットワードを含むオーディオデータ212の話者を話者1として分類する。いくつかの実装形態において、ダイアライゼーションモジュール218は、コマンドを含むオーディオデータ212の部分を処理しないことがある。この場合、ダイアライゼーションモジュール218は、0.7秒と1.3秒との間のオーディオデータの部分に話者ラベルを適用しないことがある。ダイアライゼーションモジュール218は「Hi Mom, I'm about to leave(もしもし、お母さん、もうすぐ出るよ)」に対応するオーディオデータの部分228が話者1によって話されていると判定する。ダイアライゼーションモジュール218は「Hi Mom(もしもし、お母さん)」に対応するオーディオデータの部分230が、話者1とは異なる話者2によって話されていると判定する。ダイアライゼーションモジュール218は「I'll be there in 30 minutes(30分で着くよ)」に対応するオーディオデータの部分232が話者1によって話されていると判定する。ダイアライゼーションモジュール218は、タイミングデータを生成して、オーディオデータの部分228、230、および232を互いに指定することができる。タイミングデータは、各部分の開始および終了を識別することができる。
【0033】
いくつかの実装形態において、ダイアライゼーションモジュール218は、システム200が、サーバまたは携帯電話など、他のコンピューティングデバイスに送信しようとしているオーディオデータを処理することができる。たとえば、ダイアライゼーションモジュール218は、コマンド「call mom(お母さんに電話して)」の後に始まるオーディオデータの話者を処理および識別することができるが、これは、他のユーザのコンピューティングデバイスに電話で送信されるオーディオデータであるからである。
【0034】
ダイアライゼーションモジュール218はオーディオデータ236をオーディオエディタ238に提供する。オーディオエディタ238は、アプリケーション設定240およびユーザ設定242に従ってオーディオデータ236を更新し、ホットワード話者以外の話者によって話されたオーディオデータの部分を削除する。
図2の例において、オーディオエディタ238は、ホットワードを話さなかった話者である話者2によって話されたオーディオ部分248を削除するとともに、ホットワード話者である話者1によって話されたオーディオ部分246および250を保持することによってオーディオデータ244を生成する。いくつかの実装形態において、オーディオエディタ238は、オーディオ部分248を対応する期間の無音に置き換える。いくつかの実装形態において、オーディオエディタ238は、オーディオ部分248の対応する無音の期間なしで、オーディオ部分246をオーディオ部分250とつなぎ合わせる。
【0035】
オーディオエディタ238は、アプリケーション設定240およびユーザ設定242にアクセスして、非ホットワード話者のオーディオを対応する期間の無音に置き換えるか、またはホットワード話者のオーディオをつなぎ合わせるかどうかを判断する。たとえば、アプリケーションは電話アプリケーションであり得る。電話アプリケーションのためのアプリケーション設定240は、オーディオデータ236のタイミングを保存することを示すことができる。この場合、オーディオエディタ238は、オーディオ部分248を対応する無音の部分に置き換えることによってオーディオデータ244を生成する。他の一例として、アプリケーションは検索アプリケーションであり得る。ボイスノートアプリケーションのためのアプリケーション設定240は、電話アプリケーションのようにタイミングに依存しないことがある。この場合、オーディオエディタ238は、オーディオ部分246とオーディオ部分250とをつなぎ合わせることによってオーディオデータ244を生成する。
【0036】
いくつかの実装形態において、オーディオエディタ238は、他のコンピューティングデバイスにトランスクリプションを送信する前に、オーディオデータ236のトランスクリプションを編集することができる。オーディオエディタ238は、オーディオ部分248のトランスクリプションを含まないオーディオデータ244のトランスクリプションを送信することができる。たとえば、オーディオエディタ238は「Hi Mom, I'm about to leave. I'll be there in 30 minutes.(もしもし、お母さん、もうすぐ出るよ。30分で着くよ。)」を送信することができる。システム200は、メッセージングアプリケーションなどのアプリケーションについてトランスクリプションを送信することができる。
【0037】
オーディオエディタ238は、ユーザ設定242にアクセスして、オーディオデータ236をどのように編集するかを決定することができる。ユーザ設定242は、ホットワード話者と非ホットワード話者との両方の音声を含むオーディオデータをどのように編集するかに関する設定を含むことができる。いくつかの実装形態において、ユーザ設定242は、ホットワード話者と非ホットワード話者との両方の音声を含むオーディオデータを保持することを示すことができる。いくつかの実装形態において、ユーザ設定242は、ホットワード話者と非ホットワード話者との両方の音声を含むオーディオデータを削除することを示すことができる。いくつかの実装形態において、アプリケーション設定240は、ホットワード話者と非ホットワード話者との両方の音声を含むオーディオデータのための編集規則を含むことができる。
【0038】
システムは、ユーザインターフェイスジェネレータ252を含む。ユーザインターフェイスジェネレータ252は、オーディオデータ236を編集するための選択肢をユーザに提示するユーザインターフェイスを生成することができる。たとえば、ユーザインターフェイスは、オーディオデータ244を生成するための選択肢を含むことができる。ユーザは、オーディオデータを送信する前にオーディオ部分248を削除する選択肢を選択することができる。ユーザは、オーディオ部分248の削除を無効にし、オーディオデータを他のコンピューティングデバイスに送信するときにオーディオ部分248をオーディオ部分246および250とともに含めることを選択することができる。
【0039】
いくつかの実装形態において、ユーザインターフェイスジェネレータ252は、オーディオエディタ238によるオーディオデータ236の編集を示すことができる。たとえば、ユーザインターフェイスジェネレータ252は、オーディオエディタ238が送信していたオーディオデータのトランスクリプションおよびオーディオエディタ238が削除していたオーディオデータのトランスクリプションを示すインターフェイスを生成することができる。ユーザインターフェイスはまた、各オーディオ部分について識別された話者に関するデータを含むことができる。
【0040】
いくつかの実装形態において、ダイアライゼーションモジュール218は、ホットワーダ210の後、コマンド識別器216の前にオーディオデータ212を処理することができる。この場合、ホットワーダ210は、ホットワードを含むオーディオデータ212の部分を識別する。ダイアライゼーションモジュール218は、ホットワード話者からの音声を含むオーディオデータを送信するとともに、ホットワード話者以外の話者からの音声を含むオーディオデータの送信を抑制する。ダイアライゼーションモジュール218は、オーディオデータをコマンド識別器216に送信することができ、コマンド識別器216はオーディオエディタ238にデータを送信する。ダイアライゼーションモジュール218は、オーディオサブシステム202が検出されたオーディオを処理する際、リアルタイムまたはほぼリアルタイムで、オーディオデータ212の話者の変化を識別することができる。
【0041】
システム200のコンポーネントは、クライアントデバイス、たとえば、コンピューティングデバイス115上に、または、クラウドとも呼ばれるサーバ上に実装することができる。たとえば、コマンド識別器216はサーバ上に実装することができる一方、システム200の他のコンポーネントはクライアントデバイス上に実装される。クライアントデバイスは、ホットワードを話さなかったユーザからの音声データを含むオーディオを、サーバにこのオーディオを送信する前に削除するように構成することができる。非ホットワード話者の音声データを削除することによって、クライアントデバイスは非ホットワード話者のプライバシーを保護する。非ホットワード話者は、居合わせた人または意図しないユーザであることがあり、システムと対話するつもりがなかった可能性が高い。
【0042】
図3は、話者ダイアライゼーションのための一例のプロセス300を示している。一般に、プロセス300は、ホットワードおよびウォーターマークを含むオーディオに基づいて、メディアコンテンツに対応するオーディオに対する音声認識を実行する。プロセス300は、1つまたは複数のコンピュータ、たとえば、
図1のコンピューティングデバイス115または
図2のシステム200を含むコンピュータシステムによって実行されるものとして説明する。
【0043】
システムは、発話に対応するオーディオデータを受信する(310)。発話は、複数の話者からの音声を含むことがある。たとえば、発話は「Ok computer, call Mom. Hi Mom, I'm about to leave. Hi Mom. I'll be there in 30 minutes.(オッケー、コンピュータ、お母さんに電話して。もしもし、お母さん、もうすぐ出るよ。もしもし、お母さん。30分で着くよ。)」であり得る。システムは、オーディオデータが第1の話者によって話された所定のホットワードの発話を含むと判定する(320)。システムは、ホットワーダを用いて、オーディオデータにおけるホットワードを識別することができる。たとえば、システムは、オーディオデータがホットワード「ok computer(オッケー、コンピュータ)」を含む可能性が高いと判定することができる。
【0044】
システムは、第1の話者からの音声を含むオーディオデータの第1の部分を識別する(330)。いくつかの実装形態において、システムは、ホットワードおよびホットワードに続くいずれのコマンドをも含まないオーディオデータを分析する。たとえば、システムは「ok computer、call Mom(オッケー、コンピュータ、お母さんに電話して)」に対応するオーディオデータの部分を分析しないことがある。システムは、コマンドに続くオーディオデータを分析することができる。システムは、ホットワードを話した第1の話者からの音声を含むオーディオデータの部分を識別する。たとえば、システムは「Hi Mom, I'm about to leave(もしもし、お母さん、もうすぐ出るよ)」に対応する音声データが、ホットワードも話した第1の話者によって話されていると判定することができる。
【0045】
システムは、第2の異なる話者からの音声を含むオーディオデータの第2の部分を識別する(340)。システムは、オーディオデータを分析して、ホットワード話者以外の話者からの音声を含むオーディオデータの部分を識別する。たとえば、システムは「Hi Mom(もしもし、お母さん)」がホットワード話者以外の話者によって話されていると判定することができる。
【0046】
いくつかの実装形態において、システムは、オーディオデータの第3の部分の話者を識別することができる。たとえば、システムは「I'll be there in 30 minutes(30分で着くよ)」に対応するオーディオデータがホットワード話者によって話されていると判定することができる。
【0047】
システムは、オーディオデータが第1の話者によって話された所定のホットワードの発話を含むとの判定に基づいて、第1の話者からの音声を含むオーディオデータの第1の部分を送信するとともに、第2の異なる話者からの音声を含むオーディオデータの第2の部分の送信を抑制する(350)。いくつかの実装形態において、システムは、音声のタイミングを保持すべきである場合、たとえば、電話においてはオーディオデータの第2の部分を対応する期間の無音に置き換えることができる。いくつかの実装形態において、システムは、ホットワード話者からの音声を含むオーディオデータの部分をつなぎ合わせるとともに、ホットワード話者以外の話者からの音声を含むオーディオデータを削除することができる。システムがタイミングを保持するかどうかは、アプリケーション設定またはユーザ設定に基づくことができる。
【0048】
ホットワード話者以外の話者からの音声を含むオーディオデータを送信しないことによって、システムは、システムのマイクロフォンが検出することができる他の話者のプライバシーを保持する。システムは、ホットワードの発話を用いて、ホットワード話者がシステムと対話するつもりであることを示す。システムは、ホットワード話者以外の話者によって話されたオーディオデータまたはオーディオデータのトランスクリプトを保存しないことがある。システムがオーディオデータのトランスクリプトを生成する場合、システムは、ホットワード話者以外の話者によって話されたトランスクリプトの部分を削除することができる。
【0049】
図4は、ここで説明した技術を実装するために用いることができるコンピューティングデバイス400およびモバイルコンピューティングデバイス450の一例を示している。コンピューティングデバイス400は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなど、様々な形態のデジタルコンピュータを表すことを意図している。モバイルコンピューティングデバイス450は、携帯情報端末、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスなど、様々な形態のモバイルデバイスを表すことを意図している。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は、単に例の意味であり、限定していることを意味するものではない。
【0050】
コンピューティングデバイス400は、プロセッサ402、メモリ404、ストレージデバイス406、メモリ404および複数の高速拡張ポート410に接続している高速インターフェイス408、および低速拡張ポート414およびストレージデバイス406に接続している低速インターフェイス412を含む。プロセッサ402、メモリ404、ストレージデバイス406、高速インターフェイス408、高速拡張ポート410、および低速インターフェイス412のそれぞれは、様々なバスを用いて相互接続されており、共通のマザーボード上に、または適宜他の方法で取り付けることができる。プロセッサ402は、メモリ404内またはストレージデバイス406上に格納された命令を含む、コンピューティングデバイス400内での実行のための命令を処理して、高速インターフェイス408に結合されたディスプレイ416などの外部入力/出力デバイス上にGUI用のグラフィック情報を表示することができる。他の実装形態において、複数のプロセッサおよび/または複数のバスを、適宜、複数のメモリおよびメモリのタイプとともに用いることができる。また、複数のコンピューティングデバイスを接続し、各デバイスが必要な動作の一部を提供することができる(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)。
【0051】
メモリ404はコンピューティングデバイス400内の情報を格納する。いくつかの実装形態において、メモリ404は、1つまたは複数の揮発性メモリユニットである。いくつかの実装形態において、メモリ404は、1つまたは複数の不揮発性メモリユニットである。メモリ404は、磁気または光ディスクなど、他の形態のコンピュータ可読媒体であってもよい。
【0052】
ストレージデバイス406は、コンピューティングデバイス400に大容量ストレージを提供することができる。いくつかの実装形態において、ストレージデバイス406は、ストレージエリアネットワークまたは他の構成におけるデバイスを含む、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリまたは他の同様のソリッドステートメモリデバイス、またはデバイスのアレイなどのコンピュータ可読媒体であっても、これを含んでもよい。命令を情報担体に格納することができる。命令は、1つまたは複数の処理デバイス(たとえば、プロセッサ402)によって実行されると、上述したもののような1つまたは複数の方法を実行する。命令はまた、コンピュータまたは機械可読媒体(たとえば、メモリ404、ストレージデバイス406、またはプロセッサ402上のメモリ)などの1つまたは複数のストレージデバイスによって格納することができる。
【0053】
高速インターフェイス408は、コンピューティングデバイス400についての帯域幅集中型動作を管理する一方、低速インターフェイス412は、低帯域幅集中型動作を管理する。このような機能の割り当ては単に一例である。いくつかの実装形態において、高速インターフェイス408は、メモリ404、ディスプレイ416に(たとえば、グラフィックプロセッサまたはアクセラレータを介して)、および様々な拡張カード(図示せず)を受け入れることができる高速拡張ポート410に結合されている。この実装形態において、低速インターフェイス412は、ストレージデバイス406および低速拡張ポート414に結合されている。低速拡張ポート414は、様々な通信ポート(たとえば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、ワイヤレス・イーサネット(登録商標))を含むことができ、たとえば、ネットワークアダプタを介して、キーボード、ポインティングデバイス、スキャナ、またはスイッチもしくはルータなどのネットワークデバイスなどの1つまたは複数の入力/出力デバイスに結合することができる。
【0054】
コンピューティングデバイス400は、図に示すように、いくつかの異なる形態で実装することができる。たとえば、標準的なサーバ420として、またはこのようなサーバのグループにおいて複数回実装することができる。加えて、ラップトップコンピュータ422などのパーソナルコンピュータにおいて実装することもできる。また、ラックサーバシステム424の一部として実装することもできる。あるいは、コンピューティングデバイス400からのコンポーネントは、モバイルコンピューティングデバイス450などのモバイルデバイス(図示せず)における他のコンポーネントと組み合わせることができる。このようなデバイスのそれぞれは、コンピューティングデバイス400およびモバイルコンピューティングデバイス450の1つまたは複数を含むことができ、システム全体は、互いに通信する複数のコンピューティングデバイスから構成することができる。
【0055】
モバイルコンピューティングデバイス450は、他のコンポーネントの中でも、プロセッサ452、メモリ464、ディスプレイ454などの入力/出力デバイス、通信インターフェイス466、およびトランシーバ468を含む。モバイルコンピューティングデバイス450は、マイクロドライブまたは他のデバイスなどのストレージデバイスを備え、追加のストレージを提供することもできる。プロセッサ452、メモリ464、ディスプレイ454、通信インターフェイス466、およびトランシーバ468のそれぞれは、様々なバスを用いて相互接続されており、これらのコンポーネントのいくつかは、共通のマザーボード上に、または適宜他の方法で取り付けることができる。
【0056】
プロセッサ452は、メモリ464に格納された命令を含む、モバイルコンピューティングデバイス450内の命令を実行することができる。プロセッサ452は、別個の複数のアナログプロセッサおよびデジタルプロセッサを含むチップのチップセットとして実装することができる。プロセッサ452は、たとえば、ユーザインターフェイスの制御、モバイルコンピューティングデバイス450によって実行されるアプリケーション、およびモバイルコンピューティングデバイス450による無線通信など、モバイルコンピューティングデバイス450の他のコンポーネントの協調を提供することができる。
【0057】
プロセッサ452は、ディスプレイ454に結合された制御インターフェイス458およびディスプレイインターフェイス456を介してユーザと通信することができる。ディスプレイ454は、たとえば、TFT(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)ディスプレイまたはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であり得る。ディスプレイインターフェイス456は、ディスプレイ454を駆動してグラフィックおよび他の情報をユーザに提示するための適切な回路を含むことができる。制御インターフェイス458は、ユーザからコマンドを受信し、それらをプロセッサ452への提出用に変換することができる。加えて、モバイルコンピューティングデバイス450の他のデバイスとの近距離通信を可能にするよう、外部インターフェイス462がプロセッサ452との通信を提供することができる。外部インターフェイス462は、たとえば、いくつかの実装形態においては有線通信、または他の実装形態においては無線通信を提供することができ、複数のインターフェイスを用いることもできる。
【0058】
メモリ464はモバイルコンピューティングデバイス450内の情報を格納する。メモリ464は、1つまたは複数のコンピュータ可読媒体、1つまたは複数の揮発性メモリユニット、または1つまたは複数の不揮発性メモリユニットとして実装することができる。拡張メモリ474も設けられ、たとえば、SIMM(Single In Line Memory Module:シングルインラインメモリモジュール)カードインターフェイスを含むことができる拡張インターフェイス472を介してモバイルコンピューティングデバイス450に接続することができる。拡張メモリ474は、モバイルコンピューティングデバイス450のための追加のストレージスペースを提供することができ、またはモバイルコンピューティングデバイス450のためのアプリケーションまたは他の情報を格納することもできる。具体的には、拡張メモリ474は、上述のプロセスを実行または補足する命令を含むことができ、安全な情報も含むことができる。したがって、たとえば、拡張メモリ474は、モバイルコンピューティングデバイス450についてのセキュリティモジュールとして提供されてもよく、モバイルコンピューティングデバイス450の安全な使用を可能にする命令でプログラムされてもよい。加えて、SIMMカードを介して、ハッキング不可能な方法でSIMMカード上に識別情報を配置するなど、追加情報とともに、安全なアプリケーションを提供することができる。
【0059】
メモリは、後述するように、たとえば、フラッシュメモリおよび/またはNVRAMメモリ(non-volatile random access memory:不揮発性ランダムアクセスメモリ)を含むことができる。いくつかの実装形態において、命令が情報担体に格納される。命令は、1つまたは複数の処理デバイス(たとえば、プロセッサ452)によって実行されると、上述したもののような1つまたは複数の方法を実行する。命令はまた、1つまたは複数のコンピュータまたは機械可読媒体(たとえば、メモリ464、拡張メモリ474、またはプロセッサ452上のメモリ)などの1つまたは複数のストレージデバイスによって格納することができる。いくつかの実装形態において、命令は、たとえば、トランシーバ468または外部インターフェイス462を介して、伝播信号において受信することができる。
【0060】
モバイルコンピューティングデバイス450は通信インターフェイス466を介して無線で通信することができ、これは必要な場合はデジタル信号処理回路を含むことができる。通信インターフェイス466は、とりわけ、GSM(登録商標)ボイスコール(Global System for Mobile communications:モバイル通信用グローバルシステム)、SMS(Short Message Service:ショートメッセージサービス)、EMS(Enhanced Messaging Service:拡張メッセージングサービス)、またはMMSメッセージング(Multimedia Messaging Service:マルチメディアメッセージングサービス)、CDMA(code division multiple access:符号分割多重アクセス)、TDMA(time division multiple access:時分割多重アクセス)、PDC(Personal Digital Cellular:パーソナルデジタルセルラー)、WCDMA(登録商標)(Wideband Code Division Multiple Access:広帯域符号分割多重アクセス)、CDMA2000、またはGPRS(General Packet Radio Service:汎用パケット無線サービス)などの様々なモードまたはプロトコルの下での通信を提供することができる。このような通信は、たとえば、無線周波数を用いるトランシーバ468を介して行うことができる。加えて、ブルートゥース(登録商標)、ワイファイ、または他のこのようなトランシーバ(図示せず)を用いるなど、短距離通信を行うことができる。加えて、GPS(Global Positioning System:全地球測位システム)受信機モジュール470がモバイルコンピューティングデバイス450に追加のナビゲーションおよび位置関連の無線データを提供することができ、これは、モバイルコンピューティングデバイス450上で実行されるアプリケーションによって適宜用いることができる。
【0061】
モバイルコンピューティングデバイス450は、オーディオコーデック460を用いて可聴通信することもでき、これは、ユーザから話された情報を受信し、それを使用可能なデジタル情報に変換することができる。オーディオコーデック460は同様に、たとえば、モバイルコンピューティングデバイス450のハンドセットにおけるスピーカを介してなど、ユーザのために可聴音を生成することができる。このような音は、音声通話からの音を含むことができ、録音された音(たとえば、ボイスメッセージ、音楽ファイルなど)を含むことができ、そしてモバイルコンピューティングデバイス450上で動作するアプリケーションによって生成される音も含むことができる。
【0062】
モバイルコンピューティングデバイス450は、図に示すように、いくつかの異なる形態で実装することができる。たとえば、携帯電話480として実装することができる。また、スマートフォン482、携帯情報端末、または他の同様のモバイルデバイスの一部として実装することもできる。
【0063】
ここで説明したシステムおよび技術の様々な実装形態は、デジタル電子回路、集積回路、特別に設計されたASIC(application specific integrated circuits:特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはこれらの組み合わせにおいて実現することができる。これらの様々な実装形態は、少なくとも1つのプログラム可能プロセッサを含むプログラム可能システム上で実行可能および/または解釈可能である1つまたは複数のコンピュータプログラムにおける実装形態を含むことができ、プロセッサは、専用または汎用で、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、これらにデータおよび命令を送信するように結合することができる。
【0064】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)は、プログラム可能プロセッサ用の機械命令を含み、高レベルの手続き型および/またはオブジェクト指向プログラミング言語で、および/またはアセンブリ/機械言語で実装することができる。本明細書で用いるように、機械可読媒体およびコンピュータ可読媒体という用語は、機械命令を機械可読信号として受信する機械可読媒体を含む、プログラム可能プロセッサに機械命令および/またはデータを提供するために用いられる任意のコンピュータプログラム製品、装置および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指す。機械可読信号という用語は、機械命令および/またはデータをプログラム可能プロセッサに提供するために用いられる任意の信号を指す。
【0065】
ユーザとの対話を提供するため、ここで説明したシステムおよび技術は、ユーザに情報を表示するためのディスプレイデバイス(たとえば、CRT(cathode ray tube:陰極線管)またはLCD(liquid crystal display:液晶ディスプレイ)モニタ)およびユーザがコンピュータに入力を提供することができるキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)を有するコンピュータ上で実装することができる。他の種類のデバイスを用いてユーザとの対話を提供することもできる。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、ユーザからの入力は、音響、音声、または触覚の入力を含む任意の形態で受信することができる。
【0066】
ここで説明したシステムおよび技術は、バックエンドコンポーネントを(たとえば、データサーバとして)含む、またはミドルウェアコンポーネント(たとえば、アプリケーションサーバ)を含む、またはフロントエンドコンポーネント(たとえば、ここで説明したシステムおよび技術の実装形態とユーザとの対話を可能にするグラフィックユーザインターフェイスまたはウェブブラウザを有するクライアントコンピュータ)を含むコンピューティングシステム、またはこのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントの任意の組み合わせにおいて実装することができる。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信(たとえば、通信ネットワーク)によって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、およびインターネットを含む。
【0067】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは一般に互いに遠隔であり、通常は通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアントとサーバとの関係を有するコンピュータプログラムによって生じる。
【0068】
いくつかの実装形態について上で詳細に説明してきたが、他の変更も可能である。たとえば、クライアントアプリケーションはデリゲートにアクセスするものとして説明されているが、他の実装形態において、1つまたは複数のサーバ上で実行されるアプリケーションなど、1つまたは複数のプロセッサによって実装される他のアプリケーションによってデリゲートを使用することができる。加えて、図に示す論理フローは、望ましい結果を達成するため、示した特定の順序、または連続した順序を必要としない。加えて、説明したフローから、他のアクションを提供することができ、またはアクションを削除することができ、他のコンポーネントを説明したシステムに追加、またはシステムから削除することができる。したがって、他の実装形態が以下の特許請求の範囲内にある。