(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-25
(45)【発行日】2025-04-02
(54)【発明の名称】過去の対話に基づいて関連するクエリを二次自動アシスタントに提供すること
(51)【国際特許分類】
G06F 3/16 20060101AFI20250326BHJP
G10L 15/22 20060101ALI20250326BHJP
G06F 3/01 20060101ALI20250326BHJP
【FI】
G06F3/16 630
G10L15/22 300Z
G06F3/01 510
G06F3/16 650
(21)【出願番号】P 2023559076
(86)(22)【出願日】2022-10-31
(86)【国際出願番号】 US2022048388
(87)【国際公開番号】W WO2023086229
(87)【国際公開日】2023-05-19
【審査請求日】2023-11-10
(32)【優先日】2021-11-10
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-11-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ヴィクター・カルブネ
(72)【発明者】
【氏名】マシュー・シャリフィ
【審査官】冨永 昌彦
(56)【参考文献】
【文献】米国特許出願公開第2017/0269975(US,A1)
【文献】米国特許出願公開第2019/0013019(US,A1)
【文献】国際公開第2020/105466(WO,A1)
【文献】特開2021-117302(JP,A)
【文献】特開2021-110768(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/16
G10L 15/00 - 17/26
G06F 3/01
G06F 3/048 - 3/04895
(57)【特許請求の範囲】
【請求項1】
クライアントデバイスの1つまたは複数のプロセッサによって実装される方法であって、前記方法が、
一般的な自動アシスタントによって呼び出しを受信するステップであって、前記呼び出しを受信することが、前記一般的な自動アシスタントを呼び出させる、ステップと、
前記呼び出された一般的な自動アシスタントを介して、前記クライアントデバイスの1つまたは複数のマイクロフォンによって生成されたオーディオデータ内にキャプチャされた口頭クエリを受信するステップと、
ユーザの履歴対話データを識別するステップであって、前記履歴対話データが、前記ユーザの1つまたは複数の過去のクエリと、前記1つまたは複数の過去のクエリに応答してある時間期間内に複数の二次自動アシスタントによって生成された1つまたは複数の応答とに基づいて生成される、ステップと、
前記口頭クエリの転写を前記履歴対話データと比較することに基づいて、前記口頭クエリと、前記複数の二次自動アシスタントのうちの特定の自動アシスタントに関連する前記履歴対話データの一部との間に関係が存在すると判定するステップと、
前記口頭クエリと前記特定の自動アシスタントとの前記関係が存在するとの判定に応答して、
前記オーディオデータの指示を前記二次自動アシスタントのうちの任意の他の自動アシスタントに提供する代わりに前記特定の自動アシスタントに提供するステップであって、前記オーディオデータの前記指示を提供することが、前記特定の自動アシスタントに前記口頭クエリに対する応答を生成させる、ステップと
を含む、
方法。
【請求項2】
前記履歴対話データに基づいて、前記口頭クエリと、前記複数の二次自動アシスタントのうちの第2の特定の自動アシスタントに関連する前記履歴対話データの追加の部分との間に追加の関係が存在すると判定するステップと、
前記履歴対話データに基づいて、前記ユーザと前記第2の特定の自動アシスタントとの第2のアシスタント履歴対話に関する第2のアシスタント時間を決定するステップと、
前記履歴対話データに基づいて、前記ユーザと前記特定の自動アシスタントとの第1のアシスタント履歴対話に関する第1のアシスタント時間を決定するステップと、
前記第1のアシスタント時間と前記第2のアシスタント時間とに基づいて、前記特定の自動アシスタントと前記第2の特定の自動アシスタントとをランク付けするステップと、
前記ランク付けに基づいて前記特定の自動アシスタントを選択するステップと
をさらに含み、
前記オーディオデータの前記指示を、前記二次自動アシスタントのうちの任意の他の自動アシスタントに提供する代わりに前記特定の自動アシスタントに提供するステップが、前記ランク付けに基づいて前記特定の自動アシスタントを選択するステップにさらに基づく、
請求項1に記載の方法。
【請求項3】
前記関係に対する第1の類似性スコアと、前記追加の関係に対する第2の類似性スコアとを決定するステップをさらに含み、前記特定の自動アシスタントと前記第2の特定の自動アシスタントとをランク付けするステップが、前記第1の類似性スコアと前記第2の類似性スコアとにさらに基づく、
請求項2に記載の方法。
【請求項4】
前記口頭クエリの分類を決定するステップをさらに含み、前記口頭クエリの前記転写を前記特定の自動アシスタントに提供することが、前記分類にさらに基づく、
請求項1に記載の方法。
【請求項5】
前記履歴対話データに基づいて、前記分類もまた有する前記過去のクエリのうちの1つまたは複数に対して前記特定の自動アシスタントを利用するという前記ユーザの示された好みを識別するステップをさらに含み、前記オーディオデータを前記特定の自動アシスタントに提供するステップが、前記ユーザの好みにさらに基づく、
請求項4に記載の方法。
【請求項6】
前記オーディオデータを前記特定の自動アシスタントに提供する前記一般的な自動アシスタントの指示を生成するステップと、
前記指示を前記分類の指示とともに記憶するステップと
をさらに含む、請求項4に記載の方法。
【請求項7】
前記オーディオデータの現在のコンテキストを決定するステップと、
前記現在のコンテキストを、前記特定の自動アシスタントに前記オーディオデータを提供する前記一般的な自動アシスタントの前記指示とともに記憶するステップと
をさらに含む、請求項6に記載の方法。
【請求項8】
前記特定の自動アシスタントが、前記オーディオデータのテキスト表現を生成するために、前記オーディオデータの前記指示に対して自動音声認識を実行し、前記テキスト表現の自然言語処理を生成し、前記自然言語処理に基づいて応答を生成する、請求項1に記載の方法。
【請求項9】
応答を生成することが、
前記自然言語処理の結果をサードパーティアプリケーションに提供することと、
前記サードパーティアプリケーションから応答を受信することと、
前記サードパーティ
アプリケーションからの前記応答に少なくとも部分的に基づいて前記応答を生成することとを含む、請求項8に記載の方法。
【請求項10】
前記呼び出しが、前記特定の自動アシスタントを示し、前記オーディオデータの前記指示が、前記オーディオデータのオーディオ表現である、請求項1から9のいずれか一項に記載の方法。
【請求項11】
1つまたは複数のプロセッサと、命令を記憶するメモリとを備えるシステムであって、前記命令が、前記1つまたは複数のプロセッサによる前記命令の実行に応答して、前記1つまたは複数のプロセッサに、
一般的な自動アシスタントによって呼び出しを受信する動作であって、前記呼び出しを受信する動作が、前記一般的な自動アシスタントを呼び出させる、動作と、
前記呼び出された一般的な自動アシスタントを介して、クライアントデバイスの1つまたは複数のマイクロフォンによって生成されたオーディオデータ内にキャプチャされた口頭クエリを受信する動作と、
ユーザの履歴対話データを識別する動作であって、前記履歴対話データが、前記ユーザの1つまたは複数の過去のクエリと、前記1つまたは複数の過去のクエリに応答してある時間期間内に複数の二次自動アシスタントによって生成された1つまたは複数の応答とに基づいて生成される、動作と、
前記口頭クエリの転写を前記履歴対話データと比較することに基づいて、前記口頭クエリと、前記複数の二次自動アシスタントのうちの特定の自動アシスタントに関連する前記履歴対話データの一部との間に関係が存在すると判定する動作と、
前記口頭クエリと前記特定の自動アシスタントとの前記関係が存在するとの判定に応答して、
前記オーディオデータの指示を前記二次自動アシスタントのうちの任意の他の自動アシスタントに提供する代わりに前記特定の自動アシスタントに提供する動作であって、前記オーディオデータの前記指示を提供する動作が、前記特定の自動アシスタントに前記口頭クエリに対する応答を生成させる、動作と
を実行させる、システム。
【請求項12】
前記命令が、前記1つまたは複数のプロセッサに、
前記履歴対話データに基づいて、前記口頭クエリと、前記複数の二次自動アシスタントのうちの第2の特定の自動アシスタントに関連する前記履歴対話データの追加の部分との間に追加の関係が存在すると判定する動作と、
前記履歴対話データに基づいて、前記ユーザと前記第2の特定の自動アシスタントとの第2のアシスタント履歴対話に関する第2のアシスタント時間を決定する動作と、
前記履歴対話データに基づいて、前記ユーザと前記特定の自動アシスタントとの第1のアシスタント履歴対話に関する第1のアシスタント時間を決定する動作と、
前記第1のアシスタント時間と前記第2のアシスタント時間とに基づいて、前記特定の自動アシスタントと前記第2の特定の自動アシスタントとをランク付けする動作と、
前記ランク付けに基づいて前記特定の自動アシスタントを選択する動作と
をさらに実行させ、
前記オーディオデータの前記指示を、前記二次自動アシスタントのうちの任意の他の自動アシスタントに提供する代わりに前記特定の自動アシスタントに提供する動作が、前記ランク付けに基づいて前記特定の自動アシスタントを選択する動作にさらに基づく、
請求項11に記載のシステム。
【請求項13】
前記特定の自動アシスタントが、前記オーディオデータのテキスト表現を生成するために、前記オーディオデータの前記指示に対して自動音声認識を実行し、前記テキスト表現の自然言語処理を生成し、前記自然言語処理に基づいて応答を生成する、請求項11に記載のシステム。
【請求項14】
応答を生成することが、
前記自然言語処理の結果をサードパーティアプリケーションに提供することと、
前記サードパーティアプリケーションから応答を受信することと、
前記サードパーティ
アプリケーションからの前記応答に少なくとも部分的に基づいて前記応答を生成することとを含む、請求項13に記載のシステム。
【請求項15】
前記呼び出しが、前記特定の自動アシスタントを示し、前記オーディオデータの前記指示が、前記オーディオデータのオーディオ表現である、請求項11から14のいずれか一項に記載のシステム。
【請求項16】
1つまたは複数のプロセッサによる命令の実行に応答して、前記1つまたは複数のプロセッサに、
一般的な自動アシスタントによって呼び出しを受信する動作であって、前記呼び出しを受信する動作が、前記一般的な自動アシスタントを呼び出させる、動作と、
前記呼び出された一般的な自動アシスタントを介して、クライアントデバイスの1つまたは複数のマイクロフォンによって生成されたオーディオデータ内にキャプチャされた口頭クエリを受信する動作と、
ユーザの履歴対話データを識別する動作であって、前記履歴対話データが、前記ユーザの1つまたは複数の過去のクエリと、前記1つまたは複数の過去のクエリに応答してある時間期間内に複数の二次自動アシスタントによって生成された1つまたは複数の応答とに基づいて生成される、動作と、
前記口頭クエリの転写を前記履歴対話データと比較することに基づいて、前記口頭クエリと、前記複数の二次自動アシスタントのうちの特定の自動アシスタントに関連する前記履歴対話データの一部との間に関係が存在すると判定する動作と、
前記口頭クエリと前記特定の自動アシスタントとの前記関係が存在するとの判定に応答して、
前記オーディオデータの指示を前記二次自動アシスタントのうちの任意の他の自動アシスタントに提供する代わりに前記特定の自動アシスタントに提供する動作であって、前記オーディオデータの前記指示を提供する動作が、前記特定の自動アシスタントに前記口頭クエリに対する応答を生成させる、動作と
を実行させる命令を含む少なくとも1つのコンピュータ可読記憶媒体。
【請求項17】
前記命令が、
前記履歴対話データに基づいて、前記口頭クエリと、前記複数の二次自動アシスタントのうちの第2の特定の自動アシスタントに関連する前記履歴対話データの追加の部分との間に追加の関係が存在すると判定することと、
前記履歴対話データに基づいて、前記ユーザと前記第2の特定の自動アシスタントとの第2のアシスタント履歴対話に関する第2のアシスタント時間を決定することと、
前記履歴対話データに基づいて、前記ユーザと前記特定の自動アシスタントとの第1のアシスタント履歴対話に関する第1のアシスタント時間を決定することと、
前記第1のアシスタント時間と前記第2のアシスタント時間とに基づいて、前記特定の自動アシスタントと前記第2の特定の自動アシスタントとをランク付けすることと、
前記ランク付けに基づいて前記特定の自動アシスタントを選択することと
をさらに含み、
前記オーディオデータの前記指示を、前記二次自動アシスタントのうちの任意の他の自動アシスタントに提供する代わりに前記特定の自動アシスタントに提供することが、前記ランク付けに基づいて前記特定の自動アシスタントを選択することにさらに基づく、
請求項16に記載の少なくとも1つのコンピュータ可読記憶媒体。
【請求項18】
前記特定の自動アシスタントが、前記オーディオデータのテキスト表現を生成するために、前記オーディオデータの前記指示に対して自動音声認識を実行し、前記テキスト表現の自然言語処理を生成し、前記自然言語処理に基づいて応答を生成する、請求項16に記載の少なくとも1つのコンピュータ可読記憶媒体。
【請求項19】
応答を生成することが、
自然言語処理の結果をサードパーティアプリケーションに提供することと、
前記サードパーティアプリケーションから応答を受信することと、
前記サードパーティ
アプリケーションからの前記応答に少なくとも部分的に基づいて前記応答を生成することとを含む、請求項16に記載の少なくとも1つのコンピュータ可読記憶媒体。
【請求項20】
前記呼び出しが、前記特定の自動アシスタントを示し、前記オーディオデータの前記指示が、前記オーディオデータのオーディオ表現である、請求項16から19のいずれか一項に記載の少なくとも1つのコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、過去の対話に基づいて関連するクエリを二次自動アシスタントに提供すること、に関する。
【背景技術】
【0002】
人間は、本明細書では「自動アシスタント」と呼ばれる(「デジタルエージェント」、「チャットボット」、「対話型パーソナルアシスタント」、「インテリジェントパーソナルアシスタント」、「アシスタントアプリケーション」、「会話型エージェント」などとも呼ばれる)対話型ソフトウェアアプリケーションとの人間対コンピュータのダイアログに参加し得る。例えば、人間(自動アシスタントと対話する場合、「ユーザ」と呼ばれる場合がある)は、場合によってはテキストに変換され、次いで処理され得る口頭の自然言語入力(すなわち、発話)を使用して、および/またはテキストの(例えば、タイプされた)自然言語入力を提供することによって、コマンドおよび/または要求を自動アシスタントに提供し得る。自動アシスタントは、可聴および/または視覚的ユーザインターフェース出力を含むことができる応答ユーザインターフェース出力を提供することによって、要求に応答する。
【0003】
上述したように、多くの自動アシスタントは、呼び出し指示とそれに続く口頭クエリなどの口頭発話を介して対話されるように構成される。ユーザのプライバシーを保護するため、および/またはリソースを節約するために、しばしばユーザは、自動アシスタントが口頭発話を完全に処理する前に、自動アシスタントを明示的に呼び出さなければならない。自動アシスタントの明示的な呼び出しは、典型的には、クライアントデバイスにおいて受信された特定のユーザインターフェース入力に応答して発生する。クライアントデバイスは、アシスタントインターフェースを含み、アシスタントインターフェースは、クライアントデバイスのユーザに、自動アシスタントとインターフェースする(例えば、ユーザからの口頭のおよび/またはタイプされた入力を受信し、可聴および/またはグラフィカル応答を提供する)ためのインターフェースを提供し、自動アシスタントを実装する1つまたは複数の追加の構成要素(例えば、ユーザ入力を処理し、適切な応答を生成するリモートサーバデバイス)とインターフェースする。
【0004】
クライアントデバイスを介して自動アシスタントを呼び出すことができるいくつかのユーザインターフェース入力は、自動アシスタントを呼び出すためのクライアントデバイスにおけるハードウェアおよび/または仮想ボタン(例えば、ハードウェアボタンのタップ、クライアントデバイスによって表示されたグラフィカルインターフェース要素の選択)を含む。多くの自動アシスタントは、追加的または代替的に、「ホットワード/フレーズ」または「トリガワード/フレーズ」としても知られる1つまたは複数の口頭呼び出しフレーズに応答して呼び出され得る。例えば、「ヘイ、アシスタント(Hey Assistant)」、「オーケーアシスタント(OK Assistant)」、および/または「アシスタント(Assistant)」などの口頭呼び出しフレーズが、自動アシスタントを呼び出すために、話され得る。
【0005】
しばしば、アシスタントインターフェースを含むクライアントデバイスは、クライアントデバイスが口頭呼び出しフレーズの発生を監視するために利用する1つまたは複数のローカルに記憶されたモデルを含む。そのようなクライアントデバイスは、ローカルに記憶されたモデルを利用して、受信されたオーディオデータをローカルに処理することができ、口頭呼び出しフレーズを含まない任意のオーディオデータを破棄することができる。しかしながら、受信されたオーディオデータのローカル処理が口頭呼び出しフレーズの発生を示す場合、次いで、クライアントデバイスは、オーディオデータおよび/または後続のオーディオデータを自動アシスタントによってさらに処理させる。例えば、口頭呼び出しフレーズが「ヘイ、アシスタント(Hey Assistant)」であり、ユーザが「ヘイ、アシスタント、今何時ですか(Hey, Assistant, what time is it)」と話した場合、「今何時ですか(what time is it)」に対応するオーディオデータは、「ヘイ、アシスタント(Hey Assistant)」の検出に基づいて自動アシスタントによって処理され、現在時刻の自動アシスタント応答を提供するために利用され得る。一方、ユーザが単に(最初に呼び出しフレーズを話すことなく、または代替の呼び出し入力を提供することなく)「今何時ですか(what time is it)」を話した場合、「今何時ですか(what time is it)」の前に呼び出しフレーズ(または他の呼び出し入力)がないことの結果として、自動アシスタントからの応答が提供されない。
【発明の概要】
【課題を解決するための手段】
【0006】
本明細書において、1つまたは複数の二次自動アシスタントとのユーザの以前の対話に基づいて、一次自動アシスタントからのダイアログデータを1つまたは複数の二次アシスタントに提供するための技法について説明する。例えば、様々な技法が、一次自動アシスタントによって、ユーザと一次アシスタントとの間のダイアログを受信し、ダイアログの一部である第1のクエリを1つまたは複数の二次アシスタントに提供し、その後、クエリを別の二次アシスタントに提供する代わりに、処理のために第1のクエリが提供されたのと同じ二次アシスタントに、第1のクエリに関連するクエリを提供することに向けられている。ユーザは、最初に一次自動アシスタントを呼び出し、呼び出された一次自動アシスタントが二次アシスタントに提供することができる1つまたは複数のクエリを発することができる。二次アシスタントは、クエリを処理し、独自のインターフェースを介して、または一次自動アシスタントを介してユーザに応答を提供することができる。ユーザと一次自動アシスタントとの間のダイアログにおけるある時点において、第1の処理されたクエリに関連するクエリが受信され得る。一次自動アシスタントは、第2の受信されたクエリが第1のクエリに関連することを識別し、第2のクエリを別の二次アシスタントではなく同じ二次自動アシスタントに提供することができ、これによって、ユーザと二次自動アシスタントとの間の通信における連続性を容易にし、関連するクエリが異なる二次自動アシスタントによって処理されることを防止することができる。
【0007】
いくつかの実装形態において、ユーザは、自動アシスタント(本明細書では「最初に呼び出された自動アシスタント」とも呼ばれる)を呼び出すが、最初に呼び出された自動アシスタントが呼び出しに関連して(例えば、直後、直前に)受信されたクエリを処理する際に少なくとも選択的に対話することができる他の自動アシスタントを明示的に呼び出すことがない、「オーケーアシスタント(OK Assistant)」などの呼び出しフレーズを発し得る。したがって、ユーザは、最初に呼び出された自動アシスタントに固有の呼び出し入力を提供することに基づいて、他の自動アシスタントのうちの1つを個別に呼び出すのではなく、最初に呼び出された自動アシスタントを利用することを指定し得る。例えば、第1の呼び出しフレーズ(例えば、「オーケーアシスタントA(OK Assistant A)」)は、検出されると、任意の他の自動アシスタントを呼び出すことなく、第1の自動アシスタントを排他的に呼び出すことができる。同様に、第2の呼び出しフレーズ(例えば、「オーケーアシスタントB(OK Assistant B)」)は、検出されると、最初に呼び出された自動アシスタントおよび/または任意の他の自動アシスタントを呼び出すことなく、第2の自動アシスタントを排他的に呼び出すことができる。最初に呼び出されたアシスタントは、呼び出されると、呼び出しに関連して提供された入力を処理する際に、他の自動アシスタント(すなわち、「二次アシスタント」)と少なくとも選択的に対話することができる。
【0008】
ユーザは、一次自動アシスタントを呼び出すが、呼び出しフレーズに関連して(例えば、直後に、直前に)受信されたクエリを処理する際に一次自動アシスタントが少なくとも選択的に対話することができる他の自動アシスタントを明示的に呼び出さない「オーケーアシスタント(OK Assistant)」などの呼び出しフレーズを発するか、および/または別の方法で1つまたは複数のアクションを実行し得る。したがって、ユーザは、一次自動アシスタントに固有の呼び出し入力を提供することに基づいて、他の自動アシスタントのうちの1つのみを個別に呼び出すのではなく、一次自動アシスタントを利用することを指定し得る。例えば、第1の呼び出しフレーズ(例えば、「オーケーアシスタントA(OK Assistant A)」)は、検出されると、一次自動アシスタントおよび/または任意の他の自動アシスタントを呼び出すことなく、第1の自動アシスタントを排他的に呼び出すことができる。同様に、第2の呼び出しフレーズ(例えば、「オーケーアシスタントB(OK Assistant B)」)は、検出されると、一次自動アシスタントおよび/または任意の他の自動アシスタントを呼び出すことなく、第2の自動アシスタントを排他的に呼び出すことができる。他の呼び出しフレーズ(例えば、「オーケーアシスタント(OK Assistant)」)は、検出されると、一次アシスタントを呼び出すことができる。一次アシスタントは、呼び出されると、呼び出しに関連して提供された入力を処理する際に第1の自動アシスタントおよび/または第2の自動アシスタント(すなわち、「二次アシスタント」)と少なくとも選択的に対話することができる。いくつかの実装形態において、一次アシスタントは、第1の自動アシスタントおよび第2の自動アシスタントのうちの一方または両方と常に対話することができ、それ自体が音声認識、自然言語理解、および/または履行能力などの1つまたは複数の自動アシスタント能力を欠いている「メタアシスタント」または「一般的な自動アシスタント」であり得る。他の例において、一次自動アシスタントは、クエリに対する応答を決定するために独自のクエリ処理を実行しながら、二次アシスタントと対話することもできる。
【0009】
一次自動アシスタントは、一次および/または二次アシスタントとのユーザの履歴対話に基づいて、二次アシスタントのうちの1つのみにクエリを提供することができる。例えば、一次自動アシスタントは、クエリを受信し、第1の自動アシスタントにクエリを提供することができる。ユーザは、第1の自動アシスタントからの応答を、第1の自動アシスタントから直接、または一次自動アシスタントを介して提供され得る。その後、一次自動アシスタントは、第1のクエリに関連するクエリを受信し得る。一次自動アシスタントは、新しいクエリが第1のクエリに関連すると判定し、第2のクエリを第1の自動アシスタントのみに提供し、第2の自動アシスタントには提供しないことができる。したがって、介在するクエリが第1の自動アシスタントによって処理される場合、ユーザは、関連するクエリが異なる二次自動アシスタントによって処理される代わりに、関連するクエリに対する一貫した応答を提供され得る。
【0010】
したがって、本明細書で説明する技法の利用は、ユーザが特定の自動アシスタントによって提供されることに関心を持っている情報に基づいて、ユーザが複数の自動アシスタントの各々を明示的に呼び出す必要性を軽減する。例えば、本明細書で説明する実装形態は、ユーザが特定のタイプのクエリを処理するために第1の自動アシスタントを明示的に呼び出し、他のタイプのクエリを処理するために第2の自動アシスタントを呼び出す必要性を軽減する。さらに、第1の自動アシスタントによって以前に履行されたダイアログの部分を識別し、処理するための追加の関係するクエリをその自動アシスタントに提供することによって、関連するクエリを処理するために複数の自動アシスタントを呼び出す必要なしに、一貫した結果が提供され得る。受信されたクエリの初期分析を実行するために一次アシスタントを利用することによって、クエリの前処理(例えば、自然言語理解、テキスト読み上げ処理、自動音声認識)は、クエリが各二次アシスタントによって個別に処理されるのではなく、所与のクエリに対して一度だけ必要とされ得る。さらに、本明細書で説明する技法は、ユーザがクエリを処理することに関心を持っているという自動アシスタントからの応答を得るために、ユーザがフォローアップクエリを介して対話の全体的な持続時間を延長する必要性を軽減する。したがって、これらの実装形態は、関連するクエリがダイアログ内で連続していない場合であっても、どの自動アシスタントが関連するクエリを処理するかを決定しようとし、客観的な改善を提供するが、そうでない場合、一貫性がない、または不完全な結果が提供され、追加の処理を必要とする場合がある。
【0011】
一次自動アシスタントは、一次自動アシスタントを呼び出し、同じ環境内の他の自動アシスタントを呼び出さない呼び出しフレーズによって呼び出され得る。例えば、一次自動アシスタントが、「オーケーアシスタント(OK Assistant)」というフレーズで呼び出され、1つまたは複数の二次アシスタントが、1つまたは複数の他の呼び出しフレーズ(例えば、「オーケーアシスタントA(OK Assistant A)」、「ヘイ、アシスタントB(Hey Assistant B)」)で呼び出される。呼び出されると、一次アシスタントは、呼び出しに伴うクエリ(例えば、呼び出しフレーズに先行するおよび/または後続するクエリ)を処理する。いくつかの実装形態において、一次アシスタントは、呼び出しに伴う複数のクエリを識別し得る。例えば、一次アシスタントは、呼び出しフレーズ後の一定期間の間、オーディオデータを受信し続け、その期間中のユーザの任意の追加の発話を処理し得る。したがって、ユーザは、クエリごとに一次自動アシスタントを呼び出す必要はない場合があり、その代わりに、複数のクエリを発話し得、複数のクエリの各々には、一次自動アシスタントおよび/または1つもしくは複数の他の二次アシスタントからの応答が続き得る。
【0012】
いくつかの実装形態において、受信された口頭発話は、意図、クエリ内の用語、および/またはクエリの分類を決定するために処理され得る。例えば、一次自動アシスタントは、オーディオデータを、ユーザの意図を判定するためにさらに処理され得るデータに変換するために、音声認識、自然言語処理、および/または1つもしくは複数の他の技法を実行し得る。いくつかの実装形態において、1つもしくは複数の二次アシスタントは、処理二次アシスタントがユーザによって呼び出されていない場合であっても、入ってくる口頭発話をさらに処理し得る。例えば、ユーザは、クエリが後に続く「オーケーアシスタント(OK Assistant)」というフレーズを発話することによって、一次自動アシスタントを呼び出し得る。一次自動アシスタントは、ユーザおよび/または一次自動アシスタントと同じ環境内にある1つまたは複数の他の二次アシスタントとともに、マイクロフォンをアクティブ化し、発話をキャプチャすることができる。いくつかの実装形態において、一次自動アシスタントのみが呼び出され、クエリの指示(例えば、オーディオデータ、オーディオのテキスト表現、ユーザの意図)を二次自動アシスタントのうちの1つまたは複数に提供することができる。
【0013】
いくつかの実装形態において、一次自動アシスタントは、1つまたは複数の二次アシスタントとともにクライアントデバイス上で実行し続けることができる。例えば、デバイスは、一次自動アシスタント、ならびに一次自動アシスタントとは異なる呼び出しフレーズを使用して呼び出される1つまたは複数の他の自動アシスタントを実行している場合がある。いくつかの実装形態において、1つまたは複数の二次自動アシスタントは、一次自動アシスタントを実行しているデバイスとは異なるデバイス上で実行し続け得、一次自動アシスタントは、1つまたは複数の通信チャネルを通じて、二次自動デバイスと通信することができる。例えば、一次自動アシスタントは、Wi-Fi、スピーカを介して二次自動アシスタントによって知覚可能な超音波信号、および/または1つもしくは複数の他の通信チャネルを介して、クエリのテキスト表現を提供し得る。
【0014】
いくつかの実装形態において、一次自動アシスタントは、クエリの意図に基づいてクエリを分類することができる。分類は、どのタイプの応答がクエリを満たすかを一次自動アシスタントに示すことができる。例えば、「アラームを設定して(Set an alarm)」のクエリについて、一次自動アシスタントは、クエリの意図(すなわち、ユーザがアラームの設定をしたい)を判定するために、クエリに対して自然言語理解を実行することができる。クエリの分類は、例えば、質問に回答する要求、アプリケーションを実行する要求、および/または自動アシスタントのうちの1つもしくは複数が実行することができるなにか他のタスクを実行する意図を含み得る。
【0015】
クエリが一次自動アシスタントによって受信されると、一次自動アシスタントは、どの二次自動アシスタントが要求された意図を最もよく満たすことができるのかを判定することができる。例えば、一次自動アシスタントは、クエリを処理し、クエリの意図がアラームを設定することであると判定し、一次自動アシスタントと通信している1つまたは複数の二次自動アシスタントに意図を提供することができる。また、例えば、一次自動アシスタントは、いくつかまたはすべての入ってくるクエリを処理するようにさらに構成され得る。例えば、一次自動アシスタントは、クエリを受信し、クエリを処理し、クエリを履行する能力があるかどうかを判定し、クエリに応答して1つまたは複数のタスクを実行し得る。
【0016】
いくつかの実装形態において、二次自動アシスタントのうちの1つまたは複数は、実行することができるタスクを一次自動アシスタントに通知し得る。例えば、二次アシスタントは、音楽アプリケーションにアクセスすることができること、アラームを設定することができること、および質問に回答で応答することができることを示す信号を一次自動アシスタントに提供し得る。したがって、一次自動アシスタントは、二次自動アシスタントにクエリ、および/またはクエリの意図の指示を提供する前に、二次自動アシスタントのセットのどれがタスクを実行することができるかを確認することができ得る。
【0017】
一次自動アシスタントがクエリを受信し、クエリの意図を判定するためにクエリを処理すると、一次自動アシスタントは、ユーザがクエリのその分類に関して特定の二次自動アシスタントを好むかどうかを判定するために、1つまたは複数のデータベースにアクセスし得る。例えば、ユーザは、自動アシスタントとの以前の対話において、アラームを設定するためにアシスタントAを利用し得るが、ユーザが質問に対する回答を受け取ることに関心がある場合、アシスタントBを好む場合がある。ユーザの好みは、ユーザによる明示的な指示(例えば、アシスタントAがアラームを設定することを好むことを設定する)に基づいて、および/または以前の使用状況(例えば、ユーザが質問をするときにアシスタントAよりもアシスタントBを頻繁に呼び出す)に基づいて決定され得る。
【0018】
次いで、一次自動アシスタントは、さらなる処理のためにクエリを二次自動アシスタントに提供することができる。例えば、ユーザは、クエリを発話し得、一次自動アシスタントは、クエリから意図を判定し、次いで、処理することができる(および、それが可能であることが一次自動アシスタントに示された)二次自動アシスタントにクエリの意図を提供し得る。次いで、二次自動アシスタントは、必要に応じて、クエリの追加の処理を実行し、1つまたは複数のタスクを実行することができる。タスクは、例えば、質問に対する回答を決定すること、アラームを設定すること、音楽アプリケーションを介して音楽を再生すること、および1つまたは複数の他のアプリケーションを実行するためにクエリ内の情報を利用することを含み得る。いくつかの実装形態において、二次自動アシスタントは、タスクの完了について応答(または他の履行)を一次自動アシスタントに提供することができる。例えば、ユーザは、質問を含むクエリを発話し得、クエリは、二次自動アシスタントに提供され得る。二次自動アシスタントは、クエリを処理し、応答を生成し、応答を一次自動アシスタントに提供し得、一次自動アシスタントは、質問に対する可聴応答をユーザに提供し得る。
【0019】
場合によっては、ユーザは、以前のクエリに関連する第2のクエリを発話し得る。例えば、ユーザは、アシスタントAが履行し得る「大統領の身長はどれくらいですか(How tall is the president)」というクエリを発話し得る。クエリに続いて、回答が提供された直後、または他の無関係なクエリが介在する後続のクエリとして、ユーザは、以前のクエリにおいて言及された大統領に関連して「彼は何歳ですか(How old is he)」と発話し得る。一次自動アシスタント、および/または二次アシスタントのうちの1つもしくは複数は、第1のクエリの意図(例えば、大統領の身長が提供されることへの関心)を識別し、第2のクエリが第1のクエリにおいて言及された大統領に関する追加の質問であると判定することによって、フォローアップクエリに対する回答を決定し得る。一次自動アシスタントとユーザとの間のダイアログは、相互に関連するか、または相互に関連しない追加のクエリおよび応答で継続する場合がある。
【0020】
ユーザが以前のクエリに関連するクエリを発話した場合、ユーザは、最初の要求を履行したものと同じ二次アシスタントが後続の要求を履行することに関心がある場合がある。しかしながら、場合によっては、後続のクエリおよび以前のクエリは、以前のクエリと後続のクエリとに関連しない介在クエリを含むダイアログの一部である。例えば、ユーザは、一次自動アシスタントを呼び出し、「大統領の身長はどれくらいですか(How tall is the president)」と発話し、その後に「午前9時にアラームを設定して(Set an alarm for 9am)」(第1のクエリに関係しない)と発話し、続いて、「大統領の身長はどれくらいですか(How tall is the president)」に関連する「彼は何歳ですか(How old is he)」と発話する場合がある。ユーザは、第1のクエリと第3のクエリの両方が同じ二次自動アシスタントによって履行されることに関心があり、介在クエリは、(クエリの意図に応じて)異なる自動アシスタントによって処理されるか、関連するクエリとは別に他の方法で処理される。
【0021】
一次自動アシスタントは、クエリを含むユーザからの発話を受信し、クエリを処理することができる二次アシスタントを識別することができる。例えば、「大統領の身長はどれくらいですか(How tall is the president)」というクエリについて、一次自動アシスタントは、第1の自動アシスタントが「質問/回答」タイプのクエリを処理し、第1の二次アシスタントにクエリを提供するように構成されていると判定することができる。クエリは、1つもしくは複数のネットワークプロトコル(例えば、Wi-Fi、Bluetooth、LAN)および/または1つもしくは複数の他のチャネルを介して第1の自動アシスタントに提供され得る。例えば、一次自動アシスタントは、第1の自動アシスタントを実行しているデバイスのマイクロフォンによってキャプチャされ得る人間には聞こえない超音波信号を生成し得る。この信号は、例えば、クエリを含むオーディオデータの処理されたバージョン(例えば、より高い周波数に処理された生のオーディオデータ、および/またはスピーカを介して伝送されるが、人間には聞こえないオーディオデータのテキスト表現)であり得る。また、例えば、一次自動アシスタント、およびクエリを受信している二次自動アシスタントは、同じデバイス上で実行し続け得、クエリを二次アシスタントに直接提供することができる。いくつかの実装形態において、クエリは、オーディオデータとして、クエリのテキスト表現として、および/もしくはクエリ内に含まれる情報のある部分のテキスト表現として、クエリの意図として、ならびに/または他の自動音声認識出力として、二次自動アシスタントに提供され得る。
【0022】
選択された二次自動アシスタントは、可聴応答などの応答をユーザに提供することができ、一次自動アシスタントは、ユーザと二次自動アシスタントとの対話を記憶することができる。例えば、一次自動アシスタントは、二次自動アシスタントからのクエリおよび応答、二次自動アシスタントによって提供された応答のタイプ(例えば、質問および回答)、ならびに応答を提供した二次自動アシスタントの指示を記憶し得る。
【0023】
最初のクエリに続いて、一次自動アシスタントは、第1のクエリに関連しないユーザからの追加のクエリを受信することができる。これらのクエリは、第1のクエリが提供されたのと同じ二次アシスタント、および/または1つもしくは複数の他の二次自動アシスタント(または、そうするように構成されている場合、一次自動アシスタント)に提供され得る。介在クエリに続いて、ユーザは、第1のクエリに関連するクエリ(例えば、同じタイプ、同様の意図、以前のクエリへの参照を含むクエリ内の1つまたは複数の同様のキーワード)を発話し、記憶されたユーザと二次自動アシスタントとの対話に基づいて、ユーザが同様のクエリに応答した二次自動アシスタントと以前に対話したと判定し得る。ユーザが特定の二次自動アシスタントと以前に対話したと判定することに基づいて、一次自動アシスタントは、同じ二次自動アシスタントに後続のクエリを提供することができる。
【0024】
いくつかの実装形態において、関連するクエリを二次自動アシスタントに提供することは、ユーザが二次自動アシスタントと対話してからの時間に基づき得る。例えば、一次自動アシスタントは、ユーザと二次自動アシスタントとの間のダイアログの指示とともに、対話の時間を記憶することができる。その後、ユーザが以前のクエリに関連するクエリを発話すると、一次自動アシスタントは、ユーザと二次自動アシスタントとの最後の対話から経過した時間量を決定することができる。一次自動アシスタントが、最後の対話が現在のクエリの前のしきい値時間内にあったと判定した場合、一次自動アシスタントは、さらなる処理のために同じ二次自動アシスタントに新しいクエリを提供することができる。逆に、ユーザが以前のクエリに関連するクエリを発話したが、ユーザと二次自動アシスタントとの間の履歴対話から経過した時間がしきい値時間を超えていると判定した場合、一次自動アシスタントは、以前のクエリに関連している場合であっても、同じ自動アシスタントがクエリを処理するために呼び出されるべきではないと判定し得る。しかしながら、しきい値時間が経過したかどうかにかかわらず、一次自動アシスタントは、二次自動アシスタントが新しいクエリを処理することができると判定した場合、依然として二次自動アシスタントにクエリを提供し得る。
【0025】
いくつかの実装形態において、ユーザは、以前の関連するクエリが異なる自動アシスタントによって処理されたかどうかに関係なく、二次アシスタントのうちの1つに対するユーザの好みに基づいて、特定のタイプのクエリが異なる自動アシスタントによって処理されるべきであると決定し得る。例えば、場合によっては、一次アシスタントは、特定のタイプのクエリおよび/または特定のコンテキスト(例えば、ユーザの位置、時刻、クエリの主題)に対してユーザが以前に利用した二次自動アシスタントを識別し得る。それらの場合、一次自動アシスタントが他の要因に基づいて異なる自動アシスタントにクエリを提供することができたとしても、一次自動アシスタントは、好みの二次自動アシスタントにクエリを提供し得る。
【0026】
一例として、一次自動アシスタントは、二次自動「アシスタントA」と「アシスタントB」の両方が「音楽を再生して(Play music)」というクエリを履行することができることを識別し得る。過去の対話において、ユーザは、「アシスタントA」が、アクセスすることができる音楽アプリケーションを使用して音楽を再生すべきであると指示することができる。「現在の1位の曲はなんですか(What is the current number 1 song)」という以前のクエリは、「アシスタントB」に提供された場合がある。したがって、クエリは、関連するクエリを処理した「アシスタントB」または、ユーザが音楽を再生するための好みの自動アシスタントとして指定した「アシスタントA」のいずれかに提供され得る。一次自動アシスタントは、「アシスタントB」との継続的なダイアログが自動アシスタント間の切り替えを回避し得るにもかかわらず、ユーザの好みに基づいて、「アシスタントB」からの以前の応答のコンテキストを用いて「アシスタントA」にクエリを提供し得る。
【0027】
場合によっては、二次自動アシスタントは、クエリに対する応答を提供できない場合がある。例えば、クエリは、二次自動アシスタントに提供され得、二次自動アシスタントは、応答しない、および/または応答が利用できないという指示を提供する。それらの場合、異なる二次自動アシスタントが、クエリを提供され得る。例えば、候補二次自動アシスタントがランク付けされ得、最も高くランク付けされた二次アシスタントは、最初にクエリを提供され得る。応答が成功しなかった場合、次に最も高くランク付けされた二次アシスタントは、クエリを提供され得る。
【0028】
いくつかの実装形態において、候補自動アシスタントのランク付けは、機械学習モデルからの出力に基づくことができる。例えば、1つまたは複数の二次アシスタントに提供されたクエリは、埋め込み空間内に埋め込まれ得、候補二次アシスタントは、以前のクエリの埋め込みと現在のクエリとの間の類似性に基づいてランク付けされ得る。自動アシスタントをランク付けするために利用され得る他の指標は、例えば、提供されたクエリに関連付けられたテキストおよび/もしくは環境コンテキスト、時刻、場所、クエリが提供されたときクライアントデバイス上で実行されるアプリケーション、ならびに/またはユーザの他のアクションおよび/もしくはクエリが最初に提供されたときと現在の状態の両方で候補二次アシスタントを実行しているコンピューティングデバイスの他のアクションを含むことができる。
【0029】
二次自動アシスタントが応答を提供すると、クエリおよび応答の指示は、それらのクエリに関連するクエリのさらなる処理のために一次自動アシスタントによって記憶され得る。例えば、二次アシスタントは、追加の情報に対する要求である「回答」クエリを提供され得る。次いで、同じ二次アシスタントは、前述したように、異なる二次自動アシスタントに介在クエリを提供した場合であっても、次の「回答」クエリを提供され得る。指示は、クエリが提供された時刻、二次自動アシスタントの位置、ユーザのコンピューティングデバイス上で実行されている1つもしくは複数のアプリケーションの状態、および/または、その後、どの二次自動アシスタントに後続のクエリを提供するかを決定するために利用され得る他の信号などのコンテキスト情報および/または他の情報とともに記憶され得る。
【0030】
上記の説明は、本開示のいくつかの実装形態の概要として提供される。それらの実装形態および他の実装形態のさらなる説明は、以下でより詳細に記載される。
【図面の簡単な説明】
【0031】
【
図1】本明細書で開示する実装形態が実装され得る例示的な環境の図である。
【
図2】本明細書で開示する様々な方法が実装され得る例示的な環境のブロック図である。
【
図3A】本明細書で開示する様々な方法が実装され得る別の例示的な環境のブロック図である。
【
図3B】本明細書で開示する様々な方法が実装され得る別の例示的な環境のブロック図である。
【
図4A】本明細書で開示する様々な実装形態による例示的な方法を示すフローチャートを示す図である。
【
図4B】本明細書で開示する様々な実装形態による例示的な方法を示すフローチャートを示す図である。
【
図5A】本明細書で開示する様々な実装形態による、ユーザと、第1の自動アシスタントと、第2の自動アシスタントとを含むダイアログを示す図である。
【
図5B】本明細書で開示する様々な実装形態による、ユーザと、第1の自動アシスタントと、第2の自動アシスタントとを含むダイアログを示す図である。
【
図6】本明細書で開示する様々な実装形態による例示的な方法を示すフローチャートである。
【
図7】コンピューティングデバイスの例示的なアーキテクチャを示す図である。
【発明を実施するための形態】
【0032】
図1を参照すると、ユーザ101によって呼び出され得る複数の自動アシスタントを含む例示的な環境が提供される。環境は、マイクロフォン(図示せず)を有する第1のスタンドアロン対話型スピーカ105と、マイクロフォン(同様に図示せず)を有する第2のスタンドアロン対話型スピーカ110とを含む。第1のスピーカは、呼び出しフレーズで呼び出され得る第1の自動アシスタントを少なくとも部分的に実行し得る。第2のスピーカ110は、第1の自動アシスタントと同じ呼び出しフレーズ、または発話されたフレーズに基づいてユーザがどの自動アシスタントを呼び出すかを選択することを可能にするために異なるフレーズのいずれかである呼び出しフレーズで呼び出され得る第2の自動アシスタントを実行している場合がある。例示的な環境において、ユーザ101は、第1のスピーカ105および第2のスピーカ110の近くで「オーケーアシスタント、アラームを設定して(OK Assistant, set an alarm)」の口頭発話115を話している。第1および/または第2の自動アシスタントのうちの1つが、「オーケーアシスタント(OK Assistant)」というフレーズによって呼び出されるように構成されている場合、呼び出されたアシスタントは、呼び出しフレーズに続くクエリ(すなわち、「アラームを設定して(set an alarm)」)を処理し得る。
【0033】
いくつかの実装形態において、第1のスピーカ105などのデバイスは、複数の自動アシスタントを実行している場合がある。
図2を参照すると、複数の自動アシスタントを実行する複数のクライアントデバイスを含む例示的な環境が示されている。システムは、第1の自動アシスタント215と第2の自動アシスタント220とを実行している第1のクライアントデバイス205を含む。第1および第2の自動アシスタントの各々は、オーディオがクライアントデバイス205のマイクロフォン225によってキャプチャされるようにクライアントデバイス205の近くで呼び出しフレーズ(各アシスタントに固有、または両方のアシスタントを呼び出す同じフレーズ)を発話することによって呼び出され得る。例えば、ユーザ101は、クライアントデバイス205の近くで「オーケーアシスタント1(OK Assistant 1)」と発話することによって第1の自動アシスタント215を呼び出し、クライアントデバイス205の近くで「オーケーアシスタント2(OK Assistant 2)」というフレーズを発話することによって第2の自動アシスタント220をさらに呼び出し得る。どの呼び出しフレーズが発話されたかに基づいて、ユーザは、第1のクライアントデバイス205上で実行されている複数のアシスタントのうちのどのアシスタントが、ユーザが口頭クエリを処理することに関心があるかを示すことができる。例示的な環境は、第3の自動アシスタント245を実行している第2のクライアントデバイス210をさらに含む。第3の自動アシスタント245は、マイクロフォン230によってキャプチャされ得るように、「オーケーアシスタント3(OK Assistant 3)」などの第3の呼び出しフレーズを使用して呼び出されるように構成され得る。いくつかの実装形態において、
図2の自動アシスタントのうちの1つまたは複数がない場合がある。さらに、例示的な環境は、
図2において存在しない追加の自動アシスタントを含み得る。例えば、システムは、追加の自動アシスタントを実行する第3のデバイスを含み得、ならびに/またはクライアントデバイス210および/もしくはクライアントデバイス205は、追加の自動アシスタントおよび/もしくは図示よりも少ない自動アシスタントを実行している場合がある。自動アシスタント215、220、および225の各々は、本明細書で説明する自動アシスタントの1つまたは複数の構成要素を含むことができる。例えば、自動アシスタント215は、入ってくるクエリを処理する独自のオーディオキャプチャ構成要素、入ってくる視覚的データを処理する視覚的キャプチャ構成要素、ホットワード検出エンジン、および/または他の構成要素を含み得る。いくつかの実装形態において、自動アシスタント215および220などの、同じデバイス上で実行されている自動アシスタントは、両方の自動アシスタントによって利用され得る1つまたは複数の構成要素を共有することができる。例えば、自動アシスタント215および自動アシスタント220は、オンデバイス音声認識器、オンデバイスNLUエンジン、および/または他の構成要素のうちの1つもしくは複数を共有し得る。
【0034】
いくつかの実装形態において、自動アシスタントのうちの1つまたは複数は、他の自動アシスタントのいずれかを別々に個別に呼び出さない「オーケーアシスタント(OK Assistant)」などの一般的な呼び出しフレーズによって呼び出され得る。ユーザが一般的な呼び出しフレーズを発話すると、自動アシスタントのうちの1つまたは複数が一次自動アシスタントとして機能し、他の自動アシスタント間の応答を調整し得る。
図3Aを参照すると、一次自動アシスタント305が、二次自動アシスタント310および315とともに示されている。一次自動アシスタントは、「オーケーアシスタント(OK Assistant)」というフレーズ、または別の一般的な呼び出しフレーズで呼び出され得、これは、ユーザが複数の自動アシスタントにクエリを提供することに関心があることを示し得る。同様に、二次自動アシスタント310および315は、各々、ユーザによって発話されると、対応する自動アシスタントを呼び出す1つまたは複数の代替の呼び出しフレーズを有し得る。例えば、二次自動アシスタント310は、「オーケーアシスタントA(OK Assistant A)」という呼び出しフレーズで呼び出され得、二次自動アシスタント315は、「オーケーアシスタントB(OK Assistant B)」という呼び出しフレーズで呼び出され得る。いくつかの実装形態において、一次自動アシスタント305、ならびに二次自動アシスタント310および315のうちの1つまたは複数は、第1の自動アシスタント215および第2の自動アシスタント220に関して
図2に示すように、同じクライアントデバイス上で実行されている場合がある。いくつかの実装形態において、1つまたは複数の二次自動アシスタントは、第3の自動アシスタント245に関して
図2に示すように、別個のデバイス上で実行されている場合がある。
【0035】
図3Aに示す環境は、データベース320をさらに含む。データベース320は、ユーザと1つまたは複数の自動アシスタントとの対話を記憶するために利用され得る。いくつかの実装形態において、一次自動アシスタント305は、一次自動アシスタント305を呼び出す呼び出しフレーズに続いて発話されるクエリなどの、ユーザからのクエリを受信することができる。例えば、ユーザは、「オーケーアシスタント、大統領の身長はどれくらいですか(OK Assistant, how tall is the president?)」と発話し得る。「オーケーアシスタント(OK Assistant)」というフレーズは、一次自動アシスタント305に固有の呼び出しフレーズであり得、一度呼び出されると、一次自動アシスタント305は、呼び出しフレーズに続くクエリ(すなわち、「大統領の身長はどれくらいですか(how tall is the president)」)の意図を判定することができる。いくつかの実装形態において、一次自動アシスタント305は、さらなる処理のために、二次自動アシスタント310および315のうちの1つまたは複数にクエリを提供することができる。さらに、一次自動アシスタント305は、一次自動アシスタント305による将来のアクセスのために、クエリの指示を、クエリを提供されたアシスタントとともにデータベース320内に記憶することができる。
【0036】
いくつかの実装形態において、一次自動アシスタント305は、二次自動アシスタント310および315の一方または両方と常に対話することができ、それ自体は音声認識、自然言語理解、および/または履行能力などの1つまたは複数の自動アシスタント能力を欠くことができる「メタアシスタント」であり得る。他の例において、一次自動アシスタントは、クエリに対する応答を決定するために独自のクエリ処理を実行しながら、二次アシスタントと対話することもできる。例えば、本明細書でさらに説明するように、一次自動アシスタント305は、クエリ処理エンジンを含むことができ、または一次自動アシスタント305は、クエリを処理し、ユーザに応答を提供するように構成されない場合がある。
【0037】
自動アシスタント305、310、および315の他の構成要素は、オプションであり、例えば、ローカル音声テキスト化(local speech-to-text)(「STT」)エンジン(キャプチャされたオーディオをテキストに変換する)、ローカル音声テキスト化(「TTS」)エンジン(テキストを音声に変換する)、ローカル自然言語プロセッサ(オーディオおよび/またはオーディオから変換されたテキストの意味論上の意味を決定する)、および/または他のローカル構成要素を含むことができる。自動アシスタントを実行するクライアントデバイスは、計算リソース(例えば、プロセッササイクル、メモリ、バッテリなど)の点で比較的制約されている場合があるので、ローカル構成要素は、自動アシスタントと連携してリモートで実行している任意のクラウドベースの自動アシスタント構成要素内に含まれる任意の対応物と比較して、制限された機能を有する場合がある。
【0038】
再び
図2を参照すると、いくつかの実装形態において、自動アシスタント210、215、および220のうちの1つまたは複数は、ユーザが一次自動アシスタントと対話することに関心があることを示す1つまたは複数のジェスチャによって呼び出され得る。例えば、ユーザは、ボタンもしくはタッチスクリーンを押下するなど、デバイスと対話することによって自動アシスタントを呼び出す意図を示し得、可視の、およびカメラなどの画像キャプチャデバイスによってキャプチャされ得る動きを実行し得、ならびに/または画像キャプチャデバイスがユーザの動きおよび/もしくは位置決めを認識することができるようにデバイスを見得る。ユーザがジェスチャまたはアクションを実行すると、自動アシスタントは、呼び出され、上記で説明したように、ジェスチャまたはアクションに続くオーディオデータをキャプチャし始め得る。
【0039】
いくつかの実装形態において、1つの自動アシスタントが一次アシスタントとして選択され得、1つまたは複数の他の自動アシスタントが二次アシスタントとして指定され得る。例えば、ユーザは、ユーザの近くにある複数の自動アシスタントに共通の呼び出しフレーズを発話し得る。1つまたは複数の構成要素は、自動アシスタントを実行している複数のデバイスのうちのどれがユーザに最も近いかを判定することができ、その最も近い自動アシスタントは、一次自動アシスタントとして指定され得、他の自動アシスタントは、二次アシスタントとして指定される。また、例えば、ユーザが自動アシスタントを呼び出すと、1つまたは複数の構成要素は、どの自動アシスタントがユーザによって最も頻繁に利用されたかを判定し、その自動アシスタントを一次自動アシスタントとして指定し得る。
【0040】
いくつかの実装形態において、ユーザは、特定の自動アシスタントに固有の呼び出しフレーズを用いてその自動アシスタントを呼び出すことができ、その自動アシスタントは、一次自動アシスタントとして指定され得る。例えば、ユーザは、第1のアシスタント215を呼び出すために「オーケーアシスタント1(OK Assistant 1)」という呼び出しフレーズを発話し得、次いで、第1のアシスタント215は、一次自動アシスタントとして指定される。次いで、第2の自動アシスタント220および第3の自動アシスタント245などの他の自動アシスタントは、一次自動アシスタントによって呼び出され、一次自動アシスタントによってクエリを提供され得、および/または本明細書で説明するように、他の自動アシスタントから応答を受信することができる。
【0041】
いくつかの実装形態において、第1の自動アシスタント215および第2の自動アシスタント220などの1つまたは複数の自動アシスタントは、自然言語プロセッサ、ならびに/または自然言語TTSおよび/もしくはSTTプロセッサの結果などの、1つまたは複数のモジュールを共有し得る。例えば、再び
図2を参照すると、クライアントデバイス205がオーディオデータを受信すると、オーディオデータが一旦テキストに処理され、次いで、テキストが両方の自動アシスタント215および220に提供され得るように、第1の自動アシスタント215と第2の自動アシスタント220の両方は、自然言語処理を共有し得る。また、例えば、クライアントデバイス205の1つまたは複数の構成要素は、以下でさらに説明するように、オーディオデータをテキストに処理し、オーディオデータのテキスト表現を第3の自動アシスタント245に提供し得る。いくつかの実装形態において、オーディオデータは、テキストに処理されず、代わりに、生のオーディオデータとして自動アシスタントのうちの1つまたは複数に提供され得る。
【0042】
図3Bを参照すると、一次自動アシスタント305および二次自動アシスタント310の構成要素が示されている。前述したように、一次自動アシスタント305および/または1つもしくは複数の二次自動アシスタント310は、
図3Bに示す構成要素以外の追加の構成要素を含むことができる。追加的または代替的に、1つまたは複数の構成要素が、一次自動アシスタント305および/または1つもしくは複数の二次自動アシスタント310に存在しない場合がある。例えば、一次自動アシスタント305は、クエリ処理エンジン340を含み、一次自動アシスタントと二次自動アシスタントの両方として実行し得る。
【0043】
呼び出しエンジン335は、1つまたは複数の口頭呼び出しフレーズを検出し、口頭呼び出しフレーズのうちの1つの検出に応答して一次自動アシスタント305を呼び出するように動作可能である。例えば、呼び出しエンジン335は、「ヘイ、アシスタント(Hey Assistant)」、「オーケーアシスタント(OK Assistant)」、および/または「アシスタント(Assistant)」などの口頭呼び出しフレーズの検出に応答して、一次自動アシスタント305を呼び出すことができる。呼び出しエンジン335は、口頭呼び出しフレーズの発生を監視するために、一次自動アシスタント305を実行するクライアントデバイスの1つまたは複数のマイクロフォンからの出力に基づくオーディオデータフレームのストリームを(例えば、「非アクティブ」モードではない場合)連続的に処理することができる。口頭呼び出しフレーズの発生を監視している間、呼び出しエンジン335は、口頭呼び出しフレーズを含まない任意のオーディオデータフレームを(例えば、バッファに一時的に記憶した後に)破棄する。しかしながら、呼び出しエンジン335が処理されたオーディオデータフレーム内の口頭呼び出しフレーズの発生を検出すると、呼び出しエンジン335は、一次自動アシスタント305を呼び出すことができる。
【0044】
図4Aおよび
図4Bを参照すると、他の自動アシスタントにクエリを提供する代わりに、二次自動アシスタントにクエリを提供する方法を示すフローチャートが示されている。便宜上、方法の動作について、
図3A、
図3Bに示す一次自動アシスタント305ならびに二次自動アシスタント310および315などの動作を実行するシステムを参照して説明する。図示の方法のシステムは、クライアントデバイスの1つまたは複数のプロセッサおよび/または他の構成要素を含む。さらに、図示の方法の動作は、特定の順序で示されているが、これは、限定を意味するものではない。1つもしくは複数の動作が、並べ替えられ得、省略され得、または追加され得る。
【0045】
405において、一次自動アシスタントが呼び出される。一次自動アシスタントは、一次自動アシスタント305と1つまたは複数の特徴を共有することができる。例えば、一次自動アシスタントを呼び出すことは、ユーザが一次自動アシスタントに固有の呼び出しフレーズ(例えば、「オーケーアシスタント(OK Assistant)」)を発話すること、一次自動アシスタント305を実行しているクライアントデバイスの1つもしくは複数のカメラによって検出されるジェスチャを実行すること、一次自動アシスタントを実行しているクライアントデバイス上のボタンを押下すること、および/またはユーザが、1つもしくは複数の後続の(または以前の)発話が一次自動アシスタントによって処理されることに関心があることを示す、ユーザによる1つもしくは複数の他のアクションを含むことができる。いくつかの実装形態において、一次自動アシスタントは、複数の二次自動アシスタントのうちのどれにクエリを提供するかを決定することなどの、限られた動作のみを実行する「メタアシスタント」である。例えば、一次自動アシスタントは、クエリを処理して応答を提供するためのクエリ処理エンジンを含むことなく、
図3Bに示す一次自動アシスタント305の構成要素のうちの1つまたは複数(例えば、クエリ分類器330、アシスタント決定モジュール325)を含むことができる。いくつかの実装形態において、一次自動アシスタント305は、二次自動アシスタントの動作も実行し、二次自動アシスタント310のクエリ処理エンジン340などのクエリ処理エンジンを含むことができる。口頭クエリは、呼び出しフレーズを用いてユーザによって提供され得る。例えば、
図5Aを参照すると、ユーザ101と複数の自動アシスタントとの間のダイアログが示されている。ダイアログを開始するために、ユーザは、「オーケーアシスタント(OK Assistant)」という呼び出しフレーズと、「大統領の身長はどれくらいですか(how tall is the president)」というクエリとを含む口頭発話505を発話した。
【0046】
410において、一次自動アシスタント305は、ユーザによって口頭発話として提供されたクエリの意図を判定する。いくつかの実装形態において、一次自動アシスタント305のクエリ分類器330は、ユーザによって一次自動アシスタント305に提供された1つまたは複数のクエリの分類を決定することができる。例えば、一次自動アシスタント305は、呼び出し後、クエリを含む口頭発話を受信し、次いで、クエリの意図を判定するためにオーディオデータに対してNLUを実行することができる。続いて、クエリ分類器330は、クエリの分類を決定することができる。一例として、一次自動アシスタント305は、ユーザが「大統領の身長はどれくらいですか(how tall is the president)」というクエリを発話することを含むオーディオデータを受信し得る。NLU処理の後、クエリ分類器330は、クエリが「回答」クエリ(すなわち、クエリに対する回答が提供されるようなユーザからの要求)であると判定することができる。また、例えば、一次自動アシスタント305は、ユーザが「アラームを設定して(set an alarm)」というクエリを発話することを含むオーディオデータを受信し得る。NLU処理の後、クエリ分類器330は、クエリが「生産性」クエリ(すなわち、タスクを実行するためのユーザからの要求)であると判定することができる。クエリ分類の他の例は、スマートライトおよび/もしくは家電などのデバイスにタスクを実行するように要求すること、サードパーティアプリケーションにタスクを実行するように要求すること(例えば、電子メールおよび/またはテキストメッセージを送信すること)、ならびに/または自動アシスタントによって実行され得るクエリの他の分類を含むことができる。さらに、クエリの分類のカテゴリは、クエリの主題、クエリに関連する追加情報(例えば、クエリが提供されている間のデバイスの現在の状態)、および/または現在のクエリに関連する過去のクエリを識別するために利用され得る他のきめの細かい分類などの、クエリに関連する追加情報を含むことができる。
【0047】
クエリが分類されると、アシスタント決定モジュール325は、さらなる処理のためにクエリをどの自動アシスタントに提供するかを決定することができる。前述したように、データベース320は、ユーザと二次自動アシスタント310および315との過去の対話の指示を含むことができる。各指示は、クエリの分類の識別子と、クエリに応答した自動アシスタントとを含むことができる。一例として、クエリ分類器330は、「大統領の身長はどれくらいですか(how tall is the president)」のクエリが「回答」クエリであると判定し、二次自動アシスタント310に提供することができる。さらに、一次自動アシスタント305は、クエリおよび/またはクエリ分類の指示を、クエリが二次自動アシスタント310に提供されたという指示とともにデータベース320内に記憶することができる。
【0048】
いくつかの実装形態において、ユーザは、特定の自動アシスタントが特定の分類のクエリを処理することに対する好みを示し得る。
図4Aを再び参照すると、415において、アシスタント決定モジュール325は、ユーザが、特定の二次自動アシスタントが410において決定された分類のクエリを処理することに対する好みを示したかどうかを判定することができる。ユーザ101が好みを示した場合、420において、好みの二次自動アシスタントは、クエリを提供され得る。例えば、ユーザは、明示的に、または二次自動アシスタントとの過去の対話に基づいて、すべてのテキストメッセージング(例えば、「メッセージング」として分類されたクエリ)が自動アシスタント310によって処理されることを示し得る。ユーザの好みの指示は、データベース320内に記憶され得、「メッセージング」として分類された後続のクエリについて、クエリは、他の二次自動アシスタントの代わりに自動アシスタント310に提供され得る。
【0049】
ユーザが特定の二次自動アシスタントに対する好みを示していない場合、決定ブロック425において、アシスタント決定モジュール325は、分類されたクエリについて、二次自動アシスタントがしきい値時間期間内に現在のクエリと同じ分類のクエリを提供されたかどうかを判定する。いくつかの実装形態において、アシスタント決定モジュール325は、データベース320から、どの自動アシスタントが現在のクエリと同じ分類のクエリを以前に処理したかを識別することができる。例えば、「彼にはどれくらい多くの子供がいますか(how many kids does he have)」のクエリは、一次自動アシスタント305によって受信され、クエリ分類器330によって「回答」クエリとして分類され得る。アシスタント決定モジュール325は、データベース320内の1つまたは複数の指示に基づいて、以前の「回答」クエリが二次自動アシスタント310によって処理された、および/またはユーザが、「回答」クエリが二次自動アシスタント310によって処理されることに対する好みを示したと判定することができる。これに応答して、アシスタント決定モジュール325は、430において、クエリを別の自動アシスタントに提供する代わりに、「彼にはどれくらい多くの子供がいますか(how many kids does he have)」というクエリを二次自動アシスタント310に提供すると決定することができる。
【0050】
いくつかの実装形態において、自動アシスタント間の通信を促進するために、1つまたは複数の通信プロトコルが利用され得る。例えば、
図3Bを参照すると、二次自動アシスタント310は、二次自動アシスタント310にクエリを提供するために一次自動アシスタント305によって利用され得るAPI345を含む。いくつかの実装形態において、1つまたは複数の他の通信プロトコルが利用され得る。例えば、一次自動アシスタント305および二次自動アシスタント310が別個のクライアントデバイス上で実行されている例において、一次自動アシスタント305は、クライアントデバイスのマイクロフォンによって検出され得る信号(例えば、口頭発話のオーディオデータおよび/またはクエリの自然言語処理の符号化を含む超音波オーディオ信号)を送信するために、アシスタントを実行するクライアントデバイスのスピーカを利用することができる。
【0051】
いくつかの実装形態において、二次自動アシスタント310は、二次自動アシスタント310によって処理され得るクエリの分類を一次自動アシスタント305に提供することができる能力コミュニケータ350を含むことができる。例えば、二次自動アシスタント310は、「回答」クエリを処理するように構成され得る(すなわち、質問を含むクエリに応答することができるクエリ処理エンジン340を含み得る)が、「メッセージ」要求を処理するように構成されていない場合がある。したがって、能力コミュニケータ350は、処理され得るクエリの分類の指示、および/または応答することをオプトアウトするクエリの分類の指示を提供することができる。いくつかの実装形態において、二次自動アシスタント310は、その能力を一次自動アシスタント305に示すために、一次自動アシスタント305のAPI390および/または1つもしくは複数の他の通信プロトコル(例えば、超音波信号)を利用し得る。
【0052】
ブロック445において、ユーザと、クエリを提供された二次自動アシスタントとの対話が、データベース320内に記憶される。いくつかの実装形態において、クエリ(および/またはクエリの分類)、およびクエリを処理した自動アシスタントとともに時間が記憶され得る。したがって、いくつかの実装形態において、アシスタント決定モジュール325は、どの二次自動アシスタントにクエリを提供するかを決定する際に、二次自動アシスタントのうちの1つがしきい値時間期間内に同じ分類のクエリを処理したかどうかを判定することができる。一例として、ユーザは、処理のために二次自動アシスタント310に提供される「回答」分類のクエリを提出し得る。クエリ(またはその分類)の指示は、クエリが二次自動アシスタント315に提供された時間を示すタイムスタンプとともに、アシスタント決定モジュール325によって記憶され得る。続いて、クエリ分類器330が「回答」クエリであると判定した別のクエリ(例えば、次のクエリ、または1つもしくは複数の介在クエリの後のクエリ)がユーザによって提供されると、アシスタント決定モジュール325は、二次自動アシスタント315が「回答」クエリを最後に処理してからどれくらい長い時間が経過したかを決定することができる。二次自動アシスタント315がしきい値時間内に「回答」クエリを処理した場合、後続の「回答」クエリは、二次自動アシスタント315に提供され得る。
【0053】
いくつかの実装形態において、クエリ処理エンジン340は、応答を決定するために、クエリの少なくとも一部、および/またはクエリ内に含まれる情報をサードパーティアプリケーションに提供し得る。例えば、ユーザは、さらなる処理のために二次自動アシスタントに提供される「今夜6:30のディナーを予約してください(Make me a dinner reservation tonight at 6:30)」のクエリを提出し得る。二次自動アシスタントは、オーディオデータおよび/またはオーディオデータのテキスト表現を提供され、クエリに対して自然言語理解を実行し、食事予約アプリケーションなどのサードパーティアプリケーションに情報のなにか一部を提供し得る。それに応答して、サードパーティアプリケーションは、応答を決定し(例えば、食事の予約が利用可能であるかどうかをチェックし)、二次自動アシスタントに応答を提供することができ、二次自動アシスタントは、サードパーティアプリケーションからの応答に基づいて応答を生成することができる。
【0054】
いくつかの実装形態において、対話を記憶することは、クエリのコンテキストを、クエリを処理した二次自動アシスタントとともにデータベース320内に記憶することを含み得る。追加的または代替的に、タイムスタンプ、および/またはクエリに関連する他の情報が、対話の指示とともにデータベース320内に記憶され得る。例えば、「大統領の身長はどれくらいですか(how tall is the president)」のクエリが、一次自動アシスタント305によって受信され得る。クエリは、二次自動アシスタント310に提供され得、クエリの分類、クエリが二次自動アシスタント310に提供されたときのタイムスタンプ、および/またはクエリ(例えば、ユーザの口頭発話のオーディオデータ、クエリのNLUデータ、クエリのテキスト表現)が、データベース320内に記憶され得る。さらに、クエリが「大統領(the president)」に関連しているという指示などのクエリのコンテキストが記憶され得る。続いて、ユーザは、「彼にはどれくらい多くの子供がいますか(how many kids does he have)」のクエリを提出し得、アシスタント決定モジュール325は、データベース320内に記憶された指示に基づいて、ユーザがしきい値時間期間内に同じ分類(例えば、「回答」クエリ)のクエリを提出したと判定し得る。一次自動アシスタント305は、さらなる処理のために、クエリ(すなわち、「彼にはどれくらい多くの子供がいますか(how many kids does he have)」)をコンテキスト(例えば、以前のクエリが「大統領(the president)」に関連している)とともに二次自動アシスタント310に提供し得る。いくつかの実装形態において、「彼にはどれくらい多くの子供がいますか(how many kids does he have)」のクエリを受信すると、二次自動アシスタント310が、以前のコンテキストに基づいて、「彼(he)」が「大統領(the president)」を指すと判定することができるように、二次自動アシスタント310は、以前のクエリのコンテキストの指示を個別に記憶し得る。
【0055】
再び
図4を参照すると、決定ブロック425において、いくつかの実装形態において、アシスタント決定モジュール325は、二次自動アシスタントがしきい値時間期間内に現在のクエリと同じ分類のクエリを処理していないと判定し得る。例えば、現在のセッション中、および/またはある時間期間内に一次自動アシスタント305によって受信された、その分類の最初のクエリであるクエリが提出される場合がある。アシスタント決定モジュール325が、データベース320内の指示に基づいて、ユーザが、自動アシスタントが現在の分類のクエリを処理することに対する好みを示していない、および/または二次自動アシスタントが現在の分類のクエリを処理していないと判定した場合、アシスタント決定モジュール325は、利用可能な二次自動アシスタントの能力に基づいて、クエリを処理する二次自動アシスタントを選択し得る。例えば、一次自動アシスタント305は、本明細書で説明するように、能力コミュニケータ350によって提供される各二次自動アシスタントの能力に基づいて、現在の分類に基づいてクエリを提供する1つまたは複数の候補二次自動アシスタントを決定することができる。例えば、「回答」クエリは、しきい値時間期間内に二次自動アシスタント310または二次自動アシスタント315のいずれによっても処置されていない場合がある。アシスタント決定モジュール325は、利用可能な二次自動アシスタントの各々の能力コミュニケータに基づいて、二次自動アシスタント310が「回答」クエリを処理するように構成されており、二次自動アシスタント315が「回答」クエリを処理するように構成されていないと判定し得る。したがって、クエリをそのようなクエリを処理するように構成されていない二次自動アシスタント315に提供する代わりに、クエリは、二次自動アシスタント310に提供され得る。
【0056】
いくつかの実装形態において、二次自動アシスタントは、クエリを発話したユーザに基づいて選択され得る。例えば、一次自動アシスタントが、関連するクエリがしきい値時間量内に二次自動アシスタントに提供されたと判定することができない場合、一次自動アシスタントは、同じユーザによってクエリを以前に提供された同じ二次自動アシスタントにクエリを提供することを決定することができる。一例において、第1のユーザは、「私は私のカレンダー上になにか有していますか(Do I have anything on my calendar)」のクエリを一次自動アシスタントに提供し得、このクエリは、処理のために二次自動アシスタントに提供される。続いて、他のユーザは、異なる二次自動アシスタントによって処理される追加のクエリを提供し得る。続いて、第1のユーザは、「大統領の身長はどれくらいですか(How tall is the president)」のクエリを提出し得るが、第1のクエリを提出した後、しきい値時間量を超えてからである。その場合、会話の連続性を改善するために、話者を最初のクエリと同じ話者として識別することに基づいて同じ二次自動アシスタントが、後続のクエリを提供され得る。
【0057】
決定ブロック430において、アシスタント決定モジュール325は、自動アシスタントがしきい値時間期間内に現在の分類のクエリを処理していないと判定し得る。これに応答して、ブロック440において、アシスタント決定モジュール325は、現在の分類のクエリを処理することができる二次自動アシスタントにクエリを提供することができる。例えば、アシスタント決定モジュール325は、自動アシスタントの能力コミュニケータ350を介して、現在の分類のクエリを処理することができることを示した自動アシスタントを選択することができる。クエリが、能力がある二次自動アシスタントに提供されると、ブロック445において、対話は、アシスタント決定モジュール325による後の利用のためにデータベース320内に記憶され得る。
【0058】
アシスタント決定モジュール325は、複数の二次自動アシスタントが特定の分類のクエリを処理するように構成され得るが、しきい値時間期間内にそのようなクエリを処理したものがない(または、複数の二次自動アシスタントが現在のクエリを処理した)と判定し得る。追加的または代替的に、複数の二次自動アシスタントが、しきい値時間期間内に同じ分類のクエリを処理した可能性がある。例えば、二次自動アシスタント310は、クエリ分類器330によって「生産性」クエリとして分類された「アラームを設定して(set an alarm)」のクエリを処理した場合があり、さらに、二次自動アシスタント315は、クエリ分類器330によって「生産性」クエリとしても分類された「寝室の明かりを消して(turn off the bedroom lights)」のクエリを処理した場合がある。複数の二次自動アシスタントがクエリを処理するためにアシスタント決定モジュール325によって識別された場合、他の二次自動アシスタントの代わりに1つの二次自動アシスタントが選択され得るように、候補二次自動アシスタントがランク付けおよび/またはスコア付けされ得る。
【0059】
図5Aを参照すると、ユーザ101と2つの自動アシスタント305および310との間の対話が示されている。図示の環境において、一次自動アシスタント305ならびに二次自動アシスタント310および315は、各々、別個のデバイス上で実行されるように示されている。しかしながら、いくつかの実装形態において、自動アシスタントのうちの1つまたは複数は、
図2に示すように、同じデバイス上で実行されている場合がある。さらに、図示のダイアログは、クエリを履行しない一次自動アシスタント305によって受信される。したがって、ユーザ101の口頭発話は、一次自動アシスタント305のスピーカによって検出され得、このスピーカは、さらなる処理のために二次自動アシスタント310および/または315にクエリを提供する。したがって、ユーザ110は、一次自動アシスタント305と対話することができるが、図示のように、クエリに対する応答は、二次自動アシスタント310および315によって提供され得る。
【0060】
ダイアログターン505において、ユーザ101は、「オーケーアシスタント、大統領の身長はどれくらいですか(OK Assistant, how tall is the president)」という発話を発話する。本明細書で説明するように、「オーケーアシスタント(OK Assistant)」という呼び出しフレーズは、一次自動アシスタント305を呼び出すことができ、さらに、一次自動アシスタント305は、1つまたは複数のマイクロフォンを介して、「大統領の身長はどれくらいですか(how tall is the president)」という口頭クエリを受信する。一次自動アシスタント305のクエリ分類器330は、ユーザ101がクエリに対する回答を要求していることを示す「回答」の分類などの、クエリの分類を決定することができる。さらに、一次自動アシスタント305は、データベース320内の指示に基づいて、ユーザ101が、現在のダイアログセッション内のしきい値時間期間内に、「回答」として分類されたクエリを以前に提出していないと判定することができる。これに応答して、アシスタント決定モジュール325は、二次自動アシスタント310などの候補二次自動アシスタントのうちの1つにクエリを提供することができる。クエリを他の自動アシスタントに提供する代わりに1つの自動アシスタントに提供するという決定は、例えば、ユーザと二次自動アシスタントとの過去の対話に基づいて識別された「回答」クエリを提供する際の二次自動アシスタント310に対するユーザの好み、時刻、ユーザの位置、および/またはユーザが、二次自動アシスタント315がクエリを処理する代わりに二次自動アシスタント310がクエリを処理することに関心があることを示す他の要因に基づくことができる。さらに、二次自動アシスタント310の能力コミュニケータ350は、「回答」クエリを処理することができるという指示を一次自動アシスタント305に提供することができ、一次自動アシスタント305は、示された自動アシスタントの能力に基づいて、二次自動アシスタント310にクエリを提供することができる。
【0061】
図5Bを参照すると、
図5Aのダイアログターンと、クエリを処理する構成要素とを含む図が提供されている。図示のように、口頭発話505は、まず、クエリ分類器330に提供され、クエリ分類器330は、505Aにおいて「回答」の分類を決定する。「回答」の分類および/またはクエリに関連する他の情報(例えば、コンテキスト)は、アシスタント決定モジュール325に提供され、アシスタント決定モジュール325は、二次自動アシスタントが「回答」クエリを以前に処理したかどうかを判定するために、データベース320内をチェックする(505B)。これは、「回答」として分類され、処理された最初のクエリであるので、データベース320は、二次自動アシスタントの指示を含まず、「n/a」応答505Cを提供する。これに応答して、アシスタント決定モジュール325は、1つまたは複数の要因(例えば、ユーザと二次自動アシスタントとの以前の対話、機械学習モデル出力)に基づいて、二次自動アシスタント315にクエリを提供する代わりに、(505Dにおいて)二次自動アシスタント310にクエリを提供することを決定する。
【0062】
一次自動アシスタントは、さらなる処理のために、二次自動アシスタント310にクエリを提供する。これに応答して、二次自動アシスタントのクエリ処理エンジン340は、クエリに対する応答510を決定する。例えば、再び
図5Aを参照すると、「大統領の身長はどれくらいですか(how tall is the president)」のクエリに応答して、二次自動アシスタント310は、「大統領は6フィート3インチです(the president is 6 feet, 3 inches)」と応答する。いくつかの実装形態において、応答は、二次自動アシスタント310に固有のスピーカ(例えば、自動アシスタントを実行しているデバイスと一体のスピーカ)によって提供され得る。いくつかの実装形態において、応答は、一次自動アシスタント305などの1つまたは複数の他のデバイスのスピーカによって提供され得る。それらの場合、スピーカが応答を提供する際に2つ以上の自動アシスタントによって利用される場合であっても、ユーザが、応答のオーディオ特性に基づいて、応答が二次自動アシスタント310によって生成されており、別の自動アシスタントによって生成されていないこと認識することができるように、二次自動アシスタント310に固有の応答を提供するために音声プロファイルが利用され得る。さらに、再び
図5Bを参照すると、クエリが二次自動アシスタント310に提供されると(および/または二次自動アシスタント310が応答510を提供すると)、後続の「回答」クエリが受信されたときに、アシスタント決定モジュール325が以前の対話を識別し、どの自動アシスタントに後続の「回答」クエリを提供するかを判定するために対話を利用することができるように、アシスタント決定モジュール325は、クエリ、クエリ分類、クエリが提供されたときのタイムスタンプ、クエリのコンテキスト、および/またはクエリに関連する他の情報を示す対話505Eをデータベース320内に記憶することができる。
【0063】
いくつかの実装形態において、アシスタント決定モジュール325は、複数の二次自動アシスタントが現在の分類のクエリを処理したと判定し得る。それらの場合、ブロック450において、アシスタント決定モジュール325は、どの二次自動アシスタントにクエリを提供するかを決定するために、候補二次自動アシスタントにランク付けすることができる。前述したように、いくつかの実装形態において、現在の分類を有するクエリは、しきい値時間期間内に以前に処理されていない(またはまったく処理されていない)場合がある。したがって、クエリを処理するように構成された任意の二次自動アシスタントが、候補自動アシスタントであり得る。いくつかの実装形態において、複数の二次自動アシスタントが、現在のクエリと同じ分類のクエリを処理している場合があり、アシスタント決定モジュール325は、複数のアシスタントのうちのどれにクエリを提供するかを判定することができる。さらに、いくつかの実装形態において、現在のクエリとは異なる分類の関連クエリが処理されている場合があり、以前のクエリが関連すると判定したことに基づいて、他の二次自動アシスタントに優先して二次自動アシスタントのうちの1つが、クエリを処理するために選択され得る。
【0064】
いくつかの実装形態において、どの二次自動アシスタントに現在のクエリを提供するかを決定するために、以前のクエリのうちの1つまたは複数が現在のクエリに関連しているかどうかを判定し、したがって、候補二次自動アシスタントをランク付けするために、現在のクエリおよび以前のクエリは、埋め込み空間内に埋め込まれ得る。例えば、複数の二次自動アシスタントが現在のクエリと同じ分類のクエリを以前に処理している場合、以前のクエリは、埋め込み空間、および現在のクエリと以前に処理されたクエリとの関連性内に埋め込まれ得る。したがって、現在のクエリに最も関連するクエリを以前に処理した二次自動アシスタントは、現在のクエリを処理する二次自動アシスタントとして選択され得る(および/または、過去に処理されたクエリの関連性は、どの自動アシスタントに現在のクエリを提供するのかを決定する際の要因であり得る)。
【0065】
再び
図5Aを参照すると、口頭発話515がユーザ101によって提供される。「オーケーアシスタント、私のカレンダーになにがありますか(OK Assistant, what's on my calendar)」という発話は、一次自動アシスタント305によって受信され、分類され、さらなる処理のために二次自動アシスタント310に提供される。これに応答して、二次自動アシスタント310は、「あなたは5時に会議があります(you have a meeting at 5)」の応答を提供する。再び
図5Bを参照すると、口頭発話515は、最初にクエリ分類器305に提供され、クエリ分類器305は、クエリが「回答」クエリ515Aであると判定する。分類は、アシスタント決定モジュール325に提供され、アシスタント決定モジュール325は、データベース320内に記憶された指示に基づいて、ユーザ101が「回答」クエリを処理した自動アシスタントと以前に対話したかどうかを判定する。515Bにおいてデータベース320をチェックした後、ユーザ101と二次自動アシスタント305との以前の対話が識別される(515C)。しかしながら、アシスタント決定モジュール325は、以前の「回答」クエリ505から識別されたコンテキスト情報に基づいて、このクエリが以前の「回答」クエリに関連していないとさらに判定することができる。これに応答して、アシスタント決定モジュール325は、口頭発話515のコンテキストが以前の「回答」クエリのコンテキストに関連していない(すなわち、発話515が発話505によって開始されたダイアログの継続ではない)と判定したことに基づいて、クエリを処理する自動アシスタントとして二次自動アシスタント305を選択しなくてもよい。アシスタント決定モジュール325は、例えば、自動アシスタントの各々によって示された能力に基づいて、例えば、二次自動アシスタント310がユーザのカレンダーにアクセスするように構成されていることと、ユーザのカレンダーにアクセスするためにユーザによって以前に利用されていることを識別すること、および/またはカレンダー関連のクエリを処理するときに二次自動アシスタント305に優先する二次自動アシスタント310の示されたユーザの好みに基づいて、二次自動アシスタント310にクエリを提供することを決定することができる。クエリが二次自動アシスタント310に提供されると、対話は、データベース320内に記憶され(515E)、二次自動アシスタント310は、応答を提供することができる。データベース320内に記憶された以前の対話と同様に、二次自動アシスタント310との対話は、コンテキスト情報、タイムスタンプ、二次自動アシスタントによって提供されたクエリおよび/もしくは応答のベクトル埋め込み、ならびに/または後続のクエリを二次自動アシスタントに提供するかどうかを決定する際に利用するためのクエリおよび/もしくは応答に関連する他の情報とともに記憶され得る。いくつかの実装形態において、後続のクエリについて、クエリが以前のクエリに関連するかどうかを判定するために、しきい値時間期間内に発生した対話のみが再調査されるように、以前の対話は、ある時間期間の間記憶され得る。
【0066】
再び
図5Aを参照すると、ユーザ101は、「彼にはどれくらい多くの子供がいますか(how many kids does he have)」の口頭発話525を提供する。この口頭発話は、発話505で開始されたダイアログの継続であり、応答を生成するために、以前のダイアログのコンテキストの少なくとも一部が必要である。例えば、口頭発話525は、発話525においてユーザ101によって示されるように「大統領(the president)」を指す「彼(he)」という用語を含む。これに応答して、二次自動アシスタント310は、「大統領には2人の子供がいます(the president has two children)」と応答する。
【0067】
再び
図5Bを参照すると、口頭発話525は、クエリ分類器330に提供され、クエリ分類器330は、525Aにおいてクエリを「回答」クエリとして分類する。以前のクエリと同様に、アシスタント決定モジュール325は、二次自動アシスタント310と二次自動アシスタント315の両方がしきい値時間期間内に「回答」クエリを処理したことを(525Cにおいて)識別するために、データベース320内をチェックする(525B)。しかしながら、(例えば、用語が何を指すのかを示すことなく、「彼(he)」という用語を有する)現在のクエリの内容に基づいて、かつ対話505Eとともに記憶され得るコンテキスト情報に基づいて、アシスタント決定モジュール325は、(現在のクエリに関連しない「回答」クエリを処理した)二次自動アシスタント315にクエリを提供する代わりに、二次自動アシスタント310にクエリを提供する(525D)ことを決定することができる。さらに、二次自動アシスタント310との対話は、本明細書で説明するように、クエリ情報、コンテキスト、および/または他の情報とともに、データベース320内に記憶される(525E)。
【0068】
再び
図5Aを参照すると、ユーザは、次に、「オーケー、アシスタント、ボブに「会議は5時です」というメッセージを送ってください(OK, Assistant, send Bob a message of 'Meeting is at 5')」の口頭発話535を提供する。これに応答して、二次自動アシスタント310は、要求を実行し、ユーザ101に「メッセージアプリケーションを介してボブにメッセージを送りました(I sent Bob the message via Message Application)」と応答する。いくつかの実装形態において、一次自動アシスタントは、前述したように、口頭発話が他の以前のクエリに関連していないと判定し、したがって、各自動アシスタントによって提供される能力、ユーザの好み、および/または他の要因などに基づいて、クエリを提供する自動アシスタントを決定することができる。いくつかの実装形態において、一次自動アシスタント305は、(クエリ内の用語に基づいて)発話535が会議に関連しており、ユーザ101がカレンダーアプリケーション内の会議に関連して二次自動アシスタント315と以前に対話したと判定し得る。したがって、継続性のために、一次自動アシスタント305は、クエリのコンテキストが、二次自動アシスタント310によって以前に処理されたものよりも二次自動アシスタント315によって処理された以前のクエリにより関連していると判定したことに基づいて、二次自動アシスタント310に優先して二次自動アシスタント315にクエリを提供し得る。
【0069】
再び
図5Bを参照すると、口頭発話は、最初にクエリ分類器330に提供され、クエリ分類器330は、クエリが「メッセージング」クエリ(すなわち、メッセージを送信する要求)であると判定する(535A)。これに応答して、アシスタント決定モジュール325は、データベース320をチェックし(535B)、ユーザ101と「メッセージング」クエリを処理した二次自動アシスタントとの以前の対話を識別しないが、カレンダーに関するユーザ101と二次自動アシスタント315との以前の対話(すなわち、記憶された対話515E)を(535Cにおいて)識別する。したがって、アシスタント決定モジュール325は、二次自動アシスタント315との以前の対話が現在のクエリにより関連していると判定し、二次自動アシスタント310にクエリを提供する代わりに、二次自動アシスタント315にクエリを提供することができる(535D)。例えば、アシスタント決定モジュール325は、1つまたは複数の機械学習モデルを利用して、発話535が応答に最も類似している(例えば、発話535および応答520が「会議(meeting)」への参照を含む)と判定し、発話515を処理して応答520を提供したのと同じ二次自動アシスタント315に発話535を提供するために、発話505、515、525、および535、ならびに/または応答510、520、および530を埋め込み空間内に埋め込むことができる。これに応答して、二次自動アシスタント315のクエリ処理エンジンは、応答を決定し、要求されたアクション(すなわち、ボブ(Bob)にメッセージを送信する)を実行し、応答540をユーザ101に提供することができる。次いで、二次自動アシスタントとの対話535Eは、「メッセージング」クエリを二次自動アシスタントにいつ提供するかを決定する際のその後の利用のために、データベース320内に記憶され得る。
【0070】
いくつかの実装形態において、機械学習モデルは、1つまたは複数の他の信号を入力として受信し、同じ分類の以前のクエリがしきい値時間期間内に二次自動アシスタントに提供されていない場合、クエリを提供する候補二次自動アシスタントのランク付けを出力として提供し得る。例えば、現在のコンテキスト、および以前のクエリが二次自動アシスタントに提供されたときに対応する履歴コンテキストが、どの自動アシスタントにクエリを提供するかを決定するために機械学習モデルへの入力として利用され得る。クエリのコンテキストは、例えば、1つもしくは複数のコンピューティングデバイスを介してユーザに現在提示されている画像および/もしくはインターフェース、クエリを提供するときにユーザによってアクセスされている現在のアプリケーション、ユーザがクエリを提供した時刻、ならびに/または他の二次自動アシスタントにクエリを提供する代わりにある二次自動アシスタントにクエリを提供するというユーザの意図を示すことができる1つもしくは複数の他のユーザもしくはデバイスの特徴を含むことができる。
【0071】
再び
図4Bを参照すると、クエリは、ブロック455において、最も高くランク付けされた候補二次自動アシスタントに提供され得る。決定ブロック460において、選択された二次自動アシスタントがクエリを正常に処理した場合、二次自動アシスタントとの対話は、(ブロック465において)データベース320内に記憶される。選択された自動アシスタントがクエリを正常に処理しない(例えば、応答を生成することができない、意図されたアクションを実行することができない)場合、ブロック470において、クエリは、次に最も高くランク付けされた候補自動アシスタントに提供され得る。これは、すべての候補自動アシスタントへのクエリの提供が失敗するまで、および/または候補二次自動アシスタントがクエリを正常に処理するまで継続することができる。
【0072】
いくつかの実装形態において、二次自動アシスタントが、異なる二次自動アシスタントに提供された以前のクエリに関連すると判定されたクエリを最初に提供されるとき、以前のクエリのコンテキストが、クエリとともに提供され得る。例えば、「大統領の身長はどれくらいですか(How tall is the president)」の最初のクエリについて、クエリが「大統領(the president)」に関連していたという指示を含むテキストコンテキストが、データベース320内に記憶される。続いて、「彼にはどれくらい多くの子供がいますか(how many kids does he have)」のクエリが受信され、第1のクエリとは異なる二次自動アシスタントに提供された場合、後続のクエリ内の「彼(he)」を解決する際に二次自動アシスタントを支援するために、「大統領(the president)」のテキストコンテキストが提供され得る。いくつかの実装形態において、時刻、1つもしくは複数のコンピューティングデバイスの状態、ユーザによって現在実行されているアプリケーション、ならびに/または提供されたクエリ内の1つもしくは複数の用語を解決する際に選択された二次自動アシスタントを支援することができる以前のクエリおよび/もしくは現在のクエリの他のコンテキストなどの他のコンテキスト情報が、後続のクエリとともに提供され得る。
【0073】
図6は、他の自動アシスタントにクエリを提供する代わりに、ある二次自動アシスタントにクエリを提供するための別の例示的な方法600を示すフローチャートを示す。便宜上、方法600の動作について、動作を実行するシステムを参照して説明する。方法600のこのシステムは、クライアントデバイスの1つまたは複数のプロセッサおよび/または他の構成要素を含む。さらに、方法600の動作は、特定の順序で示されているが、これは、限定を意味するものではない。1つもしくは複数の動作が、並べ替えられ得、省略され得、または追加され得る。
【0074】
ステップ605において、呼び出しが一次アシスタントによって受信される。いくつかの実装形態において、呼び出しは、一次自動アシスタントを非アクティブ状態(例えば、入ってくる口頭発話を処理しない)からアクティブ状態に遷移させる口頭発話であり得る。いくつかの実装形態において、呼び出しは、ユーザのジェスチャ、クライアントデバイスおよび/もしくはクライアントデバイスのインターフェースを介してユーザがボタンを選択すること、ならびに/または一次自動アシスタントをアクティブ化することにおけるユーザによる関心を示す1つもしくは複数の他のアクションを含むことができる。
【0075】
いくつかの実装形態において、一次自動アシスタントは、一次自動アシスタント305と1つまたは複数の特徴を共有することができる。例えば、いくつかの実装形態において、一次自動アシスタントは、1つまたは複数のマイクロフォンを介して口頭発話を受信し、口頭発話を処理する二次自動アシスタントを決定することができる。いくつかの実装形態において、一次自動アシスタントは、一次自動アシスタントが口頭クエリおよび/または他の発話に対する応答を生成することを可能にするクエリ処理エンジンを含むことができる。いくつかの実装形態において、一次自動アシスタントは、ASR、TTS、NLU、および/または口頭発話の内容を決定する他の処理などの、口頭発話の処理を実行することができる。
【0076】
いくつかの実装形態において、呼び出しは、オーディオデータが提供される特定の二次自動アシスタントを示すことができる。例えば、一次自動アシスタントは、「オーケーアシスタント(OK Assistant)」などの一般的な呼び出しによって呼び出され得、さらに、「オーケーアシスタントA(OK Assistant A)」などの特定の自動アシスタントを示す二次呼び出しで呼び出され得る。この場合、一般的な自動アシスタントは、他の二次自動アシスタントにオーディオデータを提供する代わりに、特に「アシスタントA(Assistant A)」にオーディオを提供する(またはオーディオデータの指示を提供する)ことができる。追加的または代替的に、呼び出しが特定の自動アシスタントを示す場合、呼び出しは、どの自動アシスタントにオーディオデータを提供するかを決定するときに自動アシスタントをランク付けするために、1つまたは複数の他の信号とともに利用され得る。
【0077】
ステップ610において、口頭クエリが一次アシスタントによって受信される。いくつかの実装形態において、口頭クエリは、自動アシスタントが1つまたは複数のアクションを実行することに対する要求を含むことができる。例えば、ユーザは、提示された質問に対する回答を含む応答を受信するつもりで、「大統領の身長はどれくらいですか(How tall is the president)」の口頭クエリを提出し得る。また、例えば、ユーザは、1つまたは複数のスマートライトをオンからオフに遷移させるつもりで、「明かりを消して(turn off the lights)」の口頭クエリを提出し得る。
【0078】
ステップ615において、ユーザの履歴データが識別される。履歴データは、1つまたは複数の二次自動アシスタントと、二次自動アシスタントの各々によって処理されたクエリとに関連する情報を含むことができる。例えば、履歴データは、クエリのテキスト表現、クエリが処理されたときの内容、クエリに対する応答を生成した自動アシスタント、生成された応答、および/またはユーザと1つもしくは複数の自動アシスタントとの履歴対話の他の指示を含むことができる。
【0079】
ステップ620において、履歴対話の少なくとも一部と口頭クエリとの間の関係が決定される。いくつかの実装形態において、関係は、ユーザと二次自動アシスタントのうちの1つまたは複数との間の以前の対話を識別し、現在のクエリに基づいて、どの二次自動アシスタントが現在のクエリに最も類似している以前のクエリを処理したかを決定することに基づいて決定され得る。例えば、ユーザは、「大統領の身長はどれくらいですか(How tall is the president)」の以前のクエリを提出した場合がある。続いて、ユーザは、「彼(he)」が「大統領(the president)」を指す、「彼にはどれくらい多くの子供がいますか(how many kids does he have)」のクエリを提出し得る。(直接、または1つもしくは複数の介在クエリを有して)第1のクエリに続く第2のクエリのコンテキストに基づいて、クエリ間の関係が決定され得る。さらに、以前のクエリに関するデータベース内に記憶された指示に基づいて、第2のクエリが同じ自動アシスタントに提供され得るように、第1のクエリに対する応答を生成したのと同じ二次自動アシスタントが識別され得る。
【0080】
ステップ625において、口頭クエリを含むオーディオデータが二次自動アシスタントに提供される。いくつかの実装形態において、オーディオデータは、オーディオデータの転写として提供され得る。例えば、一般的な自動アシスタントは、オーディオデータに対して自動音声認識を実行し、転写を二次自動アシスタントに提供することができる。いくつかの実装形態において、オーディオデータは、オーディオ(例えば、生のオーディオデータおよび/または前処理されたオーディオデータ)として提供され得、次いで、オーディオは、特定の二次自動アシスタントによって処理され得る。
【0081】
図7は、本明細書で説明する技法の1つまたは複数の態様を実行するためにオプションで利用され得る例示的なコンピューティングデバイス710のブロック図である。コンピューティングデバイス710は、典型的には、バスサブシステム712を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ714を含む。これらの周辺デバイスは、例えば、メモリサブシステム725およびファイル記憶サブシステム726を含む記憶サブシステム724、ユーザインターフェース出力デバイス720、ユーザインターフェース入力デバイス722、ならびにネットワークインターフェースサブシステム716を含み得る。入力デバイスおよび出力デバイスは、ユーザがコンピューティングデバイス710と対話することを可能にする。ネットワークインターフェースサブシステム716は、外部ネットワークへのインターフェースを提供し、他のコンピューティングデバイス内の対応するインターフェースデバイスに結合される。
【0082】
ユーザインターフェース入力デバイス722は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムなどのオーディオ入力デバイス、マイクロフォン、および/または他のタイプの入力デバイスを含み得る。一般に、「入力デバイス」という用語の使用は、コンピューティングデバイス710または通信ネットワークに情報を入力するためのすべての可能なタイプのデバイスおよび方法を含むことを意図している。
【0083】
ユーザインターフェース出力デバイス720は、ディスプレイサブシステム、プリンタ、ファックス機、またはオーディオ出力デバイスなどの非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投影デバイス、または可視画像を作成するためのなにか他のメカニズムを含み得る。ディスプレイサブシステムはまた、オーディオ出力デバイスなどを介して、非視覚的表示を提供し得る。一般に、「出力デバイス」という用語の使用は、コンピューティングデバイス710からユーザまたは別の機械もしくはコンピューティングデバイスに情報を出力するためのすべての可能なタイプのデバイスおよび方法を含むことを意図している。
【0084】
記憶サブシステム724は、本明細書で説明するモジュールのうちのいくつかまたはすべての機能を提供するプログラミング構造およびデータ構造を記憶する。例えば、記憶サブシステム724は、
図5および
図6の方法の選択された態様を実行するため、ならびに/または
図2および
図3に示す様々な構成要素を実装するためのロジックを含み得る。
【0085】
これらのソフトウェアモジュールは、一般に、プロセッサ714単独で、または他のプロセッサと組み合わせて実行される。記憶サブシステム724内で使用されるメモリ725は、プログラム実行中の命令およびデータの記憶のためのメインランダムアクセスメモリ(RAM)730と、固定命令が記憶される読み取り専用メモリ(ROM)732とを含むいくつかのメモリを含むことができる。ファイル記憶サブシステム726は、プログラムおよびデータファイルのための永続的なストレージを提供することができ、ハードディスクドライブ、関連するリムーバブルメディアを伴うフロッピーディスクドライブ、CD-ROMドライブ、光学ドライブ、またはリムーバブルメディアカートリッジを含み得る。特定の実装形態の機能を実装するモジュールは、記憶サブシステム724内のファイル記憶サブシステム726によって、またはプロセッサ714によってアクセス可能な他の機械内に記憶され得る。
【0086】
バスサブシステム712は、コンピューティングデバイス710の様々な構成要素およびサブシステムを意図されたように互いに通信させるためのメカニズムを提供する。バスサブシステム712は、単一のバスとして概略的に示されているが、バスサブシステムの代替実装形態は、複数のバスを使用し得る。
【0087】
コンピューティングデバイス710は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む様々なタイプのものであり得る。コンピュータおよびネットワークの絶えず変化する性質のために、
図7に示すコンピューティングデバイス710の説明は、いくつかの実装形態を説明する目的のための特定の例としてのみ意図されている。コンピューティングデバイス710の他の多くの構成は、
図7に示すコンピューティングデバイスよりも多いまたは少ない構成要素を有することが可能である。
【0088】
いくつかの実装形態において、1つまたは複数のプロセッサによって実装される方法が提供され、一般的な自動アシスタントによって呼び出しを受信するステップであって、呼び出しを受信することが、一般的な自動アシスタントを呼び出させる、ステップと、呼び出された一般的な自動アシスタントを介して、クライアントデバイスの1つまたは複数のマイクロフォンによって生成されたオーディオデータ内にキャプチャされた口頭クエリを受信するステップと、ユーザの履歴対話データを識別するステップであって、履歴対話データが、ユーザの1つまたは複数の過去のクエリと、1つまたは複数の過去のクエリに応答してある時間期間内に複数の二次自動アシスタントによって生成された1つまたは複数の応答とに基づいて生成される、ステップと、口頭クエリの転写を履歴対話データと比較することに基づいて、口頭クエリと、複数の二次自動アシスタントのうちの特定の自動アシスタントに関連する履歴対話データの一部との間に関係が存在すると判定するステップとを含む。口頭クエリと特定の自動アシスタントとの関係が存在するとの判定に応答して、方法は、オーディオデータの指示を二次自動アシスタントのうちの任意の他の自動アシスタントに提供する代わりに特定の自動アシスタントに提供するステップであって、オーディオデータの指示を提供することが、特定の自動アシスタントに口頭クエリに対する応答を生成させる、ステップをさらに含む。
【0089】
本明細書で開示する技法のこれらおよび他の実装形態は、以下の特徴のうちの1つまたは複数を含むことができる。
【0090】
いくつかの実装形態において、方法は、履歴対話データに基づいて、口頭クエリと、複数の二次自動アシスタントのうちの第2の特定の自動アシスタントに関連する履歴対話データの追加の部分との間に追加の関係が存在すると判定するステップと、履歴対話データに基づいて、ユーザと第2の特定の自動アシスタントとの第2のアシスタント履歴対話に関する第2のアシスタント時間を決定するステップと、履歴対話データに基づいて、ユーザと特定の自動アシスタントとの第1のアシスタント履歴対話に関する第1のアシスタント時間を決定するステップと、第1のアシスタント時間と第2のアシスタント時間とに基づいて、特定の自動アシスタントと第2の特定の自動アシスタントとをランク付けするステップと、ランク付けに基づいて特定の自動アシスタントを選択するステップとをさらに含み、オーディオデータの指示を、二次自動アシスタントのうちの任意の他の自動アシスタントに提供する代わりに特定の自動アシスタントに提供するステップが、ランク付けに基づいて特定の自動アシスタントを選択するステップにさらに基づく。それらの実装形態のうちのいくつかにおいて、方法は、関係に対する第1の類似性スコアと、追加の関係に対する第2の類似性スコアとを決定するステップをさらに含み、特定の自動アシスタントと第2の特定の自動アシスタントとをランク付けするステップが、第1の類似性スコアと第2の類似性スコアとにさらに基づく。
【0091】
いくつかの実装形態において、方法は、口頭クエリの分類を決定するステップをさらに含み、口頭クエリの転写を特定の自動アシスタントに提供することが、分類にさらに基づく。それらの実装形態のうちのいくつかにおいて、方法は、履歴対話データに基づいて、分類もまた有する過去のクエリのうちの1つまたは複数に対して特定の自動アシスタントを利用するというユーザの示された好みを識別するステップをさらに含み、オーディオデータを特定の自動アシスタントに提供するステップが、ユーザの好みにさらに基づく。それらの実装形態のうちの他のものにおいて、方法は、オーディオデータを特定の自動アシスタントに提供する一般的な自動アシスタントの指示を生成するステップと、指示を分類の指示とともに記憶するステップとをさらに含む。それらの例のうちのいくつかにおいて、方法は、オーディオデータの現在のコンテキストを決定するステップと、現在のコンテキストを、特定の自動アシスタントにオーディオデータを提供する一般的な自動アシスタントの指示とともに記憶するステップとをさらに含む。
【0092】
いくつかの実装形態において、特定の自動アシスタントは、オーディオデータのテキスト表現を生成するために、オーディオデータの指示に対して自動音声認識を実行し、テキスト表現の自然言語処理を生成し、自然言語処理に基づいて応答を生成する。それらの実装形態のうちのいくつかにおいて、応答を生成することは、自然言語処理の結果をサードパーティアプリケーションに提供することと、サードパーティアプリケーションから応答を受信することと、サードパーティからの応答に少なくとも部分的に基づいて応答を生成することとを含む。
【0093】
いくつかの実装形態において、呼び出しは、特定の自動アシスタントを示し、オーディオデータの指示は、オーディオデータのオーディオ表現である。
【0094】
本明細書で論じる特定の実装形態が、ユーザに関する個人情報(例えば、他の電子通信から抽出されたユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの位置、ユーザの時間、ユーザの生体情報、ならびにユーザの活動および人口統計情報、ユーザ間の関係など)を収集または使用する可能性がある状況では、ユーザは、情報が収集されるかどうか、個人情報が記憶されるかどうか、個人情報が使用されるかどうか、およびユーザに関する情報がどのように収集され、記憶され、使用されるかを制御する1つまたは複数の機会を提供される。すなわち、本明細書で論じたシステムおよび方法は、関連するユーザから、そうするための明示的な許可を受け取った場合にのみ、ユーザの個人情報を収集、記憶、および/または使用する。
【0095】
例えば、ユーザは、プログラムまたは機能が、その特定のユーザ、またはプログラムもしくは機能に関連する他のユーザに関するユーザ情報を収集するかどうかについての制御を提供される。個人情報が収集される各ユーザは、情報が収集されるかどうかについて、および情報のどの部分が収集されるべきかについての許可または承認を提供するために、そのユーザに関連する情報収集の制御を可能にする1つまたは複数のオプションを提示される。例えば、ユーザは、通信ネットワークを介して1つまたは複数のそのような制御オプションを提供され得る。加えて、特定のデータは、個人を特定できる情報が除去されるように、記憶または使用される前に、1つまたは複数の方法において処理され得る。一例として、ユーザの識別情報は、個人を特定できる情報を決定することができないように処理され得る。別の例として、ユーザの地理的位置は、ユーザの特定の位置を特定することができないように、より大きい地域に一般化され得る。
【0096】
いくつかの実装形態が本明細書で説明および例示されているが、機能を実行するため、ならびに/または本明細書で説明した結果および/もしくは利点のうちの1つもしくは複数を取得するための様々な他の手段および/または構造が、利用され得、そのような変更および/または修正の各々が、本明細書で説明した実装形態の範囲内であると見なされる。より一般的には、本明細書で説明したすべてのパラメータ、寸法、材料、および構成は、例示であることを意味し、実際のパラメータ、寸法、材料、および/または構成は、教示が使用される特定の用途に依存する。当業者は、本明細書で説明した特定の実装形態に対する多くの均等物を認識するか、または日常的な実験のみを使用して確認することができるであろう。したがって、前述の実装形態は、単なる例として提示されており、添付した特許請求の範囲およびその均等物の範囲内で、実装形態は、具体的に説明および特許請求されている以外の方法で実施され得ることが理解されるべきである。本開示の実装形態は、本明細書で説明した個々の特徴、システム、物品、材料、キット、および/または方法の各々に向けられている。加えて、2つ以上のそのような特徴、システム、物品、材料、キット、および/または方法の任意の組合せは、そのような特徴、システム、物品、材料、キット、および/または方法が相互に矛盾しない場合、本開示の範囲内に含まれる。
【符号の説明】
【0097】
101 ユーザ
105 第1のスタンドアロン対話型スピーカ、第1のスピーカ
110 第2のスタンドアロン対話型スピーカ、第2のスピーカ
115 口頭発話
205 第1のクライアントデバイス、クライアントデバイス
210 第2のクライアントデバイス
215 第1の自動アシスタント、第1のアシスタント
220 第2の自動アシスタント
225 マイクロフォン
230 マイクロフォン
245 第3の自動アシスタント
305 一次自動アシスタント
310 二次自動アシスタント
315 二次自動アシスタント
320 データベース
325 アシスタント決定モジュール
330 クエリ分類器
335 呼び出しエンジン
340 クエリ処理エンジン
345 API
350 能力コミュニケータ
390 API
505 口頭発話、発話
510 応答
515 口頭発話、発話
515E 記憶された対話
520 応答
525 口頭発話、発話
530 応答
535 口頭発話、発話
535E 対話
540 応答
710 コンピューティングデバイス
712 バスサブシステム
714 プロセッサ
716 ネットワークインターフェースサブシステム
720 ユーザインターフェース出力デバイス
722 ユーザインターフェース入力デバイス
724 記憶サブシステム
725 メモリサブシステム
726 ファイル記憶サブシステム
730 メインランダムアクセスメモリ(RAM)
732 読み取り専用メモリ(ROM)