(57)【特許請求の範囲】
【請求項１】
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行されたときに、前記１つ以上のプロセッサに、
クライアントデバイスから、前記クライアントデバイスとサーバインスタンスとの間の接続を確立する第１の要求を受信することと、
前記クライアントデバイスと複数のサーバインスタンスのうちの第１のサーバインスタンスとの間の接続を、前記第１の要求を受信したことに少なくとも部分的に応答して確立することと、
ある期間にわたって前記クライアントデバイスと前記第１のサーバインスタンスとの間で転送されたデータ量に少なくとも部分的に基づいて前記接続をドロップすることと、
少なくとも部分的に前記ドロップに応答して、かつ、前記ドロップ以降に予め定められた期間が経過した後に、前記複数のサーバインスタンスのうちの第２のサーバインスタンスとの接続を確立することと、を含む行為を実施させる、コンピュータ実行可能命令を記憶する１つ以上の非一時的コンピュータ可読記憶媒体と、
を備える、システム。
【請求項２】
前記行為が、前記ドロップの前に、前記接続の第１のチャネル上で、前記クライアントデバイスから前記第１のサーバインスタンスにデータを送信することと、前記接続の第２のチャネル上で、前記第１のサーバインスタンスから前記クライアントデバイスでデータを受信することとの間を繰り返すことをさらに含む、請求項１に記載のシステム。
【請求項３】
前記行為が、前記クライアントデバイスが前記第１のサーバインスタンスとの前記接続を確立したという指示を記憶することをさらに含み、前記指示が、前記クライアントデバイスと関連付けられたデバイス識別子（ＤＩＤ）及び前記第１のサーバインスタンスの識別子を含む、請求項１に記載のシステム。
【請求項４】
ある期間にわたって前記クライアントデバイスと前記第１のサーバインスタンスとの間で転送されたデータ量に少なくとも部分的に基づいて前記接続をドロップすることが、前記クライアントデバイスと前記第１のサーバインスタンスとの間でデータが１５分間転送されなかったときに、前記接続をドロップすることを含む、請求項１に記載のシステム。
【請求項５】
装置であって、
音を検出し、前記音に基づいて第１のオーディオ信号を生成するためのマイクロホンユニットと、
第１のサーバインスタンスから受信された第２のオーディオ信号に対応する音を出力するためのスピーカと、
１つ以上のプロセッサと、
アドレス及びコンピュータ実行可能命令を記憶するメモリであって、前記コンピュータ実行可能命令が、前記１つ以上のプロセッサによって実行されたときに、前記１つ以上のプロセッサに、
前記装置と前記第１のサーバインスタンスとの間の第１の接続を、前記アドレスを用いて確立することと、
前記第１のオーディオ信号を前記第１のサーバインスタンスに、前記第１の接続を介して送信することと、
前記第２のオーディオ信号を前記第１のサーバインスタンスから、前記第１の接続を介して受信することと、
ある期間にわたって前記装置から前記第１のサーバインスタンスに転送されたデータ量またはある期間にわたって前記第１のサーバインスタンスから前記装置に転送されたデータ量のうちの少なくとも一方に少なくとも部分的に基づいて、前記第１の接続を切断することと、
前記切断に少なくとも部分的に基づいて、かつ、前記切断以降に予め定められた期間が経過した後に、前記装置と第２のサーバインスタンスとの間の第２の接続を、前記アドレスを用いて確立することと、を含む行為を実施させる、メモリと、
を備える、前記装置。
【請求項６】
前記第１のオーディオ信号の前記送信及び前記第２のオーディオ信号の前記受信が、前記第１の接続の第１のチャネル上で、前記第１のオーディオ信号の１つ以上のフレームを送信することと、前記第１の接続の第２のチャネル上で、前記第２のオーディオ信号の１つ以上のフレームを受信することとの間を繰り返すことを含む、請求項５に記載の装置。
【請求項７】
前記アドレスが、複数のサーバインスタンスにマッピングする仮想インターネットプロトコル（ＶＩＰ）アドレスを含む、請求項５に記載の装置。
【請求項８】
前記切断が、
前記装置と前記第１のサーバインスタンスとの間でデータがある期間転送されなかったと決定することと、
前記第１の接続を切断することと、
前記装置と第２のサーバインスタンスとの間の第２の接続を、前記アドレスを用いて確立することと、を含む、請求項５に記載の装置。
【請求項９】
１つ以上のコンピューティングデバイスであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行されたときに、前記１つ以上のプロセッサに、
クライアントデバイスから、サーバインスタンスとの接続を確立する要求を受信することと、
前記クライアントデバイスが複数のサーバインスタンスのうちの第１のサーバインスタンスとの接続を確立するように、前記要求をルーティングすることと、
前記接続のプロパティ、前記第１のサーバインスタンスのプロパティ、または前記クライアントデバイスのプロパティに少なくとも部分的に基づいて、前記接続を切断することと、
少なくとも部分的に前記切断に応答して、かつ、前記切断以降に予め定められた期間が経過した後に、前記複数のサーバインスタンスのうちの第２のサーバインスタンスとの接続を確立することと、を含む行為を実施させる、コンピュータ実行可能命令を記憶する１つ以上の非一時的コンピュータ可読記憶媒体と、
を備える、前記１つ以上のコンピューティングデバイス。
【請求項１０】
前記接続の前記プロパティが、ある期間にわたって、前記第１のサーバインスタンスから前記クライアントデバイスに送信されたか、または前記クライアントデバイスから前記第１のサーバインスタンスによって受信されたデータ量を含む、請求項９に記載の１つ以上のコンピューティングデバイス。
【請求項１１】
前記第１のサーバインスタンスの前記プロパティが、前記第１のサーバインスタンスをホストする物理的サーバがシャットダウンされているという指示を含む、請求項９に記載の１つ以上のコンピューティングデバイス。
【請求項１２】
前記行為が、前記クライアントデバイスが前記第１のサーバインスタンスとの前記接続を確立したという指示を記憶することをさらに含み、前記指示が、前記クライアントデバイスと関連付けられたデバイス識別子（ＤＩＤ）及び前記第１のサーバインスタンスと関連付けられた識別子を含む、請求項９に記載の１つ以上のコンピューティングデバイス。
【請求項１３】
前記行為が、
コンピューティングデバイスによって、前記指示にアクセスして、前記第１のサーバインスタンスの識別子を取得することと、
前記コンピューティングデバイスによって、前記第１のサーバインスタンスにデータを送信することであって、前記データが前記クライアントデバイス向けである、送信することと、
前記第１のサーバインスタンスによって、前記クライアントデバイスに前記データを送信することと、
をさらに含む、請求項１２に記載の１つ以上のコンピューティングデバイス。
【請求項１４】
前記データが、前記クライアントデバイスのスピーカ上での出力のためのオーディオ信号または前記クライアントデバイスに特定の動作を実施することを命令する制御メッセージのうちの少なくとも一方を含む、請求項１３に記載の１つ以上のコンピューティングデバイス。
【請求項１５】
前記行為が、前記サーバインスタンスによって、前記クライアントデバイスにデータを送信するための前記接続の第１のチャネルを確立することと、前記接続の第２のチャネル上で、前記サーバインスタンスで、かつ前記クライアントデバイスからデータを受信することと、をさらに含む、請求項９に記載の１つ以上のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、その全体が参照により本明細書に組み込まれる、「Ｌｏａｄ−Ｂａｌａｎｃｅｄ，  Ｐｅｒｓｉｓｔｅｎｔ  Ｃｏｎｎｅｃｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」という題名の、２０１３年４月８日に出願された米国特許出願第１３／８５８、７５３号に対する優先権を主張するものである。
【背景技術】
【０００２】
家庭は、デスクトップ、タブレット、娯楽システム、及び携帯可能通信デバイスなどのコンピューティングデバイスの増殖によって、ますます配線され、接続されたものとなっている。コンピューティングデバイスが進化するに連れて、例えば、機械的手段（例えば、キーボード、マウスなど）、タッチ画面、運動、及びジェスチャーを通じて、ユーザがこれらのデバイスと相互作用することを可能とする多くの異なる方法が導入されてきた。コンピューティングデバイスと相互作用する別の方法は、スピーチを介するものである。
【図面の簡単な説明】
【０００３】
詳細な説明を、添付図面を参照して記述する。図面中、参照番号の最も左側の桁（複数可）は、この参照番号が最初に現れる図を特定する。異なる図中の同一の参照番号の使用は、類似したまたは同一の構成要素もしくは特徴部を特定する。
【図１】家庭環境内で設定された例示的な音声対話コンピューティングアーキテクチャを示す。このアーキテクチャは、家庭内に物理的に位置付けられ、遠隔コンピューティングリソースに通信可能に連結された音声制御デバイスを含む。
【図２】図１のアーキテクチャをさらに詳細に示す。図示するように、各々の音声制御デバイスは、接続要求を異なるサーバインスタンスにルーティングする負荷分散サービスを介して遠隔コンピューティングリソースに接続する。
【図３】音声制御デバイスと図２のサーバインスタンスとの間の接続例を示す。この１つの物理的接続は、複数の仮想チャネルを含み、これら上で、クライアントデバイスに送信され、これから受信されるデータが、多重化され得る。
【図４】図１の音声制御デバイスまたは他のクライアントデバイスが実装し得るプロセス例のフロー図を示す。
【図５】図１の遠隔コンピューティングリソースが実装し得るプロセス例のフロー図を示す。
【図６】図１の音声制御デバイス内に実装された選択された機能構成要素のブロック図を示す。
【発明を実施するための形態】
【０００４】
本開示は、クライアントデバイスと、ネットワークアクセス可能なコンピューティングプラットフォームの一部を形成し得る１つ以上の遠隔コンピューティングリソースとの間に持続接続を作成するための技法を部分的に説明する。クライアントデバイスがほぼ常に遠隔リソースへのデータの送信及び遠隔リソースからのデータの受信の両方を行うことを許容するこの接続は、「永久的」または「ほぼ永久的」であると考えられ得る。クライアントデバイスは、常にデータを送信する及び／または受信することが可能であることを必要とするため、これらの「永久的」または「ほぼ永久的」な接続は、クライアントデバイスの電源がオンになると確立され得る。すなわち、各々のクライアントの電源がオンにされたとき、それぞれのクライアントデバイスは、ネットワークアクセス可能なコンピューティングプラットフォームとの接続を確立しようとし得る。
【０００５】
このような接続を作成するために、本明細書に記載するクライアントデバイスは、仮想インターネットプロトコル（ＶＩＰ）アドレスへの接続を要求するように構成され得る。遠隔コンピューティングリソースは、多数のクライアントデバイスにサービス供給し得るため、クライアントデバイスは、各々がネットワークアクセス可能なコンピューティングプラットフォームのサーバインスタンスの複数のＩＰアドレスに対応し得るいくつかの異なるＶＩＰアドレスのうちの特定の１つに接続するように事前構成され得る。
【０００６】
クライアントデバイスが、特定のクライアントデバイスと関連付けられたＶＩＰアドレスをコールすることによって接続を要求するとき、この要求は、ＶＩＰと関連付けられた負荷分散サービスによって受信され得る。このサービスは、次に、どのＩＰアドレスがＶＩＰに対応するかを特定し、要求をルーティングするＩＰアドレスのうちの１つ（故に、サーバインスタンスのうちの１つ）を選択し得る。そうすることによって、負荷分散サービスは、サーバインスタンス全体にわたって負荷を分散させ得る。クライアントデバイスは、その後、選択されたＩＰアドレスと関連付けられたサーバインスタンスに対する接続を確立するが、クライアントにとっては、それがＶＩＰアドレス自体と関連付けられた接続を単に確立したように見える。
【０００７】
クライアントデバイスと遠隔コンピューティングリソースとの間に１つの接続が確立された後、クライアントデバイス及び／または遠隔コンピューティングリソースは、両方向性であり得る接続上で１つ以上の仮想チャネルを作成し、それにより、一部の場合では、通信が一方向または両方向で送信され得るようにし得る。例えば、クライアントデバイスは、第１のオーディオ信号を遠隔コンピューティングリソースにアップロードするための第１の仮想チャネルを確立し得るが、遠隔コンピューティングリソースは、オーディオ信号をクライアントデバイスに送信するためとクライアントデバイスによる出力とのために第２の仮想チャネルを確立し得る。これらの仮想チャネル上で送信されるデータは、１フレームベースまたは複数フレームベースで多重化され、それにより両方向性通信が並列に送信されているように見えるようにし得る。例えば、接続の第１のフレームを用いて、第１の仮想チャネル上で遠隔コンピューティングリソースにデータを送信し得、第２のフレームを用いて、第２の仮想チャネル上でクライアントデバイスにデータを送信し得るといった具合である。複数の仮想チャネルを多重化することによって、クライアントデバイスと遠隔コンピューティングリソースとの両方にとって、各々の仮想チャネルが区別可能な接続であるように見えるが、クライアントデバイスと遠隔コンピューティングリソースとの間にはたった１つの接続が存在するのみである。複数の接続ではなくて１つの接続を利用することによって、クライアントデバイスと遠隔コンピューティングリソースとを連結する費用が、より軽減される。
【０００８】
加えて、クライアントデバイスが遠隔コンピューティングリソースのサーバインスタンスに接続した後、サーバインスタンスまたは負荷分散サービスは、インスタンスがどのクライアントデバイスと接続したかについての指示を、デバイスロケーションサービスに登録し得る。例えば、クライアントデバイスが特定のＩＰアドレスを有するサーバインスタンスとの接続を確立すると、サーバインスタンスは、デバイスロケーションサービスによって維持されるテーブル内のクライアントデバイスのデバイス識別子（ＤＩＤ）の指示を記憶し得る。デバイスロケーションサービスが維持するテーブルは、ＩＰアドレスに対するＤＩＤのマッピングを記憶し得る。そうすることによって、遠隔コンピューティングリソースの別のサーバインスタンスが、特定のクライアントデバイス向けのデータを送信するときに、このサーバインスタンスは、所望のクライアントデバイスに接続されているサーバインスタンスをこのマッピングから特定し得る。他方のサーバインスタンスは、次に、接続を維持しているサーバインスタンスにデータを提供し、それにより、後者のインスタンスが、今度は、データをクライアントデバイスに提供することが可能となるようにし得る。
【０００９】
加えて、クライアントデバイスとサーバインスタンスとの間で、ある時間量にわたって、データが全く交換されないか、または閾値量未満のデータしか交換されない場合には、クライアントデバイスとサーバインスタンスとの間の接続はドロップされて、その後の接続が再確立され得る。例えば、クライアントデバイスが、それが閾値時間量にわたって接続するサーバインスタンスからデータを受信も送信もしない場合には、クライアントデバイスは、それ自身と遠隔コンピューティングリソースとの間の接続を切断するように構成され得る。その後、クライアントデバイスは、クライアントデバイスと関連付けられたＶＩＰアドレスをコールすることによって、遠隔コンピューティングリソースとの接続を再度確立し得る。再度、負荷分散サービスは、要求を受信して、クライアントデバイスと、潜在的には、ＶＩＰアドレスと関連付けられた異なるサーバインスタンスとの間に接続を確立するように要求をルーティングし得る。
【００１０】
加えて、クライアントデバイスが閾値時間量後に接続を切断しない場合、サーバインスタンスは、第１の閾値よりもわずかに大きい第２の閾値時間量後に接続を切断するように構成され得る。この場合、サーバインスタンスは、クライアントデバイスが接続を切断することに失敗した場合のフェイルセーフ機構として機能する。接続が（サーバインスタンスが接続を切断したため）ドロップされたと認識すると、クライアントデバイスは、その後、ＶＩＰアドレスをコールして新しい接続を確立し得る。
【００１１】
上の例は、閾値未満のデータ量がクライアントデバイスとサーバインスタンスとの間である期間にわたって交換されたときに接続を切断するが、接続は、複数の他の理由で切断され得る。例えば、クライアントデバイスが、サーバインスタンスの認証に失敗したが、それからのデータを要求する場合、または、インスタンスをホストする物理的サーバに対する処理負荷が大き過ぎる場合に、インスタンスをホストする物理的サーバがシャットダウンしたことに応答して、単に、接続の時間量（例えば、接続を確立した後の１５分間）、ある期間にわたってクライアントデバイスからサーバインスタンスに送信されたデータ量、ある期間にわたってサーバインスタンスからクライアントデバイスに送信されたデータ量に基づいて、接続は切断され得る。他の例では、クライアントデバイスまたはサーバインスタンスは、これら２つのエンティティ間のトラフィックが遅過ぎる場合、帯域幅が限定され過ぎる場合、接続の質が不良であるなどの場合に、接続を切断し得る。さらに別の例では、サーバインスタンスは、クライアントデバイスがある時間量内で認証しない場合、クライアントデバイスが認証要求以外のなにかを初期要求として送信する場合などには、悪意あると決定されているＩＰアドレスと関連付けられたクライアントデバイスとの接続を切断し得る。いくつかの例を提供したが、クライアントデバイス及び／またはサーバインスタンスは、数々の異なる理由によりこれらの接続を切断し得ることを理解されたい。
【００１２】
上に紹介したデバイス及び技法は、様々な異なるアーキテクチャ及び文脈で実装され得る。１つの非限定的かつ例示的な実装例を以下に説明する。この実装例はクライアントデバイスを音声制御デバイスとして解説するが、他の実装例では、クライアントデバイス（複数可）は、携帯電話、タブレットコンピューティングデバイス、ラップトップコンピュータ、デスクトップコンピュータ、電子本読み取りデバイス、及び／または同様物を含むことを理解されたい。
【００１３】
図１は、ユーザ１０４を含む家庭環境１０２内で設定された例示的な音声対話コンピューティングアーキテクチャ１００を示す。アーキテクチャ１００はまた、ユーザ１０４が対話し得る相手の電子式音声制御デバイス１０６を含む。図示する実装例では、音声制御デバイス１０６は、家庭環境１０２の部屋内のテーブル上に位置決めされる。他の実装例では、それは、任意の数のロケーション（例えば、天井、壁、ランプ内、テーブルの下、椅子の下など）に配置または実装され得る。さらに、２つ以上のデバイス１０６は、１つの部屋の中に位置決めされ得る、または、１つのデバイスを用いて、２つの以上の部屋からのユーザ対話に対処し得る。
【００１４】
一般に、音声制御デバイス１０６は、ユーザ１０４及び／または他のユーザとのオーディオ対話を容易化するために、少なくとも１つのマイクロホン１０８を備えるマイクロホンユニットと、少なくとも１つのスピーカ１１０を備えるスピーカユニットとを有する。一部の場合では、音声制御デバイス１０６は、触覚入力構成要素（例えば、キーボード、キーパッド、タッチ画面、ジョイスティック、制御ボタンなど）またはディスプレイ無しで実装される。ある実装例では、１つ以上の触覚入力構成要素の限られた集合が用いられ得る（例えば、構成、電源オン／オフなどを開始するための専用ボタン）。にもかかわらず、主として、かつ潜在的には、電子デバイス１０６とのユーザ対話のモードのみが、音声入力及び可聴出力を介し得る。音声制御デバイス１０６の１つの実装例を、図６を参照して以下により詳細に提供する。
【００１５】
音声制御デバイス１０６のマイクロホン１０８は、ユーザ１０４が発した音などの環境１０２からの音声を検出する。図示するように、音声制御デバイス１０６は、プロセッサ１１２と、スピーチ認識エンジン１１６を記憶するか、またはさもなければこれにアクセスするメモリ１１４とを含む。本明細書で用いられるプロセッサは、複数のプロセッサ及び／または複数のコアを有するプロセッサを含み得る。スピーチ認識エンジン１１６は、ユーザ１０４によって話された発話などの、マイクロホンによって捕捉された音に基づいて生成されたオーディオ信号に対してスピーチ認識を実施する。音声制御デバイス１０６は、ユーザ１０４からの異なるスピーチが認識されたことに応答してある動作を実施し得る。ユーザは、事前定義されたコマンド（例えば、「Ａｗａｋｅ」、「Ｓｌｅｅｐ」）を話し得る、または、デバイス１０６と対話しているときには、よりカジュアルな会話（例えば、「僕は映画を見に行きたい。ローカルシネマでは何を上映しているか教えて」）を用い得る。
【００１６】
一部の場合では、音声制御デバイス１０６は、環境１０２から遠隔にあるコンピューティングリソース１１８と共に動作し得るか、またはさもなければこれを利用し得る。例えば、音声制御デバイス１０６は、ネットワーク１２０を介して遠隔コンピューティングリソース１１８に接続し得る。図示するように、遠隔コンピューティングリソース１１８は、１つ以上のサーバ１２２（１）、１２２（２）、・・・、１２２（Ｐ）として実装され得るし、一部の場合では、プロセッサの計算インフラストラクチャとして実装されるネットワークアクセス可能なコンピューティングプラットフォーム、インターネットなどのネットワークを介して維持され、かつアクセス可能な、ストレージ、ソフトウェア、データアクセスなどの一部を形成し得る。遠隔コンピューティングリソース１１８は、サービスを送達するシステムの物理的ロケーション及び構成のエンドユーザ知識を必要としない。これらの遠隔コンピューティングリソース１１８に関連する共通の表現は、「オンデマンドコンピューティング」、「サービスとしてのソフトウェア（ＳａａＳ）」、「プラットフォームコンピューティング」、「ネットワークアクセス可能なプラットフォーム」、「クラウドサービス」、「データセンター」などを含む。
【００１７】
サーバ１２２（１）〜（Ｐ）は、プロセッサ（複数可）及びメモリを含み得る。図示するように、サーバ１２２（１）〜（Ｐ）は、１つ以上のサーバインスタンス１２４（１）〜（Ｎ）を維持し得る。各々の物理的サーバは１つ以上のサーバインスタンスを維持し、各々のサーバインスタンスは、音声制御デバイス１０６などの１つ以上のクライアントデバイスとの接続を維持するように構成され得る。この例では、サーバインスタンス１２４（Ｎ）は、音声制御デバイスとの接続を維持する。図示するように、サーバインスタンス１２４（Ｎ）の例は、デバイス１０６からオーディオ信号を受信し、スピーチを認識し、そして、潜在的に、応答動作の実施を引き起こすために、スピーチ処理エンジン１２６を記憶して利用し得る。例えば、エンジン１２６は、自然言語理解（ＮＬＵ）技法をオーディオ信号に対して実施することによってオーディオ信号内のスピーチを特定し得る。加えて、エンジン１２６は、テキストツースピーチ（ＴＴＳ）を通じてクライアントデバイス（例えば、デバイス１０６）へ出力されるオーディオを提供し得る。一部の例では、サーバインスタンス１２４（Ｎ）が、音声制御デバイス１０６の計算能力をはるかに超える計算能力を有し得ることを考慮すれば、音声制御デバイス１０６は、処理目的でオーディオデータをサーバインスタンス１２４（Ｎ）にアップロードし得る。したがって、音声制御デバイス１０６は、環境１０２から捕捉されたオーディオに対して比較的複雑な分析を実施するためにスピーチ処理エンジン１２６を利用し得る。
【００１８】
スピーチ認識が当地で発生するか環境１０２から遠隔で発生するかにかかわらず、音声制御デバイス１０６は、ユーザ１０４からの音声入力を受信し、デバイス１０６及び／またはリソース１１８は、スピーチ認識を実施して、ユーザの動作要求またはコマンドを解釈し得る。要求は、データベースの照会、要求、及び消費娯楽（例えば、ゲーミング、音楽、映画、または他のコンテンツの発見及び再生など）、個人管理（例えば、スケジュール調整、メモ取りなど）、オンラインショッピング、金融取引などの実質的に任意の種類の動作であり得る。一部の場合では、デバイス１０６はまた、ユーザ１０４の１つ以上のクライアントデバイス上に記憶されたクライアントアプリケーションと相互作用する。一部の場合では、ユーザ１０４はまた、この「コンパニオンアプリケーション」を介してデバイス１０４と相互作用し得る。例えば、ユーザ１０４は、コンパニオンアプリケーションのグラフィカルユーザインターフェース（ＧＵＩ）を利用して、音声コマンドの代わりにデバイス１０６に要求をする。加えてまたは代わりに、デバイス１０６は、コンパニオンアプリケーションと通信して、ユーザ１０４によってデバイス１０６に提供された前回の音声コマンド（及びこれらのコマンドをデバイスがどのように解釈したか）、ユーザによって発行された音声コマンドに対する補足的なコンテンツ（例えば、ユーザ１０４によって要求されるようなデバイス１０６上で再生される歌のカバーアート）などの情報をユーザ１０４に対して掲げ得る。加えて、一部の場合では、デバイス１０６は、デバイス１０６が、コンパニオンアプリケーションを介して受信されたユーザ応答の形態で許可を受信するまでは音声コマンドには従わないようにするために、音声コマンドを受信したことに応答してコンパニオンアプリケーションに認可要求を送信し得る。
【００１９】
音声制御デバイス１０６は、有線技術（例えば、ワイヤ、ＵＳＢ、光ファイバーケーブルなど）、無線技術（例えば、Ｗｉ-Ｆｉ（登録商標）、ＲＦ、セルラー、衛星、Ｂｌｕｅｔｏｏｔｈ（登録商標）など）、または他の接続技術を通じてネットワーク１２０に通信可能に接続し得る。ネットワーク１２０は、データ及び／または音声のネットワークを含む任意の種類の通信ネットワークを表し、有線インフラストラクチャ（例えばケーブル、ＣＡＴ５、光ファイバーケーブルなど）、無線インフラストラクチャ（例えば、Ｗｉ-Ｆｉ、ＲＦ、セルラー、マイクロウェーブ、衛星、Ｂｌｕｅｔｏｏｔｈなど）、及び／または他の接続技術を用いて実装され得る。
【００２０】
図示するように、音声制御デバイス１０６のメモリ１１４はまた、スピーチ認識エンジン１１６及び接続モジュール１２８を記憶するか、またはさもなければこれらにアクセスする。接続モジュール１２８は、サーバインスタンス１２４（１）〜（Ｎ）のうちの１つに対する接続を確立するように機能する。図示するように、接続モジュール１２８は、特定のＶＩＰアドレス１３０をコールするように事前構成される。デバイス１０６及び他のデバイスの製造業者は、各々がそれぞれのサーバインスタンスの１つ以上のＩＰアドレスにマッピングする複数のＶＩＰアドレスのうちの１つで各々のデバイスを構成し得る。音声制御デバイス１０６などのクライアントデバイスに割り当てられるＶＩＰアドレスを変化させることによって、サーバインスタンスに割り当てられる負荷が、以下に検討するように分配され得る。
【００２１】
接続モジュール１２８はまた、以下に詳しく説明するように、仮想チャネルモジュール１３２、タイマー１３４、及び事前構成された時間遅延１３６を含む。
【００２２】
遠隔コンピューティングリソースとの接続を（例えば、デバイス１０６の電源投入時に）作成するために、接続モジュール１２８は、遠隔コンピューティングリソース１１８の負荷分散サービス１３８のサーバに対応する事前構成されたＶＩＰアドレス１３０をコールし得る。負荷分散サービス１３８は、各々のＶＩＰアドレスと関連付けられた異なるインスタンスに接続要求をルーティングすることによって、サーバインスタンス１２４（１）〜（Ｎ）全体に負荷を分散するように機能する。図示するように、負荷分散サービス１３８は、ＶＩＰアドレス１３０を含む１つ以上のＶＩＰアドレス１４０に対応し、また、ＶＩＰ-ｔｏ-ＩＰマッピング１４２を記憶する。ＶＩＰ-ｔｏ-ＩＰマッピング１４２は、どのサーバ−インスタンスＩＰアドレスがどのＶＩＰ（デバイス１０６などのクライアントデバイス上で事前構成されている）に対応するかを示す。したがって、デバイス１０６がＶＩＰアドレス１３０を用いて接続要求を発行するとき、負荷分散サービス１３８は、どのＩＰアドレスがこのＶＩＰアドレス１３０に対応するかを特定する。サービス１３８は、次に、これらのＩＰアドレスのうちの１つを選択して、接続要求を、この例ではサーバインスタンス１２４（Ｎ）などの対応するサーバインスタンスにルーティングする。マッピング１４２は、サーバインスタンスがこの例ではそれらのＩＰアドレスによって特定されたことを示す一方で、他の実装例では、これらのインスタンスは、それらのそれぞれのホスト名によって、または他の実施形態では他の特定情報を通じて特定され得る。
【００２３】
図示するように、サーバインスタンス例１２４（Ｎ）は、ＩＰアドレス１４４及び登録モジュール１４６を含む。デバイス１０６がサーバインスタンス１２４（Ｎ）との接続を確立すると、登録モジュール１４６は、この接続をデバイスロケーションサービス１４８に示し得る。デバイスロケーションサービス１４８は、どのクライアントデバイスがどのサーバインスタンスに接続されるかをマッピングするデバイス識別子（ＤＩＤ）-ｔｏ-ＩＰマッピング１５０を含む。この場合もやはり、マッピング１５０は、サーバインスタンスがこの例ではそれらのＩＰアドレスによって特定される一方で、他の実装例では、これらのインスタンスは、それらのそれぞれのホスト名によって、または他の実施形態では他の特定情報を介して特定され得る。
【００２４】
したがって、サーバインスタンスが、特定のクライアントデバイスに送信するデータを有するが、この特定のクライアントデバイスに直接には接続されていないときに、このサーバインスタンスは、どのサーバインスタンスがクライアントデバイスとの接続を維持するかをルックアップし得るし、このデータを対応するインスタンスに提供し得る。データを受信するサーバインスタンスは、すると、このデータを特定のクライアントデバイスに提供し得る。この例がデバイスロケーションサービス１４８にこの情報を登録するサーバインスタンス１２４（Ｎ）の登録モジュール１４６を説明しているが、他の例では、負荷分散サービス１３８または別のエンティティは、この情報をデバイスロケーションサービス１４８に送信し得る。
【００２５】
図示するように、サーバインスタンス１２４（Ｎ）はまた、仮想チャネルモジュール１５２を含む。仮想チャネルモジュール１３２（音声制御デバイス１０６上にある）及び仮想チャネルモジュール１５２は、各々が、いったんデバイス１０６がサーバインスタンス１２４（Ｎ）とのこのような接続を確立すると、接続上で１つ以上の仮想チャネルを作成するように機能する。例えば、デバイス１０６がオーディオ信号を（例えば、マイクロホン１０８によって検出された音などに基づいて）生成すると、仮想チャネルモジュール１３２は、オーディオ信号をサーバインスタンス１２４（Ｎ）に送信するために、仮想チャネルを作成し得る。同様に、サーバインスタンス１２４（Ｎ）が、クライアントデバイスに（例えば、スピーカ１１０に出力されるオーディオ信号、デバイス１０６の構成要素を制御する制御メッセージなどを）送信するデータを有する場合、仮想チャネルモジュール１５２は、このデータをデバイス１０６に送信するために仮想チャネルを作成し得る。
【００２６】
一部の場合では、１つの接続の複数の仮想チャネル上で送信されるデータは、多重化され得る。例えば、接続は、１つのフレームベースでまたは複数のフレームベースで、仮想チャネル上でデータを送信する間に繰り返すプロトコルを実装し得る。例えば、第１の仮想チャネルは、第１のフレーム中にデータを送信し、第２の仮想チャネルは、第２のフレーム中にデータを送信するといった具合である。
【００２７】
サーバインスタンス１２４（Ｎ）はまた、同様にタイマー１５６を含む接続モジュール１５４を含み得る。接続モジュール１５４は、音声制御デバイス１０６（及び恐らく、同時に、複数の他のクライアントデバイス）への接続を維持するように機能する。音声制御デバイス１０６のタイマー１３４に戻って、タイマー１３４は、デバイス１０６がサーバインスタンスに接続された状態にとどまる時間量、サーバインスタンス１２４（Ｎ）から受信も（音声制御デバイス１０６から）送信もされない時間量等を測定する。タイマー１３４が、閾値時間量にわたってデータがなにも全く（または閾値未満のデータ量しか）送信または受信されなかったことを示した後、接続モジュール１２８は、サーバインスタンス１２４（Ｎ）との接続を切断し得る。その後、接続モジュール１２８は、接続を作成しようと再度試行し、この接続を成そうとする前に、時間遅延１３６によって示される時間量待つ。デバイス１０６に対して事前構成され得る時間遅延１３６は、ある程度のランダムさを含むある時間量待つようにモジュール１３２に指示し得る。例えば、時間遅延１３６は、サーバインスタンスとの接続を喪失または切断した後、モジュール１３２は、最初に、１秒プラスマイナス１／２秒後に再接続を試行すべきであることを示し得る。その試行が不成功であれば、時間遅延１３６は、モジュール１３２は２秒プラスマイナス１秒を待つべきであることを示し得る。事前構成された程度のランダムさ、故に時間遅延１３６は、クライアントデバイスによって変化し得る。このように時間遅延を変化させることによって、複数のサーバインスタンスをホストする１つのサーバが、（例えば、保守、誤動作などによって）オフラインになると、変化した時間遅延は、そのサーバ上でホストされているサーバインスタンスに接続された各々のクライアントデバイスは、所与の瞬間で望まれない負荷を生じる結果となり得る、同時に遠隔コンピューティングリソース１１８への再接続を試行することはないことを保証する。
【００２８】
一方で、接続モジュール１５４のタイマー１５６は、タイマー１３４に類似して機能し得る。例えば、タイマー１５６は、音声制御デバイス１０６にデータが送信も受信もされない時間量を測定し得る。閾値時間量後、タイマー１５６は、接続モジュール１５４に対して、デバイス１０６との接続を切断するように命令し得る。一部の例では、タイマー１３４は、タイマー１５６の前に接続を切断するように設定され得るため、タイマー１５６は、接続モジュール１２８が（タイマー１３４と関連付けられた）閾値時間量が経過した後に接続を切断することに成功しない場合のフェイルセーフ機構として動作する。例えば、接続モジュール１２８は、１４分間後になってもデータが何も送信も受信もされない場合には接続を切断するように構成され得るが、接続モジュール１５４は、１５分間後になってもデータが何も送信も受信もされず、かつクライアントデバイスがまだ接続を切断しない場合には、接続を切断するように構成され得る。もちろん、他の実装例では、このプロトコルは逆転され得る。
【００２９】
図１は、サーバインスタンス１２４（Ｎ）がルックアップモジュール１５８を含み得ることをさらに示す。上述したように、一部の場合には、サーバインスタンス１２４（Ｎ）は、それが接続していない別のクライアントデバイスに送信するデータを有し得る。ルックアップモジュール１５８は、インスタンス１２４（Ｎ）がデータを有するクライアントデバイスのＤＩＤに対応するＩＰアドレスをルックアップするように機能し得る。この情報をマッピング１５０から決定した後、サーバインスタンス１２４（Ｎ）は、データを適切なサーバインスタンスに提供し得るが、このサーバインスタンスは、すると、データをクライアントデバイスに提供し得る。
【００３０】
最後に、図１は、サーバインスタンス１２４（Ｎ）の例は、１つ以上のアプリケーション１６０を含むことを示す。アプリケーションは、任意の数の方法で、音声制御デバイス１０６などのクライアントデバイスと相互作用し得る。例えば、アプリケーション（複数可）１６０は、特定のタスク（例えば、ミルクを買う）、デバイス１０６で出力するための音楽を送信するアプリケーションなどを実施するようにユーザ１０４に催促するデバイス１０６で出力されるオーディオを提供するリマインダアプリケーションを含み得る。一部の場合では、特定のサーバインスタンス上に記憶されているアプリケーションは、ルックアップモジュール１５８を利用して、遠隔コンピューティングリソース１１８のどのサーバインスタンスと、特定のクライアントデバイスが接続されているかを決定する。そうすることによって、アプリケーションは、あるコンテンツ（例えば、リマインダ）をこのクライアントデバイスに提供することが可能である。さらにその上、図１はアプリケーション１６０がサーバインスタンス１２４（Ｎ）上に存在することを図示するが、他の実装例では、アプリケーション１６０（及び他のアプリケーション）は、加えて及び／または代わりに、他のサーバまたは第三者サーバ上に存在し得る。
【００３１】
図２は、アーキテクチャ１００の例２００のさらなる詳細を示す。この例では、アーキテクチャの例２００は、音声制御デバイス２０２（１）、２０２（２）、２０２（３）、・・・、２０２（Ｒ）を含む。これらのデバイスの各々は、特定のＶＩＰアドレスをコールすることによって接続を確立するように事前構成されている。例えば、デバイス２０２（１）は、ＶＩＰアドレス２０４（１）をコールするように構成されており、デバイス２０２（２）は、ＶＩＰアドレス２０４（２）をコールするように構成されており、デバイス２０２（３）は、ＶＩＰアドレス２０４（３）をコールするように構成されており、デバイス２０２（Ｒ）は、ＶＩＰアドレス２０４（１）をコールするようにも構成されている。加えて、各々のデバイス２０２（１）〜（Ｒ）は、デバイスなどの通し番号を含み得るそれぞれのデバイスＩＤ（ＤＩＤ）２０６（１）、２０６（２）、・・・、２０６（Ｒ）と関連付けられる。
【００３２】
図示するように、負荷分散サービス１３８は、各々のＶＩＰアドレス２０４（１）〜（Ｑ）を、それぞれのサーバインスタンス２１０（１）、２１０（２）、２１０（３）、・・・、２１０（Ｓ）に対応する１つ以上の対応するＩＰアドレス２０８（１）、２０８（２）、２０８（３）、・・・、２０８（Ｓ）にマッピングする。負荷分散サービス１３８はまた、クライアントデバイス２０２（１）〜（Ｒ）から接続要求を受信し、これらの要求は特定のＶＩＰアドレスにアドレス指定されている。サービス１３８は、次に、この情報を対応するＩＰアドレスにマッピングして、要求をルーティングするＩＰアドレスを選択する。この例では、デバイス２０２（１）〜（Ｒ）が関連付けられる変化するＶＩＰアドレスを考慮すると、クライアントデバイス２０２（１）は、サーバインスタンス２１０（１）と接続し、クライアントデバイス２０２（２）は、サーバインスタンス２１０（２）と接続し、クライアントデバイス２０２（３）は、サーバインスタンス２１０（３）と接続し、クライアントデバイス２０２（Ｒ）は、サーバインスタンス２１０（Ｓ）と接続する。クライアントデバイスがサーバインスタンスとの接続を確立した後、それぞれのサーバインスタンスは、図示しかつ上述したように、デバイスロケーションサービス１４８で、その関連付けの指示を記憶する。
【００３３】
図３は、音声制御デバイス２０２（１）とサーバインスタンス２１０（１）との間の接続の例３００を示す。図示するように、複数の仮想チャネル３０２（１）、３０２（２）、・・・、３０２（Ｍ）は、この１つの接続３００上で確立され得る。デバイス２０２（１）は、デバイスがサーバインスタンス２１０（１）に送信するデータを有することを特定したことに応答して仮想チャネルを確立し得る。同様に、サーバインスタンス２１０（１）は、それがデバイス２０２（１）に送信するデータを有することを特定したことに応答して仮想チャネルを確立し得る。上述したように、接続３００は、クライアントデバイスに送信され、これによって受信されるデータを多重化するプロトコルを実装し得る。この例では、デバイス２０２（１）は、仮想チャネル３０２（１）を介してサーバインスタンス２１０（１）にデータを送信し、サーバインスタンス２１０（１）は、仮想チャネル３０２（２）及び３０２（Ｍ）を介してデバイス２０２（１）にデータを送信する。図１〜３は、デバイス１０６が負荷分散サービス１３８を介してサーバインスタンスに接続していることを図示しているが、デバイス１０６は、接続３００が行われた後に、サーバインスタンスと直接通信し得る（すなわち、サービス１３８を迂回し得る）。加えて、一部の実施形態は、クライアントデバイスとサーバインスタンスとの間の１つの接続を実装するが、他の実施形態では、複数の接続が確立され得る（例えば、１つはＴＴＳをクライアントデバイスに提供するため、１つは音楽をデバイスに提供するため、１つはオーディオ信号をデバイスからアップロードするため、など）。
【００３４】
図４は、音声制御デバイスまたは別のクライアントデバイスが実装し得るプロセスの例４００のフロー図である。本明細書に説明する各々のプロセスは、論理フロー図として図示されており、その各々の動作は、ハードウェア、ソフトウェア、またはそれらの組み合わせに実装することが可能な一連の動作を表す。ソフトウェアの文脈では、動作は、１つ以上のプロセッサによって実行されたとき、列挙された動作を実施する１つ以上のコンピュータ可読媒体上に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実施するまたは特定の抽象的データ種類を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。
【００３５】
コンピュータ可読媒体は、非一時的コンピュータ可読記憶媒体を含み得るが、これは、ハードドライブ、フロッピディスケット、光ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、磁気もしくは光カード、ソリッドステートメモリデバイス、または、電子命令を記憶するのに適切な他の種類の記憶媒体を含み得る。加えて、一部の実施形態では、コンピュータ可読媒体は、一時的コンピュータ可読信号（圧縮または非圧縮形態）を含み得る。コンピュータ可読信号の例は、搬送波を用いて変調されていようといまいと関係なく、これに限られないが、インターネットまたは他のネットワークを通じてダウンロードされる信号を含み、コンピュータプログラムをホストするまたは実行するコンピュータシステムがアクセスするように構成することが可能な信号を含む。最後に、動作が記述される順序は、限定的であると解釈されることを意図するものではなく、プロセスを実装するため、任意の数の前述の動作を任意の順序で、かつ／または並列に組み合わせることができる。
【００３６】
プロセス４００は、４０２で、クライアントデバイスが、クライアントデバイス上に記憶されているＶＩＰアドレスを用いてネットワークアクセス可能なプラットフォームのサーバインスタンスとの接続を確立することを含む。成功裏に接続を確立した後、クライアントデバイスは、４０４で、接続を介して第１の仮想チャネルを確立し得る。４０６で、クライアントデバイスは、第１の仮想チャネル上でサーバインスタンスにデータを送信し始め、４０８で、第２の仮想チャネル上でサーバインスタンスからデータを受信し得る。
【００３７】
４１０で、クライアントデバイスは、閾値時間量以内にデータが送信も受信もされていないかどうかを決定し得る。そうでなければ、少なくとも一部のデータがこの時間量以内に送信または受信されていることを意味するため、４１２で、クライアントデバイスは、サーバインスタンスとの接続を維持する。しかしながら、そうであれば（データは何も送信もまたは受信もされていないことを意味するため）、４１４で、クライアントデバイスは、サーバインスタンスとの接続を切断する。クライアントデバイスは、次に、デバイス上で構成されたＶＩＰアドレスをコールすることによって接続を再確立し始める。図４は、クライアントデバイスとサーバインスタンスとの間の接続を切断するための１つの例を示しているが、上述したように、これらの接続は、様々な他の理由により切断され得る。
【００３８】
図５は、遠隔コンピューティングリソース１１８が実装し得るプロセスの例５００のフロー図を示す。このプロセス５００は、リソース１１８の１つのサーバによってまたは複数のサーバ上で実施され得る。５０２で、リソース１１８は、リソース１１８との接続を確立する要求をクライアントデバイスから受信する。５０４で、リソースは、要求をサーバインスタンスにルーティングして、サーバインスタンスとの接続を作成する。例えば、要求は、特定のＶＩＰアドレスで受信され得るが、このアドレスは１つ以上のＩＰアドレスにマッピングされ得るが、その後、１つ以上のアドレスのＩＰアドレスが選択され得る。要求は、次に、選択されたＩＰアドレスに対応するサーバインスタンスにルーティングされ得る。
【００３９】
５０６で、リソース１１８は、クライアントデバイスＤＩＤとサーバインスタンスのＩＰアドレスとの間のマッピングを記憶する。加えて、リソース（例えば、接続されたサーバインスタンス）は、５０８で、第１の仮想チャネルを確立し得る。５１０で、リソース（例えば、リソースが実装するプロトコル）は、第１の仮想チャネル上でのデータの送信と第２の仮想チャネル上でのデータの、クライアントデバイスからの受信との間で多重化し得る。
【００４０】
５１２で、リソースは、閾値時間量以内にデータが送信も受信もされていないかどうかを決定し得る。そうでなければ、少なくとも一部のデータがこの時間量以内に送信または受信されていることを意味するため、５１４で、リソース（例えば、サーバインスタンス）は、クライアントデバイスとの接続を維持する。
【００４１】
加えて、かつ上述したように、アプリケーションは、クライアントデバイスに送信するデータを有し得る。そうであれば、５１６で、アプリケーションは、ＤＩＤとＩＰアドレスとの間のマッピングを参照して、サーバインスタンス、クライアントデバイスが接続されているＩＰアドレスを特定する。５１８で、アプリケーションは、次に、特定されたＩＰアドレスと関連付けられたサーバインスタンスにデータを送信し、このインスタンスが、すると、このデータを適切なクライアントデバイスに送信する。示されたプロセス５００はまた、一部のデータが５１２で、クライアントデバイスとサーバインスタンスとの間で送信または受信されたことが決定されたことを考慮すれば、５２０で、サーバインスタンスが、それが接続するクライアントデバイスとの接続を維持し得ることを示す。
【００４２】
しかしながら、サーバインスタンスが、５１２で、閾値時間量以内に送信も受信もされていないことを決定する場合、かつクライアントデバイスがインスタンスに接続された状態にとどまっている場合、５２２で、サーバインスタンスは、クライアントデバイスとの接続を切断する。その後しばらくして、遠隔コンピューティングリソースは、再度、同一のクライアントデバイスまたは異なるクライアントデバイスから、リソースとの接続を確立するための要求を受信し得る。この場合もやはり、図５がクライアントデバイスとサーバインスタンスとの間の接続を切断するための例を示すが、上述したように、これらの接続は、様々な他の理由で切断され得る。
【００４３】
図６は、音声制御デバイス１０６の１つの実装例の選択された機能構成要素をより詳細に示す。一般に、音声制御デバイス１０６は、限定された入／出力構成要素、メモリ、及び処理能力を持つ機能の能力という点では比較的単純であるスタンドアロンデバイスとして実装され得る。例えば、音声制御デバイス１０６は、一部の実装例では、キーボード、キーパッド、または他の形態の機械的入力部を有さず、また、それは、視覚的表現及びユーザによるタッチ入力を容易化するためにディスプレイまたはタッチ画面を有しない。その代わり、デバイス１０６は、オーディオを受信して出力する能力、ネットワークインターフェース（無線または有線ベース）、電源、及び限られた処理／記憶能力を実装され得る。
【００４４】
図示する実装例では、音声制御デバイス１０６は、プロセッサ１１２及びメモリ１１４を含む。メモリ１１４は、メモリ上に記憶された命令を実行するためにプロセッサ１１２によってアクセス可能な任意の利用可能な物理的媒体であり得る、コンピュータ可読記憶媒体（「ＣＲＳＭ」）を含み得る。１つの基本的実装例では、ＣＲＳＭは、ランダムアクセスメモリ（「ＲＡＭ」）及びフラッシュメモリを含み得る。他の実装例では、ＣＲＳＭは、これに限られないが、リードオンリーメモリ（「ＲＯＭ」）、電気的消去可能プログラム可能リードオンリーメモリ（「ＥＥＰＲＯＭ」）、または、所望の情報を記憶するために用いることが可能で、プロセッサ１１２によってアクセスすることが可能な他の任意の媒体を含み得る。
【００４５】
音声制御デバイス１０６は、ユーザ音声入力などのオーディオ入力を受信するために１つ以上のマイクロホン１０８を備えるマイクロホンユニットを含む。デバイス１０６はまた、オーディオ音を出力するために１つ以上のスピーカ１１０を含むスピーカユニットを含む。１つ以上のコーデック６０２は、オーディオ信号を符号化及び／または復号化するためにマイクロホン（複数可）１０８及びスピーカ（複数可）１１０に連結される。コーデックは、オーディオデータをアナログ形式とデジタル形式との間で変換し得る。ユーザは、デバイス１０６と、それに話しかけることによって相互作用し得るが、マイクロホン（複数可）１０８は、音を捕捉して、ユーザのスピーチを含むオーディオ信号を生成する。コーデック（複数可）６０２は、ユーザスピーチを符号化して、そのオーディオデータを他の構成要素に転送する。デバイス１０６は、可聴のステートメントをスピーカ（複数可）１１０を通じて放射することによってユーザに通信し返すことが可能である。このようにして、ユーザは、他の種類のデバイスに共通するキーボードまたはディスプレイを使用することなく、単にスピーチによって、音声制御デバイスと相互作用する。
【００４６】
図示する例では、音声制御デバイス１０６は、ネットワークに対する無線接続を容易化するために１つ以上のアンテナ６０６に連結された１つ以上の無線インターフェース６０４を含む。無線インターフェース（複数可）６０４は、Ｗｉ-Ｆｉ、Ｂｌｕｅｔｏｏｔｈ、ＲＦなどの様々な無線技法のうちの１つ以上を実装し得る。
【００４７】
１つ以上のデバイスインターフェース６０８（例えば、ＵＳＢ、広帯域接続など）は、ネットワークへの有線接続、または、他の無線ネットワークと通信するプラグインネットワークデバイスを容易化するためにデバイス１０６の一部としてさらに提供され得る。１つ以上の電源ユニット６１０は、電力をデバイス１０６上の様々な構成要素に分配するためにさらに提供される。
【００４８】
音声制御デバイス１０６は、ユーザから音声コマンド（例えば、語、句、文章など）を受信して、可聴フィードバックをユーザに出力する形態で、ユーザとのオーディオ相互作用をサポートするように設計される。したがって、図示する実装例では、ナビゲーションボタン、キーパッド、ジョイスティック、キーボード、タッチ画面などのような触覚入力デバイスがまったくないまたはほとんどない。さらに、テキストまたは図形の出力のためのディスプレイがまったくない。１つの実装例では、音声制御デバイス１０６は、音量を増加／減少させるための基本的音量制御ボタン（複数可）ならびに電力ボタン及びリセットボタンなどの非入力式制御機構を含み得る。また、例えば、電力が投入されているときなどの状態を示すまたはコマンドが受信されたときを示すために、１つ以上の簡単な光素子（例えば、デバイスの頂部の周辺の周りのＬＥＤ）が存在し得る。しかしながら、その他の点では、デバイス１０６は、一部の場合、任意の入力デバイスまたはディスプレイを用いないまたは用いる必要がない。
【００４９】
命令、データストアなどのいくつかのモジュールは、メモリ１１４内に記憶され、プロセッサ１１２上で実行されるように構成され得る。オペレーティングシステムモジュール６１２は、他のモジュールの利益となるようにデバイス１０６内にあってこれに連結されるハードウェア及びサービス（例えば、無線ユニット、コーデックなど）を管理するように構成される。加えて、メモリ１１４は、スピーチ認識エンジン１１６及び接続モジュール１２８を含み得る。
【００５０】
主題を構造の特徴に固有の言葉で説明したが、添付の特許請求の範囲に定義される主題は、記述した特定の特徴に必ずしも限定されないことを理解されたい。むしろ、特定の特徴は、特許請求の範囲を実装する例示的な形態として開示される。
付記：
付記１．  １つ以上のプロセッサと、
１つ以上のプロセッサによって実行されたときに、１つ以上のプロセッサに、
クライアントデバイスから、クライアントデバイスとサーバインスタンスとの間の接続を確立する第１の要求を受信することと、
クライアントデバイスと複数のサーバインスタンスのうちの第１のサーバインスタンスとの間の接続を、第１の要求を受信したことに少なくとも部分的に応答して確立することと、
ある期間にわたってクライアントデバイスと第１のサーバインスタンスとの間で転送されたデータ量に少なくとも部分的に基づいて接続をドロップすることと、
クライアントデバイスから、サーバインスタンスとの接続を確立する第２の要求を、少なくとも部分的にドロップに応答して受信することと、を含む行為を実施させる、コンピュータ実行可能命令を記憶する１つ以上のコンピュータ可読媒体と、を備える、システム。
付記２．  行為が、ドロップの前に、接続の第１のチャネル上で、クライアントデバイスから第１のサーバインスタンスにデータを送信することと、接続の第２のチャネル上で、第１のサーバインスタンスからクライアントデバイスでデータを受信することとの間を繰り返すことをさらに含む、付記１に記載のシステム。
付記３．  行為が、クライアントデバイスが第１のサーバインスタンスとの接続を確立したという指示を記憶することをさらに含み、指示が、クライアントデバイスと関連付けられたデバイス識別子（ＤＩＤ）及び第１のサーバインスタンスの識別子を含む、付記１に記載のシステム。
付記４．  ある期間にわたってクライアントデバイスと第１のサーバインスタンスとの間で転送されたデータ量に少なくとも部分的に基づいて接続をドロップすることが、クライアントデバイスと第１のサーバインスタンスとの間でデータが１５分間転送されなかったときに、接続をドロップすることを含む、付記１に記載のシステム。
付記５．  音を検出し、音に基づいて第１のオーディオ信号を生成するためのマイクロホンユニットと、
１つ以上のネットワークアクセス可能なコンピューティングリソースから受信された第２のオーディオ信号に対応する音を出力するためのスピーカと、
１つ以上のプロセッサと、
アドレス及びコンピュータ実行可能命令を記憶するメモリであって、コンピュータ実行可能命令が、１つ以上のプロセッサによって実行されたときに、１つ以上のプロセッサに、
装置と１つ以上のネットワークアクセス可能なコンピューティングリソースとの間の接続を、アドレスを用いて確立することと、
第１のオーディオ信号を１つ以上のネットワークアクセス可能なコンピューティングリソースに、接続を介して送信することと、
第２のオーディオ信号を１つ以上のネットワークアクセス可能なコンピューティングリソースから、接続を介して受信することと、
ある期間にわたって装置から１つ以上のネットワークアクセス可能なコンピューティングリソースに転送されたデータ量またはある期間にわたって１つ以上のネットワークアクセス可能なコンピューティングリソースから装置に転送されたデータ量のうちの少なくとも一方に少なくとも部分的に基づいて、接続を切断することと、を含む行為を実施させる、メモリと、を備える、装置。
付記６．  第１のオーディオ信号の送信及び第２のオーディオ信号の受信が、接続の第１のチャネル上で、第１のオーディオ信号の１つ以上のフレームを送信することと、接続の第２のチャネル上で、第２のオーディオ信号の１つ以上のフレームを受信することとの間を繰り返すことを含む、付記５に記載の装置。
付記７．  アドレスが、１つ以上のネットワークアクセス可能なコンピューティングリソースの複数のサーバインスタンスにマッピングする仮想インターネットプロトコル（ＶＩＰ）アドレスを含む、付記５に記載の装置。
付記８．接続が第１の接続であり、切断することが、
装置と１つ以上のネットワークアクセス可能なコンピューティングリソースとの間でデータがある期間転送されなかったと決定することと、
第１の接続を切断することと、
装置と１つ以上のネットワークアクセス可能なコンピューティングリソースとの間の第２の接続を、アドレスを用いて確立することと、を含む、付記５に記載の装置。
付記９．  １つ以上のプロセッサによって実行されたときに、１つ以上のプロセッサに、
クライアントデバイスとサーバインスタンスとの間に接続を確立することと、
ユーザからの音声コマンドを含むオーディオ信号を、クライアントデバイスのマイクロホンで生成することと、
オーディオ信号をサーバインスタンスに提供することと、
サーバインスタンスからの音声コマンドに対する応答を受信することと、
応答をクライアントデバイスのスピーカを介して出力することと、
接続をドロップして、接続のプロパティに少なくとも部分的に基づいてその後の接続を再確立することと、
を含む行為を実施させるコンピュータ実行可能命令を記憶する１つ以上のコンピュータ可読媒体。
付記１０．  接続のプロパティが、クライアントデバイスとサーバインスタンスとの間である期間にわたって転送されたデータ量、クライアントデバイスからサーバインスタンスにある期間にわたって転送されたデータ量、サーバインスタンスからクライアントデバイスにある期間にわたって転送されたデータ量、接続の持続時間、または接続の帯域幅を含む、付記９に記載の１つ以上のコンピュータ可読媒体。
付記１１．  行為が、接続の第１のチャネル上でクライアントデバイスからサーバインスタンスにデータを送信することと、接続の第２のチャネル上でサーバインスタンスからクライアントデバイスでデータを受信することとの間を繰り返すことをさらに含む、付記９に記載の１つ以上のコンピュータ可読媒体。
付記１２．  接続の確立が、クライアントデバイスの電源がオンにされたことに少なくとも部分的に応答して発生する、付記９に記載の１つ以上のコンピュータ可読媒体。
付記１３．  接続の確立が、仮想インターネットプロトコル（ＶＩＰ）アドレスを用いることを含み、ＶＩＰアドレスが、サーバインスタンスと１つ以上の他のサーバインスタンスとの間に負荷を分散する負荷分散サービスに対応する、付記９に記載の１つ以上のコンピュータ可読媒体。
付記１４．  サーバインスタンスが、ネットワークアクセス可能なコンピューティングプラットフォームの一部を形成し、
接続の確立が、クライアントデバイスが、ネットワークアクセス可能なコンピューティングプラットフォームに送信するデータを有するかにかかわらず発生する、
付記９に記載の１つ以上のコンピュータ可読媒体。
付記１５．  行為が、接続の第１のチャネル上でクライアントデバイスからサーバインスタンスにデータ送信することと、接続の第２のチャネル上でサーバインスタンスからクライアントデバイスでデータを受信することとの間を繰り返すことをさらに含み、第１のチャネル上でクライアントデバイスからデータを送信することが、クライアントデバイスによって生成されたオーディオ信号を、クライアントデバイスが存在する環境内で検出された音に基づいて送信することを含む、付記９に記載の１つ以上のコンピュータ可読媒体。
付記１６．  再確立が、ドロップのある時間量後に、その後の接続の再確立を試行することを含み、ある時間量がある程度のランダムさを含む、付記９に記載の１つ以上のコンピュータ可読媒体。
付記１７．  １つ以上のプロセッサと、
１つ以上のプロセッサによって実行されたときに、１つ以上のプロセッサに、
クライアントデバイスから、サーバインスタンスとの接続を確立する要求を受信することと、
クライアントデバイスが複数のサーバインスタンスのうちの第１のサーバインスタンスとの接続を確立するように、要求をルーティングすることと、
接続のプロパティ、第１のサーバインスタンスのプロパティ、またはクライアントデバイスのプロパティに少なくとも部分的に応答することに基づいて、接続を切断することと、を含む行為を実施させる、コンピュータ実行可能命令を記憶する１つ以上のコンピュータ可読媒体と、を備える、１つ以上のコンピューティングデバイス。
付記１８．  接続のプロパティが、ある期間にわたって、クライアントデバイスに第１のサーバインスタンスから送信されたか、またはクライアントデバイスから第１のサーバインスタンスによって受信されたデータ量を含む、付記１７に記載の１つ以上のコンピューティングデバイス。
付記１９．  第１のサーバインスタンスのプロパティが、第１のサーバインスタンスをホストする物理的サーバがシャットダウンされているという指示を含む、付記１７に記載の１つ以上のコンピューティングデバイス。
付記２０．  要求が、クライアントデバイスによってコールされた仮想インターネットプロトコル（ＶＩＰ）アドレスと関連付けられた負荷分散サービスによって受信される、付記１７に記載の１つ以上のコンピューティングデバイス。
付記２１．  クライアントデバイスのプロパティが、クライアントデバイスが第１のサーバインスタンスに接続することを認可されないことである、付記１７に記載の１つ以上のコンピューティングデバイス。
付記２２．  行為が、クライアントデバイスが第１のサーバインスタンスとの接続を確立したという指示を記憶することをさらに含み、指示が、クライアントデバイスと関連付けられたデバイス識別子（ＤＩＤ）及び第１のサーバインスタンスと関連付けられた識別子を含む、付記１７に記載の１つ以上のコンピューティングデバイス。
付記２３．  コンピューティングデバイスによって、指示にアクセスして、第１のサーバインスタンスの識別子を取得することと、
コンピューティングデバイスによって、第１のサーバインスタンスにデータを送信することであって、データがクライアントデバイス向けである、送信することと、
第１のサーバインスタンスによって、クライアントデバイスにデータを送信することと、をさらに含む、付記２２に記載の１つ以上のコンピューティングデバイス。
付記２４．  データが、クライアントデバイスのスピーカ上で出力されるオーディオ信号を含む、付記２３に記載の１つ以上のコンピューティングデバイス。
付記２５．  データが、クライアントデバイスに特定の動作を実施することを命令する制御メッセージを含む、付記２３に記載の１つ以上のコンピューティングデバイス。
付記２６．  行為が、サーバインスタンスによって、クライアントデバイスにデータを送信するための接続の第１のチャネルを確立することと、接続の第２のチャネル上で、サーバインスタンスで、かつクライアントデバイスからデータを受信することと、をさらに含む、付記１７に記載の１つ以上のコンピューティングデバイス。
付記２７．  第１のチャネル及び第２のチャネルが多重化される、付記２６に記載の１つ以上のコンピューティングデバイス。
【図１】
0006401242.tif 000002
【図２】
0006401242.tif 000003
【図３】
0006401242.tif 000004
【図４】
0006401242.tif 000005
【図５】
0006401242.tif 000006
【図６】
0006401242.tif 000007