(57)【要約】  各実装形態は、リモートに生成された自動化アシスタントコンテンツのレンダリングにおけるクライアントデバイスレイテンシを軽減することに関する。実装形態のうちのいくつかは、各インスタンスが、多重アクション要求の対応する自動化アシスタントアクションに応じたコンテンツに基づく出力の複数のインスタンスのレンダリング間のクライアントデバイスレイテンシを軽減する。たとえば、それらの実装形態は、多重アクション要求の第1の自動化アシスタントアクションに応じた第1のコンテンツに基づく第1の出力のレンダリングと、多重アクション要求の第2の自動化アシスタントアクションに応じた第2のコンテンツに基づく第2の出力のレンダリングとの間のレイテンシを低減させることができる。
2021515341.tif 000002
【特許請求の範囲】
【請求項１】
クライアントデバイスから離れた1つまたは複数の自動化アシスタントサーバデバイスの1つまたは複数のプロセッサによって、
前記クライアントデバイスによって送信された多重アクション要求をネットワークインターフェースを介して受信するステップと、
前記多重アクション要求に基づいて、
前記多重アクション要求によって示される第1の自動化アシスタントアクション、および
前記多重アクション要求によって示される第2の自動化アシスタントアクションであって、前記第1の自動化アシスタントアクションとは異なる第2の自動化アシスタントアクションを判定するステップと、
前記多重アクション要求によって示される前記第1の自動化アシスタントアクションに基づく第1のアクションコンテンツを生成するステップと、
前記多重アクション要求を受信したことに応じて、前記第1の自動化アシスタントアクションに基づく前記第1のアクションコンテンツを前記クライアントデバイスに送信するステップであって、
前記送信された第1のアクションコンテンツを受信したことに応じて、前記クライアントデバイスが、前記第1のアクションコンテンツに基づく第1の出力をレンダリングする、ステップと、
前記クライアントデバイスによる前記第1の出力の前記レンダリングが完了する前に、
前記第2の自動化アシスタントアクションに基づく第2のアクションコンテンツの少なくとも一部を生成するステップと、
前記多重アクション要求を受信したことに応じて、前記第2の自動化アシスタントアクションに基づく前記第2のアクションコンテンツの前記少なくとも一部を前記クライアントデバイスに送信するステップと
を含み、
前記クライアントデバイスは、前記クライアントデバイスによる前記第1の出力の前記レンダリングが完了する前に前記第2のアクションコンテンツの前記少なくとも一部を受信し、
前記クライアントデバイスは、前記第2のアクションコンテンツの前記送信された少なくとも一部を受信したことに応じて、前記第2のアクションコンテンツの前記少なくとも一部を前記クライアントデバイスのローカルメモリにバッファし、
前記クライアントデバイスは、前記第1の出力のレンダリングが完了したことに応じて、前記ローカルメモリにバッファされた前記第2のアクションコンテンツの前記少なくとも一部にアクセスして、前記第2のアクションコンテンツの前記少なくとも一部に基づく第2の出力をレンダリングする、方法。
【請求項２】
前記第1の自動化アシスタントアクションおよび前記第2の自動化アシスタントアクションを判定するステップ、前記第1のアクションコンテンツを生成するステップ、前記第1のアクションコンテンツを送信するステップ、前記第2のアクションコンテンツを生成するステップ、前記第2のアクションコンテンツを送信するステップは、
すべて、前記多重アクション要求を受信したことに応じて実行され、かつ
すべて、前記クライアントデバイスによって送信された任意の他の要求を受信する前に実行される、請求項1に記載の方法。
【請求項３】
前記第2のアクションコンテンツの前記少なくとも一部を生成する前記ステップは、
前記多重アクション要求によって示される前記第2の自動化アシスタントアクションに基づくエージェント要求をエージェントアプリケーションに送信するステップと、
前記エージェント要求に応じた応答を前記エージェントアプリケーションから受信するステップと、
前記応答に基づいて前記第2のアクションコンテンツの前記少なくとも一部を生成するステップとを含む、請求項1または2に記載の方法。
【請求項４】
前記エージェント要求を送信する前記ステップは、前記エージェントアプリケーションに、ネットワーク化された周辺デバイスの状態を変更させ、前記応答は、前記状態の変更が成功したことを示し、前記第2のアクションコンテンツの前記少なくとも一部は、前記クライアントデバイスによってレンダリングされる前記第2の出力に、前記状態の変更が成功したことを前記クライアントデバイスのユーザに知覚可能に伝達させる、請求項3に記載の方法。
【請求項５】
前記第2のアクションコンテンツの前記少なくとも一部は、前記応答に含められる、請求項3または4に記載の方法。
【請求項６】
前記第1の出力は、前記クライアントデバイスの1つまたは複数のスピーカを介してレンダリングされたオーディオ出力を備える、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記第1のアクションコンテンツはオーディオデータを備え、前記クライアントデバイスは、前記オーディオデータに基づいて前記1つまたは複数のスピーカを駆動することによって前記第1の自動化アシスタントアクションに基づく前記第1の出力をレンダリングする、請求項6に記載の方法。
【請求項８】
前記第1のアクションコンテンツは、テキストを備え、前記クライアントデバイスは、前記クライアントデバイスにローカルに記憶されたテキスト音声合成モデルを使用した前記テキストの処理に基づいてオーディオデータを生成し、前記生成されたオーディオデータを、前記オーディオ出力をレンダリングするために提供することによって前記第1のアクションコンテンツに基づく前記第1の出力をレンダリングする、請求項6または7に記載の方法。
【請求項９】
前記クライアントデバイスとのストリーミング接続を確立するステップをさらに含み、
前記第1のアクションコンテンツを送信する前記ステップが前記ストリーミング接続を介して行われ、
前記第2のアクションコンテンツの前記少なくとも一部を送信する前記ステップが前記ストリーミング接続を介して行われる、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
前記多重アクション要求は、前記クライアントデバイスにおいて検出された発話に対応するオーディオデータを備え、前記方法は、
前記多重アクション要求の前記オーディオデータを処理して前記オーディオデータをテキストに変換するステップをさらに含み、
前記多重アクション要求に基づいて前記第1の自動化アシスタントアクションおよび前記第2の自動化アシスタントアクションを判定する前記ステップは、
前記第1の自動化アシスタントアクションと前記第2の自動化アシスタントアクションがどちらも、前記テキストにマップされるとともに前記クライアントデバイスの識別子にマップされると判定するステップを含む、請求項1から9のいずれか一項に記載の方法。
【請求項１１】
前記多重アクション要求に基づいて前記第1の自動化アシスタントアクションおよび前記第2の自動化アシスタントアクションを判定する前記ステップは、前記多重アクション要求が、前記第1の自動化アシスタントアクションを前記第2の自動化アシスタントアクションよりも前に実行することを指示していると判定するステップをさらに含み、
前記第1のアクションコンテンツを送信する前記ステップは、前記多重アクション要求が、前記第2の自動化アシスタントアクションの直前に前記第1の自動化アシスタントアクションを実行することを指示していることに基づいて、前記第2のアクションコンテンツの前記少なくとも一部を送信する前に行われる、請求項1から10のいずれか一項に記載の方法。
【請求項１２】
前記第1の自動化アシスタントアクションに基づく前記第1のアクションコンテンツを生成する前記ステップは、
前記第1のアクションコンテンツのうちの第2の部分を生成することが完了する前に前記第1のアクションコンテンツの第1の部分を生成するステップを含み、
前記第1の自動化アシスタントアクションに基づく前記第1のアクションコンテンツを送信する前記ステップは、
前記第1のアクションコンテンツの前記第1の部分が前記クライアントデバイスによって直ちにレンダリング可能であると判定したことに基づいて、前記第2の部分の生成が完了する前に前記第1のアクションコンテンツの前記第1の部分を送信するステップと、
前記第2の部分の生成が完了した後で前記第2の部分を送信するステップとを含む、請求項1から11のいずれか一項に記載の方法。
【請求項１３】
前記第1の部分は、オーディオデータまたはテキストの第1のセグメントを備え、前記第2の部分は、オーディオデータまたはテキストの第2のセグメントを備える、請求項12に記載の方法。
【請求項１４】
前記第1の部分は、少なくとも1つのディスプレイ変数を有するグラフィカルインターフェースを備え、前記第2の部分は、前記少なくとも1つのディスプレイ変数の値を定義する、請求項13に記載の方法。
【請求項１５】
クライアントデバイスによって、1つまたは複数の自動化アシスタントサーバデバイスのシステムに多重アクション要求を送信するステップと、
システムによって、前記クライアントデバイスによって送信された前記多重アクション要求を受信するステップと、
前記システムによって、前記多重アクション要求に基づいて、前記多重アクション要求によって示される第1の自動化アシスタントアクション、および前記多重アクション要求によって示される異なる第2の自動化アシスタントアクションを判定するステップと、
前記システムによって、前記第1の自動化アシスタントアクションに基づく第1のアクションコンテンツを生成するステップと、
前記システムによって、第1のアクションに基づく前記第1のアクションコンテンツを送信するステップと、
前記クライアントデバイスによって、前記第1のアクションコンテンツを受信するステップと、
前記クライアントデバイスによって、前記第1のアクションコンテンツを受信したことに応じて、前記第1のアクションコンテンツに基づく第1の出力をレンダリングするステップと、
前記クライアントデバイスによる前記第1の出力の前記レンダリングが完了する前に、
前記システムによって、前記第2の自動化アシスタントアクションに基づく第2のアクションコンテンツを生成するステップと、
前記システムによって、前記第2の自動化アシスタントアクションに基づく前記第2のアクションコンテンツを送信するステップと、
前記クライアントデバイスによって、前記第2のアクションコンテンツを受信するステップと、
前記クライアントデバイスによって、前記クライアントデバイスのローカルメモリに前記第2のアクションコンテンツをバッファするステップと、
前記クライアントデバイスによって、前記第1の出力の前記レンダリングが完了したことに応じて、前記ローカルメモリにバッファされた前記第2のアクションコンテンツに基づく第2の出力をレンダリングするステップとを含む、方法。
【請求項１６】
前記第1のアクションコンテンツは、オーディオデータを備え、前記第1のアクションコンテンツに基づく前記第1の出力をレンダリングする前記ステップは、前記オーディオデータに基づいて前記クライアントデバイスの1つまたは複数のスピーカを駆動するステップを含む、請求項15に記載の方法。
【請求項１７】
前記第1のアクションコンテンツはテキストを備え、前記第1のアクションコンテンツに基づく前記第1の出力をレンダリングする前記ステップは、
前記クライアントデバイス上にローカルに記憶されたテキスト音声合成モデルを使用した前記テキストの処理に基づいてオーディオデータを生成し、
前記クライアントデバイスの1つまたは複数のスピーカを介してオーディオ出力をレンダリングするために、前記生成されたオーディオデータを提供するステップ
を含む、請求項15または16に記載の方法。
【請求項１８】
前記多重アクション要求が送信されてから前記第2の出力がレンダリングされるまでの間に前記クライアントデバイスによって前記システムに要求が送信されることはない、請求項15から17のいずれか一項に記載の方法。
【請求項１９】
前記クライアントデバイスによって、前記クライアントデバイスの1つまたは複数のマイクロフォンを介して前記クライアントデバイスのユーザの発話を受信するステップをさらに含み、
前記多重アクション要求を送信する前記ステップが、前記発話を受信したことに応じて行われる、請求項15から18のいずれか一項に記載の方法。
【請求項２０】
前記多重アクション要求は、前記発話に基づくオーディオデータを備える、請求項19に記載の方法。
【請求項２１】
前記クライアントデバイスによって、前記クライアントデバイスにローカルに記憶された1つまたは複数の音声認識モデルを使用して前記発話を処理するステップと、
前記クライアントデバイスによって、前記処理に基づいて、前記発話が前記多重アクション要求に対応すると判定するステップをさらに含み、
前記多重アクション要求を送信する前記ステップが、前記発話が前記多重アクション要求に対応するとの判定に応じて行われる、請求項19または20に記載の方法。
【請求項２２】
1つまたは複数のプロセッサによって実行される方法であって、
複数の異なるアクションを含むルーチンを生成するステップであって、自動化アシスタントが、クライアントデバイスの自動化アシスタントインターフェースにおいて入力された自然言語を受信したことに応じて、前記複数の異なるアクションに含まれるアクションを実行するように構成される、ステップと、
前記ルーチンを実行する要求を前記クライアントデバイスから受信するステップであって、前記複数の異なるアクションが、前記自動化アシスタントインターフェースを介して、第1のエージェントアプリケーションを介してアクセス可能な第1のコンテンツおよび第2のエージェントアプリケーションを介してアクセス可能な第2のコンテンツを提供するステップを含む、ステップと、
前記第1のエージェントアプリケーションからの前記第1のコンテンツの取り出しおよび前記第2のエージェントアプリケーションを介した前記第2のコンテンツの取り出しを初期設定するステップと、
前記第2のエージェントアプリケーションから前記第2のコンテンツの一部を受信する前に前記第1のエージェントアプリケーションから前記第1のコンテンツの一部を受信するステップと、
前記自動化アシスタントに前記自動化アシスタントインターフェースを介して出力ストリームを提供させるステップであって、前記出力ストリームが前記第1のコンテンツの前記一部を含む、ステップと、
前記第2のコンテンツの前記一部が、前記自動化アシスタントが前記第1のコンテンツの前記一部を含む前記出力ストリームを提供するのと同時に受信されたときに、
前記自動化アシスタントに、
前記自動化アシスタントが前記第1のコンテンツを完全にプロビジョニングする前に前記第2のコンテンツの前記一部を前記出力ストリームに組み込ませるステップとを含む、方法。
【請求項２３】
前記自動化アシスタントに前記第2のコンテンツの前記一部を組み込ませる前記ステップは、前記自動化アシスタントに前記自動化アシスタントインターフェースを介してユーザにプロンプトを提供させるステップを含む、請求項22に記載の方法。
【請求項２４】
前記第2のコンテンツの前記一部が、前記自動化アシスタントが前記第1のコンテンツの前記一部を含む前記出力ストリームを提供するのと同時に受信されたときに、
前記自動化アシスタントに前記クライアントデバイスの別個の自動化アシスタントインターフェースを介して前記第1のコンテンツの残りの部分を提供させるステップをさらに含み、前記自動化アシスタントインターフェースおよび前記別個の自動化アシスタントインターフェースは、前記クライアントデバイスの異なるサブシステムに対応する、請求項23に記載の方法。
【請求項２５】
前記第2のコンテンツの前記一部が、前記自動化アシスタントが前記第1のコンテンツの前記一部を含む前記出力ストリームを提供するのと同時に受信されたときに、
前記自動化アシスタントにグラフィカルインターフェースを介して前記第1のコンテンツの残りの部分を提供させ、オーディオインターフェースを介して前記第2のコンテンツを提供させるステップをさらに含む、請求項23または24に記載の方法。
【請求項２６】
前記第2のコンテンツはユーザプロンプトを含み、前記方法は、前記ユーザプロンプトが前記自動化アシスタントによって前記自動化アシスタントインターフェースにおいて提供されるようにし、前記第1のコンテンツの残りの部分が前記自動化アシスタントによって別個の自動化アシスタントインターフェースを介して提供されるようにするステップをさらに含む、請求項22から25のいずれか一項に記載の方法。
【請求項２７】
前記出力ストリームは、前記クライアントデバイスのディスプレイインターフェースにおいて提示される一連のグラフィカル要素、または前記クライアントデバイスのオーディオインターフェースにおいて提供される一連のオーディオクリップに対応する、請求項22から26のいずれか一項に記載の方法。
【請求項２８】
前記第2のコンテンツが、前記自動化アシスタントが前記第1のコンテンツの前記一部を含む前記出力ストリームを提供するのと同時に受信されたことに応じて、データのフラグメント化を予期して前記第1のコンテンツの前記データの選択をタグ付けするステップをさらに含む、請求項22から27のいずれか一項に記載の方法。
【請求項２９】
1つまたは複数のプロセッサによって実行される方法であって、
クライアントデバイスにおいて、自動化アシスタントが複数の異なるアクションを含むルーチンを実行することを求める要求を受信するステップであって、前記自動化アシスタントが前記クライアントデバイスの自動化アシスタントインターフェースにおいて入力を受信したことに応じて、前記複数の異なるアクションに含まれるアクションを実行するように構成された、ステップと、
前記複数の異なるアクションのうちの第1のアクションおよび第2のアクションを初期設定させるステップであって、前記第1のアクションおよび前記第2のアクションを初期設定することが、1つまたは複数のサーバデバイスから前記クライアントデバイスによってコンテンツストリームを介して受信される第1のコンテンツおよび第2のコンテンツを要求することを含む、ステップと、
前記コンテンツストリームを介して前記第1のコンテンツの一部を受信するステップと、
前記第1のコンテンツの前記一部を前記クライアントデバイスを介してユーザに提供するステップと、
前記第1のコンテンツが前記ユーザに提供され、前記第2のコンテンツが前記自動化アシスタントに利用可能になったときに、
前記クライアントデバイスが前記第1のコンテンツを完全にプロビジョニングする前にフラグメント化すべき前記第1のコンテンツのデータを特定するステップと、
前記第1のコンテンツのそれぞれに異なるフラグメント化された部分をプロビジョニングする間に前記第2のコンテンツが出力されるようにするステップと
を含む、方法。
【請求項３０】
1つまたは複数のプロセッサによって実行される方法であって、
サーバデバイスにおいて、自動化アシスタントが複数の異なるアクションを含むルーチンを実行することを求める要求を受信するステップであって、前記要求が、クライアントデバイスに接続された1つまたは複数の自動化アシスタントインターフェースにおいて受信されるユーザ入力に対応し、前記自動化アシスタントが、前記クライアントデバイスにおいて入力を受信したことに応じて、前記複数の異なるアクションに含まれる少なくとも1つのアクションを実行するように構成された、ステップと、
前記複数の異なるアクションのうちの第1のアクションが前記1つまたは複数の自動化アシスタントインターフェースを介して提供されるユーザプロンプトに関連付けられており、前記複数の異なるアクションのうちの第2のアクションが、前記サーバデバイスによって取り出され、前記クライアントデバイスに接続された前記1つまたは複数の自動化アシスタントインターフェースを介して出力されるコンテンツに関連付けられていると判定するステップと、
前記コンテンツを取り出す別の要求を生成するステップと、
前記ルーチンを進行させる際に、前記クライアントデバイスに、前記1つまたは複数の自動化アシスタントインターフェースを介してユーザへ前記ユーザプロンプトを提供させるステップと、
前記クライアントデバイスが前記ユーザプロンプトを提供しており、前記ユーザが前記ユーザプロンプトに応答せず、前記サーバデバイスが前記コンテンツを受信したときに、
前記クライアントデバイスに、前記第2のアクションに関連付けられた前記コンテンツの少なくとも一部を前記1つまたは複数の自動化アシスタントインターフェースを介して提供させるステップと、
前記ユーザが前記1つまたは複数の自動化アシスタントインターフェースのうちの第1の自動化アシスタントインターフェースを介して前記ユーザプロンプトに対する応答を提供しており、前記サーバデバイスが前記コンテンツを受信したときに、
前記クライアントデバイスに、前記1つまたは複数の自動化アシスタントインターフェースのうちの第2の自動化アシスタントインターフェースを介して前記第2のアクションに関連付けられた前記コンテンツの少なくとも前記一部を提供させるステップと
を含む、方法。
【請求項３１】
請求項1から30のいずれか一項に記載の方法を実行するための手段を備えるデータ処理システム。
【請求項３２】
1つまたは複数のプロセッサによって実行されたときに、前記1つまたは複数のプロセッサに、請求項1から30のいずれか一項に記載の方法を実行させる命令を備えるコンピュータプログラム。
【請求項３３】
1つまたは複数のプロセッサによって実行されたときに、前記1つまたは複数のプロセッサに、請求項1から30のいずれか一項に記載の方法を実行させる命令を備えるコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リモートに生成された自動化アシスタントコンテンツのレンダリングにおけるクライアントデバイスレイテンシの軽減に関する。
【背景技術】
【０００２】
人間が、本明細書では「自動化アシスタント」(「チャットボット」、「対話型パーソナルアシスタント」、「アシスタントアプリケーション」、「インテリジェントパーソナルアシスタント」、「パーソナル音声アシスタント」、「会話エージェント」などとも呼ばれる)と呼ばれる対話型ソフトウェアアプリケーションとのヒューマンコンピュータダイアログを行うことがある。たとえば、人間(自動化アシスタントと対話するときは「ユーザ」と呼ばれ得る)が、テキストに変換され、次いで処理される発話であってもよい自由形式自然言語入力を使用し、ならびに/またはタイプされた自由形式自然言語入力によってコマンド、クエリ、および/または要求(本明細書では総称して「クエリ」と呼ばれる)を提供することがある。
【０００３】
多くの場合、自動化アシスタントの論理インスタンスは、複数のコンピューティングデバイスにわたって実現されることがある。たとえば、自動化アシスタントの論理インスタンスは、ユーザの携帯電話(または他のクライアントデバイス)上にインストールされた自動化アシスタントクライアントと、1つまたは複数のクラウドベース自動化アシスタント構成要素とを含むことがある。自動化アシスタントクライアントは、ユーザが自動化アシスタントとのヒューマンコンピュータダイアログを行うために対話することができる自動化アシスタントインターフェースをユーザに提供するように構成されることがある。たとえば、自動化アシスタントクライアントは、発話、タイプされた入力、および/またはユーザの他の入力を受け入れることができ、それらの入力に対する自動化アシスタント応答をグラフィカルにならびに/または音声認識可能にレンダリングすることができる。しかし、自動化アシスタントクライアントは依然として、クラウドベース自動化アシスタント構成要素に依拠して、自動化アシスタントクライアントによって受け入れられた入力を処理すること、(たとえば、エージェントアプリケーションとの対話によって)入力に対する応答を生成することなど、様々な自動化アシスタント機能を実行することがある。したがって、自動化アシスタントクライアントは、クライアントデバイスを介してユーザと自動化アシスタントダイアログを行う際、ユーザの発話または他の入力に対応するデータをクラウドベース自動化アシスタント構成要素に送信しなければならないことが多い。さらに、自動化アシスタントクライアントは、ユーザの入力に応じて応答コンテンツをレンダリングできるようにするうえでクラウドベース自動化アシスタント構成要素から応答コンテンツを受信するのを待たなければならないことが多い。
【０００４】
クラウドベース構成要素を利用すると、クラウドベース構成要素の実質的に無限のリソースを利用することによって自動化アシスタントのロバストネスを向上させることができるが、様々な障害が生じることもある。1つのそのような障害は、ユーザ入力に応じたコンテンツの、クライアントデバイスによるレンダリングのレイテンシである。レンダリングにおけるレイテンシは、クラウドベース自動化アシスタント構成要素によるコンテンツの生成における遅延、クラウドベース構成要素からクライアントデバイスへのコンテンツの送信における送信遅延、および/またはクライアントデバイスからクラウドベース構成要素への、ユーザ入力に対応するデータの送信における送信遅延の結果である場合がある。別のそのような障害は、複数の自動化アシスタントアクションを実行する際に、クライアントデバイスが複数のアクションの各々についてのデータをクラウドベース構成要素に送信することが必要になる場合があることである。これによって、特に、クラウドベース自動化アシスタント構成要素が互いに異なる多量の自動化アシスタントクライアントからの多量の要求を処理する場合にネットワークリソースが過度に使用されることがある。
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示は概して、リモートで生成された自動化アシスタントコンテンツのレンダリングにおけるクライアントデバイスレイテンシを軽減するための方法、装置、およびコンピュータ可読媒体(一時的および非一時的)を対象とする。実装形態は、各インスタンスが多重アクション要求の対応するアシスタントアクションに応じたコンテンツに基づく出力の複数のインスタンスのレンダリング間のクライアントデバイスレイテンシを軽減することを対象とする。たとえば、それらの実装形態は、多重アクション要求の第1の自動化アシスタントアクションに応じた第1のコンテンツに基づく第1の出力のレンダリングと、多重アクション要求の第2の自動化アシスタントアクションに応じた第2のコンテンツに基づく第2の出力のレンダリングとの間のレイテンシを低減させることができる。本明細書では、「多重アクション要求」は、各アクションを(場合によっては対応するアシスタントエージェントアプリケーションとの対話を通じて)自動化アシスタントによって実行することができる複数の個別のアクションを(直接または間接的に)示す要求である。多重アクション要求は、クライアントデバイスによってリモート自動化アシスタント構成要素に送信することができ、リモート自動化アシスタント構成要素に多重アクション要求の個別のアクションを実行させ、個別のアクションについての対応するコンテンツをクライアントデバイスに送信させる。クライアントデバイスは次いで、個別のアクションについての対応するコンテンツに対応する出力を(たとえば、音声認識可能にならびに/またはグラフィカルに)レンダリングすることができる。
【０００６】
例として、「おはようございます」多重アクション要求を(たとえば、ローカルおよび/またはリモートデータベースにおいて)あるユーザについて自動化アシスタントアクションの以下のシーケンス、すなわち、「今日の地方の天気予報」アクション、「今日の日程」アクション、および「今日の見出し」アクションにマップすることができる。「おはようございます」要求を受信したことに応じて、第1のエージェント要求を「天気」エージェントアプリケーションに送信することができ、この要求は、ユーザの現在の位置に対応する「位置」スロットについての値によって「今日の天気」の対象を指定する。第1のエージェント要求に応じて第1のエージェントアプリケーションからの応答を受信することができ、この応答は、今日の地方の天気情報を示すコンテンツを含む。第1のエージェントからの応答に基づいて第1の応答コンテンツを生成することができ、第1の応答コンテンツをクライアントデバイスに送信することができる。たとえば、第1のエージェントからの応答は、今日の地方の天気情報を示すテキストを含むことができ、第1の応答コンテンツはテキストとすることができる。別の例として、第1のエージェントからの応答は、今日の地方の天気情報を示すテキストを含むことができ、第1の応答コンテンツは、テキストのテキスト音声合成処理を実行することによって生成されるオーディオデータとすることができる。クライアントデバイスは、第1の応答コンテンツを受信したことに応じて、第1の応答コンテンツに基づく第1の出力をレンダリングすることができる。さらに、第2のエージェント要求を「日程」エージェントアプリケーションに送信することができ、この要求は、「今日」に対応する「データ範囲」スロットについての値およびクライアントデバイスのアクティブユーザに対応する「ユーザ」についての値を有する「日程概要」の対象を指定する。第2のエージェントアプリケーションからの応答を第2のエージェント要求に応じて受信することができ、この応答は、今日についてのユーザの日程の概要を示すコンテンツを含む。第2のエージェントからの応答に基づいて第2の応答コンテンツを生成することができ、第2の応答コンテンツをクライアントデバイスに送信することができる。さらに、第3のエージェント要求を「ニュース」エージェントアプリケーションに送信することができ、この要求は、「ニュース見出し」の対象を指定する。第3のエージェントアプリケーションからの応答は、第2のエージェント要求に応じて受信することができ、この応答は「ニュース見出し」を含む。第3のエージェントからの応答に基づいて第3の応答コンテンツを生成することができ、第3の応答コンテンツをクライアントデバイスに送信することができる。
【０００７】
多重アクション要求にマップされた1つまたは複数の起動フレーズのうちの1つ(たとえば、「おはようございます」多重アクション要求用の「おはようございます」または「おはよう」)を発話すること、多重アクション要求についてのグラフィカルユーザインターフェース要素(たとえば、多重アクション要求についての「ショートカット」アイコン)を作動させること、および/または1つまたは複数のコンテキスト条件の発生(たとえば、「おはようございます」多重アクション要求では、コンテキスト条件の発生は、午前7時から午前8時の間であり、ユーザが自動化アシスタントインターフェースを含むクライアントデバイスと対話することである)など、様々なキューに応じて多重アクション要求を開始することができる。
【０００８】
いくつかの従来の技法では、多重アクション要求が開始されると、クライアントデバイスが、多重アクション要求の複数のアクションの各々についての別々の要求をリモート自動化アシスタント構成要素に送信する。これによって、ネットワークリソースが過度に使用されることがある。その理由は、N個のアクションを有する多重アクション要求を実行する際に、N個の別々の要求をクライアントデバイスからリモートアシスタント構成要素に送信しなければならないからである。追加または代替として、そのような従来の技法では、クライアントデバイスが「現在のアクション」についてのコンテンツを受信し、対応する出力を完全にレンダリングするまで「次の」アクション要求は送信されない。これによって所与のアクションに対応する出力のレンダリングと次のアクションに対応する出力のレンダリングとの間にレイテンシが生じることがある。そのようなレイテンシによって、多重アクション要求についての出力をレンダリングするための総持続時間がレイテンシの関数として延びるので、クライアントデバイスは、より長い持続時間にわたってリソース消費量増大状態になることがある。さらに、所与のクライアントデバイスとリモートアシスタント構成要素との間に長い持続時間にわたってオープン通信チャネルを維持すると、その構成要素が他のクライアントデバイスにサービスする能力が阻害される場合がある。したがって、レイテンシを短縮すると、ネットワークリソースのより適切な割振りが容易になることがある。
【０００９】
本明細書で開示される実装形態は、多重アクション要求を実行する際にクライアントデバイスからリモート自動化アシスタント構成要素への送信量を低減させることができ、所与のアクションに対応する出力のレンダリングと次のアクションに対応する出力のレンダリングとの間のレイテンシを低減させることができ、ならびに/または所与のアクションに対応する出力のレンダリングにおけるレイテンシを低減させることができる。いくつかの実装形態では、クライアントデバイスによってリモート自動化アシスタント構成要素に送信される多重アクション要求は、多重アクション要求のアクションのうちの複数(たとえば、すべて)を(直接または間接的に)示す。たとえば、多重アクション要求は、発話についてのオーディオまたはテキスト(たとえば、おはようございます)とユーザおよび/またはクライアントデバイスの識別子とを含むことができる。リモート自動化アシスタント構成要素は、要求に含まれる発話のテキスト(または要求に含まれるオーディオから変換されたテキスト)ならびにユーザおよび/またはクライアントデバイスの識別子に(リモート自動化アシスタント構成要素にアクセス可能なデータベースにおいて)マップされたアクションに基づいて多重アクション要求のすべてのアクションを判定することができる。リモート自動化アシスタント構成要素は、多重アクション要求の識別された複数のアクションのうちの第1のアクションについての第1のアクションコンテンツを生成してクライアントデバイスに送信することができる。クライアントデバイスは、第1のアクションコンテンツに対応する第1の出力をレンダリングすることができる。さらに、リモート自動化アシスタント構成要素は、複数のアクションのうちの第2のアクションについての第2のアクションコンテンツのうちの少なくとも一部を生成してクライアントデバイスに送信することができる。第2のアクションコンテンツのうちの少なくとも一部は、クライアントデバイスによって(第1のアクションコンテンツに対応する)第1の出力のレンダリングを完了する前に生成しならびに/または送信することができる。クライアントデバイスは、第2のアクションコンテンツのうちの少なくとも一部をローカルにバッファすることができ、それによって、クライアントデバイスは、第1のアクションコンテンツのレンダリングを完了したときに第2のアクションコンテンツのうちの少なくとも一部に対応する第2の出力のレンダリングを開始することができる。これらの方法およびその他の方法で、第1の出力のレンダリングと第2の出力のレンダリングとの間のレイテンシが軽減される。さらに、単一の多重アクション要求に応じて、第1のアクションコンテンツと第2のアクションコンテンツの両方をクライアントデバイスにおいて受信し、対応する出力をレンダリングすることができ、クライアントデバイスが、第1のアクションコンテンツが受信された後に第2のアクションについての別個の要求を送信する必要はない。
【００１０】
いくつかの追加または代替実装形態では、リモート自動化アシスタント構成要素は最初に、アクションについてのアクションコンテンツのうちの一部のみをクライアントデバイスに送信し、次いでアクションコンテンツの追加部分をクライアントデバイスに送信することができる。アクションコンテンツの最初に送信される部分は、クライアントデバイスによって最初にレンダリング可能にすることができ、場合によっては、最初にレンダリング可能であると判定することに基づいて追加部分なしに送信することができる。さらに、クライアントデバイスは、アクションコンテンツの最初に送信された部分をレンダリングする間、追加部分のうちの少なくとも1つを受信し、同じく(直ちにまたは最初に送信された部分のレンダリングが完了した後に)レンダリングすることができる。これらの方法およびその他の方法で、アクションコンテンツの全体をレンダリングする際の全体的なレイテンシを低減させることができる。
【００１１】
一例として、アクションは「今日の日程概要」アクションとすることができ、リモート自動化アシスタント構成要素は、アクションコンテンツの第2の部分が生成されている(またはまだ生成されていない)間に(たとえば、エージェントアプリケーションとの対話を通じて)アクションコンテンツの一部を生成することができる。たとえば、生成される部分は、第1の日程エントリ用のテキストまたはオーディオとすることができ、第2の部分は、第2の日程エントリ用のテキストまたはオーディオとすることができる。第1の部分は、第1の部分に対応する第1の出力をレンダリングするためにクライアントデバイスに送信することができる。さらに、第1の部分に対応する第1の出力をレンダリングする間、第2の部分をクライアントデバイスに送信し、第1の出力のレンダリングの完了時に対応する出力をレンダリングするためにバッファすることができる。別の例として、アクションは、「今日の天気」アクションとすることができ、リモート自動化アシスタント構成要素は、「今日の天気」のディスプレイをレンダリングするためのグラフィカルテンプレートを取り出すことができ、グラフィカルテンプレートは、固定コンテンツと、未生成の特定の値が「記入される」可変コンテンツとを含む。グラフィカルテンプレートは、可変コンテンツを含まないグラフィカルテンプレートをレンダリングするためにクライアントデバイスに送信することができる。たとえば、グラフィカルテンプレートは、自動化アシスタント構成要素によってローカルメモリから直ちに取り出し可能であり得、場合によっては(可変コンテンツを生成するためのエージェントアプリケーションとの対話における遅延に起因して)可変コンテンツが生成される前に送信することができる。さらに、受信されたグラフィカルテンプレートをレンダリングする間に、可変コンテンツをクライアントデバイスに送信することができ、クライアントデバイスは、グラフィカルテンプレートのレンダリングを更新して後から受信された可変コンテンツを反映することができる。たとえば、最初に送信されるグラフィカルテンプレートは、たとえば、「今日の天気」、「高」、「低」、および「降水量%」を表示するが、「高」、「低」、「降水量%」についての実際の値は表示しない(または「プレースホルダ」を表示する)グラフィカルインターフェースのレンダリングを可能にすることができる。その後受信される可変コンテンツを利用して、「高」、「低」、「降水量%」についての実際の値を含むようにディスプレイを更新することができる。
【００１２】
上記の説明は、本開示のいくつかの実装形態の概要として与えられている。それらの実装形態およびその他の実装形態については、以下でさらに詳しく説明する。
【００１３】
いくつかの実装形態では、クライアントデバイスから離れた1つまたは複数の自動化アシスタントサーバデバイスの1つまたは複数のプロセッサによって実行される方法が、クライアントデバイスによって送信された多重アクション要求をネットワークインターフェースを介して受信することなどの動作を含むように記載されている。この方法は、多重アクション要求に基づいて、多重アクション要求によって示される第1の自動化アシスタントアクション、および多重アクション要求によって示される第2の自動化アシスタントアクションを判定するステップをさらに含むことができる。第2の自動化アシスタントアクションは、第1の自動化アシスタントアクションとは異なる。この方法は、多重アクション要求によって示される第1の自動化アシスタントアクションに基づく第1のアクションコンテンツを生成するステップと、多重アクション要求を受信したことに応じて、第1の自動化アシスタントアクションに基づく第1のアクションコンテンツをクライアントデバイスに送信するステップとを含むこともできる。送信された第1のアクションコンテンツを受信したことに応じて、クライアントデバイスは、第1のアクションコンテンツに基づく第1の出力をレンダリングすることができる。この方法は、クライアントデバイスによって第1の出力のレンダリングを完了する前に、第2の自動化アシスタントアクションに基づく第2のアクションコンテンツの少なくとも一部を生成するステップと、多重アクション要求を受信したことに応じて、第2の自動化アシスタントアクションに基づく第2のアクションコンテンツの上記の少なくとも一部をクライアントデバイスに送信するステップとをさらに含むことができる。クライアントデバイスは、クライアントデバイスによる第1の出力のレンダリングを完了する前に第2のアクションコンテンツの上記の少なくとも一部を受信することができる。さらに、クライアントデバイスは、送信された第2のアクションコンテンツの上記の少なくとも一部を受信したことに応じて、クライアントデバイスのローカルメモリに第2のアクションコンテンツの上記の少なくとも一部をバッファすることができる。さらに、クライアントデバイスは、第1の出力のレンダリングが完了したことに応じて、ローカルメモリにバッファされた第2のアクションコンテンツの上記の少なくとも一部にアクセスして第2のアクションコンテンツの上記の少なくとも一部に基づく第2の出力をレンダリングすることができる。
【００１４】
第1の自動化アシスタントアクションおよび第2の自動化アシスタントアクションを判定するステップと、第1のアクションコンテンツを生成するステップと、第1のアクションコンテンツを送信するステップと、第2のアクションコンテンツを生成するステップと、第2のアクションコンテンツを送信するステップはすべて、多重アクション要求を受信したことに応じて実行することができ、これらのステップはすべて、クライアントデバイスによって送信された任意の他の要求を受信する前に実行することができる。第2のアクションコンテンツの上記の少なくとも一部を生成するステップは、多重アクション要求によって示される第2の自動化アシスタントアクションに基づくエージェント要求をエージェントアプリケーションに送信するステップと、エージェント要求に応じた応答をエージェントアプリケーションから受信するステップと、応答に基づいて第2のアクションコンテンツの上記の少なくとも一部を生成するステップとを含むことができる。エージェント要求を送信するステップは、エージェントアプリケーションに、ネットワーク化された周辺デバイスの状態を変更させる(たとえば、光のオン/オフ、サーモスタットの温度の調整、ガレージドアの開閉、施錠/解錠)ことができる。この応答は、状態の変更が成功したことを示すことができ、第2のアクションコンテンツの上記の少なくとも一部は、クライアントデバイスによってレンダリングされる第2の出力に、状態の変更が成功したことをクライアントデバイスのユーザに知覚可能に伝達させることができる。たとえば、第2のアクションコンテンツの上記の少なくとも一部は、スピーカを介して第2の出力としてレンダリングされ、(多重アクション要求のアクションによる要求に応じた)状態の変更が成功したことを音声認識可能に伝達するオーディオデータを含むことができる。第2のアクションコンテンツの上記の少なくとも一部を応答に含めることができる。第1の出力は、クライアントデバイスの1つまたは複数のスピーカを介してレンダリングされたオーディオ出力を備えることができる。第1のアクションコンテンツはオーディオデータを備えることができ、クライアントデバイスは、オーディオデータに基づいて1つまたは複数のスピーカを駆動することによって第1の自動化アシスタントアクションに基づく第1の出力をレンダリングすることができる。第1のアクションコンテンツは、テキストを備えることができ、クライアントデバイスは、クライアントデバイスにローカルに記憶されたテキスト音声合成モデルを使用したテキストの処理に基づいてオーディオデータを生成し、生成されたオーディオデータを、オーディオ出力をレンダリングするために提供することによって第1のアクションコンテンツに基づく第1の出力をレンダリングすることができる。
【００１５】
この方法は、クライアントデバイスとのストリーミング接続を確立するステップをさらに含むことができる。第1のアクションコンテンツを送信するステップはストリーミング接続を介して行うことができる。さらに、第2のアクションコンテンツの上記の少なくとも一部を送信するステップはストリーミング接続を介して行うことができる。多重アクション要求は、クライアントデバイスにおいて検出された発話に対応するオーディオデータを備えることができ、この方法は、多重アクション要求のオーディオデータを処理してオーディオデータをテキストに変換するステップをさらに含むことができる。多重アクション要求に基づいて第1の自動化アシスタントアクションおよび第2の自動化アシスタントアクションを判定するステップは、第1の自動化アシスタントアクションと第2の自動化アシスタントアクションのどちらもテキストにマップするとともにクライアントデバイスの識別子にマップすることができると判定するステップを含むことができる。多重アクション要求に基づいて第1の自動化アシスタントアクションおよび第2の自動化アシスタントアクションを判定するステップはさらに、多重アクション要求が、第1の自動化アシスタントアクションを第2の自動化アシスタントアクションよりも前に実行することを指示していると判定するステップを含むことができる。さらに、第1のアクションコンテンツを送信するステップは、多重アクション要求が、第2の自動化アシスタントアクションの直前に第1の自動化アシスタントアクションを実行することを指示していることに基づいて、第2のアクションコンテンツの上記の少なくとも一部を送信する前に行うことができる。
【００１６】
第1の自動化アシスタントアクションに基づく第1のアクションコンテンツを生成するステップは、第1のアクションコンテンツのうちの第2の部分を生成することが完了する前に第1のアクションコンテンツの第1の部分を生成するステップを含むことができる。さらに、第1の自動化アシスタントアクションに基づく第1のアクションコンテンツを送信するステップは、第1のアクションコンテンツの第1の部分がクライアントデバイスによって直ちにレンダリング可能であると判定したことに基づいて、第2の部分の生成が完了する前に第1のアクションコンテンツの第1の部分を送信するステップと、第2の部分の生成が完了した後で第2の部分を送信するステップとを含むことができる。第1の部分は、オーディオデータまたはテキストの第1のセグメントを備えることができ、第2の部分は、オーディオデータまたはテキストの第2のセグメントを備えることができる。第1の部分は、少なくとも1つのディスプレイ変数を有するグラフィカルインターフェースを備えることができ、第2の部分は、少なくとも1つのディスプレイ変数の値を定義する。
【００１７】
他の実装形態では、方法が、クライアントデバイスによって、1つまたは複数の自動化アシスタントサーバデバイスのシステムに多重アクション要求を送信するステップ、システムによって、クライアントデバイスによって送信された多重アクション要求を受信するステップ、システムによって、多重アクション要求に基づいて、多重アクション要求によって示される第1の自動化アシスタントアクション、および多重アクション要求によって示される異なる第2の自動化アシスタントアクションを判定するステップ、システムによって、第1の自動化アシスタントアクションに基づく第1のアクションコンテンツを生成するステップ、システムによって、第1のアクションに基づく第1のアクションコンテンツを送信するステップ、クライアントデバイスによって、第1のアクションコンテンツを受信するステップ、クライアントデバイスによって、第1のアクションコンテンツを受信したことに応じて、第1のアクションコンテンツに基づく第1の出力をレンダリングするステップなどの動作を含む方法と示される。この方法は、クライアントデバイスによる第1の出力のレンダリングが完了する前に、システムによって、第2の自動化アシスタントアクションに基づく第2のアクションコンテンツを生成するステップと、システムによって、第2の自動化アシスタントアクションに基づく第2のアクションコンテンツを送信するステップと、クライアントデバイスによって、第2のアクションコンテンツを受信するステップとを含むこともできる。この方法は、クライアントデバイスによって、クライアントデバイスのローカルメモリに第2のアクションコンテンツをバッファするステップと、クライアントデバイスによって、第1の出力のレンダリングが完了したことに応じて、ローカルメモリにバッファされた第2のアクションコンテンツに基づく第2の出力をレンダリングするステップとを含むこともできる。
【００１８】
第1のアクションコンテンツは、オーディオデータを備えることができ、第1のアクションコンテンツに基づく第1の出力をレンダリングするステップは、オーディオデータに基づいてクライアントデバイスの1つまたは複数のスピーカを駆動するステップを含むことができる。第1のアクションコンテンツはテキストを備えることができ、第1のアクションコンテンツに基づく第1の出力をレンダリングするステップは、クライアントデバイス上にローカルに記憶されたテキスト音声合成モデルを使用したテキストの処理に基づいてオーディオデータを生成し、生成されたオーディオデータを、クライアントデバイスの1つまたは複数のスピーカを介してオーディオ出力をレンダリングするために提供するステップを含むことができる。いくつかの実装形態では、多重アクション要求が送信されてから第2のアクション出力がレンダリングされるまでの間にクライアントデバイスによってシステムに要求が送信されることはない。この方法は、クライアントデバイスによって、クライアントデバイスの1つまたは複数のマイクロフォンを介してクライアントデバイスのユーザの発話を受信するステップを含むこともでき、多重アクション要求を送信するステップは、発話を受信したことに応じて行うことができる。多重アクション要求は、発話に基づくオーディオデータを備える。この方法は、クライアントデバイスによって、クライアントデバイスにローカルに記憶された1つまたは複数の音声認識モデルを使用して発話を処理するステップと、クライアントデバイスによって、処理に基づいて、発話が多重アクション要求に対応すると判定するステップとを含むこともでき、多重アクション要求を送信するステップは、発話が多重アクション要求に対応するとの判定に応じて行われる。
【００１９】
いくつかの実装形態では、1つまたは複数のプロセッサによって実施される方法が、複数の異なるアクションを含むルーチンを生成するステップなどの動作を含む方法と示される。複数の異なるアクションは、自動化アシスタントが、クライアントデバイスの自動化アシスタントインターフェースにおいて入力された自然言語を受信したことに応じて実行するように構成されるアクションを含むことができる。動作には、このルーチンを実行する要求をクライアントデバイスから受信するステップを含めることもできる。複数の異なるアクションは、自動化アシスタントインターフェースを介して、第1のエージェントアプリケーションを介してアクセス可能な第1のコンテンツおよび第2のエージェントアプリケーションを介してアクセス可能な第2のコンテンツを提供するステップを含むことができる。動作には、第1のエージェントアプリケーションからの第1のコンテンツの取り出しおよび第2のエージェントアプリケーションを介した第2のコンテンツの取り出しを初期設定するステップを含めることもできる。動作には、第2のエージェントアプリケーションから第2のコンテンツの一部を受信する前に第1のエージェントアプリケーションから第1のコンテンツの一部を受信するステップと、自動化アシスタントに自動化アシスタントインターフェースを介して出力ストリームを提供させるステップであって、出力ストリームが第1のコンテンツの上記の一部を含む、ステップとをさらに含めることができる。動作には、第2のコンテンツの上記の一部が、自動化アシスタントが第1のコンテンツの上記の一部を含む出力ストリームを提供するのと同時に受信されたときに、自動化アシスタントに、自動化アシスタントが第1のコンテンツを完全にプロビジョニングする前に第2のコンテンツの上記の一部を出力ストリームに組み込ませるステップを含めることもできる。
【００２０】
自動化アシスタントに第2のコンテンツの上記の一部を組み込ませるステップは、自動化アシスタントに自動化アシスタントインターフェースを介してユーザにプロンプトを提供させるステップを含むことができる。この方法は、第2のコンテンツの上記の一部が、自動化アシスタントが第1のコンテンツの上記の一部を含む出力ストリームを提供するのと同時に受信されたときに、自動化アシスタントにクライアントデバイスの別個の自動化アシスタントインターフェースを介して第1のコンテンツの残りの部分を提供させるステップをさらに含むことができる。自動化アシスタントインターフェースおよび別個の自動化アシスタントインターフェースは、クライアントデバイスの異なるサブシステムに対応する。この方法は、第2のコンテンツの上記の一部が、自動化アシスタントが第1のコンテンツの上記の一部を含む出力ストリームを提供するのと同時に受信されたときに、自動化アシスタントにグラフィカルインターフェースを介して第1のコンテンツの残りの部分を提供させ、オーディオインターフェースを介して第2のコンテンツを提供させるステップを含むこともできる。第2のコンテンツはユーザプロンプトを含むことができ、この方法は、ユーザプロンプトを自動化アシスタントによって自動化アシスタントインターフェースにおいて提供させ、第1のコンテンツの残りの部分を自動化アシスタントによって別個の自動化アシスタントインターフェースを介して提供させるステップを含むこともできる。出力ストリームは、クライアントデバイスのディスプレイインターフェースにおいて提示される一連のグラフィカル要素、またはクライアントデバイスのオーディオインターフェースにおいて提供される一連のオーディオクリップに対応することができる。この方法は、第2のコンテンツが、自動化アシスタントが第1のコンテンツの上記の一部を含む出力ストリームを提供するのと同時に受信されたことに応じて、データのフラグメント化を予期して第1のコンテンツの選択されたデータをタグ付けするステップを含むこともできる。
【００２１】
他の実装形態では、1つまたは複数のプロセッサによって実施される方法が、クライアントデバイスにおいて、自動化アシスタントが複数の異なるアクションを含むルーチンを実行することを求める要求を受信することなどの動作を含む方法と示される。複数の異なるアクションは、自動化アシスタントがクライアントデバイスの自動化アシスタントインターフェースにおいて入力を受信したことに応じて実行するように構成されたアクションを含むことができる。動作には、複数の異なるアクションのうちの第1のアクションおよび第2のアクションを初期設定させるステップを含むこともできる。第1のアクションおよび第2のアクションを初期設定するステップは、クライアントデバイスによってコンテンツストリームを介して受信される第1のコンテンツおよび第2のコンテンツを要求するステップを含むことができる。この方法は、コンテンツストリームを介して第1のコンテンツの一部を受信するステップと、第1のコンテンツの上記の一部をクライアントデバイスを介してユーザに提供するステップとを含むこともできる。この方法は、第1のコンテンツがユーザに提供され、第2のコンテンツが自動化アシスタントに利用可能になったときに、クライアントデバイスが第1のコンテンツを完全にプロビジョニングする前にフラグメント化すべき第1のコンテンツのデータを特定するステップと、第1のコンテンツのそれぞれに異なるフラグメント化された部分をプロビジョニングする間に第2のコンテンツを出力させるステップとをさらに含むことができる。
【００２２】
この方法は、コンテンツストリームを介して第1のコンテンツを受信したことに応じて第1のコンテンツのフラグメント化を予期して第1のコンテンツのデータにタグ付けするステップをさらに含むことができる。この方法は、第1のコンテンツがユーザに提供され、第2のコンテンツが自動化アシスタントに利用可能になったときに、第2のコンテンツをクライアントデバイスのバッファ内の、第1のコンテンツのそれぞれに異なるフラグメント化された部分間に組み込むステップを含むこともできる。第1のコンテンツまたは第2のコンテンツは、自動化アシスタントから分離されたデバイスにおいてホストされるエージェントアプリケーションを介してアクセスすることができる。第1のコンテンツはオーディオデータに対応することができ、第1のコンテンツのデータにタグ付けするステップは、実質的にゼロであるオーディオレベルに対応する第1のコンテンツのセグメントまたはしきい値期間の間空であるオーディオコンテンツを特定するステップを含むことができる。第2のコンテンツおよび第1のコンテンツのそれぞれに異なるフラグメント化された部分は、クライアントデバイスの単一の出力モダリティを介して提供することができる。
【００２３】
さらに他の実装形態では、1つまたは複数のプロセッサによって実施される方法が、サーバデバイスにおいて、自動化アシスタントが複数の異なるアクションを含むルーチンを実行することを求める要求を受信することなどの動作を含む方法と示される。要求は、クライアントデバイスに接続された1つまたは複数の自動化アシスタントインターフェースにおいて受信されるユーザ入力に対応することができ、複数の異なるアクションは、自動化アシスタントが、クライアントデバイスにおいて入力を受信したことに応じて実行するように構成された少なくとも1つのアクションを含むことができる。動作には、複数の異なるアクションのうちの第1のアクションが1つまたは複数の自動化アシスタントインターフェースを介して提供されるユーザプロンプトに関連付けられており、複数の異なるアクションのうちの第2のアクションが、サーバデバイスによって取り出され1つまたは複数の自動化アシスタントインターフェースを介して出力されるコンテンツに関連付けられていると判定するステップを含むこともできる。動作には、コンテンツを取り出す要求を生成し、ルーチンを進行させる際に、クライアントデバイスに1つまたは複数の自動化アシスタントインターフェースを介してユーザにユーザプロンプトを提供させるステップをさらに含むことができる。この方法は、クライアントデバイスがユーザプロンプトを提供しており、ユーザがユーザプロンプトに応答せず、サーバデバイスがコンテンツを受信したときに、クライアントデバイスに、第2のアクションに関連付けられたコンテンツの少なくとも一部を1つまたは複数の自動化アシスタントインターフェースを介して提供させるステップを含むこともできる。この方法は、ユーザが1つまたは複数の自動化アシスタントインターフェースのうちの第1の自動化アシスタントインターフェースを介してユーザプロンプトに対する応答を提供しており、サーバデバイスがコンテンツを受信したときに、クライアントデバイスに、1つまたは複数の自動化アシスタントインターフェースのうちの第2の自動化アシスタントインターフェースを介して第2のアクションに関連付けられたコンテンツの少なくとも上記の一部を提供させるステップをさらに含むことができる。
【００２４】
第1の自動化アシスタントインターフェースは、クライアントデバイスと一体化することができ、第2の自動化アシスタントインターフェースは、クライアントデバイスに接続された別個のクライアントデバイスとすることができる。第1の自動化アシスタントインターフェースと第2の自動化アシスタントインターフェースの両方をクライアントデバイスと一体化することができる。第1の自動化アシスタントインターフェースは、クライアントデバイスのオーディオサブシステムとすることができ、第2の自動化アシスタントインターフェースは、クライアントデバイスのディスプレイサブシステムとすることができる。この方法は、サーバデバイスとは別個のリモートデバイスに、コンテンツを取り出す要求を提供するステップをさらに含むことができる。リモートデバイスは、自動化アシスタントとは異なるエージェントアプリケーションをホストすることができる。クライアントデバイスに1つまたは複数の自動化アシスタントインターフェースを介して第2のアクションに関連付けられたコンテンツの少なくとも上記の一部を提供させるステップは、クライアントデバイスにユーザプロンプトに対応するデータをコンテンツの上記の一部に対応する異なるデータとともにバッファさせるステップを含むことができる。
【００２５】
他の実装形態は、上述の方法および/または本明細書の他の箇所で説明する方法のうちの1つまたは複数などの方法を実行するように1つまたは複数のプロセッサ(たとえば、中央演算処理装置(CPU)、グラフィクス処理ユニット(GPU)、および/またはテンソル処理ユニット(TPU))によって実行可能な命令を記憶する非一時的コンピュータ可読記憶媒体を含んでもよい。さらに他の実装形態は、上述の方法および/または本明細書の他の箇所で説明する方法のうちの1つもしくは複数などの方法を実行するために記憶された命令を実行するように動作可能な1つもしくは複数のプロセッサを含む1つもしくは複数のコンピュータおよび/または1つもしくは複数のロボットのシステムを含んでもよい。
【００２６】
上記の概念および本明細書でさらに詳しく説明する追加の概念のすべての組合せが本明細書で開示する主題の一部であると見なされることを諒解されたい。たとえば、本開示の最後に現れる請求された主題のすべての組合せが、本明細書で開示された主題の一部であると見なされる。
【図面の簡単な説明】
【００２７】
【図１】自動化アシスタントを使用して、ルーチンの一部であるアクションについてのコンテンツのレンダリングにおけるレイテンシを軽減するようにルーチンを実行するためのシステムを示す図である。
【図２】自動化アシスタントがルーチンに関連付けられたコンテンツの部分をどのように出力ストリームとして提供することができるかの例を与える状態図である。
【図３】多重アクション自動化アシスタントルーチンのそれぞれに異なるアクションに関連付けられたコンテンツを同時にバッファするための方法を示す図である。
【図４】多重アクション自動化アシスタントルーチンを進行させる際に受信されるコンテンツをバッファするための状態図を示す図である。
【図５】例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【００２８】
本開示は概して、リモートに生成された自動化アシスタントコンテンツのレンダリングにおけるクライアントデバイスレイテンシを軽減するための方法、装置、コンピュータ可読媒体(一時的および非一時的)を対象とする。各実装形態は、各インスタンスが、多重アクション要求の対応するアシスタントアクションに応じたコンテンツに基づく出力の複数のインスタンスのレンダリング間のクライアントデバイスレイテンシを軽減することを対象とする。たとえば、それらの実装形態は、多重アクション要求の第1の自動化アシスタントアクションに応じた第1のコンテンツに基づく第1の出力のレンダリングと、多重アクション要求の第2の自動化アシスタントアクションに応じた第2のコンテンツに基づく第2の出力のレンダリングとの間のレイテンシを低減させることができる。
【００２９】
本明細書で開示されるいくつかの実装形態は、自動化アシスタントを通じて様々なソースからコンテンツをシームレスに提供することに関する。コンテンツは、複数の異なる自動化アシスタントアクションに対応する自動化アシスタントルーチンを初期設定する要求に応じて提供することができる。たとえば、複数の異なるアクションのうちのアクションは、場合によっては、ユーザが自動化アシスタントインターフェースに機能の実行を要求する自然言語入力(たとえば、「アシスタント、天気を教えて。」)を提供するときに実行することができる自動化アシスタントの機能に対応することができる。ルーチンがユーザに様々なコンテンツを提供するためのアクションを含むとき、あるコンテンツがすぐには利用できないときに自動化アシスタントによってレイテンシが生じることがある。そのようなレイテンシは、他のコンテンツのプロビジョニングを遅延させることもあり、このコンテンツは、あるコンテンツが最初にユーザに提示されるまでユーザに提供されないこともある。
【００３０】
そのようなレイテンシを軽減するために、自動化アシスタントによって提供される出力ストリームにコンテンツのフラグメントを選択的に組み込むことができる。たとえば、サーバは、ルーチンを実行する要求を受信したことに応答して、ルーチンを進行させるうえで実行すべき様々なアクションを初期設定することができる。サーバは、第1のコンテンツをユーザに提供するための第1のアプリケーションに問い合わせることができ、第2のコンテンツをユーザに提供するための第2のアプリケーションに問い合わせることができる。サーバは、第1のコンテンツおよび第2のコンテンツが受信される順序に基づいてユーザが受信する出力ストリームを構成することができる。たとえば、第1のコンテンツの一部が、第2のコンテンツのいずれかが受信される前に受信される場合、サーバは、自動化アシスタントに第1のコンテンツの上記の一部をユーザに提供させることができる。サーバがある量の第2のコンテンツを受信すると、自動化アシスタントが第1のコンテンツ全体を完全に提供する前に出力ストリームを受信された第2のコンテンツを組み込むように修正することができる。言い換えれば、ユーザが自動化アシスタントまたは他の装置もしくはアプリケーションを介して第1のコンテンツの一部を受信している間、自動化アシスタントが第1のアクションに関連付けられた第1のコンテンツのすべてを提供する前に、第2のコンテンツを同時にまたは順次受信することができる。
【００３１】
いくつかの実装形態では、コンテンツをフラグメントに分離することができ、各フラグメントを受信される順序で出力ストリームに提供することができる。たとえば、ルーチンの第1のアクションに関連付けられた第1のコンテンツをナビゲーション指示とすることができ、ナビゲーション指示のナビゲーションステップに対応するデータを第1のコンテンツからフラグメント化することができる。このようにして、ルーチンの第2のアクションに関連付けられた任意の第2のコンテンツがデータのプロビジョニングの間に受信される場合、第2のコンテンツのフラグメントをデータの直後に提示されるように配置することができる。言い換えれば、第2のコンテンツのフラグメントに対応する別個のデータを第1のコンテンツのフラグメントに対応するデータに隣接させてバッファすることができる。ルーチンに関連付けられたデータの様々なフラグメントをクライアントデバイスにバッファすることができ、ユーザは、クライアントデバイスを通じて自動化アシスタントと対話する。
【００３２】
いくつかの実装形態では、データの様々なフラグメントを1つまたは複数の異なるクライアントデバイスにバッファすることができる。たとえば、第1のコンテンツは、ポッドキャストなどのコンテンツストリームに対応することができ、第2のコンテンツは、限定はしないがサーモスタットなどの、モノのインターネット(IoT)デバイスに関係する情報に対応することができる。第1のコンテンツのデータ(たとえば、オーディオデータ)のフラグメントを、ユーザがルーチンが実行することを要求したのと同じデバイス(たとえば、セルラーデバイス)に提供することができ、第2のコンテンツのデータ(たとえば、センサーデータ)のフラグメントを、同じデバイス、または自動化アシスタントがアクセス可能な別個のデバイスに提供することができる。たとえば、別個のデバイスはサーモスタット、タブレットデバイス、および/またはユーザの近くの任意の他のクライアントデバイスとすることができる。代替として、オーディオインターフェースなどの特定のモダリティを通じて第1のコンテンツを提供するデバイスは、ディスプレイパネルなどの異なるモダリティを通じて第2のコンテンツを提供することができる。これらの方法およびその他の方法で、コンテンツのすべてが受信されるまで特定のアシスタント関連コンテンツのプロビジョニングを制限する動作と比べて、複数のアクションを含むルーチンをより小さいレイテンシでレンダリングすることができる。
【００３３】
図1は、自動化アシスタント104を使用して、クライアントデバイスのアシスタントアプリケーションによって、コンテンツのレンダリングにおけるレイテンシを軽減するように多重アクションルーチンを実行するためのシステム100を示し、この場合、コンテンツは、ルーチンの一部であるアクションに対応する。自動化アシスタント104は、一部がクライアントデバイス116(たとえば、携帯電話)などの1つまたは複数のクライアントデバイスに設けられたアシスタントアプリケーションを介して動作することができ、一部がサーバデバイスなどの1つまたは複数のリモートコンピューティングデバイス102を介して動作することができる。
【００３４】
ユーザ112は、クライアントデバイスのアシスタントアプリケーションを介して提供されるアシスタントインターフェースを介して自動化アシスタント104と対話することができる。アシスタントインターフェースは、1つまたは複数のモダリティを使用してユーザのユーザインターフェース入力を受信し、1つまたは複数のモダリティを使用してユーザインターフェース出力をレンダリングする。ユーザインターフェース入力モダリティは、たとえば、タイプ入力、タッチ、発話、およびジェスチャーモダリティを含み、モダリティについてのユーザインターフェース入力は、たとえば、クライアントデバイスのマイクロフォン(発話モダリティ)、クライアントデバイスのタッチスクリーンおよび/またはキーボード(タイプ入力モダリティ)、クライアントデバイスのカメラ(ジェスチャーモダリティ)などを介して受信することができる。ユーザインターフェース出力モダリティは、たとえば、音声認識可能モダリティ、グラフィカルモダリティ、および/または触覚モダリティを含むことができ、モダリティ用のユーザインターフェース出力は、たとえば、クライアントデバイスのスピーカ(音声認識可能モダリティ)、クライアントデバイスのディスプレイデバイス(視覚モダリティ)、クライアントデバイスのトランスジューサ(触覚モダリティ)などを介してレンダリングすることができる。たとえば、ユーザは言語入力、テキスト入力、ジェスチャー入力、またはグラフィカル入力をアシスタントインターフェースに提供して自動化アシスタント104に機能を実行させること(たとえば、データを提供すること、周辺デバイスを制御すること、エージェントにアクセスすることなど)によって自動化アシスタント104へのユーザインターフェース入力を提供することができる。実行された機能に対応する応答コンテンツは次いで、クライアントデバイスのスピーカ、ディスプレイスクリーン、および/または他のユーザインターフェース出力デバイスを介してレンダリングすることができる。いくつかの実装形態では、クライアントデバイス116は、タッチ入力を受信するためのタッチインターフェースを含み、自動化アシスタント出力をレンダリングするように駆動することもできるディスプレイパネルなどのディスプレイデバイスを含むことができる。いくつかの実装形態では、クライアントデバイス116はディスプレイデバイスを含まないことがあり、それによって、グラフィカルユーザインターフェース出力モダリティを提供せずに音声認識可能アシスタントインターフェース出力モダリティを提供する。
【００３５】
クライアントデバイス116は、インターネットなどのネットワーク114を介してリモートコンピューティングデバイス102と通信することができる。クライアントデバイス116は、リモートコンピューティングデバイス102に計算タスクをオフロードして、たとえば、クライアントデバイス116における計算リソースを節約し、ならびに/またはリモートコンピューティングデバイス102で利用可能なよりロバストなリソースを使用することができる。たとえば、リモートコンピューティングデバイス102は自動化アシスタント104をホストすることができ、クライアントデバイス116は、1つまたは複数のアシスタントインターフェースで受信された入力をリモートコンピューティングデバイス102に送信することができる。しかし、いくつかの実装形態では、自動化アシスタント104のいくつかの態様は、クライアントデバイス116上に実装することができる。たとえば、自動化アシスタント104の態様は、クライアントデバイス116のローカルアシスタントアプリケーションを介して実装することができ、自動化アシスタント104の他の態様を実装するリモートコンピューティングデバイス102とインターフェースすることができる。たとえば、ローカルアシスタントアプリケーションは、場合によっては、1つまたは複数のローカル音声テキスト合成エンジン、1つまたは複数のローカルテキスト音声合成エンジン、および/またはリモートコンピューティングデバイス102のエンジンを補助するかまたはリモートコンピューティングデバイス102のエンジンに代わる他のローカルエンジンを含むことができる。リモートコンピューティングデバイス102は、場合によっては、複数のスレッドを介して複数のユーザおよびその関連するアシスタントアプリケーションにサービスすることができる。自動アシスタント104の各態様がクライアントデバイス116のローカルアシスタントアプリケーションを介して実装される実装形態では、ローカルアシスタントアプリケーションは、クライアントデバイス116のオペレーティングシステムから分離された(たとえば、オペレーティングシステム「上」にインストールされた)アプリケーションとすることができ、または代替的にクライアントデバイス116のオペレーティングシステムによって直接実装することが
できる(たとえば、オペレーティングシステムのアプリケーションであるがオペレーティングシステムと一体であると見なすことができる)。
【００３６】
いくつかの実装形態では、リモートコンピューティングデバイス102は自動音声認識を実行することができ、クライアントデバイス116によって提供されるオーディオデータはオーディオデータの意味表現(たとえば、テキスト)に変換される。たとえば、リモートコンピューティングデバイス102は、アシスタントインターフェースにおいて受信されたオーディオデータを処理してオーディオデータに埋め込まれたテキストを特定することができる音声テキスト合成エンジン106(音声テキスト合成エンジンまたはSTTエンジンとも呼ばれる)を含むことができる。オーディオデータをテキストに変換するプロセスは、音声認識アルゴリズムを含むことができ、音声認識アルゴリズムは、ニューラルネットワークおよび/または統計モデルを使用して語または句に対応するオーディオデータのグループを特定することができる。非制限的な一例として、オーディオデータは、1つまたは複数の訓練済み音響モデル(たとえば、1つまたは複数の長短期(LSTM)層を有するニューラルネットワークモデル)を用いて処理して、オーディオデータに存在する音および/または音素を生成することができ、音および/または音素を分析して音および/または音素に対応するテキストを生成することができる。オーディオデータから変換されたテキストは、テキストパーサーエンジン108によって解析することが可能であり、自動化アシスタント104によってテキストデータとして利用できるようにすることが可能であり、このテキストデータを使用してユーザ112および/またはサードパーティアプリケーションからコマンドフレーズを生成しならびに/または特定することができる。
【００３７】
いくつかの実装形態では、ユーザ112は、自動化アシスタント104に様々な異なるアクションを実行させるようにクライアントデバイス116のアシスタントインターフェースを通じてルーチンを初期設定することができる。たとえば、ユーザ112は、アシスタントインターフェースに自然言語入力を提供することができ、入力は、自動化アシスタント104がアクセス可能であるかまたは自動化アシスタント104と一体であるルーチンエンジン110によって処理することができる。ルーチンエンジン110は、入力と、ルーチン名を対応するアクションにマップするエントリのデータストレージを比較することができる。たとえば、ルーチンは、リモートデバイス118を通じてアクセス可能な第1のコンテンツエージェント122から第1のコンテンツを取り出す第1のアクション、リモートデバイス120を通じてアクセス可能な第2のコンテンツエージェント124から第2のコンテンツを取り出す第2のアクションに対応することができる。第1のコンテンツは、限定はしないが、ポッドキャストなどのオーディオデータとすることができ、第2のコンテンツは、限定はしないが、気象データとすることができる。第1のコンテンツおよび第2のコンテンツは、ユーザ112が「おはようございます」などの入力コマンドを提供したことに応じて自動化アシスタントによって取り出すことができる。代替的に、自動化アシスタントは、ユーザが「おはようございます」と示されたアイコンなどのグラフィカルユーザインターフェース要素をタップしたことに応じて1組のアクションに関連付けられたルーチンを実行することができる。代替的に、自動化アシスタントは、自動化アシスタントによって特定のコンテキストが考慮されるか否かにかかわらず、ユーザがジェスチャーを実行したことに応答して1組のアクションに関連付けられたルーチンを実行することができる。たとえば、ジェスチャーは、限定はしないが、アシスタントデバイスの近くでユーザが手を振ることもしくはアシスタントデバイスの近くでのユーザの肉体的な動きを含むことができ、および/またはコンテキストは、日時、位置、および/もしくは自動化アシスタントによって実行された最近のアクションを含むことができる。いくつかの実装形態では、自動化アシスタントは、ユーザからの明示的なユーザインターフェー
スエンゲージメントなしにルーチンを実行することができる。たとえば、自動化アシスタントは、クライアントデバイスが特定の期間内にユーザの存在を検出するか、または特定の期間内にユーザの声を検出したことに応じてルーチンを実行することができる(たとえば、午前7時から午前9時の間にユーザの存在を検出したことに応じて「おはようございます」ルーチンを実行する)。
【００３８】
自動化アシスタント104は、入力されたコマンドを受信したことに応じて、第1のコンテンツエージェント122に第1のコンテンツを要求し、第2のコンテンツエージェント124に第2のコンテンツを要求することができる。自動化アシスタント104は、最初に自動化アシスタント104に返されたコンテンツに従ってユーザ112に応答を提供することができる。たとえば、第2のコンテンツの一部が自動化アシスタント104に返される前に第1のコンテンツの少なくとも一部が自動化アシスタント104に返された場合、第1のコンテンツの上記の一部をクライアントデバイス116に提供してバッファすることができる。その後、自動化アシスタント104は、第1の部分がクライアントデバイス116においてユーザ112に提供されているときに第2のコンテンツの一部を受信した場合、クライアントデバイス116に第2のコンテンツの受信された部分をバッファさせることができる。その結果、ユーザ112は、第1のコンテンツの上記の一部を受信し、その後、第1のコンテンツのすべてが自動化アシスタント104および/またはリモートデバイス102によって受信されるのを待つ必要なしに第2のコンテンツの上記の一部を受信することができる。言い換えれば、自動化アシスタント104は、第2のアクションの結果を提供する前に必ずしも第1のアクションが完了するのを待たない。むしろ、自動化アシスタント104は、リモートデバイス102とクライアントデバイス116との間にコンテンツストリームを作成することによって、第1のアクションおよび第2のアクションに関連付けられたコンテンツをそのコンテンツが受信されたときに提供することができる。
【００３９】
いくつかの実装形態では、自動化アシスタント104がオーディオサブシステムなどのクライアントデバイス116の第1のアシスタントインターフェースを通じて第1のコンテンツを提供している間に第2のコンテンツが受信されたときに、ディスプレイサブシステムなどのクライアントデバイス116の第2のアシスタントインターフェースを通じて第2のコンテンツを提供することができる。このようにして、クライアントデバイス116のそれぞれに異なるモダリティを通じて第1のコンテンツおよび第2のコンテンツを同時に提示するのを可能にすることによって、場合によっては示されるレイテンシを軽減することができる。
【００４０】
いくつかの実装形態では、自動化アシスタント104がディスプレイサブシステムを通じて第1のコンテンツを提供している間に第2のコンテンツが受信されたときに、異なる位置におけるディスプレイサブシステムを通じて第2のコンテンツを提供することもできる。たとえば、第1のコンテンツの一部が受信されたときにクライアントデバイス116のグラフィカルユーザインターフェースにおいて第1のコンテンツの一部を提示することができる。第2のコンテンツの一部が、グラフィカルユーザインターフェースに表示されている第1のコンテンツの上記の一部と同時に受信された場合、第2のコンテンツの上記の一部は、表示されている第1のコンテンツの上記の一部と同時にグラフィカルユーザインターフェースの異なる位置に表示することができる。
【００４１】
コンテンツを特定のモダリティとの関連付けに応じて取り出すタスクを有するリモートデバイスによって、第1のコンテンツおよび第2のコンテンツの各々についてフラグを立てることができる。このようにして、クライアントデバイスは、コンテンツを受信したときに、第1のコンテンツと第2のコンテンツがそれぞれに異なるモダリティに対応するかどうかに応じて、コンテンツを同時に提示するかどうかを判定することができる。代替的に、クライアントデバイスは、リモートデバイスが各々の特定のモダリティのフラグを立てる必要なしに第1のコンテンツおよび第2のコンテンツの各々についてモダリティを判定することができる。いくつかの実装形態では、リモートデバイスは、特定のコンテンツについて、ルーチンを進行させるうえで、同じモダリティに関連付けられたコンテンツがリモートデバイスによって取り出されたときに、同時に提示するのに適したコンテンツとしてフラグを立てることができる。たとえば、自動化アシスタントが、表示されたコンテンツを提供することに関連付けられた2つのアクションを含むルーチンを実行することを要求されたときに、リモートデバイスは、アクションごとにコンテンツを取り出すことができ、それらのコンテンツを同時に表示するのに適したコンテンツとしてフラグを立てることができる。同時に提示するのに適したコンテンツは、デバイスのステータスの通知(たとえば、「エアコンが動いています」)、および/または他の詳細なコンテンツと同時に表示することができる任意の他のステータス識別子に過ぎないコンテンツとすることができるコンテンツを含むことができる。
【００４２】
図2は、自動化アシスタント210が、ルーチンを実行する間レイテンシを軽減するためにルーチンに対応するコンテンツをどのように出力ストリームとして提供することができるかの例を提示する状態図200を示す。たとえば、図2に提示されるように、ユーザは、クライアントデバイス202の自動化アシスタントインターフェースを通じて自動化アシスタント204を呼び出すことができる。ユーザは、クライアントデバイス202に、自動化アシスタント204の少なくとも一部をホストするリモートデバイス206にルーチン要求216を送らせることによって、自動化アシスタント204によってルーチンを実行することを要求することができる。ルーチン要求は、クライアントデバイスおよびリモートデバイスなどのデバイス間で送信されるデータとすることができ、ルーチン要求は、ルーチンを実行する要求の少なくとも一部を具現化することができる。ルーチン要求は、ユーザが、自動化アシスタントに特定のルーチンの実行を指示するコマンドをクライアントデバイスに対して声に出して示すことに対応するオーディオデータとすることができる。その場合、オーディオデータは、ユーザが参照していたルーチンを特定するようにリモートデバイスによって処理することができる。ルーチンを特定することは、オーディオデータのテキストレンダリングを、自動化アシスタントによって実行することのできる1個〜N個の可能なアクションまたは1つもしくは複数のルーチンXにマップすることを含むことができる。代替的に、発話コマンドをクライアントデバイスにおいてローカルに処理することができ、処理によって得られたフレーズを特定のルーチンを初期設定するためにリモートデバイスに提供することができる。たとえば、フレーズは、「アクション1〜Nを実行する」または「ルーチンXを実行する」などの特定のコマンド、アクション、またはルーチンを特定することができる。
【００４３】
自動化アシスタント204は、ルーチン要求216を受信したことに応じて、リモートデバイス206に記憶された1つまたは複数の異なるルーチンから要求されたルーチン218を特定することができる。各ルーチンは、自動化アシスタント204および/または自動化アシスタント204によってアクセス可能な任意の他のアプリケーションもしくはデバイスによって実行することのできる1つまたは複数の異なるアクションに対応することができる。たとえば、ユーザが「今日はどんな日か教えて」などのコマンドをアシスタントインターフェースに提供したときにルーチンを初期設定することができる。このコマンドは、クライアントデバイス202を介してユーザに対して日程データを読み上げることおよび気象データをユーザに提供することなどのアクションを含むルーチンに対応することができる。日程データは、リモートデバイス210にホストされた第1のエージェントアプリケーション208から取り出すことができ、気象データは、リモートデバイス214にホストされた第2のエージェントアプリケーション212から取り出すことができる。
【００４４】
自動化アシスタント204は、ユーザによって要求されたルーチンを特定すると、ルーチンに関連付けられたアクションを特定し、その後アクションを完了するためのデータを取り出す要求を生成することができる。たとえば、自動化アシスタント204は、コマンド「今日はどんな日か教えて」を受信すると、第1のコンテンツ222に対する要求を第1のエージェントアプリケーション208へ提供させ、第2のコンテンツ222に対する要求を第2のエージェントアプリケーション212へ提供させることができる。第1のエージェントアプリケーション208および/または第2のエージェントアプリケーション212は他のデバイスまたはアプリケーションからの他の要求に対処している場合があるので、第1のエージェントアプリケーション208と第2のエージェントアプリケーション212のそれぞれは異なる時間に応答してもよい。自動化アシスタント204は、ルーチン要求216の時間と自動化アシスタント204からの応答の時間との間のレイテンシを軽減するために、コンテンツについての要求が送信または生成される順序に依存しない出力ストリームをクライアントデバイス202に提供することができる。
【００４５】
たとえば、第1のコンテンツ220についての要求は第2のコンテンツ222についての要求よりも前に提供されたが、第2のコンテンツの一部224が最初に自動化アシスタント204によって受信されてもよい。第2のコンテンツの上記の一部224を受信したことに応じて、自動化アシスタント204は、クライアントデバイス202に第2のコンテンツの上記の一部226を提示させることができる。たとえば、第2のコンテンツの上記の一部は、天気アプリケーションによって提供される気象データの一部とすることができる。すべての第2のコンテンツが自動化アシスタント204によって受信されるのを待つ代わりに、自動化アシスタント204は、第2のコンテンツの上記の一部を処理して、クライアントデバイス202によって提示するのに十分なコンテンツがあるかどうかを判定することができる。たとえば、第2のコンテンツを処理してブレイクポイント、ポーズ、空集合、フラグメント化に適したデータの部分を示すことができる任意の他の識別子を特定することができる。第2のコンテンツの上記の一部がオーディオデータに対応するとき、オーディオデータを処理して、ポーズまたはしきい値量のノイズを有する部分があるかどうかを判定して、第2のコンテンツをどこでフラグメント化すべきかを特定することができる。
【００４６】
第2のコンテンツの上記の一部226がクライアントデバイス202に提示される前、提示されている間、または提示された後に、自動化アシスタント204は第1のコンテンツ228を受信することができる。いくつかの実装形態では、第1のコンテンツ228は、自動化アシスタント204とクライアントデバイス202との間に提供された出力ストリームに送り込むことができる。たとえば、自動化アシスタント204は、第1のコンテンツ228を受信したことに応じて、クライアントデバイス202に第2のコンテンツのフラグメント間に第1のコンテンツ230を提示させることができる。その結果、ユーザは、第2のコンテンツと第1のコンテンツが、クライアントデバイス202において利用可能な同じモダリティを通じて順次提供されるように知覚することができる。代替的に、第1のコンテンツが自動化アシスタント204によって受信されたときに第2のコンテンツが第1のモダリティを通じて提供されている場合、第1のコンテンツ228は、第2のコンテンツと同時に、ただし第1のモダリティとは異なる第2のモダリティにおいて提示することができる。たとえば、第2のコンテンツの上記の一部は、第1のコンテンツ228がクライアントデバイス202によって受信されたときにクライアントデバイス202においてグラフィカルに提示される気象データとすることができる。自動化アシスタント204は、第2のコンテンツの上記の一部がグラフィカルインターフェースを通じて提供されていると判定し、それに応じて、第1のコンテンツ228をクライアントデバイス202のオーディオサブシステムを通じて提示されるように指定することができる。
【００４７】
クライアントデバイス202が第1のコンテンツ230を提示しているとき、自動化アシスタント204は、第2のコンテンツ232の追加部分を受信することができる。第2のコンテンツ232の追加部分を受信したことに応じて、自動化アシスタント204は、クライアントデバイス202に第1のコンテンツと第2のコンテンツ234を同時に提示させることができる。第1のコンテンツと第2のコンテンツは、クライアントデバイス202の同じモダリティまたはそれぞれに異なるモダリティを通じて同時に提示することができる。いくつかの実装形態では、自動化アシスタント204は、クライアントデバイス202とは異なるがユーザと関連付けられた1つまたは複数のデバイスにアクセスし、第1のコンテンツおよび第2のコンテンツを複数の異なるデバイスにおいて同時に提供させることができる。
【００４８】
ユーザが自動化アシスタント204からの出力ストリームの間に追加要求を行った場合、自動化アシスタント204は、出力ストリームを停止して要求を受信することができる。要求が完全に受信されると、自動化アシスタント204は出力ストリームを再開することができる。言い換えれば、自動化アシスタント204は、中間要求を受信したことに応じて、クライアントデバイス202に、ルーチンを進行させるうえで、クライアントデバイス202のバッファの残りのコンテンツをユーザに提供させることができる。いくつかの実装形態では、自動化アシスタント204は、出力ストリームの間にユーザから入力を受信したことに応じて、ユーザが入力を提供したモダリティを判定することができる。自動化アシスタント204は次いで、クライアントデバイス202において現在利用可能な異なるモダリティを特定し、自動化アシスタント204がユーザから入力を受信している間この異なるモダリティを通じて出力ストリームを継続させることができる。たとえば、ユーザがクライアントデバイス202のオーディオサブシステムを通じて日程データおよび気象データを受信しており、ユーザがオーディオサブシステムを通じて入力を提供することを選択した(たとえば、「兄にメッセージしてくれる」という発話)場合、自動化アシスタントは、クライアントデバイス202のディスプレイサブシステムが利用可能であると判定することができる。自動化アシスタント204は、ユーザから入力を受信している間にこの判定を下し、クライアントデバイス202に日程データおよび気象データの残りの部分をクライアントデバイス202のディスプレイサブシステムに提示させることができる。ユーザが自動化アシスタント204に入力を提供することを完了したときにルーチンが完了していない場合、ディスプレイサブシステムは、ユーザが入力を提供する前に表示していたものの表示に戻ることができ、ならびに/または自動化アシスタントは、オーディオサブシステムに日程データおよび気象データの提供を継続させることができる。ユーザが自動化アシスタント204に入力を提供している間にルーチンが完了した場合、気象データおよび日程データは、ユーザがデータに肯定応答するかまたは場合によってはクライアントデバイス202に入力を提供するまでディスプレイサブシステムに表示され
続けることができる。
【００４９】
いくつかの実装形態では、要求されたルーチンは、第1のコンテンツを必要とする規則または制限に関連付け、第1のアクションに関連付け、完全にレンダリングするかまたは場合によっては第2のコンテンツの前にユーザに提供し、第2のアクションに関連付けすることができ、レンダリングされまたは場合によってはユーザに提供される。たとえば、ルーチンは、ユーザが、「おはようございます」というフレーズを発話することなどの自然言語入力を提供したことに応じて初期設定することができる。さらに、ルーチンは、ユーザに日程データを提供する第1のアクションと、ユーザに無線ストリームを提供する第2のアクションを含むことができる。しかし、ルーチンは、第2のコンテンツをユーザに提供できるようになる前に第1のコンテンツ全体が提供されるという要件または制限とともに記憶することができる。第1のコンテンツがユーザに提供されてから第2のコンテンツがユーザに提供されるまでの間に生じることがあるレイテンシを軽減するために、クライアントデバイスが第1のコンテンツを提供している間第2のコンテンツをクライアントデバイスによってバッファすることができる。
【００５０】
たとえば、上記の例に関して、自動化アシスタントは、ルーチンを実行する要求をユーザから受信し、第1のコンテンツおよび第2のコンテンツを取り出す要求を生成することができる。図2に示すように、クライアントデバイスは、第1のコンテンツのいずれかが受信される前に第2のコンテンツの一部を受信することができる。しかし、ルーチンは、第2のコンテンツが提供される前に第1のコンテンツの全体が提供されることを必要とするので、クライアントデバイスにおいて受信された第2のコンテンツの上記の一部はクライアントデバイスのメモリにバッファすることができる。その後、クライアントデバイスによって第1のコンテンツが受信されると、クライアントデバイスは、第1のコンテンツを第2のコンテンツよりも優先し、それによってルーチンの要件を満たして、第2のコンテンツを提供する前に第1のコンテンツを完全に提供することができる。第1のコンテンツの全体が完全に提供されると、クライアントデバイスは、バッファされた第2のコンテンツのすでに受信された部分のレンダリングを開始することができる。さらに、自動化アシスタントは第2のコンテンツの上記の一部がメモリからレンダリングされているときに第2のコンテンツのうちのさらなる部分が利用可能である場合、第2のコンテンツのさらなる部分を要求することができる。これらの方法およびその他の方法で、第1のコンテンツのレンダリングと第2のコンテンツのレンダリングとの間のレイテンシを軽減することができる。いくつかの実装形態では、第2のコンテンツのうちのさらなる部分が利用可能である場合、クライアントデバイスは第2のコンテンツのさらなる部分を要求せずに受信することができる。むしろ、クライアントデバイスは、レイテンシをさらに軽減するために、第2のコンテンツが提供されるときに自動的にレンダリングされるストリーミングチャネルを提供することができる。
【００５１】
図3は、ルーチンのそれぞれに異なるアクションに関連付けられたコンテンツを同時にバッファするための方法300を示し、このルーチンは自動化アシスタントによって実行される。方法300は、自動化アシスタントと対話することができる1つもしくは複数のアプリケーション、デバイス、および/または任意の他のシステムによって実行することができる。方法300は、自動化アシスタントに関連付けられた複数の異なるアクションを含むルーチンを生成する動作302を含むことができる。ルーチンを生成する動作302は、複数の異なるアクションを、ユーザによって自動化アシスタントが呼び出されたときに実行することができるルーチンとして組み合わせることを要求するユーザによって初期設定することができる。代替的に、ルーチンを生成する動作302は、自動化アシスタントが、特定のルーチンを特定するためのサーバなどのリモートデバイスにアクセスしたことに応じて実行することができる。複数の異なるアクションの各アクションは、自動化アシスタントによって直接または間接的に実行することができる。たとえば、ルーチンのアクションは、ユーザによって操作されるクライアントデバイスによって少なくとも部分的にホストされる自動化アシスタントアプリケーションが利用可能なデータにアクセスすることを含むことができる。さらに、ルーチンのアクションは、1つまたは複数のリモートデバイスからあるデータを取り出して、自動化アシスタントに、ユーザによって操作されるクライアントデバイスの1つまたは複数のアシスタントインターフェースを介してユーザにデータを提示させることを含むことができる。
【００５２】
方法300は、ルーチンを実行する要求を受信する動作304をさらに含むことができ、ルーチンは、第1のコンテンツおよび第2のコンテンツをクライアントデバイスに提供することを含むことができる。要求は、クライアントデバイスのアシスタントインターフェースへの自然言語入力として提供することができる。ルーチンは、たとえば、ユーザの住居を仲間のために準備するために使用することができる。したがって、第1のコンテンツは、第1のサーバデバイスから取り出される音楽とすることができ、第2のコンテンツは、クライアントデバイスにおいてストリーミングすることができる利用可能な映画のリストとすることができる。ルーチンを初期設定するための入力されたコマンドは、たとえば、「パーティの準備」とすることができ、入力されたコマンドを受信したことに応じて、自動化アシスタントは、第1のコンテンツおよび第2のコンテンツについての要求を生成することができる。
【００５３】
方法300は、第1のエージェントアプリケーションからの第1のコンテンツの取り出しおよび第2のエージェントアプリケーションからの第2のコンテンツの取り出しを初期設定する動作306をさらに含むことができる。エージェントアプリケーションは、ファーストパーティ(「1P」)エージェントアプリケーション(すなわち、自動化アシスタントを制御するのと同じパーティによって制御されるエージェントアプリケーション)またはサードパーティ(3P)エージェントアプリケーション(すなわち、自動化アシスタントを制御するパーティとは別個のパーティによって制御されるエージェントアプリケーション)を指すことができる。各エージェントアプリケーションは、1つまたは複数の特定の種類の要求を受信し、要求に応じた対応する応答を生成するように構成することができる。たとえば、要求は、アプリケーションプログラミングインターフェース(API)を介してエージェントアプリケーションに送信することができ、対象(たとえば、エージェントアプリケーションによって実行すべきアクション)を対象のスロットについての値とともに特定することができ、各値は、対象によって示されるアクションを実行するためのパラメータを指示する。たとえば、第1のエージェントアプリケーションは、音楽ストリーミングアプリケーションとすることができ、第2のエージェントアプリケーションはビデオストリーミングアプリケーションとすることができる。第1のエージェントアプリケーションおよび第2のエージェントアプリケーションの各々がそれぞれのコンテンツについての要求を受信するときに、各エージェントアプリケーションではネットワークトラフィックに起因するある量のレイテンシが生じることがある。それにもかかわらず、第1のエージェントアプリケーションまたは第2のエージェントアプリケーションのいずれかから最も早く受信されたコンテンツを自動化アシスタントによってユーザに提供することができる。言い換えれば、どちらのコンテンツが最初に要求されたかまたはルーチンに対して最初のコンテンツであるかとは無関係に、受信されたコンテンツがまだその全体が完全に受信されていない場合でも、自動化アシスタントによって最も早く受信されたコンテンツをユーザに提供することができる。その後、何らかの初期コンテンツが受信された後で他のコンテンツが受信された場合、初期コンテンツがルーチンに対して最初にラベル付けされるかそれとも他のコンテンツがルーチンに対して最初にラベル付けされるかにかかわらず、他のコンテンツは、初期コンテンツがユーザにレンダリングされるのと同時にバッファすることができる。
【００５４】
方法300は、第2のコンテンツの一部を受信する前に第1のコンテンツの一部を受信する動作308をさらに含むことができる。第1のコンテンツの上記の一部は、たとえば、第1のエージェントアプリケーションからの音楽のストリームに対応するオーディオデータの部分とすることができる。第2のエージェントアプリケーションはコンテンツについての要求に対する応答を生成するのにより長い時間がかかったので、第1のエージェントアプリケーションは、第1のコンテンツのうちのある量をさらに処理するために自動化アシスタントに提供することができた。
【００５５】
方法300は、自動化アシスタントにクライアントデバイスの自動化アシスタントインターフェースを介して出力ストリームを提供させる動作310をさらに含むことができる。出力ストリームは、ルーチンに関連付けられたコンテンツを自動化アシスタントによって受信するときに提供することができる、自動化アシスタントとクライアントデバイスとの間の接続とすることができる。たとえば、自動化アシスタントは、リモートサーバデバイスにおいて少なくとも部分的にホストすることができ、リモートサーバデバイスは、インターネットなどのネットワークを介してクライアントデバイスに接続することができる。自動化アシスタントが第1のコンテンツの上記の一部を受信したことに応じて、第1のコンテンツの上記の一部を出力ストリームを通じてクライアントデバイスに提供することができる。
【００５６】
方法300は、第1のコンテンツをユーザにレンダリングする間第2のコンテンツの一部を受信する動作312をさらに含むことができる。たとえば、第1のコンテンツをレンダリングすることは、第1のコンテンツをクライアントデバイスのオーディオシステムを通じて出力させることを含むことができる。したがって、第2のコンテンツの上記の一部は第1のコンテンツがクライアントデバイスのオーディオシステムによって出力されるときに受信することができる。方法300は、第1のコンテンツをユーザにレンダリングする間第2のコンテンツの上記の一部をバッファする動作314をさらに含むことができる。たとえば、第1のコンテンツがクライアントデバイスのサブシステムを通じてユーザへの出力として提供されているとき、第2のコンテンツの受信された部分は同時にクライアントデバイスにバッファすることができる。このようにして、場合によっては、クライアントデバイスが第1のコンテンツの出力と第2のコンテンツの出力を切り替えているときに生じるレイテンシを、第2のコンテンツをクライアントデバイスにバッファさせることによって軽減する。
【００５７】
図4は、自動化アシスタントによって実行されるルーチンを進行させるうえで受信されたコンテンツのバッファについての状態図400を示す。コンテンツは、ルーチンを実行する際の異なるコンテンツのプロビジョニング間のレイテンシを軽減できるようにバッファすることができる。たとえば、ユーザは、携帯電話、タブレットデバイス、および/または任意の他の携帯電子デバイスなどのクライアントデバイス402を動作させることができる。クライアントデバイス402は、自動化アシスタントインターフェースを含むことができ、自動化アシスタントインターフェースは、ユーザと、クライアントデバイス402および/またはリモートデバイス406において少なくとも部分的にホストされる自動化アシスタント404との間のインターフェースとして動作することができる。ユーザは、ルーチンを実行することを要求するための発話コマンドなどの自然言語入力を提供することができる。ルーチンは、自動化アシスタント404の指示でならびに/または自動化アシスタント404によって実行することができるアクションまたはタスクの組合せに対応することができる。たとえば、ユーザは「寝る準備をする」という発話コマンドを自動化アシスタントインターフェースに提供することができ、これに応じて、クライアントデバイス402は、さらなる処理のためにルーチン要求416をリモートデバイス406に送信させることができる。自動化アシスタント404は、発話コマンドに関連付けられたデータとリモートデバイス406に記憶されたルーチンに関連付けられたデータとの間の相関に基づいて要求されたルーチン418を特定することができる。ルーチンは、限定はしないが、ユーザの家庭における警報機のステータスを提供すること、クライアントデバイス402を通じてラジオをかけることなどのアクションに対応することができる。
【００５８】
自動化アシスタント404および/またはリモートデバイス406がユーザによって要求されたルーチンを特定すると、自動化アシスタント404はルーチンに関連付けられたアクションを特定することができる。たとえば、ルーチンの第1のアクションは、家庭における警報機のステータスを提供することを含むことができ、この場合、自動化アシスタント404は、リモートデバイス410においてホストされる第1のエージェントアプリケーション408に第1のコンテンツ420を要求することが必要になることがある。第1のエージェントアプリケーション408からの応答コンテンツは、警報機のステータスを示すことができ、クライアントデバイスに送信されるアクションコンテンツは、クライアントデバイスにステータスを示す出力を(たとえば、音声認識可能にならびに/またはグラフィカルに)レンダリングさせることができる。ルーチンの第2のアクションは、ラジオをかけることを含むことができ、この場合、自動化アシスタント404は、リモートデバイス414においてホストされる第2のエージェントアプリケーション412に第2のコンテンツ422を要求することが必要になることがある。
【００５９】
いくつかの例では、あるアクションを別のアクションよりも前に完了することが必要になるようにルーチンを構成することができる。たとえば、自動化アシスタント404が第1のコンテンツおよび第2のコンテンツを取り出すことを必要とするルーチンは、任意の第2のコンテンツがユーザに提供される前に第1のコンテンツを全部取り出してユーザに提示することを要求することができる。しかし、第1のコンテンツをユーザに提示することから第2のコンテンツをユーザに提示することに遷移する際のレイテンシを低減させるために、自動化アシスタント404は、クライアントデバイス402に第1のコンテンツをユーザが見るかまたは他の方法で知覚できるようにレンダリングする前および/または第1のコンテンツをユーザに対してプロビジョニングした後に任意の第2のコンテンツをバッファさせることができる。たとえば、図4に示したように、第2のコンテンツの一部424を自動化アシスタント404によって第1のコンテンツ428よりも前に受信することができる。自動化アシスタント404が第1のコンテンツ428よりも前に第2のコンテンツの上記の一部424を受信したことに応じて、自動化アシスタント404は、クライアントデバイス402に第2のコンテンツの上記の一部426をバッファさせることができる。クライアントデバイス402は、第2のコンテンツの上記の一部426をバッファすることによって、第1のコンテンツ428がユーザに完全に提供されるまでクライアントデバイス102の1つまたは複数のメモリデバイスに第2のコンテンツの上記の一部426を記憶する。
【００６０】
クライアントデバイス402は、バッファ434からの第2のコンテンツを提示する前に第1のコンテンツ430の全体を提示することができる。クライアントデバイス402は、第2のコンテンツをバッファに格納することによって、ルーチンの完了を進行させるうえで第1のコンテンツを提示することと第2のコンテンツを提示することとの間のレイテンシを無くすことができる。その後、第2のコンテンツ432の追加部分が自動化アシスタントおよび/またはクライアントデバイス402によって受信されたときに、クライアントデバイス402は追加コンテンツを迅速にストリーミングまたはバッファすることができる。このようにして、第2のコンテンツを要求する前に第1のコンテンツが提示されるのを待つのではなく、第1のコンテンツと第2のコンテンツの両方を同時に要求することができ、このことは、ルーチンが、第2のコンテンツを提示する前に第1のコンテンツをユーザに完全に提示しなければならなくなるように構成されるにもかかわらず行うことができる。
【００６１】
いくつかの実装形態では、第2のコンテンツ422についての要求が送信される前および/または第2のコンテンツの上記の一部424が受信される前に第1のコンテンツ428を受信することができる。その結果、クライアントデバイス402は、第2のコンテンツ422についての要求が送信される前および/または第2のコンテンツの上記の一部424が受信される前に第1のコンテンツ430を提示することができる。その後、クライアントデバイス402は、受信された第2のコンテンツの上記の一部426をバッファすることができ、その間、クライアントデバイス402は、第1のコンテンツ428をレンダリングするか、または場合によってはクライアントデバイス402を介して第1のコンテンツ430をユーザに提示する。
【００６２】
図5は、例示的なコンピュータシステム510のブロック図である。コンピュータシステム510は一般に、バスサブシステム512を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ514を含む。これらの周辺デバイスは、たとえば、メモリ525およびファイルストレージサブシステム526、ユーザインターフェース出力デバイス520、ユーザインターフェース入力デバイス522、およびネットワークインターフェースサブシステム516を含むストレージサブシステム524を含んでもよい。入力デバイスおよび出力デバイスは、ユーザとコンピュータシステム510との対話を可能にする。ネットワークインターフェースサブシステム516は、外部ネットワークとのインターフェースを構成し、他のコンピュータシステムにおける対応するインターフェースデバイスに結合される。
【００６３】
ユーザインターフェース入力デバイス522は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィクスタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムなどのオーディオ入力デバイス、マイクロフォン、および/または他の種類の入力デバイスを含んでもよい。一般に、「入力デバイス」という用語を使用するときは、コンピュータシステム510内または通信ネットワーク上に情報を入力するためのすべての可能な種類のデバイスおよび方法を含むことが意図される。
【００６４】
ユーザインターフェース出力デバイス520は、ディスプレイサブシステム、プリンタ、ファックス、またはオーディオ出力デバイスなどの非視覚ディスプレイを含んでもよい。ディスプレイサブシステムは、陰極管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投影デバイス、または可視画像を作成するための何らかの他の機構を含んでもよい。ディスプレイサブシステムは、オーディオ出力デバイスなどによって非視覚ディスプレイを構成してもよい。一般に、「出力デバイス」という用語を使用するときは、コンピュータシステム510からユーザまたは別の機械もしくはコンピュータシステムに情報を出力するためのすべての可能な種類のデバイスおよび方法を含むことが意図される。
【００６５】
ストレージサブシステム524は、本明細書で説明するモジュールのいくつかまたはすべての機能を実現するプログラミング構造およびデータ構造を記憶する。たとえば、ストレージサブシステム524は、方法300の選択された態様を実行し、ならびに/または本明細書で説明するリモートデバイス、クライアントデバイス、サーバデバイス、自動化アシスタント、エージェントアプリケーション、および/もしくは任意の他のシステム、方法、アプリケーション、もしくはデバイスのうちの1つもしくは複数を実施するための論理を含んでもよい。
【００６６】
これらのソフトウェアモジュールは一般に、プロセッサ514のみまたは他のプロセッサと組み合わせて実行される。ストレージサブシステム524において使用されるメモリ525は、プログラム実行時に命令およびデータを記憶するためのメインランダムアクセスメモリ(RAM)530と、固定命令が記憶される読取り専用メモリ(ROM)532とを含むいくつかのメモリを含むことができる。ファイルストレージサブシステム526は、プログラムファイルおよびデータファイルを永続的に記憶することができ、ハードディスクドライブ、関連する取外し可能媒体を含むフロッピーディスクドライブ、CD-ROMドライブ、光学ドライブ、または取外し可能媒体カートリッジを含んでもよい。ある実装形態の機能を実施するモジュールは、ストレージサブシステム524、またはプロセッサ514によってアクセス可能な他の機械にファイルストレージサブシステム526によって記憶されてもよい。
【００６７】
バスサブシステム512は、コンピュータシステム510の様々な構成要素およびサブシステムを目的どおりに互いに通信させるための機構を構成する。バスサブシステム512は単一のバスとして概略的に示されているが、バスシステムの代替実装形態は複数のバスを使用してもよい。
【００６８】
コンピュータシステム510は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む様々な種類のコンピュータシステムとすることができる。コンピュータおよびネットワークは常に変化する特性を有するので、図5に示すコンピュータシステム510の説明は、いくつかの実装形態を示すことを目的とした特定の例に過ぎない。図5に示すコンピュータシステムよりも多いまたは少ない構成要素を有するコンピュータシステム510の他の多くの構成が可能である。
【００６９】
本明細書で説明するシステムがユーザ(または本明細書では「参加者」と呼ばれることが多い)に関する個人的な情報を収集するか、もしくは個人的な情報を使用することがある状況では、プログラムもしくはフィーチャがユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくは活動、職業、ユーザの好み、もしくはユーザの現在の地理的位置に関する情報)を収集するかどうかを制御するか、またはユーザとの関連性がより高い場合があるコンテンツをコンテンツサーバから受信するかどうかならびに/もしくはどのように受信するかを制御する機会をユーザに与えてもよい。さらに、あるデータは、記憶または使用される前に1つまたは複数の方法で処理されてもよく、それによって個人的な識別可能情報が削除される。たとえば、ユーザについて判定できる個人的な特定可能情報がなくなるようにユーザのIDが処理されてもよく、または地理的位置情報が得られる場合(市、郵便番号、または州レベルなど)にユーザの地理的位置が一般化されてもよく、それによってユーザの特定の地理的位置が判定できなくなる。したがって、ユーザは、ユーザに関する情報がどのように収集されるかならびに/または使用されるかを制御してもよい。
【００７０】
本明細書においていくつかの実装形態について説明し図示したが、機能を実行しおよび/もしくは結果を得るための様々な他の手段および/もしくは構造ならびに/または本明細書で説明する利点のうちの1つまたは複数が利用されてもよく、そのような変形および/または修正のそれぞれは本明細書で説明した実装形態の範囲内と見なされる。より一般的には、本明細書で説明するすべてのパラメータ、寸法、材料、および構成は、例示的なものであり、実際のパラメータ、寸法、材料、および/または構成は、教示が使用される特定の用途に依存する。当業者には、本明細書で説明した特定の実装形態の多数の均等物が認識されるか、または単なる日常試験を使用して確認することができよう。したがって、上記の実装形態が例としてのみ提示されており、添付の特許請求の範囲およびその均等物の範囲内で、具体的に説明し請求した実装形態以外の実装形態が実施されてもよいことを理解されたい。本開示の実装形態は、本明細書で説明した各個々のフィーチャ、システム、物品、材料、キット、および/または方法を対象とする。さらに、そのようなフィーチャ、システム、物品、材料、キット、および/または方法が相互に矛盾しない場合、2つ以上のそのようなフィーチャ、システム、物品、材料、キット、および/または方法の任意の組合せが本開示の範囲内に含まれる。
【符号の説明】
【００７１】
100  システム
102  リモートコンピューティングデバイス
104  自動化アシスタント
106  音声テキスト合成エンジン
108  テキストパーサーエンジン
110  ルーチンエンジン
112  ユーザ
116  クライアントデバイス
118  リモートデバイス
120  リモートデバイス
122  第1のコンテンツエージェント
124  第2のコンテンツエージェント
200  状態図
202  クライアントデバイス
204  自動化アシスタント
206  リモートデバイス
208  第1のエージェントアプリケーション
210  自動化アシスタント
212  第2のエージェントアプリケーション
214  リモートデバイス
216  ルーチン要求
218  要求されたルーチン
222  第1のコンテンツ
224  第2のコンテンツ
226  第2のコンテンツ
228  第1のコンテンツ
230  第1のコンテンツ
232  第2のコンテンツ
234  第2のコンテンツ
402  クライアントデバイス
404  自動化アシスタント
406  リモートデバイス
408  第1のエージェントアプリケーション
410  リモートデバイス
412  第2のエージェントアプリケーション
416  ルーチン要求
418  要求されたルーチン
422  第2のコンテンツ
424  第2のコンテンツ
426  第2のコンテンツ
428  第1のコンテンツ
430  第1のコンテンツ
434  バッファ
510  コンピュータシステム
512  バスサブシステム
514  プロセッサ
516  ネットワークインターフェースサブシステム
520  ユーザインターフェース出力デバイス
522  ユーザインターフェース入力デバイス
524  ストレージサブシステム
526  ファイルストレージサブシステム
530  メインランダムアクセスメモリ
532  読取り専用メモリ
【図１】
2021515341.tif 000003
【図２】
2021515341.tif 000004
【図３】
2021515341.tif 000005
【図４】
2021515341.tif 000006
【図５】
2021515341.tif 000007
【国際調査報告】
2021515341.tif 000008
2021515341.tif 000009