(57)【要約】  オーディオ入力システムを有する電子デバイスにおける方法は、デバイスにおいて口頭入力を受信するステップと、口頭入力を処理するステップと、口頭入力に基づいて決定された情報を含む要求を遠隔システムに送信するステップと、口頭入力に基づいた情報に応じて遠隔システムが生成した、要求に対する応答を受信するステップと、応答に応じた動作を実行するステップとを含み、前記した、受信するステップ、処理するステップ、送信するステップ、受信するステップ、および実行するステップのうちの１つ以上は、電子デバイス上で実行中の音声アシスタントライブラリの１つ以上の音声処理モジュールによって実行され、音声処理モジュールは、電子デバイス上で実行中または実行可能な１つ以上のアプリケーションプログラムおよび／またはオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供する。
2019523918.tif 000002
【特許請求の範囲】
【請求項１】
オーディオ入力システムと、１つ以上のプロセッサと、前記１つ以上のプロセッサによって実行される１つ以上のプログラムを格納したメモリとを備える電子デバイスにおいて、
前記デバイスにおいて口頭入力を受信するステップと、
前記口頭入力を処理するステップと、
前記口頭入力に基づいて決定された情報を含む要求を遠隔システムに送信するステップと、
前記口頭入力に基づいた情報に応じて前記遠隔システムが生成した、前記要求に対する応答を受信するステップと、
前記応答に応じた動作を実行するステップとを含み、
前記受信するステップ、前記処理するステップ、前記送信するステップ、前記受信するステップ、および前記実行するステップのうちの１つ以上は、前記電子デバイス上で実行中の音声アシスタントライブラリの１つ以上の音声処理モジュールによって実行され、前記音声処理モジュールは、前記電子デバイス上で実行中または実行可能な１つ以上のアプリケーションプログラムおよび／またはオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供する、方法。
【請求項２】
前記音声処理モジュールに関連付けられた少なくともいくつかの音声処理動作は、ワイドエリアネットワークを介して前記電子デバイスと互いに接続される前記遠隔システム上で実行される、請求項１に記載の方法。
【請求項３】
前記音声アシスタントライブラリは、複数の異なるデバイスタイプ上で動作可能な共通のオペレーティングシステム上で実行可能であり、それによって、前記音声処理動作のうちの１つ以上と対話するように構成された音声対応アプリケーションのポータビリティを可能にする、先行する請求項のいずれか１項に記載の方法。
【請求項４】
オーディオ入力システムを備える電子デバイス用の、デバイスを問わない音声アシスタントライブラリであって、
複数の異なる電子デバイスタイプ上に実装される共通のオペレーションシステム上で動作するように構成された１つ以上の音声処理モジュールを含み、前記音声処理モジュールは、前記電子デバイス上で実行中のアプリケーションプログラムおよびオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供し、それによって、前記音声処理動作のうちの１つ以上と対話するように構成された音声対応アプリケーションのポータビリティが可能になる、音声アシスタントライブラリ。
【請求項５】
前記音声処理モジュールに関連付けられた少なくともいくつかの音声処理動作は、ワイドエリアネットワークを介して前記電子デバイスと互いに接続されるバックエンドサーバ上で実行される、先行する請求項のいずれか１項に記載の音声アシスタントライブラリ。
【請求項６】
前記音声処理動作は、前記電子デバイスに接続されたデバイスを制御するように構成されたデバイス固有の動作を含む、先行する請求項のいずれか１項に記載の音声アシスタントライブラリ。
【請求項７】
前記音声処理動作は、要求された情報および／またはメディアコンテンツを前記電子デバイスのユーザに提供するまたは前記電子デバイスに接続されたデバイス上で提供するように構成された情報／メディア要求動作を含む、先行する請求項のいずれか１項に記載の音声アシスタントライブラリ。
【請求項８】
オーディオ入力システムと、
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行される１つ以上のプログラムを格納したメモリとを備え、前記１つ以上のプログラムは、
前記デバイスにおいて口頭入力を受信するための命令と、
前記口頭入力を処理するための命令と、
前記口頭入力に基づいて決定された情報を含む要求を遠隔システムに送信するための命令と、
前記口頭入力に基づいた情報に応じて前記遠隔システムが生成した、前記要求に対する応答を受信するための命令と、
前記応答に応じた動作を実行するための命令を含み、
前記受信すること、前記処理すること、前記送信すること、前記受信すること、および前記実行することのうちの１つ以上は、前記電子デバイス上で実行中の前記音声アシスタントライブラリの前記１つ以上の音声処理モジュールによって実行され、前記音声処理モジュールは、前記電子デバイス上で実行中または実行可能な１つ以上のアプリケーションプログラムおよび／またはオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供する、電子デバイス。
【請求項９】
前記音声処理モジュールに関連付けられた少なくともいくつかの音声処理動作は、ワイドエリアネットワークを介して前記電子デバイスと互いに接続される前記遠隔システム上で実行される、請求項８に記載のデバイス。
【請求項１０】
前記音声アシスタントライブラリは、複数の異なるデバイスタイプ上で動作可能な共通のオペレーティングシステム上で実行可能であり、それによって、前記音声処理動作のうちの１つ以上と対話するように構成された音声対応アプリケーションのポータビリティを可能にする、先行する請求項のいずれか１項に記載のデバイス。
【請求項１１】
１つ以上のプログラムを格納した非一時的なコンピュータ読み取り可能な記憶媒体であって、前記１つ以上のプログラムは、命令を含み、前記命令は、オーディオ入力システムと１つ以上のプロセッサとを有する電子デバイスによって実行されると、前記電子デバイスに、
前記デバイスにおいて口頭入力を受信させ、
前記口頭入力を処理させ、
前記口頭入力に基づいて決定された情報を含む要求を遠隔システムに送信させ、
前記口頭入力に基づいた情報に応じて前記遠隔システムが生成した、前記要求に対する応答を受信させ、
前記応答に応じた動作を実行させ、
前記受信すること、前記処理すること、前記送信すること、前記受信すること、および前記実行することのうちの１つ以上は、前記電子デバイス上で実行中の前記音声アシスタントライブラリの前記１つ以上の音声処理モジュールによって実行され、前記音声処理モジュールは、前記電子デバイス上で実行中または実行可能な１つ以上のアプリケーションプログラムおよび／またはオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供する、非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項１２】
前記音声処理モジュールに関連付けられた少なくともいくつかの音声処理動作は、ワイドエリアネットワークを介して前記電子デバイスと互いに接続される前記遠隔システム上で実行される、請求項１１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１３】
前記音声アシスタントライブラリは、複数の異なるデバイスタイプ上で動作可能な共通のオペレーティングシステム上で実行可能であり、それによって、前記音声処理動作のうちの１つ以上と対話するように構成された音声対応アプリケーションのポータビリティを可能にする、先行する請求項のいずれか１項に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１４】
オーディオ入力システムと、
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行される１つ以上のプログラムを格納したメモリとを備え、前記１つ以上のプログラムは、請求項１〜３のいずれか１項に記載の方法を実行するための命令を含む、電子デバイス。
【請求項１５】
１つ以上のプログラムを格納した非一時的なコンピュータ読み取り可能な記憶媒体であって、前記１つ以上のプログラムは、命令を含み、前記命令は、オーディオ入力システムと１つ以上のプロセッサとを有する電子デバイスによって実行されると、前記電子デバイスに、請求項１〜３のいずれか１項に記載の方法を実行させる、非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本願は、一般に、これに限定されないが、デバイスおよび関連ライブラリ用の音声アシスタントを含むコンピュータ技術に関する。
【背景技術】
【０００２】
背景
インターネットおよびクラウドコンピューティングの発展と並んで、オーディオ／音声入出力を通してユーザと対話する音声ベースのアシスタントの人気が高まっている。これらのアシスタントは、デジタルメディアを消費するためのインタフェースを提供し、一例を挙げると、ニュース、スポーツの得点、天気、および株といった様々な種類の情報を提供できる。
【０００３】
ユーザは、音声ベースのアシスタント機能があれば望ましいデバイスを複数有しているだろう。いろいろなデバイス間で実装および使用でき、これらいろいろなデバイス間で一貫性のあるエクスペリエンスを提供でき、かつ、特定のデバイスに特化した機能をサポートできる、音声ベースのアシスタントを有することが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
本明細書に記載の実装形態は、多種多様なオペレーティングシステムプラットフォームのためにローカルデバイスを制御することを可能にする方法で音声アシスタントを組込みシステムおよび／またはデバイスに組込むまたは含むことを対象とする。
【０００５】
いくつかの実装形態によれば、薄くてリソースの使用量が少ないデバイス側ライブラリは、オーディオデータのローカル処理、ウェイクワードまたはホットワードのリスニング、およびユーザ要求の送信を含む特徴がある。さらなる特徴として、クラウド脳への接続性、拡張可能な音声操作制御システム、多くの多様な動作環境への統合を可能にするポータビリティレイヤ、および残りのクライアントソフトウェアと非同期で更新できることなどがある。
【０００６】
記載の実装形態には、多くの異なるデバイス間で音声アシスタントと対話するための同じようなユーザエクスペリエンスを提供するという利点がある。
【０００７】
記載の実装形態には、音声アシスタント機能におけるイノベーションを、デバイス自体から使用可能なイノベーションと切り離すことが可能になるという別の利点がある。たとえば、改良された認識パイプラインが作られた場合、認識結果がデバイスに出力される一方で、デバイスのメーカーは、認識結果を受信するために何かをする必要なしに、引き続き、前の音声コマンドから利益を得ることができる。
【０００８】
いくつかの実装形態によれば、オーディオ入力システムと、１つ以上のプロセッサと、１つ以上のプロセッサによって実行される１つ以上のプログラムを格納したメモリとを有する電子デバイスにおける方法は、デバイスにおいて口頭入力を受信するステップと、口頭入力を処理するステップと、口頭入力に基づいて決定された情報を含む要求を遠隔システムに送信するステップと、口頭入力に基づいた情報に応じて遠隔システムが生成した、要求に対する応答を受信するステップと、応答に応じた動作を実行するステップとを含み、受信するステップ、処理するステップ、送信するステップ、受信するステップ、および実行するステップのうちの１つ以上は、電子デバイス上で実行中の音声アシスタントライブラリの１つ以上の音声処理モジュールによって実行され、音声処理モジュールは、電子デバイス上で実行中または実行可能な１つ以上のアプリケーションプログラムおよび／またはオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供する。
【０００９】
いくつかの実装形態では、オーディオ入力システムを備える電子デバイス用の、デバイスを問わない音声アシスタントライブラリは、複数の異なる電子デバイスタイプ上に実装される共通のオペレーションシステム上で動作するように構成された１つ以上の音声処理モジュールを含み、当該音声処理モジュールは、電子デバイス上で実行中のアプリケーションプログラムおよびオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供しそれによって、音声処理動作のうちの１つ以上と対話するように構成された音声対応アプリケーションのポータビリティが可能なる。
【００１０】
いくつかの実装形態では、電子デバイスは、オーディオ入力システムと、１つ以上のプロセッサと、１つ以上のプロセッサによって実行される１つ以上のプログラムを格納したメモリとを備える。１つ以上のプログラムは、デバイスにおいて口頭入力を受信するための命令と、口頭入力を処理するための命令と、口頭入力に基づいて決定された情報を含む要求を遠隔システムに送信するための命令と、口頭入力に基づいた情報に応じて遠隔システムが生成した、要求に対する応答を受信するための命令と、応答に応じた動作を実行するための命令を含み、受信すること、処理すること、送信すること、受信すること、および実行することのうちの１つ以上は、電子デバイス上で実行中の音声アシスタントライブラリの１つ以上の音声処理モジュールによって実行され、音声処理モジュールは、電子デバイス上で実行中または実行可能な１つ以上のアプリケーションプログラムおよび／またはオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供する。
【００１１】
いくつかの実装形態では、非一時的なコンピュータ読み取り可能な記憶媒体は、１つ以上のプログラムを格納する。１つ以上のプログラムは、命令を含み、命令は、オーディオ入力システムと１つ以上のプロセッサとを有する電子デバイスによって実行されると、電子デバイスに、デバイスにおいて口頭入力を受信させ、口頭入力を処理させ、口頭入力に基づいて決定された情報を含む要求を遠隔システムに送信させ、口頭入力に基づいた情報に応じて遠隔システムが生成した、要求に対する応答を受信させ、応答に応じた動作を実行させ、受信すること、処理すること、送信すること、受信すること、および実行することのうちの１つ以上は、電子デバイス上で実行中の音声アシスタントライブラリの１つ以上の音声処理モジュールによって実行され、音声処理モジュールは、電子デバイス上で実行中または実行可能な１つ以上のアプリケーションプログラムおよび／またはオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供する。
【図面の簡単な説明】
【００１２】
【図１】いくつかの実装形態に係る、ネットワーク環境の例を示すブロック図である。
【図２】いくつかの実装形態に係る、音声アシスタントクライアントデバイスの例を示す図である。
【図３】いくつかの実装形態に係る、サーバシステムの例を示す図である。
【図４】いくつかの実装形態に係る、音声アシスタントライブラリの機能ビューを示すブロック図である。
【図５】いくつかの実装形態に係る、デバイス上での口頭入力を処理するための方法のフロー図である。
【発明を実施するための形態】
【００１３】
図面の全体にわたって、同じ参照番号は、対応する部分を指す。
実装形態の説明
ここで、様々な実装形態を詳細に説明する。これらの実装形態の例は、添付の図面に示される。以下の詳細な説明において、本発明および記載の実装形態の十分な理解を与えるために、たくさんの具体的な詳細を説明する。しかしながら、これらの具体的な詳細がなくても、本発明を実施することはできる。その他の場合、周知の方法、プロシージャ、構成要素、および回路については、実装形態の態様を不必要にあいまいにしないよう、詳細に説明しない。
【００１４】
いくつかの実装形態では、音声アシスタントの目的は、いろいろなデバイス間で利用可能であり、かつ、多種多様なユースケースを可能する、個人向けにカスタマイズされた音声インタフェースをユーザに提供することであり、ユーザの一日にわたって一貫したエクスペリエンスを提供する。音声アシスタントおよび／または関連機能は、ファーストパーティ製品およびデバイス、ならびにサードバーティ製品およびデバイスに統合されてもよい。
【００１５】
ユースケース例は、メディアを含む。音声コマンドを用いて、音楽、ラジオ、ポッドキャスト、ニュース、およびその他のオーディオメディアの再生および制御を音声によって開始してもよい。たとえば、ユーザは、（たとえば、「ジャズ音楽を再生して」、「ＦＭ１０７．５を再生して」、「次の曲にスキップして」、「“連続”再生して」）という音声コマンドを発して、様々な種類のオーディオメディアを再生または制御できる。さらには、このようなコマンドを用いて、地上波のラジオ放送局のオンラインストリーミング、音楽サブスクリプションサービス、ローカルストレージ、リモートストレージなど、いろいろなソースからのオーディオメディアを再生してもよい。さらには、音声アシスタントは、キャスティングデバイスで使用できる統合を利用して、さらなるコンテンツをサポートしてもよい。
【００１６】
別のユースケース例は、リモート再生を含む。ユーザは、音声アシスタント機能を含むキャスティングデバイスに対して音声コマンドを発行してもよく、音声コマンドに応じて、コマンドにおいて指定されたデバイス上で、指定された１つ以上のデバイスからなる群に含まれるデバイス上で、または、コマンドにおいて指定されたエリアにある１つ以上のデバイス上で、メディアが再生される（たとえば、キャストされる）。また、ユーザは、一般的なカテゴリまたは特定のコンテンツをコマンドにおいて指定でき、コマンドにおいて指定されたカテゴリまたはコンテンツに応じて、適切なメディアが再生される。
【００１７】
さらに別のユースケース例は、生産性を向上させる機能（たとえば、タイマ、目覚まし時計、カレンダー）、ホームオートメーション、検索エンジン（たとえば、検索クエリ）の技術が活かされた質問と回答、楽しみ（たとえば、アシスタントの個性、ジョーク、ゲーム、イースターエッグ）、および日々のタスク（たとえば、交通手段、移動、食べ物、ファイナンス、贈り物など）などの非メディアである。
【００１８】
いくつかの実装形態では、音声アシスタントは、キャスティングデバイスのオプション機能として提供され、音声アシスタント機能は、キャスティングデバイスの一部として更新されてもよい。
【００１９】
いくつかの実装形態では、音声コマンドおよびユーザからの口頭入力に含まれるホットワードまたはキーワードの検出は、アプリケーションプロセッサによって行われる（たとえば、ユーザが音声コマンドまたは口頭入力を話しかける先のクライアントデバイスまたはキャスティングデバイスにおいて行われる）。いくつかの実装形態では、ホットワードの検出は、外部のデジタル信号プロセッサによって行われる（ユーザが音声コマンドまたは口頭入力を話しかける先のクライアントデバイスまたはキャスティングデバイスとは対照的に、たとえば、サーバシステムが音声コマンドを処理することによって行われる）。
【００２０】
いくつかの実装形態では、音声アシスタント機能を有するデバイスは、遠方界サポート、「プッシュ・トゥ・アシスト」または「プッシュ・トゥ・トーク」（たとえば、音声アシスタント機能を開始するためのボタン）、およびＡＣ電源のうちの１つ以上を含む。
【００２１】
いくつかの実装形態では、音声アシスタントは、オーディオ入力装置（たとえば、マイクロホン、進行中の再生のメディアループバック）、マイクロホンの状態（たとえば、オン／オフ）、ダッキング（たとえば、ホットワードまたはプッシュ・トゥ・トークによってアシスタントが起動（トリガー：trigger）されたときにすべての出力の音量を下げること）、ならびに新しいアシスタントイベントおよびステータスメッセージ（たとえば、アシスタントが起動された（たとえば、ホットワードを聞いた、アシスタントボタンが押された）、音声をリスニングする、サーバ上で待機する、応答する、応答が終了する、アラーム／タイマが鳴っている）のうちの１つ以上のためのアプリケーションプログラミングインタフェース（ＡＰＩ）を含む。
【００２２】
いくつかの実装形態では、音声アシスタント機能を有するデバイスは、デバイス上の音声アシスタントの機能を可能にまたは容易にする（たとえば、デバイス上の音声アシスタント機能をセットアップする、ユーザにチュートリアルを提供する）ために、設定上の目的のために別のデバイスと（たとえば、スマートフォン上の設定アプリケーションと）通信してもよい。設定またはセットアップには、デバイスの位置の指定、ユーザアカウントとの関連付け、ユーザの音声制御へのオプトイン、メディアサービス（たとえば、映像ストリーミングサービス、音楽ストリーミングサービス）へリンクすることおよびメディアサービスの優先順位をつけること、ホームオートメーション設定などが含まれてもよい。
【００２３】
いくつかの実装形態では、音声アシスタントを有するデバイスは、１つ以上のユーザインタフェース要素またはユーザに対する表示を含んでもよい。ユーザインタフェース要素のうちの１つ以上は、物理的要素であり（たとえば、１つ以上のＬＥＤを用いて表示される光のパターン、スピーカが出力するサウンドパターン）、ホットワードに左右されない「プッシュ・トゥ・アシスト」または「プッシュ・トゥ・トーク」トリガー、「ミュートマイクロホン」トリガーおよび視覚的なステータス表示、「ホットワード待ちステータス」の視覚的な表示、「ホットワードを検出」の視覚的な表示、少し離れた位置（たとえば、１５フィート）から視認できる「アシスタントは積極的にリスニング中です」の視覚的な表示、「アシスタントが作業中／考え中」の視覚的な表示、「音声メッセージ／通知があります」の視覚的な表示、「音量レベル」の制御方法およびステータスインジケータ、ならびに「一旦停止／再開」制御方法のうちの１つ以上を含んでもよい。いくつかの実装形態では、これらの物理的なユーザインタフェース要素は、クライアントデバイスまたはキャスティングデバイスによって提供される。いくつかの実装形態では、音声アシスタントは、エクスペリエンスが異なるデバイス間で一貫するように、異なるデバイス間で共通のユーザインタフェース要素または表示のセットをサポートする。
【００２４】
いくつかの実装形態では、音声アシスタントは、デバイス固有のコマンドおよび／またはホットワード、ならびに、コマンドおよび／またはホットワードの定義済みの標準セットをサポートする。
【００２５】
図１は、いくつかの実装形態に係る、ネットワーク環境１００を示す図である。ネットワーク環境１００は、キャスティングデバイス１０６および／または音声アシスタントクライアントデバイス１０４を含む。キャスティングデバイス１０６（たとえば、ＧＯＯＧＬＥ  ＩＮＣ．によるＣＨＲＯＭＥＣＡＳＴ）は、オーディオ入力装置１０８（たとえば、マイクロホン）およびオーディオ出力装置１１０（たとえば、１つ以上のスピーカ）に直接または通信可能に接続される。いくつかの実装形態では、オーディオ入力装置１０８およびオーディオ出力装置１１０は、キャスティングデバイス１０６に通信可能に接続されたデバイス（たとえば、スピーカシステム、テレビ、サウンドバー）のコンポーネントである。いくつかの実装形態では、オーディオ入力装置１０８は、キャスティングデバイス１０６のコンポーネントであり、オーディオ出力装置１１０は、キャスティングデバイス１０６が通信可能に接続されたデバイスのコンポーネントであり、または、オーディオ出力装置１１０は、キャスティングデバイス１０６のコンポーネントであり、オーディオ入力装置１０８は、キャスティングデバイス１０６が通信可能に接続されたデバイスのコンポーネントである。いくつかの実装形態では、オーディオ入力装置１０８およびオーディオ出力装置１１０は、キャスティングデバイス１０６のコンポーネントである。
【００２６】
いくつかの実装形態では、キャスティングデバイス１０６は、クライアント１０２に通信可能に接続される。クライアント１０２は、音声アシスタント機能を含む、キャスティングデバイス１０６の構成を容易にするアプリケーションまたはモジュール（たとえば、キャスティングデバイス設定アプリ）を含んでもよい。
【００２７】
いくつかの実装形態では、キャスティングデバイス１０６は、ディスプレイ１４４に接続される。
【００２８】
いくつかの実装形態では、キャスティングデバイス１０６は、１つ以上の視覚的インジケータ１４２（たとえば、ＬＥＤライト）を含む。
【００２９】
いくつかの実装形態では、キャスティングデバイス１０６は、受信モジュール１４６を含む。いくつかの実装形態では、受信モジュール１４６は、キャスティングデバイス１０６を操作し、操作対象として、たとえば、ハードウェア関数およびコンテンツソースとの通信を含む。いくつかの実装形態では、キャスティングデバイス１０６において、異なるコンテンツソースに対して異なる受信モジュール１４６がある。いくつかの実装形態では、受信モジュール１４６は、異なるコンテンツソースのためのサブモジュールをそれぞれ含む。
【００３０】
音声アシスタントクライアントデバイス１０４（たとえば、ＧＯＯＧＬＥ  ＩＮＣ．によるＧＯＯＧＬＥアシスタント、ＧＯＯＧＬＥ  ＩＮＣ．によるＧＯＯＧＬＥ  ＨＯＭＥを有するスマートフォン、ラップトップもしくはデスクトップコンピュータ、タブレットコンピュータ、音声コマンドデバイス、モバイル機器、または車載システム）は、オーディオ入力装置１３２（たとえば、マイクロホン）と、オーディオ出力装置１３４（たとえば、１つ以上のスピーカ、ヘッドフォン）とを備える。いくつかの実装形態では、音声アシスタントクライアントデバイス１０４（たとえば、ＧＯＯＧＬＥ  ＩＮＣ．によるＧＯＯＧＬＥアシスタント、ＧＯＯＧＬＥ  ＩＮＣ．によるＧＯＯＧＬＥ  ＨＯＭＥを有する音声コマンドデバイス、モバイル機器、または車載システム）は、クライアント１４０（たとえば、スマートフォン、タブレットデバイス）に通信可能に接続される。クライアント１４０は、音声アシスタント機能を含む、音声アシスタントクライアントデバイス１０４の設定を容易にするアプリケーションまたはモジュール（たとえば、音声コマンドデバイス設定アプリ）を含んでもよい。
【００３１】
いくつかの実装形態では、音声アシスタントクライアントデバイス１０４は、１つ以上の視覚的インジケータ１５２（たとえば、ＬＥＤライト）を含む。視覚的なインジケータ（たとえば、ＬＥＤライト）を有する音声アシスタントクライアントデバイスの例を、２０１６年５月１３日に出願され、「LED Design Language for Visual Affordance of Voice User Interfaces（音声ユーザインタフェースの視覚的アフォーダンスのためのＬＥＤデザイン言語）」と題された米国仮出願第６２／３３６，５６６号（引用により本明細書に援用する）を示した図４Ａに示す。
【００３２】
キャスティングデバイス１０６および音声アシスタントクライアントデバイス１０４は、音声アシスタントモジュールまたはライブラリ１３６のそれぞれのインスタンスを含む。音声アシスタントモジュール／ライブラリ１３６は、いろいろなデバイス（たとえば、キャスティングデバイス１０６、音声アシスタントクライアントデバイス１０４）間で音声アシスタント機能を実装するモジュール／ライブラリである。音声アシスタント機能は、デバイス固有の特徴（たとえば、デバイス固有の特徴を音声アシスタントによって制御するためのサポート）を引き続き許可しつつ、いろいろなデバイス間で一貫性がある。いくつかの実装形態では、音声アシスタントモジュール／ライブラリ１３６は、デバイス間で同じまたは同様であり、同じライブラリのインスタンスがいろいろなデバイスに含まれ得る。
【００３３】
いくつかの実装形態では、デバイスのタイプによっては、音声アシスタントモジュール／ライブラリ１３６は、デバイスにインストールされたアプリケーションにもしくはデバイスのオペレーティングシステムに含まれる、またはデバイスに埋め込まれる（たとえば、ファームウェアに埋め込まれる）。
【００３４】
いくつかの実装形態では、キャスティングデバイス１０６における音声アシスタントモジュール／ライブラリ１３６−１は、受信モジュール１４６と通信して、音声アシスタント動作を行う。
【００３５】
いくつかの実装形態では、キャスティングデバイス１０６における音声アシスタントモジュール／ライブラリ１３６−１は、視覚的インジケータ１４２を制御できる、または視覚的インジケータ１４２に影響を与えることができる。
【００３６】
いくつかの実装形態では、音声アシスタントクライアントデバイス１０４における音声アシスタントモジュール／ライブラリ１３６−２は、視覚的インジケータ１５２を制御できる、または視覚的インジケータ１５２に影響を与えることができる。
【００３７】
キャスティングデバイス１０６および音声アシスタントクライアントデバイス１０４は、１つ以上の通信ネットワーク１１２（たとえば、ローカルエリアネットワーク、ワイドエリアネットワーク、インターネット）を通じてサーバシステム１１４に通信可能に接続される。音声アシスタントモジュール／ライブラリ１３６は、オーディオ入力装置１０８／１３２によって拾われた（たとえば、キャプチャされた）口頭入力を検出（たとえば、受信）し、当該口頭入力を（たとえば、ホットワードを検出するために）処理し、処理済みの口頭入力または処理済みの口頭入力をエンコーディングしたものをサーバ１１４に送信する。サーバ１１４は、処理済みの口頭入力またはそれをエンコーディングしたものを受信し、受信した口頭入力を処理して、当該口頭入力に対する適切な応答を決定する。適切な応答は、コンテンツ、情報、または、キャスティングデバイス１０６または音声アシスタントクライアントデバイス１０４に関数または動作を実行させるためのキャスティングデバイス１０６または音声アシスタントクライアントデバイス１０４に対する命令、コマンド、もしくはメタデータであってもよい。サーバ１１４は、コンテンツもしくは情報が出力される（たとえば、オーディオ出力装置１１０／１３４から出力される）および／または関数が実行されるキャスティングデバイス１０６または音声アシスタントクライアントデバイス１０４に、応答を送る。処理の一部として、サーバ１１４は、１つ以上のコンテンツ／情報ソース１３８と通信し、応答用に、コンテンツまたは情報を取得するまたはそのようなものを参照してもよい。いくつかの実装形態では、コンテンツ／情報ソース１３８として、検索エンジン、データベース、ユーザのアカウントに関連付けられた情報（たとえば、カレンダー、タスク一覧、電子メール）、ウェブサイト、およびメディアストリーミングサービスなどが挙げられる。いくつかの実装形態では、音声アシスタントクライアントデバイス１０４およびキャスティングデバイス１０６は、互いに通信または対話を行ってもよい。このような通信または対話の例、および音声アシスタントクライアントデバイス１０４（たとえば、ＧＯＯＧＬＥ  ＩＮＣ．によるＧＯＯＧＬＥ  ＨＯＭＥ）の動作の例が、２０１６年５月１３日に出願され、「LED Design Language for Visual Affordance of Voice User Interfaces（音声ユーザインタフェースの視覚的アフォーダンスについてのデザイン言語）」と題された米国仮出願第６２／３３６，５６６号、２０１６年５月１３日に出願され、「Voice-Controlled Closed Caption Display（音声制御されたクローズドキャプションの表示）」と題された米国仮出願第６２／３３６，５６９号、および２０１６年５月１３日に出願され、「Media Transfer among Media Output Devices（メディア出力デバイス間のメディア転送）」と題された米国仮出願第６２／３３６，５６５号に開示されている。これらの出願のすべては、引用により本明細書に援用する。
【００３８】
いくつかの実装形態では、音声アシスタントモジュール／ライブラリ１３６は、オーディオ入力装置１０８／１３２によってキャプチャされた口頭入力を受信し、当該口頭入力（処理をせずまたはほとんどせずに）またはそれをエンコーディングしたものをサーバ１１４に送信する。サーバ１１４は、口頭入力を処理して、ホットワードを検出し、適切な応答を決定し、この応答をキャスティングデバイス１０６または音声アシスタントクライアントデバイス１０４に送る。
【００３９】
キャスティングデバイス１０６または音声アシスタントクライアントデバイス１０４が関数を実行するためのコマンドを当該口頭入力が含むとサーバ１１４が判断した場合、サーバ１１４は、キャスティングデバイス１０６または音声アシスタントクライアントデバイス１０４に当該関数を実行するように指示する命令またはメタデータを応答に含めて送信する。当該関数は、デバイスに固有であってもよく、音声アシスタントにおけるこのような関数をサポートするための機能が、音声アシスタントモジュール／ライブラリ１３６に追加またはリンクされるカスタムモジュールまたは関数として、キャスティングデバイス１０６またはクライアント１０４に含まれてもよい。
【００４０】
いくつかの実装形態では、サーバ１１４は、口頭入力の処理動作を行い、かつ、当該口頭入力に対する応答を決定する音声処理バックエンド１４８を含む、またはこれに接続される。
【００４１】
いくつかの実装形態では、サーバ１１４は、ダウンロード可能な音声アシスタントライブラリ１５０を含む。ダウンロード可能な音声アシスタントライブラリ１５０（たとえば、音声アシスタントライブラリ１３６と同じまたはそれを更新したもの）は、新しい特徴もしくは機能、または更新を含んでもよく、デバイスに音声アシスタントライブラリを追加するまたは音声アシスタントライブラリ１３６を更新するためにダウンロードすることができる。
【００４２】
図２は、いくつかの実装形態に係る、ネットワーク環境１００の音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６の例を示すブロック図である。音声アシスタントクライアントデバイス１０４の例として、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、ワイヤレススピーカ（たとえば、ＧＯＯＧＬＥ  ＩＮＣ．によるＧＯＯＧＬＥ  ＨＯＭＥ）、音声コマンドデバイス（たとえば、ＧＯＯＧＬＥ  ＩＮＣ．によるＧＯＯＧＬＥ  ＨＯＭＥ）、テレビ、サウンドバー、キャスティングデバイス（たとえば、ＧＯＯＧＬＥ  ＩＮＣ．によるＣＨＲＯＭＥＣＡＳＴ）、メディアストリーミングデバイス、家電、家庭用電子機器、車載システム、およびウェアラブルパーソナルデバイスなどが挙げられるが、これらに限定されない。音声アシスタントクライアントデバイス１０４（たとえば、ＧＯＯＧＬＥ  ＩＮＣ．によるＧＯＯＧＬＥ  ＨＯＭＥ、ＧＯＯＧＬＥアシスタント機能を有するモバイル機器）またはキャスティングデバイス１０６（たとえば、ＧＯＯＧＬＥ  ＩＮＣ．によるＣＨＲＯＭＥＣＡＳＴ）は、通常、１つ以上の処理装置（ＣＰＵ）２０２と、１つ以上のネットワークインターフェース２０４と、メモリ２０６と、これらのコンポーネントを互いに接続するための１つ以上の通信バス２０８（チップセットと呼ばれる場合もある）とを備える。音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６は、ユーザ入力を容易にする１つ以上の入力装置２１０を備える。１つ以上の入力装置２１０は、オーディオ入力装置１０８または１３２（たとえば、音声コマンド入力部またはマイクロホン）を含み、必要に応じて、キーボード、マウス、タッチスクリーンディスプレイ、タッチ入力パッド、ジェスチャーキャプチャカメラ、またはその他の入力ボタンもしくは制御部などのその他の入力装置を含む）。いくつかの実装形態では、音声アシスタントクライアントデバイス１０２は、キーボードを補助または置き換えるために、マイクロホンおよび音声認識、または、カメラおよびジェスチャー認識を使用する。また、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６は、１つ以上の出力装置２１２を備える。１つ以上の出力装置２１２は、オーディオ出力装置１１０または１３４（たとえば、１つ以上のスピーカ、ヘッドフォンなど）を含み、必要に応じて、ユーザインタフェースの提示を可能にし、かつ、コンテンツおよび情報を表示する１つ以上の表示装置（たとえば、ディスプレイ１４４）および／または１つ以上の視覚的インジケータ１４２もしくは１５２（たとえば、ＬＥＤ）を含む。必要に応じて、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６は、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６の位置を特定するための、ＧＰＳ（Global Positioning Satellite）または他の地理的位置受信機など、位置検出部２１４を備える。また、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６は、必要に応じて、他のオブジェクト（たとえば、ウェアラブルパーソナルデ���イスの場合、ユーザ／着用者）への音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６の近接度を判断するための近接検出デバイス２１５、たとえば、ＩＲセンサを備えてもよい。必要に応じて、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６は、センサ（複数可）２１３（たとえば、加速度計、ジャイロスコープなど）を含む。
【００４３】
メモリ２０６は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭなどの高速ランダムアクセスメモリ、またはその他のランダムアクセス固体記憶装置を含み、必要であれば、１つ以上の磁気ディスク記憶装置、１つ以上の光学ディスク記憶装置、１つ以上のフラッシュメモリデバイスなどの不揮発性メモリ、または１つ以上のその他の不揮発性固体記憶装置を含む。メモリ２０６は、必要であれば、１つ以上の処理装置２０２から離れて位置する１つ以上の記憶装置を含む。メモリ２０６、またはメモリ２０６内の当該不揮発性メモリは、非一時的なコンピュータ読み取り可能な記憶媒体を含む。いくつかの実装形態では、メモリ２０６、またはメモリ２０６の非一時的なコンピュータ読み取り可能な記憶媒体は、以下のプログラム、モジュール、およびデータ構造、またはそれらのサブセットもしくはスーパーセットを格納する。
【００４４】
●様々な基本システムサービスを処理するための、かつ、ハードウェア依存のタスクを実行するためのプロシージャを含むオペレーティングシステム２１６。
【００４５】
●１つ以上のネットワークインターフェース２０４（有線またはワイヤレス）、および、インターネット、その他のワイドエリアネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどの１つ以上のネットワーク１１２を介して音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６をその他のデバイス（たとえば、サーバシステム１１４、クライアント１０２、１４０、その他の音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６）に接続するためのネットワーク通信モジュール２１８。
【００４６】
●１つ以上の出力装置２１２（たとえば、ディスプレイ、スピーカなど）を介して音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６で情報の提示を可能にするためのユーザインタフェースモジュール２２０。
【００４７】
●１つ以上のユーザ入力または１つ以上の入力装置２１０がキャプチャまたは受信した対話を処理し、当該入力および対話を解釈するための入力処理モジュール２２２。
【００４８】
●口頭入力を処理し、当該口頭入力をサーバ１１４に提供し、サーバ１１４から応答を受信し、当該応答を出力するための音声アシスタントモジュール１３６。
【００４９】
●以下を含む、少なくとも音声アシスタントモジュール１３６に関連付けられたデータを格納するためのクライアントデータ２２６。
【００５０】
○音声アシスタントモジュール１３６の設定および構成ならびに音声アシスタント機能に関連付けられた情報を格納するための音声アシスタント設定２２８。
【００５１】
○コンテンツまたは情報の定義済みのおよび／またはユーザ指定のソースおよびカテゴリを格納するためのコンテンツソース／情報ソース２３０およびコンテンツカテゴリ／情報カテゴリ２３２。
【００５２】
○受信したコマンドおよび要求、コマンドおよび要求に対する応答、コマンドおよび要求に応答して行われた動作など、音声アシスタントモジュール１３６の動作および使用に関連付けられた情報（たとえば、ログ）を格納するための利用履歴２３４。
【００５３】
○コンテンツソース／情報ソース２３０におけるユーザのそれぞれのアカウントおよびこれらの認可されたアカウントのアカウント情報にアクセスするための１つ以上のユーザの認可および認証情報を格納するためのユーザアカウントおよび認可２３６。
【００５４】
○コンテンツソースと通信することを含む、キャスティングデバイス１０６のキャスティング機能を操作するための受信モジュール１４６。
【００５５】
いくつかの実装形態では、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６は、音声アシスタントおよび関連機能のための１つ以上のライブラリおよび１つ以上のアプリケーションプログラミングインタフェース（ＡＰＩ）を含む。これらのライブラリは、音声アシスタントモジュール１３６または受信モジュール１４６に含まれてもよく、または、音声アシスタントモジュール１３６または受信モジュール１４６によって互いにリンクされてもよい。ライブラリは、音声アシスタント機能または音声アシスタント機能を容易にしたその他の関数に関連付けられたモジュールを含む。ＡＰＩは、音声アシスタント機能を容易にするハードウェアおよびその他のソフトウェア（たとえば、オペレーティングシステム、その他のアプリケーション）へのインタフェースを提供する。たとえば、音声アシスタントクライアントライブラリ２４０、デバッギングライブラリ２４２、プラットフォームＡＰＩ２４４、およびＰＯＳＩＸ  ＡＰＩ２４６がメモリ２０６に格納されてもよい。これらのライブラリおよびＡＰＩについては、図４を参照して、以下にさらに詳しく説明する。
【００５６】
いくつかの実装形態では、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６は、音声アシスタントクライアントライブラリ２４０のモジュールおよび関数を利用する音声アプリケーション２５０を含み、必要に応じて、デバッギングライブラリ２４２、プラットフォームＡＰＩ２４４、およびＰＯＳＩＸ  ＡＰＩ２４６を含む。いくつかの実装形態では、音声アプリケーション２５０は、音声アシスタントクライアントライブラリ２４０の使用によって音声対応になるファーストパーティまたはサードパーティアプリケーションなどである。
【００５７】
上記要素の各々は、前述の記憶装置のうちの１つ以上に格納されてもよく、上述の関数を実行するための命令セットに対応する。上記モジュールまたはプログラム（つまり、命令セット）は、別々のソフトウェアプログラム、プロシージャ、モジュール、またはデータ構造として実装される必要がないため、これらのモジュールの様々なサブセットが、様々な実装形態において組み合わされるまたは並べ替えられてもよい。いくつかの実装形態では、メモリ２０６は、必要であれば、上記モジュールおよびデータ構造のサブセットを格納する。さらに、メモリ２０６は、必要であれば、上に記載されないさらなるモジュールおよびデータ構造を格納する。
【００５８】
図３は、いくつかの実装形態に係る、ネットワーク環境１００のサーバシステム１１４の例を示すブロック図である。サーバ１１４は、通常、１つ以上の処理装置（ＣＰＵ）３０２と、１つ以上のネットワークインターフェース３０４と、メモリ３０６と、これらのコンポーネント（チップセットと呼ばれる場合もある）を互いに接続するための１つ以上の通信バス３０８とを備える。サーバ１１４は、必要に応じて、キーボード、マウス、音声コマンド入力部またはマイクロホン、タッチスクリーンディスプレイ、タッチ入力パッド、ジェスチャーキャプチャカメラ、またはその他の入力ボタンもしくは制御部など、ユーザ入力を容易にする１つ以上の入力装置３１０を備える。さらには、サーバ１１４は、キーボードを補助または置き換えるために、マイクロホンおよび音声認識、または、カメラおよびジェスチャー認識を使用してもよい。いくつかの実装形態では、サーバ１１４は、必要に応じて、たとえば、電子デバイス上にプリントされた図形シリーズコードを撮影するための１つ以上のカメラ、スキャナ、または光センサ部を備える。また、サーバ１１４は、必要に応じて、ユーザインタフェースの提示を可能にし、かつ、コンテンツを表示する、１つ以上のスピーカおよび／または１つ以上の表示装置を含む、１つ以上の出力装置３１２を備える。
【００５９】
メモリ３０６は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭなどの高速ランダムアクセスメモリ、またはその他のランダムアクセス固体記憶装置を含み、必要であれば、１つ以上の磁気ディスク記憶装置、１つ以上の光学ディスク記憶装置、１つ以上のフラッシュメモリデバイスなどの不揮発性メモリ、または１つ以上のその他の不揮発性固体記憶装置を含む。メモリ３０６は、必要であれば、１つ以上の処理装置３０２から離れて位置する１つ以上の記憶装置を含む。メモリ３０６、またはメモリ３０６内の当該不揮発性メモリは、非一時的なコンピュータ読み取り可能な記憶媒体を含む。いくつかの実装形態では、メモリ３０６、またはメモリ３０６の非一時的なコンピュータ読み取り可能な記憶媒体は、以下のプログラム、モジュール、およびデータ構造、またはそれらのサブセットもしくはスーパーセットを格納する。
【００６０】
●様々な基本システムサービスを処理するための、かつ、ハードウェア依存のタスクを実行するためのプロシージャを含むオペレーティングシステム３１６。
【００６１】
●１つ以上の処理装置３０４（有線またはワイヤレス）、および、インターネット、その他のワイドエリアネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどの１つ以上のネットワーク１１２を介してサーバシステム１１４をその他のデバイス（たとえば、音声アシスタントクライアントデバイス１０４、キャスティングデバイス１０６、クライアント１０２、クライアント１４０）に接続するためのネットワーク通信モジュール３１８。
【００６２】
●クライアントデバイス１０４またはキャスティングデバイス１０６の位置情報に基づいて、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６の近接度および／または位置を特定するための近接度／位置特定モジュール３２０。
【００６３】
●少なくとも以下のうちの１つ以上を含む、音声アシスタントの口頭入力（たとえば、音声アシスタントクライアントデバイス１０４およびキャスティングデバイス１０６から受信した口頭入力）を処理するための音声アシスタントバックエンド１１６。
【００６４】
○口頭入力を処理し、口頭入力に含まれるコマンドおよび要求を識別するための口頭入力処理モジュール３２４。
【００６５】
○コマンドおよび要求に対するコンテンツおよび情報応答を集めるためのコンテンツ／情報収集モジュール３２６。
【００６６】
○コマンドおよび要求に応答する音声出力を生成し、応答であるコンテンツおよび情報とともに当該音声出力を追加するための応答生成モジュール３２８。
【００６７】
●以下を含む、少なくとも音声アシスタントプラットフォームの動作に関連付けられたデータを格納するサーバシステムデータ３３０。
【００６８】
○以下を含む、音声アシスタントプラットフォームのユーザに関連付けられた情報を格納するためのユーザデータ３３２。
【００６９】
−音声アシスタント設定２２８に対応する音声アシスタント設定情報と、コンテンツソース／情報ソース２３０およびコンテンツカテゴリ／情報カテゴリ２３２に対応する情報を格納するためのユーザ音声アシスタント設定３３４。
【００７０】
−コマンドおよび要求の履歴、ならびに対応する応答を含む、音声アシスタントについてのユーザの履歴（たとえば、ログ）を格納するためのユーザ履歴３３６。
【００７１】
−コンテンツソース／情報ソース２３０におけるユーザのそれぞれのアカウントにアクセスするためのユーザの認可および認証情報と、ユーザアカウントおよび認可２３６に対応する、これらの認可されたアカウントのアカウント情報とを格納するためのユーザアカウントおよび認可３３８。
【００７２】
上記要素の各々は、前述の記憶装置のうちの１つ以上に格納されてもよく、上述の関数を実行するための命令セットに対応する。上記モジュールまたはプログラム（つまり、命令セット）は、別々のソフトウェアプログラム、プロシージャ、モジュール、またはデータ構造として実装される必要がないため、これらのモジュールの様々なサブセットが、様々な実装形態において組み合わされるまたは並べ替えられてもよい。いくつかの実装形態では、メモリ２０６は、必要であれば、上記モジュールおよびデータ構造のサブセットを格納する。さらに、メモリ２０６は、必要であれば、上に記載されないさらなるモジュールおよびデータ構造を格納する。
【００７３】
いくつかの実装形態では、音声アシスタントモジュール１３６（図２）は、１つ以上のライブラリを含む。ライブラリは、それぞれの関数を実行するモジュールまたはサブモジュールを含む。たとえば、音声アシスタントクライアントライブラリは、音声アシスタントの関数を実行するモジュールを含む。また、音声アシスタントモジュール１３６は、特定のハードウェア（たとえば、クライアントデバイスまたはキャスティングデバイス上のハードウェア）、特定のオペレーティングソフトウェア、または遠隔システムと協働するための１つ以上のアプリケーションプログラミングインタフェース（ＡＰＩ）を含んでもよい。
【００７４】
いくつかの実装形態では、ライブラリは、たとえば、帯域通過処理、フィルタリング処理、消去処理、およびホットワード検出を含む、オーディオ信号処理動作をサポートするモジュールを含む。いくつかの実装形態では、ライブラリは、バックエンド（たとえば、サーバベースの）音声 処理システムに接続するためのモジュールを含む。いくつかの実装形態では、ライブラリは、デバッギング（たとえば、音声認識のデバッギング、ハードウェア問題のデバッギング、自動テスト）用のモジュールを含む。
【００７５】
図４は、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６に格納され得、かつ、音声アシスタントモジュール１３６または別のアプリケーションによって実行され得るライブラリおよびＡＰＩを示す図である。ライブラリおよびＡＰＩは、音声アシスタントクライアントライブラリ２４０と、デバッギングライブラリ２４２と、プラットフォームＡＰＩ２４４と、ＰＯＳＩＸ  ＡＰＩ２４６とを含んでもよい。音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６におけるアプリケーション（たとえば、音声アシスタントモジュール１３６、音声アシスタントとの協働をサポートしたいであろうその他のアプリケーション）は、当該アプリケーションにおいて音声アシスタント機能を提供またはサポートするために、これらのライブラリおよびＡＰＩを含んでもよく、またはそれらにリンクされてもよく、かつ、当該ライブラリおよびＡＰＩを実行してもよい。いくつかの実装形態では、音声アシスタントクライアントライブラリ２４０とデバッギングライブラリ２４２は別個のライブラリである。音声アシスタントクライアントライブラリ２４０とデバッギングライブラリ２４２とを別々に分けておくことによって、これらのライブラリのセキュリティ上の異なる影響を考慮に入れた異なるリリースおよび更新プロシージャが容易になる。
【００７６】
いくつかの実装形態では、これらのライブラリは、柔軟性がある。ライブラリは、複数のデバイスタイプ間で使用してもよく、同じ音声アシスタント機能を組み込んでもよい。
【００７７】
いくつかの実装形態では、ライブラリは、標準の共用オブジェクト（たとえば、標準のＬｉｎｕｘ（登録商標）共用オブジェクト）に依存するため、これらの標準の共用オブジェクトを利用する異なるオペレーティングシステムまたはプラットフォームと互換性がある（たとえば、組込み用Ｌｉｎｕｘの様々なＬｉｎｕｘディストリビューションおよびフレーバー）。
【００７８】
いくつかの実装形態では、ＰＯＳＩＸ  ＡＰＩ２４６は、様々なオペレーティングシステムとの互換性のために、標準ＡＰＩを提供する。よって、音声アシスタントクライアントライブラリ２４０は、ＰＯＳＩＸに準拠する異なるオペレーティングシステムのデバイスに含まれてもよく、ＰＯＳＩＸ  ＡＰＩ２４６は、音声アシスタントクライアントライブラリ２４０と異なるオペレーティングシステムとの間の互換インタフェースを提供する。
【００７９】
いくつかの実装形態では、ライブラリは、音声アシスタントを実装する異なる種類のデバイス（たとえば、タイマ、アラーム、音量調節）間で利用可能なベースユースケースをサポートおよび容易にするためのモジュールを含む。
【００８０】
いくつかの実装形態では、音声アシスタントクライアントライブラリ２４０は、音声アシスタントを起動、設定、および音声アシスタントと対話するための関数またはモジュールを含んだコントローラインタフェース４０２を含む。いくつかの実装形態では、コントローラインタフェース４０２は、デバイスにおいて音声アシスタントを開始するための「Ｓｔａｒｔ（）」関数またはモジュール４０４と、音声アシスタントにアクションを登録する（たとえば、音声アシスタントを介してアクションが実施可能になり得るように）ための「ＲｅｇｉｓｔｅｒＡｃｔｉｏｎ（）」関数またはモジュール４０６と、更新された設定を用いて音声アシスタントの再設定するための「Ｒｅｃｏｎｆｉｇｕｒｅ（）」４０８関数と、基本イベント用の関数のセットをアシスタントに登録するための「ＲｅｇｉｓｔｅｒＥｖｅｎｔＯｂｓｅｒｖｅｒ（）」関数４１０とを含む。
【００８１】
いくつかの実装形態では、音声アシスタントクライアントライブラリ２４０は、特定の音声アシスタント機能に関連付けられた複数の関数またはモジュールを含む。たとえば、ホットワード検出モジュール４１２は、音声入力を処理してホットワードを検出する。音声処理モジュール４１４は、音声入力に含まれる音声を処理し、音声をテキストに変換する、または、テキストを音声に変換する（たとえば、単語および表現の識別、音声からテキストデータへの変換、テキストデータから音声への変換）。アクション処理モジュール４１６は、口頭入力に応答したアクションおよび動作を行う。ローカルタイマ／アラーム／音量調節モジュール４１８は、デバイスにおける目覚まし時計、タイマ、および音量調節機能、ならびに音声入力によるそれらの制御を容易にする（たとえば、デバイスにおけるタイマ、時計、目覚まし時計を管理する）。ロギング／評価指標モジュール４２０は、音声入力および応答を記録し（たとえば、ログを取る）、関連する評価指標（たとえば、応答時間、アイドル時間など）を判断および記録する。オーディオ入力処理モジュール４２２は、音声入力のオーディオを処理する。ＭＰ３デコーディングモジュール４２４は、ＭＰ３にエンコードされたオーディオをデコードする。オーディオ入力モジュール４２６は、オーディオ入力装置（たとえば、マイクロホン）からオーディオをキャプチャする。オーディオ出力モジュール４２８は、オーディオ出力装置（たとえば、スピーカ）からオーディオを出力する。デバイスにおける音声アシスタントに関連付けられたイベントをキューに入れる、かつ、デバイスにおける音声アシスタントの状態を追跡するためのイベントキューイング／状態追跡モジュール４３０。
【００８２】
いくつかの実装形態では、デバッギングライブラリ２４２は、デバッグ用のモジュールおよび関数を提供する。たとえば、ＨＴＴＰサーバモジュール４３２は、接続性問題のデバッグを容易にし、デバッグサーバ／オーディオストリーミングモジュール４３４は、オーディオ問題をデバッグする。
【００８３】
いくつかの実装形態では、プラットフォームＡＰＩ２４４は、音声アシスタントクライアントライブラリ２４０とデバイスのハードウェア機能との間のインタフェースを提供する。たとえば、プラットフォームＡＰＩは、デバイスに対するボタン入力をキャプチャするためのボタン入力インタフェース４３６と、ループバックオーディオをキャプチャするためのループバックオーディオインタフェース４３８と、評価指標のログを取る、かつ、判断するためのロギング／評価指標インタフェース４４０と、オーディオ入力をキャプチャするためのオーディオ入力インタフェース４４２と、オーディオを出力するためのオーディオ出力インタフェース４４４と、音声アシスタントと対話し得るその他のサービスを用いてユーザを認証するための認証インタフェース４４６とを含む。図４に示す音声アシスタントクライアントライブラリ編成の利点は、一貫したＡＰＩと、音声アシスタントの関数のセットとを有する様々な音声アシスタントのデバイスタイプ上で、同じまたは同様の音声処理機能を提供できることである。この一貫性は、音声アシスタントアプリケーションのポータビリティと、音声アシスタント動作の一貫性とをサポートして、一貫したユーザ・インタラクションならびに異なるデバイスタイプ上で動作する音声アシスタントアプリケーションおよび関数に詳しくなることを促進する。いくつかの実装形態では、音声アシスタントクライアントライブラリ２４０のすべてまたは一部は、サーバベースの音声アシスタントアプリケーション（たとえば、処理するためにサーバ１１４に送信された音声入力に対して動作サーバアプリケーション）をサポートするために、サーバ１１４において提供されてもよい。
【００８４】
コントローラ４０２（「Ｃｏｎｔｒｏｌｌｅｒ」）に対応するクラスおよび関数ならびに関連クラスのコード例を、以下に示す。これらのクラスおよび関数は、共通ＡＰＩを介して、いろいろなデバイス上で実行可能なアプリケーションによって採用され得る。
【００８５】
下記クラス「ＡｃｔｉｏｎＭｏｄｕｌｅ」は、音声アシスタントサーバが提供するコマンドを処理するためにアプリケーションが当該アプリケーションのモジュールを登録することを容易にする。
【００８６】
【数１】
2019523918.tif 000003
【００８７】
下記クラス「ＢｕｉｌｄＩｎｆｏ」を用いて、音声アシスタントクライアントライブラリ２４０を実行中のアプリケーションまたは音声アシスタントクライアントデバイス１０４自体を記述してもよい（たとえば、アプリケーション、プラットフォーム、および／またはデバイスの識別子またはバージョン番号を用いて）。
【００８８】
【数２】
2019523918.tif 000004
【００８９】
下記クラス「ＥｖｅｎｔＤｅｌｅｇａｔｅ」は、音声認識の開始、音声アシスタントの応答の出力の開始および完了など、基本イベントに関連付けられた関数を定義する。
【００９０】
【数３】
2019523918.tif 000005
2019523918.tif 000006
【００９１】
下記クラス「ＤｅｆａｕｌｔＥｖｅｎｔＤｅｌｅｇａｔｅ」は、特定のイベントについて、何もしないオーバーライドの関数を定義する。
【００９２】
【数４】
2019523918.tif 000007
【００９３】
下記クラス「Ｓｅｔｔｉｎｇｓ」は、コントローラ４０２に提供され得る設定（たとえば、ロケール、地理的位置、ファイルシステムのディレクトリ）を定義する。
【００９４】
【数５】
2019523918.tif 000008
【００９５】
下記クラス「Ｃｏｎｔｒｏｌｌｅｒ」は、コントローラ４０２に対応し、Ｓｔａｒｔ（）、Ｒｅｃｏｎｆｉｇｕｒｅ（）、ＲｅｇｉｓｔｅｒＡｃｔｉｏｎ（）、およびＲｅｇｉｓｔｅｒＥｖｅｎｔＯｂｓｅｒｖｅｒ（）関数は、関数Ｓｔａｒｔ（）４０４、Ｒｅｃｏｎｆｉｇｕｒｅ（）４０８、ＲｅｇｉｓｔｅｒＡｃｔｉｏｎ（）４０６、およびＲｅｇｉｓｔｅｒＥｖｅｎｔＯｂｓｅｒｖｅｒ（）４１０にそれぞれ対応する。
【００９６】
【数６】
2019523918.tif 000009
【００９７】
いくつかの実装形態では、音声アシスタントクライアントデバイス１０４またはキャスティングデバイス１０６は、プラットフォームを実装する（たとえば、同じプラットフォームを利用する他のデバイスと通信するためのインタフェースのセット、および当該インタフェースのセットをサポートするように構成されたオペレーティングシステム）。下記のコード例は、音声アシスタントクライアントライブラリ４０２が当該プラットフォームと対話するためのインタフェースに関連付けられた関数を示す。
【００９８】
下記クラス「Ａｕｔｈｅｎｔｉｃａｔｉｏｎ」は、特定のアカウントを有する音声アシスタントのユーザを認証するための認証トークンを定義する。
【００９９】
【数７】
2019523918.tif 000010
【０１００】
下記クラス「ＯｕｔｐｕｔＳｔｒｅａｍＴｙｐｅ」は、オーディオ出力ストリームの型を定義する。
【０１０１】
【数８】
2019523918.tif 000011
【０１０２】
下記クラス「ＳａｍｐｌｅＦｏｒｍａｔ」は、サポートするオーディオサンプルのフォーマット（たとえば、ＰＣＭフォーマット）を定義する。
【０１０３】
【数９】
2019523918.tif 000012
【０１０４】
下記「ＢｕｆｆｅｒＦｏｒｍａｔ」は、デバイスのオーディオバッファに格納されるデータのフォーマットを定義する。
【０１０５】
【数１０】
2019523918.tif 000013
【０１０６】
下記クラス「ＡｕｄｉｏＢｕｆｆｅｒ」は、オーディオデータのバッファを定義する。
【０１０７】
【数１１】
2019523918.tif 000014
【０１０８】
下記クラス「ＡｕｄｉｏＯｕｔｐｕｔ」は、オーディオ出力用のインタフェースを定義する。
【０１０９】
【数１２】
2019523918.tif 000015
2019523918.tif 000016
【０１１０】
下記クラス「ＡｕｄｉｏＩｎｐｕｔ」は、オーディオ入力をキャプチャするためのインタフェースを定義する。
【０１１１】
【数１３】
2019523918.tif 000017
【０１１２】
下記クラス「Ｒｅｓｏｕｒｃｅｓ」は、システムリソースへのアクセスを定義する。
【０１１３】
【数１４】
2019523918.tif 000018
【０１１４】
下記クラス「ＰｌａｔｆｏｒｍＡｐｉ」は、音声アシスタントクライアントライブラリ２４０用のプラットフォームＡＰＩを指定する（たとえば、プラットフォームＡＰＩ２４４）。
【０１１５】
【数１５】
2019523918.tif 000019
【０１１６】
いくつかの実装形態では、音量調節は、音声アシスタントクライアントライブラリ２４０の外部で処理されてもよい。たとえば、システム音量は、音声アシスタントクライアントライブラリ２４０によって制御されないデバイスによって管理されてもよい。別の例として、音声アシスタントクライアントライブラリ２４０は、音量調節を引き続きサポートしてもよいが、音声アシスタントクライアントライブラリ２４０に対する音量調節についての要求は、デバイスに向けられる。
【０１１７】
いくつかの実装形態では、音声アシスタントクライアントライブラリ２４０に含まれるアラームおよびタイマ機能は、ユーザによって無効にされてもよく、または、デバイスにおいてライブラリを実装するときに無効にされてもよい。
【０１１８】
また、いくつかの実装形態では、音声アシスタントクライアントライブラリ２４０は、デバイス上のＬＥＤへのインタフェースをサポートし、デバイスのＬＥＤのＬＥＤアニメーションの表示を容易にする。
【０１１９】
いくつかの実装形態では、音声アシスタントクライアントライブラリ２４０は、キャスティングデバイス１０６におけるキャスティング受信モジュール（たとえば、受信モジュール１４６）に含まれるまたはそれにリンクされてもよい。音声アシスタントクライアントライブラリ２４０と受信モジュール１４６とのリンクは、たとえば、さらなるアクション（たとえば、ローカルメディア再生）のサポート、およびキャスティングデバイス１０６上のＬＥＤの制御のサポートを含んでもよい。
【０１２０】
図５は、いくつかの実装形態に係る、デバイス上の口頭入力を処理するための方法５００のフロー図である。方法５００は、オーディオ入力システム（たとえば、オーディオ入力装置１０８／１３２）と、１つ以上のプロセッサ（たとえば、処理装置（複数可）２０２）と、１つ以上のプロセッサによって実行される１つ以上のプログラムを格納するメモリ（たとえば、メモリ２０６）とを有する電子デバイス（たとえば、音声アシスタントクライアントデバイス１０４、キャスティングデバイス１０６）において実行される。いくつかの実装形態では、電子デバイスは、オーディオ入力システム（たとえば、オーディオ入力装置１０８／１３２）と、１つ以上のプロセッサ（たとえば、処理装置（複数可）２０２）と、１つ以上のプロセッサによって実行される１つ以上のプログラムを格納したメモリ（たとえば、メモリ２０６）とを備え、当該１つ以上のプログラムは、方法５００を実行するための命令を含む。いくつかの実装形態では、非一時的なコンピュータ読み取り可能な記憶媒体が１つ以上のプログラムを含み、当該１つ以上のプログラムは、命令を含み、当該命令は、オーディオ入力システム（たとえば、オーディオ入力装置１０８／１３２）と、１つ以上のプロセッサ（たとえば、処理装置（複数可）２０２）とを有する電子デバイスによって実行されると、電子デバイスに、方法５００を実行させる。方法５００を実行するためのプログラムまたは命令は、図２〜図４を参照して上述されたモジュール、ライブラリなどに含まれてもよい。
【０１２１】
デバイスは、デバイスにおいて口頭入力を受信する（５０２）。クライアントデバイス１０４／キャスティングデバイス１０６は、ユーザが発した口頭入力（たとえば、音声入力）をキャプチャする。
【０１２２】
デバイスは、口頭入力を処理する（５０４）。クライアントデバイス１０４／キャスティングデバイス１０６が口頭入力を処理する。処理には、ホットワード検出、テキストデータへの変換、およびユーザが提供するコマンド、要求、および／またはパラメータに対応する単語および表現の識別が含まれてもよい。いくつかの実装形態では、この処理は、最低限であってもよく、または、処理がまったくなくてもよい。たとえば、この処理は、サーバ１１４に送信するために口頭入力オーディオをエンコードすることを含んでもよく、または、サーバ１１４に送信するために口頭入力のキャプチャされた生オーディオを用意することを含んでもよい。
【０１２３】
デバイスは、口頭入力に基づいて決定された情報を含む要求を、遠隔システムに送信する（５０６）。クライアントデバイス１０４／キャスティングデバイス１０６は、口頭入力を処理し、口頭入力から要求および１つ以上の関連するパラメータを識別することによって、口頭入力から要求を決定する。クライアントデバイス１０４／キャスティングデバイス１０６は、決定した要求を遠隔システム（たとえば、サーバ１１４）に送信する。遠隔システムは、要求に対する応答を決定および生成する。いくつかの実装形態では、クライアントデバイス１０４／キャスティングデバイス１０６は、口頭入力を（たとえば、エンコードされたオーディオとしての、生オーディオデータとして）サーバ１１４に送信し、サーバ１１４は、口頭入力を処理し、要求および関連するパラメータを決定する。
【０１２４】
デバイスは、要求に対する応答を受信する（５０８）。応答は、口頭入力に基づいた情報に応じて、遠隔システムによって生成されてもよい。遠隔システム（たとえば、サーバ１１４）は、要求に対する応答を決定および生成し、この応答をクライアントデバイス１０４／キャスティングデバイス１０６に送信する。
【０１２５】
デバイスは、応答に応じて動作を実行する（５１０）。クライアントデバイス１０４／キャスティングデバイス１０６が、受信した応答に応じて、１つ以上の動作を実行する。たとえば、応答が、デバイスに特定の情報をオーディオによって出力させるためのコマンドである場合、クライアントデバイス１０４／キャスティングデバイス１０６は、この情報を取り出し、この情報を音声オーディオ出力に変換し、音声オーディオをスピーカから出力する。別の例として、応答が、デバイスにメディアコンテンツを再生させるためのコマンドである場合、クライアントデバイス１０４／キャスティングデバイス１０６は、メディアコンテンツを取り出し、メディアコンテンツを再生する。
【０１２６】
前記した、受信すること、処理すること、送信すること、受信すること、および実行することのうちの１つ以上は、電子デバイス上で実行中の音声アシスタントライブラリの１つ以上の音声処理モジュールによって行われ、音声処理モジュールは、電子デバイス上で実行中または実行可能な１つ以上のアプリケーションプログラムおよび／またはオペレーティングソフトウェアにアクセス可能な複数の音声処理動を提供する（５１２）。クライアントデバイス１０４／キャスティングデバイス１０６は、前記した、受信するステップ、処理するステップ、送信するステップ、受信するステップ、および実行するステップのうちの１つ以上を実行するための関数およびモジュールを含む音声アシスタントクライアントライブラリ２４０を有してもよい。音声アシスタントクライアントライブラリ２４０のモジュールは、ライブラリ２４０を含むまたはライブラリ２４０にリンクする（たとえば、ライブラリ２４０および関連ＡＰＩを実行する）クライアントデバイス１０４／キャスティングデバイス１０６におけるアプリケーション、オペレーティングシステム、およびプラットフォームソフトウェアにアクセス可能な複数の音声処理動作およびアシスタント動作を提供する。
【０１２７】
いくつかの実装形態では、音声処理モジュールに関連付けられた少なくともいくつかの音声処理動作は、ワイドエリアネットワークを介して電子デバイスと互いに接続される遠隔システム上で行われてもよい。たとえば、要求を決定するために口頭入力を処理することは、ネットワーク（複数可）１１２を通してクライアントデバイス１０４／キャスティングデバイス１０６と接続されたサーバ１１４によって行われてもよい。
【０１２８】
いくつかの実装形態では、音声アシスタントライブラリは、複数の異なるデバイスタイプ上で動作可能な共通のオペレーティングシステム上で実行可能であり、それによって、音声処理動作のうちの１つ以上と対話するように構成された音声対応アプリケーションのポータビリティを可能にする。音声アシスタントクライアントライブラリ２４０（ならびに、関連ライブラリおよびＡＰＩ、たとえば、デバッギングライブラリ２４２、プラットフォームＡＰＩ２４４、ＰＯＳＩＸ  ＡＰＩ２４６）は、定義済みのオペレーティングシステム（たとえば、Ｌｉｎｕｘ）の標準要素（たとえば、オブジェクト）を利用するので、定義済みのオペレーティングシステムのディストリビューションまたはフレーバー（たとえば、異なるＬｉｎｕｘまたはＬｉｎｕｘベースのディストリビューションまたはフレーバー）を実行するいろいろなデバイス上で動作可能である。このように、音声アシスタント機能をいろいろなデバイスが利用可能であり、音声アシスタントエクスペリエンスは、当該いろいろなデバイス間で一貫している。
【０１２９】
いくつかの実装形態では、要求および応答は、デバイスにおいて処理されてもよい。たとえば、タイマ、目覚まし時計、時計、および音量調節など、デバイスにローカルであり得る基本関数については、クライアントデバイス１０４／キャスティングデバイス１０６が、口頭入力を処理し、これらの基本関数のうちの１つに要求が対応すると判断し、デバイスにおいて応答を決定し、応答に応じて１つ以上の動作を実行してもよい。デバイスは、ログを取る目的のためにサーバ１１４に引き続き要求および応答を報告してもよい。
【０１３０】
いくつかの実装形態では、オーディオ入力システムを備える電子デバイス用の、デバイスを問わない音声アシスタントライブラリは、複数の異なる電子デバイスタイプ上に実装される共通のオペレーションシステム上で実行するように構成された１つ以上の音声処理モジュールを含み、当該音声処理モジュールは、電子デバイス上で実行中のアプリケーションプログラムおよびオペレーティングソフトウェアにアクセス可能な複数の音声処理動作を提供し、それによって、音声処理動作のうちの１つ以上と対話するように構成された音声対応アプリケーションのポータビリティが可能になる。音声アシスタントクライアントライブラリ２４０は、同じ定義済みのオペレーティングシステムベースをライブラリ（たとえば、ライブラリおよびデバイスのオペレーティングシステムは、Ｌｉｎｕｘベースである）として共有するいろいろなデバイス上で実行され得るライブラリであるため、このライブラリは、デバイスを問わない。ライブラリ２４０は、いろいろなデバイス間でアプリケーションにアクセス可能な音声アシスタント機能のための複数のモジュールを提供する。
【０１３１】
いくつかの実装形態では、音声処理モジュールに関連付けられた少なくともいくつかの音声処理動作は、ワイドエリアネットワークを介して電子デバイスと互いに接続されるバックエンドサーバ上で実行される。たとえば、ライブラリ２４０は、サーバ１１４と通信し、口頭入力を処理するためにサーバ１１４に送信し、要求を決定するモジュールを含む。
【０１３２】
いくつかの実装形態では、音声処理動作は、電子デバイスに（たとえば、直接または通信可能に）接続されたデバイスを制御するように構成されたデバイス固有の動作を含む。ライブラリ２４０は、クライアントデバイス１０４／キャスティングデバイス１０６に接続されたその他のデバイス（たとえば、ワイヤレススピーカ、スマートテレビなど）を制御するための関数またはモジュールを含んでもよい。
【０１３３】
いくつかの実装形態では、音声処理動作は、要求された情報および／またはメディアコンテンツを電子デバイスのユーザに提供する、または電子デバイスと（たとえば、直接または通信可能に）接続されたデバイス上で提供するように構成された情報／メディア要求動作を含む。ライブラリ２４０は、情報またはメディアを取り出して、情報またはメディアをクライアントデバイス１０４／キャスティングデバイス１０６上または接続されたデバイス上で提供する（たとえば、電子メールを読み上げる、新聞記事を読み上げる、ストリーミング音楽を再生する）ための関数またはモジュールを含んでもよい。
【０１３４】
様々な要素を説明するために、用語「第１の」、「第２の」などが本明細書において使用され得るが、要素は、これらの用語によって限定されるべきではないと理解されるだろう。これらの用語は、１つの要素を別の要素と区別するために使用されるにすぎない。たとえば、第１のコンタクトの名称がすべて矛盾なく変更され、第２のコンタクトの名称がすべて矛盾なく変更される場合に限り、説明の意味を変更することなく、第１のコンタクトを第２のコンタクトと称することができ、同様に、第２のコンタクトを第１のコンタクトと称することができる。第１のコンタクトおよび第２のコンタクトは、両方ともコンタクトであるが、同じコンタクトではない。
【０１３５】
本明細書において使用される用語は、特定の実装形態を説明するためだけのものであり、特許請求の範囲を限定することを意図していない。実装形態および添付の請求の範囲の説明において使用される単数形「a」、「an」、および「the」は、文脈が明らかに他を示さない限り、複数形も含むことを意図する。本明細書において使用される用語「および／または（and/or）」は、関連する記載された項目のうちの１つ以上のいずれか、およびすべての考えられる組み合わせを指し、それらを包含すると理解されるだろう。用語「備える／含む（comprises）」および／または「備える／含む（comprising）」は、本明細書において使用されるとき、記載の特徴、整数、ステップ、動作、要素、および／または構成要素の存在を具体的に挙げるが、１つ以上のその他の特徴、整数、ステップ、動作、要素、構成要素、および／またはそれらの群の存在もしくは追加を排除しないと理解されるだろう。
【０１３６】
本明細書で使用するとき、用語「〜である場合（if）」は、文脈に応じて、記載の先行条件が真である「ときに（when）」、「すると（upon）」、「と判定することに応答して（in response to determining）」、「という判定に応じて（in accordance with a determination)」、または「と検出することに応答して（in response to detecting)」を意味すると解釈され得る。同様に、表現「記載の先行条件が真であると判定された場合（if it is determined[that a stated condition precedent is true]）」、「記載の先行条件が真である場合（if[a stated condition precedent is true]）」、「記載の先行条件が真であるとき（when[a stated condition precedent is true]）」は、文脈に応じて、記載の先行条件が真である「と判定すると（upon determining）」、「と判定することに応答して（in response to determining）」、「という判定に応じて（in accordance with a determination）」、「と検出すると（upon detecting）」、または「と検出することに応答して（in response to detecting）」を意味すると解釈され得る。
【０１３７】
様々な実装形態を詳細に参照し、その例を添付の図面に示す。以下の詳細な説明において、本発明および記載の実装形態の十分な理解のため、たくさんの具体的な詳細を記載した。しかしながら、これらの具体的な詳細がなくても、本発明を実施することができる。その他の場合、周知の方法、プロシージャ、構成要素、および回路については、実装形態の態様を不必要にあいまいにしないよう、詳細に説明しなかった。
【０１３８】
上記の説明は、説明の便宜上、具体的な実装形態を例に記載された。しかしながら、上記例示的説明は、網羅的であったり、開示の厳密な形態に本発明を限定したりすることを意図しない。上記教示に鑑みて、多くの変更例および変形例が可能である。当業者が、考えられる特定の用途に適した様々な変更例を用いて本発明および様々な実装形態を最大限に利用することを可能にするために、実装形態は、本発明の原理およびその実際の適用を最もよく説明するために選択および記載されている。
【図１】
2019523918.tif 000020
【図２】
2019523918.tif 000021
【図３】
2019523918.tif 000022
【図４】
2019523918.tif 000023
【図５】
2019523918.tif 000024
【国際調査報告】
2019523918.tif 000025
2019523918.tif 000026