(57)【特許請求の範囲】
【請求項１】
処理ユニットと、
メモリと、
１つまたは複数のマイクロホンと、
発話制御デジタルパーソナルアシスタントと、
を備えるコンピューティングデバイスであって、
前記発話制御デジタルパーソナルアシスタントは、
前記１つまたは複数のマイクロホンを介して、ユーザによって生成された発話入力を受け取るステップと、
発声されたコマンドを決定するために、前記発話入力を使用して発話認識を実行するステップであって、前記発声されたコマンドは、サードパーティのアプリケーションのタスクを実行することを求める要求を備え、前記タスクが、発声されたコマンドによって呼び出し可能なサードパーティのアプリケーションのタスクを定義するデータ構造を使用して識別され、前記サードパーティのアプリケーションは、前記サードパーティのアプリケーションのユーザインターフェースを使用して実行可能なタスクと、前記サードパーティのアプリケーションの前記ユーザインターフェースを使用することなくヘッドレスに実行可能なタスクとを含み、前記データ構造は、前記タスクが前記発話制御デジタルパーソナルアシスタントによってどのように実行可能であるかを定義する、ステップと、
前記サードパーティのアプリケーションの前記タスクをヘッドレスに実行するか、前記サードパーティのアプリケーションの前記ユーザインターフェースを使用して前記タスクを実行するかを、前記データ構造を使用して選択するステップと、
前記サードパーティのアプリケーションの前記タスクをヘッドレスに実行することが選択されたとき、前記サードパーティのアプリケーションに、前記タスクをヘッドレスに実行するバックグラウンドプロセスとして実行させるステップと、
前記サードパーティのアプリケーションから、前記タスクに関連付けられた状態を示す応答を受信するステップと、
前記サードパーティのアプリケーションの前記ユーザインターフェースを表に出すことなく前記発話制御デジタルパーソナルアシスタントのユーザインターフェースのコンテキスト内から応答が来るように、前記発話制御デジタルパーソナルアシスタントの前記ユーザインターフェースによって、前記タスクに関連付けられた前記受信された状態に基づいて前記ユーザに前記応答を提供するステップと、を含む動作を行うように構成される、コンピューティングデバイス。
【請求項２】
前記サードパーティのアプリケーションの前記タスクをヘッドレスに実行するか、前記サードパーティのアプリケーションの前記ユーザインターフェースを使用して前記タスクを実行するかを、前記データ構造を使用して選択するステップが、前記データ構造が前記タスクをバックグラウンドタスクとして定義すると決定するステップを備える、請求項１に記載のコンピューティングデバイス。
【請求項３】
前記サードパーティのアプリケーションの前記タスクをヘッドレスに実行するか、前記サードパーティのアプリケーションの前記ユーザインターフェースを使用して前記タスクを実行するかを、前記データ構造を使用して選択するステップが、前記ユーザがハンズフリーモードにおいて前記コンピューティングデバイスを使用していると決定するステップを備える、請求項１に記載のコンピューティングデバイス。
【請求項４】
前記動作が、発話認識を実行している間、および前記発声されたコマンドの決定を完了する前に、前記サードパーティのアプリケーションのウォームアップシーケンスを開始するステップをさらに備える、請求項１に記載のコンピューティングデバイス。
【請求項５】
前記ウォームアップシーケンスが、前記メモリの一部を割り当てるステップ、命令をプリフェッチするステップ、通信セッションを確立するステップ、データベースから情報を取り出すステップ、新しい実行スレッドを開始するステップ、または割込みを発生させるステップを含む、請求項４に記載のコンピューティングデバイス。
【請求項６】
発声されたコマンドによって呼び出し可能なサードパーティのアプリケーションのタスクを定義する前記データ構造が、前記タスクに関連付けられた状態の前記ユーザへの応答へのマッピングを含む、請求項１に記載のコンピューティングデバイス。
【請求項７】
前記動作が、
前記サードパーティのアプリケーションがバックグラウンドプロセスとして実行するようにされたときにタイマを始動するステップと、
前記タイマが満了した場合、前記バックグラウンドプロセスを終了するステップと
をさらに備える、請求項１に記載のコンピューティングデバイス。
【請求項８】
前記サードパーティのアプリケーションからの前記応答が、確認状態を示し、前記確認状態に基づく前記ユーザへの前記応答が、イエスかノーの回答で応答するように前記ユーザに促す、請求項１に記載のコンピューティングデバイス。
【請求項９】
マイクロホンを備えるコンピューティングデバイスによって実施される方法であって、
ユーザによって生成されたデジタル音声入力を音声制御デジタルパーソナルアシスタントによって受け取るステップであって、前記デジタル音声入力が前記マイクロホンを介して受け取られる、ステップと、
ユーザ音声コマンドを決定するために、前記デジタル音声入力を使用して自然言語処理を実行するステップであって、前記ユーザ音声コマンドは、サードパーティの音声対応アプリケーションの事前定義された機能を実行することを求める要求を備え、前記事前定義された機能が、音声入力を使用する利用可能なサードパーティの音声対応アプリケーションによってサポートされる機能を定義するデータ構造を使用して識別され、前記サードパーティの音声対応アプリケーションは、前記サードパーティの音声対応アプリケーションのユーザインターフェースを使用して実行可能な事前定義された機能と、前記サードパーティの音声対応アプリケーションの前記ユーザインターフェースを使用することなくヘッドレスに実行可能な事前定義された機能とを含み、前記データ構造は、前記事前定義された機能が前記音声制御デジタルパーソナルアシスタントによってどのように実行可能であるかを定義する、ステップと、
前記サードパーティのアプリケーションの前記事前定義された機能を実行することを求める前記要求を備えた前記ユーザ音声コマンドを決定することに応答して、前記サードパーティの音声対応アプリケーションの前記事前定義された機能をヘッドレスに実行するか、前記サードパーティの音声対応アプリケーションの前記ユーザインターフェースを使用して前記事前定義された機能を実行するかを、前記データ構造を使用して選択するステップと、
前記サードパーティの音声対応アプリケーションに、前記事前定義された機能を、前記サードパーティの音声対応アプリケーションのユーザインターフェースが前記コンピューティングデバイスのディスプレイ上に現われることなしにバックグラウンドプロセスとして実行させるステップと、
前記サードパーティの音声対応アプリケーションから、前記事前定義された機能に関連付けられた状態を示す応答を受信するステップと、
前記サードパーティの音声対応アプリケーションの前記ユーザインターフェースを表に出すことなく前記音声制御デジタルパーソナルアシスタントのユーザインターフェースのコンテキスト内から応答が来るように、前記音声制御デジタルパーソナルアシスタントの前記ユーザインターフェースによって、前記事前定義された機能に関連付けられた前記受信された状態に基づいて前記ユーザに応答を提供するステップと、
を備える、方法。
【請求項１０】
自然言語処理を実行している間、および前記ユーザ音声コマンドの決定を完了する前に、前記サードパーティの音声対応アプリケーションのウォームアップシーケンスを開始するステップをさらに備える、請求項９に記載の方法。
【請求項１１】
前記ウォームアップシーケンスを開始するステップが、推測的機能を前記サードパーティの音声対応アプリケーションに送るステップを備える、請求項１０に記載の方法。
【請求項１２】
前記事前定義された機能に関連付けられた前記状態は、ウォームアップ状態、初期状態、進行状態、確認状態、曖昧性解消状態、または最終状態のうちから選択される、請求項９に記載の方法。
【請求項１３】
前記データ構造が、前記ユーザからの要求を１つまたは複数のサードパーティの音声対応アプリケーションの事前定義された機能に関連付けるために使用可能なコマンドスキーマを介して拡張可能である、請求項９に記載の方法。
【請求項１４】
前記データ構造が、
利用可能なサードパーティの音声対応アプリケーションによってサポートされる機能への音声コマンドの第１のマッピングと、
前記音声制御デジタルパーソナルアシスタントから前記ユーザに提供される応答への、前記機能から受信される状態の第２のマッピングと
を備える、請求項９に記載の方法。
【請求項１５】
前記音声制御デジタルパーソナルアシスタントから前記ユーザに提供される前記応答は、表示テキスト、テキスト−発話、ディープリンクユーザリソースインジケータ（ＵＲＩ）、ウェブリンクＵＲＩ、ハイパーテキストマークアップ言語（ＨＴＭＬ）、リストテンプレート、物理アドレス、または電話番号の形式から選択される、請求項９に記載の方法。
【請求項１６】
前記サードパーティの音声対応アプリケーションは、リモートウェブサービスである、請求項９に記載の方法。
【請求項１７】
ユーザ音声コマンドを決定するために、前記デジタル音声入力を使用して自然言語処理を実行するステップは、前記ユーザ音声コマンドがコンテキストフリーとなるように、コンテキスト情報を解析するステップを備える、請求項９に記載の方法。
【請求項１８】
音声制御デジタルパーソナルアシスタントのコンテキスト内で音声対応アプリケーションのタスクを完了するための動作をコンピューティングデバイスに実行させるためのコンピュータ実行可能命令を記憶するコンピュータ可読記憶装置であって、前記動作が、
前記音声制御デジタルパーソナルアシスタントによって、ユーザによって生成されたデジタル音声入力を受け取るステップであって、前記デジタル音声入力がマイクロホンを介して受け取られる、ステップと、
ユーザ音声コマンドを決定するために、前記デジタル音声入力を使用して自然言語処理を実行するステップであって、前記ユーザ音声コマンドが、前記音声対応アプリケーションの前記タスクを実行することを求める要求を備え、前記タスクが、ユーザ音声コマンドを音声対応アプリケーションのタスクにマッピングする拡張可能なデータ構造を使用して識別され、前記音声対応アプリケーションは、前記音声対応アプリケーションのユーザインターフェースを使用して実行可能なタスクと、前記音声対応アプリケーションの前記ユーザインターフェースを使用することなくヘッドレスに実行可能なタスクとを含み、前記データ構造は、前記タスクが前記音声制御デジタルパーソナルアシスタントによってどのように実行可能であるかを定義する、ステップと、
前記ユーザ音声コマンドを決定することに応答して、前記音声対応アプリケーションの前記タスクをフォアグラウンドタスクとして実行するか、それともバックグラウンドタスクとして実行するかを、前記データ構造を使用して選択するステップと、
前記タスクをバックグラウンドタスクとして実行することが選択された場合、前記音声対応アプリケーションに、前記タスクをバックグラウンドタスクとして、前記音声対応アプリケーションのユーザインターフェースが表に出ることなく前記音声制御デジタルパーソナルアシスタントのコンテキスト内で実行させるステップと、
前記音声対応アプリケーションから前記タスクに関連付けられた状態を示す応答を受信するステップと、
前記タスクに関連付けられた前記受信された状態に基づいて前記ユーザに応答を提供するステップであって、前記応答は、前記タスクがバックグラウンドタスクであると决定されたとき、前記音声対応アプリケーションのユーザインターフェースが表に出ることなく前記音声制御デジタルパーソナルアシスタントのコンテキスト内で提供される、ステップと
を備える、コンピュータ可読記憶装置。
【請求項１９】
前記動作が、自然言語処理を実行している間、および前記ユーザ音声コマンドの決定を完了する前に、前記音声対応アプリケーションのウォームアップシーケンスを開始するステップをさらに備える、請求項１８に記載のコンピュータ可読記憶装置。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  コンピューティング技術が進歩するにつれて、ますます強力なコンピューティングデバイスが利用可能になっている。たとえば、コンピューティングデバイスは、発話認識などの機能をますます追加している。発話は、ユーザがコンピューティングデバイスと通信するための有効な方法である場合があり、発話制御デジタルパーソナルアシスタントなどの発話制御アプリケーションが開発されている。
【０００２】
[0002]  デジタルパーソナルアシスタントは、個人のためのタスクまたはサービスを実行するために使用され得る。たとえば、デジタルパーソナルアシスタントは、モバイルデバイスまたはデスクトップコンピュータ上で動作するソフトウェアモジュールであり得る。デジタルパーソナルアシスタントによって実行される得るタスクまたはサービスの例は、天気の状態および天気予報、スポーツの得点、通行方向および交通状況、地方のニュースおよび／または全国ニュース、ならびに株価を検索することと、新しいスケジュールエントリを作成することによってユーザのスケジュールを管理すること、および今後のイベントをユーザに思い出させることと、リマインダを記憶および検索することとを含むことができる。
【０００３】
[0003]  しかしながら、デジタルパーソナルアシスタントは、ユーザが実行させることを望み得るすべてのタスクを実行できるとは限らない可能性が高い。したがって、発話制御デジタルパーソナルアシスタントに関連する技術の改善の十分な機会が存在する。
【発明の概要】
【課題を解決するための手段】
【０００４】
[0004]  この概要は、以下の詳細な説明でさらに説明する概念の選択を簡略化した形態で紹介するために提供される。この概要は、特許請求された主題の重要な特徴または本質的な特徴を特定することを意図するものではなく、特許請求された主題の範囲を限定するために使用されることを意図するものでもない。
【０００５】
[0005]  デジタルパーソナルアシスタントのバックグラウンドにおいてアプリケーションのタスクをヘッドレスに完了するための技法およびツールについて説明する。たとえば、マイクロホンを備えるコンピューティングデバイスによって方法が実施される。方法は、ユーザによって生成されたデジタル音声入力を音声制御デジタルパーソナルアシスタントによって受信するステップを備えることができる。デジタル音声入力は、マイクロホンを介して受信され得る。ユーザ音声コマンドを決定するために、デジタル音声入力を使用して自然言語処理が実行され得る。ユーザ音声コマンドは、サードパーティの音声対応アプリケーションの事前定義された機能を実行することを求める要求を備えることができる。事前定義された機能は、音声入力を使用する利用可能なサードパーティの音声対応アプリケーションによってサポートされる機能を定義するデータ構造を使用して識別され得る。サードパーティの音声対応アプリケーションは、サードパーティの音声対応アプリケーションのユーザインターフェースがコンピューティングデバイスのディスプレイ上に現われることなしに、事前定義された機能をバックグラウンドプロセスとして実行させられ得る。サードパーティの音声対応アプリケーションから、事前定義された機能に関連付けられた状態を示す応答が受信され得る。音声制御デジタルパーソナルアシスタントのユーザインターフェースは、サードパーティの音声対応アプリケーションのユーザインターフェースを表に出すことなく音声制御デジタルパーソナルアシスタントのユーザインターフェースのコンテキスト内から応答が来るように、事前定義された機能に関連付けられた受信された状態に基づいてユーザに応答を提供することができる。
【０００６】
[0006]  別の例として、本明細書で説明する動作を実行するための、処理ユニットと、メモリと、１つまたは複数のマイクロホンとを備えるコンピューティングデバイスが提供され得る。たとえば、コンピューティングデバイスによって実行される方法は、１つまたは複数のマイクロホンを介して、ユーザによって生成された発話入力を受信するステップを含むことができる。発声されたコマンドを決定するために、発話入力を使用して発話認識が実行され得る。発声されたコマンドは、サードパーティのアプリケーションのタスクを実行することを求める要求を備えることができる。タスクは、発声されたコマンドによって呼び出し可能なサードパーティのアプリケーションのタスクを定義するデータ構造を使用して識別され得る。サードパーティのアプリケーションのタスクがヘッドレスに実行可能であるかどうかが决定され得る。サードパーティのアプリケーションは、サードパーティのアプリケーションのタスクがヘッドレスに実行可能であると决定されたとき、タスクをヘッドレスに実行するバックグラウンドプロセスとして実行させられ得る。サードパーティのアプリケーションから、タスクに関連付けられた状態を示す応答が受信され得る。発話制御デジタルパーソナルアシスタントのユーザインターフェースは、サードパーティのアプリケーションのユーザインターフェースを表に出すことなく発話制御デジタルパーソナルアシスタントのユーザインターフェースのコンテキスト内から応答が来るように、タスクに関連付けられた受信された状態に基づいてユーザに応答を提供することができる。
【０００７】
[0007]  別の例として、本明細書で説明する動作を実行するための、処理ユニットとメモリとを備えるコンピューティングデバイスが提供され得る。たとえば、コンピューティングデバイスは、音声制御デジタルパーソナルアシスタントのコンテキスト内で音声対応アプリケーションのタスクを完了するための動作を実行することができる。動作は、ユーザによって生成されたデジタル音声入力を音声制御デジタルパーソナルアシスタントにおいて受信するステップを備えることができる。デジタル音声入力は、マイクロホンを介して受信され得る。ユーザ音声コマンドを決定するために、デジタル音声入力を使用して自然言語処理が実行され得る。ユーザ音声コマンドは、音声対応アプリケーションのタスクを実行することを求める要求を備えることができる。タスクは、音声対応アプリケーションのタスクにユーザ音声コマンドをマッピングする拡張可能なデータ構造を使用して識別され得る。音声対応アプリケーションのタスクがフォアグラウンドタスクであるか、それともバックグラウンドタスクであるかが决定され得る。タスクがバックグラウンドタスクであると决定されたとき、音声対応アプリケーションは、タスクをバックグラウンドタスクとして、音声対応アプリケーションのユーザインターフェースが表に出ることなく音声制御デジタルパーソナルアシスタントのコンテキスト内で実行させられ得る。音声対応アプリケーションからの応答が受信され得る。応答は、タスクに関連付けられた状態を示すことができる。応答は、タスクに関連付けられた受信された状態に基づいてユーザに提供され得る。応答は、タスクがバックグラウンドタスクであると决定されたとき、音声対応アプリケーションのユーザインターフェースが表に出ることなく音声制御デジタルパーソナルアシスタントのコンテキスト内で提供され得る。
【０００８】
[0008]  本明細書で説明されるように、様々な他の特徴および利点が、望みどおりに技法に組み込まれ得る。
【図面の簡単な説明】
【０００９】
【図１】[0009]デジタルパーソナルアシスタントのバックグラウンドにおいてアプリケーションのタスクをヘッドレスに完了するためのシステムの一例を示す図である。
【図２】[0010]デジタルパーソナルアシスタントのバックグラウンドにおいてアプリケーションのタスクをヘッドレスに完了するための例示的なソフトウェアアーキテクチャを示す図である。
【図３】[0011]デジタルパーソナルアシスタントとインターフェースするアプリケーションのための例示的な状態機械の図である。
【図４】[0012]アプリケーションとデジタルパーソナルアシスタントとの間のインターフェースを可能にするためのデータ構造を作成するために使用され得るコマンド定義の一例の図である。
【図５】[0013]デジタルパーソナルアシスタント内からアプリケーションのタスクをヘッドレスに実行するための複数のスレッドの通信を示す例示的なシーケンス図である。
【図６】[0014]デジタルパーソナルアシスタントのバックグラウンド内でアプリケーションのタスクをヘッドレスに完了するための例示的な方法のフローチャートである。
【図７】[0015]ユーザがデジタルパーソナルアシスタントに発話している間にアプリケーションをウォームアップするかどうかを決定するための例示的な方法のフローチャートである。
【図８】[0016]いくつかの説明した実施形態が実施され得る例示的なコンピューティングシステムの図である。
【図９】[0017]本明細書で説明する技法と共に使用され得る例示的なモバイルデバイスの図である。
【図１０】[0018]本明細書で説明する技法と共に使用され得る例示的なクラウドサポート環境の図である。
【発明を実施するための形態】
【００１０】
[0019]  概略
ユーザがデジタルパーソナルアシスタントを使用することでより快適になるにつれて、ユーザは、デジタルパーソナルアシスタントのコンテキスト内でより多くのアクションを実行することを好む可能性がある。しかしながら、デジタルパーソナルアシスタントのプロバイダは、ユーザが使用することを望む可能性があるすべてのアプリケーションを予想したり、または開発するために時間を費やしたりすることはできない。したがって、デジタルパーソナルアシスタントは、デジタルパーソナルアシスタントのプロバイダ以外のエンティティによって作成されたサードパーティのアプリケーションを呼び出すまたは起動することができることが望ましい場合がある。
【００１１】
[0020]  典型的な解決策では、アプリケーションのユーザインターフェースは、デジタルパーソナルアシスタントがアプリケーションを起動し、プログラム制御がデジタルパーソナルアシスタントからアプリケーションにわたったとき表に出される。アプリケーションのユーザインターフェースが表に出されると、ユーザは、要求の状態を確認することができ、ユーザは、アプリケーション内から追加のタスクを実行することができる。デジタルパーソナルアシスタントのユーザインターフェースに戻るために、ユーザは、制御がデジタルパーソナルアシスタントに返され得る前に、アプリケーションを終了しなければならない。
【００１２】
[0021]  携帯電話のデジタルパーソナルアシスタントを使用する１つの特定の例として、ユーザは、携帯電話にインストールされた動画アプリケーションを使用してユーザの待ち行列に動画を追加することを要求することができる。たとえば、ユーザは、デジタルパーソナルアシスタントのユーザインターフェースに「動画アプリケーション、Ｍｏｖｉｅ−Ｘを私の待ち行列に追加」と言うことができる。コマンドが発話され、アシスタントによって認識された後、アシスタントは、動画アプリケーションのユーザインターフェースを提示することになる動画アプリケーションを開始することができる。動画は、ユーザの待ち行列に追加され得、待ち行列は、動画が追加されたことの確認としてユーザに提示され得る。ユーザは、動画アプリケーションを使用し続けることができ、または、ユーザは、デジタルパーソナルアシスタントのユーザインターフェースに戻るために動画アプリケーションを閉じることができる。
【００１３】
[0022]  デジタルパーソナルアシスタントがアプリケーションに制御を移行したとき、アプリケーションとそのユーザインターフェースとをメモリにロードすることは、かなりの時間がかかる可能性がある。遅延は、たとえば、ユーザが後続のタスクを達成することを遅延させることによって、および／またはユーザの一連の考えを中断させることによって、ユーザの生産性に潜在的に影響を与える可能性がある。たとえば、ユーザの注意は、デジタルパーソナルアシスタントのユーザインターフェースに戻る前に、アプリケーションを閉じることに向けられる可能性がある。さらに、アプリケーションに制御を移行することによって、デジタルパーソナルアシスタントに利用可能なコンテキスト情報は、アプリケーションに利用可能ではない可能性がある。たとえば、デジタルパーソナルアシスタントは、ユーザの配偶者の身元および連絡先情報、ユーザの家もしくはオフィスの場所、またはユーザのデイケアプロバイダの場所を理解する可能性があるが、アプリケーションは、コンテキスト情報へのアクセスを持たない可能性がある。
【００１４】
[0023]  本明細書で説明する技法および解決策では、デジタルパーソナルアシスタントは、サードパーティのアプリケーションのタスクがバックグラウンドにおいて実行され得るかどうかを決定することができ、それにより、タスクを実行するための動作が、デジタルパーソナルアシスタントのコンテキスト内で、音声対応アプリケーションのユーザインターフェースを表に出すことなく実行されるようなる。したがって、ユーザは、タスクの所与のセットが、ユーザタスクを行っているアプリケーションのコンテキストとは対照的に、デジタルパーソナルアシスタントのコンテキスト内で実行されることを経験することができる。さらに、アプリケーションのタスクがバックグラウンドにおいて実行されるとき、アプリケーションのユーザインターフェースは、メモリにロードされないので、デバイスの電力は、潜在的に低減され得る（かつ電池寿命が延長される）。
【００１５】
[0024]  アプリケーションは、アシスタントが提供するネイティブ能力のリストを拡張するために、デジタルパーソナルアシスタントに登録することができる。アプリケーションは、デバイスにインストールされ得、または（インターネットなどの）ネットワークを介してサービスとして呼び出され得る。スキーマ定義は、アプリケーションが、ユーザがコマンド／タスクを要求するときヘッドレスに起動される要求を用いて音声コマンドを登録することを可能にすることができる。たとえば、アプリケーションは、デジタルパーソナルアシスタントによってアクセス可能な音声コマンド定義（VCD）ファイルを含むことができ、ＶＣＤファイルは、ヘッドレスに起動され得るタスクを識別する。定義は、アプリケーションのタスクが常にヘッドレスに起動されることを指定することができ、または、定義は、アプリケーションのタスクが特定の状況下でヘッドレスに起動されることを指定することができる。たとえば、アプリケーションは、ユーザが（ワイヤレスフィットネスバンドなどの）表示面を持たないデバイス上でタスクが実行されるように要求している場合、または、ユーザが（Ｂｌｕｅｔｏｏｔｈ（登録商標）ヘッドセットに接続されているときなど）ハンズフリーモードで操作しているとき、ヘッドレスになにかをすることを選択することができる。
【００１６】
[0025]  アプリケーションは、要求されたタスクの進行、失敗、および正常な完了に対する応答を提供することができ、状態に関連する出力は、デジタルパーソナルアシスタントのユーザインターフェースによって提供され得る。アプリケーションは、たとえば、表示テキスト、読み上げられ得るテキスト、アプリケーションに戻るディープリンク、ウェブページまたはウェブサイトへのリンク、および、ハイパーテキストマークアップ言語（HTML）ベースのウェブコンテンツを含む、デジタルパーソナルアシスタントに戻る多くの異なるタイプのデータを提供することができる。アプリケーションからアシスタントへのデータは、アシスタントのユーザインターフェースを介してアシスタントのネイティブ機能から来るかのように提示され得る。
【００１７】
[0026]  ユーザが複数の意味または結果を有する可能性があるアプリケーションに要求を提供する場合、アプリケーションは、デジタルパーソナルアシスタントに選択肢のリストを提供することができ、アシスタントのユーザインターフェースは、選択肢間の曖昧さをなくすために使用され得る。ユーザが、破壊的である可能性があるか、または重要である要求をアプリケーションに提供する場合（たとえば、バンキングアプリケーションが残高転送を実行することをユーザが要求するとき）、破壊的または重要なタスクを完了する前に要求を確認するために、アシスタントの確認インターフェースが使用され得る。
【００１８】
[0027]  アプリケーションは、コマンドが発声されているときに推測的にロードまたはウォームアップされ得る。たとえば、ユーザがコマンド「動画アプリケーション、Ｍｏｖｉｅ−Ｘを私の待ち行列に追加」からの「動画アプリケーション」という語句を完了したとき、メモリが割り当てられ得、コマンドが完了したときのサブルーチンの使用に備えて、インストールされた動画アプリケーションの様々なサブルーチンが、ストレージから取り出され、割り当てられたメモリにロードされ得る。アプリケーションがウェブサービスであるとき、ウォームアップは、たとえば、通信セッションを確立することと、リモートサーバにおけるデータベースからユーザ固有情報を取得することとを含む場合がある。アプリケーションをウォームアップすることによって、対話がより自然になるように、そして、ユーザが次のタスクにすばやく移動し、ユーザより生産的にすることができるように、ユーザに応答する時間は、潜在的に短縮され得る。
【００１９】
[0028]  本明細書の技法を使用すれば、動画アプリケーションを用いてユーザの待ち行列に動画を追加することを望むユーザは、動画アプリケーションを起動し、制御をアプリケーションに渡すという典型的な解決策を使用する場合とは異なる体験を有することができる。この例では、動画アプリケーションの動画を待ち行列に追加するコマンドは、ＶＣＤファイルなどのコマンドデータ構造内にヘッドレスとして定義され得る。ユーザがコマンド「動画アプリケーション、Ｍｏｖｉｅ−Ｘを私の待ち行列に追加」からの「動画アプリケーション」を言ったとき、ユーザへの応答時間が短縮され得るように、動画アプリケーションは、ウォームアップされ得る。コマンドが完了したとき、動画は、動画アプリケーションを使用して、しかし、動画アプリケーションのユーザインターフェースを表に出すことなく、ユーザの待ち行列に追加され得る。動画は、ユーザの待ち行列に追加され得、デジタルパーソナルアシスタントは、動画が追加されたことを（アシスタントのユーザインターフェースを使用して）確認することができる。ユーザは、迅速な応答時間を体験することができ、タスクを完了するためにより少ないステップを実行することができる（たとえば、動画アプリケーションは、閉じられる必要がない）。
【００２０】
[0029]  デジタルパーソナルアシスタントを含む例示的なシステム
図１は、デジタルパーソナルアシスタント１２０のバックグラウンドにおいて音声対応アプリケーション１１０のタスク１１２をヘッドレスに完了するためのシステム１００の一例を示すシステム図である。音声対応アプリケーション１１０およびデジタルパーソナルアシスタント１２０は、コンピューティングデバイス１３０にインストールされたソフトウェアモジュールであり得る。コンピューティングデバイス１３０は、たとえば、デスクトップコンピュータ、ラップトップ、携帯電話、スマートフォン、ウェアラブルデバイス（腕時計やワイヤレス電子バンドなど）、またはタブレットコンピュータであり得る。コンピューティングデバイス１３０は、デジタルパーソナルアシスタント１２０によって起動され得るアプリケーションおよびアプリケーションのタスクを識別するためのコマンドデータ構造１４０を含むことができる。アプリケーションは、（アプリケーションが起動されたときにアプリケーションのユーザインターフェースが現れるような）フォアグラウンドおよび／または（アプリケーションが起動されたときにアプリケーションのユーザインターフェースが現れないような）バックグラウンドにおいてデジタルパーソナルアシスタント１２０によって起動され得る。たとえば、アプリケーションのいくつかのタスクは、フォアグラウンドにおいて起動され得、同じアブレーションの異なるタスクは、バックグラウンドにおいて起動され得る。コマンドデータ構造１４０は、アプリケーションおよび／またはアプリケーションのタスクがどのようにデジタルパーソナルアシスタント１２０から起動されるべきかを定義することができる。
【００２１】
[0030]  コンピューティングデバイス１３０は、音を電気信号に変換するためのマイクロホン１５０を含むことができる。マイクロホン１５０は、空気圧振動から電気信号を生成するための、それぞれ、電磁誘導、静電容量の変化、または圧電気を使用するダイナミックマイクロホン、コンデンサーマイクロホン、圧電マイクロホンであり得る。マイクロホン１５０は、増幅器、１つもしくは複数のアナログフィルタもしくはデジタルフィルタ、および／または、デジタル音声入力を生成するためのアナログ−デジタル変換器を含むことができる。デジタル音声入力は、たとえばユーザがタスクを達成するようデジタルパーソナルアシスタント１２０に命じているときに、ユーザの音声を再生することを含むことができる。コンピューティングデバイス１３０は、ユーザがテキスト入力を入力することを可能にするためのタッチスクリーンまたはキーボード（図示せず）を含むことができる。
【００２２】
[0031]  デジタル音声入力および／またはテキスト入力は、デジタルパーソナルアシスタント１２０の自然言語処理モジュール１２２によって処理され得る。たとえば、自然言語処理モジュール１２２は、デジタル音声入力を受信することができ、ユーザによって発声された単語をテキストに翻訳することができる。抽出されたテキストは、ユーザ音声コマンドを決定するために意味的に解析され得る。デジタル音声入力を解析し、発声されたコマンドに応答してアクションをとることによって、デジタルパーソナルアシスタント１２０は、音声制御され得る。たとえば、デジタルパーソナルアシスタント１２０は、大部分、ユーザの意図に一致する可能性が高いコマンドを決定するために、抽出されたテキストを潜在的なユーザコマンドのリストと比較することができる。一致は、統計的方法もしくは確率的方法、決定木もしくは他の規則、他の適切な一致基準、またはそれらの組合せに基づき得る。潜在的なユーザコマンドは、デジタルパーソナルアシスタント１２０のネイティブコマンドおよび／またはコマンドデータ構造１４０内に定義されたコマンドであり得る。したがって、コマンドデータ構造１４０内にコマンドを定義することによって、デジタルパーソナルアシスタント１２０によってユーザの代わりに実行され得るタスクの範囲は、拡張され得る。潜在的なコマンドは、コマンドデータ構造１４０内のヘッドレスタスクまたはバックグラウンドタスクであると定義され得る音声対応アプリケーション１１０のタスク１１２を実行することを含むことができる。
【００２３】
[0032]  自然言語処理モジュール１２２は、ユーザ発語が完了する前にテキストの中間文字列が解析され得るように、発話が処理されつつテキストのストリームを生成することができる。したがって、ユーザがアプリケーションの名前でコマンドを開始する場合、アプリケーションは、発語の初期に特定され得、アプリケーションは、ユーザがコマンドを完了する前にウォームアップされ得る。アプリケーションをウォームアップすることは、比較的低速の不揮発性メモリ（ハードディスクドライブまたはフラッシュメモリなど）からアプリケーションの命令を取り出すことと、比較的高速の揮発性メモリ（メインメモリまたはキャッシュメモリなど）に命令を記憶することとを含むことができる。
【００２４】
[0033]  デジタルパーソナルアシスタント１２０が、コマンドがアプリケーションのタスクに関連付けられたと決定したとき、アプリケーションのタスクは、実行され得る。デジタルパーソナルアシスタント１２０が、（たとえば、コマンドデータ構造１４０内の定義を解析することによって）アプリケーションのタスクがバックグラウンドプロセスとして実行されることを決定した場合、アプリケーションは、バックグラウンドにおいて実行され得る。音声対応アプリケーション１１０などのアプリケーションは、デジタルパーソナルアシスタント１２０と通信することができる。たとえば、アプリケーションは、タスクの完了に関連する一組の状態を順序付けすることができ、アプリケーションの状態は、デジタルパーソナルアシスタント１２０に伝達され得る。たとえば、アプリケーションは、「初期」状態で開始し、タスクが実行されている間は「進行」状態に移行し、次いで、タスクが完了したときは「最終」状態に移行することができる。
【００２５】
[0034]  デジタルパーソナルアシスタント１２０は、ユーザインターフェース１２４を介してタスクの進行状況を報告することができる。ユーザインターフェース１２４は、コンピューティングデバイス１３０のディスプレイ上にテキスト、グラフィックス、もしくはハイパーリンクを提示すること、コンピューティングデバイス１３０のスピーカからオーディオ出力を生成すること、または、コンピューティングデバイス１３０のオフセンター重量に接続された電気モータからの振動などの他の感覚出力を生成することなどの様々な方法でユーザに情報を伝達することができる。たとえば、ユーザインターフェース１２４は、タスクが進行状態にあるとき、コンピューティングデバイス１３０の表示画面上にスピニングホイールを提示させることができる。別の例として、ユーザインターフェース１２４は、タスクが最終状態にあり、タスクが正常に完了したとき、タスクの正常な完了を示すシミュレートされた発話を生成することができる。タスクの状態を報告するためにデジタルパーソナルアシスタント１２０のユーザインターフェース１２４を使用することによって、応答は、アプリケーションのユーザインターフェースを表に出すことなく、ユーザインターフェース１２４のコンテキスト内から来ることができる。
【００２６】
[0035]  音声対応アプリケーション１１０がデジタルパーソナルアシスタント１２０の製造元によってまたは製造元とは異なるサードパーティによって作成され得ることに留意すべきである。デジタルパーソナルアシスタント１２０および音声対応アプリケーション１１０の相互運用は、アプリケーション間のソフトウェア契約を遵守し、コマンドデータ構造１４０内の機能を定義することによって達成され得る。音声対応アプリケーション１１０は、スタンドアロンアプリケーションとして、またはデジタルパーソナルアシスタント１２０の構成要素としてのみ動作することが可能であり得る。スタンドアロンアプリケーションとして、音声対応アプリケーション１１０は、たとえば、音声対応アプリケーション１１０に関連するアイコンをタップまたはダブルクリックすることによって、フォアグラウンドプロセスとしてデジタルパーソナルアシスタント１２０の外部で起動され得、コンピューティングデバイス１３０の表示画面上に表示され得る。音声対応アプリケーション１１０は、起動されたときにユーザインターフェースを提示することができ、ユーザは、タスクを実行するためにユーザインターフェースと対話することができる。対話は、音声入力のみであってもよく、または、テキスト入力やジェスチャなどの他の入力モードが使用されてもよい。デジタルパーソナルアシスタント１２０によって呼び出されるアプリケーションは、コンピューティングデバイス１３０にインストールされてもよく、またはウェブサービスであってもよい。
【００２７】
[0036]  デジタルパーソナルアシスタント１２０は、リモートサーバコンピュータ１６０上で実行されるウェブサービス１６２などのウェブサービスを呼び出すことができる。ウェブサービスは、ネットワーク１７０などのネットワーク上のネットワークアドレスにおいて提供されるソフトウェア機能である。ネットワーク１７０は、ローカルエリアネットワーク（LAN）、ワイドエリアネットワーク（WAN）、インターネット、イントラネット、ワイヤードネットワーク、ワイヤレスネットワーク、セルラネットワーク、それらの組合せ、または、コンピューティングデバイス１３０とリモートサーバコンピュータ１６０との間の通信のためのチャネルを提供するのに適した任意のネットワークを含むことができる。図１に示すネットワークトポロジが単純化されていることと、複数のネットワークおよびネットワーキングデバイスが本明細書」で開示する様々なコンピューティングシステムを相互接続するために利用され得ることとを理解すべきである。ウェブサービス１６２は、デジタルパーソナルアシスタント１２０のカーネルまたは主要部分の一部として呼び出され得る。たとえば、ウェブサービス１６２は、自然言語処理モジュール１２２のサブルーチンとして呼び出され得る。加えて、または代替的に、ウェブサービス１６２は、コマンドデータ構造１４０内で定義されたアプリケーションであり得、デジタルパーソナルアシスタント１２０からヘッドレスに起動されることが可能であり得る。
【００２８】
[0037]  デジタルパーソナルアシスタントを含む例示的なソフトウェアアーキテクチャ
図２は、デジタルパーソナルアシスタント１２０のバックグラウンドにおいてアプリケーションのタスクをヘッドレスに完了するための例示的なソフトウェアアーキテクチャ２００を示す図である。アプリケーションのタスクをヘッドレスに実行するとき、タスクは、バックグラウンドにおいて実行され得、アプリケーションのユーザインターフェースは、実行されているタスクの結果として表に出されない。むしろ、デジタルパーソナルアシスタント１２０のユーザインターフェースは、ユーザがアプリケーションのコンテキストではなくデジタルパーソナルアシスタント１２０のコンテキスト内で対話するように、ユーザへの出力および／またはユーザからの入力を提供するために使用され得る。したがって、アプリケーションのヘッドレスに実行されるタスクは、タスクの実行の継続時間中にバックグラウンドにおいて実行することができ、アプリケーションのユーザインターフェースは、決して表に出されない。コンピューティングデバイス１３０などのコンピューティングデバイスは、アーキテクチャ２００に従って編成された、デジタルパーソナルアシスタント１２０のためのソフトウェアと、オペレーティングシステム（OS）カーネル２１０と、アプリケーション２３０とを実行することができる。
【００２９】
[0038]  ＯＳカーネル２１０は、一般に、コンピューティングデバイス１３０のソフトウェア構成要素とハードウェア構成要素との間のインターフェースを提供する。ＯＳカーネル２１０は、レンダリング（たとえば、ディスプレイへの視覚的出力のレンダリング、スピーカのための音声出力および他の音の生成、ならびに電気モータのための振動出力の生成）のための構成要素と、ネットワーキングのための構成要素と、プロセス管理のための構成要素と、メモリ管理のための構成要素と、位置追跡のための構成要素と、発話認識および他の入力処理のための構成要素とを含むことができる。ＯＳカーネル２１０は、ユーザ入力管理と、出力管理と、ストレージアクセス機能と、ネットワーク通信機能と、メモリ管理機能と、プロセス管理機能と、コンピューティングデバイス１３０のための他の機能とを管理することができる。ＯＳカーネル２１０は、たとえば、様々なシステムコールを介して、こうした機能へのアクセスをデジタルパーソナルアシスタント１２０およびアプリケーション２３０に提供することができる。
【００３０】
[0039]  ユーザは、デジタルパーソナルアシスタント１２０と対話するためのユーザ入力（音声、触覚、および動きなど）を生成することができる。デジタルパーソナルアシスタント１２０は、ユーザ入力に応答してメッセージを作成するための機能を含むことができるＯＳカーネル２１０を介してユーザ入力に気づくことができる。メッセージは、デジタルパーソナルアシスタント１２０または他のソフトウェアによって使用され得る。ユーザ入力は、タッチスクリーン入力、ボタンの押下、またはキーの押下などの触覚入力を含むことができる。ＯＳカーネル２１０は、触覚入力、ボタン入力、またはキー押下入力からタッチスクリーンへのタップ、指ジェスチャなどを認識するための機能を含むことができる。ＯＳカーネル２１０は、マイクロホン１５０からの入力を受信することができ、音声入力から発声されたコマンドおよび／または単語を認識するための機能を含むことができる。ＯＳカーネル２１０は、加速度計からの入力を受信することができ、シェイクなどの向きまたは動きを認識するための機能を含むことができる。
【００３１】
[0040]  デジタルパーソナルアシスタント１２０のユーザインターフェース（UI）入力処理エンジン２２２は、ＯＳカーネル２１０からのユーザ入力イベントメッセージを待つことができる。ＵＩイベントメッセージは、音声入力、パンニングジェスチャ、フリックジェスチャ、ドラッグジェスチャ、もしくはデバイスのタッチスクリーン上の他のジェスチャ、タッチスクリーン上のタップ、キーストローク入力、シェイクジェスチャ、または他のＵＩイベント（たとえば、方向ボタンもしくはトラックボール入力）を含むことができる。ＵＩ入力処理エンジン２２２は、ＯＳカーネル２１０からのＵＩイベントメッセージをデジタルパーソナルアシスタント１２０の制御ロジック２２４に送られる情報に翻訳することができる。たとえば、ＵＩ入力処理エンジン２２２は、自然言語処理能力を含むことができ、特定のアプリケーション名が発声されたかタイプされたこと、または音声コマンドがユーザによって与えられたことを示すことができる。代替的には、自然言語処理能力は、制御ロジック２２４に含まれ得る。
【００３２】
[0041]  制御ロジック２２４は、ＵＩ入力処理エンジン２２２、個人的情報ストア２２６、およびコマンドデータ構造１４０などの、デジタルパーソナルアシスタント１２０の様々なモジュールからの情報を受信することができ、制御ロジック２２４は、受信した情報に基づいて決定を行い、動作を実行することができる。たとえば、制御ロジック２２４は、音声コマンドが与えられたかどうかを決定するために発声されたテキストのストリームを構文解析することなどによって、デジタルパーソナルアシスタント１２０がユーザの代理でタスクを実行すべきであるかどうかを決定することができる。
【００３３】
[0042]  制御ロジック２２４は、コマンドに作用する前にユーザコマンド全体が発声されるのを待つことができ、または、制御ロジック２２４は、コマンドがまだ発声されているとき、コマンドが完了する前にコマンドに作用し始めることができる。たとえば、制御ロジック２４０は、発声されたコマンドの中間文字列を解析し、文字列をコマンドデータ構造１４０内に定義された１つまたは複数のアプリケーションに一致させるように試みることができる。アプリケーションが呼び出される確率がしきい値を超えたとき、アプリケーションは、アプリケーションがより即座にユーザに応答することができるように、ウォームアップされ得る。複数のアプリケーションおよび／または機能が、呼び出されることを見越して推測的にウォームアップされ得、アプリケーションは、アプリケーションが呼び出されないと决定された場合、停止され得る。たとえば、ユーザが特定のアプリケーションの名前で発声されたコマンドを開始したとき、特定のアプリケーションが読み出される高い確率が存在するので、そのアプリケーションは、ウォームアップされ得る。別の例として、いくつかの部分的なコマンド文字列は、コマンドデータ構造１４０内に定義されたアプリケーションの小さいセットに限定され得、アプリケーションのセットは、部分的なコマンド文字列との一致が存在するとき、並行してウォームアップされ得る。具体的には、コマンドデータ構造１４０は、「写真をとる」というコマンドを有するカメラアプリケーションおよび「メモをとる」というコマンドを有するメモアプリケーションなどの、「とる」という単語を有するコマンドを伴う２つのアプリケーションのみを有する場合がある。制御ロジック２２４は、「とる」という単語が認識されたとき、カメラアプリケーションとメモアプリケーションの両方のウォームアップを開始することができ、次いで、「写真をとる」という完全なコマンドが認識されたとき、メモアプリケーションは、停止され得る。アプリケーションをウォームアップすることは、メモリを割り当てること、命令をプリフェッチすること、通信セッションを確立すること、データベースから情報を取り出すこと、新しい実行スレッドを開始すること、割込みを発生させること、または他の適切なアプリケーション固有の動作を含むことができる。ＯＳカーネル２１０のサービスは、たとえば、プロセス管理サービス、メモリ管理サービス、およびネットワークサービスなどを、ウォームアップ中に呼び出すことができる。
【００３４】
[0043]  発声されたテキストは、コンテキスト情報を含むことができ、制御ロジック２２４は、ユーザ音声コマンドがコンテキストフリーであるように、コンテキスト情報を解析することができる。コンテキスト情報は、現在位置と、現在時刻と、コンピューティングデバイス１３０の向きと、個人的情報ストア２２６に記憶された個人情報とを含むことができる。個人情報は、ユーザの配偶者または子供の名前などのユーザ関係と、家、職場、学校、デイケア、または医者の住所などのユーザ固有の場所と、ユーザの連絡先リストまたはカレンダーからの情報と、ユーザの好みの色、レストラン、または交通手段と、重要な誕生日、記念日、または他の日付と、他のユーザ固有の情報とを含むことができる。ユーザは、コンテキスト情報を有するコマンドを与えることができ、制御ロジック２２４は、コマンドをコンテキストフリーコマンドに翻訳することができる。たとえば、ユーザは、「バスアプリ、次の１時間以内に帰宅するバスを教えて」というコマンドを与えることができる。この例では、コマンド内のコンテキスト情報は、現在の日時、現在位置、およびユーザの家の場所である。
【００３５】
[0044]  制御ロジック２２４は、リアルタイムクロックへのアクセスを維持または有することができるＯＳカーネル２１０から現在時刻を得ることができる。制御ロジック２２４は、コンピューティングデバイス１３０のローカル構成要素から現在の位置データを得ることができるＯＳカーネル２１０からコンピューティングデバイス１３０の現在の位置データを得ることができる。たとえば、位置データは、セルラネットワークのタワー間の三角測量によって、近傍のＷｉ−Ｆｉルータの物理的位置の参照によって、または別のメカニズムによって、全地球測位システム（GPS）からのデータに基づいて决定され得る。制御ロジック２２４は、個人的情報ストア２２６からユーザの家の位置を得ることができる。個人的情報ストア２２６は、コンピューティングデバイス１３０の補助または他の不揮発性ストレージに記憶され得る。したがって、制御ロジック２２４は、ストレージリソース（たとえば、個人的情報ストア２２６）にアクセスすることができるＯＳカーネル２１０を介して個人的情報を受信することができる。コンテキスト情報が解決され得るとき、コマンドは、コンテキストフリーコマンドに翻訳され得る。たとえば、金曜日の午後６時であり、ユーザが４４４Ｍａｉｎ  Ｓｔｒｅｅｔにおり、ユーザの家が１２８Ｐｌｅａｓａｎｔ  Ｄｒｉｖｅである場合、コンテキストフリーコマンドは、「バスアプリ、４４４Ｍａｉｎ  Ｓｔｒｅｅｔ付近に到着し、金曜日の午後６時と午後７時との間に１２８Ｐｌｅａｓａｎｔ  Ｄｒｉｖｅ付近を通過するバスを教えて」であり得る。
【００３６】
[0045]  ユーザコマンドは、制御ロジック２２４（コマンドがデジタルパーソナルアシスタント１２０のネイティブコマンドであるときなど）、コンピューティングデバイス１３０にインストールされたアプリケーション２３０（コマンドがアプリケーション２３０に関連するときなど）、またはウェブサービス１６２（コマンドがウェブサービス１６２に関連するときなど）によって実行され得る。コマンドデータ構造１４０は、どのコマンドがそのアプリケーションに関連しているのか、および、コマンドがフォアグラウンドまたはバックグラウンドのどちらにおいて実行され得るのかを指定することができる。たとえば、コマンドデータ構造１４０は、ユーザ音声コマンドを、利用可能なサードパーティの音声対応アプリケーションによってサポートされる機能にマッピングすることができる。
【００３７】
[0046]  制御ロジック２２４は、制御ロジック２２４が、ユーザコマンドがアプリケーション２３０の事前定義された機能２３２に関連すると決定したとき、アプリケーション２３０の事前定義された機能２３２を実行させることができる。制御ロジック２２４が、アプリケーション２３０の事前定義された機能２３２がバックグラウンドプロセスとして実行されるべきであると決定した場合、事前定義された機能２３２は、バックグラウンドにおいて実行することができる。たとえば、制御ロジック２２４は、（たとえば、ＯＳカーネル２１０のプロセス管理構成要素を介して）割込みを発生させる、共有メモリに書き込む、メッセージ待ち行列に書き込む、メッセージを渡す、または新しい実行スレッドを開始することによって、事前定義された機能２３２に要求２４０を送ることができる。アプリケーション２３０は、事前定義された機能２３２を実行することができ、割込みを発生させる、共有メモリに書き込む、メッセージ待ち行列に書き込む、またはメッセージを渡すことによって、制御ロジック２２４に応答２４２を返すことができる。応答は、アプリケーション２３０の状態および／またはユーザコマンドに応答する他の情報を含むことができる。
【００３８】
[0047]  制御ロジック２２４は、制御ロジック２２４が、コマンドがウェブサービス２６２に関連すると決定したとき、ウェブサービス１６２を呼び出させることができる。たとえば、要求２６０は、ＯＳカーネル２１０のネットワーキング構成要素を介してウェブサービス１６２に送られ得る。ネットワーキング構成要素は、ユーザコマンドを実行するために、（たとえば、ネットワーク１７０のプロトコルに従って要求をネットワークパケットにカプセル化することによって）要求をフォーマットし、ネットワーク１７０を介してウェブサービス１６２に転送することができる。要求２６０は、制御ロジック２２４とウェブサービス１６２との間の通信チャネル（たとえば、ソケット）を開くステップ、およびユーザコマンドに関連する情報を送るステップなどの複数のステップを含むことができる。ウェブサービス１６２は、ネットワーク１７０を介して送信され、ネットワーキング構成要素によって制御ロジック２２４に返信２６２として転送され得る応答によって要求２６０に応答することができる。ウェブサービス１６２からの応答は、ウェブサービス１６２の状態と、ユーザコマンドに応答する他の情報とを含むことができる。
【００３９】
[0048]  制御ロジック２２４は、アプリケーションからの応答に基づいてユーザに提示されるべき出力を（ＵＩ出力レンダリングエンジン２２８、およびＯＳカーネル２１０のレンダリング構成要素の助けを借りて）生成することができる。たとえば、コマンドデータ構造１４０は、機能から受信した状態を、音声制御デジタルパーソナルアシスタント１２０からユーザに提供される応答にマッピングすることができる。一般に、制御ロジック２２４は、高レベル出力コマンドをＵＩ出力レンダリングエンジン２２８に提供することができ、ＵＩ出力レンダリングエンジン２２８は、ディスプレイ上の視覚的出力、スピーカまたはヘッドホンを介するオーディオおよび／または音声出力、ならびに電気モータからの振動出力のためのＯＳカーネル２１０のレンダリング構成要素に低レベル出力プリミティブを生成することができる。たとえば、制御ロジック２２４は、テキストの文字列を有するテキスト−発話コマンドをＵＩ出力レンダリングエンジン２２８に送ることができ、ＵＩ出力レンダリングエンジン２２８は、発話音声をシミュレートするデジタルオーディオデータを生成することができる。
【００４０】
[0049]  制御ロジック２２４は、アプリケーションの状態に基づいてどのような情報をユーザに提供するのかを決定することができる。状態は、ユーザコマンドの開始、処理、確認、曖昧さ除去、または終了に対応することができる。コマンドデータ構造１４０は、アプリケーションの状態を、ユーザに提供される異なる応答にマッピングすることができる。提供され得る情報のタイプは、たとえば、表示テキスト、シミュレートされた発話、アプリケーションに戻るディープリンク、ウェブページまたはウェブサイトへのリンク、およびハイパーテキストマークアップ言語（HTML）ベースのウェブコンテンツを含む。
【００４１】
[0050]  例示的なアプリケーション状態
図３は、ヘッドレス方式でデジタルパーソナルアシスタント１２０とインターフェースするアプリケーションのための例示的な状態機械３００の図である。アプリケーションは、ウォームアップ状態３１０または初期状態３２０のいずれかにおいて開始することができる。ウォームアップ状態３１０には、アプリケーション名が知られているが、発声されたコマンドが完了していないときなど、デジタルパーソナルアシスタント１２０がアプリケーションをウォームアップさせるときに入ることができる。アプリケーションは、ウォームアップ動作が完了するまで、ウォームアップ状態３１０のままである。ウォームアップ動作が完了したとき、アプリケーションは、初期状態３２０に移行することができる。
【００４２】
[0051]  初期状態３２０には、ウォームアップ状態３１０が完了した後か、または、ユーザコマンドがデジタルパーソナルアシスタント１２０によってアプリケーションに提供された後に入ることができる。初期状態３２０の間、ユーザコマンドは、アプリケーションによって処理される。コマンドが明白であるが、完了するのに所定の時間（５秒など）よりもかかる場合、状態は、コマンドが実行されている進行状態３３０に移行され得る。コマンドが明白であり、重要または破壊的な動作が実行される結果となる可能性がある場合、状態は、確認状態３４０に移行され得る。コマンドがやや曖昧であるが、いくつかのオプション間で選択することによって曖昧さが解明され得る場合、状態は、曖昧さ除去状態３５０に移行され得る。コマンドが曖昧であり、いくつかのオプションを用いて明確にされ得ない場合、状態は、失敗状態またはリダイレクション状態などの最終状態３５０に移行され得る。コマンドが実行され得ない場合、状態は、失敗状態などの最終状態３６０に移行され得る。コマンドが完了するのに所定の時間未満で完了することができ、ユーザからの確認を要求することが望まれない場合、状態は、成功状態などの最終状態３６０に移行され得る。最終状態３６０が複数の状況を有する単一の状態（状況が成功、失敗、リダイレクション、およびタイムアウトである場合など）、または最終状態のグループ（状況が、成功、失敗、リダイレクション、およびタイムアウトである場合など）であり得ることに留意すべきである。
【００４３】
[0052]  進行状態３３０は、ユーザコマンドの動作が実行されているか、または試みられていることを示すことができる。アプリケーションは、デジタルパーソナルアシスタント１２０のユーザインターフェースを使用してユーザに情報が提示され得るように、テキスト−発話（TTS）文字列またはグラフィカルユーザインターフェース（GUI）文字列をデジタルパーソナルアシスタント１２０に送ることによって、進行状態３３０中にユーザに情報を提供することができる。加えて、または代替的には、デフォルト情報（スピニングホイール、砂時計、および／またはキャンセルボタンなど）が、デジタルパーソナルアシスタント１２０のインターフェースを使用して進行状態３３０中にユーザに提示され得る。
【００４４】
[0053]  進行状態３３０の間、アプリケーションは、動作の進行を監視し、アプリケーションが進行状態３３０に留まることができるのか、または最終状態３６０に移行することができるのかを決定することができる。一実施形態では、アプリケーションは、（たとえば、５秒間）タイマを開始することができ、アプリケーションが、タイマが終了する前に十分な進行をしない場合、状態は、タイムアウト状態などの最終状態３６０に移行され得る。アプリケーションが十分に進行している場合、タイマは、再開され得、進行は、次のタイマの満了時に再び検査され得る。アプリケーションは、進行状態３３０に留まるための最大時間制限を有することができ、最大時間制限を超えた場合、状態は、タイムアウト状態などの最終状態３６０に移行され得る。ユーザコマンドに関連する動作は、（正常にまたは失敗して）完了することができ、状態は、適切な最終状態３６０に移行され得る。ユーザは、デジタルパーソナルアシスタント１２０のユーザインターフェースにコマンドを与えることによって、進行状態３３０にあるときにアプリケーションを終了することができる。たとえば、ユーザは、ディスプレイ上の「キャンセル」もしくは「戻る」ボタンを押下もしくはクリックするか、または「キャンセル」と言うことができる。コマンドをキャンセルすることは、デジタルパーソナルアシスタント１２０にアプリケーションを停止させ、デジタルパーソナルアシスタント１２０のホーム画面を表示させるか、または終了させることができる。
【００４５】
[0054]  確認状態３４０は、アプリケーションがタスクを完了する前にユーザからの確認を待っていることを示すことができる。デジタルパーソナルアシスタント１２０が、アプリケーションが確認状態３４０にあることを検出したとき、イエス／ノーの応答のためのプロンプトが、デジタルパーソナルアシスタント１２０のユーザインターフェースを使用してユーザに提示され得る。アプリケーションは、イエスかノーの回答を有する質問であるＴＴＳ文字列をデジタルパーソナルアシスタント１２０に提供することができる。デジタルパーソナルアシスタント１２０は、アプリケーションの提供されたＴＴＳ文字列を発声することができ、「はい／いいえ」の回答を聞くことができる。ユーザ応答がイエスかノーの回答に対して解決しない場合、デジタルパーソナルアシスタント１２０は、事前定義された回数（３回など）までユーザに質問を尋ね続けることができる。すべての試みが行われ尽くされた場合、デジタルパーソナルアシスタント１２０は、「すみません、わかりません。回答を選択するために下をタップしてください。」などのデフォルトのフレーズを言うことができ、デジタルパーソナルアシスタント１２０は、聞くのを停止することができる。ユーザがイエスかノーをタップした場合、デジタルパーソナルアシスタント１２０は、ユーザの選択をアプリケーションに送ることができる。ユーザがマイクロホンアイコンをタップした場合、デジタルパーソナルアシスタント１２０は、（たとえば、口頭で回答する試みの回数をカウントするカウンタをリセットすることによって）発声された回答を認識することを再び試みることができる。デジタルパーソナルアシスタント１２０は、一致があるか、または、ユーザのキャンセルもしくは表示画面上の戻るボタンのヒットがあるまでループすることができる。アプリケーションがデジタルパーソナルアシスタント１２０からの肯定応答を受信した場合、アプリケーションは、タスクを完了することを試みることができる。タスクが正常に完了した場合、状態は、成功の状況で最終状態３６０に移行することができる。タスクが正常に完了するのに失敗したか、またはアプリケーションがキャンセルされた場合、状態は、失敗の状況で最終状態３６０に移行することができる。タスクが完了するのに所定の時間より多くかかる場合、状態は、タスクが実行されている間に進行状態３３０に移行され得る。
【００４６】
[0055]  曖昧さ除去状態３５０は、アプリケーションが、ユーザがタスクの完了前に制限された数（１０以下など）のオプション間を明確にするのを待っていることを示すことができる。アプリケーションは、デジタルパーソナルアシスタント１２０に、ＴＴＳ文字列、ＧＵＩ文字列、および／または、ユーザが選択する項目のリストを提供することができる。項目のリストは、タイトル、説明、および／またはアイコンなどの、各項目についてユーザに提供する１つまたは複数の情報を有するテンプレートとして提供され得る。デジタルパーソナルアシスタント１２０は、アプリケーションによって提供される情報を使用して、項目のリストをユーザに提示することができる。デジタルパーソナルアシスタント１２０は、ユーザからの選択を促し、聞くことができる。ユーザは、柔軟なまたは柔軟でない選択を使用してリストから選択することができる。柔軟でない選択は、ユーザが１つの方法でリストから選択することのみができることを意味し、柔軟な選択は、ユーザが複数の異なる方法でリストから選択することができることを意味する。たとえば、ユーザは、第１の項目または第２の項目をそれぞれ選択するために「第１」または「第２」と言うことなどによって、項目が列挙された番号順に基づいてリストから選択することができる。別の例として、ユーザは、「一番上の項目」、「一番下の項目」、「右の項目」、または「下から２番目の項目」など、項目間の空間的関係に基づいてリストから選択することができる。別の例として、ユーザは、項目のタイトルを言うことによってリストから選択することができる。
【００４７】
[0056]  曖昧さ除去の具体的な例として、ユーザは、デジタルパーソナルアシスタント１２０に「動画アプリケーション、Ｍｏｖｉｅ−Ｘを私の待ち行列に追加」と言うことができる。しかしながら、オリジナルおよび２つの続編などのＭｏｖｉｅ−Ｘの３つのバージョン、Ｍｏｖｉｅ−Ｘ  Ｉ、Ｍｏｖｉｅ−Ｘ  ＩＩ、およびＭｏｖｉｅ−Ｘ  ＩＩＩが存在する場合がある。発声されたコマンドに応答して、デジタルパーソナルアシスタント１２０は、Ｍｏｖｉｅ−Ｘを待ち行列に追加するコマンドを用いて、バックグラウンドにおいて動画アプリケーションを起動することができる。動画アプリケーションは、Ｍｏｖｉｅ−Ｘを検索し、３つのバージョンが存在することを決定することができる。したがって、動画アプリケーションは、曖昧さ除去状態３５０に移行することができ、３つの択一的な選択肢をデジタルパーソナルアシスタント１２０に送ることができる。デジタルパーソナルアシスタント１２０は、そのユーザインターフェースを介して、ユーザに３つの選択肢を提示することができ、ユーザは、リストから１つを選択することができる。ユーザによって適切な選択が行われたとき、デジタルパーソナルアシスタント１２０は、動画アプリケーションに応答を送ることができ、正しい動画が待ち行列に追加され得る。
【００４８】
[0057]  ユーザ応答がリスト上の項目に対して解決され得ない場合、デジタルパーソナルアシスタント１２０は、事前定義された回数までユーザに質問を尋ね続けることができる。すべての試みが行い尽くされた場合、デジタルパーソナルアシスタント１２０は、「すみません、わかりません。回答を選択するために下をタップしてください。」などのデフォルトのフレーズを言うことができ、デジタルパーソナルアシスタント１２０は、聞くのを停止することができる。ユーザが表示されたリスト上の項目の１つをタップした場合、デジタルパーソナルアシスタント１２０は、ユーザの選択をアプリケーションに送ることができる。ユーザがマイクロホンアイコンをタップした場合、デジタルパーソナルアシスタント１２０は、（たとえば、口頭で回答する試みの回数をカウントするカウンタをリセットすることによって）発声された回答を認識することを再び試みることができる。デジタルパーソナルアシスタント１２０は、一致があるか、または、ユーザのキャンセルもしくは表示画面上の戻るボタンのヒットがあるまでループすることができる。アプリケーションがデジタルパーソナルアシスタント１２０からの有効な応答を受信した場合、アプリケーションは、タスクを完了することを試みることができる。タスクがアクションを起こす前にユーザ確認を必要とする場合、状態は、確認状態３４０に移行することができる。タスクが正常に完了した場合、状態は、成功の状況で最終状態３６０に移行することができる。タスクが正常に完了するのに失敗したか、またはアプリケーションがキャンセルされた場合、状態は、失敗の状況で最終状態３６０に移行することができる。タスクが完了するのに所定の時間より多くかかる場合、状態は、タスクが実行されている間に進行状態３３０に移行され得る。
【００４９】
[0058]  例示的な状態機械３００は、ユーザとアプリケーションとの間の様々なマルチターン会話を可能にするために、追加のまたは代替の状態を用いて拡張され得る。（曖昧さ除去状態３５０による）曖昧さ除去および（確認状態３４０による）確認は、マルチターン会話の具体的な例である。一般に、マルチターン会話では、ヘッドレスアプリケーションは、そのユーザインターフェースを表に出すことなく、ユーザからの追加情報を要求することができる。むしろ、情報は、アプリケーションの代わりにデジタルパーソナルアシスタント１２０によってユーザから取得され得る。したがって、デジタルパーソナルアシスタント１２０は、ユーザとアプリケーションとの間のパイプ役として機能することができる。
【００５０】
[0059]  最終状態３６０は、アプリケーションがタスクを正常に完了したか、タスクを完了するのに失敗したか、タイムアウトしたか、または、アプリケーションがフォアグラウンドにおいて起動されるべきこと（リダイレクション）を示唆していることを示すことができる。上記で説明したように、最終状態３６０は、複数の状況（たとえば、成功、失敗、リダイレクション、およびタイムアウト）を有する単一の状態、または最終状態（たとえば、成功、失敗、リダイレクション、およびタイムアウト）のグループであり得る。アプリケーションは、ＴＴＳ文字列、ＧＵＩ文字列、（テンプレートを介して提供される）項目のリスト、および／または起動パラメータをデジタルパーソナルアシスタント１２０に提供することができる。デジタルパーソナルアシスタント１２０は、デジタルパーソナルアシスタント１２０のユーザインターフェースを使用して、アプリケーションによって提供される情報をユーザに提示することができる。加えて、または代替的に、デジタルパーソナルアシスタント１２０は、異なる状況に関連する事前定義されたまたは定型文の応答を提示することができる。たとえば、タイムアウトが発生するか、タスクが失敗した場合、デジタルパーソナルアシスタント１２０は、「すみません。私はそれをあなたのために行うことができませんでした。あとでもう一度試してもらえませんか。」と言うことができる。別の例として、アプリケーションがリダイレクションを要求している場合、デジタルパーソナルアシスタント１２０は、「すみません＜appName＞が応答していません。＜appName＞を起動しています」と言うことができ、デジタルパーソナルアシスタント１２０は、オリジナルの音声コマンドおよび起動パラメータ（起動パラメータがアプリケーションによって提供されている場合）を用いてフォアグラウンドにおいてアプリケーションを起動することを試みることができる。別の例として、アプリケーションがタスクを正常に完了した場合、デジタルパーソナルアシスタント１２０は、「私は、あなたのためにそれを行いました」と言うことができる。
【００５１】
[0060]  例示的なコマンド定義
図４は、サードパーティのアプリケーションとデジタルパーソナルアシスタント１２０との間のインターフェースを可能にするための、コマンドデータ構造１４０などのデータ構造を作成するために使用され得るスキーマに準拠したコマンド定義４００の一例である。コマンド定義４００は、拡張マークアップ言語（XML）またはスキーマによって定義されたＸＭＬのサブセットなどの様々な言語で記述され得る。たとえば、スキーマは、法的要素、要素の階層、各要素の法的および任意選択属性、ならびに他の適切な基準などの、コマンド定義の構造を定義することができる。コマンド定義４００は、ユーザの発語を、アプリケーション、コマンドまたはタスク、およびデータ項目またはスロットなどの異なる構成要素に構文解析するのを支援するために、デジタルパーソナルアシスタント１２０によって使用され得、データ項目は、任意選択である。たとえば、「ＭｏｖｉｅＡｐｐＳｅｒｖｉｃｅ、ＭｏｖｉｅＸを私の待ち行列に追加」というコマンドは、アプリケーション（「MovieAppService」）、コマンド（「Add」）、およびデータ項目（「ＭｏｖｉｅＸ」）に構文解釈され得る。コマンド定義４００は、アプリケーション名、アプリケーションのタスクまたはコマンド、自然言語処理のための代替的な言い回し、および異なるアプリケーション状態に関連する応答を定義するための要素を含むことができる。
【００５２】
[0061]  １つまたは複数のアプリケーションは、コマンド定義４００において定義され得る。アプリケーションは、コンピューティングデバイスまたはウェブサーバにインストールされたサードパーティのアプリケーションまたは他のアプリケーションであり得る。アプリケーションに関連する情報は、アプリケーションを定義する要素によって画定され得る。たとえば、アプリケーション名は、＜AppName＞要素によって定義され得、＜AppName＞間の要素は、先頭の＜AppName＞要素に関連付けられ得る。コマンド定義４００において、アプリケーション名は、「MovieAppService」であり、＜AppName＞に続く要素は、「MovieAppService」アプリケーションに関連付けられる。
【００５３】
[0062]  アプリケーション名に続くコマンドは、アプリケーションのコマンドである。コマンドは、＜Command＞要素で識別され得る。コマンド要素の属性は、コマンドの名前（たとえば、「Name」）と、コマンドの起動タイプ（たとえば、「ActivationType」）とを含むことができる。たとえば、起動タイプは、フォアグラウンドにおいて起動されるべきコマンドのための「foreground」、およびバックグラウンドにおいて起動されるべきコマンドのための「background」であり得る。「ActivationType」属性は、任意選択であり得、デフォルトの起動タイプは、フォアグラウンドである。
【００５４】
[0063]  ＜ListenFor＞要素は、＜Command＞要素内にネストされ得、コマンドが発声され得る１つまたは複数の方法を定義するために使用され得る。自然言語処理を実行するときにデジタルパーソナルアシスタント１２０へのヒントとして、任意選択単語またはキャリア単語が提供され得る。キャリア単語は、角括弧［］内で識別され得る。データ項目は、波括弧または中括弧｛｝内で識別され得る。コマンド定義４００において、一般に、２つの＜ListenFor＞要素によって定義される「Add」コマンドを呼び出すための２つの代替方法が存在する。たとえば、「ＭｏｖｉｅＸを私の待ち行列に追加」または「ＭｏｖｉｅＸを私のＭｏｖｉｅＡｐｐＳｅｒｖｉｃｅ待ち行列に追加」のいずれかを言うことは、デジタルパーソナルアシスタント１２０がバックグラウンドにおいてＭｏｖｉｅＡｐｐＳｅｒｖｉｃｅの「Add」コマンドを起動させるために使用され得る。事前定義されたフレーズが、中括弧のセット｛builtln:<phrase identifier｝内の「builtln」というキーワードで識別され得る。
【００５５】
[0064]  ＜Feedback＞要素は、＜Command＞要素内にネストされ得、デジタルパーソナルアシスタント１２０がユーザから発声されたコマンドを正常に認識したこときにユーザに話されるべきフレーズを定義するために使用され得る。加えて、または代替的に、＜Feedback＞要素は、発声されたコマンドがデジタルパーソナルアシスタント１２０によって構文解析されているときにユーザに表示されるべきテキスト文字列を定義することができる。
【００５６】
[0065]  ＜Response＞要素は、＜Command＞要素内にネストされ得、デジタルパーソナルアシスタント１２０によってユーザに提供される１つまたは複数の応答を定義するために使用され得る。各応答は、「State」属性によって定義されるようにアプリケーションの状態に関連付けられる。状態は、正常もしくは失敗などの最終状態、または進行などの中間状態についてであり得る。たとえば、画面上にテキストを表示するための＜DisplayString＞、ユーザに話されるテキストのための＜TTSString＞、ウェブサイトへのディープリンクのための＜AppDeepLink＞、およびウェブサイトへのそれほどディープではないリンクのための＜WebLink＞などの、定義された複数のタイプの応答が存在し得る。＜Response＞要素によって定義された応答は、アプリケーションによって提供される追加の応答情報で増強され得る。
【００５７】
[0066]  例示的なシーケンス図
図５は、デジタルパーソナルアシスタント１２０内からサードパーティのアプリケーションの機能をヘッドレスに実行するための複数の実行スレッド（５１０、５２０、および５３０）の通信を示す例示的なシーケンス図５００である。ＵＩスレッド５１０および制御スレッド５２０は、デジタルパーソナルアシスタント１２０のマルチスレッド化実施形態の並列スレッドであり得る。ＵＩスレッド５１０は、デジタルパーソナルアシスタント１２０のユーザインターフェースからの入力を取り込み、デジタルパーソナルアシスタント１２０のユーザインターフェースへの出力を表示する役割を主に果たすことができる。たとえば、発話入力、触覚入力、および／またはテキスト入力は、ＵＩスレッド５１０によって取り込まれ得る。一実施形態では、ＵＩスレッド５１０は、入力に対して自然言語処理を実行することができ、ユーザの発声されたコマンドをコマンドデータ構造１４０内のコマンドに一致させることができる。発声されたコマンドがコマンドデータ構造１４０内のコマンドと一致すると决定されたとき、コマンドは、さらなる処理のために制御スレッド５２０に伝達され得る。代替的な実施形態では、ＵＩスレッド５１０は、発話をテキスト入力に取り込むことができ、個々の単語は、制御スレッド５２０に伝達され得、制御スレッド５２０は、入力に対する自然言語処理を実行することができ、ユーザの発声されたコマンドをコマンドデータ構造１４０内のコマンドと一致させることができる。
【００５８】
[0067]  制御スレッド５２０は、アプリケーションと通信し、アプリケーションの進行を追跡し、ＵＩスレッド５１０とインターフェースする役割を主に果たすことができる。たとえば、制御スレッド５２０は、ユーザがデジタルパーソナルアシスタント１２０のユーザインターフェースに発声したことをＵＩスレッド５１０によって通知され得る。制御スレッド５２０によって単語またはコマンドが受信され得、制御スレッド５２０は、ユーザコマンドが制御スレッド５２０によって認識されているとき、ＵＩスレッド５１０に通知することができる。ＵＩスレッド５１０は、デジタルパーソナルアシスタント１２０のユーザインターフェースを介して、進行がコマンドに対してなされていることをユーザに示すことができる。ＵＩスレッド５１０または制御スレッド５２０は、コマンドデータ構造１４０からコマンドの属性を取り出すことによって、コマンドがヘッドレスに起動されるべきであると決定することができる。制御スレッド５２０は、コマンドがヘッドレスに起動されるべきときに新しいスレッドを開始するか、またはＡｐｐＳｅｒｖｉｃｅスレッド５３０などの既存のスレッドと通信することができる。ユーザへの応答時間を短縮するために、制御スレッド５２０に新しいスレッドを開始させるのではなく、ＡｐｐＳｅｒｖｉｃｅスレッド５３０が既存のスレッドであることが望ましい場合がある。たとえば、ＡｐｐＳｅｒｖｉｃｅスレッド５３０は、アプリケーションをウォームアップしているときか、またはコンピューティングデバイス１３０のブートアップ中に開始され得る。
【００５９】
[0068]  ＡｐｐＳｅｒｖｉｃｅスレッド５３０は、コンピューティングデバイス１３０上で実行され得るか、または、リモートサーバコンピュータ１６０などのリモートサーバ上で実行され得る。ＡｐｐＳｅｒｖｉｃｅスレッド５３０は、ユーザコマンドによって指定された機能を完了する役割を主に果たすことができる。ＡｐｐＳｅｒｖｉｃｅスレッド５３０は、機能の実行進行を追跡するように状態機械（状態機械３００など）を維持することができ、状態に対する更新を制御スレッド５２０に提供することができる。状態の更新を制御スレッド５２０に提供することによって、ＡｐｐＳｅｒｖｉｃｅスレッド５３０は、ヘッドレスであり得、ユーザへの出力は、デジタルパーソナルアシスタント１２０によって提供され、ＡｐｐＳｅｒｖｉｃｅスレッド５３０のユーザインターフェースによって提供されない。
【００６０】
[0069]  制御スレッド５２０は、アプリケーションから状態更新を受信し、アプリケーションが進捗しているかどうかをチェックすることによって、アプリケーション（たとえば、ＡｐｐＳｅｒｖｉｃｅスレッド５３０）の進行を追跡することができる。たとえば、制御スレッド５２０は、ＡｐｐＳｅｒｖｉｃｅスレッド５３０と通信する（ＡｐｐＳｅｒｖｉｃｅスレッド５３０に情報を送るか、またはＡｐｐＳｅｒｖｉｃｅスレッド５３０から情報を受信する）たびに事前定義された継続時間（たとえば、５秒）のタイマを開始することができる。ＡｐｐＳｅｒｖｉｃｅスレッド５３０が応答する前にタイマが満了した場合、制御スレッド５２０は、アプリケーションが応答に失敗したことをＵＩスレッド５１０に示すことができ、ＵＩスレッド５１０は、デジタルパーソナルアシスタント１２０のユーザインターフェースを介してユーザに失敗メッセージを提示することができる。ＡｐｐＳｅｒｖｉｃｅスレッド５３０は、タイマが満了した後、制御スレッド５２０によって終了または無視され得る。代替的には、タイマが満了する前にＡｐｐＳｅｒｖｉｃｅスレッド５３０が応答した場合、別の応答がアプリケーションから期待されている場合（アプリケーションが進行状態に応答するときなど）、タイマは、リセットされ得、または、（アプリケーションが機能を完了したとき（最終状態）か、もしくはユーザ応答が要求されているとき（確認もしくは曖昧さ除去状態）など）タイマは、キャンセルされ得る。
【００６１】
[0070]  制御スレッド５２０がＡｐｐＳｅｒｖｉｃｅスレッド５３０から確認または曖昧さ除去状態を受信したとき、制御スレッド５２０は、確認または曖昧さ除去がユーザから要求されたことをＵＩスレッド５１０に示すことができる。ＵＩスレッド５１０は、デジタルパーソナルアシスタント１２０のユーザインターフェースを介してユーザに確認または曖昧さ除去の選択肢を提示することができる。ユーザが応答するか、または応答に失敗したとき、ＵＩスレッド５１０は、ユーザ応答か、またはその決定的な欠如を制御スレッド５２０に提供することができる。制御スレッド５２０は、ＡｐｐＳｅｒｖｉｃｅスレッド５３０が機能を実行できるように、ユーザ応答をＡｐｐＳｅｒｖｉｃｅスレッド５３０に渡すことができる。ユーザが応答に失敗した場合、制御スレッド５２０は、ＡｐｐＳｅｒｖｉｃｅスレッド５３０を終了させることができる。
【００６２】
[0071]  ＵＩスレッド５１０は、デジタルパーソナルアシスタント１２０のユーザインターフェースを介して様々なタイプの出力を表示することができる。たとえば、ＵＩスレッド５１０は、テキストからデジタルのシミュレートされた発話出力などのオーディオ出力を生成することができる。デジタルのシミュレートされた発話は、デジタルのシミュレートされた発話を、スピーカまたはヘッドホンを介して音として出力され得るアナログ信号に（たとえば、デジタル−アナログ変換器を用いて）変換することができるオーディオ処理チップに送られ得る。別の例として、ＵＩスレッド５１０は、コンピューティングデバイス１３０の表示画面上でユーザによって見られるための、画像、アニメーション、テキスト出力、およびハイパーリンクなどの視覚的出力を提供することができる。ハイパーリンクがタップまたはクリックされた場合、ＵＩスレッド５１０は、選択されたハイパーリンクに対応するウェブサイトを表示するためにブラウザアプリケーションを開始することができる。別の例として、ＵＩスレッド５１０は、たとえば、コンピューティングデバイス１３０を振動させることができる電気モータに振動信号を送ることによって、触覚出力を生成することができる。
【００６３】
[0072]  ヘッドレスタスク完了のための例示的な方法
図６は、デジタルパーソナルアシスタント１２０のバックグラウンドにおいてアプリケーションのタスクをヘッドレスに完了するための例示的な方法６００のフローチャートである。６１０において、ユーザによって生成された音声入力が、デジタルパーソナルアシスタント１２０によって受信され得る。音声入力は、コンピューティングデバイス１３０においてローカルに、またはコンピューティングデバイス１３０から遠隔で取り込まれ得る。一例として、ユーザによって生成された音声入力は、コンピューティングデバイス１３０のマイクロホン１５０によってローカルに取り込まれ、アナログ−デジタル変換器によってデジタル化され得る。別の例として、ユーザによって生成された音声入力は、コンピューティングデバイス１３０にワイヤレスで（たとえば、Ｂｌｕｅｔｏｏｔｈ（登録商標）コンパニオンデバイスによって）接続されたマイクロホンによって遠隔で取り込まれ得る。デジタルパーソナルアシスタント１２０は、デジタルパーソナルアシスタント１２０のユーザインターフェースにおいて入力された音声および／またはテキストによって制御され得る。
【００６４】
[0073]  ６２０において、ユーザの音声コマンドを決定するために、音声入力の自然言語処理が実行され得る。ユーザ音声コマンドは、サードパーティの音声対応アプリケーションなどのアプリケーションの事前定義された機能を実行するための要求を含むことができる。事前定義された機能は、デジタルパーソナルアシスタント１２０によってサポートされるアプリケーションおよびアプリケーションの機能を定義するデータ構造を使用して識別され得る。たとえば、互換性のあるアプリケーションは、コマンド定義４００などのコマンド定義ファイルにおいて識別され得る。デジタルパーソナルアシスタント１２０によってヘッドレスに実行され得るサードパーティのアプリケーションの機能を定義するために拡張可能なコマンド定義を使用することによって、デジタルパーソナルアシスタント１２０は、ユーザがデジタルパーソナルアシスタント１２０のユーザインターフェースを用いてより多くのタスクを実行することを可能にすることができる。
【００６５】
[0074]  ６３０において、デジタルパーソナルアシスタント１２０は、アプリケーションのユーザインターフェースがコンピューティングデバイス１３０のディスプレイ上に現われることなしに、事前定義された機能をアプリケーションにヘッドレスに実行させることができる。アプリケーションは、コマンドデータ構造１４０内にヘッドレスとして定義されているので、または、ユーザは、ハンズフリーモードでコンピューティングデバイスを使用しており、フォアグラウンドにおいてアプリケーションを実行することは、潜在的にユーザの気を散らせる場合があるので、デジタルパーソナルアシスタント１２０は、アプリケーションをヘッドレスに実行することを決定することができる。たとえば、デジタルパーソナルアシスタント１２０は、アプリケーションの事前定義された機能を実行するためにウェブサービスを呼び出すことができる。別の例として、デジタルパーソナルアシスタント１２０は、ユーザコマンドが决定された後に、アプリケーションの事前定義された機能を実行するために、コンピューティングデバイス１３０上で新しいスレッドを開始することができる。別の例として、デジタルパーソナルアシスタント１２０は、アプリケーションの事前定義された機能を実行するために、アプリケーションのウォームアップ中に開始されたスレッドなどの既存のスレッドと通信することができる。事前定義された機能は、バックグラウンドプロセスとして実行され得る。アプリケーションは、たとえば、事前定義された機能の状態を追跡することによって、事前定義された機能の進行を監視することができる。
【００６６】
[0075]  ６４０において、事前定義された機能に関連付けられた状態を示す応答がアプリケーションから受信され得る。たとえば、状態は、ウォームアップ状態、初期状態、進行状態、確認状態、曖昧さ除去状態、および最終状態を含むことができる。応答は、テンプレート化されたリスト、テキスト文字列、テキスト−発話文字列、画像、ハイパーリンク、または、デジタルパーソナルアシスタント１２０のユーザインターフェースを介してユーザに表示され得る他の適切な情報などの追加情報を含むことができる。
【００６７】
[0076]  ６５０において、デジタルパーソナルアシスタント１２０のユーザインターフェースは、事前定義された機能に関連付けられた受信された状態に基づいて、ユーザに応答を提供することができる。このようにして、応答は、アプリケーションのユーザインターフェースを表に出すことなく、デジタルパーソナルアシスタント１２０のユーザインターフェースのコンテキスト内から来ることができる。さらに、デジタルパーソナルアシスタント１２０の確認能力および曖昧さ除去能力は、アプリケーションのユーザコマンドを確認および／または明確化するために使用され得る。
【００６８】
[0077]  アプリケーションをウォームアップするかどうかを決定するための例示的な方法
図７は、ユーザがデジタルパーソナルアシスタント１２０に発声している間にアプリケーションをウォームアップするかどうかを決定するための例示的な方法７００のフローチャートである。７１０において、ユーザは、デジタルパーソナルアシスタント１２０にタイプするか、声を発するか、または話すことができる。ユーザのテキストまたは発話は、自然言語処理技法を使用して解析され得、個々の単語が、発話から認識され得る。個々の単語は、別々に、それらが発声された中間フレーズ内で解析され得る。たとえば、ユーザは、「やあ、アシスタント、ＭｙＡｐｐ、．．．を行う」と言うことができる。「やあ」という単語は、キャリアワードであり、抜かれる場合がある。「アシスタント」という単語は、ユーザがアクションを実行することを要求していることをデジタルパーソナルアシスタント１２０に知らせるために使用され得る。「ＭｙＡｐｐ」という単語は、アプリケーションとして解釈され得る。
【００６９】
[0078]  ７２０において、タイプまたは発声された単語は、デジタルパーソナルアシスタント１２０のネイティブ機能、および拡張可能なコマンド定義において提供される機能と比較され得る。集合的に、ネイティブ機能、およびコマンド定義において定義された機能は、「既知のＡｐｐＳｅｒｖｉｃｅ」と呼ばれる場合がある。発声された単語は、単語が発せられているとき、解析され、既知のＡｐｐＳｅｒｖｉｃｅと比較され得る。言い換えれば、発話の解析は、フレーズ全体がユーザによって話されるか、またはタイプされる前に生じることができる。既知のＡｐｐＳｅｒｖｉｃｅのいずれもが一致しない場合、７３０において、デジタルパーソナルアシスタント１２０は、認識されていない発声されたフレーズに対応する検索文字列を有する検索エンジンウェブページを取得するために、ウェブブラウザを開くことができる。プログラム制御は、ユーザがウェブ検索を洗練させ、および／または結果を見ることができるように、ウェブブラウザに転送され得る。しかしながら、既知のＡｐｐＳｅｒｖｉｃｅが一致した場合、方法７００は、７４０において続くことができる。
【００７０】
[0079]  ７４０において、ＡｐｐＳｅｒｖｉｃｅアプリケーションがフォアグラウンドタスクか、それともバックグラウンドタスクであるかが决定され得る。たとえば、コマンド定義は、ＡｐｐＳｅｒｖｉｃｅアプリケーションをフォアグラウンドアプリケーションまたはバックグラウンドアプリケーションとして定義する属性を含むことができる。ＡｐｐＳｅｒｖｉｃｅアプリケーションがフォアグラウンドタスクである場合、７５０において、ＡｐｐＳｅｒｖｉｃｅアプリケーションは、フォアグラウンドにおいて起動され得、コマンドを完了するために、ＡｐｐＳｅｒｖｉｃｅアプリケーションに制御が転送され得る。ＡｐｐＳｅｒｖｉｃｅアプリケーションがバックグラウンドタスクである場合、方法７００は、並行ステップ７６０および７７０で続くことができる。
【００７１】
[0080]  ７６０において、デジタルパーソナルアシスタント１２０は、発話解析に関する情報をユーザに提供することができる。具体的には、デジタルパーソナルアシスタント１２０は、デジタルパーソナルアシスタント１２０のユーザインターフェースの進行中画面のための出力を生成することができる。出力は、たとえば、コマンド定義の＜Command＞要素内にネストされた＜Feedback＞要素において定義され得る。出力は、テキスト文字列であり得、ユーザが発声し続けるにつれて継続的に更新され得る。
【００７２】
[0081]  ７７０において、デジタルパーソナルアシスタント１２０は、ユーザ発語が終わるのを待つことなく、ＡｐｐＳｅｒｖｉｃｅアプリケーションをウォームアップすることができる。ＡｐｐＳｅｒｖｉｃｅアプリケーションをウォームアップすることは、メモリを割り当てること、命令をプリフェッチすること、通信セッションを確立すること、データベースから情報を取得すること、新しい実行スレッドを開始すること、割込みを発生させること、または他の適切なアプリケーション固有の動作を含むことができる。アプリケーションは、推測的な機能（speculative function）に基づいてウォームアップされ得る。たとえば、推測的機能に対応する命令は、機能が確実にはわからない場合でも、フェッチされ得る。ユーザが発声しているコマンドを完了する前にアプリケーションをウォームアップすることによって、ユーザに応答する時間は、潜在的に短縮され得る。
【００７３】
[0082]  ７８０において、デジタルパーソナルアシスタント１２０は、発語が完了するまで、部分的な発話認識結果を構文解析し続けることができる。発語の終わりは、構文解析されているコマンドに基づいて、および／または所定の時間よりも長い間のユーザからの休止に基づいて検出され得る。たとえば、「ＭｏｖｉｅＡｐｐＳｅｒｖｉｃｅ、ＭｏｖｉｅＸを私の待ち行列に追加」というコマンドの終わりは、「待ち行列」という単語が認識されたときに検出され得る。別の例として、「ＴｅｘｔＡｐｐ、私が夕食に遅れて帰宅する旨を妻に通知」というコマンドの終わりは、コマンドが未知の長さのデータ項目で終わるので、検出するのがより困難である場合がある。したがって、コマンドが完了したことをデジタルパーソナルアシスタント１２０に示すために、休止が使用され得る。
【００７４】
[0083]  ７９０において、発声されたコマンドの終わりが検出され得、最終的な発話認識結果がアプリケーションに渡され得る。アプリケーションおよびデジタルパーソナルアシスタント１２０は、上記の図を参照して説明したように、発声されたコマンドを完了するために互いに通信することができる。
【００７５】
[0084]  コンピューティングシステム
図８は、説明した技術革新が実装され得る適切なコンピューティングシステム８００の一般化された例を示す。コンピューティングシステム８００は、技術革新が多様な汎用または専用コンピューティングシステムにおいて実装されるように、機能の使用の範囲に関して何ら限定を示唆することも意図しない。
【００７６】
[0085]  図８を参照すると、コンピューティングシステム８００は、１つまたは複数の処理ユニット８１０、８１５と、メモリ８２０、８２５とを含む。図８において、この基本構成８３０は、破線内に含まれる。処理ユニット８１０、８１５は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用中央処理ユニット（CPU）、特定用途向け集積回路（ASIC）、または任意の他のタイプのプロセッサであり得る。マルチ処理システムでは、処理パワーを高めるために、マルチ処理ユニットがコンピュータ実行可能命令を実行する。たとえば、図８は、中央処理ユニット８１０ならびにグラフィックス処理ユニットまたはコプロセッシングユニット８１５を示す。有形メモリ８２０、８２５は、処理ユニットによってアクセス可能な、揮発性メモリ（たとえば、レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（たとえば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、またはこれら２つのなんらかの組合せであり得る。メモリ８２０、８２５は、処理ユニットによって実行するのに適したコンピュータ実行可能命令の形態で、本明細書に記載の１つまたは複数の技術革新を実装するソフトウェア８８０を記憶する。
【００７７】
[0086]  コンピューティングシステムは、追加の特徴を有することができる。たとえば、コンピューティングシステム８００は、ストレージ８４０と、１つまたは複数の入力デバイス８５０と、１つまたは複数の出力デバイス８６０と、１つまたは複数の通信接続部８７０とを含む。バス、コントローラ、またはネットワークなどの相互接続機構（図示せず）が、コンピューティングシステム８００の構成要素を相互接続する。典型的には、オペレーティングシステムソフトウェア（図示せず）が、コンピューティングシステム８００内で実行される他のソフトウェアのための動作環境を提供し、コンピューティングシステム８００の構成要素の活動を調整する。
【００７８】
[0087]  有形ストレージ８４０は、リムーバブルまたは非リムーバブルであり得、磁気ディスク、磁気テープもしくはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、または、情報を記憶するために使用され得、コンピューティングシステム８００内でアクセスされ得る任意の他の媒体を含む。ストレージ８４０は、本明細書で説明する１つまたは複数の技術革新を実装するソフトウェア８８０のための命令を記憶する。
【００７９】
[0088]  入力デバイス８５０は、キーボード、マウス、ペン、もしくはトラックボールなどのタッチ入力デバイス、音声入力デバイス、走査デバイス、または、コンピューティングシステム８００に入力を提供する別のデバイスであり得る。ビデオ符号化に対しては、入力デバイス８５０は、カメラ、ビデオカード、ＴＶチューナーカード、またはアナログ形式もしくはデジタル形式で入力されたビデオを受け入れる同様のデバイス、またはコンピューティングシステム８００にビデオサンプルを読み出すＣＤ−ＲＯＭもしくはＣＤ−ＲＷであり得る。出力デバイス８６０は、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、または、コンピューティングシステム８００からの出力を提供する別のデバイスであり得る。
【００８０】
[0089]  通信接続部８７０は、通信媒体を介して別のコンピューティングエンティティとの通信を可能にする。通信媒体は、変調データ信号において、コンピュータ実行可能命令、オーディオもしくはビデオ入力もしくは出力、または他のデータを伝達する。変調データ信号は、その特性のうちの１つまたは複数が信号内の情報を符号化するように設定または変更された信号である。例として、限定はしないが、通信媒体は、電気的キャリア、光学的キャリア、ＲＦキャリア、または他のキャリアを使用することができる。
【００８１】
[0090]  技術革新は、ターゲットの実プロセッサまたは仮想プロセッサ上のコンピューティングシステムで実行されるプログラムモジュールに含まれるようなコンピュータ実行可能命令の一般的な文脈で説明される場合がある。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、構成要素、データ構造などを含む。プログラムモジュールの機能は、様々な実施形態において望まれるように、組み合わされるか、またはプログラムモジュール間で分割され得る。プログラムモジュールのためのコンピュータ実行可能命令は、ローカルコンピューティングシステムまたは分散コンピューティングシステム内で実行され得る。
【００８２】
[0091]  「システム」および「デバイス」という用語は、本明細書では互換的に使用される。文脈が明確に別途指示しない限り、どちらの用語も、コンピューティングシステムまたはコンピューティングデバイスのタイプに対するいかなる制限も意味しない。一般に、コンピューティングシステムまたはコンピューティングデバイスは、ローカルであってもよく、または分散されてもよく、本明細書で説明する機能を実装するソフトウェアと専用ハードウェアおよび／または汎用ハードウェアとの任意の組合せを含むことができる。
【００８３】
[0092]
提示のため、詳細な説明は、コンピューティングシステムにおけるコンピュータ動作を説明するために「決定する」および「使用する」のような用語を使用する。これらの用語は、コンピュータによって実行される動作の高レベルの抽象化であり、人間によって実行される行為と混同されるべきではない。これらの用語に対応する実際のコンピュータ動作は、実施態様に応じて異なる。
【００８４】
[0093]  モバイルデバイス
図９は、全体として９０２に示す、様々な任意選択のハードウェア構成要素およびソフトウェア構成要素を含む例示的なモバイルデバイス９００を示すシステム図である。モバイルデバイス内の任意の構成要素９０２は、任意の他の構成要素と通信することができるが、説明の容易さのため、すべての接続が示されているというわけではない。モバイルデバイスは、様々なコンピューティングデバイス（たとえば、携帯電話、スマートフォン、ハンドヘルドコンピュータ、携帯情報端末（PDA）など）のいずれかであり得、セルラネットワーク、衛星ネットワーク、または他のネットワークなどの、１つまたは複数のモバイル通信ネットワークとのワイヤレス双方向通信を可能にすることができる。
【００８５】
[0094]  図示のモバイルデバイス９００は、信号コーディング、データ処理、入力／出力処理、電力制御、および／または他の機能などのタスクを実行するためのコントローラまたはプロセッサ９１０（たとえば、信号プロセッサ、マイクロプロセッサ、ＡＳＩＣ、または他の制御および処理論理回路）を含むことができる。オペレーティングシステム９１２は、構成要素９０２の割り当ておよび使用を制御することができ、デジタルパーソナルアシスタント１２０および１つまたは複数のアプリケーションプログラム９１４をサポートすることができる。アプリケーションプログラムは、一般的なモバイルコンピューティングアプリケーション（たとえば、電子メールアプリケーション、カレンダー、コンタクトマネージャ、ウェブブラウザ、メッセージングアプリケーション、動画アプリケーション、バンキングアプリケーション）、または任意の他のコンピューティングアプリケーションを含むことができる。アプリケーションプログラム９１４は、デジタルパーソナルアシスタント１２０によってヘッドレスに実行され得るタスクを有するアプリケーションを含むことができる。たとえば、タスクは、コマンドデータ構造１４０内に定義され得る。アプリケーションストアにアクセスするための機能９１３も、アプリケーションプログラム９１４を取得および更新するために使用され得る。
【００８６】
[0095]  図示のモバイルデバイス９００は、メモリ９２０を含むことができる。メモリ９２０は、非リムーバブルメモリ９２２および／またはリムーバブルメモリ９２４を含むことができる。非リムーバブルメモリ９２２は、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ハードディスク、または他の周知のメモリストレージ技術を含むことができる。リムーバブルメモリ９２４は、フラッシュメモリ、もしくは、ＧＳＭ通信システムにおいて周知の加入者識別モジュール（SIM）カード、または、「スマートカード」などの他の周知のメモリストレージ技術を含むことができる。メモリ９２０は、オペレーティングシステム９１２およびアプリケーション９１４を実行するためのデータおよび／またはコードを記憶するために使用され得る。例示的なデータは、ウェブページ、テキスト、画像、サウンドファイル、ビデオデータ、または、１つもしくは複数のワイヤードネットワークもしくはワイヤレスネットワークを介して１つもしくは複数のネットワークサーバもしくは他のデバイスに送られるおよび／もしくはそこから受信される他のデータセットを含むことができる。メモリ９２０は、国際移動体加入者識別番号（IMSI）などの加入者識別子と、国際移動体機器識別番号（IMEI）などの機器識別子とを記憶するために使用され得る。そのような識別子は、ユーザおよび機器を識別するためにネットワークサーバに送信され得る。
【００８７】
[0096]  モバイルデバイス９００は、タッチスクリーン９３２、マイクロホン９３４、カメラ９３６、物理キーボード９３８、および／またはトラックボール９４０などの１つまたは複数の入力デバイス９３０と、スピーカ９５２およびディスプレイ９５４などの１つまたは複数の出力デバイス９５０とをサポートすることができる。他の可能な出力デバイス（図示せず）は、圧電式または他の触覚出力デバイスを含むことができる。いくつかのデバイスは、２つ以上の入力／出力機能を提供することができる。たとえば、タッチスクリーン９３２およびディスプレイ９５４は、単一の入力／出力デバイス内に結合され得る。
【００８８】
[0097]  入力デバイス９３０は、ナチュラルユーザインターフェース（NUI）を含むことができる。ＮＵＩは、ユーザが、マウス、キーボード、リモートコントロールなどの入力デバイスによって課せられる人工的な制約がない「自然な」方法でデバイスと対話することを可能にする任意のインターフェース技術である。ＮＵＩ方法の例は、発話認識、タッチおよびスタイラス認識、画面上と画面に隣接するものの両方のジェスチャ認識、エアジェスチャ、頭および目の追跡、音声および発話、ビジョン、タッチ、ジェスチャ、ならびに機械インテリジェンスに依存するものを含む。ＮＵＩの他の例は、そのすべてがより自然なインターフェースを提供する、加速度計／ジャイロスコープを使用するモーションジェスチャ検出、顔認識、３Ｄディスプレイ、頭と目と視線の追跡、没入型拡張現実および仮想現実システム、ならびに、電場検出電極を使用して脳活動を感知するための技術（ＥＥＧおよび関連する方法）を含む。したがって、１つの具体的な例では、オペレーティングシステム９１２またはアプリケーション９１４は、ユーザが音声コマンドを介してデバイス９００を操作することを可能にする音声ユーザインターフェースの一部として発話認識ソフトウェアを備えることができる。さらに、デバイス９００は、たとえば、ゲームアプリケーションに入力を提供するためにジェスチャを検出および解釈して、ユーザの空間ジェスチャを介するユーザ対話を可能にする入力デバイスおよびソフトウェアを備えることができる。
【００８９】
[0098]  ワイヤレスモデム９６０は、アンテナ（図示せず）に結合され得、当該技術分野ではよく理解されるように、プロセッサ９１０と外部デバイスとの間の双方向通信をサポートすることができる。モデム９６０は、全体として示され、モバイル通信ネットワーク９０４と通信するためのセルラネットワークおよび／または他の無線ベースのモデム（たとえば、Ｂｌｕｅｔｏｏｔｈ（登録商標）９６４またはＷｉ−Ｆｉ９６２）を含むことができる。ワイヤレスモデム９６０は、典型的には、単一のセルラネットワーク内、セルラネットワーク間、またはモバイルデバイスと公衆交換電話網（PSTN）との間の、データ通信および音声通信のためのＧＳＭネットワークなどの、１つまたは複数のセルラネットワークと通信するように構成される。
【００９０】
[0099]  モバイルデバイスは、少なくとも１つの入力／出力ポート９８０、電源９８２、全地球測位システム（GPS）受信機などの衛星ナビゲーションシステム受信機９８４、加速度計９８６、ならびに／または、ＵＳＢポート、ＩＥＥＥ１３９４（FireWire）ポート、および／もしくはRS-232ポートであり得る物理コネクタ９９０をさらに含むことができる。任意の構成要素が除去され得、他の構成要素が追加され得るので、図示の構成要素９０２は、必須ではなく、または包括的ではない。
【００９１】
[0100]  クラウドサポート環境
図１０は、説明した実施形態、技法、および技術が実装され得る適切なクラウドサポート環境１０００の一般化された例を示す。例示的な環境１０００では、様々なタイプのサービス（たとえば、コンピューティングサービス）が、クラウド１０１０によって提供される。たとえば、クラウド１０１０は、インターネットなどのネットワークを介して接続された様々なタイプのユーザおよびデバイスにクラウドベースのサービスを提供する、中心に配置されるか、または分散され得るコンピューティングデバイスの集合を備えることができる。実施態様環境１０００は、コンピューティングタスクを達成するために異なる方法で使用され得る。たとえば、いくつかのタスク（たとえば、ユーザ入力を処理すること、およびユーザインターフェースを提示すること）は、ローカルコンピューティングデバイス（たとえば、接続されたデバイス１０３０、１０４０、１０５０）上で実行され得、他のタスク（たとえば、後続の処理において使用されるべきデータの記憶）は、クラウド１０１０において実行され得る。
【００９２】
[0101]  例示的な環境１０００では、クラウド１０１０は、様々な画面機能を有する接続されたデバイス１０３０、１０４０、１０５０のためのサービスを提供する。接続されたデバイス１０３０は、コンピュータ画面１０３５（たとえば、中間サイズの画面）を有するデバイスを表す。たとえば、接続されたデバイス１０３０は、デスクトップコンピュータ、ラップトップ、ノートブック、ネットブックなどのパーソナルコンピュータであり得る。接続されたデバイス１０４０は、モバイルデバイス画面１０４５（たとえば、小さいサイズの画面）を有するデバイスを表す。たとえば、接続されたデバイス１０４０は、携帯電話、スマートフォン、携帯情報端末、タブレットコンピュータなどであり得る。接続されたデバイス１０５０は、大きい画面１０５５を有するデバイスを表す。たとえば、接続されたデバイス１０５０は、テレビ画面（たとえば、スマートテレビ）またはテレビに接続された別のデバイス（たとえば、セットトップボックスまたはゲームコンソール）などであり得る。接続されたデバイス１０３０、１０４０、１０５０のうちの１つまたは複数は、タッチスクリーン機能を含むことができる。タッチスクリーンは、異なる方法において入力を受け入れることができる。たとえば、容量性タッチスクリーンは、物体（たとえば、指先またはスタイラス）が表面を横切って流れる電流を歪ませるか、または中断するとき、タッチ入力を検出する。別の例として、タッチスクリーンは、光センサからのビームが中断されたときにタッチ入力を検出するために光センサを使用することができる。一部のタッチスクリーンによって入力が検出されるために、画面の表面との物理的接触は必要ない。画面機能を持たないデバイスも、例示的な環境１０００において使用され得る。たとえば、クラウド１０１０は、ディスプレイを持たない１つまたは複数のコンピュータ（たとえば、サーバコンピュータ）のためのサービスを提供することができる。
【００９３】
[0102]  サービスは、サービスプロバイダ１０２０を介して、またはオンラインサービスの他のプロバイダ（図示せず）を介してクラウド１０１０によって提供され得る。たとえば、クラウドサービスは、特定の接続されたデバイス（たとえば、接続されたデバイス１０３０、１０４０、１０５０）の画面サイズ、表示機能、および／またはタッチスクリーン機能にカスタマイズされ得る。
【００９４】
[0103]  例示的な環境１０００では、クラウド１０１０は、サービスプロバイダ１０２０を少なくとも部分的に使用して、本明細書で説明する技術および解決策を様々な接続されたデバイス１０３０、１０４０、１０５０に提供する。たとえば、サービスプロバイダ１０２０は、様々なクラウドベースのサービスのための集中化した解決策を提供することができる。サービスプロバイダ１０２０は、ユーザおよび／またはデバイスのための（たとえば、接続されたデバイス１０３０、１０４０、１０５０および／またはそれらのそれぞれのユーザのための）サービス加入を管理することができる。
【００９５】
[0104]  例示的な実施態様
開示された方法のうちのいくつかの動作は、便利な提示のために特定の連続した順序で説明されているが、特定の順序付けが以下の特定の言語によって要求されない限り、この説明の方法は、再配列を包含することを理解すべきである。たとえば、順次記載された動作は、場合によっては、再配列されるか、または同時に実行され得る。さらに、簡略化のために、添付図面は、開示された方法が他の方法と共に使用され得る様々な方法を示していない場合がある。
【００９６】
[0105]  開示された方法のいずれもが、１つまたは複数のコンピュータ可読記憶媒体に記憶され、コンピューティングデバイス（たとえば、スマートフォン、またはコンピューティングハードウェアを含む他のモバイルデバイスを含む任意の利用可能なコンピューティングデバイス）上で実行されるコンピュータ実行可能命令またはコンピュータプログラム製品として実装され得る。コンピュータ可読記憶媒体は、コンピューティング環境内でアクセスされ得る任意の利用可能な有形媒体（たとえば、１つまたは複数のＤＶＤもしくはＣＤなどの光媒体ディスク、揮発性メモリ構成要素（ＤＲＡＭもしくはＳＲＡＭなど）、または不揮発性メモリ構成要素（フラッシュメモリもしくはハードドライブなど））である。例として、図８を参照すると、コンピュータ可読記憶媒体は、メモリ８２０および８２５と、ストレージ８４０とを含む。例として、図９を参照すると、コンピュータ可読記憶媒体は、メモリおよびストレージ９２０、９２２、および９２４を含む。コンピュータ可読記憶媒体という用語は、信号および搬送波を含まない。加えて、コンピュータ可読記憶媒体という用語は、通信接続（たとえば、８７０、９６０、９６２、および９６４）を含まない。
【００９７】
[0106]  開示した技法を実施するためのコンピュータ可読命令のいずれも、ならびに、開示された実施形態の実施中に作成および使用される任意のデータは、１つまたは複数のコンピュータ可読記憶媒体に記憶され得る。コンピュータ実行可能命令は、たとえば、専用ソフトウェアアプリケーション、または、ウェブブラウザもしくは他のソフトウェアアプリケーション（リモートコンピューティングアプリケーションなど）を介してアクセスまたはダウンロードされるソフトウェアアプリケーションの一部であり得る。そのようなソフトウェアは、たとえば、単一のローカルコンピュータ（たとえば、任意の適切な市販のコンピュータ）上で、または（たとえば、インターネット、ワイドエリアネットワーク、ローカルエリアネットワーク、クライアント−サーバ・ネットワーク（クラウドコンピューティングネットワークなど）、もしくは他のそのようなネットワークを介して）１つもしくは複数のネットワークコンピュータを使用するネットワーク環境内で実行され得る。
【００９８】
[0107]  明確にするために、ソフトウェアベースの実施態様の特定の選択された態様のみについて説明する。当該技術分野で周知の他の詳細は、省略する。たとえば、開示された技術は、どの特定のコンピュータ言語またはプログラムにも限定されない。たとえば、開示された技術は、Ｃ＋＋、Ｊａｖａ、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ、Ａｄｏｂｅ  Ｆｌａｓｈ、または任意の他の適切なプログラミング言語で記述されたソフトウェアによって実装され得る。同様に、開示された技術は、どのような特定のコンピュータまたはハードウェアのタイプにも限定されない。適切なコンピュータおよびハードウェアの特定の詳細は、周知であり、本開示において詳細に説明する必要はない。
【００９９】
[0108]  さらに、（たとえば、開示された方法のいずれかをコンピュータに実行させるためのコンピュータ実行可能命令を備える）ソフトウェアベースの実施形態のいずれも、適切な通信手段を介してアップロード、ダウンロード、または遠隔アクセスされ得る。そのような適切な通信手段は、たとえば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル（光ファイバケーブルを含む）、磁気通信、電磁通信（ＲＦ通信、マイクロ波通信、および赤外線通信を含む）、電子通信、または他のそのような通信手段を含む。
【０１００】
[0109]  開示された方法、装置、およびシステムは、どのようにも制限するものとして解釈されるべきではない。代わりに、本開示は、単独で、ならびに互いとの様々な組合せおよび下位組合せで、様々な開示された実施形態のすべての新規かつ自明でない特徴および態様に向けられている。開示された方法、装置、およびシステムは、どのような特定の態様またはその組合せにも限定されず、開示された実施形態は、どのような１つまたは複数の特定の利点が存在することも、または問題が解決されることも要求しない。
【０１０１】
[0110]  いずれの例からの技術も、任意の１つまたは複数の他の例において説明された技術と組み合わされ得る。開示された技術の原理が適用され得る多くの可能な実施形態を考慮して、例示された実施形態は、開示された技術の例であり、開示された技術の範囲に対する限定としてとられるべきではないことを認識すべきである。
【図１】
0006666920.tif 000002
【図２】
0006666920.tif 000003
【図３】
0006666920.tif 000004
【図４】
0006666920.tif 000005
【図５】
0006666920.tif 000006
【図６】
0006666920.tif 000007
【図７】
0006666920.tif 000008
【図８】
0006666920.tif 000009
【図９】
0006666920.tif 000010
【図１０】
0006666920.tif 000011