(58)【調査した分野】(Int.Cl.,DB名)
前記サーバ応答を受信するステップが、前記所与の応答の少なくとも一部が前記1つまたは複数のユーザインターフェース出力デバイスを介してレンダリングされた後に行われる、請求項1に記載の方法。
前記テキスト応答マップを更新するステップが、前記所与のテキストとの前記直接的関係を有するように前記所与の応答を規定する前記マッピングに関連する信頼性スコアを調整するステップを含む、請求項1または2に記載の方法。
1つまたは複数のプロセッサとコンピュータ実行可能命令を記憶する少なくとも1つのメモリとを備えるコンピューティング装置であって、前記コンピュータ実行可能命令が、前記1つまたは複数のプロセッサによって実行されたとき、請求項1から12のいずれか一項に記載の方法を前記1つまたは複数のプロセッサに実行させる、コンピューティング装置。
【発明の概要】
【課題を解決するための手段】
【0007】
本明細書で開示する実装形態は、クライアントデバイス上に局所的に記憶されるテキスト応答マップをクライアントデバイスによって生成および/または利用することに関する。テキスト応答マップは複数のマッピングを含むことができ、ここで、マッピングの各々は、対応するテキストと対応する応答との間の対応する直接的関係を規定する。マッピングの各々は、対応するテキストが、クライアントデバイスによってキャプチャされた以前のオーディオデータから以前に生成されたことに基づいて、ならびに対応する応答が、以前のオーディオデータおよび対応するテキストのうちの少なくとも1つの、リモートシステムへの送信に応答して、リモートシステムから以前に受信されたことに基づいて、テキスト応答マップの中で規定される。
【0008】
クライアントデバイスによって口頭発話が検出されると、クライアントデバイスは、局所的な音声テキスト/スピーチテキスト(STT)モデルを利用して、口頭発話に対応するテキストを生成することができる。クライアントデバイスは、次いで、生成されたテキストがテキスト応答マップの対応するテキストのうちのいずれかに整合するかどうかを決定することができる。そうである場合、また随意に、1つまたは複数の他の条件(たとえば、本明細書で説明する信頼性スコアに基づく条件)が満たされる場合、クライアントデバイスは、テキスト応答マップの対応するマッピングを利用して、対応するマッピングによって規定されるような対応するテキストへの直接的関係を有する応答を選択することができる。クライアントデバイスは、次いで、クライアントデバイスの1つまたは複数の出力デバイス(たとえば、スピーカーおよび/またはディスプレイ)を介して、そのローカルメモリからの応答を直ちにレンダリングすることができる。応答は口頭発話に応答してレンダリングされ、応答をレンダリングすることは、応答のテキスト、応答のグラフィックス、応答のオーディオデータ(または、局所的に記憶されたテキストスピーチ(TTS:text-to-speech)プロセッサを使用して応答から変換されたオーディオデータ)、および/または他のコンテンツをレンダリングすることを含むことができる。応答は、追加または代替として、周辺デバイスを制御するために(たとえば、WiFiおよび/またはBluetooth(登録商標)を介して)1つまたは複数の周辺デバイスへ送信されるコマンドなどの、クライアントデバイスによって送信されるべきコマンドを含むことができる。以下で説明するように、局所的な音声テキスト/スピーチテキスト(STT)によって生成されたテキストが、テキスト応答マップの対応するテキストのうちのいずれかに整合することを決定していると、クライアントデバイスが、検出された口頭発話を示すデータをリモートシステムへ送信する必要なく、応答はクライアントデバイスによって提供され得る。
【0009】
これらおよび他の方式では、クライアントデバイスは、局所的かつ/または遠隔のリソースに集約的でありレイテンシを誘発する、テキストの意味または意図を決定するためのテキストのセマンティック処理、および決定された意味または意図に基づく応答の生成の実行を必要とすることなく、かつ/またはそれらの実行を待つことなく、応答をレンダリングすることができる。したがって、生成されたテキストがテキスト応答マップの対応するテキストのうちの1つに整合するとき、(テキスト応答マップの対応するマッピングによって規定されるような)テキストへの直接的関係を有する応答が、レイテンシが低減されて、かつ/またはリソース消費が低減されて、レンダリングされ得る。その上、様々な状況では、(口頭発話をキャプチャする)オーディオデータまたはオーディオデータに基づいて生成されたテキストの、リモートシステムへの、帯域幅を消費する送信を伴わずに、応答がレンダリングされ得る。リモートシステムへの/からのメッセージの電力集約的な送信および受信が低減されるので、このことは、クライアントデバイスのバッテリー寿命をさらに改善し得、またはさもなければ、クライアントデバイスにおける他のタスクのために電力リソースを解放し得る。
【0010】
いくつかの実装形態では、クライアントデバイスが、ユーザの口頭発話のオーディオデータをキャプチャし、かつテキストを生成するためにオーディオデータを処理するステップを含む方法が提供される。そのような実装形態では、STT処理は、クライアントデバイス上で局所的に実行され、オーディオデータがクラウドへサブミットされることを必要としない。次に、応答にマッピングされたテキストを含むテキスト応答マッピングがアクセスされる。マッピングは、オーディオデータが以前にサブミットされたときにリモートシステムから受信された応答にマッピングされた、ユーザの事前の口頭発話のオーディオデータから生成された事前のテキストに基づいて構築される。クライアントデバイスは、次いで、テキスト応答マッピングが、生成されたテキストに対するテキストマッピングを含むかどうかを決定する。テキストに整合するテキストマッピングをテキスト応答マッピングが含むという決定に応答して、そのテキストマッピングに対するマッピング済みの応答が、クライアントデバイスによって選択およびレンダリングされる。
【0011】
マッピングの中にテキストが含まれない場合、オーディオデータ(および/または、オーディオデータに対応する、クライアントデバイスが生成したテキスト)が、さらなる処理のためにリモートシステムにサブミットされる。口頭発話に対応するアクションを決定するためにSTTおよび/またはNLPがリモートシステムによって実行され、生成されたアクションが、応答を生成するために利用され、応答がクライアントデバイスに提供される。クライアントデバイスは、次いで、応答をレンダリングすることができ、かつ生成されたテキストを応答とともに記憶することができる。ユーザが後で同じ口頭発話をサブミットするとき、クライアントデバイスは、対応するテキストを生成するためにオーディオデータを局所的に処理することができ、マッピングの中にテキストが含まれることをチェックすることができ、NLP処理およびサーバへのサブミッションを必要とすることなく、マッピング済みの応答をレンダリングすることができる。したがって、クライアントデバイス上の局所的なマッピングが計算時間を節約するだけでなく、マッピングがすでにテキストを含む場合、方法はオフラインで実行され得る。
【0012】
いくつかの事例では、応答は動的であり、同じ口頭発話に対して異なる応答をもたらすことがある。たとえば、「What time is it right now」という口頭発話は、それがサブミットされるたびに変化する動的クエリである。動的クエリの他の例は、ユーザのロケーションに関係する天候クエリ、および時間に敏感な他のクエリを含む。一方、いくつかのクエリは静的であり得、あるにしても、所与の発話に対してまれにしか異なる応答をもたらさない。たとえば、「What is the capital of the United States」は、発話がいつサブミットされるのかにかかわらず、常に同じ応答をもたらす。いくつかの事例では、応答は、所与の時間期間にわたって静的であってよく、次いで、満了してよい。たとえば、「What is the weather today」は、おそらく、日中の持続時間の間、静的なままであり、その後、真夜中などの所与の時間において満了する。
【0013】
いくつかの実装形態では、クライアントデバイス上に局所的に記憶されたテキストに対するマッピング済みの応答を最新に保つことを支援するために、クライアントデバイスは、マッピングの中でテキストが特定されるときでも、オーディオデータに対応する、クライアントデバイスが生成したテキストなどの、口頭発話を示すオーディオデータまたは他のデータをリモートシステムにサブミットしてよい。クライアントデバイスは、マッピング済みの応答を提供することができ、リモートシステムから応答が受信されると、受信された応答はマッピング済みの応答を用いてチェックされ得る。マッピング済みの応答が受信された応答に整合する場合、クライアントデバイスは、応答が静的であることを反映するようにマッピングを更新することができる。たとえば、マッピングの中に記憶されるのと同じ応答が受信されたことを反映するように、各テキストマッピングに関連付けられている信頼性スコアが更新されてよい。異なる応答が受信された場合、信頼性スコアは、記憶された応答および受信された応答が整合しないことを反映するように更新されてよい。たとえば、いくつかの事例では、応答が整合しない場合、以後、失効した応答がユーザに提供されないことを確実にするために、テキストマッピングが除去されてよい。いくつかの事例では、マッピングは、テキストマッピングを除去することなく、失効しているものとしてフラグが付けられてよい。いくつかの事例では、マッピングに関連する信頼性スコアがしきい値を満たす場合のみ、マッピング済みの応答が提供されてよい。たとえば、オーディオデータまたは口頭発話を示す他のデータをリモートシステムに提供する代わりに、マッピング済みの応答に対する信頼性スコアが、マッピング済みの応答が提供されるレベルに到達するよりも前の、(各サーバ応答が同じである)必要な回数がサーバ応答に与えられてよい。随意に、信頼性スコアがしきい値を満たすとき、クライアントデバイスは、オーディオデータまたは口頭発話を示す他のデータをリモートシステムへ自動的に送信しなくてよい。代替として、クライアントデバイスがオーディオデータまたは口頭発話を示す他のデータをリモートシステムへ送信する実装形態では、クライアントデバイスは、リモートシステムからの返答を受信する前に、そのローカルメモリからのマッピング済みの応答を提供してよい。
【0014】
いくつかの実装形態では、クライアントデバイスの1つまたは複数のプロセッサによって実施される方法が提供され、ユーザの口頭発話をキャプチャするオーディオデータをクライアントデバイスの少なくとも1つのマイクロフォンを介してキャプチャすることを含む。方法は、口頭発話に対応する現在のテキストを生成するためにオーディオデータを処理することをさらに含む。現在のテキストを生成するためにオーディオデータを処理することは、クライアントデバイス上に局所的に記憶された音声テキストモデルを利用する。方法は、クライアントデバイス上に局所的に記憶されたテキスト応答マップにアクセスすることをさらに含む。テキスト応答マップは複数のマッピングを含み、ここで、マッピングの各々は、対応するテキストが、クライアントデバイスによってキャプチャされた以前のオーディオデータから以前に生成されたことに基づいて、ならびに対応する応答が、以前のオーディオデータおよび対応するテキストのうちの少なくとも1つの、リモートシステムへの送信に応答して、リモートシステムから以前に受信されたことに基づいて、対応するテキストと対応する応答との間の対応する直接的関係を規定する。方法は、テキスト応答マップの対応するテキストのうちのいずれかが現在のテキストに整合するかどうかを決定することをさらに含む。方法は、テキスト応答マップの対応するテキストのうちの所与のテキストが現在のテキストに整合するという決定に応答して、テキスト応答マップの対応する応答のうちの所与の応答を選択することと、クライアントデバイスに関連する1つまたは複数のユーザインターフェース出力デバイスを介して所与の応答をレンダリングさせることとをさらに含む。所与の応答を選択することは、テキスト応答マップが、所与のテキストとの直接的関係を有するように所与の応答を規定する、マッピングのうちの1つのマッピングを含むことに基づく。
【0015】
本技術のこれらおよび他の実装形態は、以下の特徴のうちの1つまたは複数を含むことができる。
【0016】
いくつかの実装形態では、方法は、オーディオデータまたは現在のテキストをリモートシステムへ送信することと、オーディオデータまたは現在のテキストの送信に応答して、口頭発話に応答するサーバ応答をリモートシステムから受信することと、サーバ応答を所与の応答と比較することと、比較に基づいてテキスト応答マップを更新することとをさらに含む。それらの実装形態のいくつかのバージョンでは、サーバ応答を受信することは、所与の応答の少なくとも一部が1つまたは複数のユーザインターフェース出力デバイスを介してレンダリングされた後に行われる。それらの実装形態のいくつかの追加または代替のバージョンでは、サーバ応答を所与の応答と比較することは、サーバ応答が所与の応答とは異なることを示す。それらの追加または代替のバージョンのうちのいくつかでは、テキスト応答マップを更新することは、サーバ応答が所与の応答とは異なることを比較が示すことに基づいて、所与のテキストとの直接的関係を有するようにサーバ応答を規定するために、所与のテキストとの直接的関係を有するように所与の応答を規定するマッピングを更新することを含む。それらの追加または代替のバージョンのうちのいくつかでは、テキスト応答マップを更新することは、サーバ応答が所与の応答とは異なることを比較が示すことに基づいて、所与のテキストとの直接的関係を有するように所与の応答を規定するマッピングを、テキスト応答マップから除去することを含む。それらの追加または代替のバージョンのうちのいくつかでは、テキスト応答マップを更新することは、サーバ応答が所与の応答とは異なることを比較が示すことに基づいて、所与のテキストがいかなる応答にマッピングされることも防止するデータをテキスト応答マップの中に記憶することを含む。
【0017】
テキスト応答マップを更新することを含むいくつかの実装形態では、テキスト応答マップを更新することは、所与のテキストとの直接的関係を有するように所与の応答を規定するマッピングに関連する信頼性スコアを調整することを含む。それらの実装形態のいくつかのバージョンでは、所与のテキストとの直接的関係を有するように所与の応答を規定するマッピングに関連する信頼性スコアを調整することは、所与の応答がサーバ応答に整合することを比較が示す場合、信頼性をより大きく示すように信頼性スコアを調整することを含む。それらの実装形態のいくつかの追加または代替のバージョンでは、所与の応答を選択することは、マッピングに関連する信頼性スコアがしきい値を満たすことにさらに基づく。
【0018】
いくつかの実装形態では、方法は、追加の口頭発話をキャプチャする追加のオーディオデータをクライアントデバイスの少なくとも1つのマイクロフォンを介してキャプチャすることと、追加の口頭発話に対応する追加のテキストを生成するために、クライアントデバイス上に局所的に記憶された音声テキストモデルを利用して追加のオーディオデータを処理することと、テキスト応答マップの対応するテキストのうちのいずれかが追加のテキストに整合するかどうかを決定することと、テキスト応答マップの対応するテキストのうちのいずれも追加のテキストに整合しないという決定に応答して、追加のテキストおよび追加のオーディオデータのうちの少なくとも1つをサーバシステムへ送信することと、追加のテキストおよび追加のオーディオデータのうちの少なくとも1つの送信に応答して、追加の応答をサーバシステムから受信することと、クライアントデバイスに関連するユーザインターフェース出力デバイスのうちの1つまたは複数を介して追加の応答をレンダリングさせることとをさらに含む。それらの実装形態のうちのいくつかでは、方法は、サーバ応答が追加のテキストに対する静的応答であるという表示を、追加の応答とともにサーバシステムから受信することと、サーバ応答が追加のテキストに対する静的応答であるという表示の受信に応答して、追加のテキストと追加の応答との間の新たな直接的関係を規定する新たなマッピングをテキスト応答マップに追加することとをさらに含む。
【0019】
いくつかの実装形態では、方法が実行されるとき、クライアントデバイスにはインターネットへのいかなる接続もない。
【0020】
いくつかの実装形態では、方法は、所与のテキストとの直接的関係を有するように所与の応答を規定するマッピングに関連する信頼性スコアを決定することをさらに含む。それらの実装形態のうちのいくつかでは、所与の応答をレンダリングさせることは、信頼性スコアがしきい値を満たすことに応答して、オーディオデータまたは現在のテキストをリモートシステムへ送信することなく所与の応答をレンダリングさせることを含む。
【0021】
いくつかの実装形態では、方法は、所与の応答がレンダリングされる前にオーディオデータまたは現在のテキストをリモートシステムへ送信することと、所与のテキストとの直接的関係を有するように所与の応答を規定するマッピングに関連する信頼性スコアを決定することと、オーディオデータまたは現在のテキストの送信に応答して、口頭発話に応答するサーバ応答をリモートシステムから受信するのを待つべきしきい値時間量を、信頼性スコアに基づいて決定することとをさらに含む。それらの実装形態のうちのいくつかでは、所与の応答をレンダリングさせることは、サーバ応答がしきい値時間量の満了の前に受信されないとき、しきい値時間量の満了において所与の応答をレンダリングさせることを含む。
【0022】
いくつかの実装形態では、クライアントデバイスの1つまたは複数のプロセッサによって実施される方法が提供され、ユーザの口頭発話をキャプチャするオーディオデータをクライアントデバイスの少なくとも1つのマイクロフォンを介してキャプチャすることと、口頭発話に対応する現在のテキストを生成するためにオーディオデータを処理することとを含む。現在のテキストを生成するためにオーディオデータを処理することは、クライアントデバイス上に局所的に記憶された音声テキストモデルを利用する。方法は、クライアントデバイス上に局所的に記憶されたテキスト応答マップにアクセスすることをさらに含む。テキスト応答マップは複数のマッピングを含み、マッピングの各々は、対応するテキストが、クライアントデバイスによってキャプチャされた以前のオーディオデータから以前に生成されたことに基づいて、ならびに対応する応答が、以前のオーディオデータおよび対応するテキストのうちの少なくとも1つの、リモートシステムへの送信に応答して、リモートシステムから以前に受信されたことに基づいて、対応するテキストと対応する応答との間の対応する直接的関係を規定する。方法は、テキスト応答マップの対応するテキストが現在のテキストに整合しないことをクライアントデバイスによって決定することと、オーディオデータまたは現在のテキストをリモートシステムへ送信することと、オーディオデータまたは現在のテキストをサブミットすることに応答して、リモートシステムから応答を受信することと、所与のテキストマッピングを追加することによってテキスト応答マップを更新することとをさらに含む。所与のテキストマッピングは、現在のテキストと応答との間の直接的関係を規定する。方法は、テキスト応答マップを更新することに続いて第2のオーディオデータをキャプチャすることと、クライアントデバイス上に局所的に記憶された音声テキストモデルを利用して第2のテキストを生成するために第2のオーディオデータを処理することと、現在のテキストが第2のテキストに整合することをテキスト応答マップに基づいて決定することと、現在のテキストが第2のテキストに整合するという決定に応答して、およびテキスト応答マップが、現在のテキストと応答との間の直接的関係を規定する所与のテキストマッピングを含むことに基づいて、クライアントデバイスに関連する1つまたは複数のユーザ出力デバイスを介して応答をレンダリングさせることとをさらに含む。
【0023】
本技術のこれらおよび他の実装形態は、以下の特徴のうちの1つまたは複数を随意に含むことができる。
【0024】
いくつかの実装形態では、方法は、応答が静的であるかどうかの表示を応答とともに受信することをさらに含む。それらの実装形態のうちのいくつかでは、所与のテキストマッピングをテキスト応答マップに追加することは、応答が静的であることを表示が示すことに応答して行われる。
【0025】
いくつかの実装形態では、テキスト応答マップを更新することは、所与のテキストマッピングに関連する信頼性スコアを記憶することをさらに含み、ここで、信頼性スコアは、応答が静的であることの尤度を示す。それらの実装形態のうちのいくつかでは、方法は、第2のオーディオデータをリモートシステムにサブミットすることと、第2のオーディオデータをサブミットすることに応答して、リモートシステムから第2のサーバ応答を受信することと、第2のサーバ応答に基づいて信頼性スコアをさらに更新することとをさらに含む。
【0026】
いくつかの実装形態では、方法は、満了イベントが発生するまでに限って応答が静的であるという表示を、応答とともに受信することと、所与のテキストマッピングとともに満了イベントの表示を含むようにテキスト応答マップを更新することと、満了イベントが発生するとテキスト応答マップから所与のテキストマッピングを除去することとをさらに含む。
【0027】
いくつかの実装形態では、テキスト応答マップを更新することは、テキスト応答マップから1つまたは複数のマッピングを除去することを含む。
【0028】
いくつかの実装形態は、1つまたは複数のプロセッサとコンピュータ実行可能命令を記憶する少なくとも1つのメモリとを含むコンピューティング装置を含み、コンピュータ実行可能命令は、1つまたは複数のプロセッサによって実行されたとき、上記または本明細書における他の場所で説明する方法などの方法を1つまたは複数のプロセッサに実行させる。コンピューティング装置は、たとえば、クライアントデバイスであり得る。1つまたは複数のプロセッサは、たとえば、中央処理ユニット、グラフィックス処理ユニット、および/またはテンソル処理ユニットを含むことができる。いくつかの実装形態は、少なくとも1つのコンピューティング装置の1つまたは複数のプロセッサによって実行されたとき、上記または本明細書における他の場所で説明する方法などの方法を実行させるコンピュータ実行可能命令を含む非一時的コンピュータ可読媒体を含む。
【0029】
本明細書でより詳細に説明する上記の概念および追加の概念のすべての組合せが、本明細書で開示する主題の一部であるものとして企図されることを諒解されたい。たとえば、本開示の末尾において掲載される、特許請求される主題のすべての組合せは、本明細書で開示する主題の一部であるものとして企図される。
【発明を実施するための形態】
【0031】
以下で説明する実装形態では、音声対応クライアントデバイスのセマンティックプロセッサは、クライアントデバイス上に局所的に記憶されたテキスト応答マップを利用して、デバイスによって受け取られた口頭発話を構文解析する。いくつかの実装形態では、デバイスによって受け取られた、以前の口頭発話、およびクラウド対応デバイスから受信された1つまたは複数の応答に基づいて、テキスト応答マップが生成される。テキスト応答マップが、受け取られた口頭発話に対応するテキストを含まない場合には、デバイスは、口頭発話をキャプチャするオーディオデータ(および/または、クライアントデバイスによって生成された、口頭発話のテキスト表現)を、クラウドベースデバイスに提供することができ、クラウドベースデバイスは、次いで、さらなる分析を実行してよく、応答を決定してよく、デバイスの1つまたは複数のインターフェースによるレンダリングのために応答をクライアントデバイスに提供してよい。応答は、次いで、クライアントデバイス上に局所的に記憶され、かつ同じ口頭発話を受け取る将来の段階において応答を特定するために利用される、テキスト応答マッピングの中にテキストとともに記憶され得る。上記で略述し以下でさらに説明するように、このことは、クライアントデバイスおよび遠隔のクラウド対応デバイスを伴うネットワークの中のハードウェアリソースの、より効率的な使用につながることがある。
【0032】
選択された実装形態に関するさらなる詳細が以下で説明される。しかしながら、他の実装形態が企図され、そのため本明細書で開示する実装形態が排他的でないことが諒解されよう。
【0033】
図1を参照すると、本明細書で説明する技法が実施され得る例示的な環境が図示される。例示的な環境は、クライアントデバイス100およびリモートシステム150を含む。クライアントデバイス100は、たとえば、デスクトップコンピューティングデバイス、ラップトップコンピューティングデバイス、タブレットコンピューティングデバイス、モバイルフォンコンピューティングデバイス、ユーザの車両のコンピューティングデバイス(たとえば、車両内通信システム、車両内エンターテインメントシステム、車両内ナビゲーションシステム)、スタンドアロンの対話式スピーカー、スマートテレビジョンなどのスマートアプライアンス、および/またはコンピューティングデバイスを含むユーザのウェアラブル装置(たとえば、コンピューティングデバイスを有するユーザの時計、コンピューティングデバイスを有するユーザのメガネ、仮想現実または拡張現実コンピューティングデバイス)であってよい。追加および/または代替のクライアントデバイスが提供されてよい。クライアントデバイス100の構成要素およびリモートシステム150の構成要素は、通信ネットワーク101を介して通信することができる。通信ネットワーク101は、たとえば、ワイドエリアネットワーク(WAN)(たとえば、インターネット)を含んでよい。さらに、クライアントデバイス100の構成要素は、通信ネットワーク101を介して1つまたは複数の他の構成要素と通信し得る。たとえば、通信ネットワーク101は、ローカルエリアネットワーク(LAN)および/またはBLUETOOTH(登録商標)を含んでよく、LANおよび/またはBLUETOOTH(登録商標)を介して1つまたは複数の他のデバイスと通信し得る。
【0034】
クライアントデバイス100は、ユーザの1つまたは複数の口頭発話を示すオーディオデータをキャプチャし得る1つまたは複数のマイクロフォン106を含む。マイクロフォン106は、次いで、さらなる処理のためにクライアントデバイス100および/またはリモートシステム150の1つまたは複数の他の構成要素にオーディオデータを提供し得る。
【0035】
クライアントデバイス100は、たとえば、スピーチテキスト(STT)モジュール102、マッピングモジュール103、リモート構成要素モジュール104、およびレンダリングモジュール105、ならびに複数のテキストマッピングを記憶するためのテキスト応答マップ107を含む、本明細書で説明する方法を実施するのに適したいくつかのモジュールを含んでよい。同様に、リモートシステム150は、たとえば、リモートSTTモジュール151、自然言語処理(NLP)モジュール152、および1つまたは複数のエージェント190と相互作用するのに適したエージェントエンジン153を含む、いくつかのモジュールを含んでよい。
【0036】
次に
図2を参照するとともに引き続き
図1を参照すると、
図1に示す様々な構成要素を使用して、本明細書で説明する方法の実装形態を示す、フローチャートが提供される。図示したように、オーディオデータ200がSTTモジュール102に提供され得る。STTモジュール102は、オーディオデータ200を受信し、デジタルオーディオデータを1つまたは複数のテキストワードまたはテキストフレーズ(本明細書ではトークンとも呼ばれる)に変換する。いくつかの実装形態では、STTモジュール102は、キャプチャされた発話のオーディオデータがトークン単位かつリアルタイムまたはほぼリアルタイムでテキストに変換されるようなストリーミングモジュールであり得、その結果、ユーザのスピーチと事実上並行して、したがって、ユーザが完全な口頭要求を発音する前に、STTモジュール102からトークンが出力され得る。STTモジュール102は、言葉の中のワードシーケンスに加えて言葉の中でのオーディオ信号と音声単位との間の関係を一緒にモデル化する、1つまたは複数の局所的に記憶されたオフラインの音響モデルおよび/または言語モデルに依拠し得る。いくつかの実装形態では、単一のモデルが使用されてよいが、他の実装形態では、たとえば、複数の言語、複数のスピーカーなどをサポートするために、複数のモデルがサポートされてよい。
【0037】
いくつかの事例では、オーディオデータ200および/またはテキスト205は、リモート構成要素モジュール104に提供され得る。リモート構成要素モジュール104は、通信ネットワーク101を介してリモートシステム150と通信し、オーディオデータおよび/またはオーディオデータのテキスト表現をリモートSTTモジュール151および/または自然言語処理(NLP)モジュール152に提供し得る。リモートSTTモジュール151は、ユーザの口頭発話を示すオーディオデータを受信し得るとともにオーディオデータをテキストに変換し得るという点で、STTモジュール102と同様に機能することができる。しかしながら、リモートSTTモジュール151は、クライアントデバイス100のリソースを利用せず、代わりにリモートシステム150のリソースを利用する。したがって、いくつかの事例では、リモートシステム150は、クライアントデバイス100よりも計算能力および/または記憶の制約が小さいので、リモートSTTモジュール151はSTTモジュール102よりもロバストであり得る。
【0038】
STTモジュール102によってかつ/またはリモートSTTモジュール151によって生成されるテキストは、さらなる処理のためにNLPモジュール152に提供され得る。NLPモジュール152は、自由形式自然言語入力を処理し、自然言語入力に基づいて、リモートシステム150の1つまたは複数の他の構成要素による使用のための注釈付き出力を生成する。たとえば、NLPモジュール152は、クライアントデバイス100を介してユーザによって提供されたオーディオデータの、STTモジュール102および/またはリモートSTTモジュール151による変換である、テキスト入力である自然言語自由形式入力を処理することができる。また、たとえば、NLPモジュール152は、リモート構成要素モジュール104から受信されたオーディオデータ200から出力を直接生成し得る。生成された注釈付き出力は、自然言語入力の1つまたは複数の注釈、および随意に自然言語入力の語句のうちの1つまたは複数(たとえば、すべて)を含んでよい。
【0039】
いくつかの実装形態では、NLPモジュール152は、自然言語入力の中の様々なタイプの文法的情報を特定し、それに注釈を付けるように構成される。たとえば、NLPモジュール152は、それらの文法的な役割を用いて用語に注釈を付けるように構成された、スピーチタガー(図示せず)の一部を含んでよい。また、たとえば、いくつかの実装形態では、NLPモジュール152は、追加および/または代替として、自然言語入力の中の語句の間のシンタクティック関係を決定するように構成された、依存パーサ(図示せず)を含んでよい。
【0040】
いくつかの実装形態では、NLPモジュール152は、追加および/または代替として、(たとえば、文芸の登場人物、著名人、公人などを含む)人々、団体、(現実および架空の)ロケーションなどへの参照などの、1つまたは複数のセグメントの中のエンティティ参照に注釈を付けるように構成された、エンティティタガー(図示せず)を含んでよい。NLPモジュール152のエンティティタガーは、(たとえば、人々などのエンティティクラスへのすべての参照の特定を可能にするために)高いレベルの粒度で、かつ/または(たとえば、特定の人物などの特定のエンティティへのすべての参照の特定を可能にするために)もっと低いレベルの粒度で、エンティティへの参照に注釈を付けてよい。エンティティタガーは、特定のエンティティを決定するために自然言語入力の内容に依拠してよく、かつ/または特定のエンティティを決定するために知識グラフもしくは他のエンティティデータベースと随意に通信してよい。特定されたエンティティは、本明細書で説明するように、テキストの中のパターンを特定するために利用され得る。
【0041】
いくつかの実装形態では、NLPモジュール152は、追加および/または代替として、1つまたは複数の文脈上の手がかりに基づいて同じエンティティへの参照をグループ化すなわち「クラスタ化」するように構成された、同一指示レゾルバ(図示せず)を含んでよい。たとえば、同一指示レゾルバは、語句「there」を自然言語入力「I liked Hypothetical Cafe last time we ate there.」の中の「Hypothetical Cafe」に転換するために利用されてよい。
【0042】
いくつかの実装形態では、NLPモジュール152の1つまたは複数の構成要素は、NLPモジュール152の1つまたは複数の他の構成要素からの注釈に依拠し得る。たとえば、いくつかの実装形態では、指定されたエンティティタガーは、特定のエンティティに対するすべての言及に注釈を付ける際に、同一指示レゾルバおよび/または依存パーサからの注釈に依拠し得る。また、たとえば、いくつかの実装形態では、同一指示レゾルバは、同じエンティティへの参照をクラスタ化する際に、依存パーサからの注釈に依拠し得る。いくつかの実装形態では、特定の自然言語入力を処理する際に、NLPモジュール152の1つまたは複数の構成要素は、関連する事前入力、および/または特定の自然言語入力の外部の関連する他のデータを使用して、1つまたは複数の注釈を決定してよい。
【0043】
NLPモジュール152は、次いで、注釈付き出力をエージェントモジュール153に提供してよく、エージェントモジュール153は、1つまたは複数のエージェント190に出力を提供してよく、1つまたは複数のエージェント190は、次いで、ユーザの口頭発話に対する適切な応答を決定してよい。たとえば、エージェントモジュール153は、どのエージェント190が注釈付き出力を利用し意味のある応答を生成する可能性が最も高いのかを、NLPモジュール152の出力の注釈に基づいて決定してよい。NLPモジュール152の注釈付き出力は、次いで、そのエージェントに提供され得、エージェントからの得られた応答は、レンダリングのためにクライアントデバイス100に提供され得る。たとえば、「What is the weather today」という口頭発話が、NLPモジュール152によって注釈が付けられたテキストに変換され得、得られた注釈付き出力は、エージェントモジュール153に提供され得る。エージェントモジュール153は、天候エージェントが、おそらく注釈付き出力への意味のある応答を決定し得ることを、注釈に基づいて決定してよく、天候構成要素に出力を提供してよい。天候エージェントは、次いで、クライアントデバイスに提供すべき応答を決定してよく、応答は、次いで、クライアントデバイス100によってユーザにレンダリングされてよい。たとえば、天候エージェントからエージェントモジュール153によって提供される「75, sunny」という応答に基づいて、レンダリングモジュール105は、応答のオーディオレンダリングおよび/またはビジュアルレンダリング(たとえば、「The weather will be sunny today and 75」というオーディオレンダリング、および/または天候の視覚インターフェースへの出力)を提供し得る。NLPモジュール152は、STTモジュール102によってかつ/またはリモートSTTモジュール151によって生成されたテキストを処理するとき、計算量への要求が相対的に厳しいことがある。クライアントデバイス100は、NLPモジュール152を実装することが計算量的に可能な場合があるが、その全体的な処理能力および電力貯蔵容量が、リモートシステム150において利用可能なそれらよりも限定される可能性があるので、このことは、リモートシステム150におけるNLPモジュールの存在がクライアントデバイス100および全体としてのシステムに有利であることを意味する。これらの要因は、リモートシステム150におけるNLPモジュールの存在が、特にクライアントデバイス100が応答を提供するために自然言語処理を待つ必要がある場合に応答のレイテンシを低く保つこと、およびクライアントデバイスにおけるマッピング済みのローカルストレージから最終的な応答が提供されるかどうかにかかわらず、またはリモートシステム150からの応答を待つことによって、応答の全般的な信頼性を高く保つことを意味する。
【0044】
1つまたは複数のエージェント190からエージェントモジュール153によって応答が受信されていると、応答はリモート構成要素モジュール104を介してクライアントデバイス100に提供され得る。受信された応答は、レンダリングモジュール105に提供されてよく、レンダリングモジュール105は、次いで、1つまたは複数の構成要素(図示せず)を介してアクションをレンダリングしてよい。たとえば、レンダリングモジュール105は、応答をスピーチに変換し得るとともにクライアントデバイス100の1つまたは複数のスピーカーを介してユーザにオーディオを提供し得る、テキストスピーチ構成要素を含んでよい。また、たとえば、レンダリングモジュール105は、グラフィカル応答を生成してよく、クライアントデバイス100に関連する1つまたは複数の視覚インターフェースを介してグラフィカル応答を提供してよい。また、たとえば、レンダリングモジュール105は、Wi-fi制御式照明などの、ユーザの1つまたは複数の他のデバイスと通信していてよく、レンダリングの(たとえば、照明をオンにする)ために1つまたは複数の他のデバイスに応答を提供してよい。
【0045】
いくつかの実装形態では、サーバ応答は、テキスト200とともにテキスト応答マップ107の中に記憶され得る。テキスト応答マップ107は、STTモジュール102および/またはリモートSTTモジュール151によってオーディオデータから生成され、かつリモートシステム150から受信された対応する応答とともに記憶された、テキストを含む。たとえば、「Turn on the kitchen light」という口頭発話に対するオーディオデータが、STTモジュール102によって受信されてよく、テキストに変換されてよい。テキストは、リモートシステム150に提供されてよく、リモートシステム150は、コマンドに対する適切なアクションを決定し得る(たとえば、口頭発話の意味を決定し得る)。照明をオンにすることを示す、得られた応答が、レンダリングモジュール105によって受信されてよく、レンダリングモジュール105は、次いで、「kitchen light」がクライアントデバイス100に関連することを特定することができ、照明をオフにすることができる。得られた応答は、次いで、クライアントデバイス100によって後で利用するために、応答(たとえば、特定の照明をオフにする応答)とともにテキスト応答マップ107の中に記憶され得る。
【0046】
いくつかの実装形態では、テキスト応答マップは、データベースの中の1つもしくは複数のテーブルとして、スタック(たとえば、後入れ先出しデータ構造)として、キュー(たとえば、先入れ先出しデータ構造)として、かつ/または1つもしくは複数の代替のデータ構造として、記憶されてよい。本明細書で説明するとき、テキストは英数字フォーマットをなして記憶され得る。しかしながら、テキストは、代替として、マッピングモジュール103が、クライアントデバイス100によってキャプチャされたオーディオデータをテキスト応答マップの中に記憶されたテキストと比較することを可能にする、音素の1つもしくは複数の行列として、オーディオデータとして、かつ/または任意の他のフォーマットとして、記憶されてよい。テキスト応答モジュールの中に記憶された応答は、テキスト応答、ユーザの1つもしくは複数のインターフェースによって実行されるべきアクション、および/またはユーザにレンダリングするために1つもしくは複数のインターフェースに提供され得る1つもしくは複数の代替のフォーマットとして、記憶されてよい。
【0047】
テキストおよび応答は、各テキストが特定の応答に関連付けられるような直接的関係を伴って、テキスト応答マップの中に記憶される。たとえば、テキスト「What is the capital of France」は、「Paris」という応答とともに、かつ他の応答を伴わずに、記憶され得る。また、たとえば、テキスト「Turn on the kitchen light」は、デバイスをオンにするためにユーザの照明デバイスに提供され得るコマンドとの直接的関係を伴って記憶され得る。
【0048】
いくつかの事例では、テキストおよび応答は、すでにテキスト応答マップ107の中に記憶されていることがある。たとえば、ユーザは、すでに発話「Turn off the kitchen light」を話していることがあり、得られた応答が、すでにテキストとともに記憶されていることがある。それらの事例では、マッピングモジュール103は、リモートシステム150から受信された結果が、テキスト応答マップの中に記憶された応答に整合することを確認することができる。マッピングモジュール103は、記憶された応答が、リモートシステム150から受信された応答に整合するかどうかをチェックすることに基づいて、テキスト応答マップ107を更新してよい。
【0049】
再び
図2を参照すると、マッピングモジュール103は、上記で説明したように、生成されたテキスト205が以前に記憶されているかどうかを決定するために、テキスト応答マップ107にアクセスすることができる。決定210において、テキスト205に対するテキストマッピングがテキスト応答マッピング107の中で特定されない場合、テキスト(またはオーディオデータ)がリモートシステム150に提供され、前に説明したように、リモートサーバ150から応答220が受信される。応答220は、次いで、レンダリングモジュール105によってレンダリングされ得、さらにマッピングモジュール103に提供され得、マッピングモジュール103は、次いで、テキスト205および応答220に基づいてテキストマッピングを生成する。テキストマッピングは、次いで、テキスト応答マップ107の中に記憶され得る。
【0050】
テキスト応答マップ107がテキスト205に対するテキストマッピングを含むことを、決定210においてマッピングモジュール103が決定する場合、マッピングモジュール103は、テキスト応答マップ107にアクセスし、テキスト205に関連付けられた応答215を特定し、ユーザにレンダリングするためにレンダリングモジュール105に応答215を提供する。したがって、ユーザの口頭発話がリモートシステム150によってすでに処理されておりテキスト応答マップ107の中に記憶されている事例では、リモートシステム150は、ユーザにコンテンツをレンダリングするためにアクセスされる必要はない。すべてのアクションがクライアントデバイス100上で行われるので、通信ネットワーク101によってかつ/またはリモートシステム150の構成要素によって持ち込まれるいかなるレイテンシも排除される。さらに、リモートシステム150がクライアントデバイス100によってアクセスされる必要がないという事実に起因して、全体的な電力消費が低減される。さらに、応答を自然言語処理するとともに決定することが排除されるので、ユーザが同じ発話を何度もサブミットするとき、局所的および/または遠隔の計算リソースが節約される。またさらに、リモートシステム150を利用することなく応答がレンダリングされ得るので、クライアントデバイス100にインターネット接続などのリモートシステム150へのいかなる接続がないときでも、応答はレンダリングされ得る。
【0051】
いくつかの事例では、応答は、ユーザによる反復された要求の間で変化しない静的応答であり得る。たとえば、「Who was the first president of the United States」という口頭発話は、発話が受け取られるたびに同じ応答をもたらす。しかしながら、いくつかの事例では、応答は動的であり得、同じ口頭発話を受け取ると変化することがある。たとえば、「What restaurants are near me」は、ユーザのロケーションとともに変化し、したがって動的応答である。また、たとえば、「What is the weather tomorrow」は、その日全体にわたって天候予測が変化することがあり、さらに「tomorrow」が、限られた時間量に対して(すなわち、発話が「今日」受け取られるときのみ)特定の日を表すという点で、動的である。
【0052】
いくつかの実装形態では、リモート構成要素モジュール104は、マッピングモジュール103がテキスト応答マップ107の中でテキスト200に対するテキストマッピングを特定するときでも、テキスト205および/またはオーディオデータ200をリモートシステム150に提供する。たとえば、レンダリングモジュール105にテキストマッピングの対応する応答が提供されるか、またはサーバ応答を受信する前にレンダリングモジュール105に応答が提供され得る(かつ応答のレンダリングを開始する)前に、このことが起こり得る。いくつかの実装形態では、マッピングモジュール103は、リモート構成要素エンジン104がテキストおよび/またはオーディオデータを提供した後、しきい値時間量だけ待ってよく、しきい値時間の満了の前に応答がリモートシステム150から受信されない場合のみ、局所的に記憶された応答をレンダリングモジュール105に提供してよい。
【0053】
図3を参照すると、テキスト応答マップ107がテキストに対する静的応答を含むことを確認する方法を示すフローチャートが提供される。STTモジュール102は、マッピングモジュール103にテキスト205を提供することができ、マッピングモジュール103は、次いで、テキスト200および対応する応答205に対するテキストマッピングを特定することができる。さらに、STTモジュールは、リモート構成要素モジュール104にテキスト205(またはオーディオデータ200)を提供することができ、リモート構成要素モジュール104は、リモートシステム150から応答215を受信する。マッピングモジュール103は、次いで、決定300において、対応する応答215をサーバ応答220と比較することができる。対応する応答215がサーバ応答220に整合する場合、対応する応答は、静的305である可能性がより高く、テキストマッピングはそれに応じて更新されてよい。しかしながら、対応する応答215がサーバ応答220に整合しない場合、対応する応答215は、動的310である可能性があり、テキスト205に対するテキストマッピングはそれに応じて更新され得る。
【0054】
いくつかの実装形態では、マッピングモジュール103は、テキストマッピングとともに信頼性スコアを記憶してよい。信頼性スコアは、対応する応答が静的であることの尤度を示してよい。テキストに対する応答が後で変化しないことの、より大きい尤度を反映するために、信頼性スコアは、サーバ応答が対応する応答に整合するたびに更新され得る。たとえば、信頼性スコアがテキスト応答マップ107の中に最初に記憶されるとき、「1」という信頼性スコアがテキストマッピングに割り当てられてよい。その後、マッピングモジュール103は、(テキストマッピングのテキストに整合する後続のテキストに基づいて)テキストマッピングを特定し得、テキスト(またはオーディオデータ)がリモートシステム150に提供され得、リモートシステムから受信されたサーバ応答が、対応する応答と比較され得る。2つの応答が整合する場合、テキストマッピングに対する信頼性スコアは、同じ応答が2回特定されたことを反映するために「2」に更新されてよい。ユーザからの後続のサブミッションにおいて再びテキストが処理されるにつれて、信頼性スコアが更新され続けてよい。
【0055】
いくつかの実装形態では、マッピングモジュール103によって特定される、テキストマッピングの対応する応答は、特定されたテキストマッピングに関連する信頼性スコアがしきい値を満たす場合のみ、レンダリングモジュール105に提供されてよい。これらの状況では、レンダリングモジュール105は、リモートシステム150からのこれ以上の応答を待つことなく応答をレンダリングしてよい。このことはレイテンシを低減する。たとえば、マッピングモジュール103は、対応する応答が3回確認されていることを示す「3」という信頼性スコアを有するテキストマッピングを特定し得る。マッピングモジュールは、信頼性レベルが「2」よりも大きく、かつ対応するテキストを提供し得る場合のみ、対応するテキストを提供してよい。また、たとえば、マッピングモジュール103は、テキストマッピングの関連する信頼性が「1」である場合、対応する応答を提供しなくてよい。代わりに、リモート構成要素モジュールが、オーディオデータ200および/またはテキスト205をリモートシステム150に提供することができ、サーバ応答が、レンダリングモジュール105に(かつ上記で説明したように信頼性スコアを更新するためにマッピングモジュール103に)提供され得る。対応する応答がサーバ応答に整合する場合、信頼性スコアは「2」に更新されてよく、ユーザの後続の発話に基づいてテキストマッピングが特定されると、サーバ応答ではなくマッピングからの対応する応答がレンダリングモジュール105に提供されてよい。
【0056】
いくつかの実装形態では、(前に説明したように)マッピングモジュール103がテキスト応答マップ107の中でテキストマッピングを特定しないとき、または特定されたテキストマッピングに関連する信頼性スコアがしきい値を満たさないときのみ、リモート構成要素モジュールは、オーディオデータ200および/またはテキスト205をリモートシステム150に提供してよい。たとえば、「3」という信頼性スコアを有するテキストマッピングに対する対応する応答は、信頼性スコアがしきい値を満たす場合、リモートサーバ150とのいかなる通信も用いることなく、レンダリングモジュール105に提供されてよい。しかしながら、「2」という関連する信頼性スコアを有するテキストマッピングに対する対応する応答は、レンダリングモジュール105に提供されてよく、さらにオーディオデータまたはテキストがリモートシステム150に提供され得る。これらの状況では、クライアントデバイス100において局所的に記憶されたマッピングからの応答は、リモートシステム150からの応答がクライアントデバイス100において受信される前にレンダリングされてよい。リモートシステム150からの応答が後で受信されると、そうした応答は、信頼性スコアを繰り返すために、すなわち、たとえば、以下で説明するように、記憶済みのマッピングを除去し、記憶済みのマッピングに、失効したものとしてマークを付け、かつ/または記憶済みの応答が動的であるという事実を反映するようにマッピングを更新するために、使用され得る。このことは、リモートシステム150からの応答が、局所的なマッピングの中の応答に整合するかどうかに依存する。したがって、リモートサーバ150は、特定されたテキストマッピングの信頼性スコアがしきい値を満たさないときのみアクセスされてよい。したがって、クライアントデバイス100上に記憶された応答における信頼性が、テキストマッピングが静的応答を含むことが確実にされるのに十分高くないときのみ、リモートサーバ150のリソースは影響を受ける。
【0057】
いくつかの事例では、サーバ応答は、マッピングモジュール103によって特定されたテキストマッピングの対応する応答に整合しないことがある。それらの事例では、マッピングモジュール103は、記憶された応答が動的であるということを反映するようにテキストマッピングを更新してよい。たとえば、マッピングモジュール103は、テキストマッピングに関連する信頼性スコアを「-1」に、または応答が失効しておりかつ/もしくは動的であることを示すためのいくつかの他のフラグを更新してよい。同じテキストがSTTモジュール102によって後で生成される場合、マッピングモジュール103は、テキストマッピングを特定することができ、対応する応答がレンダリングされるべきでないことを決定することができ、代わりにさらなる処理のためにオーディオデータおよび/またはテキストをリモートサーバ150に提供するようにリモート構成要素モジュール104に示すことができる。応答が動的であることを反映するように信頼性スコアを設定する(またはフラグを設定する)ことは、同じテキストを受信する後続の段階において新たなマッピングが記憶されないことを確実にする。したがって、マッピングモジュール103は、ユーザにコンテンツをレンダリングするためにまったく利用されないテキストマッピングを継続的に追加して計算リソースを何度も消費しない。しかしながら、いくつかの実装形態では、マッピングモジュール103は、記憶空間を温存するためにテキストマッピングを完全に除去してよい。
【0058】
いくつかの実装形態では、リモートシステム150は、サーバ応答が動的であるのかそれとも静的であるのかの表示を提供し得る。いくつかの事例では、エージェントモジュール153は、受信されたオーディオデータおよび/またはテキストに基づいてエージェントモジュール153がアクションを提供した先のエージェント190に基づいて、クライアントデバイス100に提供すべき表示を決定し得る。たとえば、エージェントモジュール153は、特定の日にとっての天候を決定するためにアクションが天候エージェントに提供されるべきであることを決定し得る。さらに、エージェントモジュール153は、天候エージェントからの応答が動的であることを決定してよく、クライアントデバイス100に提供されたサーバ応答が動的であるという表示を提供してよい。サーバ応答が動的であるという表示を受信することに基づいて、マッピングモジュール103は、テキスト応答マップ107の中にテキストとともにサーバ応答を記憶しなくてよく、かつ/または応答が動的でありテキストの後続の処理時にテキスト応答マップ107からサービスされるべきでないことを示すテキストマッピングとともに表示を記憶してよい。別の例として、エージェントモジュール153は、知識グラフエージェントが、注釈付きテキストを処理すべきであり、かつ構成要素によって利用される知識グラフが静的であるという表示を提供すべきであること、およびマッピングモジュール103が、同じ口頭発話がキャプチャされるときの将来の利用のためにテキストマッピング(すなわち、サーバ応答を伴うテキスト)を記憶すべきであることを決定し得る。
【0059】
いくつかの実装形態では、リモートシステム150は、どのくらいの時間にわたってサーバ応答が静的であるのかの表示を提供し得る。たとえば、エージェントモジュール153、および/またはリモートシステム150の1つもしくは複数の他の構成要素は、処理されると、「What is the weather like tomorrow」という発話が、真夜中まで静的応答をもたらすことができ、次いで、真夜中の後は(すなわち、「tomorrow」の定義が、異なる日に変わると)異なることを決定し得る。また、たとえば、「Who do the Cubs play next」という発話には、次のカブス(Cubs)の試合の時間の、かつカブスが彼らの次の試合をした後に応答が変化するという、表示が提供されてよい。また、たとえば、「Find restaurants near me」という発話は、ユーザがロケーションを変更しておらず、かつ/または発話の提供の間にしきい値距離を越えて移動していないときのみ、静的応答をもたらしてよい。マッピングモジュール103は、次いで、対応する応答をレンダリングモジュール105に提供する前に、テキストマッピングとともに記憶された満了イベントが発生しているかどうかをチェックして決定してよい。
【0060】
いくつかの実装形態では、マッピングモジュール103は、記憶された応答が依然として最新であることを確実にするために、かつ/または記憶空間要件においてテキスト応答マップ107がクライアントデバイス100の能力を越えて大きくなることを防止するために、テキスト応答マップ107からテキストマッピングを定期的に除去してよい。たとえば、マッピングモジュール103は、「先入れ先出し」手法を利用してよく、新たなテキストマッピングが追加されるとき、アクセスされていない、より古いテキストマッピングを除去してよい(たとえば、新たなマッピングが追加され、かつテキスト応答がX個のテキストマッピングを含むとき、最後のX個のアクセス済みのマッピングのみを保持し、最も前にアクセスされたマッピングを除去する)。いくつかの実装形態では、マッピングモジュール103は、イベントが発生すると、満了イベントとともに記憶されたテキストマッピングを除去してよい。たとえば、マッピングモジュール103は、テキスト応答マップ107の中に記憶された満了イベントを定期的にチェックしてよく、すでに発生している満了イベントを有するいかなるテキストマッピングも除去してよい。いくつかの実装形態では、マッピングモジュール103は、動的としてフラグが付けられているいかなるテキストマッピングも定期的に除去してよい。
【0061】
図4は、本明細書で開示する実装形態による例示的な方法のフローチャートを示す。1つまたは複数のステップが、省略されてよく、異なる順序で実行されてよく、かつ/あるいは様々な実装形態では、1つまたは複数の追加のステップが含められてよい。
【0062】
ステップ405において、ユーザの口頭発話を示すオーディオデータがキャプチャされる。口頭発話は、1つまたは複数の特性をクライアントデバイス100のマイクロフォン106と共有する、クライアントデバイスの1つまたは複数の構成要素によってキャプチャされ得る。いくつかの実装形態では、ユーザが口頭発話を完了する前に口頭発話の部分がキャプチャされてよく、追加のオーディオデータを依然としてキャプチャしながら、その部分が1つまたは複数の他の構成要素に提供されてよい。たとえば、マイクロフォン106は、オーディオデータの一部分をキャプチャしてよく、口頭発話の追加のオーディオデータをキャプチャし続けながら、オーディオデータを1つまたは複数の構成要素に提供してよい。
【0063】
ステップ410において、オーディオデータから現在のテキストが生成される。現在のテキストは、1つまたは複数の特性をSTTモジュール102と共有する構成要素によって生成され得る。いくつかの実装形態では、STTモジュール102は、オーディオデータの一部分を受信することがあり、口頭発話に対するオーディオデータの全体が、たとえば、マイクロフォン106から受信される前に、現在のテキストを生成し始めてよい。いくつかの実装形態では、STTモジュール102は、現在のテキストを生成する前に、口頭発話のすべてのオーディオデータが提供されるまで待ってよい。さらに、STTモジュール102は、たとえば、つなぎ語を除去し、動詞を標準的な活用形に活用させ、かつ/またはテキストの無意味な部分を除去するために、テキストのいくつかの正規化を実行し得る。しかしながら、STTモジュール102は、たとえば、サーバ上で実行するSTTモジュールよりも、計算量的に集約的でないことが意図される。したがって、STTモジュール102は、テキストへのオーディオデータの変換を実行し得るにすぎない。
【0064】
ステップ415において、テキスト応答マップがアクセスされる。テキスト応答マップは、1つまたは複数の特性をテキスト応答マップ107と共有してよく、1つまたは複数の特性をマッピングモジュール103と共有する構成要素によってアクセスされ得る。テキスト応答マップはテキストマッピングを含み、テキストマッピングの各々は、対応する応答への直接的関係を有するテキストを含む。テキスト応答マップの中のテキストマッピングは、ユーザの以前の口頭発話、ならびにユーザが発話するオーディオデータのキャプチャに応答して生成されたオーディオデータおよび/またはテキストをサブミットすることに応答してリモートシステムから受信された応答に基づいて、生成されてよい。
【0065】
ステップ420において、現在のテキストがテキストマッピングの中に含まれるかどうかを決定するために、テキスト応答マップがチェックされる。たとえば、1つまたは複数の特性をマッピングモジュール103と共有する構成要素は、テキスト応答マップにアクセスしてよく、テキストマッピングのうちのいずれかのテキストが現在のテキストを含むかどうかを決定してよい。いくつかの実装形態では、マッピングモジュール103は、テキストマッピングのテキストと現在のテキストとの間の厳密な整合を必要とすることがある。いくつかの実装形態では、マッピングモジュール103は、現在のテキストへの近い整合を特定し得る。しかしながら、マッピングモジュール103が、ユーザのクライアントデバイス上で実行しており、リソース制約されることがあるので、マッピングモジュール103は、整合が厳密であるかまたはテキストが最小限にしか変わらない場合を除いて、テキスト応答マップの中の所与のテキストを現在のテキストに整合するものと特定しなくてよい。
【0066】
ステップ425において、現在のテキストに整合するテキストを有するテキストマッピングが、テキスト応答マップの中で特定されていると、そのテキストマッピングに対する対応する応答が選択される。所与のテキスト(または、所与のテキストに関連するオーディオデータ)がリモートシステムにサブミットされること、および対応する応答をリモートサーバから受信することに基づいて、所与のテキストに対する対応する応答が、以前に生成されていることがあり、テキスト応答マップの中に記憶されていることがある。いくつかの実装形態では、信頼性スコアがテキストマッピングに関連付けられてよく、信頼性スコアがしきい値を満たす場合のみ、対応する応答が選択されてよい。信頼性スコアは、たとえば、所与のテキストがリモートシステムにサブミットされており、かつ対応する応答がリモートシステムから受信された回数に基づいて、決定されてよい。したがって、所与のテキスト(または、所与のテキストに対するオーディオデータ)が、得られた同じ応答を伴う処理のためにリモートシステムに提供されるにつれて、対応する応答が有効である信頼性がより大きくなる。
【0067】
ステップ430において、1つまたは複数の構成要素が、特定されたテキストマッピングからの応答をレンダリングさせる。応答は、1つまたは複数の特性をレンダリングモジュール105と共有する構成要素によってレンダリングされ得る。いくつかの実装形態では、レンダリングモジュール105は、応答をスピーチに変換するとともに1つまたは複数のスピーカーを介してスピーチをユーザに提供するテキストスピーチモジュールなどの、1つまたは複数の他の構成要素と通信していてよい。また、たとえば、レンダリングモジュール105は、視覚インターフェースなどの1つまたは複数の他のインターフェースと通信していてよく、レンダリングは、視覚インターフェースを介してユーザに視覚出力を提供することを含んでよい。また、たとえば、レンダリングモジュール105は、Wi-fi対応である照明器具などの、ユーザの1つまたは複数の他のデバイスと通信していてよく、1つまたは複数のアクション(たとえば、特定の照明をオフにすること)をデバイスに実行させてよい。
【0068】
図5は、本明細書で開示する実装形態による別の例示的な方法のフローチャートを示す。1つもしくは複数のステップが省略されてよく、異なる順序で実行されてよく、かつ/または様々な実装形態では、1つもしくは複数の追加のステップが含められてよい。
【0069】
ステップ505において、1つまたは複数の構成要素が、ユーザの口頭発話のオーディオデータをキャプチャする。ステップ505は、1つまたは複数の特性を
図4のステップ405と共有し得る。たとえば、オーディオデータは、1つまたは複数の特性をマイクロフォン106と共有する構成要素によってキャプチャされ得る。
【0070】
ステップ510において、オーディオデータから現在のテキストが生成される。このステップは、1つまたは複数の特性を
図4のステップ410と共有し得る。たとえば、1つまたは複数の特性をSTTモジュール102と共有する構成要素が、オーディオデータに基づいてテキストを生成し得る。
【0071】
ステップ515において、テキスト応答マップがアクセスされる。テキスト応答マップは、1つまたは複数の特性をテキスト応答マップ107と共有してよく、このステップは、1つまたは複数の特性を
図4のステップ415と共有し得る。たとえば、マッピングモジュール103は、現在のテキストがテキスト応答マップ107の中のテキストマッピングの中に含まれるかどうかを決定するために、テキスト応答マップ107にアクセスし得る。
【0072】
ステップ520において、テキスト応答マップが、現在のテキストに整合するテキストを有するテキストマッピングを含まないことを、1つまたは複数の構成要素が決定する。決定は、1つまたは複数の特性をテキスト応答マップ107の中のマッピングモジュール103と共有する構成要素によって実行され得る。たとえば、マッピングモジュール107は、本明細書で説明するように、テキスト応答マップにアクセスしてよく、マップの中の記憶済みのテキストをチェックしてよく、テキストマッピングのうちのいずれも現在のテキストに整合しないこと、整合するテキストマッピングのうちのいずれも有効なデータを示す信頼性スコアを有しないこと、および/または整合する任意のテキストマッピングが満了していることを決定してよい。
【0073】
ステップ525において、キャプチャされたオーディオデータおよび/または現在のテキストがリモートシステムに提供される。リモートシステムは、1つまたは複数の特性をリモートシステム159と共有し得る。たとえば、リモート構成要素モジュール104は、本明細書で説明するように、さらなる処理のためにオーディオデータおよび/またはテキストをリモートシステム150に提供し得る。リモートシステム150は、次いで、オーディオデータおよび/または現在のテキストに対する応答を決定し得る。
【0074】
ステップ530において、応答は、次いで、リモートシステムによってクライアントデバイスに提供される。いくつかの実装形態では、応答は、応答を生成するためにリモートシステムによって利用されたエージェントの表示とともに受信され得る。いくつかの実装形態では、応答は、応答が静的であるかどうかの表示とともに受信され得る。代わりに、応答が動的であるという表示とともに応答が受信される場合、応答はレンダリングされ得るが、
図5の方法の残りのステップに従ってテキスト応答マップの中に記憶されなくてよい。
【0075】
ステップ535において、テキスト応答マップが更新される。テキスト応答マップを更新することは、サーバ応答にマッピングされた現在のテキストを含む新たなテキストマッピングを生成することを含んでよい。いくつかの実装形態では、テキスト応答マップを更新することは、新たなテキストマッピング、および/または応答とともに受信された表示(たとえば、応答が静的であるのかそれとも動的であるのかにかかわらず、応答を生成するために利用されたエージェント)とともに、信頼性スコアを記憶することを含んでよい。
【0076】
ステップ540において、第2のオーディオデータがキャプチャされる。ステップ540は、1つまたは複数の特性をステップ505および/または
図4のステップ405と共有し得る。
【0077】
ステップ545において、第2のオーディオデータから第2のテキストが生成される。ステップ545は、1つまたは複数の特性をステップ510および/または
図4のステップ410と共有し得る。
【0078】
ステップ550において、現在のテキストが第2のテキストに整合することを、1つまたは複数の構成要素が決定する。このことは、1つまたは複数の特性をマッピングモジュール103と共有し、かつ1つまたは複数の特性を
図4のステップ420と共有できる、構成要素によって決定され得る。たとえば、ステップ535においてテキスト応答マッピングの中に記憶されたテキストマッピングのテキストが第2のテキストに整合することを、マッピングモジュール103が決定し得る。
【0079】
ステップ555において、1つまたは複数の構成要素が応答をレンダリングさせる。このステップは、1つまたは複数の特性を
図4のステップ430と共有し得る。たとえば、1つまたは複数の特性をレンダリングモジュール105と共有する構成要素が、応答をレンダリングさせることができる。随意に、応答のレンダリングは、第2のオーディオデータまたは第2のオーディオデータを表すデータがリモートシステム150へ送られることなく行われてよい。
【0080】
図6は、本明細書で説明する技法の1つまたは複数の態様を実行するために随意に利用され得る例示的なコンピューティングデバイス610のブロック図である。たとえば、クライアントデバイス100は、例示的なコンピューティングデバイス610の1つまたは複数の構成要素を含むことができ、かつ/あるいは1つまたは複数のリモートシステム150は、例示的なコンピューティングデバイス610の1つまたは複数の構成要素を含むことができる。
【0081】
コンピューティングデバイス610は、通常、バスサブシステム612を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ614を含む。これらの周辺デバイスは、たとえば、メモリサブシステム625およびファイル記憶サブシステム626を含む、記憶サブシステム624、ユーザインターフェース出力デバイス620、ユーザインターフェース入力デバイス622、ならびにネットワークインターフェースサブシステム616を含んでよい。入力および出力デバイスは、コンピューティングデバイス610とのユーザ対話を可能にする。ネットワークインターフェースサブシステム616は、外部ネットワークへのインターフェースを提供し、他のコンピューティングデバイスの中の対応するインターフェースデバイスに結合される。
【0082】
ユーザインターフェース入力デバイス622は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイの中に組み込まれたタッチスクリーン、音声認識システム、マイクロフォン、および/または他のタイプの入力デバイスなどのオーディオ入力デバイスを含んでよい。概して、「入力デバイス」という用語の使用は、コンピューティングデバイス610の中または通信ネットワーク上に情報を入力するための、すべての可能なタイプのデバイスおよび方法を含むことが意図される。
【0083】
ユーザインターフェース出力デバイス620は、ディスプレイサブシステム、プリンタ、ファックス機械、またはオーディオ出力デバイスなどの非視覚ディスプレイを含んでよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投影デバイス、または視認可能な画像を作成するためのいくつかの他のメカニズムを含んでよい。ディスプレイサブシステムはまた、オーディオ出力デバイスなどを介して非視覚的な表示を提供し得る。概して、「出力デバイス」という用語の使用は、コンピューティングデバイス610からユーザに、または別の機械もしくはコンピューティングデバイスに、情報を出力ための、すべての可能なタイプのデバイスおよび方法を含むことが意図される。
【0084】
記憶サブシステム624は、本明細書で説明するモジュールのうちの一部または全部の機能を提供するプログラミングおよびデータ構成物を記憶する。たとえば、記憶サブシステム624は、
図2〜
図5の方法の選択された態様を実行するための、かつ/または
図1〜
図3に示す様々な構成要素を実装するための、論理を含んでよい。
【0085】
これらのソフトウェアモジュールは、概して、プロセッサ614によって単独で、または他のプロセッサと組み合わせて実行される。記憶サブシステム624の中で使用されるメモリ625は、プログラム実行中の命令およびデータの記憶用のメインランダムアクセスメモリ(RAM)630、ならびに確定した命令がその中に記憶される読取り専用メモリ(ROM)632を含む、いくつかのメモリを含むことができる。ファイル記憶サブシステム626は、プログラムおよびデータファイルのための持続的な記憶を提供することができ、ハードディスクドライブ、関連するリムーバブル媒体と一緒のフロッピーディスクドライブ、CD-ROMドライブ、光学ドライブ、またはリムーバブル媒体カートリッジを含んでよい。いくつかの実装形態の機能を実施するモジュールは、ファイル記憶サブシステム626によって記憶サブシステム624の中に、またはプロセッサ614によってアクセス可能な他の機械の中に、記憶され得る。
【0086】
バスサブシステム612は、コンピューティングデバイス610の様々な構成要素およびサブシステムに、意図するように互いに通信させるための、メカニズムを提供する。バスサブシステム612は単一のバスとして概略的に図示されるが、バスサブシステムの代替実装形態は複数のバスを使用してよい。
【0087】
コンピューティングデバイス610は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む、様々なタイプのものであり得る。コンピュータおよびネットワークの絶え間なく変化する性質に起因して、
図6に示すコンピューティングデバイス610の説明は、いくつかの実装形態を示すための具体例として意図されるにすぎない。
図6に示すコンピューティングデバイスよりも多数または少数の構成要素を有する、コンピューティングデバイス610の多くの他の構成が可能である。
【0088】
本明細書で説明するいくつかの実装形態が、ユーザについての個人情報(たとえば、他の電子通信から抽出されるユーザデータ、ユーザのソーシャルネットワークについての情報、ユーザのロケーション、ユーザの時間、ユーザの生体情報、ならびにユーザの活動および人口統計学的情報、ユーザ間の関係など)を収集または使用し得る状況では、情報が収集されるかどうか、個人情報が記憶されるかどうか、個人情報が使用されるかどうか、およびユーザについて情報がどのように収集され、記憶され、かつ使用されるのかを制御するための1つまたは複数の機会が、ユーザに与えられる。すなわち、本明細書で説明するシステムおよび方法は、そのようにするために明示的な委任を関連するユーザから受け取ったときにしか、ユーザ個人情報を収集、記憶、および/または使用しない。
【0089】
たとえば、ユーザには、プログラムまたは機能が、その特定のユーザ、またはプログラムもしくは機能に関連する他のユーザについてのユーザ情報を収集するかどうかの制御が与えられる。個人情報が収集されることになる各ユーザには、情報が収集されるかどうかに関して、かつ情報のどの部分が収集されることになるのかに関して、許可または委任を与えるために、そのユーザに関連する情報収集の制御を可能にするための1つまたは複数のオプションが提示される。たとえば、ユーザには、通信ネットワークを介してそのような1つまたは複数の制御オプションが提供され得る。加えて、個人が特定できる情報が除去されるように、いくつかのデータは記憶または使用される前に1つまたは複数の方法で処置されてよい。一例として、個人が特定できる情報が決定され得ないように、ユーザの識別情報は処置されてよい。別の例として、ユーザの特定のロケーションが決定され得ないように、ユーザの地理的ロケーションは、より大きい領域に一般化されてよい。
本明細書で開示する実装形態は、クライアントデバイス上に局所的に記憶されるテキスト応答マップをクライアントデバイスによって生成および/または利用することに関する。テキスト応答マップは複数のマッピングを含むことができ、ここで、マッピングの各々は、対応するテキストと対応する応答との間の対応する直接的関係を規定する。マッピングの各々は、対応するテキストが、クライアントデバイスによってキャプチャされた以前のオーディオデータから以前に生成されたことに基づいて、ならびに対応する応答が、以前のオーディオデータおよび対応するテキストのうちの少なくとも1つの、リモートシステムへの送信に応答して、リモートシステムから以前に受信されたことに基づいて、テキスト応答マップの中で規定される。