(58)【調査した分野】(Int.Cl.,DB名)
前記ユーザが音声に基づく発話者の特定以外の前記技術を用いて前記ユーザの特定を成功裏に検証することに応じて、前記予め定義されたホットワードの前記ユーザによるさらなる発話に対応するさらなる以前に受け取られた音声データが適切に受容されたか、適切に棄却されたか、誤って受容されたか、または誤って棄却されたかを確認するように前記ユーザに促すステップを含む請求項1に記載の方法。
前記ユーザが前記さらなる発話に対応する前記さらなる以前に受け取られた音声データが適切に受容されたか、適切に棄却されたか、誤って受容されたか、または誤って棄却されたかを示したことを示すさらなるデータを受け取るステップと、
前記ユーザが前記さらなる発話に対応する前記さらなる以前に受け取られた音声データが適切に受容されたか、適切に棄却されたか、誤って受容されたか、または誤って棄却されたかを示したことを示す前記さらなるデータを受け取るステップに応じて、前記予め定義されたホットワードの前記ユーザによる前記その後受け取られる発話に対応する前記音声データが受容されるべきかまたは棄却されるべきかを判定することに前記さらなる以前に受け取られた音声データを使用するステップとを含む請求項3に記載の方法。
前記予め定義されたホットワードの前記ユーザによるさらなる発話に対応するさらなる以前に受け取られた音声データが適切に受容されたか、適切に棄却されたか、誤って受容されたか、または誤って棄却されたかを確認するように前記ユーザに促すステップが、
表示のために、前記ユーザに促すステップの間に、前記さらなる発話が受け取られたタイムスタンプを示すデータを提供するステップを含む請求項3に記載の方法。
前記周囲の状況が、前記発話の大きさ、前記発話の受け取りの直前に検出された雑音の量、または前記発話を符号化する音声信号の大きさの信号対雑音比を明らかにする請求項6に記載の方法。
前記予め定義されたホットワードの前記ユーザによるさらなる発話に対応するさらなる以前に受け取られた音声データが適切に受容されたか、適切に棄却されたか、誤って受容されたか、または誤って棄却されたかを確認するように前記ユーザに促すことが、
表示のために、前記ユーザに促すことの間に、前記さらなる発話が受け取られたタイムスタンプを示すデータを提供することを含む請求項10に記載のシステム。
前記周囲の状況が、前記発話の大きさ、前記発話の受け取りの直前に検出された雑音の量、または前記発話を符号化する音声信号の大きさの信号対雑音比を明らかにする請求項13に記載のシステム。
1つまたは複数のコンピュータによって実行され得る命令を含むソフトウェアを記憶するコンピュータ可読記憶媒体であって、前記命令が、そのように実行されると、前記1つまたは複数のコンピュータに
音声に基づく発話者の特定を用いるコンピューティングデバイスによって、予め定義されたホットワードのユーザによる発話に対応する音声データを受け取ることと、
前記発話に対応する前記音声データの誤った棄却に応じて、音声に基づく発話者の特定以外の技術を用いて前記ユーザの特定を検証するように前記ユーザに促すことと、
前記ユーザが音声に基づく発話者の特定以外の前記技術を用いて前記ユーザの特定を成功裏に検証することに応じて、前記発話に対応する前記音声データが誤って棄却されたことを確認するように前記ユーザに促すことと、
前記ユーザが前記発話に対応する前記音声データが誤って棄却されたことを確認したことを示すデータを受け取ることと、
前記ユーザが前記発話に対応する前記音声データが誤って棄却されたことを確認したことを示す前記データを受け取ることに応じて、前記予め定義されたホットワードの前記ユーザによるその後受け取られる発話に対応する音声データが受容されるべきかまたは棄却されるべきかを判定することに前記音声データを使用することとを含む動作を実行させる、コンピュータ可読記憶媒体。
前記予め定義されたホットワードの前記ユーザによるさらなる発話に対応するさらなる以前に受け取られた音声データが適切に受容されたか、適切に棄却されたか、誤って受容されたか、または誤って棄却されたかを確認するように前記ユーザに促すことが、
表示のために、前記ユーザに促すことの間に、前記さらなる発話が受け取られたタイムスタンプを示すデータを提供することを含む請求項17に記載のコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0016】
様々な図面における同様の参照番号および参照指示は、同様の要素を示す。
【0017】
図1は、発話者の検証のための例示的なシステム100の図である。概して、
図100は、コンピューティングデバイス106のマイクロフォンに発話104を話すユーザ102を示す。コンピューティングデバイス106は、発話104を処理し、周辺環境108に関連するデータを収集する。コンピューティングデバイス106は、発話104および環境108に基づくデータを、サンプルクラスタラ132および閾値セレクタ146を含むサーバ160に送信する。サーバ160は、発話104に基づくデータセットおよびその他の発話に基づくデータを処理して、周辺環境108および類似した環境におけるユーザの声を検証するための発話者検証閾値を特定する。一部の実装において、ユーザの声を検証することは、ユーザの声を特定することも含み得る。
【0018】
コンピューティングデバイス106の発話者検証の特徴を使用する前に、ユーザ102は、ユーザの声を認識するようにコンピューティングデバイス106を訓練する。コンピューティングデバイス106を訓練するために、ユーザ102は、コンピューティングデバイス106によって促されたとおりにいくつかの語句を繰り返して言う。語句は、ホットワードならびにその他の語および語句を含む可能性がある。たとえば、コンピューティングデバイス106は、ユーザに「Ok computer」、「open」、「call」、「message」、およびその他の語を言うように促す可能性がある。コンピューティングデバイス106は、ユーザの声の音声を処理して、コンピューティングデバイス106がマイクロフォンを通じて音声を受け取るときにコンピューティングデバイス106が比較するために使用することができる音声テンプレートを生成する。コンピューティングデバイス106は、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、またはタブレットコンピュータである可能性がある。
【0019】
コンピューティングデバイス106がユーザ102に関する音声テンプレートを持つと、ユーザは、音声コマンドを開始するためにホットワードを話し始めることができる。コンピューティングデバイス102は、マイクロフォンがアクティブなロックされた状態にあり、マイクロフォンを通じて受け取られた音声を処理している可能性がある。コンピューティングデバイス106は、マイクロフォンを通じて受け取られた音声を受け取り、音声をバッファに記憶する。コンピューティングデバイス106は、前の数秒の音声をバッファに記憶する可能性がある。たとえば、コンピューティングデバイス106は、5秒の音声を記憶する可能性がある。ロックされた状態である代わりに、コンピューティングデバイス102は、ロックされていない状態にある可能性がある。この場合、マイクロフォンは、引き続きアクティブである可能性があり、コンピューティングデバイス106は、特定の量の音声をバッファに記憶し、受け取る可能性がある。
図1に示された例において、ユーザ102は、コンピューティングデバイス106に「Ok computer」と話す。コンピューティングデバイス106は、ユーザの声の音声と、ユーザが話したよりも前にマイクロフォンを通じて受け取られた音声とを受け取り、バッファリングされた音声110をさらなる処理のために記憶する。
【0020】
一部の実装においては、エンドポインタ(endpointer)112が、コンピューティングデバイス106のバッファからバッファリングされた音声110を受け取る。エンドポインタ112は、コンピューティングデバイス106の1つまたは複数のプロセッサによって実行されるソフトウェアに実装される可能性がある。エンドポインタ112は、話と話以外とを分けるバッファリングされた音声110の音声フレームを特定し、それらの音声フレームが、端点(endpoint)である。
図1に示された例において、バッファリングされた音声110は、話以外の音声114および話の音声116を含む。話以外の音声114は、ユーザが話し始める前にマイクロフォンによって受け取られた音声に対応し、話の音声116は、ユーザが話すことに対応する。たとえば、話以外の音声114は、ユーザ102が話し始める前にマイクロフォンによって拾われた雑音に対応し、話の音声116は、ユーザが「Ok computer」と話すことに対応する。
【0021】
一部の実装においては、エンドポインタ112がコンピューティングデバイス106のバッファからバッファリングされた音声110を受け取る代わりに、ニューラルネットワークモジュールが、バッファリングされた音声110を受け取る。ニューラルネットワークモジュールは、コンピューティングデバイス106の1つまたは複数のプロセッサによって実行されるソフトウェアに実装される可能性がある。ニューラルネットワークモジュールは、バッファリングされた音声110を分析して、話を話し以外から分ける音声フレームを特定する。
図1に示された例において、ニューラルネットワークは、話以外の音声114を話の音声116から分ける音声フレームを特定する。
【0022】
ホットワーダ(hotworder)118は、エンドポインタ112またはニューラルネットワークモジュールから話の音声116を受け取る。エンドポインタ112と同様に、ホットワーダは、コンピューティングデバイス106の1つまたは複数のプロセッサによって実行されるソフトウェアに実装される可能性がある。ホットワーダ118は、話の音声116をホットワードテンプレート(hotword template)と比較し、ユーザがホットワードを話したかどうかを判定する。一部の実装においては、サーバ160などのコンピューティングデバイスが、複数のユーザがホットワードを話し、各ホットワードの音声セグメントを組み合わせることからホットワードテンプレートを生成する可能性がある。ホットワードテンプレートは、複数のユーザによって話されたホットワードの音声セグメントの平均である可能性がある。一部の実装において、サーバ160は、単一のユーザがホットワードを話すことからホットワードテンプレートを生成する可能性がある。この場合、ホットワードテンプレートは、単一のユーザによって話された複数のホットワードの音声セグメントの平均である可能性がある。
【0023】
発話者検証モジュール120は、エンドポインタ112からバッファリングされた音声110を受け取り、発話者検証信頼性スコア122を計算する。発話者検証モジュール120のスコアラ(scorer)124は、発話者検証信頼性スコア122を計算する。発話者検証信頼性スコア122は、ユーザの声が話の音声116内で捕捉される見込みを反映する。発話者検証信頼性スコア122を計算するために、スコアラ124は、話の音声116をユーザに関する音声テンプレートと比較する。一部の実装において、発話者検証信頼性スコア122は、0と1との間の値である。ユーザの声が話の音声116に記録される見込みが高いほど、発話者検証信頼性スコア122は1に近い。
【0024】
発話者検証モジュール120の周囲状況ディテクタ125は、バッファリングされた音声110を分析して、バッファリングされた音声110に関連する周囲状況データ126を決定する。周囲の状況は、話以外の音声114の大きさ、話の音声116の大きさ、または話以外の音声114の大きさに対する話の音声116の大きさの比に関連する可能性がある。大きさは、話以外の音声114、話の音声116、またはこれら2つの比のデシベルレベルである可能性がある。
【0025】
発話者検証信頼性スコア122および周囲の状況126を用いて、発話者検証モジュール120は、話の音声116がユーザに対応するかどうかを結論づけるために閾値128を使用する。周囲の状況126に応じて異なる閾値が存在する可能性がある。たとえば、周囲の状況が話以外の音声114の雑音レベルが58デシベルであることを示す場合、発話者検証モジュール120は、50から60デシベルの範囲のための閾値を使用する可能性がある。発話者検証モジュール120は、閾値を発話者検証信頼性スコア122と比較して、発話者検証信頼性スコア122が閾値を満たす場合、発話者検証モジュールは、話の音声116を話した発話者が認可されたユーザであると結論づける。一部の実装においては、発話者検証信頼性スコア122が閾値以上である場合、発話者は認可されたユーザである。たとえば、閾値が0.7であり、発話者検証信頼性スコア122が0.7である場合、コンピューティングデバイス106は、発話者が認可されたユーザであると結論づける。
【0026】
発話者検証モジュール120は、発話者検証信頼性スコア122および周囲状況データ126をデータセット130に記憶する。
図1に示された例において、データセット130は、0.7の発話者検証信頼性スコア122および58デシベルの周囲状況データ126を含む。一部の実装において、データセットは、バッファリングされた音声110も含む。
【0027】
サンプルクラスタラ132は、コンピューティングデバイス106からデータセット130を受け取る。サンプルクラスタラ132は、サーバの1つまたは複数のプロセッサで実行されるソフトウェアに実装される可能性がある。サンプルクラスタラ132は、ネットワークを通じてコンピューティングデバイス106からデータセット130を受け取ることができる。また、サンプルクラスタラ132は、ホットワーダ118が話されたホットワードを検出するたびにコンピューティングデバイス106からその他のデータセットを受け取り、その他のユーザ134のそれぞれのコンピューティングデバイスにホットワードを話すその他のユーザ134からその他のデータセットを受け取る。
【0028】
一部の実装においては、第2の発話者検証モジュール136が、データセットに追加するためのさらなる値を計算する。サンプルクラスタラ132を含むサーバ160は、バッファリングされた音声110を処理する第2の発話者検証モジュール136も含む可能性がある。第2の発話者検証モジュール136は、限られた処理能力を有するコンピューティングデバイス106では可能でない可能性があるバッファリングされた音声110のよりしっかりした分析を実行し得る。第2の発話者検証モジュール136は、値が0と1との間である可能性があり、1に近いほど話の音声116と音声テンプレートとがよく一致することを示すという点で発話者検証モジュール120と似ている値を計算する。サンプルクラスタラ132は、第2の発話者検証モジュール136から各データセットに発話者検証信頼性スコアを追加する可能性がある。
【0029】
一部の実装においては、正確性フィードバックモジュール138が、データセットへのさらなる値を計算する。正確性フィードバックモジュール138は、コンピューティングデバイス106の発話者検証の特徴を使用する際のユーザの成功および失敗に関してユーザ102から収集されたデータを集める可能性がある。ユーザ102がコンピューティングデバイス106のマイクロフォンにホットワードを話し、コンピューティングデバイス106がユーザ102を認識しない場合があり得る。これは、誤った棄却と考えられる。代替的に、詐称者がコンピューティングデバイス106のマイクロフォンにホットワードを話し、コンピューティングデバイス106が詐称者をユーザ102として誤って特定する場合があり得る。これは、誤った受容と考えられる。誤った受容の別の例は、ユーザ102または詐称者がホットワードに似ている語を話し、コンピューティングデバイス106がユーザ102がホットワードを話したと誤って判定するときである。たとえば、ユーザ102が、「hey scooter」を話す可能性があり、コンピューティングデバイス106が、ユーザ102が「ok computer」と言ったと誤って判定する。ユーザ102の正確な検証が、正しい受容であり、詐称者または非ホットワードの正確な棄却が、正しい棄却である。
【0030】
ユーザ102からフィードバックを集めるために、コンピューティングデバイス106は、ユーザ102にパスワードの入力を促すか、または発話者の検証以外の別の手段によってユーザの識別情報を検証する可能性がある。ユーザの識別情報が検証されると、コンピューティングデバイス106は、特定の時間に発話者検証の特徴を用いて、ユーザ102がコンピューティングデバイス106にアクセスしようとしたかどうかに関してユーザ102に入力を促す可能性がある。ユーザ102は、それぞれのアクセスの試みを正しい受容、正しい棄却、誤った受容、または誤った棄却としてラベル付けする可能性がある。コンピューティングデバイス102は、正確性フィードバックモジュール138にユーザフィードバックを与える。正確性フィードバックモジュール138は、データセット130にユーザフィードバックを追加する。
【0031】
ユーザ102が誤った棄却を特定する場合、コンピューティングデバイスは、バッファリングされた音声110を用いて、ユーザ102を認識するために使用される音声テンプレートをさらに改良する可能性がある。例として、ユーザ102が、「Ok computer」と言い、コンピューティングデバイス106のホットワーダ118が、話されたホットワードを認識する。コンピューティングデバイス106の発話者検証モジュール120は、発話に関する発話者検証スコアがユーザが話している周囲の状況のための発話者検証閾値未満であるので、ユーザの声を認識しない。コンピューティングデバイス106は、ユーザ102が「Ok computer」と言ったかどうかを入力するようユーザ102に促す。ユーザ102は、ユーザ102が「Ok computer」と言ったことを確認し、コンピューティングデバイスは、発話を誤った棄却としてラベル付けする。コンピューティングデバイスがユーザの声を認識しなかったので、発話者検証モジュール120は、ユーザ102に関する発話者の検証を改善し、誤った棄却および誤った受容を減らすために音声テンプレートを最近の発話によって更新する。
【0032】
一部の実装において、第2の発話者検証モジュール136は、データセットが正しい棄却に対応するか、正しい受容に対応するか、誤った棄却に対応するか、または誤った受容に対応するかを示すラベルをデータセットに追加する。この場合、コンピューティングデバイス106は、発話者検証モジュール120が話の音声116を特定したかどうかを示すさらなるデータフィールドを音声テンプレートに対応するものとしてデータセット130に含める。第2の発話者検証モジュール136は、バッファリングされた音声110に対してさらなる計算を実行して、発話者検証モジュール120が正しい棄却を行ったか、正しい受容を行ったか、誤った棄却を行ったか、または誤った受容を行ったかを特定する。第2の発話者検証モジュール136は、コンピューティングデバイス106の計算リソースと比較してより多くの利用可能な計算リソースを有する可能性がある。
【0033】
サンプルクラスタラ132は、似た周囲状況データによってデータセット130およびその他のデータセットをクラスタリングする。サンプルクラスタラ132は、それぞれの周囲状況データの範囲が最少数のデータセットを含むように1つまたは複数の周囲状況データの範囲を決定する。たとえば、サンプルクラスタラ132は、800個のデータセットのそれぞれの周囲状況データの範囲の最少数のデータセットを有する可能性がある。
図1に示された例において、サンプルクラスタラ132は、3つのデータセットクラスタを特定する。データセットクラスタ140は、50デシベルと60デシベルとの間の周囲状況データを有するデータセットを含む。データセットクラスタ142は、60デシベルと70デシベルとの間の周囲状況データを有するデータセットを含む。データセットクラスタ144は、70デシベルと80デシベルとの間の周囲状況データを有するデータセットを含む。
【0034】
一部の実装において、サンプルクラスタラ132は、データセット130、および同じユーザによって話された発話に対応するその他のデータセットをクラスタリングする。
図1に示された例において、サンプルクラスタラ132は、ユーザ102によって話された発話に対応するデータセットをクラスタリングする可能性がある。特定のユーザによって話された発話に対応するデータセットのみをクラスタリングするとき、それぞれの周囲の状況のために必要とされる最少数のデータセットは、複数のユーザによって話された発話に対応するデータセットをクラスタリングするときとは異なる可能性がある。
【0035】
閾値セレクタ146は、選択基準148を用いてそれぞれのデータセットクラスタから特定のデータセットを選択する。選択されたデータセットクラスタは、周囲状況データの範囲内の周囲状況データに関連する将来の発話者検証信頼性値に関する発話者検証信頼性閾値として使用される発話者検証信頼性値を含むデータセットとして閾値セレクタが選択するデータセットである。一部の実装において、選択基準は、経験的に定義された目標の棄却率である。経験的に定義された目標の棄却率は、過去のホットワードの発話データを分析することに基づく。過去のホットワードの発話データを分析する際、ホットワードを話す認可されたユーザとホットワードを話す詐称者との間の境界線が、過去のホットワードの発話データのうちの特定の割合がホットワードを話す認可されたユーザからのものであるように明らかになる可能性がある。例示的な経験的に定義された目標の棄却率は、7パーセントである。7パーセントの経験的に定義された目標の棄却率を用いて、閾値セレクタ146は、発話者検証スコアによってそれぞれのデータセットクラスタのデータセットをランク付けし、データセットクラスタのデータセットのうちの7パーセントよりも高い発話者検証スコアを有するデータセットを選択する。
【0036】
図1に示された例において、閾値セレクタ146は、データセットクラスタ140、142、および144の各々に関して7パーセントの目標の棄却率のデータセットを特定する。発話者検証閾値テーブル150に示されるように、50デシベルと60デシベルとの間の周囲状況データを有するデータセットを含むデータセットクラスタ140は、0.7の発話者検証スコアを含むデータセットを7パーセントのレベルで有する。60デシベルと70デシベルとの間の周囲状況データを有するデータセットを含むデータセットクラスタ142は、0.6の発話者検証スコアを含むデータセットを7パーセントのレベルで有する。70デシベルと80デシベルとの間の周囲状況データを有するデータセットを含むデータセットクラスタ144は、0.4の発話者検証スコアを含むデータセットを7パーセントのレベルで有する。
【0037】
一部の実装において、閾値セレクタ146は、正確性フィードバックモジュール138からのさらなるデータを使用する可能性がある。正確性フィードバックモジュール138からのデータを用いて、閾値セレクタ146は、発話者検証スコアによってそれぞれのデータセットクラスタのデータセットをランク付けする。閾値セレクタ146は、それぞれのデータセットのグループにおいて受容を棄却と最もうまく分けるデータセットを選択する可能性があり、選択されたデータセットに関する発話者検証信頼性スコアが、そのデータセットクラスタの周囲状況データの範囲に関する発話者検証信頼性閾値である。それぞれのデータセットクラスタにおいて、選択されたデータセットは、異なる割合のレベルである可能性がある。それぞれのデータセットクラスタにおいて受容を棄却と分けるデータセットを選択するとき、データセットの一部がおそらく誤った棄却および誤った受容であるので、境界線は明らかでない可能性がある。これらの場合、閾値セレクタ146は、誤った棄却のほとんどが正しい受容の側にあり、誤った受容が正しい棄却の側にあるようにデータセットクラスタを分割するデータセットを選択する可能性がある。閾値セレクタ146は、第2の発話者検証モジュール136によって追加され、正確性フィードバックモジュール138からのさらなるデータと同様にしてデータセットが正しい棄却に対応するか、正しい受容に対応するか、誤った棄却に対応するか、または誤った受容に対応するかを示すラベルを使用する可能性もある。
【0038】
一部の実装において、閾値セレクタ146は、第2の発話者検証モジュール136からのさらなるデータを使用する可能性がある。第2の発話者検証モジュール136からのデータを用いて、閾値セレクタ146は、第2の発話者検証モジュール136からの発話者検証信頼性スコアによってそれぞれのデータセットクラスタのデータセットをランク付けする可能性がある。閾値セレクタ146は、経験的に定義された目標の棄却率を用いてそれぞれのデータセットクラスタを分割する可能性がある。閾値セレクタ146は、発話者検証信頼性閾値として第2の発話者検証モジュール136からの発話者検証信頼性スコアかまたは発話者検証モジュール120からの発話者検証信頼性スコアかのどちらかを選択する可能性がある。
【0039】
一部の実装において、閾値セレクタ146は、第2の発話者検証モジュール136からのさらなるデータと正確性フィードバックモジュール138からのさらなるデータとの両方を使用する可能性がある。この場合、閾値セレクタ146は、第2の発話者検証モジュール136からの発話者検証信頼性スコアを用いてデータセットをランク付けし、上述のように、正確性フィードバックモジュール138からのさらなるデータに基づいてデータセットクラスタを選択する可能性がある。上と同様に、閾値セレクタ146は、発話者検証信頼性閾値として第2の発話者検証モジュール136からの発話者検証信頼性スコアかまたは発話者検証モジュール120からの発話者検証信頼性スコアかのどちらかを選択する可能性がある。
【0040】
閾値セレクタ146は、発話者の検証で使用するためにコンピューティングデバイス106およびその他のコンピューティングデバイス152に発話者検証閾値テーブル150を提供する。閾値セレクタ146は、毎週など周期的にまたはその他のソフトウェアアップデートの一部としてコンピューティングデバイスに発話者検証閾値テーブル150を提供する可能性がある。代替的に、閾値セレクタ146は、コンピューティングデバイスによって促されるときにコンピューティングデバイスに発話者検証閾値テーブル150を提供する可能性がある。コンピューティングデバイス120は、発話者検証閾値モジュール120が多くの誤った受容または誤った棄却を有することを示唆するフィードバックをユーザ102が頻繁に与える場合、更新された発話者検証閾値テーブル150を要求する可能性がある。コンピューティングデバイス120は、発話者検証閾値テーブル150を受け取ると、将来の発話者の検証のために閾値128に発話者検証閾値テーブル150を記憶する。
【0041】
図2は、発話者の検証のための例示的なプロセス200の図である。プロセス200は、
図1のサンプルクラスタラ132および閾値セレクタ146を含むサーバ160などのコンピューティングデバイスによって実行され得る。プロセス200は、発話者の検証に関連するデータセットを分析し、異なる周囲の状況で使用するための発話者検証信頼性スコア閾値を計算する。
【0042】
コンピューティングデバイスは、ホットワードの複数の発話の各々に関して、少なくとも(i)発話に関連する発話者検証信頼性スコアおよび(ii)発話に関連する周囲状況データを含むデータセットを受け取る(210)。データセットは、ユーザからホットワードの発話を受け取るユーザデバイスによって生成される。ユーザデバイスは、ホットワードの発話をユーザのための音声テンプレートと比較することによって発話者検証信頼性スコアを計算する。ユーザデバイスは、通常は発話の雑音のレベルに基づく周囲状況データを計算する。一部の実装において、周囲状況データは、ユーザが発話を話す前の期間にユーザデバイスによって検出された雑音の量を明らかにする。たとえば、周囲状況データは、ユーザが話す前の特定の期間に受け取られた音声信号の2乗平均平方根またはデシベルレベルに基づく可能性がある。一部の実装において、周囲状況データは、発話の大きさに基づく可能性がある。たとえば、周囲状況データは、発話の2乗平均平方根またはデシベルレベルに基づく可能性がある。一部の実装において、周囲状況データは、発話の信号対雑音比、またはユーザが話す前の特定の期間に受け取られた音声信号の大きさの発話の大きさに対する比の信号対雑音比に基づく可能性がある。
【0043】
一部の実装において、コンピューティングデバイスは、データセットにさらなるデータを追加する可能性がある。コンピューティングデバイスは、トリガ後正確性インジケータを追加する可能性がある。コンピューティングデバイスは、ユーザデバイスが音声信号に基づいてユーザの検証についての判定を行った後にトリガ後正確性データを集める可能性がある。たとえば、ユーザデバイスは、発話者検証の特徴を使用するユーザの試みを棄却し、それから、パスワードを入力するようにユーザに促すことによってユーザを認証する。この場合、コンピューティングデバイスは、誤った棄却を表すデータをデータセットに追加する可能性がある。一部の実装において、ユーザデバイスは、データセットに音声信号を含める可能性もある。コンピューティングデバイスは、音声信号を分析して、データセットと共に含めるべき異なる第2の発話者検証信頼性スコアを計算する可能性がある。
【0044】
コンピューティングデバイスは、特定の周囲の状況に関連するデータセットのサブセットをデータセットの中から選択する(220)。コンピューティングデバイスは、クラスタが少なくとも最少数のデータセットをそれぞれ含むように周囲状況データに基づいてデータセットをクラスタリングする。コンピューティングデバイスは、データセットをクラスタリングするための周囲状況データ範囲を選択し得る。たとえば、コンピューティングデバイスは、ユーザが話す前の特定の期間に受け取られた音声信号の大きさに基づいてデータセットをクラスタリングする可能性がある。
【0045】
コンピューティングデバイスは、1つまたは複数の選択基準に基づいてデータセットのサブセットの中から特定のデータセットを選択する(230)。コンピューティングデバイスは、周囲状況データに応じてデータセットのサブセットをランク付けする。一部の実装において、コンピューティングデバイスは、経験的に定義された目標の棄却率に基づいて特定のデータセットを選択する可能性がある。一部の実装において、コンピューティングデバイスは、トリガ後正確性データに基づいて特定のデータセットを選択する可能性がある。一部の実装において、コンピューティングデバイスは、異なる第2の発話者検証信頼性スコアに応じてデータセットのサブセットをランク付けし、異なる第2の発話者検証信頼性スコアに基づいて特定のデータセットを選択する可能性がある。
【0046】
コンピューティングデバイスは、特定のデータセットに含まれる発話者検証信頼性スコアを、特定の周囲の状況のための発話者検証閾値として選択する(240)。たとえば、コンピューティングデバイスは、50デシベルから60デシベルまでの周囲状況データの範囲において、0.7の発話者検証信頼性スコアを有するデータセットを選択する。0.7の発話者検証信頼性スコアは、50デシベルから60デシベルまでの範囲における発話に関する発話者検証信頼性閾値である。
【0047】
コンピューティングデバイスは、特定の周囲の状況に関連する発話の発話者の検証を実行する際に使用するための発話者検証閾値を提供する(250)。一部の実装において、コンピューティングデバイスは、周囲状況データの範囲および対応する発話者検証信頼性閾値ならびにその他の周囲状況データの範囲および対応する発話者検証信頼性閾値を発話者の検証の際に使用するためにユーザデバイスに提供する。
【0048】
一部の実装において、コンピューティングデバイスは、周囲状況データに基づいて、特定のユーザによって話されるデータセットのサブセットを選択する可能性がある。この場合、コンピューティングデバイスは、特定のユーザのための発話者検証閾値を特定し、対応する発話者検証閾値および周囲状況データを特定のユーザのデバイスに提供する。コンピューティングデバイスは、トリガ後正確性インジケータおよび異なる第2の発話者検証スコアからのデータを用いて特定のユーザのための発話者検証閾値を特定する可能性もある。
【0049】
本明細書に記載の対象の実施形態および動作は、本明細書において開示された構造およびそれらの構造的均等物を含む、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書に記載の対象の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータストレージ媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替的にまたは追加的に、プログラム命令は、データ処理装置による実行のために好適な受信機装置に送信するために情報を符号化するように生成される人為的に生成された伝播信号、たとえば、機械によって生成された電気的信号、光学的信号、または電磁的信号上に符号化され得る。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらの1つもしくは複数の組合せであるか、あるいはそれらに含まれる可能性がある。さらに、コンピュータストレージ媒体は、伝播信号ではないが、人為的に生成された伝播信号に符号化されたコンピュータプログラム命令の送信元または送信先である可能性がある。コンピュータストレージ媒体は、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、またはその他のストレージデバイス)であるか、またはそれらに含まれる可能性もある。
【0050】
本明細書に記載の動作は、1つもしくは複数のコンピュータ可読ストレージデバイスに記憶された、またはその他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
【0051】
用語「データ処理装置」は、例として、1つのプログラム可能なプロセッサ、1台のコンピュータ、1つのシステムオンチップ、またはそれらの複数もしくは組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置は、ハードウェアに加えて、問題にしているコンピュータプログラムのための実行環境を生成するコード、たとえば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービスインフラストラクチャ、分散コンピューティングインフラストラクチャ、およびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0052】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語もしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述可能であり、独立型プログラムとしての形態、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境での使用に適したその他の単位としての形態を含む任意の形態で配置され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応する可能性があるが、必ずそうであるとは限らない。プログラムは、その他のプログラムもしくはデータを保持するファイルの一部(たとえば、マークアップ言語のドキュメントに記憶された1つもしくは複数のスクリプト)、問題にしているプログラムに専用の単一のファイル、または複数の組織されたファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に置かれるか、もしくは複数の場所に分散され、通信ネットワークによって相互に接続される複数のコンピュータ上で実行されるように配置され得る。
【0053】
本明細書に記載のプロセスおよび論理フローは、入力データに対して演算を行い、出力を生成することによって行為を行うために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラミング可能なプロセッサが実行することによって実行され得る。また、プロセスおよび論理フローは、専用の論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行される可能性があり、さらに、装置は、それらの専用の論理回路として実装される可能性がある。
【0054】
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサとの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。概して、プロセッサは、読み出し専用メモリ、またはランダムアクセスメモリ、またはそれらの両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令にしたがって行為を実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。また、概してコンピュータは、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはそれらの大容量ストレージデバイスからデータを受信するか、もしくはそれらの大容量ストレージデバイスにデータを転送するか、もしくはその両方を行うためにそれらの大容量ストレージデバイスに動作可能なように結合される。しかし、コンピュータは、そのようなデバイスを備えていなくてもよい。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつか例を挙げるとすれば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレイヤー、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込まれる可能性がある。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用の論理回路によって補完されるか、または専用の論理回路に組み込まれる可能性がある。
【0055】
ユーザとのインタラクションを行うために、本明細書に記載の対象の実施形態は、ユーザに対して情報を表示するためのディスプレイデバイス、たとえば、CRT(ブラウン管)またはLCD(液晶ディスプレイ)モニタ、ならびに、ユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有するコンピュータ上に実装され得る。その他の種類のデバイスが、ユーザとのインタラクションを行うためにやはり使用される可能性があり、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックである可能性があり、ユーザからの入力は、音響、話、または触覚による入力を含む任意の形態で受け取られる可能性がある。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイスのウェブブラウザにウェブページを送信することによってユーザとインタラクションすることができる。
【0056】
本明細書に記載の対象の実施形態は、バックエンド構成要素を、たとえば、データサーバとして含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザが本明細書に記載の対象の実装とインタラクションすることができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互に接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0057】
1つまたは複数のコンピュータのシステムが、動作中にシステムに行為を実行させるシステムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せによって特定の動作または行為を実行するように構成される可能性がある。1つまたは複数のコンピュータプログラムが、データ処理装置によって実行されるときに装置に行為を実行させる命令を含むことによって特定の動作または行為を実行するように構成される可能性がある。
【0058】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、概して互いに離れており、通常は通信ネットワークを介してインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されており、互いにクライアント-サーバの関係にあるコンピュータプログラムによって生じる。一部の実施形態において、サーバは、(たとえば、クライアントデバイスとインタラクションするユーザに対してデータを表示し、そのようなユーザからユーザ入力を受信する目的で)クライアントデバイスにデータ(たとえば、HTMLページ)を送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザのインタラクションの結果)が、サーバにおいてクライアントデバイスから受信される可能性がある。
【0059】
本明細書は多くの特定の実装の詳細を含むが、これらは、いかなる発明の範囲または特許請求され得るものの範囲に対する限定とも見なされるべきではなく、むしろ、特定の発明の特定の実施形態に固有の特徴の説明と見なされるべきである。別個の実施形態に関連して本明細書に記載されている特定の特徴が、単一の実施形態において組み合わせて実装される可能性もある。反対に、単一の実施形態に関連して説明されている様々な特徴が、複数の実施形態に別々に、または任意の適切な部分的組合せで実装される可能性もある。さらに、特徴は、特定の組合せで動作するものとして上で説明されている可能性があり、最初にそのように主張されてさえいる可能性があるが、主張された組合せの1つまたは複数の特徴は、場合によってはその組合せから削除される可能性があり、主張された組合せは、部分的組合せ、または部分的組合せの変形を対象とする可能性がある。
【0060】
同様に、動作が図中に特定の順序で示されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。特定の状況においては、マルチタスクおよび並列処理が、有利である可能性がある。さらに、上述の実施形態における様々なシステム構成要素の分割は、すべての実施形態においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラム構成要素およびシステムは、概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされる可能性があると理解されるべきである。
【0061】
このように、対象の特定の実施形態が説明された。その他の実施形態は、添付の請求項の範囲内にある。場合によっては、請求項に挙げられた行為は、異なる順序で実行され、それでも所望の結果を達成し得る。加えて、添付の図面に示されたプロセスは、所望の結果を達成するために、必ずしも、示された特定の順序または逐次的順序である必要はない。特定の実装においては、マルチタスクおよび並列処理が、有利である可能性がある。
【0062】
図3は、本明細書に記載の技術を実装するために使用され得るコンピューティングデバイス300およびモバイルコンピューティングデバイス350の例を示す。コンピューティングデバイス300は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、およびその他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すように意図される。モバイルコンピューティングデバイス350は、携帯情報端末、セルラー電話、スマートフォン、およびその他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すように意図される。本明細書において示された構成要素、それらの接続および関係、およびそれらの機能は、単に例であるように意図されているに過ぎず、限定であるように意図されていない。
【0063】
コンピューティングデバイス300は、プロセッサ302と、メモリ304と、ストレージデバイス306と、メモリ304および複数の高速拡張ポート310に接続する高速インターフェース308と、低速拡張ポート314およびストレージデバイス306に接続する低速インターフェース312とを含む。プロセッサ302、メモリ304、ストレージデバイス306、高速インターフェース308、高速拡張ポート310、および低速インターフェース312の各々は、様々なバスを用いて相互に接続され、通常のマザーボード上に搭載されるか、または適宜その他の方法で搭載される可能性がある。プロセッサ302は、高速インターフェース308に結合されたディスプレイ316などの外部入力/出力デバイス上にGUIのグラフィカルな情報を表示するために、メモリ304またはストレージデバイス306に記憶された命令を含む、コンピューティングデバイス300内で実行するための命令を処理することができる。その他の実装においては、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数の種類のメモリと共に適宜使用され得る。また、複数のコンピューティングデバイスが、各デバイスが必要な動作の一部を行うようにして(たとえば、サーババンク、一群のブレードサーバ、またはマルチプロセッサシステムとして)接続される可能性がある。
【0064】
メモリ304は、コンピューティングデバイス300内で情報を記憶する。一部の実装において、メモリ304は、1つの揮発性メモリユニットまたは複数の揮発性メモリユニットである。一部の実装において、メモリ304は、1つの不揮発性メモリユニットまたは複数の不揮発性メモリユニットである。メモリ304は、磁気または光ディスクなどの別の形態のコンピュータ可読媒体である可能性もある。
【0065】
ストレージデバイス306は、コンピューティングデバイス300のための大容量ストレージを提供することができる。一部の実装において、ストレージデバイス306は、フレキシブルディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくはその他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくはその他の構成内のデバイスを含むデバイスのアレイなどのコンピュータ可読媒体であるか、またはそのようなコンピュータ可読媒体を含む可能性がある。命令は、情報担体に記憶され得る。命令は、1つまたは複数の処理デバイス(たとえば、プロセッサ302)によって実行されるとき、上述の方法などの1つまたは複数の方法を実行する。命令は、コンピュータ可読媒体または機械可読媒体(たとえば、メモリ304、ストレージデバイス306、またはプロセッサ302上のメモリ)などの1つまたは複数のストレージデバイスによって記憶される可能性もある。
【0066】
高速インターフェース308が、コンピューティングデバイス300に関する帯域を大量に消費する動作を管理する一方、低速インターフェース312は、帯域をそれほど消費しない動作を管理する。そのような機能の割り振りは、例であるに過ぎない。一部の実装において、高速インターフェース308は、メモリ304に、(たとえば、グラフィックスプロセッサまたはアクセラレータを通じて)ディスプレイ316に、および様々な拡張カード(図示せず)を受け入れ得る高速拡張ポート310に結合される。実装において、低速インターフェース312は、ストレージデバイス306および低速拡張ポート314に結合される。様々な通信ポート(たとえば、USB、Bluetooth(登録商標)、イーサネット(登録商標)、ワイヤレス・イーサネット(登録商標))を含み得る低速拡張ポート314は、キーボード、ポインティングデバイス、スキャナなどの1つもしくは複数の入力/出力デバイスと結合され得るか、またはたとえばネットワークアダプタを介してスイッチもしくはルータなどのネットワーキングデバイスと結合され得る。
【0067】
コンピューティングデバイス300は、図に示されるように、多くの異なる形態で実装され得る。たとえば、コンピューティングデバイス300は、標準的なサーバ320として実装されるか、または一群のそのようなサーバ内で複数回実装される可能性がある。さらに、コンピューティングデバイス300は、ラップトップコンピュータ322などのパーソナルコンピュータで実装され得る。コンピューティングデバイス300は、ラックサーバシステム324の一部として実装される可能性もある。代替的に、コンピューティングデバイス300の構成要素は、モバイルコンピューティングデバイス350などのモバイルデバイスのその他の構成要素(図示せず)と組み合わされる可能性がある。そのようなデバイスの各々は、コンピューティングデバイス300およびモバイルコンピューティングデバイス350のうちの1つまたは複数を含む可能性があり、システム全体が、互いに通信する複数のコンピューティングデバイスによって構成される可能性がある。
【0068】
モバイルコンピューティングデバイス350は、構成要素の中でもとりわけ、プロセッサ352、メモリ364、ディスプレイ354などの入力/出力デバイス、通信インターフェース366、およびトランシーバ368を含む。モバイルコンピューティングデバイス350は、追加的なストレージを提供するために、マイクロドライブまたはその他のデバイスなどのストレージデバイスを備える可能性もある。プロセッサ352、メモリ364、ディスプレイ354、通信インターフェース366、およびトランシーバ368の各々は、様々なバスを用いて相互に接続されており、構成要素のうちのいくつかは、通常のマザーボード上に搭載されるか、または適宜その他の方法で搭載される可能性がある。
【0069】
プロセッサ352は、メモリ364に記憶された命令を含むモバイルコンピューティングデバイス350内の命令を実行することができる。プロセッサ352は、別々の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実装され得る。プロセッサ352は、たとえば、ユーザインターフェース、モバイルコンピューティングデバイス350によって実行されるアプリケーション、およびモバイルコンピューティングデバイス350によるワイヤレス通信の制御などの、モバイルコンピューティングデバイス350のその他の構成要素の調整を行い得る。
【0070】
プロセッサ352は、ディスプレイ354に結合された制御インターフェース358およびディスプレイインターフェース356を通じてユーザとコミュニケーションし得る。ディルプレイ354は、たとえば、TFT(薄膜トランジスタ液晶ディスプレイ)ディスプレイもしくはOLED(有機発光ダイオード)ディスプレイ、またはその他の適切なディスプレイテクノロジーである可能性がある。ディスプレイインターフェース356は、ユーザに対してグラフィカルな情報およびその他の情報を提示するようにディスプレイ354を駆動するための適切な回路を含み得る。制御インターフェース358は、ユーザからコマンドを受け取り、それらのコマンドを、プロセッサ352に送るために変換し得る。加えて、外部インターフェース362が、その他のデバイスとのモバイルコンピューティングデバイス350の近い地域の通信を可能にするために、プロセッサ352との通信を提供し得る。外部インターフェース362は、たとえば、一部の実装においては有線通信を、またはその他の実装においてはワイヤレス通信を提供する可能性があり、複数のインターフェースが使用される可能性もある。
【0071】
メモリ364は、モバイルコンピューティングデバイス350内で情報を記憶する。メモリ364は、1つのコンピュータ可読媒体もしくは複数のコンピュータ可読媒体、1つの揮発性メモリユニットもしくは複数の揮発性メモリユニット、または1つの不揮発性メモリユニットもしくは複数の不揮発性メモリユニットのうちの1つまたは複数として実装され得る。また、拡張メモリ374が設けられ、たとえば、SIMM(シングルインラインメモリモジュール(Single In Line Memory Module))カードインターフェースを含む可能性がある拡張インターフェース372を通じてモバイルコンピューティングデバイス350に接続され得る。拡張メモリ374は、モバイルコンピューティングデバイス350に追加的なストレージ空間を提供する可能性があり、またはモバイルコンピューティングデバイス350に関するアプリケーションまたはその他の情報を記憶する可能性もある。特に、拡張メモリ374は、上述のプロセスを実行または補足する命令を含む可能性があり、安全な情報を含む可能性もある。したがって、たとえば、拡張メモリ374は、モバイルコンピューティングデバイス350のセキュリティモジュールとして設けられる可能性があり、モバイルコンピューティングデバイス350の安全な使用を可能にする命令でプログラムされる可能性がある。さらに、ハッキングすることができない方法でSIMMカードに識別情報を置くなど、追加的な情報と共に、安全なアプリケーションがSIMMカードによって提供され得る。
【0072】
メモリは、たとえば、以下で検討されるように、フラッシュメモリおよび/またはNVRAMメモリ(不揮発性ランダムアクセスメモリ)を含み得る。一部の実装においては、命令が、情報担体に記憶される。命令は、1つまたは複数の処理デバイス(たとえば、プロセッサ352)によって実行されるとき、上述の方法などの1つまたは複数の方法を実行する。命令は、1つまたは複数のコンピュータ可読媒体または機械可読媒体(たとえば、メモリ364、拡張メモリ374、またはプロセッサ352上のメモリ)などの1つまたは複数のストレージデバイスによって記憶される可能性もある。一部の実装において、命令は、たとえば、トランシーバ368または外部インターフェース362を介して伝播信号で受信される可能性がある。
【0073】
モバイルコンピューティングデバイス350は、必要に応じてデジタル信号処理回路を含む可能性がある通信インターフェース366を通じてワイヤレスで通信し得る。通信インターフェース366は、とりわけ、GSM(登録商標)音声通話(移動体通信用グローバルシステム(Global System for Mobile communications))、SMS(ショートメッセージサービス)、EMS(拡張メッセージングサービス(Enhanced Messaging Service))、またはMMSメッセージング(マルチメディアメッセージングサービス)、CDMA(符号分割多元接続)、TDMA(時分割多元接続)、PDC(パーソナルデジタルセルラー)、WCDMA(登録商標) (広帯域符号分割多元接続)、CDMA2000、またはGPRS(汎用パケット無線サービス)などの様々なモードまたはプロトコルの下で通信を提供する可能性がある。そのような通信は、たとえば、無線周波数を用いるトランシーバ368を通じて行われ得る。さらに、近距離通信が、Bluetooth(登録商標)、WiFi、またはその他のそのようなトランシーバ(図示せず)を用いるなどして行われ得る。加えて、GPS(全地球測位システム)受信機モジュール370が、モバイルコンピューティングデバイス350で実行されるアプリケーションによって適宜使用され得るさらなるナビゲーションおよび位置に関連するワイヤレスデータをモバイルコンピューティングデバイス350に提供する可能性がある。
【0074】
モバイルコンピューティングデバイス350は、ユーザから話された情報を受信し、その情報を使用可能なデジタル情報に変換し得る音声コーデック360を用いて音声通信する可能性もある。同じく、音声コーデック360は、たとえば、モバイルコンピューティングデバイス350のハンドセットのスピーカを介するなどして、ユーザのための聞くことができる音声を生成し得る。そのような音声は、音声電話通話の音声を含む可能性があり、記録された音声(たとえば、ボイスメッセージ、音楽ファイルなど)を含む可能性があり、モバイルコンピューティングデバイス350上で動作するアプリケーションによって生成された音声も含む可能性がある。
【0075】
モバイルコンピューティングデバイス350は、図に示されるように、多くの異なる形態で実装され得る。たとえば、モバイルコンピューティングデバイス350は、セルラー電話380として実装され得る。また、モバイルコンピューティングデバイス350は、スマートフォン382、携帯情報端末、またはその他の同様の移動体デバイスの一部として実装され得る。
【0076】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現され得る。これらの様々な実装は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、それらにデータおよび命令を送信するために結合された、専用または汎用である可能性がある少なくとも1つのプログラミング可能なプロセッサを含むプログラミング可能なシステム上の、実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムへの実装を含み得る。
【0077】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラミング可能なプロセッサ用の機械命令を含み、高級手続き型プログラミング言語および/もしくはオブジェクト指向プログラミング言語、ならびに/またはアセンブリ/機械言語で実装され得る。本明細書で使用されるとき、用語、機械可読媒体およびコンピュータ可読媒体とは、機械命令を機械可読信号として受信する機械可読媒体を含む、プログラミング可能なプロセッサに機械命令および/またはデータを提供するために使用される任意のコンピュータプログラム製品、装置、および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指す。用語、機械可読信号とは、プログラミング可能なプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
【0078】
ユーザとのインタラクションを行うために、本明細書に記載のシステムおよび技術は、ユーザに対して情報を表示するためのディスプレイデバイス(たとえば、CRT(ブラウン管)またはLCD(液晶ディスプレイ)モニタ)、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)を有するコンピュータ上に実装され得る。その他の種類のデバイスが、ユーザとのインタラクションを行うためにさらに使用される可能性があり、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバック)である可能性があり、ユーザからの入力は、音響、話、または触覚による入力を含む任意の形態で受け取られ得る。
【0079】
本明細書に記載のシステムおよび技術は、バックエンド構成要素を(たとえば、データサーバとして)含むか、またはミドルウェア構成要素(たとえば、アプリケーションサーバ)を含むか、またはフロントエンド構成要素(たとえば、ユーザが本明細書に記載のシステムおよび技術の実装とインタラクションすることができるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータ)を含むか、またはそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信(たとえば、通信ネットワーク)によって相互に接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、およびインターネットを含む。
【0080】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、概して互いに離れており、通常は通信ネットワークを通じてインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されており、互いにクライアント-サーバの関係にあるコンピュータプログラムによって生じる。
【0081】
数個の実装が上で詳細に説明されたが、その他の修正があり得る。たとえば、クライアントアプリケーションはデリゲート(delegate)にアクセスするものとして説明されているが、他の実装においては、デリゲートは、1つまたは複数のサーバで実行されるアプリケーションなどの、1つまたは複数のプロセッサによって実装されるその他のアプリケーションによって使用される可能性がある。加えて、図面に示された論理フローは、所望の結果を達成するために、示された特定の順序または逐次的順序である必要はない。さらに、その他の行為が設けられる可能性があり、または行為が説明されたフローから削除される可能性があり、その他の構成要素が説明されたシステムに追加されるか、もしくは説明されたシステムから削除される可能性がある。したがって、その他の実装は、添付の請求項の範囲内にある。