多くのユーザは、複数のアシスタントデバイスのうちの任意の1つを使用して自動化アシスタントに関与し得る。たとえば、何人かのユーザは、他にもアシスタントデバイスはあるがとりわけ、1つまたは複数のスマートフォン、1つまたは複数のタブレットコンピュータ、1つまたは複数の車両コンピューティングシステム、1つまたは複数のウェアラブルコンピューティングデバイス、1つまたは複数のスマートテレビ、1つまたは複数のインタラクティブスタンドアロンスピーカー、ディスプレイを備えた1つまたは複数のインタラクティブスタンドアロンスピーカー、1つまたは複数のIoTデバイスなど、自動化アシスタントに向けられたユーザ入力を受信することができ、および/または自動化アシスタントによって制御され得るアシスタントデバイスの協調的「エコシステム」を所有し得る。
ユーザは、これらのアシスタントデバイスのいずれかを使用して、自動化アシスタントとの人間コンピュータダイアログに携わることができる(自動化アシスタントクライアントがインストールされ、アシスタントデバイスが入力を受け取ることができると仮定している)。いくつかの場合において、これらのアシスタントデバイスは、ユーザの主たる住居、別宅、仕事場、および/または他の構造物の周りに散在している可能性がある。たとえば、スマートフォン、タブレット、スマートウォッチなどのモバイルアシスタントデバイスは、ユーザが身に着け、および/またはユーザが最後に置いた場所にある可能性がある。従来のデスクトップコンピュータ、スマートテレビ、インタラクティブスタンドアロンスピーカー、およびIoTデバイスなどの他のアシスタントデバイスは、比較的固定されることが多いものであり得るが、それにもかかわらず、ユーザの自宅または仕事場内の様々な場所(たとえば、部屋)に配置されてもよい。
最初に図1Aを参照すると、例示的なアシスタントエコシステムが例示されている。例示的なアシスタントエコシステムは、第1のアシスタントデバイス110A、第2のアシスタントデバイス110B、第3のアシスタントデバイス110C、および第4のアシスタントデバイス110Dを含む。アシスタントデバイス110A~Dは、いずれも、家庭、企業、または他の環境内に配設され得る。さらに、アシスタントデバイス110A~Dはすべて、1つまたは複数のデータ構造において一緒にリンクされるか、またはさもなければ互いに関連付けられ得る。たとえば、4つのアシスタントデバイス110A~Dは、すべて、同じユーザアカウントで登録され、ユーザアカウントの同じセットで登録され、特定の構造で登録され、および/またはすべてデバイストポロジー表現における特定の構造に割り当てられ得る。デバイストポロジー表現は、アシスタントデバイス110A~Dの各々について、対応する一意的識別子を含むことができ、任意選択で、たとえばアシスタントインターフェースを含まないIoTデバイスなどの、アシスタントデバイスではない(しかしアシスタントデバイスを介してインタラクティブに操作され得る)他のデバイスに対する対応する一意的識別子を含むことができる。さらに、デバイストポロジー表現は、それぞれのアシスタントデバイス110A~Dに関連付けられているデバイス属性を指定することができる。所与のアシスタントデバイスに対するデバイス属性は、たとえば、それぞれのアシスタントデバイスによってサポートされる1つまたは複数の入力および/または出力モダリティ、それぞれのアシスタントデバイスの処理能力、それぞれのアシスタントデバイスの製造型式、モデル、および/または一意的識別子(たとえば、シリアル番号)(これに基づき処理能力が決定され得る)、および/または他の属性を示すことができる。別の例として、4つのアシスタントデバイスは、セキュアアクセスワイヤレスネットワークなどの同じ無線ネットワークに接続される機能として、および/または集団的に(たとえば、Bluetoothを介して、ペアリング後に)互いにピアツーピア通信している機能として、すべて一緒にリンクされるか、または他の何らかの形で互いに関連付けられ得る。言い換えると、いくつかの実装形態において、複数のアシスタントデバイスは、互いに安全なネットワーク接続を行う機能として、また必ずしも任意のデータ構造において互いに関連付けられることなく、一緒にリンクされ、本明細書において開示されている実装形態により潜在的に適応されると考えられ得る。
非限定的な実施例として、第1のアシスタントデバイス110Aは、ディスプレイおよびカメラを備えたインタラクティブスタンドアロンスピーカーの特定のモデルなどの、第1のタイプのアシスタントデバイスであってよい。第2のアシスタントデバイス110Bは、ディスプレイまたはカメラを有しないインタラクティブスタンドアロンスピーカーの第1のモデルなどの第2のタイプのアシスタントデバイスであってよい。アシスタントデバイス110Cおよび110Dは各々、ディスプレイのないインタラクティブスタンドアロンスピーカーの第3のモデルなど、第3のタイプのアシスタントデバイスであってよい。第3のタイプ(アシスタントデバイス110Cおよび110D)は、第2のタイプ(アシスタントデバイス110D)に比べて処理能力に劣るものとしてよい。たとえば、第3のタイプは、第2のタイプのプロセッサに比べて処理能力が劣るプロセッサを有することができる。たとえば、第3のタイプのプロセッサはGPUを含まないことがあるが、第1のタイプのプロセッサはGPUを含む。また、たとえば、第3のタイプのプロセッサは、第2のタイプのプロセッサに比べてキャッシュが小さく、および/または動作周波数が低いものとすることができる。別の例として、第3のタイプのオンデバイスメモリのサイズは、第2のタイプのオンデバイスメモリのサイズより小さくすることができる(たとえば、2GBと比較して1GB)。さらに別の例として、第3のタイプの利用可能なディスクスペースは、第1のタイプの利用可能なディスクスペースより小さくすることができる。利用可能なディスクスペースは、現在利用可能なディスクスペースと異なっていてもよい。たとえば、利用可能なディスクスペースは、現在利用可能なディスクスペースに、1つまたは複数のオンデバイスモデルによって現在占有されているディスクスペースを加えたものとして決定され得る。別の例として、利用可能なディスクスペースは、オペレーティングシステムおよび/または他の特定のソフトウェアによって占有されているスペースを差し引いた、総ディスクスペースとすることができる。引き続きこの実施例において、第1のタイプおよび第2のタイプは、同じ処理能力を有することができる。
データ構造において一緒にリンクされることに加えて、アシスタントデバイス110A~Dの2つまたはそれ以上(たとえば、すべて)は、少なくとも選択的にローカルエリアネットワーク(LAN)108を介して互いに通信する。LAN108は、Wi-Fiを利用するものなどのワイヤレスネットワーク、Bluetoothを利用するものなどのダイレクトピアツーピアネットワーク、および/または他の通信プロトコルを利用する他の通信トポロジーを含むことができる。
アシスタントデバイス110Aは、アシスタントクライアント120Aを含み、これは、オペレーティングシステムの上にあるスタンドアロンアプリケーションであるか、またはアシスタントデバイス110Aのオペレーティングシステムの全部または一部を形成することができる。アシスタントクライアント120Aは、図1Aにおいて、ウェイク/呼び出しエンジン121A1および1つまたは複数の関連付けられているオンデバイスウェイク/呼び出しモデル131A1を含む。ウェイク/呼び出しエンジン121A1は、1つまたは複数のウェイクまたは呼び出しキューの出現を監視し、1つまたは複数のキューを検出したことに応答して、アシスタントクライアント120Aの1つまたは複数の以前に非アクティブであった機能を呼び出すことができる。たとえば、アシスタントクライアント120Aを呼び出すことは、ASRエンジン122A1、NLUエンジン123A1、および/または他のエンジンを起動させることを含むことができる。たとえば、これはASRエンジン122A1に、ウェイクまたは呼び出しキューに続くさらなる音声データフレームを処理させることができ(一方、呼び出しの前には、音声データフレームのさらなる処理は起こっていなかった)、および/またはアシスタントクライアント120Aに、さらなる音声データフレームおよび/または伝送されるべき他のデータを処理のためにクラウドベースのアシスタントコンポーネント140に伝送させることができる(たとえば、クラウドベースのアシスタントコンポーネント140のリモートASRエンジンによる音声データフレームの処理)。
いくつかの実装形態において、ウェイクキューエンジン121Aは、(たとえば、「非アクティブ」モードでない場合に)クライアントデバイス110Aの1つまたは複数のマイクロホンからの出力に基づく音声データフレームのストリームを連続的に処理し、音声ウェイクワードまたは呼び出しフレーズ(たとえば「OK Assistant」、「Hey Assistant」)が出現するかどうかを監視することができる。処理は、ウェイクモデル131A1のうちの1つまたは複数を利用するウェイクキューエンジン121Aによって実行され得る。たとえば、ウェイクモデル131A1の1つは、音声データのフレームを処理し、1つまたは複数のウェイクワードが音声データ内に存在するかどうかを示す出力を生成するように訓練されたニューラルネットワークモデルであり得る。ウェイクワードの出現を監視している間、ウェイクキューエンジン121は、ウェイクワードを含まない任意の音声データフレームを破棄する(たとえば、バッファへの一時保存の後)。ウェイクキューエンジン121A1は、ウェイクワードの出現を監視することに加えて、またはその代わりに、他の呼び出しキューの出現を監視することができる。たとえば、ウェイクキューエンジン121A1は、呼び出しハードウェアボタンおよび/または呼び出しソフトウェアボタンの押下を監視することもできる。別の例として、引き続き実施例において、アシスタントデバイス110Aがカメラを備えるときに、ウェイクキューエンジン121A1は、任意選択で、ユーザの凝視がカメラに向けられている間の手振りなどの呼び出しジェスチャーの出現および/またはユーザが話しているという指示とともにユーザの凝視がカメラに向けられるなどの他の呼び出しキューの出現を監視する際にカメラからの画像フレームを処理することもできる。
アシスタントクライアント120Aは、図1Aにおいて、自動音声認識(ASR)エンジン122A1および1つまたは複数の関連付けられているオンデバイスASRモデル132A1も含む。ASRエンジン122A1は、発声発話を含む音声データを処理し、ユーザの発話のトランスクリプト(すなわち、語および/または他のトークンのシーケンス)を生成するために使用され得る。ASRエンジン122A1は、オンデバイスASRモデル132A1を利用して音声データを処理することができる。オンデバイスASRモデル132A1は、たとえば、2パスASRモデルを含むことができ、これはニューラルネットワークモデルであり、ASRエンジン122A1によって、トークン上で確率のシーケンス(およびトランスクリプトを生成するために利用される確率)を生成するために利用される。別の例として、オンデバイスASRモデル132A1は、ニューラルネットワークモデルである音響モデル、および音素シーケンスの単語へのマッピングを含む言語モデルを含むことができる。ASRエンジン122A1は、音響モデルを使用して音声データを処理し、音素のシーケンスを生成し、言語モデルを使用して音素のシーケンスを特定の語にマッピングすることができる。追加のまたは代替的なASRモデルが利用され得る。
アシスタントクライアント120Aは、図1Aにおいて、自然言語理解(NLU)エンジン123A1および1つまたは複数の関連付けられているオンデバイスNLUモデル133A1も含む。NLUエンジン123A1は、ASRエンジン122A1によって生成されたトランスクリプトのテキストまたはタイプ入力されたテキスト(たとえば、アシスタントデバイス110Aの仮想キーボードを利用してタイプ入力されたもの)などの自然言語テキストの意味論的表現である記号表現、または信念状態を生成することができる。たとえば、信念状態は、テキストに対応するインテントおよび任意選択でインテントに対するパラメータ(たとえば、スロット値)を含むことが可能である。信念状態は、1つまたは複数のダイアログターンを経て完全に形成された後(たとえば、すべての必須パラメータが解決された後)、発声発話に応答して実行されるべきアクションを表す。記号表現を生成する際に、NLUエンジン123A1は、1つまたは複数のオンデバイスNLUモデル133A1を利用することができる。NLUモデル133A1は、テキストを処理し、テキストによって表されるインテントを示す出力、および/またはテキストのどの部分がインテントのどのパラメータに対応するかの指示を生成するように訓練された1つまたは複数のニューラルネットワークモデルを含むことができる。NLUモデルは、それに加えて、または代替的に、テキストおよび/またはテンプレートの対応する記号表現へのマッピングを含む1つまたは複数のモデルを含むことができる。たとえば、これらのマッピングは、テキスト「what time is it」の「current location」のパラメータを有する「current time」のインテントへのマッピングを含むことができる。別の例として、マッピングは、テンプレートの「add [item(s)] to my shopping list」の、テンプレート内の[item(s)]に対応する実際の自然言語に含まれる項目のパラメータを有する「insert in shopping list」のインテントへのマッピングを含むことができる。
アシスタントクライアント120Aは、図1Aにおいて、フルフィルメントエンジン124A1および1つまたは複数の関連付けられているオンデバイスフルフィルメントモデル134A1も含む。フルフィルメントエンジン124A1は、完全に形成された記号表現を利用して、NLUエンジン123A1から、記号表現に対応するアクションを実行する、または実行させることができる。アクションは、応答性ユーザインターフェース出力(たとえば、聴覚的および/または視覚的ユーザインターフェース出力)を提供すること、スマートデバイスを制御すること、および/または他のアクションを実行することを含むことができる。アクションを実行するか、または実行させる際に、フルフィルメントエンジン124A1は、フルフィルメントモデル134A1を利用することができる。一例として、特定のスマートライトを指定するパラメータを有する「turn on」のインテントに対して、フルフィルメントエンジン124A1は、特定のスマートライトのネットワークアドレスおよび/または特定のスマートライトを「on」状態に移行させるために伝送するコマンドを識別するために、フルフィルメントモデル134A1を利用することができる。別の例として、「current location」のパラメータを有する「current」のインテントに対して、フルフィルメントエンジン124A1は、フルフィルメントモデル134A1を利用して、クライアントデバイス110Aにおける現在時刻が取り出され、(TTSエンジン125A1を利用して)聴覚的にレンダリングされるべきであることを識別し得る。
アシスタントクライアント120Aは、図1Aにおいて、テキスト読み上げ(TTS)エンジン125A1および1つまたは複数の関連付けられているオンデバイスTTSモデル135A1も含む。TTSエンジン125A1は、オンデバイスTTSモデル135A1を利用してテキスト(またはその音声表現)を処理し、合成音声を生成することができる。合成音声は、アシスタントデバイス110Aのローカルテキスト読み上げ(「TTS」)エンジン(テキストを音声に変換する)のスピーカーを介して聴覚的にレンダリングされ得る。合成音声は、自動化アシスタントからの応答の全部もしくは一部として、ならびに/またはパラメータおよび/もしくはインテントを定義し、および/もしくは明確にするようユーザに促す際に(たとえば、NLUエンジン123A1および/または別のダイアログ状態エンジンによってオーケストレーションされるように)生成され、レンダリングされ得る。
アシスタントクライアント120Aは、図1Aにおいて、認証エンジン126A1および1つまたは複数の関連付けられているオンデバイス認証モデル136A1も含む。認証エンジン126A1は、複数の登録ユーザのうちだれがアシスタントデバイス110をインタラクティブに操作しているか、または単一のユーザのみがアシスタントデバイス110に登録されている場合に、アシスタントデバイス110をインタラクティブに操作する登録ユーザ(またはその代わりにゲスト/未登録ユーザ)であるかどうかを検証するために1つまたは複数の認証技術を利用することができる。一例として、テキスト依存話者検証(TD-SV)は、関連するユーザからの許可を得て、登録ユーザの各々について(たとえば、対応するユーザプロファイルと関連して)生成され、記憶され得る。認証エンジン126A1は、対応するTD-SVを生成する際に、および/または音声データTD-SVの対応する部分を処理し、一致があるかどうかを決定するために記憶されているTD-SVとその後比較され得る対応する現在のTD-SVを生成する際に、オンデバイス認証モデル136A1の、TD-SVモデルを利用することができる。他の例として、認証エンジン126A1は、それに加えて、または代替的に、特定のユーザを認証する際に、テキスト独立話者検証(TI-SV)技術、話者検証技術、顔検証技術、および/または他の検証技術(たとえば、PIN入力)、および対応するオンデバイス認証モデル136A1を利用することができる。
アシスタントクライアント120Aは、図1Aにおいて、ウォームキューエンジン127A1、および1つまたは複数の関連付けられているオンデバイスウォームキューモデル137A1も含む。ウォームキューエンジン127A1は、1つまたは複数のウォームワード(warm word)または他のウォームキューの出現を少なくとも選択的に監視し、ウォームキューの1つまたは複数を検出したことに応答して、アシスタントクライアント120Aによって特定のアクションが実行されることを行わせることができる。ウォームキューは任意のウェイクワードまたは他のウェイクキューに加えたものであってよく、ウォームキューの各々は少なくとも選択的にアクティブであり得る。特に、ウォームキューの出現を検出することは、検出された出現の前にウェイクキューがないときであっても特定のアクションが実行されることを引き起こす。したがって、ウォームキューが特定の1つまたは複数の単語であるときに、ユーザは、ウェイクキューを付けることを必要とせずにその単語を単に話すだけでよく、対応する特定のアクションの実行を引き起こし得る。
一例として、「stop」ウォームキューは、少なくとも、タイマーまたはアラームが自動化アシスタント120Aを介してアシスタントデバイス110Aで聴覚的にレンダリングされているときにアクティブであるものとしてよい。たとえば、そのようなときに、ウォームキューエンジン127Aは、連続的に(または少なくともVADエンジン128A1が音声活動を検出したときに)、クライアントデバイス110Aの1つまたは複数のマイクロホンからの出力に基づく音声データフレームのストリームを処理して、「stop」、「halt」、または特定のウォームワードの他の限定されたセットの出現を監視することができる。処理は、音声データのフレームを処理し、「stop」の発声出現が音声データ内に存在するかどうかを示す出力を生成するように訓練されたニューラルネットワークモデルなどの、ウォームキューモデル137A1のうちの1つを利用するウォームキューエンジン127Aによって実行され得る。「stop」の出現の検出に応答して、ウォームキューエンジン127Aは、音が鳴っているタイマーまたはアラームを停止するコマンドが実行されることを引き起こし得る。そのようなときに、ウォームキューエンジン127Aは、アシスタントデバイス110Aのカメラからの画像のストリームを連続的に(または少なくとも人感センサが存在を検出したときに)処理して、「stop」姿勢にある手の出現を監視することができる。処理は、ビジョンデータのフレームを処理し、手が「stop」姿勢で存在するかどうかを示す出力を生成するように訓練されたニューラルネットワークモデルなどのウォームキューモデル137A1のうちの1つを利用するウォームキューエンジン127Aによって実行され得る。「stop」姿勢の出現の検出に応答して、ウォームキューエンジン127Aは、音が鳴っているタイマーまたはアラームを停止するコマンドを実行させることができる。
別の例として、「volume up」、「volume down」、および「next」ウォームキューは、少なくとも、音楽が自動化アシスタント120Aを介してアシスタントデバイス110Aで聴覚的にレンダリングされているときにアクティブであるものとしてよい。たとえば、そのようなときに、ウォームキューエンジン127Aは、クライアントデバイス110Aの1つまたは複数のマイクロホンからの出力に基づく音声データフレームのストリームを連続的に処理することができる。処理は、ウォームキューモデル137A1のうちの第1のものを使用して「volume up」の出現を監視すること、ウォームキューモデル137A1のうちの第2のものを使用して「volume down」の出現を監視すること、およびウォームキューモデル137A1のうちの第3のものを使用して「next」の出現を監視することを含むことができる。「volume up」の出現の検出に応答して、ウォームキューエンジン127Aは、レンダリングされている音楽の音量を大きくするコマンドを実行させることができ、「volume down」の出現の検出に応答して、ウォームキューエンジンは音楽の音量を小さくするコマンドを実行させることができ、「volume down」の出現の検出に応答して、ウォームキューエンジンは現在のミュージックトラックの代わりに次のトラックがレンダリングされることを引き起こすコマンドを実行させることができる。
アシスタントクライアント120Aは、図1Aにおいて、音声活動検出器(VAD)エンジン128A1および1つまたは複数の関連付けられているオンデバイスVADモデル138A1も含む。VADエンジン128A1は、音声データにおける音声活動の出現を少なくとも選択的に監視し、出現を検出したことに応答して、1つまたは複数の機能がアシスタントクライアント120Aによって実行されることを引き起こすことができる。たとえば、VADエンジン128A1は、音声活動を検出したことに応答して、ウェイクキューエンジン121A1を起動させることができる。別の例として、VADエンジン128A1は、継続的リスニングモードで利用されてよく、これにより、音声データにおける音声活動の出現を監視し、出現を検出したことに応答して、ASRエンジン122A1を起動させることができる。VADエンジン128A1は、音声データ中に音声活動が存在するかどうかを決定する際にVADモデル138A1を利用して音声データを処理することができる。
特定のエンジンおよび対応するモデルが、アシスタントクライアント120Aに関してこれまでに説明されてきた。しかしながら、いくつかのエンジンが省かれ得ること、および/または追加のエンジンが含まれ得ることに留意されたい。また、アシスタントクライアント120Aは、その様々なオンデバイスエンジンおよび対応するモデルを通して、発声発話として提供される多くのアシスタントリクエストを含む、多くのアシスタントリクエストを完全に処理することができることに留意されたい。しかしながら、クライアントデバイス110Aは、処理能力に関して比較的制約されているので、アシスタントデバイス110Aにおいてローカルで完全には処理され得ない多くのアシスタントリクエストがいぜんとしてある。たとえば、NLUエンジン123A1および/または対応するNLUモデル133A1は、自動化アシスタントを介して利用可能なすべての利用可能なインテントおよび/またはパラメータのサブセットをカバーするのみであってよい。別の例として、フルフィルメントエンジン124A1および/または対応するフルフィルメントモデルは、利用可能なフルフィルメントのサブセットをカバーするのみであってよい。さらに別の例として、ASRエンジン122A1および対応するASRモデル132A1は、様々な発声発話を正しく文字起こしするのに十分なロバスト性および/または精度を有していない場合もある。
これらおよび他の考慮事項を考慮すると、クラウドベースのアシスタントコンポーネント140は、アシスタントデバイス110Aにおいて受信されたアシスタントリクエストの少なくとも一部の処理を実行する際にいぜんとして少なくとも選択的に利用され得る。クラウドベースの自動化アシスタントコンポーネント140は、アシスタントデバイス110Aのエンジンと対になるエンジンおよび/またはモデル(および/または追加もしくは代替形態)を含むことができる。しかしながら、クラウドベースの自動化アシスタントコンポーネント140は、クラウドの事実上無限のリソースを活用することができるので、1つまたは複数のクラウドベースの対応物は、アシスタントクライアント120Aのものよりもロバスト性および/または精度が高いものとしてよい。一例として、ローカルNLUエンジン123A1および/またはローカルフルフィルメントエンジン124A1によってサポートされていないアシスタントアクションの実行を求める発声発話に応答して、アシスタントクライアント120Aは、発声発話に対する音声データ、および/またはASRエンジン122A1によって生成されたそれのトランスクリプトを、クラウドベースの自動化アシスタントコンポーネント140に伝送することができる。クラウドベースの自動化アシスタントコンポーネント140(たとえば、そのNLUエンジンおよび/またはフルフィルメントエンジン)は、そのようなデータのよりロバストな処理を実行し、アシスタントアクションの解決および/または実行を可能にし得る。クラウドベースの自動化アシスタントコンポーネント140へのデータの伝送は、インターネットまたはプライベートWANなどの1つまたは複数のワイドエリアネットワーク(WAN)109を経由する。
第2のアシスタントデバイス110Bは、アシスタントクライアント120Bを含み、これは、オペレーティングシステムの上にあるスタンドアロンアプリケーションであるか、またはアシスタントデバイス110Bのオペレーティングシステムの全部または一部を形成することができる。アシスタントクライアント120Aと同様に、アシスタントクライアント120Bは、ウェイク/呼び出しエンジン121B1および1つまたは複数の関連付けられているオンデバイスウェイク/呼び出しモデル131B1、ASRエンジン122B1および1つまたは複数の関連付けられているオンデバイスASRモデル132B1、NLUエンジン123B1および1つまたは複数の関連付けられているオンデバイスNLUモデル133B1、フルフィルメントエンジン124B1および1つまたは複数の関連付けられているオンデバイスフルフィルメントモデル134B1、TTSエンジン125B1および1つまたは複数の関連付けられているオンデバイスTTSモデル135B1、認証エンジン126B1および1つまたは複数の関連付けられているオンデバイス認証モデル136B1、ウォームキューエンジン127B1および1つまたは複数の関連付けられているオンデバイスウォームキューモデル137B1、ならびにVADエンジン128B1および1つまたは複数の関連付けられているオンデバイスVADモデル138B1を含む。
アシスタントクライアント120Bのエンジンおよび/もしくはモデルの一部もしくは全部は、アシスタントクライアント120Aのものと同じであってよく、ならびに/またはエンジンおよび/もしくはモデルの一部もしくは全部は異なり得る。たとえば、ウェイクキューエンジン121B1は、画像内のウェイクキューを検出するための機能がなく、および/またはウェイクモデル131B1は、画像を処理してウェイクキューを検出するためのモデルがない場合があるが、ウェイクキューエンジン121A1はそのような機能を備え、ウェイクモデル131B1はそのようなモデルを含む。これは、たとえば、アシスタントデバイス110Aがカメラを含み、アシスタントデバイス110Bがカメラを含まないことに起因し得る。別の例として、ASRエンジン122B1によって利用されるASRモデル131B1は、ASRエンジン122A1によって利用されるASRモデル131A1と異なっていてよい。これは、たとえば、異なるモデルが、アシスタントデバイス110Aおよびアシスタントデバイス110Bの間の異なるプロセッサおよび/またはメモリ能力に対して最適化されることに起因し得る。
特定のエンジンおよび対応するモデルが、アシスタントクライアント120Bに関してこれまでに説明されてきた。しかしながら、いくつかのエンジンが省かれ得ること、および/または追加のエンジンが含まれ得ることに留意されたい。また、アシスタントクライアント120Bは、その様々なオンデバイスエンジンおよび対応するモデルを通して、発声発話として提供される多くのアシスタントリクエストを含む、多くのアシスタントリクエストを完全に処理することができることに留意されたい。しかしながら、クライアントデバイス110Bは、処理能力に関して比較的制約されているので、アシスタントデバイス110Bにおいてローカルで完全には処理され得ない多くのアシスタントリクエストがいぜんとしてある。 これらおよび他の考慮事項を考慮すると、クラウドベースのアシスタントコンポーネント140は、アシスタントデバイス110Bにおいて受信されたアシスタントリクエストの少なくとも一部の処理を実行する際にいぜんとして少なくとも選択的に利用され得る。
第3のアシスタントデバイス110Cは、アシスタントクライアント120Cを含み、これは、オペレーティングシステムの上にあるスタンドアロンアプリケーションであるか、またはアシスタントデバイス110Cのオペレーティングシステムの全部または一部を形成することができる。アシスタントクライアント120Aおよびアシスタントクライアント120Bと同様に、アシスタントクライアント120Cは、ウェイク/呼び出しエンジン121C1および1つまたは複数の関連付けられているオンデバイスウェイク/呼び出しモデル131C1、認証エンジン126C1および1つまたは複数の関連付けられているオンデバイス認証モデル136C1、ウォームキューエンジン127C1および1つまたは複数の関連付けられているオンデバイスウォームキューモデル137C1、ならびにVADエンジン128C1および1つまたは複数の関連付けられているオンデバイスVADモデル138C1を含む。アシスタントクライアント120Cのエンジンおよび/もしくはモデルの一部または全部は、アシスタントクライアント120Aおよび/もしくはアシスタントクライアント120Bのものと同じであってよく、ならびに/またはエンジンおよび/もしくはモデルの一部もしくは全部は異なり得る。
しかしながら、アシスタントクライアント120Aおよびアシスタントクライアント120Bとは異なり、アシスタントクライアント120Cは、任意のASRエンジンまたは関連付けられているモデル、任意のNLUエンジンまたは関連付けられているモデル、任意のフルフィルメントエンジンまたは関連付けられているモデル、および任意のTTSエンジンまたは関連付けられているモデルを含まないことに留意されたい。さらに、アシスタントクライアント120Bは、その様々なオンデバイスエンジンおよび対応するモデルを通して、いくつかのアシスタントリクエスト(すなわち、ウォームキューエンジン127C1によって検出されるウォームキューに適合するもの)のみを完全に処理することができ、発声発話として提供されウォームキューに適合しないものなどの多くのアシスタントリクエストを処理することができないことにも留意されたい。これらおよび他の考慮事項を考慮すると、クラウドベースのアシスタントコンポーネント140は、アシスタントデバイス110Cにおいて受信されたアシスタントリクエストの少なくとも一部の処理を実行する際にいぜんとして少なくとも選択的に利用され得る。
第4のアシスタントデバイス110Dは、アシスタントクライアント120Dを含み、これは、オペレーティングシステムの上にあるスタンドアロンアプリケーションであるか、またはアシスタントデバイス110Dのオペレーティングシステムの全部または一部を形成することができる。アシスタントクライアント120A、アシスタントクライアント120B、およびアシスタントクライアント120Cと同様に、アシスタントクライアント120Dは、ウェイク/呼び出しエンジン121D1および1つまたは複数の関連付けられているオンデバイスウェイク/呼び出しモデル131D1、認証エンジン126D1および1つまたは複数の関連付けられているオンデバイス認証モデル136D1、ウォームキューエンジン127D1および1つまたは複数の関連付けられているオンデバイスウォームキューモデル137D1、ならびにVADエンジン128D1および1つまたは複数の関連付けられているオンデバイスVADモデル138D1を含む。アシスタントクライアント120Cのエンジンおよび/もしくはモデルの一部または全部は、アシスタントクライアント120A、アシスタントクライアント120B、および/またはアシスタントクライアント120Cのものと同じであってよく、ならびに/またはエンジンおよび/もしくはモデルの一部もしくは全部は異なり得る。
しかしながら、アシスタントクライアント120Aおよびアシスタントクライアント120Bとは異なり、またアシスタントクライアント120Cと同様に、アシスタントクライアント120Dは、任意のASRエンジンまたは関連付けられているモデル、任意のNLUエンジンまたは関連付けられているモデル、任意のフルフィルメントエンジンまたは関連付けられているモデル、および任意のTTSエンジンまたは関連付けられているモデルを含まないことに留意されたい。さらに、アシスタントクライアント120Dは、その様々なオンデバイスエンジンおよび対応するモデルを通して、いくつかのアシスタントリクエスト(すなわち、ウォームキューエンジン127D1によって検出されるウォームキューに適合するもの)のみを完全に処理することができ、発声発話として提供されウォームキューに適合しないものなどの多くのアシスタントリクエストを処理することができないことにも留意されたい。これらおよび他の考慮事項を考慮すると、クラウドベースのアシスタントコンポーネント140は、アシスタントデバイス110Dにおいて受信されたアシスタントリクエストの少なくとも一部の処理を実行する際にいぜんとして少なくとも選択的に利用され得る。
次に図1B1、図1B2、図1B3、図1C、および図1Dを参照すると、アシスタントデバイスグループの異なる非限定的な例が、アシスタントデバイスグループが生成されたことに応答して実装され得る適応の異なる非限定的な例とともに例示されている。適応の各々を通じて、グループ化されたアシスタントデバイスは、様々なアシスタントリクエストを処理する際に集団的に利用されるものとしてよく、集団的な利用を通じて、グループのアシスタントデバイスのうちのいずれか1つが適応の前に個別に実行し得る場合に比べて高いロバスト性および/または精度でそれらの様々なアシスタントリクエストの処理を実行することができる。この結果、本明細書において説明されているもののような様々な技術的利点が得られる。
図1B1、図1B2、図1B3、図1C、および図1Dにおいて、図1Aと同じ参照番号を有する、アシスタントクライアントのエンジンおよびモデルは、図1Aに関して適応されていない。たとえば、図1B1、図1B2、および1B3において、アシスタントクライアントデバイス110Cおよび110Dは、図1B1、図1B2、および図1B3のグループ101Bに含まれないので、アシスタントクライアントデバイス110Cおよび110Dのエンジンおよびモデルは、適応されていない。しかしながら、図1B1、図1B2、図1B3、図1C、および図1Dにおいて、図1Aのものとは異なる参照番号(すなわち、「1」の代わりに「2」、「3」、または「4」で終わる)を有するアシスタントクライアントの、エンジンおよびモデルは、それが図1における対応物に関して適応されていることを示す。さらに、一方の図では「2」で終わり、他方の図では「3」で終わる参照番号を有するエンジンまたはモデルは、エンジンまたはモデルに対する異なる適応が図と図との間で行われていることを意味する。同様に、図中「4」で終わる参照番号を有するエンジンまたはモデルは、エンジンまたはモデルに対する適応がその図において参照番号が「2」または「3」で終わる図にある場合とは異なることを意味する。
最初に図1B1を参照すると、デバイスグループ101Bが作られており、アシスタントデバイス110Aおよび110Bがデバイスグループ101Bに含まれる。いくつかの実装形態において、デバイスグループ101Bは、アシスタントデバイス110Aおよび110Bをグループ化したいことを明示的に示すユーザインターフェース入力に応答して生成され得る。一例として、ユーザは、アシスタントデバイス110A~Dのいずれか1つに対して「group [label for assistant device 110A] and [label for assistant device 110B]」という発声発話を提供することができる。そのような発声発話は、それぞれのアシスタントデバイスおよび/またはクラウドベースのアシスタントコンポーネント140によって処理され、アシスタントデバイス110Aおよび110Bをグループ化するリクエストとして解釈され、グループ101Bはそのような解釈に応答して生成され得る。別の例として、アシスタントデバイス110A~Dの登録ユーザは、アシスタントデバイス110A~Dの設定を構成することを可能にするアプリケーションでタッチ入力を提供することができる。それらのタッチ入力は、アシスタントデバイス110Aおよび110Bがグループ化されるべきであることを明示的に指定することができ、グループ101Bは、それに応答して生成され得る。さらに別の例として、デバイスグループ101Bを自動的に生成する際に以下で説明されている例示的な技術の1つが、その代わりに利用され、デバイスグループ101Bが生成されるべきであることを決定することができるが、デバイスグループ101Bの生成を明示的に承認するユーザ入力は、デバイスグループ101Bを生成する前に要求され得る。たとえば、デバイスグループ101Bが生成されるべきであることを示すプロンプトが、アシスタントデバイス110A~Dのうちの1つまたは複数でレンダリングされるものとしてよく、デバイスグループ101Bは、プロンプトに応答して肯定的ユーザインターフェース入力が受信された場合にのみ(および任意選択でそのユーザインターフェース入力が登録ユーザから来ることを検証された場合に)実際に生成される。
いくつかの実装形態において、デバイスグループ101Bは、その代わりに自動的に生成され得る。それらの実装形態のうちのいくつかにおいて、デバイスグループ101Bの生成を示すユーザインターフェース出力が、アシスタントデバイス110A~Dの1つまたは複数でレンダリングされて、グループの対応するユーザに通知することができ、および/または登録ユーザがユーザインターフェース入力を介してデバイスグループ101Bの自動生成をオーバーライドすることができる。しかしながら、デバイスグループ101Bが自動的に生成されるときに、デバイスグループ101Bが生成され、特定のデバイスグループ101Bを作成したいことを明示的に示すユーザインターフェース入力を最初に必要とすることなく、対応する適応が行われる(時間的に早い段階での入力は、グループを一般的に作成する承認を示し得るが)。いくつかの実装形態において、デバイスグループ101Bは、アシスタントデバイス110Aおよび110Bが互いに関して1つまたは複数の近接条件を満たすことを決定したことに応答して自動的に生成され得る。たとえば、近接条件は、アシスタントデバイス110Aおよび110Bが、デバイストポロジーにおいて、同じ構造(たとえば、特定の家、特定の別荘、特定のオフィス)および/または同じ部屋(たとえば、キッチン、リビングルーム、ダイニングルーム)もしくは同じ構造内の他のエリアに割り当てられることを含み得る。別の例として、近接条件は、アシスタントデバイス110Aおよび110Bの各々からのセンサ信号が、それらが互いに位置的に近位にあることを示すことを含み得る。たとえば、アシスタントデバイス110Aおよび110Bが両方とも一貫して(たとえば、時間の70%または他の閾値を超えて)同じ時間またはそれに近い時間(たとえば、1秒以内)にウェイクワードの出現を検出する場合、これは、それらが互いに位置的に近位にあることを示し得る。また、たとえば、アシスタントデバイス110Aおよび110Bの一方が信号(たとえば、超音波)を発し、アシスタントデバイス110Aおよび110Bの他方が発せられた信号を検出しようと試みることができる。アシスタントデバイス110Aおよび110Bの他方が、発せられた信号を、任意選択で閾値の強さにより検出する場合、それらが互いに位置的に近位にあることを示し得る。時間的な近接性を決定し、および/またはデバイスグループを自動的に生成するための追加の、および/または代替的な技術が利用されてよい。
グループ101Bがどのように生成されたかに関係なく、図1B1は、アシスタントデバイス110Aおよび110Bがグループ101Bに含まれていることに応答してアシスタントデバイス110Aおよび110Bに対して行われ得る適応の一例を示している。様々な実装形態において、アシスタントクライアント120Aおよび120Bの一方または両方は、行われるべき適応を決定し、それらの適応を引き起こすことができる。他の実装形態では、クラウドベースのアシスタントコンポーネント140の1つまたは複数のエンジンが、それに加えて、または代替的に、行われるべき適応を決定し、それらの適応を引き起こすことができる。本明細書において説明されているように、行われるべき適応は、アシスタントクライアント120Aおよび120Bの両方の処理能力を考慮することに基づき決定され得る。たとえば、適応は、アシスタントデバイスの各々の個別の処理能力がエンジンおよび/またはモデルがアシスタントにおいてローカルで記憶され利用されるのに十分であることを確実にしつつ集団的な処理能力を可能な限り利用しようとすることができる。さらに、行われるべき適応は、また、グループのアシスタントデバイスおよび/またはエコシステムの他の非グループ化アシスタントデバイスの実際の使用に関係するメトリックを反映する利用データに基づき決定され得る。たとえば、処理能力が、より大きいがより正確なウェイクキューモデル、またはより大きいがよりロバストなウォームキューモデルのいずれかを可能にするが、両方ともではない場合に、利用データが2つのオプションのうちの一方を選択するために利用され得る。たとえば、利用データが、ウォームワードの稀な使用(または使用すらないこと)を反映している場合、および/またはウェイクワードの検出がしばしば閾値をかろうじて超える場合、および/またはウェイクワードに対する偽陰性がしばしば発生する場合、より大きいがより正確なウェイクキューモデルが選択され得る。他方で、利用データが、ウォームワードの頻繁な使用、および/またはウェイクワードの検出が一貫して閾値を超えていること、および/またはウェイクワードに対する偽陰性が稀であることを反映している場合、より大きいがより正確なウォームキューモデルが選択され得る。そのような利用データの考慮は、図1B1、図1B2、または図1B3の適応が選択されるかどうかを決定するものあり得る(図1B1、図1B2、または図1B3は各々、同じグループ101Bに対して異なる適応を示している)。
図1B1において、フルフィルメントエンジン124A1およびフルフィルメントモデル134A1およびTTSエンジン125A1およびTTSモデル135A1がアシスタントデバイス110Aからパージされている。さらに、アシスタントデバイス110Aは、異なるASRエンジン122A2および異なるオンデバイスASRモデル132A2、さらには異なるNLUエンジン123A2および異なるオンデバイスNLUモデル133A2を有している。異なるエンジンは、アシスタントデバイス110Aにおいて、クラウドベースのアシスタントコンポーネント140とのインタラクションを介してアクセス可能であるローカルモデルリポジトリ150から、ダウンロードされ得る。図1B1において、ウェイクキューエンジン121B1、ASRエンジン122B1、および認証エンジン126B1、ならびにそれらの対応するモデル131B1、133B1、および136B1は、アシスタントデバイス110Bからすでにパージされている。さらに、アシスタントデバイス110Bは、異なるNLUエンジン123B2および異なるオンデバイスNLUモデル133B2、異なるフルフィルメントエンジン124B2およびフルフィルメントモデル133B2、ならびに異なるウォームワードエンジン127B2およびウォームワードモデル137B2を有する。異なるエンジンは、アシスタントクライアント110Bにおいて、クラウドベースのアシスタントコンポーネント140とのインタラクションを介してアクセス可能であるローカルモデルリポジトリ150から、ダウンロードされ得る。
アシスタントデバイス110AのASRエンジン122A2およびASRモデル132A2は、ASRエンジン122A1およびASRモデル132A1に比べてロバスト性および/または精度が高いが、多くのディスクスペースを占有し、多くのメモリを利用し、および/または大きなプロセッサリソースを必要とし得る。たとえば、ASRモデル132A1は、単一パスモデルのみを含むことができ、ASRモデル132A2は、2パスモデルを含むことができる。
同様に、NLUエンジン123A2およびNLUモデル133A2は、NLUエンジン123A1およびNLUモデル133A1に比べてロバスト性および/または精度が高いが、多くのディスクスペースを占有し、多くのメモリを利用し、および/または多くのプロセッサリソースを必要とし得る。たとえば、NLUモデル133A1は、「lighting control」などの第1の分類に対するインテントおよびパラメータのみをすでに含んでいるものとしてよいが、NLUモデル133A2は、「lighting control」だけでなく「thermostat control」、「smart lock control」、および「reminders」に対するインテントを含み得る。
したがって、ASRエンジン122A2、ASRモデル132A2、NLUエンジン123A2、およびNLUモデル133A2は、置き換えられた対応物に関して改善されている。しかしながら、アシスタントデバイス110Aの処理能力は、フルフィルメントエンジン124A1およびフルフィルメントモデル134A1およびTTSエンジン125A1およびTTSモデル135A1を最初にパージすることなくASRエンジン122A2、ASRモデル132A2、NLUエンジン123A2およびNLUモデル133A2を記憶し、および/または使用することを妨げることができることに留意されたい。アシスタントデバイス110Bに対する補完的な適応およびアシスタントデバイス110Bとの協調処理なしで、アシスタントデバイス110Aからそのようなモデルを単純にパージすると、結果として、アシスタントクライアント120Aは、様々なアシスタントリクエストを完全にローカルで(すなわち、1つまたは複数のクラウドベースのアシスタントコンポーネント140の利用を必要とすることなく)処理する能力を欠くことになる。
したがって、アシスタントデバイス110Bに対して補完的な適応が行われ、適応の後にアシスタントデバイス110Aと110Bとの間の協調処理が行われる。アシスタントデバイス110Bに対するNLUエンジン123B2およびNLUモデル133B2は、NLUエンジン123B1およびNLUモデル133B1に比べてロバスト性および/または精度が高いが、多くのディスクスペースを占有し、多くのメモリを利用し、および/または大きなプロセッサリソースを必要とし得る。たとえば、NLUモデル133B1は、「lighting control」などの第1の分類に対するインテントおよびパラメータをすでに含んでいただけでもよい。しかしながら、NLUモデル133B2は、より多くのインテントおよびパラメータをカバーし得る。NLUモデル133B2によってカバーされるインテントおよびパラメータは、アシスタントクライアント120AのNLUモデル133A2によってすでにカバーされていないインテントに制限され得ることに留意されたい。これは、アシスタントクライアント120Aと120Bとの間の機能性の重複を防止することができ、アシスタントクライアント120Aおよび120Bがアシスタントリクエストを協調的に処理するときの集団的な能力を拡張する。
同様に、フルフィルメントエンジン124B2およびフルフィルメントモデル134B2は、フルフィルメントエンジン124B1およびフルフィルメントモデル124B1に比べてロバスト性および/または精度が高いが、多くのディスクスペースを占有し、多くのメモリを利用し、および/または多くのプロセッサリソースを必要とし得る。たとえば、フルフィルメントモデル124B1は、NLUモデル133B1の単一の分類に対するフルフィルメント能力をすでに備えているだけであり得るが、フルフィルメントモデル124B2は、NLUモデル133B2のすべての分類に対する、さらにはNLUモデル133A2に対する、フルフィルメント能力を含むことができる。
したがって、フルフィルメントエンジン124B2、フルフィルメントモデル134B2、NLUエンジン123B2、およびNLUモデル133B2は、置き換えられた対応物に関して改善されている。しかしながら、アシスタントデバイス110Bの処理能力は、アシスタントデバイス110Bからパージ済みモデルおよびパージ済みエンジンを最初にパージすることなく、フルフィルメントエンジン124B2、フルフィルメントモデル134B2、NLUエンジン123B2、およびNLUモデル133B2を記憶し、および/または使用することを妨げ得る。アシスタントデバイス110Aに対する補完的な適応およびアシスタントデバイス110Aとの協調処理なしで、アシスタントデバイス110Bからそのようなモデルを単純にパージすると、結果として、アシスタントクライアント120Bは、様々なアシスタントリクエストを完全にローカルで処理する能力を欠くことになる。
クライアントデバイス110Bのウォームキューエンジン127B2およびウォームキューモデル137B2は、ウォームキューエンジン127B1およびウォームキューモデル127B1に比べて追加のディスクスペースを占有せず、多くのメモリを利用せず、大きなプロセッサ資源を必要としない。たとえば、これらが必要とする処理能力は、同じであるか、または小さくてもよい。しかしながら、ウォームキューエンジン127B2およびウォームキューモデル137B2は、ウォームキューエンジン127B1およびウォームキューモデル127B1によってカバーされるものに加えた--およびアシスタントクライアント120Aのウォームキューエンジン127A1およびウォームキューモデル127A1によってカバーされるものに加えた--ウォームキューをカバーするものである。
図1B1の構成において、アシスタントクライアント120Aは、ウェイクキューの監視、ASRの実行、分類の第1のセットに対するNLUの実行、認証の実行、ウォームキューの第1のセットの監視、およびVADの実行の処理ロールを割り当てられ得る。アシスタントクライアント120Bは、分類の第2のセットに対するNLUの実行、フルフィルメントの実行、TTSの実行、およびウォームキューの第2のセットの監視の処理ロールを割り当てられ得る。処理ロールは、アシスタントクライアント120Aの各々において伝達され、記憶されるものとしてよく、様々なアシスタントリクエストの処理の調整は、アシスタントクライアント120Aおよび120Bの一方または両方によって実行され得る。
図1B1の適応を使用するアシスタントリクエストの協調処理の一例として、「OK Assistant, turn on the kitchen lights」という発声発話が提供され、そのアシスタントデバイス120Aが処理を調整するリードデバイスであると仮定する。アシスタントクライアント120Aのウェイクキューエンジン121A1は、ウェイクキュー「OK Assistant」の出現を検出することができる。これに応答して、ウェイクキューエンジン121A1は、ASRエンジン122A2に、ウェイクキューに続くキャプチャされた音声データを処理させることができる。ウェイクキューエンジン121A1は、任意選択で、ローカルにおいて、アシスタントクライアント120Bがアシスタントリクエストの特定の処理をすぐに実行できるようにするために低電力状態から高電力状態に移行させるコマンドをアシスタントデバイス110Bに伝送することもできる。ASRエンジン122A2によって処理される音声データは、アシスタントデバイス110Aのマイクロホンによってキャプチャされた音声データ、および/またはアシスタントデバイス110Bのマイクロホンによってキャプチャされた音声データであり得る。たとえば、アシスタントデバイス110Bに伝送されて、より高い電力状態に移行させるコマンドは、ローカルで音声データをキャプチャし、任意選択でそのような音声データをアシスタントクライアント120Aに伝送することを行わせることもできる。いくつかの実装形態において、アシスタントクライアント120Aは、音声データのそれぞれのインスタンスの特性の解析に基づき、その受信された音声データ、またはその代わりにローカルでキャプチャされた音声データを、使用するかどうかを決定することができる。たとえば、音声データのインスタンスは、より低い信号対雑音比を有しおよび/またはより高い音量で発声発話をキャプチャするインスタンスに基づき、別のインスタンスを超えて利用され得る。
ASRエンジン122A2によって生成されたトランスクリプトは、分類の第1のセットに対するトランスクリプト上でNLUを実行するためにNLUエンジン123A2に伝達され、分類の第2のセットに対するトランスクリプト上でNLUエンジン123B2にNLUを実行させるためにアシスタントクライアント120Bにも伝達され得る。NLUエンジン123B2によって実行されたNLUの結果は、アシスタントクライアント120Aに伝送され、それらの結果およびNLUエンジン123A2からの結果に基づき、どの結果を、もしあれば、利用するかを決定し得る。たとえば、アシスタントクライアント120Aは、最も高い確率のインテントを有する結果を、その確率がある閾値を満たす限り、利用することができる。たとえば、「turn on」というインテントと、「kitchen lights」に対する識別子を指定するパラメータとを含む結果が利用され得る。確率が閾値を満たさない場合に、クラウドベースのアシスタントコンポーネント140のNLUエンジンは、任意選択で、NLUを実行するために利用され得ることに留意されたい。アシスタントクライアント120Aは、最も高い確率を有するNLU結果をアシスタントクライアント120Bに伝送することができる。アシスタントクライアント120Bのフルフィルメントエンジン124B2は、それらのNLU結果を利用して、「kitchen lights」を「on」状態に遷移させるコマンドを「kitchen lights」に伝送することを決定し、そのようなコマンドをLAN108上で伝送することができる。任意選択で、フルフィルメントエンジン124B2は、TTSエンジン125B1を利用して、「turning on the kitchen lights」の実行を確認する合成音声を生成することができる。そのような状況において、合成音声は、アシスタントクライアント120Bによってアシスタントデバイス110Bでレンダリングされ、および/またはアシスタントクライアント120Aによるレンダリングのためにアシスタントデバイス110Aに伝送され得る。
アシスタントリクエストの協調処理の別の例として、アシスタントクライアント120Aが、ちょうど終了したばかりのアシスタントクライアント120Aのローカルタイマーのアラームをレンダリングしていると仮定する。さらに、ウォームキューエンジン127B2によって監視されているウォームキューは「stop」を含み、ウォームキューエンジン127A1によって監視されているウォームキューは「stop」を含まないと仮定する。最後に、アラームがレンダリングされているときに、「stop」という発声発話が提供され、アシスタントクライアント120Bのマイクロホンを介して検出された音声データ内にキャプチャされたと仮定する。ウォームワードエンジン127B2は、音声データを処理し、単語「stop」の出現を決定することができる。さらに、ウォームワードエンジン127B2は、単語stopの出現が、音が鳴っているタイマーまたはアラームを解除するコマンドに直接的にマッピングされていると決定することができる。そのコマンドは、アシスタントクライアント120Bによってアシスタントクライアント120Aに伝送され、それによりアシスタントクライアント120Aにそのコマンドを実行させ、音が鳴っているタイマーまたはアラームを解除することができる。いくつかの実装形態において、ウォームワードエンジン127B2は、いくつかの状況において「stop」の出現を監視するのみであってよい。それらの実装形態において、アシスタントクライアント120Aは、アラームのレンダリングに応答して、またはそれを予想して、ウォームワードエンジン127B2に「stop」の出現を監視させるコマンドを伝送することができる。このコマンドは、特定の時間期間、または代替的に、監視停止コマンドが送信されるまで、監視を行わせることができる。
次に、図1B2を参照すると、同じグループ101Bが例示されている。図1B2では、ASRエンジン121A1およびASRモデル132A1がASRエンジン122A2およびASRモデル132A2によって置き換えられていないことを除き、図1B1と同じ適応がなされている。むしろ、ASRエンジン121A1およびASRモデル132A1が残り、追加のASRエンジン122A3および追加のASRモデル132A3が提供される。
ASRエンジン121A1およびASRモデル132A1は、第1の言語(たとえば、英語)の発話の音声認識用であり、追加のASRエンジン122A3および追加のASRモデル132A3は、第2の言語(たとえば、スペイン語)の発話の音声認識用であるものとしてよい。図1B1のASRエンジン121A2およびASRモデル132A2は、また、第1の言語用であり、ASRエンジン121A1およびASRモデル132A1に比べてロバスト性および/または精度が高いものとしてよい。しかしながら、アシスタントクライアント120Aの処理能力は、ASRエンジン121A2およびASRモデル132A2が、ASRエンジン122A3および追加のASRモデル132A3とともにローカルに記憶されることを妨げ得る。それでも、この処理能力は、ASRエンジン121A1とASRモデル132A1および追加のASRエンジン122A3と追加のASRモデル132A3の両方を記憶し、利用することを可能にする。
図1B1のASRエンジン121A2およびASRモデル132A2の代わりに、ASRエンジン121A1とASRモデル132A1および追加のASRエンジン122A3および追加のASRモデル132A3の両方をローカルに記憶する決定は、図1B2の例において、アシスタントデバイス110Aおよび110B(および/またはアシスタントデバイス110Cおよび110D)で提供される発声発話が、第1言語の発声発話および第2言語の発声発話の両方を含むことを示す利用統計に基づくものとしてよい。図1B1の例では、利用統計は、第1言語の発声発話のみを示し、その結果、図1B1において、よりロバスト性の高いASRエンジン121A2およびASRモデル132A2が選択され得る。
次に図1B3を参照すると、同じグループ101Bが再び例示されている。図1B3において、(1)ASRエンジン121A1およびASRモデル132A1が、ASRエンジン122A2およびASRモデル132A2で置き換えられる代わりに、ASRエンジン122A4およびASRモデル132A4で置き換えられること、(2)アシスタントデバイス110B上にウォームキューエンジンまたはウォームキューモデルが存在していないこと、および(3)ASRエンジン122B4およびASRモデル132B4がアシスタントデバイス110B上にローカルで記憶され、利用されることを除き、図1B1の場合と同じ適応がなされている。
ASRエンジン122A4およびASRモデル132A4は、音声認識の第1の部分を実行するために利用され、ASRエンジン122B4およびASRモデル132B4は、音声認識の第2の部分を実行するために利用され得る。たとえば、ASRエンジン122A4は、ASRモデル132A4を利用して出力を生成し、出力はアシスタントクライアント120Bに伝送され、ASRエンジン122B4は、音声の認識を生成する際に出力を処理することができる。1つの特定の例として、出力は、候補認識を表すグラフであり、ASRエンジン122B4は、音声の認識を生成する際にグラフ上でビーム検索を実行することができる。別の特定の例として、ASRモデル132A4は、エンドツーエンド音声認識モデルの初期/下流部分(すなわち、第1のニューラルネットワークレイヤ)であり得、ASRモデル132B4は、エンドツーエンド音声認識モデルの後期/上流部分(すなわち、第2のニューラルネットワークレイヤ)であり得る。そのような例では、エンドツーエンドモデルは、2つのアシスタントデバイス110Aと110Bとの間で分割され、出力は処理後に初期部分の最後のレイヤ(たとえば、埋め込み)の状態であってよい。さらに別の例として、ASRモデル132A4は音響モデルであり、ASRモデル132B4は言語モデルであってよい。そのような例では、出力は、音素のシーケンス、または音素に対する確率分布のシーケンスを示すことができ、ASRエンジン122B4は、そのシーケンスに対応するトランスクリプト/認識を選択するために言語モデルを利用することができる。
協調して動作するASRエンジン122A4、ASRモデル132A4、ASRエンジン122B4、およびASRモデル132B4のロバスト性および/または精度は、図1B1のASRエンジン122A2およびASRモデル132A2のそれを上回ることができる。さらに、アシスタントクライアント120Aおよびアシスタントクライアント120Bの処理能力は、ASRモデル132A4および132B4がそれらのデバイスのいずれかに単独で記憶され、利用されることを妨げ得る。しかしながら、処理能力は、本明細書において説明されているように、モデルの分割およびASRエンジン122A4と122B4との間の処理ロールの分割を可能にし得る。アシスタントデバイス110B上で、ウォームキューエンジンおよびウォームキューモデルのパージで、ASRエンジン122B4およびASRモデル132B4の記憶および利用が可能にされ得ることに留意されたい。別の言い方をすれば、このアシスタントデバイス110Bの処理能力では、図1B3に例示されている他のエンジンおよびモデルとともに、ウォームキューエンジンおよびウォームキューモデルが記憶され、および/または利用されることを可能にしないであろう。
図1B1のASRエンジン121A2およびASRモデル132A2の代わりに、ASRエンジン122A4、ASRモデル132A4、ASRエンジン122B4、およびASRモデル132B4をローカルに記憶する決定は、図1B3の例において、アシスタントデバイス110Aおよび110B(および/もしくはアシスタントデバイス110Cおよび110D)での音声認識はしばしば信頼度が低くならびに/またはしばしば不正確であることを示す利用統計に基づくものとしてよい。たとえば、利用統計は、認識に対する信頼度メトリックが平均(たとえば、ユーザの集団に基づく平均)未満であること、および/または認識がユーザによって(たとえば、トランスクリプトの表示の編集を通じて)しばしば訂正されることを示し得る。
次に図1Cを参照すると、デバイスグループ101Cが作られており、アシスタントデバイス110A、110B、および110Cがデバイスグループ101Cに含まれる。いくつかの実装形態において、デバイスグループ101Cは、アシスタントデバイス110A、110B、および110Cをグループ化したいことを明示的に示すユーザインターフェース入力に応答して生成され得る。たとえば、ユーザインターフェース入力は、デバイスグループ101Cを一から作成すること、または代替的に、アシスタントデバイス110Cをデバイスグループ101B(図1B1、図1B2、および図1B3)に追加し、それによって修正済みグループ101Cを作成したいことを示すことができる。いくつかの実装形態において、デバイスグループ101Cは、代わりに自動的に生成され得る。たとえば、デバイスグループ101B(図1B1、図1B2、および図1B3)は、アシスタントデバイス110Aおよび110Bが近接近していることを決定することに基づき以前に生成されている可能性があり、デバイスグループ101Bの作成後に、アシスタントデバイス110Cは、デバイス110Aおよび110Bの近位に来るようにユーザによって移動され得る。その結果、アシスタントデバイス110Cは、デバイスグループ101Bに自動的に追加され、それによって、修正済みグループ101Cが作成され得る。
グループ101Cがどのように生成されたかに関係なく、図1Cは、アシスタントデバイス110A、110B、および110Cがグループ101Cに含まれていることに応答してアシスタントデバイス110A、110B、および110Cに対して行われ得る適応の一例を示している。
図1Cにおいて、アシスタントデバイス110Bは、図1B3の場合と同じ適応を有する。さらに、アシスタントデバイス110Aは、(1)認証エンジン126A1およびVADエンジン128A1、ならびにそれらの対応するモデル13A1および138A1がパージされていること、(2)ウェイクキューエンジン121A1およびウェイクキューモデル131A1がウェイクキューエンジン121A2およびウェイクキューモデル131A2で置き換えられていること、および(3)ウォームキューエンジンまたはウォームキューモデルがアシスタンデバイス110B上に存在していないことを除き、図1B3の場合と同じ適応を有する。アシスタントデバイス110C上に記憶されているモデルおよびエンジンは適応されていない。しかしながら、アシスタントクライアント120Cは、アシスタントクライアント120Aおよびアシスタントクライアント120Bとの、アシスタントリクエストの協調処理を可能にするように適応され得る。
図1Cにおいて、認証エンジン126A1およびVADエンジン128A1は、対応物がアシスタントデバイス110C上にすでに存在するのでアシスタントデバイス110Aからパージされている。いくつかの実装形態において、認証エンジン126A1および/またはVADエンジン128A1は、それらのコンポーネントからのいくつかのまたはすべてのデータが、アシスタントデバイス110C上にすでに存在するそれらの対応物とマージされた後にのみ、パージされ得る。一例として、認証エンジン126A1は、第1のユーザおよび第2のユーザに対する音声埋め込みを記憶することができるが、認証エンジン126C1は、第1のユーザに対する音声埋め込みのみを記憶することができる。認証エンジン126A1をパージする前に、第2のユーザに対する音声埋め込みが、認証エンジン126C1にローカルで伝送され、それにより、そのような音声埋め込みが認証エンジン126C1によって利用され、適応前能力が適応後に維持されることを確実にすることができる。別の例として、認証エンジン126A1は、各々第2のユーザの発話をキャプチャし、第2のユーザに対する音声埋め込みを生成するために利用された音声データのインスタンスを記憶することができ、認証エンジン126C1は、第2のユーザに対する音声埋め込みを欠いていてもよい。認証エンジン126A1をパージする前に、音声データのインスタンスは、認証エンジン126A1から認証エンジン126C1へローカルで伝送され、それにより音声データのインスタンスは、オンデバイス認証モデル136C1を利用して、第2のユーザに対して、音声埋め込みを生成する際に認証エンジン126C1によって利用され、適応前能力が適応後に維持されることを確実にすることができる。さらに、ウェイクキューエンジン121A1およびウェイクキューモデル131A1は、より小さなストレージサイズのウェイクキューエンジン121A2およびウェイクキューモデル131A2で置き換えられている。たとえば、ウェイクキューエンジン121A1およびウェイクキューモデル131A1は、発声ウェイクキューと画像ベースのウェイクキューの両方の検出を可能にしたが、ウェイクキューエンジン121A2およびウェイクキューモデル131A2は画像ベースのウェイクキューのみの検出を可能にする。任意選択で、ウェイクキューエンジン121A1およびウェイクキューモデル131A1の画像ベースのウェイクキュー部分からの個人化、訓練インスタンス、および/または他の設定は、ウェイクキューエンジン121A1およびウェイクキューモデル131A1のパージ前にウェイクキューエンジン121A2およびウェイクキューモデル131A2とマージされるか、または他の何らかの形で共有され得る。ウェイクキューエンジン121C1およびウェイクキューモデル131C1は、発声ウェイクキューのみを検出することを可能にする。したがって、ウェイクキューエンジン121A2およびウェイクキューモデル131A2、ならびにウェイクキューエンジン121C1およびウェイクキューモデル131C1は、発声ウェイクキューおよび画像ベースのウェイクキューの両方の検出を集団的に可能にする。任意選択で、ウェイクキューエンジン121A1およびウェイクキューモデル131A1の発声キュー部分からの個人化および/または他の設定は、ウェイクキューエンジン121C1およびウェイクキューモデル131C1とマージするか、または他の何らかの形で共有するためにクライアントデバイス110Cに伝送され得る。
さらに、ウェイクキューエンジン121A1およびウェイクキューモデル131A1を、より小さなストレージサイズのウェイクキューエンジン121A2およびウェイクキューモデル131A2で置き換えることで余分なストレージスペースが得られる。その余分なストレージスペース、さらには認証エンジン126A1およびVADエンジン128A1、ならびにそれらの対応するモデル13A1および138A1をパージすることによってもたらされる余分なストレージスペースは、(置き換えたウォームキューエンジン127A1およびウォームキューモデルよりも集団的に大きい)ウォームキューエンジン127A2およびウォームキューモデル137A2用のスペースを提供する。ウォームキューエンジン127A2およびウォームキューモデル137A2は、ウォームキューエンジン127C1およびウォームキューモデル137C1を利用して監視されるものとは異なるウォームキューを監視するために利用され得る。
図1Cの適応を使用するアシスタントリクエストの協調処理の一例として、「OK Assistant, turn on the kitchen lights」という発声発話が提供され、そのアシスタントデバイス120Aが処理を調整するリードデバイスであると仮定する。アシスタントクライアント110Cのウェイクキューエンジン121C1は、ウェイクキュー「OK Assistant」の出現を検出することができる。これに応答して、ウェイクキューエンジン121C1は、アシスタントデバイス110Aおよび110Bに、ASRエンジン122A4および122B4にウェイクキューに続くキャプチャされた音声データを協調的に処理することを行わせるコマンドを伝送することができる。処理される音声データは、アシスタントデバイス110Cのマイクロホンによってキャプチャされた音声データ、および/またはアシスタントデバイス110Bのマイクロホンによっておよび/またはアシスタントデバイス110Cによってキャプチャされた音声データであってよい。
ASRエンジン122B4によって生成されたトランスクリプトは、分類の第2のセットに対するトランスクリプト上でNLUを実行するためにNLUエンジン123B2に伝達され、分類の第1のセットに対するトランスクリプト上でNLUエンジン123A2にNLUを実行させるためにアシスタントクライアント120Aにも伝達され得る。NLUエンジン123B2によって実行されたNLUの結果は、アシスタントクライアント120Aに伝送され、それらの結果およびNLUエンジン123A2からの結果に基づき、どの結果を、もしあれば、利用するかを決定し得る。アシスタントクライアント120Aは、最も高い確率を有するNLU結果をアシスタントクライアント120Bに伝送することができる。アシスタントクライアント120Bのフルフィルメントエンジン124B2は、それらのNLU結果を利用して、「kitchen lights」を「on」状態に遷移させるコマンドを「kitchen lights」に伝送することを決定し、そのようなコマンドをLAN108上で伝送することができる。任意選択で、フルフィルメントエンジン124B2は、TTSエンジン125B1を利用して、「turning on the kitchen lights」の実行を確認する合成音声を生成することができる。そのような状況において、合成音声は、アシスタントクライアント120Bによってアシスタントデバイス110Bでレンダリングされ、アシスタントクライアント120Aによるレンダリングのためにアシスタントデバイス110Aに伝送され、および/またはアシスタントクライアント120Cによるレンダリングのためにアシスタントデバイス110Cに伝送され得る。
次に図1Dを参照すると、デバイスグループ101Dが作られており、アシスタントデバイス110Cおよび110Dがデバイスグループ101Dに含まれる。いくつかの実装形態において、デバイスグループ101Dは、アシスタントデバイス110Cおよび110Dをグループ化したいことを明示的に示すユーザインターフェース入力に応答して生成され得る。いくつかの実装形態において、デバイスグループ101Dは、代わりに自動的に生成され得る。
グループ101Dがどのように生成されたかに関係なく、図1Dは、アシスタントデバイス110Cおよび110Dがグループ101Dに含まれていることに応答してアシスタントデバイス110Cおよび110Dに対して行われ得る適応の一例を示している。
図1Dにおいて、アシスタントデバイス110Cのウェイクキューエンジン121C1およびウェイクキューモデル131C1は、ウェイクキューエンジン121C2およびウェイクキューモデル131C2で置き換えられる。さらに、認証エンジン126D1および認証モデル136D1、ならびにVADエンジン128D1およびVADモデル138D2は、アシスタントデバイス110Dからパージされる。なおもさらに、アシスタントデバイス110Dのウェイクキューエンジン121D1およびウェイクキューモデル131D1は、ウェイクキューエンジン121D2およびウェイクキューモデル131D2で置き換えられ、ウォームキューエンジン127D1およびウォームキューモデル137D1は、ウォームキューエンジン127D2およびウォームキューモデル137D2で置き換えられる。
前のウェイクキューエンジン121C1およびウェイクキューモデル131C1であれば、「Hey Assistant」および「OK Assistant」などの1つまたは複数のウェイクワードの第1のセットの検出にのみ利用され得た。他方で、ウェイクキューエンジン121C2およびウェイクキューモデル131C2は、「Hey Computer」および「OK Computer」などの1つまたは複数のウェイクワードの代替的な第2のセットを検出することのみできる。また、前のウェイクキューエンジン121D1およびウェイクキューモデル131D1であれば、1つまたは複数のウェイクワードの第1のセットを検出するためにのみ利用され得たであろうし、また、ウェイクキューエンジン121D2およびウェイクキューモデル131D2は、1つまたは複数のウェイクワードの第1のセットを検出するために利用され得るだけである。しかしながら、ウェイクキューエンジン121D2およびウェイクキューモデル131D2は、置き換えられた対応物よりも大きく、また、ロバスト性(たとえば、背景ノイズに対してよりロバスト)および/または精度が高い。アシスタントデバイス110Dからエンジンおよびモデルをパージすることで、より大きなサイズのウェイクキューエンジン121D2およびウェイクキューモデル131D2が利用されることを可能にし得る。さらに、集合的に、ウェイクキューエンジン121C2およびウェイクキューモデル131C2およびウェイクキューエンジン121D2およびウェイクキューモデル131D2は、2セットのウェイクワードの検出を可能にするが、アシスタントクライアント120Cおよび120Dの各々は適応前に第1のセットを検出することのみが可能であった。
アシスタントデバイス110Dのウォームキューエンジン127D2およびウォームキューモデル137D2は、置き換えられたウェイクキューエンジン127D1およびウェイクキューモデル137D1よりも多くの計算能力を必要とし得る。しかしながら、これらの能力は、アシスタントデバイス110Dからエンジンおよびモデルをパージすることを通して利用可能である。さらに、ウォームキューエンジン127D2およびウォームキューモデル137D1によって監視されるウォームキューは、ウォームキューエンジン127C1およびウォームキューモデル137D1によって監視されるものに加えられ得る。適応前に、ウェイクキューエンジン127D1およびウェイクキューモデル137D1によって監視されるウェイクキューは、ウォームキューエンジン127C1およびウォームキューモデル137D1によって監視されるものと同じであった。したがって、協調処理を通して、アシスタントクライアント120Cおよびアシスタントクライアント120Dは、より多くのウェイクキューを監視することができる。
図1Dの例では、アシスタントクライアント120Cおよび120Dによって協調的にオンデバイスで完全に処理され得ない多くのアシスタントリクエストがあることに留意されたい。たとえば、アシスタントクライアント120Cおよび120Dは、ASRエンジンを欠き、NLUエンジンを欠き、フルフィルメントエンジンを欠いている。これは、アシスタントデバイス110Cおよび110Dの処理能力では任意のそのようなエンジンまたはモデルをサポートできないことに起因し得る。したがって、アシスタントクライアント120Cおよび120Dによってサポートされるウォームキューでない発声発話については、クラウドベースのアシスタントコンポーネント140は、多くのアシスタントリクエストを完全に処理する際にいぜんとして利用される必要がある。しかしながら、図1Dの適応および適応に基づく協調処理は、それでもなお、デバイスで個別に適応前に行われた任意の処理に比べてロバスト性および/または精度が高くなり得る。たとえば、適応は、追加のウェイクキューおよび追加のウォームキューの検出を可能にする。
行われ得る協調処理の一例として、「OK Computer, play some music」の発声発話を仮定する。そのような例では、ウェイクキューエンジン121D2は、ウェイクキュー「OK Computer」を検出することができる。これに応答して、ウェイクキューエンジン121D2は、ウェイクキューに対応する音声データを、アシスタントクライアント120Cへ伝送させることができる。アシスタントクライアント120Cの認証エンジン126C1は、音声データを利用して、ウェイクキューの発話が登録ユーザに対して認証され得るかどうかを決定することができる。ウェイクキューエンジン121D2は、発声発話に続く音声データを、さらなる処理のためにクラウドベースのアシスタントコンポーネント140にストリーミングさせることがさらに可能である。音声データは、アシスタントデバイス110Dで、またはアシスタントデバイス110Cで、キャプチャされ得る(たとえば、アシスタントクライアント120は、ウェイクキューエンジン121D2がウェイクキューを検出したことに応答してアシスタントクライアント120Cに、音声データをキャプチャさせるコマンドを伝送することができる)。さらに、認証エンジン126C1の出力に基づく認証データも、音声データとともに伝送され得る。たとえば、認証エンジン126C1がウェイクキューの発声を登録ユーザに対して認証する場合、認証データは、登録ユーザの識別子を含むことができる。別の例として、認証エンジン126C1がウェイクキューの発声をどの登録ユーザに対しても認証しない場合、認証データは、ゲストユーザによって提供される発話を反映する識別子を含むことができる。
様々な特定の例が、図1B1、図1B2、図1B3、図1C、および図1Dを参照しつつこれまでに説明された。しかしながら、様々な追加の、または代替的なグループが生成され、および/または様々な追加の、または代替的な適応が、グループの生成に応答して実行され得ることに留意されたい。
図2は、グループ内のアシスタントデバイスのオンデバイスモデルおよび/または処理ロールを適応させる例示的な方法200を例示するフローチャートである。便宜上、フローチャートの動作は、動作を実行するシステムを参照しつつ説明されている。このシステムは、図1のアシスタントクライアント120A~Dのうちの1つまたは複数、および/または図1のクラウドベースのアシスタントコンポーネント140のコンポーネントなど、様々なコンピュータシステムの様々なコンポーネントを含み得る。さらに、方法200の動作が特定の順序で示されているが、これは制限することを意味しない。1つまたは複数の動作が、順序変更、省略、または追加されてもよい。
ブロック252で、システムは、アシスタントデバイスのグループを生成する。たとえば、システムは、グループを生成したいことを明示的に示すユーザインターフェース入力に応答して、アシスタントデバイスのグループを生成することができる。別の例として、システムは、1つまたは複数の条件が満たされていると決定したことに応答して、グループを自動的に生成することができる。さらに別の例として、システムは、条件が満たされていると決定したことに応答して、グループが生成されるべきであることを自動的に決定し、グループの生成を示唆するユーザインターフェース出力を提供し、次いで、ユーザインターフェース出力に応答して肯定的ユーザインターフェースが受信されたことに応答してグループを生成することができる。
ブロック254で、システムは、グループのアシスタントデバイスの各々に対する処理能力を取得する。たとえば、システムは、グループのアシスタントデバイスのうちの1つであってよい。そのような例では、アシスタントデバイスは、それ自身の処理能力を取得することができ、グループの他のアシスタントデバイスは、その処理能力をアシスタントデバイスに伝えることができる。別の例として、アシスタントデバイスの処理能力は、デバイストポロジーに記憶され、システムは、デバイストポロジーからそれらを取り出すことができる。さらに別の例として、システムは、クラウドベースのコンポーネントであってよく、グループのアシスタントデバイスは、各々、その処理能力をシステムに伝えることができる。
アシスタントデバイスの処理能力は、1つまたは複数のオンデバイスプロセッサの能力に基づく対応するプロセッサ値、オンデバイスメモリのサイズに基づく対応するメモリ値、および/または利用可能なディスクスペースに基づく対応するディスクスペース値を含むことができる。たとえば、プロセッサ値は、プロセッサの1つ/複数の動作周波数に関する詳細、プロセッサのキャッシュのサイズに関する詳細、プロセッサの各々がGPU、CPU、もしくはDSPであるかどうか、および/または他の詳細を含むことができる。別の例として、プロセッサ値は、それに加えて、または代替的に、高、中、もしくは低、またはGPU+CPU+DSP、高出力CPU+DSP、中出力CPU+DSP、もしくは低出力CPU+DSPなどのプロセッサの能力のより高水準の分類を含むことができる。別の例として、メモリ値は、メモリの特定のサイズなどのメモリの詳細を含むことができるか、または高、中、もしくは低などのメモリのより高水準の分類を含むことができる。さらに別の例として、ディスクスペース値は、ディスクスペースの特定のサイズなどの利用可能なディスクスペースに関する詳細を含むことができるか、または高、中、もしくは低などの利用可能なディスクスペースのより高水準の分類を含むことができる。
ブロック256において、システムは、グループに対するオンデバイスモデルの集団的なセットを決定する際にブロック254の処理能力を利用する。たとえば、システムは、集団的な処理能力の使用を最大化しようとするオンデバイスモデルのセットを決定し、その際に、そのセットのオンデバイスモデルが各々オンデバイスモデルを記憶し、利用することができるデバイス上でローカルに記憶され、利用され得ることを確実にすることができる。システムは、また、可能であれば、選択されたセットがオンデバイスモデルの完全な(または他の候補セットよりも完全な)パイプラインを含むことを確実にしようとし得る。たとえば、システムは、ロバスト性の高いNLUモデルを含むがASRモデルを含まないセットに勝る、ASRモデルを含むがロバスト性の低いNLUモデルを含むセットを選択することができる。
いくつかの実装形態において、ブロック256は、サブブロック256Aを含み、そこでは、システムはグループに対してオンデバイスモデルの集団的なセットを選択する際に利用データを利用する。過去の利用データは、グループの1つまたは複数のアシスタントデバイスにおける、および/またはエコシステムの1つまたは複数の追加のアシスタントデバイスにおける、過去のアシスタントインタラクションに関係するデータであってよい。いくつかの実装形態において、サブブロック256Aで、システムは、セットに含めるオンデバイスモデルを選択する際に上述の考慮事項とともに、利用データを考慮する。たとえば、処理能力が、精度の高いASRモデル(精度の低いASRモデルの代わりに)またはロバスト性の高いNLUモデル(ロバスト性の低いNLUモデルの代わりに)をセットに含めることを許すが、それらを両方とも含めることを許さない場合、利用データは、どれを選択すべきかを決定するために使用され得る。たとえば、利用データが、過去のアシスタントインタラクションがもっぱら(または排他的に)、精度の高いASRモデルとともにセットに含まれ得るロバスト性の低いNLUモデルによってカバーされるインテントに向けられたことを反映している場合、精度の高いASRモデルは、セットに含めるものとして選択され得る。他方で、利用データが、過去のアシスタントインタラクションがロバスト性の高いNLUモデルによってカバーされるが、ロバスト性の低いNLUモデルによってカバーされないインテントに向けられた多くのものを含むことを反映している場合、ロバスト性の高いNLUモデルは、セットに含めるものとして選択され得る。いくつかの実装形態において、候補セットは、最初に、処理能力に基づき、利用データを考慮することなく決定され、次いで複数の有効な候補セットが存在する場合に、利用データは、一方を他方よりも選択するために利用され得る。
ブロック258において、システムは、アシスタントデバイスの各々に、オンデバイスモデルの集団的なセットの対応するサブセットをローカルに記憶させる。たとえば、システムは、グループのアシスタントデバイスの各々に、どのようなオンデバイスモデルがダウンロードされるべきかの対応する指示を伝達することができる。受信された指示に基づき、アシスタントデバイスの各々は、対応するモデルをリモートデータベースからダウンロードすることができる。別の例として、システムは、オンデバイスモデルを取り出し、対応するオンデバイスモデルをグループのアシスタントデバイスの各々にプッシュすることができる。さらに別の例として、適応前がグループのアシスタントデバイスのうちの対応する一方のアシスタントデバイスに記憶され、適応においてグループのアシスタントデバイスのうちの対応する他方のアシスタントデバイスに記憶されるべき任意のオンデバイスモデルについて、そのようなモデルは、それぞれのデバイス間で直接的に伝達され得る。たとえば、第1のアシスタントデバイスがASRモデルを適応前に記憶し、その同じASRモデルは、適応において、第2のアシスタントデバイス上に記憶され、第1のアシスタントデバイスからパージされると仮定する。そのような場合において、システムは、第2のアシスタントデバイスのローカルストレージに対してASRモデルを第2のアシスタントデバイスに伝送するように第1のアシスタントデバイスに指令し(および/または第1のアシスタントデバイスからダウンロードするように第2のアシスタントデバイスに指令し)、第1のアシスタントデバイスは、その後、ASRモデルをパージすることができる。WANトラフィックを妨げることに加えて、適応前モデルをローカルで伝送することにより、伝送時に以前に行われたそれらのオンデバイスモデルの任意の個人化を維持することができる。個人化されたモデルは、エコシステムのユーザにとって、リモートストレージ内の個人化されていない対応物に比べて高い精度を有し得る。さらに1つの例として、適応前にそれらのアシスタントデバイス上にオンデバイスモデルを個人化するための記憶されている訓練インスタンスを適応前に含む任意のアシスタントデバイスについて、そのような訓練インスタンスは、適応後に、リモートデータベースからダウンロードされた対応するモデルを有することになるアシスタントデバイスに伝達され得る。適応後にオンデバイスモデルを有するアシスタントデバイスは、次いで、訓練インスタンスを利用して、リモートデータベースからダウンロードされた対応するモデルを個人化することができる。リモートデータベースからダウンロードされた対応するモデルは、訓練インスタンスが適応前に利用された対応物とは異なる(たとえば、より小さいまたはより大きい)ものとしてよいが、訓練インスタンスは、異なるダウンロード済みオンデバイスモデルを個人化する際にそのまま利用され得る。
ブロック260において、システムは、対応するロールをアシスタントデバイスの各々に割り当てる。いくつかの実装形態において、対応するロールを割り当てることは、アシスタントデバイスの各々に、アシスタントデバイスにローカルで記憶されているオンデバイスモデルに対応するエンジンをダウンロードさせ、および/または実装させることを含む。エンジンは各々、すべてまたは一部のASRを実行すること、少なくともいくつかのウェイクワード(wake word)に対してウェイクワード認識を実行すること、いくつかのウォームワード(warm word)に対してウォームワード認識を実行すること、および/または認証を実行することなどの対応する処理ロールを実行する際に、対応するオンデバイスモデルを利用することができる。いくつかの実装形態において、処理ロールのうちの1つまたは複数は、アシスタントデバイスのグループのリードデバイスの指令があるときのみ実行される。たとえば、オンデバイスNLUモデルを利用して所与のデバイスによって実行されるNLU処理ロールは、リードデバイスが、所与のデバイスに、NLU処理に対する対応するテキストおよび/またはNLU処理を行わせるための特定のコマンドを伝送したことに応答して実行されるだけであってよい。別の例として、オンデバイスウォームキューエンジンおよびオンデバイスウォームキューモデルを利用して所与のデバイスによって実行される、ウォームワード監視処理ロールは、リードデバイスが、所与のデバイスに、ウォームワード処理を行わせるためのコマンドを伝送したことに応答して実行されるだけであってよい。たとえば、リードデバイスは、所与のデバイスに、リードデバイスまたはグループの他のデバイスで鳴るアラームに応答して「stop」ウォームワードの発声出現を監視させることができる。いくつかの実装形態において、1つまたは複数の処理ロールは、少なくとも選択的に、リードアシスタントデバイスからのいかなる指令とも無関係に実行され得る。たとえば、オンデバイスウェイクキューエンジンおよびオンデバイスウェイクキューモデルを利用して所与のデバイスによって実行されたウェイクキュー監視ロールは、ユーザによって明示的に無効にされない限り、継続的に実行され得る。別の例として、オンデバイスウォームキューエンジンおよびオンデバイスウォームキューモデルを利用して所与のデバイスによって実行されたウォームキュー監視ロールは、継続的に、または所与のデバイスにおいてローカルで監視が検出される条件に基づき実行され得る。
ブロック262で、システムは、グループのデバイスのうちの1つまたは複数のところで検出された、その後の発声発話を、グループのアシスタントデバイスにおいてそのロールに従って協調的にローカルで処理させる。そのような協調処理の様々な非限定的な例が本明細書において説明されている。たとえば、例は、図1B1、図1B2、図1B3、図1C、および図1Dを参照しつつ説明されている。
ブロック264において、システムは、グループへのデバイスの追加、グループからのデバイスの除去、またはグループの解散など、グループに何らかの変更があったかどうかを決定する。そうでない場合、システムは、ブロック262を実行し続ける。そうである場合、システムは、ブロック266に進む。
ブロック266において、システムは、グループへの変更がグループ内にあった1つまたは複数のアシスタントデバイスが現在単独になっている(すなわち、もはやグループに割り当てられていない)かどうかを決定する。そうである場合、システムは、ブロック268に進み、単独デバイスの各々に、グループ化前オンデバイスモデルをローカルに記憶させ、そのグループ化前オンデバイス処理ロールを引き受けさせる。別の言い方をすれば、デバイスは、もはやグループ内にない場合に、グループに含まれたことに応答して適応が実行される前に入っていた状態に戻され得る。これらおよび他の方式において、その状態に戻った後、単独デバイスは、単独能力で動作する様々なアシスタントリクエストを機能的に処理することができる。その状態に戻る前に、単独デバイスは、いかなるアシスタントリクエストをも、またはその状態に戻る前よりも少なくとも少ない量のアシスタントリクエストを機能的に処理することができなかった可能性がある。
ブロック270において、システムは、変更されたグループ内に2つまたはそれ以上のデバイスが残っているかどうかを決定する。そうである場合、システムは、ブロック254に戻り、変更されたグループに基づきブロック254、256、258、260、および262の別の反復を実行する。たとえば、変更されたグループが、グループの前のアシスタントデバイスのいずれも失うことなく追加のアシスタントデバイスを含む場合、追加のアシスタントデバイスの追加の処理能力を考慮して適応が行われ得る。ブロック270での決定がnoである場合、グループは解散され、システムはブロック272に進み、そこで方法200は終了する(別のグループが生成されるまで)。
図3は、グループ内のアシスタントデバイスのオンデバイスモデルおよび/または処理ロールを適応させる際に、グループ内の複数のアシスタントデバイスの各々によって実施され得る例示的な方法300を例示するフローチャートである。方法300の動作が特定の順序で示されているが、これは制限することを意味しない。1つまたは複数の動作が、順序変更、省略、または追加されてもよい。
方法300の動作は、グループ内のアシスタントデバイスの各々によって実行され得る方法200の特定の一例である。したがって、動作は、図1のアシスタントクライアント120A~Dのうちの1つまたは複数などの、動作を実行するアシスタントデバイスを参照しつつ説明される。グループ内のアシスタントデバイスの各々は、それがグループに含まれていることを示す入力を受信したことに応答して方法300を実行することができる。
ブロック352において、アシスタントデバイスは、それがグループに含まれていたことを示すグループ化指示を受信する。ブロック352で、アシスタントデバイスは、グループ内にある他のアシスタントデバイスの識別子も受信する。各識別子は、たとえば、MACアドレス、IPアドレス、デバイスに割り当てられたラベル(たとえば、デバイストポロジーにおいて割り当てられている用途)、シリアル番号、または他の識別子であり得る。
任意選択のブロック354で、アシスタントデバイスは、グループの他のアシスタントデバイスにデータを伝送する。データは、ブロック352で受信された識別子を使用して他のデバイスに伝送される。別の言い方をすれば、識別子は、ネットワークアドレスであり得るか、またはデータの伝送先であるネットワークアドレスを見つけるために利用され得る。伝送されたデータは、本明細書において説明されている1つまたは複数の処理値、別のデバイス識別子、および/または他のデータを含むことができる。
任意選択のブロック356で、アシスタントデバイスは、ブロック354において他のデバイスにより伝送されたデータを受信する。
ブロック358で、アシスタントデバイスは、ブロック356において任意選択で受信されたデータまたはブロック352において受信された識別子に基づき、それがリードデバイスであるかどうかを決定する。たとえば、デバイスは、それ自身の識別子がブロック352で受信された他の識別子と比較して最低値(または代替的に最高値)である場合に、それ自身をリーダーとして選択することができる。別の例として、デバイスは、その処理値が、他のすべての処理値のうちの、任意選択のブロック356においてデータ内に受信された処理値を超える場合に、それ自体をリーダーとして選択することができる。他のデータは、ブロック354で伝送され、ブロック356で受信されるものとしてよく、そのような他のデータは、同様に、アシスタントデバイスにおいて、それがリーダーであるべきであるかどうかという客観的決定を可能にすることができる。より一般的には、ブロック358において、アシスタントデバイスは、それがリードデバイスであるべきであるかどうかを決定する際に、1つまたは複数の客観的基準を利用することができる。
ブロック360において、アシスタントデバイスは、ブロック358でそれがリードデバイスであると決定されたかどうかを決定する。リードデバイスであると決定されなかったアシスタントデバイスは、次いで、ブロック360から「no」ブランチに下る。リードデバイスであると決定されたアシスタントデバイスは、ブロック360から「yes」ブランチに下る。
「yes」ブランチにおいて、アシスタントデバイスは、ブロック360で、グループに対するオンデバイスモデルの集団的なセットを決定する際に、グループ内の他のアシスタントデバイスから受け取った処理能力、さらにはそれ自身の処理能力も利用する。処理能力は、任意選択のブロック354が実行されないか、またはブロック354のデータが処理能力を含んでいないときに、任意選択のブロック354またはブロック370(後述)において、他のアシスタントデバイスによってリードデバイスに伝送され得る。いくつかの実装形態において、ブロック362は、図2の方法200のブロック256と共通の1つまたは複数の態様を共有することができる。たとえば、いくつかの実装形態において、ブロック362は、オンデバイスモデルの集団的なセットを決定する際に過去の利用データを考慮することも含み得る。
ブロック364において、アシスタントデバイスは、グループの他のアシスタントデバイスの各々に、他のアシスタントデバイスがダウンロードすべき、集団的なセットの、オンデバイスモデルのそれぞれの指示を伝送する。アシスタントデバイスは、任意選択で、ブロック364において、グループの他のアシスタントデバイスの各々に、オンデバイスモデルを利用してアシスタントデバイスによって実行されるべき処理ロールのそれぞれの指示を伝送することもできる。
ブロック366において、アシスタントデバイスは、アシスタントデバイスに割り当てられた、セットのオンデバイスモデルをダウンロードし、記憶する。いくつかの実装形態において、ブロック364および366は、図2の方法200のブロック258と共通する1つまたは複数の態様を共有することができる。
ブロック368において、アシスタントデバイスは、協調処理の一部分を実行する際にそれ自身のオンデバイスモデルを利用することを含む、アシスタントリクエストの協調処理を調整する。いくつかの実装形態において、ブロック368は、図2の方法200のブロック262と共通の1つまたは複数の態様を共有することができる。
次に「no」ブランチに目を向けると、任意選択のブロック370において、アシスタントデバイスは、その処理能力をリードデバイスに伝える。ブロック370は、たとえば、ブロック354が実行され、処理能力がブロック354で伝送されたデータに含まれるときに省かれ得る。
ブロック372において、アシスタントデバイスは、リードデバイスから、ダウンロードすべきオンデバイスモデルの指示と、任意選択で処理ロールの指示とを受信する。
ブロック374において、アシスタントデバイスは、ブロック372で受信されたオンデバイスモデルの指示内に反映されたオンデバイスモデルをダウンロードし、記憶する。いくつかの実装形態において、ブロック372および374は、図2の方法200のブロック258と共通する1つまたは複数の態様を共有することができる。
ブロック376において、アシスタントデバイスは、アシスタントリクエストの協調処理の一部を実行する際に、そのオンデバイスモデルを利用する。いくつかの実装形態において、ブロック376は、図2の方法200のブロック262と共通の1つまたは複数の態様を共有することができる。
図4は、本明細書で説明されている技術のうちの1つまたは複数の態様を実行するために任意選択で利用されてよい例示的なコンピューティングデバイス410のブロック図である。いくつかの実装形態において、アシスタントデバイス、および/または他のコンポーネントのうちの1つまたは複数は、例示的なコンピューティングデバイス410の1つまたは複数のコンポーネントを含み得る。
コンピューティングデバイス410は、典型的には、バスサブシステム412を介して多数の周辺デバイスと通信する少なくとも1つのプロセッサ414を備える。これらの周辺デバイスは、たとえば、メモリサブシステム425およびファイルストレージサブシステム426を含む、ストレージサブシステム425、ユーザインターフェース出力デバイス420、ユーザインターフェース入力デバイス422、およびネットワークインターフェースサブシステム416を含むものとしてよい。入力および出力デバイスは、ユーザとコンピューティングデバイス410とのインタラクションを可能にする。ネットワークインターフェースサブシステム416は、外部ネットワークへのインターフェースを備え、他のコンピューティングデバイス内の対応するインターフェースデバイスに結合される。
ユーザインターフェース入力デバイス422は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムなどの音声入力デバイス、マイクロホン、および/または他の種類の入力デバイスを含むものとしてよい。一般に、「入力デバイス」という用語の使用は、情報をコンピューティングデバイス410内に、または通信ネットワーク上に入力するためのすべての可能な種類のデバイスおよび方法を含むことが意図されている。
ユーザインターフェース出力デバイス420は、表示サブシステム、プリンタ、ファックス機、または音声出力デバイスなどの非視覚的ディスプレイを含むものとしてよい。表示サブシステムは、陰極線管(「CRT」)、液晶ディスプレイ(「LCD」)などのフラットパネルデバイス、プロジェクションデバイス、または可視画像を生成するための他の何らかのメカニズムを含むものとしてよい。表示サブシステムは、音声出力デバイスなどを介して非視覚的ディスプレイも備えてよい。一般に、「出力デバイス」という用語の使用は、情報をコンピューティングデバイス410からユーザまたは別のマシンもしくはコンピューティングデバイスに出力するためのすべての可能な種類のデバイスおよび方法を含むことが意図されている。
ストレージサブシステム425は、本明細書で説明されているモジュールのうちのいくつかまたはすべての機能を実現するプログラミングおよびデータ構造を記憶する。たとえば、ストレージサブシステム425は、本明細書において説明されている方法のうちの1つまたは複数の選択された態様を実行し、および/または本明細書に描かれている様々なコンポーネントを実装するためのロジック回路を備え得る。
これらのソフトウェアモジュールは、一般的に、プロセッサ414によって、単独で、または他のプロセッサと組み合わせて、実行される。ストレージサブシステム425において使用されるメモリ425は、プログラム実行時に命令およびデータを記憶するための主ランダムアクセスメモリ(「RAM」)430、ならびに固定された命令が記憶されるリードオンリーメモリ(「ROM」)432を含む多数のメモリを備えることができる。ファイルストレージサブシステム426は、プログラムおよびデータファイル用の永続的記憶域を備えることができ、ハードディスクドライブ、関連する取り外し可能媒体を伴ったフロッピーディスクドライブ、CD-ROMドライブ、光ドライブ、または取り外し可能メディアカートリッジを含むものとしてよい。いくつかの実装形態の機能を実装するモジュールは、ストレージサブシステム425内にファイルストレージサブシステム426によって、またはプロセッサ414によってアクセス可能な他のマシン内に記憶され得る。
バスシステム412は、コンピューティングデバイス410の様々なコンポーネントおよびサブシステムに意図したとおりに互いに通信させるメカニズムを備える。バスシステム412は、単一のバスとして概略が図示されているけれども、バスシステムの代替的実装形態では、複数のバスを使用してよい。
コンピューティングデバイス410は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む様々な種類のデバイスであってよい。コンピュータおよびネットワークはその性質上絶えず変化し続けるので、図4に示されているコンピューティングデバイス410の説明は、いくつかの実装を例示することを目的とする特定の例としてのみ意図されている。コンピューティングデバイス410の他の多くの構成は、図4に示されているコンピューティングデバイスよりも多い、または少ないコンポーネントを有するものが可能である。
本明細書で説明されているシステムがユーザ(もしくは本明細書において多くの場合に「参加者」と称されるような)に関する個人情報を収集するか、または個人情報を利用してよい状況において、ユーザは、プログラムまたは機能によりユーザ情報(たとえば、ユーザのソーシャルネットワークに関する情報、社会的行為もしくは活動、専門的職業、ユーザの選好、またはユーザの現在の地理的位置)を収集するかどうかを制御する、またはユーザに対してより高い関連性を有すると思われるコンテンツをコンテンツサーバから受信するかどうか、および/またはどのように受信するかを制御する機会を与えられるものとしてよい。また、特定データが、それが記憶されるか、または使用される前に1つまたは複数の方法で処理されるものとしてよく、したがって個人識別可能情報は取り除かれる。たとえば、ユーザの身元は、ユーザに対して個人識別可能情報が決定され得ないように処理されてよいか、または地理的位置情報(市名、郵便番号、国家レベルなど)が得られる場合にユーザの地理的位置が一般化されるものとしてよく、したがって、ユーザの特定の地理的位置が決定されなくてよい。したがって、ユーザは、ユーザに関して情報がどのように収集されるか、および/またはどのように使用されるかを制御するものとしてよい。
いくつかの実装形態において、異種アシスタントデバイスのアシスタントデバイスグループを生成することを含む方法が提供される。異種アシスタントデバイスは、少なくとも第1のアシスタントデバイスおよび第2のアシスタントデバイスを含む。グループを生成する時点において、第1のアシスタントデバイスは、第1のアシスタントデバイスに向けられたアシスタントリクエストをローカルで処理する際に利用されるローカルに記憶されるオンデバイスモデルの第1のセットを含む。さらに、グループを生成する時点において、第2のアシスタントデバイスは、第2のアシスタントデバイスに向けられたアシスタントリクエストをローカルで処理する際に利用されるローカルに記憶されるオンデバイスモデルの第2のセットを含む。この方法は、アシスタントデバイスグループの異種アシスタントデバイスの各々の対応する処理能力に基づき、アシスタントデバイスグループの異種アシスタントデバイスのいずれかに向けられたアシスタントリクエストを協調的にローカルで処理する際に利用するためのローカルに記憶されるオンデバイスモデルの集団的なセットを決定することをさらに含む。この方法は、アシスタントデバイスグループの生成に応答して、異種アシスタントデバイスの各々に、ローカルに記憶されているオンデバイスモデルの集団的なセットの対応するサブセットをローカルに記憶させることと、アシスタントデバイスグループの異種アシスタントデバイスの各々に1つまたは複数の対応する処理ロールを割り当てることとをさらに含む。処理ロールの各々は、ローカルに記憶されているオンデバイスモデルの1つまたは複数の対応するものを利用する。さらに、異種アシスタントデバイスの各々に、対応するサブセットをローカルに記憶させることは、第1のアシスタントデバイスに、第1のセットの1つまたは複数の第1のオンデバイスモデルをパージさせて、第1のアシスタントデバイス上でローカルに記憶される対応するサブセットに対するストレージスペースを提供することと、第2のアシスタントデバイスに、第2のセットの1つまたは複数の第2のオンデバイスモデルをパージさせて、第2のアシスタントデバイス上でローカルに記憶される対応するサブセットに対するストレージスペースを提供することとを含む。この方法は、対応する処理ロールをアシスタントデバイスグループの異種アシスタントデバイスの各々に割り当てることに続いて、アシスタントデバイスグループの異種アシスタントデバイスのうちの少なくとも1つのデバイスのマイクロホンを介して、発声発話を検出することと、発声発話がアシスタントデバイスグループのマイクロホンを介して検出されたことに応答して、発声発話がアシスタントデバイスグループの異種アシスタントデバイスによって、その対応する処理ロールを利用して、協調的にローカルに処理されることを引き起こすこととをさらに含む。
本明細書において開示されている技術のこれらのおよび他の実装形態は、任意選択で、次の特徴のうちの1つまたは複数を含むことができる。
いくつかの実装形態において、第1のアシスタントデバイスに、第1のセットの1つまたは複数の第1のオンデバイスモデルをパージさせることは、第1のアシスタントデバイスに、第1のウェイクワードを検出する際に利用される、第1のセットの、第1のデバイスのウェイクワード検出モデルをパージさせることを含む。それらの実装形態では、第2のアシスタントデバイス上でローカルに記憶される対応するサブセットは、第1のウェイクワードを検出する際に利用される第2のデバイスのウェイクワード検出モデルを含み、対応する処理ロールを割り当てることは、第2のアシスタントデバイスに、第1のウェイクワードの出現を監視する際に第2のデバイスのウェイクワード検出モデルを利用する第1のウェイクワード検出ロールを割り当てることを含む。それらの実装形態のいくつかにおいて、発声発話は、アシスタントコマンドが後に続く第1のウェイクワードを含み、第1のウェイクワード検出ロールでは、第2のアシスタントデバイスは、第1のウェイクワードの出現を検出し、第1のウェイクワードの出現の検出に応答して対応する処理ロールの追加のロールの実行を引き起こす。それらの実装形態のいくつかのバージョンにおいて、対応する処理ロールの追加のロールは、第1のアシスタントデバイスによって実行され、第2のアシスタントデバイスは、第1のアシスタントデバイスに、第1のウェイクワードの検出の指示を伝送することによって、対応する処理ロールの追加のロールの実行を引き起こす。
いくつかの実装形態において、第1のアシスタントデバイス上でローカルに記憶される対応するサブセットは、1つまたは複数の第1のウェイクワードを検出する際に利用される第1のデバイスの第1のウェイクワード検出モデルを含み、1つまたは複数の第2のウェイクワードを検出する際に利用されるウェイクワード検出モデルを除外する。それらの実装形態のうちのいくつかにおいて、第2のアシスタントデバイス上でローカルに記憶される対応するサブセットは、1つまたは複数の第2のウェイクワードを検出する際に利用される第2のデバイスの第2のウェイクワード検出モデルを含み、1つまたは複数の第1のウェイクワードを検出する際に利用されるウェイクワード検出モデルを除外する。それらの実装形態のうちのいくつかのバージョンにおいて、対応する処理ロールを割り当てることは、第1のアシスタントデバイスに、1つまたは複数の第1のウェイクワードの出現を監視する際に第1のデバイスのウェイクワード検出モデルを利用する第1のウェイクワード検出ロールを割り当てることと、第2のアシスタントデバイスに、1つまたは複数の第2のウェイクワードの出現を監視する際に第2のデバイスのウェイクワード検出モデルを利用する第2のウェイクワード検出ロールを割り当てることとを含む。
いくつかの実装形態において、第1のアシスタントデバイス上でローカルに記憶された対応するサブセットは、第1の言語で音声の認識を実行する際に利用される第1の言語音声認識モデル(first language speech recognition model)を含み、第2の言語で音声を認識する際に利用される任意の音声認識モデルを除外する。それらの実装形態のうちのいくつかにおいて、第2のアシスタントデバイス上でローカルに記憶される対応するサブセットは、第2の言語で音声の認識を実行する際に利用される第2の言語音声認識モデルを含み、第2の言語で音声を認識する際に利用される任意の音声認識モデルを除外する。それらの実装形態のうちのいくつかのバージョンにおいて、対応する処理ロールを割り当てることは、第1のアシスタントデバイスに、第1の言語で音声の認識を実行する際に第1の言語音声認識モデルを利用する第1の言語音声認識ロールを割り当てることと、第2のアシスタントデバイスに、第2の言語で音声の認識を実行する際に第2の言語音声認識モデルを利用する第2の言語音声認識ロールを割り当てることとを含む。
いくつかの実装形態において、第1のアシスタントデバイス上でローカルに記憶される対応するサブセットは、音声の認識の第1の部分を実行する際に利用される音声認識モデル(speech recognition model)の第1の部分を含み、音声認識モデルの第2の部分を除外する。それらの実装形態のうちのいくつかにおいて、第2のアシスタントデバイス上でローカルに記憶される対応するサブセットは、音声の認識の第2の部分を実行する際に利用される音声認識モデルの第2の部分を含み、音声認識モデルの第1の部分を除外する。それらの実装形態のうちのいくつかのバージョンにおいて、対応する処理ロールを割り当てることは、第1のアシスタントデバイスに、対応する音声の対応する埋め込みを生成する際に音声認識モデルの第1の部分を利用する言語音声認識ロールの第1の部分を割り当てることと、対応する埋め込みを第2のアシスタントデバイスに伝送することと、第2のアシスタントデバイスに、第1のアシスタントデバイスからの対応する埋め込みと、対応する音声の対応する認識を生成する際に第2の言語音声認識モデルと、を利用する第2の言語音声認識ロールを割り当てることとを含む。
いくつかの実装形態において、第1のアシスタントデバイス上でローカルに記憶される対応するサブセットは、音声の認識の第1の部分を実行する際に利用される音声認識モデルを含む。それらの実装形態のうちのいくつかにおいて、対応する処理ロールを割り当てることは、第1のアシスタントデバイスに、出力を生成する際に音声認識モデルを利用する言語音声認識ロールの第1の部分を割り当てることと、対応する出力を第2のアシスタントデバイスに伝送することと、第2のアシスタントデバイスに、対応する音声の対応する認識を生成する際に第1のアシスタントデバイスからの対応する出力でビーム探索を実行する第2の言語音声認識ロールを割り当てることとを含む。
いくつかの実装形態において、第1のアシスタントデバイス上でローカルに記憶される対応するサブセットは、自然言語入力の意味解析を実行する際に利用される1つまたは複数の適応前自然言語理解モデルを含み、1つまたは複数の適応前自然言語理解モデルは第1のアシスタントデバイスにおける第1の量のローカルディスクスペースを占有する。それらの実装形態のうちのいくつかにおいて、第1のアシスタントデバイス上でローカルに記憶される対応するサブセットは、1つまたは複数の適応前自然言語理解モデルに加わる少なくとも1つの追加の自然言語理解モデルを含み、第1のアシスタントデバイスにおいて第2の量のローカルディスクスペースを占有し、第2の量は第1の量より大きい、1つまたは複数の適応後自然言語理解モデルを含む。
いくつかの実装形態において、第1のアシスタントデバイス上でローカルに記憶される対応するサブセットは、1つまたは複数の第1の分類に対する意味解析において利用される第1のデバイスの自然言語理解モデルを含み、第2の分類に対する意味解析において利用される自然言語理解モデルを除外する。それらの実装形態のうちのいくつかにおいて、第2のアシスタントデバイス上でローカルに記憶される対応するサブセットは、少なくとも第2の分類に対する意味解析において利用される第2のデバイスの自然言語理解モデルを含む。
いくつかの実装形態において、アシスタントデバイスグループの異種アシスタントデバイスの各々に対する対応する処理能力は、1つまたは複数のオンデバイスプロセッサの能力に基づく対応するプロセッサ値、オンデバイスメモリのサイズに基づく対応するメモリ値、および/または利用可能なディスクスペースに基づく対応するディスクスペース値を含む。
いくつかの実装形態において、異種アシスタントデバイスのアシスタントデバイスグループを生成することは、異種アシスタントデバイスをグループ化したいことを明示的に示すユーザインターフェース入力に応答している。
いくつかの実装形態において、異種アシスタントデバイスのアシスタントデバイスグループを生成することは、異種アシスタントデバイスが互いに関して1つまたは複数の近接条件を満たすとの決定に応答して自動的に実行される。
いくつかの実装形態において、異種アシスタントデバイスのアシスタントデバイスグループを生成することは、アシスタントデバイスグループを作成する推奨に応答して肯定的ユーザインターフェース入力を受け取ったことに応答して実行され、この推奨は、異種アシスタントデバイスが互いに関して1つまたは複数の近接条件を満たすとの決定に応答して自動的に生成される。
いくつかの実装形態において、この方法は、対応する処理ロールをアシスタントデバイスグループの異種アシスタントデバイスの各々に割り当てることに続いて、第1のアシスタントデバイスがもはやグループ内にないと決定することと、第1のアシスタントデバイスがもはやグループ内にないとの決定に応答して、第1のアシスタントデバイスに、第1のアシスタントデバイス上でローカルに記憶されている対応するサブセットを第1のセットの第1のオンデバイスモデルで置き換えることを行わせることとをさらに含む。
いくつかの実装形態において、この集団的なセットを決定することは、グループのアシスタントデバイスの1つまたは複数における過去の利用を反映する利用データにさらに基づく。
それらの実装形態のうちのいくつかにおいて、集団的なセットを決定することは、アシスタントデバイスグループの異種アシスタントデバイスの各々に対する対応する処理能力に基づき、各々がグループのアシスタントデバイスによって集団的にローカルに記憶され、集団的にローカルに利用されることが可能な複数の候補セットを決定することと、利用データに基づき、候補セットから集団的なセットを選択することとを含む。
いくつかの実装形態において、アシスタントデバイスの1つまたは複数のプロセッサによって実装される方法が提供される。この方法は、アシスタントデバイスが、アシスタントデバイスと1つまたは複数の追加のアシスタントデバイスとを含むアシスタントデバイスのグループに含まれるとの決定に応答して、アシスタントデバイスがグループに対するリードデバイスであると決定することを含む。方法は、アシスタントデバイスがグループに対するリードデバイスであるとの決定に応答して、アシスタントデバイスの処理能力と、1つまたは複数の追加のアシスタントデバイスの各々について受信された処理能力と、に基づき、アシスタントデバイスグループの異種アシスタントデバイスのいずれかに向けられたアシスタントリクエストを協調的にローカルで処理する際に利用するためのオンデバイスモデルの集団的なセット、およびオンデバイスモデルの各々について、グループのアシスタントデバイスのうちのどれがオンデバイスモデルをローカルに記憶するかを示す対応する指定を決定することをさらに含む。方法は、アシスタントデバイスがグループに対するリードデバイスであるとの決定に応答して、1つまたは複数の追加のアシスタントデバイスと通信して、1つまたは複数の追加のアシスタントデバイスに、追加のアシスタントデバイスに対する対応する指定を有するオンデバイスモデルのうちのいずれかを各々ローカルで記憶させることと、アシスタントデバイスにおいて、アシスタントデバイスに対する対応する指定を有するオンデバイスモデルをローカルに記憶することと、1つまたは複数の対応する処理ロールを、グループに向けられたアシスタントリクエストの協調的なローカルにおける処理のために、グループのアシスタントデバイスの各々に割り当てることとをさらに含む。
本明細書において開示されている技術のこれらのおよび他の実装形態は、任意選択で、次の特徴のうちの1つまたは複数を含むことができる。
いくつかの実装形態において、アシスタントデバイスがグループに対するリードデバイスであると決定することは、アシスタントデバイスの処理能力を、1つまたは複数の追加のアシスタントデバイスの各々に対する受信された処理能力と比較することと、比較に基づきアシスタントデバイスがグループに対するリードデバイスであると決定することとを含む。
いくつかの実装形態において、アシスタントデバイスのグループは、アシスタントデバイスをグループ化したいことを明示的に示すユーザインターフェース入力に応答して作成される。
いくつかの実装形態において、方法は、アシスタントデバイスがグループに対するリードデバイスであるとの決定と、グループのアシスタントデバイスの1つまたは複数においてアシスタントリクエストの受信と、に応答して、アシスタントデバイスに割り当てられた対応する処理ロールを使用して、アシスタントリクエストの協調的なローカルにおける処理を調整することをさらに含む。
いくつかの実装形態において、アシスタントデバイスの1つまたは複数のプロセッサによって実装される方法が提供され、これはアシスタントデバイスが異種アシスタントデバイスのグループから取り除かれていると決定することを含む。このグループは、アシスタントデバイスおよび少なくとも1つの追加のアシスタントデバイスを含んでいたグループである。アシスタントデバイスがグループから取り除かれた時点において、アシスタントデバイスは、オンデバイスモデルのセットをローカルに記憶しており、オンデバイスモデルのセットは、アシスタントデバイスのローカルにおいて、自動化アシスタントに向けられている発声発話を完全に処理するには不十分であった。この方法は、アシスタントデバイスがアシスタントデバイスのグループから取り除かれたとの決定に応答して、アシスタントデバイスに、セットのオンデバイスモデルのうちの1つまたは複数をパージさせ、1つまたは複数の追加のオンデバイスモデルを取り出してローカルに記憶させることをさらに含む。1つまたは複数の追加のオンデバイスモデルを取り出し、ローカルに記憶することに続き、アシスタントデバイス、1つまたは複数の追加のオンデバイスモデル、およびセットのオンデバイスモデルの任意の残りは、アシスタントデバイスのローカルで、自動化アシスタントに向けられた発声発話を完全に処理する際に利用され得る。