(58)【調査した分野】(Int.Cl.,DB名)
前記タスクの完全な実行のための推定時間長さを、前記計算機アシスタントによって判定するステップをさらに備え、前記タスクの完全な実行が、前記しきい時間長さよりも長くかかると判定するステップは、前記推定時間長さが、前記しきい時間長さを超えることを判定するステップを備えた、請求項1に記載の方法。
前記推定時間長さを判定するステップは、前記特定されたタスクと同じタイプのタスクの完全な実行の履歴時間に基づいて、前記特定されたタスクの完全な実行のための前記推定時間長さを判定するステップを備えた、請求項2に記載の方法。
前記タスクの完全な実行は、前記計算機アシスタントが、1つまたは複数のサブタスクを実行することを含んでいることを、前記計算機アシスタントによって判定するステップと、
前記1つまたは複数のサブタスクのうちの少なくとも1つが、即時的な実行のために適格ではないとして、タスクデータストアにマークされていると判定することに応じて、前記タスクの完全な実行が、前記しきい時間長さよりも長くかかると、前記計算機アシスタントによって判定するステップとをさらに備えた、請求項1から4のいずれか一項に記載の方法。
前記言葉は第1の言葉であり、前記タスクの完全な実行が即時的ではないことを前記コンピューティングデバイスの前記ユーザに通知する前記合成声データが第1の時間に出力され、前記方法はさらに、
前記計算機アシスタントによって、前記第1の時間よりも遅い第2の時間において、前記コンピューティングデバイスにおいて話された第2の言葉の表現を受け取るステップであって、前記第2の言葉は、前記タスクの実行のステータスを求める要求を備える、ステップと、
前記コンピューティングデバイスに動作可能に接続された前記1つまたは複数のスピーカによる再生のために、前記タスクの実行の前記ステータスを、前記コンピューティングデバイスの前記ユーザに通知する合成声データを、前記計算機アシスタントによって出力するステップとを備えた、請求項1から8のいずれか一項に記載の方法。
前記計算機アシスタントが、前記特定されたタスク以外のタスクを実行することができる汎用計算機アシスタントである、請求項1から13のいずれか一項に記載の方法。
前記コンピューティングデバイスにおいて、前記タスクの完全な実行の前に、前記計算機アシスタントが前記タスクを実行していることを示す視覚的なインジケータを表示するステップをさらに備えた、請求項1から15のいずれか一項に記載の方法。
前記計算機アシスタントはさらに、前記タスクの完全な実行のための推定時間長さを判定するように構成され、前記タスクの完全な実行が、前記しきい時間長さよりも長くかかると判定するために、前記計算機アシスタントは、前記推定時間長さが、前記しきい時間長さを超えることを判定するように構成された、請求項17に記載のコンピューティングシステム。
前記推定時間長さを判定するために、前記計算機アシスタントは、前記特定されたタスクと同じタイプのタスクの完全な実行の履歴時間に基づいて、前記特定されたタスクの完全な実行のための前記推定時間長さを判定するように構成された、請求項18に記載のコンピューティングシステム。
前記タスクの完全な実行が即時的ではないことを前記コンピューティングデバイスの前記ユーザに通知する前記合成声データを出力するために、前記計算機アシスタントはさらに、
前記1つまたは複数のスピーカによる再生のために、前記タスクの完全な実行のための推定時間長さを含む合成声データを出力するように構成された、請求項17から19のいずれか一項に記載のコンピューティングシステム。
前記言葉は第1の言葉であり、前記タスクの完全な実行が即時的ではないことを前記コンピューティングデバイスの前記ユーザに通知する前記合成声データが第1の時間に出力され、前記計算機アシスタントはさらに、
前記第1の時間よりも遅い第2の時間において、前記コンピューティングデバイスにおいて話された第2の言葉の表現を受け取り、前記第2の言葉は、前記タスクの実行のステータスを求める要求を備え、
前記コンピューティングデバイスに動作可能に接続された前記1つまたは複数のスピーカによる再生のために、前記タスクの実行の前記ステータスを、前記コンピューティングデバイスの前記ユーザに通知する合成声データを出力するように構成された、請求項17から24のいずれか一項に記載のコンピューティングシステム。
実行されると、コンピューティングシステムの1つまたは複数のプロセッサに対して、請求項1から16のいずれか一項に記載の方法を実行するように構成された計算機アシスタントを実行させる命令を記憶したコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0010】
図1は、本開示の1つまたは複数の態様に従って、例示的な仮想的なアシスタントを実行する例示的なシステムを示す概念図である。
図1のシステム100は、ネットワーク130を介して、検索サーバシステム180およびコンピューティングデバイス110と通信するデジタルアシスタントシステム160を含む。システム100は、デジタルアシスタントシステム160、検索サーバシステム180、およびコンピューティングデバイス110に分散されているように示されているが、他の例では、システム100に起因する機能および技術は、コンピューティングデバイス110のローカルコンポーネントによって内部的に実行され得る。同様に、デジタルアシスタントシステム160は、特定のコンポーネントを含み、以下の説明で検索サーバシステム180および/またはコンピューティングデバイス110に帰属する様々な技術を実行し得る。
【0011】
ネットワーク130は、コンピューティングシステム、サーバ、およびコンピューティングデバイス間でデータを送信するための、たとえば、セルラー、Wi-Fi、および/または他のタイプのネットワークのような任意のパブリックまたはプライベート通信ネットワークを表す。デジタルアシスタントシステム160は、ネットワーク130を介して、コンピューティングデバイス110とデータを交換し、コンピューティングデバイス110がネットワーク130に接続されているときにコンピューティングデバイス110にアクセス可能な仮想的なアシスタントサービスを提供し得る。デジタルアシスタントシステム160は、ネットワーク130を介して検索サーバシステム180とデータを交換し、検索サーバシステム180によって提供される検索サービスにアクセスし得る。コンピューティングデバイス110は、ネットワーク130を介して検索サーバシステム180とデータを交換し、検索サーバシステム180によって提供される検索サービスにアクセスし得る。
【0012】
ネットワーク130は、1つまたは複数のネットワークハブ、ネットワークスイッチ、ネットワークルータ、または他の任意のネットワーク機器を含み得る。これらは、動作可能に相互結合され、それによりシステム160、180とコンピューティングデバイス110との間の情報の交換を提供する。コンピューティングデバイス110、デジタルアシスタントシステム160、および検索サーバシステム180は、任意の適切な通信技術を使用して、ネットワーク130を介してデータを送信および受信し得る。コンピューティングデバイス110、デジタルアシスタントシステム160、および検索サーバシステム180はおのおの、それぞれのネットワークリンクを使用してネットワーク130に動作可能に結合され得る。コンピューティングデバイス110、デジタルアシスタントシステム160、および検索サーバシステム180をネットワーク130に結合するリンクは、イーサネット(登録商標)または他のタイプのネットワーク接続であり得、そのような接続は、ワイヤレスおよび/またはワイヤ接続であり得る。
【0013】
デジタルアシスタントシステム160および検索サーバシステム180は、ネットワーク130等のネットワークとの間で情報を送受信できる1つまたは複数のデスクトップコンピュータ、ラップトップコンピュータ、メインフレーム、サーバ、クラウドコンピューティングシステム等の任意の適切なリモートコンピューティングシステムを表す。デジタルアシスタントシステム160は、仮想的なアシスタントサービスをホストする(または、少なくともアクセスを提供する)。検索サーバシステム180は、検索サービスをホストする(または、少なくともアクセスを提供する)。いくつかの例では、デジタルアシスタントシステム160および検索サーバシステム180は、クラウドを介して、それぞれのサービスへのアクセスを提供するクラウドコンピューティングシステムを表す。
【0014】
コンピューティングデバイス110は、1つまたは複数の個々のモバイルまたは非モバイルコンピューティングデバイスを表す。コンピューティングデバイス110の例は、モバイル電話、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバ、メインフレーム、セットトップボックス、テレビ、ウェアラブルデバイス(たとえば、コンピュータ化された腕時計、コンピュータ化されたアイウェア、コンピュータ化された手袋等)、ホームオートメーションデバイスまたはシステム(たとえば、インテリジェントサーモスタットまたはホームアシスタントデバイス等)、携帯情報端末(PDA)、ゲームシステム、メディアプレーヤ、電子書籍リーダ、モバイルテレビプラットフォーム、自動車ナビゲーションまたはインフォテインメントシステム、または仮想的なアシスタントを実行またはアクセスし、ネットワーク130等のネットワークを介して情報を受信するように構成された他の任意のタイプのモバイル、非モバイル、ウェアラブル、および非ウェアラブルのコンピューティングデバイスを含む。
【0015】
デジタルアシスタントシステム160および/または検索サーバシステム180は、ネットワーク130を介してコンピューティングデバイス110と通信し、コンピューティングデバイス110に、デジタルアシスタントシステム160によって提供される仮想的なアシスタントサービスへのアクセスを与え、および/または、検索サーバシステム180によって提供される検索サービスへのアクセスを、コンピューティングデバイス110へ提供し得る。仮想的なアシスタントサービスを提供する過程で、デジタルアシスタントシステム160は、ネットワーク130を介して検索サーバシステム180と通信し、タスクを完了するために仮想的なアシスタントサービス情報のユーザに提供するための検索結果を取得し得る。
【0016】
図1の例では、デジタルアシスタントシステム160は、リモートアシスタントモジュール122Bおよびユーザ情報データストア124Bを含む。リモートアシスタントモジュール122Bは、デジタルアシスタントシステム160がネットワーク130を介して(たとえば、コンピューティングデバイス110に)提供する仮想的なアシスタントサービスの一部としてユーザ情報データストア124Bを維持し得る。コンピューティングデバイス110は、ユーザインターフェースデバイス(UID)112、ユーザインターフェース(UI)モジュール120、ローカルアシスタントモジュール122A、およびユーザ情報データストア124Aを含む。ローカルアシスタントモジュール122Aは、コンピューティングデバイス110においてローカルに実行する仮想的なアシスタントサービスの一部としてユーザ情報データストア124Aを維持し得る。リモートアシスタントモジュール122Bおよびローカルアシスタントモジュール122Aは、総称的にアシスタントモジュール122Aおよび122Bと呼ばれ得る。ローカルデータストア124Aおよびリモートデータストア124Bは、総称的にデータストア124Aおよび124Bと呼ばれ得る。
【0017】
モジュール120、122A、122B、および182は、コンピューティングデバイス110、デジタルアシスタントシステム160、または検索サーバシステム180のうちの1つにおいて存在および/または実行するソフトウェア、ハードウェア、ファームウェア、またはハードウェア、ソフトウェア、およびファームウェアの混成を使用して説明される動作を実行し得る。コンピューティングデバイス110、デジタルアシスタントシステム160、および検索サーバシステム180は、多数のプロセッサまたは多数のデバイスでモジュール120、122A、122B、および182を実行し得る。コンピューティングデバイス110、デジタルアシスタントシステム160、および検索サーバシステム180は、基礎となるハードウェア上で実行する仮想的なマシンとして、モジュール120、122A、122B、および182を実行し得る。モジュール120、122A、122B、および182は、オペレーティングシステムまたはコンピューティングプラットフォームの1つまたは複数のサービスとして実行し得る。モジュール120、122A、122B、および182は、コンピューティングプラットフォームのアプリケーション層において1つまたは複数の実行可能プログラムとして実行し得る。
【0018】
コンピューティングデバイス110のUID112は、コンピューティングデバイス110のための入力および/または出力デバイスとして機能し得る。UID112は、様々な技術を使用して実施され得る。たとえば、UID112は、抵抗タッチスクリーン、表面音響波タッチスクリーン、静電容量タッチスクリーン、投影静電容量タッチスクリーン、感圧スクリーン、音響パルス認識タッチスクリーン、または別の感圧ディスプレイ技術等、感圧入力スクリーンを使用する入力デバイスとして機能し得る。
【0019】
UID112は、マイクロフォン技術、赤外線センサ技術、またはユーザ入力を受信する際に使用するための他の入力デバイス技術を使用する入力デバイスとして機能し得る。たとえば、UID112は、内蔵されたマイクロフォン技術を使用して、タスクを完了するためにUIモジュール120および/またはローカルアシスタントモジュール122Aが処理する声入力を検出し得る。別の例として、UID112は、コンピューティングデバイス110のユーザから触覚入力を受け取ることができる感圧ディスプレイを含み得る。UID112は、ユーザからの1つまたは複数のジェスチャ(たとえば、ユーザが、指またはスタイラスペンでUID112の1つまたは複数の場所に触れるか、または指し示すこと)を検出することにより、触覚入力を示すインジケーションを受け取り得る。
【0020】
UID112は、出力(たとえば、表示)デバイスとして機能し、出力をユーザに提示し得る。UID112は、液晶ディスプレイ(LCD)、ドットマトリックスディスプレイ、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、電子インク等、またはコンピューティングデバイス110のユーザに可視情報を出力できる同様のモノクロまたはカラーディスプレイのような1つまたは複数の任意のディスプレイデバイスを使用する出力デバイスとして機能し得る。UID112は、スピーカ技術、触覚フィードバック技術、またはユーザへの情報の出力の際に使用する他の出力デバイス技術を使用する出力デバイスとして機能し得る。UID112は、ローカルアシスタントモジュール122Aおよび/またはリモートアシスタントモジュール122Bによって提供される仮想的なアシスタントに関連するユーザインターフェースを提示し得る。UID112は、コンピューティングプラットフォーム、オペレーティングシステム、アプリケーション、および/または、コンピューティングデバイス110において実行される、および/または、そこからアクセス可能なサービス(たとえば、電子メール、チャット、オンラインサービス、電話、ゲーム等)の他の機能に関連するユーザインターフェースを提示し得る。
【0021】
UIモジュール120は、UID112、および、UID112を介してアシスタントサービスを提供するためにデジタルアシスタントシステム160とインタラクトすることを含むコンピューティングデバイス110の他のコンポーネントとのユーザインタラクションを管理し得る。UIモジュール120は、コンピューティングデバイス110のユーザが、UID112において出力を見る、および/または、入力を提供すると、UID112にユーザインターフェースを出力させ得る。UIモジュール120およびUID112は、ユーザが、異なる時間に、ユーザおよびコンピューティングデバイス110が別の場所にいる場合、ユーザインターフェースとインタラクトするときに、ユーザから入力の1つまたは複数を示すインジケーション(たとえば、声入力、ジェスチャ入力等)を受け取り得る。UIモジュール120およびUID112は、UID112で検出された入力を解釈し、たとえば、コンピューティングデバイス110に機能を実行させるために、UID112で検出された入力に関する情報を、ローカルアシスタントモジュール122Aおよび/または1つまたは複数の他の関連プラットフォーム、オペレーティングシステム、アプリケーション、および/または、コンピューティングデバイス110において実行するサービスへ中継し得る。
【0022】
UIモジュール120は、コンピューティングデバイス110、および/または、システム160、180等の1つまたは複数のリモートコンピューティングシステムで実行している1つまたは複数の関連プラットフォーム、オペレーティングシステム、アプリケーション、および/またはサービスから、情報および命令を受信し得る。さらに、UIモジュール120は、コンピューティングデバイス110との出力(たとえば、グラフィック、光の閃光、音、触覚応答等)を生成するために、1つまたは複数の関連プラットフォーム、オペレーティングシステム、アプリケーション、および/またはコンピューティングデバイス110において実行されるサービスと、コンピューティングデバイス110の様々な出力デバイス(たとえば、スピーカ、LEDインジケータ、オーディオまたは触覚出力デバイス等)の間の仲介として動作し得る。
【0023】
検索モジュール182は、検索モジュール182が(たとえば、コンピューティングデバイス110に関連付けられたコンテキスト情報に基づいて)自動的に生成する、または、検索モジュール182が、デジタルアシスタントシステム160から、またはコンピューティングデバイス110から(たとえば、コンピューティングデバイス110のユーザに代わって仮想的なアシスタントが完了するタスクの一部として)受け取る、検索クエリに関連すると判定される情報を求める検索を実行し得る。検索モジュール182は、検索クエリに基づいてインターネット検索を実行し、(たとえば、ローカルに、または検索サーバシステム180にリモートに記憶されている)様々な情報ソースの中から、検索クエリに関連する情報(たとえば、天気または交通状況、ニュース、株価、スポーツスコア、ユーザスケジュール、交通スケジュール、小売価格等)を特定し得る。検索を実行した後、検索モジュール182は、検索から返された情報(たとえば、検索結果)を、デジタルアシスタントシステム160またはコンピューティングデバイス110に出力し得る。
【0024】
コンピューティングデバイス110のローカルアシスタントモジュール122Aと、デジタルアシスタントシステム160のリモートアシスタントモジュール122Bとはそれぞれ、ユーザのための様々なタスクを実行するように構成されたアシスタントを自動的に実行するために、本明細書に説明された同様の機能を実行し得る。リモートアシスタントモジュール122Bおよびユーザ情報データストア124Bは、例示的な仮想的なアシスタントのサーバ側またはクラウドの実施を表し、ローカルアシスタントモジュール122Aおよびユーザ情報データストア124Aは、例示的な仮想的なアシスタントのクライアント側またはローカルな実施を表す。
【0025】
モジュール122Aおよび122B(集合的に「アシスタントモジュール122」)はおのおの、コンピューティングデバイス110のユーザ等の個人のためのタスクまたはサービスを実行できるインテリジェントパーソナルアシスタントとして実行するように構成されたそれぞれのソフトウェアエージェントを含み得る。アシスタントモジュール122は、(たとえば、UID112で検出された)ユーザ入力、(たとえば、コンテキストに基づく)位置認識、および/または、他の情報(たとえば、天気または交通状況、ニュース、株価、スポーツスコア、ユーザスケジュール、交通スケジュール、小売価格等)にアクセスする能力に基づいて、(たとえば、コンピューティングデバイス110、デジタルアシスタントシステム160にローカルに記憶されているか、または、検索サーバシステム180によって提供される検索サービスを介して取得された)様々な情報ソースから、これらのタスクまたはサービスを実行し得る。アシスタントモジュール122によって提供されるアシスタントは、アシスタントが多種多様なタスクを実行できるという点で、汎用アシスタントと見なされ得る。アシスタントモジュール122は、人工知能および/または機械学習技術を実行して、ユーザに代わって1つまたは複数のタスクを、自動的に特定および完了し得る。
【0026】
アシスタントモジュール122によって提供されるそれぞれのアシスタントは、コンピューティングデバイス110のユーザの口頭の、すなわち、話された要求を満たすための動作を実行する過程で、1つまたは複数のタスクを実行するように構成され得る。たとえば、アシスタントモジュール122によって提供されるアシスタントは、コンピューティングデバイス110の1つまたは複数のマイクロフォンで、(たとえば、「明日の夜7:30にLa'French Spotで4人の予約をする」のように、)特定のタスクの実行を要求するコンピューティングデバイス110のユーザの言葉に対応する音響入力(たとえば、オーディオデータ)を受け取り得る。
【0027】
アシスタントモジュール122によって提供されるアシスタントは、オーディオデータを分析して、話された言葉に対応するタスクを特定し得る。たとえば、アシスタントモジュール122によって提供されるアシスタントは、音声認識を利用して、「明日の夜7時30分にLa'French Spotで4人の予約をする」と話された言葉が、パーティーサイズ:4、日付:明日、時間:午後7時30分、場所:La'French Spotからなるパラメータを用いる予約タスクに対応するかを判定し得る。
【0028】
いくつかの例では、特定されたタスクの完了は、1つまたは複数のサブタスクの完了を必要とし得る。いくつかの例示的なサブタスクは、コンピューティングデバイス110のユーザ以外の人と(たとえば、合成声を使用して電話をかけることによって)インタラクトすること、予約をすること、チケットを購入すること、計算、1つまたは複数のコンピューティングシステムとインタラクトすること、検索クエリを実行すること、カレンダイベントを作成または変更すること等を含むがこれらに限定されない。たとえば、予約タスクを完了するには、検索クエリを実行して、要求しているレストランを特定する第1のサブタスクと、特定したレストランで実際に予約を行う第2のサブタスクとが必要になる場合がある。特定のタスクの完了が要求元のユーザに容易に明らかではないようないくつかの例では(たとえば、要求元のユーザの近くで何かが物理的に移動または変化するホームオートメーションアクションとは対照的に)、アシスタントは、タスクが完了したことを、要求元のユーザに通知するサブタスクを実行し得る。たとえば、予約タスクは、予約が行われたことを、要求元のユーザに通知する第3のサブタスクを含み得る。
【0029】
アシスタントモジュール122によって提供されるアシスタントは、特定されたタスクを実行し得る。たとえば、予約の例を続けると、アシスタントモジュール122によって提供されるアシスタントは、ユーザの現在の場所に近い(または、アシスタントが、予約時間においてユーザが移動していると予測するのであれば、ユーザの予測された場所に近い)「La'French Spot」と呼ばれるレストランを発見する要求を、検索サーバシステム180に出力することにより、この要求におけるレストランを特定するサブタスクを実行し得る。レストランを特定した後、アシスタントモジュール122によって提供されるアシスタントは、特定されたレストランで実際に予約を行うサブタスクを実行し得る。一例として、特定されたレストランが、アシスタントによってアクセス可能な電子予約システムを(たとえば、ネットワーク130を介して)使用する場合、アシスタントは、電子予約システムを介して予約要求を電子的に発行し得る。別の例として、アシスタントモジュール122によって提供されるアシスタントは、特定されたレストランに(たとえば、検索サーバシステム180によって特定された連絡先情報を使用して)電話をかけ得る。アシスタントが実際に予約を行うサブタスクを完了すると、アシスタントは、予約が行われたことを示すインジケーションを、要求元のユーザに出力し得る。たとえば、アシスタントは、コンピューティングデバイス110の1つまたは複数のスピーカから、「明日の午後7時30分にLa'French Spotでの4人の予約が確認されました」と述べる合成声データを出力させ得る。
【0030】
いくつかの例では、アシスタントモジュール122によって提供されるアシスタントは、特定されたタスクの実行を即時的に完了できない場合がある。たとえば、アシスタントモジュール122によって提供されるアシスタントは、しきい時間長さ(たとえば、500ミリ秒、1秒、2秒、5秒、10秒、30秒等)内で特定されたタスクの実行を完了(または、特定されたタスクのすべてのサブタスクの実行を完了)できない場合がある。言い換えると、ユーザが、話された言葉を提供したときと、アシスタントが、話された言葉に基づいて特定されたタスクの実行を完了できるときとの間に遅延が存在し得る。遅延の間、ユーザは、アシスタントモジュール122によって提供されるアシスタントが機能していないか、または、元の要求を受け取っていなかったことを懸念する場合がある。したがって、ユーザは言葉を再度述べることがあり、それにより、アシスタントモジュール122によって提供されるアシスタントに、重複タスクを実行させ得るか、および/または、新たな言葉が、追加のアクションを必要としない元の言葉の繰り返しであるか、新たなタスクを実行する要求であるかを判定する必要があり得る。
【0031】
本開示の1つまたは複数の技術によれば、タスクの完全な実行が即時的に(たとえば、設定可能なしきい時間長さ内に)実行できない場合、アシスタントモジュール122によって提供されるアシスタントは、タスクの完全な実行が即時的ではないことを示すインジケーションを出力し得る。たとえば、アシスタントモジュール122によって提供されるアシスタントは、コンピューティングデバイス110に動作可能に接続された1つまたは複数のスピーカによる再生のために、タスクの完全な実行が即時的ではないことをユーザに通知する合成声データを出力し得る。このように、応答が遅延することをユーザに通知せずに、単にタスクを実行するのとは対照的に、アシスタントモジュール122によって提供されるアシスタントは、ユーザが言葉を再度述べることを阻止し得る。ユーザが言葉を再度述べることを阻止することにより、アシスタントモジュール122によって提供されるアシスタントは、重複タスクの実行を回避し、言葉が繰り返しであるのか、または、実行されるべき新たなタスクであるのかを判定することを回避することができ、これにより、(たとえば、処理要件および/または電力消費を低減することにより)アシスタントモジュール122によって提供されるアシスタントの機能を向上し得る。
【0032】
アシスタントモジュール122によって提供されるアシスタントは、タスクの完全な実行がしきい時間長さ(たとえば、500ミリ秒、1秒、2秒、5秒、10秒、30秒等)よりも長くかかる場合、タスクの完全な実行は即時的ではないと判定し得る。アシスタントは、特定されたタスクの完全な実行に必要な推定時間長さ、特定されたタスクのタイプ等を含むがこれらに限定されない多種多様な要因に基づいて、タスクの完全な実行が、しきい時間長さよりも長くかかるかを判定し得る。
【0033】
一例として、アシスタントモジュール122によって提供されるアシスタントは、タスクの完全な実行のために必要な推定時間長さを判定し得る。推定時間長さが、しきい時間長さよりも長い場合、アシスタントモジュール122によって提供されるアシスタントは、タスクの完全な実行が即時的ではないと判定し得る。いくつかの例では、アシスタントは、特定されたタスクと同じタイプのタスクの完全な実行の履歴時間に基づいて推定時間長さを判定し得る。たとえば、特定されたタスクが、人気のあるチケットブローカウェブサイトからチケットを予約することである場合、アシスタントは、過去に人気のあるチケットブローカウェブサイトからチケットを予約するのにどれくらい時間がかかったのかに基づいて、特定されたタスクの完全な実行に必要な推定時間長さを判定し得る。いくつかの例では、アシスタントは、追加のコンテキスト情報に基づいて、推定時間長さを判定し得る。たとえば、特定されたタスクが、人気のあるチケットブローカウェブサイトからチケットを予約することである場合、アシスタントは、チケットのリリース日、特定のグループ/行動/活動の人気、チケットブローカによって示される待ち時間、待ち行列の長さ等のうちの1つまたは複数に基づいて、推定時間長さを判定し得る。
【0034】
別の例として、アシスタントは、タスク(または構成サブタスク)が即時的な実行のために適格ではないと判定することに応じて、タスクの完全な実行が、しきい時間長さよりも長くかかると判定し得る。たとえば、(たとえば、1つまたは複数のタスクの実行が必ずしも即時的に実行できない場合があるため)1つまたは複数のタスクが、即時的な実行のために適格ではないとあらかじめ判定され得る。アシスタントモジュール122によって提供されるアシスタントによってアクセス可能なタスクデータストアは、どのタスクが即時的な実行のために適格ではないのかを示し得る。即時的な実行のために適格ではない可能性のあるタスクのいくつかの例は、コンピューティングデバイスのユーザ以外の人とのインタラクト、予約、チケットの購入、(たとえば、大規模な機械学習モデルを使用する)大規模な計算を必要とするタスク、低速であると事前に判定された1つまたは複数のコンピューティングシステムとのインタラクト、および(たとえば、チケットが実際に発売されるまで待たなければならず、現在進行中のスポーツゲームの最終スコアを提供する等)将来のイベントの発生を必要とするタスクを含むが、これらに限定されない。前述のように、アシスタントによるタスクの完全な実行は、多数のサブタスクの実行を含み得る。そのため、特定のタスクの1つまたは複数のサブタスクが、即時的な実行のために適格ではない場合、アシスタントは、特定のタスクの完全な実行には、しきい長さよりも長くかかると判定し得る。
【0035】
いくつかの例では、しきい時間長さ(たとえば、タスクの完全な実行が即時的ではないかを判定するために使用されるしきい値)は、ユーザ調整可能ではない場合がある。いくつかの例では、しきい時間長さは、ユーザ調整可能であり得る。たとえば、ユーザは、しきい時間長さを指定する入力を提供し得る。そのため、異なるユーザに関連付けられたアシスタントは、タスクの完全な実行が即時的ではないことをそれぞれのユーザに警告するかを判定する場合、異なるしきい時間長さを使用し得る。
【0036】
いくつかの例では、しきい時間長さは、すべてのタスクまたはすべてのタスクタイプについて同じであり得る。たとえば、アシスタントは、注文チケットタスクの完全な実行が即時的であるかを判定するとき、および検索クエリタスクの完全な実行が即時的であるかを判定するとき、同じしきい値を使用し得る。いくつかの例では、しきい時間長さは、タスクに依存し得る。たとえば、アシスタントは、複雑なタスク(たとえば、注文チケットタスク)の完全な実行が、即時的であるかを判定するときに第1のしきい値を使用し、より単純なタスク(たとえば、検索クエリタスク)の完全な実行が即時的であるかを判定するときに(たとえば、第1のしきい値よりも短い)第2のしきい値を使用し得る。一例として、ユーザが、より複雑なタスクの実行のために、ある程度の遅延を予期している場合、複雑なタスクの実行が、即時的ではない(たとえば、「動作中」との合成音声)と判定された場合、アシスタントは、異なるインジケーション(すなわち、遅延通知)を出力し得る一方、貧弱なインターネット接続またはダウンしたウェブサイトの場合におけるように、さほど時間がかからないと判定された、より単純なタスクの場合、アシスタントは、遅延通知をトリガするために、より短いしきい値を使用し得る。
【0037】
アシスタントモジュール122によって提供されるアシスタントは、実行中のタスクの変更を可能にし得る。たとえば、コンピューティングデバイス110のユーザに、タスクの完全な実行は即時的ではないが、タスクの実行を実際に完了する前であることを通知する合成声データの出力後、アシスタントは、コンピューティングデバイス110のユーザが、現在実行されているタスクの実行の変更を要求する言葉(たとえば、「5人に予約を変更する」)に対応する音響入力(たとえば、オーディオデータ)を、コンピューティングデバイス110の1つまたは複数のマイクロフォンで受け取り得る。いくつかの変更例は、予約またはチケット購入の時間および/または日付の変更、予約またはチケット購入に含まれる人数の変更を含むが、これらに限定されない。
【0038】
次に、アシスタントは、言葉に基づいてタスクの実行を変更し得る。たとえば、アシスタントが現在、予約しているレストランと通話中である場合、アシスタントは、レストランに関連付けられたデバイスに動作可能に接続された1つまたは複数のスピーカによる再生のために、(元々の4人ではなく)5人の予約を要求する予約を取っているレストランの従業員との会話の一部として合成声データを出力し得る。
【0039】
アシスタントモジュール122によって提供されるアシスタントは、現在実行されているタスクのステータスをユーザがチェックすることを可能にし得る。一例として、タスクの完全な実行は即時的ではないが、タスクの実行を実際に完了する前であることをコンピューティングデバイス110のユーザに通知する合成声データを出力した後、アシスタントは、コンピューティングデバイス110のユーザが、現在実行されているタスクの実行のステータスを要求している言葉(たとえば、「チケットはもう予約されています」)に対応する音響入力(たとえば、オーディオデータ)を、コンピューティングデバイス110の1つまたは複数のマイクロフォンで受け取り得る。ステータスを要求する言葉を受け取ることに応じて、アシスタントは、コンピューティングデバイス110に動作可能に接続された1つまたは複数のスピーカによる再生のために、タスクの実行のステータスをユーザに通知する合成声データを出力し得る。いくつかの例では、タスクの実行のステータスをユーザに通知する合成声データは、タスクの実行が完了するまで、アシスタントが、どれだけ長い時間予測するのかを示す推定値(たとえば、「約5分以上」)を含み得る。別の例として、アシスタントモジュール122によって提供されるアシスタントは、タスクの実行のステータスの定期的な更新を受け取りたいかをユーザに問い合わせ得る。たとえば、アシスタントモジュール122によって提供されるアシスタントは、「数時間ごとに更新を提供しなければなりませんか?」のような合成声データを出力し得る。別の例として、アシスタントモジュール122によって提供されるアシスタントは、コンピューティングデバイス110に対して、アシスタントがタスクを実行していることを示す視覚的なインジケータを表示させ得る。たとえば、タスクを実行している間(たとえば、タスクの完全な実行が即時的ではないことをコンピューティングデバイス110のユーザに通知した後)、アシスタントモジュール122によって提供されるアシスタントは、コンピューティングデバイス110に対して、アシスタントがタスクに関して動作中であることを示すライトまたは他の視覚的なインジケータをオンさせ得る。
【0040】
アシスタントモジュール122によって提供されるアシスタントは、ユーザが、現在実行されているタスクをキャンセルまたは終了することを可能にし得る。一例として、現在実行中のタスクのステータスをチェックした後、タスクが十分早く完了しないとユーザが判断した場合、ユーザは口頭で、またはそうでなければ、コンピューティングデバイス110に入力を提供して、アシスタントモジュール122によって提供されるアシスタントに対して、タスクをキャンセルまたは終了させ得る。別の例として、アシスタントモジュール122によって提供されるアシスタントが、現在実行中のタスクの完全な実行に時間がかかりすぎると判定した場合(たとえば、タスクが無関係になるまで完全な実行が行われない場合)、アシスタントは、アシスタントにタスクの実行を継続させたいのか、または、タスクをキャンセルまたは終了させたいのかをユーザに尋ねる合成声データを出力し得る。別の例として、タスクを実行する前に、アシスタントモジュール122によって提供されるアシスタントが、タスクの実行を完了するための推定時間長さが長すぎる(たとえば、しきい値よりも長い)と判定した場合、アシスタントは、推定時間長さを示し、アシスタントに対して、タスクを実行させたいのか、またはタスクをキャンセルさせたいのかをユーザに尋ねる、合成声データを出力し得る。
【0041】
リモートアシスタントモジュール122Bおよびローカルアシスタントモジュール122Aによって提供されるそれぞれのアシスタントは、コンピューティングデバイス110のユーザとの会話をサポートする動作を実行する過程で、会話中に取得された情報の個人記録を自動的に作成、生成、または維持し、これら個人記録を、ユーザに固有の値として、構造化されたセマンティックな方式で、ユーザ情報データストア124Bおよびユーザ情報データストア124Aとしてそれぞれ記憶する。データストア124Bおよび124Aは、それぞれ、リモートアシスタントモジュール122Bおよびローカルアシスタントモジュール122Aによって実行されるそれぞれのアシスタントが、個人情報(たとえば、ユーザに固有の値)に迅速にアクセスして、現実世界のタスクや仮想的なタスクを完了するか、そうでなければコンピューティングデバイス110のユーザの即時的なまたは将来のニーズに応じることを可能にし得る。説明を簡単にするために、本開示の技術は、主にローカルアシスタントモジュール122Aによって実行されるという観点から説明される。
【0042】
アシスタントモジュール122Aおよび122Bは、アシスタントモジュール122Aおよび122Bがともに、または別々に、コンピューティングデバイス110に提供する仮想的なアシスタントサービスの一部として、ユーザ情報データストア124Aおよび124Bを維持し得る。アシスタントモジュール122によって提供されるアシスタントは、コンピューティングデバイス110のユーザとの会話をサポートするための動作を実行する過程で、会話から自動的に選別される情報の個人記録を維持し、これら個人記録を、構造化されたセマンティックな方式で、ユーザ情報データストア124Aおよび124Bとして記憶し得る。データストア124Aおよび124Bは、アシスタントモジュール122Aおよび122Bによって実行されるアシスタントが、個人情報に迅速にアクセスして、現実世界のタスクや、仮想的なタスクを完了するか、そうでなければコンピューティングデバイス110のユーザの即時的および/または将来のニーズに応じることを可能にし得る。
【0043】
アシスタントモジュール122Aおよび122Bは、そうするための明示的な許可を最初にユーザから受け取った後、コンピューティングデバイス110のユーザに関連付けられた個人記録のみを保持し得る。したがって、ユーザは、許可設定やオートメーションアクションの使用履歴を含む、ユーザに関する情報を、アシスタントがどのように収集および使用するのかに対する完全な制御を有し得る。たとえば、コンピューティングデバイス110のユーザに関連付けられた情報を保持する前に、アシスタントモジュール122Aおよび122Bは、UIモジュール120に対して、UID112を介してユーザインターフェースを提示させる。UID112は、ユーザにボックスを選択させ、ボタンをクリックさせ、声入力を述べさせるか、あるいはそうでなければ、ユーザの個人情報を収集し活用するために、アシスタントモジュール122Aおよび122Bのための明確で肯定的な同意として、アシスタントモジュール122Aおよび122Bによって解釈される特定の入力を、ユーザインターフェースへ提供させる。
【0044】
アシスタントモジュール122Aおよび122Bは、データストア124Aおよび124Bに個人情報を記憶する前に、ユーザの実際の識別情報を削除するために、個人記録として維持される情報を暗号化し得るか、さもなければ処理し得る。たとえば、情報は、データストア124Aおよび124Bに記憶されるときに、個人を特定可能な情報がユーザの個人記録から削除されるように、アシスタントモジュール122Aおよび122Bによって処理され得る。
【0045】
アシスタントモジュール122Aおよび122Bは、UIモジュール120に対して、UID112を介して、ユーザインターフェースを提示させ得、ここから、コンピューティングデバイス110のユーザは、データストア124Aおよび124Bに記憶された個人記録からの情報を変更または削除し得る。たとえば、ユーザインターフェースは、コンピューティングデバイス110のユーザが特定の個人情報を変更または削除するコマンドをアシスタントモジュール122Aおよび122Bに通信するための入力を提供できるエリアを提供し得る。このようにして、コンピューティングデバイス110のユーザは、データストア124Aおよび124Bでアシスタントモジュール122Aおよび122Bによって保持されている情報に対する完全な制御を有し得る。
【0046】
データストア124Aおよび124Bによって記憶された個人記録の各エントリは、ユーザのニーズを理解し、ユーザがタスクを完了するのを支援するために、現時点で必要な情報アシスタントモジュール122Aおよび122Bを発見するために、アシスタントモジュール122Aおよび122Bによって迅速に検討または解析され得る事前定義されたスキーマに関連付けられ得る。ユーザに固有の1つまたは複数の値として個人情報が記録されると、アシスタントモジュール122Aおよび122Bは、データストア124Aおよび124Bに記憶されている情報を迅速に使用して、タスクを完了できる。進行中のタスクがない場合、アシスタントモジュール122Aおよび122Bは、アシスタントが情報をどのように使用して、将来、ユーザを支援するのかの例をユーザに提供し得る。ユーザはその後、UID112において、アシスタントモジュール122Aおよび122Bに対して、この情報を失念または変更するように命令する入力を提供し得る。
【0047】
データストア124Aおよび124Bによって記憶される値は、テキスト値(たとえば、人の名前、場所の名前、エンティティの他のテキスト記述子)、数値(たとえば、年齢、身長、体重、他の生理学的データ、その他エンティティに関連付けられた数値情報)、またはユーザ固有の値へのポインタ(たとえば、ユーザのナレッジグラフ内のエンティティへのメモリ内の場所、アドレス帳内の連絡先へのメモリ内の場所等)であり得る。言い換えれば、ユーザに固有の値は、多くの形式を取り得、記録スキーマによって定義される個人記録の分野に固有であり得る。この値は、ユーザに固有の実際の情報を示し得るか、または、ユーザに固有の情報が取得され得る場所に対する参照であり得る。
【0048】
データストア124Aおよび124Bへのアクセスを有することにより、アシスタントモジュール122によって提供されるアシスタントは、ユーザに個別化されたと見なされ得る。たとえば、アシスタントモジュール122によって提供されるアシスタントは、他のユーザには一般に利用できない、要求元のユーザに固有の情報を使用して、タスクを実行することができる場合がある。
【0049】
図2は、本開示の1つまたは複数の態様に従って、例示的な仮想的なアシスタントを実行するように構成された例示的なコンピューティングデバイスを示すブロック図である。
図2のコンピューティングデバイス210は、
図1のコンピューティングデバイス110の例として以下に説明される。
図2は、コンピューティングデバイス210の1つの特定の例のみを示し、コンピューティングデバイス210の他の多くの例は、他の事例で使用され得、例示的なコンピューティングデバイス210に含まれるコンポーネントのサブセットを含み得るか、または
図2に示されていない追加のコンポーネントを含み得る。
【0050】
図2の例に示されるように、コンピューティングデバイス210は、ユーザインターフェースデバイス(UID)212、1つまたは複数のプロセッサ240、1つまたは複数の通信ユニット242、1つまたは複数の入力コンポーネント244、1つまたは複数の出力コンポーネント246、および1つまたは複数の記憶コンポーネント248を含む。UID212は、ディスプレイコンポーネント202、感圧入力コンポーネント204、マイクロフォンコンポーネント206、およびスピーカコンポーネント208を含む。コンピューティングデバイス210の記憶コンポーネント248は、UIモジュール220、アシスタントモジュール222、検索モジュール282、1つまたは複数のアプリケーションモジュール226、コンテキストモジュール230、ユーザ情報データストア224、ユーザ特定モジュール232、アクション特定モジュール234、および許可モジュール236を含む。
【0051】
通信チャネル250は、(物理的、通信的、および/または動作的な)コンポーネント間通信のためにコンポーネント212、240、242、244、246、および248のおのおのを相互接続し得る。いくつかの例では、通信チャネル250は、システムバス、ネットワーク接続、プロセス間通信データ構造、またはデータを通信するための他の任意の方法を含み得る。
【0052】
コンピューティングデバイス210の1つまたは複数の通信ユニット242は、1つまたは複数のネットワーク(たとえば、
図1のシステム100のネットワーク130)上でネットワーク信号を送信および/または受信することにより、1つまたは複数のワイヤおよび/またはワイヤレスネットワークを介して外部デバイス(たとえば、
図1のシステム100のデジタルアシスタントシステム160および/または検索サーバシステム180)と通信し得る。通信ユニット242の例は、ネットワークインターフェースカード(たとえば、イーサネット(登録商標)カード等)、光トランシーバ、無線周波数トランシーバ、GPS受信機、または情報を送信および/または受信できる他の任意のタイプのデバイスを含む。通信ユニット242の他の例は、短波無線、セルラーデータ無線、ワイヤレスネットワーク無線、ならびにユニバーサルシリアルバス(USB)コントローラを含み得る。
【0053】
コンピューティングデバイス210の1つまたは複数の入力コンポーネント244は、入力を受け取り得る。入力の例は、触覚、オーディオ、およびビデオ入力である。一例では、コンピューティングデバイス210の入力コンポーネント244は、感圧入力デバイス(たとえば、タッチ感知スクリーン、PSD)、マウス、キーボード、声応答システム、カメラ、マイクロフォン、または人間または機械からの入力を検出するための他の任意のタイプのデバイスを含む。いくつかの例では、入力コンポーネント244は、1つまたは複数のセンサコンポーネント、1つまたは複数の位置センサ(GPSコンポーネント、Wi-Fiコンポーネント、セルラーコンポーネント)、1つまたは複数の温度センサ、1つまたは複数の運動センサ(たとえば、加速度計、ジャイロ)、1つまたは複数の圧力センサ(たとえば、気圧計)、1つまたは複数の周囲光センサ、および1つまたは複数の他のセンサ(たとえば、赤外線近接センサ、湿度計センサ等)を含み得る。他のいくつかの非限定的な例を挙げると、他のセンサは、心拍センサ、磁力計、グルコースセンサ、嗅覚センサ、コンパスセンサ、ステップカウンタセンサを含み得る。
【0054】
コンピューティングデバイス110の1つまたは複数の出力コンポーネント246は、出力を生成し得る。出力の例は、触覚、オーディオ、およびビデオ出力である。一例では、コンピューティングデバイス210の出力コンポーネント246は、感圧ディスプレイ、サウンドカード、ビデオグラフィックアダプタカード、スピーカ、ブラウン管(CRT)モニタ、液晶ディスプレイ(LCD)、または人間または機械への出力を生成するための他の任意のタイプのデバイスを含む。
【0055】
コンピューティングデバイス210のUID212は、コンピューティングデバイス110のUID112と同様であってもよく、ディスプレイコンポーネント202、感圧入力コンポーネント204、マイクロフォンコンポーネント206、およびスピーカコンポーネント208を含む。ディスプレイコンポーネント202は、UID212によって情報が表示されるスクリーンであり得る一方、感圧入力コンポーネント204は、ディスプレイコンポーネント202における、および/または、近くのオブジェクトを検出し得る。スピーカコンポーネント208は、UID212によって可聴情報が再生されるスピーカであり得る一方、マイクロフォンコンポーネント206は、ディスプレイコンポーネント202および/またはスピーカコンポーネント208において、および/または、近くで提供される可聴入力を検出し得る。
【0056】
コンピューティングデバイス210の内部コンポーネントとして示されているが、UID212はまた、入力および出力を送信および/または受信するためにコンピューティングデバイス210とデータパスを共有する外部コンポーネントを表し得る。たとえば、一例では、UID212は、コンピューティングデバイス210の外部パッケージ内に配置され物理的に接続された、コンピューティングデバイス210の内蔵型コンポーネント(たとえば、モバイル電話のスクリーン)を表す。別の例では、UID212は、コンピューティングデバイス210のパッケージングまたはハウジングの外部に配置され、そこから物理的に分離されたコンピューティングデバイス210の外部コンポーネント(たとえば、コンピューティングデバイス210とワイヤおよび/またはワイヤレスデータパスを共有するモニタ、プロジェクタ等)を表す。
【0057】
1つの例示的な範囲として、感圧入力コンポーネント204は、ディスプレイコンポーネント202から2インチあるいはそれ以下内にある指またはスタイラス等のオブジェクトを検出し得る。感圧入力コンポーネント204は、オブジェクトが検出されたディスプレイコンポーネント202の位置(たとえば、[x、y]座標)を決定し得る。別の例示的な範囲では、感圧入力コンポーネント204は、ディスプレイコンポーネント202から6インチあるいはそれ以内のオブジェクトを検出することができ、他の範囲も可能である。感圧入力コンポーネント204は、容量性、誘導性、および/または光学認識技術を使用して、ユーザの指によって選択されたディスプレイコンポーネント202の位置を決定し得る。いくつかの例では、感圧入力コンポーネント204はまた、ディスプレイコンポーネント202に関して説明したように、触覚、オーディオ、またはビデオ刺激を使用してユーザに出力を提供する。
図2の例では、UID212は、(グラフィックユーザインターフェース等の)ユーザインターフェースを提示し得る。
【0058】
スピーカコンポーネント208は、コンピューティングデバイス210のハウジングに内蔵されたスピーカを備え得、いくつかの例では、コンピューティングデバイス210に動作可能に結合されたワイヤまたはワイヤレスヘッドフォンのセットに内蔵されたスピーカであり得る。マイクロフォンコンポーネント206は、UID212において、または、その付近で発生する可聴入力を検出し得る。マイクロフォンコンポーネント206は、様々なノイズキャンセル技術を実行して、バックグラウンドノイズを除去し、検出されたオーディオ信号からユーザの音声を分離し得る。
【0059】
コンピューティングデバイス210のUID212は、コンピューティングデバイス210のユーザからの入力として2次元および/または3次元ジェスチャを検出し得る。たとえば、UID212のセンサは、UID212のセンサのしきい距離内でのユーザの動き(たとえば、手、腕、ペン、スタイラス等の動き)を検出し得る。UID212は、2次元または3次元の動きのベクトル表現を決定し、ベクトル表現を、多次元を有するジェスチャ入力(たとえば、手振り、ピンチ、拍手、ペンストローク等)に相関させ得る。言い換えれば、UID212は、UID212が表示のための情報を出力するスクリーンまたは表面において、または、その近くで、ユーザがジェスチャする必要なく、多次元ジェスチャを検出し得る。代わりに、UID212は、UID212が表示のための情報を出力するスクリーンまたは表面の近くに配置されていても、配置されていなくてもよいセンサにおいて、または、その近くにおいて実行される多次元ジェスチャを検出し得る。
【0060】
1つまたは複数のプロセッサ240は、機能を実施し、および/または、コンピューティングデバイス210に関連付けられた命令を実行し得る。プロセッサ240の例は、アプリケーションプロセッサ、ディスプレイコントローラ、補助プロセッサ、1つまたは複数のセンサハブ、およびプロセッサ、処理ユニット、または処理デバイスとして機能するように構成された任意の他のハードウェアを含む。モジュール220、222、226、230、および282は、コンピューティングデバイス210の様々なアクション、動作、または機能を実行するためにプロセッサ240によって動作可能であり得る。たとえば、コンピューティングデバイス210のプロセッサ240は、プロセッサ240に対して動作モジュール220、222、226、230、および282を実行させる、記憶コンポーネント248によって記憶された命令を取得して実行し得る。命令は、プロセッサ240によって実行されると、コンピューティングデバイス210に対して、記憶コンポーネント248内に情報を記憶させ得る。
【0061】
コンピューティングデバイス210内の1つまたは複数の記憶コンポーネント248は、コンピューティングデバイス210の動作中に処理するための情報を記憶し得る(たとえば、コンピューティングデバイス210は、コンピューティングデバイス210における実行中にモジュール220、222、226、230、および282によってアクセスされるデータを記憶し得る)。いくつかの例では、記憶コンポーネント248はテンポラリメモリであり、記憶コンポーネント248の主な目的は、長期的な記憶ではないことを意味する。コンピューティングデバイス210上の記憶コンポーネント248は、揮発性メモリとして情報の短期的な記憶のために構成され、したがって、電源が切られた場合、記憶されたコンテンツを保持しない場合がある。揮発性メモリの例には、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、および当技術分野で知られている他の形態の揮発性メモリが含まれる。
【0062】
記憶コンポーネント248は、いくつかの例では、1つまたは複数のコンピュータ可読記憶媒体も含む。いくつかの例における記憶コンポーネント248は、1つまたは複数の非一過性のコンピュータ可読記憶媒体を含む。記憶コンポーネント248は、揮発性メモリによって通常記憶されるよりも大量の情報を記憶するように構成され得る。記憶コンポーネント248はさらに、不揮発性メモリ空間として情報の長期記憶のために構成され、電源オン/オフサイクル後に情報を保持し得る。不揮発性メモリの例には、磁気ハードディスク、光ディスク、フロッピーディスク、フラッシュメモリ、または電気的にプログラム可能なメモリ(EPROM)または電気的に消去可能およびプログラム可能な(EEPROM)メモリの形態を含む。記憶コンポーネント248は、モジュール220、222、226、230、および282およびデータストア224に関連付けられたプログラム命令および/または情報(たとえば、データ)を記憶し得る。記憶コンポーネント248は、モジュール220、222、226、230、および282およびデータストア224に関連付けられたデータまたは他の情報を記憶するように構成されたメモリを含み得る。
【0063】
UIモジュール220は、
図1のコンピューティングデバイス110のUIモジュール120のすべての機能を含み得、たとえば、コンピューティングデバイス110のユーザとアシスタントモジュール222との間のインタラクションを容易にするために、コンピューティングデバイス210がUID212で提供するユーザインターフェースを管理するためのUIモジュール120と同様の動作を実行し得る。たとえば、コンピューティングデバイス210のUIモジュール220は、アシスタントユーザインターフェースを出力する(たとえば、オーディオを表示または再生する)ための命令を含む情報をアシスタントモジュール222から受け取り得る。UIモジュール220は、通信チャネル250を介してアシスタントモジュール222から情報を受け取り、そのデータを使用してユーザインターフェースを生成し得る。UIモジュール220は、通信チャネル250を介してディスプレイまたは可聴出力コマンドおよび関連データを送信して、UID212に対して、UID212においてユーザインターフェースを提示させ得る。
【0064】
いくつかの例では、UIモジュール220は、UID212において検出された1つまたは複数のユーザ入力を示すインジケーションを受け取り、ユーザ入力に関する情報をアシスタントモジュール222に出力し得る。たとえば、UID212は、ユーザからの声入力を検出し、声入力に関するデータをUIモジュール220に送信し得る。UIモジュール220は、さらなる解釈のために、声入力を示すインジケーションをアシスタントモジュール222に送信し得る。アシスタントモジュール222は、声入力に基づいて、検出された声入力が、アシスタントモジュール222が1つまたは複数のタスクを実行するためのユーザ要求を表すことを判定し得る。
【0065】
アプリケーションモジュール226は、ユーザに情報を提供し、および/または、タスクを実行するために、アシスタントモジュール222等のアシスタントによってアクセスされ得るコンピューティングデバイス210において実行され、そこからアクセス可能な様々な個々のアプリケーションおよびサービスすべてを表す。コンピューティングデバイス210のユーザは、1つまたは複数のアプリケーションモジュール226に関連付けられたユーザインターフェースとインタラクトして、コンピューティングデバイス210に対して、機能を実行させ得る。アプリケーションモジュール226の多数の例が存在し得、フィットネスアプリケーション、カレンダアプリケーション、検索アプリケーション、地図またはナビゲーションアプリケーション、交通サービスアプリケーション(たとえば、バスまたは列車追跡アプリケーション)、ソーシャルメディアアプリケーション、ゲームアプリケーション、電子メールアプリケーション、チャットまたはメッセージングアプリケーション、インターネットブラウザアプリケーション、またはコンピューティングデバイス210で実行され得る他のすべてのアプリケーションを含み得る。
【0066】
コンピューティングデバイス210の検索モジュール282は、コンピューティングデバイス210に代わって統合検索機能を実行し得る。検索モジュール282は、UIモジュール220や、1つまたは複数のアプリケーションモジュール226および/またはアシスタントモジュール222によって起動され、それらに代わって検索動作を実行し得る。起動されると、検索モジュール282は、検索クエリを生成し、様々なローカルおよびリモート情報ソースにわたって生成された検索クエリに基づいて検索を実行する等の検索機能を実行し得る。検索モジュール282は、実行された検索の結果を、起動コンポーネントまたはモジュールに提供し得る。すなわち、検索モジュール282は、起動コマンドに応じて、検索結果をUIモジュール220、アシスタントモジュール222、および/またはアプリケーションモジュール226に出力し得る。
【0067】
コンテキストモジュール230は、コンピューティングデバイス210に関連付けられたコンテキスト情報を収集して、コンピューティングデバイス210のコンテキストを定義し得る。具体的には、コンテキストモジュール230は、特定の時間におけるコンピューティングデバイス210の物理的および/または仮想的な環境の特性、および、コンピューティングデバイス210のユーザを特定するコンピューティングデバイス210のコンテキストを定義するために、主にアシスタントモジュール222によって使用される。
【0068】
本開示を通して使用されるように、「コンテキスト情報」という用語は、コンピューティングデバイス、およびコンピューティングデバイスのユーザが、特定の時間に経験し得る仮想的および/または物理的な環境特性を定義するために、コンテキストモジュール230によって使用され得る任意の情報を記述するために使用される。コンテキスト情報の例は多数あり、コンピューティングデバイス210のセンサ(たとえば、位置センサ、加速度計、ジャイロ、気圧計、周囲光センサ、近接センサ、マイクロフォン、および他のセンサ)によって取得されたセンサ情報、コンピューティングデバイス210の通信モジュールによって送受信された通信情報(たとえば、テキストベースの通信、可聴通信、ビデオ通信等)、およびコンピューティングデバイス210で実行されるアプリケーションに関連付けられたアプリケーション使用情報(たとえば、アプリケーションに関連付けられたアプリケーションデータ、インターネット検索履歴、テキスト通信、声およびビデオ通信、カレンダ情報、ソーシャルメディア投稿および関連情報等)を含み得る。コンテキスト情報のさらなる例は、コンピューティングデバイス210の外部にある送信デバイスから取得された信号および情報を含む。たとえば、コンテキストモジュール230は、無線またはコンピューティングデバイス210の通信ユニットを介して、業者の物理的位置において、または、その近くに位置する外部ビーコンから送信されたビーコン情報を受信し得る。
【0069】
アシスタントモジュール222は、
図1のコンピューティングデバイス110のローカルアシスタントモジュール122Aのすべての機能を含み得、アシスタントを提供するためのローカルアシスタントモジュール122Aと同様の動作を実行し得る。いくつかの例では、アシスタントモジュール222は、ローカルで(たとえば、プロセッサ240において)実行して、アシスタント機能を提供し得る。いくつかの例では、アシスタントモジュール222は、コンピューティングデバイス210にアクセス可能なリモートアシスタントサービスへのインターフェースとして作用し得る。たとえば、アシスタントモジュール222は、
図1のデジタルアシスタントシステム160のリモートアシスタントモジュール122Bへのインターフェースまたはアプリケーションプログラミングインターフェース(API)であり得る。アシスタントモジュール222は、コンテキストモジュール230および/または検索モジュール282によって提供される任意の情報に加えて、データストア224に記憶された情報に依存して、アシスタントタスクを実行し得る。
【0070】
アシスタントモジュール222によって提供されるアシスタントは、コンピューティングデバイス210のユーザの口頭の、すなわち話された要求を満たすために、動作を実行する過程で1つまたは複数のタスクを実行するように構成され得る。たとえば、アシスタントモジュール222によって提供されるアシスタントは、コンピューティングデバイス210の1つまたは複数のマイクロフォンで、コンピューティングデバイス210のユーザが特定のタスクの実行を要求する言葉に対応する音響入力(たとえば、オーディオデータ)を受け取り得る。アシスタントモジュール222によって提供されるアシスタントは、オーディオデータを分析して、話された言葉に対応するタスクを特定し得る。
【0071】
本開示の1つまたは複数の技術によれば、タスクの完全な実行が即時的に(たとえば、設定可能なしきい時間長さ内に)実行されない場合、アシスタントモジュール222によって提供されるアシスタントは、タスクの完全な実行が即時的ではないことを示すインジケーションを出力し得る。たとえば、アシスタントモジュール222によって提供されるアシスタントは、コンピューティングデバイス210に動作可能に接続された1つまたは複数のスピーカによる再生のために、タスクの完全な実行が即時的ではないことをユーザに通知する合成声データを出力し得る。このように、応答が遅延することをユーザに通知せずに、単にタスクを実行するのとは対照的に、アシスタントモジュール222によって提供されるアシスタントは、ユーザが言葉を再度述べることを阻止し得る。ユーザが言葉を再度述べることを阻止することにより、アシスタントモジュール222によって提供されるアシスタントは、重複タスクの実行を回避し、言葉が繰り返しであるのか、または、実行されるべき新たなタスクであるのかを判定することを回避し、これにより、アシスタントモジュール222によって提供されるアシスタントの機能を(たとえば、処理要件および/または電力消費を低減することにより)向上し得る。
【0072】
図3は、本開示の1つまたは複数の態様に従って、例示的な仮想的なアシスタントを実行する1つまたは複数のプロセッサによって実行される例示的な動作を示すフローチャートである。
図3は、
図1のシステム100の文脈で以下に説明される。たとえば、ローカルアシスタントモジュール122Aは、コンピューティングデバイス110の1つまたは複数のプロセッサで実行中に、本開示の1つまたは複数の態様に従って、動作302〜312のうちの1つまたは複数を実行し得る。また、いくつかの例では、リモートアシスタントモジュール122Bは、デジタルアシスタントシステム160の1つまたは複数のプロセッサで実行中に、本開示の1つまたは複数の態様に従って、動作302〜312を実行し得る。例示のみを目的として、
図3は、
図1のコンピューティングデバイス110の文脈内で以下に説明される。
【0073】
動作中、コンピューティングデバイス110は、コンピューティングデバイス110の1つまたは複数のマイクロフォンによって生成されたオーディオデータを受け取り得る。オーディオデータは、話された言葉を表す(302)。たとえば、話されたトリガフレーズの認識に応じて、コンピューティングデバイス110は、コンピューティングデバイス110のユーザによって提供される口頭の言葉を表すオーディオデータを受け取り得る。
【0074】
コンピューティングデバイス110は、オーディオデータに基づいて、実行されるべきタスクを特定し得る(304)。たとえば、言葉が「私と妻に、私たちの記念日にLes Joyeuxの遅い時間の公演のチケットを予約して下さい」とユーザが言ったことである場合、コンピューティングデバイス110は、記念日を特定するサブタスクで予約チケットタスクを特定し、特定された記念日にLes Joyeuxの遅い時間の公演の時間を特定し、チケットを予約し、ユーザへ予約を確認し得る。
【0075】
コンピューティングデバイス110は、タスクの完全な実行が、しきい時間長さよりも長くかかるかを判定し得る(306)。一例として、コンピューティングデバイス110は、タスクの完全な実行(たとえば、すべてのサブタスクの完全な実行)の推定時間長さを判定し得る。推定時間長さがしきい時間長さを超える場合、コンピューティングデバイスは、タスクの実行がしきい時間長さよりも長くかかると判定し得る。別の例として、コンピューティングデバイス110は、タスク、またはサブタスクのいずれかが、即時的な実行に適格ではないかを判定し得る。Les Joyeuxの例に対する上記予約チケットでは、コンピューティングデバイス110は、実際にチケットを予約するサブタスクが、計算機アシスタントが、劇場の従業員とインタラクトすることを含み、コンピューティングデバイス110のユーザ以外の人とのインタラクションを含むタスクまたはサブタスクは、即時的な実行のために適格ではないと判定し得る。
【0076】
タスクの完全な実行が、しきい時間長さよりも長くかかると判定すること(308の「はい」分岐)に応じて、コンピューティングデバイス110は、コンピューティングデバイス110に動作可能に接続された1つまたは複数のスピーカによる再生のために、タスクの完全な実行が即時的ではないことをユーザに通知する合成声データを出力し得る。たとえば、合成声データには、「私はチケットの予約を担当しており、予約が完了したらお知らせします」と述べ得る。
【0077】
いくつかの例では、タスクの完全な実行が即時的ではないことをユーザに通知する合成声データは、言葉に対する部分的または低い信頼性の応答を示し、計算機アシスタントが将来、完全なまたはより高い信頼性の応答でフォローアップする合成声データであり得る。たとえば、タスクが検索クエリである場合、合成声データは、検索クエリに対する部分的または低い信頼性の応答を示し得る。
【0078】
コンピューティングデバイス110は、タスクを実行し得る(310)。たとえば、コンピューティングデバイス110は、ユーザ情報データストア124Aを参照して、ユーザの記念日が6月9日であることを判定し得、検索サーバシステム180に対して、判定された記念日のいつLes Joyeuxが公演されるのかを見つけるようにとの要求を出力し得、判定された記念日における最も遅い公演のチケットを予約し得、ユーザに予約を確認し得る。
【0079】
図4は、本開示の1つまたは複数の態様に従って、例示的な仮想的なアシスタントを実行するように構成された例示的なコンピューティングシステムを示すブロック図である。
図4のアシスタントサーバシステム460は、
図1のデジタルアシスタントシステム160の例として以下に説明される。
図4は、アシスタントサーバシステム460の1つの特定の例を示しているにすぎず、アシスタントサーバシステム460の他の多くの例は、他の事例で使用され、例示的なアシスタントサーバシステム460に含まれるコンポーネントのサブセットを含み得るか、または、
図4に示されていない追加のコンポーネントを含み得る。
【0080】
図4の例に示すように、アシスタントサーバシステム460は、1つまたは複数のプロセッサ440、1つまたは複数の通信ユニット442、および1つまたは複数の記憶コンポーネント448のユーザを含める。記憶コンポーネント448は、アシスタントモジュール422、検索モジュール482、コンテキストモジュール430、およびユーザ情報データストア424を含む。
【0081】
プロセッサ440は、
図2のコンピューティングシステム210のプロセッサ240に類似している。通信ユニット442は、
図2のコンピューティングシステム210の通信ユニット242に類似している。記憶デバイス448は、
図2のコンピューティングシステム210の記憶デバイス248に類似している。通信チャネル450は、
図2のコンピューティングシステム210の通信チャネル250に類似し、したがって、コンポーネント間通信のためにコンポーネント440、442、および448のおのおのを相互接続し得る。いくつかの例では、通信チャネル450は、システムバス、ネットワーク接続、プロセス間通信データ構造、またはデータを通信するための他の任意の方法を含み得る。
【0082】
アシスタントサーバシステム460の検索モジュール482は、コンピューティングデバイス210の検索モジュール282に類似しており、アシスタントサーバシステム460に代わって統合検索機能を実行し得る。すなわち、検索モジュール482は、アシスタントモジュール422に代わって検索動作を実行し得る。いくつかの例では、検索モジュール482は、アシスタントモジュール422に代わって検索動作を実行するために、検索サーバシステム180のような外部検索システムとインターフェースし得る。起動されると、検索モジュール482は、検索クエリを生成し、生成された検索クエリに基づいて、様々なローカルおよびリモート情報ソースにわたって検索を実行する等の検索機能を実行し得る。検索モジュール482は、実行された検索の結果を、起動コンポーネントまたはモジュールに提供し得る。すなわち、検索モジュール482は、検索結果をアシスタントモジュール422に出力し得る。
【0083】
アシスタントサーバシステム460のコンテキストモジュール430は、コンピューティングデバイス210のコンテキストモジュール230に類似している。コンテキストモジュール430は、
図1のコンピューティングデバイス110および
図2のコンピューティングデバイス210のようなコンピューティングデバイスに関連付けられたコンテキスト情報を収集し、コンピューティングデバイスのコンテキストを定義し得る。コンテキストモジュール430は、主に、アシスタントモジュール422および/または検索モジュール482によって使用され、デジタルアシスタントシステム160によって提供されるサービスとインターフェースおよびアクセスするコンピューティングデバイスのコンテキストを定義し得る。コンテキストは、特定の時間におけるコンピューティングデバイスの物理的および/または仮想的な環境と、コンピューティングデバイスのユーザとの特性を指定し得る。
【0084】
アシスタントモジュール422は、
図1のローカルアシスタントモジュール122Aおよびリモートアシスタントモジュール122Bのみならず、
図2のコンピューティングデバイス210のアシスタントモジュール222のすべての機能を含み得る。アシスタントモジュール422は、アシスタントサーバシステム460を介してアクセス可能なアシスタントサービスを提供するためのリモートアシスタントモジュール122Bと同様の動作を実行し得る。すなわち、アシスタントモジュール422は、ネットワークを介してアシスタントサーバシステム460と通信するコンピューティングデバイスにアクセス可能なリモートアシスタントサービスへのインターフェースとして作用し得る。たとえば、アシスタントモジュール422は、
図1のデジタルアシスタントシステム160のリモートアシスタントモジュール122BへのインターフェースまたはAPIであり得る。アシスタントモジュール422は、コンテキストモジュール430および/または検索モジュール482によって提供される任意の情報に加えて、データストア424に記憶された情報に依存して、アシスタントタスクを実行し得る。
【0085】
アシスタントモジュール422によって提供されるアシスタントは、コンピューティングデバイス(たとえば、
図1のコンピューティングデバイス110)のユーザの口頭の、すなわち、話された要求を満たすための動作を実行する過程で、1つまたは複数のタスクを実行するように構成され得る。たとえば、アシスタントモジュール422によって提供されるアシスタントは、コンピューティングデバイスの1つまたは複数のマイクロフォンで、コンピューティングデバイスのユーザが特定のタスクの実行を要求する言葉に対応する音響入力(たとえば、オーディオデータ)を受け取り得る。アシスタントモジュール422によって提供されるアシスタントは、オーディオデータを分析して、話された言葉に対応するタスクを特定し得る。
【0086】
本開示の1つまたは複数の技術によれば、タスクの完全な実行が即時的に(たとえば、設定可能なしきい時間長さ内に)実行できない場合、アシスタントモジュール422によって提供されるアシスタントは、タスクの完全な実行が、即時的ではないことを示すインジケーションを出力し得る。たとえば、アシスタントモジュール422によって提供されるアシスタントは、コンピューティングデバイスに動作可能に接続された1つまたは複数のスピーカによる再生のために、タスクの完全な実行が即時的ではないことをユーザに通知する合成声データを出力し得る。このように、応答が遅延することをユーザに通知せずに、単にタスクを実行するのとは対照的に、アシスタントモジュール422によって提供されるアシスタントは、ユーザが言葉を再度述べることを阻止し得る。ユーザが言葉を再度述べることを阻止することにより、アシスタントモジュール422によって提供されるアシスタントは、重複タスクの実行を回避し、言葉が繰り返しであるのか、または、実行されるべき新たなタスクであるのかを判定することを回避し得、これは、アシスタントモジュール422によって提供されるアシスタントの機能を(たとえば、処理要件および/または電力消費を低減することにより)向上し得る。
【0087】
以下の例は、本開示の1つまたは複数の態様を例示し得る。
【0088】
例1:方法は、1つまたは複数のプロセッサにおいて実行している計算機アシスタントにより、コンピューティングデバイスにおいて話された言葉の表現を受け取ることと、言葉に基づいて、計算機アシスタントによって実行されるべきタスクを特定することと、計算機アシスタントによって、タスクの完全な実行が、しきい時間長さよりも長くかかると判定することに応じて、コンピューティングデバイスに動作可能に接続された1つまたは複数のスピーカによる再生のために、タスクの完全な実行が即時的ではないことをコンピューティングデバイスのユーザに通知する合成声データを出力することと、計算機アシスタントによってタスクを実行することとを備える。
【0089】
例2:例1の方法であって、タスクの完全な実行のための推定時間長さを判定することをさらに備え、タスクの完全な実行が、しきい時間長さよりも長くかかると判定することは、推定時間長さが、しきい時間長さを超えることを判定することを備える。
【0090】
例3:例2の方法であって、推定時間長さを判定することは、特定されたタスクと同じタイプのタスクの完全な実行の履歴時間に基づいて、特定されたタスクの完全な実行のための推定時間長さを判定することを備える。
【0091】
例4:例1〜3の任意の組合せの方法であって、タスクの完全な実行が即時的ではないことをコンピューティングデバイスのユーザに通知する合成声データを出力することは、コンピューティングデバイスに動作可能に接続された1つまたは複数のスピーカによる再生のために、タスクの完全な実行のための推定時間長さを含む合成声データを出力することを備える。
【0092】
例5:例1〜4の任意の組合せの方法であって、タスクの完全な実行は、計算機アシスタントが、1つまたは複数のサブタスクを実行することを含んでいることを判定することと、1つまたは複数のサブタスクのうちの少なくとも1つが、即時的な実行のために適格ではないとして、タスクデータストアにマークされていると判定することに応じて、タスクの完全な実行が、しきい時間長さよりも長くかかると判定することとをさらに備える。
【0093】
例6:例5の方法であって、タスクの完全な実行は、計算機アシスタントが、1つまたは複数のサブタスクを実行することを含んでいることを判定することは、タスクの完全な実行は、計算機アシスタントが、コンピューティングデバイスのユーザ以外の人とインタラクトするサブタスクを実行することを含んでいることを判定することと、タスクデータストアに基づいて、コンピューティングデバイスのユーザ以外の人とインタラクトするサブタスクが、即時的な実行のために適格ではないと判定することとを備える。
【0094】
例7:例6の方法であって、コンピューティングデバイスのユーザ以外の人とインタラクトすることは、計算機アシスタントによって、コンピューティングデバイスのユーザ以外の人に関連付けられたデバイスに動作可能に接続された1つまたは複数のスピーカによる再生のために、コンピューティングデバイスのユーザ以外の人との会話の一部として合成声データを出力することを備える。
【0095】
例8:例5の方法であって、即時的な実行のために適格ではないとして、タスクデータストアにマークされたサブタスクは、計算機アシスタントが、コンピューティングデバイスのユーザ以外の人とインタラクトするサブタスクと、計算機アシスタントが、予約を行うサブタスクと、計算機アシスタントが、チケットを購入するサブタスクと、大規模な計算を必要とするサブタスクと、計算機アシスタントが、低速であると事前に判定された1つまたは複数のコンピューティングシステムとインタラクトするサブタスクと、将来のイベントの発生を必要とするサブタスクとのうちの1つまたは複数を含む。
【0096】
例9:例1〜8の任意の組合せの方法であって、言葉は第1の言葉であり、タスクの完全な実行が即時的ではないことをコンピューティングデバイスのユーザに通知する合成声データが第1の時間に出力され、方法はさらに、計算機アシスタントによって、第1の時間よりも遅い第2の時間において、コンピューティングデバイスにおいて話された第2の言葉の表現を受け取ることであって、第2の言葉は、タスクの実行のステータスを求める要求を備える、受け取ることと、コンピューティングデバイスに動作可能に接続された1つまたは複数のスピーカによる再生のために、タスクの実行のステータスを、コンピューティングデバイスのユーザに通知する合成声データを出力することとを備える。
【0097】
例10:例1〜9の任意の組合せの方法であって、言葉は第1の言葉であって、方法はさらに、計算機アシスタントによって、タスクの実行が完了する前に、コンピューティングデバイスにおいて話された第3の言葉の表現を受け取ることであって、第3の言葉は、タスクの1つまたは複数のパラメータを変更する要求を備える、受け取ることと、計算機アシスタントによって、変更された1つまたは複数のパラメータを用いてタスクを実行することとを備える。
【0098】
例11:例10の方法であって、タスクの1つまたは複数のパラメータを変更する要求は、予約またはチケット購入の時間を変更する要求と、予約またはチケット購入に含まれる人数を変更する要求とのうちの1つまたは複数を備える。
【0099】
例12:例1〜11の任意の組合せの方法であって、タスクの完全な実行が即時的ではないことをコンピューティングデバイスのユーザに通知する合成声データを出力することは、コンピューティングデバイスに動作可能に接続された1つまたは複数のスピーカによる再生のために、言葉に対する部分的または低い信頼性の応答を示し、計算機アシスタントが将来、完全または高い信頼性の応答でフォローアップする合成声データを出力することを備える。
【0100】
例13:例12の方法であって、タスクを特定することは、言葉に基づいて検索クエリを特定することを備え、言葉に対する部分的または低い信頼性の応答を示す合成声データは、検索クエリに対する部分的または低い信頼性の応答を示す合成声データを備える。
【0101】
例14:例1〜13の任意の組合せの方法であって、計算機アシスタントが、特定されたタスク以外のタスクを実行することができる汎用計算機アシスタントである。
【0102】
例15:例1〜14の任意の組合せの方法であって、計算機アシスタントが、ユーザに個別化される。
【0103】
例16:例1〜15の任意の組合せの方法であって、コンピューティングデバイスにおいて、タスクの完全な実行の前に、アシスタントがタスクを実行していることを示す視覚的なインジケータを表示することをさらに備える。
【0104】
例17:通信モジュールと、少なくとも1つのプロセッサと、実行されると、少なくとも1つのプロセッサに、例1〜16の任意の組合せの方法を実行するように構成されたアシスタントを提供させる命令を備えた少なくとも1つのメモリとを備えたコンピューティングシステム。
【0105】
例18:通信モジュールと、例1〜16の任意の組合せの方法を実行するための手段とを備えた、コンピューティングシステム。
【0106】
例19:実行されると、コンピューティングシステムの少なくとも1つのプロセッサに対して、例1〜16の任意の組合せの方法を実行させる命令を備えたコンピュータ可読記憶媒体。
【0107】
1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実施され得る。ソフトウェアで実施される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体に記憶または送信され、ハードウェアベースの処理ユニットによって実行される。コンピュータ可読媒体は、データ記憶媒体等の有形媒体に対応する1つまたは複数のコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は一般に、(1)非一過性の有形のコンピュータ可読記憶媒体、または(2)信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技術の実施のための命令、コード、および/または、データ構造を取得するために、1つまたは複数のコンピュータ、または、1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0108】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、または、命令またはデータ構造の形式で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る他の任意の記憶媒体を備え得る。また、すべての接続は、コンピュータ可読媒体と適切に呼ばれる。たとえば、ウェブサイトから、サーバから、または同軸ケーブルや、光ファイバケーブルや、ツイストペアや、デジタル加入者線(DSL)や、または赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用する他のリモートソースから命令が送信される場合、同軸ケーブルや、光ファイバケーブルや、ツイストペアや、DSLや、または赤外線、無線、およびマイクロ波のようなワイヤレス技術が、媒体の定義に含まれる。しかしながら、1つまたは複数のコンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一過性の媒体は含まないが、代わりに非一過性の有形の記憶媒体が対象とされることが理解されるべきである。ここで使用されるdiskおよびdiscは、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク、Blu-ray(登録商標)ディスクを含み、通常、diskは磁気的にデータを再生するが、discはレーザで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0109】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価な統合またはディスクリート論理回路等の1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構成のいずれか、または本明細書で説明される技術の実施に適した他の任意の構造を称し得る。さらに、いくつかの態様では、本明細書で説明される機能は、専用のハードウェアおよび/またはソフトウェアモジュール内で提供され得る。また、この技術は、1つまたは複数の回路または論理要素で完全に実施され得る。
【0110】
本開示の技術は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む多種多様なデバイスまたは装置で実施され得る。本開示では、開示された技術を実行するように構成されたデバイスの機能的態様を強調するために、様々なコンポーネント、モジュール、またはユニットが説明されるが、必ずしも異なるハードウェアユニットによる実現を必要としない。むしろ、上記のように、様々なユニットがハードウェアユニットに組み合わされ得るか、または、適切なソフトウェアおよび/またはファームウェアと連携して、上記の1つまたは複数のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
【0111】
様々な実施形態が説明された。これらおよび他の実施形態は、添付の特許請求の範囲内にある。