図1Aは、ローカルネットワーク上のすべてのクライアントデバイスをそれらのクライアントデバイスのスリープ状態から遷移させることなくメディアを別個のクライアントデバイスにブロードキャストするようにユーザ124が第1のクライアントデバイス134を制御する図100を示す。第1のクライアントデバイス134は、メディアを別のデバイスにキャスティングすることができるセルラ電話126および/または任意のその他のデバイスなどのコンピューティングデバイスであることが可能である。第1のクライアントデバイス134は、アシスタントインターフェース138への入力によって呼び出され得る自動化されたアシスタント136へのアクセスを提供することができる。第1のクライアントデバイス134は、第1のクライアントデバイス134から別のクライアントデバイスにキャストされ得るメディアにアクセスすることができる1つまたは複数のアプリケーション144も含むことが可能である。一部の実装において、第1のクライアントデバイス134は、ユーザ124から自動化されたアシスタント136への入力に応じて別個のクライアントデバイスにメディアをキャスティングすることができる。たとえば、ユーザがアプリケーション144に関連するメディアをキャスティングするために利用可能なその他のデバイスを調べることに応じて、第1のクライアントデバイス134は、複数の異なるクライアントデバイスが接続されるローカルエリアネットワーク上でmDNSデータを送信することができる。
第1のクライアントデバイス134によってブロードキャストされるmDNSデータは、WiFiネットワークなどのローカルエリアネットワークを介して第2のクライアントデバイス102および/または第3のクライアントデバイス112に送信され得る。たとえば、mDNSデータ130が、第1のクライアントデバイス134から第2のクライアントデバイス102に送信されることが可能であり、mDNSデータ132が、第1のクライアントデバイス134から第3のクライアントデバイス112に送信されることが可能である。一部の実装において、第2のクライアントデバイス102は、ポータブル電源110によって給電されるポータブルコンピューティングデバイスであることが可能である。さらに、第3のクライアントデバイス112は、ポータブル電源、および/または公益サービスによって供給される電源などの任意のその他の電源によって給電され得る。第2のクライアントデバイス102および第3のクライアントデバイス112は、各デバイスがそれぞれのmDNSデータを受信するとき、スリープモードで動作し得る。言い換えると、デバイスがスリープモードで動作しているので、各デバイスにおいて利用可能なWiFiチップが、それぞれのデバイスをスリープ状態から遷移させることなくmDNSデータを処理し得る。たとえば、WiFiチップ106およびWiFiチップ116がmDNSデータを受信し、mDNSデータに応答するとき、デバイスSoC 108およびデバイスSoC 118は、(グラデーション塗りつぶしパターンによって示されるように)スリープモードで動作し得る。一部の実装において、コンピューティングデバイスは、少なくともコンピューティングデバイスのデバイスSoCが電源を落とされるか、またはそうではなくデバイスSoCが別の動作モードによって動作しているとした場合よりも少ない電力を消費しているとき、「スリープモード」であると考えられ得る。
第2のクライアントデバイス102のWiFiチップ106は、WiFiチップ106のメモリ140内で利用可能なキャッシュされたデータを使用してmDNSデータ130を処理することができる。さらに、第3のクライアントデバイス112のWiFiチップ116は、WiFiチップ116のメモリ142内で利用可能なキャッシュされたデータを使用してmDNSデータ132を処理することができる。第1のクライアントデバイス134によってブロードキャストされるmDNSデータは、ブロードキャストに関連付けられるアプリケーション、ブロードキャストを送信するためのポート、第1のクライアントデバイス134によって要求されているサービス、および/またはコンピューティングデバイスがキャスティングを初期化しているときに指定し得る任意のその他の特徴を特定することができる。
図1Bは、第2のクライアントデバイス102および第3のクライアントデバイス112が各クライアントデバイスに送信されたmDNSデータに応答する図150を示す。応答データの生成および送信中、デバイスSoC 108およびデバイスSoC 118の各々は、スリープモードのままであることが可能であり、それによって、電力および計算リソースの無駄をなくす。応答データ148は、第2のクライアントデバイス102が第1のクライアントデバイス134によって要求されている1つまたは複数の特徴を含むかどうかを示すことができ、応答データ146は、第3のクライアントデバイス112が第1のクライアントデバイス134によって要求されている1つまたは複数の特徴を含むかどうかを示すことができる。第1のクライアントデバイス134がローカルネットワークを介して応答データ148および応答データ146を受信することに応じて、第1のクライアントデバイス134は、要求を満たす1つまたは複数のクライアントデバイスを特定するグラフィカルインターフェースを提供することができる。そのとき、ユーザ124は、メディアをキャスティングするためのクライアントデバイスのうちの1つを選択することができる。たとえば、アプリケーション144がクライアントデバイスにキャスティングすることを要求し、ユーザがキャスティングのために選択するクライアントデバイスのリストを提示されるとき、ユーザは、第1のクライアントデバイス134を選択し得る。
選択に応じて、アプリケーション144は、ローカルネットワーク上で第1のクライアントデバイス134と直接通信することが可能であり、またはアプリケーションは、第1のクライアントデバイス134によって特定のメディアデータをレンダリングするために別個のサーバに第1のクライアントデバイス134へ命令を伝達させるために別個のサーバと通信することが可能である。一部の実装において、第1のクライアントデバイス134は、オーディオおよび/またはビジュアルデータをレンダリングすることができるスタンドアロンのスピーカデバイス122および/またはディスプレイデバイスであることが可能である。代替的にまたは追加的に、第3のクライアントデバイス112は、コンピュータモニタおよび/またはテレビなどのディスプレイデバイスであることが可能である。第2のクライアントデバイス102および第3のクライアントデバイス112は、それぞれデジタル信号プロセッサを含むことが可能であり、デジタル信号プロセッサは、それぞれのデバイスSoCがスリープモードで動作しているときに自動化されたアシスタントにアクセスするそれぞれのデバイスインターフェースを監視することができる。さらに、クライアントデバイスのデジタル信号プロセッサ(DSP)、WiFiチップ、デバイスSoC、および/または任意のその他のサブシステムは、本明細書において検討される実装のいずれかによって動作し得る。
図2Aは、ユーザ220がクライアントデバイス202に発話218を与え、デバイスSoC 208をスリープモードから遷移させることなくクライアントデバイス202にデジタル信号プロセッサを使用して発話218を処理させる図200を示す。クライアントデバイス202は、バッテリ、蓄電器、および/または任意のその他の充電式エネルギー源などの充電式の電源を含み得る電源210によって動作するコンピューティングデバイス222であることが可能である。クライアントデバイス202がデバイスSoC 208がスリープモードであるようにして動作しているとき、ユーザ220は、発話218を与えることができ、発話218は、クライアントデバイス202にデバイスSoC 208をスリープモードから遷移させる呼び出しフレーズと異なることが可能である。たとえば、ユーザ220は、クライアントデバイス202に接続された1つまたは複数のマイクロフォンにおいて受け取られ得る発話218「Hello...」を与えることができる。
クライアントデバイス202に接続されたマイクロフォンは、ユーザ220が発話218を与えることに応じて出力を提供することができる。デバイスSoC 208がスリープモードで動作するにもかかわらず、クライアントデバイス202のデジタル信号プロセッサDSP 204は、1つまたは複数の異なるアクションを実行するためにクライアントデバイス202を呼び出すことができる1つまたは複数の呼び出しフレーズのうちの呼び出しフレーズをユーザが与えたかどうかを判定するためにマイクロフォンの出力を監視し得る。一部の実装において、DSP 204は、オーディオデータを処理するためにデバイスSoC 208によって使用されるサンプリングレートよりも低いサンプリングレートを利用するプロセスによって発話218を特徴付けるオーディオデータ212を処理することができる。代替的にまたは追加的に、DSP 204は、デバイスSoC 208によって処理されるオーディオを生成するために使用されるマイクロフォンの数に比べてより少ない数のマイクロフォンからの出力に基づいて生成されたオーディオデータ212を処理することができる。言い換えると、DSP 204は、デバイスSoC 208によって利用されるチャネルの量に比べてオーディオデータのより少ないチャネルを利用し得る。より低いサンプリングレートおよび/またはより少ないチャネルを利用することは、計算効率が高く、電力消費(および結果として生じるバッテリの消費)を最小化することができる。代替的にまたは追加的に、DSP 204は、ユーザ220が呼び出しフレーズを与えたかどうかを判定するためにオーディオデータ212を処理するために第1のモデル214にアクセスし得る。
第1のモデル214は、ユーザ220が呼び出しフレーズを言ったかどうかを判定するためにデバイスSoC 208によって使用される第2のモデル216と異なることが可能である。たとえば、第1のモデル214は、オーディオデータが呼び出しフレーズを特徴付けるかどうかを判定するために訓練されたモデルであることが可能である。オーディオデータと呼び出しフレーズとの間の対応は、1つまたは複数の値として特徴付けられることが可能であり、オーディオデータと呼び出しフレーズとの間の類似性の閾値の度合いは、第2のモデル216に対応する別の閾値の度合いに比べてより低いことが可能である。言い換えると、発話は、第1のモデル214の閾値を満たすが第2のモデル216の閾値を満たさないと判定され得るが、発話は、第2のモデル216を満たし、第1のモデル214を満たさないと判定され得ない。
様々な実装において、第2のモデル216は、第1のモデル214に比べて(ビットで見て)より大きく、(たとえば、オーディオデータのより多くのチャネルを処理するための)より大きな入力の次元および/またはより大きな量の訓練されたノードを持ち得る。結果として、第2のモデル216を利用してオーディオデータを処理することは、第1のモデル214を利用してオーディオデータを処理することに比べてより計算コストが高くなり得る。しかし、一部の実装において、第2のモデル216を利用してオーディオデータを処理することは、第2のモデル216がより大きいこと、オーディオデータのより多くのチャネルが処理されること、より高い精度のサンプル、および/またはオーディオデータのより高いサンプリングレートが処理されることの結果として、ユーザ220が呼び出しフレーズを言ったかどうかのより正確な判定をもたらし得る。したがって、DSP 204は、オーディオデータが呼び出しフレーズの存在に関する「初期検査」に合格するかどうかを判定するためにより効率的な第1のモデル214を利用することが可能であり、「初期検査」に合格する場合にのみ、SoC 208およびより効率の低い(しかし、より正確な)第2のモデル216が、利用されることが可能である。これは、SoC 208および第2のモデル216のみを利用するよりもリソースの点で効率的である。
一部の実装において、DSP 204は、デバイスSoC 208がオーディオデータを処理するビット深度に比べて異なるビット深度でオーディオデータを処理し得る。たとえば、DSP 204は、オーディオデータを24ビットオーディオとしてキャプチャするが、オーディオデータを16ビットオーディオデータに変換し、それから、オーディオデータがユーザによって与えられた呼び出しフレーズを特徴付けるかどうかを判定するときに16ビットオーディオデータを使用することができる。16ビットオーディオデータが呼び出しフレーズを特徴付けるとDSP 204が判定するとき、DSP 204は、キャプチャされた24ビットオーディオデータがデバイスSoC 208に転送されるようにし得る。そのとき、デバイスSoC 208は、転送されたオーディオデータを処理するために異なるビット深度に変換するのではなく24ビットオーディオデータを処理することができる。
ユーザ220が発話218を与えることに応じて、DSP 204は、第1のモデル214を使用してオーディオデータ212を処理し、発話218が1つまたは複数の呼び出しフレーズのうちの呼び出しフレーズに対応しないと判定し得る。それに応じて、DSP 204は、さらなる処理のためにデバイスSoC 208をスリープから復帰させることを回避し得る。このようにして、デバイスSoC 208は、オーディオデータ212をさらに処理するために頻繁に初期化される必要がなく、スリープモードのままであることができる。これは、クライアントデバイス202が電源210によって提供されるエネルギーおよびクライアントデバイス202において利用可能な計算リソースの無駄をなくすことを可能にする。
図2Bは、ユーザがクライアントデバイス202に発話234を与え、クライアントデバイス202のDSP 204にクライアントデバイス202のデバイスSoC 208をウェイクアップさせる図230を示す。発話234は、クライアントデバイス202の1つまたは複数のマイクロフォンによってキャプチャされることが可能であり、クライアントデバイス202は、ポータブルおよび/または充電式の電源210により動作するコンピューティングデバイス222であることが可能である。最初に、デバイスSoC 208は、電力および計算リソースを節約するためにスリープモードで動作し得る。デバイスSoC 208がスリープモードで動作している間、DSP 204は、ユーザ220が1つまたは複数の呼び出しフレーズに対応する発話を与えるときを検出するように動作し得る。
例として、ユーザ220は、DSP 204によって検出されるときにDSP 204にデバイスSoC 208をスリープから復帰させることが可能である呼び出しフレーズに対応し得る「Assistant」などの発話234を与えることができる。呼び出しフレーズを検出するために、DSP 204は、クライアントデバイス202の1つまたは複数のマイクロフォンからの出力をオーディオデータ232に変換し得る。DSP 204は、発話234が呼び出しフレーズに対応するかどうかを判定するためにオーディオデータ232を処理するために第1のモデル214を使用することができる。発話234が呼び出しフレーズに対応するとDSP 204が判定するとき、DSP 204は、デバイスSoC 208をウェイクアップするかまたはそうでなければデバイスSoC 208をスリープモードから遷移させるためにデバイスSoC 208にコマンドを送信することができる。
DSP 204がデバイスSoC 208をスリープモードから動作モードに遷移させるとき、DSP 204は、さらなる処理のためにデバイスSoC 208にオーディオデータを送信することもできる。そのとき、デバイスSoC 208は、発話234が呼び出しフレーズに対応するかどうかを確認するために第2のモデル216を使用してオーディオデータを処理することができる。発話234が呼び出しフレーズに対応しなかったとデバイスSoC 208が判定するとき、デバイスSoC 208は、計算リソースおよび電力を節約するためにスリープモードに遷移して戻ることができる。代替的にまたは追加的に、発話234が呼び出しフレーズに対応しないが、DSP 204が発話234が呼び出しフレーズに対応すると判定したとデバイスSoC 208が判定するとき、デバイスSoC 208は、少なくともユーザ220からのさらなる入力を見込んで、ある期間の間、アクティブまたはアウェイク(awake)のままであることができる。一部の実装において、ウェイク時間は、発話234と呼び出しフレーズとの間の相関の度合い、ユーザ220の声の識別、および/または本明細書において検討される任意のその他の実装の特徴に基づき得る。例として、ウェイク時間は、デバイスSoC 208によって検出された相関の度合いと相関の閾値の度合いとの間の比較に基づいて決定され得る。たとえば、デバイスSoC 208によって検出された相関の度合いが0.87であり、相関の閾値の度合いが0.9であるとき、デバイスSoC 208のウェイク時間は、時間の期間Xに設定され得る。しかし、デバイスSoC 208によって検出された相関の度合いが0.79であり、相関の閾値の度合いが0.9である場合、デバイスSoC 208のウェイク時間は、時間の期間Yに設定されることが可能であり、Yは、Xよりも短い。
図2Cは、発話244がユーザ220によって与えられ、コンピューティングデバイス202のDSP 204にデバイスSoC 208をスリープモードから遷移させ、さらなる動作のために自動化されたアシスタントをさらに初期化させる図240を示す。クライアントデバイス202は、自動化されたアシスタントとインタラクションするための1つまたは複数の異なるインターフェースを含むコンピューティングデバイス222であることが可能である。自動化されたアシスタントを初期化するために、ユーザ220は、デバイスSoC 208がスリープモードであるときにDSP 204によって検出される呼び出しフレーズを与え得る。呼び出しフレーズは、DSP 204によって検出されるときにオーディオデータ242および第1のモデル214を使用して処理される発話244に包含され得る。オーディオデータ242が呼び出しフレーズを特徴付けるとDSP 204が第1のモデルを使用して判定するとき、DSP 204は、デバイスSoC 208にウェイクコマンド(wake command)を与えることができる。
デバイスSoC 208がウェイクコマンドを受信することに応じて、デバイスSoC 208は、第2のモデル216を使用して発話244に対応するオーディオデータを処理することができる。第2のモデル216を使用するオーディオデータの処理に基づいて、デバイスSoC 208は、発話244が呼び出しフレーズを含んでいたと判定し得る。したがって、ユーザ220が呼び出しフレーズを与えたとデバイスSoC 208が判定することに基づいて、デバイスSoC 208は、自動化されたアシスタントをローカルで初期化すること、および/またはサーバデバイスを介して自動化されたアシスタントを初期化するネットワーク要求を与えることができる。たとえば、デバイスSoC 208は、自動化されたアシスタントを初期化するためにクライアントデバイス202のWiFiチップ106にデータを送信し得る。データは、ユーザからの後続の要求がクライアントデバイス202を介して自動化されたアシスタントサーバに送信され得るように、インターネットなどのネットワークを介して自動化されたアシスタントサーバに送信され得る。一部の実装において、自動化されたアシスタントは、クライアントデバイス202にホストされることが可能であり、したがって、ユーザ220からの、自動化されたアシスタントが特定の動作を実行する要求は、クライアントデバイス202において処理されることが可能である。デバイスSoC 208が電力およびその他のリソースを節約するためにスリープし、ユーザ220からの特定の発話を検証するためにスリープから復帰することを可能にすることによって、クライアントデバイス202は、計算および電力リソースを節約することができ、これは、充電式の電源210を使用して動作するクライアントデバイス202にとって特に有利であり得る。
図3は、ユーザ320とクライアントデバイス302との間のインタラクションに関連する1つまたは複数のプロパティに基づいてデバイスSoC 308のウェイク時間を決定することができるクライアントデバイス302の図300を示す。ユーザ320は、1つまたは複数の異なる機能を実行するために自動化されたアシスタントを呼び出すためにクライアントデバイス302とインタラクションすることができる。たとえば、クライアントデバイス302は、音楽などのオーディオをレンダリングする、および/またはクライアントデバイス302のある共通のネットワークに接続される様々なその他のクライアントデバイスを制御することができるスタンドアロンのスピーカデバイス322であることが可能である。クライアントデバイス302は、異なる話し方および/またはクライアントデバイス302とのインタラクションの仕方をする複数の異なるユーザによって制御され得る。電力および計算リソースの無駄をやはりなくしながらユーザ間のそのような違いに対応するために、クライアントデバイス302は、デバイスSoC 308がユーザ320からの入力を監視する時間の量を制限するためのデバイスSoC 308のウェイク時間324を決定することができる。
例として、ユーザ320は、「Assistant, could you...」などの発話318を与え、その後、発話をどのようにして続けるべきかを考えるために短く間をおき得る。ユーザ320は、クライアントデバイス302とインタラクションしているときにそのような間を示す癖または歴を持ち得る。したがって、ユーザ320とクライアントデバイスとの間の以前のインタラクションを特徴付けるデータが、クライアントデバイス302のリソースを浪費せずにユーザ320からのさらなる入力をどれぐらい長く監視すべきかを決定するために使用され得る。たとえば、発話318に応じて、クライアントデバイス302のDSP 304は、オーディオデータ312が「Assistant」などの呼び出しフレーズを特徴付けるかどうかを判定するために発話318を特徴付けるオーディオデータ312を処理し得る。発話318が呼び出しフレーズを含むとDSP 304が判定するとき、DSP 304は、デバイスSoC 308がスリープモードから動作モードに遷移するようにするためにデバイスSoC 308と通信し得る。一部の実装において、DSP 304は、ユーザ320が呼び出しフレーズを与えたことを確認するためにデバイスSoC 308にオーディオデータ312を送信することもできる。
一部の実装においては、ユーザ320が呼び出しフレーズを確かに与えたとデバイスSoC 308が判定するとき、デバイスSoC 308は、発話318を与えたユーザを特定するためにオーディオデータ312をさらに処理し得る。たとえば、デバイスSoC 308は、オーディオデータ312によって包含される1つまたは複数の声の特徴を特定するために、ユーザからの許可の下で声識別モデルにアクセスすることができる。オーディオデータ312によって包含される声の特徴に基づいて、デバイスSoC 308は、1人または複数の異なるユーザを、発話318がそれらのユーザの特定の声の特徴に対応するかどうかに従ってランク付けし得る。そして、最も高いランク付けのユーザが、発話318を与えたユーザとして選択されることが可能であり、デバイスSoC 308は、最も高いランク付けのユーザを特定することに基づいてウェイク時間324を決定することができる。代替的にまたは追加的に、ユーザは、発話318の発生源の予測を生成するために使用され得る1つまたは複数のモデルを使用してデバイスSoC 308によって選択されることが可能である。代替的にまたは追加的に、オーディオデータ312は、ウェイク時間324を生成するためにやはり使用され得る1つまたは複数のモデルを使用して処理されることが可能である。
ユーザ320が呼び出しフレーズを与えたと判定することに応じて、デバイスSoC 308は、インターネットなどの広域ネットワークを介して自動化されたアシスタントを初期化するためにWiFiチップ306と通信することができる。しかし、一部の実装において、デバイスSoC 308は、ローカルエリアネットワークを介してクライアントデバイス302と通信するローカルデバイスによって自動化されたアシスタントを初期化し得る。自動化されたアシスタントが初期化している間、デバイスSoC 308は、少なくともウェイク時間324に等しい時間の量の間、クライアントデバイス302の1つまたは複数のインターフェースを監視し得る。ウェイク時間324が経過するとき、デバイスSoC 308は、スリープモードに戻ることができ、DSP 304は、クライアントデバイス302の1つまたは複数のインターフェースからの出力の監視を引き継ぐことができる。
一部の実装において、ウェイク時間324は、発話318と呼び出しフレーズとの間の相関の決定された度合いに基づき得る。たとえば、デバイスSoC 308および/またはDSP 304は、発話318と呼び出しフレーズとの間の相関の度合いを特徴付ける値を生成し得る。ウェイク時間324の量は、相関の度合いが高くなるにつれて減ることが可能であり、ウェイク時間324量は、相関の度合いが低くなるにつれて増えることが可能である。言い換えると、デバイスSoC 308は、発話318が呼び出しフレーズを含むと確認するための閾値の10%の許容範囲内に発話318が入っていると判定し、ウェイク時間324は、1分であることが可能である。しかし、発話318が呼び出しフレーズを確かに含み、したがって、閾値を満たすとデバイスSoC 308が判定するとき、ウェイク時間324は、5秒に設定され得る。ウェイク時間は、プロセッサの動作が基づくことができる任意の量のミリ秒、秒、分、および/または任意のその他の時間の値であることが可能であることに留意されたい。たとえば、呼び出しフレーズとより密接に相関する発話は、呼び出しフレーズとより密接でなく相関する異なる発話の結果として得られるウェイク時間よりも少ない合計のミリ秒を有するウェイク時間をもたらし得る。
図4は、デバイスSoC 444のウェイク時間を生成すること、DSP 442のクロックとデバイスSoC 444のクロックとの間の時間オフセットを生成すること、ならびに/またはデバイスSoC 444をスリープモードから遷移させることなくキャスティング要求に応答するためにWiFiチップ434を使用することによって計算リソースの無駄をなくすようにコンピューティングデバイス418を動作させるためのシステム400を示す。自動化されたアシスタント404は、コンピューティングデバイス418および/またはサーバデバイス402などの1つまたは複数のコンピューティングデバイスにおいて提供されるアシスタントアプリケーションの一部として動作し得る。ユーザは、マイクロフォン、カメラ、タッチスクリーンディスプレイ、ユーザインターフェース、および/またはユーザとアプリケーションとの間のインターフェースを提供することができる任意のその他の装置であることが可能であるアシスタントインターフェースを介して自動化されたアシスタント404とインタラクションすることができる。
たとえば、ユーザは、自動化されたアシスタント404に機能を実行させる(たとえば、データを提供させる、周辺デバイスを制御させる、エージェントにアクセスさせる、入力および/または出力を生成させるなど)ためにアシスタントインターフェースに口頭の、テキストの、および/またはグラフィカルな入力を与えることによって自動化されたアシスタント404を初期化し得る。コンピューティングデバイス418は、タッチインターフェースを介してユーザがコンピューティングデバイス418のアプリケーションを制御することを可能にするためにタッチ入力および/またはジェスチャを受け取るためのタッチインターフェースを含むディスプレイパネルであることが可能であるディスプレイデバイスを含み得る。一部の実装において、コンピューティングデバイス418は、ディスプレイデバイスを持たないことが可能であり、それによって、グラフィカルユーザインターフェース出力を提供せずに可聴ユーザインターフェース出力を提供する。さらに、コンピューティングデバイス418は、ユーザから口で言われた自然言語入力を受け取るためのマイクロフォンなどのユーザインターフェースを提供し得る。一部の実装において、コンピューティングデバイス418は、タッチインターフェースを含むことが可能であり、カメラを持たないことが可能であるが、任意で1つまたは複数のその他のセンサーを含み得る。
コンピューティングデバイス418および/またはその他のコンピューティングデバイス434は、インターネットなどのネットワーク440を介してサーバデバイス402と通信することができる。さらに、コンピューティングデバイス418およびその他のコンピューティングデバイス434は、WiFiネットワークなどのローカルエリアネットワーク(LAN)を介して互いに通信することができる。コンピューティングデバイス418は、コンピューティングデバイス418における計算リソースを節約するために計算タスクをサーバデバイス402にオフロードすることができる。たとえば、サーバデバイス402は、自動化されたアシスタント404をホストすることができ、コンピューティングデバイス418は、1つまたは複数のアシスタントインターフェース420において受け取られた入力をサーバデバイス402に送信することができる。しかし、一部の実装において、自動化されたアシスタント404は、コンピューティングデバイス418においてクライアントの自動化されたアシスタント422としてホストされ得る。
様々な実装において、自動化されたアシスタント404のすべてのまたは一部の態様は、コンピューティングデバイス418に実装され得る。それらの実装の一部において、自動化されたアシスタント404の態様は、コンピューティングデバイス418のクライアントの自動化されたアシスタント422によって実施され、自動化されたアシスタント404のその他の態様を実施するサーバデバイス402とインターフェースを取る。サーバデバイス402は、任意で、複数のスレッドによって複数のユーザおよびそれらのユーザの関連するアシスタントアプリケーションにサービスを提供し得る。自動化されたアシスタント404のすべてのまたは一部の態様がコンピューティングデバイス418のクライアントの自動化されたアシスタント422によって実施される実装において、クライアントの自動化されたアシスタント422は、コンピューティングデバイス418のオペレーティングシステムと別れている(たとえば、オペレーティングシステムの「上に」インストールされる)アプリケーションであることが可能であり--または代替的にコンピューティングデバイス418のオペレーティングシステムによって直接実施される(たとえば、オペレーティングシステムの、ただしオペレーティングシステムと一体的なアプリケーションと考えられる)ことが可能である。
一部の実装において、自動化されたアシスタント404および/またはクライアントの自動化されたアシスタント422は、コンピューティングデバイス418および/またはサーバデバイス402のための入力および/または出力を処理するために複数の異なるモジュールを使用し得る入力処理エンジン406を含むことが可能である。たとえば、入力処理エンジン406は、オーディオデータに包含されるテキストを特定するためにアシスタントインターフェース420において受け取られたオーディオデータを処理することができる音声処理モジュール408を含み得る。オーディオデータは、コンピューティングデバイス418の計算リソースを節約するために、たとえば、コンピューティングデバイス418からサーバデバイス402に送信され得る。
オーディオデータをテキストに変換するためのプロセスは、単語またはフレーズに対応するオーディオデータのグループを特定するためにニューラルネットワークおよび/または統計モデルを使用することができる音声認識アルゴリズムを含み得る。オーディオデータから変換されたテキストは、データ解析モジュール410によって解析され、ユーザからのコマンドフレーズを生成するおよび/または特定するために使用され得るテキストデータとして自動化されたアシスタントが利用可能であるようにされ得る。一部の実装において、データ解析モジュール410によって提供される出力データは、ユーザが自動化されたアシスタント404によって実行され得る特定のアクションおよび/もしくはルーチンならびに/または自動化されたアシスタント404によってアクセスされ得るアプリケーションもしくはエージェントに対応する入力を与えたかどうかを判定するためにパラメータモジュール412に提供され得る。たとえば、アシスタントデータ416が、サーバデバイス402に記憶される、および/またはクライアントデータ432としてコンピューティングデバイス418に記憶されることが可能であり、自動化されたアシスタント404および/またはクライアントの自動化されたアシスタント422によって実行され得る1つまたは複数のアクションを定義するデータと、アクションを実行するために必要なパラメータとを含み得る。
一部の実装において、コンピューティングデバイスは、メモリ436の少なくとも1つもしくは複数の部分および/またはブロードキャストエンジン438を含み得るWiFiチップ434を含むことが可能である。ブロードキャストエンジン438は、ネットワーク440を介して1つまたは複数のその他のクライアントデバイスからブローキャスとされたデータを受信し、メモリ436に記憶されたキャッシュされたデータを使用して応答データを生成することができる。WiFiチップ434は、コンピューティングデバイス418に関連付けられ得る利用可能なサービス、アプリケーション、ハードウェアの特徴、ならびに/または任意のその他のプロパティおよび/もしくは機能を特徴付けるデータを記憶し得る。コンピューティングデバイス418がウェイクモード(wake mode)で動作しているときに比べてより少ない電力および/または計算リソースをデバイスSoC 444が消費しているスリープモードでコンピューティングデバイス418が動作しているとき、WiFiチップ434は、デバイスSoC 444をスリープモードから遷移させることなくその他のクライアントデバイスからのキャスティング要求に応答し得る。
たとえば、クライアントデバイスからの要求がWiFiチップ434において受信され、要求がメモリ436に記憶されたデータによってやはり特徴付けられる目標のサービスを特定するとき、ブロードキャストエンジン438は、メモリ436からのキャッシュされたデータを使用して応答データを生成し、応答データをクライアントデバイスに提供することができる。クライアントデバイスが目標のサービスを使用するためにコンピューティングデバイス418を選択したならば、クライアントデバイスは、コンピューティングデバイス418にコマンドを送信することができ、WiFiチップ434は、コマンドを処理し、デバイスSoC 444をウェイクモードから動作モードに遷移させることができる。しかし、コンピューティングデバイス418が特定のサービスを提供する、特定のアプリケーションを初期化する、および/またはそれ以外の方法で要求元のクライアントデバイスにサービスを提供することができるかどうかを判定するのに十分なデータをメモリ436が含まないとブロードキャストエンジン438が判定する場合、WiFiチップ434は、要求を処理するためにデバイスSoC 444と通信することができる。この場合、デバイスSoC 444が、応答データを生成し、応答データをWiFiチップ434に提供することができ、WiFiチップ434は、応答データをクライアントデバイスに送信することができる。
一部の実装において、コンピューティングデバイス418は、クライアントの自動化されたアシスタント422および/または自動化されたアシスタント404へのアクセスを提供することができる1つまたは複数のアシスタントインターフェース420を含む。ユーザは、クライアントの自動化されたアシスタント422および/または自動化されたアシスタント404を呼び出すために1つまたは複数の異なる種類の入力を与えることができる。そのような入力は、口で言われた入力を含むことが可能であり、口で言われた入力は、デバイスSoC 444がスリープモードで動作しているとき、デジタル信号プロセッサ442によって処理され得る。コンピューティングデバイス418において利用可能な1つまたは複数の音声認識モデル440が、口で言われた入力を特徴付けるオーディオデータが自動化されたアシスタントを初期化するための呼び出しフレーズを包含するかどうかを判定するために使用され得る。さらに、1つまたは複数の音声認識モデル440が、ユーザからの後続の入力を検出するためにデバイスSoC 444がアウェイクのままであるべき時間の量を決定するためにウェイク時間エンジン448によって使用され得る。一部の実装において、ウェイク時間の量は、ユーザの発話と自動化されたアシスタントを呼び出すための呼び出しフレーズとの間の類似性の度合いに基づき得る。代替的にまたは追加的に、ウェイク時間の量は、オーディオ処理エンジン430が発話に対応するオーディオデータを処理し、発話を与えたユーザを特定することに基づき得る。たとえば、オーディオ処理エンジン430は、クライアントデータ432および/またはアシスタントデータ416を使用して、ユーザが自動化されたアシスタントとのインタラクション中に通常どのくらい長く間をおくかなどの、ユーザと自動化されたアシスタントとの間のインタラクションの特徴を決定し得る。ウェイク時間エンジン448は、この情報を使用して、ユーザと自動化されたアシスタントとの間の特定のインタラクション中のデバイスSoC 444のウェイク時間を生成することができる。
追加的にまたは代替的に、コンピューティングデバイス418の電力エンジン426が、電源446の推定された充電を決定し、推定された充電および/または動作時間の量をウェイク時間エンジン448に伝達し得る。電力エンジンによって推定された充電の量および/または動作時間の量は、デバイスSoC 444のウェイク時間を決定するためにウェイク時間エンジン448によって使用され得る。たとえば、ユーザが自動化されたアシスタントとインタラクションしているときに平均的なユーザよりも概して長く間をとり、電源446がいっぱいまで充電されているとき、ウェイク時間エンジン448は、少なくともそうではなく推定された充電が50%未満であるとした場合に割り振られるウェイク時間に比べて延長されたウェイク時間を割り振ることができる。代替的にまたは追加的に、ユーザがコンピューティングデバイス418とインタラクションしている平均的なユーザよりも概して短く間をとり、電源446がいっぱいまで充電されているとき、ウェイク時間エンジン448は、少なくともユーザの履歴的なインタラクションに基づいて、電力を節約するために、延長されたウェイク時間に比べてより短いウェイク時間を割り振ることができる。
一部の実装において、コンピューティングデバイス418は、コンピューティングデバイス418によって使用されるクロックの間のオフセットを決定するための時間オフセットエンジン424を含み得る。たとえば、DSP 442が、第1のクロックを動作させることができ、デバイスSoC 444が、コンピューティングデバイス418の動作中に第1のクロックからオフセットされ得る第2のクロックを動作させることができる。このオフセットは、特に、オーディオ処理エンジン430がアシスタントインターフェース420への口で言われた入力に対してエコー除去を実行しているときにオーディオ処理エンジン430における動作に影響を与え得る。
一部の実装において、DSP 442が動作する第1のクロックとデバイスSoC 444が動作する第2のクロックとの間のオフセットは、タイムスタンプを使用して決定され得る。タイムスタンプは、第1のクロックを使用してキャプチャされたクロック値および第2のクロックでキャプチャされた別のクロック値を含むクロック値のペアに対応し得る。DSP 442が呼び出しフレーズが検出されたかどうかを判定するために動作しており、デバイスSoC 444がスリープモードであるとき、DSP 442は、呼び出しフレーズが検出されたときの「ウェイク」時間に対応するクロック値を記録し得る。DSP 442がデバイスSoC 444をスリープモードから遷移させるとき、タイムスタンプが、第1のクロックおよび第2のクロックを使用して記録され得る。しかし、第2のクロックに関連して表される「ウェイク」時間を決定するために、タイムスタンプの第2のクロック値が、第1のクロックと第2のクロックとの間の決定された時間オフセットに従って「スケーリングされる」および/またはそれ以外の方法で調整されることが可能である。
時間オフセットは、デバイスSoC 444とDSP 442との両方が両方ともスリープモードでないときに記録され得る第1のタイムスタンプおよび第2のタイムスタンプを使用して決定され得る。第1のタイムスタンプは、クロック値の第1のペアに対応することが可能であり、第2のタイムスタンプは、クロック値の第2のペアに対応することが可能である。クロック値の第1のペアの第1のDSPのクロック値が、第1のクロックの差の値を生成するために、クロック値の第2のペアの第2のDSPのクロック値から引かれ得る。さらに、クロック値の第1のペアの第1のSoCのクロック値が、第2のクロックの差の値を生成するために、クロック値の第2のペアの第2のSoCのクロック値から引かれ得る。その後、いつ呼び出しフレーズが受け取られたかを決定するためにDSP 442がデバイスSoC 444をスリープから復帰させるとき、第1のクロックの差の値と第2のクロックの差の値との間のマッピングが使用され得る。たとえば、第1のクロックの差の値に対する第2のクロックの差の値の比が、決定されることが可能であり、比は、対応するデバイスSoCのクロック値を決定するためにDSPのクロック値を乗算されることが可能である。たとえば、DSP 442がデバイスSoC 444をスリープから復帰させるとき、ユーザが呼び出しフレーズを与えた時間に対応するDSPのクロック値が、デバイスSoC 444に提供され得る。そのとき、デバイスSoC 444は、デバイスSoCのクロックに関連して呼び出しフレーズがユーザによっていつ与えられたかを決定するために、DSPのクロック値をデバイスSoCのクロック値にマッピングすることができる。そして、この値が、オーディオデータの内容を分析するため(たとえば、ユーザからの発話の自然言語の内容を特定するため)に、エコー除去中などオーディオデータの処理中に使用され得る。
図5は、ユーザとコンピューティングデバイスとの間のインタラクションの1つまたは複数の特徴に基づいて選択される時間の量のためにコンピューティングデバイスの特定のプロセッサを初期化するための方法500を示す。方法500は、ユーザと自動化されたアシスタントとの間のインターフェースを提供することができる1つもしくは複数のプロセッサ、アプリケーション、ならびに/または任意のその他の装置および/もしくはモジュールによって実行され得る。方法500は、第1のプロセッサがユーザからの発話を検出したかどうかを判定する動作502を含み得る。第1のプロセッサは、第2のプロセッサがスリープモードで動作しているときに動作可能であり得る。スリープモードは、自動化されたアシスタントなどの1つまたは複数のアプリケーションが第2のプロセッサによってアクティブに実行されている動作モードに比べてより少ない電力および/またはより少ない計算リソースを第2のプロセッサが消費しているモードであることが可能である。一部の実装において、第1のプロセッサは、デジタル信号プロセッサであることが可能であり、第2のプロセッサは、デバイスSoCであることが可能である。第1のプロセッサと第2のプロセッサとの両方が、バッテリ、蓄電器、および/または任意のその他の充電式の電源などの充電式の電源を使用して動作しているコンピューティングデバイスに組み込まれ得る。
方法500は、第1のプロセッサが発話を検出したとき、動作504に進むことができる。そうではなく、発話が第1のプロセッサによって検出されなかったとき、第1のプロセッサは、ユーザが発話を与えたかどうかを判定するためにコンピューティングデバイスの1つまたは複数のマイクロフォンを監視し続けることができる。動作504は、発話が特定の呼び出しフレーズを含むかどうかを第1のプロセッサによって判定することを含み得る。コンピューティングデバイスは、1つまたは複数の異なる呼び出しフレーズのうちの特定の呼び出しフレーズがユーザによってコンピューティングデバイスに与えられたとき、第2のプロセッサをスリープモードから遷移させるように動作し得る。呼び出しフレーズは、たとえば、「Assistant」および/またはアプリケーションを初期化するために使用され得る任意のその他のフレーズであることが可能である。発話が呼び出しフレーズを含むと第1のプロセッサが判定するとき、方法500は、動作504から動作508に進むことができる。
動作508は、第2のプロセッサをスリープモードから動作モードに遷移させることを含み得る。動作508は、第1のプロセッサが呼び出しフレーズを特定することに応じて第1のプロセッサによって実行され得る。しかし、発話が呼び出しフレーズを含まないと第1のプロセッサが判定するとき、方法500は、動作504から動作506に進むことができる。動作506は、第2のプロセッサをスリープモードから動作モードに遷移させることを回避することを含み得る。言い換えると、第1のプロセッサが発話内で呼び出しフレーズを検出しないので、第1のプロセッサは、別の発話が検出されたかどうかを判定するために動作502に戻る。
方法500は、動作508から動作510に進むことができ、動作510は、オーディオデータを第1のプロセッサから第2のプロセッサに提供することを含み得る。オーディオデータは、ユーザによってコンピューティングデバイスに与えられた発話に対応し得る。一部の実装において、第1のプロセッサは、発話が呼び出しフレーズを含むかどうかを判定するために第1の呼び出しフレーズモデルを動作させることができ、一方、第2のプロセッサは、発話が呼び出しフレーズを含んでいたかどうかを判定するために第2の呼び出しフレーズモデルを動作させることができる。第1のモデルは、発話と呼び出しフレーズとの間の対応を特定するためのより低い閾値に対応することが可能であり、一方、第2の呼び出しフレーズモデルは、発話と呼び出しフレーズとの間の対応を決定するための、第1のモデルの閾値に比べてより高い閾値に対応することが可能である。したがって、第2のプロセッサがオーディオデータを受信するとき、第2のプロセッサは、第2の呼び出しフレーズモデルを使用して発話が呼び出しフレーズを含むかどうかを判定することができる。
方法500は、オーディオデータが呼び出しフレーズを特徴付ける度合いを第2のプロセッサによって決定する任意の動作512を含み得る。オーディオデータが呼び出しフレーズを特徴付ける度合いは、オーディオデータと呼び出しフレーズとの間の1つまたは複数の類似性を定量化する1つまたは複数の測定基準であることが可能である。このようにして、1つまたは複数の測定基準が、コンピューティングデバイスをその後どのようして動作させるべきかについての決定を行うために後で使用され得る。たとえば、オーディオデータが呼び出しフレーズを特徴付ける度合いを特徴付ける値が、(その他のオーディオデータが処理のために第2のプロセッサに渡されない場合に)スリープモードに遷移して戻る前に第2のプロセッサを動作モードで動作させる時間の量を決定するために使用され得る。
一部の実装において、方法500は、オーディオデータによって包含される声の特徴を第2のプロセッサによって決定する任意の動作514を含み得る。第2のプロセッサは、発話を与えたユーザ(たとえば、ユーザの対応するユーザプロファイル)を1人または複数のユーザからの許可の下で特定するために使用され得る声識別モデルを動作させることができる。たとえば、コンピューティングデバイスの各ユーザは、異なるおよび/または一意の声紋でしゃべることが可能であり、これらの違いに基づいて、声識別モデルは、どのユーザが発話を与えたかの予測に対応するランク付けを決定することができる。最も高いランク付けに対応するユーザが、コンピューティングデバイスに発話を与えたユーザとして選択され得る。声識別モデルを使用するユーザの特定は、第2のプロセッサをスリープモードではなく動作モードで動作させる時間の量を決定するためにユーザの許可の下で使用され得る。時間の量は、1人または複数のユーザと自動化されたアシスタントとの間の以前のインタラクションに基づき得る。たとえば、呼び出しフレーズを与えることと後続のコマンドを与えることとの間に概して遅延があるユーザのためにより多くの量の時間が選択されることが可能であり、一方、呼び出しフレーズを与えることと別の後続のコマンドを与えることとの間に概して遅延がない別のユーザのためにより少ない量の時間が選択されることが可能である。
方法500は、少なくともユーザとコンピューティングデバイスとの間のインタラクションの1つまたは複数の特徴に基づく時間の量の間、第2のプロセッサによって動作モードで動作する動作516をさらに含み得る。たとえば、一部の実装において、時間の量は、オーディオデータが呼び出しフレーズを特徴付ける度合いに基づき得る。代替的にまたは追加的に、時間の量は、オーディオデータを具現化する1つもしくは複数の声の特徴および/または発話を与えたユーザの特定に基づき得る。代替的にまたは追加的に、時間の量は、時刻、利用可能なコンピューティングデバイスの数、ネットワーク強度(network strength)、コンピューティングデバイスの特定の近さ以内にいるユーザの数、および/またはユーザとコンピューティングデバイスとの間のインタラクションに関連付けられ得る任意のその他の特徴などのユーザとコンピューティングデバイスとの間のインタラクションに対応する1つまたは複数のコンテキストの特徴に基づき得る。
図6は、第1のプロセッサと第2のプロセッサとの間の動作の違いに対応する決定された時間オフセットを使用してオーディオデータを処理する方法600を示す。方法600は、オーディオデータを処理することができる1つもしくは複数のプロセッサ、アプリケーション、および/または任意のその他の装置もしくはモジュールによって実行され得る。方法600において特定される第1のプロセッサおよび第2のプロセッサは、バッテリおよび/または蓄電器などのポータブル電源によって給電され、自動化されたアシスタントへのアクセスを提供するコンピューティングデバイスに組み込まれ得る。方法600は、コンピューティングデバイスおよび/またはコンピューティングデバイスと通信する別のデバイスにおいて発話が受け取られたかどうかを第1のプロセッサによって判定する動作602を含み得る。特に、第1のプロセッサは、ユーザが1つまたは複数のマイクロフォンに発話を与えたかどうかを判定するために1つまたは複数のマイクロフォンからの出力を処理し得る。発話が受け取られなかったと第1のプロセッサが判定するとき、第1のプロセッサは、発話が1人または複数のユーザによって受け取られたかどうかを判定するために1つまたは複数のマイクロフォンの出力を監視し続けることができる。
発話が検出されたと第1のプロセッサが判定するとき、方法600は、動作602から動作604に進むことができる。動作604は、発話が呼び出しフレーズを含んでいたかどうかを判定することを含み得る。第1のプロセッサは、第1のプロセッサによって実行され得る第1の呼び出しフレーズモデルを使用することによって発話が呼び出しフレーズを含んでいたかどうかを判定することができる。特に、第1の呼び出しフレーズモデルは、発話が呼び出しフレーズを含んでいたかどうかを判定するために1つまたは複数のマイクロフォンの出力を分析するために使用され得る。発話が呼び出しフレーズを含んでいたと判定されるとき、方法600は、動作604から動作608に進むことができる。
動作608は、第2のプロセッサをスリープモードから動作モードに遷移させることを含み得る。動作608は、発話が呼び出しフレーズを含んでいたと判定することに応じて第1のプロセッサによって初期化され得る。発話が呼び出しフレーズを含んでいなかったと第1のプロセッサが判定するとき、方法600は、動作604から動作606に進むことができる。動作606は、第2のプロセッサをスリープモードから動作モードに遷移させることを回避することを含むことができ、第2のプロセッサをスリープモードから遷移させる代わりに、方法600は、後続の発話が1つまたは複数のマイクロフォンに与えられたかどうかを検出するための動作602に戻ることができる。
方法600は、第2のプロセッサによってコンピューティングデバイスにオーディオ出力データを使用してオーディオ出力をレンダリングさせる動作610をさらに含み得る。オーディオ出力は、コンピューティングデバイスに接続される1つまたは複数のインターフェースによって提供され得る。たとえば、コンピューティングデバイスは、オーディオを発するための1つもしくは複数のスピーカを含むことが可能であり、および/またはコンピューティングデバイスは、1つもしくは複数のスピーカを含む別のコンピューティングデバイスと通信することが可能である。オーディオ出力データは、コンピューティングデバイスが接続されるネットワークを介して受信されたデータに基づき得る、および/またはコンピューティングデバイスのメモリに記憶されるデータに基づき得る。たとえば、オーディオ出力は、コンピューティングデバイスのメモリデバイスに記憶される音楽に対応するオーディオデータを使用してレンダリングされる音楽であることが可能である。オーディオ出力データは、オーディオの一部がコンピューティングデバイスによってレンダリングされたおよび/または1つもしくは複数のスピーカによって出力された時間を示す時間データを含むかまたはそのような時間データに関連付けられ得る。
方法600は、第2のプロセッサを使用して呼び出しフレーズが検出されたかどうかを判定する動作612に進むことができる。一部の実装において、第1のプロセッサは、デジタル信号プロセッサであることが可能であり、第2のプロセッサは、デバイスSoCであることが可能である。第1のプロセッサは、第1の音声認識モデルを動作させることが可能であり、第2のプロセッサは、第2の音声認識モデルを動作させることが可能である。第1の音声認識モデルは、発話が呼び出しフレーズを含むかどうかを判定するためのより低い閾値を有することが可能であり、第2の音声認識モデルは、発話が呼び出しフレーズを含むかどうかを判定するためのより高い閾値を有することが可能である。一部の実装において、第1のプロセッサは、第2のプロセッサによって処理されるオーディオデータよりも低い品質のオーディオデータを処理し得る。たとえば、第1のプロセッサは、第2のプロセッサが1つまたは複数のマイクロフォンを監視するサンプリングレートに比べてより低いサンプリングレートでコンピューティングデバイスの1つまたは複数のマイクロフォンの出力を監視し得る。代替的にまたは追加的に、第1のプロセッサは、第2のプロセッサによって監視されるオーディオチャネルの数に比べて少ない総数のオーディオチャネルを監視し得る。たとえば、第1のプロセッサは、発話がユーザによって与えられたかどうかを判定するために単一のマイクロフォンを監視することが可能であり、第2のプロセッサは、発話および/または呼び出しフレーズがユーザによって与えられたかどうかを判定するために2つ以上のマイクロフォンを監視することが可能である。
第2のプロセッサは、オーディオ出力がコンピューティングデバイスによってレンダリングされている間、1つまたは複数のマイクロフォンの出力を監視することができる。呼び出しフレーズがユーザによって与えられたと第2のプロセッサが判定するとき、方法600は、動作612から動作614に進むことができる。呼び出しフレーズがユーザによって与えられたと第2のプロセッサが判定しなかったとき、第2のプロセッサは、コンピューティングデバイスの1つまたは複数のマイクロフォンの出力を監視し続けることができる。動作614は、時間データと、第2のプロセッサによって検出された呼び出しフレーズを特徴付けるオーディオ入力データとの間の時間オフセットを第2のプロセッサによって決定することを含み得る。一部の実装において、時間オフセットは、第1のプロセッサのクロックおよび第2のプロセッサの別のクロックのクロック動作の特徴の間の違いに基づき得る。しかし、一部の実装において、第1のプロセッサおよび第2のプロセッサは、単一のクロックによって動作し得る。
方法600は、少なくともオーディオ入力データの1つまたは複数の特徴の削除を進めるために時間オフセットを使用してオーディオ入力データを第2のプロセッサによって処理する動作616をさらに含み得る。特に、時間オフセットは、1つまたは複数のマイクロフォンに与えられたオーディオ入力からレンダリングされたオーディオ出力の特徴を削除するためにエコー除去中に使用され得る。第1のプロセッサと第2のプロセッサとの間の時間オフセットを考慮することによって、そうでなければエコー除去中に明らかになったであろう誤りが、取り除かれ得る。これは、ユーザが発話を与えることと、自動化されたアシスタントが発話に応答することとの間のより短いレイテンシーにつながり得る。さらに、コンピューティングデバイスが充電式の電源によって動作するので、電源のそれぞれの完全な充電の動作時間が、少なくとも第2のプロセッサに関してレイテンシーおよび総動作時間を削減することによって引き延ばされ得る。
図7は、バッテリ給電式であるコンピューティングデバイスに含まれるWiFiチップを使用してブロードキャストデバイスに応答データを提供するための方法700を示す。方法は、ネットワークデータを処理することができる1つもしくは複数のアプリケーション、プロセッサ、および/または任意のその他の装置もしくはモジュールによって実行され得る。方法700は、mDNSブロードキャストデータがWiFiチップにおいて受信されたかどうかを判定する動作702を含み得る。mDNSブロードキャストデータがWiFiチップにおいて受信されたと判定されるとき、方法700は、動作704に進むことができる。動作704は、特定の目標ポートがmDNSブロードキャストデータによって特定されるかどうかを判定することを含み得る。動作702においてmDNSブロードキャストデータがWiFiチップにおいて受信されないとき、WiFiチップは、WiFiチップにおいて受信されたデータの任意のパケットがmDNSブロードキャストデータに対応するかどうかを判定するためにネットワークトラフィックを監視し続けることができる。
mDNSブロードキャストデータがクライアントデバイスの間でメディアをキャスティングするために指定されたポートなどの特定の目標ポートを特定するとき、方法700は、動作704から動作706に進むことができる。動作706は、WiFiチップのメモリに記憶されたキャッシュされたデータがmDNSブロードキャストデータの1つまたは複数の特徴を特徴付けるかどうかを判定することを含み得る。mDNSブロードキャストデータが特定の目標ポートを特定しないとき、方法700は、動作704から動作702に進むことができ、動作702において、WiFiチップは、ネットワークトラフィックを監視し続けることができる。
一部の実装では、動作706において、WiFiチップが、mDNSブロードキャストデータをWiFiチップのメモリに記憶されたキャッシュされたデータと比較することができる。たとえば、WiFiチップは、ネットワークを介して以前提供されたデータのパケット、および/またはネットワークを介して受信されたパケットに応じて生成されたデータを記憶し得る。たとえば、WiFiチップは、WiFiチップを含むコンピューティングデバイスが別のブロードキャストデバイスにも含まれるアプリケーションを含むことを示すことによって別のブロードキャストデバイスからのキャスト要求に以前応答した可能性がある。代替的にまたは追加的に、WiFiチップのメモリに記憶されたデータは、ブロードキャスト要求によって1つまたは複数のサービスがコンピューティングデバイスによって使用され得るかどうかを示すことができる。代替的にまたは追加的に、WiFiチップのメモリに記憶されたデータは、コンピューティングデバイスの1つまたは複数のハードウェアの特徴を示すことができる。代替的にまたは追加的に、WiFiチップは、WiFiチップによって記憶されたキャッシュされたデータがmDNSブロードキャストデータに関連する1つまたは複数の特徴を特徴付けるかどうかを判定することができる。このようにして、WiFiチップは、デバイスSoCなどのコンピューティングデバイスの別のプロセッサをウェイクアップすることなくネットワークを介してブロードキャストされた要求に応答することができる。
方法700は、動作706から動作708に進むことができ、動作708は、キャッシュされたデータに基づいて応答データを生成することを含み得る。動作708は、WiFiチップがmDNSブロードキャストデータに関連する1つまたは複数の特徴を特徴付けるキャッシュされたデータを有するときに実行され得る。たとえば、キャッシュされたデータがmDNSブロードキャストの対象であるアプリケーションを特定するとき、WiFiチップは、コンピューティングデバイスがその特定のアプリケーションを確かに含むことをブロードキャストデバイスに示すために応答データを生成し得る。このようにして、コンピューティングデバイスは、ブロードキャストデータに応答するために別のプロセッサをウェイクアップする必要がなく、それによって、バッテリ給電式デバイスに関しては制限され得る計算リソースおよび/または電力リソースの無駄をなくす。
WiFiチップのキャッシュされたデータがmDNSブロードキャストデータに関連する1つまたは複数の特徴を特徴付けないとき、方法700は、動作706から動作710に進むことができる。動作710は、コンピューティングデバイスのデバイスSoCを第1の動作モードから第2の動作モードに遷移させることを含み得る。一部の実装において、第1の動作モードは、デバイスSoCが第2の動作モードに比べてより少ないプロセスを実行しているモードであることが可能である。代替的にまたは追加的に、第1の動作モードは、第2の動作モードで動作しているときのデバイスSoCの電力消費に比べてデバイスSoCによるより少ない電力消費に対応し得る。
方法700は、動作708および/または動作710から動作712に進むことができる。動作712は、ブロードキャストされる応答データおよび/またはその他の応答データをコンピューティングデバイスに送信させることを含み得る。その他の応答データは、動作712が実行されるときに少なくとも部分的にデバイスSoCによって生成され得る。たとえば、キャッシュされたデータがmDNSブロードキャストデータに関連するサービスなどの特定の特徴を特定しないとき、デバイスSoCは、デバイスSoCがアクセス可能なデータを使用してmDNSブロードキャストデータに関連する1つまたは複数の特徴を特定することができるその他の応答データを生成するために使用され得る。一部の実装において、キャッシュされたデータは、WiFiチップがそうでなければWiFiチップのメモリを介してアクセス不可能であったデータを送信するタスクを課せられるとき、WiFiチップおよび/またはデバイスSoCによって更新され得る。このようにして、ネットワークを介したその他のクライアントデバイスからの後続の問い合わせまたは要求が、デバイスSoCをウェイクアップすることなくWiFiチップによって応答されることが可能であり、それによって、電力および計算リソースの無駄をなくす。
図8は、例示的なコンピュータシステム810のブロック図である。概して、コンピュータシステム810は、バスサブシステム812を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ814を含む。これらの周辺デバイスは、たとえば、メモリ825およびファイルストレージサブシステム826を含むストレージサブシステム824、ユーザインターフェース出力デバイス820、ユーザインターフェース入力デバイス822、ならびにネットワークインターフェースサブシステム816を含む可能性がある。入力および出力デバイスは、コンピュータシステム810とのユーザインタラクションを可能にする。ネットワークインターフェースサブシステム816は、外部ネットワークへのインターフェースを提供し、その他のコンピュータシステムの対応するインターフェースデバイスに結合される。
ユーザインターフェース入力デバイス822は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムなどのオーディオ入力デバイス、マイクロフォン、および/またはその他の種類の入力デバイスを含む可能性がある。概して、用語「入力デバイス」の使用は、コンピュータシステム810または通信ネットワークに情報を入力するためのすべての可能な種類のデバイスおよび方法を含むように意図される。
ユーザインターフェース出力デバイス820は、ディスプレイサブシステム、プリンタ、ファックスマシン、またはオーディオ出力デバイスなどの非視覚的表示を含む可能性がある。ディスプレイサブシステムは、ブラウン管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、プロジェクションデバイス、または可視画像を生成するための何らかのその他のメカニズムを含む可能性がある。ディスプレイサブシステムは、オーディオ出力デバイスを介するなどして非視覚的表示を提供する可能性もある。概して、用語「出力デバイス」の使用は、コンピュータシステム810からユーザまたは別のマシンもしくはコンピュータシステムに情報を出力するためのすべての可能な種類のデバイスおよび方法を含むように意図される。
ストレージサブシステム824は、本明細書において説明されるモジュールの一部またはすべての機能を提供するプログラミングおよびデータ構造を記憶する。たとえば、ストレージサブシステム824は、方法500、方法600、方法700の選択された態様を実行するため、ならびに/または第1のクライアントデバイス134、第2のクライアントデバイス102、第3のクライアントデバイス112、クライアントデバイス202、クライアントデバイス302、サーバデバイス402、コンピューティングデバイス418、および/もしくは本明細書において検討される任意のその他のエンジン、モジュール、チップ、プロセッサ、アプリケーションなどのうちの1つもしくは複数を実装するための論理を含む可能性がある。
これらのソフトウェアモジュールは、概して、プロセッサ814によって単独で、またはその他のプロセッサとの組合せで実行される。ストレージサブシステム824において使用されるメモリ825は、プログラムの実行中の命令およびデータの記憶のための主ランダムアクセスメモリ(RAM)830と、決まった命令が記憶される読み出し専用メモリ(ROM)832とを含むいくつかのメモリを含み得る。ファイルストレージサブシステム826は、プログラムおよびデータファイルのための永続的ストレージを提供することができ、ハードディスクドライブ、関連する取り外し可能な媒体をともなうフロッピーディスクドライブ、CD-ROMドライブ、光学式ドライブ、または取り外し可能なメディアカートリッジを含む可能性がある。特定の実装の機能を実装するモジュールは、ストレージサブシステム824内のファイルストレージサブシステム826によって、またはプロセッサ814によりアクセスされ得るその他のマシンに記憶される可能性がある。
バスサブシステム812は、コンピュータシステム810の様々な構成要素およびサブシステムに意図されたように互いに通信させるためのメカニズムを提供する。バスサブシステム812は単一のバスとして概略的に示されているが、バスサブシステムの代替的な実装は複数のバスを使用する可能性がある。
コンピュータシステム810は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意のその他のデータ処理システムもしくはコンピューティングデバイスを含む様々な種類であることが可能である。コンピュータおよびネットワークの変わり続ける性質が原因で、図8に示されたコンピュータシステム810の説明は、いくつかの実装を示すことを目的とする特定の例としてのみ意図される。図8に示されたコンピュータシステムよりも多くのまたは図8に示されたコンピュータシステムよりも少ない構成要素を有するコンピュータシステム810の多くのその他の構成が、可能である。
本明細書において説明されたシステムがユーザ(もしくは本明細書においては「参加者」と呼ばれることが多い)についての個人情報を収集するかまたは個人情報を利用する可能性がある状況において、ユーザは、プログラムまたは特徴がユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルな行為もしくは活動、職業、ユーザの好み、またはユーザの現在の地理的位置についての情報)を収集するかどうかを制御するか、あるいはユーザにより関連性がある可能性があるコンテンツをコンテンツサーバから受信するべきかどうかおよび/またはどのようにして受信するべきかを制御する機会を与えられる可能性がある。また、特定のデータが、個人を特定できる情報が削除されるように、データが記憶されるかまたは使用される前に1つまたは複数の方法で処理される可能性がある。たとえば、ユーザのアイデンティティ(identity)が、個人を特定できる情報がユーザに関して決定され得ないか、または地理的位置情報が取得される場合にユーザの地理的位置が(都市、郵便番号、もしくは州のレベルまでになど)一般化される可能性があり、したがって、ユーザの特定の地理的位置が決定され得ないように処理される可能性がある。したがって、ユーザは、情報がユーザについてどのようにして収集されるかおよび/または使用されるかを制御することができる可能性がある。
いくつかの実装が本明細書において説明され、図示されたが、本明細書において説明された機能を実行するならびに/あるいは結果および/または利点のうちの1つもしくは複数を得るための様々なその他の手段および/または構造が利用される可能性があり、そのような変更および/または修正の各々は本明細書において説明された実装の範囲内にあるとみなされる。より広く、本明細書において説明されたすべてのパラメータ、寸法、材料、および構成は、例示的であるように意図されており、実際のパラメータ、寸法、材料、および/または構成は、教示が使用される特定の1つの応用または複数の応用に依存する。当業者は、本明細書において説明された特定の実装の多くの均等物を通常の実験だけを使用して認識するかまたは突き止めることができる。したがって、上述の実装は単に例として提示されており、添付の請求項およびその均等物の範囲内で、実装が、特に説明され、特許請求されたのとは異なる方法で実施される可能性があることを理解されたい。本開示の実装は、本明細書において説明されたそれぞれの個々の特徴、システム、品物、材料、キット、および/または方法を対象とする。さらに、2つ以上のそのような特徴、システム、品物、材料、キット、および/または方法の任意の組合せは、そのような特徴、システム、品物、材料、キット、および/または方法が相互に矛盾しない場合は本開示の範囲に含まれる。
一部の実装においては、方法が、マイクロフォンの出力をコンピューティングデバイスの第1のプロセッサにおいて処理することであって、出力が、ユーザによってマイクロフォンに与えられた発話に対応し、コンピューティングデバイスが、発話がユーザによって与えられるときにスリープモードで動作している第2のプロセッサを含む、処理することなどの動作を含むものとして説明される。方法は、出力がコンピューティングデバイスを介してアクセスされ得る自動化されたアシスタントを呼び出すための呼び出しフレーズに少なくとも部分的に対応するかどうかを第1のプロセッサにおいて判定することをさらに含み得る。方法は、出力が呼び出しフレーズに少なくとも部分的に対応すると第1のプロセッサが判定するとき、第1のプロセッサによって第2のプロセッサをスリープモードから動作モードに遷移させることと、マイクロフォンの出力を特徴付けるデータを第1のプロセッサによって第2のプロセッサに提供することと、データが呼び出しフレーズを特徴付ける度合いを第1のプロセッサから受信されたデータに基づいて第2のプロセッサによって決定することと、データが呼び出しフレーズを特徴付ける度合いに基づいて、第2のプロセッサが動作モードのままであるウェイク時間の量を第2のプロセッサによって決定することと、第2のプロセッサのためのウェイク時間の量を決定することに応じて、第2のプロセッサを、少なくともウェイク時間の量の間、動作モードで動作させることとをさらに含み得る。
一部の実装において、方法は、少なくともウェイク時間の量の間、第2のプロセッサが動作モードで動作しているとき、ユーザまたは別のユーザからの別個の発話を特徴付ける追加のデータを第1のプロセッサから第2のプロセッサにおいて受信することと、第2のプロセッサによって追加のデータに基づいて自動化されたアシスタントに別個の発話に応答させることとをさらに含み得る。一部の実装において、第1のプロセッサは、第1の音声認識モデルを動作させ、第2のプロセッサは、第1の音声認識モデルとは異なる第2の音声認識モデルを動作させる。一部の実装において、第1の音声認識モデルは、データが呼び出しフレーズを特徴付ける別の度合いを決定するための第1の正確性の閾値に関連付けられ、第2の音声認識モデルは、データが呼び出しフレーズを特徴付ける度合いを決定するための、第1の正確性の閾値とは異なる第2の正確性の閾値に関連付けられる。一部の実装において、第2の正確性の閾値は、口で言われた入力と呼び出しフレーズとの間の相関のより大きな度合いによって満たされ、相関のより大きな度合いは、第1の正確性の閾値を満たすための相関の度合いを基準とする。
一部の実装において、第1のプロセッサは、デジタル信号プロセッサ(DSP)であり、第2のプロセッサは、デバイスシステムオンチップ(SoC)であり、コンピューティングデバイスは、デバイスSoCが動作モードであるときに第1のプロセッサおよび第2のプロセッサに電力を提供する1つまたは複数のバッテリを含む。一部の実装において、第2のプロセッサが動作モードのままであるウェイク時間の量を決定することは、第2のプロセッサのために指定されたウェイク時間の以前決定された量を特定することを含み、ウェイク時間の以前決定された量は、ユーザが発話を与える前のユーザと自動化されたアシスタントとの間の1つまたは複数のインタラクションに基づく。一部の実装において、方法は、出力が呼び出しフレーズに少なくとも部分的に対応しないと第1のプロセッサが判定するとき、第2のプロセッサをスリープモードから動作モードに遷移させることを第1のプロセッサによって回避することをさらに含み得る。
一部の実装において、方法は、出力が呼び出しフレーズに少なくとも部分的に対応すると第1のプロセッサが判定するとき、マイクロフォンの出力によって特徴付けられるユーザの声の特徴を、マイクロフォンの出力を特徴付けるデータに基づいて第2のプロセッサによって決定することをさらに含むことが可能であり、第2のプロセッサが動作モードのままであるウェイク時間の量を決定することが、マイクロフォンの出力によって特徴付けられるユーザの声の特徴にさらに基づく。
その他の実装においては、方法が、マイクロフォンの出力をコンピューティングデバイスの第1のプロセッサにおいて処理することであって、出力が、ユーザによってマイクロフォンに与えられた発話に対応し、コンピューティングデバイスが、発話がユーザによって与えられるときにスリープモードで動作している第2のプロセッサを含む、処理することなどの動作を含むものとして説明される。一部の実装において、方法は、出力がコンピューティングデバイスを介してアクセスされ得る自動化されたアシスタントを呼び出すための呼び出しフレーズに少なくとも部分的に対応するかどうかを第1のプロセッサにおいて判定することをさらに含み得る。一部の実装において、方法は、出力が呼び出しフレーズに少なくとも部分的に対応すると第1のプロセッサが判定するとき、第1のプロセッサによって第2のプロセッサをスリープモードから動作モードに遷移させることと、マイクロフォンの出力によって特徴付けられる声の特徴を第2のプロセッサによって決定することと、第2のプロセッサが動作モードのままであるウェイク時間の量を、出力によって特徴付けられる声の特徴に基づいて第2のプロセッサによって決定することと、第2のプロセッサのためのウェイク時間の量を決定することに基づいて、少なくともウェイク時間の量の間、第2のプロセッサを動作モードによって動作させることとをさらに含み得る。
一部の実装において、方法は、第2のプロセッサが動作モードによって動作した後、第2のプロセッサがその後スリープモードによって動作しているとき、マイクロフォンからの別の出力が自動化されたアシスタントを呼び出すための呼び出しフレーズに少なくとも部分的に対応するとコンピューティングデバイスの第1のプロセッサにおいて判定することであって、その他の入力が、別個のユーザが別個の発話をマイクロフォンに与えることに応じて与えられる、判定することと、第1のプロセッサによって第2のプロセッサをスリープモードから動作モードに遷移させることと、マイクロフォンからの別の出力によって特徴付けられる別の声の特徴を別の出力に基づいて第2のプロセッサによって決定することと、第2のプロセッサが動作モードのままであるウェイク時間の別の量を、別の出力によって特徴付けられる声の特徴に基づいて第2のプロセッサによって決定することであって、ウェイク時間の別の量が、ウェイク時間の量と異なる、決定することと、第2のプロセッサのためのウェイク時間の量を決定することに基づいて、少なくともウェイク時間の別の量の間、第2のプロセッサを動作モードによって動作させることとをさらに含み得る。
一部の実装において、第2のプロセッサは、発話がユーザおよび/または別個のユーザによってマイクロフォンに与えられたかどうかを判定するときに声特徴モデルを動作させる。一部の実装において、コンピューティングデバイスは、第2のプロセッサが動作モードによって動作しているときに第1のプロセッサおよび第2のプロセッサに電力を提供する1つまたは複数のバッテリを含む。一部の実装において、ウェイク時間の量は、ユーザが発話を与える前のユーザと自動化されたアシスタントとの間の1つまたは複数のインタラクションに基づく。
さらにその他の実装においては、方法が、コンピューティングデバイスのマイクロフォンへの入力がコンピューティングデバイスを介してアクセスされ得る自動化されたアシスタントを呼び出すための呼び出しフレーズに少なくとも部分的に対応するとコンピューティングデバイスのプロセッサによって判定することなどの動作を含むものとして説明される。方法は、マイクロフォンへの入力に基づいてプロセッサによってコンピューティングデバイスの別のプロセッサをスリープモードから動作モードに遷移させることをさらに含み得る。方法は、別のプロセッサがスリープモードから動作モードに遷移した後、コンピューティングデバイスと通信する1つまたは複数のスピーカを介してコンピューティングデバイスによって提供されるオーディオ出力を特徴付ける第1のデータを別のプロセッサによって生成することであって、第1のデータが、別のプロセッサが第1のデータを生成した時間を特徴付ける第1の時間データを含む、生成すること、別の入力がコンピューティングデバイスのマイクロフォンに与えられたとプロセッサによって判定すること、コンピューティングデバイスのマイクロフォンへの別の入力を特徴付ける第2のデータをプロセッサによって生成することであって、第2のデータが、プロセッサが第2のデータを生成した別の時間を特徴付ける第2の時間データを含む、生成すること、別のプロセッサが第1のデータを生成した時間とプロセッサが第2のデータを生成した別の時間との間の時間オフセットを別のプロセッサによって決定すること、1つまたは複数のスピーカによって提供されるオーディオ出力の1つまたは複数の特徴の削除を進めるために別のプロセッサによって時間オフセットを使用して第2のデータを処理すること、マイクロフォンへの別の入力がコンピューティングデバイスを介してアクセスされ得る自動化されたアシスタントを呼び出すための発話に対応するかどうかを、時間オフセットを使用して第2のデータを処理することに基づいて別のプロセッサによって判定することをさらに含み得る。方法は、マイクロフォンへの別の入力が自動化されたアシスタントを呼び出すための発話に対応すると判定されるとき、別のプロセッサによって自動化されたアシスタントにコンピューティングデバイスと通信するインターフェースを介して応答出力を提供させることをさらに含み得る。
一部の実装において、オーディオ出力の1つまたは複数の特徴の削除を進めるために時間オフセットを使用して第2のデータを処理することは、第2のデータおよびオーディオデータを使用して音響エコー除去(AEC: acoustic echo cancellation)プロセスを実行することを含む。一部の実装において、時間オフセットは、プロセッサのクロックおよび別のプロセッサの別のクロックのクロック動作の特徴の違いに対応する。一部の実装において、時間オフセットは、クロックを使用して決定された第1のクロック値と別のクロックを使用して決定された第2のクロック値との間の違いに基づく。一部の実装において、第1のクロック値および第2のクロック値は、別のプロセッサが動作モードであるときに決定される。一部の実装において、時間オフセットは、クロック値の間の違いの比率に別の時間に対応する時間の値をかけることによって決定される。一部の実装において、コンピューティングデバイスは、別のプロセッサが動作モードによって動作しているときにプロセッサおよび別のプロセッサに電力を提供する1つまたは複数のバッテリを含む。一部の実装において、プロセッサは、デジタル信号プロセッサ(DSP)であり、別のプロセッサは、デバイスシステムオンチップ(SoC)である。
さらにその他の実装においては、方法が、ブロードキャストデバイスからのマルチキャストドメインネームシステム(mDNS)のブロードキャストされたデータをブロードキャストデバイスからコンピューティングデバイスのWiFiチップにおいて受信することであって、コンピューティングデバイスが、コンピューティングデバイスのWiFiチップがmDNSのブロードキャストされたデータを受信するときに第1の動作モードで動作しているデバイスシステムオンチップ(SoC)を含む、受信することなどの動作を含むものとして説明される。方法は、mDNSのブロードキャストされたデータによって特定された目標ポートがコンピューティングデバイスを介してアクセスされ得る特定のポートに対応するかどうかをmDNSのブロードキャストされたデータに基づいてWiFiチップによって判定することをさらに含み得る。方法は、mDNSのブロードキャストされたデータによって特定された目標ポートがコンピューティングデバイスを介してアクセスされ得る特定のポートに対応するとき、デバイスSoCが第1の動作モードで動作しているときに、WiFiチップがアクセス可能なメモリデバイスに記憶されるキャッシュされたブロードキャストデバイスデータに、特定のポートに対応する目標ポートに基づいてアクセスすることと、キャッシュされたブロードキャストデバイスデータがmDNSのブロードキャストされたデータによって指定されたブロードキャストデバイスの1つまたは複数の特徴を特徴付けるかどうかをメモリに記憶されたキャッシュされたブロードキャストデバイスデータに基づいて判定することと、キャッシュされたブロードキャストデバイスデータがブロードキャストデバイスの1つまたは複数の特徴を特徴付けるとき、キャッシュされたブロードキャストデバイスデータに基づいて応答データを生成することと、応答データをブロードキャストデバイスに送信することとをさらに含み得る。
一部の実装において、方法は、mDNSのブロードキャストされたデータによって特定された目標ポートがコンピューティングデバイスを介してアクセスされ得る特定のポートに対応するとき、およびキャッシュされたブロードキャストデバイスデータがブロードキャストデバイスの1つまたは複数の特徴を特徴付けないとき、キャッシュされたブロードキャストデバイスデータが1つまたは複数の特徴を特徴付けないことに基づいてデバイスSoCを第1の動作モードから第2の動作モードに遷移させることであって、第2の動作モードが、第1の動作モードで動作しているときのデバイスSoCの電力消費に比べてデバイスSoCによるより高い電力消費に関連付けられる、遷移させることをさらに含み得る。
一部の実装において、コンピューティングデバイスは、デバイスSoCが第2の動作モードによって動作しているときにWiFiチップおよびデバイスSoCに電力を提供する1つまたは複数のバッテリを含む。一部の実装において、キャッシュされたブロードキャストデバイスデータがブロードキャストデバイスの1つまたは複数の特徴を特徴付けるかどうかを判定することは、キャッシュされたブロードキャストデバイスデータがブロードキャストデバイスからのmDNSのブロードキャストされたデータの送信を初期化したアプリケーションを特定するかどうかを判定することを含む。一部の実装において、キャッシュされたブロードキャストデバイスデータがブロードキャストデバイスの1つまたは複数の特徴を特徴付けるかどうかを判定することは、キャッシュされたブロードキャストデバイスデータがブロードキャストデバイスによって要求されているサービスを特定するかどうかを判定することを含む。一部の実装において、方法は、mDNSのブロードキャストされたデータによって特定された目標ポートがコンピューティングデバイスを介してアクセスされ得る特定のポートに対応するとき、およびキャッシュされたブロードキャストデバイスデータがブロードキャストデバイスの1つまたは複数の特徴を特徴付けないとき、mDNSのブロードキャストされたデータに基づいてその他の応答データをデバイスSoCに生成させることと、WiFiチップによってその他の応答データをブロードキャストデバイスに送信することとをさらに含み得る。