(58)【調査した分野】(Int.Cl.,DB名)
以前にユーザデバイス上にインストールされたソフトウェアアプリケーションのための新しいボイスアクションを確立するためのコンピュータに実装される方法であって、ボイスアクションが、前記ソフトウェアアプリケーション内で実行される1つまたは複数の動作を定義し、前記方法が、前記ユーザデバイスとは異なるボイスアクションシステム内で実行され、
前記ボイスアクションシステムによって、前記ボイスアクションシステムとは異なる前記ソフトウェアアプリケーションのための新しいボイスアクションを指定するデータを受信するステップであって、前記データが、(1)前記新しいボイスアクションを実行するための1つまたは複数の動作と、(2)前記新しいボイスアクションをトリガするための1つまたは複数のトリガ用語と、(3)前記新しいボイスアクションがイネーブルにされたときの前記ユーザデバイスのステータスまたは前記ソフトウェアアプリケーションのステータスを指定するコンテキストとを含む、ステップと、
前記ボイスアクションシステムによって、少なくとも前記受信されたデータに基づいて、前記ソフトウェアアプリケーションのためのボイスアクション受動的データ構造を生成するステップであって、前記ボイスアクション受動的データ構造が、前記ソフトウェアアプリケーションによって受信されたときに、前記ソフトウェアアプリケーションが前記新しいボイスアクションの前記1つまたは複数の動作を実行することを要求するデータを含む、ステップと、
前記ボイスアクションシステムによって、前記ボイスアクション受動的データ構造を前記コンテキストおよび前記新しいボイスアクションのための前記1つまたは複数のトリガ用語と関連付けるステップと
を含み、
前記ボイスアクションシステムが、
ユーザデバイスから、(1)前記ソフトウェアアプリケーションをインストールされた前記ユーザデバイスによって取得されたユーザ発話と、(2)前記ソフトウェアアプリケーションをインストールされた前記ユーザデバイスのステータスまたは前記ユーザデバイス上にインストールされた前記ソフトウェアアプリケーションのステータスを示すコンテキスト情報との指示を受信し、
(1)前記ユーザ発話のトランスクリプションが、前記ボイスアクション受動的データ構造に関連付けられた前記1つまたは複数のトリガ用語に対応すること、および(2)前記コンテキスト情報が前記新しいボイスアクションのための前記コンテキストを満たすことを判定し、
前記判定に応答して、前記ボイスアクション受動的データ構造を前記ユーザデバイスに提供し、それにより前記ユーザデバイス上にインストールされた前記ソフトウェアアプリケーションが前記新しいボイスアクションの前記1つまたは複数の動作を実行することを要求する
ように構成される、コンピュータに実装される方法。
前記コンテキストが、前記ソフトウェアアプリケーションが前記ソフトウェアアプリケーションがインストールされたデバイスのフォアグラウンドで動作していることを指定する、請求項1に記載のコンピュータに実装される方法。
前記コンテキストが、前記ソフトウェアアプリケーションが前記ソフトウェアアプリケーションがインストールされたデバイスのバックグラウンドで動作していることを指定する、請求項1に記載のコンピュータに実装される方法。
前記コンテキストが、前記ソフトウェアアプリケーションが実行している特定のアクティビティが特定のアクティビティ状態であることを指定する、請求項1に記載のコンピュータに実装される方法。
特定のデバイスによって取得されたユーザ発話のトランスクリプションが、前記ボイスアクション受動的データ構造に関連付けられた前記1つまたは複数のトリガ用語に対応すること、および前記コンテキスト情報が、前記ボイスアクション受動的データ構造に関連付けられた前記コンテキストを満たすことを判定したことに応答して、前記ボイスアクションシステムによって前記特定のデバイスに、前記ボイスアクション受動的データ構造を提供し、それにより前記特定のデバイス上にインストールされた前記ソフトウェアアプリケーションが前記新しいボイスアクションの前記1つまたは複数の動作を実行することを要求するステップ
を含む、請求項1に記載のコンピュータに実装される方法。
前記特定のデバイスの前記ステータスまたは前記特定のデバイス上にインストールされた前記ソフトウェアアプリケーションの前記ステータスを示す前記コンテキスト情報を受信するステップが、
前記ボイスアクションシステムによって前記特定のデバイスに、特定のコンテキスト情報の要求を提供するステップと、
前記要求に応答して前記特定のコンテキスト情報を受信するステップと
を含む、請求項6に記載のコンピュータに実装される方法。
前記コンテキスト情報が第2のボイスアクションのためのコンテキストを満たすこと、および前記ユーザ発話の前記トランスクリプションが、前記第2のボイスアクションのためのボイスアクション受動的データ構造に関連付けられた前記1つまたは複数のトリガ用語に対応することを判定するステップであって、前記第2のボイスアクションのための前記ボイスアクション受動的データ構造が、前記第2のボイスアクションを実行するための1つまたは複数の動作を指定する、ステップと、
前記判定に応答して、前記新しいボイスアクションおよび前記第2のボイスアクションの中からボイスアクションを選択するステップと、
前記ボイスアクションシステムによって前記特定のデバイスに、前記選択されたボイスアクションに関連付けられた前記ボイスアクション受動的データ構造を提供し、それにより前記特定のデバイス上にインストールされた前記ソフトウェアアプリケーションが、前記選択されたボイスアクションの前記1つまたは複数の動作を実行することを要求するステップと
を含む、請求項6に記載のコンピュータに実装される方法。
前記新しいボイスアクションおよび前記第2のボイスアクションの中から前記選択されたボイスアクションを選択するステップが、前記新しいボイスアクションまたは前記第2のボイスアクションのうちの1つのユーザ選択を示すデータを受信したことに応答して、前記選択されたボイスアクションを選択するステップを含む、請求項8に記載のコンピュータに実装される方法。
前記新しいボイスアクションおよび前記第2のボイスアクションの中から前記選択されたボイスアクションを選択するステップが、前記選択されたボイスアクションに関連付けられた前記ソフトウェアアプリケーションがフォアグラウンドで動作していることを判定したことに応答して、前記選択されたボイスアクションを選択するステップを含む、請求項8に記載のコンピュータに実装される方法。
前記ソフトウェアアプリケーションのための前記ボイスアクション受動的データ構造を生成するステップが、前記新しいボイスアクションの前記1つまたは複数の動作が前記ソフトウェアアプリケーションによって実行可能であることを判定するステップを含む、請求項1に記載のコンピュータに実装される方法。
前記ソフトウェアアプリケーションをインストールされた特定のデバイスによって取得されたユーザ発話のトランスクリプションが、前記ボイスアクション受動的データ構造に関連付けられた前記1つまたは複数のトリガ用語に類似していることを判定するステップと、
前記判定に応答して、前記ボイスアクションシステムによって前記特定のデバイスに、前記ユーザ発話が前記1つまたは複数のトリガ用語を指定したかどうか、または前記ソフトウェアアプリケーションに前記新しいボイスアクションを実行させることが意図されたかどうかを確認するユーザ入力の要求を示すデータを提供するステップと、
前記要求に応答して、前記ボイスアクションシステムによって前記特定のデバイスから、確認を示すデータを受信するステップと、
前記確認を示す前記データを受信したことに応答して、前記ボイスアクションシステムによって前記特定のデバイスに、ボイスアクション受動的データ構造を提供し、それにより前記特定のデバイス上にインストールされた前記ソフトウェアアプリケーションが前記新しいボイスアクションの前記1つまたは複数の動作を実行することを要求するステップと
を含む、請求項1に記載のコンピュータに実装される方法。
前記ボイスアクションシステムによって前記ソフトウェアアプリケーションに関連付けられた開発者から、前記ソフトウェアアプリケーションのための前記新しいボイスアクションを配布する要求を受信するステップと、
前記要求に応答して、前記要求に応答した前記ソフトウェアアプリケーションのための前記新しいボイスアクションを配布するステップであって、前記ソフトウェアアプリケーションのための前記新しいボイスアクションをイネーブルにする、ステップと
を含む、請求項1に記載のコンピュータに実装される方法。
前記ボイスアクションシステムによって前記ソフトウェアアプリケーションに関連付けられた開発者から、前記ソフトウェアアプリケーションのための前記新しいボイスアクションの配布を取り消す要求を受信するステップと、
前記要求に応答して、前記要求に応答した前記ソフトウェアアプリケーションのための前記新しいボイスアクションの配布を無効にするステップであって、前記ソフトウェアアプリケーションのための前記新しいボイスアクションをディスエーブルにする、ステップと
を含む、請求項1に記載のコンピュータに実装される方法。
前記ボイスアクションシステムによって前記ソフトウェアアプリケーションに関連付けられた開発者から、前記新しいボイスアクションのテストをイネーブルにする要求を受信するステップであって、前記要求が、前記新しいボイスアクションがイネーブルにされるべき1つまたは複数のデバイスを指定する、受信するステップと、
前記要求に応答して、前記1つまたは複数の指定されたデバイスのための前記新しいボイスアクションをイネーブルにするステップであって、前記新しいボイスアクションが、前記指定されたデバイス内に含まれないデバイスに対してディスエーブルにされる、イネーブルにするステップと
を含む、請求項1に記載のコンピュータに実装される方法。
前記ボイスアクションシステムによって、前記ソフトウェアアプリケーションをインストールされた特定のデバイスによって取得されたユーザ発話の指示を受信するステップと、
前記ボイスアクションシステムによって、前記ユーザ発話のトランスクリプションが、前記ボイスアクション受動的データ構造に関連付けられた前記1つまたは複数のトリガ用語に対応することを判定するステップと、
前記判定に応答して、前記ボイスアクションシステムによって前記特定のデバイスに、前記ボイスアクション受動的データ構造を提供し、それにより前記特定のデバイス上にインストールされた前記ソフトウェアアプリケーションが前記新しいボイスアクションの前記1つまたは複数の動作を実行することを要求するステップと
を含む、請求項1に記載のコンピュータに実装される方法。
【発明を実施するための形態】
【0018】
さまざまな図面における同じ参照符号は、同じ要素を示す。
【0019】
図1は、ボイスアクションシステム100の一例を示す。ボイスアクションシステム100は、それによって以前に他のユーザのデバイス上にインストールされたアプリケーションのための新しいボイスアクションをアプリケーション開発者が確立することができるプラットフォームおよびサービスを提供する。その後、アプリケーションをデバイス上にインストールさせたアプリケーションのユーザは、新しいボイスアクションによって指定された特定の動作をアプリケーションに実行させるために、ボイスコマンドを使用することができる。
【0020】
ボイスアクションシステム100は、アプリケーション開発者101a〜101nによって提示された新しいボイスアクションを定義するデータを端末102a〜102nから受信し、この新しいボイスアクションは、1つまたは複数の異なるアプリケーションのためのものである。ボイスアクションシステム100は、各新しいボイスアクションが妥当なボイスアクションであるかどうかを判定することができる。妥当であると判定された各新しいボイスアクションは、新しいボイスアクションに対応する意向を生成するために帰納可能であり、新しいボイスアクションに対応する意向は、ボイスアクションシステム100のアプリケーションボイスアクションデータベース110に記憶可能である。
【0021】
たとえば、ボイスアクションシステム100は、新しいボイスアクションを定義するデータを受信して検証する検証エンジンを有してよい。データを検証することは、ボイスアクションを定義するデータのフォーマッティングは要件に適合することを判定することと、新しいボイスアクションは指定されたアプリケーションに適合することを判定することと、またはアプリケーション開発者101a〜101nから受信されたデータに基づいてボイスアクションが確立可能であることを判定することとを含む。ボイスアクションシステム100の指示エンジンは、新しいボイスアクションを定義する検証されたデータを受信することができ、新しいボイスアクションに対応する意向を生成するようにデータに帰納することができる。次いで、意向は、アプリケーションボイスアクションデータベース110に記憶可能である。
【0022】
アプリケーションボイスアクションデータベース110は、多数の異なるソフトウェアアプリケーション内で実行可能であるアクティビティまたはアクションに関係するボイスアクションを記憶することができる。アプリケーションボイスアクションデータベース110内に含まれるボイスアクションは、アプリケーションが構築されたときにアプリケーション開発者101a〜101nによって提示された内蔵ボイスアクション、ならびにアプリケーションによってサポートされる動作のためのアプリケーションが構築された後にアプリケーション開発者101a〜101nによって提示されたボイスアクションを含んでもよい。
【0023】
ボイスアクションはまた、オペレーティングシステムによってデフォルトでサポートされるアプリケーション固有ボイスアクションを含むことができる。これらのあらかじめサポートされているボイスアクションは、アプリケーション開発者101a〜101nによってボイスアクションシステム100に提示される必要なくアプリケーション内で実施されることが可能であるボイスアクションであってもよい。たとえば、フォアグラウンドで実行されているタスクまたはアクティビティを終了するためのボイスアクション「アプリケーションの終了(Exit application)」は、任意のアプリケーションに自動的に利用可能であってもよく、アプリケーション開発者101a〜101nが「アプリケーションの終了」ボイスアクションを定義するために情報をボイスアクションシステム100に提示する必要なしに、各アプリケーションに対するアプリケーションボイスアクションデータベース110内に含まれてもよい。
【0024】
アプリケーションボイスアクションデータベース110に加えて、ボイスアクションシステム100は、特定のアプリケーションまたはコンテキストに関連付けられていないボイスアクションを記憶するオペレーティングシステム(OS)ボイスアクションデータベース120を含むことができる。たとえば、デバイスをロック状態に入らせるボイスアクション「電話機をロック(Lock phone)」は、OSボイスアクションデータベース120内で特定のアプリケーションに関連付けられていないボイスアクションと指定される、または一般にアクセス可能な、すなわち、「デバイスをロック(Lock device)」ボイスアクションが検出されたときのデバイスのステータスに関係のないボイスアクションであってよい。一般に、OSボイスアクションデータベース120において記憶されるボイスアクションは、ユーザデバイス動作環境に対して汎用的であり、サードパーティアプリケーション開発者101a〜101nによって生成される特定のアプリケーションに対しては汎用的でないので、OSボイスアクションデータベース120に記憶されるボイスアクションは、ボイスアクションを定義するアプリケーション開発者101a〜101nに基づいて生成されないボイスアクションである。
【0025】
ボイスアクションシステム100は、ユーザデバイス104を有するユーザ105が、ユーザデバイス104またはユーザデバイス104上で動作しているアプリケーションによってアクションを実行させるために、口頭ボイス入力をユーザデバイス104に提供することを可能にする。たとえば、ユーザデバイス104を有するユーザ105は、メディアプレイヤーアプリケーションをユーザデバイス104上で実行させ、メディアプレイヤーアプリケーションがユーザデバイス104のフォアグラウンドで実行されている間、口頭入力「次を再生」を提供する。
【0026】
口頭入力およびユーザデバイス104上で実行されているアプリケーションのステータスを含むユーザデバイス104のステータスを指定するコンテキスト情報に対応するオーディオデータが、ボイスアクションシステム100に送信される。具体的には、
図1に示される例の場合、ボイス入力「次を再生」に対応するオーディオデータは、ボイスアクションシステム100の音声認識エンジン130によって受信され、ユーザデバイス104のステータスを示すコンテキスト情報は、ボイスアクションシステム100のコンテキスト解析エンジン140によって受信される。コンテキスト情報は、メディアプレイヤーアプリケーションがユーザデバイス104のフォアグラウンドで実行されていること、メディアプレイヤーアプリケーションが現在オーディオプレイヤーモードであることを示してもよく、ユーザデバイス104およびユーザデバイス104上にインストールされたアプリケーションのステータスについての他の情報を示してもよい。
【0027】
音声認識エンジン130は、ボイス入力に対応するオーディオデータを受信し、ボイス入力のトランスクリプションを生成して、そのボイス入力のトランスクリプションをボイスアクション選択器150に提供する。コンテキスト解析エンジン140は、コンテキスト情報をユーザデバイス104から受信し、コンテキスト情報を処理して、関連するコンテキスト情報を判定する。たとえば、コンテキスト解析エンジン140は、コンテキスト情報を解析して、ユーザデバイス104上にインストールされたアプリケーションを識別し、それらのアプリケーションの各々に関連付けられたメタデータは、アプリケーションに利用可能なボイスアクションおよびボイスアクションのうちのどれが所与のデバイスステータスに対してイネーブルにされてもよいかを判定することに関連のあるコンテキスト情報を指定してもよい。いくつかの例では、解析に基づいて、コンテキスト解析エンジン140は、どのボイスアクションがユーザデバイス104の特定のステータスに対してイネーブルにされるべきかを識別するためにさらなるコンテキスト情報が必要であることを判定してもよく、そのため、コンテキスト解析エンジン140は、さらなるコンテキスト情報をユーザデバイス104に要求してもよい。コンテキスト解析エンジン140は、処理されたコンテキスト情報をボイスアクション選択器150にフォワーディングする。
【0028】
たとえば、
図1に示されるように、音声認識エンジン130は、ボイス入力「次を再生」に対応するオーディオデータを受信してよく、ボイス入力のトランスクリプションを取得してもよい。コンテキスト解析エンジン140は、メディアプレイヤーアプリケーションがフォアグラウンドで実行されていること、メディアプレイヤーアプリケーションがオーディオプレイヤーモードで動作していることを指定し、ユーザデバイス104についての他の情報を指定するコンテキスト情報をユーザデバイス104から受信する。たとえば、コンテキスト情報は、ソーシャルネットワークアプリケーションがユーザデバイス104のバックグラウンドで動作していること、およびユーザデバイス104のバッテリ寿命が現在50%であることも示してもよい。コンテキスト解析エンジン140は、ユーザデバイス104がメディアプレイヤーとソーシャルネットワークアプリケーションの両方をインストールさせたことを示す情報を受信してもよく、メディアプレイヤーアプリケーションもソーシャルネットワークアプリケーションも、デバイスバッテリ寿命を示すコンテキスト情報に基づいて、ボイスアクションをイネーブルにしないことを判定してもよい。したがって、コンテキスト解析エンジン140は、メディアプレイヤーアプリケーションがユーザデバイス104のフォアグラウンドで動作していること、メディアプレイヤーアプリケーションがオーディオプレイヤーモードであること、およびソーシャルネットワークアプリケーションがユーザデバイス104のバックグラウンドで動作していることのみを示すように、コンテキスト情報をフィルタリングしてもよい。次いで、フィルタリングされたコンテキスト情報およびボイス入力「次を再生」のトランスクリプションが、ボイスアクション選択器150に提供されてもよい。
【0029】
ボイスアクション選択器150は、口頭入力のトランスクリプションを音声認識エンジン130から、処理されたコンテキスト情報を含むコンテキストをコンテキスト解析エンジン140から受信する。ボイスアクション選択器150は、トランスクリプションおよびコンテキストを使用して、ユーザデバイス104においてトリガする特定のボイスアクションに関連付けられた特定の意向を識別する。たとえば、ボイスアクション選択器150は、アプリケーションボイスアクションデータベース110およびOSボイスアクションデータベース120にアクセスして、ユーザデバイス104の現在のコンテキストに対してイネーブルにされたボイスアクション候補のセットを識別することができる。ボイスアクション候補のセットを識別することは、ボイスアクション選択器150によって受信されたコンテキストに合致するコンテキストを指定するアプリケーションボイスアクションデータベース110またはOSボイスアクションデータベース120において記憶された意向のセットを識別することを含むことができる。
【0030】
この示されたコンテキストに対してイネーブルにされたボイスアクション候補のセットを識別して、ボイスアクション選択器150は、ボイス入力のトランスクリプションをイネーブルにされたボイスアクションの各々に関連付けられた1つまたは複数のトリガフレーズと比較することができる。一般に、トリガフレーズは、1つまたは複数のトリガ用語を含むことができ、ボイスアクションの識別子として動作し、したがって、特定のトリガフレーズの1つまたは複数の用語の検出は、特定のトリガフレーズに対応するボイスアクションの識別およびトリガリングをもたらす。たとえば、ボイスアクション選択器150は、トランスクリプションをイネーブルにされたボイスアクションの意向に関連付けられたそれぞれのトリガフレーズと比較することができる。ボイスアクション選択器150は、トランスクリプションが、特定のボイスアクションに関連付けられた意向によって指定されたトリガ用語に合致することを判定したことに基づいて、特定のボイスアクションのための特定の意向を識別する。
【0031】
たとえば、ボイスアクション選択器150は、ボイス入力「次を再生」のトランスクリプションおよびユーザデバイス104のためのコンテキストを受信することができ、受信したコンテキストを使用して、ユーザデバイス104において開始することになるボイスアクション候補、すなわち、ユーザデバイス104の現在のステータスに基づいてユーザデバイス104において開始可能なボイスアクションを識別することができる。ユーザデバイス104のコンテキストのためのボイスアクション候補のセットを判定した後、ボイスアクション選択器150は、ボイス入力「次を再生」のトランスクリプションをボイスアクション候補の意向によって指定されたトリガフレーズと比較する。ボイスアクション選択器150は、トランスクリプション「次を再生」が、メディアプレイヤーアプリケーションのための「次を再生」ボイスアクションの意向によって指定されたトリガフレーズに合致することを判定することができる。
【0032】
トランスクリプションは、少なくともトランスクリプションの一部分がトリガフレーズの1つまたは複数の用語に合致することを判定したことに基づいて、トリガフレーズに合致すると識別される。たとえば、トランスクリプションとトリガフレーズの合致は、トランスクリプションの用語の各々がトリガフレーズの用語の各々に合致することに基づいて識別されてもよい。いくつかの実装形態では、合致は、トランスクリプションの用語の一部がトリガフレーズの用語に合致することを判定したことに基づいて、識別されてもよい。たとえば、トランスクリプションは、トリガフレーズの用語のうちのいくつかがトランスクリプションにない場合、トランスクリプションがトリガフレーズの用語に加えて用語を含む場合、またはトランスクリプションの1つもしくは複数の用語がトリガフレーズの用語とは異なる場合でさえ、トリガフレーズに合致してもよい。したがって、「新しい電子メール(New email)」、「新しい電子メールの送信(Send new email)」、または「新しい電子メールの開封(Open up new email)」トランスクリプションの各々は、トランスクリプションの各々はトリガフレーズに正確に合致するのに失敗しなかったにもかかわらず、「新しい電子メールを開く(Open new email)」トリガフレーズに合致すると識別されてもよい。いくつかの例では、トランスクリプションが、トリガフレーズによって指定された順序と異なる順序でトリガフレーズの用語のうちのいくつかまたはすべてを含む場合、トランスクリプションは、トリガフレーズに合致すると識別されてもよい。たとえば、トランスクリプション「電話機をロック」は、「電話機のロック(Phone lock)」トリガフレーズに合致すると識別されてもよい。いくつかの例では、トランスクリプションは、トランスクリプションがトリガフレーズの用語に関する1つまたは複数の類義語または代替用語を含むことを判定したことに基づいて、トリガフレーズに合致すると識別されてもよい。したがって、「下書き(draft)」は「書く(write)」の類義語であり、「開く(open)」は「書く」に関する代替用語と識別されることに基づいて、トランスクリプション「新しい電子メールを下書き(Draft new email)」または「新しい電子メールを開く」は、「新しい電子メールを書く(Write new email)」トリガフレーズに合致すると識別されてもよい。
【0033】
特定のボイスアクションを識別したので、ボイスアクション選択器150は、特定のボイスアクションに関連付けられたアクティビティまたはアクションを開始させるアクショントリガデータをユーザデバイス104に提供する。そうするために、ボイスアクション選択器150は、選択されたボイスアクションに関連付けられたアクションまたはアクティビティを実行するようにユーザデバイス104を制御するための情報を取得することができる。いくつかの例では、選択されたボイスアクションに関連付けられたアクションまたはアクティビティを実行するようにユーザデバイス104を制御することは、選択されたボイスアクションの意向を始動することを含むことができる。選択されたボイスアクションの意向を始動することによって、選択されたボイスアクションに関連付けられたアクティビティまたはアクションを開始するための情報が、ユーザデバイス104に提供させられてもよい。
【0034】
たとえば、選択されたボイスアクションのための意向は、ボイスアクションに関連付けられたアクションまたはアクティビティをボイスアクションに関連付けられたアプリケーションによって実行させるデータを含むことができる。選択された意向は、ユーザデバイス104に送信可能であり、したがって、ユーザデバイス104による意向の受信は、要求として機能することができる、またはボイスアクションに関連付けられたアクションまたはアクティビティの実行をトリガすることができる。あるいは、ボイスアクション選択器150は、選択されたボイスアクションをユーザデバイス104において実行させるアクショントリガデータとして動作するための他のデータを決定することができ、情報をユーザデバイス104に送信することができる。たとえば、意向は、ボイスアクションを実行するためにユーザデバイス104によって実行されることになるアクションまたはアクティビティを識別するのみであってもよく、ボイスアクション選択器150は、ボイスアクションに関連付けられたアクションまたはアクティビティを実行するようにユーザデバイス104上のアプリケーションを制御できるアクショントリガデータを決定することができる。決定されたアクショントリガデータは、アクショントリガデータが、ボイスアクションに関連付けられたアクションまたはアクティビティを実行させるように、ユーザデバイス104に送信可能である。
【0035】
たとえば、「次を再生」ボイスアクションをボイスアクション候補のセットの中から選択した後、ボイスアクション選択器150は、「次を再生」ボイスアクションのための意向をユーザデバイス104に送信する、または次の歌にスキップするようにユーザデバイス104上で実行されているメディアプレイヤーアプリケーションを制御するための他の情報を取得する。ボイスアクション選択器150は、次の歌にスキップするようにメディアプレイヤーアプリケーションを制御するためのデータをユーザデバイス104に送信し、ユーザデバイス104は、ユーザデバイス104上で実行されているメディアプレイヤーアプリケーションが次の歌にスキップする、たとえば、David Bowieの歌"Fame"にスキップするプロセスを開始する。
【0036】
簡単に言えば、説明したように、
図1のシステムは、1つまたは複数のアプリケーション開発者101a〜101nに対応する1つまたは複数の端末102a〜102nを含む。端末102a〜102nは各々、たとえば、1つまたは複数のワイヤードネットワークまたはワイヤレスネットワークを通じて、ボイスアクションシステム100と通信することができる。端末102a〜102nの各々は、セルラー電話、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、携帯情報端末(PDA)、ネットブックコンピュータ、または他のモバイルコンピューティングデバイスなどのモバイルデバイスであってもよく、またはデスクトップコンピュータもしくは他の固定コンピュータなどの任意の固定コンピューティングデバイスであってもよい。ユーザ105に関連付けられたユーザデバイス104はまた、1つまたは複数のワイヤードネットワークまたはワイヤレスネットワークを通じてボイスアクションシステム100と通信することができ、ユーザデバイス104は、セルラー電話、スマートフォン、タブレットコンピュータ、ネットブック、携帯情報端末、ラップトップコンピュータ、デスクトップコンピュータ、または他のコンピューティングデバイスなどのモバイルコンピューティングデバイスまたは固定コンピューティングデバイスであってもよい。
【0037】
図1に示される例示的なボイスアクションシステム100は、アプリケーションボイスアクションデータベース110と、オペレーティングシステム(OS)ボイスアクションデータベース120と、音声認識エンジン130と、コンテキスト解析エンジン140と、ボイスアクション選択器150とを含む。アプリケーションボイスアクションデータベース110とOSボイスアクションデータベース120と音声認識エンジン130とコンテキスト解析エンジン140とボイスアクション選択器150とを含むボイスアクションシステム100の構成要素の各々は、電子通信の交換を可能にする1つまたは複数のワイヤードデータ経路またはワイヤレスデータ経路を通じてボイスアクションシステム100の1つまたは複数の他の構成要素と通信してもよい。いくつかの実装形態では、ボイスアクションシステム100の構成要素のうちの1つまたは複数は、機能が単一の構成要素によって実行されるように組み合わされてもよく、機能が2つ以上の構成要素にわたって分散されるように2つ以上の構成要素によって表されてもよい。ボイスアクションシステム100の構成要素は、単一サーバシステムなどの単一のコンピューティングデバイス上で実施されてもよく、構成要素間の電子通信の交換を可能にする1つまたは複数のワイヤードデータ経路またはワイヤレスデータ経路を通じて通信する複数のコンピューティングデバイス上で実施されてもよい。
【0038】
図2は、1つまたは複数のユーザデバイス上にインストールされたアプリケーションのための新しいボイスアクションをアプリケーション開発者が生成することを可能にする例示的なシステムを示す。たとえば、アプリケーションがリリースされ、1つまたは複数のユーザデバイスにダウンロードされた後、アプリケーション開発者は、ボイスアクション開発サービスを使用して新しいボイスアクションを定義することができる。ボイスアクション開発サービスは、アプリケーション自体に対する修正を必要とすることなくアプリケーションのための新しいボイスアクションを可能にするために、新しいボイスアクションを配布することができる。
【0039】
簡単に言えば、
図2は、端末202に関連付けられたアプリケーション開発者201にボイスアクション開発サービスを提供する開発者ボイスアクションシステム200を示す。端末202は、端末202が電子通信を開発者ボイスアクションシステム200と交換することを可能にする、ワイヤードインターネット接続またはワイヤレスインターネット接続などの1つまたは複数のワイヤードネットワーク接続またはワイヤレスネットワーク接続を通じて開発者ボイスアクションシステム200と通信してもよい。開発者ボイスアクションシステム200は、検証基準データベース215と通信する検証エンジン210を含む。開発者ボイスアクションシステム200は、アプリケーションメタデータバックエンド225およびアプリケーションボイスアクションデータベース230と通信する文法帰納エンジン220をさらに含む。アプリケーションボイスアクションデータベース230は、
図1のアプリケーションボイスアクションデータベース110に類似してもよく、アプリケーションのための新しいボイスアクションを定義するためにアプリケーション開発者によって提示されたまたは新しいボイスアクションを定義するアプリケーション開発者によって提示された情報に基づいた文法から生成された意向を記憶することができる。いくつかの実装形態では、新しいボイスアクションを確立するためにサービスをアプリケーション開発者に提供する開発者ボイスアクションシステム200は、
図1のボイスアクションシステム100の一部であってもよい。いくつかの実装形態では、開発者ボイスアクションシステム200の構成要素によって実行される動作は、開発者ボイスアクションシステム200の異なる構成要素によって実行可能である。開発者ボイスアクションシステム200は、開発者ボイスアクションシステム200によって実行されたときに説明される動作を実行するために、より多い構成要素を備えてもよく、より少ない構成要素を備えてもよく、異なる構成要素を備えてもよい。
【0040】
図2に示されるように、アプリケーション開発者201は、新しいボイスアクションを定義する情報を端末202を使用して開発者ボイスアクションシステム200に提示することができる。たとえば、端末202は、開発者ボイスアクションサービスのためのアプリケーションを含んでもよく、端末202は、たとえば、インターネットを通じてウェブサイトにおける開発者ボイスアクションサービスにアクセスすることによって、ネットワーク接続を通じて開発者ボイスアクションサービスに遠隔でアクセスすることが可能であってもよい。他の実装形態では、開発者ボイスアクションサービスは、端末202が端末202と開発者ボイスアクションシステム200との間のネットワーク接続を通じて開発者ボイスアクションシステム200における開発者ボイスアクションサービスにアクセスすることができるように、開発者ボイスアクションシステム200によってホストされてもよい。
【0041】
特定のアプリケーションのための新しいボイスアクションを実施するために、アプリケーション開発者201は、新しいボイスアクションを定義する新しい文法を開発者ボイスアクションシステム200に提示することができ、または新しいボイスアクションを定義する他の情報を開発者ボイスアクションシステム200に提示することができる。
図2に示される例では、新しいボイスアクションを実施するために、アプリケーション開発者201は最初に、1つまたは複数のユーザデバイス上に既にインストールされているメディアプレイヤーアプリケーションのための新しいボイスアクションを定義する。そうするために、アプリケーション開発者201は、メディアプレイヤーアプリケーションのための新しいボイスアクションを定義する文法を提示する。アプリケーション開発者201によって提示された文法は、アプリケーション、すなわちメディアプレイヤーアプリケーション、新しいボイスアクションに関連付けられたことになるトリガフレーズ「次を再生」、「次を再生」トリガフレーズを検出したことに応答して実行されることになる、すなわち次の歌にスキップすることになるアクション、ならびに新しいボイスアクションがイネーブルにされたときのためのコンテキスト、すなわち、メディアプレイヤーアプリケーションはユーザデバイスのフォアグラウンドで動作していなければならないこと、およびメディアプレイヤーアプリケーションはオーディオプレイヤーモードでなければならないことを指定する。
【0042】
アプリケーション開発者201によって提示された文法は、アプリケーション開発者201が、ボイスアクション意向のために開発者ボイスアクションシステム200によって使用される具体的なデータフォーマットに精通していなくても、新しいボイスアクションを容易に定義することを可能にする特定のフォーマットであってよい。他の実装形態では、アプリケーション開発者201は、検証エンジン210または開発者ボイスアクションシステム200の別の構成要素によって受信され、新しいボイスアクションを定義する文法を生成するために翻訳可能な他の情報を提示することができる。たとえば、アプリケーション開発者201には、アプリケーション開発者201が新しいボイスアクションを定義するために記入することができるフィールドを含む形式が示されてもよい。この形式は、アプリケーション開発者201が新しいボイスアクションについての情報、たとえば、アプリケーション、新しいボイスアクションのためのトリガフレーズ、およびこのトリガフレーズに応答してアプリケーションによってまたはこれに関して実行されることになるアクションまたはアクティビティを指定することを可能にしてもよい。この形式は、アプリケーション開発者201が、イネーブルにされることになる新しいボイスアクション、すなわち、ユーザがトリガフレーズを使用してトリガすることができるボイスアクション候補になることになるボイスアクションのためのユーザデバイスの特定のステータスまたはユーザデバイス上で動作する1つもしくは複数のアプリケーションの特定のステータスを必要とするコンテキストを提供することができる。新しいボイスアクションを定義するために必要なまたはオプションでそのために使用される他の情報も、形式において入力されてもよい。アプリケーション開発者201によって提供される形式フィールド内のエントリは、開発者ボイスアクションシステム200への提示のために文法に変換されてもよく、エントリは、開発者ボイスアクションシステム200によって受信され、開発者ボイスアクションシステム200において文法に変換されてもよい。あるいは、アプリケーション開発者201は、ボイスアクション開発者システム200に提示される文法フォーマットを使用して、またはデリミタ区切り値(DSV:delimiter-separated value)フォーマットなどの別のフォーマットを使用して、必要な情報を入力することによって新しいボイスアクションを定義してもよい。
【0043】
いくつかの実装形態では、新しいボイスアクションは、ユーザデバイス上で動作するソフトウェアアプリケーション内で1つまたは複数の動作を実行するために開発されてもよく、全体的にユーザデバイスに関して1つまたは複数の動作を実行するために(すなわち、ユーザデバイスのハードウェアを制御するために)開発されてもよく、ユーザデバイスの外部にあるアプリケーション(すなわち、異なるデバイス上で動作するアプリケーション)を制御するために開発されてもよく、ユーザデバイスの外部にある別のデバイスを制御するために開発されてもよい。たとえば、アプリケーション開発者201は、ユーザデバイス上の特定のアプリケーション(たとえば、ソーシャルネットワークアプリケーションまたはメディアプレイヤーアプリケーション)を制御するために新しいボイスアクションを定義する文法を提供してもよく、ユーザデバイスを制御するために(たとえば、デバイスのスクリーンの方向を変更するために、またはデバイスの電源を切断するために)新しいボイスアクションを定義する文法を提供してもよく、異なるデバイス上で動作するアプリケーションを制御するために(たとえば、ユーザデバイスの外部にあるケーブルテレビジョンボックス上で動作するケーブルテレビジョンソフトウェアを制御するために)新しいボイスアクションを定義する文法を提供してもよく、ユーザデバイスとは別個の別のデバイスを制御するために(たとえば、ユーザデバイスに提供されたボイス入力を使用してガレージドアを制御するために)新しいボイスアクションを定義する文法を提供してもよい。いくつかの実装形態では、ボイスアクションは、ボイスアクションをトリガすることによって2つ以上の異なるアクションまたはアクティビティが2つ以上の異なるアプリケーションまたはデバイスにおいて実行させられるように定義可能である。
【0044】
アプリケーション開発者201によって指定されたコンテキストは、ボイスアクションがイネーブルにされることになるために満たされなければならない、すなわち、コンテキストも満たされない限り、ボイスアクションに関連付けられたトリガフレーズによってボイスアクションがトリガされないように、1つまたは複数の状況を識別する。アプリケーション開発者201は、コンテキストを1つまたは複数の異なる要件または状況を有すると定義することができる。
【0045】
いくつかの例では、アプリケーション開発者201によって提示されたコンテキストは、ユーザデバイスの電源が投入されているまたはユーザデバイスがロックされているかどうか、ユーザデバイスがカメラ、ジャイロスコープ、気圧計、または他の構成要素もしくは特徴を有するかどうかなどのユーザデバイスのステータスまたは属性を指定してもよい。したがって、たとえば、ユーザデバイス上にインストールされたアプリケーションを使用して写真を撮影するためのボイスアクションは、ユーザデバイスから受信されたコンテキスト情報がユーザデバイスにカメラがないことを示す場合、イネーブルにされなくてもよい。
【0046】
他の例では、コンテキストは、特定のアプリケーションがユーザデバイスのフォアグラウンドまたはバックグラウンドで動作していることを必要としてもよい。たとえば、
図2に示されるように、「次を再生」ボイスアクションは、メディアプレイヤーアプリケーションがユーザデバイス204のフォアグラウンドで動作しているときのみイネーブルにされてもよいが、メディアプレイヤーアプリケーションが閉じられているまたはユーザデバイス204のバックグラウンドで動作している場合はイネーブルにされなくてもよい。他の例では、ボイスアクションは、アプリケーションがバックグラウンドで動作しているときボイスアクションをイネーブルにするコンテキストとともに定義されてもよい。たとえば、ソーシャルネットワークアプリケーションは、別のユーザと接続したいという要求を受理するために関連付けられたボイスアクションを有してもよく、ユーザは、ソーシャルネットワークアプリケーションがユーザデバイスのバックグラウンドでのみ動作している場合でも別のユーザと接続したいという要求を受理するためにボイスアクションをトリガすることができてもよい。
【0047】
コンテキストは、加えてまたはあるいは、特定のアプリケーションがイネーブルにされることになるボイスアクションのための特定のモードで動作されていることを必要としてもよい。モードは、アプリケーションが実行している特定のアクティビティまたはタスクであってもよい。たとえば、電子メールアプリケーションは、電子メール書き込みモードであると判定されてもよく、メディアプレイヤーアプリケーションは、オーディオプレイヤーモードであると判定されてもよく、またはカメラアプリケーションは、カメラモードもしくはフォトアルバムビューアモードであると判定されてもよい。ユーザデバイスは、特定のアプリケーションがモードのうちのどれで動作しているか判定することができてもよく、特定のボイスアクションがイネーブルにされたかどうかを判定するために使用されるコンテキスト情報内にその情報を含んでもよい。
【0048】
加えて、いくつかの例では、コンテキストは、アプリケーションモードがあるステータスを有することを必要としてもよい。たとえば、コンテキストは、映画を「一時停止する」ためのボイスアクションは、メディアプレイヤーアプリケーションが映画プレイヤーモードであるとき、および映画プレイヤーモードでのアプリケーションのステータスが、アプリケーションが現在映画を上映していることであるときのみイネーブルであってもよいことを示してよい。いくつかの例では、ユーザデバイスは、特定のモードで動作するアプリケーションのステータスを決定することができなくてもよい。それらの例では、特定のモードにあるアプリケーションのステータスを示す情報を提供するようにアプリケーションを構成することが必要とされてもよい。したがって、特定のアプリケーションのためのコンテキストにおけるそのような条件を指定することは、ユーザデバイスによって提供されるコンテキスト情報が必要とされるステータス情報を含むために、アプリケーション自体に対する修正を必要としてもよい。
【0049】
いくつかの例では、ボイスアクションのために指定されるコンテキストは、ボイスアクションを可能にするために特定の物体または物体のタイプがユーザデバイスのスクリーン上に表示されることを必要としてもよい。たとえば、コンテキストは、画像がユーザデバイスのディスプレイに出力されている場合のみ「画像を保存(Save image)」ボイスアクションがイネーブルにされることを指定してもよく、テキストがディスプレイ上に示される場合のみ「強調(highlight)」ボイスアクションが使用可能であることを指定してもよい。別の例では、「第1のものを選ぶ」ためのボイスアクションなどのリスト内の特定の項目を選択するためのボイスアクションは、コンテキスト情報が、数字"1"もしくは中点がユーザデバイスのディスプレイ上に示されていることを示す場合、またはディスプレイ上に示されている項目のリストがある場合のみ使用可能であってもよい。いくつかの例では、ユーザデバイスは、所与の瞬間に、たとえば、アプリケーションがディスプレイを制御するとき、何の情報がディスプレイに示されているかを判定することが可能でなくてもよい。したがって、コンテキストが、ボイスアクションがイネーブルにされるために、ある情報または情報のタイプがディスプレイに出力されなければならないことを指定する場合、その情報を提供するようにアプリケーションを修正することが必要であってもよい。次いで、ユーザデバイスは、ユーザデバイスのディスプレイに何が出力されているかを示す情報を特定のボイスアクションがイネーブルにされるべきかどうかを判定するために使用されるコンテキスト情報内に含むことができる。
【0050】
他の例では、コンテキストは、通知または特定のタイプの通知がユーザデバイスに出力されたことを必要としてもよい。たとえば、新しい電子メールが受信されたときにユーザにポップアップ通知を提供する電子メールアプリケーションは、新しい電子メール通知がアプリケーションによってユーザデバイスのディスプレイに出力されているときにイネーブルにされる「電子メールを読む(Read email)」に関連付けられたボイスアクションをもってもよい。したがって、コンテキスト情報は、通知がユーザデバイスのディスプレイに出力されているかどうかを示してもよく、その情報は、「電子メールを読む」ボイスアクションがイネーブルにされるべきかどうかを判定する際に使用されてもよい。
【0051】
いくつかの例では、コンテキストは、ボイスアクションがイネーブルにされるためにユーザデバイスが特定の地理的ロケーション内にあることを必要としてもよい。ユーザデバイスは、セルラータワー三角測量を使用して、その地理的ロケーションを決定することが可能であってもよく、特定の地理的ロケーションに関連付けられたインターネット接続にアクセスすることに基づいて、その地理的ロケーションを決定することが可能であってもよく、全地球測位システム(GPS)技術を使用して、その地理的ロケーションを決定することが可能であってもよく、他の手段を使用して、その地理的ロケーションを決定することが可能であってもよい。ユーザデバイスは、その地理的ロケーションを示す情報をコンテキスト情報内に含んでもよく、ボイスアクションは、コンテキストのジオロケーション要件を満たす地理的ロケーションに基づいてイネーブルにされてもよい。一例として、小売業者のアプリケーションのためのボイスアクションに関連付けられたコンテキストは、小売業者アプリケーションを有するユーザデバイスが小売業者の店舗のうちの1つの範囲内にある場合のみあるボイスアクションが処理されるべきであることを指定してもよい。小売業者アプリケーションのためのボイスアクションは、ユーザデバイスの地理的ロケーションが小売業者の店舗のうちの1つの範囲内の地理的ロケーションに対応することを示す、ユーザデバイスからのコンテキスト情報に基づいてイネーブルにされてもよい。
【0052】
アプリケーション開発者によって定義されたコンテキストは、コンテキストに関連付けられたボイスアクションが、ある一定の時間、日、月、季節の間、または他の時間的条件が満たされたときのみイネーブルにされることも示すことができる。たとえば、コンテキストは、あるボイスアクションが、ユーザデバイスからまたは別の情報ソースから受信されたコンテキスト情報が時間条件を満たす場合のみイネーブルにされることを指定してもよい。たとえば、バンキングアプリケーションのためのボイスアクションは、時間条件を含むコンテキストに関連付けられてもよく、したがって、ボイスアクションは、コンテキスト情報が、ボイスアクションが提示された時間が午前6:00から午後10:00の間であることを示す場合のみイネーブルにされる。
【0053】
コンテキストは、ボイスアクションがイネーブルにされるための他の要件を指定してもよい。たとえば、開発者ボイスアクションシステム200は、ユーザデバイス以外のソースからの情報へのアクセスを有してもよく、1つまたは複数の情報ソースから取得された情報をユーザデバイスから受信することが可能であってもよい。他のソースから受信された情報は、ボイスアクションをイネーブルにするために必要とされるコンテキスト情報であってもよい。そのような情報は、たとえば、天気情報、ユーザにとって感動的な情報、ニュース情報、株式市場情報、または他の情報を含むことができる。たとえば、開発者ボイスアクションシステム200は、1つまたは複数のワイヤードネットワーク接続またはワイヤレスネットワーク接続、たとえば、インターネット接続またはサーバシステムへの他のネットワーク接続を通して、他の情報ソースにアクセスすることが可能であってもよい。ボイスアクションのためのコンテキストは、ボイスアクションが、関連ユーザデバイスのロケーションに対応する地理的エリアのための天気情報がそのロケーションで雨が降っていることを示す場合のみイネーブルにされることを指定してもよい。コンテキスト条件が満たされているかどうかチェックするために、開発者ボイスアクションシステム200は、1つまたは複数のネットワーク接続を通じてユーザデバイスの既知のロケーションのための天気情報にアクセスすることが可能であってもよい。
【0054】
アプリケーション開発者201によって提示された新しいボイスアクションを定義する文法または他の情報は、端末202からネットワークを通じて開発者ボイスアクションシステム200に提示可能である。提示された文法は、開発者ボイスアクションシステム200において検証エンジン210によって受信される。アプリケーション開発者201が、ボイスアクションを定義するが文法フォーマットでない情報を開発者ボイスアクションシステム200に提示する場合、開発者ボイスアクションシステム200は、新しいボイスアクションを定義する情報を文法に変換してもよい。検証エンジン210は、文法を解析して、提示された文法が新しいボイスアクションのための意向へと帰納可能であるかどうかを判定する。たとえば、検証エンジン210は、文法によって指定されたトリガフレーズが妥当なトリガフレーズかどうか判定することが可能であってもよく、文法によって指定されたアクティビティが指定されたアプリケーションによって実行可能であるかどうか判定することができ、提示された文法のフォーマットが構文的に妥当であるかどうか判定することができ、文法によって指定されたコンテキストが妥当であるかどうか判定することができ、または提示された文法が、新しいボイスアクションのための意向を生成するために帰納可能である妥当な文法であるかどうか別の方法で判定することができる。検証を実行するために、検証エンジン210は、文法を検証するために使用されるルールを含む検証基準データベース215にアクセスしてもよい。
【0055】
たとえば、検証エンジン210は、メディアプレイヤーアプリケーションのための新しいボイスアクションを指定する文法を受信する。文法は、トリガフレーズ「次を再生」と、トリガフレーズ「次を再生」はメディアプレイヤーアプリケーションを次の歌にスキップさせるべきであることと、メディアプレイヤーアプリケーションがフォアグラウンドで動作しており、オーディオプレイヤーモードであるとき、新しいボイスアクションがイネーブルにされるべきであることを指定するコンテキストを指定する。検証エンジン210は、検証基準データベース215における検証ルールにアクセスし、そのルールに基づいて、受信された文法を検証することができる。たとえば、検証エンジン210は、指定されたアプリケーションに対して新しいボイスアクションが作成可能であるように、メディアプレイヤーアプリケーションが既存のアプリケーションであるかどうか判定してもよい。検証エンジン210は、トリガフレーズは長さが複数の口頭音節でなければならないことを指定するルールにアクセスしてもよく、トリガフレーズ「次を再生」が1つの口頭音節よりも長いことを判定したことに基づいてトリガフレーズ「次を再生」を検証してもよい。検証ルールは、メディアプレイヤーアプリケーションが実行することができる可能なアクションのリストを指定してもよく、次の歌にスキップすることは、検証エンジン210が実行可能である動作であることを判定したことに基づいて、次の歌にスキップするように指定されたアクションを検証してもよい。検証エンジン210は、コンテキストが矛盾を含まないことを保証するために、文法によって指定されたコンテキストを検証してもよい。たとえば、検証エンジンは、指定されたコンテキストが、フォアグラウンドで動作すること、および新しいボイスアクションがイネーブルにされるためにバックグラウンドで動作することもアプリケーションに要求しないことを保証してもよいが、それは、それら2つの条件のうちの1つのみが満たすことが可能であるからである。他の検証基準は、アプリケーション開発者201によって提示された文法が妥当であるかどうかを判定するために、受信された文法に適用されてもよい。
【0056】
他の形式の検証が、検証エンジン210によって実行されてもよい。たとえば、検証エンジン210は、アプリケーション開発者201が、指定されたアプリケーションのための新しいボイスアクションを生成するように許可されているかどうかを判定してもよく、新しいボイスアクションを生成するために必要とされる料金が支払われたかどうかを判定してもよく、アプリケーション開発者201によって提示された文法が新しいボイスアクションのための意向の作成をもたらしてもよいかどうかを別の方法で判定してもよい。
【0057】
検証エンジン210によって実行された検証の結果に基づいて、文法が妥当であるかどうかを示すフィードバックがアプリケーション開発者201に提供可能である。検証エンジン210が、文法が妥当でないことを判定した場合、検証エンジン210は、文法が妥当でないことを示し、アプリケーション開発者201が文法を訂正することを要求する情報を端末202に出力させてもよく、アプリケーション開発者201が文法を訂正することができるやり方を提案してもよい。たとえば、文法が、指定されたアプリケーションによって実行できないアクションを指定するので、文法が妥当でないと判定された場合(たとえば、文法が、新しいボイスアクションはメディアプレイヤーアプリケーションに新しい電子メールを開かせるべきであることを指定した場合)、検証エンジン210は、文法が、指定されたアプリケーションに適合しないアクションを指定することを示す情報を端末202に出力させてもよく、アプリケーション開発者201が、指定されたアクションまたは指定されたアプリケーションのどちらかを変更することによって文法を訂正してもよいことを指定してもよい。提示された文法が妥当である場合、検証エンジン210は、提示された文法が妥当であるという指示を提供してもよい。
【0058】
加えて、検証エンジン210は、さらなる入力をアプリケーション開発者201に要求してもよい。たとえば、文法が妥当であると判定された場合、検証エンジン210は、アプリケーション開発者201が新しいボイスコマンドの生成を続けることを希望することを確認しない限り、新しいボイスコマンドのための意向が文法から生成されないように、新しいボイスコマンドの生成を続ける選択肢をアプリケーション開発者201に示してもよい。これによって、アプリケーション開発者201が、文法帰納または新しいボイスアクションの配布を続ける必要なく、文法を開発者ボイスアクションシステム200に適切に提示しているかどうか判定することが可能にされてもよい。
【0059】
アプリケーション開発者201によって提示された文法が検証されたこと、およびオプションで、アプリケーション開発者201が、ボイスアクション生成プロセスが続行されるべきであることを示す入力を提供することに基づいて、文法は、検証エンジン210によって文法帰納エンジン220に提供可能である。文法帰納エンジン220は、新しいボイスアクションのための意向を生成するように受信された文法を帰納することができる。生成された意向は、新しいボイスアクションを定義する文法内に含まれる情報を指定することができる。たとえば、文法帰納エンジン220は、アプリケーション、トリガフレーズ、トリガフレーズを検出したことに応答して実行するためのアクションまたはアクティビティ、および新しいボイスアクションのために指定されたコンテキストのうちの1つまたは複数を指定する意向データ構造のインスタンスを生成するように、受信された文法を帰納することができる。文法帰納エンジン220は、新しいボイスアクションのための意向をアプリケーションボイスアクションデータベース230において記憶することができる。
【0060】
たとえば、
図2に示されるように、文法帰納エンジン220は、検証エンジン210によって検証された、アプリケーション開発者201によって提示された文法を受信することができる。文法帰納エンジン220は、受信された文法に基づいて、新しいボイスアクションのための新しい意向である「意向Y」を生成することができる。意向を生成するために、文法帰納エンジン220は、意向データ構造の新しいインスタンスを生成してもよく、メディアプレイヤーアプリケーションを指定する情報、トリガフレーズ「次を再生」を指定する情報、メディアプレイヤーアプリケーションにおいて「次を再生」ボイスアクションが次の歌へのスキップに関連付けられるべきであることを指定する情報、およびメディアプレイヤーアプリケーションがフォアグラウンドで動作しており、オーディオプレイヤーモードで動作しているとき、「次を再生」ボイスアクションがイネーブルにされるべきであることを示すコンテキストを指定する情報を含む、受信された文法内に含まれる情報を用いて、意向データ構造にデータを格納し(populate)てもよい。
【0061】
新しい「意向Y」は、「意向X」および「意向Z」などの他のボイスアクションのための他の意向を含むアプリケーションボイスアクションデータベース230において、文法帰納エンジン220によって記憶可能である。「意向X」および「意向Z」の各々は、他のアプリケーションのための他のボイスアクションに関連付けられてもよく、メディアプレイヤーアプリケーションのための他のボイスアクションに関連付けられてもよい。新しい「意向Y」がアプリケーションボイスアクションデータベース230において記憶されたとき、新しいボイスアクションは、メディアプレイヤーアプリケーションが自分のデバイス上に記憶されたユーザによって新しいボイスアクションが使用されてもよいように配布されてもよい。すなわち、配布されたとき、メディアプレイヤーアプリケーションのユーザは、アプリケーションを更新する必要なく、新しい「次を再生」ボイスアクションを使用してもよい。
【0062】
いくつかの実装形態では、意向を生成するように文法を帰納することは、アプリケーション開発者201によって提示されたトリガ用語に少なくとも基づいた1つまたは複数の代替トリガ用語を生成することと、その代替トリガ用語を新しいボイスアクションのために生成された意向内に含めることも伴ってもよい。たとえば、1つまたは複数の拡張ルール、類義語ルール、オプション化ルール、置換ルール、書き直しルール、または他のルールが、代替トリガ用語を判定するために、アプリケーション開発者201によって提示されたトリガ用語に適用されてもよい。文法帰納エンジン220は、新しいボイスアクションのための意向内に代替トリガ用語を含んでもよく、したがって、アプリケーション開発者201によって提示されたトリガ用語の検出または代替トリガ用語の検出は、ボイスアクションのトリガリングをもたらすことができる。
【0063】
加えて、いくつかの実装形態では、文法帰納エンジン220は、意向データ構造とは別個の新しい意向に関連する情報を記憶してもよい。たとえば、新しいボイスアクションがイネーブルにされるために必要とされるコンテキストを指定する情報、または新しいボイスアクションに関連付けられたトリガ用語は、新しいボイスアクションのための意向とは別個に記憶されてもよい。そのような例では、ユーザデバイスから受信されたコンテキスト情報またはユーザデバイスから受信されたトリガ用語は、意向内のデータにアクセスする必要なく、意向に関連付けられたコンテキストおよびトリガ用語と比較されてもよい。意向は、受信されたコンテキスト情報および/またはトリガ用語が、意向に関連付けられたそれぞれのコンテキストおよび/またはトリガ用語に合致することを判定したことに基づいて、トリガされてもよい。このようにして、新しいボイスアクションに関連付けられたアクティビティまたはアクションをトリガするために必要な情報のみが意向内に含まれる必要があり、トリガするための意向を選択するため、意向を識別するために使用される他の情報、または他の情報が、意向の外部に記憶されてもよい。たとえば、コンテキストおよびトリガ用語の特定のペアリングの識別によって、そのペアリングに関連付けられた意向がトリガさせられてもよいように、開発者ボイスアクションシステム200は、ルックアップテーブル、リンクされたリスト、またはコンテキストもしくはトリガ用語情報を特定の意向にマップする他のデータを記憶してもよい。
【0064】
いくつかの実装形態では、開発者ボイスアクションシステム200は、公共使用のために新しいボイスアクションが配布される前にアプリケーション開発者201が新しいボイスアクションをテストするための機能も提供してもよい。たとえば、開発者ボイスアクションシステム200は、他のユーザにとって利用可能なボイスアクションなしに端末202を使用してアプリケーション開発者201が新しいボイスアクションをテストする機能を提供してもよい。開発者ボイスアクションシステム200は、新しいボイスアクションがテストのためにイネーブルにされるべき1つまたは複数のユーザデバイスをアプリケーション開発者201が指定するための機能も提供してもよい。たとえば、アプリケーション開発者201は、汎用的な公共使用のために新しいボイスアクションを配布する前に新しいボイスアクションの適切な動作を保証するために、新しいボイスアクションが既知のユーザデバイスのベータテストグループに配布されるべきであることを指定してもよい。
【0065】
いくつかの実装形態では、開発者ボイスアクションシステム200は、意向が、テストのために指定されたユーザデバイスのうちの1つからボイスコマンドを受信することに基づいて識別およびトリガ可能であるように、意向に関連付けられた設定を変更することによって新しいボイスアクションのテストをイネーブルにしてもよい。たとえば、開発者ボイスアクションシステム200は、アプリケーションボイスアクションデータベース230内に記憶された意向の各々のための設定であって、特定のボイスアクションのための意向が公共使用のために一般的に配布されているかどうかを示す設定を記憶してもよく、テストの目的で意向が配布されている特定のユーザデバイスを識別してもよい。意向をアプリケーションボイスアクションデータベース230において記憶した後、開発者ボイスアクションシステム200は、意向がテスト目的で1つまたは複数のユーザデバイスの特定のセットのためにイネーブルにされるべきことを示す情報を端末202から受信してもよい。応答して、意向のための設定は、意向に関連付けられたボイスアクションがトリガされてもよいように、ユーザデバイスの指定されたセットに意向を配布するために更新されてもよい。テストのためにイネーブルにされると、セット内のユーザデバイスから受信されたボイス入力は、意向をトリガさせ、それによりボイスアクションのテストを可能にしてもよい。
【0066】
他の実施形態では、開発者ボイスアクションシステム200は、新しいボイスアクションのための意向がアプリケーションボイスアクションデータベース230内に記憶される前に、新しいボイスアクションのテストをイネーブルにしてもよい。たとえば、アプリケーション開発者201は、新しいボイスアクションを配布する前にテストすることを希望することを示してもよく、新しいボイスアクションがテストのために一時的にイネーブルにされるべきいくつかのユーザデバイスまたはユーザアカウントを示してもよい。ユーザが、新しいボイスアクションに関連付けられたトリガフレーズをユーザデバイスのうちの1つへの入力として提供する場合、指定されたユーザデバイスまたは指定されたユーザアカウントに関連付けられたユーザデバイスが新しいボイスアクションをトリガすることができるように、新しいボイスアクションのための意向を生成した後、開発者ボイスアクションシステム200は、指定されたユーザデバイスまたはユーザアカウントのためのボイスアクションをイネーブルにしてもよい。
【0067】
さらに他の実装形態では、開発者ボイスアクションシステム200は、新しいボイスアクションのための文法が文法帰納エンジン220によって帰納される前に、新しいボイスアクションのためのテスト機能を提供することができる。たとえば、受信された文法を検証した後、検証エンジン210または開発者ボイスアクションシステム200の別の構成要素は、アプリケーション開発者201または他のデバイスのユーザが新しいボイスアクションをテストするために文法によって定義された新しいボイスアクションの動作をシミュレートすることが可能であってもよい。いくつかの例では、新しいボイスアクションをシミュレートすることは、開発者ボイスアクションシステム200によって提供されるシミュレータまたはテストモードを利用して新しいボイスアクションの動作をシミュレートするために、テストに使用される端末202または他のユーザデバイスを必要としてもよい。新しい文法が帰納される前にテスト機能を提供することによって、アプリケーション開発者201による新しいボイスアクションのより高速な反復テストが可能になり、それによりボイスアクション開発プロセス全体をスピードアップすることができる。
【0068】
ボイスアクションを配布する機能およびボイスアクションの配布を無効にする機能も、開発者ボイスアクションシステム200によって提供可能である。たとえば、新しいボイスアクションを定義する文法がアプリケーション開発者201によって開発者ボイスアクションシステム200に提示され、検証され、新しい意向を生成するように帰納され、新しい意向がアプリケーションボイスアクションデータベース230において記憶された後、開発者ボイスアクションシステム200は、アプリケーション開発者201が新しいボイスアクションを配布することを希望するかどうかを要求してもよい。アプリケーション開発者201は、新しいボイスアクションを配布することを選定してもよく、新しいボイスアクションを配布することによって、新しいボイスアクションに関連付けられたアプリケーションをインストールされた一般大衆のユーザデバイスにおける新しいボイスアクションのトリガリングが可能になる。アプリケーション開発者201は、新しいボイスアクションを配布するために、端末202における入力を提供することができる。次いで、新しいボイスアクションは、新しいボイスアクションが、新しいボイスアクションに関連付けられたアプリケーションをインストールされた他のユーザデバイス上でトリガ可能であるように配布可能である。すなわち、新しいボイスアクションが配布された後、アプリケーションをインストールされたユーザデバイスにおける新しいボイスアクションのためのトリガフレーズの入力によって、新しいボイスアクションに関連付けられた意向がトリガされる。新しいボイスアクションに関連付けられた意向のトリガリングによって、意向または他のアクショントリガデータがユーザデバイスに送信され、したがって、意向またはアクショントリガデータ内のデータは、ボイスアクションのアクションまたはアクティビティをユーザデバイスによって実行させる。説明されたように、意向を配布することは、開発者ボイスアクションシステム200に、新しいボイスアクションの意向に関連付けられた設定を更新して、意向をボイス入力に応答してトリガされることになる候補の意向にすることのみを要求してもよい。
【0069】
ボイスアクションが配布された後、アプリケーション開発者201は、新しいボイスアクションが、新しいボイスアクションに関連付けられたアプリケーションをインストールされたユーザデバイスにおいてトリガされることがもはや不可能になるように、新しいボイスアクションの配布を無効にしてもよい。たとえば、アプリケーション開発者201は、ボイスアクションを識別し、ボイスアクションの配布を無効にしたいという意図を示す入力を開発者ボイスアクションシステム200に提供してもよい。応答して、開発者ボイスアクションシステム200は、たとえば、ボイスアクションのための意向がトリガできないようにボイスアクションのための意向に関連付けられた設定を更新することによって、ボイスアクションの配布を無効にしてもよい。ボイスアクションの配布または回収は、開発者ボイスアクションシステム200が、ユーザのデバイス上にインストールされたアプリケーションを変更することなく、開発者ボイスアクションシステム200において記憶された情報を更新するのみを必要とするので、アプリケーション開発者201は、ボイスアクションを容易に配布してもよく、ボイスアクションの配布を無効にしてもよい。
【0070】
いくつかの実装形態では、開発者ボイスアクションシステム200はまた、新しいボイスアクションにとっての発見可能性例(discoverability example)を生成することができる。発見可能性例としては、アプリケーションがインストールされた後に開発者によって提示された新しいボイスアクションをおそらく含む、ユーザデバイスのユーザに示すことが可能な、特定のボイスアクションが利用可能であることをユーザに知らせる情報を含むことができる。いくつかの例では、発見可能性例は、ユーザデバイスが、ボイスアクションに関連付けられたコンテキストに合致するステータスを有することに応答して、またはユーザが、どのボイスアクションが利用可能であり得るかを尋ねたことに応答して、出力可能である。
【0071】
たとえば、新しいボイスアクションを定義する文法を受信したことに基づいて、文法帰納エンジン220または開発者ボイスアクションシステム200の別の構成要素は、文法によって定義されたボイスアクションにとっての発見可能性例を生成することができ、その発見可能性例をアプリケーションメタデータバックエンド225内に記憶することができる。発見可能性例は、新しいボイスアクションに関連付けられたアプリケーションをインストールされたユーザデバイスに提供可能である。たとえば、アプリケーションのメタデータは、アプリケーションメタデータバックエンド225内に記憶されたアプリケーションにとっての発見可能性例の現在のリストを含めるために定期的に更新されてもよい。あるいは、ユーザデバイスが、その現在のステータスを示すコンテキスト情報を提示したことに基づいて、情報が、ユーザデバイスのステータスに対してイネーブルにされたボイスアクションとっての発見可能性例をユーザデバイスに出力させるユーザデバイスに送信されてもよい。
【0072】
たとえば、「次を再生」ボイスアクションのための新しい「意向Y」を生成することに加えて、開発者ボイスアクションシステム200は、「次を再生」ボイスアクションにとっての1つまたは複数の発見可能性例を生成してもよい。発見可能性例としては、メディアプレイヤーアプリケーションを有するユーザデバイスにおいて出力された情報があってもよい。発見可能性例は、「次を再生」ボイスアクションに関連付けられたコンテキストが満たされたことに基づいて、または他の条件に基づいて、ユーザデバイスにおいて出力可能である。たとえば、「次を再生」ボイスアクションにとっての発見可能性例は、メディアプレイヤーアプリケーションがユーザデバイスのフォアグラウンドで動作しておりオーディオプレイヤーモードであるときはいつでも出力されるメッセージ「'次を再生'と言おうとすること」であることができる。いくつかの実装形態では、発見可能性例は、他のイベントまたは条件に応答して出力されてもよい。たとえば、発見可能性例メッセージ「'次を再生'と言おうとすること」は、ボタンもしくは制御部を押すことによって、または「私はどのボイスアクションを言うことができますか?」と言うことによって、ユーザデバイスのユーザがユーザデバイスに入力を提供したことに応答して、出力されてもよい。
【0073】
一般に、アプリケーションボイスアクションにとっての発見可能性例は、アプリケーション自体によるアクションを必要とすることなくユーザに提供されてもよい。たとえば、開発者ボイスアクションシステム200は、発見可能性例を含むデータをユーザデバイスに提供してもよく、ユーザデバイスは、発見可能性例に関連するアプリケーションが、動作を実行することが必要とされることなく、発見可能性例を出力させてもよい。いくつかの実装形態では、ユーザデバイス上で動作するOSは、発見可能性例を受信すること、または発見可能性例を指定するアプリケーションメタデータにアクセスすること、および発見可能性例をユーザデバイスにおいて出力させることが可能であってもよい。したがって、特定のアプリケーションに関連するボイスアクションにとっての発見可能性例は、特定のアプリケーションに対する修正のない出力のために提供されてもよい。
【0074】
いくつかの実装形態では、アプリケーションボイスアクションにとっての発見可能性例は、発見可能性例がアプリケーション自体によって提供されていないことをユーザが理解するようなやり方で出力されてもよい。たとえば、ユーザデバイスは、発見可能性例が開発者ボイスアクションシステム200またはOSによって提供されており、ボイスアクションに関連する特定のアプリケーションによって提供されていないことが明らかなようなやり方で、発見可能性例を提供することができる。たとえば、ユーザデバイスは、発見可能性例を提供するとき、ユーザデバイスのOSに関連付けられていると認識可能な特定のコンピュータ化されたボイストーンを使用してもよい。あるいは、発見可能性例は、アプリケーションが発見可能性例を提供していないことが明らかであるようなやり方で出力されてもよい。たとえば、「‘次を再生'または‘一時停止(pause)'と言おうとして、メディアプレイヤーアプリケーションに要求を処理させる」と言って、OSの役割をメディアプレイヤーアプリケーション自体によって実行されるアクションと区別する発見可能性例が出力されてもよい。発見可能性例が別個のシステムまたはアプリケーションによって提供されていることを示す他のやり方も実施されてもよい。
【0075】
図3は、ユーザデバイスのユーザから受信されたボイスアクションを処理するための例示的なボイスアクションシステム300を示す。いくつかの実装形態では、ボイスアクションシステム300によって処理されるボイスアクションは、アプリケーションがユーザデバイスにダウンロードされた後でアプリケーション開発者がアプリケーションのために作成したボイスアクションであってもよい。アプリケーション開発者によって作成されたボイスアクションは、
図2の開発者ボイスアクションシステム200を使用してアプリケーションのために作成されてもよい。
【0076】
簡単に言えば、ボイスアクションシステム300は、ユーザデバイス304が電子通信をボイスアクションシステム300と交換することを可能にする、1つまたは複数のワイヤードインターネットデータ接続またはワイヤードセルラーデータ接続またはワイヤレスインターネットデータ接続またはワイヤレスセルラーデータ接続などの1つまたは複数のワイヤードネットワークまたはワイヤレスネットワークを通じて、ユーザ305に属するユーザデバイス304と通信する。ボイスアクションシステム300は、1つまたは複数のネットワーク接続を通じてユーザデバイス304から受信された情報を処理する音声認識エンジン330とコンテキスト解析エンジン340とを含む。ボイスアクションシステムは、音声認識エンジン330およびコンテキスト解析エンジン340と通信し、アプリケーションボイスアクションデータベース310およびOSボイスアクションデータベース320へのアクセスも有するマッチャ(matcher)350を含む。マッチャ350は、アプリケーションデータデータベース370へのアクセスを有するアクショントリガビルダ360と通信する。ユーザアクティビティ履歴390へのアクセスを有する曖昧性除去(disambiguation)エンジン380はまた、1つまたは複数のネットワーク接続を通じてユーザデバイス304から電子通信を送信または受信することができる。
【0077】
ユーザ305によって提示されたボイス入力を処理するために、ボイス入力に対応するオーディオデータならびにユーザデバイス304および/またはユーザデバイス304上で動作するアプリケーションのステータスを示すコンテキスト情報がボイスアクションシステム300に提供される。いくつかの例では、ユーザデバイス304は、ユーザデバイス304にユーザ音声を記録し始めさせる制御部をユーザ305が選択したことに応答してボイス入力を取得してもよく、その検出によってユーザデバイス304がユーザ305からのその後のボイス入力を取得させられる句をユーザ305が話したことに応答してボイス入力を取得してもよく、ユーザ305のボイス入力を記録することを別の方法で判定してもよい。ユーザ音声の記録をトリガするように特定の入力を提供するための要件は、すなわち、処理されなければならないオーディオデータの量を減少させることによって、ユーザデバイス304がユーザ音声を不必要に処理することを防止することができ、またはすなわち、ユーザ305がユーザデバイス304に向かって話す特定の音声のみを記録することによってユーザデバイス304が、ユーザ305のプライバシーを侵害するほど大量のユーザ音声を記録することを防止することができる。
【0078】
図3に示される例では、たとえば、ユーザ305は、ユーザデバイス304にユーザ305のボイス入力の記録を開始させるためにユーザデバイス304上の制御部を選択してもよく、ユーザ305が制御部を選択した後、ユーザ305は、「次を再生」と言うことによってボイス入力を提供してもよい。ユーザデバイス304は、ボイス入力に対応するオーディオデータを1つまたは複数のネットワークを通じてボイスアクションシステム300に送信してもよい。加えて、ユーザデバイス304は、ユーザデバイス304またはユーザデバイス304上で動作するアプリケーションのためのコンテキスト情報を判定してもよく、ユーザデバイス304のためのコンテキスト情報は、1つまたは複数のネットワークを通じてボイスアクションシステム300に送信されてもよい。
【0079】
いくつかの例では、ユーザデバイス304からボイスアクションシステム300に送信されるコンテキスト情報としては、ユーザデバイス304において記憶された情報によって識別される特定の情報がある。たとえば、ユーザデバイス304は、ボイスアクションシステム300に送信するための特定のステータス情報を示す情報をコンテキスト情報として記憶することができる。ユーザデバイス304によってボイスアクションシステム300に提供されるコンテキスト情報は、すべてのユーザデバイスが同じコンテキスト情報をボイスアクションシステム300に提示するように、コンテキスト情報の標準化された本体を含んでもよく、またはユーザデバイス304によって提供されるコンテキスト情報は、ユーザデバイス304に指定されたコンテキスト情報の特定のセットであってもよい。いくつかの実装形態では、ボイスアクションシステム300は、あるコンテキスト情報をユーザデバイス304に要求してもよく、ユーザデバイスによって送信されるコンテキスト情報は、この要求に応答してボイスアクションシステム300に提供される情報であってもよい。さらに他の例では、アプリケーションメタデータなどのユーザデバイス304上にインストールされたアプリケーションに関連付けられた情報は、ボイスアクションシステム300に提供するようにコンテキスト情報を指定してもよく、ユーザデバイス304は、アプリケーション情報によって指定された情報を含むコンテキスト情報をボイスアクションシステム300に送信してもよい。
【0080】
たとえば、
図3に示される例では、ユーザデバイス304からボイスアクションシステム300に送信されるコンテキスト情報は、メディアプレイヤーアプリケーションが現在ユーザデバイス304のフォアグラウンドで動作していること、メディアプレイヤーアプリケーションがオーディオプレイヤーモードで動作していること、およびユーザデバイス304の現在のバッテリ寿命が50%であることを示す情報を含んでもよい。
【0081】
ユーザデバイス304によって送信されるオーディオデータは、ボイスアクションシステム300の音声認識エンジン330によって受信されてもよく、音声認識エンジン330は、ボイスオーディオデータのトランスクリプションを生成してもよい。たとえば、
図1の音声認識エンジン130に関して説明されたように、音声認識エンジン330は、オーディオデータを受信し、ユーザ305のボイス入力に対応するオーディオデータのトランスクリプションを生成することが可能であってもよい。オーディオデータのトランスクリプションを生成した後、音声認識エンジン330は、そのトランスクリプションをマッチャ350に提供することができる。
【0082】
いくつかの実装形態では、オーディオデータを受信することに加えて、音声認識エンジン330はまた、ユーザデバイス304によってボイスアクションシステム300に提供されたコンテキスト情報を受信してもよい。音声認識システム330は、受信されたコンテキスト情報に基づいて音声認識にバイアスをかけてもよい。いくつかの実装形態では、コンテキスト情報に基づいて音声認識にバイアスをかけることは、ある単語がオーディオデータ内で検出される確率を調整することを含んでもよい。たとえば、音声認識システム330は、コンテキスト的情報によって示されるコンテキストへの単語の関連性に基づいて、ある単語が検出される確率を調整してもよい。
【0083】
一例として、音声認識エンジン330は、「次を再生」発話に対応するオーディオデータならびにメディアプレイヤーアプリケーションが現在ユーザデバイス304のフォアグラウンドで実行されていることを示すコンテキスト情報を受信してもよい。音声認識エンジン330は、音声認識エンジン330がトランスクリプション「惑星(planets)」の代わりに「次を再生」トランスクリプションを生成するようにコンテキスト情報に基づいて音声認識にバイアスをかけてもよく、音声認識エンジン330が、単語「再生する」もしくは句「次を再生」がオーディオデータ内で検出される確率を増加させること、または単語「惑星」が検出される確率を減少させることに基づいて、音声認識にバイアスをかけてもよく、それらの単語が、ユーザデバイス304のフォアグラウンドで実行されているメディアプレイヤーアプリケーションへの関連性またはそれへの関連性の欠如を有することを判定することに基づいて音声認識にバイアスをかけてもよい。
【0084】
ボイスアクションシステムのコンテキスト解析エンジン340は、ユーザデバイス304によって送信されるコンテキスト情報を受信し、ユーザデバイス304のコンテキストまたはユーザデバイス304上で動作するアプリケーションを判定するようにコンテキスト情報を処理する。
図1のコンテキスト解析エンジン140と同様に、ボイスアクションシステム300のコンテキスト解析エンジン340は、トリガするボイスアクションを識別することに関連する受信されたコンテキスト情報の一部分を判定するように、受信されたコンテキスト情報を処理することができ、またはトリガするボイスアクションを識別するために、ユーザデバイス304から必要とされる他のコンテキスト情報が存在するかどうか判定するように受信されたコンテキスト情報を処理することができる。さらなるコンテキスト情報が、実行することになるボイスアクションを判定するために必要とされる場合、コンテキスト解析エンジン340は、ユーザデバイス304が、さらなるコンテキスト情報を用いて要求に応答することができるようにさらなるコンテキスト情報をユーザデバイス304に要求することができる。いくつかの実装形態では、コンテキスト解析エンジン340は、トリガすることになるボイスアクションを識別する際にボイスアクションシステム300によって使用可能なコンテキストを生成するために、受信されるコンテキスト情報のフォーマットを修正することができる。コンテキスト解析エンジン340は、処理されたテキスト情報をマッチャ350に提供する。
【0085】
図3に示される例では、たとえば、コンテキスト解析エンジン340は、コンテキスト情報をユーザデバイス304から受信する。受信されたコンテキスト情報は、メディアプレイヤーアプリケーションがユーザデバイス304のフォアグラウンドで実行されていること、メディアプレイヤーアプリケーションがオーディオプレイヤーモードで動作していること、およびユーザデバイス304のバッテリ寿命が50%であることを示してもよい。コンテキスト解析エンジン340は、バッテリ寿命情報が、ユーザ305のボイス入力に応答して、どのボイスアクションをトリガするべきかを決定することに関連しないことを判定してもよく、そのため、コンテキスト解析エンジン340は、メディアプレイヤーアプリケーションがユーザデバイス304のフォアグラウンドで動作しており、オーディオプレイヤーモードであることのみを示すコンテキストをマッチャ350に提供してもよい。
【0086】
マッチャ350は、コンテキストをコンテキスト解析エンジン340からトランスクリプションを音声認識エンジン330から受信し、受信されたコンテキストおよびトランスクリプションを使用して、トリガすることになる1つまたは複数のボイスアクション候補を識別する。たとえば、マッチャ350は、コンテキスト解析エンジン340から受信されたコンテキストをアプリケーションボイスアクションデータベース310および/またはOSボイスアクションデータベース320内に含まれる1つまたは複数の意向に関連付けられたコンテキストと照合してもよい。受信されたコンテキストが、意向のうちの1つまたは複数に関連付けられたコンテキストに合致することを判定することに基づいて、マッチャ350は、それらの意向をトリガするための意向候補として識別してもよい。受信されたコンテキストを意向候補に関連付けられたコンテキストと照合することに基づいて、意向候補を識別した後、マッチャ350は、受信されたトランスクリプションを意向候補に関連付けられたトリガフレーズと比較することによって意向候補のセットを狭めてもよい。マッチャ350は、意向候補の狭められたセットを識別する情報をアクショントリガビルダ360に提供してもよい。
【0087】
いくつかの例では、マッチャ350は、ボイス入力の複数のトランスクリプション候補を受信してもよく、意向候補の各々が、コンテキスト解析エンジン340から受信されたコンテキストに合致するコンテキストおよび音声認識エンジン330から受信されたボイス入力のトランスクリプション候補のうちの1つまたは複数に関連付けられることを判定したことに基づいて、意向候補の狭められたセットを識別してもよい。たとえば、音声認識エンジン330は、ボイス入力のための複数のトランスクリプション候補を判定してもよく、トランスクリプション候補の各々を示す情報をマッチャ350に提供してもよい。次いで、マッチャ350は、各々が、マッチャ350によって受信されたコンテキストに適合するコンテキストを指定し、ボイス入力のトランスクリプション候補に合致するトリガフレーズも指定する、意向候補の狭められたセットを識別してもよい。
【0088】
図3に示される例では、マッチャ350は、フォアグラウンドで動作しオーディオプレイヤーモードであるメディアプレイヤーをユーザデバイス304が有することを示すコンテキストを受信する。マッチャ350は、オーディオデータの2つのトランスクリプション、すなわちトランスクリプション「次を再生」および「惑星」も受信する。マッチャ350は、受信されたコンテキストおよびトランスクリプションをアプリケーションボイスアクションデータベース310およびOSボイスアクションデータベース320において記憶された意向に関連付けられたコンテキストおよびトリガフレーズと比較することによって、この情報に基づいて始動するための意向候補を識別する。この比較に基づいて、マッチャ350は、メディアプレイヤーアプリケーションを次の歌にスキップさせる「次を再生」ボイスアクションのための意向と、「惑星」と呼ばれるアプリケーションをオープンさせる「惑星」ボイスアクションのための意向とを含む、2つの意向候補を識別する。マッチャ350は、2つの意向候補を識別する情報をアクショントリガビルダ360に提供することができる、またはマッチャ350は、意向候補のコピーをアクショントリガビルダ360に提供することができる。
【0089】
アクショントリガビルダ360は、ユーザデバイス304から受信されたボイス入力およびコンテキスト情報に応答して始動するための1つまたは複数の意向候補を示す情報を受信する。アクショントリガビルダ360は、1つまたは複数の特定の意向のためのアクショントリガを生成し、各アクショントリガは、対応する意向に関連付けられたボイスアクションを実行するようにユーザデバイス304を制御することが可能であるデータを備える。いくつかの実装形態では、アクショントリガビルダ360は、マッチャ350によって識別される各意向候補のためのアクショントリガを生成する。他の実装形態では、アクショントリガビルダ360は、意向候補の中からトリガすることになる特定の意向の指示を取得してもよく、特定の意向のみのためのアクショントリガを生成してもよい。いずれかの実装形態では、アクショントリガビルダ360は、マッチャ350から受信された情報およびアプリケーションデータデータベース370においてアクセスされる情報に基づいて、アクショントリガを生成してもよい。
【0090】
たとえば、アクショントリガビルダ360は、ボイスアクション候補のための意向を受信してもよく、アクショントリガビルダ360は、ボイスアクション候補をユーザデバイス304において実行させることができる、アプリケーションデータデータベース370における情報にアクセスすることができる。たとえば、アプリケーションデータデータベース370においてアクセスされる情報は、ユーザデバイス304についての情報、ボイスアクションに関連付けられたアプリケーションについての情報、またはユーザデバイス304上で実行されているオペレーティングシステムについての情報などのボイスアクションに関連付けられたアクティビティまたはアクションを実行またはトリガするための情報を含むことができる。アクショントリガビルダ360は、アクセスされた情報をボイスアクション候補のためのアクショントリガとして使用することができる、またはアクセスされた情報を使用して、ユーザデバイス304においてボイスアクション候補に関連付けられたアクションもしくはアクティビティをトリガすることが可能であるアクショントリガデータを生成することができる。いくつかの実装形態では、ボイスアクションシステム300は、アクショントリガビルダ360またはアプリケーションデータデータベース370を含まなくてもよく、したがって、意向自体がユーザデバイス304に送信されてもよく、意向内の情報は、意向に関連付けられたアクションまたはアクティビティをユーザデバイス304に実行させることができる。
【0091】
図3に示される例では、アクショントリガビルダ360は、メディアプレイヤーアプリケーションのための「次を再生」ボイスアクションのための意向と、「惑星」アプリケーションをオープンするための「惑星」ボイスアクションのための意向を受信してもよい。アクショントリガビルダ360は、「次を再生」ボイスアクションおよび「惑星」ボイスアクションの各々のためのアクショントリガを生成してもよい。「次を再生」ボイスアクションのためのアクショントリガを生成するために、アクショントリガビルダ360は、ユーザデバイス304上にインストールされたメディアプレイヤーアプリケーションに関する、アプリケーションデータデータベース370における情報にアクセスし、ユーザデバイス304もしくはユーザデバイス304の特定のモデルに関係する情報にアクセスしてもよく、またはユーザデバイス304上で実行されているオペレーティングシステムに関係する情報にアクセスしてもよい。アクショントリガビルダ360は、受信された意向およびアプリケーションデータデータベース370におけるアクセスされた情報を使用して、「次を再生」ボイスアクションのためのアクショントリガを生成する。同様に、アクショントリガビルダ360は、「惑星」アプリケーション、ユーザデバイス304、またはユーザデバイス304上で実行されているオペレーティングシステムに関連する情報にアクセスすることによって、「惑星」ボイスアクションのためのアクショントリガを生成してもよく、受信された情報およびアクセスされた情報に基づいて、「惑星」ボイスアクションのためのアクショントリガを生成してもよい。
【0092】
上記で説明されたように、いくつかの例では、マッチャ350は、トリガすることになる複数の意向候補を識別してもよく、それらの例では、候補のセットの中から、トリガされることになる特定の意向を選択することが必要であってもよい。曖昧性除去エンジン380は、意向候補の中から選択するユーザ入力を選択するまたは受信するための動作を実行することができる。たとえば、曖昧性除去エンジンは、意向候補に関連付けられたボイスアクション候補の中から特定のボイスアクションを選択するようにユーザ305に求める要求をユーザデバイス304に出力することができる。この要求に応答して、ユーザ305は、実行することになる特定のボイスアクション候補を選択するために、入力をユーザデバイス304に提供することができる。ユーザ選択を示す情報は、曖昧性除去エンジン380によって受信されてもよい。
【0093】
あるいは、曖昧性除去エンジン380は、ユーザデバイス304に提示された以前のボイスアクションまたはユーザデバイス304において実行された他のアクションについての情報を含むユーザアクティビティ履歴390へのアクセスを有することができる。たとえば、ユーザアクティビティ履歴390は、ユーザ305が特定のボイスアクション候補をトリガした回数、ユーザ305がボイスアクションを使用してもしくは使用せずにユーザデバイス304において特定のアクションを実行した回数を示すことができる、またはユーザ305によるユーザデバイス304の使用についての他の情報を含むことができる。いくつかの例では、ユーザアクティビティ履歴390は、ユーザ305以外のユーザの使用履歴を示す情報を含むことができる。たとえば、ユーザアクティビティ履歴390は、メディアプレイヤーアプリケーションおよび/または「惑星」アプリケーションをユーザデバイス上にインストールさせたすべてのユーザの使用パターンを示す情報を含むことができる。
【0094】
いくつかの実装形態では、ユーザアクティビティ履歴390内の情報は、ユーザ305からの入力を要求することなく意向候補の中から選択するために、ボイスアクションシステム300によって使用可能である。たとえば、曖昧性除去エンジン380は、類似のボイス入力を提供するとき、ユーザ305が以前に特定のボイスアクション候補を選択したことを示す、ユーザアクティビティ履歴390における情報にアクセスしてもよく、その情報に基づいて、曖昧性除去エンジン380は、ユーザ305からの入力を要求することなくトリガすることになる特定の意向候補を選択してもよい。同様に、曖昧性除去エンジン380は、ユーザ305から受信されたボイス入力に類似したボイス入力を提供したユーザのある一定の比または数が特定のボイスアクションをトリガすることを選定したことを判定してもよく、曖昧性除去エンジン380は、その情報に基づいて、ユーザ305からの入力を要求することなく、トリガすることになる特定のボイス意向候補を選択してもよい。いくつかの実装形態では、意向候補の各々は、特定のトリガフレーズと特定の意向候補との間の関係の強度を示す、関連付けられたスコアを有してもよい。特定の意向候補は、意向候補と受信されたトリガフレーズの間の関係の強度を示す、意向候補に割り当てられたスコアに基づいて選択されてもよい。
【0095】
他の要因が考えられてもよく、意向候補を選択する際に使用されるユーザアクティビティ履歴390内に含まれてもよい。たとえば、ボイスアクションシステム300は、ボイスアクションシステムがある意向候補をトリガした後、ユーザデバイス304における挙動を追跡して、トリガされた意向がユーザ305の予想に合致するように見えるかどうかを判定してもよい。たとえば、ボイスアクションシステム300があるボイスアクションをトリガした後、ユーザ305が、ユーザデバイス304において別のアクションを実行するための動作を行う場合、それは、ボイスアクションシステム300が間違った意向候補をトリガしたことを示してもよく、そのため、ボイスアクションシステム300は、受信されたボイス入力はトリガするべきでないまたはトリガされる意向をトリガする可能性が低いことを示す情報をユーザアクティビティ履歴390に追加してもよい。他の例では、ユーザアクティビティ履歴390は、どのくらい頻繁にユーザ305または他のユーザがユーザデバイスの所与のステータスのためのたとえば、ボイスアクションシステム300に提供されたコンテキスト情報内で示される特定のステータスのための特定の意向候補を選択するかを示す情報を含んでもよい。ユーザアクティビティ履歴390内に含まれる他の情報は、曖昧性除去エンジン380によってアクセスされ、特定の意向候補を意向候補のセットから選択するために使用されてもよい。
【0096】
図3に示される例の場合、ユーザ305によって提供されたボイス入力のための意向候補がメディアプレイヤーアプリケーションのための「次を再生」ボイスアクションのための意向または「惑星アプリケーション」をオープンするための「惑星」ボイスアクションのための意向を含むことを判定したことに基づいて、曖昧性除去エンジン380は、特定のボイスアクション候補のユーザ選択を要求する情報をユーザデバイス304に提供することができる。図示のように、ユーザ305が「次の歌(Next Song)」ボイスアクションまたは「‘惑星'をオープンする」ためのボイスアクションのどちらかを選択することを要求する要求が、ユーザデバイス304のディスプレイにおいて出力可能である。ユーザ305は、「次の歌」選択肢を選択するために、ユーザデバイス304において入力を提供する。ユーザ選択を示すデータが曖昧性除去エンジン380に送信され、ユーザ選択を示すデータを受信する際、曖昧性除去エンジン380は、「次を再生」ボイスアクションのための意向をトリガすることを判定する。いくつかの例では、曖昧性除去エンジン380はまた、ユーザ305が「惑星」ボイスアクションのための意向に優先して「次を再生」ボイスアクションのための意向をトリガすることを選定したことを示す情報をユーザアクティビティ履歴390において記憶してもよい。曖昧性除去エンジン380は、ユーザアクティビティ履歴390において記憶された情報に依拠して、類似のボイス入力が後でユーザデバイス304からボイスアクションシステム300によって受信される場合にトリガすることになるボイスアクション候補を自動的に決定してもよい。
【0097】
図3に示される例の代替実装形態では、曖昧性除去エンジン380は、ユーザアクティビティ履歴390にアクセスすることに基づいて、トリガすることになる特定の意向候補を選択してもよい。たとえば、ユーザアクティビティ履歴390は、ユーザデバイス304のユーザ305が以前に類似のボイス入力を提供し、「次の歌」ボイスアクションのための意向をトリガすることを選定したことを示してもよい。類似のボイス入力を受信した後、ユーザアクティビティ履歴390が、「次を再生」ボイスアクションのための意向が以前にトリガされたことを示したことに基づいて、曖昧性除去エンジン380は、ユーザ305からのさらなる入力を要求することなく「次を再生」ボイスアクションのための意向をトリガすることを判定してもよい。
【0098】
特定の意向候補が選択された後、および必要な場合、選択されたボイスアクション候補のためのアクショントリガが生成された後、ボイスアクションシステム300は、選択されたボイスアクションを実行させる情報をユーザデバイス304に送信する。たとえば、曖昧性除去エンジン380またはボイスアクションシステム300の別の構成要素は、選択されたボイスアクションのための意向またはアクショントリガデータをユーザデバイス304に送信し、選択されたボイスアクションをユーザデバイス304に実行させることができる。
【0099】
図3に示される例では、たとえば、ユーザ305が、メディアプレイヤーアプリケーションを次の歌にスキップさせる「次を再生」ボイスアクションを選択するために「次の歌」選択肢を選択した後、および次の歌にスキップするようにメディアプレイヤーアプリケーションを制御するためのデータを含むアクショントリガが生成された後、曖昧性除去エンジン380は、アクショントリガをユーザデバイス304に送信することができる。ユーザデバイス304は、アクショントリガを受信することができ、アクショントリガは、メディアプレイヤーアプリケーションを次の歌にスキップさせることによって、ユーザデバイス304に「次を再生」ボイスアクションを実行させることができる。
【0100】
いくつかの実装形態では、トリガされたボイスアクションを示す通知は、ユーザデバイス304における出力に提供されてもよい。たとえば、ボイスアクションシステム300またはユーザデバイス304のOSは、トリガされたボイスアクションを識別する通知をユーザデバイス304において出力させてもよい。いくつかの例では、トリガされたボイスアクションを識別する通知は、トリガされたボイスアクションに関連付けられたアプリケーションが、ボイスアクションを検出するまたはボイスアクションをトリガする役目を果たさないことがユーザ305に明らかであるようなやり方で、提供されてもよい。たとえば、ユーザデバイス304において提供される通知は、ボイスアクションシステム300、ユーザデバイス304、またはユーザデバイス304のOSに関連付けられていると認識可能なボイストーンを使用してもよく、ユーザデバイス304上で動作するメディアプレイヤーアプリケーションに関連付けられていると認識可能なボイストーンを使用しなくてもよい。別の例では、通知は、ユーザ305からのボイス入力を扱うシステムまたはアプリケーションをトリガされたボイスアクションを実行しているアプリケーションと区別するやり方で示されてもよい。たとえば、通知は、「あなたは‘次を再生'ボイスアクションをトリガしました。今、メディアプレイヤーアプリケーションを次の歌にスキップさせます」を述べ、それによりメディアプレイヤーアプリケーションはボイス入力を処理する役目を果たしていなかったことをユーザ305に示してもよい。
【0101】
図4は、ボイスアクションシステムによって実行される例示的なプロセス400のための流れ図を示す。いくつかの例では、
図4のプロセス400は、
図1のボイスアクションシステム100によって、または
図1のボイスアクションシステム100の構成要素によって実行可能である。プロセス400は、1つまたは複数のユーザデバイス上にインストールされているアプリケーションのための新しいボイスアクションをアプリケーション開発者が確立することができ、アプリケーションをインストールされたユーザデバイスのユーザが、新しいボイスアクションに関連付けられた動作をユーザデバイス上のアプリケーションによって実行させるために、新しいボイスアクションをトリガすることができる、プロセスについて説明する。
【0102】
最初に、ボイスアクションシステムとは異なるソフトウェアアプリケーションのための新しいボイスアクションを指定するデータがボイスアクションシステムによって受信され、このデータは、新しいボイスアクションを実行するための1つまたは複数の動作と、新しいボイスアクションをトリガするための1つまたは複数のトリガ用語とを含む(402)。たとえば、ソフトウェアアプリケーションに関連付けられたアプリケーション開発者101a〜101nは、新しいボイスアクションを定義するデータを、端末102a〜102nを使用してボイスアクションシステム100に提示することができる。
【0103】
新しいボイスアクションを定義するデータは、新しいボイスアクションを実行するための1つまたは複数の動作と新しいボイスアクションをトリガするための1つまたは複数のトリガ用語を指定するデータを含むことができる。たとえば、新しいボイスアクションを定義するデータは、トリガ用語「次を再生」を指定してもよく、新しいボイスアクションがメディアプレイヤーアプリケーションを次の歌にスキップさせるために動作を実行するべきであることを指定してもよい。データは、新しいボイスアクションが関係するアプリケーション、新しいボイスアクションがユーザによる使用のためにいつイネーブルにされるべきかのコンテキスト、または他の情報などの新しいボイスアクションに関連するさらなる情報も指定してもよい。たとえば、「次を再生」ボイスアクションを定義するデータはまた、ボイスアクションがメディアプレイヤーアプリケーションに関係することを指定してもよく、メディアプレイヤーアプリケーションがフォアグラウンドで動作しており、オーディオプレイヤーモードであるとき、ボイスアクションがイネーブルにされるべきであることを指定してもよい。
【0104】
ソフトウェアアプリケーションのためのコンテキスト的ボイスアクション意向が、少なくとも受信されたデータに基づいて、ボイスアクションシステムによって生成され、このコンテキスト的ボイスアクション意向は、ソフトウェアアプリケーションによって受信されたときに、ソフトウェアアプリケーションが新しいボイスアクションの1つまたは複数の動作を実行することを要求するデータを含む(404)。たとえば、
図1のボイスアクションシステム100は、新しいボイスアクションを指定するデータを受信してもよく、受信されたデータに基づいて、新しいボイスアクションのためのコンテキスト的ボイスアクション意向を生成してもよい。ボイスアクションシステム100は、コンテキスト的ボイスアクション意向をアプリケーションボイスアクションデータベース110内に記憶してもよい。いくつかの実装形態では、ボイスアクションシステム100は、受信されたデータを検証して、受信された文法をコンテキスト的ボイスアクション意向を生成するように帰納することによって、
図2に関して説明されたプロセスに類似したプロセスを使用して意向を生成してもよい。いくつかの実装形態では、生成されたコンテキスト的ボイスアクション意向は、新しいボイスアクションを実行するための1つまたは複数の動作を実行するようにソフトウェアアプリケーションを制御することができる情報を記憶することができる。
【0105】
コンテキスト的ボイスアクション意向は、ボイスアクションシステムによって、新しいボイスアクションのための1つまたは複数のトリガ用語に関連付けられる(406)。たとえば、新しいボイスアクションのためのコンテキスト的ボイスアクション意向がボイスアクションシステム100によって作成された後、ボイスアクションシステム100は、新しいボイスアクションのためのコンテキスト的ボイスアクション意向を受信されたデータ内で指定された1つまたは複数のトリガ用語と関連付けることができる。関連付けられた1つまたは複数のトリガ用語を有するコンテキスト的ボイスアクション意向は、アプリケーションボイスアクションデータベース110において記憶されてもよい。いくつかの実装形態では、1つまたは複数のトリガ用語をコンテキスト的ボイスアクション意向と関連付けることは、コンテキスト的ボイスアクション意向内の1つまたは複数のトリガ用語を指定することを伴うことができる。他の実装形態では、1つまたは複数のトリガ用語のうちの1つの受信がコンテキスト的ボイスアクション意向の識別をもたらすように、関連付けは、別の方法で1つまたは複数のトリガ用語をコンテキスト的ボイスアクション意向とリンクすることによって遂行されてもよい。
【0106】
ボイスアクションシステムは、ソフトウェアアプリケーションをインストールされたデバイスによって取得されたユーザ発話の指示を受信するように構成される(408)。たとえば、ボイスアクションシステム100は、発話がユーザデバイス104から受信されたという指示を受信するように構成されてもよく、この発話は、ユーザ105からのボイス入力としてユーザデバイス104によって取得される。ユーザデバイス104は、既にインストールされた、新しいボイスに関連付けられたソフトウェアアプリケーション、たとえば、
図1に関して説明されたメディアプレイヤーアプリケーションを有することができる。
【0107】
ボイスアクションシステムは、ユーザ発話のトランスクリプションが、コンテキスト的ボイスアクション意向に関連付けられた1つまたは複数のトリガ用語に対応することを判定するように構成される(410)。たとえば、ボイスアクションシステム100は、ユーザ発話に対応するオーディオデータを受信するように構成されてもよく、ボイスアクションシステム100の音声認識エンジン130を使用してユーザ発話のトランスクリプションを生成することができる。音声認識エンジン130によって生成されたユーザ発話のトランスクリプションは、新しいボイスアクションのためのコンテキスト的ボイスアクション意向と他のボイスアクションのためのコンテキスト的ボイスアクション意向とを含む、複数のコンテキスト的ボイスアクション意向に関連付けられたトリガ用語と比較可能である。
【0108】
いくつかの例では、比較は、
図1のボイスアクション選択器150によって実行されてもよく、ボイスアクション選択器150は、ユーザ発話のトランスクリプションをアプリケーションボイスアクションデータベース110またはOSボイスアクションデータベース120において記憶されたコンテキスト的ボイスアクション意向のためのトリガ用語と比較することができる。この比較に基づいて、ボイスアクション選択器150は、ユーザ発話のトランスクリプションが、新しいボイスアクションのコンテキスト的ボイスアクション意向に関連付けられた1つまたは複数のトリガ用語のうちの1つまたは複数に合致することを判定してもよい。たとえば、音声認識エンジン130は、「次を再生」を読む、ユーザデバイス104から受信されたユーザ発話のためのトランスクリプションを生成してもよい。ボイスアクション選択器150は、「次を再生」ボイスアクションをコンテキスト的ボイスアクション意向候補に関連付けられたトリガ用語と比較して、トランスクリプションが、新しい「次を再生」ボイスアクションのためのコンテキスト的ボイスアクション意向に関連付けられた「次を再生」トリガフレーズに合致することを判定してもよい。
【0109】
ボイスアクションシステムは、コンテキスト的ボイスアクション意向を特定のデバイスに提供し、それにより特定のデバイス上にインストールされたソフトウェアアプリケーションが新しいボイスアクションの1つまたは複数の動作を実行することを要求するように構成される(412)。たとえば、ボイスアクションシステム100の音声認識エンジン130によって生成されたユーザ発話のトランスクリプションが、新しいボイスアクションのためのコンテキスト的ボイスアクション意向に関連付けられた1つまたは複数のトリガ用語に合致することを判定したことに応答して、ボイスアクション選択器150は、新しいボイスアクションのためのコンテキスト的ボイスアクション意向をユーザデバイス104に提供することができる。新しいボイスアクションのためのコンテキスト的ボイスアクション意向は、ユーザデバイス104上にインストールされたソフトウェアアプリケーションが新しいボイスアクションの1つまたは複数の動作を実行することを効果的に要求することができる。たとえば、コンテキスト的ボイスアクション意向は、ユーザデバイス104がコンテキスト的ボイスアクション意向を受信すると新しいボイスアクションに関連付けられた1つまたは複数の動作をトリガするデータを含んでもよい。
【0110】
いくつかの実装形態について説明してきた。それにもかかわらず、本開示の趣旨および範囲から逸脱することなく、さまざまな修正が加えられてもよいことが理解されよう。たとえば、上記に示されたさまざまな形式のフローが、ステップが並び替えられた、追加された、または除去された状態で使用されてもよい。したがって、他の実装形態は、以下の特許請求の範囲内に含まれる。
【0111】
本明細書において説明されたシステムおよび/または方法が、ユーザについての個人情報を収集してもよい、または個人情報を利用してもよい事例の場合、ユーザは、プログラムまたは特徴が個人情報、たとえば、ユーザのソーシャルネットワーク、社会的行動もしくは活動、職業、好み、もしくは現在のロケーションについての情報を収集するかどうかを制御するためのまたはシステムおよび/もしくは方法が、ユーザに対する関連のより高い動作を実行することができるかどうか、ならびに/もしくはどのようにして実行するかを制御するための機会を提供されてもよい。さらに、個人を識別可能な情報が除去されるように、あるデータが、記憶または使用される前に、1つまたは複数のやり方で匿名扱いにされてもよい。たとえば、ユーザの識別情報が、個人を識別可能な情報がユーザのために判定不可能であるように匿名扱いにされてもよく、ユーザの特定のロケーションが判定不可能であるように、ユーザの地理的ロケーションは、ロケーション情報が取得された場合、都市、ZIPコード、または州レベルなどに一般化されてもよい。したがって、ユーザは、自分についての情報がどのように収集および使用されるかに対する制御を有してもよい。
【0112】
前述の実施形態は、主にユーザデバイス上にインストールされたアプリケーションとともに使用するためのボイスアクションの開発に関して説明されてきたが、説明された特徴は、機械、他のデバイス、ロボット、または他のシステムに関しても使用されてもよい。たとえば、
図1のボイスアクションシステム100は、関連付けられたコンピューティングシステムを有する機械と対話するためのボイスアクションを開発および実施するために利用されてもよく、ロボットまたはロボット的な構成要素を有するシステムと対話するためのボイスアクションを開発および実施するために使用されてもよく、機器、エンターテイメントシステム、または他のデバイスと対話するためのボイスアクションを開発および実施するために使用されてもよく、車両または他の輸送システムと対話するためのボイスアクションを開発および実施するために使用されてもよい。
【0113】
本明細書において説明された実施形態および機能的動作のすべては、デジタル電子回路内で実施されてもよく、本明細書に開示されている構造およびそれらの構造的等価物を含めて、コンピュータソフトウェア、ファームウェア、またはハードウェア内で実施されてもよく、それらのうちの1つまたは複数の組合せで実施されてもよい。実施形態は、1つまたは複数のコンピュータプログラム製品、すなわち、データ処理装置による実行のためのまたはデータ処理装置の動作を制御するためのコンピュータ可読媒体上で符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実施されてもよい。コンピュータ可読媒体は、機械可読記憶デバイスであってもよく、機械可読記憶基板であってもよく、メモリデバイスであってもよく、機械可読伝搬信号を遂行する物体の構成であってもよく、それらのうちの1つまたは複数の組合せであってもよい。「データ処理装置」という用語は、例として、プログラム可能なプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる装置、デバイス、および機械を包含する。装置は、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含んでもよい。伝搬信号は、人工的に生成された信号、たとえば、適切な受信機装置への送信のために情報を符号化するために生成される、機械により生成された電気信号、光信号、または電磁信号である。
【0114】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語またはインタープリタ型言語を含む、任意の形式のプログラミング言語で記述されてもよく、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境における使用に適した他のユニットとして含む任意の形式で、配布されてもよい。コンピュータプログラムは、必ずしもファイルシステム内のファイルに対応するとは限らない。プログラムは、他のプログラムまたはデータを保持するファイル(たとえば、マークアップ言語ドキュメント内に記憶された1つまたは複数のスクリプト)の一部分の中に記憶されてもよく、問題のプログラム専用の単一ファイル内に記憶されてもよく、複数の協調されたファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部分を記憶するファイル)内に記憶されてもよい。コンピュータプログラムは、1台のコンピュータ上で実行されるように配布されてもよく、1つの場所に設置された複数のコンピュータ上で実行されるように配布されてもよく、複数の場所にわたって分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配布されてもよい。
【0115】
本明細書において説明されたプロセスおよび論理フローは、入力データに対して動作させ、出力を生成することによって機能を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能なプロセッサによって実行されてもよい。プロセスおよび論理フローは、特殊目的論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行されてもよく、装置は、特殊目的論理回路としても実装されてもよい。
【0116】
コンピュータプログラムの実行に適したプロセッサとしては、例として汎用マイクロプロセッサと特殊目的マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサがある。一般に、プロセッサは、読み出し専用メモリまたはランダムアクセスメモリまたはその両方から、命令およびデータを受信する。
【0117】
コンピュータの本質的な要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを含む、またはこれらからデータを受信する、もしくはこれにデータを転送する、もしくは両方を行うために、動作可能に結合される。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、タブレットコンピュータ、携帯電話、携帯情報端末(PDA)、携帯型オーディオプレイヤー、全地球測位システム(GPS)受信機内に埋め込まれてもよい。コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、あらゆる形式の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、特殊目的論理回路によって補われてもよく、この中に組み込まれてもよい。
【0118】
ユーザとの対話を提供するために、実施形態は、情報をユーザに表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)モニタまたはLCD(液晶ディスプレイ)モニタと、ユーザが入力をコンピュータに提供してもよい、キーボードと、ポインティングデバイス、たとえば、マウスまたはトラックボールとを有するコンピュータ上で実施されてもよい。他の種類のデバイスも、ユーザとの対話を提供するために使用されてもよい。たとえば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよい。ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形式において、受信されてもよい。
【0119】
実施形態は、バックエンドコンポーネントを含む、たとえば、データサーバとして、コンピューティングシステム内で実施されてもよく、ミドルウェアコンポーネント、たとえば、アプリケーションサーバを含むコンピューティングシステム内で実施されてもよく、フロントエンドコンポーネント、たとえば、それを通してユーザが一実装形態、または1つまたは複数のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せと対話してもよいグラフィカルユーザインタフェースまたはウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステム内で実施されてもよい。システムの構成要素は、デジタルデータ通信の任意の形式または媒体、たとえば、通信ネットワークによって相互接続されてもよい。通信ネットワークの例としては、ローカルエリアネットワーク("LAN")、およびワイドエリアネットワーク("WAN")たとえばインターネットがある。
【0120】
コンピューティングシステムは、クライアントと、サーバとを含んでもよい。クライアントおよびサーバは、一般に、互いから遠く離れており、一般的には、通信ネットワークを通して相互作用する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で実行されており、互いに対するクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0121】
本明細書は多くの詳細を含むが、これらは、本開示または特許請求されてよいものの範囲に対する制限と解釈されるべきではなく、むしろ、特定の実施形態に固有の特徴の説明と解釈されるべきである。本明細書内で別個の実施形態の文脈において説明されるある特徴はまた、単一の実施形態において組み合わせて実施されてもよい。反対に、単一の実施形態の文脈において説明されるさまざまな特徴もまた、複数の実施形態において別々に実施されてもよく、任意の適切なサブコンビネーションで実施されてもよい。さらに、特徴は、上記である組合せで働くと説明され、最初はそのようなものとして特許請求される場合もあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除されてもよく、特許請求される組合せは、サブコンビネーションまたはサブコンビネーションの変形形態を対象としてもよい。
【0122】
同様に、動作は、図面において特定の順序で示されているが、これは、所望の結果を達成するために、そのような動作が、示された特定の順序または逐次的な順序で実行されるべきであること、またはすべての示された動作が実行されるべきであることを必要とすると理解されるべきではない。ある環境では、マルチタスクおよび並列処理が有利な場合がある。さらに、上記で説明された実施形態におけるさまざまなシステム構成要素の分離は、そのような分離をすべての実施形態において必要とすると理解されるべきではなく、説明されたプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品内で一緒に統合されてもよく、複数のソフトウェア製品へとパッケージ化されてもよいことを理解されたい。
【0123】
HTMLファイルが言及された各事例では、他のファイルタイプまたはフォーマットに代えられてもよい。たとえば、HTMLファイルは、XML、JSON、プレーンテキスト、または他のタイプのファイルによって置き換えられてもよい。さらに、テーブルまたはハッシュテーブルが言及された場合、他のデータ構造(スプレッドシート、リレーショナルデータベース、または構造化されたファイルなど)が使用されてもよい。
【0124】
さらなる実装形態が、以下の例にまとめられている。
【0125】
例1:
ボイスアクションシステムによって、前記ボイスアクションシステムとは異なるソフトウェアアプリケーションのための新しいボイスアクションを指定するデータを受信することであって、このデータは、新しいボイスアクションを実行するための1つまたは複数の動作と、新しいボイスアクションをトリガするための1つまたは複数のトリガ用語とを含む、受信することと、
ボイスアクションシステムによって、少なくとも受信されたデータに基づいて、ソフトウェアアプリケーションのためのコンテキスト的ボイスアクション意向を生成することであって、コンテキスト的ボイスアクション意向は、ソフトウェアアプリケーションによって受信されたときに、ソフトウェアアプリケーションが新しいボイスアクションの1つまたは複数の動作を実行することを要求するデータを含む、生成することと、
ボイスアクションシステムによって、コンテキスト的ボイスアクション意向を新しいボイスアクションのための1つまたは複数のトリガ用語と関連付けることと
を含み、
ボイスアクションシステムが、
ソフトウェアアプリケーションをインストールされたデバイスによって取得されたユーザ発話の指示を受信し、
ユーザ発話のトランスクリプションは、コンテキスト的ボイスアクション意向に関連付けられた1つまたは複数のトリガ用語に対応すると判定し、
この判定に応答して、コンテキスト的ボイスアクション意向をデバイスに提供し、それによりデバイス上にインストールされたソフトウェアアプリケーションが新しいボイスアクションの1つまたは複数の動作を実行することを要求する
ように構成される、コンピュータに実装される方法。
【0126】
例2:
受信されたデータがコンテキストを指定し、このコンテキストは、新しいボイスアクションがイネーブルにされたとき、デバイスのステータスまたはソフトウェアアプリケーションのステータスを指定する、例1に記載のコンピュータに実装される方法。
【0127】
例3:
コンテキストは、ソフトウェアアプリケーションが、ソフトウェアアプリケーションがインストールされたデバイスのフォアグラウンドで動作していることを指定する、例2に記載のコンピュータに実装される方法。
【0128】
例4:
コンテキストは、ソフトウェアアプリケーションが、ソフトウェアアプリケーションがインストールされたデバイスのバックグラウンドで動作していることを指定する、例2に記載のコンピュータに実装される方法。
【0129】
例5:
コンテキストは、ソフトウェアアプリケーションが特定のアクティビティを実行していることを指定する、例2に記載のコンピュータに実装される方法。
【0130】
例6:
コンテキストは、ソフトウェアアプリケーションが実行している特定のアクティビティが特定のアクティビティ状態であることを指定する、例2に記載のコンピュータに実装される方法。
【0131】
例7:
コンテキスト的ボイスアクション意向を新しいボイスアクションのためのコンテキストと関連付けることと、
ボイスアクションシステムによって、ソフトウェアアプリケーションをインストールされた特定のデバイスのステータスまたは特定のデバイス上にインストールされたソフトウェアアプリケーションのステータスを示すコンテキスト情報を受信することと、
コンテキスト情報が新しいボイスアクションのためのコンテキストを満たすと判定することと、
特定のデバイスによって取得されたユーザ発話のトランスクリプションが、コンテキスト的ボイスアクション意向に関連付けられた1つまたは複数のトリガ用語に対応すること、およびコンテキスト情報が、コンテキスト的ボイスアクション意向に関連付けられたコンテキストを満たすことを判定したことに応答して、ボイスアクションシステムによって特定のデバイスに、コンテキスト的ボイスアクション意向を提供し、それにより特定のデバイス上にインストールされたソフトウェアアプリケーションが新しいボイスアクションの1つまたは複数の動作を実行することを要求することと
を含む、例2から例6のうちの1つに記載のコンピュータに実装される方法。
【0132】
例8:
特定のデバイスのステータスまたは特定のデバイス上にインストールされたソフトウェアアプリケーションのステータスを示すコンテキスト情報を受信することが、
ボイスアクションシステムによって特定のデバイスに、特定のコンテキスト情報の要求を提供することと、
この要求に応答して特定のコンテキスト情報を受信することと
を含む、例7に記載のコンピュータに実装される方法。
【0133】
例9:
コンテキスト情報が第2のボイスアクションのためのコンテキストを満たすこと、およびユーザ発話のトランスクリプションが、第2のボイスアクションのための意向に関連付けられた1つまたは複数のトリガ用語に対応することを判定することであって、第2のボイスアクションに対する意向は、第2のボイスアクションを実行するための1つまたは複数の動作を指定する、判定することと、
この判定に応答して、新しいボイスアクションおよび第2のボイスアクションからボイスアクションを選択することと、
ボイスアクションシステムによって特定のデバイスに、選択されたボイスアクションに関連付けられた意向を提供し、それにより特定のデバイス上にインストールされたソフトウェアアプリケーションが、選択されたボイスアクションの1つまたは複数の動作を実行することを要求することと
を含む、例7または8のうちの1つに記載のコンピュータに実装される方法。
【0134】
例10:
新しいボイスアクションおよび第2のボイスアクションから選択されたボイスアクションを選択することが、新しいボイスアクションまたは第2のボイスアクションのうちの1つのユーザ選択を示すデータを受信したことに応答して、選択されたボイスアクションを選択することを含む、例9に記載のコンピュータに実装される方法。
例11:
【0135】
新しいボイスアクションおよび第2のボイスアクションから選択されたボイスアクションを選択することが、
新しいボイスアクションおよび第2のボイスアクションの各々にスコアを割り当てることと、
少なくとも新しいボイスアクションおよび第2のボイスアクションの各々に割り当てられたスコアに基づいて、選択されたボイスアクションを選択することと
を含む、例9または10に記載のコンピュータに実装される方法。
【0136】
例12:
新しいボイスアクションおよび第2のボイスアクションから選択されたボイスアクションを選択することが、選択されたボイスアクションに関連付けられたソフトウェアアプリケーションがフォアグラウンドで動作していると判定したことに応答して、選択されたボイスアクションを選択することを含む、例9から11のうちの1つに記載のコンピュータに実装される方法。
【0137】
例13:
ソフトウェアアプリケーションのためのコンテキスト的ボイスアクション意向を生成することが、新しいボイスアクションの1つまたは複数の動作がソフトウェアアプリケーションによって実行可能であると判定することを含む、例1から12のうちの1つに記載のコンピュータに実装される方法。
【0138】
例14:
ソフトウェアアプリケーションをインストールされた特定のデバイスによって取得されたユーザ発話のトランスクリプションが、コンテキスト的ボイスアクション意向に関連付けられた1つまたは複数のトリガ用語に類似していることを判定することと、
この判定に応答して、ボイスアクションシステムによって特定のデバイスに、ユーザ発話が1つまたは複数のトリガ用語を指定したかどうか、またはソフトウェアアプリケーションに新しいボイスアクションを実行させることが意図されたかどうかを確認するユーザ入力の要求を示すデータを提供することと、
この要求に応答して、ボイスアクションシステムによって特定のデバイスから、確認を示すデータを受信することと、
確認を示すデータを受信したことに応答して、ボイスアクションシステムによって特定のデバイスに、コンテキスト的ボイスアクション意向を提供し、それにより特定のデバイス上にインストールされたソフトウェアアプリケーションが新しいボイスアクションの1つまたは複数の動作を実行することを要求することと
を含む、例1から13のうちの1つに記載のコンピュータに実装される方法。
【0139】
例15:
ボイスアクションシステムによって、ソフトウェアアプリケーションに関連付けられた開発者から、ソフトウェアアプリケーションのための新しいボイスアクションを配布する要求を受信することと、
この要求に応答して、この要求に応答したソフトウェアアプリケーションのための新しいボイスアクションを配布することであって、ソフトウェアアプリケーションのための新しいボイスアクションをイネーブルにする、配布することと
を含む、例1から14のうちの1つに記載のコンピュータに実装される方法。
【0140】
例16:
ボイスアクションシステムによって、ソフトウェアアプリケーションに関連付けられた開発者からソフトウェアアプリケーションのための新しいボイスアクションの配布を無効にする要求を受信することと、
この要求に応答して、要求に応答したソフトウェアアプリケーションのための新しいボイスアクションの配布を無効にすることであって、ソフトウェアアプリケーションのための新しいボイスアクションをディスエーブルにする、無効にすることと
を含む、例1から15のうちの1つに記載のコンピュータに実装される方法。
【0141】
例17:
ボイスアクションシステムによって、ソフトウェアアプリケーションに関連付けられた開発者から、新しいボイスアクションのテストをイネーブルにする要求を受信することであって、この要求は、新しいボイスアクションがイネーブルにされるべき1つまたは複数のデバイスを指定する、受信することと、
この要求に応答して、1つまたは複数の指定されたデバイスのための新しいボイスアクションをイネーブルにすることであって、新しいボイスアクションは、指定されたデバイス内に含まれないデバイスに対してディスエーブルにされる、イネーブルにすることと
を含む、例1から16のうちの1つに記載のコンピュータに実装される方法。
【0142】
例18:
ボイスアクションシステムによって、ソフトウェアアプリケーションをインストールされた特定のデバイスによって取得されたユーザ発話の指示を受信することと、
ボイスアクションシステムによって、ユーザ発話のトランスクリプションが、コンテキスト的ボイスアクション意向に関連付けられた1つまたは複数のトリガ用語に対応することを判定することと、
この判定に応答して、ボイスアクションシステムによって特定のデバイスに、コンテキスト的ボイスアクション意向を提供し、それにより特定のデバイス上にインストールされたソフトウェアアプリケーションが新しいボイスアクションの1つまたは複数の動作を実行することを要求することと
を含む、例1から17のうちの1つに記載のコンピュータに実装される方法。
【0143】
例19:
非一時的コンピュータ可読記憶デバイスであって、1つまたは複数のコンピュータによって実行可能な、そのような実行時に、例1から18のステップを含む動作を実行することを1つまたは複数のコンピュータに行わせる命令を含むソフトウェアを記憶する、非一時的コンピュータ可読記憶デバイス。
【0144】
ボイスアクションシステムによって、そのボイスアクションシステムとは異なるアプリケーションのための新しいボイスアクションを指定するデータを受信するための方法、システム、および装置について説明してきた。アプリケーションのためのボイスアクション意向は、少なくともデータに基づいて生成され、このボイスアクション意向は、アプリケーションによって受信されたときに、新しいボイスアクションのために指定された1つまたは複数の動作をアプリケーションが実行することを要求するデータを含む。ボイスアクション意向は、新しいボイスアクションのために指定されたトリガ用語と関連付けられる。ボイスアクションシステムは、アプリケーションをインストールされたデバイスによって取得されたユーザ発話の指示を受信するように構成され、ユーザ発話のトランスクリプションが、ボイスアクション意向に関連付けられたトリガ用語に対応することを判定する。この判定に応答して、ボイスアクションシステムは、ボイスアクション意向をデバイスに提供する。
【0145】
したがって、特定の実施形態について説明してきた。他の実施形態は、以下の特許請求の範囲内に含まれる。たとえば、特許請求の範囲において記載されるアクションは、異なる順序で実行されてもよく、依然として所望の結果を達成する。