IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アップル インコーポレイテッドの特許一覧

特許7146709デジタルアシスタントとのアプリケーション統合
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-26
(45)【発行日】2022-10-04
(54)【発明の名称】デジタルアシスタントとのアプリケーション統合
(51)【国際特許分類】
   G06F 3/16 20060101AFI20220927BHJP
   G06F 3/0481 20220101ALI20220927BHJP
   G06F 16/90 20190101ALI20220927BHJP
   G06F 40/20 20200101ALI20220927BHJP
   G10L 15/28 20130101ALI20220927BHJP
   H04M 1/247 20210101ALI20220927BHJP
   H04M 3/493 20060101ALI20220927BHJP
【FI】
G06F3/16 630
G06F3/16 610
G06F3/16 670
G06F3/0481
G06F16/90 100
G06F40/20
G10L15/28 500
H04M1/247
H04M3/493
【請求項の数】 23
【外国語出願】
(21)【出願番号】P 2019150880
(22)【出願日】2019-08-21
(62)【分割の表示】P 2018001371の分割
【原出願日】2018-01-09
(65)【公開番号】P2020077364
(43)【公開日】2020-05-21
【審査請求日】2019-08-30
【審判番号】
【審判請求日】2021-08-12
(31)【優先権主張番号】62/444,162
(32)【優先日】2017-01-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503260918
【氏名又は名称】アップル インコーポレイテッド
【氏名又は名称原語表記】Apple Inc.
【住所又は居所原語表記】One Apple Park Way,Cupertino, California 95014, U.S.A.
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100210239
【弁理士】
【氏名又は名称】富永 真太郎
(72)【発明者】
【氏名】ケアリー イー ラデボー
(72)【発明者】
【氏名】ブランドン ジェイ ネウェンドープ
(72)【発明者】
【氏名】コーリー ジェイ ピーターソン
(72)【発明者】
【氏名】ロヒット ダサリ
(72)【発明者】
【氏名】トランティン トラン
(72)【発明者】
【氏名】ヴィニート コスラ
【合議体】
【審判長】▲吉▼田 耕一
【審判官】富澤 哲生
【審判官】野崎 大進
(56)【参考文献】
【文献】米国特許出願公開第2016/0203002(US,A1)
【文献】特開2014-191272(JP,A)
【文献】特表2015-528140(JP,A)
【文献】特開2016-151928(JP,A)
【文献】米国特許出願公開第2015/0382079(US,A1)
【文献】米国特許出願公開第2016/0179464(US,A1)
【文献】特開2001-216130(JP,A)
【文献】米国特許出願公開第2014/0379338(US,A1)
【文献】特開2005-121526(JP,A)
【文献】Androidの重要な機能、インテント,2009年 4月22日,URL,https://thinkit.co.jp/article/921/1
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01, 3/03-3/039, 3/041- 3/048, 3/14-3/153, 16/90, 40/20
G10L 15/28
H04M 1/247, 3/493
(57)【特許請求の範囲】
【請求項1】
1つ以上のプロセッサ及びタッチ感知ディスプレイを有する電子デバイスにおいて、
自然言語ユーザ入力を含むオーディオ入力を受信することと、
前記自然言語ユーザ入力に基づいてユーザの意図を決定することと、
前記決定されたユーザの意図に基づいて、インテントオブジェクトセットのうちのインテントオブジェクトを特定することであって、前記インテントオブジェクトが、前記決定されたユーザの意図に対応し、前記決定されたユーザの意図に関連付けられた1以上のパラメータの1以上のデータフィールドを含むデータ構造である、ことと、
前記インテントオブジェクトに基づいて、前記インテントオブジェクトのセットのうちの前記インテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することと、
前記インテントオブジェクトを前記ソフトウェアアプリケーションに提供することと、
前記ソフトウェアアプリケーションで前記インテントオブジェクトを確認することであって、前記ソフトウェアアプリケーションで前記インテントオブジェクトを確認することは、前記ソフトウェアアプリケーションが前記インテントオブジェクトに対応するタスクを正常に実行することができるという通知を要求することを含む、確認することと、
前記ソフトウェアアプリケーションで前記インテントオブジェクトを確認した後、前記ソフトウェアアプリケーションに、前記決定されたユーザの意図に対応する前記タスクを実行させることと、
前記ソフトウェアアプリケーションから、前記タスクの実行が成功したか否かを示す結果応答を受信することと、
前記タスクが実行されたか否かを示す出力を提供することと、
を含む方法。
【請求項2】
前記インテントオブジェクトセットのうちの前記インテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することが、前記インテントオブジェクトと関連付けられた第1のパラメータを特定することを含み、
前記インテントオブジェクトを前記ソフトウェアアプリケーションに提供して、前記ソフトウェアアプリケーションに前記インテントオブジェクトと関連付けられたタスクを実行させることが、前記第1のパラメータを前記ソフトウェアアプリケーションに提供することを含む、
請求項1に記載の方法。
【請求項3】
前記自然言語ユーザ入力が第1の自然言語入力であり、
前記ソフトウェアアプリケーションから、前記インテントオブジェクトと関連付けられた第2のパラメータの要求を受信することと、
前記要求に基づき自然言語クエリを提供することと、
第2の自然言語ユーザ入力を受信することと、
前記第2のパラメータを特定することであって、前記第2のパラメータが前記第2の自然言語ユーザ入力から導出される、ことと、
前記第2のパラメータを前記ソフトウェアアプリケーションに提供することと、
を更に含む、請求項1又は2に記載の方法。
【請求項4】
前記出力が、前記ソフトウェアアプリケーションが前記タスクの実行に成功したことを示す、請求項1に記載の方法。
【請求項5】
前記出力を提供した後、第2の入力を受信することと、
前記第2の入力に応じて、前記タスクと関連付けられた動作を調節することと、
を更に含む、請求項4に記載の方法。
【請求項6】
前記タスクと関連付けられた動作を調節することが、
前記インテントオブジェクトを調節することと、
前記調節されたインテントオブジェクトを前記ソフトウェアアプリケーションに提供することと、
を含む、請求項5に記載の方法。
【請求項7】
前記インテントオブジェクトを調節することが、前記インテントオブジェクトのパラメータを調節することを含む、請求項6に記載の方法。
【請求項8】
第2の入力を受信することが、アフォーダンスの選択を検出することを含み、
前記タスクと関連付けられた動作を調節することが、前記アフォーダンスの前記選択に応じて、前記タスクと関連付けられた動作を調節することを含む、
請求項5から7のいずれか一項に記載の方法。
【請求項9】
前記出力が、前記ソフトウェアアプリケーションが前記タスクの実行に失敗したことを示す、請求項1に記載の方法。
【請求項10】
前記出力を提供した後、第3の入力を受信することと、
前記第3の入力に応じて、別のインテントオブジェクトを前記ソフトウェアアプリケーションに提供して、前記ソフトウェアアプリケーションに前記別のインテントオブジェクトと関連付けられたタスクを実行させることと、
を更に含む、請求項9に記載の方法。
【請求項11】
第3の入力を受信することが、アフォーダンスの選択を検出することを含み、
別のインテントオブジェクトを前記ソフトウェアアプリケーションに提供して、前記ソフトウェアアプリケーションに前記別のインテントオブジェクトと関連付けられたタスクを実行させることが、前記アフォーダンスの前記選択に応じて、前記別のインテントオブジェクトを前記ソフトウェアアプリケーションに提供することを含む、
請求項10に記載の方法。
【請求項12】
前記インテントオブジェクト及び前記別のインテントオブジェクトが同一の種類のインテントオブジェクトであり、前記インテントオブジェクトと関連付けられたパラメータ及び前記別のインテントオブジェクトと関連付けられたパラメータが同一の値を有する、請求項10又は11に記載の方法。
【請求項13】
前記インテントオブジェクト及び前記別のインテントオブジェクトが同一のインテントオブジェクトである、請求項10又は11に記載の方法。
【請求項14】
別の電子デバイスから複数の語を受信することを更に含み、
自然言語ユーザ入力を受信することが、前記複数の語のうちの語を含む自然言語ユーザ入力を受信することを含み、
前記インテントオブジェクトセットのうちの前記インテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することが、前記複数の語のうちの前記語に基づき前記ソフトウェアアプリケーションを特定することを含む、
請求項1から13のいずれか一項に記載の方法。
【請求項15】
インテントオブジェクトセットのうちのインテントオブジェクトを特定することが、前記電子デバイスの種類に基づき前記インテントオブジェクトセットのうちの前記インテントオブジェクトを特定することを含む、請求項1から14のいずれか一項に記載の方法。
【請求項16】
前記インテントオブジェクトと関連付けられた複数の候補パラメータを特定することと、
前記複数の候補パラメータを前記ソフトウェアアプリケーションに提供することと、
を更に含む、請求項1から15のいずれか一項に記載の方法。
【請求項17】
前記ソフトウェアアプリケーションから、パラメータに対応する曖昧性除去要求を受信することと、
前記パラメータと関連付けられた候補パラメータセットから候補パラメータを特定することと、
前記特定された候補パラメータを前記ソフトウェアアプリケーションに提供することと、
を更に含む、請求項1から16のいずれか一項に記載の方法。
【請求項18】
前記インテントオブジェクトを前記ソフトウェアアプリケーションに提供して、前記ソフトウェアアプリケーションに前記インテントオブジェクトと関連付けられたタスクを実行させることが、
前記ソフトウェアアプリケーションを特定した後、前記タスクのキャンセル又は変更を要求するユーザ入力が期間内に受信されたか否かを判定することと、
前記タスクのキャンセル又は変更を要求する前記ユーザ入力が前記期間内に受信されなかったという判定に従って、前記インテントオブジェクトを前記ソフトウェアアプリケーションに提供することと、
を含む、請求項1から17のいずれか一項に記載の方法。
【請求項19】
前記タスクのキャンセル又は変更を要求する前記ユーザ入力が前記期間内に受信されなかったという判定に従って、前記インテントオブジェクトを前記ソフトウェアアプリケーションに提供することが、ユーザによる前記インテントオブジェクトの確認なしに前記インテントオブジェクトを前記ソフトウェアアプリケーションに提供することを含む、請求項18に記載の方法。
【請求項20】
前記ソフトウェアアプリケーションから、前記インテントオブジェクトと関連付けられたパラメータの要求を受信することと、
前記電子デバイスを用いて、前記要求に基づき自然言語クエリを特定することであって、前記自然言語クエリが、前記ソフトウェアアプリケーション及び前記パラメータと関連付けられる、ことと、
前記自然言語クエリを提供することと、
第4のユーザ入力を受信することと、
前記第4のユーザ入力に基づき前記パラメータを特定することと、
前記パラメータを前記ソフトウェアアプリケーションに提供することと、
を更に含む、請求項1から19のいずれか一項に記載の方法。
【請求項21】
請求項1から20のいずれか一項に記載の方法を実行するための命令を含む、コンピュータプログラム。
【請求項22】
請求項21に記載のコンピュータプログラムを記憶するメモリと、
前記メモリに記憶された前記命令を実行することができる1つ以上のプロセッサと、
タッチ感知ディスプレイと、
を備える、電子デバイス。
【請求項23】
請求項21に記載のコンピュータプログラムを記憶する手段と、
前記コンピュータプログラムを記憶する手段に記憶された前記命令を実行する手段と、
タッチ感知ディスプレイのための手段と、
を備える、電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は概してアプリケーションとインターフェースをとることに関し、特に、デジタルアシスタントとのアプリケーション統合技術に関する。
【背景技術】
【0002】
デジタルアシスタントは、ユーザがユーザデバイス上で各種機能を実行するのを助けることができる。例えば、デジタルアシスタントは、ユーザに自然言語インターフェースを提供しながら、アラームの設定、天気の最新情報の提供、ローカル及びインターネット上の両方での検索の実行、を可能にする。しかしながら、既存のデジタルアシスタントは、ユーザデバイス上でローカルに保存されているアプリケーション等、特に第三者アプリケーションを有効に統合することができない。従って、既存のデジタルアシスタントは、このようなアプリケーションとの自然言語インターフェースを提供することができない。
【発明の概要】
【0003】
例示の方法を本明細書で開示する。ある例示の方法は、1つ以上のプロセッサとタッチ感知ディスプレイとを有する電子デバイスにおいて、自然言語ユーザ入力を含むオーディオ入力を受信することと、インテントオブジェクトセットのうちのインテントオブジェクトを特定し、該インテントオブジェクトは自然言語ユーザ入力から導出されることと、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することと、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させることと、ソフトウェアアプリケーションからタスクの実行が成功したか否かを示す結果応答を受信することと、タスクが実行されたか否かを示す出力を提供することと、を含む。
【0004】
ある例示の方法は、それぞれが1つ以上のプロセッサを有する1つ以上の電子デバイスにおいて、自然言語ユーザ入力を含むオーディオ入力を受信することと、自然言語ユーザ入力から文字列を取得することと、文字列に基づきインテントオブジェクトセットのうちのインテントオブジェクトを決定することと、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを決定することと、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させることと、ソフトウェアアプリケーションからタスクの実行が成功したか否かを示す結果応答を受信することと、タスクが実行されたか否かを示す出力を提供することと、を含む。
【0005】
ある例示の方法は、1つ以上のプロセッサを有する電子デバイスにおいて、自然言語ユーザ入力を受信することと、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することと、第2の電子デバイスからソフトウェアアプリケーションと関連付けられたタスクフローを受信することと、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させることと、ソフトウェアアプリケーションから要求を受信することと、要求に基づきクエリを決定することであって、該クエリがタスクフローに従って決定される、ことと、タッチ感知ディスプレイを用いてクエリを提供することと、クエリを提供した後、クエリ応答を示す第2のユーザ入力を受信することと、クエリ応答をソフトウェアアプリケーションに提供することと、を含む。
【0006】
ある例示の方法は、それぞれが1つ以上のプロセッサを有する1つ以上の電子デバイスにおいて、インテントオブジェクトセットのうちのインテントオブジェクトを決定することと、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することと、ソフトウェアアプリケーションと関連付けられたタスクフローを決定することと、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させることと、ソフトウェアアプリケーションから要求を受信することと、要求に基づきクエリを決定することであって、該クエリがタスクフローに従って決定される、ことと、タッチ感知ディスプレイを用いてクエリを提供することと、クエリを提供した後、クエリ応答を示す第2のユーザ入力を受信することと、クエリ応答をソフトウェアアプリケーションに提供することと、を含む。
【0007】
例示の非一時的コンピュータ可読媒体を本明細書で開示する。ある例示の非一時的コンピュータ可読記憶媒体は1つ以上のプログラムを記憶する。この1つ以上のプログラムは、電子デバイスの1つ以上のプロセッサによって実行されたときに、電子デバイスに、自然言語ユーザ入力を含むオーディオ入力を受信させ、インテントオブジェクトセットのうちのインテントオブジェクトであって、該インテントオブジェクトは自然言語ユーザ入力から導出される、インテントオブジェクトを特定させ、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定させ、インテントオブジェクトをソフトウェアアプリケーションに提供させて、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させ、ソフトウェアアプリケーションからタスクの実行が成功したか否かを示す結果応答を受信させ、タスクが実行されたか否かを示す出力を提供させる、命令を備える。
【0008】
ある例示の非一時的コンピュータ可読記憶媒体は1つ以上のプログラムを記憶する。1つ以上のプログラムは、電子デバイスの1つ以上のプロセッサによって実行されたときに、電子デバイスに、自然言語ユーザ入力を含むオーディオ入力を受信させ、自然言語ユーザ入力から文字列を取得させ、文字列に基づきインテントオブジェクトセットのうちのインテントオブジェクトを決定させ、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを決定させ、インテントオブジェクトをソフトウェアアプリケーションに提供させて、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させ、ソフトウェアアプリケーションからタスクの実行が成功したか否かを示す結果応答を受信させ、タスクが実行されたか否かを示す出力を提供させる、命令を備える。
【0009】
ある例示の非一時的コンピュータ可読記憶媒体は1つ以上のプログラムを記憶する。この1つ以上のプログラムは、1つ以上の電子デバイスの1つ以上のプロセッサによって実行されたときに、1つ以上の電子デバイスに、自然言語ユーザ入力を受信させ、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定させ、第2の電子デバイスからソフトウェアアプリケーションと関連付けられたタスクフローを受信させ、インテントオブジェクトをソフトウェアアプリケーションに提供させて、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させ、ソフトウェアアプリケーションから要求を受信させ、要求に基づきクエリであって、該クエリがタスクフローに従って決定される、クエリを決定させ、タッチ感知ディスプレイを用いてクエリを提供させ、クエリを提供した後、クエリ応答を示す第2のユーザ入力を受信させ、クエリ応答をソフトウェアアプリケーションに提供させる、命令を備える。
【0010】
ある例示の非一時的コンピュータ可読記憶媒体は1つ以上のプログラムを記憶する。この1つ以上のプログラムは1つ以上の電子デバイスの1つ以上のプロセッサによって実行されたときに、1つ以上の電子デバイスに、インテントオブジェクトセットのうちのインテントオブジェクトを決定させ、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定させ、ソフトウェアアプリケーションと関連付けられたタスクフローを決定させ、インテントオブジェクトをソフトウェアアプリケーションに提供させて、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させ、ソフトウェアアプリケーションから要求を受信させ、要求に基づきクエリであって、該クエリがタスクフローに従って決定される、クエリを決定させ、タッチ感知ディスプレイを用いてクエリを提供させ、クエリを提供した後、クエリ応答を示す第2のユーザ入力を受信させ、クエリ応答をソフトウェアアプリケーションに提供させる、命令を備える。
【0011】
例示の電子デバイス及びシステムを本明細書で開示する。ある例示の電子デバイスは、1つ以上のプロセッサと、メモリと、1つ以上のプログラムとを備え、この1つ以上のプログラムは、メモリに記憶され、1つ以上のプロセッサによって実行されるように構成されており、この1つ以上のプログラムは、自然言語ユーザ入力を含むオーディオ入力を受信し、インテントオブジェクトセットのうちのインテントオブジェクトであって、該インテントオブジェクトは自然言語ユーザ入力から導出する、インテントオブジェクトを特定し、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定し、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させ、ソフトウェアアプリケーションからタスクの実行が成功したか否かを示す結果応答を受信させ、タスクが実行されたか否かを示す出力を提供する、命令とを含む。
【0012】
ある例示のシステムは、1つ以上の電子デバイスの1つ以上のプロセッサと、1つ以上の電子デバイスの1つ以上のメモリと、1つ以上のプログラムとを備え、この1つ以上のプログラムは、1つ以上のメモリに記憶され、1つ以上のプロセッサによって実行されるように構成されており、この1つ以上のプログラムは、自然言語ユーザ入力を含むオーディオ入力を受信し、自然言語ユーザ入力から文字列を取得し、文字列に基づきインテントオブジェクトセットのうちのインテントオブジェクトを決定し、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを決定し、インテントオブジェクトをソフトウェアアプリケーションに提供させて、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させ、ソフトウェアアプリケーションからタスクの実行が成功したか否かを示す結果応答を受信し、タスクが実行されたか否かを示す出力を提供する、命令とを含む。
【0013】
ある例示の電子デバイスは、1つ以上のプロセッサと、メモリと、1つ以上のプログラムとを備え、この1つ以上のプログラムは、メモリに記憶され、1つ以上のプロセッサによって実行されるように構成されており、この1つ以上のプログラムは、自然言語ユーザ入力を受信し、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定し、第2の電子デバイスからソフトウェアアプリケーションと関連付けられたタスクフローを受信し、インテントオブジェクトをソフトウェアアプリケーションに提供させて、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させ、ソフトウェアアプリケーションから要求を受信し、要求に基づきクエリであって、該クエリがタスクフローに従って決定される、クエリを決定し、タッチ感知ディスプレイを用いてクエリを提供し、クエリを提供した後、クエリ応答を示す第2のユーザ入力を受信し、クエリ応答をソフトウェアアプリケーションに提供する、命令を含む。
【0014】
ある例示のシステムは、1つ以上の電子デバイスの1つ以上のプロセッサと、1つ以上の電子デバイスの1つ以上のメモリと、1つ以上のプログラムとを含み、この1つ以上のプログラムは、1つ以上のメモリに記憶され、1つ以上のプロセッサによって実行されるように構成されており、この1つ以上のプログラムは、インテントオブジェクトセットのうちのインテントオブジェクトを決定し、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定し、ソフトウェアアプリケーションと関連付けられたタスクフローを決定し、インテントオブジェクトをソフトウェアアプリケーションに提供させて、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させ、ソフトウェアアプリケーションから要求を受信し、要求に基づきクエリであって、該クエリがタスクフローに従って決定される、クエリを決定し、タッチ感知ディスプレイを用いてクエリを提供し、クエリを提供した後、クエリ応答を示す第2のユーザ入力を受信し、クエリ応答をソフトウェアアプリケーションに提供する、命令を含む。
【0015】
ある例示の電子デバイスは、自然言語ユーザ入力を含むオーディオ入力を受信する手段と、インテントオブジェクトセットのうちのインテントオブジェクトを特定し、該インテントオブジェクトは自然言語ユーザ入力から導出される、手段と、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定する手段と、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させる手段と、ソフトウェアアプリケーションからタスクの実行が成功したか否かを示す結果応答を受信する手段と、タスクが実行されたか否かを示す出力を提供する手段と、を備える。
【0016】
ある例示のシステムは、自然言語ユーザ入力を含むオーディオ入力を受信する手段と、自然言語ユーザ入力から文字列を取得する手段と、文字列に基づきインテントオブジェクトセットのうちのインテントオブジェクトを決定する手段と、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを決定する手段と、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させる手段と、ソフトウェアアプリケーションからタスクの実行が成功したか否かを示す結果応答を受信する手段と、タスクが実行されたか否かを示す出力を提供する手段と、を備える。
【0017】
ある例示の電子デバイスは、自然言語ユーザ入力を受信する手段と、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定する手段と、第2の電子デバイスからソフトウェアアプリケーションと関連付けられたタスクフローを受信する手段と、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させる手段と、ソフトウェアアプリケーションから要求を受信する手段と、要求に基づきクエリを決定する手段であって、該クエリがタスクフローに従って決定される、手段と、タッチ感知ディスプレイを用いてクエリを提供する手段と、クエリを提供した後、クエリ応答を示す第2のユーザ入力を受信する手段と、クエリ応答をソフトウェアアプリケーションに提供する手段と、を備える。
【0018】
ある例示のシステムは、インテントオブジェクトセットのうちのインテントオブジェクトを決定する手段と、インテントオブジェクトセットのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定する手段と、ソフトウェアアプリケーションと関連付けられたタスクフローを決定する手段と、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションにインテントオブジェクトと関連付けられたタスクを実行させる手段と、ソフトウェアアプリケーションから要求を受信する手段と、要求に基づきクエリを決定する手段であって、該クエリがタスクフローに従って決定される、手段と、タッチ感知ディスプレイを用いてクエリを提供する手段と、クエリを提供した後、クエリ応答を示す第2のユーザ入力を受信する手段と、クエリ応答をソフトウェアアプリケーションに提供する手段と、を備える。
説明される各種実施形態の理解を深めるため、以下の図面と併せて後述の発明を実施するための形態を参照すべきである。全図面を通じて、同一の参照符号は対応する部分を指す。
【図面の簡単な説明】
【0019】
図1】各種実施例に係るデジタルアシスタントを実装するシステム及び環境を示すブロック図である。
図2A】いくつかの実施形態に係るデジタルアシスタントのクライアント側部を実装するポータブル多機能デバイスを示すブロック図である。
図2B】各種実施例に係る事象処理のための例示的要素を示すブロック図である。
図3】各種実施例に係るデジタルアシスタントのクライアント側部を実装するポータブル多機能デバイスを示す図である。
図4】各種実施例に係るディスプレイとタッチ感知面とを備える例示的多機能デバイスのブロック図である。
図5A】各種実施例に係るポータブル多機能デバイスのアプリケーションメニュー用の例示的ユーザインタフェースを示す図である。
図5B】各種実施例に係るディスプレイから分離された、タッチ感知面を備える多機能デバイス用の例示的ユーザインタフェースを示す図である。
図6A】各種実施例に係るパーソナル電子デバイスを示す図である。
図6B】各種実施例に係るパーソナル電子デバイスを示すブロック図である。
図7A】各種実施例に係るデジタルアシスタントシステム又はそのサーバ部を示すブロック図である。
図7B】各種実施例に係る図7Aに示すデジタルアシスタントの機能を示す図である。
図7C】各種実施形態に係るオントロジの一部を示す図である。
図8】いくつかの実施形態に係るデジタルアシスタントを動作させるプロセスを示すフロー図である。
図9】いくつかの実施形態に係るデジタルアシスタントを動作させるプロセスを示すフロー図である。
図10A】いくつかの実施形態に係る電子デバイスの例示的ユーザインタフェースを示す図である。
図10B】いくつかの実施形態に係る電子デバイスの例示的ユーザインタフェースを示す図である。
図10C】いくつかの実施形態に係る電子デバイスの例示的ユーザインタフェースを示す図である。
図10D】いくつかの実施形態に係るデジタルアシスタントシステムの例示的データフローを示す図である。
図10E】いくつかの実施形態に係るデジタルアシスタントシステムの例示的データフローを示す図である。
図11】いくつかの実施形態に係るデジタルアシスタントを動作させるプロセスを示すフロー図である。
図12】いくつかの実施形態に係るデジタルアシスタントを動作させるプロセスを示すフロー図である。
図13A】いくつかの実施形態に係る電子デバイスの例示的ユーザインタフェースを示す図である。
図13B】いくつかの実施形態に係る電子デバイスの例示的ユーザインタフェースを示す図である。
図14】いくつかの実施形態に係る電子デバイスの機能ブロック図である。
図15】いくつかの実施形態に係る電子デバイスの機能ブロック図である。
図16】いくつかの実施形態に係る電子デバイスの機能ブロック図である。
図17】いくつかの実施形態に係る電子デバイスの機能ブロック図である。
【発明を実施するための形態】
【0020】
以下の本開示及び実施形態の説明においては、実行することができる特定の実施形態を例示的に示す添付図面を参照する。なお、本開示の範囲を逸脱せずに、他の実施形態及び実施例も実行可能であると理解すべきである。
【0021】
以下の説明では、各種要素を説明するために「第1」、「第2」などの文言を使用するが、これらの要素は上記文言によって限定されるべきではない。これらの文言は単に要素を区別するために使用される。例えば、説明される各種実施形態の範囲を逸脱せずに、第1の入力は第2の入力と称することができ、同様に、第2の入力は第1の入力と称することができる。第1の入力及び第2の入力はいずれも出力であってもよく、場合によっては、別個の異なる入力であってもよい。
【0022】
本明細書における各種実施形態の説明で使用される文言は、単に特定の実施形態を説明するためのものであり、本発明を限定することを目的としていない。各種実施形態及び添付の請求項の説明で使用されるとき、単数形「a」、「an」及び「the」は特段明示されない限り、複数も含むことを目的とする。また、本明細書で使用されるとき、「及び/又は」という文言は、対応付けられて列挙される1つ以上のアイテムの任意の又は全ての可能な組合せを指し、包含すると理解される。更に、本明細書で使用されるとき、「含む」、「含んで」、「備える」及び/又は「備えて」という文言は、記載される特徴、整数、ステップ、動作、要素及び/又は部品の存在を明示するが、1つ以上のその他の特徴、整数、ステップ、動作、要素、部品及び/又はそれらの群の存在又は追加を排除するものではないと理解される。
【0023】
「場合」という文言は、コンテキストに応じて、「とき」若しくは「時」又は「判定に応じて」若しくは「検出に応じて」を意味するように解釈することができる。同様に、「判定される場合」又は「[記載される状態又は事象]が検出される場合」という句は、コンテキストに応じて、「判定時」若しくは「判定に応じて」又は「[記載される状態又は事象]の検出時」若しくは「[記載される状態又は事象]の検出に応じて」を意味するように解釈することができる。
1.システム及び環境
【0024】
図1は、各種実施形態に係るシステム100のブロック図である。いくつかの例では、システム100はデジタルアシスタントを実装することができる。「デジタルアシスタント」、「仮想アシスタント」、「インテリジェント自動アシスタント」、又は「自動デジタルアシスタント」という用語は、口頭及び/又は文字形式の自然言語入力を解釈してユーザの意図を推測し、推測されたユーザの意図に基づきアクション(たとえば、タスク)を実行する任意の情報処理システムを指すことができる。例えば、推測されたユーザの意図に基づき動作するため、システムは、推測されたユーザの意図を実現するように設計されたステップ及びパラメータを備えるタスクフローを特定すること、推測されたユーザの意図からの具体的な要求をタスクフローに入力すること、プログラム、方法、サービス、APIなどを呼び出すことによってタスクフローを実行すること、可聴(たとえば、音声)及び/又は可視形式でユーザへの出力応答を生成すること、のうち1つ以上を実行することができる。
【0025】
具体的には、デジタルアシスタントは、少なくとも部分的に自然言語のコマンド、要求、ステートメント、話及び/又は問い合わせの形式でユーザの要求を受け入れることができる。通常、ユーザ要求は、デジタルアシスタントによる情報の回答又はタスクの実行を求めることができる。ユーザ要求に対する満足のいく応答は、要求された情報の回答の提供、要求されたタスクの実行又は両者の組合せとすることができる。例えば、ユーザは「私は今どこにいますか」等の質問をデジタルアシスタントに問いかけることができる。ユーザの現在位置に基づき、デジタルアシスタントは、「あなたはウエストゲート近くのセントラルパークにいます」と回答することができる。また、ユーザは、例えば「私の友人を来週の私のガールフレンドの誕生日パーティに招待してください」というタスクの実行を要求することができる。これに応じて、デジタルアシスタントは、「はい、ただいま」と言い、ユーザに代わってユーザの電子アドレス帳に載せられたユーザの友人それぞれに適切な日程の招待を送ることによって要求に応じることができる。要求されたタスクの実行中、デジタルアシスタントは、長時間にわたって複数の情報交換を含む連続的な会話でユーザと対話することがある。デジタルアシスタントと対話して、情報又は各種タスクの実行を要求する方法は他にも多数存在する。口頭応答の提供とプログラムされたアクションの実行に加えて、デジタルアシスタントは、その他の可視又は可聴形式で、例えば、文字、警告、音楽、映像、動画などとして応答を提供することもできる。
【0026】
図1に示すように、いくつかの実施例では、デジタルアシスタントは、クライアント-サーバモデルに応じて実装されることができる。デジタルアシスタントは、ユーザデバイス104で実行されるクライアント側部102(以下「DAクライアント102」と称する)とサーバシステム108で実行されるサーバ側部106(以下「DAサーバ106」と称する)とを含むことができる。DAクライアント102は、1つ以上のネットワーク110を通じてDAサーバ106と通信することができる。DAクライアント102は、ユーザ対応入力及び出力処理機能やDAサーバ106との通信などのクライアント側機能を提供することができる。DAサーバ106は、各自のユーザデバイス104に備わる任意の数のDAクライアント102用のサーバ側機能を提供することができる。
【0027】
いくつかの実施例では、DAサーバ106はクライアント対応I/Oインターフェース112と、1つ以上の処理モジュール114と、データ及びモデル116と、外部サービス118とのI/Oインターフェースとを含むことができる。クライアント対応I/Oインターフェース112は、DAサーバ106のクライアント対応入力及び出力処理を簡易化することができる。1つ以上の処理モジュール114はデータ及びモデル116を利用して、音声入力を処理し、自然言語入力に基づきユーザの意図を定義することができる。更に、1つ以上の処理モジュール114は、推測されたユーザの意図に基づきタスクを実行することができる。いくつかの実施例では、DAサーバ106は、タスク完了又は情報取得のためにネットワーク110を通じて外部サービス120と通信することができる。外部サービス118とのI/Oインターフェースはこのような通信を簡易化することができる。
【0028】
ユーザデバイス104は任意の適切な電子デバイスとすることができる。例えば、ユーザデバイスは、ポータブル多機能デバイス(例えば、図2Aを参照して後述するデバイス200)、多機能デバイス(例えば、図4を参照して後述するデバイス400)又はパーソナル電子デバイス(例えば、図6A及び図6Bを参照して後述するデバイス600)とすることができる。ポータブル多機能デバイスは、例えば、PDA及び/又は音楽プレーヤ機能などのその他の機能を含む携帯電話とすることができる。ポータブル多機能デバイスの具体的な例としては、カリフォルニア州クパチーノのApple社製のiPhone(登録商標)、iPod Touch(登録商標)及びiPad(登録商標)などが挙げられる。ポータブル多機能デバイスの他の例としては、ラップトップ又はタブレットコンピュータが挙げられるが、それらに限定されない。更に、いくつかの実施例では、ユーザデバイス104は非ポータブル多機能デバイスとすることができる。特に、ユーザデバイス104はデスクトップコンピュータ、ゲームコンソール、テレビ又はテレビセットトップボックスとすることができる。いくつかの実施例では、ユーザデバイス104はタッチ感知面(例えば、タッチスクリーンディスプレイ及び/又はタッチパッド)を含むことができる。更に、ユーザデバイス104は、物理的なキーボード、マウス及び/又はジョイスティックなどの1つ以上のその他の物理的ユーザインタフェースデバイスを任意で含むことができる。多機能デバイスなどの電子デバイスの各種実施例を以下より詳細に説明する。
【0029】
通信ネットワーク110の例としては、ローカルエリアネットワーク(LAN)及びワイドエリアネットワーク(WAN)、例えば、インターネットなどが挙げられる。通信ネットワーク110は、各種有線又は無線プロトコルを含む任意の既知のネットワークプロトコル、例えば、イーサネット(登録商標)、ユニバーサルシリアルバス(USB)、ファイアワイヤ、移動通信用のグローバルシステム(GSM(登録商標))、拡張データGSM環境(EDGE)、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、Bluetooth、Wi-Fi、ボイスオーバー・インターネット・プロトコル(VoIP)、Wi-MAX、又はその他の任意の適切な通信プロトコルを用いて実装することができる。
【0030】
サーバシステム108は、1つ以上のスタンドアローンデータ処理装置又はコンピュータの分散ネットワークに実装することができる。いくつかの実施例では、サーバシステム108は、各種仮想デバイス及び/又は第三者サービスプロバイダ(例えば、第三者クラウドサービスプロバイダ)のサービスを採用して、サーバシステム108の基本的なコンピューティングリソース及び/又はインフラリソースを提供することもできる。
【0031】
いくつかの実施例では、ユーザデバイス104は、第2のユーザデバイス122を介してDAサーバ106と通信することができる。第2のユーザデバイス122はユーザデバイス104と類似又は同一であり得る。例えば、第2のユーザデバイス122は、図2A図4図6A及び図6Bを参照して後述するデバイス200、400又は600と類似し得る。ユーザデバイス104は、Bluetooth、NFC、BTLEなどの直接通信接続又はローカルWi-Fiネットワークなどの有線若しくは無線ネットワークを介して第2のユーザデバイス122と通信可能に接続されるように構成することができる。いくつかの実施例では、第2のユーザデバイス122は、ユーザデバイス104とDAサーバ106との間のプロクシとして作用するように構成することができる。例えば、ユーザデバイス104のDAクライアント102は、第2のユーザデバイス122を介して、情報(例えば、ユーザデバイス104で受信されたユーザ要求)をDAサーバ106に送信するように構成することができる。DAサーバ106は情報を処理し、第2のユーザデバイス122を介して関連データ(例えば、ユーザ要求に応答するデータコンテンツ)をユーザデバイス104に返信することができる。
【0032】
いくつかの実施例では、ユーザデバイス104は、第2のユーザデバイス122にデータの短縮要求を通信し、ユーザデバイス104から送信される情報量を低減するように構成することができる。第2のユーザデバイス122は、補足情報を決定し、短縮要求に追加し、完全要求を生成してDAサーバ106に送信するように構成することができる。このシステムのアーキテクチャによって、有限の通信能力及び/又は有限のバッテリパワー(例えば、腕時計又は類似のコンパクトな電子デバイス)を有するユーザデバイス104は、大きな通信能力及び/又はバッテリパワー(例えば、携帯電話、ラップトップコンピュータ、タブレットコンピュータなど)を有する第2のユーザデバイス122をDAサーバ106の代わりに使用することによって、DAサーバ106が提供するサービスに好適にアクセスすることができる。2つのユーザデバイス104及び122しか図1に示されていないが、システム100はこのプロクシ構造で構成されてDAサーバシステム106と通信する任意の数及び種類のユーザデバイスを含むことができると理解すべきである。
【0033】
図1に示すデジタルアシスタントはクライアント側部(たとえば、DAクライアント102)及びサーバ側部(たとえば、DAサーバ106)の両方を含むことができるが、いくつかの実施例では、デジタルアシスタントの機能は、ユーザデバイスにインストールされたスタンドアローンのアプリケーションとして実行することができる。また、デジタルアシスタントのクライアント部とサーバ部との間の機能の分割は、様々な実装形態で変動させることができる。例えば、いくつかの実施例では、DAクライアントは、ユーザ対応入力及び出力処理機能のみを提供し、デジタルアシスタントの他の全機能をバックエンドサーバに移管させるシンクライアントとすることができる。
2.電子デバイス
【0034】
ここで、デジタルアシスタントのクライアント側部分を実現するための電子デバイスの実施形態に注意を向ける。図2Aは、いくつかの実施形態によるタッチ感知ディスプレイシステム212を備えたポータブル多機能デバイス200を示すブロック図である。タッチ感知ディスプレイ212は、便宜上、「タッチスクリーン」と呼ばれることもあり、「タッチ感知ディスプレイシステム」として知られる又は呼ばれることもある。デバイス200は、メモリ202(任意選択的に一つ以上のコンピュータ可読記憶媒体を含む)、メモリコントローラ222、一つ以上の処理ユニット(CPU)220、周辺機器インターフェース218、RF回路208、オーディオ回路210、スピーカ211、マイクロホン213、入出力(I/O)サブシステム206、他の入力コントロールデバイス216、及び外部ポート224を含む。デバイス200は任意選択的に、一つ以上の光センサ264を含む。デバイス200は任意選択的に、デバイス200上の接触強度を検出するための一つ以上の接触強度センサ265を含む(例えば、デバイス200のタッチ感知ディスプレイシステム212等のタッチ感知面)。デバイス200は任意選択的に、デバイス200上の触知出力を生成するための一つ以上の触知出力生成器267を含む(例えば、デバイス200のタッチ感知ディスプレイシステム212又はデバイス400のタッチパッド455等のタッチ感知面上に触知出力を生成する)。これらの構成要素は任意選択的に、一つ以上の通信バス又は信号線203上で通信を行う。
【0035】
本明細書及び請求項で用いられる際、タッチ感知面上の接触の用語「強度」は、タッチ感知面上の接触(例えば、指接触)の力又は圧力(単位面積当たりの力)、又はタッチ感知面上の接触の力又は圧力の代替物(代用物)を指す。接触強度は、少なくとも四つの別個の値を含み、より一般的には、数百個の別個の値(例えば、少なくとも256個)を含む値の範囲を有する。接触強度は、任意選択的に、様々な方式及び様々なセンサ又はセンサの組合せを用いて決定(又は測定)される。例えば、タッチ感知面の下の又はそれに隣接する一つ以上の力センサを任意選択的に用いて、タッチ感知面上の様々な点における力を測定する。いくつかの実施形態では、複数の力センサからの力測定を組み合わせて(例えば、加重平均)、推定の接触力を決定する。同様に、スタイラスの感圧先端を任意選択的に用いて、タッチ感知面上のスタイラスの圧力を決定する。若しくは、タッチ感知面上で検出される接触面積のサイズ及び/又はその変化、及び/又は接触の近傍のタッチ感知面の抵抗及び/又はその変化を、任意選択的に、タッチ感知面上の接触力又は圧力の代替物として用いる。いくつかの実施形態では、接触力又は圧力の代替測定を用いて、強度閾値を超えたかどうかを直接決定する(例えば、強度閾値は、代替測定に対応する単位で説明される)。いくつかの実施形態では、接触力又は圧力の代替測定を推定力又は圧力に変換し、推定力又は圧力を用いて、強度閾値を超えたかどうかを決定する(例えば、強度閾値は圧力の単位で測定される圧力閾値である)。ユーザ入力の属性として接触強度を用いて、追加のデバイス機能へのユーザアクセスを可能にし、その機能は、そうでなければ、アフォーダンス(例えば、タッチ感知ディスプレイ上の)表示用及び/又はユーザ入力(例えば、タッチ感知ディスプレイ、タッチ感知面、又はノブ又はボタン等の物理的/機械的コントロールを介した)受取り用の領域が限られている小型のデバイス上ではアクセスできない可能性がある。
【0036】
本明細書及び請求項で用いられる際、用語「触知出力」は、デバイスの以前の位置に対するデバイスの物理的変位、デバイスの別の構成要素(例えば、ハウジング)に対するある構成要素(例えば、タッチ感知面)の物理的変位、又はユーザの触覚を用いてユーザによって検出されるデバイスの重心に対する構成要素の変位を指す。例えば、デバイス又はデバイスの構成要素が、接触に敏感なユーザの面(例えば、指、手のひら、又はユーザの手の他の部分)と接触している状況では、物理的変位によって生成される触知出力が、デバイス又はデバイスの構成要素の物理的特性の認識された変化に対応する触感として解釈される。例えば、タッチ感知面(例えば、タッチ感知ディスプレイ又はトラックパッド)の移動は任意選択的に、物理アクチュエータボタンの「ダウンクリック」又は「アップクリック」としてユーザによって解釈される。いくつかの場合、ユーザの移動によって物理的に押される(例えば、変位させる)タッチ感知面に関連した物理アクチュエータボタンの移動がない場合でさえ、「ダウンクリック」又は「アップクリック」等の触感を感じることができる。別の例として、タッチ感知面の移動は任意選択的に、タッチ感知面の平滑度に変化がない場合でも、タッチ感知面の「粗さ」としてユーザによって解釈又は感知される。ユーザによる接触のこのような解釈はユーザの個人の知覚に影響されるが、大多数のユーザに共通である接触の多くの知覚がある。従って、触知出力がユーザの特定の知覚に対応するもの(例えば、「アップクリック」、「ダウンクリック」、「粗さ」)として説明される場合、特に明記されない限り、生成される触知出力はデバイス又はその構成要素の物理的な変位に対応し、一般的な(平均的な)ユーザ用に説明される知覚を生成できる。
【0037】
当然のことながら、デバイス200はポータブル多機能デバイスの一例にすぎず、デバイス200は任意選択的に、図より多くの又は少ない構成要素を有するか、任意選択的に二つ以上の構成要素を組み合わせるか、又は任意選択的に構成要素の異なる構成又は配置を有する。図2Aに示した様々な構成要素は、一つ以上の信号処理及び/又は特定用途向け集積回路を含むハードウェア、ソフトウェア、又はハードウェアとソフトウェアの両方の組合せで実現される。
【0038】
メモリ202は、一つ以上のコンピュータ可読記憶媒体を含んでいてもよい。コンピュータ可読記憶媒体は、有形的であっても非一時的であってもよい。メモリ202は高速ランダムアクセスメモリを含んでいても、一つ以上の磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステートメモリデバイス等の不揮発性メモリを含んでいてもよい。メモリコントローラ222は、デバイス200の他の構成要素によってメモリ202へのアクセスを制御できる。
【0039】
いくつかの例では、メモリ202の非一時的コンピュータ可読記憶媒体を用いて、コンピュータベースシステム、プロセッサ格納システム、又は命令実行システム、装置又はデバイスから命令を取り出し、その命令を実行できる他のシステム等の命令実行システム、装置、又はデバイスで用いるために又はそれと共に(例えば、以降で説明される処理形態1100の実行用の)命令を記憶できる。他の例では、命令(例えば、以降で説明される処理形態1100の実行用)は、サーバシステム108の非一時的コンピュータ可読記憶媒体(図示せず)に記憶することも、メモリ202の非一時的コンピュータ可読媒体と、サーバシステム108の非一時的コンピュータ可読記憶媒体の間で分割することもできる。本文書のコンテキストでは、「非一時的コンピュータ可読記憶媒体」は、命令実行システム、装置、又はデバイスで用いるために又はそれと共にプログラムを格納又は記憶できる任意の媒体であってもよい。
【0040】
周辺機器インターフェース218を用いて、CPU220とメモリ202にデバイスの入出力周辺機器を結合できる。一つ以上のプロセッサ220は、メモリ202に記憶した様々なソフトウェアプログラム及び/又は命令セットを起動又は実行し、デバイス200用の様々な機能を実行してデータを処理する。いくつかの実施形態では、周辺機器インターフェース218、CPU220、及びメモリコントローラ222は、チップ204等の単一チップ上に実現できる。いくつかの他の実施形態では、それらは別個のチップ上に実現してもよい。
【0041】
RF(高周波)回路208は、電磁信号とも呼ばれるRF信号を送受信する。RF回路208は、電気信号と電磁信号を相互に変換し、電磁信号を介して通信ネットワーク及び他の通信デバイスと通信を行う。RF回路208は任意選択的に、これらの機能を実行する既知の回路を含み、アンテナシステム、RF送受信機、一つ以上の増幅器、チューナ、一つ以上の発信器、デジタル信号プロセッサ、コーデックチップセット、加入者識別モジュール(SIM)カード、メモリ等を含むが、それらには限定されない。RF回路208は任意選択的に、ワールドワイドウェブ(WWW)とも呼ばれるインターネット、イントラネット等のネットワーク、及び/又はセルラ電話ネットワーク、無線ローカルエリアネットワーク(LAN)及び/又は都市規模ネットワーク(MAN)、及び無線通信による他のデバイス等の無線ネットワークと通信を行う。RF回路208は任意選択的に、短距離通信ラジオ等によって近距離通信(NFC)場を検出する既知の回路を含む。無線通信は任意選択的に、複数の通信規格、プロトコル、及び技術のいずれかを用い、移動通信用のグローバルシステム(GSM)、拡張データGSM環境(EDGE)、高速ダウンリンクパケットアクセス(HSDPA)、高速アップリンクパケットアクセス(HSUPA)、エボリューションデータオンリー(EV-DO)、HSPA、HSPA+、デュアルセルHSPA(DC-HSPDA)、ロングタームエボリューション(LTE)、近距離通信(NFC)、広帯域符号分割多元接続(W-CDMA)、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、Bluetooth、Bluetooth Low Energy(BTLE)、Wireless Fidelity(Wi-Fi)(例えば、IEEE802.11a、IEEE802.11b、IEEE802.11g、IEEE802.11n、及び/又はIEEE802.11ac)、ボイスオーバーインターネットプロトコル(VoIP)、Wi-MAX、電子メール用のプロトコル(例えば、インターネットメッセージアクセスプロトコル(IMAP)及び/又はポストオフィスプロトコル(POP))、インスタントメッセージング(例えば、拡張可能なメッセージング及びプレゼンスプロトコル(XMPP)、インスタントメッセージング及びプレゼンスイベントパッケージのためのセッション開始プロトコル(SIMPLE)、インスタントメッセージング及びプレゼンスサービス(IMPS))、及び/又はショートメッセージサービス(SMS)、又は本文書の出願日時点ではまだ開発されていない通信プロトコルを含む任意の他の適切な通信プロトコルを含むが、それらには限定されない。
【0042】
オーディオ回路210、スピーカ211、及びマイクロホン213は、ユーザとデバイス200の間にオーディオインタフェースを提供する。オーディオ回路210は、周辺機器インターフェース218からオーディオデータを受信し、オーディオデータを電気信号に変換し、電気信号をスピーカ211に送信する。スピーカ211は、電気信号を人間が聞こえる音波に変換する。また、オーディオ回路210は、音波からマイクロホン213によって変換された電気信号を受信する。オーディオ回路210は電気信号をオーディオデータに変換し、処理用の周辺機器インターフェース218にオーディオデータを送信する。オーディオデータは、周辺機器インターフェース218によってメモリ202及び/又はRF回路208から取り出しても、そこに送信してもよい。また、いくつかの実施形態では、オーディオ回路210はヘッドセットジャック(例えば、図3の312)を含む。ヘッドセットジャックは、オーディオ回路210と、出力のみのヘッドホン又は出力(例えば、片耳又は両耳用のヘッドフォン)及び入力(例えば、マイクロホン)の両方を備えたヘッドセット等の着脱可能なオーディオ入出力周辺機器との間にインターフェースを提供する。
【0043】
I/Oサブシステム206は、タッチスクリーン212及び他の入力コントロールデバイス216等のデバイス200上の入出力周辺機器を周辺機器インターフェース218に結合する。I/Oサブシステム206は任意選択的に、ディスプレイコントローラ256、光センサコントローラ258、強度センサコントローラ259、触覚フィードバックコントローラ261、及び他の入力又は制御デバイス用の一つ以上の入力コントローラ260を含む。一つ以上の入力コントローラ260は、他の入力コントロールデバイス216と電気信号を送受信する。他の入力コントロールデバイス216は任意選択的に、物理ボタン(例えば、プッシュボタン、ロッカボタン等)、ダイヤル、スライダスイッチ、ジョイスティック、クリックホイール等を含む。いくつかの代替実施形態では、入力コントローラ260は任意選択的に、キーボード、赤外線ポート、USBボート、及びマウス等のポインタデバイスのいずれかに結合される(又はなくてもよい)。一つ以上のボタン(例えば、図3の308)は任意選択的に、スピーカ211及び/又はマイクロホン213の音量コントロール用のアップ/ダウンボタンを含む。一つ以上のボタンは任意選択的に、プッシュボタン(例えば、図3の306)を含む。
【0044】
プッシュボタンを素早く押すことで、タッチスクリーン212のロックを外すことも、米国特許出願11/322,549の「ロック解除画像上でジェスチャを行うことによるデバイスのロック解除」、出願日2005年12月23日、米国特許番号7,657,849に述べられているように、デバイスのロック解除を行うためにタッチスクリーン上のジェスチャを用いる処理を開始することもでき、この出願は、全体として参照によって組み込まれる。プッシュボタン(例えば、306)をより長く押すことで、デバイス200の電源をオン又はオフにすることもできる。ユーザは、一つ以上のボタンの機能をカスタマイズすることもできる。タッチスクリーン212を用いて、仮想又はソフトボタン及び一つ以上のソフトキーボードを実現できる。
【0045】
タッチ感知ディスプレイ212は、デバイスとユーザの間に入力インターフェース及び出力インターフェースを提供する。ディスプレイコントローラ256は、タッチスクリーン212と電気信号の送受信を行う。タッチスクリーン212は、ユーザに視覚出力を提供する。視覚出力は、グラフィクス、テキスト、アイコン、ビデオ、及びそれらの任意の組合せ(まとめて「グラフィクス」と呼ぶ)を含んでいてもよい。いくつかの実施形態では、視覚出力の一部又は全ては、ユーザインタフェースオブジェクトに対応してもよい。
【0046】
タッチスクリーン212は、触覚及び/又は触知接触に基づいてユーザからの入力を受信するタッチ感知面、センサ、又はセンサセットを有する。タッチスクリーン212及びディスプレイコントローラ256は(任意の関連のモジュール及び/又はメモリ202内の命令セットと共に)、タッチスクリーン212上の接触(及び接触の任意の移動又は中断)を検出し、検出した接触を、タッチスクリーン212上に表示されるユーザインタフェースオブジェクト(例えば、一つ以上のソフトキー、アイコン、ウェブページ、又は画像)とのインタラクションに変換する。一例の実施形態では、タッチスクリーン212とユーザの間の接触点はユーザの指に対応する。
【0047】
タッチスクリーン212は、LCD(液晶ディスプレイ)技術、LPD(発光ポリマーディスプレイ)技術、又はLED(発光ダイオード)技術を用いてもよいが、他の実施形態では他のディスプレイ技術を用いてもよい。タッチスクリーン212とディスプレイコントローラ256は、容量式、抵抗式、赤外線、及び表面音響波技術、並びに他の近接センサアレイ又は他の素子を含むがそれらには限定されない、現在既知の又は後に開発される複数のタッチ感知技術のいずれかを用いて、接触及びその任意の移動又は中断を検出し、タッチスクリーン212との一つ以上の接触点を決定できる。一例の実施形態では、カリフォルニア州、クパチーノのApple Inc.からのiPhone(登録商標)及びiPod Touch(登録商標)内に見いだされるもの等の、投影型相互静電容量感知技術が用いられる。
【0048】
タッチスクリーン212のいくつかの実施形態のタッチ感知ディスプレイは、次の米国特許6,323,846(Westermanなど)、6,570,557(Westermanなど)、及び/又は6,677,932(Westerman)、及び/又は米国特許公報2002/0015024A1に述べられているマルチタッチ感知タッチパッドと同様であってもよく、それらは各々、ここで全体として参照によって組み込まれる。しかし、タッチスクリーン212はデバイス200からの視覚出力を表示するが、タッチ感知タッチパッドは視覚出力を提供しない。
【0049】
タッチスクリーン212のいくつかの実施形態のタッチ感知ディスプレイは、(1)米国特許出願第11/381,313号の「Multipoint Touch Surface Controller」、出願日2006年5月2日、(2)米国特許出願第10/840,862号の「Multipoint Touchscreen」、出願日2004年5月6日、(3)米国特許出願第10/903,964号の「Gestures For Touch Sensitive Input Devices」、出願日2004年7月30日、(4)米国特許出願第11/048,264号の「Gestures For Touch Sensitive Input Devices」、出願日2005年1月31日、(5)米国特許出願第11/038,590号の「Mode-Based Graphical User Interfaces For Touch Sensitive Input Devices」、出願日2005年1月18日、(6)米国特許出願第11/228,758号の「Virtual Input Device Placement On A Touch Screen User Interface」、出願日2005年9月16日、(7)米国特許出願第11/228,700号の「Operation Of A Computer With A Touch Screen Interface」、出願日2005年9月16日、(8)米国特許出願第11/228,737号の「Activating Virtual Keys Of A Touch-Screen Virtual Keyboard」、出願日2005年9月16日、及び(9)米国特許出願第11/367,749号の「Multi-Functional Hand-Held Device」、出願日2006年3月3日等の出願に述べられたものであってもよい。これらの出願の全ては、全体として本明細書に参照によって組み込まれる。
【0050】
タッチスクリーン212は、100dpi(約3937ドット/m)を超えるビデオ解像度を有する。いくつかの実施形態では、タッチスクリーンは約160dpi(約6299ドット/m)のビデオ解像度を有する。ユーザは、スタイラス、指等の任意の適切なオブジェクト又は付属物を用いて、タッチスクリーン212に接触してもよい。いくつかの実施形態では、ユーザインタフェースは、最初に指ベースの接触及びジェスチャで動作するように設計され、それは、タッチスクリーン上の指の接触面積がより大きいため、スタイラスベースの入力より不正確になる可能性がある。いくつかの実施形態では、粗い指ベースの入力を正確なポインタ/カーソル位置又はコマンドに変換し、ユーザが望むアクションを実行する。
【0051】
いくつかの実施形態では、タッチスクリーンに加えて、デバイス200は、特定の機能の起動又は停止用のタッチパッド(図示せず)を含んでいてもよい。いくつかの実施形態では、タッチパッドは、タッチスクリーンとは異なり、視覚出力を表示しないデバイスのタッチ感知エリアである。タッチパッドは、タッチスクリーン212とは別個のタッチ感知面であっても、タッチスクリーンによって形成されるタッチ感知面の拡張部であってもよい。
【0052】
また、デバイス200は様々な構成要素を駆動する電力システム262を含む。電力システム262は、電力管理システム、一つ以上の電源(例えば、バッテリ、交流(AC))、充電システム、電力故障検出回路、電力変換器又はインバータ、電力状態インジケータ(例えば、発光ダイオード(LED))及びポータブルデバイス内の電力の生成、管理及び分配に関連した任意の他の構成要素を含んでいてもよい。
【0053】
デバイス200は、一つ以上の光センサ264を含んでいてもよい。図2Aは、I/Oサブシステム206内の光センサコントローラ258に結合された光センサを示す。光センサ264は、電荷結合デバイス(CCD)又は相補的金属酸化物半導体(CMOS)フォトトランジスタを含んでいてもよい。光センサ264は、環境からの光を受信し、一つ以上のレンズを介して投射し、画像を表すデータに光を変換する。撮像モジュール243(カメラモジュールとも呼ばれる)と共に、光センサ264は静止画像又はビデオを捕捉できる。いくつかの実施形態では、光センサは、デバイスの前面のタッチスクリーンディスプレイ212の逆側のデバイス200の背面に配置され、タッチスクリーンディスプレイが静止画像及び/又はビデオ画像取得用のビューファインダとして使用できるようにする。いくつかの実施形態では、光センサはデバイスの前面に配置され、ユーザがタッチスクリーンディスプレイ上の他のテレビ会議参加者を観察している間、ユーザの画像がテレビ会議用に入手されるようにする。いくつかの実施形態では、光センサ264の位置はユーザによって変更可能であり(デバイスハウジング内のレンズ及びセンサを回転させることによって)、テレビ会議と静止及び/又はビデオ画像取得の両方に、タッチスクリーンディスプレイと共に光センサ264を使用できる。
【0054】
また、デバイス200は任意選択的に、一つ以上の接触強度センサ265を含む。図2Aは、I/Oサブシステム206内の強度センサコントローラ259に結合した接触強度センサを示す。接触強度センサ265は任意選択的に、一つ以上のピエゾ抵抗ひずみゲージ、容量式力センサ、電気力センサ、圧電力センサ、光力センサ、容量式タッチ感知面、又は他の強度センサ(例えば、タッチ感知面上の接触の力(又は圧力)の測定に用いられるセンサ)を含む。接触強度センサ265は、環境から接触強度情報(例えば、圧力情報又は圧力情報の代用物)を受信する。いくつかの実施形態では、少なくとも一つの接触強度センサは、タッチ感知面(例えば、タッチ感知ディスプレイシステム212)に連結させるか、又は近接させる。いくつかの実施形態では、少なくとも一つの接触強度センサは、デバイス200の前面に配置されるタッチスクリーンディスプレイ212の逆側のデバイス200の背面に配置される。
【0055】
デバイス200は、一つ以上の近接センサ266を含んでいてもよい。図2Aは、周辺機器インターフェース218に結合した近接センサ266を示す。若しくは、近接センサ266は、I/Oサブシステム206内の入力コントローラ260に結合できる。近接センサ266は、米国特許出願第11/241,839号の「Proximity Detector In Handheld Device」、11/240,788号の「Proximity Detector In Handheld Device」、11/620,702号の「Using Ambient Light Sensor To Augment Proximity Sensor Output」、11/586、862号の「Automated Response To And Sensing Of User Activity In Portable Devices」、及び11/638,251号の「Methods And Systems For Automatic Configuration Of Peripherals」に述べられているように機能し、それらはここで全体として参照によって組み込まれる。いくつかの実施形態では、多機能デバイスがユーザの耳の近傍に配置されたとき(例えば、ユーザが電話を行うとき)、近接センサはタッチスクリーン212をオフにし停止させる。
【0056】
また、デバイス200は任意選択的に、一つ以上の触知出力生成器267を含む。図2Aは、I/Oサブシステム206内の触覚フィードバックコントローラ261に結合した触知出力生成器を示す。触知出力生成器267は任意選択的に、スピーカ又は他のオーディオ構成要素等の一つ以上の電気音響デバイス、及び/又はモータ、ソレノイド、電気活性ポリマー、圧電アクチュエータ、静電アクチュエータ、又は他の触知出力生成構成要素(例えば、電気信号をデバイス上の触知出力に変換する構成要素)等のエネルギを直線運動に変換する電気機械的デバイスを含む。接触強度センサ265は、触覚フィードバックモジュール233から触知フィードバック生成命令を受信し、デバイス200のユーザによって感知可能なデバイス200上の触知出力を生成する。いくつかの実施形態では、少なくとも一つの触知出力生成器は、タッチ感知面(例えば、タッチ感知ディスプレイシステム212)に連結させるか、又は近接させ、任意選択的に、タッチ感知面を垂直に(例えば、デバイス200の表面の内外に)又は水平に(例えば、デバイス200の表面と同じ面で前後に)移動させることによって触知出力を生成する。いくつかの実施形態では、少なくとも一つの触知出力生成器センサは、デバイス200の前面に配置されるタッチスクリーンディスプレイ212の逆側のデバイス200の背面に配置される。
【0057】
デバイス200は、一つ以上の加速度計268を含んでいてもよい。図2Aは、周辺機器インターフェース218に結合した加速度計268を示す。若しくは、加速度計268は、I/Oサブシステム206内の入力コントローラ260に結合できる。加速度計268は、米国特許出願公開第20050190059号の「ポータブル電子デバイス用の加速度ベースの盗難検出システム」、及び米国特許出願公開第20060017692号の「加速度計に基づいてポータブルデバイスを操作する方法及び装置」に述べられているように機能でき、これらは両方とも、全体として本明細書に参照によって組み込まれる。いくつかの実施形態では、一つ以上の加速度計から受信したデータの解析に基づいて、縦長表示又は横長表示でタッチスクリーンディスプレイに情報が表示される。デバイス200は任意選択的に、加速度計268に加えて、磁気計(図示せず)及びGPS(又はGLONASS又は他の全地球航法システム)受信機(図示せず)を含み、デバイス200の位置及び向き(例えば、縦長又は横長)に関する情報を入手する。
【0058】
いくつかの実施形態では、メモリ202に記憶されるソフトウェア構成要素は、オペレーティングシステム226、通信モジュール(又は命令セット)228、接触/動きモジュール(又は命令セット)230、グラフィクスモジュール(又は命令セット)232、テキスト入力モジュール(又は命令セット)234、全地球測位システム(GPS)モジュール(又は命令セット)235、デジタルアシスタントクライアントモジュール229、及びアプリケーション(又は命令セット)236を含む。更に、メモリ202は、ユーザデータ及びモデル231等のデータ及びモデルを記憶できる。その上、いくつかの実施形態では、メモリ202(図2A)又は470(図4)は、図2Aと4に示したように、デバイス/グローバル内部状態257を記憶する。デバイス/グローバル内部状態257は、もしあれば、どのアプリケーションが現在アクティブであるかを示すアクティブアプリケーション状態、どのアプリケーション、ビュー又は他の情報がタッチスクリーンディスプレイ212の様々な領域を占有しているかを示す表示状態、デバイスの様々なセンサ及び入力コントロールデバイス216から入手した情報を含むセンサ状態、及びデバイスの位置及び/又は姿勢に関する位置情報の一つ以上を含む。
【0059】
オペレーティングシステム226(例えば、Darwin、RTXC、Linux、UNIX、OS X、iOS、Windows、又はVxWorks等の組込みオペレーティングシステム)は、一般的なシステムタスク(例えば、メモリ管理、記憶装置制御、電源管理等)の制御及び管理を行う様々なソフトウェア構成要素及び/又はドライバを含み、様々なハードウェア及びソフトウェア構成要素の間の通信を容易にする。
【0060】
通信モジュール228は、一つ以上の外部ポート224上の他のデバイスとの通信を容易にし、また、RF回路208及び/又は外部ポート224によって受信するデータを処理する様々なソフトウェア構成要素を含む。外部ポート224(例えば、ユニバーサルシリアルバス(USB)、FIREWIREなど)は、他のデバイスと直接、又はネットワーク(例えば、インターネット、無線LAN等)上で間接的に結合するように適応させる。いくつかの実施形態では、外部ポートは、iPod(Apple Inc.の登録商標)デバイスで用いられる30ピンコネクタと同一又は同様及び/又は互換性のあるマルチピン(例えば、30ピン)コネクタである。
【0061】
接触/動きモジュール230は任意選択的に、タッチスクリーン212(ディスプレイコントローラ256と共に)及び他のタッチ感知デバイス(例えば、タッチパッド又は物理クリックホイール)との接触を検出する。接触/動きモジュール230は、接触が発生したかどうかを判定すること(例えば、指を下げるイベントを検出すること)、接触強度(例えば、接触力又は圧力、若しくは接触力又は圧力の代用物)を判定すること、接触の移動があるかどうかを判定してタッチ感知面全体で移動を追跡すること(例えば、一つ以上の指でドラグするイベントを検出すること)、接触が終わったかどうかを判定すること(例えば、指を上げるイベント又は接触の中断を検出すること)等の接触の検出に関連した様々な動作を実行する様々なソフトウェア構成要素を含む。接触/動きモジュール230は、タッチ感知面から接触データを受信する。一連の接触データによって表される接触点の動きを判定することは任意選択的に、接触点の速さ(大きさ)、速度(大きさ及び方向)、及び/又は加速度(大きさ及び/又は方向の変化)を判定することを含む。これらの操作は、任意選択的に、単一接点(例えば、一つの指の接触)又は複数の同時の接触(例えば、「マルチタッチ」/複数の指の接触)に適用される。いくつかの実施形態では、接触/動きモジュール230及びディスプレイコントローラ256はタッチパッド上の接触を検出する。
【0062】
いくつかの実施形態では、接触/動きモジュール230は一つ以上の強度閾値セットを用いて、操作がユーザによって行われたかどうかを判定する(例えば、ユーザがアイコン上を「クリック」したかどうかを判定する)。いくつかの実施形態では、強度閾値の少なくともサブセットは、ソフトウェアパラメータ従って判定され(例えば、強度閾値は特定の物理アクチュエータの起動閾値によっては判定されず、デバイス200の物理ハードウェアを変更することなく調整できる)。例えば、トラックパッド又はタッチスクリーンディスプレイのマウス「クリック」閾値は、トラックパッド又はタッチスクリーンディスプレイハードウェアを変更することなく、所定の閾値の大きな範囲のいずれかに設定できる。加えて、いくつかの実施形態では、デバイスのユーザにソフトウェア設定を提供し、(例えば、システムレベルのクリック「強度」パラメータを用いて直ちに個別の強度閾値及び/又は複数の強度閾値を調整することによって)一つ以上の強度閾値セットを調整する。
【0063】
接触/動きモジュール230は任意選択的に、ユーザによるジェスチャ入力を検出する。タッチ感知面上の異なるジェスチャは、異なる接触パターン(例えば、異なる動き、タイミング、及び/又は検出される接触強度)を有する。従って、ジェスチャは、任意選択的に、特定の接触パターンを検出することによって検出される。例えば、指でタップするジェスチャを検出することは、指を下げるイベントを検出した後、指を下げるイベントと同じ位置(又は実質的に同じ位置)で(例えば、アイコンの位置で)指を上げる(リフトオフ)イベントを検出することを含む。別の例として、タッチ感知面を指でスワイプするジェスチャは、指を下げるイベントを検出した後、一つ以上の指をドラグするイベントを検出し、続いて指を上げる(リフトオフ)イベントを検出することを含む。
【0064】
グラフィクスモジュール232は、タッチ画面212又は他のディスプレイ上でグラフィクスの描画及び表示を行う様々な既知のソフトウェア構成要素を含み、表示されるグラフィクスの視覚的影響(例えば、輝度、透明性、彩度、コントラスト、又は他の視覚的特性)を変更する構成要素を含む。本明細書で用いられる際、用語「グラフィクス」は、ユーザに表示可能な任意のオブジェクトを含み、制限なしで、テキスト、ウェブページ、アイコン(ソフトキーを含むユーザインタフェースオブジェクト等)、デジタル画像、ビデオ、アニメーション等を含む。
【0065】
いくつかの実施形態では、グラフィクスモジュール232は、用いられるグラフィクスを表すデータを記憶する。各グラフィックには、任意選択的に、対応するコードが割り当てられる。グラフィクスモジュール232は、アプリケーション等から、必要に応じて、座標データ及び他のグラフィック特性データと共に、表示されるグラフィクスを指定する一つ以上のコードを受信し、その後、スクリーン画像データを生成し、ディスプレイコントローラ256に出力する。
【0066】
触覚フィードバックモジュール233は、触知出力生成器267によって用いられる命令を生成する様々なソフトウェア構成要素を含み、デバイス200とのユーザ対話に応じて、デバイス200上の一つ以上の位置に触知出力を生成する。
【0067】
テキスト入力モジュール234は、グラフィクスモジュール232の構成要素であってもよく、様々なアプリケーション(例えば、コンタクト237、電子メール240、IM241、ブラウザ247、及びテキスト入力を必要とする任意の他のアプリケーション)にテキストを入力するソフトキーボードを提供する。
【0068】
GPSモジュール235はデバイスの位置を判定し、様々なアプリケーションで使用するために(例えば、位置ベースのダイヤリングで用いるために電話238に、ピクチャ/ビデオメタデータとしてカメラ243に、及び気象ウィジェット、ローカルイエローページウィジェット、及び地図/ナビゲーションウィジェット等の位置ベースのサービスを提供するアプリケーションに)この情報を提供する。
【0069】
デジタルアシスタントクライアントモジュール229は、様々なクライアント側デジタルアシスタント命令を含み、デジタルアシスタントのクライアント側機能を提供できる。例えば、デジタルアシスタントクライアントモジュール229は、ポータブル多機能デバイス200の様々なユーザインタフェース(例えば、マイクロホン213、加速度計268、タッチ感知ディスプレイシステム212、光センサ229、他の入力コントロールデバイス216等)を介して、音声入力(例えば、スピーチ入力)、テキスト入力、タッチ入力、及び/又はジェスチャ入力を受信可能にする。デジタルアシスタントクライアントモジュール229は、ポータブル多機能デバイス200の様々な出力インターフェース(例えば、スピーカ211、タッチ感知ディスプレイシステム212、触知出力生成器267等)を介して、オーディオ(例えば、スピーチ出力)、視覚及び/又は触知形態の出力を提供することもできる。例えば、出力は、音声、サウンド、アラート、テキストメッセージ、メニュー、グラフィクス、ビデオ、アニメーション、振動、及び/又は以上の二つ以上の組合せとして提供することもできる。動作中、デジタルアシスタントクライアントモジュール229は、RF回路208を用いてDAサーバ106と通信を行うことができる。
【0070】
ユーザデータ及びモデル231は、ユーザに関連した様々なデータ(例えば、ユーザ固有の語彙データ、ユーザ嗜好データ、ユーザ固有の名前の発音、ユーザの電子アドレス帳からのデータ、To-Doリスト、ショッピングリスト等)を含み、デジタルアシスタントのクライアント側機能を提供できる。更に、ユーザデータ及びモデル231は、ユーザ入力を処理してユーザの意図を判定する様々なモデル(例えば、音声認識モデル、統計的言語モデル、自然言語処理モデル、オントロジ、タスクフローモデル、サービスモデル等)を含むことができる。
【0071】
いくつかの例では、デジタルアシスタントクライアントモジュール229は、ポータブル多機能デバイス200の様々なセンサ、サブシステム、及び周辺機器を利用して、ポータブル多機能デバイス200の周囲環境から追加の情報を収集し、ユーザ、現在のユーザ対話、及び現在のユーザ入力に関連したコンテキストを確立できる。いくつかの例では、デジタルアシスタントクライアントモジュール229は、DAサーバ106へのユーザ入力にコンテキスト情報又はそのサブセットを提供し、ユーザの意図の推測に役立たせることができる。いくつかの例では、デジタルアシスタントはコンテキスト情報を用いて、ユーザへの出力を準備して送出する方法を判定することもできる。コンテキスト情報は、コンテキストデータと呼ぶこともできる。
【0072】
いくつかの例では、ユーザ入力に付随するコンテキスト情報は、例えば、照明、周囲雑音、周囲温度、周囲環境の画像又はビデオ等のセンサ情報を含むことができる。いくつかの例では、コンテキスト情報は、例えば、デバイスの向き、デバイスの位置、デバイスの温度、電力レベル、速さ、加速度、動きのパターン、セルラ信号強度等のデバイスの物理状態を含むこともできる。いくつかの例では、DAサーバ106のソフトウェア状態に関連した情報、例えば、ポータブル多機能デバイス200の実行処理、インストールプログラム、過去及び現在のネットワークアクティビティ、バックグラウンドサービス、エラーログ、リソース使用量等は、ユーザ入力に関連したコンテキスト情報としてDAサーバ106に提供することもできる。
【0073】
いくつかの例では、デジタルアシスタントクライアントモジュール229は、DAサーバ106からのリクエストに応じて、ポータブル多機能デバイス200上に記憶される情報(例えば、ユーザデータ231)を選択的に提供できる。いくつかの例では、デジタルアシスタントクライアントモジュール229は、DAサーバ106によるリクエスト時の自然言語ダイアログ又は他のユーザインタフェースを介して、ユーザから追加の入力を引き出すこともできる。デジタルアシスタントクライアントモジュール229は、追加の入力をDAサーバ106に渡し、ユーザリクエストに表された意図の推論及び/又はユーザの意図の実現においてDAサーバ106を手助けできる。
【0074】
デジタルアシスタントのより詳細な説明は、図7A~Cを参照しながら以降で説明する。当然のことながら、デジタルアシスタントクライアントモジュール229は、以降で説明するデジタルアシスタントモジュール726の任意の数のサブモジュールを含むことができる。
【0075】
アプリケーション236は、以降のモジュール(又は命令セット)、又はそのサブセット又はスーパーセットを含んでいてもよい。
●コンタクトモジュール237(アドレス帳又はコンタクトリストとも呼ばれる)
●電話モジュール238
●テレビ会議モジュール239
●電子メールクライアントモジュール240
●インスタントメッセージング(IM)モジュール241
●ワークアウト支援モジュール242
●静止画及びビデオ画像用のカメラモジュール243
●画像管理モジュール244
●ビデオプレーヤモジュール
●音楽プレーヤモジュール
●ブラウザモジュール247
●カレンダモジュール248
●ウィジェットモジュール249(気象ウィジェット249-1、株式ウィジェット249-2、計算機ウィジェット249-3、アラームクロックウィジェット249-4、辞書ウィジェット249-5、及びユーザが入手した他のウィジェット並びにユーザ作成ウィジェット249-6の一つ以上を含むことができる。)
●ユーザ作成ウィジェット249-6を作成するためのウィジェットクリエータモジュール250
●検索モジュール251
●ビデオプレーヤモジュールと音楽プレーヤモジュールを融合したビデオ及び音楽プレーヤモジュール252
●メモモジュール253
●地図モジュール254及び/又は
●オンラインビデオモジュール255
【0076】
メモリ202内に記憶可能な他のアプリケーション236の例は、他のワードプロセッシングアプリケーション、他の画像編集アプリケーション、描画アプリケーション、プレゼンテーションアプリケーション、Java(登録商標)対応アプリケーション、暗号化、デジタル著作権管理、音声認識、音声複製を含む。
【0077】
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、及びテキスト入力モジュール234と共に、コンタクトモジュール237を用いて、アドレス帳又はコンタクトリスト(例えば、メモリ202又はメモリ470内のコンタクトモジュール237のアプリケーション内部状態292に記憶される)を管理してもよく、それは、アドレス帳への名前の追加、アドレス帳からの名前の削除、電話番号、電子メールアドレス、実際の住所又は他の情報と名前の関連付け、画像と名前の関連付け、名前の分類及びソート、電話番号又は電子メールアドレスを提供し、電話238、テレビ会議モジュール239、電子メール240、又はIM241による通信を開始及び/又は容易にすること等を含む。
【0078】
RF回路208、オーディオ回路210、スピーカ211、マイクロホン213、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、及びテキスト入力モジュール234と共に、電話モジュール238を用いて、電話番号に対応する文字のシーケンスを入力し、コンタクトモジュール237内の一つ以上の電話番号にアクセスし、入力された電話番号を修正し、各電話番号をダイヤルし、会話を行い、会話が完了したら切断又は電話を切ることもできる。上記のように、無線通信は、複数の通信規格、プロトコル、及び技術のいずれかを使用できる。
【0079】
RF回路208、オーディオ回路210、スピーカ211、マイクロホン213、タッチスクリーン212、ディスプレイコントローラ256、光センサ264、光センサコントローラ258、接触/動きモジュール230、グラフィクスモジュール232、テキスト入力モジュール234、コンタクトモジュール237、及び電話モジュール238と共に、テレビ会議モジュール239は、ユーザ命令に従って、ユーザと一人以上の他の参加者との間のテレビ会議の開始、実行及び終了を行う実行可能命令を含む。
【0080】
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、及びテキスト入力モジュール234と共に、電子メールクライアントモジュール240は、ユーザ命令に応じて電子メールの作成、送信、受信及び管理を行う実行可能命令を含む。画像管理モジュール244と共に、電子メールクライアントモジュール240は、カメラモジュール243で撮影した静止画又はビデオ画像付きの電子メールの作成及び送信を非常に容易にする。
【0081】
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、及びテキスト入力モジュール234と共に、インスタントメッセージングモジュール241は、インスタントメッセージに対応する文字のシーケンスを入力し、以前に入力した文字を修正し、各インスタントメッセージを送信し(例えば、電話ベースのインスタントメッセージ用のショートメッセージサービス(SMS)又はマルチメディアメッセージサービス(MMS)プロトコルを用いて、又はインターネットベースのインスタントメッセージ用のXMPP、SIMPLE、又はIMPSを用いて)、インスタントメッセージを受信し、受信したインスタントメッセージを表示する実行可能命令を含む。いくつかの実施形態では、送信及び/又は受信されるインスタントメッセージは、MMS及び/又は拡張メッセージングサービス(EMS)でサポートされるように、グラフィクス、写真、オーディオファイル、ビデオファイル及び/又は他の添付物を含んでいてもよい。本明細書で用いられる際、「インスタントメッセージング」は、電話ベースのメッセージ(例えば、SMS又はMMSを用いて送信されたメッセージ)とインターネットベースのメッセージ(例えば、XMPP、SIMPLE、又はIMPSを用いて送信されたメッセージ)の両方を指す。
【0082】
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、テキスト入力モジュール234、GPSモジュール235、地図モジュール254、及び音楽プレーヤモジュールと共に、ワークアウトサポートモジュール242は、(例えば、時間、距離、及び/又はカロリー燃焼目標を用いて)ワークアウトを作成し、ワークアウトセンサ(スポーツデバイス)と通信を行い、ワークアウトセンサデータを受信し、ワークアウトの監視に用いられるセンサを校正し、ワークアウト用の音楽の選択及び再生を行い、ワークアウトデータの表示、記憶、及び送信を行う実行可能命令を含む。
【0083】
タッチスクリーン212、ディスプレイコントローラ256、光センサ264、光センサコントローラ258、接触/動きモジュール230、グラフィクスモジュール232、及び画像管理モジュール244と共に、カメラモジュール243は、静止画又はビデオ(ビデオストリームを含む)を捕捉し、それらをメモリ202に記憶し、静止画又はビデオの特性を修正し、又はメモリ202から静止画又はビデオを削除する実行可能命令を含む。
【0084】
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、テキスト入力モジュール234、及びカメラモジュール243と共に、画像管理モジュール244は、静止画及び/又はビデオ画像の配置、修正(例えば、編集)、若しくは操作、ラベル付け、削除、提示(例えば、デジタルスライドショー又はアルバム内に)、及び記憶を行う実行可能命令を含む。
【0085】
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、及びテキスト入力モジュール234と共に、ブラウザモジュール247は、ユーザ命令に従ってインターネットをブラウズする実行可能命令を含み、それは、ウェブページ又はその一部、並びにウェブページにリンクされた添付物及び他のファイルの検索、リンク、受信、及び表示を含む。
【0086】
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、テキスト入力モジュール234、電子メールクライアントモジュール240、及びブラウザモジュール247と共に、カレンダモジュール248は、ユーザ命令に従って、カレンダー及びカレンダーに関連したデータ(カレンダーエントリ、To-Doリスト等)の作成、表示、修正、及び記憶を行う実行可能命令を含む。
【0087】
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、テキスト入力モジュール234、及びブラウザモジュール247と共に、ウィジェットモジュール249は、ユーザによってダウンロード及び使用可能なミニアプリケーション(例えば、気象ウィジェット249-1、株式ウィジェット249-2、計算機ウィジェット249-3、アラームクロックウィジェット249-4、及び辞書ウィジェット249-5)又はユーザによって作成できるミニアプリケーション(例えば、ユーザ作成ウィジェット249-6)である。いくつかの実施形態では、ウィジェットはHTML(ハイパーテキストマークアップ言語)ファイル、CSS(カスケーディングスタイルシート)ファイル、及びJavaScript(登録商標)ファイルを含む。いくつかの実施形態では、ウィジェットはXML(拡張マークアップ言語)ファイル及びJavaScriptファイル(例えば、Yahoo!Widget)を含む。
【0088】
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、テキスト入力モジュール234、及びブラウザモジュール247と共に、ウィジェットクリエータモジュール250は、ユーザによって用いられ、ウィジェットを作成できる(例えば、ウェブページのユーザ指定部分をウィジェット内に差し込む)。
【0089】
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、及びテキスト入力モジュール234と共に、検索モジュール251は、ユーザ命令に従って一つ以上の検索基準(例えば、一つ以上のユーザ指定の検索項目)に一致するテキスト、音楽、音声、画像、ビデオ、及び/又は他のファイルをメモリ202内で検索する実行可能命令を含む。
【0090】
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、オーディオ回路210、スピーカ211、RF回路208、及びブラウザモジュール247と共に、ビデオ及び音楽プレーヤモジュール252は、ユーザが、MP3又はAACファイル等の一つ以上のファイルフォーマットで記憶された音楽及び他の音声ファイルをダウンロード及び再生可能にする実行可能命令、及び(例えば、タッチスクリーン212上又は外部ポート224を介して接続された外部のディスプレイ上への)ビデオの表示、提示、若しくは再生を行う実行可能命令を含む。いくつかの実施形態では、デバイス200は任意選択的に、iPod(Apple Inc.の登録商標)等のMP3プレーヤの機能を含む。
【0091】
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、及びテキスト入力モジュール234と共に、メモモジュール253は、ユーザ命令に従ってメモ、To-Doリスト等の作成及び管理を行う実行可能命令を含む。
【0092】
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、テキスト入力モジュール234、GPSモジュール235、及びブラウザモジュール247と共に、地図モジュール254を用いて、ユーザ命令に従って地図及び地図に関連したデータ(例えば、運転案内、店舗及び特定の位置又はその近傍の所望の他の点におけるデータ、及び他の位置ベースのデータ)の受信、表示、修正及び記憶を行うことができる。
【0093】
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィクスモジュール232、オーディオ回路210、スピーカ211、RF回路208、テキスト入力モジュール234、電子メールクライアントモジュール240、及びブラウザモジュール247と共に、オンラインビデオモジュール255は、ユーザがアクセス、ブラウズ、受信を行い(例えば、ストリーミング及び/又はダウンロードによって)、再生し(タッチスクリーン上又は外部ポート224を介して接続された外部ディスプレイ上)、特定のオンラインビデオへのリンクを備えた電子メールを送信し、若しくはH.264等の一つ以上のファイルフォーマットでオンラインビデオを管理できる命令を含む。いくつかの実施形態では、電子メールクライアントモジュール240ではなく、インスタントメッセージングモジュール241を用いて、特定のオンラインビデオへのリンクを送信する。オンラインビデオアプリケーションの追加の説明は、米国仮特許出願第60/936,562号の「Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos」、出願日2007年6月20日、及び米国特許出願第11/968,067号の「Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos」、出願日2007年12月31日に見出されるが、これらの内容は全体として参照によって組み込まれる。
【0094】
上で識別されたモジュール及びアプリケーションは各々、上記の一つ以上の機能及び本出願で説明される方法(例えば、コンピュータ実行方法及び本明細書で説明される他の情報処理方法)を実行する実行可能命令セットに対応する。これらのモジュール(例えば、命令セット)は、別個のソフトウェアプログラム、手順、又はモジュールとして実現する必要はなく、従って、様々な実施形態では、これらのモジュールの様々なサブセットを組み合わせても、若しくは再配置してもよい。例えば、ビデオプレーヤモジュールは音楽プレーヤモジュールと単一のモジュール(例えば、図2Aのビデオ及び音楽プレーヤモジュール252)に組み合わせてもよい。いくつかの実施形態では、メモリ202は、上で識別したモジュールのサブセット及びデータ構造を記憶できる。その上、メモリ202は、上で説明していない追加のモジュール及びデータ構造を記憶できる。
【0095】
いくつかの実施形態では、デバイス200は、タッチスクリーン及び/又はタッチパッドを介してデバイス上の所定の機能セットの操作を排他的に実行するデバイスである。デバイス200の操作用の主入力コントロールデバイスとしてタッチスクリーン及び/又はタッチパッドを使用することによって、デバイス200上の物理入力コントロールデバイス(プッシュボタン、ダイヤル等)の数を低減できる。
【0096】
タッチスクリーン及び/又はタッチパッドを介して排他的に実行される所定の機能セットは任意選択的に、ユーザインタフェース間のナビゲーションを含む。いくつかの実施形態では、タッチパッドは、ユーザが触れた際、デバイス200上に表示された任意のユーザインタフェースから主メニュー、ホームメニュー、又はルートメニューにデバイス200をナビゲートする。このような実施形態では、タッチパッドを用いて「メニューボタン」を実現できる。いくつかの他の実施形態では、メニューボタンはタッチパッドの代わりの物理プッシュボタン又は他の物理入力コントロールデバイスである。
【0097】
図2Bは、いくつかの実施形態によるイベント処理用の一例の構成要素を示すブロック図である。いくつかの実施形態では、メモリ202(図2A)又は470(図4)は、イベントソータ270(例えば、オペレーティングシステム226内)及び各アプリケーション236-1(例えば、上記のアプリケーション237~251、255、480~490のいずれか)を含む。
【0098】
イベントソータ270は、イベント情報を受信し、イベント情報を送出するアプリケーション236-1及びアプリケーション236-1のアプリケーションビュー291を判定する。イベントソータ270は、イベントモニタ271とイベントディスパッチャモジュール274を含む。いくつかの実施形態では、アプリケーション236-1はアプリケーション内部状態292を含み、アプリケーションがアクティブであるか又は実行中のとき、タッチ感知ディスプレイ212上に表示される現在のアプリケーションビューを示す。いくつかの実施形態では、デバイス/グローバル内部状態257はイベントソータ270によって用いられ、どのアプリケーションが現在アクティブであるかを判定し、アプリケーション内部状態292はイベントソータ270によって用いられ、イベント情報を送出するアプリケーションビュー291を判定する。
【0099】
いくつかの実施形態では、アプリケーション内部状態292は、アプリケーション236-1が実行を再開する際に使用される再開情報、表示される情報を示す又はアプリケーション236-1による表示の準備用のユーザインタフェース状態情報、ユーザがアプリケーション236-1の前の状態又はビューに逆戻り可能にする状態キュー、及びユーザが取った前のアクションのリドゥ/アンドゥキューの一つ以上等の追加の情報を含む。
【0100】
イベントモニタ271は、周辺機器インターフェース218からイベント情報を受信する。イベント情報は、サブイベント(例えば、マルチタッチジェスチャの一部としてのタッチ感知ディスプレイ212上のユーザタッチ)についての情報を含む。周辺機器インターフェース218は、I/Oサブシステム206又は近接センサ266等のセンサ、加速器268、及び/又はマイクロホン213(オーディオ回路210を介して)から受信する情報を送信する。周辺機器インターフェース218がI/Oサブシステム206から受信する情報は、タッチ感知ディスプレイ212又はタッチ感知面から受信する情報を含む。
【0101】
いくつかの実施形態では、イベントモニタ271は、所定の間隔で周辺機器インターフェース218にリクエストを送信する。それに応じて、周辺機器インターフェース218はイベント情報を送信する。他の実施形態では、周辺機器インターフェース218は、重要なイベントがあった(例えば、所定のノイズ閾値より上、及び/又は所定の持続期間より長い入力を受信した)ときだけイベント情報を送信する。
【0102】
また、いくつかの実施形態では、イベントソータ270は、ヒットビュー判定モジュール272及び/又はアクティブイベント認識部判定モジュール273を含む。
【0103】
ヒットビュー判定モジュール272は、タッチ感知ディスプレイ212が一つより多くのビューを表示したとき、一つ以上のビュー内でサブイベントが発生した場所を判定するソフトウェア手順を提供する。ビューは、コントロール及びユーザがディスプレイ上で視認可能な他の要素からなる。
【0104】
アプリケーションに関連するユーザインタフェースの別の態様は一組のビューであり、これは本明細書においてアプリケーションビュー又はユーザインタフェースィンドウと呼ぶこともある。該ビューでは情報が表示され、タッチベースのジェスチャが行われる。タッチが検出される(各アプリケーションの)アプリケーションビューは、そのアプリケーションのプログラム又はビューの階層内のプログラムレベルに対応させてもよい。例えば、タッチ検出の最下位ビューは、例えば、ヒットビューと呼ばれ、適正入力として認識されるイベントの組は、少なくとも一部において、タッチベースのジェスチャを開始する最初のタッチのヒットビューに基づいて判定してもよい。
【0105】
ヒットビュー判定モジュール272は、タッチベースのジェスチャのサブイベント関連情報を受信する。アプリケーションが階層構造化した複数のビューを有する場合、ヒットビュー判定モジュール272は、ヒットビューを、サブイベントを処理すべき階層内の最下ビューとして特定する。ヒットビューは、ほとんどの場合、最初のサブイベントが行われる最下位ビューである(例えば、イベント又は潜在的イベントを構成する一連のサブイベントの最初のイベント)。ヒットビュー判定モジュール272が一旦ヒットビューを特定すると、そのヒットビューは、通常、ヒットビューであることが特定された同じタッチ又は入力源に関する全てのサブイベントを受信する。
【0106】
アクティブイベント認識器判定モジュール273は、ビュー階層内の1つ以上のどのビューがサブイベントの特定のシーケンスを受信すべきかを判定する。いくつかの実施形態では、アクティブイベント認識器判定モジュール273は、ヒットビューのみがサブイベントの特定のシーケンスを受信すべきであると判定する。他の実施形態では、アクティブイベント認識器判定モジュール273は、一のサブイベントの物理的位置を含む全てのビューが積極的に関与するビューであると判定し、このことにより、全ての積極的に関与するビューが各サブイベントの特定のシーケンスを受信すべきであると判定する。別の実施形態では、タッチのサブイベントが全て特定の一のビューに関連する領域に限定されたとしても、階層内で高位のビューは、依然として積極的に関与するビューのままであろうと想定される。
【0107】
イベントディスパッチャモジュール274は、イベント情報をイベント認識器(例えば、イベント認識器280)に送信する。アクティブイベント認識器判定モジュール273を含む実施形態において、イベントディスパッチャモジュール274は、アクティブイベント認識器判定モジュール273により判定されるイベント認識器に、イベント情報を配信する。いくつかの実施形態では、イベントディスパッチャモジュール274はイベント情報をイベントキューに格納し、該イベント情報は各イベント受信器282により取り出される。
【0108】
いくつかの実施形態において、オペレーティングシステム226はイベントソータ270を備える、あるいは、イベントソータ270はアプリケーション236-1に含まれる。別の実施形態において、イベントソータ270は、独立したモジュール、又は、メモリ202に格納される接触/動きモジュール230等の別のモジュールの一部である。
【0109】
いくつかの実施形態において、アプリケーション236-1は、複数のイベント処理部290と1つ以上のアプリケーションビュー291を含み、各々がアプリケーションのユーザインタフェースの各ビュー内で発生するタッチイベントを処理する命令を含む。アプリケーション236-1の各アプリケーションビュー291は、1つ以上のイベント認識器280を含む。通常、各アプリケーションビュー291は複数のイベント認識器280を含む。他の実施形態では、1つ以上のイベント認識器280は、ユーザインタフェースキット(図示省略)、又は、アプリケーション236-1が方法や他のプロパティを引き継ぐより高位のオブジェクトの独立したモジュールの一部である。いくつかの実施形態において、各イベント処理部イベント処理部290は、データ更新部276、オブジェクト更新部277、GUI更新部278、及び/又は、イベントソータ270から受信するイベントデータ279の1つ以上を含む。イベント処理部290は、データ更新部276、オブジェクト更新部277、又は、GUI更新部278を利用するか呼び出すことで、アプリケーション内部状態292を更新してもよい。あるいは、1つ以上のアプリケーションビュー291は1つ以上のイベント処理部290を含む。また、いくつかの実施形態では、データ更新部276、オブジェクト更新部277、及び、GUI更新部278は、その1つ以上が各アプリケーションビュー291に含まれる。
【0110】
各イベント認識器280は、イベントソータ270からイベント情報(例えばイベントデータ279)を受信し、該イベント情報からイベントを特定する。イベント認識器280は、イベント受信器282とイベント比較器284を含む。いくつかの実施形態では、イベント認識器280は、少なくともメタデータ283のサブセットとイベント配信命令288(サブイベント配信命令を含んでもよい)を更に含む。
【0111】
イベント受信器282は、イベントソータ270からイベント情報を受信する。該イベント情報は、サブイベント、例えば、タッチ又はタッチの移動についての情報を含む。サブイベントによって、該イベント情報は、サブイベントの位置等の追加情報を更に含む。サブイベントがタッチの動きに関するものである場合、該イベント情報は、そのサブイベントの速度や方向を含んでもよい。いくつかの実施形態では、各イベントは、デバイスの一定の向きから別の向き(例えば、横位置から縦位置へ、あるいはその逆)への回転を含み、該イベント情報は、デバイスの現在の向き(デバイス姿勢とも呼ぶ)についての対応情報を含む。
【0112】
イベント比較器284は、イベント情報を既定のイベント又はサブイベントの定義と比較し、この比較に基づいて、イベント又はサブイベントを判定する、又は、イベント又はサブイベントの状態を判定若しくは更新する。いくつかの実施形態では、イベント比較器284はイベント定義286を含む。イベント定義286は、イベント1(287-1)やイベント2(287-2)等、イベントの定義(例えば、既定の複数連のサブイベント)を含む。いくつかの実施形態では、あるイベント(287)のサブイベントは、例えばタッチの開始、タッチの終了、タッチの移動、タッチのキャンセル、及び複数回のタッチを含む。一例では、イベント1の定義(287-1)は、表示オブジェクトへのダブルタップである。ダブルタップは、例えば、所定のフェーズにおける表示オブジェクトへの最初のタッチ(タッチ開始)、所定のフェーズにおける最初のリフトオフ(タッチ終了)、所定のフェーズにおける表示オブジェクトへの2回目のタッチ(タッチ開始)、及び、所定のフェーズにおける2度目のリフトオフ(タッチ終了)から構成されている。別の例では、イベント2の定義(287-2)は、表示オブジェクト上のドラッグである。ドラッグは、例えば、所定のフェーズにおける表示オブジェクトへのタッチ(又は接触)と、タッチ感知ディスプレイ212上のタッチの移動と、タッチのリフトオフ(タッチ終了)から構成されている。いくつかの実施形態において、イベントは更に、1つ以上の関連するイベント処理部290に対する情報を含む。
【0113】
いくつかの実施形態において、イベント定義287は、各ユーザインタフェースオブジェクトに対するイベントの定義を含む。また、いくつかの実施形態では、イベント比較器284はヒットテストを実行し、どのユーザインタフェースオブジェクトがサブイベントに関連するかを判定する。例えば、3つのユーザインタフェースオブジェクトがタッチ感知ディスプレイ212に表示されるアプリケーションビューで、タッチ感知ディスプレイ212上のタッチが検出されると、イベント比較器284は、ヒットテストを実行して、上記3つのユーザインタフェースオブジェクトの内、どのユーザインタフェースオブジェクがそのタッチ(サブイベント)に関連するかを判定する。各表示オブジェクトが各イベント処理部290に関連付けられている場合、イベント比較器は、上記ヒットテストの結果を用いて、どのイベント処理部290を稼働させるべきかを判定する。例えば、イベント比較器284は、サブイベントに関連するイベント処理部と、ヒットテストをトリガするオブジェクトを選択する。
【0114】
いくつかの実施形態において、各イベント(287)の定義は、一連のサブイベントがイベント認識器のイベントタイプと合致するか否かの判定が済むまで、イベント情報の配信を遅延させる遅延動作を、更に含む。
【0115】
一連のサブイベントがイベント定義286内のいずれのイベントにも合致しないと各イベント認識器280が判定すると、そのイベント認識器280は、イベント不能、イベント失敗、又は、イベント終了状態に入り、以降、後続するタッチベースのジェスチャのサブイベントを無視する。この状況下、ヒットビューに対して依然アクティブな他のイベント認識器がある場合、そのイベント認識器は、進行中のタッチベースのジェスチャのサブイベントを継続して追跡し、処理する。
【0116】
いくつかの実施形態において、各イベント認識器280は、イベント配信システムが積極的に関与するイベント認識器に対してどのようにサブイベント配信を行うべきかを示す、設定可能なプロパティ、フラグ、及び/又は、リストをもつメタデータ283を含む。いくつかの実施形態において、メタデータ283は、イベント認識器同士がどのように相互作用するか、あるいは、どのような相互作用が可能であるかを示す、設定可能なプロパティ、フラグ、及び/又はリストを含む。いくつかの実施形態では、メタデータ283は、ビュー又はプログラムの階層内の様々な準位に対してサブイベントを配信するか否かを示す、設定可能なプロパティ、フラグ、及び/又は、リストを含む。
【0117】
いくつかの実施形態において、各イベント認識器280は、あるイベントの1つ以上の特定のサブイベントが認識されると、そのイベントに関連するイベント処理部290を稼働させる。いくつかの実施形態では、各イベント認識器280は、該イベントに関連するイベント情報をイベント処理部290に配信する。イベント処理部290を稼働させることは、サブイベントを各ヒットビューに送信(及び送信延期)することとは区別される。いくつかの実施形態では、イベント認識器280は、認識したイベントに関連するフラグをスローし、該フラグに関連するイベント処理部290は、そのフラグをキャッチし、既定の処理を実行する。
【0118】
いくつかの実施形態では、イベント配信命令288は、イベント処理部を稼働させずにサブイベント関連イベント情報を配信するサブイベント配信命令を含む。代わって、サブイベント配信命令は、一連のサブイベントに関連するイベント処理部又は積極的に関与するビューに、イベント情報を配信する。一連のサブイベント又は積極的に関与するビューに関連する各イベント処理部は、イベント情報を受信し、所定の処理を実行する。
【0119】
いくつかの実施形態において、データ更新部276は、アプリケーション236-1で用いるデータを生成かつ更新する。例えば、データ更新部276は、連絡先モジュール237で用いる電話番号を更新する、又は、ビデオプレーヤモジュールで用いるビデオファイルを保存する。いくつかの実施形態では、オブジェクト更新部277は、アプリケーション236-1で用いるオブジェクトを生成かつ更新する。例えば、オブジェクト更新部277は、新規のユーザインタフェースオブジェクトを生成する、又は、ユーザインタフェースオブジェクトの位置を更新する。GUI更新部278はGUIを更新する。例えば、GUI更新部278は表示情報を用意してグラフィックスモジュール232に送信し、該表示情報をタッチ感知ディスプレイに表示させる。
【0120】
いくつかの実施形態において、1つ又は複数のイベント処理部290は、データ更新部-276、オブジェクト更新部277、及び、GUI更新部278を備える、又は、該各更新部にアクセス可能である。いくつかの実施形態では、データ更新部276、オブジェクト更新部-277、及び、GUI更新部-278は、アプリケーションビュー291又は各アプリケーション236-1の単一モジュールに含まれる。他の実施形態では、該各更新部は2つ以上のソフトウェアモジュールに含まれる。
【0121】
タッチ感知ディスプレイへのユーザタッチのイベント処理に関する上記の説明は、当然のことながら、入力デバイスによる多機能デバイス200の操作に向けた、タッチスクリーン上の開始ではないものも含む異なる形態のユーザ入力にも当てはまる。例えば、単回又は複数回のキーボードの押圧又は継続押圧と任意に組み合わせたマウス移動及びマウスボタンの押圧、タッチパッド上のタップ、ドラッグ、スクロール等の接触の移動、ペンスタイラスによる入力、デバイスの移動、口頭命令、検出した視線の動き、バイオメトリック入力、及び/又は、これらを任意に組み合わせたものが、認識対象のイベントを規定するサブイベントに対応する入力として、必要に応じて用いられる。
【0122】
図3は、いくつかの実施形態に係るタッチスクリーン212を備える携帯型多機能デバイス200を示す図である。タッチスクリーンは、任意に、ユーザインタフェース(UI)300中に1つ以上のグラフィクスを表示する。この実施形態では、以下に記載する他の実施形態と同様、ユーザは、例えば、1本以上の指302(図示は正確な縮尺表示ではない)、又は、1本以上のスタイラス303(図示は正確な縮尺表示ではない)を用いてグラフィックス上でジェスチャを行うことにより、1つ以上のグラフィックスを選択することができる。いくつかの実施形態において、ユーザが1つ以上のグラフィックスとの接触を止めると、該1つ以上のグラフィックスが選択される。いくつかの実施形態では、ジェスチャは、任意に、1つ以上のタップ、1つ以上のスワイプ(左から右、右から左、上方向及び/又は下方向)、及び/又は、デバイス200と接触した指の回転(右から左、左から右、上方向及び/又は下方向)を含む。実装例や状況下により、不注意でグラフィックスにうっかり接触しても、そのグラフィックスは選択されない。例えば、選択に対応するジェスチャがタップである場合、アプリケーションアイコン上を素早く通過するスワイプジェスチャでは、対応するアプリケーションが選択されないこともある。
【0123】
デバイス200は、「ホーム」又はメニューボタン304等の1つ以上の物理的ボタンを更に含んでよい。上述のように、メニューボタン304はデバイス200で実行し得るアプリケーション群の任意のアプリケーション236へのナビゲートに用いてもよい。あるいは、いくつかの実施形態では、メニューボタンはタッチスクリーン212に表示されるGUI内のソフトキーとして実装される。
【0124】
一実施形態において、デバイス200は、タッチスクリーン212、メニューボタン304、デバイスの電源のオン/オフやデバイスのロックに用いるプッシュボタン306、1つ又は複数の音量調節ボタン308、加入者識別モジュール(SIM)カードスロット310、ヘッドホンジャック312、及び、連結/充電用外部ポート224を含む。プッシュボタン306は、必要に応じて、ボタンを押下後、その押下状態を既定時間の間維持することでデバイスの電源をオン/オフしたり、ボタンを押下後、所定時間の経過前にボタンを離ことでデバイスをロックしたり、及び/又は、デバイスのロック解除又はロック解除処理を開始するために用いられる。別の実施形態では、デバイス200は更に、マイク213を介して、一部の機能の有効化又は無効化のための口頭入力を受け付ける。デバイス200は、必要に応じて、タッチスクリーン212上の接触強度を検出するための1つ以上の接触強度センサ265、及び/又は、デバイス200のユーザに対する触知出力を生成するための1つ以上の触知出力生成器267を更に含む。
【0125】
図4は、いくつかの実施形態に係る、ディスプレイ及びタッチ感知面を備える多機能デバイスの一例を示すブロック図である。デバイス400は携帯型デバイスである必要はない。いくつかの実施形態では、デバイス400は、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、マルチメディア・プレーヤ機器、ナビゲーション機器、教育機器(知育玩具等)、ゲームシステム、又は制御デバイス(例えば、家庭用又は工業用制御器)である。デバイス400は、通常、1つ以上の処理ユニット(CPU)410と、1つ以上のネットワーク又は他の通信インターフェース460と、メモリ470と、これらの構成要素を相互接続するための1つ以上の通信バス420を含む。通信バス420は、任意に、システム構成要素を相互接続し、各システム構成要素間の通信を制御する回路(チップセットとも呼ばれる)を含む。デバイス400は、ディスプレイ440を備える入力/出力(I/O)インターフェース430を含む。ディスプレイ440は、通常、タッチスクリーンディスプレイである。I/Oインターフェース430は、必要に応じて、キーボード及び/又はマウス(又は他のポインティングデバイス)450、タッチパッド455、デバイス400上に触知出力を生成するための触知出力生成器457(図2Aを参照して上述した1つ又は複数の触知出力生成器267と同様のもの)、センサ459(例えば、図2Aを参照して上述した1つ又は複数の接触強度センサ265と同様の光学センサ、加速度センサ、近接センサ、タッチ感知センサ、及び/又は、接触強度センサ)を、更に備える。メモリ470は、任意に、DRAM、SRAM、DDR、RAM等の高速ランダムアクセスメモリ、又は、他のランダムアクセス・ソリッドステート・メモリデバイスを含み、また、任意に、1つ以上の磁気ディスク記憶デバイス、光学ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステート記憶デバイス等の不揮発性メモリを含む。また、メモリ470は、必要に応じて、1つ又は複数のCPU410から離間配置した1つ以上の記憶装置を含む。いくつかの実施形態では、メモリ470は、携帯型多機能デバイス200(図2A)のメモリ202に格納した各プログラム、モジュール、データ構造に類似したプログラム、モジュール、データ構造、又はそのサブセットを格納する。更に、メモリ470は、携帯型多機能デバイス200のメモリ202にはない追加の各プログラム、モジュール、及びデータ構造を、必要に応じて格納する。例えば、デバイス400のメモリ470は、任意に、描画モジュール480、プレゼンテーションモジュール482、ワード処理モジュール484、ウェブサイト作成モジュール486、ディスクオーサリングモジュール488、及び/又は、スプレッドシートモジュール490を格納する。一方、これらのモジュールは、携帯型多機能デバイス200(図2A)のメモリ202には格納されない場合もある。
【0126】
図4で特定した各要素は、先に言及したメモリデバイスの1つ以上に格納されてもよい。前項で説明した各モジュールは、上述の機能を実行する命令セットに対応する。上述のモジュール又はプログラム(例えば命令セット)は、別個のソフトウェアプログラム、手順、又はモジュールとして実装する必要はなく、各種実施形態において、これらモジュールの種々のサブセットを組み合わせる、又は、再配置することも可能である。いくつかの実施形態において、メモリ470は上述したモジュール及びデータ構造のサブセットを格納してもよく、更に、メモリ470は、上述のもの以外の追加のモジュール及びデータ構造を格納してもよい。
【0127】
次に、例えば携帯型多機能デバイス200で実装可能なユーザインタフェースの各実施形態について説明する。
【0128】
図5Aは、いくつかの実施形態に係る携帯型多機能デバイス200のアプリケーションのメニュー用ユーザインタフェースの一例を示す図である。同様のユーザインタフェースをデバイス400に実装してもよい。いくつかの実施形態において、ユーザインタフェース500は、以下の要素又はそのサブセット又はスーパーセットを含む。
●セルラ信号やWi-Fi信号等、1つ又は複数の無線通信用の1つ又は複数の信号強度インジケータ502
●時刻504
●ブルートゥース(登録商標)インジケータ505
●バッテリ状態インジケータ506
●以下の頻用するアプリケーション用アイコンを含むトレー508
○未応答の通話又はボイスメールメッセージの個数を示すインジケータ514を任意に含む、「電話」とラベル付けした電話モジュール238用アイコン516
○未読電子メールの個数を示すインジケータ510を含む、「メール」とラベル付けした電子メールクライアントモジュール240用アイコン518
○「ブラウザ」とラベル付けしたブラウザモジュール247用アイコン520
○iPod(アップル社の商標)モジュール252とも呼ぶ、「iPod」とラベル付けしたビデオ・音楽プレーヤモジュール252用アイコン522
●上記以外のアプリケーション用アイコン
○「メッセージ」とラベル付けしたIMモジュール241用アイコン524
○「カレンダー」とラベル付けしたカレンダーモジュール248用アイコン526
○「写真」とラベル付けした画像管理モジュール244用アイコン528
○「カメラ」とラベル付けしたカメラモジュール243用アイコン530
○「オンラインビデオ」とラベル付けしたオンラインビデオモジュール255用アイコン532
○「株式」とラベル付けした株式ウィジェット249-2用アイコン534
○「地図」とラベル付けした地図モジュール254用アイコン536
○「天気」とラベル付けした天気ウィジェット249-1用アイコン538
○「時計」とラベル付けしたアラーム時計ウィジェット249-4用アイコン540
○「ワークアウト支援」とラベル付けしたワークアウト支援モジュール242用アイコン542
○「ノート」とラベル付けしたノートモジュール253用アイコン544
○デバイス200とその種々のアプリケーション236の設定に対するアクセスを提供する、「設定」とラベル付けした設定アプリケーション又はモジュール用アイコン546
【0129】
当然ながら、図5Aに図示のアイコンのラベルは単なる例示である。例えば、ビデオ・音楽プレーヤモジュール252用アイコン522は、「音楽」又は「音楽プレーヤ」とラベル付けしてもよい。また、任意に、上述以外のラベルを種々のアプリケーションアイコンに用いることもある。いくつかの実施形態において、各アプリケーションアイコンに用いるラベルは、各アプリケーションアイコンに対応するアプリケーションの名称を含む。いくつかの実施形態では、ある特定のアプリケーションアイコンに用いるラベルは、該特定のアプリケーションアイコンに対応するアプリケーションの名称とは異なる。
【0130】
図5Bは、ディスプレイ550(例えば、タッチスクリーンディスプレイ212)とは別個のタッチ感知面551(例えば、タブレット又はタッチパッド455、図4参照)を備えるデバイス(例えば、デバイス400、図4参照)上のユーザインタフェースの一例を示す図である。デバイス400は、任意に、タッチ感知面551上の接触強度を検出するための1つ以上の接触強度センサ(例えば、1つ以上のセンサ457)、及び/又は、デバイス400のユーザに対する触知出力を生成するための1つ以上の触知出力生成器459を、更に備える。
【0131】
以下に示す各例の一部は、タッチスクリーンディスプレイ212(タッチ感知面とディスプレイの組合せ)上の入力に関するものであるが、いくつかの実施形態において、図5Bに示すように、デバイスはディスプレイとは別個のタッチ感知面上の入力を検出する。いくつかの実施形態では、タッチ感知面(例えば、図5Bの551)は、ディスプレイ(例えば、550)上の主軸(例えば、図5Bの553)と合致する主軸(例えば、図5Bの552)を有する。これらの実施形態によれば、デバイスは、タッチ感知面551との接触(例えば、図5Bの560と562)を、ディスプレイ上の各位置に対応する位置(例えば、図5Bでは560は568に対応し、562は570に対応する)で検出する。タッチ感知面がディスプレイと別個の場合、このようにして、多機能デバイスでは、タッチ感知面(例えば、図5Bの551)上でデバイスが検出するユーザ入力(例えば、接触560、562、ならびにその移動)を用いて、デバイスのディスプレイ(例えば図5Bの550)上のユーザインタフェースが操作される。また、必要に応じて、本明細書に開示の他のユーザインタフェースに同様の方法を用いることは言うまでもない。
【0132】
更に、以下に挙げる各例は、主に指入力(例えば、指接触、指タップジェスチャ、指スワイプジェスチャ)に関するものであるが、いくつかの実施形態では、当然のことながら、指入力の1つ以上を、他の入力デバイス(例えば、マウスやスタイラスによる入力)からの入力で代用可能である。例えば、スワイプジェスチャに代えて、マウスクリック(例えば、接触の代わり)と、それに続くスワイプの経路に沿ったカーソル移動(例えば、接触の移動の代わり)を行うこともある。別の例として、タップジェスチャに代えて、タップジェスチャの位置にカーソルを置いた状態でマウスクリックを行うこともある(例えば、接触検出とその後の接触検出の終了の代わり)。同様に、複数のユーザ入力が同時に検出される場合は、必要に応じて、複数のコンピュータマウスの同時使用やマウスと指入力の同時使用も、当然ながら行われる。
【0133】
図6Aは、パーソナル電子デバイス600の一例を示す図である。デバイス600は本体602を備える。いくつかの実施形態において、デバイス600は、デバイス200や400(例えば、図2A~4B)について記載した構成の一部又は全てを含むことができる。いくつかの実施形態では、デバイス600は、タッチ感知ディスプレイスクリーン604(以下、タッチスクリーン604)を備える。あるいは、タッチスクリーン604に加えて、又はこれに代えて、デバイス600は、ディスプレイ及びタッチ感知面を有する。デバイス200や400と同様、いくつかの実施形態では、タッチスクリーン604(又はタッチ感知面)は、受けた接触(例えば、タッチ)の強度を検出するための1つ以上の接触強度センサを備えてもよい。タッチスクリーン604(又はタッチ感知面)の1つ以上の強度センサは、タッチ強度を表す出力データを提供可能であり、デバイス600のユーザインタフェースはタッチ強度に基づいて各タッチに応答可能である。これは、強度の異なるタッチにより、デバイス600上で異なるユーザインタフェース動作を呼び出し可能であることを意味する。
【0134】
タッチ強度の検出・処理技術は、例えば、以下の関連出願、2013年5月8日出願の国際特許出願第PCT/US2013/040061号、「Device, Method, and Graphical User Interface for Displaying User Interface Objects Corresponding tO an Application」、及び、2013年11月11日出願の国際特許出願第PCT/US2013/069483号、「Device, Method, and Graphical User Interface for Transitioning Between Touch Input to Display Output Relationships」に開示されており、その全内容が参照により本明細書に組み込まれる。
【0135】
いくつかの実施形態において、デバイス600は、1つ以上の入力機構606及び608を備える。入力機構606及び608を備える場合、該入力機構は物理的デバイスとすることが可能である。物理的な入力機構は、例えば、プッシュボタン及び回転機構が挙げられる。いくつかの実施形態では、デバイス600は、1つ以上の取り付け機構を備える。該取り付け機構を備える場合、デバイス600を、例えば、帽子、眼鏡、イヤリング、ネックレス、シャツ、ジャケット、ブレスレット、時計バンド、チェーン、ズボン、ベルト、靴、財布、バックパック等に取り付けることができる。こうした取り付け機構を備えれば、ユーザ自身がデバイス600を身につけることができるようになる。
【0136】
図6Bは、パーソナル電子デバイス600の一例を示す。いくつかの実施形態において、デバイス600は、図2A図2B図4を参照して上述した構成要素の一部又は全てを含むことができる。デバイス600は、I/O部614を1つ以上のコンピュータプロセッサ616及びメモリ618に動作可能に接続するバス612を有する。I/O部614は、タッチ感知要素622と、任意に接触強度感知要素624を装備可能なディスプレイ604に接続可能である。更に、I/O部614は、アプリケーション及びオペレーティングシステムデータを、Wi-Fi、ブルートゥース、近接通信(NFC)、セルラ、及び/又は、他の無線通信技術を介して受信する通信部630に接続可能である。デバイス600は、入力機構606、及び/又は、入力機構608を備えることができる。入力機構606の例として、回転可能な入力デバイス、又は押下・回転可能な入力デバイスであってよい。いくつかの例では、入力機構608はボタンであってもよい。
【0137】
いくつかの例において、入力機構608はマイクロホンであってよい。パーソナル電子デバイス600は、GPSセンサ632、加速度計634、方位センサ640(例えば、コンパス)、ジャイロスコープ636、モーションセンサ638、及び/又は、これらの任意の組み合わせ等、様々なセンサを備えることができる。また、搭載可能な各センサや計器はすべて、I/O部614に動作可能に接続することができる。
【0138】
パーソナル電子デバイス600のメモリ618として、コンピュータにより実行可能な命令を格納するコンピュータ読み取り可能な非一過性記憶媒体を用いることができる。この記憶媒体に格納された命令は、例えば、1つ以上のコンピュータプロセッサ616により実行されると、各コンピュータプロセッサに処理800~900(図8~9)を含む以下に記載の技法を実行させることができる。コンピュータが実行可能な命令は、命令実行システム、装置、又はデバイスにより用いられる、又は、該システム、装置、又はデバイスに関連して用いられるコンピュータ読み取り可能な任意の非一過性記憶媒体内に保存及び/又は伝送可能である。上記命令実行システム、装置、又はデバイスは、例えば、コンピュータを用いたシステム、プロセッサを含むシステム、又は、該命令実行システム、装置、又はデバイスから命令を取得かつ実行可能な他のシステム等が挙げられる。パーソナル電子デバイス600は、図6Bに図示の構成要素や形態に限られず、様々な形態の非図示又は追加の構成要素を備えることができる。
【0139】
本明細書に記載の「アフォーダンス」は、デバイス200、400、及び/又は、600(図2、4及び6)のディスプレイスクリーン上に表示し得るグラフィカル・ユーザインタフェース・オブジェクトを指す。例えば、画像(例えば、アイコン)、ボタン、及び、テキスト(例えば、リンク)は、各々アフォーダンスを構成し得る。
【0140】
本明細書に記載の「フォーカスセレクタ」は、ユーザインタフェースにおいてユーザが現在操作中の箇所を示す入力要素のことを言う。カーソルや他の位置マーカを含むいくつかの実装例において、特定のユーザインタフェース要素(例えば、ボタン、ウィンドウ、スライダ、又は他のユーザインタフェース要素)上にカーソルがある間にタッチ感知面(例えば、図4のタッチパッド455又は図5Bのタッチ感知面551)上で入力(例えば、押圧入力)を検出すると、該特定のユーザインタフェース要素が検出した入力に従って調整されるように、カーソルは「フォーカスセレクタ」として作用する。タッチスクリーンディスプレイ上のユーザインタフェース要素の直接操作が可能なタッチスクリーンディスプレイ(例えば、図2Aのタッチ感知ディスプレイシステム212、又は、図5Aのタッチスクリーン212)を含むいくつかの実施形態において、特定のユーザインタフェース要素(例えば、ボタン、ウィンドウ、スライダ、又は他のユーザインタフェース要素)の位置で入力(例えば、接触による押圧入力)をタッチスクリーンディスプレイ上で検出すると、該特定のユーザインタフェース要素が検出した入力に従って調整されるように、タッチスクリーン上の検出接触は「フォーカスセレクタ」として作用する。いくつかの実装例では、タッチスクリーンディスプレイ上で接触やカーソルを対応して移動させる(例えば、タブキーや矢印キーを用いて、あるボタンから別のボタンへのフォーカスの移動)ことなく、フォーカスはユーザインタフェースのある領域から同ユーザインタフェースの別の領域へ移動する。こうした実装例では、フォーカスセレクタは、ユーザインタフェースの異領域間をまたぐフォーカスの移動に伴って移動する。フォーカスセレクタがどのような特定の形態をとろうと、フォーカスセレクタは通常、ユーザの意図するユーザインタフェース操作を伝達(例えば、ユーザが操作しようとするユーザインタフェース要素をデバイスに対して示すことで)するために、ユーザが制御するユーザインタフェース要素(又はタッチスクリーンディスプレイ上の接触)である。例えば、押圧入力をタッチ感知面(例えばタッチパッド又はタッチスクリーン)上で検出中の各ボタン上のフォーカスセレクタ(例えば、カーソル、接触、又は、選択ボックス)の位置は、(デバイスのディスプレイ上に表示する他のユーザインタフェース要素に対して)ユーザがそのボタンの有効化を意図していることを示すものである。
【0141】
本明細書及び特許請求の範囲に記載する接触の「特性強度」は、接触の1つ以上の強度に基づくその接触の特性を指す。いくつかの実施形態において、特性強度は複数の強度サンプルに基づく。また、特性強度は、任意に、既定数の強度サンプル、又は、既定のイベント(例えば接触検出後、接触のリフトオフ検出前、接触の移動開始を検出する前又は後、接触終了の検出前、接触強度の増大を検出する前又は後、及び/又は、接触強度の低下を検出する前又は後)に対する、所定時間(例えば、0.05、0.1、0.2、0.5、1、2、5、10秒)内に収集した強度サンプル群に基づく。接触の特性強度は、任意に、接触強度の最大値、接触強度の中間値、接触強度の平均値、接触強度の上位10パーセンタイル値、接触強度の最大値の半値、接触強度の90%最大値等の1つ以上に基づく。いくつかの実施形態では、接触の持続期間を用いて特性強度を判定する(例えば、特性強度が時間経過中の強度の平均である場合)。いくつかの実施形態では、特性強度は、1つ以上の強度閾値群との比較により、ユーザが動作を行ったか否かを判定する。例えば、1つ以上の強度閾値群は、第1の強度閾値と第2の強度閾値とを含んでよい。この例の場合、第1の閾値を超えない特性強度を有する接触は第1の動作、第1の閾値を超えるが第2の閾値を超えない特性強度を有する接触は第2の動作、第2の閾値を超える特性強度を有する接触は第3の動作となる。いくつかの実施形態では、特性強度と1つ以上の閾値を比較することで、第1と第2の動作のいずれかの実行判定ではなく、1つ以上の動作を実行するか否か(例えば、各動作を実行する、又は各動作の実行を控える)を判定する。
【0142】
いくつかの実施形態では、特性強度を判定するために、ジェスチャの一部を特定する。例えば、タッチ感知面は、開始位置から終了位置に遷移して終了位置で接触強度が大きくなる連続的なスワイプ接触を受ける場合がある。この例では、終了位置での接触の特性強度は、例えば、連続的なスワイプ接触の全体ではなく、その一部(例えば、終了位置でのスワイプ接触の部分)のみに基づくことが考えられる。いくつかの実施形態では、接触の特性強度を判定する前に、スワイプ接触の強度に平滑化アルゴリズムを適用してもよい。例えば、平滑化アルゴリズムは、任意に、単純スライド移動平均による平滑化アルゴリズム(unweighted sliding-average smoothing algorithm)、三角平滑化アルゴリズム(triangular smoothing algorithm)、中央値フィルタ平滑化アルゴリズム(median filter smoothing algorithm)、及び/又は、指数平滑化アルゴリズム(exponential smoothing algorithm)の1つ以上を含む。状況によっては、こうした平滑化アルゴリズムでは、特性強度の判定を目的として、スワイプ接触強度の狭小なスパイク(spike)やディップ(dip)を除去する。
【0143】
タッチ感知面上の接触強度は、接触検出強度の閾値、弱押圧強度の閾値、強押圧強度の閾値、及び/又は、1つ以上の上記以外の強度閾値等の、1つ以上の強度閾値との比較による特徴付けも可能である。いくつかの実施形態において、弱押圧強度の閾値は、通常物理的マウス又はトラックパッドボタンのクリックに関連付けられる動作をデバイスが実行する際の強度に対応する。いくつかの実施形態では、強押圧強度の閾値は、通常物理的マウス又はトラックパッドボタンのクリックに関連付けられる動作とは異なる動作をデバイスが実行する際の強度に対応する。いくつかの実施形態では、弱押圧強度の閾値未満(かつ、接触が検出不可となる公称接触検出強度の閾値を超える等)特性強度で接触が検出されると、デバイスは、弱押圧強度や強押圧強度の閾値に関連付けた動作を実行することなく、タッチ感知面上の接触の移動に従ってフォーカスセレクタを移動させる。特に明記しない限り、上述した強度の閾値は、概して、図示ユーザインタフェース各群の間で共通している。
【0144】
接触の特性強度が、弱押圧強度の閾値未満の強度から弱押圧強度と強押圧強度の閾値の間の強度へ増大すると、「弱押圧」入力と呼ぶ場合がある。接触の特性強度が、強押圧強度の閾値未満の強度から強押圧強度の閾値を超える強度へ増大すると、「強押圧」入力と呼ぶ場合がある。接触の特性強度が、接触検出強度の閾値未満の強度から接触検出強度と弱押圧強度の閾値の間の強度へ増大すると、タッチ面上の接触の検出と呼ぶ場合がある。接触の特性強度が、接触検出強度の閾値を超える強度から接触検出強度の閾値未満の強度へ低下すると、タッチ面からの接触のリフトオフの検出と呼ぶ場合がある。いくつかの実施形態では、接触検出強度の閾値は0である。別の実施形態では、接触検出強度閾値は0より大きい。
【0145】
本明細書に開示したいくつかの実施形態では、各押圧入力を含むジェスチャを検出する、あるいは、接触(又は複数の接触)で行う各押圧入力を検出すると、1つ以上の動作が実行される。ここで、接触(又は複数の接触)の強度が押圧入力強度の閾値を超えて大きくなったことが検出されると、少なくとも部分的にこの検出に基づいて、各押圧入力が検出される。いくつかの実施形態において、押圧入力強度の閾値を超えて各接触強度が大きくなったことを検出すると(例えば、各押圧入力の「ダウンストローク」)、各動作が実行される。いくつかの実施形態では、押圧入力には、各接触強度の押圧入力強度の閾値を超える増大、及び、その後の押圧入力強度の閾値を下回る低下が含まれ、後者の押圧入力強度の閾値を下回る接触強度の低下(例えば、各押圧入力の「アップストローク」)を検出すると、各動作が実行される。
【0146】
いくつかの実施形態において、デバイスは、「ジッタ(jitter)」と呼ばれることもある不測の入力を回避するため、強度ヒステリシス(intensity hysteresis)を用いる。具体的には、デバイスは、押圧入力強度の閾値と既定の関係にあるヒステリシス強度の閾値を規定又は選択する(例えば、ヒステリシス強度の閾値は押圧入力強度の閾値よりもX強度単位分低い、又は、ヒステリシス強度の閾値は押圧入力強度の閾値の75%、90%、又は、任意の妥当な比率値である)。従って、いくつかの実施形態において、押圧入力には、押圧入力強度の閾値を超える接触強度の増大と、それに続く、押圧入力強度の閾値に対応するヒステリシス強度の閾値未満の接触強度の低下が含まれ、後者のヒステリシス強度の閾値未満に接触強度が低下(例えば、押圧入力の「アップストローク」)したことを検出すると、各動作が実行される。同様に、いくつかの実施形態では、ヒステリシス強度の閾値以下の強度から押圧入力強度の閾値以上の強度へ接触強度が増大し、必要に応じて、それに続いてヒステリシス強度以下の強度へ接触強度が低下したことをデバイスが検出した場合にのみ、押圧入力が検出される。こうして押圧入力の検出に応じて(例えば、状況により、接触強度の増大又は低下)、各動作が実行される。
【0147】
説明を簡略化するために、以上説明した押圧入力強度の閾値に関連づけた押圧入力、又は、押圧入力を含むジェスチャに応じて実行する動作は、任意に、以下のいずれかを検出するとトリガの対象となる。すなわち、押圧入力強度の閾値を超える接触強度の増大、ヒステリシス強度の閾値未満の強度から押圧入力強度の閾値を超える強度への接触強度の増大、押圧入力強度の閾値未満への接触強度の低下、及び/又は、押圧入力強度の閾値に対応するヒステリシス強度の閾値未満への接触強度の低下のいずれかである。更に、いくつかの例では、接触強度が押圧入力強度の閾値未満へ低下したことを検出すると動作を実行するとしたが、この場合、必要に応じて、押圧入力強度の閾値に一致又はこれより低いヒステリシス強度の閾値未満に接触強度が低下したことを検出することに応じて動作が実行される。
3.デジタルアシスタントシステム
【0148】
図7Aは、様々な例に基づくデジタルアシスタントシステム700のブロック図である。幾つかの例においては、デジタルアシスタントシステム700が、独立型コンピュータシステム上に実装されてもよい。幾つかの例においては、デジタルアシスタントシステム700が、複数のコンピュータに分散されてもよい。幾つかの例においては、例えば図1に示すように、デジタルアシスタントのモジュール及び機能のうちの幾つかがサーバ部分とクライアント部分とに分割され、クライアント部分が(デバイス104、122、200、400又は600などの)1つ又はそれ以上のユーザデバイス上に存在し、1つ又はそれ以上のネットワークを介して(サーバシステム108などの)サーバ部分と通信を行ってもよい。幾つかの例においては、デジタルアシスタントシステム700が、図1に示すサーバシステム108(及び/又はデジタルアシスタントサーバ106)を具現化したものであってもよい。デジタルアシスタントシステム700は、デジタルアシスタントシステムの単なる一例であり、デジタルアシスタントシステム700が、図示する構成要素よりも多数又は少数の構成要素を有してもよく、2つ以上の構成要素を兼備してもよく、これらの構成要素とは異なる構成又は配置であってもよいことに留意すべきである。図7Aに示す様々な構成要素が、ハードウェア、1つ又はそれ以上のプロセッサによって実行されるソフトウェア命令、1つ又はそれ以上の信号処理及び/又は特定用途向け集積回路を有するファームウェアあるいはこれらの組み合わせの中に組み込まれていてもよい。
【0149】
デジタルアシスタントシステム700が、メモリ702、1つ又はそれ以上のプロセッサ704、入力/出力(I/O)インターフェース706及びネットワーク通信インターフェース708を有してもよい。これらの構成要素が、1つ又はそれ以上の通信バス又は信号ライン710を介して相互に通信可能であってもよい。
【0150】
幾つかの例においては、メモリ702が、(1つ又はそれ以上の磁気ディスク記憶装置、フラッシュメモリ装置又はその他の不揮発性ソリッドステートメモリ装置などの)高速ランダムアクセスメモリ及び/又は不揮発性コンピュータ可読記憶媒体などの非一時的なコンピュータ可読媒体を有してもよい。
【0151】
幾つかの例においては、I/Oインターフェース706が、デジタルアシスタントシステム700のディスプレイ、キーボード、タッチスクリーン及びマイクロホンなどの入力/出力装置706を、ユーザインターフェースモジュール722に結合させてもよい。I/Oインターフェース706が、ユーザインターフェースモジュール722と協働して、(音声入力、キーボード入力、タッチ入力などの)ユーザ入力を受信し、これらを適宜処理してもよい。例えばデジタルアシスタントが独立型ユーザデバイス上に実装されている幾つかの例においては、デジタルアシスタントシステム700が、図2A、4、6A-Bのデバイス200、400又は600に関してそれぞれ記載されている構成要素及びI/O通信インターフェースのうちのいずれを有してもよい。幾つかの例においては、デジタルアシスタントシステム700が、デジタルアシスタントを具現化したもののサーバ部分を意味してもよく、また、(デバイス104、200、400又は600などの)ユーザデバイス上に存在するクライアント側部分を通してユーザと対話してもよい。
【0152】
幾つかの例においては、ネットワーク通信インターフェース708が、1つ又はそれ以上の有線通信ポート712及び/又は無線送受信回路装置714を有してもよい。有線通信ポートが、Ethernet(登録商標)、ユニバーサルシリアルバス(USB)、FIREWIRE(登録商標)などの1つ又はそれ以上の有線インターフェースを介して通信信号を送受信してもよい。無線回路装置714が、通信ネットワーク及びその他の通信装置との間でRF信号及び/又は光信号を送受信してもよい。無線装置が、GSM、EDGE、CDMA、TDMA、Bluetooth(登録商標)、Wi-Fi(登録商標)、VoIP、Wi-MAX(登録商標)などの複数の通信規格、プロトコル及び技術あるいはその他の適切な通信プロトコルのうちのいずれを使用してもよい。ネットワーク通信インターフェース708が、デジタルアシスタントシステム700と、インターネット、イントラネットなどのネットワーク及び/又は携帯電話ネットワーク、無線ローカルエリアネットワーク(LAN)などの無線ネットワーク及び/又はメトロポリタンエリアネットワーク(MAN)並びにその他の複数のデバイスとの間の通信を可能にしてもよい。
【0153】
幾つかの例においては、メモリ702又はメモリ702のコンピュータ可読記憶媒体が、オペレーティングシステム718、通信モジュール720、ユーザインターフェースモジュール722、1つ又はそれ以上のアプリケーション724及びデジタルアシスタントモジュール726のうちの全て又は一部を含む複数のプログラム、モジュール、命令及びデータ構造を記憶してもよい。詳細には、メモリ702又はメモリ702のコンピュータ可読記憶媒体が、以下に記載の処理800、900を実行する複数の命令を記憶してもよい。1つ又はそれ以上のプロセッサ704が、これらのプログラム、モジュール及び命令を実行し、複数のデータ構造との間で読み出し/書き込みを行ってもよい。
【0154】
(Darwin(登録商標)、RTXC、LINUX(登録商標)、UNIX(登録商標)、iOS(登録商標)、OS X(登録商標)、WINDOWS(登録商標)又は、VxWorks(登録商標)などの組み込みオペレーティングシステムなどの)オペレーティングシステム718が、(メモリ管理、記憶装置制御、電力管理などの)一般的なシステムタスクの制御及び管理のための様々なソフトウェアコンポーネント及び/又はドライバを有し、様々なハードウェア、ファームウェア及びソフトウェアコンポーネントとの間の通信を容易にしてもよい。
【0155】
通信モジュール720が、デジタルアシスタントシステム700とその他の複数のデバイスとの間のネットワーク通信インターフェース708を介した通信を容易にしてもよい。例えば、通信モジュール720が、図2A、4、6A-Bにそれぞれ示すデバイス200、400及び600などの電子デバイスのRF回路装置208と通信可能であってもよい。通信モジュール720が、無線回路装置714及び/又は有線通信ポート712によって受信されたデータを処理するための様々な構成要素を有してもよい。
【0156】
ユーザインターフェースモジュール722が、(例えばキーボード、タッチスクリーン、ポインティング装置、コントローラ及び/又はマイクロホンからなどのように)I/Oインターフェース706を介して、ユーザから命令及び/又は入力を受信してもよい。ユーザインターフェースモジュール722が、(例えば声、音、動画、テキスト、アイコン、振動、触覚フィードバック、光などの)出力を生成し、これを(例えばディスプレイ、オーディオチャネル、スピーカ、タッチパッドを通してなど)I/Oインターフェース706を介してユーザに伝達してもよい。
【0157】
アプリケーション724が、1つ又はそれ以上のプロセッサ704によって実行されるように構成されたプログラム及び/又はモジュールを含んでもよい。例えば、デジタルアシスタントシステムが独立型ユーザデバイス上に実装されている場合には、アプリケーション724が、ゲーム、カレンダーアプリケーション、ナビゲーションアプリケーション又は電子メールアプリケーションなどのユーザアプリケーションを含んでもよい。デジタルアシスタントシステム700がサーバ上に実装されている場合には、アプリケーション724が、例えばリソース管理アプリケーション、診断アプリケーション又はスケジューリングアプリケーションを含んでもよい。
【0158】
メモリ702がデジタルアシスタントモジュール726(又はデジタルアシスタントのサーバ部分)を記憶してもよい。幾つかの例においては、デジタルアシスタントモジュール726が、以下のサブモジュール:入力/出力処理モジュール728、音声テキスト化(STT)処理モジュール730、自然言語処理モジュール732、ダイアログフロー処理モジュール734、タスクフロー処理モジュール736、サービス処理モジュール738及び音声合成モジュール740あるいはこれらのサブセット又はスーパーセットを含んでもよい。これらのモジュールのそれぞれが、デジタルアシスタントモジュール726の以下のシステム又はデータ及びモデル:オントロジ760、語彙索引744、ユーザデータ748、タスクフローモデル754、サービスモデル756及びASRシステムあるいはこれらのサブセット又はスーパーセットを含んでもよい。
【0159】
幾つかの例においては、デジタルアシスタントモジュール726内に実装された処理モジュール、データ及びモデルを使用して、デジタルアシスタントが、音声入力をテキストに変換すること;ユーザから受信した自然言語入力内に表現されているユーザの意図を特定すること;ユーザの意図を十分に推論するために必要な情報を(例えば単語、ゲーム、意図などの曖昧性を除去することにより)能動的に引き出して取得すること;推論された意図を履行するためのタスクフローを決定すること;推論された意図を履行するためのタスクフローを実行することのうちの少なくとも幾つかを実行してもよい。
【0160】
図7Bに示す幾つかの例においては、I/O処理モジュール728が、図7AのI/O装置716を介してユーザと、あるいは図7Aのネットワーク通信インターフェース708を介して(デバイス104、200、400又は600などの)ユーザデバイスと対話して、(音声入力などの)ユーザ入力を取得し、ユーザ入力に対して(音声出力などの)応答を行ってもよい。I/O処理モジュール728が、ユーザ入力の受信と同時に又はその直後に、ユーザデバイスからのユーザ入力に関するコンテキスト情報を任意選択的に取得してもよい。コンテキスト情報が、ユーザ入力に関するユーザ固有のデータ、語彙及び/又は嗜好を含んでもよい。幾つかの例においては、コンテキスト情報が、ユーザ要求の受信時点におけるユーザデバイスのソフトウェア及びハードウェア状態、及び/又はユーザ要求の受信時点におけるユーザの周囲環境に関する情報を更に含んでもよい。幾つかの例においては、I/O処理モジュール728が、ユーザ要求に関するフォローアップ質問をユーザに対して送信し、これに対する回答をユーザから受信してもよい。ユーザ要求がI/O処理モジュール728によって受信され、ユーザ要求が音声入力を含んでもよい場合には、I/O処理モジュール728が、音声入力をSTT処理モジュール730(又は音声レコグナイザ)に音声テキスト化変換のために送信してもよい。
【0161】
STT処理モジュール730が、1つ又はそれ以上のASRシステムを有してもよい。1つ又はそれ以上のASRシステムが、I/O処理モジュール728を介して受信された音声入力を処理して、認識結果を生成してもよい。各ASRシステムが、フロントエンド音声プリプロセッサを有してもよい。フロントエンド音声プリプロセッサが、音声入力から代表的な特徴を抽出してもよい。例えば、フロントエンド音声プリプロセッサが音声入力に対してフーリエ変換を実行して、音声入力を特徴付けるスペクトル特性を、代表的な多次元ベクトルの列として抽出してもよい。更に、各ASRシステムが、(音響モデル及び/又は言語モデルなどの)1つ又はそれ以上の音声認識モデルを有し、1つ又はそれ以上の音声認識エンジンを実装してもよい。音声認識モデルの複数の例に、隠れマルコフモデル、ガウス混合モデル、ディープニューラルネットワークモデル、n-gram言語モデル及びその他の統計的モデルが含まれてもよい。音声認識エンジンの例に、動的タイムワーピング利用エンジン及び重み付き有限状態トランスデューサ(WFST)利用エンジンが含まれてもよい。1つ又はそれ以上の音声認識モデル及び1つ又はそれ以上の音声認識エンジンを、フロントエンド音声プリプロセッサの抽出された代表的な特徴を処理して、(音素、音素列及びサブワードなどの)中間認識結果を生成し、最終的には(単語、単語列又はトークン列などの)テキスト認識結果を生成するために使用してもよい。幾つかの例においては、音声入力が、サードパーティサービスにより、又はユーザの(デバイス104、200、400又は600などの)デバイス上で少なくとも部分的に処理されて、認識結果を生成してもよい。STT処理モジュール730が(単語、単語列又はトークン列などの)テキスト列を含む認識結果を生成すると、認識結果が、意図の推論のために自然言語処理モジュール732へと渡されてもよい。
【0162】
音声テキスト化処理についての詳細は、その開示全体が本願中に引用をもって援用されている、「Consolidating Speech Recognition Results」と題された2011年9月20日出願の米国実用新案登録出願第13/236,942号に記載されている。
【0163】
幾つかの例においては、STT処理モジュール730が、認識可能な単語の語彙を有するか、又は音標文字変換モジュール731を介してこれにアクセスしてもよい。各語彙単語が、音声認識音標文字で表される単語の1つ又はそれ以上の候補発音と関連付けられてもよい。詳細には、認識可能な単語の語彙が、複数の候補発音と関連付けられた単語を含んでもよい。例えば、語彙が、候補発音
【0164】
【数1】
と関連付けられた単語「tomato」を含んでもよい。更に、語彙単語が、ユーザからの以前の音声入力に基づくカスタム候補発音と関連付けられていてもよい。そのようなカスタム候補発音が、STT処理モジュール730に記憶され、特定のユーザとデバイス上のユーザのプロファイルを介して関連付けられていてもよい。幾つかの例においては、単語に対する候補発音が、単語の綴り及び1つ又はそれ以上の言語学上の及び/又は発音上の規則に基づいて定められてもよい。幾つかの例においては、候補発音が、例えば周知の標準的な発音に基づいて手動で生成されてもよい。
【0165】
幾つかの例においては、候補発音が、候補発音の一般性の度合いに基づいて順位付けされてもよい。例えば、候補発音
【0166】
【数2】
が、
【0167】
【数3】
よりも(全ユーザ間で、特定の地域のユーザ間で、又は何らかのその他の適切なユーザのサブセット間で)一般的に使用される発音であるという理由で、
【0168】
【数4】
よりも高く順位付けされてもよい。幾つかの例においては、候補発音が、候補発音がユーザと関連付けられたカスタム候補発音であるか否かに基づいて順位付けされてもよい。例えば、カスタム候補発音が、標準的な候補発音よりも高く順位付けされてもよい。このことは、標準的な候補発音から外れた独特の発音を有する固有名詞を認識するのに有用である。幾つかの例においては、候補発音が、地理的起源、国籍又は民族などの1つ又はそれ以上の音声的な特徴と関連付けられてもよい。例えば、候補発音
【0169】
【数5】
が米国と関連付けられる一方で、候補発音
【0170】
【数6】
が英国と関連付けられてもよい。更に、候補発音の順位が、デバイス上のユーザのプロファイルに記憶されているユーザの(地理的起源、国籍又は民族などの)1つ又はそれ以上の特徴に基づいてもよい。例えば、ユーザが米国と関連していることがユーザのプロファイルから特定されてもよい。ユーザが米国と関連していることに基づいて、(米国と関連付けられた)候補発音
【0171】
【数7】
が、(英国と関連付けられた)候補発音
【0172】
【数8】
よりも高く順位付けされてもよい。幾つかの例においては、順位付けされた複数の候補発音のうちの1つが、(最も可能性の高い発音などの)予測発音として選択されてもよい。
【0173】
音声入力が受信されると、STT処理モジュール730を使用して、音声入力に対応する音素を(例えば音響モデルを用いて)判定し、次に音素と一致する単語を(例えば言語モデルを用いて)判定することを試みてもよい。例えば、STT処理モジュール730が、最初に音声入力の一部に対応する音素列
【0174】
【数9】
を特定した場合には、次に語彙索引744に基づき、この列が単語「tomato」に対応すると判定してもよい。
【0175】
幾つかの例においては、STT処理モジュール730が、近似的マッチング技術を用いて、発言中の単語を特定してもよい。従って、例えば、STT処理モジュール730が、単語「tomato」に対応する音素列
【0176】
【数10】
を、この音素列がこの単語の候補音素列のうちの1つではない場合であっても、単語「tomato」に対応すると特定してもよい。
【0177】
デジタルアシスタントの自然言語処理モジュール732(「自然言語プロセッサ」)が、STT処理モジュール730によって生成された複数の単語又はトークンの列(「トークン列」)を受信し、トークン列を、デジタルアシスタントによって認識された1つ又はそれ以上の「実施可能な意図」と関連付けるように試みてもよい。「実施可能な意図」が、デジタルアシスタントによって実行可能なタスクを表してもよく、またタスクフローモデル754として具現化される、関連するタスクフローを有してもよい。関連するタスクフローが、タスクを実行するためにデジタルアシスタントが行う一連のプログラムされたアクション及びステップであってもよい。デジタルアシスタントの能力の範囲が、タスクフローモデル754として具現化及び記憶されるタスクフローの数及び種類又は、換言すれば、デジタルアシスタントが認識する「実施可能な意図」の数及び種類に依存してもよい。デジタルアシスタントの効率性が、自然言語で表現されたユーザ要求から正しい「実施可能な意図」を推論するアシスタントの能力に依存してもよい。
【0178】
幾つかの例においては、STT処理モジュール730から取得された単語又はトークンの列に加えて、自然言語処理モジュール732が、ユーザ要求に関連するコンテキスト情報を、例えばI/O処理モジュール728から更に受信してもよい。自然言語処理モジュール732が、任意にコンテキスト情報を使用して、STT処理モジュール730から受信したトークン列に含まれる情報を、明瞭化、補足及び/又は更に定義してもよい。コンテキスト情報が、例えば、ユーザ嗜好、ハードウェア及び/又はユーザデバイスのソフトウェア状態、ユーザ要求の前、途中又は直後に収集されたセンサ情報、デジタルアシスタントとユーザとの間の以前の(ダイアログなどの)インタラクションなどを含んでもよい。本願中に記載するように、コンテキスト情報が動的であってもよく、時間、場所、ダイアログの内容及びその他の要因に伴って変化してもよい。
【0179】
幾つかの例においては、自然言語処理が、例えばオントロジ760に基づいていてもよい。オントロジ760が、多数のノードを含む階層構造であり、各ノードが、複数の「実施可能な意図」又はその他の複数の「属性」のうちの1つ又はそれ以上に関連している「実施可能な意図」又は「属性」を表してもよい。上述のように、「実施可能な意図」が、デジタルアシスタントが実行することの可能な、即ち「実施可能」であるか又は作用されることの可能なタスクを表してもよい。「属性」が、実施可能な意図又は別の属性の従属的な局面と関連付けられたパラメータを表してもよい。オントロジ760内での実施可能な意図ノードと属性ノードとのつながりが、属性ノードによって表されるパラメータが、前記実施可能な意図ノードによって表されるタスクとどのように関係するのかを定義してもよい。
【0180】
幾つかの例においては、オントロジ760が、複数の実施可能な意図ノード及び複数の属性ノードから形成されてもよい。オントロジ760内において、各実施可能な意図ノードが、1つ又はそれ以上の属性ノードと直接に、又は1つ又はそれ以上の中間属性ノードを介してリンクしていてもよい。同様に、各属性ノードが、1つ又はそれ以上の実施可能な意図ノードと直接に、又は1つ又はそれ以上の中間属性ノードを介してリンクしていてもよい。例えば、図7Cに示すように、オントロジ760が「レストラン予約」ノード(即ち実施可能な意図ノード)を含んでもよい。属性ノード「レストラン」、(予約の)「日付/時刻」及び「人数」が、それぞれ直接に実施可能な意図ノード(即ち「レストラン予約」ノード)にリンクしていてもよい。
【0181】
加えて、属性ノード「料理」、「価格帯」、「電話番号」及び「場所」が、属性ノード「レストラン」の従属ノードであってもよく、それぞれが、中間属性ノード「レストラン」を介して「レストラン予約」ノード(即ち実施可能な意図ノード)にリンクしていてもよい。別の一例として、図7Cに示すように、オントロジ760が「リマインダ設定」ノード(即ち別の実施可能な意図ノード)を更に含んでもよい。属性ノード(リマインダ設定のための)「日付/時刻」及び(リマインダの)「対象」が、それぞれ「リマインダ設定」ノードにリンクされていてもよい。属性「日付/時刻」が、レストランの予約を行うタスクとリマインダを設定するタスクとの双方に関連してもよいことから、オントロジ760において、属性ノード「日付/時刻」が「レストラン予約」ノードと「リマインダ設定」ノードとの双方にリンクしていてもよい。
【0182】
実施可能な意図ノードが、そのリンクされた概念ノードと共に、「ドメイン」として記載されてもよい。本説明において、各ドメインは、各実施可能な意図と関連付けられていてもよく、特定の実施可能な意図に関連する一群のノード(及びこれらの関連性)を意味する。例えば、図7Cに示すオントロジ760が、オントロジ760内でのレストラン予約ドメイン762の一例及びリマインダドメイン764の一例を含んでもよい。レストラン予約ドメインが、実施可能な意図ノード「レストラン予約」、属性ノード「レストラン」、「日付/時刻」及び「人数」及び従属的な属性ノード「料理」、「価格帯」、「電話番号」及び「場所」を含んでもよい。リマインダドメイン764が、実施可能な意図ノード「リマインダ設定」並びに属性ノード「対象」及び「日付/時刻」を含んでもよい。幾つかの例においては、オントロジ760が多数のドメインから形成されてもよい。各ドメインが、1つ又はそれ以上の属性ノードを1つ又はそれ以上の他のドメインと共有してもよい。例えば、「日付/時刻」属性ノードが、レストラン予約ドメイン762及びリマインダドメイン764に加えて、(スケジューリングドメイン、旅行予約ドメイン、映画チケットドメインなどの)多数の異なるドメインと関連付けられていてもよい。
【0183】
図7Cは、オントロジ760における2つの例示的なドメインを図示しているが、その他のドメインが、例えば「映画を探す」、「電話をかける」、「案内を知る」、「会議のスケジュールを立てる」、「メッセージを送る」及び「質問に答える」、「リストを読む」、「ナビゲーション指示を出す」、「タスク指示を出す」などを含んでもよい。「メッセージを送る」ドメインが、「メッセージを送る」実施可能な意図ノードと関連付けられていてもよく、また、「受信者」、「メッセージの種類」及び「メッセージ本文」などの属性ノードを更に含んでもよい。属性ノード「受信者」が、例えば「受信者名」及び「メッセージ宛先」などの従属的な属性ノードによって更に定義されてもよい。
【0184】
幾つかの例においては、オントロジ760が、デジタルアシスタントが理解し作用を及ぼすことの可能なすべてのドメイン(及び、これゆえに実施可能な意図)を含んでもよい。幾つかの例においては、オントロジ760が、ドメイン又はノード全体を追加又は除去することによって、あるいはオントロジ760内のノード間の関連性を変更することによって変更されてもよい。
【0185】
幾つかの例においては、相互に関係した複数の実施可能な意図に関連する複数のノードが、オントロジ760内で「スーパードメイン」の下にクラスタリングされていてもよい。例えば、「旅行」スーパードメインが、旅行に関連した複数の属性ノード及び実施可能な意図ノードのクラスタを含んでもよい。旅行に関連した複数の実施可能な意図ノードが、「エアライン予約」、「ホテル予約」、「レンタカー」、「案内を知る」、「名所を見つける」などを含んでもよい。(「旅行」スーパードメインなどの)同じスーパードメイン下の複数の実施可能な意図ノードが、多数の属性ノードを共通に有してもよい。例えば、「エアライン予約」、「ホテル予約」、「レンタカー」、「案内を知る」及び「名所を見つける」ための複数の実施可能な意図ノードが、複数の属性ノード「出発地」、「目的地」、「出発日/時刻」、「到着日/時刻」及び「人数」のうちの1つ又はそれ以上を共有してもよい。
【0186】
幾つかの例においては、オントロジ760内の各ノードが、ノードによって表される属性又は実施可能な意図に関する単語及び/又は句の組と関連付けられていてもよい。各ノードと関連付けられた単語及び/又は句の組のそれぞれが、ノードと関連付けられた、いわゆる「語彙」であってもよい。各ノードと関連付けられた単語及び/又は句の組のそれぞれが、ノードによって表される属性又は実施可能な意図と関連させて、語彙索引744内に格納されていてもよい。例えば、再び図7Bを参照すると、属性ノード「レストラン」に関する語彙が、「食べ物」、「飲み物」、「料理」、「空腹」、「食べる」、「ピザ」、「ファストフード」、「食事」などの単語を含んでもよい。別の一例としては、実施可能な意図ノード「電話をかける」に関する語彙が、「発信」、「電話」、「ダイヤル」、「着信」、「この番号にかける」、「に電話をかける」などの単語及び句を含んでもよい。語彙索引744が、複数の異なる言語の単語及び句を任意選択的に含んでもよい。
【0187】
自然言語処理モジュール732が、STT処理モジュール730から(テキスト列などの)トークン列を受信し、どのノードがトークン列中の単語によって連想されるのかを判定してもよい。幾つかの例においては、トークン列内のある単語又は句が、オントロジ760内の1つ又はそれ以上のノードと(語彙索引744を介して)関連付けられていることが見いだされた場合に、単語又は句がこれらのノードを「トリガ」又は「起動」させてもよい。自然言語処理モジュール732が、起動された複数のノードの量及び/又は相対的な重要度に基づき、複数の実施可能な意図のうちの1つを、デジタルアシスタントが実行するようにユーザが意図するタスクとして選択してもよい。幾つかの例においては、最も多くの「トリガ」されたノードを有するドメインが選択されてもよい。幾つかの例においては、(例えばその様々なトリガされたノードの相対的な重要度に基づく)信頼度の値が最も高いドメインが選択されてもよい。幾つかの例においては、ドメインが、トリガされた複数のノードの数と重要度との組み合わせに基づいて選択されてもよい。幾つかの例においては、デジタルアシスタントが、ユーザからの同様の要求を以前に正しく解釈したか否かなどの更なる要素も、ノードの選択に際して考慮されてもよい。
【0188】
ユーザデータ748が、ユーザ固有の語彙、ユーザの嗜好、ユーザのアドレス、ユーザのデフォルトの及び二次的な言語、ユーザの連絡先リストならびにその他の、各ユーザの短期的又は長期的な情報などのユーザ固有の情報を含んでもよい。幾つかの例においては、自然言語処理モジュール732が、ユーザ固有の情報を用いて、ユーザ入力に含まれる情報を補足し、ユーザの意図を更に定義してもよい。例えば、「私の友達を私の誕生日パーティに招待して」というユーザ要求に対し、自然言語処理モジュール732が、そのような情報を要求の中に明示するようにユーザに要求するのではなく、ユーザデータ748にアクセスして、「友達」とは誰なのか、「誕生日パーティ」がいつどこで催されるのかを判定してもよい。
【0189】
トークン列に基づくオントロジの検索のその他の詳細は、その開示全体が本願中に引用をもって援用されている、「Method and Apparatus for Searching Using An Active Ontology」と題された2008年12月22日出願の米国実用新案登録出願第12/341,743号に記載されている。
【0190】
幾つかの例においては、自然言語処理モジュール732がユーザ要求に基づいて実施可能な意図(又はドメイン)を特定すると、自然言語処理モジュール732が、特定された実施可能な意図を表す構造化されたクエリを生成してもよい。幾つかの例においては、構造化されたクエリが、実施可能な意図のためのドメイン内の1つ又はそれ以上のノードの複数のパラメータを含んでもよく、複数のパラメータのうちの少なくとも幾つかに、ユーザ要求において指定されている固有の情報及び要件が組み込まれている。例えば、ユーザが「寿司屋で7時に夕食の予約を取って」と言ってもよい。この場合に、自然言語処理モジュール732が、実施可能な意図が「レストランの予約」であることを、ユーザ入力に基づいて正しく認識することが可能であってもよい。オントロジに従って、「レストラン予約」ドメインのための構造化されたクエリが、{料理}、{時刻}、{日付}、{人数}などのパラメータを含んでもよい。幾つかの例においては、音声入力及び音声入力からSTT処理モジュール730を用いて導出されたテキストに基づき、自然言語処理モジュール732が、レストラン予約ドメインのための部分的に構造化されたクエリを生成し、部分的に構造化されたクエリが、パラメータ{料理=「寿司」}及びパラメータ{時刻=「午後7時」}を含んでもよい。しかし、この例では、ユーザの発言に含まれる情報は、ドメインに関連する構造化されたクエリを完了するのには不十分である。従って、現在入手可能な情報に基づく構造化されたクエリにおいては、{人数}及び{日付}などのその他の必要なパラメータが指定されない可能性がある。幾つかの例においては、自然言語処理モジュール732が、構造化されたクエリの幾つかのパラメータに、受信したコンテキスト情報を組み込んでもよい。例えば、幾つかの例においては、ユーザが「私の近くの」寿司屋を要求した場合には、自然言語処理モジュール732が、構造化されたクエリ内の{場所}パラメータに、ユーザデバイスからのGPS座標を組み込んでもよい。
【0191】
幾つかの例においては、自然言語処理モジュール732が、(任意の完成したパラメータを含む)生成された構造化されたクエリを、タスクフロー処理モジュール736(「タスクフロープロセッサ」)へと提供してもよい。タスクフロー処理モジュール736が、自然言語処理モジュール732から構造化されたクエリを受信し、必要な場合には構造化されたクエリを完成させ、ユーザの最終的な要求を「完了する」のに必要なアクションを実行するように構成されていてもよい。幾つかの例においては、これらのタスクを完了するのに必要な様々な手順が、タスクフローモデル754において提供されてもよい。幾つかの例においては、タスクフローモデル754が、ユーザから更なる情報を取得するための手順及び、実施可能な意図と関連付けられたアクションを実行するためのタスクフローを含んでもよい。
【0192】
上述のように、構造化されたクエリを完了するために、タスクフロー処理モジュール736が、更なる情報を取得するためのユーザとの更なるダイアログを開始すること及び/又は、曖昧となる可能性のある発言の曖昧性を除去することが必要であってもよい。そのような対話が必要である場合に、タスクフロー処理モジュール736が、ユーザとのダイアログを行うために、ダイアログフロー処理モジュール734を呼び出してもよい。幾つかの例においては、ダイアログフロー処理モジュール734が、どのように(及び/又はいつ)ユーザに対して更なる情報を要求するのかを決定し、ユーザ応答を受信して処理してもよい。ユーザとの間での質問の送信及び返答の受信が、I/O処理モジュール728を介して行われてもよい。幾つかの例においては、ダイアログフロー処理モジュール734が、オーディオ及び/又はビジュアル出力を介してダイアログ出力をユーザに提供し、ユーザから口頭での又は(クリックなどの)物理的な応答による入力を受信してもよい。上述の例において、タスクフロー処理モジュール736が、ドメイン「レストラン予約」と関連付けられた構造化されたクエリのための「人数」及び「日付」情報を決定するためにダイアログフロー処理モジュール734を呼び出すと、ダイアログフロー処理モジュール734が、「人数は?」及び「何日ですか?」などのユーザへの質問を生成してもよい。ユーザからの返答を受信すると、ダイアログフロー処理モジュール734が、構造化されたクエリに欠落していた情報を組み込むか、情報をタスクフロー処理モジュール736に転送して、構造化されたクエリから欠落していた情報を完成させてもよい。
【0193】
タスクフロー処理モジュール736が、実施可能な意図のための構造化されたクエリを完成させると、タスクフロー処理モジュール736が、実施可能な意図と関連付けられた最終的なタスクの実行へと進んでもよい。従って、タスクフロー処理モジュール736が、構造化されたクエリに含まれる特定のパラメータに従い、タスクフローモデル中の手順及び命令を実行してもよい。例えば、「レストラン予約」という実施可能な意図のためのタスクフローモデルが、レストランに連絡して、特定の時刻での特定の人数の予約を実際に依頼するためのステップ及び命令を含んでもよい。例えば、タスクフロー処理モジュール736が、{レストラン予約、レストラン=ABCカフェ、日付=3/12/2012、時刻=午後7時、人数=5}のような構造化されたクエリを用いて、(1)ABCカフェのサーバ又はレストラン予約システムOPENTABLE(登録商標)にログオンし、(2)ウェブサイト上のフォームに日付、時刻及び人数を入力し、(3)フォームを送信し、(4)ユーザのカレンダーに予約のカレンダーエントリを記入する手順を実行してもよい。
【0194】
幾つかの例においては、タスクフロー処理モジュール736が、ユーザ入力で要求されているタスクを完了するため、又はユーザ入力で要求されている情報を返信するために、サービス処理モジュール738(「サービス処理モジュール」)の支援を利用してもよい。例えば、サービス処理モジュール738が、タスクフロー処理モジュール736に代わって、電話をかけ、カレンダーエントリを設定し、地図検索を呼び出し、(レストラン予約ポータル、ソーシャルネットワーキングウェブサイト、銀行ポータルなどの)サードパーティサービスを呼び出すか、又はこれと対話してもよい。幾つかの例においては、各サービスが必要とするプロトコル及びアプリケーションプログラミングインターフェース(API)が、複数のサービスモデル756中の各サービスモデルによって特定されてもよい。サービス処理モジュール738が、あるサービスについての適切なサービスモデルにアクセスし、サービスモデルに従ってサービスが必要とするプロトコル及びAPIに従い、サービスの要求を生成してもよい。
【0195】
例えば、あるレストランがオンライン予約サービスを許可している場合には、レストランが、予約を行うための必要なパラメータ及び必要なパラメータの値をオンライン予約サービスに送信するためのAPIを指定するためのサービスモデルを提出してもよい。サービス処理モジュール738が、タスクフロー処理モジュール736によって要求されると、サービスモデル内に記憶されているウェブアドレスを使用して、オンライン予約サービスとのネットワーク接続を確立し、予約のための(時刻、日付、人数などの)必要なパラメータを、オンライン予約サービスのAPIに対応したフォーマットでオンライン予約インターフェースに送信してもよい。
【0196】
幾つかの例においては、自然言語処理モジュール732、ダイアログフロー処理モジュール734及びタスクフロー処理モジュール736を集合的に繰り返し使用して、ユーザの意図を推論及び定義し、ユーザの意図を更に明瞭化し洗練するための情報を取得し、最終的にユーザの意図を実現するための応答(即ちユーザへの出力又はタスクの完了)を生成してもよい。生成された応答が、ユーザの意図を少なくとも部分的に実現する音声入力へのダイアログ応答であってもよい。更に、幾つかの例においては、生成された応答が、音声出力としての出力であってもよい。これらの例において、生成された応答が、(音声シンセサイザなどの)音声合成モジュール740に送信され、ここでダイアログ応答を音声の形に合成するために処理されてもよい。更に別の複数の例においては、生成された応答が、音声入力でのユーザ要求を満たすことに関連したデータコンテンツであってもよい。
【0197】
音声合成モジュール740が、ユーザへの音声出力を合成するように構成されていてもよい。音声合成モジュール740が、デジタルアシスタントによって提供されたテキストに基づいて、音声出力を合成してもよい。例えば、生成されたダイアログ応答が、テキスト列の形であってもよい。音声合成モジュール740が、テキスト列を可聴音声出力に変換してもよい。音声合成モジュール740が、テキストから音声出力を生成するために、連結合成、単位選択合成、ダイフォン合成、分野限定合成、フォルマント合成、調音合成、隠れマルコフモデル(HMM)に基づいた合成及び正弦波合成を非限定的に含むいかなる適切な音声合成技術を使用してもよい。幾つかの例においては、音声合成モジュール740が、個々の単語をこれらの単語に対応する音素列に基づいて合成するように構成されていてもよい。例えば、ある音素列が、生成されたダイアログ応答中の単語に関連付けられていてもよい。音素列が、単語に関連したメタデータ中に格納されていてもよい。音声合成モデル740が、メタデータ中の音素列を直接に処理して、単語を音声の形に合成するように構成されていてもよい。
【0198】
幾つかの例においては、音声合成が、音声合成モジュール740を使用する代わりに(又はこれに加えて)、(サーバシステム108などの)遠隔デバイス上で実行され、合成された音声が、ユーザへの出力のためにユーザデバイスへと送信されてもよい。例えば、このことが、デジタルアシスタントへの出力がサーバシステムで生成される実装例において起こってもよい。また、一般にはサーバシステムがユーザデバイスよりも多くの処理能力又は資源を有することから、クライアント側での合成において実際に用いられるであろうよりも高品質の音声出力を得ることが可能であってもよい。
【0199】
デジタルアシスタントについての更なる詳細は、その開示全体が本願中に引用をもって援用されている、「Intelligent Automated Assistant」と題された2011年1月10日出願の米国実用新案登録出願第12/987,982号及び、「Generating and Processing Task Items That Represent Tasks to Perform」と題された2011年9月30日出願の米国実用新案登録出願第13/251,088号に記載されている。
4.デジタルアシスタントの動作のための処理
【0200】
図8は、幾つかの例に従ってデジタルアシスタントを動作させるためのプロセス800のフロー図である。プロセス800は、例えば、デジタルアシスタントを実装している(デバイス104、108、200、400又は600などの)1つ又はそれ以上の電子デバイスを用いて実行される。幾つかの例においては、プロセス800が、(システム100などの)クライアント-サーバシステムを用いて実行され、プロセス800の複数のブロックが、(DAサーバ106などの)サーバとクライアントサービスとの間で任意の方法で分割されていてもよい。別の複数の例においては、プロセス800が、サーバと(携帯電話及びスマートウォッチなどの)複数のクライアントデバイスとの間で分割されてもよい。従って、本明細書中においては、プロセス800の複数の部分が、クライアント-サーバシステムの特定のデバイスによって実行されるものとして記載されているが、プロセス800がそのように限定されないことが理解されよう。別の複数の例においては、プロセス800が、(ユーザデバイス104などの)単一のクライアントデバイスのみ、又は複数のクライアントデバイスのみを用いて実行される。プロセス800においては、幾つかのブロックが任意に組み合わせられ、幾つかのブロックの順序が任意選択的に変更され、幾つかのブロックが任意選択的に省略される。幾つかの例においては、更なる複数のステップが、プロセス800と組み合わせて実行されてもよい。
【0201】
ブロック805において、自然言語ユーザ入力が、図1のユーザデバイス104などのユーザデバイスによって受信される。自然言語ユーザ入力は、例えば音声入力又はテキスト入力に含まれる音声入力であってもよい。幾つかの例においては、自然言語ユーザ入力が、ユーザデバイス及び/又は別のデバイスに対するタスク実行要求であってもよい。例えば、「メインストリート1200に車を呼んで」という例において、自然言語ユーザ入力が、ユーザデバイスに対する乗車予約サービスを用いた車の予約要求を含んでもよい。幾つかの例においては、自然言語ユーザ入力が、要求されたタスクの1つ又はそれ以上のパラメータを更に指定してもよい。例えば、「メインストリート1200」は、車の予約のピックアップ場所を指定する。「ドミノでいつものを注文する」という例では、自然言語ユーザ入力が、ピザチェーンのDomino’sで食べ物を注文するというユーザデバイスへの要求を含んでもよい。「いつもの」が、どの食べ物を注文するのかをコンテキスチュアルに更に指定してもよい。
【0202】
ブロック810で、意図及び、任意選択的に、意図に関連した1つ又はそれ以上のパラメータが特定される。意図及びパラメータが、例えば自然言語ユーザ入力から導出されてもよい。幾つかの例においては、テキスト列が自然言語ユーザ入力から取得され、テキスト列から意図及びパラメータが導出される。テキスト列が、いかなる既知の音声テキスト化技術を用いて取得されてもよい。
【0203】
上述のように、意図がユーザによって要求されたタスクに対応していてもよい。従って、ある意図を(例えば判定するなどのように)特定することが、自然言語ユーザ入力で指定されたタスクを特定すること及び/又は、要求されたタスクに対応する意図を、自然言語ユーザ入力の言語及び/又はコンテキストに基づいて推論することを含んでもよい。意図が、ユーザデバイスによって実行されるいかなる種類のタスクに対応していてもよく、特に、以下により詳細に説明するユーザデバイスの1つ又はそれ以上のアプリケーションによって実行されるタスクに対応していてもよい。
【0204】
第1の種類のデバイスが第2の種類のデバイスとは異なるタスクを実行してもよいことから、意図及び/又はパラメータがデバイスの種類に基づいて特定されてもよい。例えば、第1の種類のデバイスが車を予約する意図と関連付けられたタスクを実行し、第2の種類のデバイスが、予約を行った後の車の予約の状態を提供する意図と関連付けられたタスクを実行してもよい。
【0205】
幾つかの例においては、意図が(意図カテゴリ、複数の意図の組などの)1つ又はそれ以上のドメインに(含まれるなど)関連付けられている。各ドメインが、特定のクラスの複数の意図を含み、複数の意図を直観的にグループ化することが可能であってもよい。例えば、車を予約する、車の予約を取り消す及び/又は、乗車予約に共通に関連付けられたタスクを対象とする任意のその他の複数の意図が、乗車予約ドメインに含まれてもよい。別の一例においては、フライトにチェックインする、フライトをキャンセルする、フライトを変更する、フライト情報を取り出す及び/又は、航空機による旅行に共通に関連するタスクを対象とする任意のその他の複数の意図が、航空機による旅行ドメインに含まれてもよい。別の一例においては、案内を知る、交通情報を取り出す及び/又は、ナビゲーションに共通に関連するタスクを対象とする任意のその他の複数の意図が、ナビゲーションドメインに含まれてもよい。更に別の一例においては、送金する、支払いを受信する及び/又は、金融取引に共通に関連するタスクを対象とする任意のその他の複数の意図が、金融取引ドメインに含まれてもよい。
【0206】
パラメータを特定することが、意図に対応するタスクが実行される方法を指定する自然言語入力の部分を特定することを含んでもよい。パラメータが、例えば、(住所又は名所などの)場所、時刻、日付、連絡先、種類、(例えば電子メール又はメッセージに挿入される)テキスト、(距離、金額などの)量及び、場合によってはタスクを実行するソフトウェアアプリケーションの名称を指定してもよい。パラメータが、本明細書中に例示されているタスクのその他の条件を更に指定してもよい。
【0207】
パラメータが、例えば1つ以上の検出器を用いて特定されてもよい。複数の検出器のそれぞれが、(自然言語ユーザ入力のテキスト表現などの)自然言語ユーザ入力を構文解析して、1つ又はそれ以上のデータ型を特定するように構成されていてもよい。例えば、第1の検出器がユーザの連絡先を特定するように構成されており、第2の検出器がアドレスを特定するように構成されていてもよい。その他の検出器が、電話番号、氏名、興味のある人物、名所、URL、時刻、便名、荷物追跡番号及び日付を非限定的に含むデータ型を特定してもよい。
【0208】
幾つかの例においては、カスタム語彙の単語が、自然言語ユーザ入力において、例えばパラメータとして特定されてもよい。一例においては、1つ又はそれ以上の検出器が、ユーザ固有の用語を特定するように構成されていてもよい。ユーザ固有の用語が、電子デバイスのユーザと関連する、及び/又はこれによって指定される、例えば連絡先名、アドレス、電話番号などのいかなる用語を含んでもよい。別の一例においては、1つ又はそれ以上の検出器が、1つ又はそれ以上のアプリケーションのカスタム語彙をそれぞれ特定するように構成されていてもよい。あるアプリケーションのカスタム語彙が、(Uber(登録商標)、Lyft(登録商標)、Instagram(登録商標)、Flickr(登録商標)、WeChat(登録商標)、WhatsApp(登録商標)、LINE(登録商標)、Viber(登録商標)などの)アプリケーションの名称及び/又は(UberX、DM、Lyftline、ZipCar(登録商標)などの)アプリケーションに固有に関連付けられたその他の用語を含んでもよい。幾つかの例においては、カスタム語彙が、語彙索引744(図7B)に含まれてもよい。
【0209】
幾つかの例においては、1つ又はそれ以上のアプリケーションが、アプリケーション登録サービスに登録してもよい。サービスが、サーバ108及び/又はユーザデバイス104によってホスティングされるか、又はアクセス可能であってもよい。この方法での登録が、アプリケーションと関連付けられた1つ又はそれ以上のカスタム語彙用語及び、任意選択的にカスタム語彙用語の1つ又はそれ以上の言語モデルを指定することを含んでもよい。言語モデルが、例えば、複数のカスタム語彙用語のそれぞれについて、1つ又はそれ以上の発音を提示してもよい。この方法で用いられる言語モデルが、その後の自然言語ユーザ入力の分析中にそのようなカスタム用語の使用の特定を補助するために用いられてもよい。
【0210】
幾つかの例においては、1つ又はそれ以上のパラメータが、自然言語ユーザ入力から推論されてもよい。「スタジアムまでの車を手配して」という例においては、意図に関連する一パラメータがユーザの現在の場所であることが推論されてもよい。「ジョンに食事代を返金して」という別の一例においては、意図に関連する一パラメータが金額であることが推論されてもよい。
【0211】
幾つかの例においては、意図が自然言語ユーザ入力に基づいて特定された後に、意図と関連付けられたパラメータが特定される。更に、幾つかの例においては、意図に関連付けられていないパラメータは特定されない。例えば、(運転案内などの)案内に対応する意図が、(出発地及び/又は目的地などの)1つ又はそれ以上の場所及び/又は交通手段を特定するパラメータと関連付けられていてもよい。「メインストリート1200までのリアルタイムの運転案内を教えて」という例について考えると、この例では、特定された意図が、案内を示すタスクに対応しており、「運転」が交通手段を指定するパラメータであり、「メインストリート1200」が場所を指定するパラメータである。ユーザ入力中の「リアルタイムの」という部分は、特定された意図に関連するパラメータではない。従って、「リアルタイムの」が有効なパラメータである意図もありうるものの、動作中は「リアルタイムの」はパラメータとして特定されない。
【0212】
別の複数の例においては、1つ又はそれ以上のパラメータが最初に特定され、特定された1つ又はそれ以上のパラメータに基づいて、意図が特定されてもよい。更に別の複数の例においては、意図及び意図と関連付けられたパラメータが同時に特定されてもよい。
【0213】
幾つかの例においては、自然言語ユーザ入力の意図及びパラメータが、図1のユーザデバイス104などのユーザデバイスによって特定されてもよい。別の複数の例においては、ユーザデバイスが自然言語ユーザ入力(又はその表現)を、図1のサーバ108などのサーバに提供し、サーバが自然言語ユーザ入力の意図及びパラメータを、前述のように(判定するなどのように)特定する。その後、サーバが特定された意図及びパラメータをユーザデバイスに(送信するなどのように)提供する。
【0214】
任意選択的に、意図及び任意のパラメータが特定された後に、ユーザデバイスが、特定された意図及び/又はパラメータをユーザデバイスのユーザに確認し、また、幾つかの場合においては、推論されたパラメータをユーザデバイスのユーザに確認する。この方法で確認することが、自然言語クエリに応じて、特定された意図及び意図と関連付けられた全ての特定されたパラメータを確認するようにユーザを促すことを含んでもよい。例えば、「空港までの車を手配して」というユーザ入力に応じて、ユーザデバイスが、「あなたの現在の位置から空港までの車を手配してほしいのですか?」という自然言語クエリを提供してもよい。ユーザデバイスによって提供された自然言語クエリが、ユーザデバイスのタッチ感知ディスプレイを用いて、テキストとしてユーザに提供されてもよく、及び/又はユーザデバイスの(図2のスピーカ211などの)音声出力コンポーネントを用いて、音声としてユーザに提供されてもよい。ユーザが、例えば自然言語ユーザ入力をユーザデバイスに提供することによって、自然言語クエリに対して応じてもよい。
【0215】
任意選択的に、ユーザデバイスが個々のパラメータを確認する。幾つかの例においては、このことが、1つ又はそれ以上のパラメータを確認するようにユーザを促すことを含んでもよい。例えば、「駅までの車を手配して」というユーザ入力に応じて、ユーザデバイスが「ペン駅のことですか?」という自然言語クエリを提供してもよい。別の一例としては、「ジョンに5ドル支払って」というユーザ入力に応じて、ユーザデバイスが「ジョン・スミスさんのことですか?」という自然言語クエリを提供してもよい。ユーザデバイスによって提供される自然言語クエリが、ユーザデバイスのタッチ感知ディスプレイを用いて、テキストとしてユーザに提供されてもよく、及び/又は、ユーザデバイスの(図2のスピーカ211などの)音声出力コンポーネントを用いて、音声としてユーザに提供されてもよい。ユーザが、例えば自然言語ユーザ入力をユーザデバイスに提供することによって、自然言語クエリに応じてもよい。
【0216】
幾つかの例においては、1つ又はそれ以上のパラメータがコンテキスチュアルである。従って、ユーザデバイスが、1つ又はそれ以上のパラメータを、コンテキスト情報に基づいて(解析するなどのように)決定してもよい。コンテキスト情報が、ユーザデバイスのコンテキスト情報(又はここに記憶された任意のデータ)及び/又はユーザデバイスのユーザのコンテキスト情報であってもよい。例えば、自然言語ユーザ入力が「私の家までの車を手配して」であってもよい。「私の家」がコンテキスチュアルなパラメータであり、かつ実際の場所を指定していないので、ユーザデバイスがユーザデバイスの場所を判定し、判定された場所をパラメータとして(即ち、「私の家」の代わりに)特定してもよい。別の一例としては、自然言語ユーザ入力が「彼に電話を掛け直して」であってもよい。「彼に」がコンテキスチュアルなパラメータであり、かつ具体的な連絡先を指定していないので、ユーザデバイスが、「彼に」によって意図される連絡先を判定し、連絡先をパラメータとして(即ち、「彼に」の代わりに)特定してもよい。
【0217】
幾つかの例においては、特定された意図及びパラメータが、インテントオブジェクトとして具現化されてもよい。そのように具現化された各インテントオブジェクトは、(データ構造、プログラミングオブジェクトなどの)オブジェクトであり、各意図に対応している。各インテントオブジェクトが、それぞれが1つ又はそれ以上のパラメータに対応する1つ又はそれ以上の(インスタンス変数などの)フィールドであってもよい。例えば、乗車予約意図に対応するインテントオブジェクトが、以下の疑似コード:
public final class RideBookingIntent{
public final static String INTENT_TYPE=”RideBookinglntent”;
public final parameter<Location>pickupLocation;
public final parameter<Location>dropOffLocation;
public final parameter<dataString>vehicleType;
public final parameter<Integer>partySize;
public final parameter<dateTime>pickupTime;
private RideBookingIntent(Location p,Location d,dataString v,Integer p,dateTime pt){
pickup Location=p;
dropOffLocation=d;v
ehicleType=v;
partySize=p;
pickupTime=pt;}}
として(作成されるなどのように)生成されてもよい。上述の疑似コードは例示的なものであり、インテントオブジェクトが別の方法で具現化されてもよいことは、当業者に理解されるであろう。
【0218】
意図をインテントオブジェクトとして具現化することにより、意図が言語非依存であってもよい。上述のように、意図が自然言語ユーザ入力から導出されてもよい。従って、同じ意図が、いかなる数の音声言語で提供される自然言語入力から導出されてもよい。例えば、英語の自然言語ユーザ入力である「Send an Uber to 1200 Park Avenue」と、ドイツ語の自然言語ユーザ入力である「Senden Sie eine Uber auf 1200 Park Avenue」とは、それぞれ同じ意図が特定される結果をもたらす(及び同じインテントオブジェクトに帰着する)ことになろう。
【0219】
ブロック815で、意図に関連するソフトウェアアプリケーションを(選択するなどのように)特定してもよい。一般には、このことが、意図に対応するタスクを実行するように構成された1つ又はそれ以上のソフトウェアアプリケーションを特定することを含んでもよい。
【0220】
幾つかの例においては、ソフトウェアアプリケーションを特定することが、意図に対応する1つ又はそれ以上のドメインを決定すること及び、ドメインに対応するアプリケーションを特定することを含んでもよい。幾つかの例においては、1つ又はそれ以上の(ニューラルネットワークなどの)機械学習機構を用いて、1つ又はそれ以上の候補ドメインが特定される。例えば、複数の候補ドメインのそれぞれに関連度スコアが割り当てられ、関連度スコアを用いて複数の候補ドメインが順位付けされる。関連度スコアが、自然言語ユーザ入力のテキスト及び/又は自然言語ユーザ入力のコンテキストをニューラルネットワークに提供することによって判定されてもよい。最も高く順位付けされた1つ又はそれ以上の候補ドメインが、意図に関連した1つ又はそれ以上のドメインとして判定されてもよい。幾つかの場合においては、2つ又はそれ以上の最も高く順位付けされた候補ドメインの関連度スコアが、しきい値の範囲内であってもよい。ユーザデバイスが、オントロジ760などのオントロジを用いて、これらの候補ドメインを区別してもよい。
【0221】
上述のように、1つ又はそれ以上のソフトウェアアプリケーションに、アプリケーション登録サービスが割り当てられてもよい。この方法で登録することが、(乗車予約ドメイン、航空機による旅行ドメイン、ナビゲーションドメインなどの)ドメインのいずれがソフトウェアアプリケーションに対応するのかを指定することを含んでもよい。あるドメインに対応するアプリケーションが、ドメインによって特定される意図のそれぞれを対象としてもよいが、ドメインによって特定される意図の一部のみを対象としてもよい。幾つかの例においては、アプリケーションに個々の意図が割り当てられてもよく、また、アプリケーションを特定することが、特定された意図に対応するアプリケーションを特定することを含んでもよい。
【0222】
幾つかの例においては、アプリケーションが特定されたパラメータに従って特定される。例えば、「空港までの黒い車を手配して」というユーザ入力に基づき、乗車予約サービスを用いて車を予約する意図及び、車の種類(即ち「黒い車」)を指定するパラメータが特定されてもよい。幾つかの利用可能なアプリケーションが、一般的に車を予約するように構成されていてもよいが、「黒い車」を予約するように構成されたアプリケーションのみが特定されてもよい。別の一例では、「サムに「こんにちは!」というメッセージを送って」というユーザ入力に基づいて、幾つかのアプリケーションがメッセージを送信するように構成されていてもよいが、サムと連絡を取るための連絡先情報を有するアプリケーションのみが特定されてもよい。
【0223】
幾つかの例においては、ユーザデバイス上にインストールされた、及び/又はこれにアクセス可能なアプリケーションのみが特定されてもよい。例えば、幾つかの利用可能なアプリケーションがタスクを実行するように構成されていてもよいが、ユーザデバイスにアクセス可能なアプリケーションのみが特定されてもよい。アクセス可能なアプリケーションは、ユーザデバイス上に存在する、及び/又はインストールされたアプリケーションを含み、また更に、ユーザデバイスによって遠隔アクセス可能な、1つ又はそれ以上のその他のデバイス上などのアプリケーションを含む。
【0224】
従って、少なくとも幾つかの実施形態においては、特定されたアプリケーションは、特定されたパラメータに従ってタスクを実行するように構成されており、かつユーザデバイスによってアクセス可能なアプリケーションである。幾つかの例においては、複数のアプリケーションがこの基準を満たしてもよいが、ユーザデバイスが、より少数のアプリケーション又は1つのみのアプリケーションを特定するように希望してもよい。従って、アプリケーションが、ユーザデバイスによるアプリケーションの以前の使用に基づいて更に特定されてもよい。幾つかの例においては、所与の意図について、意図に対応するタスクを実行するために最後に使用されたアプリケーションが特定されてもよい。「ロブに電話を掛けて」というユーザ入力について考えると、意図(即ち電話を掛けること)及びパラメータ「即ち「ロブ」」が特定されてもよい。この例では、電話を掛けるために最後に使用されたアプリケーションが特定される。別の複数の例においては、意図に対応するタスクを実行するために最も頻繁に使用されたアプリケーションが特定される。同じ例では、電話を掛けるたえに最も頻繁に使用されたアプリケーションが特定される。幾つかの例においては、1つ又はそれ以上のパラメータに従って、複数のアプリケーションが更に選択される。例えば、ロブの連絡先に電話を掛けるために最後に使用されたアプリケーション又は、ロブの連絡先に電話を掛けるために最も頻繁に使用されたアプリケーションが特定される。幾つかの例においては、1つ又はそれ以上の特定のタスク及び/又はパラメータについて、デフォルトアプリケーションが、例えばユーザ又はデジタルアシスタントによって指定されてもよい。ユーザが、例えば、第1の連絡先に電話を掛ける時には第1のアプリケーションを使用し、第2の連絡先に電話を掛ける時には第2のアプリケーションを使用するように指定してもよい。
【0225】
上述のように、自然言語ユーザ入力が、1つ又はそれ以上のパラメータとして特定可能なカスタム語彙を含んでもよい。幾つかの例においては、そのようなカスタム語彙がアプリケーション名を含み、従って、入力内におけるカスタム語彙の存在に基づいて、アプリケーションが特定されてもよい。例えば、自然言語ユーザ入力が、「Skype(登録商標)でロブに電話を掛けて」であってもよい。これに応じて、ソフトウェアアプリケーションSkype(登録商標)が、特定されたソフトウェアアプリケーションとなってもよい。別の一例においては、自然言語ユーザ入力が、「ビートルズをSpotify(登録商標)でかけて」であってもよく、これに応じて、ソフトウェアアプリケーションSpotify(登録商標)が、特定されたソフトウェアアプリケーションとなってもよい。
【0226】
カスタム語彙が、あるアプリケーションに固有に関連付けられた用語を更に含んでもよい。従って、そのような用語がパラメータとして特定され、任意選択的に、アプリケーションを特定するために使用されてもよい。「UberX(登録商標)につないで」という例では、「UberX(登録商標)」は、ソフトウェアアプリケーションUber(登録商標)のカスタム語彙の用語であるので、Uber(登録商標)がソフトウェアアプリケーションとして特定される。「シャークスが優勝するといいなとツイートして」という例では、「ツイート」が、ソフトウェアアプリケーションTwitter(登録商標)のカスタム語彙の用語であるので、Twitter(登録商標)がソフトウェアアプリケーションとして特定される。
【0227】
カスタム語彙が、あるユーザに固有に関連付けられた用語を更に含んでもよい。従って、そのような用語がパラメータとして特定され、任意選択的に、アプリケーションを特定するために使用されてもよい。「上司に電話を掛けて」という例では、「上司」はカスタム語彙のユーザ固有の用語であるので、例えば、ユーザの連絡先リストを特定するためのパラメータとして特定されてもよい。
【0228】
幾つかの例においては、ユーザデバイスが、別のデバイスからカスタム語彙を受信してもよい。従って、ユーザデバイスが、他の方法ではデバイスに知られない語彙を特定するように構成されていてもよい。幾つかの例においては、ユーザデバイスが、定期的に及び/又は別のデバイスとの接続の確立に応じて、カスタム語彙を取り出してもよい。別の複数の例においては、ユーザデバイスが、ユーザが認識できない用語を提供したという判定に応じて、別のデバイスからカスタム語彙を検索してもよい。
【0229】
幾つかの例においては、特定されたパラメータに従ってタスクを実行するように構成されたいかなるアプリケーションも、ユーザデバイスにアクセスすることが不可能であってもよい。この結果、ユーザデバイスが、特定されたパラメータに従ってタスクを実行するように構成されたアプリケーションに(ダウンロード及び/又はインストールするなどのように)アクセスしてもよい。幾つかの例においては、ユーザデバイスが、複数のソフトウェアアプリケーションを特定して、ユーザにソフトウェアアプリケーションのリストを提示してもよい。ユーザが、複数のアプリケーションのうちの1つ又は複数を選択し、ユーザデバイスが1つ又はそれ以上の選択されたアプリケーションにアクセスしてもよい。
【0230】
ブロック820で、意図及びパラメータが特定されたソフトウェアアプリケーションに提供される。幾つかの例においては、意図及びパラメータが、インテントオブジェクトとしてソフトウェアアプリケーションに提供される。
【0231】
幾つかの例においては、意図及びパラメータが、ユーザデバイスの状態に基づいてソフトウェアアプリケーションに提供されてもよい。一例としては、意図及びパラメータが、ユーザデバイスがロック状態であるか否かに基づいて、選択可能にユーザデバイスに提供されてもよい。幾つかの例においては、デバイスがロック状態である時に、アプリケーションが特定の意図及びパラメータを受信することが許可されてもよい。他の複数の例においては、ユーザデバイスがロック状態でない時に、アプリケーションが特定の意図及びパラメータを受信することが許可されてもよい。ユーザデバイスが所与の状態である場合にアプリケーションが特定の意図を受信することが可能であるか否かが、例えばアプリケーション登録装置を用いた登録プロセス中に、ソフトウェアアプリケーションによって指定されてもよい。
【0232】
ブロック825で、ユーザデバイスが1つ又はそれ以上の応答をソフトウェアアプリケーションから受信してもよい。幾つかの例においては、ユーザデバイスが、ソフトウェアアプリケーションに提供された各パラメータについて応答を受信する。応答のそれぞれが、例えば、あるパラメータが有効であるか否か、又は更なるユーザ入力が必要であるか否かを示してもよい。あるパラメータが有効であることを応答が示している場合には、パラメータに関して更なるアクションが起こされることはない。
【0233】
ソフトウェアアプリケーションによって提供された応答が、パラメータが有効であることを示していない場合には、パラメータの明瞭化が必要であることを応答が示してもよい。例えば、パラメータが不適切(即ち無効)であり、ソフトウェアアプリケーションが、ユーザからの更なる入力を要求してもよい。一例として、「メインストリート1200に青い車を呼んで」というユーザ入力について考えると、ユーザは青い車を要求しているが、(Uber(登録商標)、Lyft(登録商標)などの)乗車予約アプリケーションが、(例えば青い車がサポートされたパラメータではないか、又は青い車が現在手配できないとアプリケーションが判定するなどのように)青い車の選択を許可しなくてもよい。従って、(ユーザが無効な種類の車を指定しているなどのように)パラメータが不適切である場合には、アプリケーションが、(車の種類などの)パラメータの(有効であるなどの)適切な値が提供されることを要求してもよい。例えば図10Aを参照すると、パラメータが不適切であることを示すソフトウェアアプリケーションからの応答に基づいて、ユーザデバイスが、ユーザに有効なパラメータを選択するように促す自然言語クエリ1002を提供してもよい。この例においては、ユーザデバイスが、ユーザに対して有効な種類の車を選択するように依頼する自然言語クエリを提供する。自然言語クエリ1002が、ユーザデバイスのタッチ感知ディスプレイを用いてテキストとしてユーザに提供されてもよく、及び/又は、ユーザデバイスのオーディオ出力コンポーネントを用いて音声としてユーザに提供されてもよい。図示するように、幾つかの例においては、ユーザデバイスが、1つ又はそれ以上の候補パラメータ1004をユーザに選択のために(表示するなどのように)提示してもよい。この例においては、候補パラメータ1004が、「予算」、「黒い車」、「SUV」及び「シェア」を含んでもよい。幾つかの例においては、この方法で提供された候補パラメータが、ソフトウェアアプリケーションによって提供されてもよい。ユーザデバイスが、ユーザデバイスにタッチ入力を提供することによって、及び/又は自然言語ユーザ入力を提供することによって、候補パラメータのうちの1つを選択し、これに応じて、ユーザデバイスが選択された候補パラメータをソフトウェアアプリケーションに提供してもよい。
【0234】
ソフトウェアアプリケーションによって提供された応答が、パラメータが有効であることを示していない場合には、パラメータの曖昧性除去が必要であることを応答が示してもよい。例えば、「トムに電話して」というユーザ入力の場合に、電話を掛けるように構成されたソフトウェアアプリケーションに、トムへの連絡のためのパラメータが提供されてもよい。トムへの連絡のための(電話番号などの)連絡先情報を判定する際に、「トム」という名前に該当する複数の連絡先が存在するとソフトウェアアプリケーションが判定すると、どの「トム」が意図されているのかを示すようにソフトウェアアプリケーションが要求してもよい。
【0235】
ソフトウェアアプリケーションが、ユーザ入力に基づいてパラメータの曖昧性を除去するようにユーザデバイスに要求してもよい。要求の一部として、ソフトウェアアプリケーションが、複数の候補パラメータを含む曖昧性除去リストを応答の中に任意選択的に含める。ソフトウェアアプリケーションがユーザ入力に基づいて曖昧性の除去を要求する場合には、デバイスが、ユーザに候補パラメータを選択するように求める自然言語クエリを提供してもよい。更に、曖昧性除去リストの候補パラメータが、ユーザの選択を可能とするように表示されてもよい。ユーザが、例えば、タッチ入力を提供すること及び/又は自然言語ユーザ入力を提供することによって、複数の候補パラメータのうちの1つを選択してもよく、またユーザデバイスが、選択された候補パラメータをソフトウェアアプリケーションに提供してもよい。
【0236】
ソフトウェアアプリケーションが、ユーザデバイスがユーザ入力なしにパラメータの曖昧性を除去することを要求してもよい。従って、ユーザデバイスが、ユーザデバイス、ソフトウェアアプリケーション及び/又はパラメータのコンテキストに基づいてパラメータの曖昧性を自動的に除去してもよい。例えば、ユーザデバイスが、ユーザが最後に連絡した連絡先「トム」を選択してもよい。
【0237】
幾つかの場合においては、ソフトウェアアプリケーションが、パラメータの解析及び/又は曖昧性除去に必要な情報にアクセスすることが不可能であってもよい。ソフトウェアアプリケーションが、連絡先リストにアクセスすることが不可能であり、従って、ある名前について、複数のエントリだけでなく単一のエントリでさえも存在するのか否かを判定することが不可能であってもよい。この結果、ソフトウェアアプリケーションが解析することのできない任意のパラメータの曖昧性をユーザデバイスが除去することを、ソフトウェアアプリケーションが要求してもよい。加えて又は代わりに、ソフトウェアアプリケーションが曖昧性除去を実行できるように、ユーザデバイスがソフトウェアアプリケーションに候補パラメータを提供することを、ソフトウェアアプリケーションが要求してもよい。上述の例を参照すると、ソフトウェアアプリケーションが「トム」自体の曖昧性を除去できるように、デバイスが「トム」の曖昧性を除去するか、又は全ての「トム」の連絡先のリストを提供することを、ソフトウェアアプリケーションが要求してもよい。
【0238】
タスクを実行することが、パラメータの1つ又はそれ以上の具体的な種類がユーザによって指定されることを必要としてもよい。更に幾つかの例においては、自然言語ユーザ入力が、1つ又は複数の必要なパラメータを省略してもよい。従って、ソフトウェアアプリケーションが、必要なパラメータがある場合に、そのいずれが指定されていないのかを示す1つ又は複数の応答を、任意に提供してもよい。「メインストリート1200に車を呼んで」というユーザ入力について考えると、通常はユーザ入力によって車が要求されるが、ユーザ入力に基づいて特定された乗車予約アプリケーションが、特定の車種を選択することを必要としてもよい。従って、(ユーザが車種を指定していないなどのように)パラメータが欠落している場合には、アプリケーションが、(車種などの)パラメータの認識可能な値が提供されることを要求してもよい。再び図10Aを参照すると、ユーザに有効なパラメータを指定するように促す自然言語クエリ1002をユーザデバイスが提供してもよい。その後、ユーザが、例えば候補パラメータのリストから候補パラメータを選択してもよく、また選択されたパラメータが、上述のようにソフトウェアアプリケーションに提供されてもよい。
【0239】
各パラメータが有効であり、かつ更なる情報が不要であることをソフトウェアアプリケーションが示すと、ブロック830で、ユーザデバイスがソフトウェアアプリケーションに意図を確認してもよい。詳細には、ソフトウェアアプリケーションが意図及び意図と関連付けられたパラメータを与えられれば、意図に対応するタスクを実行可能であるという通知を、ユーザデバイスが要求してもよい。
【0240】
ソフトウェアアプリケーションがタスクを実行可能であることを示す通知をソフトウェアアプリケーションが提供すると、任意選択的に、ユーザデバイスがユーザに意図を確認する。例えば、ユーザデバイスが、「uberX(登録商標)をあなたの場所に呼ぶことができます。申し込みましょうか?」という自然言語クエリを提供してもよい。ユーザが、タッチ入力又は自然言語入力によって意図を確認又は拒否してもよい。幾つかの例においては、ソフトウェアアプリケーションによって提供される通知が、ユーザに提供する情報を含んでもよい。情報が、例えば、ユーザが確認を促された時に、より詳しい決定を行うことを可能にしてもよい。例えば、ユーザデバイスが、「uberX(登録商標)をあなたの場所に9分以内に呼ぶことができます。申し込みましょうか?」という自然言語クエリを提供してもよい。
【0241】
その後、ユーザデバイスが、ソフトウェアアプリケーションに(例えば命令するなど)意図に対応するタスクを実行させる。
【0242】
別の複数の例においては、ソフトウェアアプリケーションがタスクを実行可能であることを示す通知をソフトウェアアプリケーションが提供すると、ユーザデバイスが、ソフトウェアアプリケーションにユーザ確認なしでタスクを実行させる。例えばユーザが、「空港までLyft(登録商標)を呼んで」という自然言語ユーザ入力を提供した場合に、特定されたアプリケーションLyft(登録商標)が、ユーザのために車を予約できることを示すと、ソフトウェアアプリケーションが、タスクをユーザ確認なしで自動的に実行する。幾つかの例においては、あるタスクがユーザ確認なしで実行されるか否かが、ユーザデバイスの種類に基づいている。例えば携帯電話などの第1の種類のデバイスが、1つ又はそれ以上のタスクについてはユーザ確認を必要とし、例えばスマートウォッチなどの第2の種類のデバイスが、1つ又はそれ以上のタスクを、最初にユーザ確認を受信することなく実行してもよい。
【0243】
ブロック835で、ソフトウェアアプリケーションがタスクの実行に成功したか否かを示す結果応答を、ユーザデバイスがソフトウェアアプリケーションから受信する。
【0244】
タスクの実行に失敗したことを示す結果応答が、失敗の1つ又は複数の理由を更に示してもよい。幾つかの例においては、失敗の1つ又は複数の理由を示す、例えば自然言語出力又はテキスト出力などの出力を、ユーザデバイスがユーザに提供してもよい。
【0245】
タスクの実行に成功したことを示す結果応答が、1つ又は複数の応答項目を含んでもよい。各応答項目が、タスクの実行時にソフトウェアアプリケーションによって(例えば受信する、生成するなどのように)判定された結果であってもよい。例えば、乗車予約アプリケーションでの車の予約に対応する応答項目が、車種、ナンバープレート番号、運転者名、現在の車の位置、ピックアップ場所、目的地、推定所要時間、推定費用及び推定経路、(例えばUber pool(登録商標)対uberX(登録商標)などの)サービスの種類などを含んでもよい。別の一例としては、フィットネスアプリケーションのワークアウトセッションを開始することに対応する応答項目が、セッションが開始していること、ワークアウトの持続時間、アクティビティの種類及び1つ又はそれ以上の目標の確認を含んでもよい。
【0246】
幾つかの例においては、複数の応答項目のうちの1つ又はそれ以上がユーザに提供されてもよい。例えば図10Bを参照すると、複数の応答項目のうちの1つ又はそれ以上が、自然言語出力1012として、テキスト入力及び/又はオーディオ出力としてユーザに提供されてもよい。応答項目が視覚的に提供されてもよい。例えば、推定経路の地図1014がユーザに提供されてもよい。応答項目がいかなる所望の方法でユーザに提供されてもよいことが理解されよう。
【0247】
幾つかの例においては、1つ又はそれ以上の応答項目がユーザに提供される方法をソフトウェアアプリケーションが指定してもよい。即ち、どの応答項目がユーザに表示及び/又は発音されるのかをソフトウェアアプリケーションが決定し、これに従って、デジタルアシスタントが各応答項目を提供してもよい。
【0248】
幾つかの例においては、応答項目がデジタルアシスタントのUI拡張部を用いてどのように提供されるのかを、ソフトウェアアプリケーションが指定してもよい。ユーザデバイスが、例えば、ソフトウェアアプリケーションに(ディスプレイ用のビューコントローラに供給可能なフィールドなどの)一組のビューコントローラパラメータを提供し、これに応じて、ソフトウェアアプリケーションが、一組のビューコントローラパラメータ値を提供してもよい。ビューコントローラの様々なフィールド内にどの応答項目を表示するのか、及び/又は応答項目が各フィールド内に表示される方法を、一組のビューコントローラパラメータが示してもよい。このように、応答項目がソフトウェアアプリケーションによって表示される方法を、デジタルアシスタントが(例えば限定するなどのように)制御してもよい。
【0249】
別の複数の例においては、応答項目がどのように提供されるのかをデジタルアシスタントが決定してもよい。更に別の複数の例においては、ユーザがソフトウェアアプリケーションと直接に対話することが可能となるように、ソフトウェアアプリケーションが呼び出される。幾つかの例においては、アプリケーションをこのように呼び出すことが、デジタルアシスタントとのセッションを終了させてもよい。
【0250】
幾つかの例においては、タスクの実行に成功すると、タスクと関連付けられた動作の状態を示す1つ又は複数の通知を、(ユーザデバイスのデジタルアシスタントなどの)ユーザデバイスがユーザに提供してもよい。一例として、車がユーザ入力に応じて予約されると、ユーザデバイスが、予約された車の場所、推定到着時刻及び/又は経路を提供してもよい。通知が、動作に関連してエラーが発生したか否かを更に示してもよい。例えば、予約した車が利用不可能となった場合に、ユーザが通知されてもよい。幾つかの例においては、このように提供される通知が、定期的に及び/又はリアルタイムで提供されてもよい。
【0251】
幾つかの例においては、タスクの実行に成功すると、タスクと関連付けられた動作をユーザデバイスが調整してもよい。タスクと関連付けられた動作の調整が、意図と関連付けられたパラメータを(例えば除去、追加及び/又は変更するなどのように)調整し、意図を調整されたパラメータと共にソフトウェアアプリケーションに提供することを含んでもよい。例えば、ソフトウェアアプリケーションが車を予約し、車の予約に成功したことをユーザに示してもよい。その後、乗車の新たな目的地を指定することによって、車の予約が調整されてもよい。別の複数の例においては、動作を調整することが、ソフトウェアアプリケーションに別の意図を提供することを含む。意図が、例えば異なるドメインの意図であってもよい。
【0252】
幾つかの例においては、デバイスによって表示されるアフォーダンスの選択に応じて、動作が調整される。一例として、あるタスクの実行に成功すると、タスクの実行の成功を知らせるため及び/又はタスクと関連付けられた動作を調整するためのユーザが希望する方法を示すためにユーザが選択可能な1つ又は複数のアフォーダンスを、デバイスが表示してもよい。幾つかの例においては、アフォーダンスがコンテキストに基づいて表示されてもよい。一例として、乗車予約のためのアフォーダンスが、目的地の住所の変更又は乗車予約の取り消しを可能としてもよい(図13A)。別の一例としては、夕食の予約のためのアフォーダンスが、予約時刻又は人数の変更を可能としてもよい。更に別の一例としては、進行案内のためのアフォーダンスが、目的地の住所又は交通手段の変更を可能としてもよい。更に別の一例としては、電子決済のためのアフォーダンスが、決済の取り消し又は決済金額の変更を可能としてもよい。
【0253】
幾つかの場合においては、ソフトウェアアプリケーションがタスクの実行に失敗してもよい。これに応じて、タスクの失敗を知らせるため及び/又はタスクの実行を要求するためにユーザが選択可能な1つ又は複数のアフォーダンスをデバイスが表示してもよい。一例としては、あるアフォーダンスの選択が、以前に失敗した同じタスクをユーザデバイスに実行させてもよい。このことが、同じ意図をソフトウェアアプリケーションに提供することを含んでもよい。意図が、同じ又は異なるパラメータ及び/又はパラメータ値を有してもよい。別の一例としては、あるアフォーダンスの選択が、デバイスに、異なるドメインと関連付けられたタスクなどの異なるタスクを実行させてもよい。
【0254】
一例として、動作中に、ソフトウェアアプリケーションがユーザ要求に応答した決済に失敗してもよい(図13B)。これに応じて、デバイスが第1のアフォーダンスを表示してもよく、また、第1のアフォーダンスの選択に応じて、ユーザデバイスが意図をソフトウェアアプリケーションに提供してもよい。意図が、以前にソフトウェアアプリケーションに提供されたのと同じ意図(即ち決済を行う意図)であってもよい。ユーザデバイスが第2のアフォーダンスを更に表示してもよく、第2のアフォーダンスの選択に応じて、ユーザデバイスが意図を異なるソフトウェアアプリケーションに提供してもよい。ユーザデバイスが、第3のアフォーダンスを更に表示してもよく、第3のアフォーダンスの表示に応じて、ユーザデバイスが別のソフトウェアアプリケーションへのメッセージ送信のために意図を提供してもよい。例えば、ユーザが、決済の失敗を伝えることを希望してもよい。
【0255】
幾つかの例においては、ソフトウェアアプリケーションの許可が、例えば意図及びパラメータがソフトウェアアプリケーションに提供される前に検証される。例えば、ソフトウェアアプリケーションが特定の意図と関連付けられたデータにアクセスする許可を得ているか否かを、ユーザデバイスが判定してもよい。判定が、ユーザデバイス上に構成されている許可に基づいて行われてもよい。「今私がいる場所に黒い車を呼んで」という例においては、「場所」がユーザデバイスの(場所データなどの)コンテキスチュアルな情報を必要とするコンテキスチュアルなパラメータであってもよい。従って、ユーザデバイスの場所を解析して場所をパラメータとしてソフトウェアアプリケーションに提供する前に、ソフトウェアアプリケーションが情報にアクセスすることが許可されているか否かを、ユーザデバイスが最初に判定してもよい。ソフトウェアアプリケーションが情報にアクセスすることが許可されている場合には、動作が上述のように行われる。ソフトウェアアプリケーションが情報にアクセスすることが許可されていない場合には、意図及びパラメータはソフトウェアアプリケーションに提供されず、タスクは実行されない。幾つかの場合においては、ソフトウェアアプリケーションの許可が、複数のデバイス間で行われてもよい。例えば、あるソフトウェアアプリケーションを有する第1のデバイスが、同じソフトウェアアプリケーションを有するユーザの第2のデバイスに許可を与えてもよい。
【0256】
幾つかの例においては、自然言語入力が、複数のタスク要求を含んでもよい。従って、自然言語入力に基づいて、複数の意図及び/又は複数のアプリケーションが特定されてもよい。複数の意図のそれぞれと関連付けられたパラメータも、任意選択的に特定されてもよい。例えば「空港までの車を手配して、私のフライト状態を教えて」という自然言語入力が、車を予約する意図とユーザのフライトの状態を取り出す意図との双方を含んでもよい。幾つかの例においては、これらの意図のそれぞれに対応するタスクが、連続して又は同時に実行されてもよい。
【0257】
幾つかの例においては、自然言語入力が、複数の関連したタスク要求を含んでもよい。例えば、幾つかの例においては、自然言語ユーザ入力の要求されたタスクが、自然言語入力の別の要求されたタスクの完了に依存してもよい。「空港までの案内を私に電子メールで知らせて」という例では、2つのタスクが要求されている:第1のタスクは案内を知らせることであり、第2のタスクは電子メールを送ることである。「私に」というパラメータは、電子メールを送る意図のための特定の連絡先を指定するパラメータであり、「空港」というパラメータは、案内を知らせる意図のための目的地を指定するパラメータである。案内を電子メールで知らせることは、最初に案内を提供することを必要とするので、第2のタスク(電子メールを送ること)は、第1のタスク(案内を提供すること)に依存する。従って、案内を取り出すタスクが最初に実行される。
【0258】
幾つかの例においては、意図がアプリケーション間で提供されてもよい。例えば、あるアプリケーションがあるインテントオブジェクトを別のアプリケーションに提供して、アプリケーションにタスクを実行させてもよい。上述の例では、双方の意図(案内を知らせることと電子メールを送ること)が地図アプリケーションに提供されて、要求された案内を提供してもよい。例えば、第2の意図又は電子メールを送る意図が地図アプリケーションにパラメータとして提供されてもよい。第1の意図又は案内を知らせる意図に従って、地図アプリケーションが要求された案内を提供してもよい。次に、地図アプリケーションが、第2の意図を、例えば案内をパラメータとして含むインテントオブジェクトとして、電子メールアプリケーションに提供してもよい。これに応じて、電子メールアプリケーションが要求された案内を電子メールで知らせてもよい。
【0259】
別の一例としては、ユーザが、(ESPNアプリケーションなどの)スポーツアプリケーションを見ている間に、「シャークスの試合を見に行くための車を手配して」というユーザ入力を提供してもよい。これに応じて、ゲームに関する情報を有するスポーツアプリケーションが、(車を予約するなどの)意図及び(試合の住所などの)パラメータを乗車予約アプリケーションに転送してもよい。幾つかの場合には、意図及びパラメータが、インテントオブジェクトとして提供されてもよい。
【0260】
更に別の一例においては、ユーザが、乗車予約アプリケーションを使用している間に、「私の兄弟に5ドル支払って」というユーザ入力を提供してもよい。これに応じて、乗車予約アプリケーションが、(支払うなどの)意図及びパラメータ(5ドル)を(などの)決済アプリケーション(PayPal,Venmo,オンライン決済サービスなど)に転送してもよい。上述のように、幾つかの例においては、意図及びパラメータがインテントオブジェクトとして提供されてもよい。
【0261】
幾つかの例においては、意図が複数のデバイス間で提供されてもよい。上述のように、種類の異なる複数のデバイスが、それぞれ異なるタスクを実行するように構成されていてもよい。幾つかの場合においては、自然言語ユーザ入力が、自然言語ユーザ入力の意図に対応するタスクを実行するように構成されていない第1のデバイスに提供されてもよい。第1のデバイスが、意図と関連付けられたタスクが実行されるように、意図を第2のデバイスに提供してもよい。一例として、(携帯電話などの)第1のデバイスが車を予約するように構成されており、(スマートウォッチなどの)第2のデバイスが、予約された車の状態を提供するように構成されていてもよい。ユーザが第2のデバイスを使用して(例えば「空港までUber(登録商標)を手配して」などの)車の予約を要求すると、第2のデバイスがユーザ入力から意図を導出して、導出された意図を第2のデバイスが実行できないと判定する。その後、タスクが第1のデバイスによって実行可能となるように、第2のデバイスが導出された意図を第1のデバイスに提供してもよい。
【0262】
上述のように、デバイスが動作中にユーザに自然言語出力を提供してもよい。例えば、自然言語クエリがユーザに提供されて、パラメータの確認を要求してもよい。幾つかの例においては、1つ又はそれ以上のソフトウェアアプリケーションと関連付けられたタスクフローに従って、自然言語出力がユーザに提供されてもよい。タスクフローが、例えば、提供される自然言語出力の方法及び種類を指定してもよい。例えば、ユーザが(「家までのLyft(登録商標)を手配して」などの)自然言語入力を提供してもよい。ソフトウェアアプリケーションが、意図及び任意の特定されたパラメータを受信した後に、意図と関連付けられたタスクを実行するためには1つ又はそれ以上のパラメータの明瞭化が必要であること及び/又は(ユーザの場所、「家」の住所、車種などの)更なるパラメータが必要であることを示してもよい。従って、全ての必要なパラメータがソフトウェアアプリケーションに提供されるように、タスクによって特定される1つ又はそれ以上の自然言語クエリを、デバイスがユーザに提供してもよい。
【0263】
幾つかの例においては、1つ又はそれ以上のタスクフローがデバイス上に記憶されている。従って、デバイスが、タスクフローの個々のクエリを動作中に外部デバイスから取り出すことなく、(自然言語クエリなどの)自然言語出力をユーザに提供してもよい。このような方法でタスクフローを記憶することが、動作の効率性を向上させてもよい。幾つかの例においては、対応するソフトウェアアプリケーションがデバイス上に記憶されている場合には、タスクフローがユーザデバイス上で取り出し及び/又は記憶されてもよい。
【0264】
図9は、幾つかの実施形態に従ってデジタルアシスタントを動作させるためのプロセスのフロー図を図示している。プロセス900が、例えば、図8のブロック815及び/又は820を非限定的に含む図8のプロセス800の少なくとも一部を具現化するために使用されてもよい。プロセス900は、デジタルアシスタントを具現化している(例えばデバイス104、108、200、400又は600などの)1つ又はそれ以上の電子デバイスを用いて実行される。幾つかの例においては、プロセス900が(システム100などの)クライアント-サーバシステムを使用して実行され、プロセス900の複数のブロックが、(DAサーバ106などの)サーバとクライアントデバイスとの間で任意の方法で分割されてもよい。従って、プロセス900の複数の部分が、本明細書中ではクライアント-サーバシステムの特定のデバイスによって実行されるものとして記載されているが、プロセス900がそのように限定されないことが理解されよう。別の複数の例では、プロセス900は(ユーザデバイス104などの)1つのみのクライアントデバイスを使用して実行される。プロセス900においては、幾つかのブロックが任意選択的に組み合わせられ、幾つかのブロックの順序が任意選択的に変更され、幾つかのブロックが任意選択的に省略される。幾つかの例においては、更なる複数のステップが、プロセス900と組み合わせて実行されてもよい。
【0265】
ブロック905で、自然言語ユーザ入力が、図1のユーザデバイス104などのユーザデバイスによって受信される。上述のように、自然言語ユーザ入力が、ユーザデバイス及び/又は別のデバイスに対するタスク実行要求を含んでもよく、また、要求されたタスクの1つ又は複数のパラメータを更に指定してもよい。
【0266】
ブロック910で、意図及び、任意選択的に、意図と関連付けられた1つ又はそれ以上のパラメータが特定される。意図及びパラメータが、自然言語ユーザ入力から導出されてもよい。前述のように、意図がユーザデバイスによって実行されるいかなる種類のタスクに対応してもよく、詳細には、ユーザデバイスの1つ又は複数のアプリケーションによって実行されるタスクに対応してもよい。意図と関連付けられたパラメータが、意図に対応するタスクが実行される方法を指定する自然言語入力の部分を特定してもよい。「空港までの車を手配して」という例においては、意図が車を予約するタスクに対応し、「空港」が目的地を指定するパラメータである。ユーザの意図が車を予約することであるので、ユーザの場所も、(推論されるパラメータなどの)パラメータであってもよい。
【0267】
ブロック915で、意図に対応するタスクが履行可能であるか否かが判定される。幾つかの例においては、判定が、タスクをパラメータに従って実行するように構成されたアプリケーションがユーザデバイスにアクセス可能であるか否かを判定することを含んでもよい。この例では、ユーザデバイスの場所で車を予約するように構成されたアプリケーションにユーザデバイスがアクセス可能であるか否かが判定される。上述のように、アクセス可能なアプリケーションとは、ユーザデバイス上にローカルに記憶されたアプリケーション及び、ユーザデバイスによって遠隔アクセス可能なアプリケーションである。
【0268】
意図に対応するタスクが履行可能であるという判定に従って、ブロック920で意図及びパラメータがソフトウェアアプリケーションに提供される。例えば、ブロック915で、要求されたタスクを任意の特定されたパラメータに従って実行するように構成されたソフトウェアアプリケーションにユーザデバイスがアクセス可能であると判定されると、意図及びパラメータが、タスクを実行するためにアプリケーションに提供される。この例においては、このことが、ユーザの場所で車を予約するように構成されたソフトウェアアプリケーションがユーザデバイスにアクセス可能であると判定することを含む。例えば、乗車予約アプリケーションLyft(登録商標)がユーザデバイス上にインストールされ、本明細書中に記載の例に従って車を予約するために使用されてもよい。
【0269】
意図に対応するタスクが履行不可能であるという判定に従って、ブロック925で、1つ又はそれ以上のソフトウェアアプリケーションのリストが提供される。1つ又はそれ以上のソフトウェアアプリケーションのリストが、例えば、意図と関連付けられたタスクを任意の特定されたパラメータに従って実行するように構成された1つ又はそれ以上のソフトウェアアプリケーションを含んでもよい。幾つかの例においては、リストの1つ又はそれ以上のソフトウェアアプリケーションが、意図と関連付けられた1つ又はそれ以上のドメインに基づいて特定されてもよい(前述のように、アプリケーションは1つ又は複数のドメインに登録されていてもよい)。図10Cを参照すると、(乗車予約アプリケーションなどの)ソフトウェアアプリケーションのリストが決定されると、ユーザデバイスがリストをユーザに提供してもよい。図示するように、リストを提供することが、1つ又はそれ以上のアプリケーションソフトウェアのリストからアプリケーションを選択するようにユーザに要求する自然言語入力1022を提供することを含んでもよい。幾つかの例においては、リストがユーザデバイスによって生成される。別の複数の例においては、ソフトウェアアプリケーションのリストがサーバによって生成されてユーザデバイスに提供され、次にユーザデバイスが、リストを前述のようにユーザに提供してもよい。
【0270】
ブロック930で、1つ又はそれ以上のソフトウェアアプリケーションのリストからの1つ又はそれ以上のソフトウェアアプリケーションの選択を示すユーザ入力を、ユーザデバイスが受信する。ユーザ入力が、ユーザデバイスのタッチ感知ディスプレイ上のタッチ入力であってもよく、及び/又は自然言語ユーザ入力であってもよい。
【0271】
ブロック935で、意図及びパラメータが、ユーザによって選択されたソフトウェアアプリケーションに提供される。幾つかの例においては、意図及びパラメータを提供することが、ユーザデバイスがソフトウェアアプリケーションにローカルにアクセス可能となるように、ソフトウェアアプリケーションをダウンロード及び/又はインストールすることを含む。別の複数の例においては、このことが、選択されたアプリケーションに遠隔アクセスすることを含む。
【0272】
上述のように、意図及びパラメータに応じて、ソフトウェアアプリケーションが1つ又はそれ以上の応答を提供してもよい。パラメータが検証された後に、ユーザデバイスが意図をソフトウェアアプリケーションに確認し、ソフトウェアアプリケーションにタスクを実行させてもよい。その後、ユーザデバイスが結果応答を受信し、任意選択的に、結果応答の1つ又はそれ以上の応答項目をユーザに提供してもよい。
【0273】
ユーザデバイスのユーザに自然言語出力及び/又は自然言語クエリを提供することについて、ここで説明する。幾つかの例においては、自然言語出力及びクエリがユーザに提供される方法が、ユーザデバイスの種類又は状態に依存する。例えば、ユーザデバイスが携帯電話である場合には、ユーザデバイスがテキスト及びオーディオの双方を用いてクエリを提供してもよい。一方、ユーザデバイスがスピーカである場合には、ユーザデバイスがオーディオのみを用いてクエリを提供してもよい。別の一例として、ユーザデバイスが、ヘッドホンがペアリングされていない携帯電話である場合には、ユーザデバイスが、テキスト及び/又は比較的短い自然言語クエリを用いてクエリを提供してもよい。ユーザデバイスにヘッドホンがペアリングされている場合には、ユーザデバイスが、比較的長い自然言語クエリのみを用いてクエリを提供してもよい。
【0274】
図10D-Fは、幾つかの実施形態に基づくデジタルアシスタントの複数の例示的なデータフローを図示したものである。幾つかの例においては、図10D-Fのデータフローが、プロセス800、900のうちの1つ又はそれ以上を用いて具現化されてもよい。図10Dは、幾つかの実施形態に基づくデジタルアシスタントシステム1030の例示的な一データフローを図示している。詳細には、図10Dは、アプリケーション登録プロセスのデータフロー及び、タスクの遂行のためのデータフローを図示している。データフロー1031-1041が、(図10Dに破線として図示されている)アプリケーション登録プロセスと関連付けられていてもよく、またデータフロー1043-1051が、(図10Dに実線として図示されている)タスクの遂行と関連付けられていてもよい。
【0275】
一般に、アプリケーション登録プロセスと関連付けられたデータフローは、アプリケーション及びこれに対応するカスタム語彙が、タスクを実行するためにデジタルアシスタントによってアクセス及び/又は使用されることを可能にする(検証サービスなどの)アプリケーション登録サービスへのアプリケーションの登録に関する。
【0276】
動作の際には、データフロー1031で、アプリケーションがアプリケーションレビューモジュール1032に提出される。アプリケーションに対応する言語モデル及びアプリケーションの意図も、同様に提出されてもよい。言語モデルが、アプリケーション用のカスタム語彙を含んでもよい。次に、データフロー1033で、アプリケーションレビューモジュール1032が、アプリケーション、カスタム語彙及び/又はアプリケーションの意図を検証サービス1034に提供してもよい。検証サービス1034が、アプリケーションを有効とするか否かを、例えばアプリケーションがデジタルアシスタントで操作可能であるか否かに基づいて判定してもよい。このことが、例えば、アプリケーションの任意の意図がアプリケーションの1つ又はそれ以上のドメインと対応することを確認することを含んでもよい。例えば、検証サービスが、車を予約する意図と関連付けられたメッセージングアプリケーションを、ドメインと意図との組合せが不適当であるという理由で拒絶してもよい。検証サービス1034が、データフロー1035で、アプリケーションが有効であるか否かを示す検証応答を提供してもよい。
【0277】
アプリケーションが有効であることを検証サービス1034が示した場合には、アプリケーションレビューモジュール1032が、(検証された)アプリケーションを、アプリケーションストア1036に提供する。一般には、アプリケーションは、データフロー1039によって示されるように、アプリケーションストア1036で、ユーザデバイス1040により、DAサーバ1038を介してダウンロード及び/又はアクセスされてもよい。幾つかの例においては、ユーザデバイス1040が図1のユーザデバイス104であってもよく、DAサーバ1038が図1のDAサーバ106であってもよい。この結果、例えば、ユーザデバイス1040の(info.plistなどの)アプリケーションリストが更新され、及び/又はDAサーバ1038と同期されてもよい。データフロー1041で、検証サービスが、上述のように自然言語入力の構文解析を支援するために、アプリケーションの(ランタイム語彙などの)カスタム語彙をDAサーバ1038に提供してもよい。
【0278】
一般には、タスクの遂行と関連付けられたデータフローは、意図及び任意選択的に1つ又はそれ以上のパラメータを、意図に対応するタスクの実行のためにアプリケーションに提供することに関する。
【0279】
動作の際には、データフロー1043で、ユーザデバイス1040が自然言語入力をDAサーバ1038に提供してもよい。幾つかの例においては、自然言語入力が、ユーザデバイス1040のデジタルアシスタント1042によって提供されてもよい。自然言語入力に基づき、自然言語入力で要求された1つ又はそれ以上のタスク及び意図と関連付けられた1つ又はそれ以上のパラメータを、DAサーバ1038が特定してもよい。加えて、DAサーバ1038が、タスクを実行するためのアプリケーションを意図によって特定してもよい。幾つかの例においては、特定されたアプリケーション1044の名称(又はその他の形の識別名)が、意図のパラメータであってもよい。その後、データフロー1045で、DAサーバ1038が意図、パラメータ及び特定されたアプリケーション1044の識別情報を(ユーザデバイス1040のデジタルアシスタント1042などの)ユーザデバイス1040に提供する。幾つかの例においては、意図及びパラメータが、インテントオブジェクトとしてユーザデバイス1040に提供されてもよい。
【0280】
これに応じて、特定されたパラメータと関連付けられた情報へのアクセスを特定されたアプリケーション1044が許可されているか否かを、デジタルアシスタントが判定する。例えば、パラメータがユーザデバイス1040の場所である場合には、アプリケーション1044が場所データへのアクセスを許可されているか否かを、デジタルアシスタントがデータ許可部1046に対して問い合わせる。
【0281】
パラメータのそれぞれについてのデータへのアクセスをアプリケーションが許可されている場合には、(ユーザデバイスのデジタルアシスタント1042などの)ユーザデバイスが、意図をアプリケーションに提供する。図示するように、アプリケーションがユーザデバイス1040上に存在していてもよい。別の複数の例においては、アプリケーションが1つ又はそれ以上の他の複数のデバイス上に存在し、意図が1つ又はそれ以上のネットワークを介してアプリケーションに送信されてもよい。上述のように、その後、1つ又はそれ以上のパラメータが欠落している、不適切である、及び/又は不明瞭である場合には、アプリケーション1044が、ユーザデバイス1040のユーザからの入力を要求してもよい。幾つかの例においては、ユーザ入力を求めるクエリが、DAサーバ1038によって生成された自然言語クエリとして提供されてもよい。従って、データフロー1051で、ユーザデバイス1040が、1つ又はそれ以上の自然言語クエリを要求し、その後受信してもよい。全てのパラメータが解析された後に、アプリケーション1044が意図と対応付けられたタスクを実行し、タスクの実行に成功したか否かを示す結果応答を提供してもよい。
【0282】
図10Dの1つ又はそれ以上のデータフローが、例えば、デジタルアシスタントを具現化している(デバイス104、108、200、400又は600などの)1つ又は複数の電子デバイスを用いて具現化されてもよい。詳細には、DAサーバ1038とユーザデバイス1040のデジタルアシスタント1042との間で提供されるデータフローが、クライアント-サーバアーキテクチャに依存するものとして図示されている。別の複数の例においては、DAサーバ1038がユーザデバイス1040上のプロセス及び/又はサービスとして具現化されていてもよい。従って、幾つかの例においては、DAサーバ1038とデジタルアシスタント1042との間で交換されるデータフローが、ユーザデバイス1040上のみで交換されてもよい。
【0283】
図10Eは、幾つかの実施形態に基づくデジタルアシスタントシステム1060の例示的なデータフローを図示したものである。詳細には、図10Eはアプリケーションの登録プロセスの例示的なデータフローを図示しており、図10Dに示すアプリケーション登録プロセスを具現化するために用いられてもよい。更に、図10Eの幾つかの要素が、図10Dの複数の要素にそれぞれ対応し、同じ参照番号を付与されている。簡潔化のために、これらの機能及び動作は改めて説明しない。
【0284】
データフロー1065で、検証された語彙が検証サービス1034からグローバルアプリケーション語彙ストア1060に提供される。一般には、グローバルアプリケーション語彙ストアは、いかなる数及び/又はバージョンのソフトウェアアプリケーションのための言語モデル及び/又は語彙を記憶してもよい。データフロー1061及び1063において、音声トレーニングモジュール1062及び自然言語トレーニングモジュール1064が、検証されたアプリケーションと共に供給されたアプリケーション固有の語彙を認識し、自然言語処理するように訓練される。データに基づき、アプリケーション固有の語彙を含む発言をデジタルアシスタントが認識及び処理することを可能にする1つ又はそれ以上の言語モデルを、グローバルアプリケーション語彙ストアが生成及び/又は訓練してもよい。
【0285】
図10Dのユーザデバイスユーザデバイス1040などのユーザデバイスの動作中に、ランタイム固有のグローバルアプリケーション語彙ストアが、グローバルアプリケーション語彙ストア1060からユーザデバイスの1つ又はそれ以上のアプリケーションのための語彙及び/又は言語モデルを受信してもよい。語彙が、ユーザデバイスのユーザのユーザIDに固有のものであってもよく、及び/又はユーザデバイスのアプリケーション及び/又はオペレーティングシステムのバージョンに固有のものであってもよい。語彙に基づき、自然言語入力の1つ又はそれ以上の用語が、例えばパラメータとして特定されてもよい。
【0286】
図11は、幾つかの実施形態に従ってデジタルアシスタントを動作させるためのプロセス1100のフロー図である。プロセス1100は、例えば、デジタルアシスタントを具現化している(デバイス104、108、200、400又は600などの)1つ又はそれ以上の電子デバイスを用いて実行される。幾つかの例においては、プロセス1100は(システム100などの)クライアント-サーバシステムを使用して実行され、(DAサーバ106などの)サーバとクライアントサービスとの間に任意の方法で分散されてもよい。別の複数の方法においては、プロセス1100が、サーバと(携帯電話及びスマートウォッチなどの)複数のクライアントデバイスとの間に分散されてもよい。従って、本願中では、プロセス1100の複数の部分がクライアント-サーバシステムの特定のデバイスによって実行されるものとして記載されているが、プロセス1100がそのように限定されないことが理解されよう。別の複数の例においては、プロセス1100は(ユーザデバイス104などの)1つのみのクライアントデバイス又は複数のクライアントデバイスを使用して実行される。プロセス1100において、幾つかのブロックが任意選択的に組み合わせられ、幾つかのブロックの順序が任意選択的に変更され、幾つかのブロックが任意選択的に省略される。幾つかの例においては、更なる複数のステップがプロセス1100と組み合わせて実行されてもよい。
【0287】
ブロック1105で、電子デバイスが自然言語ユーザ入力を含むオーディオ入力を受信する。
【0288】
ブロック1110で、電子デバイスが、一組のインテントオブジェクトのうちの一インテントオブジェクトを特定する。インテントオブジェクトは、自然言語ユーザ入力から導出される。幾つかの例においては、一組のインテントオブジェクトのうちの一オブジェクトを特定することが、一組のインテントオブジェクトのうちのオブジェクトを、電子デバイスの種類に基づいて特定することを含む。
【0289】
ブロック1115で、電子デバイスが、一組のインテントオブジェクトのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定する。幾つかの例においては、一組のインテントオブジェクトのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することが、インテントオブジェクトと関連付けられた第1のパラメータを特定することを含む。
【0290】
幾つかの例において、電子デバイスが、複数の用語を別の電子デバイスから受信し、自然言語ユーザ入力を受信することが、複数の用語のうちの一用語を含む自然言語ユーザ入力を受信することを含み、一組のインテントオブジェクトのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することが、ソフトウェアアプリケーションを複数の用語のうちの用語に基づいて特定することを含む。
【0291】
ブロック1120で、電子デバイスがインテントオブジェクトをソフトウェアアプリケーションに提供する。インテントオブジェクトを提供することが、ソフトウェアアプリケーションに、インテントオブジェクトと関連付けられたタスクを実行させる。幾つかの例においては、インテントオブジェクトをソフトウェアアプリケーションに提供して、ソフトウェアアプリケーションに、インテントオブジェクトと関連付けられたタスクを実行させることが、第1のパラメータをソフトウェアアプリケーションに提供することを含む。幾つかの例においては、インテントオブジェクトをソフトウェアアプリケーションに提供することが、ソフトウェアアプリケーションを特定した後に、タスクの取り消し又は変更を求めるユーザ入力がある時間の間に受信されたか否かを判定することを含み、タスクの取り消し又は変更を求めるユーザ入力が時間の間に受信されていないという判定に従って、インテントオブジェクトをソフトウェアアプリケーションに提供することを含む。幾つかの例においては、インテントオブジェクトをソフトウェアアプリケーションに提供することが、インテントオブジェクトのユーザ確認なしにインテントオブジェクトをソフトウェアアプリケーションに提供することを含む。
【0292】
幾つかの例においては、電子デバイスが、意図と関連付けられた複数の候補パラメータを特定し、複数の候補パラメータをソフトウェアアプリケーションに提供する。
【0293】
幾つかの例においては、電子デバイスが、あるパラメータに対応する曖昧性除去要求をソフトウェアアプリケーションから受信し、パラメータと関連付けられた一組の候補パラメータから一候補パラメータを特定し、選択された候補パラメータをソフトウェアアプリケーションに提供する。
【0294】
幾つかの例においては、自然言語ユーザ入力が第1の自然言語ユーザ入力である。電子デバイスが、ソフトウェアアプリケーションから、インテントオブジェクトと関連付けられた第2のパラメータを求める要求を受信し、要求に基づいて自然言語クエリを提供し、第2の自然言語ユーザ入力を受信し、第2の自然言語ユーザ入力から導出された第2のパラメータを特定し、第2のパラメータをソフトウェアアプリケーションに提供する。
【0295】
幾つかの例においては、電子デバイスが、ソフトウェアアプリケーションから、インテントオブジェクトと関連付けられたパラメータを求める要求を受信し、電子デバイスを用いて、要求に基づき、ソフトウェアアプリケーション及びパラメータと関連付けられた自然言語クエリを特定し、自然言語クエリを提供し、第4のユーザ入力を受信し、第4のユーザ入力に基づいてパラメータを特定し、パラメータをソフトウェアアプリケーションに提供する。
【0296】
ブロック1125で、タスクの実行に成功したか否かを示す結果応答を電子デバイスが受信する。結果応答がソフトウェアアプリケーションから受信されてもよい。
【0297】
ブロック1130で、タスクが実行されたか否かを示す出力を電子デバイスが提供する。幾つかの例においては、ソフトウェアアプリケーションがタスクの実行に成功したことを出力が示す。幾つかの例においては、ソフトウェアアプリケーションがタスクの実行に失敗したことを出力が示す。幾つかの例においては、タスクが実行されたか否かを示す出力を提供することが、一組のビューコントローラパラメータ値をソフトウェアアプリケーションから受信し、ビューコントローラパラメータ値の組に従って出力を提供することを含む。
【0298】
幾つかの例においては、出力を提供した後に、電子デバイスが第2の入力を受信し、第2の入力に応じて、タスクと関連付けられた動作を調整する。幾つかの例においては、タスクと関連付けられた動作を調整することが、インテントオブジェクトを調整すること及び、調整されたインテントオブジェクトをソフトウェアアプリケーションに提供することを含む。幾つかの例においては、インテントオブジェクトを調整することが、インテントオブジェクトのパラメータを調整することを含む。幾つかの例においては、第2の入力を受信することが、アフォーダンスの選択を検出することを含み、タスクと関連付けられた動作を調整することが、アフォーダンスの選択に応じて、タスクと関連付けられた動作を調整することを含む。
【0299】
幾つかの例においては、出力を提供した後に、電子デバイスが第3の入力を受信し、第3の入力に応じて、別のインテントオブジェクトをソフトウェアアプリケーションに提供して、別のインテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させる。幾つかの例においては、第3の入力を受信することが、アフォーダンスの選択を検出することを含み、別のインテントオブジェクトをソフトウェアアプリケーションに提供して、別のインテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させることが、アフォーダンスの選択に応じて別のインテントオブジェクトをソフトウェアアプリケーションに提供することを含む。幾つかの例においては、インテントオブジェクトと別のインテントオブジェクトとが同じ種類のインテントオブジェクトであり、インテントオブジェクトと関連付けられたパラメータと別のインテントオブジェクトと関連付けられたパラメータとが同じ値を有する。幾つかの例においては、インテントオブジェクトと別のインテントオブジェクトとが同じインテントオブジェクトである。
【0300】
図12は、幾つかの実施形態に従ってデジタルアシスタントを動作させるためのプロセス1200のフロー図である。プロセス1200は、例えば、デジタルアシスタントを実装している1つ又はそれ以上の(デバイス104、108、200、400又は600などの)電子デバイスを使用して実行される。幾つかの例においては、プロセス1200が(システム100などの)クライアント-サーバシステムを使用して実行され、プロセス1200の複数のブロックが、(DAサーバ106などの)サーバとクライアントデバイスとの間に任意の方法で分散されていてもよい。別の複数の例においては、プロセス1200が、サーバと(携帯電話及びスマートウォッチなどの)複数のクライアントデバイスとの間に分散されている。従って、プロセス1200の複数の部分が、本明細書中ではクライアント-サーバシステムの特定のデバイスによって実行されるものとして記載されているが、プロセス1200がそのように限定されないことが理解されよう。別の複数の例では、プロセス1200が、(ユーザデバイス104などの)1つのみのクライアントデバイス又は複数のクライアントデバイスを用いて実行される。プロセス1200において、幾つかのブロックが任意選択的に組み合わせられ、幾つかのブロックの順序が任意選択的に変更され、幾つかのブロックが任意選択的に省略される。幾つかの例においては、更なる複数のステップがプロセス1200と組み合わせて実行されてもよい。
【0301】
ブロック1205で、一組のインテントオブジェクトのうちの一インテントオブジェクトであって、自然言語ユーザ入力から導出されたインテントオブジェクトを電子デバイスが特定する。
【0302】
ブロック1210で、一組のインテントオブジェクトのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを、電子デバイスが特定する。
【0303】
ブロック1215で、電子デバイスが、第2の電子デバイスから、ソフトウェアアプリケーションと関連付けられたタスクフローを受信する。幾つかの例においては、ソフトウェアアプリケーションと関連付けられたタスクフローを受信することが、タスクフローを別の電子デバイスから受信し、タスクフローを電子デバイス上に記憶することを含む。
【0304】
ブロック1220で、電子デバイスが、インテントオブジェクトをソフトウェアアプリケーションに提供し、インテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させる。
【0305】
ブロック1225で、電子デバイスがソフトウェアアプリケーションから要求を受信する。
【0306】
ブロック1230で、電子デバイスが要求に基づくクエリを決定する。クエリは、タスクフローに基づいて決定される。幾つかの例においては、要求に基づくクエリを決定することが、電子デバイス上に記憶されたタスクフローからクエリを取り出すことを含む。
【0307】
ブロック1235で、電子デバイスがクエリをタッチ感知ディスプレイを使用して提供する。
【0308】
ブロック1240で、電子デバイスが、クエリ応答を示す第2のユーザ入力を受信する。幾つかの例においては、第2のユーザ入力が、クエリを提供した後に受信される。幾つかの例においては、クエリ応答が、インテントオブジェクトと関連付けられたパラメータを示す。
【0309】
ブロック1245で、電子デバイスがクエリ応答をソフトウェアアプリケーションに提供する。幾つかの例においては、クエリ応答をソフトウェアアプリケーションに提供することが、インテントオブジェクトを調整して、調整されたインテントオブジェクトをソフトウェアアプリケーションに提供することを含む。
【0310】
幾つかの例においては、電子デバイスが、ソフトウェアアプリケーションから、タスクの実行に成功したか否かを示す結果応答を受信し、タスクが実行されたか否かを示す出力を提供する。
【0311】
幾つかの実施形態に従って、図11を参照して説明したものを含む種々の記載された実施形態の原理に従って構成された電子デバイス1400の機能ブロック図を、図14に示す。デバイスの機能ブロック図は、任意選択的に、ハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組合せによって、種々の記載された実施形態の原理を実行するように具現化されている。図14に記載された複数の機能ブロックが、種々の記載された実施形態の原理を具現化するために、任意選択的に組み合わせられるか又は複数のサブブロックへと分割されることが、当業者に理解されよう。従って、本明細書中の記載は、本明細書中に記載されている複数の機能ブロックの任意の予想される組合せ又は分割又は更なる定義を、任意選択的に裏付ける。
【0312】
図14に示すように、電子デバイス1400は、タッチ感知ディスプレイユニット1402及び、タッチ感知ディスプレイユニット1402に任意選択的に結合された処理ユニット1408を含む。幾つかの実施形態においては、処理ユニット1108が、受信ユニット1410、特定ユニット1412、提供ユニット1414及び、任意選択的に、調整ユニット1416、検出ユニット1418及び判定ユニット1420を有する。
【0313】
幾つかの例においては、処理ユニット1408が、(例えば受信ユニット1410を用いて)自然言語ユーザ入力を含むオーディオ入力を受信し;(例えば特定ユニット1412を用いて)一組のインテントオブジェクトのうちの、自然言語ユーザ入力から導出された一インテントオブジェクトを特定し;(例えば特定ユニット1412を用いて)一組のインテントオブジェクトのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定し;(例えば提供ユニット1414を用いて)インテントオブジェクトとソフトウェアアプリケーションに提供して、インテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させ;(例えば受信ユニット1410を用いて)タスクの実行に成功したか否かを示す結果応答をソフトウェアアプリケーションから受信し;(例えば提供ユニット1414を用いて)タスクが実行されたか否かを示す出力を提供するように構成されている。
【0314】
幾つかの例においては、一組のインテントオブジェクトのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することが、(例えば特定ユニット1412を用いて)インテントオブジェクトと関連付けられた第1のパラメータを特定し、インテントオブジェクトをソフトウェアアプリケーションに提供して、インテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させることが、(例えば提供ユニット1414を用いて)第1のパラメータをソフトウェアアプリケーションに提供することを含む。
【0315】
幾つかの例においては、自然言語ユーザ入力が第1の自然言語入力であり、処理ユニット1408が、(例えば受信ユニット1410を用いて)インテントオブジェクトと関連付けられた第2のパラメータを求める要求をソフトウェアアプリケーションから受信し;(例えば提供ユニット1414を用いて)要求に基づく自然言語クエリを提供し;(例えば受信ユニット1410を用いて)第2の自然言語ユーザ入力を受信し;(例えば特定ユニット1412を用いて)第2のパラメータを特定し、第2のパラメータが第2の自然言語ユーザ入力から導出され;第2のパラメータをソフトウェアアプリケーションに提供するように更に構成されている。
【0316】
幾つかの例においては、ソフトウェアアプリケーションがタスクの実行に成功したことを出力が示す。
【0317】
幾つかの例においては、処理ユニット1408が、出力の提供後に、(例えば受信ユニット1410を用いて)第2の入力を受信し;第2の入力に応じて、(例えば調整ユニット1416を用いて)タスクと関連付けられた動作を調整するように更に構成されている。
【0318】
幾つかの例においては、タスクと関連付けられた動作を調整することが、(例えば調整ユニット1416を用いて)インテントオブジェクトを調整すること及び、(例えば提供ユニット1414を用いて)調整されたインテントオブジェクトをソフトウェアアプリケーションに提供することを含む。
【0319】
幾つかの例においては、インテントオブジェクトを調整することが、(例えば調整ユニット1416を用いて)インテントオブジェクトのパラメータを調整することを含む。
【0320】
幾つかの例においては、第2の入力を受信することが、(例えば検出ユニット1418を用いて)アフォーダンスの選択を検出することを含み、タスクと関連付けられた動作を調整することが、アフォーダンスの選択に応じて、タスクと関連付けられた動作を、(例えば調整ユニット1416を用いて)調整することを含む。
【0321】
幾つかの例においては、ソフトウェアアプリケーションがタスクの実行に失敗したことを出力が示す。
【0322】
幾つかの例においては、処理ユニット1408が、出力の提供後に、(例えば受信ユニット1410を用いて)第3の入力を受信し;第3の入力に応じて、(例えば提供ユニット1414を用いて)別のインテントオブジェクトをソフトウェアアプリケーションに提供して、別のインテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させるように更に構成されている。
【0323】
幾つかの例においては、第3の入力を受信することが、(例えば検出ユニット1418を用いて)アフォーダンスの選択を検出することを含み、ソフトウェアアプリケーションに別のインテントオブジェクトを提供して、別のインテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させることが、アフォーダンスの選択に応じて、別のインテントオブジェクトを(例えば提供ユニット1414を用いて)ソフトウェアアプリケーションに提供することを含む。
【0324】
幾つかの例においては、インテントオブジェクトと別のインテントオブジェクトとが、同じ種類のインテントオブジェクトであり、インテントオブジェクトと関連付けられたパラメータと別のインテントオブジェクトと関連付けられたパラメータとが同じ値を有する。
【0325】
幾つかの例においては、インテントオブジェクトと別のインテントオブジェクトとが同じインテントオブジェクトである。
【0326】
幾つかの例においては、タスクが実行されたか否かを示す出力を提供することが、(例えば受信ユニット1410を用いて)一組のビューコントローラパラメータ値をソフトウェアアプリケーションから受信すること及び;出力を、(例えば提供ユニット1414を用いて)ビューコントローラパラメータ値の組に従って提供することを含む。
【0327】
幾つかの例においては、処理ユニット1408が、(例えば受信ユニット1410を用いて)複数の用語を別の電子デバイスから受信するように更に構成されており、自然言語ユーザ入力を受信することが、(例えば受信ユニット1410を用いて)複数の用語のうちの一用語を含む自然言語ユーザ入力を受信することを含み、一組のインテントオブジェクトのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを特定することが、ソフトウェアアプリケーションを、一組のインテントオブジェクトのうちの用語に基づき、(例えば特定ユニット1412を用いて)特定することを含む。
【0328】
幾つかの例においては、一組のインテントオブジェクトのうちの一インテントオブジェクトを特定することが、一組のインテントオブジェクトのうちのインテントオブジェクトを、電子デバイスの種類に基づき、(例えば特定ユニット1412を用いて)特定することを含む。
【0329】
幾つかの例においては、処理ユニット1408が、(例えば特定ユニット1412を用いて)意図と関連付けられた複数の候補パラメータを特定し;複数の候補パラメータを(例えば提供ユニット1414を用いて)ソフトウェアアプリケーションに提供するように更に構成されている。
【0330】
幾つかの例においては、処理ユニット1408が、(例えば受信ユニット1410を用いて)あるパラメータに対応する曖昧性除去要求をソフトウェアアプリケーションから受信し、(例えば特定ユニット1412を用いて)パラメータと関連付けられた一組の候補パラメータから候補パラメータを特定し、(例えば提供ユニット1414を用いて)選択された候補パラメータをソフトウェアアプリケーションに提供するように更に構成されている。
【0331】
幾つかの例においては、インテントオブジェクトをソフトウェアアプリケーションに提供して、インテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させることが、ソフトウェアアプリケーションの特定後に、タスクの取り消し又は変更を求めるユーザ入力がある時間以内に受信されたか否かを(例えば判定ユニット1420を用いて)判定し;タスクの取り消し又は変更を求めるユーザ入力が時間以内に受信されたという判定に従って、(例えば提供ユニット1414を用いて)インテントオブジェクトをソフトウェアアプリケーションに提供することを含む。
【0332】
幾つかの例においては、タスクの取り消し又は変更を求めるユーザ入力が時間以内に受信されなかったという判定に従って、インテントオブジェクトをソフトウェアアプリケーションに提供することが、インテントオブジェクトのユーザ確認なしに、(例えば提供ユニット1414を用いて)インテントオブジェクトをソフトウェアアプリケーションに提供することを含む。
【0333】
幾つかの例においては、処理ユニット1408が、(例えば受信ユニット1410を用いて)インテントオブジェクトと関連付けられたパラメータを求める要求をソフトウェアアプリケーションから受信し;電子デバイスを使用して、要求に基づく自然言語クエリを(例えば特定ユニット1412を用いて)特定し、自然言語クエリがソフトウェアアプリケーション及びパラメータと関連付けられており;(例えば提供ユニット1414を用いて)自然言語クエリを提供し;(例えば受信ユニット1410を用いて)第4のユーザ入力を受信し;(例えば特定ユニット1412を用いて)パラメータを第4のユーザ入力に基づいて特定し;(例えば提供ユニット1414を用いて)パラメータをソフトウェアアプリケーションに提供するように更に構成されている。
【0334】
図11に関して上述した動作は、任意選択的に、図1、2A、4、6A-B、7A及び14に図示された構成要素によって具現化される。例えば、受信動作1105及び1125、特定動作1110及び1115並びに提供動作1120及び1130が、任意選択的にプロセッサ120によって具現化される。
【0335】
図14に記載された複数の機能ブロックが、種々の記載された実施形態の原理を具現化するために、任意選択的に組み合わせられるか又は複数のサブブロックに分割されることが、当業者に理解されよう。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの任意の予想される組合せ又は分割又は更なる定義を任意選択的に裏付ける。例えば、処理ユニット1408が、処理ユニット1408に作動的に連結されて動作を可能とする付属の「コントローラ」ユニットを有してもよい。このコントローラユニットは、図14には別個に図示されていないが、デバイス1400などの処理ユニット1408を有するデバイスを設計している当業者によって理解可能であることが理解されよう。別の一例として、受信ユニット1410などの1つ又はそれ以上のユニットが、幾つかの実施態様では処理ユニット1408の外部のハードウェアユニットであってもよい。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの組合せ、分割及び/又は更なる定義を任意選択的に裏付ける。
【0336】
幾つかの実施形態に基づき、図15は、図11を参照して記載されたものを含む種々の記載された実施形態の原理に従って構成された電子デバイス1500の機能ブロック図を図示している。デバイスの複数の機能ブロックは、種々の記載された実施形態の原理を実現するために、任意選択的に、ハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組合せによって具現化される。図15に記載されている複数の機能ブロックが、種々の記載された実施形態の原理を具現化するために、任意選択的に組み合わせられるか又は複数のサブブロックに分割されることが、当業者に理解されよう。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの任意の予想される組合せ又は分割又は更なる定義を任意選択的に裏付ける。
【0337】
図15に示すように、1つ又はそれ以上のデバイス1500が、1つ又はそれ以上の処理ユニット1508及び1つ又はそれ以上のタッチ感知ディスプレイ1502を含む。幾つかの実施形態においては、1つ又はそれ以上の処理ユニット1508が、受信ユニット1510、取得ユニット1512、判定ユニット1514、提供ユニット1516及び、任意選択的に、実行ユニット1518を含む。
【0338】
幾つかの例においては、1つ又はそれ以上の処理ユニット1508が、(例えば受信ユニット1510を用いて)自然言語ユーザ入力を含むオーディオ入力を受信し;(例えば取得ユニット1512を用いて)テキスト列を自然言語ユーザ入力から取得し;(例えば判定ユニット1514を用いて)一組のインテントオブジェクトのうちの一インテントオブジェクトを、テキスト列に基づいて判定し;(例えば判定ユニット1514を用いて)一組のインテントオブジェクトのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを決定し;(例えば提供ユニット1516を用いて)インテントオブジェクトをソフトウェアアプリケーションに提供して、インテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させ;(例えば受信ユニット1510を用いて)タスクの実行に成功したか否かを示す結果応答をソフトウェアアプリケーションから受信し;(提供ユニット1516を用いて)タスクが実行されたか否かを示す出力を提供するように構成されている。
【0339】
幾つかの例においては、テキスト列に基づいて一組のインテントオブジェクトのうちの一インテントオブジェクトを判定することが、(例えば実行ユニット1518を用いて)テキスト列に対して自然言語処理を行って、自然言語ユーザ入力の意図を判定すること及び、(例えば特定ユニット1520を用いて)意図と関連付けられたインテントオブジェクトを特定することを含む。
【0340】
幾つかの例においては、タスクが実行されたか否かを示す出力を提供することが、(例えば提供ユニット1516を用いて)自然言語出力を提供することを含む。
【0341】
幾つかの例においては、一組のインテントオブジェクトのうちのインテントオブジェクトと関連付けられたソフトウェアアプリケーションを決定することが、(例えば判定ユニット1514を用いて)インテントオブジェクトと関連付けられたパラメータを決定することを含み、インテントオブジェクトをソフトウェアアプリケーションに提供して、インテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させることが、(例えば提供ユニット1516を用いて)パラメータをソフトウェアアプリケーションに提供することを含む。
【0342】
幾つかの例においては、一組のインテントオブジェクトのうちの一インテントオブジェクトを判定することが、一組のインテントオブジェクトのうちのインテントオブジェクトを、電子デバイスの種類に基づいて、(例えば判定ユニット1514を用いて)判定することを含む。
【0343】
図11に関する上述の記載が、任意選択的に、図1、2A、4、6A-B、7A及び15に記載されている構成要素によって具現化されてもよい。例えば、受信動作1105及び1125、特定動作1110及び1115及び提供動作1120及び1130が、任意選択的にプロセッサ120によって具現化されてもよい。その他のプロセスが、図1、2A,4、6A-B、7A及び15に記載の構成要素に基づいてどのように具現化可能であるのかは、当業者に明らかとなろう。
【0344】
図15に記載された複数の機能ブロックが、種々の記載の実施形態を具現化するために、任意選択的に組み合わせられるか又は複数のサブブロックに分割されることが、当業者に理解されよう。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの任意の予想される組合せ又は分割又は更なる定義を任意選択的に裏付ける。例えば、1つ又はそれ以上の処理ユニット1508が、1つ又はそれ以上の処理ユニット1508のうちの少なくとも1つに作動的に連結されて動作を可能とする、付属の「コントローラ」ユニットを有してもよい。このコントローラユニットは、図15には別個に図示されていないが、デバイス1500などの処理ユニット1508を有するデバイスを設計している当業者によって理解可能であることが理解されよう。別の一例として、受信ユニット1510などの1つ又はそれ以上のユニットが、幾つかの実施態様では処理ユニット1208の外部のハードウェアユニットであってもよい。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの組合せ、分割及び/又は更なる定義を任意選択的に裏付ける。
【0345】
幾つかの実施形態に基づき、図16は、図12を参照して記載されたものを含む種々の記載された実施形態の原理に従って構成された電子デバイス1600の機能ブロック図を図示している。デバイスの複数の機能ブロックは、種々の記載された実施形態の原理を実現するために、任意選択的に、ハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組合せによって具現化される。図16に記載されている複数の機能ブロックが、種々の記載された実施形態の原理を具現化するために、任意選択的に組み合わせられるか又は複数のサブブロックに分割されることが、当業者に理解されよう。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの任意の予想される組合せ又は分割又は更なる定義を任意選択的に裏付ける。
【0346】
図16に示すように、1つ又はそれ以上のデバイス1600が、タッチ感知ディスプレイユニット1602及び任意選択的にタッチ感知ディスプレイユニットに接続される処理ユニット1608を含む。幾つかの実施形態においては、1つ又はそれ以上の処理ユニット1608が、特定ユニット1610、受信ユニット1612、提供ユニット1614、判定ユニット1616及び、任意選択的に、調整ユニット1618及び取り出しユニット1620を含む。
【0347】
幾つかの例においては、処理ユニット1608が、(例えば特定ユニット1610を用いて)一組のインテントオブジェクトのうちの一インテントオブジェクトを特定し、インテントオブジェクトが自然言語ユーザ入力から導出され;(例えば特定ユニット1610を用いて)一組のインテントオブジェクトのうちのインテントオブジェクトと対応付けられたソフトウェアアプリケーションを特定し;(例えば受信ユニット1612を用いて)ソフトウェアアプリケーションと関連付けられたタスクフローを第2の電子デバイスから受信し;(例えば提供ユニット1614を用いて)インテントオブジェクトをソフトウェアアプリケーションに提供して、インテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させ;ソフトウェアアプリケーションから要求を受信し;(例えば判定ユニット1616を用いて)要求に基づくクエリを判定し、クエリがタスクフローに従って判定され;(例えば提供ユニット1614を用いて)タッチ感知ディスプレイ1602を使用してクエリを提供し;クエリの提供後に、(例えば受信ユニット1612を用いて)クエリ応答を示す第2のユーザ入力を受信し;(例えば提供ユニット1614を用いて)クエリ応答をソフトウェアアプリケーションに提供するように構成されている。
【0348】
幾つかの例においては、処理ユニット1608は、タスクの実行に成功したか否かを示す結果応答を、(例えば受信ユニット1612を用いて)ソフトウェアアプリケーションから受信し、(例えば提供ユニット1614を用いて)タスクが実行されたか否かを示す出力を提供するように更に構成されている。
【0349】
幾つかの例においては、クエリ応答をソフトウェアアプリケーションに提供することが、インテントオブジェクトを(例えば調整ユニット1618を用いて)調整し、調整されたインテントオブジェクトをソフトウェアアプリケーションに提供することを含む。
【0350】
幾つかの例においては、ソフトウェアアプリケーションと関連付けられたタスクフローを受信することが、タスクフローを(例えば受信ユニット1612を用いて)別の電子デバイスから受信し、タスクフローを電子デバイス上に記憶することを含む。
【0351】
幾つかの例においては、要求に基づくクエリを判定することが、クエリを(例えば取り出しユニット1620を用いて)電子デバイス上に記憶されたタスクフローから取り出すことを含む。
【0352】
幾つかの例においては、クエリ応答が、インテントオブジェクトと関連付けられたパラメータを示す。
【0353】
図12に関して上述した動作は、任意選択的に、図1、2A、4、6A-B、7A及び16に図示された構成要素によって具現化される。例えば、特定動作1205及び1210;受信動作1215、1225及び1240;提供動作1220、1235及び1245;並びに判定動作1230が、任意選択的にプロセッサ120によって具現化される。その他のプロセスを図1、2A、4、6A-B、7A及び16に基づいてどのように具現化可能であるのかは、当業者に明らかとなろう。
【0354】
図16に記載された複数の機能ブロックが、種々の記載された実施形態の原理を具現化するために、任意選択的に組み合わせられるか又は複数のサブブロックに分割されることが、当業者に理解されよう。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの任意の予想される組合せ又は分割又は更なる定義を任意選択的に裏付ける。例えば、1つ又はそれ以上の処理ユニット1608が、処理ユニット1608に作動的に連結されて動作を可能とする付属の「コントローラ」ユニットを有してもよい。このコントローラユニットは、図16には別個に図示されていないが、デバイス1600などの処理ユニット1608を有するデバイスを設計している当業者によって理解可能であることが理解されよう。別の一例として、特定ユニット1610などの1つ又はそれ以上のユニットが、幾つかの実施態様では処理ユニット1608の外部のハードウェアユニットであってもよい。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの組合せ、分割及び/又は更なる定義を任意選択的に裏付ける。
【0355】
幾つかの実施形態に基づき、図17は、図12を参照して記載されたものを含む種々の記載された実施形態の原理に従って構成された電子デバイス1400の機能ブロック図を図示している。デバイスの複数の機能ブロックは、種々の記載された実施形態の原理を実現するために、任意選択的に、ハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組合せによって具現化される。図17に記載されている複数の機能ブロックが、種々の記載された実施形態の原理を具現化するために、任意選択的に組み合わせられるか又は複数のサブブロックに分割されることが、当業者に理解されよう。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの任意の予想される組合せ又は分割又は更なる定義を任意選択的に裏付ける。
【0356】
図17に示すように、1つ又はそれ以上のデバイス1700が、タッチ感知ディスプレイ1402及び1つ又はそれ以上の処理ユニット1708を含む。幾つかの実施形態においては、1つ又はそれ以上の処理ユニット1702が、判定ユニット1710、特定ユニット1712、提供ユニット1714、受信ユニット1716及び、任意選択的に、取得ユニット1718及び記憶ユニット1720を含む。
【0357】
幾つかの例においては、1つ又はそれ以上の処理ユニット1708が、(例えば判定ユニット1710を用いて)一組のインテントオブジェクトのうちの一インテントオブジェクトを判定し;(例えば特定ユニット1712を用いて)一組のインテントオブジェクトのうちのインテントオブジェクトと対応付けられたソフトウェアアプリケーションを特定し;(例えば判定ユニット1710を用いて)ソフトウェアアプリケーションと関連付けられたタスクフローを判定し;(例えば提供ユニット1714を用いて)インテントオブジェクトをソフトウェアアプリケーションに提供して、インテントオブジェクトと関連付けられたタスクをソフトウェアアプリケーションに実行させ;(例えば受信ユニット1716を用いて)ソフトウェアアプリケーションから要求を受信し;(例えば判定ユニット1710を用いて)要求に基づくクエリであって、クエリがタスクフローに基づいて判定される、クエリを判定し、;(例えば提供ユニット1714を用いて)タッチ感知ディスプレイを使用してクエリを提供し;クエリの提供後に、(例えば受信ユニット1716を用いて)クエリ応答を示す第2のユーザ入力を受信し;(例えば共有ユニット1714を用いて)クエリ応答をソフトウェアアプリケーションに提供するように構成されている。
【0358】
幾つかの例においては、1つ又はそれ以上の処理ユニット1708が、(例えば受信ユニット1716を用いて)自然言語ユーザ入力を含むオーディオ入力を受信し、(例えば取得ユニット1718を用いて)自然言語ユーザ入力からテキスト列を取得するように更に構成されており、一組のインテントオブジェクトのうちの一インテントオブジェクトを判定することが、(例えば判定ユニット1710を用いて)一組のインテントオブジェクトのうちの一インテントオブジェクトを、テキスト列に基づいて判定することを含む。
【0359】
幾つかの例においては、1つ又は複数の処理ユニット1708が、(例えば受信ユニット1716を用いて)タスクの実行に成功したか否かを示す結果応答を受信し、タスクが実行されたか否かを示す出力を(例えば提供ユニット1714を用いて)提供するように更に構成されている。
【0360】
幾つかの例においては、ソフトウェアアプリケーションと関連付けられたタスクフローを判定することが、(例えば判定ユニット1710を用いて)第1の電子デバイスにおいてタスクフローを判定し、(例えば提供ユニット1714を用いて)タスクフローを第2の電子デバイスに提供し、(例えば記憶ユニット1720を用いて)タスクフローを第1の電子デバイス上に記憶することを含む。
【0361】
幾つかの例においては、要求に基づくクエリを判定することが、(例えば判定ユニット1710を用いて)クエリを第1の電子デバイスで判定することを含む。
【0362】
図12に関して上述した動作は、任意選択的に、図1、2A、4、6A-B、7A及び17に図示された構成要素によって具現化される。例えば、特定動作1205及び1210;受信動作1215、1225及び1240;提供動作1220、1235及び1245;並びに判定動作1230が、任意選択的にプロセッサ120によって具現化される。その他のプロセスが図1、2A、4、6A-B、7A及び17に図示する構成要素に基づいてどのように具現化可能であるのかは、当業者に明らかとなろう。
【0363】
図14に記載された複数の機能ブロックが、種々の記載された実施形態の原理を具現化するために、任意選択的に組み合わせられるか又は複数のサブブロックに分割されることが、当業者に理解されよう。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの任意の予想される組合せ又は分割又は更なる定義を任意選択的に裏付ける。例えば、処理ユニット1708が、処理ユニット1708に作動的に連結されて動作を可能とする付属の「コントローラ」ユニットを有してもよい。このコントローラユニットは、図17には別個に図示されていないが、デバイス1700などの処理ユニット1708を有するデバイスを設計している当業者によって理解可能であることが理解されよう。別の一例として、特定ユニット1710などの1つ又はそれ以上のユニットが、幾つかの実施態様では処理ユニット1708の外部のハードウェアユニットであってもよい。従って、本明細書中の記載は、本明細書中に記載の複数の機能ブロックの組合せ、分割及び/又は更なる定義を任意選択的に裏付ける。
【0364】
上述の記載は、説明の目的で特定の実施形態に関連させて説明されているが、これらの例示的な記載は、網羅的であることも、本発明を開示された精確な形態に限定することも意図していない。上述の教示の観点から、数多くの修正及び変更が可能である。実施形態は、本願発明の技術の原理及びその実際的な応用を最適に説明するために選択及び記載されている。従って、当業者は、企図された特定の用途に適した様々な変更を加えることにより、本願発明の技術及びその様々な実施形態を十分に活用することが可能である。
【0365】
本願発明の開示及び例を添付の図面を参照しながら詳細に記載してきたが、様々な変更及び修正が当業者に明らかとなろうことに留意すべきである。そのような変更及び修正は、請求項によって規定される開示及び例の範囲に含まれるものとして理解されるべきである。
図1
図2A
図2B
図3
図4
図5A
図5B
図6A
図6B
図7A
図7B
図7C
図8
図9
図10A
図10B
図10C
図10D
図10E
図11
図12
図13A
図13B
図14
図15
図16
図17