(58)【調査した分野】(Int.Cl.,DB名)
前記命令は、前記再生デバイスによって実行された場合、前記特定のキーフレーズをエンコードしていない前記オーディオデータストリームの前記一部に基づいて、オーディオ透かしを含めるように、前記オーディオデータストリームを修正することをスキップするように判定し、前記特定のキーフレーズをエンコードしていない前記オーディオデータストリームの前記一部に基づいて、前記オーディオ透かしを含めるように、前記オーディオデータストリームを修正することをスキップすると判定した後、出力のために、前記オーディオデータストリームを提供することによって、前記オーディオデータストリームの前記一部が、前記特定のキーフレーズをエンコードしていないと判定するステップに前記再生デバイスを応答させるように動作可能である、請求項1に記載の再生デバイス。
前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、前記オーディオデータストリームの前記一部が、前記特定のキーフレーズをエンコードし、前記受信したオーディオデータストリームが、前記特定のキーフレーズの透かしを含んでいないとの判定に応じて実行される、請求項1に記載の再生デバイス。
前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、前記受信したオーディオデータストリームが前記特定のキーフレーズの透かしを含んでいるとの判定と、前記透かしにエンコードされているデータを分析することによる特定のデータが前記透かしにエンコードされていないとの判定とに応じて実行され、前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、前記特定のデータをエンコードする前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップを備えた、請求項1に記載の再生デバイス。
前記特定のデータをエンコードする前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、前記特定のデータをエンコードするように、前記受信したオーディオデータストリームからの前記透かしを修正するステップを備えた、請求項4に記載の再生デバイス。
前記オーディオデータストリームを受信するステップは、出力のために、前記修正されたオーディオデータストリームの前記一部を提供する前に、マイクロフォン以外のワイヤードまたはワイヤレス入力接続を介して、前記オーディオデータストリームを受信するステップを備えた、および/または、
前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、前記オーディオデータストリームのソースを識別する前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップを備えた、請求項1から9のいずれか一項に記載の再生デバイス。
前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、前記特定のキーフレーズが前記オーディオデータストリームの前記一部においてエンコードされていることを指定するデータを含む前記オーディオ透かしを含めるように、前記オーディオデータストリームを修正するステップを備えた、または、
前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、キーフレーズが前記オーディオデータストリームの前記一部においてエンコードされていることを指定するデータを含む前記オーディオ透かしを含めるように、前記オーディオデータストリームを修正するステップを備えた、請求項1から10のいずれか一項に記載の再生デバイス。
前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、前記オーディオデータストリームの前記一部が、前記特定のキーフレーズをエンコードし、前記受信したオーディオデータストリームが、前記特定のキーフレーズの透かしを含んでいないとの判定に応じて実行される、請求項12に記載の方法。
前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、前記受信したオーディオデータストリームが前記特定のキーフレーズの透かしを含んでいるとの判定と、前記透かしにエンコードされているデータを分析することによって特定のデータが前記透かしにエンコードされていないとの判定とに応じて実行され、前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップは、前記特定のデータをエンコードする前記オーディオ透かしを含めるように前記オーディオデータストリームを修正するステップを備えた、請求項12に記載の方法。
1つまたは複数のコンピュータによって実行された場合、前記1つまたは複数のコンピュータに、請求項12から14のいずれか一項に記載の方法を実行させる、コンピュータ可読命令。
【発明を実施するための形態】
【0013】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【0014】
再生デバイスは、オーディオデータストリーム、たとえばサードパーティコンテンツを受信し、キーフレーズについてオーディオデータストリームを分析し得る。再生デバイスは、テキスト検出器、ホットワード検出器、またはその両方を使用してオーディオデータストリームを分析し得る。分析に基づいて、オーディオデータストリームが、ホットワード、キーワード、またはキーフレーズをエンコードしていると再生デバイスが判定すると、再生デバイスは、オーディオデータストリームにオーディオ透かしを挿入する。オーディオ透かしは、オーディオデータストリームにエンコードされた超音波信号であり得る。その後、再生デバイスは、たとえばスピーカを使用して、修正されたオーディオデータストリームを可聴的に表示する。オーディオ透かしは、修正されたオーディオデータストリームをキャプチャする任意のリスニングデバイスに対して、エンコードされているホットワード、キーワード、またはキーフレーズが、たとえばリスニングデバイスを含む部屋で話している人ではなく、別のデバイスによって生成されたことを示す。
【0015】
いくつかの実施では、再生デバイスは透かし検出器を含み得る。再生デバイスは、受信したオーディオデータストリームが、透かしを含んでいるか否かを判定するために、透かし検出器を使用し得る。再生デバイスは、オーディオデータストリームが、透かしをまだ含んでいないと判定した場合、再生デバイスは、オーディオデータストリームにオーディオ透かしを挿入する。再生デバイスは、受信したオーディオデータストリームが、透かしを含んでいると判定すると、再生デバイスは、別の透かし、たとえばオーディオ透かしを追加するか否かを判定する。たとえば、再生デバイスは、受信したオーディオデータストリームに含まれている透かしが、何を識別するかを判定し得る。含まれている透かしが、ホットワード、キーワード、またはキーフレーズ以外の何かを表す場合、再生デバイスは、オーディオ透かしを、オーディオデータストリームに追加し得る。含まれている透かしが、ホットワード、キーワード、またはキーフレーズを表し、そのために、再生デバイスがオーディオデータストリームを分析している場合、再生デバイスは、受信したオーディオデータストリームに、別の透かしを追加しないように判定し得る。
【0016】
図1は、再生デバイス102が、オーディオデータストリーム114を分析して、オーディオデータストリーム114の一部が、ホットワード、キーワード、またはキーフレーズを含んでいるか否かを判定する例示的な環境100である。この文書では、「キーフレーズ」という用語は、一般に、キーフレーズに加えて、「キーワード」と「ホットワード」との両方を含むと理解される。キーフレーズの例は、ウェイクアップコマンド、活性化コマンド、または特定のアクションを実行するためのコマンド、たとえば、通話の開始やアプリケーションの起動等を含む。
【0017】
再生デバイス102としてのテレビは、映画のビデオストリームを受信し得る。テレビは、自動音声認識器106を使用して、ビデオストリームのオーディオデータストリーム114を分析し、オーディオデータストリーム114がホットワードをエンコードしているか否かを判定し得る。テレビが、オーディオにエンコードされているホットワードを検出すると、テレビは、検出されたホットワードに関連付けられたオーディオ透かし118を、オーディオデータストリーム116にエンコードする。リスニングデバイス124としてのスマートフォンは、テレビの近く、たとえばテレビと同じ部屋にあるが、このスマートフォンは、映画のオーディオを含む音を分析して、その音が、スマートフォンに特定のアクションを実行させるホットワードの発話であるか否かを判定し得る。たとえば、リスニングデバイス124は、ホットワードの検出時に、たとえば低電力使用状態からより高い電力使用状態に移行するために、スリープ状態からウェイクアップし得る。スマートフォンがキーワードの発話を検出すると、スマートフォンは、この発話が、オーディオ透かしに関連付けられているか否かを判定する。たとえば、スマートフォンが、映画のオーディオデータストリーム116においてホットワードを検出すると、スマートフォンは、テレビがオーディオデータストリーム116に追加したオーディオ透かし118も検出し、ホットワードとオーディオ透かし118との両方の検出に基づいて、スリープ状態を維持することを決定し、ホットワードおよび対応するオーディオ透かし、またはその両方の検出に関連付けられた別のアクションを実行する。他のアクションは、検出のログや、リスニングデバイスの画面に表示されるユニバーサルリソースロケータのログ、またはその両方のように、オーディオが、ホットワードのオーディオ透かしを含んでいない場合とは異なるタイプのアクションを含み得る。スマートフォンが、オーディオ透かしに関連付けられていないホットワードの発話、たとえば、ユーザによって話された発話を検出すると、スマートフォンは、スリープ状態からウェイクアップし、たとえばより高い電力モードに移行する。
【0018】
再生デバイス102は、分析のためにコンテンツにアクセスするコンテンツ検索モジュール104を含む。コンテンツ検索モジュール104は、ワイヤード入力、ワイヤレス無線、無線受信機、またはコンテンツ検索モジュール104がオーディオデータストリーム114にアクセスするために使用するメモリを含み得る。たとえば、コンテンツ検索モジュール104がワイヤード入力を含む場合、コンテンツ検索モジュール104は、ケーブルテレビ接続、または、ワイヤを使用して再生デバイス102に接続された別のデバイスからオーディオデータストリーム114を受信し得る。コンテンツ検索モジュール104がワイヤレス無線を含む場合、コンテンツ検索モジュール104は、たとえばネットワークを介してワイヤレスで再生デバイス102に接続するデバイスから、オーディオデータストリーム114を受信し得る。たとえば、コンテンツ検索モジュール104は、別のデバイス、たとえばライブストリーム、合成的に作成されたストリーム、またはその両方から、オーディオデータストリーム114を、オーディオストリームまたはオーディオおよびビデオストリームとして受信し得る。コンテンツ検索モジュール104が無線受信機を含む場合、コンテンツ検索モジュール104は、無線放送、たとえば振幅変調(AM)または周波数変調(FM)無線放送の一部として、オーディオデータストリーム114を受信することができる。コンテンツ検索モジュール104がメモリを含む場合、コンテンツ検索モジュール104は、メモリに記憶されたオーディオファイルまたはオーディオおよびビデオファイルの一部、たとえばメモリに記憶された事前記録されたオーディオまたはビデオファイルとして、オーディオデータストリーム114にアクセスすることができる。メモリは、たとえばハードディスクドライブもしくはフラッシュドライブなどの再生デバイス102に統合され得るか、または、たとえばユニバーサルシリアルバスフラッシュドライブもしくはコンパクトディスクもしくはデジタル多用途ディスクなどのリムーバブルな記憶ユニットであり得る。
【0019】
コンテンツ検索モジュール104は、オーディオデータストリーム114の少なくとも一部を、自動音声認識器106(ASR)に提供する。自動音声認識器106は、オーディオデータストリームにエンコードされている単語またはフレーズを検出するために、たとえばソフトウェアの場合にはプログラムされ得るか、または、たとえばハードウェアの場合には設計され得るか、またはその両方であり得る。自動音声認識器106は、特定の言語のすべての単語の発生を検出可能とすることなく、特定の言語の特定のキーフレーズを検出し得る。
【0020】
いくつかの例では、再生デバイス102は、自動音声認識器106の代わりに、またはそれに加えて、1つまたは複数のホットワードを検出するが特定の言語のすべての単語を検出できる訳ではない自動ホットワード検出モジュールを使用し得る。自動音声認識器106、自動ホットワード検出モジュール、またはその両方は、たとえばアドミニストレータによって、特定のホットワードのために事前にプログラムされ得る。ホットワードは、多数の単語を含む個々の単語またはフレーズを含み得る。
【0021】
いくつかの例では、自動音声認識器106は、特定のホットワード、キーワード、キーフレーズ、またはこれらの複数の組合せに加えて、オーディオデータストリームにエンコードされている多数の異なる単語の発生を検出することができ、そのために、再生デバイス102は、オーディオデータストリームを分析する。たとえば、自動音声認識器106は、ホットワード、キーワード、またはキーフレーズを含む特定の言語における単語を検出するようにトレーニングされ得る。
【0022】
自動音声認識器106は、オーディオデータストリーム114の少なくとも一部を受信する前に、ホットワード、キーワード、またはキーフレーズを識別する入力を受信し得、そのために、自動音声認識器106は、オーディオデータストリーム114を分析する。たとえば、再生デバイス102は、キーフレーズを識別するユーザ入力を受信し得、そのために、自動音声認識器106は、オーディオデータストリームを分析する。いくつかの例では、再生デバイス102は、キーフレーズを識別する別のデバイス、たとえばスマートフォンから入力を受信し得、そのために、自動音声認識器106は、オーディオデータストリームを分析する。
【0023】
自動音声認識器106は、オーディオデータストリーム114の少なくとも一部を分析して、オーディオデータストリーム114の一部が、ホットワード、キーワード、またはキーフレーズをエンコードしているか否かを判定し、そのために自動音声認識器106は検出するように構成されている。たとえば、コンテンツ検索モジュール104がオーディオデータストリーム114の一部を受信し、オーディオデータストリーム114の一部を自動音声認識器106に提供するとき、自動音声認識器106は、エンコードされているホットワード、キーワード、またはキーフレーズの発生に関して、オーディオデータストリーム114の一部を分析し、そのために自動音声認識器106は検出するように構成されている。コンテンツ検索モジュール104は、オーディオデータストリーム114の追加部分を受信し続けることができる一方、自動音声認識器106は、オーディオデータストリーム114の一部がホットワード、キーワード、またはキーフレーズをエンコードしているか否かを判定する。
【0024】
自動音声認識器106が、オーディオデータストリーム114の一部におけるホットワード、キーワード、またはキーフレーズの発生を検出すると、自動音声認識器106は、透かしエンコードモジュール108にメッセージを提供する。メッセージは、検出されたホットワード、キーワード、またはキーフレーズをエンコードするオーディオデータストリームの一部を識別し得る。
【0025】
メッセージの受信に応じて、透かしエンコードモジュール108は、修正されたオーディオデータストリーム116を作成するために、オーディオ透かし118をオーディオデータストリーム114に挿入する。メッセージが、ホットワード、キーワード、またはキーフレーズをエンコードするオーディオデータストリーム114の第1の部分120を識別すると、透かしエンコードモジュール108は、第1の部分120に関連付けられたオーディオデータストリーム114の第2の部分122に、オーディオ透かし118を挿入し得る。第2の部分122は、たとえば
図1に示されるように、第1の部分120のサブ部分であり得る。第2の部分122は、第1の部分120と重なり得、たとえば、第2の部分122は、第1の部分120の開始前にありおよび開始を含む、第1の部分120の終了後にありおよび終了を含む、またはその両方であるオーディオデータストリーム114からのデータを含む。第2の部分122は、第1の部分120の開始前にオーディオデータストリーム114に含まれ得る。第2の部分122は、2つの部分の間に隙間なく第1の部分120に隣接し得る。第2の部分122は、第1の部分120と重ならない場合がある。いくつかの実施では、第2の部分122は、第1の部分120の後であり得る。
【0026】
透かしエンコードモジュール108は、修正されたオーディオデータストリーム116にオーディオ透かしの単一のインスタンスを含め得る。透かしエンコードモジュール108は、修正されたオーディオデータストリーム116に、多数のオーディオ透かしを含め得る。多数のオーディオ透かしのおのおのは、同じデータをエンコードし得る。いくつかの例では、多数のオーディオ透かしのいくつかは、異なるデータをエンコードし得る。
【0027】
いくつかの実施では、再生デバイス102は、オーディオ透かし118内の追加のデータをエンコードし得る。追加のデータは、たとえば、テレビ、ステレオ受信機、もしくはコンピュータのような再生デバイス102のタイプ、たとえば、再生デバイス102が、オーディオデータストリームにオーディオ透かしを挿入したとき、もしくは再生デバイス102が、オーディオデータストリーム114を受信したときのようなタイムスタンプ、または、たとえば、テレビ局、ラジオ局、映画名、またはポッドキャスト名のようなオーディオデータストリーム114のソースを示し得る。リスニングデバイス124は、実行すべきアクションを判定するときに、追加のデータを使用し得る。
【0028】
オーディオ透かしは、オーディオデータストリームのソースを識別し得る。たとえば、オーディオ透かしは、再生デバイス102が、コンテンツプロバイダ、たとえば、特定のラジオ局、テレビ局、ケーブルプロバイダ、または他の特定のコンテンツプロバイダからオーディオデータストリームを受信したことを示し得る。
【0029】
オーディオ透かしは、オーディオデータストリーム114にエンコードされている特定のホットワード、キーワード、またはキーフレーズを識別し得る。たとえば、オーディオ透かしには、ホットワード、キーワード、またはキーフレーズの識別子を含み得る。識別子は、任意の適切なタイプの識別子であり得る。識別子は、ホットワード、キーワード、またはキーフレーズに対応する数値であり得る。識別子は、ホットワード、キーワード、またはキーフレーズに対応する英数字の値、たとえば、対応するホットワード、キーワード、またはキーフレーズのテキストであり得る。
【0030】
いくつかの実施では、オーディオ透かしは、ホットワード、キーワード、またはキーフレーズが、オーディオデータストリーム114でエンコードされていることを指定するデータを含み得る。たとえば、データは一般に、特定のエンコードされているホットワード、キーワード、またはキーフレーズを識別することなく、ホットワード、キーワード、またはキーフレーズが、オーディオデータストリーム114にエンコードされていることを指定し得る。
【0031】
透かしエンコードモジュール108が、オーディオデータストリーム114にオーディオ透かし118を挿入した後、再生デバイス102は、出力のために、修正されたオーディオデータストリーム116を提供し得る。たとえば、再生デバイス102は、オーディオデータストリーム114が、ビデオファイルの一部、スピーカ112、またはその両方である場合、たとえばディスプレイ110のような、1つまたは複数の出力デバイスを使用して、修正されたオーディオデータストリーム116を表示し得る。たとえば、再生デバイス102は、スピーカ112によって修正されたオーディオデータストリーム116を提示させるために、修正されたオーディオデータストリーム116をスピーカ112へ提供し得る。再生デバイス102は、表示のために、対応するビデオストリームをディスプレイ110に提供し得る。
【0032】
スピーカ112は、再生デバイス102に統合され得るか、または、再生デバイス102の外部にあり、再生デバイス102に接続され得る。たとえば、スピーカ112は、再生デバイス102の一部であり得る。いくつかの例では、スピーカ112は、ワイヤレス接続、たとえば、Bluetooth(登録商標)または別のワイヤレスネットワーク接続を使用して再生デバイス102に接続し得る。スピーカ112は、1つまたは複数のワイヤを使用して、たとえば、オプションとしてステレオ受信機または別のデバイスを使用して再生デバイス102に接続し得る。いくつかの実施では、スピーカ112は、デジタルオーディオおよびビデオ接続を使用して再生デバイス102に接続し得る。たとえば、再生デバイス102は、スピーカ112を含むテレビまたは受信機に接続されたユニバーサルシリアルバスデバイスであり得る。
【0033】
再生デバイス102は、ビデオストリームの表示を、修正されたオーディオデータストリーム116と同期させ得る。たとえば、再生デバイス102は、ディスプレイ110がビデオストリームの対応するビデオ部分を同時に表示している間に、スピーカ112が、修正されたオーディオデータストリーム116を提示することを保証し得る。再生デバイス102は、任意の適切な方法を使用して、オーディオ透かし118を、修正されたオーディオデータストリーム116に組み込み、対応するビデオストリームの表示を、修正されたオーディオデータストリーム116またはその両方と同期させ得る。
【0034】
自動音声認識器106は、オーディオデータストリーム114の一部が、ホットワード、キーワード、またはキーフレーズをエンコードしていないと判定し、そのために自動音声認識器106が検出するように構成されている場合、自動音声認識器106は、透かしエンコードモジュール108に、オーディオデータストリーム114の一部に関するメッセージを提供しないと判定する。いくつかの例では、自動音声認識器106は、再生デバイス102が、修正なしで出力するためのオーディオデータストリーム114を提供すべきであると判定する。透かしエンコードモジュール108にメッセージを提供しないことにより、再生デバイス102は、たとえばオーディオデータストリーム114の一部が、ホットワード、キーワード、またはキーフレーズをエンコードする別の部分に隣接していない場合、修正なしで出力するためのオーディオデータストリーム114の一部を提供できる。
【0035】
リスニングデバイス124は、オーディオデータストリーム114の表示された部分、修正されたオーディオデータストリーム116、またはその両方をキャプチャし得る。たとえば、リスニングデバイス124は、再生デバイス102に含まれるスピーカ112によるオーディオデータストリームの表示をキャプチャするマイクロフォン126を含み得る。
【0036】
リスニングデバイス124は、キャプチャされたオーディオデータストリームの一部を、キーフレーズ検出モジュール128に提供する。キーフレーズ検出モジュール128は、自動音声認識器であり得る。キーフレーズ検出モジュール128は、たとえば少数の特定のホットワードのみを検出するようにプログラムされた自動ホットワード検出モジュールであり得る。いくつかの例では、キーフレーズ検出モジュール128は、多数の異なるキーフレーズを検出するようにプログラムされ得る。
【0037】
キーフレーズ検出モジュール128は、キャプチャされたオーディオデータストリームの一部を分析して、キャプチャされたオーディオデータストリームの一部が、ホットワード、キーワード、またはキーフレーズをエンコードしているか否かを判定し、そのためにキーフレーズ検出モジュール128は検出するように構成されている。キーフレーズ検出モジュール128は、キャプチャされたオーディオデータストリームの一部が、ホットワード、キーワード、またはキーフレーズをエンコードしていないと判定し、そのためにキーフレーズ検出モジュール128は検出するように構成されている場合、キーフレーズ検出モジュール128は、キャプチャされたオーディオデータストリームの一部の分析を停止すること、リスニングデバイス124が、キャプチャされたオーディオデータストリームの一部に基づいてアクションを実行しないこと、またはその両方を決定し得る。たとえば、リスニングデバイス124は、キャプチャされたオーディオデータストリームの一部が、たとえば、いずれのホットワード、キーワード、もしくはキーフレーズもエンコードしていないオーディオデータストリーム114の無修正部分であり得るので、キャプチャされたオーディオデータストリームの一部に基づいて、アクションを実行しないと判定し得るか、ホットワード、キーワード、もしくはキーフレーズをエンコードし得、そのためにキーフレーズ検出モジュール128が検出するように構成されているか、またはその両方であり得る。いくつかの例では、アクションを実行しないと判定することは、スリープ状態を維持し、たとえば、キーフレーズの検出に基づいてスリープ状態を終了しないと判定することを含み得る。
【0038】
検出されたキーフレーズに応じたアクションを実行しないと判定することにより、リスニングデバイス124は、計算リソース、たとえば、バッテリ、プロセッササイクル、メモリ、またはこれらの複数の組合せを節約し得る。たとえば、リスニングデバイス124が、検出されたキーフレーズに応じてウェイクアップするか、アクションを実行する場合、リスニングデバイス124は、1つまたは複数の計算リソースを消費する追加のソフトウェアアプリケーション、ハードウェア機能、またはその両方をアクティブ化し得る。アウェイクモードでは、リスニングデバイス124は、検出されたキーフレーズの後に話された追加のキーフレーズをリスンするプロセスをトリガし得、それらの追加のキーフレーズを分析して、リスニングデバイス124に対するコマンドを含んでいるか否かを判定し得る。キーフレーズとオーディオ透かしの両方を検出すると、たとえばスリープ状態を維持するなどのアクションを実行せず、誤ってトリガしないことにより、リスニングデバイス124は、1つまたは複数の計算リソースを節約し得る。
【0039】
キャプチャされたオーディオデータストリームの一部は、ホットワード、キーワード、またはキーフレーズをエンコードしていると、キーフレーズ検出モジュール128が判定し、そのためにキーフレーズ検出モジュール128が検出するように構成されている場合、リスニングデバイス124は、キャプチャされたオーディオデータストリームの一部のデータを、透かし検出モジュール130に提供する。キーフレーズ検出モジュール128は、透かし検出モジュール130が、キャプチャされたオーディオデータストリームを分析すべきであることを示すメッセージを、透かし検出モジュール130に提供し得る。いくつかの例では、キーフレーズ検出モジュール128は、リスニングデバイス124内の別のコンポーネントにメッセージを提供し得、他のコンポーネントは、キャプチャされたオーディオデータストリームの透かし検出モジュール130の分析をトリガし得る。
【0040】
メッセージの受信に応じて、または他のコンポーネントによるトリガに応じて、透かし検出モジュール130は、キャプチャされたオーディオデータストリームの一部を受信する。透かし検出モジュール130は、ホットワード、キーワード、またはキーフレーズを含む、キーフレーズ検出モジュール128が判定した部分を受信し得、そのためにキーフレーズ検出モジュール128は検出するように構成されている。いくつかの例では、透かし検出モジュール130は、たとえば、ホットワード、キーワード、またはキーフレーズを含む、キーフレーズ検出モジュール128が判定した部分の近くの、隣接した、または重なり合うオーディオデータストリームに含まれる、キャプチャされたオーディオデータストリームの別の部分を受信し得る。
【0041】
透かし検出モジュール130は、キャプチャされたオーディオデータストリームを分析して、キャプチャされたオーディオデータストリームが、キャプチャされたオーディオデータストリームにおいてキーフレーズ検出モジュール128が検出したホットワード、キーワード、またはキーフレーズのオーディオ透かしを含んでいるか否かを判定する。キャプチャされたオーディオデータストリームは、ホットワード、キーワード、またはキーフレーズのオーディオ透かしを含んでいると透かし検出モジュール130が判定すると、リスニングデバイス124は、ホットワード、キーワード、またはキーフレーズに基づいて、アクションを実行しないと判定する。たとえば、リスニングデバイス124は、スリープ状態のままであるように、低電力使用状態から高電力使用状態へ変化しないように、またはその両方であるように判定し得る。いくつかの例では、透かし検出モジュール130が、ホットワード、キーワード、またはキーフレーズのオーディオ透かしを検出すると、透かし検出モジュール130は、オーディオ透かしの検出を示すメッセージを、リスニングデバイス124に提供し得る。リスニングデバイス124は、透かし検出モジュール130からのメッセージを使用して、たとえば、ホットワード、キーワード、またはキーフレーズの検出を示す、キーフレーズ検出モジュール128から受信したメッセージとともに、アクションを実行しないと判定し得る。リスニングデバイス124は、透かし検出モジュール130からのメッセージを使用して、検出されたホットワード、キーワード、またはキーフレーズが、リスニングデバイスの近くの物理的な領域にいる人によって話された可能性が低く、検出されたホットワード、キーワード、またはキーフレーズに固有のアクションを実行しないと判定し得る。
【0042】
いくつかの実施では、リスニングデバイス124は、キーフレーズと、対応するオーディオ透かしとの両方の検出に基づいてアクションを実行し得る。アクションは、オーディオ透かしに固有の場合も、キーフレーズとオーディオ透かしとの組合せに固有の場合もあるが、キーフレーズのみに固有ではない。たとえば、リスニングデバイス124は、修正されたオーディオデータストリーム116におけるオーディオ透かし118の検出に基づいて、または修正されたオーディオデータストリーム116におけるオーディオ透かし118とキーフレーズとの両方の検出に基づいて、データのログを取ると判定し得る。リスニングデバイス124は、透かし118の実際のコンテンツを使用してアクションを判定し得、たとえば、将来の使用のために、コンテンツの発信元、オーディオ透かし118、またはその両方のようなオーディオ透かしからの情報を記憶し得る。
【0043】
透かし検出モジュール130が、ホットワード、キーワード、またはキーフレーズのオーディオ透かしを検出しない場合、リスニングデバイス124は、検出されたホットワード、キーワード、またはキーフレーズのアクションを実行することができる。アクションは、リスニングデバイス124の活性化、低電力使用状態から高電力使用状態への変化、または検出されたホットワード、キーワード、またはキーフレーズに固有の別のアクションであり得る。
【0044】
たとえば、リスニングデバイス124は、キーフレーズ検出モジュール128が、マイクロフォン126によってキャプチャされたオーディオデータストリームにおいてエンコードされている、ホットワード、キーワード、またはキーフレーズを検出したことを示すメッセージを、キーフレーズ検出モジュール128から受信し得る。リスニングデバイス124は、透かし検出モジュール130に対して、検出されたホットワード、キーワード、またはキーフレーズのオーディオ透かしのオーディオデータストリームを分析させる活性化メッセージを、透かし検出モジュール130に送信し得る。透かし検出モジュール130が、ホットワード、キーワード、またはキーフレーズのオーディオ透かしを検出しない場合、透かし検出モジュール130は、オーディオ透かしの非検出を示すメッセージを、リスニングデバイス124に送信し得る。リスニングデバイス124は、キーフレーズ検出モジュール128および透かし検出モジュール130からの両方のメッセージを使用して、リスニングデバイスの近くの物理的な領域にいる人が、検出されたホットワード、キーワード、またはキーフレーズを話した可能性が高いと判定し、検出されたホットワード、キーワード、またはキーフレーズに対応するアクションを実行し得る。
【0045】
いくつかの実施では、再生デバイス102は、透かし検出モジュールを含み得る。再生デバイス102は、透かし検出モジュールを使用して、オーディオデータストリーム114におけるホットワード、キーワード、またはキーフレーズの検出時に、オーディオデータストリーム114にオーディオ透かしを追加するか否かを判定し得る。たとえば、自動音声認識器106が、オーディオデータストリーム114の一部におけるホットワード、キーワード、またはキーフレーズの発生を検出すると、自動音声認識器106または再生デバイス102は、透かし検出モジュールにメッセージを提供する。透かし検出モジュールは、このメッセージを使用して、分析するオーディオデータストリーム114の部分を判定する。透かし検出モジュールは、オーディオデータストリーム114の判定された部分を分析して、判定された部分が、透かし、たとえば、オーディオ透かし、ビデオ透かし、またはその両方を含むか否かを判定する。オーディオデータストリーム114が透かしを含んでいないと透かし検出モジュールが判定すると、再生デバイス102は、上記で説明したように処理を進め、たとえば、透かしエンコードモジュール108は、オーディオ透かし118をオーディオデータストリームに挿入して、修正されたオーディオデータストリーム116を作成する。
【0046】
透かし検出モジュールは、オーディオデータストリーム114が透かしを含んでいると判定すると、透かし検出モジュールは、検出されたキーフレーズのオーディオ透かしを、オーディオデータストリーム114に追加すべきか否かを判定する。たとえば、透かし検出モジュールは、検出された透かしが、検出されたキーフレーズに対応するか否か、たとえば、検出された透かしが、検出されたキーフレーズを識別するデータを含んでいるか否か、検出された透かしの位置が、オーディオデータストリーム114において検出されたキーフレーズの位置に対応するか否か、またはその両方を判定する。検出された透かしの第1の位置は、第1の位置が第2の位置からたとえば時間的なしきい距離内にあるとき、検出されたキーフレーズの第2の位置に対応し得る。
【0047】
検出された透かしは、検出されたキーフレーズに対応していないと、透かし検出モジュールが判定すると、再生デバイス102は、修正されたオーディオデータストリーム116を作成するために、透かしエンコードモジュール108に、オーディオ透かし、たとえばオーディオ透かし118をオーディオデータストリーム114に追加させる。たとえば、透かし検出モジュールは、第1の位置が第2の位置からしきい距離内にないと判定し、それに応じて、透かしエンコードモジュール108は、オーディオ透かし118をオーディオデータストリーム114に追加する。
【0048】
検出された透かしは、検出されたキーフレーズに対応するが、キーフレーズの特定のデータ、たとえば、オーディオデータストリームのソースを含んでいないと透かし検出モジュールが判定すると、再生デバイス102は、透かしエンコードモジュール108に、オーディオ透かしを追加させ得る。たとえば、透かし検出モジュールは、透かしが、検出されたキーフレーズのテキストを識別し、オーディオデータストリーム114において、検出されたキーフレーズの位置に位置的に対応し、またはその両方であるが、オーディオデータストリームのソースの名前を含んでいないと判定し得る。それに応じて、透かし検出モジュールは、再生デバイス102が、オーディオ透かし118を、ソースの名前とともにオーディオデータストリーム114に挿入すべきであると判定し得る。
【0049】
再生デバイス102は、オーディオデータストリーム114にオーディオ透かしを挿入すべきではないと、透かし検出モジュールが判定した場合、再生デバイス102は、検出されたキーフレーズに関するメッセージを、透かしエンコードモジュール108に送信しないと決定する。たとえば、再生デバイス102は、検出されたキーフレーズに基づいてさらなるアクションをせず、たとえば、検出されたキーフレーズをエンコードするオーディオデータストリーム114の一部を、スピーカ112を介した出力のために提供することを決定する。
【0050】
再生デバイス102は、たとえばメモリまたは別のデバイスからオーディオデータストリーム114を受信し、たとえばスピーカ112を使用して、オーディオデータストリーム114の少なくとも一部を可聴的に提示する任意の適切なタイプのデバイスであり得る。再生デバイス102のいくつかの例には、テレビ、卓上アシスタント、スマートスピーカ、スマートウォッチ、たとえばカーステレオもしくはホームステレオ用のステレオ受信機、パーソナルコンピュータ、またはモバイル通信デバイス、たとえばスマートフォンを含み得る。いくつかの例では、再生デバイス102はサーバであり得る。いくつかの実施では、再生デバイス102は、オーディオデータストリーム114を要求したウェブブラウザを使用してオーディオデータストリーム114を受信し得る。リスニングデバイス124のいくつかの例は、パーソナルコンピュータ、モバイル通信デバイス、パーソナルセキュリティシステム、モノのインターネットデバイス、および、再生デバイス102によって提示されたオーディオデータを、たとえばマイクロフォン126を使用してキャプチャすることができる他のデバイスを含み得る。
【0051】
図2は、キーフレーズ検出に基づいてオーディオデータストリームを修正するためのプロセス200のフロー図である。たとえば、プロセス200は、環境100からの再生デバイス102によって使用され得る。
【0052】
再生デバイスは、特定のホットワード、キーワード、またはキーフレーズを定義する入力を受信する(202)。たとえば、再生デバイスは、特定のホットワード、キーワード、またはキーフレーズを定義するユーザ入力を受信し得る。ユーザ入力は、たとえばマイクロフォンを介して受信される音声入力であり得る。ユーザ入力は、たとえばキーボードまたはリモコンを介して受信されるテキスト入力であり得る。いくつかの実施では、特定のホットワード、キーワード、またはキーフレーズは、アドミニストレータによって定義され得、たとえば、再生デバイスに含まれる自動音声認識器または自動ホットワード検出モジュールを構成する。
【0053】
いくつかの実施では、再生デバイスは、別のデバイスから入力を受信し得る。たとえば、再生デバイスは、ホットワードをエンコードするオーディオ信号の受信に応じて起動するデバイス、たとえばリスニングデバイス124から入力を受信し得る。再生デバイスは、他のデバイスからの入力を受信し、再生デバイスは、オーディオデータストリームにおける検出時に、どのホットワード、キーワード、またはキーフレーズのために、オーディオデータストリームへオーディオ透かしを追加するのかを、動的に決定できるようになる。
【0054】
いくつかの実施では、特定のホットワード、キーワード、またはキーフレーズは固定され得る。たとえば、再生デバイスは、1つまたは複数の所定のホットワード、キーワード、またはキーフレーズのデータを有し得る。所定のホットワード、キーワード、またはキーフレーズは、特定のリスニングデバイス、または特定のタイプのリスニングデバイスに固有のものである場合があり、たとえば、それらはすべて同じオペレーティングシステムを有する。固定されたホットワード、キーワード、またはキーフレーズを使用すると、再生デバイスによって出力されたオーディオデータストリームを受信する特定のリスニングデバイス用に再生デバイスがカスタマイズされていない場合、再生デバイスは、インスタンス内のそれらのフレーズにオーディオ透かしを追加できる。たとえば、再生デバイスが、異なるタイプのリスニングデバイスのグループ、たとえば異なるオペレーティングシステムのグループに固有のホットワード、キーワード、またはキーフレーズのオーディオ透かしをオーディオデータストリームに追加すると、再生デバイスは、オーディオデータストリームにおけるホットワード、キーワード、またはキーフレーズのエンコードに基づいて、リスニングデバイスが誤ってトリガする可能性を低減し得る。
【0055】
いくつかの例では、再生デバイスは、多数のソースから、キーフレーズを定義する入力を受信し得る。たとえば、再生デバイスは、第1のユーザから、第1のホットワードを定義するユーザ入力と、たとえば第2のユーザによって操作されるリスニングデバイスから、第2のホットワードまたはキーフレーズを定義する第2の入力とを受信し得る。再生デバイスは、第1のホットワードと第2のホットワードとの両方のデータを使用して、オーディオデータストリームを分析し、オーディオ透かしをオーディオデータストリームに追加するか否かを判定し得る。
【0056】
再生デバイスは、オーディオデータストリームを受信する(204)。たとえば、再生デバイスは、コンテンツプロバイダからオーディオデータストリームを受信する。コンテンツプロバイダは、適切なタイプのコンテンツプロバイダであり得る。コンテンツプロバイダのいくつかの例は、ストリーミングメディアプロバイダ、ケーブルプロバイダ、およびオーディオストリーミングプロバイダを含む。
【0057】
再生デバイスは、出力のためにオーディオデータストリームの一部を提供する前に、オーディオデータストリームを受信し得る。再生デバイスは、マイクロフォン以外のワイヤードまたはワイヤレスの入力接続を介して、オーディオデータストリームを受信し得る。
【0058】
再生デバイスは、オーディオデータストリームの一部が、特定のホットワード、キーワード、またはキーフレーズをエンコードしているか否かを判定する(206)。再生デバイスは、任意の適切な方法、システム、またはその両方を使用して、オーディオデータストリームの一部が、特定のホットワード、キーワード、またはキーフレーズをエンコードしているか否かを判定し得る。たとえば、再生デバイスは、自動音声認識器を使用して、オーディオデータストリームの一部を分析し、その部分がホットワード、キーワード、またはキーフレーズをエンコードしているか否かを判定し得る。
【0059】
いくつかの例では、再生デバイスは、多数のホットワード、キーワード、キーフレーズ、またはこれらの複数の組合せのうちのいずれかが、オーディオデータストリームにおいてエンコードされているか否かを判定し得る。たとえば、再生デバイスは、オーディオデータストリームの一部が、特定のキーワードまたは特定のキーフレーズのいずれかをエンコードしているか否かを判定し得る。
【0060】
再生デバイスは、オーディオデータストリームが再生デバイスによって出力される前に、オーディオデータストリームの一部が、特定のホットワード、キーワード、またはキーフレーズをエンコードしているか否かを、自動音声認識器を使用してその部分を分析することによって判定するのと同時に、オーディオデータストリームの別の部分を受信し得る。たとえば、再生デバイスは、オーディオデータストリームの第1の部分を受信し得る。再生デバイスは、自動音声認識器を使用してオーディオデータストリームの第1の部分を分析する一方、再生デバイスは、オーディオデータストリームの第2の部分を同時に受信し得る。第2の部分は、オーディオデータストリームの中間部分なしで第1の部分に後続し得る。いくつかの例では、第2の部分は、第1の部分に後続し、第1の部分と第2の部分との間に、オーディオデータストリームの中間部分があり得る。
【0061】
オーディオデータストリームの一部が、特定のホットワード、キーワード、またはキーフレーズをエンコードしていると再生デバイスが判定すると、再生デバイスは、オーディオ透かしを含めるようにオーディオデータストリームを修正する(208)。たとえば、再生デバイスは、オーディオ透かしを含むオーディオデータストリームの一部を判定し得る。判定された部分は、ホットワード、キーワード、またはキーフレーズをエンコードする部分であり得る。判定された部分は、ホットワード、キーワード、またはキーフレーズをエンコードする部分とは異なるオーディオデータストリームの別の部分であり得る。
【0062】
再生デバイスは、オーディオ透かしを判定して、オーディオデータストリームに含め得る。いくつかの例では、再生デバイスは、たとえばオーディオデータストリームのデータを使用して、オーディオ透かしを動的に生成し得る。たとえば、再生デバイスは、オーディオデータストリームのソースのデータ、エンコードされているホットワード、キーワード、もしくはキーフレーズのデータ、またはその両方を判定し、判定したデータをオーディオ透かしに含めることができる。いくつかの実施では、再生デバイスは、オーディオ透かしのデータベースから、オーディオ透かしを選択し得る。たとえば、再生デバイスは、オーディオデータストリームのソース、エンコードされているホットワード、キーワード、もしくはキーフレーズ、またはその両方を使用して、データベースからオーディオ透かしを選択し得る。再生デバイスは、選択されたオーディオ透かしを、オーディオデータストリームに含め得る。
【0063】
再生デバイスは、出力のために、修正されたオーディオデータストリームを提供する(210)。たとえば、オーディオ透かしを含めるようにオーディオデータストリームの修正に応じて、再生デバイスは、出力のために、修正されたオーディオデータストリームを提供し得る。出力のために、修正されたオーディオデータストリームを提供することは、再生デバイスに含まれるスピーカに、修正されたオーディオデータストリームを、たとえば可聴的に提示させ得る。
【0064】
オーディオデータストリームの一部は、特定のホットワード、キーワード、またはキーフレーズをエンコードしていないと再生デバイスが判定した場合、再生デバイスは、オーディオ透かしを含めるようにオーディオデータストリームを修正することをスキップすると判定する(212)。たとえば、再生デバイスは、特定のホットワード、キーワード、またはキーフレーズをエンコードしていないオーディオデータストリームの部分に基づいて、オーディオデータストリームを修正しないと判定する。再生デバイスは、特定のホットワード、キーワード、またはキーフレーズをエンコードしていないオーディオデータストリームの部分の前にあるオーディオデータストリームの進行部分の修正をスキップするように判定し得る。
【0065】
いくつかの実施では、再生デバイスがオーディオデータストリームを修正すると判定すると、再生デバイスは、オーディオデータストリームの一部を修正すると判定し得、そのために、再生デバイスは、オーディオデータストリームの修正をスキップすると以前に判定している。たとえば、再生デバイスは、オーディオデータストリームの2つの異なる部分である、第1の部分と第2の部分を分析し得る。再生デバイスは、第1の部分がホットワード、キーワード、またはキーフレーズをエンコードしないと判定し、それに応じて、第1の部分に基づいて、オーディオデータストリームの修正をスキップし得る。その後、再生デバイスは、オーディオデータストリームの第1の部分に後続および隣接するオーディオデータストリームの部分として、第2の部分を分析し得る。再生デバイスは、オーディオデータストリームの第2の部分が、特定のホットワード、キーワード、またはキーフレーズをエンコードし、それに応じて、オーディオデータストリームを修正すると判定し得る。この修正判定に応じて、再生デバイスは、オーディオデータストリームの第1の部分にオーディオ透かしを含めると判定し得る。
【0066】
再生デバイスは、出力のために、オーディオデータストリームを提供する(214)。たとえば、オーディオデータストリームの修正をスキップするとの判定に応じて、再生デバイスは、出力のために、オーディオデータストリームまたはオーディオデータストリームの一部を提供し得る。再生デバイスは、オーディオデータストリームをスピーカに提供し、スピーカに、オーディオデータストリームまたはオーディオデータストリームの一部を提示させ得る。
【0067】
上記で説明したプロセス200におけるステップの順序は例示にすぎず、ホットワード検出に基づいてオーディオデータストリームを修正することは、異なる順序で実行され得る。たとえば、再生デバイスは、オーディオデータストリームの一部を受信し、特定のホットワードを定義する入力を受信し、その後、オーディオデータストリームの一部が特定のホットワードをエンコードしているか否かを判定し得る。
【0068】
いくつかの実施では、プロセス200は、追加のステップや、より少ないステップを含むことができるか、または、ステップのいくつかは、多数のステップに分割され得る。たとえば、再生デバイスは、オーディオデータストリームを受信し、オーディオデータストリームの一部が特定のホットワードをエンコードしているか否かを判定し、エンコードしていると判定すると、たとえば、ステップ204から208を実行し、オーディオ透かしを含めるようにオーディオデータストリームを修正し得る。これらのステップを実行した後、再生デバイスは、出力のために、修正されたオーディオデータストリームを提供し得る。
【0069】
いくつかの実施では、再生デバイスは、プロセス200の1つまたは複数のステップを複数回実行し得る。たとえば、再生デバイスは、オーディオデータストリームを受信し、オーディオデータストリームの第1の部分が特定のホットワードをエンコードすると判定し、オーディオデータストリーム、たとえば、第1の部分の少なくともいくつかを潜在的に含む第1の部分の近くの第2の部分を修正し得る。再生デバイスは、その後、オーディオデータストリームの第3の部分を受信し、第2の部分が特定のホットワードをエンコードしていないと判定し、オーディオデータストリームの第4の部分の修正をスキップすると判定し得る。修正されたオーディオデータストリームを受信するリスニングデバイスが、オーディオ透かしを使用して、特定のホットワードを識別し、したがって、オーディオ透かしと特定のホットワードとの組合せに基づいてアクションできるように、第2の部分が選択され得る。たとえば、リスニングデバイスが、オーディオ透かしと特定のホットワードとの両方を検出することを可能にし、したがって応答する、たとえば、オーディオ透かしと特定のホットワードとの両方の受信に基づいて、どのアクションも実行しないように、再生デバイスは、第2の部分の位置を選択し得る。リスニングデバイスは、オーディオデータストリームの第2の部分においてオーディオ透かしを受信したため、特定のホットワードに基づいてアクションを実行しないと判定し得る。いくつかの例では、第2の部分は、オーディオデータストリームの第1の部分と同じ部分であり得る。いくつかの例では、第2の部分は、第1の部分の前のオーディオデータストリームの部分を含み得、第1の部分のいくつかを含み得る。オーディオデータストリームの第4の部分は、オーディオデータストリームにおける第3の部分の位置に基づいて選択され得る。たとえば、第4の部分は、オーディオデータストリームの第3の部分と同じ部分であり得る。
【0070】
いくつかの実施では、オーディオデータストリームの一部が、特定のホットワード、キーワード、またはキーフレーズをエンコードしていると再生デバイスが判定するまで、再生デバイスは、オーディオデータストリームにおいて、オーディオ透かしまたは多数の異なるオーディオ透かしをエンコードし得る。たとえば、再生デバイスは、ホットワード、キーワード、またはキーフレーズを含まないオーディオデータストリームの各部分にオーディオ透かしをエンコードし得る。これにより、リスニングデバイスは、再生デバイスによるオーディオデータストリームの提示をキャプチャし、キャプチャされたオーディオデータストリームのどの部分が、オーディオ透かしを含んでいるのかを判定することが可能となり得る。その後、リスニングデバイスは、キーフレーズ検出モジュールを使用して、オーディオ透かしを含むキャプチャされたオーディオデータストリームのこれらの部分のみを分析し、それに応じて、検出されたキーフレーズに対応するアクションを実行できる。リスニングデバイスが、キャプチャされたオーディオデータストリームの部分が、オーディオ透かしを含んでいないと判定すると、リスニングデバイスは、オーディオ透かしを含んでいない部分の、キーフレーズ検出モジュールによる分析をスキップすると判定し得る。
【0071】
本明細書で説明される主題および機能的動作の実施形態は、本明細書に開示される構造およびそれらの構造的同等物を含むデジタル電子回路において、有形的に具現化されたコンピュータソフトウェアもしくはファームウェアにおいて、コンピュータハードウェアにおいて、またはそれらの1つもしくは複数の組合せにおいて実施され得る。本明細書で説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のための、またはデータ処理装置の動作を制御するための、有形の非一時的プログラムキャリアにエンコードされているコンピュータプログラム命令の1つまたは複数のモジュールとして実施され得る。代替的または追加的に、プログラム命令は、データ処理装置による実行のために適切な受信装置に送信するための情報をエンコードするために生成された、たとえば、機械生成電気信号、光学信号、または電磁信号などの人工的に生成された伝播信号でエンコードされ得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せであり得る。
【0072】
「データ処理装置」という用語は、データ処理ハードウェアを称し、例として、プログラマブルプロセッサ、コンピュータ、または多数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置はまた、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用ロジック回路であり得るか、またはこれらをさらに含み得る。装置は、ハードウェアに加えて、コンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの1つもしくは複数の組合せを構築するコードをオプションで含むことができる。
【0073】
プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも称され得る、または説明され得るコンピュータプログラムは、コンパイル型もしくはインタプリタ型言語、または宣言型もしくは手続型の言語を含む任意の形式のプログラミング言語で記述され得、スタンドアロンプログラムとして、またはコンピューティング環境での使用に適したモジュール、コンポーネント、サブルーチン、もしくはその他のユニットを含む任意の形式で展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、必ずしもそうである必要はない。プログラムは、他のプログラムもしくはデータを保持するファイルの一部、たとえば、マークアップ言語ドキュメントに記憶されている1つもしくは複数のスクリプトに、問題となっているプログラムに専用の単一ファイルに、または多数の連係されたファイルに、たとえば、1つもしくは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルに記憶され得る。コンピュータプログラムは展開されて、1つのコンピュータにおいて、または、1つのサイトにあるか、多数のサイトに分散され、通信ネットワークで相互接続されている多数のコンピュータにおいて実行されるように実行され得る。
【0074】
本明細書で説明されるプロセスおよび論理フローは、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能なコンピュータにより実行され、入力データに対して演算し、出力を生成することにより機能を実行する。プロセスおよび論理フローはまた、特殊用途論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行され得、また装置がこれらとしても実装され得る。
【0075】
コンピュータプログラムの実行に適したコンピュータは、例として、汎用もしくは専用のマイクロプロセッサ、もしくはその両方、または他の任意の種類の中央処理装置を含む。一般に、中央処理装置は、読取専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令およびデータを受信する。コンピュータの重要な要素は、命令を実行または達成するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つもしくは複数の大容量記憶デバイス、たとえば磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはデータを、これらから受信したり、もしくはこれらへ転送したり、もしくは両方を行ったりするように動作可能に結合される。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、ほんの数例を挙げると、たとえば、モバイル電話、スマートフォン、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、または、たとえばユニバーサルシリアルバス(USB)フラッシュドライブのようなポータブル記憶デバイスのような別のデバイスに組み込まれ得る。
【0076】
コンピュータプログラム命令およびデータを記憶するために適切なコンピュータ可読媒体は、例として、たとえばEPROM、EEPROM、およびフラッシュメモリデバイスのような半導体メモリデバイス、たとえば内部ハードディスクまたはリムーバブルディスクのような磁気ディスク、光磁気ディスク、ならびにCDROMおよびDVD-ROMディスクを含む、すべての形式の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用のロジック回路で補完され得るか、その中に組み込まれ得る。
【0077】
ユーザとのインタラクションを提供するために、本明細書で説明される主題の実施形態は、たとえば、LCD(液晶ディスプレイ)、OLED(有機発光ダイオード)、または他のモニタなど、ユーザに情報を表示するためのディスプレイデバイスと、たとえば、ユーザがコンピュータに入力を提供できる、たとえばマウスまたはトラックボールのようなキーボードおよびポインティングデバイスとを有するコンピュータ上で実施され得る。ユーザとのインタラクションを提供するために、他の種類のデバイスも同様に使用され得、たとえば、ユーザに提供されるフィードバックは、たとえば、視覚的なフィードバック、聴覚的なフィードバック、または触覚的なフィードバックなど、あらゆる形式の感覚的なフィードバックであり得、ユーザからの入力は、音響、音声、または触覚の入力を含む任意の形式で受信され得る。さらに、コンピュータは、たとえば、Webブラウザから受信した要求に応じてユーザのデバイス上のWebブラウザにWebページを送信することによって、ユーザによって使用されるデバイスとの間で文書を送受信することにより、ユーザとインタラクションできる。
【0078】
本明細書で説明される主題の実施形態は、たとえばデータサーバとしてのバックエンドコンポーネントを含むか、または、たとえばアプリケーションサーバなどのミドルウェアコンポーネントを含むか、またはフロントエンドコンポーネント、たとえば、グラフィックユーザインターフェースを有するクライアントコンピュータ、またはユーザが本明細書で説明された主題の実施とインタラクトできるWebブラウザ、または1つもしくは複数のそのようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントのようなフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムにおいて実施され得る。システムのコンポーネントは、任意の形式または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続され得る。通信ネットワークの例には、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえばインターネットを含む。
【0079】
図3は、本書で説明されるシステムおよび方法を、クライアントとして、または1つのサーバもしくは複数のサーバとして実施するために使用され得るコンピューティングデバイス300、350のブロック図である。コンピューティングデバイス300は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、スマートフォン、スマートテレビ、卓上アシスタント、スマートスピーカ、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなど、様々な形式のデジタルコンピュータを表すことが意図されている。コンピューティングデバイス350は、携帯情報端末、セルラ電話、スマートフォン、スマートウォッチ、スマートテレビ、スマートスピーカ、卓上アシスタント、頭部装着型デバイス、および他の同様のコンピューティングデバイスなど、様々な形式のモバイルデバイスを表すことが意図されている。本明細書に示されているコンポーネント、それらの接続と関係、およびそれらの機能は、例示のみであることが意図されており、本書で説明および/または特許請求された実施を限定することは意図されていない。
【0080】
コンピューティングデバイス300は、プロセッサ302、メモリ304、記憶デバイス306、メモリ304と高速拡張ポート310とに接続する高速インターフェース308、および低速バス314と記憶デバイス306とに接続する低速インターフェース312を含む。コンポーネント302、304、306、308、310、および312のおのおのは、様々なバスを使用して相互接続され、共通のマザーボード上にまたは必要に応じて他の方式で取り付けられ得る。プロセッサ302は、メモリ304または記憶デバイス306に記憶された命令を含む、コンピューティングデバイス300内での実行のための命令を処理して、高速インターフェース308に結合されたディスプレイ316などの外部入力/出力デバイス上にGUIのためのグラフィック情報を表示することができる。他の実施では、多数のプロセッサおよび/または多数のバスが、必要に応じて、多数のメモリおよび多数のタイプのメモリとともに使用され得る。また、おのおののデバイスが(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)、必要な動作の一部を提供しながら、多数のコンピューティングデバイス300が接続され得る。
【0081】
メモリ304は、コンピューティングデバイス300内の情報を記憶する。1つの実施では、メモリ304はコンピュータ可読媒体である。1つの実施では、メモリ304は、1つまたは複数の揮発性メモリユニットである。別の実施では、メモリ304は、1つまたは複数の不揮発性メモリユニットである。
【0082】
記憶デバイス306は、コンピューティングデバイス300のための大容量記憶を提供することができる。1つの実施では、記憶デバイス306は、コンピュータ可読媒体である。様々な異なる実施において、記憶デバイス306は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様の固体メモリデバイス、または記憶エリアネットワークもしくはその他の構成におけるデバイスを含むデバイスのアレイであり得る。1つの実施では、コンピュータプログラム製品は、情報キャリアにおいて有形的に具現化される。コンピュータプログラム製品は、実行されると、上記のような1つまたは複数の方法を実行する命令を含む。情報キャリアは、メモリ304、記憶デバイス306、またはプロセッサ302上のメモリなどのコンピュータまたは機械可読媒体である。
【0083】
高速コントローラ308は、コンピューティングデバイス300の帯域幅集約型動作を管理する一方、低速コントローラ312は、低帯域幅集約型動作を管理する。このような役割の割当は、例示にすぎない。1つの実施では、高速コントローラ308は、メモリ304、ディスプレイ316(たとえば、グラフィックプロセッサまたはアクセラレータを介して)、および様々な拡張カード(図示せず)を受け入れ得る高速拡張ポート310に結合される。実施において、低速コントローラ312は、記憶デバイス306および低速拡張ポート314に結合される。様々な通信ポート(たとえば、USB、Bluetooth(登録商標)、イーサネット(登録商標)、ワイヤレスイーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スピーカ、マイクロフォン、スキャナ、またはスイッチやルータなどの、たとえばネットワークアダプタを経由したネットワークデバイスのような1つまたは複数の入力/出力デバイスに結合され得る。
【0084】
コンピューティングデバイス300は、図に示されるように、いくつかの異なる形式で実施され得る。たとえばデバイス300は、標準的なサーバ320として、またはそのようなサーバのグループで複数回実施され得る。またデバイス300は、ラックサーバシステム324の一部として実施され得る。さらに、デバイス300はラップトップコンピュータ322などのパーソナルコンピュータにおいて実施され得る。あるいは、コンピューティングデバイス300からのコンポーネントは、デバイス350などのモバイルデバイス(図示せず)における他のコンポーネントと組み合わされ得る。そのようなデバイスのおのおのは、コンピューティングデバイス300、350のうちの1つまたは複数を含み得、システム全体は、互いに通信する多数のコンピューティングデバイス300、350から構成され得る。
【0085】
コンピューティングデバイス350は、他のコンポーネントの中でも、プロセッサ352と、メモリ364と、ディスプレイ354などの入力/出力デバイスと、通信インターフェース366と、トランシーバ368とを含む。デバイス350はまた、追加のストレージを提供するために、マイクロドライブまたは他のデバイスなどの記憶デバイスを提供され得る。コンポーネント350、352、364、354、366、および368のおのおのは、様々なバスを使用して相互接続され、コンポーネントのいくつかは、共通のマザーボード上に、または必要に応じて他の方式で取り付けられ得る。
【0086】
プロセッサ352は、メモリ364に記憶された命令を含む、コンピューティングデバイス350内で実行するための命令を処理することができる。プロセッサには、個別のアナログプロセッサおよびデジタルプロセッサも含み得る。プロセッサは、たとえば、ユーザインターフェースの制御、デバイス350によって実行されるアプリケーション、およびデバイス350によるワイヤレス通信など、デバイス350の他のコンポーネントの調整を提供し得る。
【0087】
プロセッサ352は、ディスプレイ354に結合された制御インターフェース358およびディスプレイインターフェース356を介してユーザと通信し得る。ディスプレイ354は、たとえば、TFT LCDディスプレイまたはOLEDディスプレイ、または他の適切なディスプレイ技術であり得る。ディスプレイインターフェース356は、グラフィックおよび他の情報をユーザに提示するためにディスプレイ354を駆動するための適切な回路を備え得る。制御インターフェース358は、ユーザからコマンドを受け取り、プロセッサ352へ発行するためにそれらを変換し得る。さらに、デバイス350と他のデバイスとの近距離通信を可能にするために、プロセッサ352と通信する外部インターフェース362が提供され得る。外部インターフェース362は、たとえば、(たとえば、ドッキング手順を介した)ワイヤード通信、または(たとえば、Bluetooth(登録商標)もしくは他のそのような技術を介した)ワイヤレス通信を提供し得る。
【0088】
メモリ364は、コンピューティングデバイス350内の情報を記憶する。1つの実施では、メモリ364は、コンピュータ可読媒体である。1つの実施では、メモリ364は、1つまたは複数の揮発性メモリユニットである。別の実施では、メモリ364は、1つまたは複数の不揮発性メモリユニットである。拡張メモリ374も提供され、たとえば、SIMMカードインターフェースを含み得る拡張インターフェース372を介して、デバイス350に接続され得る。そのような拡張メモリ374は、デバイス350のための追加の記憶スペースを提供し得るか、または、デバイス350のためのアプリケーションもしくは他の情報も記憶し得る。具体的には、拡張メモリ374は、上記で説明したプロセスを実行または補完するための命令を含み得、セキュアな情報をも含み得る。したがって、たとえば、拡張メモリ374は、デバイス350のためのセキュリティモジュールとして提供され得、デバイス350のセキュアな使用を可能にする命令を用いてプログラムされ得る。さらに、ハッキング不可能な方式でSIMMカードに識別情報を配置するなど、追加情報とともに、SIMMカードを介して、セキュアなアプリケーションが提供され得る。
【0089】
メモリは、以下で説明するように、たとえばフラッシュメモリおよび/またはMRAMメモリを含み得る。1つの実施では、コンピュータプログラム製品は、情報キャリアに有形的に具現化される。コンピュータプログラム製品は、実行されると、上記で説明したような1つまたは複数の方法を実行する命令を含む。情報キャリアは、メモリ364、拡張メモリ374、またはプロセッサ352上のメモリなどのコンピュータまたは機械可読媒体である。
【0090】
デバイス350は、必要に応じてデジタル信号処理回路を含み得る通信インターフェース366を介してワイヤレスに通信し得る。通信インターフェース366は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、もしくはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSなどの様々なモードまたはプロトコルの下で通信を提供し得る。そのような通信は、たとえば、無線周波数トランシーバ368を介して生じ得る。さらに、Bluetooth(登録商標)、WiFi、または他のそのようなトランシーバ(図示せず)を使用するような短距離通信が発生し得る。さらに、GPS受信機モジュール370は、デバイス350上で実行されるアプリケーションによって適切に使用され得る追加のワイヤレスデータをデバイス350に提供し得る。
【0091】
また、デバイス350は、オーディオコーデック360を使用して可聴的に通信し得、オーディオコーデック360は、ユーザから話された情報を受信し、それを使用可能なデジタル情報に変換し得る。同様に、オーディオコーデック360は、たとえばデバイス350のハンドセット内のスピーカを介するなどして、ユーザのために可聴音を生成し得る。そのような音は、音声通話からの音を含み得、録音された音(たとえば、音声メッセージ、音楽ファイルなど)を含み得、デバイス350上で動作するアプリケーションによって生成される音も含み得る。
【0092】
コンピューティングデバイス350は、図に示されるように、いくつかの異なる形式で実施され得る。たとえば、デバイス350はセルラ電話380として実施され得る。またデバイス350は、スマートフォン382、携帯情報端末、または他の同様のモバイルデバイスの一部として実施され得る。
【0093】
本明細書で説明されるシステムおよび技術の様々な実施は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現できる。これらの様々な実施は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、それらにデータおよび命令を送信するように結合された、専用または汎用目的であり得る、少なくとも1つのプログラマブルプロセッサを含む、プログラム可能なシステム上で実行可能および/または解釈可能な、1つまたは複数のコンピュータプログラムにおける実施を含むことができる。
【0094】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られる)は、プログラマブルプロセッサ用の機械命令を含み、高レベルの手続型および/またはオブジェクト指向プログラミング言語、および/またはアセンブリ/機械語において実施され得る。本明細書で使用される「機械可読媒体」「コンピュータ可読媒体」という用語は、機械命令および/またはデータを、機械命令を機械可読信号として受信する機械可読媒体を含むプログラマブルプロセッサに提供するために使用される、任意のコンピュータプログラム製品、装置および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を称する。「機械可読信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を称する。
【0095】
本明細書は、多くの特定の実施の詳細を含むが、これらは、特許請求され得る範囲における限定としてではなく、特定の実施形態に固有であり得る特徴の説明として解釈されるべきである。別個の実施形態の文脈で本明細書で説明される特定の特徴はまた、単一の実施形態において組み合わせて実施され得る。逆に、単一の実施形態の文脈で説明される様々な特徴は、多数の実施形態において別々に、または任意の適切な部分的な組合せでも実施され得る。さらに、特徴は特定の組合せで機能するものとして上記で説明され、最初にそのように特許請求されていることがあるが、特許請求された組合せからの1つまたは複数の特徴は、場合によっては組合せから除外され、特許請求された組合せは、部分的な組合せ、または、部分的な組合せの変形に関連付けられ得る。
【0096】
同様に、動作は特定の順序で図面に描かれているが、これは、望ましい結果を達成するために、そのような動作が、示された特定の順序もしくは連続した順序で実行されること、または例示されたすべての動作が実行されることを要求するものとして理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利であり得る。さらに、上記の実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは一般に、単一のソフトウェア製品にともに統合され得るか、または、多数のソフトウェア製品にパッケージ化され得ると理解されるべきである。
【0097】
主題の特定の実施形態が説明された。他の実施形態は、添付の特許請求の範囲内にある。たとえば、特許請求の範囲に記載されているアクションは、異なる順序で実行され得、それでも望ましい結果を達成できる。一例として、添付の図に描かれたプロセスは、望ましい結果を達成するために、示された特定の順序または連続的な順序を必ずしも必要としない。場合によっては、マルチタスクおよび並列処理が有利であり得る。