(57)【特許請求の範囲】
【請求項１】
音声対応電子デバイスを用いて音声入力を受け取るステップと、
前記音声対応電子デバイスにおいて、前記音声入力の少なくとも一部を受け取ることに応答して：
前記音声入力の前記少なくとも一部のローカル処理を実行して、選択的オフライン対応の音声アクションの少なくとも一部をビルドするステップであって、前記選択的オフライン対応の音声アクションのタイプは、少なくとも1つの場合にオフラインで完了されることができ、少なくとも1つの他の場合にオンラインサービスへの接続を使用してのみ完了されることができる、ステップと、
前記ローカル処理の間および前記音声対応電子デバイスがオフラインのときに、前記選択的オフライン対応の音声アクションがオフラインで完了され得るか否かを判定するステップと、
前記選択的オフライン対応の音声アクションがオフラインで完了され得るという判定に応答して、前記ローカル処理を用いて前記選択的オフライン対応の音声アクションを完了するステップと、
前記選択的オフライン対応の音声アクションがオフラインで完了され得ないと判定することに応答して：
前記音声対応電子デバイス上で前記選択的オフライン対応の音声アクションのローカルな完了を実行するステップと、
前記選択的オフライン対応の音声アクションのための前記ローカル処理によって生成されたデータをローカルに維持するステップと、
前記音声対応電子デバイスが前記オンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了するステップと
を含むことを特徴とする方法。
【請求項２】
前記音声対応電子デバイスが、ワイヤレスネットワークと通信するとき、前記オンラインサービスと通信するように構成されたモバイルデバイスを具備することを特徴とする請求項1に記載の方法。
【請求項３】
前記ローカル処理を実行することが、前記音声対応電子デバイスで前記音声入力を完全に受け取る前に、オフライン対応の音声アクションの前記少なくとも一部を動的にビルドし、前記ローカル処理の間および前記音声対応電子デバイスがオフラインのときに、前記選択的オフライン対応の音声アクションがオフラインで完了され得るか否かを判定するステップが、前記音声対応電子デバイスで前記音声入力を完全に受け取る前に実行される、ことを特徴とする請求項1に記載の方法。
【請求項４】
前記音声対応電子デバイスがオンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了するステップが、前記オンラインサービスから文脈依存データを取り出すステップと、前記文脈依存データを使用して前記選択的オフライン対応の音声アクションを完了するステップとを含む、ことを特徴とする請求項1に記載の方法。
【請求項５】
前記音声対応電子デバイスがオンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了するステップが、前記文脈依存データのために前記オンラインサービスにクエリを発行するステップを含む、ことを特徴とする請求項4に記載の方法。
【請求項６】
オフライン対応の音声アクションが、少なくとも1つの場所依存のパラメータを含み、前記クエリが、前記音声対応電子デバイスの現在の場所を含み、前記文脈依存データが場所依存データを含む、ことを特徴とする請求項5に記載の方法。
【請求項７】
オフライン対応の音声アクションが前記音声入力に基づいて解決されないままの少なくとも1つのパラメータを含み、前記オンラインサービスから前記文脈依存データを取り出すステップが、前記オンラインサービスから前記少なくとも1つのパラメータのための値を取り出すステップを含む、ことを特徴とする請求項4に記載の方法。
【請求項８】
前記音声対応電子デバイスがオンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了するステップが、前記オンラインサービスに前記音声対応電子デバイスを同期するステップを含む、ことを特徴とする請求項1に記載の方法。
【請求項９】
前記音声対応電子デバイスがオンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了するステップが、前記音声対応電子デバイスのユーザに関連付けられた少なくとも1つの他の電子デバイスに、前記音声対応電子デバイスを同期するステップを含む、ことを特徴とする請求項1に記載の方法。
【請求項１０】
前記選択的オフライン対応の音声アクションのための前記ローカル処理によって生成されたデータをローカルに維持するステップが、前記選択的オフライン対応の音声アクションに関連付けられた診断データをローカルに維持するステップを含み、前記音声対応電子デバイスがオンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了するステップが、前記選択的オフライン対応の音声アクションに関連付けられた前記診断データをアップロードするステップを含む、ことを特徴とする請求項1に記載の方法。
【請求項１１】
前記音声対応電子デバイスがオンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了するステップが、前記オンラインサービスを用いて前記選択的オフライン対応の音声アクションのリモート完了を実行するステップを含む、ことを特徴とする請求項1に記載の方法。
【請求項１２】
前記選択的オフライン対応の音声アクションがオフラインで完了され得ないと判定することに応答して、前記音声対応電子デバイスが前記オンラインサービスに接続された後に前記選択的オフライン対応の音声アクションが完了されることを前記音声対応電子デバイスのユーザに通知するステップをさらに含む、ことを特徴とする請求項1に記載の方法。
【請求項１３】
前記選択的オフライン対応の音声アクションがオフラインで完了され得ないと判定することに応答して、前記音声対応電子デバイスが前記オンラインサービスに接続された後に前記選択的オフライン対応の音声アクションが完了されたことを前記音声対応電子デバイスの前記ユーザに通知するステップをさらに含む、ことを特徴とする請求項12に記載の方法。
【請求項１４】
前記選択的オフライン対応の音声アクションの前記タイプが、リマインダタイプ、通信タイプ、イベントタイプ、デバイス設定タイプ、媒体制御タイプ、およびナビゲーションタイプからなるグループから選択される、ことを特徴とする請求項1に記載の方法。
【請求項１５】
メモリと、前記メモリ内に格納された命令を実行するように動作可能な1つまたは複数のプロセッサとを具備する装置であって、
音声対応電子デバイスを用いて音声入力を受け取り、
前記音声対応電子デバイスにおいて、前記音声入力の少なくとも一部を受け取ることに応答して：
前記音声入力の前記少なくとも一部のローカル処理を実行して、選択的オフライン対応の音声アクションの少なくとも一部をビルドし、前記選択的オフライン対応の音声アクションのタイプは、少なくとも1つの場合にオフラインで完了されることができ、少なくとも1つの他の場合にオンラインサービスへの接続を使用してのみ完了されることができ、
前記ローカル処理の間および前記音声対応電子デバイスがオフラインのときに、前記選択的オフライン対応の音声アクションがオフラインで完了され得るか否かを判定し、
前記選択的オフライン対応の音声アクションがオフラインで完了され得るという判定に応答して、前記ローカル処理を用いて前記選択的オフライン対応の音声アクションを完了し、
前記選択的オフライン対応の音声アクションがオフラインで完了され得ないと判定することに応答して：
前記音声対応電子デバイス上で前記選択的オフライン対応の音声アクションのローカルな完了を実行し、
前記選択的オフライン対応の音声アクションのための前記ローカル処理によって生成されたデータをローカルに維持し、
前記音声対応電子デバイスが前記オンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了する
命令を含むことを特徴とする装置。
【請求項１６】
前記命令は、前記音声入力のデジタルオーディオ信号をテキストに変換するストリーミング音声-テキストモジュールを実施する第1の命令であって、前記第1の命令は、前記デジタルオーディオ信号から複数のテキストトークンを動的に生成する、第1の命令と、前記複数のテキストトークンの少なくとも一部から前記選択的オフライン対応の音声アクションの前記一部を動的にビルドするストリーミングセマンティクプロセッサを実施する第2の命令とを含む、ことを特徴とする請求項15に記載の装置。
【請求項１７】
前記音声対応電子デバイスが前記オンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了する前記命令が、前記オンラインサービスから文脈依存データを取り出し、前記文脈依存データを使用して前記選択的オフライン対応の音声アクションを完了する命令を含む、ことを特徴とする請求項15に記載の装置。
【請求項１８】
前記音声対応電子デバイスが前記オンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了する前記命令が、オンラインサービス、または前記音声対応電子デバイスのユーザに関連付けられた少なくとも1つの他の電子デバイスに、前記音声対応電子デバイスを同期する命令を含む、ことを特徴とする請求項15に記載の装置。
【請求項１９】
前記音声対応電子デバイスが前記オンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了する前記命令が、前記オンラインサービスを用いた前記選択的オフライン対応の音声アクションのリモート完了を実行する命令を含む、ことを特徴とする請求項15に記載の装置。
【請求項２０】
音声対応電子デバイスを用いて音声入力を受け取るステップと、
前記音声対応電子デバイスにおいて、前記音声入力の少なくとも一部を受け取ることに応答して：
前記音声入力の前記少なくとも一部のローカル処理を実行して、選択的オフライン対応の音声アクションの少なくとも一部をビルドするステップであって、前記選択的オフライン対応の音声アクションのタイプは、少なくとも1つの場合にオフラインで完了されることができ、少なくとも1つの他の場合にオンラインサービスへの接続を使用してのみ完了されることができる、ステップと、
前記ローカル処理の間および前記音声対応電子デバイスがオフラインのときに、前記選択的オフライン対応の音声アクションがオフラインで完了され得るか否かを判定するステップと、
前記選択的オフライン対応の音声アクションがオフラインで完了され得るという判定に応答して、前記ローカル処理を用いて前記選択的オフライン対応の音声アクションを完了するステップと、
前記選択的オフライン対応の音声アクションがオフラインで完了され得ないと判定することに応答して：
前記音声対応電子デバイス上で前記選択的オフライン対応の音声アクションのローカルな完了を実行するステップと、
前記選択的オフライン対応の音声アクションのための前記ローカル処理によって生成されたデータをローカルに維持するステップと、
前記音声対応電子デバイスが前記オンラインサービスに接続された後、前記ローカルに維持されたデータを使用して前記選択的オフライン対応の音声アクションを完了するステップを含む方法を実行する、1つまたは複数のプロセッサによって実行可能なコンピュータ命令を格納する非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声対応電子デバイスにおける選択的オフライン対応の音声アクションのためのデータのローカル維持に関する。
【背景技術】
【０００２】
音声ベースのユーザインターフェースは、コンピュータおよび他の電子デバイスの制御に益々使用されている。音声ベースのユーザインターフェースのある特別に有用なアプリケーションは、モバイル電話、腕時計、タブレットコンピュータ、ヘッドマウントデバイス、仮想または拡張現実デバイスなど、ポータブル電子デバイスに用いられる。別の有用なアプリケーションは、ナビゲーションおよびオーディオ能力を組み込む自動車用システムなどの車両電子システムに用いられる。そのようなアプリケーションは、より従来的なキーボードまたはタッチスクリーン入力のユーティリティを制限する非従来型のフォームファクタ、および/またはユーザが運転中や歩行中であるときなど、ユーザに別のタスクに注力したままを促すことが望ましい状況での使用によって一般に特徴づけられる。
【０００３】
音声ベースのユーザインターフェースは、簡潔で直接的な命令を理解できるだけの、初期の基本的なインターフェースから、自然な言語要求に応答し、文脈を理解し、堂々巡りの対話またはユーザとの会話を扱うことのできるより高機能なインターフェースに進化し続けている。多くの音声ベースのユーザインターフェースは、人間の音声のオーディオ記録をテキストに変換する初期の発話-テキスト（または音声-テキスト）変換、およびユーザの要求の意味を決定するためにテキストを分析するセマンティック分析の両方を組み込んでいる。ユーザの記録された音声の決定された意味に基づいて、検索の実行や、そうでなければコンピュータまたは他の電子デバイスの制御などのアクションが実行され得る。
【０００４】
例えば、プロセッサおよび/またはメモリリソースの観点で、音声ベースのユーザインターフェースのコンピューティングリソース要件はかなりのものであり、結果として、いくつかの従来の音声ベースのユーザインターフェースのアプローチは、比較的低いパワーのクライアントデバイスによって音声入力が受け取られて記録され、記録されたものがインターネットなどのネットワークを介して発話-テキスト変換およびセマンティック処理のためのオンラインサービスに送信され、適切な応答が、オンラインサービスによって生成され、クライアントデバイスに返されるというクライアント-サーバ機構を採用している。オンラインサービスは、クライアントデバイス内でローカルに実装され得るであろう機能より複雑な発話認証およびセマンティック分析機能の実装を可能にして、かなりのコンピューティングリソースを音声入力の処理に充てることができる。しかしながら、クライアント-サーバのアプローチは、音声入力を処理する際に、クライアントがオンラインである（すなわち、オンラインサービスと通信している）ことを必然的に要求する。特に、モバイルおよび自動車用のアプリケーションでは、途切れのないオンライン接続性がいつでもどこでも保証されないことがあり、クライアント-サーバの音声ベースのユーザインターフェースは、デバイスが「オフライン」であり、ゆえにオンラインサービスに接続していないときは常にクライアントデバイスで無効である。さらに、デバイスがオンラインサービスに接続しているときでさえ、クライアントデバイスとオンラインサービスとの間の双方向通信の必要を考えると、音声入力のオンラインでの処理に関連する遅延が、ユーザによって不必要に感じられるほどである場合がある。そうであるので、いくつかのデバイスは、音声入力を処理するためのオフラインまたはローカルな処理機能を組み込んでいる。
【発明の概要】
【課題を解決するための手段】
【０００５】
本明細書は概して、音声対応電子デバイスにおいて、デバイスがオフラインであり、オンライン接続性がリストアされてしまった後でアクションを完了されることが可能であるため、そのようなアクションがローカルで完了され得ないときは常に、本明細書では選択的オフライン対応の音声アクションと呼ばれる特定のタイプの音声アクションに関連するデータをローカルに維持する様々な実施形態を対象にする。選択的オフライン対応の音声アクションは、以降により詳細に議論されるが、ある場合では、音声対応電子デバイスがオンラインであるときに完了されることができ、他の場合では、オンラインサービスとの接続を使用してのみ完了することができるタイプの音声アクションであり、そのようなアクションに関連するデータの維持によって、オンラインサービスおよび/または別の電子デバイスとの同期、および/またはオンラインサービスからの文脈依存データの取得などの動作が、オンライン接続性がリストアされて、音声アクションがその後完了した後に実行されることを可能にする。
【０００６】
従って、いくつかの実施形態では、方法は、音声対応電子デバイスで音声入力を受け取るステップと、音声対応電子デバイスにおいて、音声入力の少なくとも一部を受け取ることに応答して、音声入力の少なくとも一部のローカルな処理を実行して、選択的オフライン対応の音声アクションの少なくとも一部をビルドするステップであって、選択的オフライン対応の音声アクションのタイプは、少なくとも1つの場合にオフラインで完了でき、少なくとも1つの他の場合にオンラインサービスへの接続を使用してのみ完了され得る、ステップと、ローカル処理の間および音声対応電子デバイスがオフラインのときに、選択的オフライン対応の音声アクションがオフラインで完了され得るか否かを判定するステップと、選択的オフライン対応の音声アクションがオフラインで完了され得るという判定に応答して、ローカル処理を用いて選択的オフライン対応の音声アクションを完了するステップとを有することができる。さらに、選択的オフライン対応の音声アクションがオフラインで完了され得ないとの判定に応答して、該方法は、選択的オフライン対応の音声アクションのためのローカル処理によって生成されたデータをローカルに維持するステップと、音声対応電子デバイスがオンラインサービスに接続された後、ローカルに維持されたデータを使用して選択的オフライン対応の音声アクションを完了するステップとを含むことができる。
【０００７】
いくつかの実施形態では、音声対応電子デバイスが、ワイヤレスネットワークと通信するとき、オンラインサービスと通信するように構成されたモバイルデバイスを具備し、さらにいくつかの実施形態では、ローカル処理を実行するステップが、音声対応電子デバイスで音声入力を完全に受け取る前に、オフライン対応の音声アクションの少なくとも一部を動的にビルドし、ローカル処理の間および音声対応電子デバイスがオフラインのときに、選択的オフライン対応の音声アクションがオフラインで完了され得るか否かを判定するステップが、音声対応電子デバイスで音声入力を完全に受け取る前に実行される。
【０００８】
さらに、いくつかの実施形態では、音声対応電子デバイスがオンラインサービスに接続された後、ローカルに維持されたデータを使用して選択的オフライン対応の音声アクションを完了するステップが、オンラインサービスから文脈依存データを取り出すステップと、文脈依存データを使用して選択的オフライン対応の音声アクションを完了するステップとを含む。さらにいくつかの実施形態では、音声対応電子デバイスがオンラインサービスに接続された後、ローカルに維持されたデータを使用して選択的オフライン対応の音声アクションを完了するステップが、文脈依存データのためにオンラインサービスにクエリを発行するステップを含み、オフライン対応音声アクションが、少なくとも1つの場所依存パラメータを含み、クエリが、音声対応電子デバイスの現在の場所を含み、文脈依存データが場所依存データを含む。いくつかの実施形態では、オフライン対応の音声アクションが、音声入力に基づいて解決できないままの少なくも1つのパラメータを含み、オンラインサービスから文脈依存データを取り出すステップが、オンラインサービスから少なくとも1つのパラメータの値を取り出すステップを含む。
【０００９】
また、いくつかの実施形態では、音声対応電子デバイスがオンラインサービスに接続された後、ローカルに維持されたデータを使用して選択的オフライン対応の音声アクションを完了するステップが、オンラインサービスに音声対応電子デバイスを同期するステップを含む。いくつかの実施形態では、音声対応電子デバイスがオンラインサービスに接続された後、ローカルに維持されたデータを使用して選択的オフライン対応の音声アクションを完了するステップが、音声対応電子デバイスのユーザに関連付けられた少なくとも1つの他の電子デバイスに、音声対応電子デバイスを同期するステップを含む。
【００１０】
さらに、いくつかの実施形態では、選択的オフライン対応の音声アクションのためのローカル処理によって生成されたデータをローカルに維持するステップが、選択的オフライン対応の音声アクションに関連付けられた診断データをローカルに維持するステップを含み、音声対応電子デバイスがオンラインサービスに接続された後、ローカルに維持されたデータを使用して選択的オフライン対応の音声アクションを完了するステップが、選択的オフライン対応の音声アクションに関連付けられた診断データをアップロードするステップを含む。
【００１１】
いくつかの実施形態ではまた、選択的オフライン対応の音声アクションがオフラインで完了され得ないとの判定に応答して、音声対応電子デバイス上で選択的オフライン対応の音声アクションのローカルな完了を実行するステップをさらに含み、音声対応電子デバイスがオンラインサービスに接続された後、ローカルに維持されたデータを使用して選択的オフライン対応の音声アクションを完了するステップが、オンラインサービスを用いて選択的オフライン対応の音声アクションのリモート完了を実行するステップを含む。いくつかの実施形態ではまた、選択的オフライン対応の音声アクションがオフラインで完了され得ないとの判定に応答して、音声対応電子デバイスがオンラインサービスに接続された後に選択的オフライン対応の音声アクションが完了されることを音声対応電子デバイスのユーザに通知するステップをさらに含む。いくつかの実施形態ではさらに、選択的オフライン対応の音声アクションがオフラインで完了され得ないとの判定に応答して、音声対応電子デバイスがオンラインサービスに接続された後に選択的オフライン対応の音声アクションが完了されたことを音声対応電子デバイスのユーザに通知するステップをさらに含む。さらに、いくつかの実施形態では、選択的オフライン対応の音声アクションのタイプが、リマインダタイプ、通信タイプ、イベントタイプ、デバイス設定タイプ、媒体制御タイプ、およびナビゲーションタイプからなるグループから選択される。
【００１２】
さらに、いくつかの実施形態では、メモリと、メモリ内に格納された命令を実行するように動作可能な1つまたは複数のプロセッサとを具備する装置であって、命令が上記方法のいずれかを実行するように構成された装置を含んでよい。いくつかの実施形態では、上記方法のいずれかを実行するように、1つまたは複数のプロセッサによって実行可能なコンピュータ命令を格納する非一時的コンピュータ可読記憶媒体を含んでもよい。
【００１３】
上述した概念および以降により詳細に記載にする追加の概念のすべての組み合わせが本明細書に開示される主要事項の一部であることが理解されよう。例えば、本明細書の最後に示される特許請求の範囲に記載の主要事項のすべての組み合わせは、本明細書に開示される主要事項の一部であると考えられる。
【図面の簡単な説明】
【００１４】
【図１】コンピュータシステムの例示的なアーキテクチャを説明する図である。
【図２】例示的な分散化された音声入力処理環境のブロック図である。
【図３】図2の環境を使用して、音声入力を処理する例示的な方法を説明するフローチャートである。
【図４】図2の環境を使用して、音声入力を処理する例示的な方法を説明するフローチャートである。
【図５】図2の環境を使用して、音声入力を処理する別の例示的な方法を説明するフローチャートである。
【図６】図2に参照されるストリーミング音声-テキストモジュールによって実行される例示的なオフラインの音声-テキストルーチンのフローチャートである。
【図７】図2に参照されるセマンティックプロセッサモジュールによって実行される例示的な処理テキストトークンルーチンのフローチャートである。
【図８】図2に参照されるセマンティクプロセッサモジュールによって実行される例示的な入力ルーチンの受信端のフローチャートである。
【図９】図2に参照されるセマンティクプロセッサモジュールによって実行される例示的なペンディングアクション処理のフローチャートである。
【発明を実施するための形態】
【００１５】
以降で議論される実施形態では、選択的にオフライン対応の音声アクションに関連付けられたデータが、デバイスがオフラインであり、オンライン接続性がリストアされた後にアクションを完了できるため、そのようなアクションがローカルで完了され得ないときは常に、音声対応電子デバイス内にローカルに維持される。選択される実施形態についてのさらなる詳細は、以降に議論される。しかしながら、他の実施形態が考慮されてよく、本明細書に開示される実施形態は排他的ではない。
【００１６】
例示的なハードウェアおよびソフトウェアの実施形態
次に図面について、同様の番号は、複数の図面にわたって同様の部分を表し、図1は、例示的なコンピュータシステム10における電子的構成要素のブロック図である。システム10は、一般にバスサブシステム14を介して複数の周辺デバイスと通信する少なくとも1つのプロセッサ12を含む。これらの周辺デバイスは、例えば、メモリサブシステム18およびファイルストレージサブシステム20を含むストレージサブシステム16、ユーザインターフェース入力デバイス22、ユーザインターフェース出力デバイス24、およびネットワークインターフェースサブシステム26を含み得る。入出力デバイスにより、システム10とのユーザ対話が可能である。ネットワークインターフェースサブシステム26は、外部ネットワークへのインターフェースを提供するとともに、他のコンピュータシステムにおける対応するインタフェースデバイスに接続される。
【００１７】
いくつかの実施形態では、ユーザインターフェース入力デバイス22は、キーボードや、マウス、トラックボール、タッチパッド、またはグラフィックタブレットなどのポインティングディバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムなどのオーディオ入力デバイス、マイクロフォン、および/または他のタイプの入力デバイスを含み得る。一般に、「入力デバイス」という用語の使用は、コンピュータ10へまたは通信ネットワーク上へ情報を入力するための、すべての可能なタイプのデバイスおよび方法を含むことを意図する。
【００１８】
ユーザインターフェース出力デバイス24は、ディスプレイサブシステム、プリンタ、ファクシミリ、またはオーディオ出力デバイスなどの非ビジュアルディスプレイを含むことができる。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、プロジェクションデバイス、または視覚画像を生成するためのいくつかの他のメカニズムを含むことができる。ディスプレイサブシステムはまた、オーディオ出力デバイスなどの非ビジュアルディスプレイを提供できる。一般に、「出力デバイス」という用語の使用は、コンピュータシステム10からユーザまたは別のマシンまたはコンピュータシステムに情報を出力するためのすべての可能なタイプのデバイスおよび方法を含むことを意図する。
【００１９】
ストレージサブシステム16は、本明細書に開示されるモジュールのいくつかまたはすべての機能を提供するプログラムおよびデータ構成を格納する。例えば、ストレージサブシステム16は、本明細書に開示される方法の選択された態様を実行するためのロジックを含むことができる。
【００２０】
これらのソフトウェアモジュールは、一般に、プロセッサ12単独で、またはプロセッサ12と他のプロセッサを組み合わせて実行される。ストレージサブシステム16で使用されるメモリサブシステム18は、プログラム実行中に命令およびデータを記憶するための主ランダムアクセスメモリ(RAM)28、および固定の命令が格納された読み取り専用メモリ(ROM)30を含む複数のメモリを含むことができる。ファイルストレージサブシステム20は、プログラムおよびデータファイルのための持続性のストレージを提供でき、ハードディスクドライブ、関連リムーバブル媒体を伴うフロッピー(登録商標)ディスクドライブ、CD-ROMドライブ、光学ドライブ、またはリムーバブル媒体カートリッジを含むことができる。ある実施形態の機能を実装するモジュールが、ストレージサブシステム16内の、またはプロセッサ12がアクセス可能な他のマシン内のファイルストレージサブシステム20によって格納され得る。
【００２１】
バスサブシステム14は、システム10の様々な構成要素およびサブシステムが意図されるように互いに通信できるメカニズムを提供する。バスサブシステム14は単一のバスとして概略的に示されているが、バスサブシステムの代替の実施形態では複数のバスが使用されてもよい。
【００２２】
システム10は、モバイルデバイス、ポータブル電子デバイス、組み込みデバイス、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ウェアラブルデバイス、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムまたはコンピューティングデバイスを含む様々なタイプのものであってよい。加えて、システム10によって実施される機能は、例えば、クライアント-サーバ、ピアツーピア、または他のネットワーク構成においてなど、1つまたは複数のネットワークを介して互いに相互に接続される複数のシステム間に分散されてよい。コンピュータおよびネットワークの常に変化する性質により、図1に示すシステム10の記載は、いくつかの実施形態を説明する目的の特定の例として意図されるに過ぎない。システム10の多くの他の構成は、図1に示されるコンピュータシステムより多くのまたはより少ない構成要素を有することが可能である。
【００２３】
以降で説明する実施形態は、本明細書に開示される機能の様々な組み合わせを実施する1つまたは複数の方法を含み得る。他の実施形態は、本明細書に記載の方法の1つまたは複数などの方法を実行するために、プロセッサによって実行可能な命令を格納する非一時的コンピュータ可読記憶媒体を含む。他の実施形態はまた、メモリと、本明細書に記載の方法の1つまたは複数などの方法を実行するために、メモリに格納された命令を実行するように動作可能な1つまたは複数のプロセッサとを含むことができる。
【００２４】
以降に記載される様々なプログラムコードは、特定の実施形態で実装されるアプリケーションに基づいて特定され得る。しかしながら、以下の任意の特定のプログラム命名法は、単に便宜的に使用されると理解されるべきである。さらに、コンピュータプログラムがルーチン、プロシージャ、メソッド、モジュール、およびオブジェクトなどに編成され得る無数の様式、および、プログラム機能が一般のコンピュータ内に常駐する様々なソフトウェアレイヤ間で割り当てられ得る様々な様式（例えば、オペレーティングシステム、ライブラリ、API、アプリケーション、アプレットなど）を考えると、いくつかの実施形態は、本明細書に記載のプログラム機能の特定の編成および割り当てに限定され得ないと理解されるべきである。
【００２５】
さらに、本明細書に記載の様々な動作が、任意のプログラムコードによって実行されるか、または任意のルーチン、ワークフロー、または同様のものにおいて実行されてよく、さらに、組み合され、分割され、再順序付けされ、省略され、逐次実行され、または並列に実行され、および/または他の技術によって補完されてよく、したがって、いくつかの実施形態は、本明細書に記載の動作の特定の順序に限定されないことが理解されるべきである。
【００２６】
分散化された音声入力処理環境
図2は、例えば、オンライン検索サービス54などのオンラインサービスと通信する音声対応デバイス52とともに使用するための、例示的な分散化された音声入力処理環境50を示す。以降で議論される実施形態では、例えば、音声対応デバイス52（音声対応電子デバイスとして本明細書では呼ばれることもある）は、セルラフォンまたはタブレットコンピュータなどのモバイルデバイスとして記載される。他の実施形態は、多種多様な他の音声対応デバイスを利用できるが、モバイルデバイスへの以降の参照は、単に以降の議論を簡潔にすることを目的とする。無数の他の種類の音声対応デバイスは、例えば、ラップトップコンピュータ、腕時計、ヘッドマウントデバイス、仮想または拡張現実デバイス、他のウェアラブルデバイス、オーディオ/ビデオシステム、ナビゲーションシステム、自動車用および他の車両用システムなどを含む、以降に記載の機能を使用できる。その上、そのような音声対応デバイスの多くは、リソース制約的であると考えられ、そのようなデバイスのメモリ容量および/または処理容量は、特に、オンラインサービス、または、事実上無制限のコンピューティングリソースを個々のタスクに提供できるクラウドベースのサービスの容量と比べると、技術的な、経済的な、または他の理由に基づいて制約され得る。そのようなデバイスのいくつかは、そのようなデバイスが、「オフライン」で動作でき、かつ、例えば、そのようなデバイスが通常の使用で時々一時的なネットワーク接続の停止を経験するかもしれないという予想に基づいて、少なくとも一部の時間にオンラインサービスに接続しないことがあるという範囲内で、オフラインデバイスと考えられ得る。
【００２７】
いくつかの実施形態では、オンライン検索サービス54は、例えば、複数のユーザからの大量の要求を扱うのに適したソフトウェアを実行するサーバファームまたは高性能なコンピュータのクラスタを使用してなど、クラウドインフラストラクチャを採用するクラウドベースのサービスとして実装され得る。説明される実施形態では、オンライン検索サービス54は、例えば、要求された情報を含むウェブサイトのリストを提供するために、要求された情報を見つけるために1つまたは複数のデータベースに問い合わせることができる。オンライン検索サービス54は、音声ベースの検索に限定されず、例えば、テキストベースの検索、画像ベースの検索など、他のタイプの検索も扱うことができる。他の実施形態では、オンラインシステムは、検索を扱うことが必須ではなく、アラームまたはリマインダを設定すること、リストを管理すること、電話、テキスト、電子メールなどを介して他のユーザと通信を開始すること、または、音声入力を介して開始され得る他のアクションを実行することなど、非検索アクションのために音声ベースの要求を扱うことに限定されてもよい。本開示の目的で、音声ベースの要求および音声入力の他の形態は、音声ベースのクエリが、検索を開始し、質問を提起し、命令を発行するなどを求めるか否かにかかわらず、音声ベースのクエリとして集合的に参照され得る。したがって、一般に、例えば、1つまたは複数の単語または語句を含む任意の音声入力は、説明される実施形態の文脈内で、音声ベースのクエリであると考えら得る。
【００２８】
図2の実施形態では、音声対応デバイス52によって受け取られた音声入力が、いくつかの実施形態では、検索アプリケーションであってもよい音声対応（または「app」）56によって処理される。他の実施形態では、音声入力は、音声対応デバイスのオペレーティングシステムまたはファームウェアの内部で扱われてもよい。示される実施形態におけるアプリケーション56は、音声アクションモジュール58、オンラインインターフェースモジュール60、およびレンダリング/同期モジュール62を含む。音声アクションモジュール58は、アプリケーションに向けた音声入力を受け取り、音声入力の分析および音声対応デバイス52のユーザのための1つまたは複数のアクションの実行を調整する。オンラインインターフェースモジュール60は、サービス54に音声入力を転送するとともにその応答を受け取ることを含め、オンライン検索サービス54とのインターフェースを提供する。レンダリング/同期モジュール62は、例えば、ビジュアルディスプレイ、発話オーディオ、または特定の音声対応デバイスに適した他のフィードバックインタフェースを介してなど、ユーザへのレスポンスのレンダリングを扱う。加えて、いくつかの実施形態では、モジュール62はまた、例えば、レスポンスまたはアクションがオンライン検索サービスにおいてユーザのために保持されたデータに影響を与えるか否か（例えば、音声入力が、クラウドベースのカレンダに保持されたアポイントメントの作成を要求する）など、オンライン検索サービス54との同期を扱う。
【００２９】
アプリケーション56は、例えば、ストリーミング音声-テキストモジュール64と、構文解析モジュール68、ダイアログマネージャモジュール70、およびアクションビルダモジュール72とを含むセマンティックプロセッサモジュール66とを含む、音声入力を扱うための、様々なミドルウェア、フレームワーク、オペレーティングシステム、および/またはファームウェアモジュールを利用する。
【００３０】
モジュール64は、例えば、デジタルオーディオデータの形式で、音声入力のオーディオ記録を受け取り、デジタルオーディオデータを1つまたは複数のテキストの単語または語句（本明細書ではトークンとも呼ばれる）に変換する。示される実施形態では、モジュール64は、ストリーミングモジュールでもあり、したがって、音声入力がトークンごとに、およびリアルタイム、またはほぼリアルタイムでテキストに変換され、その結果、トークンはユーザのスピーチと同時に、ゆえにユーザが完全な発話リクエストを表明する前に、モジュール64から出力されることができる。モジュール64は、1つまたは複数のローカルに格納されたオフライン音響および/または言語モデル74を利用し、言語におけるワードシーケンスとともに、オーディオ信号と言語における音声単位の間の関係を一緒にモデル化する。いくつかの実施形態では、単一モデル74が使用されてよく、一方、他の実施形態では、例えば、複数の言語、複数の話者などをサポートする複数モデルがサポートされてもよい。
【００３１】
モジュール64がスピーチをテキストに変換する一方で、モジュール66は、適切なレスポンスの目的で、または適切なレスポンスを考案するために、モジュール64によって出力されるテキストのセマンティックまたは意味を理解することを試みる。構文解析モジュール68は、例えば、テキストを特定のアクションにマッピングするとともに、例えば、そのようなアクションへの入力変数など、そのようなアクションの実行を強いる属性を特定するための1つまたは複数のオフライン文法モデル76を利用する。いくつかの実施形態では、単一モデル76が使用されてよく、一方、他の実施形態では、例えば、異なるアクションまたはアクション領域（すなわち、通信関連アクション、検索関連アクション、オーディオ/ビジュアル関連アクション、カレンダ関連アクション、デバイス制御関連アクションなどのコレクション）をサポートする複数モデルがサポートされてもよい。
【００３２】
例えば、オフライン文法モデル76は、どのような種類のリマインダを設定するかを指定するリマインダタイプパラメータ、リマインダに関連する1つまたは複数のアイテムを指定するアイテムパラメータ、およびリマインダをアクティブ化してユーザにリマインドする時間を指定する時間パラメータを有する「リマインダを設定してください」などのアクションをサポートしてもよい。構文解析モジュール68は、「私にリマインドしてください」「買うように」「パンを」「仕事の後に」などのトークンのシーケンスを受け取り、トークンのシーケンスを「ショッピングリマインダ」に設定されたリマインダタイプパラメータ、「パン」に設定されたアイテムパラメータ、および「午後5時」の時間パラメータとともにリマインダを設定するアクションにマッピングし、その日の午後5時に「パンを買う」ためのリマインダをユーザが受け取る。
【００３３】
構文解析モジュール68は、ユーザとのダイアログを管理するダイアログマネージャモジュール70と連携して動作してもよい。この文脈の範囲内で、ダイアログは2人の個人間の会話に類似した音声入力とレスポンスのセットを指す。従って、モジュール70は、ダイアログの「状態」を保持し、以前の音声入力においてユーザから取得される情報が後続の音声入力を扱うときに使用できるようにする。従って、例えば、ユーザが仮に「パンを買うように私にリマインドしてください」と言うと、レスポンスが生成され「OKです、いつリマインドしてほしいですか？」と言うであろう。その結果、「仕事の後に」という後続の音声入力が、リマインダを作成するために元の要求の後にまとめられる。
【００３４】
アクションビルダモジュール72は、構文解析モジュール68から構文解析されたテキストを受け取り、音声入力の解釈を表し、音声対応アプリケーション56のモジュール62によって処理される任意の関連パラメータとともにアクションを生成する。アクションビルダモジュール72は、構文解析されたテキストからアクションを作成するための様々なルールを組み込む1つまたは複数のオフラインアクションモデル78を利用してもよい。いくつかの実施形態では、例えば、アクションは、関数Fとして定義されてもよく、F(IT)＝Auであり、Tは入力解釈を表し、Uは出力アクションのタイプを表す。従って、Fは、例えば、f(it)=auなど互いにマッピングされた複数の入力ペア(T,U)を含み得、ここで、itはタイプｔの入力プロト変数、auはタイプuの出力モジュラ引数またはパラメータである。いくつかのパラメータが音声入力として直接受け取られてよく、一方、いくつかのパラメータは、例えば、ユーザの場所、人口統計学の情報に基づく、またはユーザに特定の他の情報に基づく他の方法で決定されてもよいことが理解されるであろう。例えば、ユーザが「食料品店でパンを買うことを私にリマインドしてください」と言うとすると、場所パラメータがユーザの現在の場所、職場と自宅の間のユーザの既知のルート、ユーザのいつもの食料品店などの追加情報なしでは、決定可能ではないことがある。
【００３５】
いくつかの実施形態では、モデル74、76、および78がより少ないモデルに組み合わせられる、または、モジュール64、68、70、および72の機能のように、さらなるモデルに分割されてもよいことが理解される。その上、モデル74〜78は、本明細書では、モデルが、音声対応デバイス52上にローカルに格納され、デバイス52がオンライン検索サービス54と通信しないとき利用可能なオフラインである限りにおいて、オフラインモデルとして参照される。
【００３６】
さらに、オンライン検索サービス54が、一般に、例えば、様々な音響/言語、文法および/またはアクションモデル82を利用する音声ベースクエリプロセッサ80を使用して、音声入力を扱うための補完機能を含む。いくつかの実施形態では、特に音声対応デバイス52がリソース制約デバイスであるとき、音声ベースクエリプロセッサ80およびそれによって使用されるモデル82が、音声対応デバイス52にローカルであるよりも、より複雑にかつよりコンピュータ的にリソース集約型の音声処理機能を実施してもよいことが理解される。しかしながら、他の実施形態では、補完オンライン機能は使用されなくてもよい。
【００３７】
いくつかの実施形態では、オンライン機能とオフライン機能の両方が、サポートされてよく、例えば、オンライン機能が、デバイスがオンラインサービスと通信中であるときはいつでも使用され、一方でオフライン機能が、接続性が存在しないときに使用される。他の実施形態では、異なるアクションおよびアクションドメインがオンライン機能とオフライン機能に割り当てられてよく、一方やはり他の実施形態では、オフライン機能が特定の音声入力を適切に扱うことに失敗した時だけオンライン機能が使用されてもよい。
【００３８】
図3には、例えば、音声入力を扱うための音声対応デバイス52によって実行され得る音声処理ルーチン100が示される。ルーチン100は、例えば、デジタルオーディオ信号の形態で、音声入力を受け取ることによってブロック102において開始する。この実施形態では、最初の試みとして、オンライン検索サービスに音声入力を転送する（ブロック104）。例えば、接続性の欠如またはオンライン検索サービスからレスポンスがないことにより成功しない場合、ブロック106は制御をブロック108に渡し、音声入力をテキストトークンに変換し（ブロック108、例えば図2のモジュール64を使用）、テキストトークンを構文解析して（ブロック110、例えば、図2のモジュール68を使用）、構文解析されたテキストからアクションをビルドする（ブロック112、例えば、図2のモジュール72を使用）。結果のアクションは、クライアントサイドのレンダリングおよび同期の実行に使用され（ブロック114、例えば、図2のモジュール62を使用）、音声入力の処理が完了する。
【００３９】
ブロック106に戻り、音声入力をオンライン検索サービスに転送する試みが成功した場合、ブロック106がブロック108〜112をバイパスし、制御をブロック114に渡し、クライアントサイドのレンダリングおよび同期を実行する。その後、音声入力の処理が完了する。他の実施形態では、例えば、音声入力がローカルで扱われ得るときに不必要なデータ通信を避けるために、上述したように、オフライン処理がオンライン処理の前に試みられてよいことが理解される。
【００４０】
音声対応電子デバイスにおける選択的オフライン対応の音声アクションのためのデータのローカル維持
音声対応電子デバイスは、音声ベースのユーザインターフェースを実施するためのオンライン機能およびオフライン機能上の異なる範囲を利用できる。いくつかのデバイスでは、例えば、オンラインサービスの使用を優先させて、音声入力を処理することに関連する多くの動作を実行するが、一つの理由としては、オンラインの音声ベースのクエリプロセッサが、一般に、比較的より大きい処理リソースを充てて、音声ベースのクエリを扱うことができるからである。オンラインサービスによって実行され得る機能の1つは、セマンティック処理であり、デジタルオーディオデータから生成されたテキスト要素（またはトークンとも呼ばれる）を処理して、音声ベースのクエリを介してユーザによって要求されているアクションを決定することを試みる。いくつかの例では、デジタルオーディオ信号は、オンラインサービスに提供されることさえ可能であり、その結果、セマンティック処理と音声-テキスト変換の両方がデバイスから遠隔で実行される。
【００４１】
そのようなデバイスとともに接続性の問題に対する可能性、ならびに接続性の問題が存在しないときでさえ体験し得る通常の遅延のため、いくつかの場合では、音声対応電子デバイス内に、音声-テキスト機能およびセマンティック処理機能の両方を含むローカルまたはオフライン処理機能を組み込むことが望ましいこともある。いくつかの例では、音声入力が、接続が存在するときはいつでもオンラインサービスに転送されてもよく、オンラインサービスの結果は、接続性が存在するときはいつでも使用されてもよく、主にバックアップの役割においてローカル処理をサービスさせて、ネットワーク接続性が存在しない場合のみ音声入力を扱う。いくつかの実施形態における音声対応電子デバイスは、音声入力から意味を導出することを試みる前に、完全な音声入力を受け取るまで待つのではなく複数のユーザが話すときに音声入力からアクションを動的にビルドし、その結果ユーザが完全に音声入力を話す前に少なくとも部分的にビルドされた音声アクションを生じるストリーミング機構を組み込むことができる。
【００４２】
以降に議論される実施形態では、音声対応電子デバイスにおける音声ベースのユーザインターフェースを実装するローカルまたはオフラインの機能は、オンライン接続性なしに処理できないある音声アクションの処理を延長する一方で、オンライン接続性なしに処理できるある音声アクションをローカルで扱うことを試みることによってオンラインサービスへの接続性と関係なく音声入力を扱う必要により、発生する問題に対処しようとすることができる。しかしながら、処理を延長することに関連して、そのようなアクションに関連するデータが、ローカルに維持されて、オンライン接続性が再確立されるときにそのようなアクションが自動的に完了されることができる。
【００４３】
特に、いくつかの実施形態では、本明細書では「選択的オフライン対応の音声アクション」と呼ぶ音声アクションの特定のカテゴリに関連するデータは、モバイルデバイスなどの音声対応電子デバイスがオフラインであり、接続性がそのデバイスのために再確立される際にそれらのアクションが自動的に完了されることが可能であるとき、ローカルに維持される。開示のコンテキスト内の「選択的オフライン対応の音声アクション」が、1つまたは複数の場合ではオフラインであるとともにオンライン接続性なしに、完了され得る音声アクションであると考えられ、一方で、1つまたは複数の他の例では、完了するためにオンラインサービスへの接続性が必要とされる。「選択的オフライン対応の音声アクション」という用語は、本明細書では、オンライン接続性を決して要求しない純粋なオフラインアクションと、常にオンライン接続性を必要とする純粋なオンラインアクションとから区別するために使用される。
【００４４】
選択的オフライン対応の音声アクションの例は、リマインドタイプアクション、通信タイプアクション、イベントタイプアクション、デバイス設定タイプアクション、媒体制御タイプアクション、ナビゲーションタイプアクション、などのアクションを含むがこれに限定されない。いくつかの実施形態におけるそのようなアクションは、例えば、アクションのための1つまたは複数のパラメータが、音声入力において提供されたデータおよび/または音声対応電子デバイス上でローカルに利用可能なデータに基づいて正確に解決できないなどの結果として、音声入力から生じる1つまたは複数の曖昧さに基づく選択的オフライン対応であってもよい。そのような場合、例えば、1つまたは複数のパラメータに関するデータ、および/または音声入力の曖昧さの解決に関するデータなど、文脈依存データがオンラインサービスから必要とされることがあり、そのようなアクションの完了はオンラインサービスへの1つまたは複数のクエリを必要とすることがある。いくつかの実施形態では、場所依存データがアクションに関連する1つまたは複数の場所依存パラメータのために取り出され得るように、クエリが音声対応電子デバイスの現在の場所を組み込むことができる。また、いくつかの実施形態では、クエリが、アクションに関連する少なくとも1つの未解決パラメータのための値を取り出し得る。
【００４５】
一例として、リマインダタイプアクションは、「明日の1時に私の母に電話するようにリマインダをセットしてください」という要求によるある場合にトリガされ、「ミルクを買うように私にリマインドしてください」という要求による別の場合でも同様である。前者の場合、この音声入力からリマインダを生成するのに必要なパラメータのすべてがオフラインかつどのオンライン支援もなく解決されてよく、リマインダの日時が、音声入力（デバイスに格納された本日の次の日の午後1時）から知られてよく、リマインダのテキストが音声入力（私の母に電話する）から直接生成されてもよく、電話の連絡番号がローカルデータ（ユーザと「母親」の関係をもつ個人のローカルに格納された連絡先）から生成されてもよい。
【００４６】
しかしながら、後者の場合、リマインダのテキストが音声入力（「ミルクを購入する」）から直接生成されてよいが、他のパラメータはすべての状況でローカルに確かめることができないことがある。例えば、いくつかの実施形態では、リクエストが、ユーザのデバイスが特定の場所から一定の距離内に位置するときはいつでも、ユーザに通知する場所ベースのリマインダとして処理されてもよい。しかしながら、該リマインダにセットされる場所は、決定されるためにオンライン支援を必要とし得る。例えば、場所は、例えば、デバイスの現在の場所の近く、ユーザの自宅の近く、デバイスの現在の場所とユーザの自宅の間の経路の近くなどの特定の食料品店の場所に設定されてよい。食料品店はまた、購入履歴またはユーザの他の人口統計情報、あるいはミルクについて現在セール中の食料品店に基づいて選択されてもよい。この情報の多くについて、オンラインデータおよび/または分析が使用されて場所を生成してもよく、結果的に音声対応電子デバイスが音声入力を受け取るとき現在オンラインでない場合に、要求された音声アクションの完了が完了できない。
【００４７】
いくつかの実施形態では、選択的オフライン対応の音声アクションは、データをオンラインサービスにアップロードする必要、および/またはオンラインサービスおよび/または1つまたは複数の他の音声対応電子デバイスに同期する必要に基づいて、選択的にオフライン対応であってもよい。例えば、オンラインまたはクラウドベースのカレンダサービスのためのイベントまたはリマインダの作成は、ローカルに作成されたイベントまたはリマインダの同期を含んでよく、その結果、いくつかの実施形態では、デバイスがオフラインのとき、イベントまたはリマインダの作成が、接続性が再確立されるまで十分に完了されるとみなされないことがある。
【００４８】
したがって、開示の文脈の範囲内では、アクションを「完了すること」は、音声入力を介してユーザによって要求されるそれらのステップおよび/または動作を実行することを指してもよい。アクションを完了することはまた、音声アクションオブジェクトの構築を完了すること、および音声アクションオブジェクトによって指定されるアクションを実行することを含んでよい。いくつかの実施形態では、アクションの完了は、単にローカルに発生してもよく（本明細書ではローカル完了と呼ぶ）、いくつかの場合、例えば、オンラインサービスにおいて、および/またはユーザが同じアカウントにリンクするいくつかのデバイスを有する場合など、ユーザの音声対応電子デバイスに関連する1つまたは複数の他のデバイスにおいて、アクションの完了は遠隔で発生してもよい（本明細書ではリモート完了と呼ぶ）。いくつかの場合、ローカル完了は、オンラインサービスと後で同期することによって同時に起こり得、例えば、リマインダまたはイベントがユーザのデバイス上でローカルに作成され、オンラインのカレンダアカウントに後で同期される。そのような場合、デバイス上のリマインダの作成は、後で同期が発生するにしてもアクションの完了を表すと考えられ得る。他の実施形態では、アクションを完了することが、音声アクションオブジェクトを完全にビルドすることと、さらなる対処のために音声対応電子デバイスにおける別のモジュールに完了した音声アクションオブジェクトを戻すこととを含むことができる。
【００４９】
図4を見ると、図4は図2の環境における選択的オフライン対応の音声アクションを処理することに使用するための音声処理ルーチン150の一つの例示的な実施形態を示す。この実施形態では、ブロック152において、音声入力の少なくとも一部（例えば、発話された質問または命令の少なくとも一部を表すデジタルオーディオ信号）が、音声対応電子デバイス（例えば、ワイヤレスネットワークを介してオンラインサービスに結合されたモバイルデバイス）によって受け取られる。音声入力の一部を受け取ることに応答して、音声入力の一部をオフラインまたはローカルに処理することが、音声対応電子デバイス上（例えば、モジュール64および66によって）で実行され、いくつかのまたはすべての音声入力に基づいて、音声アクションの少なくとも一部をビルドする。いくつかの実施形態では、オンライン処理は、オンラインサービスによって、例えば、デジタルオーディオデータ、またはローカル音声-テキスト処理によって生成されたテキストトークンをオンラインサービスに転送することによって並列処理のために開始されてもよい。
【００５０】
次に、ブロック156において、音声アクションが選択的オフライン対応の音声アクションであるかどうかについて判定され得る。いくつかの実施形態では、ブロック154はストリーミング機構を使用して音声アクションを動的にビルドすることを組み込むことができ、従って、ブロック156は、音声入力を完全に処理する前に実行されてよく、一方他の実施形態では、ブロック156は、音声入力のローカルな処理が完了するまで実行されなくともよいことが理解されよう。
【００５１】
上述のとおり、アクションが選択的オフライン対応か否かの判定が異なる方法でなされ得る。いくつかの実施形態では、例えば、そのような判定が、要求されたアクションのタイプに基づいてよい。他の実施形態では、そのような判定が、サブタイプに基づいて、そのようなアクションの1つまたは複数のパラメータに基づいて、あるいは別の方法によって行われてもよい。
【００５２】
アクションが選択的オフライン対応でない場合、ブロック156は制御をブロック158に渡し、アクションを完了するとともに、ルーチン150が完了する。例えば、アクションが、常にオフラインで完了され得る場合、アクションの完了は、デバイス上でアクションを完了するために必要な動作のリマインダを実行することを組み込むことができる。アクションが常にオンライン接続性を必要とする場合、アクションの完了は、オンラインサービスと通信することと、デバイス上でアクションを完了させるために必要な任意の他のローカルな動作を実行することとを組み込むことができる。
【００５３】
一方で、アクションが選択的オフライン対応であると判定される場合、ブロック156は制御をブロック160に渡し、音声対応電子デバイスが現在オフラインであるか否かを判定する。オフラインでなく、オンラインサービスへの接続性が存在する場合、アクションが選択的オフライン対応であるかどうかの問題は現実的な意味がなくなり、従って制御は、ブロック158に渡り、必要に応じてオンラインサービスにアクセスしてアクションを完了する。しかしながら、デバイスがオフラインの場合、ブロック160は制御をブロック162に渡し、選択的オフライン対応の音声アクションがオフラインで完了され得るかどうかを判定し、オフラインで完了され得る場合、制御をブロック158に渡し、必要に応じてアクションを完了する。
【００５４】
しかしながら、オフラインで完了され得ない場合、ブロック162は、制御をブロック164に渡し、デバイス上で音声アクションの完了を効果的に延長する。上述したとおり、選択的オフライン対応の音声アクションは、複数の方法、例えば、文脈依存データを取得する必要、オンラインサービスおよび/または別のデバイスと同期する必要などに基づいて、オフラインで完了することができないと判定され得る。結果的に、音声アクションがオフラインで完了され得る場合、ブロック162は制御をブロック158に渡し、必要に応じてアクションを完了する。
【００５５】
そのような状況は、ブロック164が実行されて、デバイスのオフライン状態に基づいて許可されるときに、音声アクションのリマインダをビルドする、例えば、デバイス上でローカルに解決され得る各パラメータに対するデータとともに、音声アクションオブジェクトをビルドする。オンラインサービスまたは他のデバイスとの同期がアクションの完了を妨げる動作のみであるという実施形態では、ブロック164は、完全な音声アクションオブジェクトをビルドすることさえでき、一度接続性がリストアされたときにリモート完了を単にオンラインサービスまたは別のデバイスによって実行されるままにして、効果的にローカル完了を実行することができる。
【００５６】
次に、ブロック166は、例えば、デバイス上にローカルにデータを格納することによって、ローカルに、音声アクションに関連するデータを維持する。いくつかの実施形態では、例えば、データが、それに関連するいくつかのまたはすべてのパラメータについてのデータを含め、音声アクションオブジェクトを含むことができる。ブロック168は、次にオンラインサービスへの接続、またはそうでなければリストアされるためのオンライン接続性を待つ。その後、ブロック170は、例えば、文脈依存データを取り出すことによって、音声アクションオブジェクトまたはその一部をオンラインサービスにアップロードすることによって、オンラインサービスまたは別のデバイスと同期することなどによって、オンラインサービスと通信し、ローカルに維持されたデータを使用して音声アクションを完了する。加えて、いくつかの実施形態では、追加のデータが、オンラインサービスに通信され得る。例えば、いくつかの実施形態では、選択的オフライン対応の音声アクションに関連する診断データは、ローカルに維持されるとともに、アクションを完了することに関連してオンラインサービスにアップロードされてもよい。ここで、音声対応電子デバイスがオンラインサービスに接続された後でローカルに維持されたデータを使用して選択的オフライン対応の音声アクションを完了することは、選択的オフライン対応の音声アクションに関連する診断データ、例えば、ナビゲーションログ、エラーログ、ユーザ体験向上データ、構文解析データ、音声-テキストデータなどのデータをアップロードすることを含む。ブロック170の完了時に、ルーチン150が完了する。
【００５７】
図5〜9を見ると、ストリーミング機構を使用した図2のデバイス50において音声入力を処理するための別の例示的実施形態が開示される。特に、音声アクションモジュール58、ストリーミング音声-テキストモジュール64、およびセマンティックプロセッサモジュール66によって実行可能な複数のルーチンが開示される。
【００５８】
例えば、図5は、音声入力の少なくとも一部を受け取ることに応答して、音声アクションモジュール58によって実行される例示的な音声入力処理ルーチン180を示す。ルーチン180は、オンライン処理を開始することによって、例えば、要求をオンラインサービス（例えば、オンライン検索サービス54の音声ベースのクエリプロセッサ80）に送り音声ユニットがデバイスから来たることを示すことによって、ブロック182にて開始する。オンライン接続性が存在しない場合、ブロック182はオンラインサービスが音声入力を通知する結果とならないことにご注意ください。
【００５９】
次に、ブロック184では、音声入力の第1の部分に関連するデジタルオーディオデータがオンラインサービス（接続されている場合）およびオフライン音声-テキストモジュール（ストリーミング音声-テキストモジュール64）の両方にストリーミングされる。ブロック186は、音声入力全体が処理されているかどうかを判定し、処理されていない場合、制御をブロック184に戻し、追加のデジタルオーディオデータをオンラインサービスおよびオフライン音声-テキストモジュールにストリーミングする。音声入力全体が処理されると、ルーチン180が完了する。
【００６０】
いくつかの実施形態では、オンライン処理が、オンラインサービスに音声入力の第1の部分についてのデジタルオーディオデータを送ることによって開始されてよく、それによってブロック182が省略され得ることが理解される。加えて、いくつかの実施形態では、デジタルオーディオデータがオンラインサービスおよびオフライン音声-テキストモジュールにストリーミングされる速さは異なり、いくつかの場合、デジタルオーディオデータは、音声入力が完全に受け取られるまで、オンラインサービスにストリームされなくてもよい。他の実施形態では、音声-テキスト変換が、デジタルオーディオデータをオンラインサービスにストリーミングするのではなく、音声-テキストモジュールによって出力されるテキストトークンがオンラインサービスにストリーミングされるように、ローカルに実行されてもよい。
【００６１】
次に、図6はストリーミング音声-テキストモジュール64によって実行される例示的なオフライン音声-テキストルーチン200を示す。上述したように、モジュール64は、音声アクションモジュール58から音声入力の一部を表すデジタルオーディオデータを受け取り、その結果、ルーチン200はモジュール58から音声入力を受け取ることを開始することによってブロック202において開始する。ブロック204は音声入力のデジタルオーディオデータにおいて認識されるテキストトークン（例えば、単語および/または語句）を生成および出力し、ブロック206は、例えば、さらなる音声入力のデジタルオーディオデータが未処理のままでないときに、音声入力全体が処理されたかどうかを判定する。さらなるデジタルオーディオデータが未処理のままであると、ブロック206は制御をブロック204に戻して、追加のテキストトークンを生成し、音声入力全体が処理されたときに、ブロック206は制御をブロック208に渡し、音声入力の終了を、例えば、セマンティックプロセッサモジュール66に報告する。他の実施形態では、音声入力の終了は、音声アクションモジュール58またはデバイスの他の機能によって、代わりに報告されてもよい。その後、ルーチン200は完了する。
【００６２】
次に、図7はストリーミング音声-テキストモジュール64からテキストトークンを受け取ることに応答して、セマンティックプロセッサモジュール66によって実行される例示的な処理テキストトークンルーチン210を示す。ルーチン210は、モジュール66が音声アクションを現在ビルドしているかどうかを判定することによって、ブロック212において開始する。ビルドしていない場合、制御はブロック214に渡り、新しいアクションオブジェクトを初期化する。新しいアクションオブジェクトがブロック214において初期化された後、またはブロック212が、アクションがすでに現在ビルドの処理中であると判定する場合、ブロック216は、アクションに関連するテキストトークンのセットにテキストトークンを加える。ブロック218がアクションのためにテキストトークンを構文解析し、ブロック220は、構文解析したテキストからアクションをビルドすることを試みる。上述のように、示された実施形態では、現在セマンティックプロセッサモジュールに利用可能である情報に基づいてアクションを漸進的におよび動的にビルドすることを試みるストリーミング機構が、採用されてよい。その結果、いくつかの実施形態ではブロック218および220が、追加のテキストトークンがセマンティックプロセッサモジュールに提供されるときに、アクションをビルド、修正、改良、訂正などすることができる。さらに、いくつかの実施形態では、ブロック218および220は、何のアクションが要求されているか判定し、アクションのための1つまたは複数のパラメータの値を決定し、ならびに、アクションを完了するためにいつ追加のデータが必要とされるか判定さえしてよい。例えば、アクションが場所に部分的に基づく場合、レストランの予約の要求の場合など、ブロック218および220は、デバイスの現在の場所に近いレストランのリストおよびそれらの利用可能性がアクションを完了するために必要であることを判定することができる。
【００６３】
次に、ブロック222は、任意のオンライン情報がアクションを完了するために必要であるかどうかを判定する（例えば、ブロック218および220においてアクションの上述の動的なビルドを行うことに基づいて）。必要でない場合、制御はブロック224に渡り、デバイス上でクライアントサイドのレンダリングを実行する。例えば、クライアントサイドのレンダリングは、処理されたテキストトークンから生じた部分的なビルドアクションへの更新、または特定のデバイスに適し得るような他のオーディオおよび/またはビジュアル更新に基づいて、以前に表示されたテキストを変更して、デバイスのディスプレイ上にユーザによって発話されたテキストを表示することを含み得る。その後、そのテキストトークンのためのルーチン210は、完了する。
【００６４】
ブロック222が追加のオンライン情報が必要であると判定する場合、制御は、代わりにブロック226に渡り、追加の情報を要求するために、オンラインサービスへクエリを送ることを試みる。その後、制御はブロック224に渡り、クライアントサイドのレンダリングを実行し、ルーチン210が完了する。
【００６５】
次に、図8は、入力の終了の指示を受け取ることに応答して（例えば、図6のブロック208において生成されるとき）セマンティックプロセッサモジュール66によって実行されてもよい入力の終了（end of input）を受け取るルーチン230の例を示す。ルーチン230は、セマンティックプロセッサが音声入力のためのすべてのテキストトークンを処理したことを示す、ルーチン210による処理が完了するためにすべてのテキストトークンを待つ（必要に応じて）ことによって、ブロック232において始まる。ブロック234は、その後、アクションが選択的オフライン対応の音声アクションであるかどうかを判定する。
【００６６】
アクションが選択的オフライン対応でない場合、ブロック234は、制御をブロック236に渡し、アクションを完了するともに、ルーチン230が完了する。一方で、アクションが選択的オフライン対応であると判定される場合、ブロック234はブロック238に制御を渡し、音声対応電子デバイスが現在オフラインであるかどうかを判定する。現在オフラインでなく、かつオンラインサービスへの接続性が存在する場合、アクションが選択的オフライン対応であるかどうかの問題は現実的な意味がなくなり、従って制御は、ブロック236に渡り、必要に応じてオンラインサービスにアクセスしてアクションを完了する。しかしながら、デバイスがオフラインの場合、ブロック238は制御をブロック240に渡し、選択的オフライン対応の音声アクションがオフラインで完了され得るかどうかを判定し、オフラインで完了され得る場合、制御をブロック236に渡し、必要に応じてアクションを完了する。
【００６７】
しかしながら、オフラインで完了され得ない場合、ブロック240は、デバイス上で音声アクションの完了を効果的に延長する。特に、ブロック242は、例えば、デバイス上にローカルにデータを格納することによって、ローカルに、音声アクションに関連するデータを維持する。いくつかの実施形態では、例えば、データが、それに関連するいくつかのまたはすべてのパラメータについてのデータを含む、音声アクションオブジェクトを含むことができる。ブロック244はその後、接続性が再確立されるときにアクションが完了されることを示すユーザへの通知を、例えば、いくつかの実施形態においてはカードを生成することによってレンダリングしてもよい。一例として、音声アクションがリマインダを作成するものである場合、「あなたが現在オフラインであり、ミルクを買うリマインダを作成するためのあなたの要求は、接続性がリストアされたときに実行される」などの通知が、デバイス50上に表示され得る。ブロック244が完了すると、ルーチン230が完了する。
【００６８】
次に、図9は、データがローカルに維持された任意のペンディング音声アクションを処理するためのセマンティックプロセッサモジュール66または音声対応電子デバイスの別のモジュールによって実行され得るペンディングアクション処理ルーチン250を示す。ルーチン250が、例えば、デバイス50がオンラインサービスへの接続を確立するときはいつでも、実行されてよく、その結果、ルーチン250は、任意のペンディングの選択的オンライン可能アクションが存在するかどうかを判定することによってブロック252において始まる。存在しない場合、ルーチン250は終了するが、任意のペンディングアクションが存在する場合、制御はブロック254に渡り、各ペンディングアクションを処理するためのFORループを開始する。
【００６９】
各そのようなアクションに対して、ブロック254は制御をブロック256に渡し、任意の文脈依存データが、アクションを完了するためにオンラインサービスから必要か否かを判定する。必要である場合、制御はブロック258に渡り、オンラインサービスに問い合わせて、要求された文脈依存データを受け取る。その後制御は、ブロック260に渡り、ローカルにアクションを完了（すなわち、ローカル完了を実行）するとともに、アクションが完了したことをユーザに（例えばカードを使用して）通知するようにクライアントサイドのレンダリングを実行する。必要とされない場合、ブロック258はバイパスされ、ブロック256は制御を直接ブロック260に渡す。例示的な通知は、「接続性がリストアされましたので、ミルクを買うというあなたのリマインダが今作成されました」であってもよい。
【００７０】
ブロック260は、その後、制御をブロック262に渡し、オンラインおよび/またはデバイス同期が必要かどうか、すなわち、リモート完了がオンラインサービスまたはユーザの他のデバイスによって実行されるべきかどうかを判定する。必要である場合、制御はブロック264に渡り、同期を実行する。制御はその後ブロック266に渡り、アクションに関連する診断データをアップロードする。必要でない場合、ブロック264がバイパスされ、ブロック262がブロック266に直接制御を渡す。
【００７１】
いくつかの実施形態において任意選択であるブロック266は、ナビゲーションログ、エラーログ、ユーザ体験向上データ、アクションオブジェクトおよびアクション関連クエリなどのアクション関連データ、トレーニングデータ、構文解析データ、音声-テキストデータなどのデータをアップロードしてよい。ブロック266が完了すると、制御はブロック254に戻り、追加のペンディングアクションを処理し、一度すべてのアクションが処理されると、ルーチン250が完了する。
【００７２】
複数の実施形態が本明細書に記載され説明されたが、機能を実行するため、および/または結果および/または本明細書に記載の1つまたは複数の利点を得るための様々な他の手段および/または構造が利用されてよく、そのような変形および/または変更の各々が、本明細書に記載の実施形態の範囲内であるとみなされる。より一般的に、本明細書に記載のすべてのパラメータ、大きさ、材料、および構成が、例であることを意味し、実際のパラメータ、大きさ、材料、および/または構成は、具体的なアプリケーション、または、教示が使用されるアプリケーションによるであろう。当業者は、日常的な実験を使用して、本明細書に記載の具体的な実施形態に多くの均等物を認めるか、または解明できるであろう。従って、前述の実施形態は単なる例示として提示され、添付の特許請求の範囲およびそれと均等の範囲内で、具体的に記載され請求される以外の実施形態が実施され得ることが理解されるべきである。本開示の実施形態は、本明細書に記載される個々の特徴、システム、物品、材料、キット、および/または方法を対象とする。加えて、そのような特徴、システム、物品、材料、キット、および/または方法の2つ以上の任意の組み合わせは、そのような特徴、システム、物品、材料、キット、および/または方法が互いに矛盾しない場合、本開示の範囲内に含まれる。
【符号の説明】
【００７３】
10  コンピュータシステム
12  プロセッサ
14  バスサブシステム
16  ストレージサブシステム
18  メモリサブシステム
20  ファイルストレージサブシステム
22  ユーザインターフェース入力デバイス
24  ユーザインターフェース出力デバイス
26  ネットワークインターフェースサブシステム
28  主ランダムアクセスメモリ
30  読み取り専用メモリ
52  音声対応デバイス
54  オンライン検索サービス
56  アプリケーション
58  音声アクションモジュール
60  オンラインインターフェースモジュール
62  レンダリング/同期モジュール
64  ストリーミング音声-テキストモジュール
66  セマンティックプロセッサモジュール
68  構文解析モジュール
70  ダイアログマネージャモジュール
72  アクションビルダモジュール
74  オフライン音響および/または言語モデル
76  オフライン文法モデル
78  オフラインアクションモデル
80  クエリプロセッサ
82  アクションモデル
【図１】
0006553736.tif 000002
【図２】
0006553736.tif 000003
【図３】
0006553736.tif 000004
【図４】
0006553736.tif 000005
【図５】
0006553736.tif 000006
【図６】
0006553736.tif 000007
【図７】
0006553736.tif 000008
【図８】
0006553736.tif 000009
【図９】
0006553736.tif 000010