(57)【特許請求の範囲】
【請求項１】
イベントを検出するステップと、
前記イベントを検出することに応じて、第1のユーザデバイス上でユーザとの音声アシスタントのダイアログをプロアクティブに開始するステップと、
前記ユーザとのダイアログを開始することに応じて、前記第1のユーザデバイスで、第1のアクションを要求する前記ダイアログに関連する第1の音声入力を前記ユーザから受信するステップと、
前記第1の音声入力上で自動音声認識を実行するステップと、
前記第1のユーザデバイスで、前記ユーザの第1のコンテキストを決定するステップと、
ユーザの意図を述べている第1のタプルを決定するステップであって、前記第1のタプルは前記第1のアクションおよび前記第1のアクションに関連するアクターを含み、前記第1のタプルは前記第1の音声入力の自動音声認識に基づき自然言語理解を実行することによって決定される、ステップと、
前記第1のタプルに基づき前記第1のユーザデバイス上で前記第1のアクションを開始するステップと、
前記第1のアクションを開始した後に、前記第1のアクションに無関係の第2のアクションを要求する第2の音声入力を前記ユーザから受信するステップと、
前記第2のアクションを開始するステップと、
前記第2のアクションを開始した後に、前記第1のユーザデバイスとは異なる第2のユーザデバイスで、前記ダイアログを継続しかつ前記第1のアクションに関係する第3のアクションを要求する第3の音声入力を前記ユーザから受信するステップであって、前記第3の音声入力には第3のタプルを完成させるための情報が欠落していて、前記第3のタプルは前記第3のアクションを開始するためのものである、ステップと、
前記第1のコンテキストを使用して欠落情報を取得して、前記第3のアクションに関連する第3のタプルを完成させるステップと、
前記第3のタプルに基づき前記第2のユーザデバイス上で前記第3のアクションを開始するステップと
を含むコンピュータによって実行される方法。
【請求項２】
前記イベントは、内部イベントである請求項1に記載のコンピュータによって実行される方法。
【請求項３】
ユーザ入力なしで前記音声アシスタントを開始するステップと、前記音声アシスタントの開始後に前記ユーザから前記第1の音声入力を受信するステップとを含む請求項1に記載のコンピュータによって実行される方法。
【請求項４】
前記第1のコンテキストは、コンテキスト履歴、ダイアログ履歴、ユーザプロファイル、ユーザ履歴、ロケーション、および現在のコンテキストドメインのうちの1つまたは複数を含む請求項1に記載のコンピュータによって実行される方法。
【請求項５】
前記欠落情報は、前記第3のアクション、前記第3のアクションに関連するアクター、および前記第3のアクションに関連するエンティティのうちの1つまたは複数である請求項1に記載のコンピュータによって実行される方法。
【請求項６】
前記第1のコンテキストおよび前記第1の音声入力には前記第1のアクションを開始するために使用される第1の情報が欠落している、と決定するステップと、
どのような情報が欠落している第1の情報であるかを決定するステップと、
前記欠落している第1の情報を供給する音声入力を行うよう前記ユーザに促すステップとを含む請求項1に記載のコンピュータによって実行される方法。
【請求項７】
前記第1のアクションを開始するために使用される第1の情報が、前記第1の音声入力から取得できないと決定するステップと、
どのような情報が欠落している第1の情報であるかを決定するステップと、
前記第1の音声入力から取得できない前記欠落している第1の情報を供給する音声入力を行うよう前記ユーザに促すステップとをさらに含む請求項1に記載のコンピュータによって実行される方法。
【請求項８】
前記第1のアクションを開始するために使用される第1の情報が、前記第1の音声入力から取得できないと決定するステップと、
どのような情報が前記欠落している第1の情報であるかを決定するステップと、
前記ユーザが選択できるように、複数のオプションを提供するステップであって、オプションは前記第1のアクションを完了するための潜在的情報を供給する、ステップと、
前記複数のオプションから第1のオプションを選択する音声入力を受信するステップとをさらに含む請求項1に記載のコンピュータによって実行される方法。
【請求項９】
前記第1のアクションに無関係の第2のアクションは第2のコンテキストに関連していて、前記第1のアクションおよび第3のアクションは前記第1のコンテキストに関連している請求項1に記載のコンピュータによって実行される方法。
【請求項１０】
1つまたは複数のプロセッサと、
命令を記憶するメモリとを備えるシステムであって、前記命令は、
前記1つまたは複数のプロセッサによって実行されたときに、前記システムに
イベントを検出するステップと、
前記イベントを検出することに応じて、第1のユーザデバイス上でユーザとの音声アシスタントのダイアログをプロアクティブに開始するステップと、
前記ユーザとのダイアログを開始することに応じて、前記第1のユーザデバイスで、第1のアクションを要求する前記ダイアログに関連する第1の音声入力を前記ユーザから受信するステップと、
前記第1の音声入力上で自動音声認識を実行するステップと、
前記第1のユーザデバイスで、前記ユーザの第1のコンテキストを決定するステップと、
ユーザの意図を述べている第1のタプルを決定するステップであって、前記第1のタプルは前記第1のアクションおよび前記第1のアクションに関連するアクターを含み、前記第1のタプルは前記第1の音声入力の自動音声認識に基づき自然言語理解を実行することによって決定される、ステップと、
前記第1のタプルに基づき前記第1のユーザデバイス上で前記第1のアクションを開始するステップと、
前記第1のアクションを開始した後に、前記第1のアクションに無関係の第2のアクションを要求する第2の音声入力を前記ユーザから受信するステップと、
前記第2のアクションを開始するステップと、
前記第2のアクションを開始した後に、前記第1のユーザデバイスとは異なる第2のユーザデバイスで、前記ダイアログを継続しかつ前記第1のアクションに関係する第3のアクションを要求する第3の音声入力を前記ユーザから受信するステップであって、前記第3の音声入力には第3のタプルを完成させるための情報が欠落していて、前記第3のタプルは前記第3のアクションを開始するためのものである、ステップと、
前記第1のコンテキストを使用して欠落情報を取得して、前記第3のアクションに関連する第3のタプルを完成させるステップと、
前記第3のタプルに基づき前記第2のユーザデバイス上で前記第3のアクションを開始するステップと
を含むステップを実行させる、システム。
【請求項１１】
前記イベントは、内部イベントである請求項10に記載のシステム。
【請求項１２】
前記1つまたは複数のプロセッサによって実行されたときに、前記システムに
ユーザ入力なしで前記音声アシスタントを開始するステップと、前記音声アシスタントの開始後に前記ユーザから前記第1の音声入力を受信するステップとを実行させる命令を備える請求項10に記載のシステム。
【請求項１３】
前記第1のコンテキストは、コンテキスト履歴、ダイアログ履歴、ユーザプロファイル、ユーザ履歴、ロケーション、および現在のコンテキストドメインのうちの1つまたは複数を含む請求項10に記載のシステム。
【請求項１４】
前記欠落情報は、前記第3のアクション、前記第3のアクションに関連するアクター、および前記第3のアクションに関連するエンティティのうちの1つまたは複数である請求項10に記載のシステム。
【請求項１５】
前記1つまたは複数のプロセッサによって実行されたときに、前記システムに
前記第1のコンテキストおよび前記第1の音声入力には前記第1のアクションを開始するために使用される第1の情報が欠落している、と決定するステップと、
どのような情報が欠落している第1の情報であるかを決定するステップと、
前記欠落している第1の情報を供給する音声入力を行うよう前記ユーザに促すステップとを実行させる命令を備える請求項10に記載のシステム。
【請求項１６】
前記1つまたは複数のプロセッサによって実行されたときに、前記システムに
前記第1のアクションを開始するために使用される第1の情報が、前記第1の音声入力から取得できないと決定するステップと、
どのような情報が欠落している第1の情報であるかを決定するステップと、
前記第1の音声入力から取得できない前記欠落している第1の情報を供給する音声入力を行うよう前記ユーザに促すステップとを実行させる命令を備える請求項10に記載のシステム。
【請求項１７】
前記1つまたは複数のプロセッサによって実行されたときに、前記システムに
前記第1のアクションを開始するために使用される第1の情報が、前記第1の音声入力から取得できないと決定するステップと、
どのような情報が前記欠落している第1の情報であるかを決定するステップと、
前記ユーザが選択できるように、複数のオプションを提供するステップであって、オプションは前記第1のアクションを完了するための潜在的情報を供給する、ステップと、
前記複数のオプションから第1のオプションを選択する音声入力を受信するステップとを実行させる命令を備える請求項10に記載のシステム。
【請求項１８】
前記第1のアクションに無関係の第2のアクションは第2のコンテキストに関連していて、前記第1のアクションおよび第3のアクションは前記第1のコンテキストに関連している請求項10に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声および接続プラットフォームに関する。
【背景技術】
【０００２】
現在の音声アシスタントは、AppleのSiri、GoogleのGoogle Now、およびMicrosoftのCortanaを含む。そのような現行システムの第1の問題は、ユーザが、人間と会話するようにパーソナルアシスタントと対話することができないという点である。そのような現行システムの第2の問題は、ユーザの言うことが、理解されないもしくは誤解されることがあまりにも多すぎる点、または現行システムが既定の動作ですぐにウェブ検索に向かう点である。そのような現行システムの第3の問題は、システムがユーザを支援することにプロアクティブでないという点である。第4の問題は、そのような現行システムが、これらが対話するアプリケーションに関して制限されている、たとえば、そのような音声アシスタントが、限られた数のアプリケーションとしか対話し得ないという点である。第5の問題は、そのような現行システムがユーザのコンテキストを利用していないという点である。第6の問題は、そのような現行システムが他の音声アシスタントと一体化しないという点である。
【発明の概要】
【課題を解決するための手段】
【０００３】
一実施形態において、この音声および接続エンジンは、既存の音声アシスタントの前述の欠点のうちの1つまたは複数を訂正した音声アシスタントを実現する。一実施形態において、この音声および接続エンジンは、自動音声認識コンポーネント、自然言語理解コンポーネント、およびテキスト読み上げコンポーネントのうちの1つまたは複数への不可知論的およびモジュール的なアプローチを使用しており、それにより、それらのコンポーネントへの頻繁な更新を可能にし、さらには異なる言語へのシステムの適応を簡素化する。一実施形態において、この音声および接続エンジンは、ユーザとのより自然な、人間のようなダイアログを提供し、またユーザの要求に対する理解の正確さを向上させ、要求を受け取ってから要求に基づき実行するまでの時間の長さを短縮するためにコンテキストを管理する。一実施形態において、この音声および接続エンジンは、既定の動作で即座にウェブ検索に向かうのではなくユーザの意図する要求をくみ取るワークアラウンド(work around)を提供する。一実施形態において、この音声および接続エンジンは、モジュールを利用してユーザデバイスの様々なアプリケーション(たとえば、電話、統合メッセンジャ、ニュース、メディア、天気、ウェブ検索用ブラウザなど)と対話し、モジュールはアプリケーションが追加され更新されるときに時間の経過とともに個別に追加または修正され得る。一実施形態において、アプリケーションと対話するためのモジュールは、ユーザコマンドにおいて一定レベルの標準化をもたらす。たとえば、ユーザは、口頭による要求「send a message」を使用して、Facebook、電子メール、またはtwitterを介してメッセージを送信し得る。
【０００４】
一実施形態において、方法は、第1のデバイスで、第1のアクションを要求する第1の音声入力をユーザから受信するステップと、第1の音声入力上で自動音声認識を実行するステップと、ユーザのコンテキストを取得するステップと、第1の音声入力の音声認識に基づき自然言語理解を実行するステップと、ユーザのコンテキストおよび自然言語理解に基づき第1のアクションを行うステップとを含む。
【０００５】
他の態様は、これらのおよび他の革新的な特徴に対する対応する方法、システム、装置、およびコンピュータプログラム製品を含む。これらの態様および他の実装はそれぞれ、以下の特徴のうちの1つまたは複数を適宜含み得る。たとえば、オペレーションは、第1の音声入力が内部イベントに応答して受信される、というオペレーションをさらに含む。たとえば、オペレーションは、ユーザ入力なしで音声アシスタントを開始するステップと、音声アシスタントの開始後にユーザから第1の音声入力を受信するステップとをさらに含む。たとえば、オペレーションは、コンテキストがコンテキスト履歴、ダイアログ履歴、ユーザプロファイル、ユーザ履歴、ロケーション、および現在のコンテキストドメインのうちの1つまたは複数を含むステップをさらに含む。たとえば、オペレーションは、アクションを実行した後に、第1のアクションに無関係の第2のアクションを要求する第2の音声入力をユーザから受信するステップと、第2のアクションを実行するステップと、第1のアクションに関係する第3のアクションを要求する第3の音声入力をユーザから受信するステップであって、第3の音声入力には第3のアクションを実行するために使用される情報が欠落している、ステップと、コンテキストを使用して欠落情報を取得するステップと、第3のアクションを実行するステップとをさらに含む。たとえば、オペレーションは、欠落情報は、アクション、アクター、およびエンティティのうちの1つまたは複数であるステップをさらに含む。たとえば、オペレーションは、第2のデバイスで、第1のアクションに関係する第2のアクションを要求する第2の音声入力をユーザから受信するステップであって、第2の音声入力には第2のアクションを実行するために使用される情報が欠落している、ステップと、コンテキストを使用して欠落情報を取得するステップと、コンテキストに基づき第2のアクションを実行するステップとをさらに含む。たとえば、オペレーションは、コンテキストおよび第1の音声入力には第1のアクションを実行するために使用される情報が欠落している、と決定するステップと、どのような情報が欠落情報であるかを決定するステップと、欠落情報を供給する第2の音声入力を行うようユーザに促すステップとをさらに含む。たとえば、オペレーションは、第1のアクションを実行するために使用される情報が、第1の音声入力から取得できないと決定するステップと、どのような情報が欠落情報であるかを決定するステップと、第1の音声入力から取得できない情報を供給する第2の音声入力を行うようユーザに促すステップとをさらに含む。たとえば、オペレーションは、第1のアクションを実行するために使用される情報が、第1の音声入力から取得できないと決定するステップと、どのような情報が、第1のアクションを実行するために使用される情報から欠落しているかを決定するステップと、ユーザが選択できるように、複数のオプションを提供するステップであって、オプションは第1のアクションを完了するための潜在的情報を供給する、ステップと、複数のオプションから第1のオプションを選択する第2の音声入力を受信するステップとをさらに含む。
【０００６】
本明細書で説明されている特徴および利点は、包括的ではなく、多くの追加の特徴および利点は、図および説明に照らして当業者には明白であろう。さらに、本明細書で使用されている用語は、主に、読みやすさおよび教育的な目的で選択されており、本発明の主題の範囲を制限するために選択されているのではないことに留意されたい。
【０００７】
本開示は、例を用いて、限定することなく、同様の参照番号は類似の要素を指し示すために使用されている添付図面の図に示されている。
【図面の簡単な説明】
【０００８】
【図１】一実施形態による音声および接続プラットフォームのための例示的なシステムを示すブロック図である。
【図２】一実施形態による例示的なコンピューティングデバイスを示すブロック図である。
【図３】一実施形態によるクライアントサイドの音声および接続エンジンの一例を示すブロック図である。
【図４】一実施形態によるサーバサイドの音声および接続エンジンの一例を示すブロック図である。
【図５】いくつかの実施形態による音声および接続プラットフォームを使用して要求を受信し、処理するための例示的な方法のフローチャートである。
【図６】いくつかの実施形態によるユーザの意図した要求を決定するために追加の情報を取得するための例示的な方法のフローチャートである。
【図７】別の実施形態による音声および接続プラットフォームを使用して要求を受信し、処理するための例示的な方法の図である。
【図８】一実施形態による音声および接続プラットフォームにおけるコンテキストを管理する一例を示すブロック図である。
【発明を実施するための形態】
【０００９】
図1は、一実施形態による音声および接続プラットフォームのための例示的なシステム100を示すブロック図である。例示されているシステム100は、クライアントデバイス106a…106n、自動音声認識(ASR)サーバ110、音声および接続サーバ122、およびテキスト読み上げ(TTS)サーバ116を備え、これらは互いに対話できるようにネットワーク102を介して通信可能に結合される。たとえば、クライアントデバイス106a…106nは、信号線104a…104nを介してネットワーク102にそれぞれ結合され、線110a…110nによって例示されているユーザ112a…112n(個別におよび総称的にユーザ112とも称される)によってアクセスされ得る。自動音声認識サーバ110は、信号線108を介してネットワーク102に結合され得る。音声および接続サーバ122は、信号線120を介してネットワーク102に結合され得る。テキスト読み上げサーバ116は、信号線114を介してネットワーク102に結合され得る。参照番号において「a」および「n」という文字を使用しているが、これは、その文字を有する任意の数の要素がシステム100に含まれ得ることを示すものとしてよい。
【００１０】
ネットワーク102は、任意の数のネットワークおよび/またはネットワークタイプを含み得る。たとえば、ネットワーク102は、限定はしないが、1つまたは複数のローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)(たとえば、インターネット)、仮想プライベートネットワーク(VPN)、モバイルネットワーク(たとえば、セルラーネットワーク)、ワイヤレスワイドエリアネットワーク(WWAN)、Wi-Fiネットワーク、WiMAX(登録商標)ネットワーク、Bluetooth(登録商標)通信ネットワーク、ピアツーピアネットワーク、複数のデバイスが通信する際の他の相互接続されたデータ経路、これらの様々な組合せ、などを含み得る。ネットワーク102によって送信されるデータは、ネットワーク102に結合されている指定されたコンピューティングデバイスにルーティングされているパケット化されたデータ(たとえば、インターネットプロトコル(IP)データパケット)を含むものとしてよい。いくつかの実装において、ネットワーク102は、システム100のコンピューティングデバイスを相互接続する有線およびワイヤレス(たとえば、地上波または衛星ベースのトランシーバ)のネットワーキングソフトウェアおよび/またはハードウェアの組合せを含み得る。たとえば、ネットワーク102は、データパケットのヘッダに含まれる情報に基づきデータパケットを様々なコンピューティングデバイスにルーティングするパケット交換デバイスを備えるものとしてよい。
【００１１】
ネットワーク102上で交換されるデータは、ハイパーテキスト・マークアップ言語(HTML)、拡張マークアップ言語(XML)、JavaScript(登録商標) Object Notation(JSON)、Comma Separated Values(CSV)、Java(登録商標) DataBase Connectivity(JDBC)、Open DataBase Connectivity(ODBC)などを含む技術および/またはフォーマットを使用して表現され得る。それに加えて、従来の暗号化技術、たとえば、リンクの全部または一部は、セキュアソケット層(SSL)、セキュアHTTP(HTTPS)、および/または仮想プライベートネットワーク(VPN)、またはインターネットプロトコルセキュリティ(IPsec)などを使用して暗号化され得る。別の実施形態において、エンティティは、上で説明されているものの代わりに、またはそれに加えて、カスタムおよび/または専用データ通信技術を使用することができる。実施形態に応じて、ネットワーク102は、他のネットワークへのリンクも含み得る。それに加えて、ネットワーク102上で交換されるデータは圧縮され得る。
【００１２】
クライアントデバイス106a…106n(個別におよび総称的にクライアントデバイス106とも称される)は、データ処理および通信機能を有するコンピューティングデバイスである。図1は、2つのクライアントデバイス106を例示しているが、本明細書は、1つまたは複数のクライアントデバイス106を有する任意のシステムアーキテクチャに適用される。いくつかの実施形態において、クライアントデバイス106は、プロセッサ(たとえば、仮想的、物理的などの)、メモリ、電源、ネットワークインターフェース、および/またはディスプレイ、グラフィックプロセッサ、ワイヤレストランシーバ、キーボード、スピーカ、カメラ、センサ、ファームウェア、オペレーティングシステム、ドライバ、様々な物理的接続インターフェース(たとえば、USB、HDMI(登録商標)など)の他のソフトウェアおよび/またはハードウェアコンポーネントを含み得る。クライアントデバイス106a…106nは、ワイヤレスおよび/または有線接続を使用してネットワーク102を介して互いに、およびシステム100の他のエンティティに結合し、通信することができる。
【００１３】
クライアントデバイス106の例は、限定はしないが、自動車、ロボット、携帯電話(たとえば、フィーチャーフォン、スマートフォンなど)、タブレット、ラップトップ、デスクトップ、ネットブック、サーバアプライアンス、サーバ、仮想マシン、TV、セットトップボックス、メディアストリーミングデバイス、ポータブルメディアプレーヤ、ナビゲーションデバイス、携帯情報端末などを含み得る。2つ以上のクライアントデバイス106が図1に示されているが、システム100は、任意の数のクライアントデバイス106を備え得る。それに加えて、クライアントデバイス106a…106nは、同じまたは異なるタイプのコンピューティングデバイスであってもよい。たとえば、一実施形態において、クライアントデバイス106aは、自動車であり、クライアントデバイス106nは、携帯電話である。
【００１４】
図示されている実装において、クライアントデバイス106aは、クライアントサイドの音声および接続エンジン109a、自動音声認識エンジン111a、およびテキスト読み上げエンジン119aのインスタンスを含む。図示されていないが、クライアントデバイス106nは、クライアントサイドの音声および接続エンジン109n、自動音声認識エンジン111n、およびテキスト読み上げエンジン119nのそのデバイス自体のインスタンスを含み得る。一実施形態において、クライアントサイドの音声および接続エンジン109、自動音声認識エンジン111、およびテキスト読み上げエンジン119のインスタンスが、クライアントデバイス106のメモリ内に記憶可能であり、クライアントデバイス106のプロセッサによって実行可能であるものとしてよい。
【００１５】
テキスト読み上げ(TTS)サーバ116、自動音声認識(ASR)サーバ110、ならびに音声および接続サーバ122は、データ処理機能、記憶機能、および通信機能を有する1つまたは複数のコンピューティングデバイスを備え得る。たとえば、これらのエンティティ110、116、122は、1つまたは複数のハードウェアサーバ、サーバアレイ、記憶装置デバイス、システムなどを備えるものとしてよく、および/または集中もしくは分散/クラウドベースであってよい。いくつかの実装において、これらのエンティティ110、116、122は、1つまたは複数の仮想サーバを含むものとしてよく、これらはホストサーバ環境で動作し、抽象層(たとえば、仮想マシンマネージャ)を介して、たとえば、プロセッサ、メモリ、記憶装置、ネットワークインターフェースなどを含むホストサーバの物理的ハードウェアにアクセスする。
【００１６】
自動音声認識(ASR)エンジン111は、自動音声認識を実行する。たとえば、一実施形態において、ASRエンジン111は、音声(たとえば、声)入力を受信して、音声をテキスト列に変換する。ASRエンジン111の例は、限定はしないが、Nuance、Google Voice、Telisma/OnMobileなどを含む。
【００１７】
実施形態に応じて、ASRエンジン111は、オンボード、オフボード、またはこれらの組合せであってよい。たとえば、一実施形態において、ASRエンジン111は、オンボードであり、ASRは、ASRエンジン111aおよびASRエンジン111xによってクライアントデバイス106上で実行され、ASRサーバ110は、省かれ得る。別の例では、一実施形態において、ASRエンジン111は、オフボード(たとえば、ストリーミングまたはリレー)であり、ASRは、ASRエンジン111xによってASRサーバ110上で実行され、ASRエンジン111aは、省かれ得る。なおも別の例では、ASRは、ASRエンジン111aによってクライアントデバイス106上で、またASRエンジン111xによってASRサーバ110上で実行される。
【００１８】
テキスト読み上げ(TTS)エンジン119は、テキスト読み上げを実行する。たとえば、一実施形態において、TTSエンジン119は、テキストまたは他の非音声入力(たとえば、図3のワークアラウンドエンジン328を参照しつつ以下で説明されているような追加の情報の要求)を受信し、クライアントデバイス106の音声出力を通じてユーザ112に提示される人間認識可能音声を出力する。ASRエンジン111の例は、限定はしないが、Nuance、Google Voice、Telisma/OnMobile、Creawave、Acapellaなどを含む。
【００１９】
実施形態に応じて、TTSエンジン119は、オンボード、オフボード、またはこれらの組合せであってよい。たとえば、一実施形態において、TTSエンジン119は、オンボードであり、TTSは、TTSエンジン119aおよびTTSエンジン119xによってクライアントデバイス106上で実行され、TTSサーバ116は、省かれ得る。別の例では、一実施形態において、TTSエンジン119は、オフボード(たとえば、ストリーミングまたはリレー)であり、TTSは、TTSエンジン119xによってTTSサーバ116上で実行され、TTSエンジン119aは、省かれ得る。なおも別の例では、TTSは、TTSエンジン116aによってクライアントデバイス106上で、またTTSエンジン116xによってTTSサーバ116上で実行される。
【００２０】
例示されている実施形態において、音声および接続エンジンは、2つのコンポーネント109、124、すなわち、1つのクライアントサイドと1つのサーバサイドとに分割される。実施形態に応じて、音声および接続エンジンは、オンボード、オフボード、またはこれらの2つのハイブリッドであってよい。別の例では、一実施形態において、音声および接続エンジンは、オンボードであり、図3および図4に関して以下で説明されている特徴および機能は、クライアントデバイス106上で実行される。別の例では、一実施形態において、音声および接続エンジンは、オフボードであり、図3および図4に関して以下で説明されている特徴および機能は、音声および接続サーバ122上で実行される。なおも別の例では、一実施形態において、音声および接続エンジンは、ハイブリッドであり、図3および図4に関して以下で説明されている特徴および機能は、クライアントサイドの音声および接続エンジン109とサーバサイドの音声および接続エンジン124とに分割される。ただし、特徴および機能は、図3および図4の例示されている実施形態とは異なる形で分割され得ることは理解されるべきである。一実施形態において、音声および接続エンジンは、コンテキストおよび人工知能を使用し、ユーザ112と自然なダイアログを行う音声アシスタントを提供し、ユーザ要求における不備(たとえば、音声認識の失敗)に対するワークアラウンドを施すことができる。
【００２１】
一実施形態において、クライアントサイド(オンボード)の音声および接続エンジン109はダイアログを管理し、サーバサイド(オフボード)の音声および接続プラットフォーム124に接続して拡張意味処理を行う。そのような一実施形態は、有利には、これらの2つの間の接続性の喪失および回復を行えるように同期をとる。たとえば、ユーザが、トンネルを通っており、ネットワーク102の接続がなくなっていると仮定する。一実施形態において、システム100は、ネットワーク102の接続性が失われたことを検出し、実行する自動音声認識エンジン111および自然言語理解エンジン326の「lite」ローカルバージョンを使用してクライアントデバイス106上のローカルで音声入力(すなわち、クエリ/要求)を分析するが、ネットワーク102の接続性が利用可能であるときには、ASRおよび自然言語理解(NLU)は、より大きい意味、語彙、および処理能力を提供するエンジンのサーバサイドバージョンで実行される。一実施形態において、ユーザの要求が、ネットワーク102の接続性を必要とする場合、システムは、ネットワーク102の接続性が再確立されるときにユーザの要求が処理されるネットワーク102の接続性を失っていることをユーザに言葉で通知するものとしてよい。
【００２２】
図1に例示されているシステム100は、一実施形態による音声および接続性について例示的なシステムを代表するものであること、および様々な異なるシステム環境および構成が企図され、本開示の範囲内にあることは理解されるべきである。たとえば、様々な機能がサーバからクライアントに、またはその逆に移動されてよく、いくつかの実装は、追加の、またはより少ないコンピューティングデバイス、サーバ、および/またはネットワークを含むものとしてよく、様々な機能クライアントサイドまたはサーバサイドを実装し得る。さらに、システム100の様々なエンティティが、単一のコンピューティングデバイスまたはシステム内に一体化されるか、または追加のコンピューティングデバイスもしくはシステムなどの間に分割され得る。
【００２３】
図2は、一実施形態による例示的なコンピューティングデバイス200のブロック図である。コンピューティングデバイス200は、例示されているように、プロセッサ202、メモリ204、通信ユニット208、記憶装置デバイス241を備えるものとしてよく、これらは通信バス206によって通信可能に結合され得る。図2に示されているコンピューティングデバイス200は、例として提示されており、本開示の範囲から逸脱することなく他の形態をとり、追加の、またはより少ないコンポーネントを備え得ることは理解されるべきである。たとえば、図示されていないが、コンピューティングデバイス200は、入力および出力デバイス(たとえば、ディスプレイ、キーボード、マウス、タッチスクリーン、スピーカなど)、様々なオペレーティングシステム、センサ、追加のプロセッサ、ならびに他の物理的構成を含み得る。それに加えて、図2に示され、本明細書で説明されているコンピュータアーキテクチャは、たとえば、TTSサーバ116(たとえば、TTSエンジン119を含め、他の例示されているエンジンを省くことによって)、ASRサーバ110(たとえな、ASRエンジン111を含め、他の例示されているエンジンを省くことによって)、クライアントデバイス106(たとえば、サーバサイドの音声および接続エンジン124を省くことによって)、ならびに音声および接続サーバ122(たとえば、サーバサイドの音声および接続エンジン124を含め、他の例示されているエンジンを省くことによって)を含む、様々な修正形態とともにシステム100内の複数のエンティティに適用され得ることは理解されるべきである。
【００２４】
プロセッサ202は、算術論理演算ユニット、マイクロプロセッサ、汎用コントローラ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または他の何らかのプロセッサアレイ、またはこれらの何らかの組合せを含み、本明細書で説明されている特徴および機能をもたらす様々な入力、論理、および/または数学演算を実行することによってソフトウェア命令を実行する。プロセッサ202は、様々な入出力、論理、および/または数学演算を実行することによってコード、ルーチン、およびソフトウェア命令を実行し得る。プロセッサ202は、たとえば、複合命令セットコンピュータ(CISC)アーキテクチャ、縮小命令セットコンピュータ(RISC)アーキテクチャ、および/または命令セットの組合せを実装するアーキテクチャを含むデータ信号を処理するための様々なコンピューティングアーキテクチャを有する。プロセッサ202は、物理的および/または仮想的であってよく、単一コアもしくは複数の処理ユニットおよび/またはコアを含み得る。いくつかの実装において、プロセッサ202は、電子的ディスプレイ信号を生成してディスプレイデバイス(図示せず)に供給し、画像の表示をサポートし、画像をキャプチャして送信し、様々なタイプの特徴抽出およびサンプリングを含む複合タスクを実行することなどを行うことができるものとしてよい。いくつかの実装において、プロセッサ202は、バス206を介してメモリ204に結合され、これにより、そこからデータおよび命令にアクセスし、その中にデータを記憶することができる。バス206は、プロセッサ202を、たとえば、メモリ204、通信ユニット208、および記憶装置デバイス241を備えるアプリケーションサーバ122の他のコンポーネントに結合し得る。
【００２５】
メモリ204は、データを記憶し、コンピューティングデバイス200の他のコンポーネントにデータへのアクセスを提供することができる。いくつかの実装において、メモリ204は、プロセッサ202によって実行され得る命令および/またはデータを記憶することができる。たとえば、図示されているように、メモリ204は、1つまたは複数のエンジン109、111、119、124を記憶することができる。メモリ204は、また、たとえば、オペレーティングシステム、ハードウェアドライバ、ソフトウェアアプリケーション、データベースなどを含む、他の命令およびデータを記憶することもできる。メモリ204は、プロセッサ202およびコンピューティングデバイス200の他のコンポーネントとの通信のためにバス206に結合され得る。
【００２６】
メモリ204は、プロセッサ202による処理のため、またはプロセッサ202との接続で、命令、データ、コンピュータプログラム、ソフトウェア、コード、ルーチンなどを格納し、記憶し、通信し、伝搬し、または搬送することができる任意の装置またはデバイスであってよい、非一時的コンピュータ使用可能(たとえば、読み出し可能、書き込み可能などの)媒体を含む。いくつかの実装において、メモリ204は、揮発性メモリおよび不揮発性メモリのうちの1つまたは複数を含み得る。たとえば、メモリ204は、限定はしないが、ダイナミックランダムアクセスメモリ(DRAM)デバイス、スタティックランダムアクセスメモリ(SRAM)デバイス、ディスクリートメモリデバイス(たとえば、PROM、FPROM、ROM)、ハードディスクドライブ、光ディスクドライブ(CD、DVD、Blue-ray(商標)など)のうちの1つまたは複数を含み得る。メモリ204は、単一のデバイスであり得るか、または複数のタイプのデバイスおよび構成を含み得ることは理解されるべきである。
【００２７】
バス206は、コンピューティングデバイスのコンポーネント間で、またはコンピューティングデバイス106/110/116/122、ネットワーク102またはその一部分を含むネットワークバスシステム、プロセッサメッシュ、これらの組合せなどの間でデータを転送するための通信バスを含み得る。いくつかの実装において、エンジン109、111、119、124、そのサブコンポーネント、およびコンピューティングデバイス200上で動作する様々なソフトウェア(たとえば、オペレーティングシステム、デバイスドライバなど)は、連携し、バス206に関連して実装されているソフトウェア通信メカニズムを介して通信するものとしてよい。ソフトウェア通信メカニズムは、たとえば、プロセス間通信、ローカルファンクションまたはプロシージャコール、リモートプロシージャコール、オブジェクトブローカ(たとえば、CORBA)、ソフトウェアモジュール間のダイレクトソケット通信(たとえば、TCP/IPソケット)、UDPブロードキャストおよび受信、HTTP接続などを含み、および/または円滑にすることができる。さらに、通信はどれも、またはすべてがセキュア(たとえば、SSL、HTTPSなど)とすることが可能である。
【００２８】
通信ユニット208は、ネットワーク102との有線および/またはワイヤレス接続性のための1つまたは複数のインターフェースデバイス(I/F)を備え得る。たとえば、通信ユニット208は、限定はしないが、CAT型インターフェース、モバイルネットワーク103と通信するための無線トランシーバ(4G、3G、2Gなど)、およびWiFi(商標)および近距離(たとえば、Bluetooth(登録商標)、NFCなど)接続性などのための無線トランシーバを使用して信号を送受信するためのワイヤレストランシーバ、USBインターフェース、これらの様々な組合せなどを含み得る。いくつかの実装において、通信ユニット208は、プロセッサ202をネットワーク102にリンクすることができ、次いで、これは他の処理システムに結合され得る。通信ユニット208は、たとえば本明細書の別のところで説明されているものを含む、様々な標準ネットワーク通信プロトコルを使用してネットワーク102への、およびシステム100の他のエンティティへの他の接続も提供することができる。
【００２９】
記憶装置デバイス241は、データを記憶し、データへのアクセスを提供するための情報源である。いくつかの実装において、記憶装置デバイス241は、バス206を介してコンピューティングデバイスのコンポーネント202、204、および208に結合され、それによりデータを受信し、データへのアクセスを提供し得る。記憶装置デバイス241に記憶されるデータは、コンピューティングデバイス200および実施形態に基づき異なり得る。たとえば、一実施形態において、クライアントデバイス106の記憶装置デバイス241は、ユーザの現在のコンテキストおよびセッションに関する情報を記憶するものとしてよく、音声および接続サーバ122の記憶装置デバイス241は、メディアおよび長期的コンテキスト、機械学習に使用される集約ユーザデータなどを記憶する。
【００３０】
記憶装置デバイス241は、コンピューティングデバイス200、および/またはコンピューティングデバイス200と異なるが、コンピューティングデバイス200に結合されるか、またはそれによってアクセス可能である記憶装置システムに備えられ得る。記憶装置デバイス241は、データを記憶するための1つまたは複数の非一時的コンピュータ可読媒体を備えることができる。いくつかの実装において、記憶装置デバイス241は、メモリ204内に組み込まれ得るか、またはそれと異なっていてもよい。いくつかの実装において、記憶装置デバイス241は、アプリケーションサーバ122上で動作可能なデータベース管理システム(DBMS)を備え得る。たとえば、DBMSは、構造化照会言語(SQL)DBMS、NoSQL DBMS、これらの様々な組合せなどを含むこともあり得る。いくつかの場合において、DBMSは、行と列とからなる多次元テーブルにデータを記憶し、プログラミングによるオペレーションを使用してデータの行を操作する、すなわち、挿入する、クエリを実行する、更新する、および/または削除することができる。
【００３１】
上で述べたように、コンピューティングデバイス200は、他の、および/またはより少ないコンポーネントを含み得る。他のコンポーネントの例は、ディスプレイ、入力デバイス、センサなど(図示せず)を含み得る。一実施形態において、コンピューティングデバイスはディスプレイを備える。ディスプレイは、たとえば、有機発光ダイオード(OLED)ディスプレイ、液晶ディスプレイ(LCD)などを含む、従来の、ディスプレイデバイス、モニタ、または画面を備え得る。いくつかの実装において、ディスプレイは、スタイラス、ユーザ112の1本またはそれ以上の指などからの入力を受信することができるタッチスクリーンディスプレイであってよい。ディスプレイは、たとえば、ディスプレイ表面への複数の接触点を検出し、解釈することができる静電容量方式タッチスクリーンディスプレイであってよい。
【００３２】
入力デバイス(図示せず)は、情報をアプリケーションサーバ122に入力するためのデバイスを含み得る。いくつかの実装において、入力デバイスは、1つまたは複数の周辺デバイスを含み得る。たとえば、入力デバイスは、キーボード(たとえば、QWERTYキーボードまたは他の言語のキーボード)、ポインティングデバイス(たとえば、マウスまたはタッチパッド)、マイクロフォン、画像/ビデオキャプチャデバイス(たとえば、カメラ)などを含み得る。一実施形態において、コンピューティングデバイス200は、クライアントデバイス106を表すものとしてよく、クライアントデバイス106は、音声入力を受信するためのマイクロフォンとテキスト読み上げ(TTS)に使用されるスピーカとを備える。いくつかの実装において、入力デバイスは、ユーザ112の1本またはそれ以上の指からの入力を受信することができるタッチスクリーンディスプレイを含み得る。たとえば、ユーザ112は、指を使用してキーボード領域内の表示に触れることによってタッチスクリーンディスプレイ上に表示されているエミュレートされた(すなわち、仮想もしくはソフト)キーボードをインタラクティブに操作することが可能である。
【００３３】
例示的なクライアントサイドの音声および接続エンジン109
次に図3を参照すると、一実施形態による例示的なクライアントサイドの音声および接続エンジン109のブロック図が示されている。例示されている実施形態において、クライアントサイドの音声および接続エンジン109は、自動音声認識(ASR)エンジン322、クライアントサイドコンテキストホルダ324、自然言語理解(NLU)エンジン326、ワークアラウンドエンジン328、および接続エンジン330を備える。
【００３４】
自動音声認識(ASR)対話エンジン322は、自動音声認識(ASR)エンジン111と対話するためのコードおよびルーチンを備える。一実施形態において、ASR対話エンジン322は、プロセッサ202によって実行可能である一組の命令である。別の実施形態において、ASR対話エンジン322は、メモリ204内に記憶されており、プロセッサ202からアクセス可能であり、プロセッサ202によって実行可能である。いずれかの実施形態において、ASR対話エンジン322は、プロセッサ202、ASRエンジン111、およびシステム100の他のコンポーネントと連携し、通信するように適合されている。
【００３５】
ASR対話エンジン322は、ASRエンジン111と対話する。一実施形態において、ASRエンジン111は、クライアントデバイス106のローカルにある。たとえば、ASR対話エンジン322は、ASRエンジン111aなどのオンボードASRアプリケーションであるASRエンジン111と対話する。一実施形態において、ASRエンジン111は、クライアントデバイス106のリモートにある。たとえば、ASR対話エンジン322は、ASRエンジン111xなどのネットワーク102を介してアクセス可能であり、使用されるオフボードASRアプリケーションであるASRエンジン111と対話する。一実施形態において、ASRエンジン111は、クライアントデバイス106のローカルとリモートの両方にあるコンポーネントを含むハイブリッドである。たとえば、ASR対話エンジン322は、クライアントデバイス106にかかる処理の負担を低減し、その電池寿命を改善するためにクライアントデバイス106がネットワーク102の接続性を有しているときにオフボードASRエンジン111xと対話し、ネットワーク102の接続性が利用不可能であるか、または不十分であるときにオンボードASRエンジン111aを対話する。
【００３６】
一実施形態において、ASR対話エンジン322は、ASRエンジン111の音声入力を開始することによってASRエンジン111と対話する。一実施形態において、ASR対話エンジン322は、1つまたは複数のイベントを検出したことに応答してASRエンジン111の音声入力を開始することができる。いくつかの実施形態において、ASR対話エンジン322は、ユーザ112がダイアログを開始するのを待たずに、ASRをプロアクティブに開始する。イベントの例は、限定することなく、ウェイクアップ語またはフレーズ、タイマのタイムアウト、ユーザ入力、内部イベント、外部イベントなどを含む。
【００３７】
一実施形態において、ASR対話エンジン322は、目覚まし単語またはフレーズを検出したことに応答してASRエンジン111の音声入力を開始する。たとえば、音声および接続プラットフォームは、ユーザと対話するためにペルソナに関連付けられており、ペルソナは、「Sam」という名前であると仮定すると、一実施形態において、ASR対話エンジン322は、クライアントデバイスのマイクロフォンを介して単語「Sam」がいつ受信されたかを検出し、ASRエンジン111に対する音声入力を開始する。別の実施形態において、フレーズ「Hey you!」が目覚ましフレーズとして割り当てられていると仮定すると、一実施形態において、ASR対話エンジン322は、クライアントデバイスのマイクロフォンを介してフレーズ「Hey you!」がいつ受信されたかを検出し、ASRエンジン111に対する音声入力を開始する。
【００３８】
一実施形態において、ASR対話エンジン322は、タイマのタイムアウトを検出したことに応答してASRエンジン111の音声入力を開始する。たとえば、システム100は、ユーザが午前7時に目覚め、午後6時に退社すると決定し得る。一実施形態では、タイマを午前7時にセットし、さらにタイマを午後6時にセットすると、ASR対話エンジン322は、それらの時刻にASRエンジン111に対する音声入力を開始する。たとえば、そのようにして、ユーザは、午前7時に目覚めたときにニュースまたは天気を尋ね、午後6時に退社するときに交通状況報告を要求するか、または配偶者に電話をかけるよう要求することができる。
【００３９】
一実施形態において、ASR対話エンジン322は、ユーザ入力を検出したことに応答してASRエンジン111の音声入力を開始する。たとえば、ASR対話エンジン322は、ジェスチャ(たとえば、タッチスクリーン上の特定のスワイプもしくはモーション)またはボタン(物理的もしくはソフト/仮想)選択(たとえば、専用ボタンを選択するか、もしくは多目的ボタンを長押しすること)を検出したことに応答してASRエンジン111の音声入力を開始する。参照されるボタンは、クライアントデバイス106またはクライアントデバイス106に関連付けられているコンポーネント(たとえば、ドック、クレードル、Bluetooth(登録商標)ヘッドセット、スマートウォッチなど)にあるものとしてよいことは理解されるべきである。
【００４０】
一実施形態において、ASR対話エンジン322は、内部イベントを検出したことに応答してASRエンジン111の音声入力を開始する。一実施形態において、内部イベントは、クライアントデバイス106のセンサ(たとえば、GPS、加速度計、電力センサ、ドッキングセンサ、Bluetooth(登録商標)アンテナなど)に基づく。たとえば、ASR対話エンジン322は、ユーザデバイス106がユーザの自動車の中に配置されていることを検出したことに応答してASRの音声入力を開始し(たとえば、自動車、電力、および車内クレードル/ドックなどへの接続のオンボード診断機能に基づき検出し)、ASRエンジン111の音声入力を開始する(たとえば、ナビゲーション指令または再生する音楽に対するユーザの要求を受信するため)。一実施形態において、内部イベントは、クライアントデバイス106のアプリケーション(図示せず)に基づく。たとえば、クライアントデバイス106は、カレンダアプリケーションを備えるスマートフォンであり、カレンダアプリケーションは、リモートロケーションにいるユーザに対するアポイントメントを含むと仮定すると、一実施形態では、ASRは、アポイントメントを検出したことに応答してASRエンジンの音声入力を開始する(たとえば、アポイントメントのロケーションへの指令に対するユーザの要求を受信するため)。一実施形態において、内部イベントは、ローカルのテキスト読み上げエンジン119aのオペレーションに基づく。たとえば、テキスト読み上げエンジン119が、コンテキストプロンプト(たとえば、「It appears you are leaving work would you like to call your wife and navigate home?」)、または他のプロンプトをユーザに提示するために動作すると仮定すると、一実施形態において、ASR対話エンジン322は、テキスト読み上げプロンプトを検出し、ASRエンジン111の音声入力を開始してプロンプトへのユーザの応答を受信する。
【００４１】
一実施形態において、ASR対話エンジン322は、外部イベントを(たとえば、サードパーティAPIまたはデータベースから)検出したことに応答してASRエンジン111の音声入力を開始する。一実施形態において、内部イベントは、リモートのテキスト読み上げエンジン119xのオペレーションに基づく。たとえば、テキスト読み上げエンジン119が、コンテキストプロンプト(たとえば、「It appears you are leaving work would you like to call your wife and navigate home?」または「you are approaching your destination would you like me to direct you to available parking?」)、または他のプロンプトをユーザに提示するために動作すると仮定すると、一実施形態において、ASR対話エンジン322は、テキスト読み上げプロンプトを検出し、ASRエンジン111の音声入力を開始してプロンプトへのユーザの応答を受信する。
【００４２】
一実施形態において、ASR対話エンジン322は、不可知論的である。たとえば、一実施形態において、ASR対話エンジン322は、1つまたは複数の異なるASRエンジン111を使用し得る。ASRエンジン111の例は、限定はしないが、Nuance、Google Voice、Telisma/OnMobile、Creawave、Acapellaなどを含む。不可知論的なASR対話エンジン322は、有利には、使用されるASRエンジン111およびASRエンジン111の言語における柔軟性を実現し、使用されるASRエンジン111が、新しいASRエンジン111が利用可能になり、既存のASRエンジンが切断されるときに音声および接続システム100の寿命の終わりまで変更されることを可能にし得る。いくつかの実施形態において、システム100は、複数のASRエンジンを備え、使用されるASRエンジン111は、コンテキストに依存する。たとえば、Google Voiceは、Nuanceに比べて、固有名詞の認識力に優れていると仮定すると、一実施形態において、ASR対話エンジン322は、ユーザが電話アプリケーションの連絡先リストにアクセスしたと決定されたときにGoogle Voice ASRと対話することができる。いくつかの実施形態において、システム100は、ASRエンジンをいつでも切り替えることができる(たとえば、第1のASRエンジン111による音声入力の第1の部分および第2のASR111による音声入力の第2の部分を処理する)。ASRエンジン111と同様に、一実施形態において、システム100は、使用されるTTSエンジン119に関して不可知論的である。またASRエンジン111と同様に、いくつかの実施形態において、システム100は、複数のTTSエンジン119を備えるものとしてよく、異なるコンテキストに異なるTTSエンジンを選択して使用することができ、および/または異なるTTSエンジンをいつでも切り替えることができる。たとえば、一実施形態において、システム100は、英語のヘッドラインの読み上げを開始し、その際にユーザはフランス語を要求することができ、システムは、英語からフランス語のTTSエンジンに遷移する。
【００４３】
ASRエンジン111は、ASR対話エンジン322が音声入力を開始した後に音声入力を受信する。一実施形態において、開始に応答して、ASRエンジン111は、ASR対話エンジン322がさらに関与することなく音声入力を受信する。一実施形態において、音声入力を開始した後に、ASR対話エンジン322は、音声入力をASRエンジン111に受け渡す。たとえば、ASR対話エンジン322は、ASRエンジン111に通信可能に結合されており、音声入力をASRエンジン111に送信し得る。別の実施形態において、音声入力を開始した後に、ASR対話エンジン322は、音声入力を記憶装置デバイス(または通信可能にアクセス可能な他の非一時的記憶媒体)に記憶し、音声入力は、記憶装置デバイス(または他の非一時的記憶媒体)にアクセスすることによってASRエンジン111によって取り出され得る。
【００４４】
いくつかの実施形態において、システム100は、音声入力などのユーザ入力を受信することなく電子音声アシスタントをプロアクティブに提供する。たとえば、一実施形態において、システム100は、自動車を決定し得る(すなわち、クライアントデバイス106は交通渋滞にはまっており、TTSを自動的に開始し、ユーザとのダイアログを始めるか(たとえば、「Would you like me to provide an alternate route?」)、またはアクションを実行する(たとえば、駐車する、列車に乗る、などの別ルートを決定し、ナビゲーションルートをしかるべく更新する)。
【００４５】
クライアントサイドコンテキストホルダ324は、コンテキスト同期のためのコードおよびルーチンを含む。一実施形態において、コンテキスト同期は、クライアントサイドからコンテキストワークフローの定義、使用、および記憶を管理するステップと、サーバサイドとコンテキストワークフローを共有するステップとを含む。一実施形態において、クライアントサイドコンテキストホルダ324は、プロセッサ202によって実行可能である一組の命令である。別の実施形態において、クライアントサイドコンテキストホルダ324は、メモリ204内に記憶されており、プロセッサ202からアクセス可能であり、プロセッサ202によって実行可能である。いずれかの実施形態において、クライアントサイドコンテキストホルダ324は、プロセッサ202、クライアントデバイス106の他のコンポーネント、およびシステム100の他のコンポーネントと連携し、通信するように適合されている。
【００４６】
クライアントサイドコンテキストホルダ324は、クライアントサイドからコンテキストワークフローの定義、使用、および記憶を管理し、サーバサイドとコンテキストワークフローを共有する。一実施形態において、クライアントサイドコンテキストホルダ324は、コンテキスト同期プロトコルを使用してコンテキストエージェント420(サーバサイドコンテキストホルダ)と通信し、ネットワーク102上の巡回および低容量にも関わらずシステム100内のコンテキストを同期させる(これはいくつかのネットワーク、たとえば、モバイルデータネットワーク上で特に有利な場合がある)。
【００４７】
クライアントサイドコンテキストホルダ324は、コンテキストの定義、使用、および記憶を管理する。コンテキストは、音声および接続エンジンによって提供されるパーソナルアシスタントの現在のステータスである。一実施形態において、コンテキストは、1つまたは複数のパラメータを備える。パラメータの例は、限定はしないが、コンテキスト履歴、ダイアログ履歴(たとえば、ユーザの前の要求ならびにシステムの前の応答およびアクション)、ユーザプロファイル(たとえば、ユーザの識別情報およびプリファレンス)、ユーザ履歴(たとえば、ユーザの習慣)、ロケーション(クライアントデバイス106の物理的ロケーション)、現在のコンテキストドメイン(たとえば、クライアントデバイス106、使用されているアプリケーション、ユーザに現在提示されているインターフェース)を含む。いくつかの実施形態において、パラメータは、可変またはシリアル化されたオブジェクトであってよい。
【００４８】
一実施形態において、コンテキストは、多次元コンテキストであり、任意の次元の変数または特徴を記述することができる。いくつかの実施形態において、コンテキストは、多次元行列を使用する。本明細書で説明されているように、いくつかの実施形態において、コンテキストは、クライアントサイド(たとえば、クライアントデバイス106a)とサーバサイド(たとえば、音声および接続サーバ122)との間でリアルタイムで同期させられる。プラットフォームの両方の部分(クライアントとサーバ)における同期の深い統合を組み合わせ、コンテキストが任意の次元の変数または特徴を記述することができるので、コンテキストは、「ディープコンテキスト」とときどき称され得る。
【００４９】
実施形態に応じて、このコンテキストはシステム100によって使用され、限定はしないが、発話から単語を正確に認識するシステム100の能力を高めるステップを含む1つまたは複数の利点をもたらし、ユーザの意図する要求を決定し、ユーザ112とシステム100との間のより自然なダイアログを促す。
【００５０】
一実施形態において、コンテキストは、発話から単語をより正確に認識するために使用される。たとえば、ユーザが電話アプリケーションを開いていると仮定すると、一実施形態において、コンテキストは、自然言語理解エンジン326によって使用される辞書を(たとえば、連絡先の名前および電話を操作するステップまたは電話をかけるステップに関連付けられている単語に)制限するために(たとえば、前処理時にNLUエンジン326によって)使用され得る。一実施形態において、そのような辞書制限は、有利には、自動車会社「Renault」を排除するが、名前「Renaud」を残し、ユーザがRenaultでなくRenaudに電話することを望んでいるとNLUエンジン326が正確に決定するようにできる。NLUエンジン326は、ユーザがユーザによって行われた前の通話に基づき(Renaudという名前の複数の連絡先を想定して)どのRenaudに電話をかけることを意図しているかを決定することすらできる。したがって、前の例は、また、ユーザの意図する要求(すなわち、Renaudに電話をかける)をより正確に決定するためにコンテキストが使用される一実施形態を示すものともなっている。したがって、コンテキストは、ユーザの要求を受信してからその要求について正確に実行するまでの時間の長さを最小にすることもできる。
【００５１】
一実施形態において、コンテキストは、ユーザとシステム100との間のより自然なダイアログ(双方向通信)を円滑にするために使用される。たとえば、コンテキストは、ユーザがYahoo!に関するニュースを要求するダイアログを円滑にするために使用されてもよく、システムは、Yahoo!に関する記事のヘッドラインの読み上げを開始する。ユーザが、「who is the CEO?」と尋ねると、システム100は、ユーザの意図した要求は、Yahoo!のCEOについてであると理解し、その名前を検索し、その名前を出す。次いで、ユーザが、今日の天気を尋ねると、システム100は、この要求が天気アプリケーションに関連付けられていること、およびユーザの意図する要求がユーザの物理的ロケーションに対する天気についてのものであることを理解し、天気アプリケーションが使用されるべきであると決定し、天気アプリケーションへのAPIコールを実行して、天気を取得する。次いで、ユーザが、「and tomorrow」と言うと、システム100は、ユーザの意図した要求は、明日のユーザの現在のロケーションにおける天気についてであると理解する。次いで、ユーザが、「what's the stock trading at?」と尋ねると、システム100は、ユーザの意図した要求は、Yahoo!の株式の現在の取引価格についてであると理解し、その情報を取得するためウェブ検索を実行する。要約し、簡素化するために、いくつかの実施形態において、コンテキストは、トピックを追跡し、アプリケーションを切り替え、様々なアプリケーションのワークフローの状態を追跡して、テキストのジャンプをサポートすることによってユーザ112とシステム100との間のより「自然な」ダイアログを可能にするものとしてよい。
【００５２】
いくつかの実施形態において、機械学習が、コンテキストに適用される。たとえば、多数のユーザから集計されたデータおよびユーザが一般にシステム100とどのように対話するかに基づき、またはユーザのデータおよびユーザがシステム100とどのように対話するかに基づき特定のユーザについて、次のステップまたはコマンドの確率を学習する。
【００５３】
一実施形態において、クライアントサイドコンテキストホルダ324は、ユーザの現在のコンテキストを図4のコンテキストエージェント420と同期させる。コンテキストをサーバサイドの音声および接続エンジン124と同期させることで、クライアントサイドの音声および接続エンジン109は、適宜、サーバサイドエンジン124にダイアログを管理させ、様々なオペレーションを実行させ得るか、またはたとえばサーバ122への接続性に基づきクライアントデバイス106における機能を実行し得る。
【００５４】
一実施形態において、クライアントサイドホルダ324およびコンテキストエージェント420(すなわち、サーバサイドホルダ)は、通信プロトコルを提供するコンテキスト同期プロトコルを使用して通信を行い、さらには同期されているコンテキスト情報が配信されることを検証する。一実施形態において、コンテキスト同期プロトコルは、現在のコンテキストのステータスまたはサブステータスの各プロパティ(たとえば、変数もしくはパラメータ)についてキーアクセス(たとえば、コンテキストID)を標準化する。
【００５５】
次に、図8を参照すると、一実施形態に従って、クライアントサイドとサーバサイドとの間のコンテキストの同期に関するさらなる詳細を提示する概略図800が示されている。例示されている実施形態において、クライアントデバイスのクライアントサイドコンテキストホルダ324は、クライアントデバイス106の1つまたは複数のコンテキスト810a/812a/814aを維持する。一実施形態において、各コンテキスト810a/812a/814aは、モジュールに関連付けられる。一実施形態において、クライアントサイドコンテキストホルダ324は、アプリケーションの機能を通るユーザのフローを含む画面(画面1からN)および各画面上で利用可能な機能を含むコンテキストを維持する。たとえば、例示されている実施形態において、ユーザは、一組の機能を備える画面1 820aを提示され、ユーザは機能(画面1のF1〜Fnから)を選択した。次いで、ユーザは画面2を提示され、ユーザは機能を(画面2のF1〜Fnから)選択した。次いで、ユーザは画面3を提示され、ユーザは機能を(画面3のF1〜Fnから)選択するなどした。たとえば、一実施形態において、モジュール1 810aは、電話アプリケーションに対するモジュールであり、モジュール2 812aは、メディアアプリケーションに対するモジュールであると仮定すると、一実施形態において、モジュール1 810aの画面820a、822a、824a、および826aは、連絡先を選択して電話をかけるためにワークアラウンド(後述)をナビゲートするユーザとシステムとのダイアログを表すものとしてよく、モジュール2 812aの画面は、ユーザが再生するジャンル、アーチスト、アルバム、およびトラックをナビゲートする流れを表し得る。
【００５６】
ホーム画面830aは、様々なモジュール810a、812a、814aのコンテキストをリセットする。たとえば、モジュール1 810は、ニュースアプリケーションに関連付けられると仮定すると、一実施形態において、ユーザは、ホーム画面830aに向けられる(たとえば、タイムアウト期間などのメカニズムによって自動的に、またはユーザの要求に基づき)。一実施形態において、ユーザが、ホーム画面830aに向けられたときに、モジュール810a、812a、814aのうちの1つまたは複数におけるコンテキスト情報のリセットは、トリガーされる。
【００５７】
一実施形態において、図4を参照しつつ以下でも説明されている、コンテキスト同期プロトコル804は、クライアントサイドコンテキストホルダ324からサーバサイドコンテキストホルダまたは同様のものとしても参照されるコンテキストエージェント422にコンテキストを伝達するためのプロトコルを提供する。いくつかの実施形態において、コンテキスト同期プロトコルがもたらす圧縮度は高い。いくつかの実施形態において、コンテキスト同期プロトコルは、コンテキストエージェント422の情報806がクライアントサイドコンテキストホルダ324の情報802と同一になるようにコンテキストがクライアントサイドとサーバサイドとの間で正常に同期されていることを検証するためのメカニズムを実現する。
【００５８】
一実施形態において、コンテキストエンジン424は、コンテキストエージェント422からコンテキストを収集する。一実施形態において、コンテキストエンジン424は、ユーザに対するコンテキスト情報808を管理する。たとえば、コンテキストエンジン424は、長い時間をかけてアプリケーションに対するコンテキスト情報(たとえば、長期的および中期的コンテキスト)およびアプリケーションにおける各ユーザセッションに対する様々なコンテキスト情報を維持する。そのような情報は、機械学習に有用なものと言える(たとえば、Victoriaに電話する要求などの現在のコンテキスト、およびVictoria Pに対するものであるVictoriaの最後の要求などの過去のコンテキストに基づきユーザの意図を予測する)。
【００５９】
一実施形態において、クライアントサイドコンテキストホルダ324は、コンテキストを、たとえば、自然言語理解(NLU)エンジン326および/またはコンテキストエージェント422を含むシステム100の1つまたは複数のコンポーネントに受け渡す。一実施形態において、クライアントサイドコンテキストホルダ324は、コンテキストを記憶装置デバイス241(または通信可能にアクセス可能な他の非一時的記憶媒体)に記憶する。たとえば、自然言語理解エンジン326および/またはコンテキストエージェント422を含むシステム100の他のコンポーネントは、記憶装置デバイス241(または他の非一時的記憶媒体)にアクセスすることによってコンテキストを取り出すことができる。
【００６０】
自然言語理解(NLU)エンジン326は、ASRエンジン111の出力を受信し、ASRエンジン111の出力に基づきユーザの意図した要求を決定するためのコードおよびルーチンを備える。一実施形態において、NLUエンジン326は、プロセッサ202によって実行可能である一組の命令である。別の実施形態において、NLUエンジン326は、メモリ204内に記憶されており、プロセッサ202からアクセス可能であり、プロセッサ202によって実行可能である。いずれかの実施形態において、NLUエンジン326は、プロセッサ202、ASRエンジン111、およびシステム100の他のコンポーネントと連携し、通信するように適合されている。
【００６１】
一実施形態において、NLUエンジン326は、ASRエンジン111の出力を前処理して音声認識における誤りを訂正する。わかりやすくするため、便宜上、ASRエンジン111の出力は、ときどき、「認識済み音声」と称される。一実施形態において、NLUエンジン326は、認識済み音声を前処理して認識済み音声における誤りを訂正する。一実施形態において、NLUエンジン326は、ASRエンジン111から認識済み音声、および適宜、関連付けられている信頼度を受信し、クライアントサイドコンテキストホルダ324からコンテキストを受信し、認識済み音声における誤認識語を訂正する。たとえば、ユーザがフランス語を話し、音声入力が「donne-moi l'information technologique」(すなわち、「give me information technology」)であると仮定すると、しかしながら、ASRエンジン111は、「Benoit la formation technologique」(すなわち、「Benoit technology training」)を認識済み音声として出力する。一実施形態において、NLUエンジン326は、コンテキストに基づき前処理を実行し、「Benoit」を「donne-moi」に、「formation」を「information」に訂正し、それによって、NLUエンジン326のその後決定されるユーザの意図の正確さを高める。
【００６２】
NLUエンジン326は、適宜、いくつかの実施形態において前処理され得るASRエンジン111からの認識済み音声に基づきユーザの意図を決定する。一実施形態において、NLUエンジン326は、ユーザの意図をタプルとして決定する。一実施形態において、タプルは、アクション(たとえば、実行される機能)とアクター(たとえば、機能を実行するモジュール)とを含む。しかしながら、いくつかの実施形態において、タプルは、追加の、または異なる情報を含み得る。たとえば、NLUエンジン326は、認識済み音声「Call Greg」を受信すると仮定すると、一実施形態において、NLUエンジン326は、タプルがアクション(すなわち、電話をかける)、アクター(すなわち、電話モジュール)、および「アイテム」ともときどき称されるエンティティ(すなわち、電話の受け手/ターゲットとしてのGreg)を含むと決定する。
【００６３】
一実施形態において、NLUエンジン326は、キーワードまたはショートカットのうちの1つまたは複数を検出する。キーワードは、モジュールに直接的にアクセスを与える単語である。たとえば、ユーザが「phone」と言ったときに、電話モジュールがアクセスされ、電話アプリケーションが起動される(またはフォアグラウンドに出る)。ショートカットは、フレーズである(たとえば、メッセージを送信する)。キーワードおよびショートカットの例は、図7の表710を見るとわかる。いくつかの実施形態において、システム100は、意図学習と称され得る機械学習に基づき1つまたは複数のショートカットを作成する。たとえば、一実施形態において、システム100は、「send Louis a message」がNLUエンジン326によってユーザ112が電子メール(たとえば、SMSテキストメッセージではなく)を口述し、連絡先Louis Monierに送信し、直接、電子メールおよび確定された「send Louis a message」を口述する音声入力をショートカットとして受信するためのインターフェースに進むことを要求しているものとして解釈されるべきであることを学習する。
【００６４】
一実施形態において、NLUエンジン326の自然言語理解機能は、モジュール式であり、システム100は、自然言語理解を実行するモジュールに関して不可知論的である。いくつかの実施形態において、このモジュール性により、NLUエンジン326のNLUモジュールは新しい、より正確な自然言語理解システムが利用可能になるとともに正確な理解を連続的に改善するか、または自然言語理解モジュールをスワップするように頻繁に更新され得る。
【００６５】
NLUエンジン326が、ユーザの意図した要求を決定することができないときに(たとえば、要求があいまいであるか、意味を成さない、または要求されたアクションおよび/またはアクションが利用可能であるかもしくは互換性を有するということがない、タプルから値が欠落しているなど)、NLUエンジン326は、ワークアラウンドを開始する。たとえば、ユーザの要求が互換性がない(たとえば、タプルは完全でない)ときに、NLUエンジン326は、ワークアラウンドエンジン328(以下で説明されている)が追加情報を入力するようユーザに促すことを要求する。たとえば、一実施形態においてユーザが「what's on TV?」と要求したときに、NLUエンジン326は、チャンネルおよび時間が欠落していると決定し、ワークアラウンドを開始する。
【００６６】
一実施形態において、NLUエンジン326は、タプルを接続エンジン330に受け渡す。たとえば、NLUエンジン326は、接続エンジン330に通信可能に結合されており、タプルを接続エンジン330に送信する。別の実施形態において、NLUエンジン326は、タプルを記憶装置デバイス241(または通信可能にアクセス可能な他の非一時的記憶媒体)に記憶し、接続エンジン330は、記憶装置デバイス241(または他の非一時的記憶媒体)にアクセスすることによって取り出され得る。
【００６７】
一実施形態において、NLUエンジン326は、追加の情報を求める要求をワークアラウンドエンジン328に受け渡す。たとえば、NLUエンジン326は、ワークアラウンドエンジン328に通信可能に結合され、追加の情報を求める要求をワークアラウンドエンジン328に送信する。別の実施形態において、NLUエンジン326は、追加の情報を求める要求を記憶装置デバイス241(または通信可能にアクセス可能な他の非一時的記憶媒体)に記憶し、ワークアラウンドエンジン328は、記憶装置デバイス241(または他の非一時的記憶媒体)にアクセスすることによって追加の情報を求める要求を取り出す。
【００６８】
ワークアラウンドエンジン328は、ユーザに追加の情報を求める要求を生成するためのコードおよびルーチンを備え、これにより、NLUエンジン326は、ユーザの意図した要求を決定することができる。一実施形態において、ワークアラウンドエンジン328は、プロセッサ202によって実行可能である一組の命令である。別の実施形態において、ワークアラウンドエンジン328は、メモリ204内に記憶されており、プロセッサ202からアクセス可能であり、プロセッサ202によって実行可能である。いずれかの実施形態において、ワークアラウンドエンジン328は、プロセッサ202、サーバサイド接続エンジン124の他のコンポーネント、およびシステム100の他のコンポーネントと連携し、通信するように適合されている。
【００６９】
ワークアラウンドエンジン328は、ユーザの意図した要求が理解され実行され得るように追加の情報を求める要求を生成する。一実施形態において、ワークアラウンドエンジン328は、追加の情報を求める1つまたは複数の要求を生成し、それによって、追加の情報を取得するためのユーザとのダイアログを作成する。たとえば、ワークアラウンドエンジン328は、追加の情報を求める要求を生成し、クライアントデバイスを介してユーザ112に提示するためのその要求を送信する(たとえば、その要求をテキスト読み上げエンジン111に送信し、その要求をユーザに対して音声出力として提示し、および/またはクライアントデバイスのディスプレイ上に表示する)。ユーザの応答が受信される(たとえば、ASRエンジン111によって、またはキーボードまたはタッチスクリーンなどの別のユーザ入力デバイスを通じて受信された音声入力として)。NLUエンジン326は、ユーザの意図した要求を決定する。NLUエンジン326が、ユーザの意図した要求を決定することができないときに、ワークアラウンドエンジン328は、別の要求を生成し、このプロセスは繰り返される。
【００７０】
追加の情報を求める要求のタイプの例は、限定はしないが、提案された情報が正しいかどうかを調べる要求、元の要求を全体として繰り返すことをユーザに求める要求、元の要求の一部を明確にすることをユーザに求める要求、オプションのリストから選択することをユーザに求める要求などのうちの1つまたは複数を含み得る。わかりやすくするため、便宜上、次のシナリオのコンテキストにおいてワークアラウンドエンジン328のオペレーションを説明するのが有益であると思われる。ユーザが「navigate to 1234 Fake Street, Any Town, California」と要求すると仮定する。しかしながら、どのような理由(たとえば、暗騒音、ユーザのアクセント、音声認識の誤りの)であれ、NLUエンジン326は、「navigate」および「California」を理解しており、したがってNLUエンジン326はユーザの意図した要求を理解しない。
【００７１】
いくつかの実施形態において、ワークアラウンドエンジン328は、提案された情報が正しいかどうかを調べる要求を生成する。いくつかの実施形態において、システム100は、機械学習に基づき追加の情報を提案する。たとえば、システムは、ユーザが毎週水曜日にカリフォルニア州の「1234 Fake Street, Any Town」にドライブすることを学習すると仮定すると、一実施形態において、ワークアラウンドエンジン328は、「You said California. Did you want to go to 1234 Fake St., Any Town?」という追加の情報を提案する。一実施形態において、ユーザが「yes」と言った場合に、タプルは完全であり、その完全な住所へのナビゲーションが実行され、ユーザが「no」と返答した場合に、ワークアラウンドエンジン328は、別の要求を生成する(たとえば、オプションのリストから選択すること、または目的地を略さずに書くことをユーザに求める要求)。
【００７２】
いくつかの実施形態において、ワークアラウンドエンジン328は、元の要求を略さずに繰り返すことをユーザに求める要求を生成する。たとえば、ワークアラウンドエンジン328は、要求「I'm sorry. I didn't understand. Will you repeat that?」を生成し、その要求がユーザデバイス106を介して(視覚的に、聴覚的に、またはその両方で)ユーザに提示され、ユーザは「navigate to 1234 Fake Street, Any Town, California」を繰り返し得る。一実施形態において、ワークアラウンドエンジン328は、元の要求を繰り返すことをユーザに求める要求を生成せず、他のタイプの要求のうちの1つが使用される。一実施形態において、ワークアラウンドエンジン328は、所定の閾値(たとえば、0または1)に基づき元の要求を繰り返すことをユーザに求める要求を生成する回数を制限する。そのような一実施形態において、閾値を満たしたことに応答して、ワークアラウンドエンジン328は、追加の情報を求める異なるタイプの要求を使用する(たとえば、オプションのリストのうちから選択することをユーザに促す)。
【００７３】
いくつかの実施形態において、ワークアラウンドエンジン328は、元の要求を一部繰り返すか、または元の要求から欠落している情報を供給することをユーザに求める要求を生成する。たとえば、ワークアラウンドエンジン328が、「navigate」および「California」が理解されたと決定し、所在地住所および市名が欠落しており、「I'm sorry. What was the city in California and street address?」という要求を生成されたと決定すると仮定すると、ユーザが欠落情報(元の要求の一部であった)を供給できるようにする。その要求は、ユーザデバイス106を介してユーザに(視覚的に、聴覚的に、またはその両方で)提示され、ユーザは、「1234 Fake Street, Any Town」と言うものとしてよい。一実施形態において、ワークアラウンドエンジン328は、所定の閾値(たとえば、0、1、または2)に基づき元の要求の同じ部分を繰り返すことをユーザに求める要求を生成する回数を制限する。そのような一実施形態において、閾値を満たしたことに応答して、ワークアラウンドエンジン328は、追加の情報を求める異なるタイプの要求を使用する(たとえば、オプションのリストのうちから選択することをユーザに促す)。
【００７４】
いくつかの実施形態において、ワークアラウンドエンジン328は、ときには「default list」と称される、オプションのリストから選択することをユーザに求める要求を生成する。たとえば、ワークアラウンドエンジン328が、「navigate」および「California」が理解されたと決定し、所在地住所および市名が欠落しており、「What letter does the city of your destination begin with」という要求を生成されたと決定し、「A-E is 1, F-J is 2, … etc.」などのオプションのリストを生成する。その要求は、ユーザデバイス106を介してユーザに(視覚的に、聴覚的に、またはその両方で)提示され、ユーザは、「1」と言うか、もしくは選択するか、またはオプション「A through E」の内容を述べることによって選択し得る。NLUエンジン326は、「navigate」からユーザの意図した要求、および「a」から「e」(含む)までの間の英字で始まるカリフォルニア州の市をそれでも決定できないので、ワークアラウンドエンジン328は、「A is 1, B is 2, … etc」などのオプションの別のリストを生成する。その要求は、ユーザデバイス106を介してユーザに(視覚的に、聴覚的に、またはその両方で)提示され、ユーザは、「1」と言うか、もしくは選択するか、またはオプション「A」の内容を述べることによって選択し得る。ワークアラウンドエンジン328は、「Any Town」が市として識別され、「Fake Street」が市町村名として識別され、「1234」が番地として識別されるまで、オプションをフィルタリングし、フィルタリングされたオプションのリストを含む要求を生成し続けるものとしてよい。
【００７５】
実施形態に応じて、オプションは、クライアントデバイスのディスプレイに視覚的にリストとして表示されるか、またはテキスト読み上げ機能を使用してクライアントデバイス106を介してユーザ112に対して読み上げられるか、またはその両方であるものとしてよい。一実施形態において、リストオプションが、一度にグループ単位(たとえば、3〜5のグループ単位)で提示される。たとえば、8個のオプションのリストが、第1のセットに4つのオプションが含まれるものとして2セット単位で提示されてよく、ユーザは、「next」と言うことによって次のセットを要求することができ、4つのオプションの第2のセットが提示される。一度に提示されるオプションの数を制限することで、ユーザがその多さに圧倒される可能性を減じ、有用性を高めることができる。複数のセットに分割されたオプションのリストをナビゲートするために、一実施形態において、ユーザは、「start」などのコマンドを使用して、リストの第1のセットに進むか、「end」を使用してリストの末尾に進むか、「next」を使用してリスト内の次のセットに進むか、「previous」を使用してリスト内の前のセットに進むか、または「goto ___」(たとえば、「go to the letter V」)を使用してナビゲートするかもしくは文字でフィルタリングするものとしてよい。
【００７６】
いくつかの実施形態において、ワークアラウンドエンジン328の要求の結果としてのダイアログは、任意の順序で要求タイプの間を遷移するものとしてよい。たとえば、一実施形態において、ワークアラウンドエンジン328は、ユーザがオプションを選択した後に、ワークアラウンドエンジンは、オプションのリストなしで追加の情報を入力するようユーザに促し得る。たとえば、上で説明されているようなオプションのリストを使用して「Any Town」が市であることを受けた/決定した後に、ワークアラウンドエンジン328は、「What is the name of the street in Any Town, CA?」という要求を生成し、ユーザは「Fake Street」で口頭により応じるものとしてよい。「Fake Street」という応答が、理解できないものである場合、一実施形態において、ワークアラウンドエンジン328は、ユーザが繰り返すことを要求し得るか、またはユーザがワークアラウンドエンジン328によって生成されたオプションのリストから選択することを要求し得る。
【００７７】
いくつかの実施形態において、ワークアラウンドエンジン328によって生成される要求は、ユーザが否定で応答する(たとえば、「No」と言う)必要性を最小限度に抑えるか、またはなくすために生成される。たとえば、ワークアラウンドエンジン328は、市の最初の文字に対するオプションのリストを生成し、「Does the California city start with the letter A?」という行で要求を送信するのではなくユーザが適切なオプションを選択することを要求するが、これは上記の例の場合にyesとなるが、そのような要求は、結果として、他の場合にはnoという結果を生じる可能性が高い。
【００７８】
使用事例の上記の「navigate to 1234 Fake St. …」の例であること、および多くの他の使用事例が存在することは理解されるべきである。たとえば、ユーザが「Call Greg」を要求し、ユーザの電話帳にGregという名前の連絡先が複数載っている(たとえば、Greg R.、Greg S. Greg T.)と仮定すると、一実施形態において、ワークアラウンドエンジン328は、オプションのリスト付きで要求「Which Greg would you like to call? Greg R. is 1. Greg S. is 2. Greg T. is 3.」を送信し、ユーザは、望むGregに関連付けられている番号をしゃべるものとしてよい。
【００７９】
さらに、上記の例において、元の要求の一部が、NULエンジン326、アクター(すなわち、それぞれ、ナビゲーションアプリケーションおよび電話アプリケーション)、およびエンティティの一部(すなわち、それぞれ、CaliforniaおよびGreg)によって理解可能であったが、ワークアラウンドエンジン328は、元の要求が全体としてNLUエンジン326によって理解可能でなかったとき、またはタプルの他の部分が欠落しているときに動作し得る。たとえば、ワークアラウンドエンジン328は、所望のアクター(たとえば、ユーザが使用することを望んでいるアプリケーション)、所望のアクション(たとえば、アプリケーションの機能または特徴)、所望のエンティティ(たとえば、アクションのターゲット、アクションの受信者、アクションに対する入力、など)を取得する1つまたは複数の要求を行うものとしてよい。一実施形態において、ワークアラウンドエンジン328は、NLUエンジン326の要求時に、またはNLUエンジン326は、ユーザの意図する要求を表す完全なタプルを有するまで、要求を生成する。別の例において、NLUエンジン326がメッセージを理解したが、アクター(たとえば、使用するユニファイドメッセージングクライアント--電子メール、SMS、Facebookなどでサービスする)およびエンティティ(たとえば、受信者)を理解していないと仮定すると、一実施形態において、ワークアラウンドエンジン328は、この追加の情報を要求する。
【００８０】
ワークアラウンドエンジン328を参照しつつ上で説明されている特徴および機能は、いくつかの制約された動作環境では(たとえば、運転中に)危険であるか、または違法であり得るユーザが要求の一部分をタイプ入力する操作を必要とすることなく、ユーザの意図した要求が決定され最終的に実行され得る(たとえば、ユーザがタッチスクリーンまたは他の入力を介して話し、および/または単純な選択を行い得る)自動トラブルシューティングメカニズムを有利に備えるものとしてよく、それによってユーザ112およびユーザ112の周りにいる人々の安全性を高めることは理解されるべきである。ワークアラウンドエンジン328を参照しつつ上で説明されている特徴および機能は、有利には、結果として、システム100が「ギブアップする」か、またはユーザをウェブ検索などの既定設定に押す可能性が低いときにユーザの満足度がより高まることはさらに理解されるべきである。
【００８１】
一実施形態において、ワークアラウンドエンジン328は、追加の情報を求める要求をテキスト読み上げエンジン119およびクライアントデバイスのディスプレイ(図示せず)上に内容を表示するためのグラフィックスエンジンのうちの1つまたは複数に受け渡す。別の実施形態において、ワークアラウンドエンジン328は、追加の情報を求める要求を記憶装置デバイス241(または通信可能にアクセス可能な他の非一時的記憶媒体)に記憶する。たとえば、テキスト読み上げエンジン119および/またはグラフィックスエンジン(図示せず)を含むシステム100の他のコンポーネントは、記憶装置デバイス241(または他の非一時的記憶媒体)にアクセスすることによって追加の情報を求める要求を取り出し、それをクライアントデバイス106を介してユーザ112に提示するために送信することができる。
【００８２】
接続性エンジン330は、ユーザの意図した要求を処理するためのコードおよびルーチンを備える。一実施形態において、接続エンジン330は、プロセッサ202によって実行可能である一組の命令である。別の実施形態において、接続エンジン330は、メモリ204内に記憶されており、プロセッサ202からアクセス可能であり、プロセッサ202によって実行可能である。いずれかの実施形態において、接続エンジン330は、プロセッサ202、クライアントデバイス106の他のコンポーネント、およびシステム100の他のコンポーネントと連携し、通信するように適合されている。
【００８３】
一実施形態において、接続エンジン330は、モジュールのライブラリ(図示せず)を含む。モジュールは、アプリケーションの機能を公開する一組のコードおよびルーチンを含み得る。たとえば、電話モジュールは、電話アプリケーションの機能(たとえば、電話をかける、電話を受ける、音声メールを取り出す、連絡先リストにアクセスするなど)を公開する。一実施形態において、モジュールは、ユーザが別のクライアントデバイス106(たとえば、自動車)を通じてクライアントデバイス(たとえば、電話)上のそのような機能にアクセスできるようにアプリケーション(たとえば、電話アプリケーション)の機能を公開する。いくつかの実施形態において、いくつかの特徴および機能は、特定のデバイスまたはデバイスタイプが存在していることを必要とし得る。たとえば、いくつかの実施形態において、電話またはSMSテキスト機能は、自動車が電話と通信可能に結合されていない限り、自動車を通じて利用可能ではあり得ない。モジュールのライブラリおよびモジュールのモジュール性は、アプリケーションが更新されるとき、または新しいアプリケーションとインターフェースすることが音声および接続エンジンにとって望ましくなったときに、容易な更新を円滑にし得るものである。
【００８４】
いくつかの実施形態において、この機能が完了する(たとえば、長いレポートを生成する)のに長い時間を要するときに、エージェント/アシスタントは、いつ機能が終了するかをユーザに通知する(たとえば、TTS、電子メール、SMSテキストなど)。そのような一実施形態において、システム100は、連絡を取る最も速い手段を決定する、たとえば、システムは、ユーザがFacebookにログインしたと決定し、ユーザに、機能が完了していることを伝えるFacebookメッセージを送信する。
【００８５】
一実施形態において、システム100の音声アシスタントは、1つまたは複数の他の音声アシスタント(たとえば、AppleのSiri、MicrosoftのCortana、GoogleのGoogle Nowなど)と対話するための1つまたは複数のモジュールを備える。たとえば、一実施形態において、ユーザが「Search Google Now for X」または「Ask Siri Y」などのショートカットまたはキーワードを含む音声入力を行ったことに応答して、接続モジュール330は、それぞれGoogle NowまたはSiriに接続し、対話するためのモジュール330を選択し、クエリをその音声アシスタントに転送する。一実施形態において、音声および接続エンジン109/124は、ユーザエクスペリエンスのフローの制御を再開する(たとえば、ダイアログを再開するか、または機能およびアシスタンスを提供する)ようにシステム100のパーソナルアシスタントをトリガーする目覚まし単語に対する音声入力を監視し得る。そのような一実施形態は、有利には、システム100を操作するエンティティが他の音声アシスタントおよびその特徴へのアクセスを顧客に提供することを可能にする。たとえば、自動車メーカーは、有利には、顧客が顧客の携帯電話の音声アシスタント(たとえば、顧客がiPhone(登録商標)を使用しているときにSiri)にアクセスすることを可能にするか、または別の音声アシスタントで顧客音声アシスタントオプションを補う(たとえば、顧客がiPhone(登録商標)を使用しているときにGoogle Nowおよび/またはCortanaへのアクセスを提供する)ことができる。
【００８６】
接続エンジン330は、ユーザの意図した要求を処理する。一実施形態において、接続エンジン330は、NLUエンジン326からタプルを受信し、タプル内のアクター(電話)に基づきモジュール(たとえば、電話モジュール)を決定し、アクション(たとえば、コール)およびタプルのエンティティ/アイテム(たとえば、Greg)を決定されたモジュールに提供し、モジュールは、アクターアプリケーションに、エンティティ/アイテムを使用してアクションを実行させる(たとえば、電話アプリケーションにGregに電話をかけさせる)。
【００８７】
例示的なサーバサイドの音声および接続エンジン124
次に図4を参照すると、一実施形態に従って、サーバサイドの音声および接続エンジン124がより詳細に示されている。例示されている実施形態において、サーバサイドの音声および接続エンジン124は、コンテキストエージェント422、コンテキストエンジン424、およびフェデレーションエンジン(federation engine)426を備える。サーバサイドの音声および接続エンジン124に含まれるコンポーネント422、424、426は、同じ音声および接続サーバ122上で必ずしもすべて必要ではないことは理解されるであろう。一実施形態において、モジュール422、424、426および/またはその機能は、複数の音声および接続サーバ122に分散される。
【００８８】
コンテキストエージェント422は、クライアントデバイス106と音声および接続サーバ122との間でコンテキストを同期させ、同期を維持するためのコードおよびルーチンを備える。一実施形態において、コンテキストエージェント422は、プロセッサ202によって実行可能である一組の命令である。別の実施形態において、コンテキストエージェント422は、メモリ204内に記憶されており、プロセッサ202からアクセス可能であり、プロセッサ202によって実行可能である。いずれかの実施形態において、コンテキストエージェント422は、プロセッサ202、音声および接続エンジン122の他のコンポーネント(たとえば、バス206を介して)、システム100の他のコンポーネント(たとえば、通信ユニット208を介してクライアントデバイス106)、およびサーバサイドの音声および接続エンジン124の他のコンポーネントと連携し、通信するように適合されている。
【００８９】
クライアントサイドコンテキストホルダ324を参照しつつ上で説明されているように、コンテキストエージェント422は、サーバサイドコンテキストホルダとして動作し、クライアントサイドコンテキストホルダ324と同期する。一実施形態において、クライアントサイドおよびサーバサイドコンテキストが同一でない場合に、クライアントサイドが優先する。クライアントサイドがサーバサイドに優先することは、クライアントサイドがユーザ112とより直接的に対話し、したがって、たとえば、関連付けられているセンサがクライアントデバイス106に配置され、ネットワーク102の信頼性が正確な最新のコンテキストを維持するサーバサイドの能力に影響を及ぼし得ることから、コンテキストを定義するためにより正確なリアルタイムデータ(たとえば、ロケーション、光度、現地時間、温度、速度など)を有する可能性がより高いものとしてよいので有益であり得る。
【００９０】
一実施形態において、コンテキストエージェント422は、現在のコンテキストをコンテキストエージェント424に受け渡す。たとえば、コンテキストエージェントは、現在のコンテキストを送信するためにコンテキストエンジン424に通信可能に結合される。一実施形態において、コンテキストエージェント422は、現在のコンテキストを記憶装置デバイス241(または通信可能にアクセス可能な他の非一時的記憶媒体)に記憶し、コンテキストエンジン424は、記憶装置デバイス241(または他の非一時的記憶媒体)にアクセスすることによって現在のコンテキストを取り出すことができる。
【００９１】
コンテキストエンジン424は、1つまたは複数のコンテキストを生成し、維持するためのコードおよびルーチンを備える。一実施形態において、コンテキストエンジン424は、プロセッサ202によって実行可能である一組の命令である。別の実施形態において、コンテキストエンジン424は、メモリ204内に記憶されており、プロセッサ202からアクセス可能であり、プロセッサ202によって実行可能である。いずれかの実施形態において、コンテキストエンジン424は、プロセッサ202、サーバサイドの音声および接続プラットフォーム124の他のコンポーネント、およびシステムの他のコンポーネントと連携し、通信するように適合されている。
【００９２】
一実施形態において、コンテキストエンジン424は、コンテキストの履歴を作成するために現在のコンテキストをアーカイブする。そのような一実施形態は、機械学習と併用され、それにより、パターンまたは習慣を認識する、ワークフロー内の次のステップを予測する、などを行ってNLUエンジン326の理解を知らせるか、またはダイアログをプロアクティブに開始するものとしてよい。たとえば、ユーザxが、ユーザタイプXのグループからの閉じたプロファイルであると仮定すると、一実施形態において、コンテキストエンジン424は、グループ内のxと他のすべてとの間の差を検出して、特定の挙動、習慣、クエリ、...を捕捉し、ユーザへのプロアクティビティを形成する。たとえば、ユーザが劇場を求めており、コンテキストエンジン424が、特定の日本食レストランのような同じグループ内の他のユーザを検出すると仮定すると、一実施形態において、システム100は、システム100がユーザが映画を見る前には時間がないことをユーザのスケジュールの中に検出したという理由によりユーザはその呼び物の後にその日本食レストランを予約することをプロアクティブに提案する。いくつかの実施形態において、システム100は、レストランメニューからAPIにアクセスできる(いくつかのウェブサイトは、この種のAPIを提供している)。システム100は、そのメニューまたは日替わりの特別料理がユーザの嗜好にぴったり合っていると理解し、エージェントの回答で、読み取りユーザの注意を引くメニューまたは日替わりの特別料理を直接読み出すものとしてよい。
【００９３】
フェデレーションエンジン426は、ユーザのアカウントおよびクライアントデバイス106のうちの1つまたは複数を管理するためのコードおよびルーチンを備える。一実施形態において、フェデレーションエンジン426は、プロセッサ202によって実行可能である一組の命令である。別の実施形態において、フェデレーションエンジン426は、メモリ204内に記憶されており、プロセッサ202からアクセス可能であり、プロセッサ202によって実行可能である。いずれかの実施形態において、フェデレーションエンジン426は、プロセッサ202、アプリケーションサーバ122の他のコンポーネント、および開発アプリケーション124の他のコンポーネントと連携し、通信するように適合されている。
【００９４】
一実施形態において、フェデレーションエンジン426は、統一識別情報を管理する。統一識別情報は、限定はしないが、ユーザのアカウント(たとえば、Facebook、Google+、Twitterなど)、ユーザのクライアントデバイス106(たとえば、タブレット、携帯電話、TV、自動車など)、前の音声入力およびダイアログなどのうちの1つまたは複数を含み、ユーザのソーシャルネットワークおよび/または習慣に基づきユーザエクスペリエンスを高めるものとしてよい。統一識別情報は、システム100の特徴および機能を増強し得る、ユーザに関する集約情報をもたらす。たとえば、ユーザ112が「I need gas」という入力を与えると仮定する。一実施形態において、統一識別情報の集約データへのアクセスは、システム100が、ユーザの意図した要求がガソリンスタンドまでの道案内であること、およびガソリンスタンドがひいきにしているバーまでの途上にあるべきであることを理解することを可能にし得る(たとえば、ユーザが必ず立ち寄る、ガソリン価格が最低である、ユーザの後ろの方により近いガソリンスタンドがあるとしてもそのバーまでの道に沿った移動方向にある、または金曜日の午後6時以降であり、集約データから金曜日には仕事の後にひいきにしているバーへユーザが向かっていることがわかるので、より近く、システム100がユーザが向かっていると決定する際の道から外れている特定のブランドのガソリンスタンドまで)。別の例では、システム100は、集約データを使用して、特定のレストランを選択し、その特定のレストランにユーザを導くことができる(たとえば、オープンテーブルのようなサービスを使用して行われた前の予約、yelp上のユーザのレストランレビュー、ならびに食品に関するユーザ112とシステム100との間の前の音声クエリおよびダイアログなどの集約データに基づく)。
【００９５】
フェデレーションエンジン426は、ユーザのデバイスを管理して、一方のクライアントデバイス106から別のクライアントデバイスへのユーザの遷移を調整する。たとえば、ユーザ112は、ユーザのタブレット(すなわち、クライアントデバイス106)を介して、今日のヘッドラインを要求しており、システム100は、ヘッドラインのユーザ112への読み上げを開始すると仮定する。また、次いで、ユーザ112は、自分が仕事に遅れそうだと認識し、ヘッドラインの読み上げの中止を要求すると仮定する。一実施形態において、フェデレーションエンジン426は、タブレットからユーザの自動車(すなわち、別のクライアントデバイス106)へのユーザの遷移を管理し、したがって、ユーザ112は、自動車に乗り込んだ後、システム100が継続し、システム100がタブレットで聞き残したところからヘッドラインの読み上げを続けるよう要求することができる。フェデレーションエンジン426は、また、ユーザが仕事場に到着したときにユーザの携帯電話(すなわち、さらに別のクライアントデバイス106)への遷移を提案し管理することもできる。そのような実施形態は、有利には、一方のクライアントデバイス106から別のクライアントデバイスへの、サービスの継続性、すなわち、「連続的サービス」を提供する。別の例において、ユーザは、ソファに座ってタブレットを使って自動車旅行を計画し、自動車のナビゲーションシステムの地図にルートを書き込むことができる。一実施形態において、システム100は、ユーザが仕事の前にヘッドラインをレビューし、仕事に行く途中、自動車内でも継続する習慣を有すると認識することができ、仕事に行く時間になったときに(たぶん、リアルタイム交通状況データに基づき)タブレット上でユーザにそのことをプロンプトで促し、ユーザが自動車内でヘッドラインを再開したいかどうかを尋ねるものとしてよい。
【００９６】
一実施形態において、フェデレーションエンジン426は、一方のクライアントデバイス106から別のクライアントデバイスにコンテキストを受け渡して、受信者デバイスへの遷移を管理する。たとえば、フェデレーションエンジン426は、受信者デバイスのクライアントサイドコンテキストホルダ324に通信可能に結合される。別の実施形態において、フェデレーションエンジン426は、現在のコンテキストをサーバ122の記憶装置デバイス241(または通信可能にアクセス可能な他の非一時的記憶媒体)に記憶し、受信者デバイス106のクライアントサイドコンテキストエンジン324は、記憶装置デバイス241(または他の非一時的記憶媒体)にアクセスすることによって現在のコンテキストを取り出すことができる。
【００９７】
例示的な方法
図5、図6、および図7は、図1〜図4に関して上で説明されているシステムによって実行される様々な方法500、508、700を示している。
【００９８】
図5を参照すると、一実施形態による音声および接続プラットフォームを使用して要求を受信し、処理するための例示的な方法500を示している。ブロック502で、NLUエンジン326は、認識済み音声を受信する。ブロック504で、NLUエンジン326は、コンテキストを受信する。ブロック506で、NLUエンジン326は、適宜、ブロック504で受信されたコンテキストに基づき認識済み音声を前処理する。ブロック508で、NLUエンジン326は、ユーザの意図した要求を決定する。ブロック510で、接続エンジンは、意図された要求を処理し、方法500は終了する。
【００９９】
図6を参照すると、一実施形態によるユーザの意図した要求を決定するための例示的な方法508が示されている。ブロック602で、NLUエンジン326は、ユーザの要求およびコンテキストに基づきタプルを生成する。ブロック604で、NLUエンジン326は、タプルを完成させるために追加の情報が必要かどうかを決定する。NLUエンジン326が、タプルを完成させるために追加の情報が必要ない(604-No)と決定したときに、方法508は終了する。NLUエンジン326が、タプルを完成させるために追加の情報が必要である(604-Yes)と決定したときに、方法508はブロック606で継続する。
【０１００】
ブロック606で、ワークアラウンドエンジン328は、タプルを完成させるためにどのような追加の情報が必要かを決定し、ブロック608で、必要な追加の情報を供給するようユーザに促すプロンプトを生成する。ブロック610で、NLUエンジン326は、ブロック610で生成されたプロンプトへのユーザの応答に基づきタプルを修正し、方法はブロック604で継続し、ブロック604、606、608、および610は、NLUエンジン326が、タプルを完成させるために追加の情報が必要でない(604-No)と決定するまで繰り返され、方法508は終了する。
【０１０１】
図7を参照すると、別の実施形態による音声および接続プラットフォームを使用して要求を受信し、処理するための例示的な方法700を示している。
【０１０２】
上記の説明では、説明を目的として、本開示を完全に理解できるように多数の具体的詳細が述べられている。しかしながら、本明細書で説明されている技術は、これらの具体的な詳細がなくても実施され得ることは理解されるべきである。さらに、説明をわかりにくくしないために、様々なシステム、デバイス、および構造がブロック図形式で示されている。たとえば、様々な実装が、特定のハードウェア、ソフトウェア、およびユーザインターフェースを有するものとして説明されている。しかしながら、本開示は、データおよびコマンドを受信することができる任意のタイプのコンピューティングデバイス、およびサービスを提供する周辺デバイスに適用される。
【０１０３】
本明細書において「一実施形態」または「実施形態」と記述されている場合、これは、その実施形態に関して説明されている特定の特徴、構造、または特性が少なくとも1つの実施形態に含まれることを意味する。「一実施形態において」という言い回しが本明細書の様々な箇所に記載されていても、必ずしもすべて同じ実施形態を指しているとは限らない。
【０１０４】
いくつかの場合において、様々な実装が、コンピュータメモリ内のデータビットに対するオペレーションのアルゴリズムおよび記号表現に関して本明細書に提示され得る。アルゴリズムは、本明細書では、また一般的に、望む結果をもたらす自己矛盾のない一組のオペレーションであることが企図される。これらのオペレーションは、物理的量の物理的操作を必要とするオペレーションである。通常、必ずというわけではないけれども、これらの量は、格納、転送、組合せ、比較、および他の何らかの形の操作が可能な電気的または磁気的信号の形態をとる。主に共通使用の理由から、これらの信号をビット、値、要素、記号、文字、語、数、または同様のものとして参照することがときには都合がよいことが実証されている。
【０１０５】
しかし、これらの語および類似の語はすべて、適切な物理的量に関連付けられ、これらの量に付けられる単に便利なラベルにすぎないことを念頭におくべきである。以下の説明から明らかなように特に断りのない限り、本開示全体を通して、「処理」、「コンピューティング」、「計算」、「決定」、「表示」、または同様のものを含む語を利用する説明は、コンピュータシステムのレジスタおよびメモリ内で物理的(電子的)量として表されているデータを操作し、コンピュータシステムのメモリまたはレジスタまたは他のそのような情報記憶、伝送、または表示デバイス内で物理的量として同様に表現されている他のデータに変換するコンピュータシステム、または類似の電子コンピューティングデバイスのアクションおよびプロセスを指すことは理解される。
【０１０６】
本明細書で説明されている様々な実装は、本明細書のオペレーションを実行するための装置にも関係し得る。この装置は、必要な目的のために特別に制作され得るか、またはコンピュータに記憶されているコンピュータプログラムによって選択的にアクティブ化されるかもしくは再構成される汎用コンピュータを備えることができる。そのようなコンピュータプログラムは、限定はしないが、各々コンピュータシステムバスに結合される、フロッピィーディスク、光ディスク、CD ROM、および磁気ディスクを含む任意のタイプのディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光カード、不揮発性メモリとともにUSBキーを備えるフラッシュメモリ、または電子的命令を記憶するのに適した任意のタイプの媒体を含む、コンピュータ可読記憶媒体に記憶され得る。
【０１０７】
本明細書で説明されている技術は、ハードウェアだけによる実装、ソフトウェアだけによる実装、またはハードウェアとソフトウェアの両方の要素を含む実装の形態をとり得る。たとえば、この技術は、限定はしないが、ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、ソフトウェアで実装され得る。
【０１０８】
さらに、本技術は、コンピュータもしくは命令実行システムによって、またはコンピュータもしくは命令実行システムと関連して使用するためのプログラムコードを提供するコンピュータ使用可能もしくはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態をとり得る。本明細書の説明のために、コンピュータ使用可能もしくはコンピュータ可読媒体は、命令実行システム、装置、もしくはデバイスで使用するための、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを含む、記憶する、伝達する、伝搬させる、または搬送することができる任意の非一時的記憶装置とすることができる。
【０１０９】
プログラムコードを記憶し、および/または実行するのに適したデータ処理システムは、システムバスを通じてメモリ要素に直接的にまたは間接的に結合された少なくとも1つのプロセッサを備えていてよい。メモリ要素は、プログラムコードの実際の実行時に使用されるローカルメモリ、大容量記憶装置、および実行時にコードが大容量記憶装置から取り出されなければならない回数を減らすための少なくとも一部のプログラムコードを一時的に記憶するキャッシュメモリを含み得る。入出力またはI/Oデバイス(限定はしないが、キーボード、ディスプレイ、ポインティングデバイスなどを含む)は、直接的に、または介在するI/Oコントローラを通じてのいずれかで、システムに結合され得る。
【０１１０】
ネットワークアダプタもシステムに結合されてよく、これにより、データ処理システムを他のデータ処理システム、記憶装置デバイス、リモートプリンタなどに、介在するプライベートおよび/またはパブリックネットワークを通じて結合させることが可能になるものとしてよい。ワイヤレス(たとえば、WiFi(商標))トランシーバ、Ethernetアダプタ、およびモデムは、ネットワークアダプタのごく少数の例にすぎない。プライベートおよびパブリックネットワークは、任意の数の構成および/またはトポロジーを有し得る。データは、たとえば、様々なインターネット層、トランスポート層、またはアプリケーション層プロトコルを含む様々な異なる通信プロトコルを使用してネットワークを介してこれらのデバイス間で送信され得る。たとえば、データは、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、伝送制御プロトコル(TCP)、ハイパーテキスト転送プロトコル(HTTP)、セキュアハイパーテキスト転送プロトコル(HTTPS)、HTTP上の動的適応ストリーミング(DASH)、リアルタイムストリーミングプロトコル(RTSP)、リアルタイムトランスポートプロトコル(RTP)およびリアルタイムトランスポート制御プロトコル(RTCP)、ボイスオーバーインターネットプロトコル(VOIP)、ファイル転送プロトコル(FTP)、WebSocket(WS)、ワイヤレスアクセスプロトコル(WAP)、様々なメッセージングプロトコル(SMS、MMS、XMS、IMAP、SMTP、POP、WebDAVなど)、または他の知られているプロトコルを使用してネットワークを介して送信され得る。
【０１１１】
最後に、本明細書で提示されている構造、アルゴリズム、および/またはインターフェースは、特定のコンピュータまたは他の装置に本質的に関係しているわけではない。様々な汎用システムが、本明細書の教示に従ってプログラムとともに使用され得るか、必要な方法ブロックを実行するためにより専門化された装置を製作することが都合よいことが実証され得る。これらの様々なシステムに対する必要な構造は、上記の説明から明らかになる。それに加えて、本明細書は、特定のプログラミング言語を参照して説明されてはいない。本明細書で説明されているように本明細書の教示を実装するために様々なプログラミング言語が使用され得ることは理解されるであろう。
【０１１２】
前述の説明は、例示および説明を目的として提示されている。網羅的であることも本明細書を開示されている正確な形態に制限することも意図されていない。上記の教示に照らして、多数の修正形態および変更形態が可能である。本開示の範囲は、この詳細な説明では限定されず、むしろ、本出願の請求項によって制限されることが意図されている。理解するであろうが、本明細書は、本発明の精神または本質的特徴から逸脱することなく他の特定の形態で具現化され得る。同様に、モジュール、ルーチン、特徴、属性、方法論、および他の態様の特定の命名および分割は、必須または重要ではなく、本明細書またはその特徴を実装するメカニズムは、異なる名称、分割、および/または形式を有し得る。
【０１１３】
さらに、本開示のエンジン、モジュール、ルーチン、特徴、属性、方法論、および他の態様は、ソフトウェア、ハードウェア、ファームウェア、または前記の任意の組合せとして実装され得る。また、本明細書の、一例がモジュールである、コンポーネントが、ソフトウェアとして実装されるときには必ず、コンポーネントは、スタンドアロンプログラムとして、より大きいプログラムの一部として、複数の別々のプログラムとして、スタティックまたはダイナミックリンクライブラリとして、カーネルロード可能モジュールとして、デバイスドライバとして、および/または現在知られているもしくは将来の他のありとあらゆる方法として実装され得る。それに加えて、本開示は、特定のプログラミング言語による、または特定のオペレーティングシステムもしくは環境向けの実装にいかなる形でも制限されない。したがって、本開示は、以下の請求項で規定される発明対象の範囲を例示し、制限することを目的としていない。
【０１１４】
付録A:自動車パーソナルアシスタントおよびGoPad
GoPadプロジェクトの要約
GoPadは、車載Androidデバイスをより安全に、より便利に体験できるようにすることによってAndroidデバイスおよび車両ユーザ挙動データを生成するアクセサリ製品である。GoPadは、精選されたAndroidデバイスを車両により緊密に統合する。しかしながら、GoPadは、Androidデバイスとの統合に限定されず、他のデバイス(たとえば、iOS、Windows、Fireなど)とも統合し得る。
【０１１５】
GoPadデバイスは、クリップメカニズムを介してフロントガラスの近くのユーザの車両のダッシュボードに貼り付けられるハードウェアクレードルである。これは次の特徴を備える。
・  車両情報をキャプチャし、システムに送信して分析し、ユーザに提示するためのOBD2 Readerハードウェアデバイス
・  内蔵Bluetooth(登録商標)接続を有しない車両にハンズフリー機能を実現するクレードル内のBluetooth(登録商標)ラジオおよびデュアルマイクロフォン
・  車両ステレオシステムへのAux-in接続を介したオーディオを用いる、音声ダイヤルおよび制御を含む、ハンズフリー携帯電話の使用
・  車両ステレオシステムへのAux-in接続を介したオーディオを用いる、音声開始および音声制御を含む、ハンズフリーナビゲーション
・  Aux-inステレオ接続を介したカーステレオへのオーディオ出力を備えるメディア再生
・  充電および使用のためのUSB(車両aux電源ポート)を介したAndroidデバイスへの給電
・  音声および接続プラットフォームを介したすべての音声制御機能のためのインテリジェントエージェントアシスタンス
・  音声および接続プラットフォームを介したインテリジェントエージェント、ユーザデータキャプチャ、コンテンツの配信のためのクラウド接続ウェブサービス
・  ユーザの運転体験を高めるためのAndroidデバイス上の運転効率およびフィードバック特徴
・  Androidデバイスのアイズフリー使用をさらに可能にするためのクレードル上の最適化された一組の物理的コントロール
・  ドライバが使用したいアプリを容易に、安全に起動することを可能にするための単純なアプリランチャメカニズム
・  サードパーティソフトウェアがクレードルの物理的ボタンを利用することを可能にするための単純な物理的/エージェントコントロールAPI
・  ハンズフリー着信テキストメッセージ読み上げ
・  ハンズフリーFacebookアクティビティ読み上げ
【０１１６】
クレードルのハードウェア
クレードルの設計
機械設計
クレードルは、2つの部分、すなわち1)ベースクレードルユニットと2)デバイス特有のアダプタとに分けて設計される。すべての主要機能は、ベースクレードルユニットに入り、アダプタはAndroidデバイス特有の物理的および電気的装着機能のみを受け持つ。
【０１１７】
クレードルの物理的フォームファクタは、デバイス+アダプタ(安全に)、指定された物理的コントロール、およびクレードルマザーボードを収容し、その一方でサイズおよび体積を最小にすべきである。デバイスは、後ろ向きに、または上下逆さに挿入可能であるべきでない。
【０１１８】
クレードル電子回路の冷却は受動的であり、通気口は過可能な最大の範囲内でユーザから見えないように隠されるか、または設計に組み込まれるものとする。
【０１１９】
インダストリアルデザイン
クレードルの全体的設計は、可能な限り直接的な観察/相互作用が少なくなるようにしつつユーザがアクションを完了するのを支援すべきものである。ボタンは、触って違いがわかるものであるべきである、適切であれば聴覚的/触覚的キューが使用されるべきである、など。
【０１２０】
クレードルのインダストリアルデザインはTBDであるが、公開デモ目的には非常に高いフィットアンドフィニッシュレベルが必要である。クレードルは、高級品レベルで組み立てられた実際の商品に似た感じのものである。このクレードルは、最高級のAudiまたはMercedes車の内装に対して場違いな感じがせず、材質およびプレゼンテーションに関してこれらの内装とマッチする。
【０１２１】
仕上げ材料の調査は、塗料、機械加工された金属、機械加工されたプラスチック、ゴム入り塗料などを含むべきである。
【０１２２】
物理的コントロール
ボタン
クレードルは、アイズフリーの使い勝手を高めるための物理的コントロール(ボタン)の選択を含む。
【０１２３】
次のボタンが必要である。
・  エージェントボタン:音声制御をアクティブ化する、アプリランチャをアクティブ化する、など
・  進むボタン:次のメディアトラック、通話終了/拒否
・  戻るボタン:前のメディアトラック、通話応答
・  再生/一時停止ボタン:メディアを再生するか、または再生を一時停止する、通話ミュート
【０１２４】
ボタンは、どのように使用されるか(1度押し、2度押し、長押しなど)に基づき複数のオーバーロードアクション(overloaded action)を可能にする。
【０１２５】
【表１】
0006671379.tif 000002
【０１２６】
照明
光の少ない環境内で使用するために物理的コントロールのバックライト照明/ハイライト照明が必要である。照明/凡例は、次のように振る舞うべきである。
・  進む/通話終了ボタン:通話がアクティブであるときを除き既定の照明を使用すべきである。通話がアクティブであるときに、通話終了凡例が、通話が終わるまで点灯しているべきである。
・  戻る/通話応答:通話がかかってきているときを除き既定の照明を使用すべきである。
・  再生/一時停止、ミュート:通話がアクティブであるときに、通話ミュート凡例が、点灯しているべきである。ボタンが押された場合、通話はミュート状態に入り、ミュート凡例バックライトは、赤色に変化して、ミュートステータスを指示するべきである。ボタンを再び押すと、ミュートステータスと凡例バックライト色とが切り替わる。
【０１２７】
クレードルのパワーオンを示すための邪魔にならない、および/または目を引くパイロットライトが必要である。
【０１２８】
アップグレード可能なファームウェア
クレードルのファームウェアは、デバイス上で実行されているGoPad Androidアプリケーションの制御の下で現場アップグレードが実行され得るように設計される。
【０１２９】
更新動作中にクレードルからデバイスが取り外されたことで生じ得るような、破損したファームウェア更新から回復するためのメカニズムが存在する。
【０１３０】
USBオーディオ
クレードルの設計は、デバイスからUSBオーディオを受け付けるステップ(デバイスがその機能を有しているとき)およびそれをクレードルのline-outに中継し、カーステレオのAux-Inを介して再生するステップを含み得る。
【０１３１】
電源
最大電力の供給
クレードルは、それ自体の電力ニーズに加えて、いつでも5.1V、2Aの電力をデバイスに供給することができるものとしてよい。
【０１３２】
デバイスの充電
クレードルは、次の機能が使用されている間、同時に充電状態に加えられる十分な電力を各デバイスに供給し得る。
・  ハンズフリー通話進行中
・  ハンズフリーナビゲーション進行中
・  メディア再生進行中(場合によっては一時停止)
【０１３３】
固有デバイスおよびバージョンID
クレードルは、固有デバイスID、さらにはハードウェアとファームウェアの両方のバージョン番号をサポートし得る。Androidアプリケーションは、これらの固有IDに対する読み取り/クエリを実行することができるものとしてよい。
【０１３４】
クレードルのログ記録
クレードルは、ソフトウェア開発およびデバッグ目的のためのアクティビティログ記録をサポートし得る。これらのログは、Androidアプリケーションにアクセス可能であってよい。
【０１３５】
ログに記録する項目の例は、限定はしないが、以下を含む。USB接続状態、ボタン押下、Bluetooth(登録商標)接続状態など。
【０１３６】
ケーブル
必要なケーブルは、以下のとおりである。
・  USBケーブル(給電用)
・  ステレオauxケーブル(オーディオ出力用)
【０１３７】
OBD2リーダ
ハードウェアのOBD2リーダデバイスが必要である。このデバイスは、車両情報を収集し、それをOPIシステムにアップロードして、分析し、その後ユーザに提示する。
【０１３８】
OBD2リーダモジュールは、Bluetooth(登録商標)ラジオを含み、GoPadが使用中であれば必ず情報を収集する。これは、情報をデバイスに送信し、その後、その情報を分析のためOPIシステムにアップロードする。
【０１３９】
将来のGoPadバージョンには、GoPadが使用中であるかどうかに関係なく、車両Iが運転中であれば必ず、車両情報を収集するセルラーラジオを含む代替的OBD2リーダモジュールが非常に望ましい。この解決方法は、GoPad2の開発と並行して調査される。第三者のパートナー(OEMソース)が望ましい。
【０１４０】
GoPadベースのハンズフリー機能
ネイティブのBluetooth(登録商標)ハンズフリー機能を欠いている車両のため、GoPadはそのような特徴を備える。次のハードウェアコンポーネントが必要である。
【０１４１】
デュアルマイクロフォン
エコーキャンセルおよびノイズ除去技術とともに、デュアルマイクロフォンが必要である。非常に高いレベルの音質が要求される。通話の遠隔端の人は車載ハンズフリーデバイスを介してユーザが話していると決定することができないことが望ましい。
【０１４２】
音質ベンチマークデバイスは、Plantronics Voyager Legend BTヘッドセットである。
【０１４３】
Bluetooth(登録商標)ラジオ
GoPadクレードルは、ハンズフリープロファイルをサポートするBluetooth(登録商標)ラジオを含む。デバイスは、クレードル内に挿入されたときにクレードルBTラジオに自動接続し、取り外されたときに切断する。BT接続が何らかの理由により切れた場合、接続は、即座に再確立される。
【０１４４】
Androidアプリソフトウェア--リリースの一実施形態
軽量ランチャ
軽量ランチャは、デバイスがクレードル内に置かれると自動的にアクティブ化し得る。アクティブである場合、電話がクレードルから外れたときに非アクティブ化すべきである。初期セットアップの体験は、可能な限り滑らかであり、ユーザによる最小限度の手作業による構成を必要とすべきである。
【０１４５】
最初のリリースでは、ランチャは、次の機能へのアクセスを与える。
・  デフォルトショートカットバー:
○  電話をかける
○  メッセージ:テキスト、メール、およびFacebookメッセージ
○  ナビゲーション
○  ニュースキャスター:一般およびトピックニュース+Facebookユーザタイムライン
○  メディア再生:ローカルおよびオンラインストリーミングメディア
・  自動車パーソナルアシスタント
・  アプリケーションリスト
・  車両モジュール
・  GoPad設定
【０１４６】
クレードルに挿入した後、ランチャは、スプラッシュ画面を短時間の間表示する。次いで、軽量ランチャのホーム画面を表示し、ユーザ入力を待つ。
【０１４７】
その後エージェントボタンを2度押しすると、現在フォアグラウンドでどのアプリケーションが走っていようと、軽量ランチャを立ち上げ、ユーザが新しい機能を選択することを可能にする。GoPadアプリがフォアグラウンドですでに実行中である場合、エージェントボタンを2度押しすると、ユーザはホーム画面に戻る。
【０１４８】
システム音量
ランチャは、オーディオ出力音量を固定レベル(TBD)に設定し、ユーザは、車両のステレオ音量調節を使用して音量を調整する。
【０１４９】
画面の輝度
クレードルに装着しているときに、デバイスは、自動画面輝度調節に強制されるべきである。これは、デバイスがクレードルから取り外されたときにユーザの設定に戻るべきである。
【０１５０】
物理的コントロール
クレードル上の物理的コントロールは、それらがどのように使用されるかに応じて次の機能を有する。
【０１５１】
【表２】
0006671379.tif 000003
【０１５２】
自動車パーソナルアシスタント
自動車パーソナルアシスタント(エージェント)は、エージェントボタンを1度押しすることによってアクティブ化される。エージェントは、声で応え、それが使用可能状態にあることを指示する。
【０１５３】
【表３】
0006671379.tif 000004
【０１５４】
エージェントボタンのシーケンス動作は、次のように3ステップである。
1.待機モード:ユーザは、ボタンを押して音声認識をアクティブ化する必要がある
2.発話モード:エージェントは、ユーザに対してプロンプトを発話している
3.聴取モード:エージェントは、ユーザのセンテンスを聴いている
【０１５５】
エージェントがこのリリースで取り扱う機能は以下のものに制限される。
・  特徴カテゴリの間のアプリ内ナビゲーション(電話、メッセージ、ナビゲーション、メディア、ニュース/Facebook、車両、設定)
・  通話応答/通話拒否/連絡先からのダイヤル/通話履歴からのダイヤル/任意の番号へのダイヤル。通話拒否は、APIによってサポートされていないように見えるので、われわれは、ユーザが拒否を選択した場合に電話が鳴るのを停止し、着信表示をクリアし、次いで、ユーザがそれに応答しなかった(本質的には生じたことである)かのように呼を自然に音声メールに進むことを可能にするべきである。
・  ナビゲーションを開始/キャンセルする。住所を直接話すか、または住所を間接的に話す(住所、国、町、通り、...の一部)、連絡先から住所を取得する、お気に入りの場所から住所を取得する。
・  ローカルビジネスを検索し(「Find me the nearest Starbucks」)、そこへのナビゲーションを開始する。
○  ローカルビジネスは、Google Maps APIまたはYelpで見つかり、ジェネリックコネクタは、将来、ローカルビジネスロケーションソースAPIの統合を可能にする必要がある。
・  ローカルメディアを再生する。プレイリスト/アルバム/アーチスト/楽曲/シャッフル
○  オンラインメディアはCPAの第2のバージョンに統合される必要がある:Spotify、Pandora
・  車両ステータス警告(お知らせのみ)。燃料レベル低下。エンジン警告灯をチェック。など。
・  サードパーティアプリケーションを名前で起動する。
・  ニュースカテゴリを選択し、読み上げる
・  Facebookの更新を読み上げる
【０１５６】
複数のマッチを減らすあいまい性除去機能が必要である(以下の画面参照)。
【０１５７】
一般的なユーザエクスペリエンス:音声および一般的なパターン
一般的なパターン
アプリケーションの音声シナリオを構築するアプローチは、次の事実に基づく。
・  音声認識が働く確率は、非常に限られている
・  エージェントは、否定的対話を制限する必要がある。
・  ユーザは、自分が行いたいアクションを達成するために可能なより小さい音声コマンドを与える必要がある。
・  対話の実行は、ASR信頼度によってではなく、達成する時間によって評価する必要がある。
【０１５８】
このビジョンに成功するために、エージェントは、両方のタイプのシナリオ、すなわち、直接音声パターンおよびワークアラウンドパターンのインテリジェントな組合せを使用する必要がある。
【０１５９】
直接音声パターン
直接音声パターンは、音声認識の分野では普通のものである。その品質は、ASRの信頼度とNLU(自然言語理解)の信頼度とによって妥当性確認される。
【０１６０】
電話モジュールおよび電話をかけるアクションの場合、「Bastien Vidal」(電話番号1を持つ固有の連絡先)に電話するように求めることができ、エージェントは、連絡先を直接見つけ出し、Bastien Vidalに電話をかけるアクションをユーザに提案する。
【０１６１】
直接音声パターンの問題は、ユーザの音声クエリとの直接マッチを有していないとき、または達成するユーザからクリアアクションへのより多くの情報を必要とするときに生じるものである。
【０１６２】
事例のサンプル:
・  私は多数の電話番号を持っている人に電話をかけたい
・  私は多数の電話番号と電子メールアドレスを持っている人にメッセージを送信したい
・  アドレスは直接音声認識によって間違ったアドレスであり、私は何もタイプ入力することができない(運転中のため)
【０１６３】
ワークアラウンドパターン(WAR)
WARパターンは、音声および接続プラットフォームが人間と機械との間の継続ダイアログ(一連の質問/回答の後に、エージェントは音声認識ボタンのアクティブ化を自動的に起動する)および時間的ダイアログマトリックスコンテキスト(Temporal Dialog Matrix Context)(TDMCの説明については以下参照)の作成を可能にするという事実に基づいている。
【０１６４】
継続ダイアログは、異なるタイプのWARシナリオの作成を可能にする
・  リスト項目選択
○  ナビゲーション項目のステップおよび番号の選択のあるリストの場合
・  頻度履歴プロアクティブ性(Frequence History proactivity)
○  
・  ステップバイステップ選択
【０１６５】
アプリケーションの各項目は、次の特性を有するリスト項目提示に基づく:
・  各項目は、1から5までの数字を有する。
・  各項目は、ラベルによって読み取られる
【０１６６】
一般項目リスト提示
・  一般的リスト
○  エンティティフィルタ
○  アルファベットフィルタ
・  アルファベット番号
・  履歴番号
【０１６７】
履歴頻度リスト提示
【０１６８】
スプラッシュ画面
Androidアプリが起動するときに、またデバイスがクレードル内に置かれたときに必ず、商標設定を表示するスプラッシュ画面が短時間表示される。
【０１６９】
【表４】
0006671379.tif 000005
【０１７０】
ログイン画面
ランチャログイン画面は、最初に電話がクレードル内に置かれているときに、またはユーザがAndroidアプリケーションから例示的にログアウトしたときにスプラッシュ画面の後に続く。これは、商標設定を表示し、ユーザ名/パスワードによるログインを提示する。アカウント作成リンクも提示され、これにより、ユーザは、必要ならば電子メール、ユーザ名/パスワードまたはFacebookアカウントを介して新規アカウントを作成することができる。
【０１７１】
【表５】
0006671379.tif 000006
【０１７２】
ホーム画面
ホームボタンが押されたとき、または電話がクレードル内に置かれたときに、ホーム画面は、上部に主要機能へのショートカットボタンを並べ、下部に何らかのステータス情報(温度およびコンパス方位)が示されている現在位置の地図を表示する。上部のバーは、ステータスおよび通知情報も適切なように反映する。
【０１７３】
【表６】
0006671379.tif 000007
【０１７４】
ホーム画面は、次の通知を表示する。
・  不在着信
・  着信メッセージ
・  車両故障
【０１７５】
電話
GoPadは、カスタムGoPad電話UXの背後でストックAndroid電話API(stock Android telephony API)を使用する。
【０１７６】
電話着信アナウンス
エージェントは、電話着信情報(電話をかけてきた人が連絡先に載っている場合には電話をかけてきた人の名前、そうでない場合には電話番号)を読み上げ、着信音を無音にし、必要ならばメディア再生を一時停止し、次いで、ユーザアクションを要求すべきである。ユーザは、次の3つの方法のうちの1つで応答することができる。
・  口頭で、電話を受けるか、または通話拒否して、それを音声メールに送信する。
・  画面上のタッチボタンを介して通話を許可/拒否する
・  前のトラック/通話許可または次のトラック/通話拒否ボタンを介する
【０１７７】
対話が終了した後、一時停止されていたメディアが再開されるべきである。
【０１７８】
タッチスクリーンから、電話着信が次のように提示される。
【０１７９】
【表７】
0006671379.tif 000008
【０１８０】
電話発信
電話発信は、エージェントボタンを押してエージェントを目覚めさせ、次いで、ダイヤルコマンドを番号または連絡先の名前とともに発話することによって口頭で開始され得る。
【０１８１】
複数の番号が連絡先の名前とマッチした場合、エージェントは、連絡先の新しい順に(すなわち、その番号で最近呼び出した、最近呼び出されたなど)、次いでアルファベット順にソートされたオプションの番号付きリストを発話する。次いで、ユーザは、呼び出すオプション番号を口頭で選択する。エージェントは、電話をかけて、その番号に対するその新しい値を更新する。
【０１８２】
次の方法を用いて電話タッチスクリーンを介して通話が開始され得る。
【０１８３】
【表８】
0006671379.tif 000009
【０１８４】
通話ステータス表示
すべての通話ステータス情報は、画面上部のステータスバーによって取り扱われる(上記のホーム画面参照)。
【０１８５】
オーディオ再生
メディア再生
メディアプレーヤは、次の選択カテゴリを介してAndroidネイティブメディアファイルを再生するために使用される。
・  アーチスト
・  アルバム
・  プレイリスト
【０１８６】
【表９】
0006671379.tif 000010
【０１８７】
長いリスト中の項目の高速選択は、リストのサブグループにアルファベット順にスキップすることによって円滑にされる。たとえば、以下のとおりである。
【０１８８】
【表１０】
0006671379.tif 000011
【０１８９】
画面の右縁上のアルファベットのリストは、高速ナビゲーションのために指先でこすられるものとしてよい。
【０１９０】
メディアプレーヤの一次コントロールは、エージェントを介するものである。与えられたカテゴリにおいて複数のマッチが可能であるときに、エージェントは、画面上に番号付きリストを提示し、ユーザが番号によるマッチを選択することを可能にする。たとえば、以下のとおりである。
【０１９１】
【表１１】
0006671379.tif 000012
【０１９２】
メディアプレーヤは、利用可能な場合にアルバムとともに、再生しながらアーチスト/アルバム/楽曲情報を表示する。経過時間および総時間が表示される。空いている場所があれば、次のトラック名も表示され得る。
【０１９３】
【表１２】
0006671379.tif 000013
【０１９４】
クレードル上の前、次、および再生/一時停止ボタンを押すことは、適宜再生に影響を及ぼすべきである。
【０１９５】
メディアプレーヤは、デバイス上の既定のロケーション内のメディアファイルを再生するべきである(すなわち、他のメディアプレーヤからの共有ライブラリは、そのメディアプレーヤからアクセス可能であるべきである)。
【０１９６】
プレイリストは、メディアプレーヤ固有なので、GoPadメディアプレーヤは、次のメディアプレーヤアプリケーションからプレイリストをインポートすべきである。
・  Google Play Music
・  Android Music App
【０１９７】
ナビゲーション
基本的ナビゲーション
ナビゲーションメカニックスは、ストックAndroid Google Navigationアプリケーションを介して取り扱われる。LWランチャおよびエージェントは、音声フロントエンドをGoogle Navに提供し、これは次のうちの1つを選択することによって宛先へのナビゲートを開始するために使用され得る。
・  お気に入り
・  最近の宛先
・  電話帳連絡先
・  任意の住所(「333 West San Carlos, San Jose, California」)
【０１９８】
【表１３】
0006671379.tif 000014
【０１９９】
軽量ランチャは、Google Navを開始し、それを宛先に渡し、その時点で、Google Navはナビゲーションプロバイダとして引き継ぐ。
【０２００】
ユーザは、ランチャ(または別のアプリケーション)に戻り、ナビゲーション機能をキャンセルすることなくナビゲーション機能をバックグラウンドにし、後でそれに戻ることができるものとしてよい。これを行う共通の方法は、エージェントボタンを2度押ししてホーム画面に戻るか、またはエージェントをアクティブ化して、新しい機能を要求するステップを含む。
【０２０１】
着信テキストメッセージ応答
エージェントは、電話帳に載っている場合に送信者の名前を含む、テキストメッセージを受信していることをユーザに口頭で通知し、折り返し電話するオプションを与えるか、または「I am driving right now and will get back to you shortly」の形態の自動化されたユーザ定義の決まり文句の応答を送信するべきである。
【０２０２】
【表１４】
0006671379.tif 000015
【０２０３】
Facebookアクティビティリーダ
GoPad Facebookアクティビティリーダは、GoPadアプリに組み込まれる。この特徴は、Facebookウォール投稿をユーザに読み上げて、リンク用に大きいボタンを提示する。
【０２０４】
【表１５】
0006671379.tif 000016
【０２０５】
着信Facebookメッセージも、着信テキストメッセージが読み上げられるのと全く同様に読み上げられる。ユーザは、決まり文句の応答を送信者に送信するものとしてよい。
【０２０６】
【表１６】
0006671379.tif 000017
【０２０７】
ニュースリーダ
GoPadアプリケーションは、ニュースキャスターの方式の統合ニュース読み上げを含む。これは次の特徴をサポートする。
・  お気に入り
・  最近
・  ニュースカテゴリ(すなわち、技術、スポーツ、など)
・  誕生日リマインダー
【０２０８】
【表１７】
0006671379.tif 000018
【０２０９】
ニュース記事は、代替えに全画面テキスト表示して容易に構文解析される形式で提示される。
【０２１０】
【表１８】
0006671379.tif 000019
【０２１１】
車両ステータス/効率
車両ステータス機能を起動すると、BT OBDリーダからのデータに基づき次の情報が表示される。
・  車両がOBDを介した燃料レベル測定をサポートしている場合に、マイル/kmおよび燃料を満タンにする必要がある状態になるまでの現在の速度での時間の範囲(この数は、控えめであるべきである)。これは、最近の挙動のTBDウィンドウ上で計算されるべきである。ワークアラウンドは、OBDを介して燃料タンク残量ステータス情報を提示できない自動車には非常に望ましいものである。
・  MGP、このトリップおよび全トリップの移動平均
・  本質的に加速度/減速度を測定し、アクセルおよびブレーキペダルを穏やかに操作するようにグラフでドライバに促す瞬間的運転効率表示、それに加えて、時間の経過とともにドライバのパフォーマンスがどのようであったかを示す履歴的表示(たぶん自動車のEPA評価に対してプロットされる?)。
・  経過したトリップ時間、トリップ中の効率、使用された燃料などを含む、トリップ統計量
・  トリップ統計量をゼロに設定するリセットボタン
・  最近の走行履歴に基づき時間(日数)に最適に変換された、間近に迫っている必要なメンテナンス(車両データベースからのメンテナンススケジュール情報に基づく)。
・  故障診断エラーコード
・  車両セキュリティ(安全でない車両挙動、重要な尺度など)
【０２１２】
それに加えて、次の高優先度のシナリオに対する口頭の警告は、他の現在表示されている機能を中断すべきであり、デバイス画面は、次のようなエラー表示とともに車両ステータスページに切り替わるべきである。
・  燃料が少ない(閾値TBD、最近の運転に基づき変化し得る--上記参照)。これは、燃料レベル読み取り機能に依存する(上記参照)。
・  即時ドライバアクションを必要とする致命的な車両エラー(エラーコードリストはTBDである)(すなわち、「Pull over and shut off the engine as soon as it is safe to do so」)
【０２１３】
【表１９】
0006671379.tif 000020
【０２１４】
サードパーティアプリケーション
GoPadアプリケーションは、GoPadがネイティブで提供しない機能を備えるサードパーティAndroidアプリケーションを起動する速くて簡単な方法となる。サードパーティアプリランチャは、車両の運転中にアプリケーションを容易に起動させる大きなタッチターゲットを備える。
【０２１５】
提示されているアプリケーションのリストは、デバイス上に存在するすべてのアプリケーションのリストから選ぶ、ユーザによって構成される。
【０２１６】
【表２０】
0006671379.tif 000021
【０２１７】
設定
設定領域は、ユーザが自分の好みに合わせてGoPadアプリケーションを構成する場である。設定の最終リストはTBDであるが、以下を含む。
・  着信テキスト自動応答決まり文句
・  着信Facebookメッセージ自動応答決まり文句
・  BT OBD2アダプタ選択(ペアになっているBT OBD2アダプタのリストから)
・  エンジン排気量
・  エンジン形式(ガソリンまたはディーゼル)
・  測定単位(ヤード・ポンド法またはメートル法)
【０２１８】
【表２１】
0006671379.tif 000022
【０２１９】
車両識別
複数の車両/クレードルを識別する能力が必要である。車両/クレードル毎の追跡する項目は、以下を含む。
・  ナンバープレート
・  VIN(OBDがそれを提供していない場合)
・  クレードル固有ID
【０２２０】
Bluetooth(登録商標)ペアリング
クレードルペアリング
初回そのクレードル内に挿入されたときにランチャがデバイスとクレードルとのペアリングを自動的に行えることが必要である。
【０２２１】
既存の車両HFPまたはA2DPとのペアリングは、このリリースに対する特徴でなく、サポートは不要である。
【０２２２】
データ収集
次のデータが、収集され、システム内に記憶されるべきである。
・  ユーザ名/電子メール/電話番号
・  自動車情報
○  VIN番号
○  ナンバープレート番号
・  運転ログ(タイムスタンプが付けられたすべてのエントリ)
○  自動車
・  距離
・  速度
・  エンジン運転時間
・  ロケーション
・  ナビゲーション目的地
○  アプリケーション
・  すべてのユーザ対話は、ソフトウェアの精密化を目的としてログに記録されるべきである。
・  エラーコードログ
・  燃費効率
【０２２３】
データ収集技術
各データまたはデータの型についてデータ収集の最も容易な方法が採用されるべきである。ユーザに代わってデータを提供することができる場合、そうすべきである(たとえば、その情報についてユーザに尋ねるのではなく、VIN番号に基づき燃料タンクサイズを決定することができる場合、そうすべきである)。
【０２２４】
アプリケーションは、ナンバープレートのカメラキャプチャを含むべきであり、アプリケーションはそこからプレート番号を解析し、それを使用してVIN番号およびすべての追加の付随データを決定することができる。
【０２２５】
データ匿名化
収集データのいくつかの型は、総計でのみ興味のあるものである--ユーザ固有の形式の値を有しない。Mixpanelなどのサービスによって収集されるソートのアプリケーション自体のユーザビリティデータ(すなわち、ボタンクリックのパターンなど)は、このカテゴリに入る。このデータは、実用的である場合データプライバシーの理由で匿名化されるべきである。
【０２２６】
ソフトウェア更新
軽量ランチャは、OTA更新メカニズムが新規ソフトウェアバージョンを現場でデバイスにプッシュアウトすることを可能にする必要がある。
【０２２７】
物理的/エージェントコントロールAPI
デバイスがクレードルに入っていて、そのアプリがフォアグラウンド(または、いくつかの場合において、バックグラウンド)で動作している間に、サードパーティアプリ開発者がクレードルの物理的コントロール、さらにはエージェントコマンドに応答することを可能にする単純なソフトウェアAPIが必要である。
【０２２８】
このAPIは、できるだけ単純であるべきである。
【０２２９】
物理的コントロール
物理的コントロールAPIは、次の3つのボタンのみに対する3つのコマンド入力(1度押し、2度押し、長押し)を可能にすべきである。
・  前のトラック
・  再生/一時停止
・  次のトラック
【０２３０】
サードパーティアプリによるエージェントボタンへのアクセスは、許されない。
【０２３１】
エージェント
サードパーティアプリは、単純なAPIを介して特定の音声コマンドを受け入れるように登録し得る。コマンドの例は、以下を含み得る。
・  「Next track」
・  「Previous track」
・  「Pause」
【０２３２】
【表２２】
0006671379.tif 000023
【０２３３】
【表２３】
0006671379.tif 000024
【０２３４】
付録B:アプリケーション一般提示
a.アプリケーション説明
アプリケーションOscarは、運転しているときにお気に入りアプリケーションの使用のための専用のアプリケーションである。
【０２３５】
Oscarは、ユーザが機能を使用するか、またはセーフティモードでアクションを実行することを可能にする。形成されるユーザエクスペリエンスは、いかなる状況でも成功を収める能力における鍵である。次の3つの媒体をいつでも使用することができる。
・  タッチスクリーン(アプリケーションのボタンインターフェース)
・  物理的ボタン(OEの場合には自動車からまたは補修部品市場についてはクレードルから)
・  音声コマンド
【０２３６】
【表２４】
0006671379.tif 000025
【０２３７】
鍵となる音声機能は、以下のとおりである。
・  電話をかけ、電話を受ける
・  メッセージを送信し、受信する(テキスト、メール、およびFacebook)
・  ナビゲーションを定義する:1回限り
・  ニュースを読み上げ、シェアする
・  音楽を再生する
【０２３８】
アプリケーションは、次の見出しに基づく。
・  音声認識が作動していない=ユーザのセンテンスを制限する
・  自然な対話=人間のダイアログを可能な限り速やかに閉じる
・  エージェントのフィードバック長を制限する=短いセンテンス
・  エージェントのネガティブフィードバックを制限する=〜でない、ない、知らない、...
・  ユーザ反復を制限する=「say again」と訊かない
【０２３９】
これら5つの見出しは、ユーザエクスペリエンスの形成の中心となる鍵である。
【０２４０】
b.アプリケーションのアーキテクチャ
以下に進む。
c.アーキテクチャに基づくユーザエクスペリエンス
d.検出された鍵となる革新
i.継続ダイアログ
ii.全画面エージェントアクティブ化
iii.自動ウェイクアップ
iv.リストナビゲーション
1.音声ナビゲーション:次、前、先頭、最後
2.アルファベット順に進む
3.リストを音声再生する
a.音声フィードバック最適化
i.クエリから
ii.前の再生から
b.ステップ再生
4.選択
a.ターゲットとなる項目の数で
b.ターゲットとなる項目の部分的内容で
5.インテリジェント選択
a.ドライバによる使用から学習
v.リストフィルタ
1.アルファベット順フィルタ
2.履歴フィルタ
3.頻度履歴
4.連続的フィルタ
vi.ボタンピクセルユーザエクスペリエンス
vii.
・  電話モジュール
e.はじめに
f.構造
g.説明
h.ユーザエクスペリエンス
・  メッセージモジュール
・  ナビゲーションモジュール
・  ニュースモジュール
・  メディアモジュール
【０２４１】
付録C:
音声および接続プラットフォーム
エグゼクティブサマリー
自動車市場は、様々な種類の断絶の中に存続しており、われわれが自動車市場破壊と呼ぶことができる新しい革命の中に生きている。電気エンジンから無人自動車まで、自動車のデジタル化は、前進し続けており、自動車組み立て会社全体は、デジタルの寿命と車両の寿命とに関する大きな問題のうちの1つに直面している!
【０２４２】
しかし、結局は、ドライバは声、止まって道路上で独りで時間を費やしたい声であり、この時間は、われわれが制約された環境内で新しいユーザエクスペリエンスを形成できれば、われわれが自動車をデジタルワールドに接続し、それだけでなく、ユーザをコンテキストに応じてお気に入りのアプリケーションと接続することができれば、有益なおもしろい時間に一変させることができる。
【０２４３】
xBrainSoftは、自動車の中および外で連続するユーザエクスペリエンスにおいて市場のすべてのデバイスと連動する拡張性および自由度の高いプラットフォームであり、自分のクラウドと車載組み込みプラットフォームとの間でハイブリッドモードおよび同期更新無線モードを可能にする自動車パーソナルアシスタント製品を製作した。
【０２４４】
適切な時機に、どのような状況であっても、各環境の最良のもの!XXXXXは、自動車の寿命に影響を及ぼすことなくデジタルワールドの寿命が短いという問題に面と向かう用意ができている。
【０２４５】
技術に関する章
要約
xBrainSoft Voice & Connected Platformは、いくつかの実施形態においてオンボード環境とオフボード環境との間のリンクを確立するように成されている高度なプラットフォームである。
【０２４６】
ハイブリッド、モジュール式、および不可知論的アーキテクチャに基づき、音声および接続プラットフォームは、組み込みソリューションとオフボードプラットフォームとの間にそれ専用の「無線」更新メカニズムを備える。
【０２４７】
オフボード拡張意味処理機能への接続性を有しない組み込みダイアログ管理から、音声および接続プラットフォームは、コンテキスト同期とのハイブリッド管理機能を高め、車両接続性の「損失および回復」の周りのシナリオを可能にする。
【０２４８】
ロバストで、革新的な、フルカスタマイズ可能な自然言語理解技術に基づき構築されている、音声および接続プラットフォームは、夢中になれるユーザエクスペリエンスを提供し、しかも特定の音声技術に頼らない。
【０２４９】
そのマルチチャンネル機能は、様々な方法で複数のデバイス(車両、電話、タブレット、...)を通じて対話し、完全同期メカニズムがあるため同じユーザ毎のコンテキストを共有することが可能になっている。
【０２５０】
音声および接続プラットフォームのクラスタ化されたサーバアーキテクチャは、スケーラブルであり、したがって、サービスの高負荷および高消費量に応答する。これは、業界標準技術に基づき構築され、通信セキュリティおよびエンドユーザプライバシーに関してベストプラクティスを実装する。
【０２５１】
音声および接続プラットフォームは、また、複雑な音声ユーザ対話フローを作り出すために、完全な開発環境内に統合されている、フルセットの機能および開発者ツールも備える。
【０２５２】
付加価値
xBrainSoft Technologyの技術的ブレークスルーのいくつかの下に、クラウドプラットフォームおよび組み込みプラットフォームによって組み立てられる「音声および接続環境」がある。
【０２５３】
次の項目は、箇条書きで提示されている。
・  ハイブリッド設計:「Server, Embedded and autonomous Synchronization」
設計により、音声および接続プラットフォームは、ローカルとリモートの両方で実行するアシスタントを備える。アシスタントのこのハイブリッドアーキテクチャは、強力なメカニズムに基づき構築され、処理の分散、完全なコンテキスト同期の維持、およびユーザインターフェースまたはさらにはダイアログ理解の更新を行う。
・  ダイアログフロー作成のための機能ツールのセット
当初から、xBrainSoftは、アシスタントの開発を加速し、改善するためにわれわれの技術の周辺に最良のツール群を用意することに大変な努力をしている。これは、ダイアログ言語マネージャ、機能モジュールの再利用可能性、VPAの開発自動化またはメンテナンス、およびクライアントデバイス上のポータビリティを高める完全な開発者環境を含む。
・  識別情報およびデバイスフェデレーションサービス(VCP-FS)
音声および接続プラットフォームフェデレーションサービスは、ユーザ識別情報およびデバイスを連合させるサービスである。VCP-FSは、ソーシャル識別情報(Facebook、Twitter、Google+)およびユーザの所有する接続デバイスを取り扱い、これは広範な方法で仮想パーソナルアシスタントによって提供されるキャパシティおよび機能を高めるものである。VCPフェデレーションサービスは、ユーザのソーシャルネットワーク、さらにはその習慣を利用することによってユーザエクスペリエンスを高める。
・  自動車アプリケーション対応のスイート(CPA)
音声および接続プラットフォームの上に、xBrainSoftは、天気、株式、ニュース、TV番組、連絡先、カレンダ、電話、などとして音声、タッチスクリーン、または物理的ボタンのいずれかによって使用される、自動車パーソナルアシスタント(CPA)製品を作成するための車両用のアプリケーションスイートを提供している。
xBrainSoftは、また、自動車のCANネットワーク、そのGPS測位、および温度、ワイパー状態、エンジン状態、などのような様々な車両センサにアクセスできる完全統合アプリケーションを作成するためのSDKを提案している。
・  オフボードデータシンクロナイザ
音声および接続プラットフォームは、グローバルデータシンクロナイザシステムを備える。このメカニズムは、モバイルデータ接続の巡回および低容量によって引き起こされる問題となる同期を対象とする。これは、どのように行われるかではなく、同期させる必要のあるデータについて開発者が集中することを可能にすることを意図して同期システムの構成可能な抽象化を実現する。
・  外部APIオートバランサー
外部APIを使用することはシナリオに対しては大きな強化となるが、サービスが利用不可能になる可能性があるときに、またはクライアントが複数の要因(価格、ユーザ加入、...)により特定のサービスを使用することを望む可能性がある場合に副作用をもたらす。これらの特定要件に応えるために、音声および接続プラットフォームは、高度に構成可能であり、第3のデータプロバイダをプラグインとして組み込むように設計された(たとえば、マイクロ課金管理システム上に接続するためのイベントハンドラーによるAPI消費管理)。
機能は、単一の外部APIには依存しないが、それらの多くを管理することができる内部プロバイダに依存する。このアーキテクチャに従って、VCPは、XXXXX要件を満たすように構成され得るオートバランスシステムを実現する。
・  プロアクティブダイアログ
音声および接続プラットフォームは、初期要求なしでユーザとのダイアログを開始するためのエキスパートシステムおよびメカニズムを統合している。
それとともに、ユーザの注意が利用可能になった後に関連する情報を与えるものとして、またはプロアクティブなダイアログ頻度を管理するために、複雑なタスクを達成する一組のツールを備える。
・  真のコンテキストダイアログ理解
「真のコンテキストダイアログ理解」は、コンテキスト依存の多次元ダイアログフローであり、パラメータとして、コンテキスト履歴、ダイアログ履歴、ユーザ履歴、ユーザプロファイル、ローカライゼーション、現在のコンテキストドメインなどを有する。
各ダイアログを分析するこのコンテキスト依存のアプローチは、アシスタントの知識をストックするために必要なメモリを最小限度に抑えるときのダイアログフローおよび多くの他のポジティブな影響の最もよい1つの精度理解、何らかの種類の途切れの後のダイアログの継続、アプリケーションの翻訳の簡素化、などを可能にする。
・  無線で更新する
VCPグローバルデータシンクロナイザメカニズムは、車両の寿命の間クラウドプラットフォーム、組み込みプラットフォーム、および接続されているデバイスの間で「無線」により任意の種類のパッケージを更新する方法を提供する。われわれのオンラインソリューションと組み込みソリューションとの間でダイアログ、UI、ログ、スナップショットを同期させるために内部的に使用される、この「無線」システムは、組み込みTTS音声、組み込みASR辞書としてサードパーティリソースを含むように格納され得る。バージョニングシステム、依存関係マネージャ、および高圧縮データ転送に基づき、これは、ハイブリッドソリューションに対する第1のクラスのメカニズムを提供する。
・  任意のデバイスへのサービスの継続性
音声および接続プラットフォームは、VCPフェデレーションサービスを通じて、ドライバ識別情報およびデバイス上の中断なしでサービスの継続性を実現することができる。接続されているデバイスが増えることで、XXXXX仮想パーソナルアシスタントによってアクセス可能なドライバの注意は、自動車内で費やされる時間を超える。
・  音声および音響不可知論的統合
音声および接続プラットフォームは、特定の音声技術に依存せず、ローカルの音声エンジンまたはリモートの音声プロバイダのいずれかを音声認識とテキスト読み上げの両方に使用することができる。ローカルのエンジンは、VCPプラグインにカプセル化され、これらはVCPデータ同期メカニズムを通じて容易に更新され得る。リモート音声プロバイダは、VCPとともにクラウドサイドで直接管理しているものとしてよい。
音声認識およびテキスト読み上げにどの音声技術VPAが使用されるかを定義することは、どのようなダイアログについても完全に構成可能である。
・  人工知能アルゴリズム
制約タイミングにおける結果を得ることに集中することで、音声および接続プラットフォームはAIに関して不可知論的アプローチをとる。このことが、われわれが、CLIPSエンジンを使用してイベントベースのエキスパートシステムで行っているように第1のクラスのすぐに使えるツールを作成するか、または抽象的な仕方でプラットフォームに組み込む理由である。
われわれの専門技術知識は、自然言語、ナレッジグラフ、機械学習、社会的知性、および一般AIアルゴリズムに関するものである。われわれのツール群は、XXXXXが最後の進化をこの自然科学分野に継続的に組み込むことを可能にするための最上位フレームワークと今日利用可能なオープンソースアルゴリズムとの間のリンクである。
・  自然言語理解不可知論的統合
人工知能アルゴリズムに採用されている戦略と同様に、音声および接続プラットフォームは、自然言語処理モジュールを統合するために不可知論的アプローチをとる。これは、この領域におけるわれわれの専門知識技術に基づき、われわれがコアモジュールの1つを頻繁に更新して正確な理解を最適化し、ユニークなユーザエクスペリエンスを保証することを可能にする。
【０２５４】
技術的アーキテクチャ
アーキテクチャ
【０２５５】
【表２５】
0006671379.tif 000026
【０２５６】
アーキテクチャの説明
音声および接続プラットフォームは、「スマートディスパッチャ」と呼ばれる非同期パイプラインに基づく。その役割は、プラットフォームおよび接続デバイス全体にわたってメッセージおよびユーザコンテキストを配信することである。
【０２５７】
VCPフェデレーションサービスは、プラットフォーム上のユーザ識別情報管理を受け持つ。これは、My XXXXX、Facebook、Twitter、Google+、およびMicrosoft Liveとしての数値およびソーシャル識別情報に対するサードパーティ識別情報プロバイダに依存する。これは、また、自動車、電話、タブレット、TV、...のようなユーザのすべての接続デバイスを連合させるための内部メカニズムを有する。
【０２５８】
音声および接続クラウドプラットフォームは、VCP組み込みソリューションと連動するように「スマートディスパッチャ」上の不可知論的モジュール式アーキテクチャおよび完全な同期メカニズムを提供する。自動ASR/TTSリレーにより機能レベルでASRまたはTTSを抽象化することができる、VCPサーバは、Nuance、Google Voice、Telisma、CreaWaveなどのサードパーティASR/TTSプロバイダに依存する。
【０２５９】
音声および接続クラウドプラットフォームは、また、セマンティックスツーリング(semantics tooling)の能力を利用するダイアログ管理のためにVCPプラットフォームによって提供されるすべての技術的ブロックも含む。イベントベースのエキスパートシステム、センサ、AI、およびプロアクティブなタスクと結合された場合、これはアプリケーションを開発するために使用されるコアスタックを提供する。
【０２６０】
ユーザプロファイルプリファレンスまたはXXXXXビジネスルール上のフォールバックシナリオまたはルールベースの選択をサポートするために、抽象的な仕方でサードパーティ製データプロバイダが含まれている。このエントリポイントは、VCPがすべての既存のXXXXX接続サービスを統合し、それらをアプリケーション開発レベルで利用可能にすることを可能にする。
【０２６１】
VCP組み込みソリューションは、VCPサーバの対になる車両側部分である。「無線」で更新可能である、この組み込みソリューションは、以下を提供する。
- UI配信および管理
- オンボードダイアログ管理
- 「損失および回復」接続性シナリオに対するコンテキストロギング
- ログまたは他のサードパーティ同期に対するスナップショットマネージャ
【０２６２】
車両アーキテクチャにおいて、組み込みASRおよびTTSプロバイダは、オンボードダイアログ管理のために含まれるものとしてよく、音声および接続プラットフォームのコンポーネントとしては提供されない。
【０２６３】
VCPデータ記憶装置は、音声および接続プラットフォームのすべてのデータ入力を記憶し、分析するために使用されるApache Hadoopベースのインフラストラクチャである。機械学習またはAI処理に使用される場合、VCPデータ記憶装置は、VCPフェデレーションサービスにおいて記憶されるユーザプロファイルに分析結果を注入するためのメカニズムを提供する。
【０２６４】
分野別の技術詳細
音声および音響
・  説明
音声および音響の寿命は、第1のクラスのユーザエクスペリエンスを形成するための最も重要な相互作用の1つである。これは、期待した品質を得るために高レベルの注意および高レベルのコンポーネントとともに取られる必要がある。
【０２６５】
予期した品質を得ることは、以下の複数の態様を組み合わせることによって達成され得る。
○  最高品質のマイクロフォン、フィルタ、ノイズ低減、エコーキャンセル、...
○  複数のASR/TTSプロバイダ(Nuance、Google、Telisma、Microsoft Speech Server…)の統合
○  使用事例に関してそれらのプロバイダ同士を切り替えることができること。
- ASR:オンボード、オフボードのストリーミングまたはオフボードリレー
- TTS:オンボード、オフボードの感情的コンテンツ、混合継続性モード
○  ユーザダイアログコンテキストに基づくASR訂正管理
○  「真のダイアログ」管理
【０２６６】
xBrainSoftでは、われわれは、それらの態様を以下の2つのカテゴリに分類した。
○  音声キャプチャからASRプロセス終了まで
○  ASRプロセスの後に、自然言語処理から自然言語理解まで
【０２６７】
ASRプロバイダまたはハードウェアマイクロフォンを製造することはわれわれのビジネスの範囲にはないので、任意の種類のASR/TTSエンジンと統合し、通信することができるように音声管理に関して技術的不可知論的アプローチをとった。われわれの経験およびプロジェクトにより、Nuanceの実質的統合によるVPAプロトタイプにおいて行われているように制約環境内でそれらの技術の専門知識レベルが高まった。
【０２６８】
このタイプのアーキテクチャは、パートナーがすべてのタイプのASRまたはTTSを用いて多くの言語において強力なダイアログシナリオをすばやく作成することを可能にする。これは、また、ユーザエクスペリエンスを改善するようにコンポーネントを容易にアップグレードすることも可能にする。
【０２６９】
第2のカテゴリは、ユーザダイアログコンテキストに基づき異なるレベルのソフトウェアフィルタによって管理される。ダイアログは、双方向センテンスというだけでなく双方向センテンスの集合であるので、われわれは、「真のコンテキストダイアログ理解」に基づき音声および接続プラットフォームにおいて異なるフィルタを開発した。真のコンテキストダイアログ理解は、コンテキスト依存の多次元ダイアログフローであり、パラメータとして、コンテキスト履歴、ダイアログ履歴、ユーザ履歴、ローカライゼーション、現在のコンテキストドメインなどを有する。
【０２７０】
われわれのVCPセマンティックツールの能力を用いて、ユーザ入力の深い意味論的理解を達成する。
【０２７１】
このアプローチにより、われわれはエンドユーザダイアログフローに関して同じ正確な意味を保持しながら「News & Voice Search」アプリケーション(ニュースキャスター)を120万個の言語パターンエントリポイントから100未満にまで減らすことができた。
【０２７２】
パターンの記述のこの新しいアプローチは、多くのポジティブな態様をもたらす。
○  あいまい性の除去シナリオ、誤りキーワード、または不完全なエンティティ抽出を簡素化する
○  パターンのデバッギングを簡素化し、自動化ツールの作成を可能にする
○  「オンザフライ」でパターンの訂正およびメンテナンスを簡素化する
○  パターン辞書をロードするためのメモリリソースを最小にする
○  言語適応のためのダイアログ翻訳の労力を最小にする
【０２７３】
完全なハイブリッドおよび「無線」更新可能システム、VCPコンポーネント「オンラインまたは組み込みダイアログマネージャ」は、車両が完全なオンラインダイアログエクスペリエンスへの接続性を失ったときに組み込みダイアログを管理するための最良のソリューションを提供することを目的とする。
【０２７４】
したがって、第1のクラスの実質的な音声および接続プラットフォームの保証がこれまでに意図した最良のユーザエクスペリエンスを形成するのに最も十分であるようなものとなること求めた。
【０２７５】
その間、xBrainSoftは、ダイアログフロー、ソーシャルおよびダイアログフローから推論されるユーザコンテキストにおける社会的および教育的挙動レベル、またはVoiceXML標準に基づく韻律管理におけるセンチメント分析としての多くの研究面と併せてユーザエクスペリエンスの限界を押し広げる作業を続けている。
【０２７６】
・  革新的特徴
○  ASR/TTSプロバイダの不可知論的アプローチ
○  オフボードASR/TTSリレー容量
○  オンボードダイアログ管理
○  オフボードダイアログ管理
○  「無線」更新によるハイブリッドダイアログ管理
○  VCPセマンティックツール
○  ダイアログ管理のための統合開発環境
【０２７７】
・  例示的な要素
○  高品質マイクロフォンおよび音取り込み
○  ノイズ低減、エコーキャンセルを含む音声信号処理
○  自動ブランク検出をサポートするマイクロフォンオーディオAPI
○  オンボードおよびオフボード用の1つまたは複数の音声認識エンジン
○  オンボードおよびオフボード用の1つまたは複数のテキスト読み上げエンジン
○  VCP組み込みソリューション
○  VCPサーバ
【０２７８】
・  例示的なアソシエイトパートナー
音声取り込み:ParrottまたはNuance
音声信号処理:ParrottまたはNuance
ASR:Google、Nuance、またはTelisma
TTS:Nuance、Telisma、またはCreaWave
【０２７９】
ハイブリッド構造および挙動
・  説明
データ接続が利用可能でないときに自律的であり得る接続およびクラウドベースのパーソナルアシスタントが利用可能である。この目的は、常にユーザへの応答を高速にし、正確にすることができることである。
【０２８０】
VCP組み込みソリューションは、自動車など組み込みデバイス上で実行され、サーバサイドのそれと対になるものに接続されているハイブリッドアシスタントからなる。ユーザ要求は、サーバに転送すべきであるか転送すべきでないかを、接続性のような基準に基づき決定する組み込みアシスタントによって直接取り扱われる。この方法で、すべてのユーザ要求は、ローカルまたはリモートのいずれかで取り扱われ得る。オフボードレベルの機能は、パフォーマンスおよびユーザエクスペリエンスを高めるように容易にチューニング可能である。
【０２８１】
音声および接続プラットフォームのように、VCP組み込みソリューションは、高度な自然言語処理および理解機能を備えており、データ接続を必要とすることなくユーザ要求を取り扱う。これにより、VPAがユーザ要求をローカルですばやく理解し、必要ならば、ユーザに直接答え、サーバから重い計算応答を非同期にフェッチすることができることを確実にする。接続性を失っている場合に、ユーザに完全な応答を返すために外部データが必要な場合(たとえば、天気要求)、応答は、その要求が履行され得ないことをユーザに通知するように適合される。シナリオに従って、VPAは、接続性が回復すると直ちにサーバに転送できるようにユーザ要求をキューに入れておくことができる。
【０２８２】
音声および接続プラットフォームはまた、データが分離されるのではなく共有されるように組み込みエージェントとサーバとの間の完全なコンテキスト同期を実現する。再同期は、データが常に最新のものとなるように接続性に問題が生じる毎に実行される。
【０２８３】
VCP組み込みソリューションは、「無線」プロセスを通じて容易に更新または交換され得るプラグインから作られる。音声、IA、ダイアログ理解、データ処理、およびユーザインターフェースは、それらのアップグレード可能なモジュールの一部である。
【０２８４】
VCP組み込みソリューションは、応答を処理するために一組のスクリプト、AIの一部も含む。応答の一貫性を確実にするために、接続性のレベルが何であれ、これらのスクリプトは、サーバと組み込みエージェントとの間で同期される。
【０２８５】
・  革新的特徴
○  ユーザインターフェースマネージャ
○  サーバと同期されるローカルインターフェース
○  組み込みダイアログマネージャ
-  純粋な組み込みシナリオ
-  オンボード/オフボードのハイブリッドシナリオ
-  純粋なオフボードシナリオ
【０２８６】
インターネット接続がある場合もない場合も、常にユーザ要求に応える
接続喪失の使用事例でのコンテキスト同期
・  例示的な要素
【０２８７】
車載コンピュータシステム上で利用可能なLinux(登録商標)プラットフォーム
・  パフォーマンス
【０２８８】
効率的なパフォーマンス駆動プログラミング言語(C++)
【０２８９】
帯域幅および応答時間を最適化するための交換データの高圧縮
【０２９０】
VCP組み込みソリューションは、Raspberry PI Model A上でコンパイルされ、試験されている。
○  CPU:700MHz低電力ARM1176JZ-Fアプリケーションプロセッサ
○  RAM:256MB SDRAM
【０２９１】
人工知能
・  説明
人工知能は、多くの専門領域にまたがる大きな分野である。
○  演繹、推論、問題解決
○  ナレッジグラフ発見
○  イベントベースのエキスパートシステムによるプランニングおよび行動
○  自然言語処理およびセマンティック検索
○  機械学習、マップレデュース、深層学習
○  社会的知性、センチメント分析、社会的挙動
○  まだ発見されていない他の用途
【０２９２】
xBrainSoftでは、技術能力の範囲が巨大であることに気付いており、自然科学の現状の現在の難題を前にして穏やかである。
【０２９３】
制約タイミングにおける結果を得ることに集中することで、音声および接続プラットフォームはAIに関して不可知論的アプローチをとる。このことが、われわれが、すぐに使えるCLIPSエンジンを使用してイベントベースのエキスパートシステムで行っているように第1のクラスのすぐに使えるツールを作成するか、または抽象的な仕方でプラットフォームに組み込む理由である。
【０２９４】
われわれの専門技術知識は、自然言語、ナレッジグラフ、機械学習、社会的知性、および一般AIアルゴリズムに関するものである。
【０２９５】
われわれのツール群の主要な特徴は、最上位のフレームワークと今日利用可能なオープンソースアルゴリズムとの間の接着剤となるものである。
【０２９６】
それによって、xBrainSoftは、市場で入手可能な他のより貴重なものによりわれわれのモジュールを切り替えることが可能であるのでVPAプロジェクトの期待されるシナリオの100%を実現することができる。
【０２９７】
これが、xBrainSoftが、また、Kyron(Silicon Valley、AI、ヘルスケアに適用されるビッグデータおよび機械学習)、Visteon、またはSpiropsのようなパートナーと連携して、われわれのプラットフォームを通じて利用可能なAIの可能性を広げている理由である。
【０２９８】
・  革新的特徴
匿名化された方法でデータを外部AIモジュールに提供する能力。ユーザまたはセッションは、ランダムな固有の数として表され、それにより外部システムはその情報を物理的ユーザに相関させることができなくても正しいレベルで動作することができる。
【０２９９】
xBrainSoftまたは外部AIツールによりAIを音声および接続プラットフォーム(VCP)に組み込むための不可知論的アプローチ。
【０３００】
AIツールからデータを戻すためにVCPによって提供されるVCPフェデレーションサービスへのブリッジを形成し、より良好なユーザコンテキスト管理のためにユーザプロファイルを増強する。
・  例示的な要素
○  Apache Hadoopに基づくVCPデータ記憶装置
○  VCPイベントベースのエキスパートシステム
○  VCPフェデレーションサービス
【０３０１】
・  オフボードプラットフォームおよびサービス
・  説明
自動車内のユーザに提供されるサービスを豊かにするために、オフボードプラットフォームは、その高い可用性および強力なコンポーネントにより高いレベルの接続機能を提供する。ユーザは、自動車サービスに集中している多くの学問領域にわたる知的なエコシステムの中心に置かれる。オフボードプラットフォームは、また、自動車サービスと接続サービスとを混合する機能をもたらすエントリポイントでもある。
【０３０２】
オフボードプラットフォームは、ユーザのブランドおよび接続デバイスのすべての自動車をサポートするために高い可用性を有する。これは、増え続けるユーザに対処し、負荷変動を処理するために時間の経過とともに進化することができる。
【０３０３】
それらの難題のすべてに応えるために、音声および接続プラットフォームは、「クラウド内」またはオンプレミスで配備可能であるクラスタ化アーキテクチャを提供する。すべてのクラスタ化されたノードは、互いを認識し、ノード間接続デバイスシナリオでクラスタ化アーキテクチャ上のサービス継続性を維持することを可能にする。
【０３０４】
音声および接続プラットフォームは、ソーシャルアカウントおよびデバイスを通じて技術的データサービスからユーザ情報まで、サードパーティデータサービスを消費する能力をもたらす。それらのすべての情報は、「適切な」および理に適ったシナリオを作成するために有用である。
【０３０５】
機能およびサービスの範囲は広く、これは技術が進歩するので時間の経過とともに進化する。プラットフォームのアーキテクチャは、モジュール式アーキテクチャに基づき既存の機能に影響を及ぼすことなく新しいサービス/機能を提供すべきである。
【０３０６】
・  革新的特徴
○  クラウド内またはオンプレミスホスティング
○  高い可用性および負荷変動に対してクラスタ化アーキテクチャ配備を進める用意ができている
○  クラスタ化アーキテクチャ上のデバイス間機能
【０３０７】
・  例示的な要素
○  VCPサーバ
○  サードパーティデータプロバイダ
【０３０８】
・  パフォーマンス
【０３０９】
サーバ毎に5kの同時接続オブジェクト(自動車)では、プロトタイプは、3台のサーバを一組として実装し、高レベルのSLAを保証し、前面に10kの同時接続オブジェクトを提案する。
【０３１０】
オフボードフレームワークおよび一般セキュリティ
・  説明
サードパーティデータサービスプロバイダとして、XXXXX SIGは、われわれの現在の実装されているプロバイダに加えて音声および接続プラットフォームによって使用され得る。抽象化レベルが高いので、われわれは、異なるサードパーティデータサービスプロバイダを実装し、それらをプロジェクト寿命においてVPAの機能部分を更新することなく統合することができる。
【０３１１】
音声および接続プラットフォームは、外部プロバイダを通じてデータの高い可用性を保証するためにフォールバックシナリオを実装する機能を備える。たとえば、主要な1つのプロバイダが利用可能でないときに切り替えるための複数の天気データプロバイダである。
【０３１２】
音声および接続プラットフォームは、また、プロバイダの適格性についてエキスパートシステムの実装も提供する。ビジネスルールに基づき、システムは、課金最適化を管理するのを手助けする。これは、サブスクリプション料金に基づきユーザ側のものとして、または供給業者の取引契約に基づきプラットフォーム側のものとして、異なるレベルで使用されることも可能であろう。
【０３１３】
音声および接続プラットフォームはフルセットのHTTP APIを公開され得るので、任意の種類の機械同士のネットワークにおいて容易に統合され得る。
【０３１４】
通信および認証に関して、音声および接続プラットフォームは、インターネット業界で使用される最新の実務慣例をもたらす。SSL証明書によりすべての通信を安全にすることからチャレンジハンドシェイク式認証プロトコルに至るまで、音声および接続プラットフォームは、エンドユーザのプライバスシー保護に関係する高いセキュリティレベルを確実にする。
【０３１５】
セキュリティおよびユーザプライバシー保護も、エンドユーザのログインおよびパスワードが音声および接続プラットフォームを通過するときにVCPフェデレーションサービス識別情報関連付けにおいて考慮される。このシステムはすべて、識別情報プロバイダによって提供されるトークンベース認証に基づき、たとえば、Facebookアカウントでは、エンドユーザは、エンドユーザ識別情報を確認し、認証トークンを送り返すFacebookサーバ上で認証を受ける。
【０３１６】
VCP組み込みソリューションが構築されるこの方法は、インテグレータによって提供される基幹の既存機能に依存するので自動車内の信頼性または安全性問題の発生を防止する。われわれの技術的提案において、VPAは、指令を自動車に直接送信することはできず、信頼性および安全性問題を提示する基幹システムに指令を送信することができる。
【０３１７】
・  革新的特徴
○  XXXXX接続サービスAPIの完全統合を可能にするモジュール式アーキテクチャ
○  My XXXXXは、VCPフェデレーションサービスの既定の識別情報プロバイダとして実装されるものとしてよく、これによりユーザが自分のソーシャル識別情報をリンクするときに安心感を得ることができる。
○  エンドユーザのプライバシーを保護するための高レベルセキュリティ
【０３１８】
・  例示的な要素
○  M2Mネットワークとしての自動車接続のための安全なインフラストラクチャ
○  VCPフェデレーションサービス識別情報プロバイダを実装するためのトークンベースの認証API
【０３１９】
コンテキストおよび履歴認識
・  説明
ダイアログ、アシスタント挙動、または機能個人化には、効率的なコンテキスト管理が不可欠である。エンジンレベルで実装されるので、ユーザコンテキストは、増強され個人化された体験を可能にするために音声および接続プラットフォームのコンポーネントによってアクセスされ得る。
【０３２０】
任意のデータソース--車両データ(CAN、GPS、...)、ソーシャルプロファイル、外部システム(天気、交通、...)、ユーザ対話、...--を用いて拡張可能なので、ユーザコンテキストも、また、プロアクティブな使用事例を作成するためにわれわれのイベントベースのエキスパートシステムによって重用される。
【０３２１】
オフボードおよびオフボードにまたがって共有されるので、音声および接続プラットフォームは、2つの環境の間のコンテキスト再同期を管理する。
【０３２２】
履歴認識に関しては、音声および接続プラットフォームは、データを総計する、記憶する、および分析するための完全なソリューションを提供する。それらのデータは、上で説明されているように任意のソースに由来するものとしてよい。
【０３２３】
分析されるときに、データの結果はユーザプロファイルを充実させるために使用され、個人化された体験を配信するのを助ける。
【０３２４】
・  革新的特徴
ユーザコンテキスト管理は、エンジン特徴として組み込まれ、音声および接続プラットフォーム内を横断している。これは、システム内のモジュール、ダイアログ、タスク、またはルールでアクセスされ得る。これは、また、VCPフェデレーションサービスの実装とデバイスにまたがって共有され得る。
【０３２５】
音声および接続プラットフォームは、オンボードとオフボードとの間の完全コンテキスト再同期システムを形成し、トンネルを通過する運転のような接続性問題を取り扱う。
【０３２６】
Apache Hadoopスタックおよびツールに基づき、VCPデータ記憶装置は、機械学習の目標をユーザ行動主義、習慣学習、および他の関係する機械学習分類または推奨タスクとして実行することに対応できるインフラストラクチャを提供する。
【０３２７】
・  例示的な要素
○  VCPデータ記憶装置
○  要求条件に基づきHadoopインフラストラクチャを定義する
【０３２８】
プロアクティビティ
・  説明
プロアクティビティは、エンドユーザのためによりスマートなアプリケーションを作成するための鍵の1つである。
【０３２９】
VCプラットフォームは、2つの異なるレベルのプロアクティビティ管理を行う。
○  バックグラウンドワーカー:主パイプラインに再接続し、ユーザセッションと対話するか、またはフォールバック通知ツールを使用することができる完全なバックグラウンドタスクシステム
○  イベントベースのエキスパートシステム:外部センサおよびユーザコンテキストに反応することができる完全統合ビジネスルールエンジン
【０３３０】
VCPフェデレーションサービスと結合され、デバイスを超えてプロアクティビティのパワーを利用する。
【０３３１】
・  革新的特徴
○  コンテキスト項目にリアルタイムでプロアクティブに反応するイベントベースのエキスパートシステム
○  相互デバイスプロアクティブエクスペリエンスを可能にするためのVCPフェデレーションサービスの使用
○  プロアクティブなフォールバックの使用事例に対する主要通知プロバイダの実装を提供する(Google、Apple、Microsoft…)
○  機能の観点から、プロアクティビティチューニングのレベルはユーザ設定として公開され得る。
【０３３２】
・  例示的な要素
デバイスの知識に対するVCPフェデレーションサービス
フォールバックの使用事例に対する通知プロセスをサポートするデバイス
【０３３３】
一般アップグレード可能性
・  説明
一般アップグレード可能性は、自動車産業に関して重要なプロセスである。自動車は、自動車ディーラーにそれほど頻繁には訪れていないので、全体的なソリューションは、「無線」更新の完全なメカニズムを提供するべきである。
【０３３４】
音声および接続プラットフォームは、すでに、それらの「無線」メカニズムを実装しており、VCP組み込みソリューションを使用してダイアログおよびユーザインターフェースを同期させる。
【０３３５】
工場アーキテクチャに基づき、この「無線」プロセスは、音声および接続プラットフォームと接続デバイスとの間の任意の種類のデータを管理するように拡張され得る。
【０３３６】
・  革新的特徴
○  バージョニングサポート、依存関係解決、および通信圧縮を含む拡張可能な「無線」メカニズム
○  VCPサーバは、車両の寿命の期間内に(新規)モジュールを追加するか、または取り外すことを可能にするモジュール式アーキテクチャに基づく。
○  VCP組み込みソリューションは、新規相互運用性機能を追加し、新しい自動車機能またはメッセージにアクセスすることを可能にするプラグインアーキテクチャに基づく。
【０３３７】
・  例示的な要素
○  インターネット接続(ハードウェアおよび接続のタイプに依存する)
【０３３８】
中および外継続性
・  説明
デバイス継続性は、音声および接続プラットフォームを通じて、ドライバが自動車内で、ただし外の通りで、または家でも同様に、仮想パーソナルアシスタントに接続することができることを意味する。ドライバは、自分の望むすべての場所からサービスを使用することができる。
【０３３９】
この機能は、XXXXXが自動車の中と外での顧客との関係の範囲を広げることを可能にする。ブランドは、サービスを提供し、その従来のゾーンを越えた関与を生じさせる機会を拡大する。したがって、競合するAPIまたはサービスをもたらすことができるサードパーティ事業者との多数の潜在的ビジネスパートナーシップの機会を開く。
【０３４０】
VCPフェデレーションサービスに基づき、VPAはエンドユーザのエコシステムに完全統合され得る。ユーザの自動車、ユーザの複数のデバイスから、ユーザの数値およびソーシャル識別情報まで、そのエコシステムのすべての入力がユーザの広範にわたる活動に力を与えることができる。
【０３４１】
・  革新的特徴
音声および接続プラットフォームは、すべての認識されたデバイスからアクセスされ得る標準の保護プロトコル(HTTPS)を通じてサービスを提供する。エンドツーエンドの観点から、音声および接続プラットフォームは、Android、iOS、Windows+Windows Phone、およびEmbeddedとしてすべての主要デバイスプラットフォームに対するフレームワークおよびツールを提供する。
【０３４２】
VCPフェデレーションサービスは、デバイスおよびユーザの数値識別情報を集約して、ユーザに最良の、接続および広範な体験をもたらす。たとえば、VCPは、ユーザの電話上でシナリオを開始し、次いで、その自動車の中の別のデバイス上でそのシナリオを終了することができる。
【０３４３】
VCPユーザインターフェースマネージャは、ウェブブラウザAPIを備える任意のデバイス上でVCP Webオブジェクトをダウンロードし、記憶し、実行することができる。この点を考慮して、接続デバイス上のユーザインターフェースおよびアプリケーションのロジックは、クロスプラットフォームとすることが可能であり、「無線」で容易に更新可能であるものとしてよい。VCPユーザインターフェースマネージャは、また、特定のプラットフォーム、地域、または言語向けに異なるテンプレート/ロジックを適用することもできる。
【０３４４】
・  例示的な要素
VCPフェデレーションサービスは、サービス継続性の中心にある。
【０３４５】
接続デバイスの種類が異なっていても(プラットフォーム、サイズ、ハードウェア、使用法、...)、シナリオはターゲットデバイスに最もよく適するように適合されるべきである。たとえば、デバイスは、マイクロフォンを有していない場合があり、これは音声ユーザインターフェースに準拠しないことになるが、物理的対話操作が使用されるべきである。
【０３４６】
文化および地理的コンテキスト
・  説明
XXXXXの国際化の程度が高いので、VPAは、文化的または地理的な観点でユーザに適応することができる。これは、ユーザに提供されるすべてのスクリプトおよびインターフェースの翻訳、ASR&TTSプロバイダの構成、およびもし必要ならばいくつかのシナリオの挙動の修正を暗示する。
【０３４７】
・  革新的特徴
完全なモジュール式アーキテクチャに基づき、音声および接続プラットフォームモジュールは、国際化設定に従って差し込むことができる。これは、地域に応じて異なるサービス配信または特徴を管理することを可能にする。
【０３４８】
音声および接続プラットフォームは、地域配備またはユーザ設定に基づくことができるASR/TTSプロバイダリレーの完全な抽象化を実現する。これは、音声収集/再生とASR/TTSプロバイダとの間の関係の分離を受け持つ自動車または接続デバイスに対する音声認識および音声合成の統一されたエントリポイントをもたらすことができる。
【０３４９】
VCPダイアログマネージャおよびVCPセマンティックツールは、機能実装に影響を及ぼすことなく新規言語に対する拡張を可能にする高レベルの抽象化を実現する。
【０３５０】
・  例示的な要素
○  APIを通じて翻訳をサポートする外部サードパーティデータプロバイダ
○  選択された言語用のASR/TTSプロバイダ
○  VCPフェデレーションサービスに対するエンドユーザのソーシャル識別情報を定義する。たとえば、Twitterの代わりに中国のWeibo。
○  使用事例およびVPA挙動をエンドユーザの文化および地域に適応させる
【０３５１】
付録D:「直接およびワークアラウンドシナリオプロセス」
説明されているのは、一般的アプローチ、さらに、われわれがSiri、Google Now、Nuance、…のような他の製品または様々な実施形態による任意のタイプのパーソナルアシスタントに関してわれわれの製品のどこに付加価値があるかである。
【０３５２】
凡例:
・  VCP=音声および接続プラットフォーム
・  ASR=自動音声認識
・  TTS=テキスト読み上げ
・  TUI=タッチユーザインタラクション
・  VUI=音声ユーザインタラクション
・  NLU=自然言語理解
【０３５３】
VCPは、シンクロン(synchrone)およびアシンクロン(asynchrone)である。これは、各アクション、イベントが直接、またはユーザに対する要求の後長い時間が経ってから実行され得ることを意味する。私は長いタスクまたは長期間タスクについて毎月1日に私の売り上げ報告(アシンクロン)を私に送信するようにエージェントに求めることができる。私は、今日の天気を、および明日の天気を応えた直後に天気を尋ねることができる(直接的コンテキストにより)。
【０３５４】
寿命の説明(図7参照)は、左下から始まって右上に行く。
【０３５５】
寿命
ASRエンジン:
・  ASR(自動音声認識)の前に、われわれは、3通りの方法でASRをアクティブ化することができる。
○  ASRオートウェイクアップ語:アプリケーションを目覚めさせ、ASRを起動するためにキーワードを使用するために利用可能である(Angie、Sam、ADA、...など)
○  ASRプロアクティブアクティブ化:内部イベントまたは外部イベントに依存する
・  タイマ:タイマに基づき毎日オートウェイクアップする
・  内部イベント:デバイスコンポーネント(GPS、アクセラレータ、...)またはアプリケーションの機能もしくはモジュールからの内部イベント
・  われわれは、あなたがあなたの自宅にいることを検出し、あなたの何かへのASR(コンテキストプロンプト付きでTTS)を開始することができる。
・  私が私の自動車内にいるときに(私が電力およびOBDを検出したので)、私は音楽を起動し、ナビゲーションを開始するようあなたに提案することができる。
・  あなたのカレンダに新規約束が載っていたときに、エージェントは、自動的に開始し、あなたが次の会合に行くのにナビゲーションを望んでいるか(自動車が必要な場合)をあなたに尋ねることができる。
・  外部イベント:われわれは、データベースまたはサードパーティAPIから外部イベントを検出し、ASR/TTSをアクティブ化する
・  あなたが目的地の近くに到着したときに、システムは、外部パーキングアベイラビリティAPIを見て、いつ自動車を駐車できるかをあなたに知らせることができる。
・  あなたが交通渋滞に巻き込まれたときに、システムは、自動車による方向変更を評価することができるが、目的地に行く仕方を変更する機会も評価し、自動車を駐車場に停めて、列車に乗ることを提案することもできる。
○  ASRプッシュボタン:仮想ボタン(画面)を単純にクリック(押す)ことで、または物理的ボタン(クレードルまたはホイールボタンから)からエージェントのアクティブ化を行うこと
・  ASRのアクティブ化(音声入力)
・  ASR-NLU前処理=アプリケーションのコンテキストに基づき、われわれは、センテンス(その信頼度とともに)取り出し、それを作り直してから自然言語理解エンジンに送信することができる。
○  われわれは、電話をかけるモジュールコンテキストに置かれていることを知っているので、われわれは、センテンス内の単語を取り出すか、または変更してからNLUエンジンに送信することができる。
○  フランス語で、ユーザが次のように言ったとき、
・  「donne-moi l'information technologique」=>ASRはわれわれに「Benoit la formation technologique」を送信することができる(完全にユーザの注意から外れている)
・  われわれは、単語「Benoit」を「Donne-moi」に、「formation」を「information」に修正することができる
・  前処理の後、センテンスは、NLUによって理解される機会を完全に拡張し、ユーザに対するアクションを形成する。
【０３５６】
NLUエンジン:
・  特定のモジュールを起動するためにユーザの意図を検出し、各検出は以下の次の章で説明されているようにアプリケーションのコンテキストにおいて動作する。
○  サンプル
・  Gregoryに電話をかける=電話モジュール
・  Basienにテキストを送信する=メッセージモジュール
○  キーワード=モジュール内を直接アクセスするためのキーワード
・  電話=電話にアクセス権を与える
・  ナビゲーション=電話にアクセス権を与える
○  ショートカット=スキーマにリストされているような主アクションに対してのみ、アプリケーション内の任意の場所からユーザが言うことができるセンテンスである。
・  モジュール(意図)からのアクション(機能)の検出
○  サンプル
・  電話をかける=Gregory Renardに電話をかけるアクション
・  このセンテンスは、モジュール、アクション、およびエンティティ(人=Gregory Renard)を検出することを可能にする
・  既定のモジュールのリスト=われわれは、アプリケーションが何を行え、何を行えないかを正確に知っているので、われわれは、ユーザがアプリケーションが行えない何かを行おうとしていること、またはたぶんわれわれがASRから悪い結果を返されていることを検出することができる。この場合、われわれは、既定のモジュールをアクティブ化して、ユーザの意図のセンス(sens)を検出することができる(典型的には、SiriおよびGoogle Nowがユーザをウェブ検索にプッシュする場合)。
○  アプリケーションにおいて利用可能なモジュールのリストのユーザへの提案(限定することなく、われわれは、必要なアプリケーションのタイプからモジュールのリストを拡張することができる)
○  ユーザが再び何か間違ったことを言った場合、または音声認識が作動していない場合=システムは、センテンス音声認識から数認識に切り替えることを提案する。
・  ユーザはシステムが認識しない何かを言った場合、システムはこう言う=「what application do you want to launch」+アプリケーションのリストを開く
・  ユーザが再びシステムが認識しない何かを言った場合、システムはこう言う=「what's the number of the application you want」(われわれは、このワークフローを任意のタイプのリストにおいて連絡先、住所、アルバム、アーチスト、ニュースカテゴリ、メッセージとして使用する)
○  ユーザは選択を行う
・  システムは、モジュールに対する既定の項目リストを示し、モジュール内で利用可能な機能を提案する(音声および/またはビジュアルで)。ユーザは、この場合に、達成するガイダンスで選択を行うことができる
○  リストは、以下のものとすることができる。
・  フィルタ:Malvoisinに電話をかける=>Celineにフィルタリング=連絡先リストについてCeline Malvoisinのリストを表示する
・  文字でフィルタリング:任意のリストに基づき、文字で次々にフィルタを作成することができる
・  ユーザは次のように言うことができる:
・  文字M、文字A、文字L、...でフィルタリング(これは発音できない連絡先へのアクセスを可能にする)
・  文字でフィルタリングにより項目のラベル内の単語のフィルタリングを行う。
・  文字ナビゲーションでフィルタリング:任意のリストに基づき、ユーザは、「go to the letter V」と言うことができる
・  エージェントは、文字Vで始まるすべての連絡先を直接表示する
・  ナビゲート:ユーザは次のようにリストをナビゲートできる
・  次/前=現在のリスト内の項目の次または前のリストを表示する
・  開始=リスト内の先頭の項目を表示する
・  終了=リスト内の末尾の項目を表示する
○  リストは、いつでも読み上げ可能である。
・  項目リストの任意の画面内で、ユーザはリストを読み上げるよう求めることができる
・  リストは次のように読み上げられる
・  各項目が読み上げられ、その後に番号が続き、ユーザが項目番号を記憶しやすいようにする
・  各項目の内容は、前の項目の連絡先がわれわれがすでに知っている部分と一体にならない場合に読み上げられる
・  電話番号リスト内にMalvoisinという5つの連絡先があるとする(Celineについて電話は3つの異なるタイプ、Lucについては1つ、Gregoireについては1つ)
・  ユーザは次のように言う:(われわれは、エージェントが話しているときに内容を繰り返さない)
・  Celine、Mobile USは番号1(Malvoisinはないが、それが私の要求であり、私は私が読んでいるときに私がMalvoisinの連絡先を望んでいることを知っているからである)
・  ホームは、番号2である
・  オフィスは、番号3である
・  Luc, Mobileは、番号4である
・  Gregoire、ホームは、番号5である
・  ユーザによる項目選択
○  項目番号選択=ユーザが項目の前の番号から項目を選択することを可能にする(われわれは、1から5までの番号のみを扱っている)
○  項目内容選択=ユーザが項目のラベル(たとえば、celine)から項目を選択することを可能にする
・  タプルの検出後=モジュール、機能、およびエンティティ(項目選択)
○  システムは、2タイプの機能で処理を実行することができる
・  知識タイプ=ユーザに答えを与えるためにデータ知識(QA、カタログ、Wikipedia、...)にアクセスする
・  アクションタイプ=外部/内部APIを管理しアクセスする必要がある
・  以下で説明されているNLU処理の結果に基づき、システムは2つのシンクロン要素を生成する:
○  TUI=タッチユーザインタラクション(任意のタイプのアプリケーションとしてのユーザに対する画面の設計)
○  VUI=音声ユーザインタラクション(ユーザへのより多くの情報または詳細を求める、または他の質問をすることができる音声フィードバック)
○  VUIおよびTUIは、完全にシンクロンであり、あなたは、タッチまたは音声によって機能ワークフローの次のステップに進むことができ、両方ともシンクロンである
・  あなたが画面をクリックして項目を選択する場合、あなたは、次のステップに進み、エージェントは、アプリケーションにおけるあなたのコンテキスト位置を知る。
・  このコンテキスト位置は、音声がビジュアルとシンクロン状態になることを可能にする
・  現在のワークフローに基づき、エージェントは、ユーザの現在の意図を完全にするためにより多くの情報を必要とするかどうかを検出し、ASRの新たな起動でそれを求めることができる(センテンスフィードバックをTTSに送信した後)
○  ユーザ:今晩のテレビ番組は何がある?
○  システム:どのチャンネルですか(ユーザの意図がTV=モジュールおよび今晩=アクション「今晩のチャンネルプライムタイム」の一部によって検出されるので)>
・  システムは、アクションを完了するために変数が足りないことを理解し、その変数を求める。
○  ユーザ:チャンネル1で
○  システム:これがチャンネル1のプライムです.... blablabla
○  ユーザ:そしてチャンネル2(この場合、われわれは、コンテキストを使用して、何が現在の意図だったか、およびユーザからの最後のアクションを知る=TV/今晩のプライムショーを与える)
○  システム:これがチャンネル2のプライムです.... bliblibli
○  ....そしてシステムはこのコンテキストに制限なく継続することができ、われわれはこのワークフローを「直接的コンテキスト」と呼ぶ
・  前のポイントに基づき(意図/コンテキストの管理)、われわれは、異なるタイプのコンテキストを使用することができる
○  以下のポイントにおける説明を参照。
【０３５７】
時間的コンテキストマトリックス依存関係
これらのタイプのコンテキストに入る前に、われわれは、xBrainSoftからVCPで作成されたコンテキストを定義する必要がある。
【０３５８】
コンテキストは以下のとおりである(現在のコンテキストとして定義される)
・  3D記憶マトリックスとして動作する:
○  次元1:現在のモジュール(モジュール電話)
○  次元2:現在のアクション(アクションは、モジュール電話で電話をかける)
○  次元3:現在の画面(アクションのステップ、たとえば、モジュール電話における電話をかけるアクションに対する連絡先の選択)
・  あなたが記憶ケース(コンテキストフィールド)に記憶の項目の任意のレベルで拡張する能力のある最低でも3つの項目(オブジェクトタイプ、ID「Name」、および値)を有するタプルで任意のタイプの情報を保存することができる。
○  任意の型の変数(int、string、Date、...)
○  任意の型のシリアル化可能なオブジェクト(Car Type、User Type、...)
・  履歴を使用する能力を有する=4D記憶マトリックス(コンテキストは、時間変数による進行中作業である)
○  各時間ステータスは、短期および中期についてユーザセッションのために保存する
○  各時間ステータスは、長期間ファイルまたはデータベースに保存することができる。
【０３５９】
コンテキストは、ユーザの機能の現在のワークフローと関係があり、中期および長期について意図学習を形成する可能性をもたらす。
【０３６０】
われわれは、次のように、コンテキストの2つのカテゴリを有することができる。
・  アプリケーションコンテキスト=短期、中期、または長期にわたって多くのユーザ(アプリケーションの全ユーザまたはアプリケーションのユーザの一部)によって共有される一般的コンテキスト
・  セッションコンテスト=固有のユーザのコンテキスト。
【０３６１】
コンテキストのタイプ:
・  直接的コンテキスト:説明については上記参照。
・  間接的コンテキスト(時間的コンテキスト)=ユーザとエージェントとの間の質問/回答の後(直接的コンテキストがある場合またはない場合)、ユーザは、他のモジュール/機能に進むことができ、そこで、ユーザは、直接的コンテキストを再び使用することができる。しかし、このポイントの後、ユーザは、前の直接的コンテキストモジュールにアクセスして、以下で説明されているようにシステムとのダイアログを継続することができる:
○  ユーザ:What's the weather =>エージェントはパロアルトの天候を私に答えた(私のデバイスのGPS情報を検出して私の位置を見つけてパロアルトの天気を示した)
○  ユーザ:and in San Francisco =>エージェントは、私の最後の直接的コンテキストを見つけて、SFの天気を示した
○  ユーザ:what time is it there =>エージェントは、私が意図モジュールを変更したがっていることを理解し、前のコンテキストからSFでの時間(時)のクエリを完成させるために必要な変数を見つけて戻す
○  ユーザ:and what's the weather tomorrow =>エージェントは、私が天気モジュールに戻りたがっていることを検出し(新しい意図)、最後の天気クエリの中に場所を見つけ、SFにおける明日の天気を示す
○  //間接的コンテキストは、その期間、ファイルまたはデータベースとして長期記憶域に保存し続けることができる。モジュール内のアクションに切断がある場合、間接的コンテキストとなる直接的コンテキストについて同じである。
・  意図学習(IL)=上記の説明に基づき、われわれは、モジュール/アクション/画面/ワークフローの各タプルを加重して意図学習を形成する方法を容易に想像することができる。
○  ILとは何か=ユーザの履歴クエリ、実行されるワークフロー、および得られる結果に基づきユーザのクエリのセンスを理解するシステムの能力(パーソナルアシスタントのインテリジェントマクロのようなもの)。
○  サンプル1(単純)=
・  時刻1
・  ユーザ:Louisに電話をかけてくれますか?
・  システム:私の手元には、あなたの連絡先リストに載っているLouisが多数あります、どれがお望みですか?(私の手元には3つのLouisがある)
・  ユーザ:Monier(=姓)
・  システム:了解しました、私は、Louis Monierに電話をかけます
・  時刻2
・  ユーザ:Louisに電話して!
・  システム:私は、Louis Monierに電話をかけますが、それで正しいですか?
・  ユーザ:はい  ...  システムはLouis Monierに電話をかける。
・  ユーザ:いいえ  ...  了解しました、私の手元には、あなたの連絡先リストに載っているLouisがいくつかあります  ...(システムは、私に時刻1の第2のステップと同じリストを示す)
・  時刻3
・  ユーザ:今すぐLouisに電話して!
・  システム:私は、Louis Monierに電話をかけます。(システムが電話をかける)
○  サンプル2(より複雑)=
・  時刻1
・  ユーザ:メッセージをLouisに送信して
・  システム=あなたがメッセージを送信したい連絡先は誰ですか
・  ユーザ:Louis Monier(またはLouis + filter Monier、Or Monier + Filter Louis)
・  システム=了解しました、あなたはテキストまたはメールを送信したいのですね?
・  ユーザ=テキストを
・  システム=わかりました、どのようなタイプの内容を送信したいですか(私は、フリーテキスト、音声テキストのテンプレートテキストについて選択できます)
・  ユーザ=フリーテキストを
・  システム=送信するあなたのメッセージをおっしゃってください
・  ユーザはメッセージを言う
・  システムは、メッセージの内容、内容の確認、および送信する妥当性確認を求める
・  ユーザは、yesと言うか、または連絡先、メッセージを変更し、より多くの内容メッセージを追加するか、またはキャンセルすることができる。
・  時刻2
・  ユーザ:メッセージをLouisに送信して
・  システム=送信するあなたのメッセージをおっしゃってください
・  ユーザはメッセージを言う
・  システムは、メッセージの内容、内容の確認、および送信する妥当性確認を求める
・  ユーザは、yesと言うか、または連絡先、メッセージを変更し、より多くの内容メッセージを追加するか、またはキャンセルすることができる。
○  サンプル3(より複雑)
・  時間N
・  ユーザ=毎週水曜日に、ユーザは午後6時に退社するときに、妻に電話してから、家路に就く(子供たちがスポーツしにいける準備ができているか尋ねる)
・  そのために、ユーザは、上の#1のようなサンプルを使用して妻に電話をかける必要がある。
・  システムは、多数の情報源を使用している= BTデータ、OBDデータ(またはなし)、時刻(午後6時)、所在(家にいない)、履歴意図(アジェンダリマインダー+ジオフェンシング)
・  システム=ユーザが自分の自動車に辿りついたときに(自動車BT接続またはOBDコネクタによって検出される)、x分後(自動車に乗り込む平均時間)
・  システムはユーザに自動的に戻り、次のように言う:
・  システム:「Greg、私が家までのナビゲーションを開始し、おくさんに電話をかけてもよいですか?」
・  ユーザ:はい=>Celine Malvoisinに電話をかけるアクションが開始する
・  ユーザ:いいえ=>エージェントは何もせず、意図学習項目のダウングレードを通知する。
【０３６２】
一実施形態において、ILは、ユーザとのASR対話を制限し、エージェントが実行する必要のあるアクションで達成する時間を最適化するために作成された。ILは、現在のコンテキストに基づき一般ワークフロー実行を記憶し、自分で見つけられないパラメータを求める。
【０３６３】
私は、次週私が配備するものとして、システムのILの他の多数のサンプルを持っている...私はフランス人の男であり、英語のASRシステムは私の声を(フランス語なまりに関して)認識せず、この場合私はシステムを使って英語のテキストをあなたに送信することを望んでおり、私はサンプル2を使用することができ、テキストをあなたに送信する直前に、私はテキストを英語に翻訳することを求めることができ(私は望まれた場合にあなた向けのデモを持っている)、システムは私のフランス語センテンスを英語に翻訳し、それをあなたに送信する。それと同時に、システムはあなたが英語を話していることを理解し、あなたからのメッセージに対して英語のTTSを使用する(既定で)(妥当性確認の前にあなたは英語でテキストを私に送る)。//われわれがこれほど簡単に複雑なタスクをハックできるのはおかしい、p=音声によるリアルタイムテキスト翻訳
【０３６４】
別の興味深いポイントは、われわれがコンテキストまたは意図を切断してワークフローのアプリケーションにおける任意の場所から任意のキーワードまたはショートカットセンテンスに優先度を与えることができる点である。
【０３６５】
付録E:コンテキスト
コンテキスト:既存のパーソナルアシスタントの現状
今日、パーソナルアシスタントは、第1のレベルのコンテキストを持っており、主にユーザのセンテンスの理解を助け、単語をよく認識しようと試みる。次のサンプルでは、それらがどのように働いているかを説明するものである。
・  私はRenaudに電話をかけたい=>姓
・  私はRenaultでドライブ中である=>ブランドカー
【０３６６】
ここに関係と、システムが解釈してユーザに送り返す必要があるのは[Renaud,Renault]のどちらであるかを定義するコンテキスト定義がある。コンテキストは、また、天気は...および明日のような特定の場合でも使用される(コンテキスト変数としてのローカライゼーション、ただし、単純なローカライゼーション変数が2つのステップの間で共有される単なるプロセスにすぎない)。
【０３６７】
問題点
パーソナルアシスタントの主な問題点は、ユーザとエージェントとの間の真のダイアログ交換を形成することである。
【０３６８】
この態様を理解するために、われわれは、「真のダイアログ」となる資格を理解する必要がある。
・  人間のディスカッション(質問応答ではなく)としての継続ダイアログ管理
○  Yahooに関する情報を求める能力...誰が創設者であるか、株価およびニュースは何か(エージェントは話題を覚えておく)
・  コンテキストダイアログ情報メモリ:簡単に、中期と長期
○  ディスカッションのフローにおける情報を覚えておく能力
・  プロセスワークフローメモリのコンテキストステータス:簡単に、中期と長期
○  あなたがプロセスまたはディスカッションフローの中のどこにいたか(ステップ)(アクションを引き起こすか、引き起こさないか)を覚えておき、将来どのような時点においてもプロセスまたはワークフローを継続することができるようにする能力。
【０３６９】
その上に、われわれは、ユーザとやり取りするためにエージェントによって使用される言語の進化を生み出すことを必要としている。それ以上に、われわれは、エージェントからの共感の認知を与えることを必要としている。
【０３７０】
xBrainSoftによる一般コンテキスト管理
コンテキストは、われわれのラストコールの間に説明しているように、4つのコンポーネントで構築される:
1.コンテキストクライアントサイドホルダ(CCSH)
この第1のコンポーネントは、クライアントの記憶、使用、およびクライアントサイド(ロボット、スマートフォン、車両、家、...)からのコンテキストフローの定義(値)がサーバサイドと共有することを可能にする。CCSHは、APIを使用するFxであり、クライアントサイドからコンテキストフローの値を作成し、使用し、定義し、以下のようにCSPを通じて送信する。
2.コンテキスト同期プロトコル(CSP)
この第2のコンポーネントは、現在のコンテキストのステータスまたはサブステータスの各プロパティ(変数)についてキーアクセス(コンテキストID)のプロトコル(標準化)を定義し、キーアクセスのフォーマットおよび存在の妥当性確認を行う。これらは、単純なテキスト変数(名前/値)またはインスタンスを有する特定のオブジェクトであってよい。CSPのゴールは、エージェントの各側(クライアントサイド/サーバサイド)上の2フレームワーク実装による通信プロトコルおよびその構築であり、クライアントとサーバとの間の正しいプロトコル通信の妥当性確認を行い、コンテキスト情報が適切に配信され同期されていることを確実にする役目を負っている。
3.コンテキストエージェント-サーバサイドホルダ(CA)
この第3のコンポーネントは、サーバの記憶、使用、およびサーバサイド(オンラインサーバ)からのコンテキストワークフローの定義(値)がCSPを通じてクライアントサイドと共有することを可能にする。CAは、APIを使用するFxであり、サーバサイドからコンテキストワークフローの値を作成し、使用し、定義し、上記のようにCSPを通じて送信する。
4.コンテキストエンジン
この最後のコンポーネントは、変数共有レベルならびに中期および長期セッションをデータ記憶域に置くことを可能にする(任意のサポートで)。
短期記憶は、クライアントサイドとサーバサイドとの間で共有される現在のセッションによって管理される。
これは、コンテキストタイプの話題のタイプまたは分類を定義することができる(変数は単純変数またはシリアル化されたオブジェクト+値であってよい)。
1.現在のユーザプロファイル=ユーザプロファイルに関する情報(Facebookプロファイル、アプリプロファイル、...)
2.現在のモジュール=モジュールに関する情報(電話、メッセージ、ナビゲーション、ニュース、...)
3.現在の機能=機能に関する情報(電話をかける、電話を受ける、テキストを送信する、ニュースを読む、ニュースをシェアする、...)
1.Louis Monierに電話するに対するLouisに電話するは、Louis=Louis Monierを学習した中期/長期コンテキストエンジンからロードされ得る。
4.現在の画面=ユーザに現在示している画面に関する情報。
5.カスタムデータ=望むいかなる局面でも開発者がコンテキストを使えるようにするAPI(新しいコンテキストの形)
6.ワークフロー履歴=表示されるまたは表示する画面、特定のステップにおける変数値、ワークフローステータス、...に関する情報を持つユーザのワークフロー内の位置に関する情報
1.私はFacebookに関するニュースをシェアすることを求め、私が「Continue」と言った後に、エージェントは現在のカテゴリに対するニュースのリスト内の次のニュースに進む。エージェントは、コンテキストから、現在のカテゴリ、それが...であったという箇所を読んでいたニュースのステップ(the step in the news reading where it was…)を知り、ユーザの必要とするものを正しい意図で私に送信することができる。
【０３７１】
プロセス
1.音声および接続プラットフォームは、同期および非同期モードで動作しており、われわれは、いつでも、クライアントサイドとサーバサイドとの間のコンテキストの完全な同期の妥当性を確認する必要がある。
2.各モジュール、機能、画面、アプリケーション、セッション、またはステータスなどは、固有のID(コンテキストID)で識別され、クライアントとサーバとの間で共有される必要がある。
3.コンテキストID(情報記憶メモリ)およびその値は、エージェントの各側(クライアントサイド/サーバサイド)に記憶され、各対話で両サイドの間で同期する。
4.コンテキストIDは以下を可能にする:
1.変数(単純変数またはオブジェクト)の値に基づきフィルタおよびコンテキストアクションを作成する:もし...ならば....
2.中期または長期記憶域内で、短期メモリにロードする必要がある情報を見つける(またはグローバルユーザ挙動/アプリケーションレベルからの機械学習、要求された値に対する確率によって)
3.われわれがワークフロー内にいる場合のステップ、前のステップを知る(またはグローバルユーザ挙動からの機械学習、次のステップに対する確率によって)
4....それ以上に、われわれはこの革新から発見を行っている。
【０３７２】
どのように動作するか(寿命)
・  ASRの後、およびNLUプロセスの直前に、デバイスは、デバイスからの現在のコンテキストIDを持つ隠された部分をセンテンスメッセージとともに送信している。
・  エージェントは、自然言語理解を実行する前にキーアクセス(コンテキストID)を見ている。
○  エージェントはコンテンツを見ており、現在のコンテキストに対するアクションおよび理解のグローバル言語辞書をフィルタリングする。
・  エージェントはコンテキスト理解においてNLUプロセスを起動する
○  アクションは起動される(APIアクセスまたはナレッジアクセス)
○  エージェントはユーザのクエリの意味を解釈する...(前のメール参照)
・  デバイス(または任意の種類のエンドポイント)に回答を与える前に、
○エージェントは、隠されている部分内の回答メッセージを通じて新しいコンテキスト(モジュール/機能/画面)を送信する(HTMLページのヘッダのように)
○  新しいコンテキストは、多くの変数から定義され得る:
・  エンドポイントユニット内の現在の画面
・  現在のモジュール、機能
・  ユーザのセンテンス、ダイアログ、および選択ワークフロー。
・  エージェントは、回答をマージして(音声、画面、情報とともにパッケージして)、デバイス(エンドポイント)に送信し、ユーザに対してレンダリングする
・  クライアントサイドは、パッケージを実行し、現在のコンテキストを記憶する。
○  コンテキストは、画面、機能、またはモジュール...から強制され得る。ホーム画面の場合に、われわれは、コンテキストのリセットを強制し、ユーザをエージェントとのまっさらな対話からスタートさせる。
サーバとクライアント(エンドポイント)との間にコンテキストの食い違いがある場合、クライアント(エンドポイント:デバイス、車両、家)は、ユーザ(実際のマスター)のアクションを表しているのでマスターである。
【０３７３】
使用例:
・  ユーザが次のように言うときに選択するLouisをコンテキスト化する:私はLouisに電話をかけたい(履歴通話挙動に基づく)=>Louis Monierに電話をかける
・  次のように実行するプロセスをコンテキスト化する:メッセージをLouisに送信する
○  システムは次のことを知る:メッセージ=電子メール、Louis=Louis Monier
○  音声ショートカット...を許可し、Louis Monierに電子メールを送信するためにワークフロー内の2つのステップをカットする。
・  次のように実行する次のステップをコンテキスト化する:多くのセッションにおいて、私はニュースの順序を要求する=エコ、政治、およびスポーツ。次回私がエコを求めるときに、エージェントはあなたに、政治およびスポーツのニュースを読み上げるよう提案する。
・  アプリケーションのグローバル予測ワークフローに基づき次のステップをコンテキスト化する。
・  要求されたアクションをコンテキスト化し、それが現在のコンテキストのターゲットになっていないことを理解し、それを前のアクションに使用することができる。
○  私はニュースのリストを読んでいる、私は天候を尋ねている、私は「続けて」と言う、エージェントは次のニュースに進んでいる。
・  特定の単語を「音楽」とコンテキスト化し...電話で音楽ニュースまたは音楽であってよいニュースのコンテキストを尋ねるか?
○  音楽コンテキストから、これは明らかにデバイスの音楽トラックにアクセスするものである
○  ニュースコンテキストでは、これはニュースの音楽再生に対するものであってよく、エージェントは理解して、ユーザに戻りより正確であるよう求める。
○  ユーザが、ニュースコンテキストにおいて音楽を再生して、と言った場合、エージェントは、ユーザがニュースを読みたくないと理解する。
・  われわれは、現在のコンテキストをしているので、われわれは、入力音声認識をコンテキスト化することができ、センテンス内の単語を変更してからセンテンスの意味を理解することを試み...または反対に、特定のコンテキストにおいて利用可能な語彙を拡張してアクションを開始する。
○  第2の効果は、われわれが、アクションの妥当性確認を行う多数のパターンを作成する必要はないことである(たとえば、音楽という言葉は、音楽を再生するアクションを起動するためにルート画面のコンテキストにおいて短いまたは長いセンテンス内のキャッチであり得る)。
○  第3の効果は、翻訳に対するものであるが、それはあなたが各コンテキストモジュール/機能/画面についてユーザの意図するアクションをキャッチするためのキーワードを制限することができるからである。
・  TVのコンテキストで再生することは、ゲームをするか、またはTV番組を見ることである
・  スポーツのコンテキストで再生することは、新しいゲームをすることである
・  ディスコのコンテキストで再生することは、音楽を再生することである
・  ...1単語、コンテキストに応じて多くの意図...任意の言語に翻訳することが容易
○  第4の効果は、辞書が非常に限られている可能性があるのでエージェントのサポートである。
・  ニュースキャスターの場合、われわれは、「News」(+同義語)とニューストピックエンティティとをキャッチする。
・  タスク優先度のパイプラインの作成
○  私は、現在、連絡先に対するメッセージを作成している(一般的に、私はアクションの終わりに進みたい)
○  私は、このときに、連絡先からテキストを受信し、システムは、現在のコンテキストを見て、ユーザがいつメッセージの作成処理に入っているかを知り、現在のアクションを中断する必要がない
○  エージェントは、メッセージのパイプラインを作成し、メッセージ作成コンテキストの終わりに、私に、メッセージを読むことを提案する(コンテキストが変化しているとき)
・  コンテキストに応じたメッセージの翻訳
○  私は、Markへのメッセージを作成し(彼はENを話し、私はFrでメッセージを作成する)、システムは、妥当性確認する必要のあるメッセージのコンテキストに基づき、翻訳するために送信前に受信者の言語を知っているかどうかを知る。
【０３７４】
コンテキストワークフローは、ユーザセッションの終わりの始まりからのプロセスワークフローにおけるコンテキストマトリックス(モジュール、機能、画面)のステータスである。われわれは、コンピュータが意図学習からの集団知能(数値的直観生成(Numeric Intuition Generation))から直観を形成することを可能にするシステムを作成した。
【０３７５】
前記の内容について少しだけ注意を述べる。
・  説明されているように、われわれは、同期および非同期モードでの作業を行っている。
○  この2つの経路は、非同期モードに対してプロアクティビティなどを可能にするために使用される。
○  2つのサイドが、両方のステータスがダイアログに対する各サイドのどこにあるかを知ることを可能にする。
・  寿命のためのアドオン:
○  第1のポイントについて:また、ASRからではなく、アプリケーションナビゲーション(触覚的対話)において送信することもできる。
○  第5のポイントについて:パッケージは、すべてのまたは部分的な内容と一緒に送信できる
・  われわれは、音声統合なしですべての要素を送ってもよく、この場合、エージェントは、レンダリング全体およびコンテキストの作成/編集を管理する。
【符号の説明】
【０３７６】
100  システム
102  ネットワーク
103  モバイルネットワーク
104a…104n  信号線
106  クライアントデバイス
106a…106n  クライアントデバイス
108  信号線
109  クライアントサイドの音声および接続エンジン
109a、109n  クライアントサイドの音声および接続エンジン
110  自動音声認識(ASR)サーバ
110a…110n  線
111  自動音声認識エンジン
111a、111n、111x  自動音声認識エンジン
112  ユーザ
112a…112n  ユーザ
114  信号線
116  テキスト読み上げ(TTS)サーバ
119  テキスト読み上げエンジン
119a、119n  テキスト読み上げエンジン
120  信号線
122  音声および接続サーバ
124  サーバサイド
124  サーバサイドの音声および接続エンジン
200  コンピューティングデバイス
202  プロセッサ
204  メモリ
206  通信バス
208  通信ユニット
241  記憶装置デバイス
322  自動音声認識(ASR)エンジン
324  クライアントサイドコンテキストホルダ
326  自然言語理解エンジン
328  ワークアラウンドエンジン
330  接続エンジン
420  コンテキストエージェント
422  コンテキストエージェント
424  コンテキストエンジン
426  フェデレーションエンジン
810a/812a/814a  コンテキスト
820a、822a、824a、および826a  画面
830a  ホーム画面
【図１】
0006671379.tif 000027
【図２】
0006671379.tif 000028
【図３】
0006671379.tif 000029
【図４】
0006671379.tif 000030
【図５】
0006671379.tif 000031
【図６】
0006671379.tif 000032
【図７】
0006671379.tif 000033
【図８】
0006671379.tif 000034