以下に続くことは、データ処理システム、ディスプレイデバイス、およびクライアントデバイスなどの、複数のデバイスを横断してオーディオクエリの並列処理を協調させるための、方法、装置、およびシステムに関係する様々な概念およびそれらの実装形態のより詳細な説明である。上記で紹介され以下でさらに詳細に説明される様々な概念は、数多くの方法のうちのいずれかで実施され得る。
オーディオクエリは、複数のデジタルアシスタントコンポーネントによって処理され得る。しかしながら、異なるデジタルアシスタントコンポーネントは、それぞれの構成要素によって使用される処理技法に基づいて、または異なるデジタルアシスタントコンポーネントに対して確立されたデータベースアクセス制御に基づいて、オーディオクエリに対する異なる結果を生成することがある。さらに、異なるデジタルアシスタントコンポーネントが、異なる時間において処理するとともに結果を戻すことがある。したがって、異なるデジタルアシスタントコンポーネントが並行してまたはオーバーラップ方式でオーディオクエリを処理できる場合、オーディオクエリの処理を協調させることは困難であり得る。
本技術的解決策のシステムおよび方法は、オーディオクエリのオーバーラップ処理の協調を行う。たとえば、コンピューティングデバイスは、コンピューティングデバイスのマイクロフォンによって検出されたオーディオクエリを受信することができる。コンピューティングデバイス、またはそれらのインターフェースは、処理のためにオーディオクエリを第1のデジタルアシスタントエージェントに転送することができる。インターフェースは、処理のためにオーディオクエリを第2のデジタルアシスタントエージェントに転送することができる。第1のデジタルアシスタントは少なくとも1つの第1の結果を生成することができ、第2のデジタルアシスタントは第2の結果を生成することができる。第2のデジタルアシスタントは、第2の結果に対する信頼性スコアを生成することができる。信頼性スコアに応答して、第2のデジタルアシスタントは、第1のデジタルアシスタントをオーバーライドすることができ、第2の結果を戻すべきと決定することができる。第2のデジタルアシスタントは、第1の結果がまだ利用可能でないことを決定することができ、第2の結果を提供するために第1のデジタルアシスタントをオーバーライドすることができる。
たとえば、複数のデジタルアシスタントコンポーネント(たとえば、デジタルアシスタント、デジタルアシスタントエージェント、または音声エージェント)は、コンピューティングデバイス(たとえば、ネットワーク接続型テレビジョン、ネットワーク接続型スピーカ、または他のネットワーク接続型コンピューティングデバイス)を介してユーザによって入力されたオーディオクエリを処理し、構文解析し、サービスし、またはそれに応答するように構成され得る。本技術的解決策のシステムおよび方法は、応答するデジタルアシスタントエージェントの間で調停し優先度を付けるためのフレームワークを提供する。たとえば、プリプロセッサ構成要素によって音声クエリがテキストに文字化された後、クエリは、クエリを処理するために第1のデジタルアシスタント(たとえば、サードパーティのデジタルアシスタントコンポーネントを用いて構成されたサードパーティクラウド)に渡され得るが、第2のデジタルアシスタントは、並行してまたはオーバーラップ方式でクエリを処理することができる。
デジタルアシスタントコンポーネントのうちの1つ、または別個のコーディネータ構成要素もしくは応答ハンドラ構成要素は、応答を提供するためにどの音声エージェントを使用すべきかを、-または、どの応答を使用すべきかを、決定することができる。コーディネータ構成要素は、どのデジタルアシスタントコンポーネントを使用すべきかを決定するための規則、ポリシー、または品質査定技法を用いて構成され得る。第2のデジタルアシスタントコンポーネントは、第1のデジタルアシスタントコンポーネントをオーバーライドすべきと決定することができる。第2のデジタルアシスタントコンポーネントは、信頼性スコア、品質査定技法、クエリを構文解析することから生成される信号、結果を提供するために使用されるデータベース、またはクエリに関連する領域に基づいて、第1のデジタルアシスタントをオーバーライドすべきと決定することができる。
たとえば、第1のデジタルアシスタントは、「Streaming_Service_A上でMovie_Aを再生してください」などのメディア領域のクエリに関係するオーディオクエリを処理しそれに応答するように構成され得るが、第2のデジタルアシスタントコンポーネントは、「私の次のアポイントメントはいつですか」などの検索領域のクエリを処理しそれに応答するように構成され得る。検索クエリ信号があいまいであるかまたは複数のカテゴリーに入る場合、コーディネータ構成要素は、複数のデジタルアシスタントコンポーネントからの応答にスコア付けまたはランク付けすることができ、デジタルアシスタントコンポーネントのうちの1つからの応答を選択することができる。たとえば、コーディネータ構成要素は、信頼性レベルまたは他の要因に基づいて、応答またはクエリにスコア付けまたはランク付けすることができる。
したがって、本技術的解決策のシステムおよび方法は、第1のデジタルアシスタントコンポーネントおよび第2のデジタルアシスタントコンポーネントが直列ではなく並行してまたはオーバーラップ方式で動作することを可能にすることによって、レイテンシを短縮することができる。レイテンシは、最初に処理を完了するデジタルアシスタントからの結果を選択することによってさらに短縮され得る。信頼性は、ランク付け決定関数を使用してデジタルアシスタントのうちの1つからの応答または結果を選択することによって高めることができる。本技術的解決策のシステムおよび方法は、好適な領域を得るためにサードパーティクラウドが働くことへの依存状態を低減することができ、そのことは、よりロバストな性能をもたらすことがある。たとえば、第2のデジタルアシスタントコンポーネントからの応答が、利用可能であり、かつ第2のデジタルアシスタントまたはそれらの管理者によって好まれる領域にクエリが属することを示す場合、第2のデジタルアシスタントコンポーネントは、第1のデジタルアシスタントコンポーネントが応答を戻すことさえ待つことなく応答を提供することができ、それによって、第1のデジタルアシスタントが、より低速であるか、または誤動作、エラー、障害、過剰な処理負荷、もしくは他の処理問題に遭遇している場合にレイテンシまたは遅延を短縮する。本技術的解決策のシステムおよび方法は、第1のデジタルアシスタントコンポーネントまたは第2のデジタルアシスタントコンポーネントのいずれかからの信頼性スコアへの、結果の微調整を行うことができる。第1のデジタルアシスタントコンポーネントは、「フォールバック」結果とともにそれらの結果の信頼性スコアを報告することができる。第2のデジタルアシスタントコンポーネントが、しきい値または第1のデジタルアシスタントコンポーネントの信頼性スコアに比べて低い信頼性スコアを有する場合、システムは、第1のデジタルアシスタントコンポーネントからの「フォールバック」結果を戻すべきと決定することができる。第1のデジタルアシスタントコンポーネントが返答を有しないことを、第1のデジタルアシスタントコンポーネントが示す場合、第2のデジタルアシスタントコンポーネントは、クエリに関連する領域または信号にかかわらず結果を提供することができる。
本開示のシステムおよび方法は、それら自体のデジタルアシスタントエージェントを有するサードパーティのテレビジョンが、データ処理システムによって提供されるデジタルアシスタントエージェントと統合することを可能にするための方法を、提供することができる。システムおよび方法は、データ処理システムのデジタルアシスタントコンポーネントがインタラクションを行うことができるサードパーティの音声エージェントエンドポイントなどの、デバイスのタイプに対する共通メタデータを指定するためのデバイスモデル、任意の音声バイアスフレーズ、およびブラウザなどのデバイス能力を登録することを含むことができる。システムおよび方法は、メディアクエリなどをサービスするためにどのクエリ領域が好ましいのかを指定するための、デバイスモデルの中の領域を提供することを含むことができる。システムおよび方法は、テレビジョン上での視覚的な結果のためのデジタルアシスタントソフトウェア開発キット(「SDK」)アプリケーションプログラミングインターフェース(「API」)拡張と統合することを含むことができる。システムおよび方法は、デバイスにサインインするようにユーザを案内するためのデジタルアシスタントSDKアウトオブボックスエクスペリエンス(「OOBE: out-of-box experience」)フローと統合することを含むことができる。OOBEおよび認証をサポートするためのデバイス制限ソリューションは、セキュアであり得る。
モデル登録APIは、テレビジョンまたは他のコンピューティングデバイスの製造業者が、彼らのクラウド自然言語理解(「NLU: natural language understanding」)エンドポイントおよび他の独立系放送番組固有のメタデータを指定することを可能にすることができる。システムは、デバイス上で発せられる共通クエリを正しく認識するために、データ処理システムの自動音声認識用のデバイスモデルとともに登録されたコンテキスト音声バイアスフレーズを提供することができる。システムは、最適なレイテンシを得るために、データ処理システムの候補結果を構築することと並行してサードパーティクラウドNLUをトリガすることができる。システムは、領域に基づいてクエリを履行するためのランク付けプロトコルまたはランク付けポリシーを考慮に入れる、ランク付けレイヤを提供することができる。システムは、サインインを必要とすることなくデジタルアシスタントコンポーネントからの応答を可能にするための、新たな処理フローを提供することができる。システムは、サードパーティのデジタルアシスタントによって応答が提供されるクエリに対してコンテンツ選択を阻止することができ、他のログからそのようなクエリをスクラブ(scrub)するための後処理を実行することができる。システムは、プラットフォーム上で複数のエージェントが利用可能であるので、エージェントの能力に対するフローを提供することができる。ブラウザを有する任意のデバイスが、視覚的な結果を見せることができ、かつ提案クリックまたはリンクなどの対話型要素をサポートできるように、システムはサードパーティのデバイス上でHTML5をレンダリングするためのスケーラブルな視覚ソリューションを提供することができる。
図1は、複数のデバイスを横断してオーディオクエリの並列処理を協調させるための例示的なシステム100を示す。システム100は、少なくとも1つのデータ処理システム102、少なくとも1つの第1のデジタルアシスタントサーバ106、1つまたは複数のクライアントデバイス104、1つまたは複数のディスプレイデバイス108、およびネットワーク110を含むことができる。ディスプレイデバイス108は、(たとえば、ネットワーク110、短距離通信、またはペアリングを通じた)ワイヤ接続またはワイヤレス接続を介して、クライアントデバイス104に結合され得る。クライアントデバイス104は、ディスプレイデバイス108の一部であり得るか、またはさもなければディスプレイデバイスの中に統合され得る。少なくとも1つのデータ処理システム102、1つまたは複数のクライアントデバイス104、および1つまたは複数のディスプレイデバイス108は、ネットワーク110を介して互いに通信可能に結合され得る。
データ処理システム102は、インターフェース122を含むことができる。データ処理システム102は、第2のデジタルアシスタントアプリケーション120を含むことができる。データ処理システム102は、オーディオベースの入力を構文解析するための自然言語プロセッサ(NLP: natural language processor)構成要素124を含むことができる。データ処理システム102は、システム100の中の他のデバイスのインターフェースを検出および管理するためのインターフェース管理構成要素128を含むことができる。データ処理システム102は、オーディオベースの信号を生成するためのオーディオ信号発生器構成要素130を含むことができる。データ処理システム102は、オーディオベースの入力から構文解析された要求を履行するためのダイレクトアクションアプリケーションプログラミングインターフェース(API)126を含むことができる。データ処理システム102は、オーディオベースの入力信号への応答を選択するためのオーディオ信号発生器構成要素130を含むことができる。データ処理システム102は、データリポジトリ140を含むことができる。データ処理システム102は、検索コーディネータ構成要素132、コンテンツインデクサ構成要素134、ランク付けエンジン136、および応答ハンドラ構成要素138を含むことができる。NLP構成要素124、インターフェース管理構成要素128、オーディオ信号発生器構成要素130、データリポジトリ140、ダイレクトアクションAPI126、インターフェース管理構成要素128、検索コーディネータ構成要素132、コンテンツインデクサ構成要素134、ランク付けエンジン136、および応答ハンドラ構成要素138は、デジタルアシスタントアプリケーション120を形成することができる。
デジタルアシスタントアプリケーション120などのデータ処理システム102の機能は、1つまたは複数のクライアントデバイス104および1つまたは複数のディスプレイデバイス108の中に含まれ得るか、またはさもなければそこからアクセス可能であり得る。データ処理システム102の機能は、クライアントデバイス104上またはディスプレイデバイス108上で実行するデジタルアシスタントアプリケーション120を伴う機能またはインターフェースに対応し得る。クライアントデバイス104およびディスプレイデバイス108は各々、デジタルアシスタントアプリケーション120の1つまたは複数の構成要素の別個のインスタンスを含むことができ、それを実行することができる。クライアントデバイス104およびディスプレイデバイス108は、ネットワーク110を介した、リモートデータ処理システム102上のデジタルアシスタントアプリケーション120の構成要素の機能へのアクセスを、別の方法で有することができる。たとえば、ディスプレイデバイス108は、NLP構成要素124の機能を含むことができ、データ処理システム102へのネットワーク110を介して、デジタルアシスタントアプリケーション120の構成要素の残部にアクセスすることができる。データ処理システム102、クライアントデバイス104、およびディスプレイデバイス108は、デジタルアシスタントアプリケーション120の構成要素の別個のインスタンスを含むことができ、それを実行することができる。クライアントデバイス104およびディスプレイデバイス108にアクセス可能な、またはそれらの上で実行する、デジタルアシスタントアプリケーション120は各々、異なる機能を有してよい。クライアントデバイス104またはディスプレイデバイス108は、データ処理システム102とインターフェースする第2のデジタルアシスタントアプリケーション120を実行することができる。データ処理システム102は、第1のデジタルアシスタントサーバ106とインターフェースすることができる。
クライアントデバイス104およびディスプレイデバイス108は各々、ネットワーク110を介してデータ処理システム102と互いに通信するためのプロセッサを有するコンピューティングデバイスなどの、少なくとも1つの論理デバイスを含むことができる。クライアントデバイス104およびディスプレイデバイス108は、データ処理システム102に関して説明する構成要素のうちのいずれかのインスタンスを含むことができる。クライアントデバイス104は、デスクトップコンピュータ、ラップトップ、タブレットコンピュータ、携帯情報端末、スマートフォン、モバイルデバイス、ポータブルコンピュータ、シンクライアントコンピュータ、仮想サーバ、スピーカベースのデジタルアシスタント、または他のコンピューティングデバイスを含むことができる。ディスプレイデバイス108は、スマートテレビジョン、ハイブリッドテレビジョン、接続型テレビジョン、テレビジョンに接続されたセットトップボックス、デジタルビデオレコーダ、モニタ、スクリーン、または表示機能を有する他のコンピューティングデバイスを含むことができる。クライアントデバイス104は、ディスプレイデバイス108と通信可能に結合され得る。たとえば、ペアリングされると、クライアントデバイス104は、ディスプレイデバイス108における様々な機能を制御するためのリモート制御装置として機能し得る。クライアントデバイス104は、ディスプレイデバイス108の一部であり得るか、またはディスプレイデバイス108と統合され得る。
システム100の構成要素は、ネットワーク110を介して通信することができる。ネットワーク110は、たとえば、ポイントツーポイントネットワーク、ブロードキャストネットワーク、ワイドエリアネットワーク、ローカルエリアネットワーク、電気通信ネットワーク、データ通信ネットワーク、コンピュータネットワーク、ATM(非同期転送モード)ネットワーク、SONET(同期光ネットワーク)ネットワーク、SDH(同期デジタルハイアラーキ)ネットワーク、NFC(近距離場通信)ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスネットワークまたはワイヤラインネットワーク、およびそれらの組合せを含むことができる。ネットワーク110は、赤外チャネルまたは衛星バンドなどのワイヤレスリンクを含むことができる。ネットワーク110のトポロジーは、バス型、スター型、またはリング型のネットワークトポロジーを含んでよい。ネットワーク110は、高度モバイルフォンプロトコル(AMPS: advanced mobile phone protocol)、時分割多元接続(TDMA)、符号分割多元接続(CDMA)、モバイル通信用グローバルシステム(GSM)、汎用パケット無線サービス(GPRS: general packet radio services)、またはユニバーサルモバイル電気通信システム(UMTS)を含む、モバイルデバイスの間で通信するために使用される1つまたは複数の任意のプロトコルを使用する、携帯電話ネットワークを含むことができる。異なるタイプのデータが、異なるプロトコルを介して送信されてよく、または同じタイプのデータが、異なるプロトコルを介して送信されてもよい。
ネットワーク110は、Bluetooth、Bluetooth低エネルギー、専用短距離通信(DSRC: Dedicated Short-Range Communications)、または近距離場通信(NFC)プロトコルを使用する、クライアントデバイス104とディスプレイデバイス108との間に確立された(たとえば、最高30メートルにおよぶ)短距離通信リンクを含むことができる。そのようなプロトコルを使用して、データ処理システム102は、インターフェース122を介した1つまたは複数のクライアントデバイス104との通信リンクを確立することができる。データ処理システム102は、インターフェース122を介した1つまたは複数のディスプレイデバイス108との通信リンクを確立することができる。短距離通信リンクは、ペアリングプロトコルを介してクライアントデバイス104とディスプレイデバイス108との間に確立され得る。
クライアントデバイス104は、センサ152、スピーカ150、インターフェース122、およびトランスジューサ154を含むことができる。ディスプレイデバイス108は、センサ152、スピーカ150、インターフェース122、およびトランスジューサ154を含むことができる。クライアントデバイス104およびディスプレイデバイス108は、少なくとも1つのセンサ152、少なくとも1つのトランスジューサ154、少なくとも1つのオーディオドライバ、および少なくとも1つのスピーカ150を含むことができる。センサ152は、マイクロフォンまたはオーディオ入力センサを含むことができる。センサ152は、GPSセンサ、近接センサ、周辺光センサ、温度センサ、動きセンサ、加速度計、またはジャイロスコープのうちの少なくとも1つを含むことができる。センサは、占有センサまたは重量センサを含むことができる。トランスジューサ154は、オーディオ入力を電子信号に変換することができる。オーディオドライバは、スピーカ150を制御するためにクライアントデバイス104またはディスプレイデバイス108の1つまたは複数のプロセッサによって実行されるスクリプトまたはプログラムを含むことができる。スピーカ150は、電気信号を可聴波に変換することによってオーディオ信号をレンダリングすることができる。クライアントデバイス104およびディスプレイデバイス108は各々、他のデバイスの中でも、キーボード、ポインティングデバイス、(内蔵されるかまたは独立した)モニタ、およびヘッドフォンなどの、周辺デバイスを含むことができる。
クライアントデバイス104およびディスプレイデバイス108は各々、マルチメディアコンテンツアプリケーション160のインスタンスを実行することができる。マルチメディアコンテンツアプリケーション160は、特定の第1のデジタルアシスタントサーバ106に関連付けられ得る。マルチメディアコンテンツアプリケーション160は、クライアントデバイス104またはディスプレイデバイス108においてインストールされたスクリプトまたはプログラムを含むことができる。マルチメディアコンテンツアプリケーション160は、ウェブブラウザなどの、クライアントデバイス104またはディスプレイデバイス108においてインストールされた別のアプリケーションを介して実行可能な、スクリプトまたはプログラムを含むことができる。マルチメディアコンテンツアプリケーション160は、クライアントデバイス104またはディスプレイデバイス108における他のアプリケーション(たとえば、デジタルアシスタントアプリケーション120)がマルチメディアコンテンツアプリケーション160とインターフェースすることを可能にすることができる、アプリケーションプログラミングインターフェース(API)を含むことができる。マルチメディアコンテンツアプリケーション160は、マルチメディアコンテンツを再生すること、ストリーミングすること、ダウンロードすること、またはさもなければそれにアクセスすることができる。マルチメディアコンテンツは、特に、MP3、ACC、OPUS、RTMP、RTP、MP4、FLV、WebM、ASF、ISMA、HEVC、H.264、VP8、VP9、HLS、HDS、およびSMILなどの、任意のフォーマットでの1つまたは複数のオーディオビジュアルコンテンツファイルに相当し得る。1つまたは複数のオーディオビジュアルコンテンツファイルは、クライアントデバイス104またはディスプレイデバイス108における再生用のオーディオコンテンツおよび/またはビジュアルコンテンツを含むことができる。1つまたは複数のオーディオビジュアルコンテンツファイルのロード時に、マルチメディアコンテンツアプリケーション160は、クライアントデバイス104上またはディスプレイデバイス108上でマルチメディアコンテンツを再生またはストリーミングすることができる。
マルチメディアコンテンツアプリケーション160は、第1のデジタルアシスタントサーバ106との認証プロセスを実行することができる。認証プロセスは、入力またはストレージからの取出しを介して、クライアントデバイス104またはディスプレイデバイス108におけるアカウント識別子およびアクセスコードの識別情報を含むことができる。受信時に、マルチメディアコンテンツアプリケーション160は、アカウント識別子およびアクセスコードを第1のデジタルアシスタントサーバ106へ送ることができる。第1のデジタルアシスタントサーバ106は、次に、アカウント識別子に対するそれ自体の記憶されたアクセスコードを、クライアントデバイス104またはディスプレイデバイス108から受信されたアクセスコードと比較することができる。2つのアクセスコードの間での整合の決定に応答して、第1のデジタルアシスタントサーバ106は、成功した認証インジケータをクライアントデバイス104またはディスプレイデバイス108へ送ることができる。
成功した認証インジケータの受信に応答して、マルチメディアコンテンツアプリケーション160は、アカウント識別子に対して第1のデジタルアシスタントサーバ106によって利用可能にされた、利用可能なマルチメディアコンテンツのカタログを取り出すことができる。マルチメディアコンテンツアプリケーション160は、利用可能な各マルチメディアコンテンツに各要素が対応する、利用可能なマルチメディアコンテンツのカタログを、グラフィカルユーザインターフェースの中に表示することができる。グラフィカルユーザインターフェースの要素のうちの1つとのインタラクション時に、マルチメディアコンテンツアプリケーション160は、選択されたマルチメディアコンテンツを求める要求を第1のデジタルアシスタントサーバ106へ送ることができる。第1のデジタルアシスタントサーバ106は、選択されたマルチメディアコンテンツに対応する1つまたは複数のオーディオビジュアルコンテンツファイルを特定および提供することができる。マルチメディアコンテンツアプリケーション160は、次に、クライアントデバイス104またはディスプレイデバイス108において、選択されたマルチメディアコンテンツに対応する1つまたは複数のオーディオビジュアルコンテンツファイルを記憶、再生、またはストリーミングすることができる。システム100のコンテキストにおける第1のデジタルアシスタントサーバ106およびマルチメディアコンテンツアプリケーション160の機能に関する追加の詳細が、本明細書で説明される。
データ処理システム102に関連付けられるアプリケーション、スクリプト、プログラム、または他のコンポーネントが、クライアントデバイス104またはディスプレイデバイス108においてインストールされ得る。アプリケーションは、クライアントデバイス104またはディスプレイデバイス108が入力オーディオ信号(および、他のデータ)をデータ処理システム102のインターフェース122に通信することを可能にすることができる。アプリケーションは、クライアントデバイス104およびディスプレイデバイス108が、出力オーディオ信号をレンダリングするためにクライアントデバイス104およびディスプレイデバイス108の構成要素を駆動することを可能にすることができる。
クライアントデバイス104およびディスプレイデバイス108は、入力オーディオ信号として音声クエリをクライアントデバイス104またはディスプレイデバイス108の中に(センサ152を介して)入力し、かつデータ処理システム102から提供され得るコンピュータ生成された音声の形態でオーディオ出力を受け取る、エンドユーザに関連付けられ得る。入力オーディオ信号に応答して、クライアントデバイス104およびディスプレイデバイス108は、所定の機能またはアクションを実行するためのアクションデータ構造を受信することができる。インターフェース122は、データメッセージを受信すること、またはデータメッセージをデータ処理システム102のダイレクトアクションAPI126に提供すること、およびシステム100の構成要素の間の通信を可能にすることができる。クライアントデバイス104およびディスプレイデバイス108は、ユーザがシステム100の構成要素とインタラクションを行うことを可能にするユーザインターフェースを含むことができる。
データ処理システム102は、少なくとも1つのプロセッサを有する少なくとも1つのサーバを含むことができる。たとえば、データ処理システム102は、少なくとも1つのデータセンタまたはサーバファームの中に位置する複数のサーバを含むことができる。データ処理システム102は、要求および要求に関連するトリガキーワードをオーディオ入力信号から決定することができる。要求およびトリガキーワードに基づいて、データ処理システム102は、応答データを生成または選択することができる。応答データは、オーディオベースまたはテキストベースであり得る。たとえば、応答データは、レンダリングされたとき、オーディオ出力または音響波を提供する、1つまたは複数のオーディオファイルを含むことができる。応答データ内のデータは、コンテンツアイテムと呼ばれることがある。応答データは、オーディオコンテンツに加えて他のコンテンツ(たとえば、テキストコンテンツ、ビデオコンテンツ、または画像コンテンツ)を含むことができる。応答データは、カレンダ情報、メッセージ、天気情報、ニュース情報、またはチケット情報などの、様々なタイプのコンテンツを含むことができる。
データ処理システム102は、論理的にグループ化された複数のサーバを含むことができ、分散コンピューティング技法を容易にすることができる。サーバの論理グループは、データセンタ、サーバファーム、またはマシンファームと呼ばれることがある。サーバは地理的に分散され得る。データセンタまたはマシンファームは単一のエンティティとして統治されてよく、またはマシンファームは複数のマシンファームを含むことができる。各マシンファーム内のサーバは異種であり得る-サーバまたはマシンのうちの1つまたは複数が、1つまたは複数のタイプのオペレーティングシステムプラットフォームに従って動作することができる。データ処理システム102は、たとえば、企業データセンタの中に位置する、1つまたは複数の高密度ラックシステムの中に、関連する記憶システムと一緒に格納されているデータセンタの中の、サーバを含むことができる。このようにして、統合されたサーバを有するデータ処理システム102は、局所化された高性能ネットワーク上にサーバおよび高性能記憶システムを配置することによって、システムの扱いやすさ、データセキュリティ、システムの物理的なセキュリティ、およびシステム性能を改善することができる。サーバおよび記憶システムを含む、データ処理システム102構成要素のうちの全部または一部の集中化、および高度システム管理ツールとのそれらの結合により、サーバリソースのより効率的な使用が可能になり、そのことは、電力および処理要件を節約し、帯域幅使用量を低減する。データ処理システム102の構成要素の各々は、少なくとも1つの処理ユニット、サーバ、仮想サーバ、回路、エンジン、エージェント、アプライアンス、またはデータリポジトリ140および他のコンピューティングデバイスと通信するように構成されたプログラマブル論理アレイなどの他の論理デバイスを含むことができる。
データ処理システム102は、データリポジトリ140を含むことができる。データリポジトリ140は、1つまたは複数のローカルデータベースまたは分散データベースを含むことができ、データベース管理システムを含むことができる。データリポジトリ140は、コンピュータデータストレージまたはメモリを含むことができ、1つまたは複数のアプリケーション識別子142、1つまたは複数のエンティティメタデータ144、1つまたは複数のランク付けポリシー146、および少なくとも1つの参照アドレス148を記憶することができる。各アプリケーション識別子142は、クライアントデバイス104上またはディスプレイデバイス108上で実行されるべきマルチメディアコンテンツアプリケーション160に対応する英数字値であってよい。各エンティティメタデータ144はエンティティに対応することができる。各参照アドレス148は特定または参照することができる。1つまたは複数のアプリケーション識別子142、1つまたは複数のエンティティメタデータ144、1つまたは複数のランク付けポリシー146、および参照アドレス148の使用および機能の詳細が、以下で提供される。
データリポジトリ140は、コンピュータデータストレージまたはメモリを含むことができ、他のデータの中でも、1つまたは複数のパラメータ、1つまたは複数のポリシー、応答データ、およびテンプレートを記憶することができる。パラメータ、ポリシー、およびテンプレートは、クライアントデバイス104、データ処理システム102、およびディスプレイデバイス108の間での音声ベースのセッションについての規則などの情報を含むことができる。パラメータ、ポリシー、およびテンプレートは、別のソース(たとえば、データ処理システム102、クライアントデバイス104、およびディスプレイデバイス108)からインターフェース122を介して受信される、別のデジタルアシスタントアプリケーション120のための情報を含むことができる。たとえば、クライアントデバイス104上またはディスプレイデバイス108上でホストされるデジタルアシスタントアプリケーション120のデータリポジトリ140の中に記憶されるパラメータ、ポリシー、およびテンプレートは、クライアントデバイス104およびディスプレイデバイス108を介してアクセス可能なデジタルアシスタントアプリケーション120のデータリポジトリ140からのパラメータ、ポリシー、およびテンプレートを含むことができ、逆も同様である。このようにして、異なるデジタルアシスタントアプリケーション120のパラメータ、ポリシー、およびテンプレートは、互いによって共有および使用されてよい。応答データは、オーディオ出力用のコンテンツアイテム、または関連するメタデータ、ならびにクライアントデバイス104およびディスプレイデバイス108との1つまたは複数の通信セッションの一部であり得る入力オーディオメッセージを含むことができる。
NLP構成要素124は、入力オーディオ信号を受信することができる。データ処理システム102は、データパケットの中に含まれる、(たとえば、トランスジューサ154またはセンサ152を介した)クライアントデバイス104またはディスプレイデバイス108からの入力オーディオ信号を受信することができる。データパケットは、クライアントデバイス104またはディスプレイデバイス108に関連付けられたデバイス識別子を含むことができる。データパケットは、クライアントデバイス104またはディスプレイデバイス108において実行可能なマルチメディアコンテンツアプリケーション160のアプリケーション識別子を含むことができる。NLP構成要素124の機能は、データ処理システム102、クライアントデバイス104、およびディスプレイデバイス108の間で分割され得る。たとえば、クライアントデバイス104上またはディスプレイデバイス108上で実行するNLP構成要素124は、センサ152において検出された入力オーディオ信号をデータパケットの中にパッケージ化することができ、データ処理システム102において実行されるNLP構成要素124におけるさらなる処理のためにデータパケットをデータ処理システム102へ送ることができる。
NLP構成要素124は、オーディオ波形の記憶済みの見本セットに対して入力オーディオ信号を比較すること、および最も近い整合を選ぶことによって、入力オーディオ信号を認識されたテキストに変換することができる。見本波形は、入力オーディオ信号の大規模なセットにわたって生成され得る。入力オーディオ信号が、認識されたテキストに変換されると、NLP構成要素124は、たとえば、学習段階を経て、アクションまたは出力オーディオ信号に関連付けられている単語にテキストを整合させることができる。
入力オーディオ信号から、NLP構成要素124は、少なくとも1つの要求を特定することができる。要求は、入力オーディオ信号の意図または主題を示すことができる。要求は、とられる可能性があるアクションのタイプを示すことができる。たとえば、NLP構成要素124は、入力オーディオ信号を構文解析して、マルチメディアコンテンツを再生するための少なくとも1つの要求を特定することができる(たとえば、「オーケー、2015年のBat Movieを再生してください」)。要求は、とられるべきアクションを示す少なくとも1つの単語、句、語根もしくは部分語、または派生語を含むことができる。要求は、「オーケー」または「始めてくれ」などのトリガキーワードを含むことができる。NLP構成要素124は、要求の中のトリガキーワードを検出することができる。トリガキーワードの検出に応答して、NLP構成要素124は、とられるべきアクションの意図、主題、およびタイプを、入力オーディオ信号から特定することができる。
NLP構成要素124は、少なくとも1つのエンティティを要求から特定することができる。少なくとも1つのエンティティは、要求の中の少なくとも1つの単語、句、語根もしくは部分語、または派生語に対応することができる。少なくとも1つのエンティティは、題名、著者、配信者、最初の公開日時、言語、ジャンル、時間長、および他の関連するキーワード(たとえば、俳優名)などの、マルチメディアコンテンツに対するデスクリプタを含んでよい。たとえば、2005年に公開された「Bat Movie I」フィルムに対するエンティティは、他の情報の中でも、題名としての「Bat Movie I」、著者としての「Ms. Director」、最初の公開日時としての「2005年6月15日」、言語としての「英語」、ジャンルとしての「アクション」、および長さとしての「140分」を含んでよい。NLP構成要素124は、要求の中の少なくとも1つの単語、句、語根もしくは部分語、または派生語が少なくとも1つのエンティティに対応することを決定することができる。決定を実行するために、NLP構成要素124は、セマンティック知識グラフにアクセスすることができる。セマンティック知識グラフは、少なくとも1つのエンティティに関係する単語、句、語根もしくは部分語、または派生語のセットを指定することができる。セマンティック知識グラフは、エッジを介して互いに接続されたノードを含むことができる。ノードは、単語、句、語根もしくは部分語、または派生語に関連付けられてよく、少なくとも1つのエンティティに関係するか、または関係しない、マークが付けられてよい。2つのノードを接続する各エッジは、それら2つの間の関係を表すことができる。前の例から続けると、セマンティック知識グラフの中の「Bat Movie」に対するノードは、エンティティに関係するものとしてマークが付けられてよく、2つの用語の間の関係を示す、やはりエンティティに関係するものとしてラベル付けされた、「Bat Movie I」とラベル付けされたノードへのエッジを有することができる。セマンティック知識グラフを使用して、NLP構成要素124は、要求の中の少なくとも1つの単語、句、語根もしくは部分語、または派生語が少なくとも1つのエンティティに対応することを決定することができる。
NLP構成要素124は、少なくとも1つの要求がマルチメディアコンテンツに対するクエリに対応するかどうかを、エンティティに基づいて決定することができる。要求の中の少なくとも1つの単語、句、語根もしくは部分語、または派生語が少なくとも1つのエンティティに対応するという特定に応答して、NLP構成要素124は、少なくとも1つの要求がマルチメディアコンテンツに対するクエリに対応することを決定することができる。要求の中の単語、句、語根もしくは部分語、または派生語のうちのいずれもが少なくとも1つのエンティティに対応しないという特定に応答して、NLP構成要素124は、少なくとも1つの要求がマルチメディアコンテンツに対するクエリに対応しないことを決定することができる。少なくとも1つの要求がマルチメディアコンテンツに対するクエリに対応するという決定は、以下で詳述するように、検索コーディネータ構成要素132、コンテンツインデクサ構成要素134、ランク付け136、および応答ハンドラ構成要素138の機能をトリガすることができる。
オーディオ信号発生器構成要素130は、情報が応答データの一部として記憶され得るデータリポジトリ140から情報を取得することができる。オーディオ信号発生器構成要素130は、たとえば、応答データから、応答フレーズまたはコンテンツアイテムを選択するかまたはさもなければ特定するために、データリポジトリ140に照会することができる。オーディオ信号発生器構成要素130は、コンテンツアイテムを含む出力信号を生成すること、またはさもなければ取得することができる。データ処理システム102は、コンテンツアイテムまたは要求に対応する出力信号を生成または作成するために、オーディオ信号発生器構成要素130を実行することができる。たとえば、要求が履行されると、オーディオ信号発生器構成要素130は、「アクションが完了しました」という句を含むオーディオ出力信号を生成することができる。
インターフェース122は、システム100の構成要素が互いに通信することを可能にするデータインターフェースまたはネットワークインターフェースであり得る。データ処理システム102のインターフェース122は、アクションデータ構造、オーディオ信号、または他のデータを含む1つまたは複数のデータパケットを、ネットワーク110を介してクライアントデバイス104またはディスプレイデバイス108に提供または送信することができる。たとえば、データ処理システム102は、データリポジトリ140またはオーディオ信号発生器構成要素130からの出力信号を、クライアントデバイス104に提供することができる。データ処理システム102は、アクションデータ構造の中で示される機能を実行するように、データパケット送信を介してクライアントデバイス104またはディスプレイデバイス108に命令することができる。出力信号は、取得され得るか、生成され得るか、1つもしくは複数のデータパケット(または、他の通信プロトコル)に変換され得るか、またはそうしたデータパケットとしてデータ処理システム102(または、他のコンピューティングデバイス)からクライアントデバイス104もしくはディスプレイデバイス108へ送信され得る。
データ処理システム102のダイレクトアクションAPI126は、たとえば、要求に基づいて、アクションデータ構造を生成することができる。アクションデータ構造は、要求を満たすための指定されたアクションの実行のためのデータまたは命令を含むことができる。いくつかの実装形態では、アクションデータ構造は、JSONフォーマット型データ構造またはXMLフォーマット型データ構造であり得る。
要求の中で指定されたアクションに応じて、ダイレクトアクションAPI126は、要求を履行するために必要とされるパラメータを特定するコードまたは対話スクリプトを実行することができる。アクションデータ構造は、要求に応答して生成され得る。アクションデータ構造は、クライアントデバイス104またはディスプレイデバイス108へ送信されるかまたはそれらによって受信されるメッセージの中に含まれ得る。ダイレクトアクションAPI126は、ディスプレイデバイス108への送信のために、要求をアクションデータ構造の中にパッケージ化することができる。ダイレクトアクションAPI126は、どのクライアントデバイス104またはディスプレイデバイス108が、要求を生成したユーザに関連するのかを決定するために、応答データからのデバイス識別子にアクセスすることができる。受信されると、ディスプレイデバイス108は、アクションデータ構造を処理することができ、示されたアクションを実行することができる。ダイレクトアクションAPI126は、クライアントデバイス104またはディスプレイデバイス108による実行のために、要求をアクションデータ構造の中にパッケージ化することができる。受信されると、クライアントデバイス104は、クライアントデバイス104上で動作するデジタルアシスタントアプリケーション120または1つもしくは複数のアプリケーションを使用して、アクションデータ構造を処理することができる。
アクションデータ構造は、要求を完了するための情報を含むことができる。たとえば、アクションデータ構造は、要求を完了するかまたはさもなければ履行する際に使用される属性を含む、XMLまたはJSONフォーマット型データ構造であり得る。属性は、ディスプレイデバイス108のロケーション、クライアントデバイス104のロケーション、クライアントデバイス104に関連するユーザの許可レベル、デバイス識別子、インターフェース識別子、車両状態、または要求状態を含むことができる。いくつかの実装形態では、要求状態は、アクションが履行される前に満たされるべき1つまたは複数の属性を含む。たとえば、要求「オーケー、歌を変えてください」を伴うと、要求状態は、要求が明示的に許可されたユーザであるべきことを示すことができる、属性{requestor:[authorized, passenger]}を有してよい。
ダイレクトアクションAPI126は、どのフィールドまたは属性をアクションデータ構造の中に含めるべきであるのかを決定するために、データリポジトリ140からテンプレートを取り出すことができる。ダイレクトアクションAPI126は、必要なパラメータを決定することができ、情報をアクションデータ構造の中にパッケージ化することができる。ダイレクトアクションAPI126は、データ構造の属性に対する情報を取得するために、データリポジトリ140からコンテンツを取り出すことができる。
ダイレクトアクションAPI126は、入力オーディオ信号からのデータでフィールドを埋めることができる。ダイレクトアクションAPI126は、クライアントデバイス104もしくはディスプレイデバイス108、または別のソースからのデータで、フィールドを埋めることができる。ダイレクトアクションAPI126は、フィールドを埋めるとき、追加の情報をユーザに促すことができる。テンプレートは、メッセージに応答し、かつクライアントデバイス104内またはディスプレイデバイス108内の機能を実行する、異なるタイプのアクションに対して標準化され得る。アクションデータ構造は、リモートデータ処理システム102によって実行されるダイレクトアクションAPI126によって最初に生成され得る。リモートデータ処理システム102は、アクションデータ構造をクライアントデバイス104またはディスプレイデバイス108へ送信することができ、クライアントデバイス104またはディスプレイデバイス108は、フィールドおよび属性をアクションデータ構造に追加することができる。
ダイレクトアクションAPI126は、データリポジトリ140から応答データ(または、パラメータもしくはポリシー)を、かつクライアントデバイス104またはディスプレイデバイス108からエンドユーザ承諾を伴って受信されたデータを、取得することができる。応答データ(または、パラメータもしくはポリシー)は、アクションデータ構造の中に含まれ得る。アクションデータ構造の中に含まれるコンテンツが、認証のために使用されるエンドユーザデータを含むとき、データは、データリポジトリ140の中に記憶される前にハッシング関数を通過させられ得る。
データ処理システム102は、検索コーディネータ構成要素132を含むこと、それとインターフェースすること、またはさもなければそれと通信することができる。検索コーディネータ構成要素132は、クライアントデバイス104またはディスプレイデバイス108へ送るためのクエリコマンドを生成することができる。検索コーディネータ構成要素132によるクエリコマンドの生成は、要求における決定がマルチメディアコンテンツに対するクエリに対応することに応答することができる。クエリコマンドは、応答から特定されたエンティティを含むことができる。クエリコマンドは、クライアントデバイス104またはディスプレイデバイス108がクエリコマンドを処理するための命令を含むことができる。命令は、クライアントデバイス104上またはディスプレイデバイス108上のどのマルチメディアコンテンツアプリケーション160が、エンティティを求める検索を実行すべきかを、示してよい。命令を生成するために、検索コーディネータ構成要素132は、データリポジトリ140にアクセスして、クエリコマンドの中に含めるべき1つまたは複数のアプリケーション識別子142を特定することができる。データリポジトリ140は、クライアントデバイス104またはディスプレイデバイス108に関連付けられたデバイス識別子によって、1つまたは複数のアプリケーション識別子142を特定することができる。各アプリケーション識別子142は、クライアントデバイス104またはディスプレイデバイス108による使用の頻度によってラベル付けされてよい。検索コーディネータ構成要素132は、初期データパケットの中の1つまたは複数のアプリケーション識別子142を、クエリコマンドの命令の中に挿入することができる。検索コーディネータ構成要素132は、クライアントデバイス104およびディスプレイデバイス108による使用の頻度に基づいて、クライアントデバイス104およびディスプレイデバイス108のためのアプリケーション識別子142のサブセットを特定することができる。たとえば、検索コーディネータ構成要素132は、ディスプレイデバイス108が、マルチメディアコンテンツアプリケーション160「C」、「D」、および「E」よりも頻繁にマルチメディアコンテンツアプリケーション160「A」および「B」を使用することを特定することができる。この例では、検索コーディネータ構成要素132は、クエリコマンドへの挿入のために、マルチメディアコンテンツアプリケーション160に対応するアプリケーション識別子142を選択することができる。クエリコマンドの各アプリケーション識別子142は、クライアントデバイス104上またはディスプレイデバイス108上のどのマルチメディアコンテンツアプリケーション160が、エンティティを求める検索を実行すべきであるのかを、示すことができる。クエリコマンドの生成の後、検索コーディネータ132は、クエリコマンドをクライアントデバイス104またはディスプレイデバイス108へ送信することができる。
クエリコマンドの受信は、マルチメディアコンテンツアプリケーション160へのクライアントデバイス104またはディスプレイデバイス108に、エンティティを求める検索を実行させることができる。クエリコマンドの受信に応答して、クライアントデバイス104またはディスプレイデバイス108は、クエリコマンドを構文解析してエンティティを特定することができる。クライアントデバイス104またはディスプレイデバイス108は、クエリコマンドを構文解析して1つまたは複数のアプリケーション識別子142を特定することができる。クライアントデバイス104またはディスプレイデバイス108は、クエリコマンドの1つまたは複数のアプリケーション識別子142に対応するマルチメディアコンテンツアプリケーション160を特定することができる。クライアントデバイス104またはディスプレイデバイス108は、クエリコマンドの1つまたは複数のアプリケーション識別子142から特定されたマルチメディアコンテンツアプリケーション160の実行を開始することができる。検索を実行するために、クライアントデバイス104またはディスプレイデバイス108は、マルチメディアコンテンツアプリケーション160用のアプリケーションプログラミングインターフェースを介して、クエリコマンドの中の少なくとも1つのエンティティを各マルチメディアコンテンツアプリケーション160に提供することができる。エンティティが提供されると、各マルチメディアコンテンツアプリケーション160は、関連する第1のデジタルアシスタントサーバ106へクエリ要求を送ることができる。
クエリコマンドを生成しクライアントデバイス104またはディスプレイデバイス108へ送ることと並行して、検索コーディネータ構成要素132は、第1のデジタルアシスタントサーバ106へ送るためのクエリ要求を生成することができる。検索コーディネータ構成要素132によるクエリ要求の生成は、要求における決定がマルチメディアコンテンツに対するクエリに対応することに応答することができる。検索コーディネータ構成要素132によるクエリ要求の生成は、以下で説明するように、コンテンツインデクサ構成要素134による呼出しに応答することができる。クエリ要求は、応答から特定されたエンティティを含むことができる。クエリ要求は、第1のデジタルアシスタントサーバ106がクエリ要求を処理するための命令を含むことができる。検索コーディネータ132は、どのマルチメディアコンテンツプロバイダが、クライアントデバイス104またはディスプレイデバイス108に対して1つまたは複数のアプリケーション識別子142からのクエリ要求を送るべきであるのかを特定することができる。クエリ要求の生成の後、検索コーディネータ132は、クエリ要求を第1のデジタルアシスタントサーバ106へ送信することができる。
クライアントデバイス104、ディスプレイデバイス108、または検索コーディネータ構成要素132からのクエリ要求の受信は、エンティティを求める検索を第1のデジタルアシスタントサーバ106に実行させることができる。クライアントデバイス104またはディスプレイデバイス108が、クエリ要求を送るようにマルチメディアコンテンツアプリケーション160を初期化していることがあるとき、クライアントデバイス104またはディスプレイデバイス108からのクエリ要求は、検索コーディネータ構成要素132からのクエリ要求の後に受信されることがある。第1のデジタルアシスタントサーバ106は、クエリ要求に応答してコンテンツデータリポジトリ162にアクセスすることができる。コンテンツデータリポジトリ162は、1つまたは複数のエンティティメタデータ144および1つまたは複数のランク付けポリシー146を含むことができる。各エンティティメタデータ144はエンティティに対応することができる。データリポジトリ162上の各エンティティメタデータ144は、題名、著者、配信者、最初の公開日時、言語、ジャンル、時間長、および他の関連するキーワードなどの、エンティティに対応するマルチメディアコンテンツについての1つまたは複数のエントリを含むことができる。たとえば、あるエンティティメタデータ144は「Bat Movie I」に対応することができ、別のエンティティメタデータ144は「Bat Movie II」に対応することができる。各エンティティメタデータ144は、参照アドレス148(たとえば、ユニフォームリソースロケータ)に関連付けられ得る。参照アドレス148は、ホスト名、ファイルパス名、およびクエリパラメータを含んでよい。ホスト名は、第1のデジタルアシスタントサーバ106に対応することができる。ファイルパス名は、エンティティに対応するマルチメディアコンテンツ用の1つまたは複数のオーディオビジュアルファイルに対応することができる。クエリパラメータは属性値ペアを含むことができる。クエリパラメータは、第1のデジタルアシスタントサーバ106によって動的に生成され得、クライアントデバイス104、ディスプレイデバイス108、または検索コーディネータ構成要素132ごとに変わることがある。
クエリ要求からのエンティティに基づいて、第1のデジタルアシスタントサーバ106は、エンティティに対応する参照アドレス148を特定することができる。第1のデジタルアシスタントサーバ106は、コンテンツデータリポジトリ162を通じて詳しく検討することができる。エンティティメタデータ144ごとに、第1のデジタルアシスタントサーバ106は、エンティティをエンティティメタデータ144と比較することができる。たとえば、第1のデジタルアシスタントサーバ106は、エンティティ「Bat Movie」を、題名などの、エンティティメタデータ144に対するエントリのうちのいずれかと比較することができる。第1のデジタルアシスタントサーバ106は、エンティティメタデータ144の1つまたは複数のエントリがクエリ要求からのエンティティに整合するかどうかを決定することができる。第1のデジタルアシスタントサーバ106は、エンティティとエンティティメタデータ144との間に整合がないことを決定することができる。整合がないという決定に応答して、第1のデジタルアシスタントサーバ106は、コンテンツデータリポジトリ162を詳しく検討し続けることができる。第1のデジタルアシスタントサーバ106は、詳しく検討すべきそれ以上のエンティティメタデータ144がないことを決定することができる。詳しく検討すべきそれ以上のエンティティメタデータ144がないという決定に応答して、第1のデジタルアシスタントサーバ106は、コンテンツデータリポジトリ162上にエンティティが存在しないことを決定することができる。第1のデジタルアシスタントサーバ106は、ヌル応答を送信することができる。ヌル応答は、第1のデジタルアシスタントサーバ106が、エンティティに対応するマルチメディアコンテンツを有しないことを示すことができる。
反対に、第1のデジタルアシスタントサーバ106は、エンティティとエンティティメタデータ144との間に整合があることを決定することができる。整合の決定に応答して、第1のデジタルアシスタントサーバ106は、コンテンツデータリポジトリ162上にエンティティが存在することを決定することができる。第1のデジタルアシスタントサーバ106は、エンティティに整合するエンティティメタデータ144に対応する参照アドレス148を特定することができる。第1のデジタルアシスタントサーバ106は、検索応答を生成することができる。検索応答は、第1のデジタルアシスタントサーバ106が、エンティティに対応するマルチメディアコンテンツを有することを示すことができる。検索応答は、エンティティのためのマルチメディアコンテンツに対応する参照アドレス148を含むことができる。
第1のデジタルアシスタントサーバ106は、クエリ要求のエンティティとエンティティメタデータ144との間の追加の整合を特定するために、コンテンツデータリポジトリ162を通じて詳しく検討し続けることができる。追加の整合を伴うと、第1のデジタルアシスタントサーバ106は、エンティティに整合するエンティティメタデータ144に対応する参照アドレス148を繰り返し特定することができ、参照アドレス148を検索応答の中に含めることができる。第1のデジタルアシスタントサーバ106は、詳しく検討すべきそれ以上のエンティティメタデータ144がないことを決定することができる。詳しく検討すべきそれ以上のエンティティメタデータ144がないという決定に応答して、第1のデジタルアシスタントサーバ106は、クエリ検索を送ったクライアントデバイス104、ディスプレイデバイス108、または検索コーディネータ構成要素132へ応答を送ることができる。
データ処理システム102は、コンテンツインデクサ構成要素134を含むこと、それとインターフェースすること、またはさもなければそれと通信することができる。コンテンツインデクサ構成要素134は、エンティティに対応する参照アドレス148を特定するために、データ処理システム102のデータリポジトリ140、または第1のデジタルアシスタントサーバ106にアクセスすることができる。コンテンツインデクサ構成要素134は、参照アドレス148を特定するために第1のデジタルアシスタントサーバ106にアクセスする前に、データリポジトリ140にアクセスすることができる。コンテンツインデクサ構成要素134は、データリポジトリ140を通じて詳しく検討することができる。アプリケーション識別子142に加えて、データリポジトリ140は、1つまたは複数のエンティティメタデータ144および1つまたは複数のランク付けポリシー146を含むことができる。データリポジトリ140上のエンティティメタデータ144およびランク付けポリシー146は、別々に、かつコンテンツデータリポジトリ162上のエンティティメタデータ144およびランク付けポリシー146から独立して保持されてよい。データリポジトリ140上のエンティティメタデータ144およびランク付けポリシー146は、マルチメディアコンテンツプロバイダからの以前の検索応答からのものであってよい。コンテンツインデクサ構成要素134は、データリポジトリ140におけるストレージの中のエンティティメタデータ144および関連する参照アドレス148ごとに、経過した時間を追跡するためのタイマを保持することができる。
コンテンツインデクサ構成要素134は、コンテンツデータリポジトリ140を通じて詳しく検討することができる。エンティティメタデータ144ごとに、コンテンツインデクサ構成要素134は、エンティティをエンティティメタデータ144と比較することができる。たとえば、コンテンツインデクサ構成要素134は、エンティティ「Bat Movie」を、題名などの、エンティティメタデータ144に対するエントリのうちのいずれかと比較することができる。コンテンツインデクサ構成要素134は、エンティティメタデータ144の1つまたは複数のエントリがクエリ要求からのエンティティに整合するかどうかを決定することができる。コンテンツインデクサ構成要素134は、エンティティとエンティティメタデータ144との間に整合がないことを決定することができる。整合がないという決定に応答して、コンテンツインデクサ構成要素134は、コンテンツデータリポジトリ140を詳しく検討し続けることができる。コンテンツインデクサ構成要素134は、詳しく検討すべきそれ以上のエンティティメタデータ144がないことを決定することができる。詳しく検討すべきそれ以上のエンティティメタデータ144がないという決定に応答して、コンテンツインデクサ構成要素134は、コンテンツデータリポジトリ140上にエンティティが存在しないことを決定することができる。コンテンツデータリポジトリ140上にエンティティが存在しないという決定に応答して、コンテンツインデクサ構成要素134は、クエリ要求を第1のデジタルアシスタントサーバ106へ送って参照アドレス148を取り出すために、検索コーディネータ構成要素132を呼び出すことができる。
反対に、コンテンツインデクサ構成要素134は、エンティティとエンティティメタデータ144との間に整合があることを決定することができる。整合の決定に応答して、コンテンツインデクサ構成要素134は、コンテンツデータリポジトリ140上にエンティティが存在することを決定することができる。コンテンツインデクサ構成要素134は、エンティティに整合するエンティティメタデータ144に対応する参照アドレス148を特定することができる。コンテンツインデクサ構成要素134は、エンティティに対応する参照アドレス148を記憶することができる。
コンテンツインデクサ構成要素134は、特定された参照アドレス148に対して、経過した時間を特定することができる。コンテンツインデクサ構成要素134は、経過した時間を事前設定済みの満了時間と比較することができる。第1のデジタルアシスタントサーバ106が、利用可能なマルチメディアコンテンツのカタログを周期的に更新または変更することがあるので、事前設定済みの満了時間は1時間から1か月までにおよぶことができる。事前設定済みの満了時間は、第1のデジタルアシスタントサーバ106におけるエンティティに対して参照アドレス148が有効である時間量に対応することができる。コンテンツインデクサ構成要素134は、経過した時間が事前設定済みの満了時間未満であることを決定することができる。経過した時間が事前設定済みの満了時間未満であるという決定に応答して、コンテンツインデクサ構成要素134は、エンティティに対応する参照アドレス148を記憶することができる。コンテンツインデクサ構成要素134は、エンティティに対応する参照アドレスを求めて検索するための、第1のデジタルアシスタントサーバ106のアクセスを終了させることができる。
一方、コンテンツインデクサ構成要素134は、経過した時間が事前設定済みの満了時間以上であることを決定することができる。経過した時間が事前設定済みの満了時間以上であるという決定に応答して、コンテンツインデクサ構成要素134は、データリポジトリ140から参照アドレス148を置き換えることができる。データリポジトリ140を更新するために、コンテンツインデクサ構成要素134は、クエリ要求を第1のデジタルアシスタントサーバ106へ送って参照アドレス148を取り出すために、検索コーディネータ構成要素132を呼び出すことができる。コンテンツインデクサ構成要素134は、第1のデジタルアシスタントサーバ106から検索応答を受信することができる。検索応答は、エンティティに対する新たな参照アドレス148を含むことができる。第1のデジタルアシスタントサーバ106からの参照アドレス148の受信に応答して、コンテンツインデクサ構成要素134は、参照アドレス148をデータリポジトリ140上にセーブすることができ、新たにセーブされた参照アドレス148を、エンティティに整合するエンティティメタデータ144に関連付けることができる。コンテンツインデクサ構成要素134は、第1のデジタルアシスタントサーバ106からヌル応答を受信することができる。ヌル応答の受信に応答して、コンテンツインデクサ構成要素134は、データリポジトリ140から参照アドレス148を除去することができる。
コンテンツインデクサ構成要素134は、クエリ要求のエンティティとエンティティメタデータ144との間の追加の整合を特定するために、コンテンツデータリポジトリ140を通じて詳しく検討し続けることができる。追加の整合を伴うと、コンテンツインデクサ構成要素134は、エンティティに整合するエンティティメタデータ144に対応する参照アドレス148を繰り返し特定することができ、参照アドレス148を検索応答の中に含めることができる。コンテンツインデクサ構成要素134は、詳しく検討すべきそれ以上のエンティティメタデータ144がないことを決定することができる。詳しく検討すべきそれ以上のエンティティメタデータ144がないという決定に応答して、コンテンツインデクサ構成要素134は、データリポジトリ140における追加のランク付けポリシー146を求める検索を終了させることができる。詳しく検討した後、コンテンツインデクサ構成要素134は、クエリ要求を第1のデジタルアシスタントサーバ106へ送って参照アドレス148を取り出すために、検索コーディネータ構成要素132を呼び出すことができる。検索コーディネータ構成要素132の呼出しは、上記で説明した事前設定済みの満了時間との経過した時間の比較とは無関係であってよい。
クエリ要求を送るために検索コーディネータ構成要素132を呼び出した後、コンテンツインデクサ構成要素134は、第1のデジタルアシスタントサーバ106から検索応答を受信することができる。第1のデジタルアシスタントサーバ106からの検索応答の受信は、第1のデジタルアシスタントサーバ106がエンティティへのアクセスを有することを示すことができる。検索応答は、エンティティに対応する参照アドレス148を含むことができる。コンテンツインデクサ構成要素134は、検索応答を構文解析して参照アドレス148を特定することができる。エンティティとデータリポジトリ140上のエンティティメタデータ144との間の整合の特定に応答して、コンテンツインデクサ構成要素134は、データリポジトリ140からの参照アドレス148を第1のデジタルアシスタントサーバ106からの参照アドレス148と比較することができる。コンテンツインデクサ構成要素134は、データリポジトリ140からの参照アドレス148が第1のデジタルアシスタントサーバ106からの参照アドレス148とは異なることを決定することができる。ランク付けポリシー146における差異は、第1のデジタルアシスタントサーバ106がエンティティに対する参照アドレス148を更新していることを意味してよい。ランク付けポリシー146が異なるという決定に応答して、コンテンツインデクサ構成要素134は、データリポジトリ140において記憶された参照アドレス148を、第1のデジタルアシスタントサーバ106からの参照アドレス148に置き換えることができる。コンテンツインデクサ構成要素134は、データリポジトリ140からの参照アドレス148が第1のデジタルアシスタントサーバ106からの参照アドレス148と同一であることを決定することができる。ランク付けポリシー146が同一であるという決定に応答して、コンテンツインデクサ構成要素134は、以下で説明するように、クエリ結果をクライアントデバイス104またはディスプレイデバイス108へ送るために応答ハンドラ構成要素138の呼出しに進むことができる。
コンテンツインデクサ構成要素134は、第1のデジタルアシスタントサーバ106からヌル応答を受信することができる。第1のデジタルアシスタントサーバ106からのヌル応答の受信は、第1のデジタルアシスタントサーバ106がもはやエンティティを有しないことを示すことができる。たとえば、第1のデジタルアシスタントサーバ106は、利用可能なマルチメディアコンテンツのカタログを更新してエンティティを除外していることがある。ヌル応答の受信、およびエンティティとデータリポジトリ140上のエンティティメタデータ144との間の整合の特定に応答して、コンテンツインデクサ構成要素134は、データリポジトリ140から参照アドレス148を除去することができる。コンテンツインデクサ構成要素134は、以下で説明するように、クエリ結果をクライアントデバイス104またはディスプレイデバイス108へ送るために応答ハンドラ構成要素138の呼出しに進むことができる。場合によっては、コンテンツインデクサ構成要素134は、たとえば、ネットワーク110、または第1のデジタルアシスタントサーバ106における機能停止を伴う問題に起因して、クエリ応答の送信の後の所定の時間量内に第1のデジタルアシスタントサーバ106から応答を受信しないことがある。そのような場合、コンテンツインデクサ構成要素134は、データリポジトリ140においてランク付けポリシー146を保持することができる。
データ処理システム102は、ランク付けエンジン構成要素136を含むこと、それとインターフェースすること、またはさもなければそれと通信することができる。ランク付けエンジン構成要素136は、データリポジトリ140の中に記憶された1つまたは複数のランク付けポリシー146を使用することができる。ランク付けエンジン構成要素136は、図2および図3に示すランク付け決定関数またはブロックなどの、ランク付け決定関数を使用することができる。ランク付け決定関数は、信頼性スコア、レイテンシ、完了までの時間、フラグ、優先度、事前構成済みのプリファレンス、プロトコル、または他の要因に基づくことができる。たとえば、第2のデジタルアシスタント120は、第1のデジタルアシスタントを超える優先度が付けられ得る。
ランク付けエンジン構成要素136は、クライアントデバイス104またはディスプレイデバイス108からのクエリを処理または構文解析して、クエリのための1つまたは複数の信号を特定または生成することができる。ランク付けエンジン構成要素136は、データリポジトリ140の中に記憶された複数の決定関数から決定関数を選択することができる。決定関数は、ポリシー146と呼ばれることがあり、またはポリシー146として記憶され得る。決定関数(または、ポリシー146)は、クエリのための信号に基づいて変わることができる。たとえば、メディアコンテンツを求めるクエリは、結果に対して第1のデジタルアシスタントを選択すべきであることを示す信号を生成することができる。データ処理システム102にアクセス可能なデータベースからの検索結果に対するクエリは、第2のデジタルアシスタントからの結果を優先させるための信号を生成することができる。
ランク付け決定関数は、信頼性スコアを考慮に入れることができる。たとえば、第1のデジタルアシスタントまたは第2のデジタルアシスタントは、結果と一緒に信頼性スコアを戻すことができる。たとえば、第2のデジタルアシスタントが最初に結果を戻し、高い信頼性スコア(たとえば、1のうちの0.8よりも大きい)を提供する場合、データ処理システム102は、第1のデジタルアシスタントから来るべきいかなる結果も待たなくてよく、第2のデジタルアシスタントからの結果の送信に進んでよい-それによって、第1のデジタルアシスタントをオーバーライドする。
データ処理システム102は、応答ハンドラ構成要素138を含むこと、それとインターフェースすること、またはさもなければそれと通信することができる。要求の中のエンティティに対応する参照アドレス148の特定に応答して、応答ハンドラ構成要素138は、参照アドレス148をクライアントデバイス104またはディスプレイデバイス108に送信または提供することができる。応答ハンドラ構成要素138は、クライアントデバイス104またはディスプレイデバイス108においてコンテンツ選択インターフェースをレンダリングするための命令を生成することができる。コンテンツ選択インターフェースは、1つまたは複数の選択要素およびプレースホルダー要素(まとめて「表示カード」と呼ばれることがある)を含むことができる。1つまたは複数の選択要素は、クライアントデバイス104またはディスプレイデバイス108の要求の中に含まれるエンティティ用の参照アドレス148に対応することができる。マルチメディアコンテンツアプリケーション160によって実行される検索は、応答ハンドラ構成要素138が参照アドレス148をクライアントデバイス104またはディスプレイデバイス108へ送る前に完了していない場合がある。したがって、コンテンツ選択インターフェースは、クライアントデバイス104上またはディスプレイデバイス108上で実行するマルチメディアコンテンツアプリケーション160によって実行された検索からの結果を、最初に除外することができる。応答ハンドラ構成要素138は、コンテンツ選択インターフェースをレンダリングするための命令を、参照アドレス148と一緒にクライアントデバイス104またはディスプレイデバイス108に提供することができる。
クライアントデバイス104またはディスプレイデバイス108におけるコンテンツ選択インターフェースの提示の後、プレースホルダー要素とのインタラクションは、クライアントデバイス104またはディスプレイデバイス108に、マルチメディアコンテンツアプリケーション160によって実行された検索が完了しているかどうかを決定させることができる。クライアントデバイス104またはディスプレイデバイス108は、マルチメディアコンテンツアプリケーション160によって実行された検索が完了していることを決定することができる。検索が完了しているという決定に応答して、クライアントデバイス104またはディスプレイデバイス108は、追加の選択要素を含むようにコンテンツ選択インターフェースを修正することができる。追加の各選択要素は、クライアントデバイス104上またはディスプレイデバイス108上で実行するマルチメディアコンテンツアプリケーション160によって実行された検索中に見つかった参照アドレス148に対応することができる。コンテンツ選択要素の選択要素とのインタラクションは、クライアントデバイス104またはディスプレイデバイス108に、関連する選択要素の参照アドレス148に対応する1つまたは複数のオーディオビジュアルファイルを再生するためにマルチメディアコンテンツアプリケーション160(または、クライアントデバイス104上もしくはディスプレイデバイス108上で動作する別のアプリケーション)を起動させることができる。
一方、クライアントデバイス104またはディスプレイデバイス108は、マルチメディアコンテンツアプリケーション160によって実行された検索がまだ完了していないことを決定することができる。検索がまだ完了していないという決定に応答して、クライアントデバイス104またはディスプレイデバイス108は、所定の時間量にわたって待つことができる。所定の時間量の間、クライアントデバイス104またはディスプレイデバイス108は、マルチメディアコンテンツアプリケーション160によって実行された検索が完了していることを決定することができる。検索が完了しているという決定に応答して、クライアントデバイス104またはディスプレイデバイス108は、追加の選択要素を含むようにコンテンツ選択インターフェースを修正することができる。クライアントデバイス104またはディスプレイデバイス108は、所定の時間量が経過していること、および検索がまだ完了していないことを決定することができる。所定の時間量が経過しており検索がまだ完了していないという決定に応答して、クライアントデバイス104またはディスプレイデバイス108は、プレースホルダー要素を除去するようにコンテンツ選択インターフェースを修正することができる。
図2は、オーディオクエリのオーバーラップ処理を協調させるためのシステムの例示的な動作を示す。システム200は、図1または図5に示す1つまたは複数の構成要素または機能を含むことができる。システム200は、データ処理システム102を含むことができる。システム200は、第1のデジタルアシスタントサーバ106を含むこと、それとインターフェースすること、またはさもなければそれを通信もしくは利用することができる。システム200は、第2のデジタルアシスタントサーバ120を含むこと、それとインターフェースすること、またはさもなければそれを通信もしくは利用することができる。第1のデジタルアシスタントサーバ106(第1のデジタルアシスタント、第1のデジタルアシスタントコンポーネント、または第1のデジタルアシスタントアプリケーションと呼ばれることがある)は、第2のデジタルアシスタントアプリケーション120(第2のデジタルアシスタント、第2のデジタルアシスタントコンポーネント、または第2のデジタルアシスタントアプリケーションと呼ばれることがある)とは無関係に実行することができる。第1のデジタルアシスタントまたは第2のデジタルアシスタントのうちの一方は、ローカルデジタルアシスタントと呼ばれることがあり、第1のデジタルアシスタントまたは第2のデジタルアシスタントの他方は、リモートデジタルアシスタントと呼ばれることがある。たとえば、第1のデジタルアシスタントサーバ106は、リモートデジタルアシスタントと呼ばれることがあり、第2のデジタルアシスタントアプリケーション120は、ローカルデジタルアシスタントと呼ばれることがある。場合によっては、第1のデジタルアシスタントサーバ106が、ローカルデジタルアシスタントと呼ばれることがあり、第2のデジタルアシスタントアプリケーション120が、リモートデジタルアシスタントと呼ばれることがある。
ACT202において、(ディスプレイデバイス108を含むことができるか、ディスプレイデバイス108と統合され得るか、またはさもなければディスプレイデバイス108と通信可能に結合され得る)クライアントデバイス104は、入力オーディオ信号を受け取ることができる。クライアントデバイス104は、コンピューティングデバイスまたはクライアントコンピューティングデバイスと呼ばれることがある。クライアントデバイス104は、ユーザからオーディオ信号を受け取ることができる。オーディオ信号は、クライアントデバイス104のユーザによって与えられた音声入力を含むことができる。音声入力は、要求、クエリ、コマンド、命令、または応答を含むことができる。クライアントデバイス104のマイクロフォン(たとえば、センサ152またはトランスジューサ154)は、オーディオ入力を検出または受信することができる。
ACT222において、クライアントデバイス104は、オーディオ入力、またはオーディオ入力に対応するデータを、サーバへ送信または提供することができる。クライアントデバイス104は、オーディオ入力、またはオーディオ入力に対応するデータを、ストリーミング音声サーバ(「S3」)204またはデータ処理システム102へ送信することができる。クライアントデバイス104は、ACT202において受け取られたオーディオ入力を、サーバへの送信用に構成されたフォーマットに変換することができる。クライアントデバイス104は、たとえば、オーディオ入力を前処理することができ、オーディオ入力を、データネットワークを介した送信用に構成されたデジタルフォーマットに変換することができる。クライアントデバイス104は、オーディオ入力の中の要求の特定に応答して、オーディオ入力、またはオーディオ入力に対応するデータを送信することができる。要求は、クライアントデバイス104または1つもしくは複数のサーバによって実行されるべきコンテンツまたはアクションを求める要求をユーザが有することをクライアントデバイス104に示す、オーディオ入力の中のキーワード、ホットワード、ウェイクアップワード、トークン、または他の表示を含むことができる。クライアントデバイス104は、許可または認証に応答して、オーディオ入力、またはオーディオ入力に対応するデータを送信することができる。
クライアントデバイス104は、入力オーディオ信号を要求としてストリーミング音声サーバ204へ送信することができる。要求は、オーディオ、スピーチ、または音声を、オーディオ入力のダウンストリーム送信または処理を容易にするテキストまたはいくつかの他のフォーマットに変換するための要求を含むことができる。S3サーバ204は、音声をテキストに文字化することができる。ACT224において、S3サーバ204は、文字化の結果をクライアントデバイス104へ返送することができる。場合によっては、S3サーバ204は、文字化された結果をさらなる処理のためにデータ処理システム102へ送信することができる。場合によっては、S3サーバは、文字化された結果を記憶のためにデバイスリポジトリ220へ送信することができる。
ACT226において、S3サーバ204は、文字化された結果をデータ処理システム102へ送信することができる。文字化された結果は、ACT202において受け取られた入力オーディオ信号に対応するクエリを有するデータパケットを含むことができる。S3サーバ204は、テキストクエリをデータ処理システム102に転送することができる。場合によっては、クライアントデバイス204は、オーディオ入力をデータパケットに変換することができ、オーディオ入力をS3サーバ204へ送信することなくそのデータパケットをデータ処理システム102へ送信することができる。
データ処理システム102は、クライアントデバイス104によって検出されたオーディオ信号に対応する1つまたは複数のデータパケットを、インターフェースを介して受信することができる。データ処理システム102は、クライアントデバイス104またはS3サーバ204から1つまたは複数のデータパケットを受信することができる。1つまたは複数のデータパケットはテキストクエリを含むことができ、またはデータ処理システム102が1つまたは複数のデータパケットを処理して、クエリを特定することができる。たとえば、データ処理システム102は、オーディオ信号に対応する受信データパケットに基づいてクエリを生成することができる。
データ処理システム102は、処理のためにクエリを1つまたは複数のデジタルアシスタントへ送信することができる。データ処理システム102は、処理のためにクエリを1つまたは複数のデジタルアシスタントに提供することができる。データ処理システム102は、データ処理システム102によって実行または管理される1つまたは複数のデジタルアシスタントを使用してクエリを処理することができる。データ処理システム102は、データ処理システム102の外部の1つまたは複数のデジタルアシスタントにクエリを提供することができる。デジタルアシスタントは、データ処理システム102から地理的に遠隔であるか、またはデータ処理システム102とは異なるエンティティによって統治もしくは管理される場合、データ処理システム102の外部にあり得る。デジタルアシスタントは、異なるタイプのデジタルアシスタントである場合、データ処理システム102の外部と呼ばれることがある。
データ処理システム102は、処理のためにクエリを複数のデジタルアシスタントコンポーネントへ送信すること、提供すること、またはさもなければ伝達もしくは通信することができる。複数のデジタルアシスタントのうちの1つまたは複数は、クエリを処理することができ、クエリに対する応答を生成することができる。データ処理システム102は、第2のデジタルアシスタントアプリケーション120などの内部デジタルアシスタントを含むことができる。第2のデジタルアシスタントアプリケーション120は、クエリを処理してクエリに対する応答を生成することができる。データ処理システム102(または、インターフェース122)は、処理のためにクエリを第2のデジタルアシスタントアプリケーション120へ送信することができる。データ処理システム102(または、インターフェース122)は、処理のためにクエリをデータ処理システム102の外部の第1のデジタルアシスタントサーバ106へ送信することができる。データ処理システム102は(たとえば、インターフェース122または第2のデジタルアシスタントアプリケーション120を介して)、処理のために同じ時間においてまたはオーバーラップ方式で、クエリを複数のデジタルアシスタントへ同時に送信することができる。たとえば、第2のデジタルアシスタントアプリケーション120は、クエリを受信することができ、クエリに対する応答を生成するためにクエリを第1のデジタルアシスタントサーバ106へ送信することができる。第2のデジタルアシスタントアプリケーション120は、第2のデジタルアシスタントアプリケーション120がクエリを処理するかまたはクエリに対する応答を生成する前に、クエリを第1のデジタルアシスタントサーバ106へ送信することができ、それによって、第2のデジタルアシスタントアプリケーション120によって引き起こされるレイテンシまたは遅延を短縮する。場合によっては、レイテンシまたは遅延をさらに短縮するために、インターフェース122は、同時処理またはオーバーラップ処理のためにクエリを第2のデジタルアシスタントアプリケーション120および第1のデジタルアシスタントサーバ106へ同時に送信することができる。
データ処理システム102は(たとえば、インターフェース122を介して)、データ処理システム102の第2のデジタルアシスタントアプリケーション120の前に、クエリを第1のデジタルアシスタントサーバ106へ送信することができる。データ処理システム102は、クエリが第2のデジタルアシスタントアプリケーション120へ送信された後、クエリを第1のデジタルアシスタントサーバ106へ送信することができる。データ処理システム102は、第2のデジタルアシスタントアプリケーション120がクエリを受信した後、クエリを第1のデジタルアシスタントサーバ106へ送信することができる。データ処理システム102は、クエリ、すなわちクライアントデバイス104からデータ処理システム102によって受信された元のクエリを、第1のデジタルアシスタントサーバ106へ送信または書き込むために、アプリケーションプログラミングインターフェース(API)を利用することができる。場合によっては、データ処理システム102は、クライアントデバイス104から受信された元のクエリを第1のデジタルアシスタントサーバ106に提供、送信、中継、または転送することができる。場合によっては、データ処理システム102は、第1のデジタルアシスタントサーバ106への送信の前に、元のクエリを処理または修正することができる。
データ処理システム102は、第2のデジタルアシスタントを使用してテキストクエリを処理または構文解析することができ、第2のデジタルアシスタント候補結果204を生成することができる。テキストクエリは、208において、クラウドサーバシステムの中で実行中であり得る第1のデジタルアシスタントサーバ106に渡され得る。第1のデジタルアシスタントサーバ106は、第2のデジタルアシスタントを実行するデータ処理システム102とは別個であり得る。データ処理システムは、複数のデジタルアシスタントにオーバーラップ方式でクエリを処理させるために、独立したブランチを介して複数のデジタルアシスタントの各々へクエリを送信することができる。独立したブランチとは、論理フローの中の論理的なブランチ、すなわち別個のデジタルアシスタントが応答を生成するためにクエリを別々に処理しながらその中で互いに通信していない、別個の処理スレッドを指すことができる。別個のデジタルアシスタントは、オーバーラップ方式で結果を生成するためにクエリを別々に処理することができる。第1のデジタルアシスタント候補結果206は、応答212の中でデータ処理システム102に提供され得る。第1のデジタルアシスタントサーバ106は、第2のデジタルアシスタントアプリケーション120を確立した異なる管理者によって確立され得る。たとえば、第2のデジタルアシスタントアプリケーション120と比較して、異なる会社、エンティティ、または製造業者が、第1のデジタルアシスタントサーバ106を設計および構築することを担当している場合がある。第1のデジタルアシスタントサーバ106および第2のデジタルアシスタントアプリケーション120は、クエリに対する応答または結果を生成するために互いとは無関係に実行することができる。
第1および第2のデジタルアシスタントは、異なるタイプの情報またはデータへのアクセスを有することができる。第1のデジタルアシスタントサーバ106は、第2のデジタルアプリケーション120がアクセスするのを許可され得ないかまたはアクセスするのを禁止され得るデータベースまたはデータソースにアクセスすることを許可され得る。たとえば、第1のデジタルアシスタントサーバ106は、映画または歌を記憶するマルチメディアリポジトリへのアクセスを有することができる。このマルチメディアリポジトリへのアクセスは、資格証明または加入を介した許可を含むことができる。第1のデジタルアシスタント106は、クライアントデバイス104またはクライアントデバイス104のユーザプロファイルに関連する加入情報を介した、認証情報へのアクセスを有してよいが、これらの資格証明は、第2のデジタルアシスタントアプリケーション120に転送されないことがあるか、または第2のデジタルアシスタントアプリケーション120にとって使用可能でないことがある。
データ処理システム102は、クエリに対する結果を受信することができる。データ処理システム102は、クエリに対する候補結果を1つまたは複数のデジタルアシスタントから受信することができる。データ処理システム102は、第2のデジタルアシスタント候補結果210を受信することができる。ACT212において、データ処理システム102は、第1のデジタルアシスタント候補結果206を受信することができる。第1のデジタルアシスタント候補結果206および第2のデジタルアシスタント候補結果210は、互いに類似のフォーマット、または異なるフォーマットをなすことができる。第1のデジタルアシスタント候補結果206および第2のデジタルアシスタント候補結果210は、異なるソースからのものであり得、異なる技法、関数、パラメータ、選択基準、またはプロセスを使用して生成され得る。
第1または第2のデジタルアシスタントコンポーネントからの結果は、クライアントデバイス104によって受信される入力オーディオ信号からのクエリに応答するかまたはそれに基づく、コンテンツアイテム、参照、リンク、画像、テキスト、ビデオ、オーディオ、または他のタイプの結果を含むことができる。結果は、様々なソースからのデータを含むことができる。結果は、ストリーミングデータを含むことができる。結果は、ストリーミングオーディオまたはストリーミングビデオなどのストリーミングコンテンツへの参照またはリンクを含むことができる。結果は、クエリに応答する提案を含むことができる。結果は、コンテンツへのディープリンクを含むことができる。結果は、クライアントデバイス104が、結果の中に格納されるかまたは結果の中で特定されるコンテンツにアクセスすることを許可するように構成される、認証情報または資格証明情報を含むことができる。
214において、データ処理システム102は、候補結果204または206を選択するためにランク付け決定を実行することができる。第2のデジタルアシスタントアプリケーション120は、ランク付け決定を実行することができる。データ処理システム102のランク付けエンジン構成要素136、または第2のデジタルアシスタントアプリケーション120は、ランク付け決定を実行することができる。たとえば、ランク付けエンジン構成要素136は、候補結果、または複数のデジタルアシスタントコンポーネントからの候補結果が利用可能であるという表示を受信することができる。ランク付けエンジン構成要素136は、ランク付けエンジン構成要素136が、データ処理システム102がクエリを送信した先のデジタルアシスタントコンポーネントのすべてから結果が受信されているという表示を受信するまで、ランク付け決定を実行するのを待つことができる。
データ処理システム102は(たとえば、ランク付けエンジン構成要素136を介して)、第1のデジタルアシスタントアプリケーションサーバ106(たとえば、第1のデジタルアシスタントコンポーネント)または第2のデジタルアシスタントアプリケーション120(たとえば、第2のデジタルアシスタントコンポーネント)のうちの1つからの応答または結果を選択すべきであると、ランク付け決定関数に基づいて、決定することができる。データ処理システム102は、第2のデジタルアシスタント候補結果210または第1のデジタルアシスタント候補結果206を選択すべきと決定することができる。データ処理システム102は、第2のデジタルアシスタント候補結果210または第1のデジタルアシスタント候補結果206のうちの1つからの結果のうちの1つを選択すべきと決定することができる。たとえば、データ処理システム102は、第1のデジタルアシスタントコンポーネントからの応答または結果ではなく、第2のデジタルアシスタントコンポーネントからの応答または結果を選択すべきと決定することができる。
データ処理システム102は、結果または応答を選択するために様々なランク付け決定関数または技法を利用することができ、そのいくつかの例が以下の段落の中で説明される。データ処理システム102は、入力オーディオ信号に関連する信号または入力オーディオ信号に対応するクエリに基づいて、ランク付け決定関数または技法を選択することができる。データ処理システム102は、入力オーディオ信号に関連する信号または入力オーディオ信号に対応するクエリに基づいて、デジタルアシスタントまたは応答を選択することができる。信号は、クエリが、あるタイプのメディア、すなわち、インターネット検索クエリ、ニュース要求、天気要求、ビデオ要求、映画要求、音楽要求、または他のタイプの要求に対するものであるかどうかを示すことができる。データ処理システム102は、結果を提供したデジタルアシスタントに関連する情報に基づいて、結果自体に関連する情報に基づいて、クライアントデバイス104に関連する情報に基づいて、クライアントデバイス104に関連するユーザのプロファイルに関連する情報に基づいて、結果のタイプに基づいて、結果を提供するために使用されたデータソースに基づいて、結果がリンクするかもしくは指し示す先のデータソース、結果のデータサイズ、または他の要因に基づいて、応答または結果を選択することができる。
データ処理システム102は、事前構成済みのプリファレンスに基づいて結果または応答を選択することができる。事前構成済みのプリファレンスは、クライアントデバイス104、データ処理システム102、または第1のデジタルアシスタントサーバ106において記憶または構成され得る。たとえば、第2のデジタルアシスタントアプリケーション120は、クライアントデバイス104上で少なくとも部分的に実行することができる。第2のデジタルアシスタントアプリケーション120は、クライアントデバイス104上に位置するインターフェースを含むことができる。第2のデジタルアシスタントアプリケーション120は、クライアントデバイス104の管理者、製造業者、または提供者に関連することができる。第2のデジタルアシスタントアプリケーション120は、好適デジタルアシスタントとなるように事前構成され得る。クライアントデバイス104用の好適デジタルアシスタントであることは、データ処理システム102に、第1のデジタルアシスタント候補結果206からの結果ではなく、第2のデジタルアシスタント候補結果210からの結果の選択を優先させることができる。データ処理システム102は、第2のデジタルアシスタント120からの結果を、第1のデジタルアシスタント106からの結果よりも高くランク付けすることができる。データ処理システム102は、第2のデジタルアシスタントアプリケーション120からの結果に、第1のデジタルアシスタントサーバ106からの結果よりも重く重み付けすることができる。第2のデジタルアシスタントアプリケーション120からの結果にランク付けすること、それに重み付けすること、またはさもなければそれを優先させることによって、データ処理システム102は、第1のデジタルアシスタントサーバ106からの結果と比較して、第2のデジタルアシスタント120からの結果を選択する見込みがあり得る。プリファレンス、ランク付け、重み付け、または他の優先度付けに関連する構成情報は、データベース140(たとえば、ポリシー146データ構造)の中に記憶され得るか、またはクライアントデバイス104上もしくは他のデータ記憶デバイス上に記憶され得る。
データ処理システム102は、応答自体または結果自体についての情報、またはそれらに関連する情報に基づいて、結果または応答を選択することができる。たとえば、データ処理システム102は、応答が、オーディオ専用の、ビデオおよびオーディオの、ビデオ専用の、テキスト専用の、画像専用の、または他のマルチメディアコンテンツを格納することに基づいて応答を選択すべきであると、ランク付け決定関数に基づいて、決定することができる。データ処理システム102は、たとえば、第2の応答に関連する属性または特性に基づいて第1の応答を選択することができる。たとえば、データ処理システム102は、第2の応答がオーディオしか含まないことに応答して、ビデオを含むことがある第1の応答を選択することができる。
データ処理システム102は、結果またはデジタルアシスタントのためのデータソースに基づいて、結果、応答、またはデジタルアシスタントを選択することができる。たとえば、データ処理システム102は、第2のデジタルアシスタントコンポーネントがクライアントデバイス104のメモリの中に記憶されたデータにアクセスすることに基づいて第2のデジタルアシスタントコンポーネントからの第2の応答を選択すべきであると、ランク付け決定関数に基づいて、決定することができる。データを提示またはレンダリングするクライアントデバイス104上にデータが記憶される結果として、ネットワーク帯域幅使用もしくはレイテンシまたはデータストレージを減らすために、データ処理システム102はこの決定を行うことができる。
データ処理システム102は、結果がどのように選択されたのかに関連する情報に基づいて、応答または結果を選択することができる。たとえば、結果を選択するために使用される選択技法または選択プロセスは、結果に対する信頼性スコアを出力することができる。信頼性スコアは、結果が正確であるかどうか、信頼できるかどうか、またはクエリに応答するかどうかに関連する、信頼性のレベルを反映すること、示すこと、または伝達することができる。たとえば、いくつかの結果は、結果に関連する高い信頼性スコア(たとえば、0.7、0.8、0.9、または1)を有することができるが、別の結果は、低い信頼性スコア(たとえば、0.4、0.3、0.2、またはそれ未満)を有することがある。信頼性スコアは、結果がクエリに整合するかまたはクエリに応答する可能性を示すことができる。信頼性スコアは、クライアントデバイス104のユーザが、結果または結果に対応するコンテンツアイテムとインタラクションを行う可能性を示すことができる。したがって、データ処理システム102は、たとえば、第2のデジタルアシスタントコンポーネントからの応答に対する信頼性スコアに基づいて、第2のデジタルアシスタント候補結果210からの応答または結果を選択することができる。
結果は、1つまたは複数の要因に基づいて、低い信頼性スコアまたは高い信頼性スコアを有することがある。たとえば、デジタルアシスタントコンポーネントは、データまたはデータソースの有限または所定のセットへのアクセスを有することがある。デジタルアシスタントコンポーネントは、データソースへの限定されたアクセスに基づいて、結果に関して限定され得る。したがって、デジタルアシスタントコンポーネントは、データソースの限定されたセットからの最良の整合結果が、やはり低い信頼性スコアに関連する場合があることを決定してよい。
決定ブロック216において、データ処理システム102(または、ランク付けエンジン構成要素136)は、第2のデジタルアシスタントからの結果が好ましいかどうかを決定することができる。決定ブロック216において、第2のデジタルアシスタントからの結果が好ましいことをデータ処理システム102が決定する場合、データ処理システムはHTMLアダプタ218に進む。HTMLアダプタ218は、HTMLでコーディングされ得る第2のデジタルアシスタントからの結果を、S3サーバ204と互換性のあるフォーマットに変換することができる。データ処理システム102のHTMLアダプタ218は、第2のデジタルアシスタント候補結果210からの変換された結果を、S3サーバに転送することができる。
しかしながら、決定ブロック216において、第2のデジタルアシスタントからの結果が好ましくないことをデータ処理システム102が決定する場合、データ処理システム102は、S3サーバ204に進むことができ、第1のデジタルアシスタントサーバ106からの応答212を提供することができる。
データ処理システム102(たとえば、ランク付けエンジン構成要素136)は、応答を選択するための様々な論理、規則、発見的技法、または他の機能を用いて構成され得る。たとえば、データ処理システム102は、第1のデジタルアシスタントコンポーネントが好適デジタルアシスタントであることを決定することができる。データ処理システム102は、クエリのタイプ、構成情報、プロファイル情報、事前決定された情報、または他の要因に基づいて、第1のデジタルアシスタントが好適デジタルアシスタントであることを決定することができる。データ処理システム102は、好適デジタルアシスタントとして設定されている第1のデジタルアシスタントから、第1の応答を受信することができる。第1のデジタルアシスタントからのこの第1の応答は、フラグに関連付けられ得る。第1のデジタルアシスタントは、第1の応答に対するフラグを割り当てること、取り付けること、提供すること、またはさもなければ示すことができる。フラグは、この第1の応答がフォールバック応答であることを示すことができる。フォールバック応答とは、別の応答がないインスタンスの中で使用されるべき代替の応答である応答を指すことができる。フォールバック応答は、ランク付けエンジン構成要素136によって実行されている選択プロセスの中に応答を入力するとき、第1の応答の優先度、重み、またはランク付けを下げるべきであることを示すことができる。第1のデジタルアシスタントまたはデータ処理システム102は、第1の応答に関連する信頼性スコア、または第1の応答に関連する他の要因に基づいて、第1の応答にフォールバック応答としてフラグ設定すべきと決定することができる。たとえば、第1のデジタルアシスタントコンポーネントは、第1の応答に関連するデータファイルに関連する品質が低品質であるかまたはしきい値未満の品質を有することを決定することができる。品質は、ビデオ品質、画像品質、またはオーディオ品質を指すことまたは含むことができる。品質は、データストリーミングレートを指すことまたは含むことができる。品質は、データファイルを送信するかまたはデータソースとの接続を確立する際の遅延を指すことができる。品質は、結果に関連するレーティングまたはレビューなどの、応答の内容の品質を指すことができる。品質は、クライアントデバイス104に関連するクエリまたはプロファイルとの結果の関連性を指すことができる。第1のデジタルアシスタントコンポーネントは、第1の応答に関連する信頼性スコアが低いかまたはしきい値未満であることを決定することができる。
結果に関連する品質または信頼性スコアが低いかまたはしきい値未満であるという決定に応答して、第1のデジタルアシスタントコンポーネントは、応答にフォールバック応答としてフラグ設定することができる。すなわち、第1のデジタルアシスタントコンポーネント(たとえば、第1のデジタルアシスタントサーバ106)は、好適デジタルアシスタントとなるように構成されるが、第1のデジタルアシスタントコンポーネントは、第1のデジタルアシスタントコンポーネントによって生成または提供される応答に、フォールバック応答としてフラグ設定することができる。データ処理システム102(たとえば、ランク付けエンジン構成要素136)は、好適デジタルアシスタントである第1のデジタルアシスタントサーバ106から結果を受信すると、第1のデジタルアシスタントコンポーネントをオーバーライドすることができる。たとえば、データ処理システム102は、好適デジタルアシスタントコンポーネントからの応答を選択するように構成され得る。しかしながら、好適デジタルアシスタントコンポーネントからの結果がフォールバック応答としてフラグ設定されているので、データ処理システム102は、第1のデジタルアシスタントコンポーネントからの応答を選択すべきでないと決定することができ、それによって、第1のデジタルアシスタントコンポーネントをオーバーライドする。代わりに、データ処理システム102は、クライアントデバイス104に提供するために、好適デジタルアシスタントコンポーネントでなくてよい第2のデジタルアシスタントコンポーネント120からの応答を選択することができる。
第2のデジタルアシスタントからの応答を選択することによって第1のデジタルアシスタントコンポーネントをオーバーライドすると、第1のデジタルアシスタントが好適デジタルアシスタントコンポーネントであるにもかかわらず、データ処理システム102は、それでもやはり第1のデジタルアシスタントコンポーネントを好適デジタルアシスタントとして保持することができる。たとえば、データ処理システム102は、フォールバック応答としてフラグ設定されている応答に対して第1のデジタルアシスタントコンポーネントをオーバーライドすることができるが、フォールバック応答としてフラグ設定されていない他の応答に対してはオーバーライドすることができない。
データ処理システム102は、選択された1つもしくは複数の結果、または選択されたデジタルアシスタントからの1つもしくは複数の結果を、クライアントデバイス104に提供することができる。データ処理システム102は、別のデバイスまたはサーバを経由してクライアントデバイス104に結果を提供することができる。データ処理システム102は、結果をクライアントデバイス104に提供する前に、結果を前処理すること、またはさもなければ操作もしくは修正することができる。データ処理システム102は、結果がクライアントデバイスに提供される前に、処理のために、データ処理システム102から遠隔のデバイスまたはサーバに結果を提供することができる。たとえば、データ処理システム102は、S3サーバ204に結果を提供することができる。S3サーバ204は、HTMLアダプタ218または第1のデジタルアシスタントサーバ106のいずれかから受信された応答をオーディオに変換することができ、レンダリングまたは提示のためにオーディオ応答をクライアントデバイス104またはディスプレイデバイス108に提供することができる。S3サーバ204は、さらなる処理のために、またはさらなる処理用のデータログとして、デバイスリポジトリ220の中に応答をセーブすることができる。
場合によっては、データ処理システム102は、選択された応答または結果をクライアントデバイス104に提供することができる。クライアントデバイス104は、クライアントデバイス104の出力インターフェースを介して応答を提示するように構成され得る。クライアントデバイス104は、クライアントデバイス104の出力インターフェースを介した提示のために、あるフォーマットから別のフォーマットに結果または応答を変換するように構成され得る。たとえば、クライアントデバイス104自体が、テキストまたはHTMLコンテンツをオーディオ出力またはビジュアル出力に変換するためのテキスト音声機能を用いて構成されてよい。
図3は、図1または図2に示す例示的なシステムを使用してオーディオクエリのオーバーラップ処理を協調させるためのフロー図を示す。プロセス300は、データ処理システム102、第1のデジタルアシスタントサーバ106、クライアントデバイス104、1つまたは複数のプロセッサまたはコンピューティングデバイス500によって実行され得る。302において、データ処理システムは、第1のブランチの中の第1のデジタルアシスタントを動作させることができ、第2のブランチの中の第2のデジタルアシスタントを動作させることができる。2つのデジタルアシスタントは、並行してまたはオーバーラップ方式で動作することができる。オーバーラップ処理とは、両方のデジタルアシスタントが少なくとも部分的な時間量にわたって同時に動作することを指すことができる。オーバーラッププロセスとは、少なくとも部分的に並行して、または少なくとも部分的に同時に動作することを指すことができる。デジタルアシスタントのうちの一方が、動作することを最初に始めてよく、または動作することを最初にやめてもよい。別個のデジタルアシスタント上での処理は、並行して(たとえば、同時に)行われ得る。第1のデジタルアシスタントは、サードパーティのサーバ上で動作することができる。第2のデジタルアシスタントは、データ処理システム上で動作することができる。第1のデジタルアシスタントは、第2のデジタルアシスタントを統治するエンティティとは異なるサードパーティによって統治され得る。
304において、データ処理システムは、第2のデジタルアシスタントからの結果が利用可能であるかどうかを決定するための決定ブロックを実行することができる。第2のデジタルアシスタントからの結果が利用可能でない場合、ACT306において、データ処理システムは、決定ブロック304に戻ることができ、結果が利用可能であるかどうかを見るために再びチェックすることができる。データ処理システムは、第2のデジタルアシスタントからの結果が利用可能であるかどうかを繰り返しチェックするために、決定ブロック304に戻ることができる。場合によっては、データ処理システムは、(たとえば、10秒、30秒、60秒、またはそれよりも長い)所定の時間量にわたって第2のデジタルアシスタントからの結果が利用可能でない場合、タイムアウトすることができる。
ブロック304において、第2のデジタルアシスタントからの結果が利用可能であることをデータ処理システムが決定する場合(ACT308)、データ処理システムは、第2のデジタルアシスタントからの結果が好ましいかどうかを決定するために、決定ブロック310に進むことができる。第2のデジタルアシスタントからの結果が好ましい場合、データ処理システムは、ブロック312に進むことができ、ここで、データ処理システムは、第2のデジタルアシスタントからの応答を選択することができる。
しかしながら、ブロック310において、第2のデジタルアシスタントからの結果が好ましくないことをデータ処理システムが決定する場合、データ処理システムは、ブロック314に進むことができ、第1のデジタルアシスタントからの応答を待つことができる。データ処理システムが第1のデジタルアシスタントからの結果を受信すると、データ処理システムは、決定ブロック316に進むことができ、そこにおいてデータ処理システムは、第1のデジタルアシスタントからの応答がフォールバック応答としてフラグ設定されているかどうかを決定することができる。フォールバック応答は、応答がフォールバックすなわち最後の方策または最後の尺度としてのみ使用されるべきであることを示すことができる。応答が正確であり、信頼でき、または適切であるという、低い(たとえば、0.2、0.3、0.4などの、またはそれよりも低いしきい値よりも低い)信頼性スコアがある場合、応答はフォールバック応答としてタグ付けまたはフラグ設定され得る。
決定ブロック316において、第1のデジタルアシスタントサーバからの応答がフォールバック応答としてフラグ設定されていることをデータ処理システムが決定する場合、データ処理システムは、ブロック312において、第2のデジタルアシスタントからの応答の選択に進むことができる。たとえば、第1のデジタルサーバからの応答がフォールバックとしてフラグ設定されている場合、データ処理システムは、第1のデジタルアシスタントが好適デジタルアシスタントであるにもかかわらず、第1のデジタルアシスタント応答をオーバーライドすることができ、第2のデジタルアシスタントの使用に進むことができる。
しかしながら、決定ブロック316においてデータ処理システムによって決定されるとき、第1のデジタルアシスタント応答がフォールバックとしてフラグ設定されていない場合、データ処理システム102は、ブロック318に進むことができ、第1のデジタルアシスタント応答を選択することができる。
場合によっては、ブロック304において、データ処理システムは、第1のデジタルアシスタントコンポーネントからの結果の前に、第2のデジタルアシスタントコンポーネントからの結果が利用可能であるかまたは準備ができていることを決定することができる。データ処理システムは、ブロック310において、第2のデジタルアシスタントコンポーネントが好適デジタルアシスタントコンポーネントでないことを決定することができる。データ処理システムは、構成情報、命令、表示、または他のデータに基づいて、この決定を行うことができる。データ処理システムは、第1のデジタルアシスタントが好適デジタルアシスタントであることを決定する。たとえば、構成、命令、表示、または他のデータファイルが、複数のデジタルアシスタントのうちのどれが好適デジタルアシスタントであるのかを示すことができる。ブロック310において、第1のデジタルアシスタントが好適デジタルアシスタントであることを決定することによって、データ処理システムは、ブロック310において、第2のデジタルアシスタントが好適デジタルアシスタントでないことを決定することができる。
データ処理システムは、第2のデジタルアシスタントが好適デジタルアシスタントでないという決定に応答して、または第1のデジタルアシスタントが好適デジタルアシスタントであるという決定に応答して、1つまたは複数のアクションをとることができる。たとえば、ブロック314において、データ処理システムは、第2のデジタルアシスタントコンポーネントが好適デジタルアシスタントでなく第1のデジタルアシスタントが好適デジタルアシスタントであるという決定に応答して、第1のデジタルアシスタントコンポーネントからの第1の応答を待つことができる。したがって、データ処理システムは、第1のデジタルアシスタントから任意の応答を受信する前に第2のデジタルアシスタントから応答を受信したが、データ処理システムは、第1のデジタルアシスタントが好適デジタルアシスタントであるので第1のデジタルアシスタントからの第1の応答を待つことができる。
データ処理システムは、第1のデジタルアシスタントから応答を受信することができる。データ処理システムは、最初に第1のデジタルアシスタントから応答を受信した後の応答を待った後、第1のデジタルアシスタントから応答を受信することができる。データ処理システムは、ブロック316において、第1のデジタルアシスタントコンポーネントからの第1の応答の受信時に、第1の応答がフォールバック応答としてフラグ設定されていることを決定することができる。たとえば、第1のデジタルアシスタントは、好適デジタルアシスタントとして構成されているが、第1のデジタルアシスタントによって生成された応答をフォールバック応答として割り当てることができる。ブロック312において、データ処理システムは、第2のデジタルアシスタントコンポーネントが好適デジタルアシスタントでなく第1の応答がフォールバック応答としてフラグ設定されているという決定に基づいて、第2の応答を選択することができる。データ処理システムが、第1のデジタルアシスタントからの応答を優先させることがあり、かつデータ処理システムが第2のデジタルアシスタントから応答をすでに受信したにもかかわらず第1のデジタルアシスタントからの応答を待っていることがある間、データ処理システムは、第1のデジタルアシスタントからの応答がフォールバック応答としてフラグ設定されていたので、最終的に第2のデジタルアシスタントからの応答を選択すべきと決定してよい。第2のデジタルアシスタントからの応答は、フォールバックとしてフラグ設定されていない場合がある。第1および第2のデジタルアシスタントの両方からの応答がフォールバック応答としてフラグ設定された場合、データ処理システムは、この例では第1のデジタルアシスタントなどの、好適デジタルアシスタントからの応答を選択することができる。したがって、データ処理システムは、好適デジタルアシスタントからの応答に、より高くランク付けすることができ、好適なデジタルプロバイダからの応答がフォールバック応答としてフラグ設定されており、かつ好適でないデジタルアシスタントからの応答がフォールバックとしてフラグ設定されていない場合を除いては、好適デジタルアシスタントからの応答を選択することができる。
図4は、図1または図3に示す例示的なシステムを使用して、複数のデバイスを横断してオーディオクエリの並列処理を協調させるための方法を示す。たとえば、方法400は、データ処理システム102によって実行され得る。405において、データ処理システムは、クライアントデバイスからオーディオ信号を受信することができる。クライアントデバイスは、マイクロフォンまたはトランスジューサなどのセンサを使用してオーディオ信号を検出することができる。オーディオ信号は、クライアントデバイスのユーザからの音声またはスピーチを含むことができる。オーディオ信号は、オーディオ信号の少なくとも一部分に応答してアクションをとるようにクライアントデバイスに警告するための、ウェイクアップワード、キーワード、ホットワード、またはトリガワードを含むことができる。
ACT410において、オーディオ信号は、クエリを生成するためにテキストに変換され得る。たとえば、クライアントデバイス自体が、検出されたオーディオ信号をスピーチに変換することができ、またはクライアントデバイスは、オーディオをテキストに変換するためにオーディオ信号をストリーミング音声サーバへ送信することができる。クライアントデバイスは、ネットワークを介したデータ送信を容易にするために、オーディオ信号を別のフォーマットに前処理または変換することができる。たとえば、クライアントデバイスは、アナログオーディオ入力信号を、ネットワークを介してデータパケットの中のペイロードとしてオーディオ信号を送信することを容易にするデジタルオーディオ信号に変換することができる。データ処理システムまたはストリーミング音声サーバは、データパケットを受信すると、オーディオ信号をテキストに変換することができる。
データ処理システムは、オーディオ信号に対応する、テキストの中のクエリを特定することができる。クエリは、たとえば、コンテンツを求める要求を含むことができる。クエリは、データまたは情報を求める要求を含むことができる。クエリは、データ処理システムもしくはクライアントデバイスまたは他のデバイスが、デジタルアクションもしくは電子アクションなどのアクションを実行するための要求を含むことができる。
ACT415において、データ処理システムは、処理のためにクエリを第1のデジタルアシスタントサーバへ送信することができる。データ処理システムは、処理のためにクエリを第2のデジタルアシスタントサーバへ送信することができる。データ処理システムは、別個のブランチを介してクエリを複数のデジタルアシスタントへ送信することができる。ブランチは、処理スレッドを指すことができる。データ処理システムは、処理のためにクエリを複数のデジタルアシスタントへ同時に送信することができる。
ACT420において、データ処理システムは、第1のデジタルアシスタントの応答をオーバーライドするとともに第2のデジタルアシスタントの応答を選択するために、ランク付け決定論理を使用することができる。データ処理システムは、クエリの中の信号に基づいてランク付け決定論理を選択することができる。信号は、たとえば、映画クエリ、ニュースクエリ、音楽クエリ、オーディオブッククエリ、天気クエリ、またはテレビショークエリなどの、クエリのタイプを指すことができ、またはそれを示すことができる。データ処理システムは、クエリのタイプを示す信号を特定することができ、次いで、対応するランク付け決定論理を選択して好適デジタルアシスタントを選択することができる。たとえば、クエリが映画クエリである場合、データ処理システムは、第1のデジタルアシスタントを好適デジタルアシスタントとして設定することができる。しかしながら、クエリが検索クエリであることを信号が示す場合、データ処理システムは、たとえば、第2のデジタルアシスタントを好適デジタルアシスタントとして設定することができる。
データ処理システムは、複数のランク付け決定関数のプールからランク付け決定関数を選択することができる。データ処理システムは、クエリの信号に基づいてランク付け決定関数を選択することができる。たとえば、データ処理システムは、映画クエリに対して第1のランク付け決定関数を、音楽クエリに対して第2のランク付け決定関数を、またはニュースクエリに対して第3のランク付け決定関数を選択することができる。たとえば、第1のランク付け決定関数は、第1のデジタルアシスタントを好適デジタルアシスタントとして割り当てることができ、応答に対して信頼性スコア用の第1のしきい値を設定することができる。第2のランク付け決定は、第2のデジタルアシスタントを好適デジタルアシスタントとして割り当てることができ、応答に対して信頼性スコア用の第2のしきい値を設定することができる。第1および第2のしきい値は、それぞれのクエリに対する応答に関連する要因に基づいて設定または調整され得る。たとえば、天気クエリに対して、より低い信頼性スコアしきい値があってよく、ナビゲーション関連のクエリまたは映画関連のクエリに対して、より高い信頼性スコアしきい値があってよい。
たとえば、第1のデジタルアシスタントは、「Streaming_Service_AでMovie_Aを再生してください」などの、メディア領域のクエリに関係するオーディオクエリを処理しそれに応答するように構成され得るが、第2のデジタルアシスタントコンポーネントは、「私の次のアポイントメントはいつですか」などの、検索領域のクエリを処理しそれに応答するように構成され得る。クエリの信号があいまいであるかまたは複数のカテゴリーに入る場合、データ処理システムは、複数のデジタルアシスタントコンポーネントからの応答にランク付けすることができ、デジタルアシスタントコンポーネントのうちの1つからの応答を選択することができる。たとえば、データ処理システムは、信頼性レベル、品質スコア、または他の要因に基づいて、応答またはクエリにスコア付けまたはランク付けすることができる。
したがって、データ処理システムは、応答をそこから選択すべき、デジタルアシスタントのうちの1つを選択するために、ランク付け決定論理または関数を使用することができる。ACT425において、データ処理システムは、選択されたデジタルアシスタントからの選択された応答を、提示のためにクライアントデバイスに提供することができる。たとえば、データ処理システムは、第2のデジタルアシスタントによって生成されたクエリに対する応答を、提示のためにクライアントデバイスに提供することができる。
図5は、例示的なコンピュータシステム500のブロック図である。コンピュータシステムまたはコンピューティングデバイス500は、システム100、またはデータ処理システム102、クライアントデバイス104、第1のデジタルアシスタントサーバ106、およびディスプレイデバイス108などの、その構成要素を含むことができるか、またはそれらを実装するために使用され得る。コンピューティングシステム500は、情報を通信するためのバス505または他の通信構成要素、および情報を処理するための、バス505に結合されたプロセッサ510または処理回路を含む。コンピューティングシステム500は、情報を処理するための、バスに結合された1つまたは複数のプロセッサ510または処理回路を含むことができる。コンピューティングシステム500は、プロセッサ510によって実行されるべき情報および命令を記憶するための、バス505に結合された、ランダムアクセスメモリ(RAM)または他のダイナミック記憶デバイスなどの主記憶装置515を含む。主記憶装置515は、データリポジトリ140であり得るか、またはデータリポジトリ140を含むことができる。主記憶装置515はまた、プロセッサ510による命令の実行中に、位置情報、一時変数、または他の中間情報を記憶するために使用され得る。コンピューティングシステム500は、プロセッサ510用の静的な情報および命令を記憶するための、バス505に結合された読取り専用メモリ(ROM)520または他のスタティック記憶デバイスをさらに含んでよい。ソリッドステートデバイス、磁気ディスク、または光ディスクなどの記憶デバイス525が、情報および命令を持続的に記憶するためにバス505に結合され得る。記憶デバイス525は、データリポジトリ140を含むことができるか、またはデータリポジトリ140の一部であり得る。
コンピューティングシステム500は、情報をユーザに表示するために、液晶ディスプレイまたはアクティブマトリックスディスプレイなどのディスプレイ535にバス505を介して結合され得る。英数字キーおよび他のキーを含むキーボードなどの入力デバイス530が、情報およびコマンド選択をプロセッサ510に通信するためにバス505に結合され得る。入力デバイス530は、タッチスクリーンディスプレイ535を含むことができる。入力デバイス530は、方向情報およびコマンド選択をプロセッサ510に通信するために、またディスプレイ535上でのカーソル移動を制御するために、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御装置を含むことができる。ディスプレイ535は、たとえば、図1のデータ処理システム102、クライアントデバイス104、ディスプレイデバイス108、または他の構成要素の一部であり得る。
本明細書で説明するプロセス、システム、および方法は、プロセッサ510が主記憶装置515の中に格納された命令の構成を実行することに応答して、コンピューティングシステム500によって実施され得る。そのような命令は、記憶デバイス525などの別のコンピュータ可読媒体から主記憶装置515の中に読み取られ得る。主記憶装置515の中に格納された命令の構成の実行は、本明細書で説明する例示的なプロセスをコンピューティングシステム500に実行させる。主記憶装置515の中に格納された命令を実行するために、多重処理構成での1つまたは複数のプロセッサが採用されてよい。本明細書で説明するシステムおよび方法と一緒に、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、ハードワイヤ回路構成が使用され得る。本明細書で説明するシステムおよび方法は、ハードウェア回路構成とソフトウェアとのいかなる特定の組合せにも限定されない。
例示的なコンピューティングシステムが図5において説明されているが、本明細書で説明する動作を含む主題は、他のタイプのデジタル電子回路構成で、または本明細書で開示する構造およびそれらの構造的均等物を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実施され得る。
本明細書で説明するシステムが、ユーザについての個人情報を収集するかまたは個人情報を利用することがある状況に対して、プログラムまたは機能が個人情報(たとえば、ユーザのソーシャルネットワーク、社会的行為、もしくは活動についての情報、ユーザのプリファレンス、またはユーザのロケーション)を収集し得るかどうかを制御するための、あるいはユーザにとってより重要であり得るコンテンツをコンテンツサーバもしくは他のデータ処理システムから受信するかどうか、またはどのように受信するのかを制御するための機会が、ユーザに提供されてよい、加えて、いくつかのデータは、パラメータを生成するときに、個人が特定できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で匿名化されてよい。たとえば、ユーザの識別情報は、個人が特定できる情報がユーザに対して決定され得ないように匿名化されてよく、またはユーザの地理的ロケーションは、ユーザの特定のロケーションが決定され得ないように、ロケーション情報が取得される場所で(都市レベル、郵便番号レベル、または州レベルなどに)一般化されてよい。したがって、ユーザは、どのように情報が彼または彼女について収集されコンテンツサーバによって使用されるのかを制御してよい。
本明細書で説明する主題および動作は、デジタル電子回路構成で、または本明細書で開示する構造およびそれらの構造的均等物を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実施され得る。本明細書で説明する主題は、1つまたは複数のコンピュータプログラム、たとえば、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、1つまたは複数のコンピュータ記憶マルチメディア上で符号化された、コンピュータプログラム命令の1つまたは複数の回路として実施され得る。代替または追加として、プログラム命令は、データ処理装置による実行用の好適な受信機装置への送信のために情報を符号化するように生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気信号、光信号、または電磁信号において符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはその中に含まれ得る。コンピュータ記憶媒体は伝搬信号でないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号の中で符号化されたコンピュータプログラム命令の送信元または送信先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理的な構成要素またはマルチメディア(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはその中に含まれ得る。本明細書で説明する動作は、1つもしくは複数のコンピュータ可読記憶デバイス上に記憶されるかまたは他の送信元から受信されるデータに対してデータ処理装置によって実行される動作として実施され得る。
「データ処理システム」、「コンピューティングデバイス」、「構成要素」、または「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、または上記の組合せを含む、データを処理するための様々な装置、デバイス、および機械を包含する。装置は、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラム用の実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス基盤、分散コンピューティング基盤、およびグリッドコンピューティング基盤などの、様々な異なるコンピューティングモデル基盤を実現することができる。システム100の構成要素は、1つまたは複数のデータ処理装置、システム、コンピューティングデバイス、またはプロセッサを含むことができるか、またはそれらを共有することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、スクリプト、またはコードとも呼ばれる)は、コンパイル型言語またはインタープリタ型言語、宣言型言語または手続型言語を含む、任意の形式のプログラミング言語で書くことができ、スタンドアロンプログラム、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットを含む、任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムの中のファイルに相当することができる。コンピュータプログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書の中に記憶された1つまたは複数のスクリプト)を保持するファイルの一部分の中に、当該のプログラムに専用の単一のファイルの中に、または複数の協調したファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)の中に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、またはある場所に位置するかもしくは複数の場所にわたって分散され通信ネットワークによって相互接続される複数のコンピュータ上で、実行されるように展開され得る。
本明細書で説明するプロセスおよび論理フローは、入力データに対して動作するとともに出力を生成することによってアクションを実行するための、1つまたは複数のコンピュータプログラム(たとえば、データ処理システム102、クライアントデバイス104、第1のデジタルアシスタントサーバ106、およびディスプレイデバイス108の構成要素)を実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローはまた、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行され得、装置もそれらとして実装され得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、すべての形態の、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスを含む、不揮発性メモリ、不揮発性マルチメディア、および不揮発性メモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリは、専用論理回路構成によって増補され得るか、またはその中に組み込まれ得る。
本明細書で説明する主題は、バックエンド構成要素、たとえば、データサーバを含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザがそれを通じて、本明細書で説明する主題の一実装形態とインタラクションを行うことができる、グラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータ、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の組合せを含む、コンピューティングシステムにおいて実施され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
システム100またはシステム500などのコンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に互いに遠隔にあり、通常は通信ネットワーク(たとえば、ネットワーク110)を通じてインタラクションを行う。クライアントとサーバとの関係は、コンピュータプログラムがそれぞれのコンピュータ上で動作すること、および互いにクライアントサーバ関係を有することによって生じる。いくつかの実装形態では、サーバは、(たとえば、クライアントデバイスとインタラクションを行うユーザにデータを表示し、そうしたユーザからユーザ入力を受け取るために)クライアントデバイスへデータ(たとえば、コンテンツアイテムを表すデータパケット)を送信する。クライアントデバイスにおいて生成されるデータ(たとえば、ユーザインタラクションの結果)は、サーバにおいてクライアントデバイスから受信され得る(たとえば、クライアントデバイス104またはディスプレイデバイス108からデータ処理システム102によって受信され得る)。
動作は特定の順序で図面の中で示されるが、そのような動作は図示の特定の順序または連続的な順序で実行されることを必要とせず、図示したすべての動作が実行されることを必要とするとは限らない。本明細書で説明するアクションは、様々な順序で実行され得る。
様々なシステム構成要素の分離は、すべての実装形態において分離を必要とするとは限らず、説明するプログラム構成要素は、単一のハードウェアまたはソフトウェア製品の中に含まれ得る。たとえば、NLP構成要素124およびダイレクトアクションAPI126は、単一の構成要素、アプリ、もしくはプログラム、または1つもしくは複数の処理回路を有する論理デバイス、あるいはデータ処理システム102の1つまたは複数のサーバの一部であり得る。
いくつかの例示的な実装形態が今までに説明されているが、上記のことが例示的であり限定的ではなく、例として提示されていることが明らかである。詳細には、本明細書で提示する例の多くが、方法行為またはシステム要素の特定の組合せを伴うが、それらの行為およびそれらの要素は、同じ目的を達成するための他の方法で組み合わせられてよい。ある実装形態に関して説明する行為、要素、および特徴は、他の実装形態における類似の役割から除外されるものではない。
本明細書で使用する語法および用語は、説明のためのものであり、限定的と見なされるべきではない。本明細書における「含むこと」、「備えること」、「有すること」、「格納すること」、「伴うこと」、「によって特徴づけられる」、「ことを特徴とする」、およびそれらの変形の使用は、その後に列挙された項目、それらの均等物、および追加の項目、ならびにその後に排他的に列挙された項目からなる代替実装形態を包含することを意味する。1つの実装形態では、本明細書で説明するシステムおよび方法は、説明する要素、行為、または構成要素のうちの1つ、2つ以上の各組合せ、またはそれらのすべてからなる。
単数形で言及される、本明細書におけるシステムおよび方法の実装形態、要素、または行為への任意の言及はまた、複数のこれらの要素を含む実装形態を包含してよく、本明細書における任意の実装形態、要素、または行為への複数形での任意の言及はまた、単一の要素しか含まない実装形態を包含してよい。単数または複数の形態での言及は、本開示のシステムもしくは方法、それらの構成要素、行為、または要素を、単一または複数の構成に限定することを意図しない。任意の情報、行為、または要素に基づく任意の行為または要素の言及は、行為または要素が任意の情報、行為、または要素に少なくとも部分的に基づく実装形態を含んでよい。
本明細書で開示する任意の実装形態は、任意の他の実装形態または実施形態と組み合わせられてよく、「一実装形態」、「いくつかの実装形態」、「1つの実装形態」などの言及は、必ずしも互いに排他的であるとは限らず、実装形態に関して説明する特定の特徴、構造、または特性が少なくとも1つの実装形態または実施形態の中に含まれてよいことを示すものとする。本明細書で使用するような用語は、必ずしもすべてが同じ実装形態を参照するとは限らない。任意の実装形態は、本明細書で開示する態様および実装形態に一致する任意の方法で、包含的または排他的に任意の他の実装形態と組み合わせられてよい。
「または」への参照は、「または」を使用して説明する任意の用語が、説明する用語のうちの1つ、2つ以上、および全部のうちのいずれかを示し得るように、包含的として解釈されてよい。「「A」および「B」のうちの少なくとも1つ」への参照は、「A」のみ、「B」のみ、および「A」と「B」の両方を含むことができる。「備えること」または他のオープンな用語とともに使用されるそのような参照は、追加の項目を含むことができる。
図面、発明を実施するための形態、または任意の請求項における技術的特徴に参照符号が続く場合、その参照符号は、図面、発明を実施するための形態、および請求項の了解度を高めるために含められている。したがって、参照符号も、参照符号がないことも、任意の請求項要素の範囲に対していかなる限定的な影響も有しない。
本明細書で説明するシステムおよび方法は、それらの特性から逸脱することなく他の特定の形態で具現され得る。上記の実装形態は、説明するシステムおよび方法の限定ではなく例示である。本明細書で説明するシステムおよび方法の範囲は、上記の説明ではなく添付の特許請求の範囲によってそのように示され、特許請求の範囲の同等の趣旨内および範囲内に入る変更はその中に包含される。