以下の開示及び実施形態の説明では、実施することができる特定の実施形態の実例として示されている添付の図面が参照される。本開示の範囲から逸脱することなく、他の実施形態及び実施例を実施することができ、変更を行うことができることを理解されたい。
音声入力の識別のための技術が望ましい。本明細書で説明されるように、音声入力を識別するための技術は、文字、単語、フレーズ、及び/又はコマンドの混合を典型的に含むクレデンシャルを入力することなどの様々な目的で望ましい。そのような技術は、ユーザが手を使わないでクレデンシャルを入力することを可能にすることによって利点がある。更に、音声入力を識別するためのそのような技術は、ユーザが、時間がかかり、かつ煩わしい、文字単位でクレデンシャル又はいずれかの他の情報をデバイスに手動で入力する努力を削減することができる。
以下の説明では、様々な要素を説明するために「第1」、「第2」などの用語を使用するが、これらの要素はこれらの用語によって限定されるべきではない。これらの用語は、1つの要素を別の要素と区別するためにのみ使用される。例えば、説明される様々な実施例の範囲から逸脱することなく、第1の文字は第2の文字と称されてもよく、同様に、第2の文字は第1の文字と称されてもよい。第1の文字及び第2の文字は双方とも文字とすることができ、いくつかのケースでは、個別のかつ異なる文字とすることができる。
本明細書で説明される様々な実施例の説明で使用される用語は、特定の実施例を説明することのみを目的とするものであって、限定することを意図するものではない。説明される様々な実施例の説明及び添付の特許請求の範囲で使用されるとき、単数形「a」、「an」、及び「the」は、文脈がそうではないことを明確に示さない限り、複数形をも含むことが意図される。また、本明細書で使用されるときに、用語「及び/又は」は、関連する列挙された項目のうちの1つ以上のいずれか及び全ての可能な組合せを指し、かつこれを含むことを理解されたい。用語「includes(含む)、「including(含む)」、「comprises(含む)」及び/又は「comprising(含む)」は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、及び/又は構成要素の存在を指定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、及び/又はそれらのグループの存在又は追加を除外しないことが更に理解されるであろう。
用語「if(〜場合)」は、文脈に応じて「when(〜するとき)」、「upon(〜すると)」、「in response to determining(〜と判定したことに応じて)」、又は「in response to detecting(〜を検出したことに応じて)」を意味すると解釈することができる。同様に、句「if it is determined(〜と判定される場合)」又は「if[a stated condition or event]is detected([述べられる条件又はイベント]が検出される場合)」は、文脈に応じて「upon determining(〜と判定すると)」、「in response to determining(〜と判定したことに応じて)」、「upon detecting[the stated condition or event]([述べられる条件又はイベント]を検出すると)」、又は「in response to detecting[the stated condition or event]([述べられる条件又はイベント]を検出したことに応じて)」を意味すると解釈することができる。
1.システム及び環境
図1は、様々な実施例に従った、システム100のブロック図を示す。いくつかの実施例では、システム100は、デジタルアシスタントを実装することができる。用語「デジタルアシスタント」、「仮想アシスタント」、「インテリジェント自動アシスタント」、又は「自動デジタルアシスタント」は、発話形式及び/又はテキスト形式の自然言語入力を解釈してユーザの意図を推測し、推測されたユーザの意図に基づいてアクションを実行するいずれかの情報処理システムを指すことができる。例えば、推測されたユーザの意図に作用するために、システムは、以下のうちの1つ以上、すなわち、推測されたユーザの意図を実現するように設計されたステップ及びパラメータを有するタスクフローを識別すること、推測されたユーザの意図からの特定の要件をタスクフローに入力すること、プログラム、方法、サービス、又はAPIなどを呼び出すことによってタスクフローを実行すること、並びに可聴(例えば、発話)形式及び/又は視覚形式でユーザへの出力応答を生成すること、を実行することができる。
具体的には、デジタルアシスタントは、自然言語コマンド、要求、陳述、叙述、及び/又は照会の形式で少なくとも部分的にユーザ要求を受け付ける能力を有することができる。典型的には、ユーザ要求は、デジタルアシスタントによる情報の回答又はタスクの実行のいずれかを求めることができる。ユーザ要求への満足な応答は、要求された情報の回答の提供、要求されたタスクの実行、又はその2つの組合せとすることができる。例えば、ユーザは、デジタルアシスタントに「私は今どこにいますか?(Where am I right now?)」などの質問をしてもよい。ユーザの現在の場所に基づいて、デジタルアシスタントは、「あなたはセントラルパーク内の西門の近くにいます。(You are in Central Park near the west gate.))」と回答してもよい。ユーザはまた、例えば、「私の友人を、来週の私のガールフレンドの誕生日パーティーに招待して下さい。(Please invite my friends to my girlfriend's birthday party next week.)」のように、タスクの実行を要求してもよい。それに応じて、デジタルアシスタントは、「はい、ただ今(Yes, right away)」と述べることによって要求を確認応答し、次に、ユーザの代わりに、ユーザの電子アドレス帳に載っているユーザの友人の各々に適切なカレンダ招待状を送信してもよい。要求されたタスクの実行の間、デジタルアシスタントは、時により、長時間にわたって情報を複数回交換することを含む連続的なダイアログにおいて、ユーザと対話することができる。情報又は様々なタスクの実行を要求するためにデジタルアシスタントと対話する多くの他の方法が存在する。口頭による応答を提供し、プログラムされたアクションを取ることに加えて、デジタルアシスタントはまた、他の視覚又は音声形式の応答、例えば、テキスト、警報、音楽、ビデオ、アニメーションなどとして提供することもできる。
図1に示されるように、いくつかの実施例では、デジタルアシスタントは、クライアント−サーバモデルに従って実装されてもよい。デジタルアシスタントは、ユーザデバイス104上で実行されるクライアント側部分102(以後、「DAクライアント102」)、及びサーバシステム108上で実行されるサーバ側部分106(以後「DAサーバ106」)を含むことができる。DAクライアント102は、1つ以上のネットワーク110を通じてDAサーバ106と通信することができる。DAクライアント102は、ユーザ対応入力及び出力処理、並びにDAサーバ106との通信などのクライアント側機能を提供することができる。DAサーバ106は、それぞれのユーザデバイス104上に各々が常駐するいずれかの数のDAクライアント102のためのサーバ側機能性を提供することができる。
いくつかの実施例では、DAサーバ106は、クライアント対応I/Oインタフェース112、1つ以上の処理モジュール114、データ及びモデル116、及び外部サービスへのI/Oインタフェース118を含むことができる。クライアント対応I/Oインタフェース112は、DAサーバ106のためのクライアント対応入力及び出力処理を促進することができる。1つ以上の処理モジュール114は、データ及びモデル116を利用して、発話入力を処理し、自然言語入力に基づいてユーザの意図を判定することができる。更に、1つ以上の処理モジュール114は、タスクの実行を、推測されたユーザの意図に基づいて実行する。いくつかの実施例では、DAサーバ106は、タスク完了又は情報取得のために、ネットワーク(単数又は複数)110を通じて外部サービス120と通信することができる。外部サービスへのI/Oインタフェース118は、このような通信を促進することができる。
ユーザデバイス104は、いずれかの適切な電子デバイスとすることができる。例えば、ユーザデバイスは、ポータブル多機能デバイス(例えば、図2Aを参照して以下で説明されるデバイス200)、多機能デバイス(例えば、図4を参照して以下で説明されるデバイス400)、又はパーソナル電子デバイス(例えば、図6A〜図6Bを参照して以下で説明されるデバイス600)とすることができる。ポータブル多機能デバイスは、例えば、PDA及び/又は音楽プレーヤ機能などの他の機能をも含む携帯電話とすることができる。ポータブル多機能デバイスの具体的な実施例は、Apple Inc.(Cupertino,California)による、iPhone(登録商標)、iPod Touch(登録商標)、及びiPad(登録商標)デバイスを含むことができる。ポータブル多機能デバイスの他の実施例は、限定を伴わずに、ラップトップコンピュータ又はタブレットコンピュータを含むことができる。更に、いくつかの実施例では、ユーザデバイス104は、非ポータブル多機能デバイスとすることができる。特に、ユーザデバイス104は、デスクトップコンピュータ、ゲームコンソール、又はテレビ、又はテレビセットトップボックスとすることができる。いくつかの実施例では、ユーザデバイス104は、タッチ感知面(例えば、タッチスクリーンディスプレイ及び/又はタッチパッド)を含むことができる。更に、ユーザデバイス104は、任意選択的に、物理キーボード、マウス、及び/又はジョイスティックなどの1つ以上の他の物理ユーザインタフェースデバイスを含むことができる。多機能デバイスなどの電子デバイスの様々な実施例が以下で更に詳細に説明される。
通信ネットワーク(単数又は複数)110の例は、ローカルエリアネットワーク(LAN)及びワイドエリアネットワーク(WAN)、例えば、インターネットを含むことができる。通信ネットワーク(単数又は複数)110は、例えば、イーサネット、ユニバーサルシリアルバス(Universal Serial Bus、USB)、FIREWIRE、移動通信用のグローバルシステム(Global System for Mobile Communications、GSM)、拡張データGSM環境(Enhanced Data GSM Environment、EDGE)、符号分割多元接続(code division multiple access、CDMA)、時分割多元接続(time division multiple access、TDMA)、Bluetooth、Wi−Fi、ボイスオーバーインターネットプロトコル(voice over Internet Protocol、VoIP)、Wi−MAX、又はいずれかの他の適切な通信プロトコルなど、様々な有線又は無線プロトコルを含む、いずれかの周知のネットワークプロトコルを使用して実装されてもよい。
サーバシステム108は、1つ以上のスタンドアロンデータ処理装置、又はコンピュータの分散型ネットワーク上で実装されてもよい。いくつかの実施例では、サーバシステム108はまた、サーバシステム108の基本的なコンピューティングリソース及び/又はインフラストラクチャリソースを提供するために、種々の仮想デバイス及び/又はサードパーティサービスプロバイダ(例えば、サードパーティクラウドサービスプロバイダ)のサービスを採用することができる。
いくつかの実施例では、ユーザデバイス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に返すことができる。
いくつかの実施例では、ユーザデバイス104は、データに対する省略された要求を第2のユーザデバイス122に通信して、ユーザデバイス104から送信される情報の量を削減するように構成されてもよい。第2のユーザデバイス122は、追加情報を判定して、省略された要求に加えて完全な要求を生成し、DAサーバ106に送信するように構成されてもよい。このシステムアーキテクチャは、より強い通信能力及び/又はより大きなバッテリ電力を有する第2のユーザデバイス122(例えば、携帯電話、ラップトップコンピュータ、又はタブレットコンピュータ)をDAサーバ106へのプロキシとして使用することによって、限られた通信能力及び/又は限られたバッテリ電力を有するユーザデバイス104(例えば、時計又は同様のコンパクト電子デバイス)が、DAサーバ106によって提供されるサービスに有利にアクセスすることを可能にすることができる。図1では2つのユーザデバイス104及びユーザデバイス122のみが示されるが、システム100は、DAサーバシステム106と通信するために、このプロキシ構成で構成されたいずれかの数及びタイプのユーザデバイスを含むことができることを認識されたい。
図1に示されるデジタルアシスタントは、クライアント側部分(例えば、DAクライアント102)及びサーバ側部分(例えば、DAサーバ106)の両方を含むことができるが、いくつかの実施例では、デジタルアシスタントの機能は、ユーザデバイス上にインストールされるスタンドアロンアプリケーションとして実装されてもよい。加えて、デジタルアシスタントのクライアント部分とサーバ部分との間の機能の分離は実装によって異なってもよい。例えば、いくつかの実施例では、DAクライアントは、ユーザ対応入力及び出力処理機能のみを提供し、デジタルアシスタントの全ての他の機能をバックエンドサーバに委ねるシンクライアントとすることができる。
2.電子デバイス
ここで、デジタルアシスタントのクライアント側部分を実装するための電子デバイスの実施形態に注目する。図2Aは、いくつかの実施形態に従った、タッチ感知ディスプレイシステム212を有するポータブル多機能デバイス200を示すブロック図である。タッチ感知ディスプレイ212は、便宜上「タッチスクリーン」と呼ばれる場合があり、「タッチ感知ディスプレイシステム」として既知である場合、又はそのように呼ばれる場合がある。デバイス200は、メモリ202(任意選択的に、1つ以上のコンピュータ可読記憶媒体を含む)、メモリコントローラ222、1つ以上の処理ユニット(CPU)220、周辺機器インタフェース218、RF回路208、音声回路210、スピーカ211、マイクロフォン213、入出力(I/O)サブシステム206、他の入力制御デバイス216、及び外部ポート224を含む。デバイス200は、任意選択的に、1つ以上の光センサ264を含む。デバイス200は、任意選択的に、デバイス200(例えば、デバイス200のタッチ感知ディスプレイシステム212などのタッチ感知面)上の接触の強度を検出するための1つ以上の接触強度センサ265を含む。デバイス200は、任意選択的に、デバイス200上で触知出力を生成する(例えば、デバイス200のタッチ感知ディスプレイシステム212又はデバイス400のタッチパッド455などのタッチ感知面上で触知出力を生成する)ための1つ以上の触知出力生成器267を含む。これらの構成要素は、任意選択的に、1つ以上の通信バス又は信号ライン203を介して通信する。
本明細書及び特許請求の範囲で使用されるとき、タッチ感知面上の接触の「強度」という用語は、タッチ感知面上の接触(例えば、指接触)の力若しくは圧力(単位面積当りの力)、又はタッチ感知面上の接触の力若しくは圧力の代替物(代用物)を指す。接触の強度は、少なくとも4つの異なる値を含み、より典型的には、何百もの(例えば、少なくとも256個の)異なる値を含む値範囲を有する。接触の強度は、任意選択的に、様々な手法、及び様々なセンサ又はセンサの組合せを使用して判定(又は、測定)される。例えば、タッチ感知面の下に又はこれに隣接する1つ以上の力センサは、任意選択的に、タッチ感知面上の様々な点における力を測定するために使用される。いくつかの実装形態では、複数の力センサからの力測定値は、接触の力の推定値を判定するために組み合わされる(例えば、加重平均)。同様に、スタイラスの感圧性先端部は、任意選択的に、タッチ感知面上のスタイラスの圧力を判定するために使用される。代わりに、タッチ感知面上で検出される接触領域のサイズ及び/若しくはその変化、接触に近接するタッチ感知面の容量及び/若しくはその変化、並びに/又は、接触に近接するタッチ感知面の抵抗及び/若しくはその変化は、任意選択的に、タッチ感知面上の接触の力又は圧力に対する代替物として使用される。いくつかの実装形態では、接触の力又は圧力に対する代替的測定値は、強度閾値を超えているかを判定するために直接使用される(例えば、強度閾値は、代替的測定値に対応する単位で説明される)。いくつかの実装形態では、接触の力又は圧力に対する代替的測定値は、推定される力又は圧力に変換され、推定される力又は圧力は、強度閾値を超えているかを判定するために使用される(例えば、強度閾値は、圧力の単位で測定された圧力閾値である)。接触の強度をユーザ入力の属性として使用することによって、アフォーダンスを表示するための(例えば、タッチ感知ディスプレイ上で)、及び/又は、ユーザ入力を受信するための(例えば、タッチ感知ディスプレイ、タッチ感知面、又はノブ若しくはボタンなどの物理的/機械的制御部を介して)、面積が制限されている、低減されたサイズのデバイス上で別途ユーザによってアクセスすることができないことがある追加的なデバイス機能へのユーザのアクセスが可能となる。
本明細書及び特許請求の範囲で使用されるとき、用語「触知出力」は、ユーザの触覚でユーザによって検出されることになる、デバイスの前の位置に対するデバイスの物理的変位、デバイスの構成要素(例えば、タッチ感知面)のデバイスの別の構成要素(例えば、筐体)に対する物理的変位、又はデバイスの質量中心に対する構成要素の変位を指す。例えば、デバイス又はデバイスの構成要素がタッチに敏感なユーザの表面(例えば、ユーザの手の指、手のひら、又は他の部分)に接触している状況において、物理的変位によって生成された触知出力は、デバイス又はデバイスの構成要素の物理的特性における認識された変化に相当する触感として、ユーザによって解釈される。例えば、タッチ感知面(例えば、タッチ感知ディスプレイ又はトラックパッド)の移動は、任意選択的に、ユーザによって、物理アクチュエータボタンの「ダウンクリック」又は「アップクリック」として解釈される。いくつかのケースでは、ユーザの移動により物理的に押圧された(例えば、変位された)タッチ感知面と関連付けられた物理アクチュエータボタンの移動がないときでさえ、ユーザは「ダウンクリック」又は「アップクリック」などの触知感を感じる。別の実施例として、タッチ感知面の移動は、任意選択的に、タッチ感知面の平滑度において変化がないときでさえ、ユーザによって、タッチ感知面の「粗さ」として解釈又は感知される。そのようなユーザによるタッチの解釈は、ユーザの個人的な感覚認知に左右されるものではあるが、大多数のユーザに共通する、多くのタッチの感覚認知が存在する。よって、触知出力が、ユーザの特定の感覚認知(例えば、「アップクリック」「ダウンクリック」、「粗さ」)に対応するものとして説明されるとき、別途記載のない限り、生成された触知出力は、典型的な(又は、平均的な)ユーザに対する説明された感覚認知を生成するデバイス又はデバイスの構成要素の物理的変位に対応する。
デバイス200は、ポータブル多機能デバイスの1つの実施例に過ぎず、デバイス200は、任意選択的に、示されているものよりも多くの構成要素又は少ない構成要素を有し、任意選択的に、2つ以上の構成要素を組合せ、又は任意選択的に、構成要素の異なる構成若しくは配置を有することを認識されたい。図2Aに示される様々な構成要素は、1つ以上の信号処理回路及び/又は特定用途向け集積回路を含む、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの双方の組合せで実装される。
メモリ202は、1つ以上のコンピュータ可読記憶媒体を含んでもよい。このコンピュータ可読記憶媒体は、有形かつ非一時的であってよい。メモリ202は、高速ランダムアクセスメモリを含んでもよく、1つ以上の磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性ソリッドステートメモリデバイスなどの、不揮発性メモリもまた含んでもよい。メモリコントローラ222は、デバイス200の他の構成要素によるメモリ202へのアクセスを制御してよい。
いくつかの実施例では、メモリ202の非一時的コンピュータ可読記憶媒体は、コンピュータベースのシステム、プロセッサを含むシステム、又は命令実行システム、装置、若しくはデバイスから命令をフェッチすることができ、命令を実行することができる他のシステムなどの、命令実行システム、装置、若しくはデバイスによって、又はそれと関連して使用する命令(例えば、以下で説明される処理1200の態様を実行するための)を記憶するために使用されてもよい。他の実施例では、(例えば、以下で説明される処理1200の態様を実行するための)命令は、サーバシステム108の非一時的コンピュータ可読記憶媒体(図示せず)に記憶されてもよく、又はメモリ202の非一時的コンピュータ可読記憶媒体とサーバシステム108の非一時的コンピュータ可読記憶媒体との間で分割されてもよい。本文書のコンテキストでは、「非一時的コンピュータ可読記憶媒体」は、命令実行システム、装置、若しくはデバイスによって、又はそれらに関連して使用するためのプログラムを含むことができ、又は記憶することができるいずれかの媒体とすることができる。
周辺機器インタフェース218は、デバイスの入力及び出力周辺機器をCPU220及びメモリ202に結合するために使用されてもよい。1つ以上のプロセッサ220は、デバイス200のための様々な機能を実行し、データを処理するために、メモリ202に記憶された様々なソフトウェアプログラム及び/又は、命令セットを動作させ、又は実行する。いくつかの実施形態では、周辺機器インタフェース218、CPU220、及びメモリコントローラ222は、チップ204などのシングルチップ上で実装されてもよい。いくつかの他の実施形態では、それらは、別個のチップ上で実装されてもよい。
RF(radio frequency)(無線周波数)回路208は、電磁信号とも呼ばれるRF信号を送受信する。RF回路208は、電気信号を電磁信号に、又は電磁信号を電気信号に変換し、電磁信号を介して通信ネットワーク及び他の通信デバイスと通信する。RF回路208は、任意選択的に、アンテナシステム、RF送受信機、1つ以上の増幅器、同調器、1つ以上の発振器、デジタル信号プロセッサ、CODECチップセット、加入者識別モジュール(SIM)カード、及びメモリなどを含むがこれらに限定されない、それらの機能を実行するための周知の回路を含む。RF回路208は、任意選択的に、ワールドワイドウェブ(WWW)とも称されるインターネット、イントラネット、並びに/又はセルラー電話ネットワーク、無線ローカルエリアネットワーク(LAN)及び/若しくはメトロポリタンエリアネットワーク(MAN)などの無線ネットワークなどのネットワークと、他のデバイスと無線通信によって通信する。RF回路208は、任意選択的に、近距離通信無線などによる近距離無線通信(NFC)フィールドを検出するための周知の回路を含む。無線通信は、任意選択的に、移動通信用のグローバルシステム(Global System for Mobile Communications、GSM)、拡張データGSM環境(Enhanced Data GSM Environment、EDGE)、高速ダウンリンクパケットアクセス(high−speed downlink packet access、HSDPA)、高速アップリンクパケットアクセス(high−speed uplink packet access、HSUPA)、Evolution,Data−Only(EV−DO)、HSPA、HSPA+、2重セルHSPA(Dual−Cell HSPDA、DC−HSPDA)、ロングタームエボリューション(long term evolution、LTE)、近距離通信(near field communication、NFC)、広帯域符号分割多元接続(wideband code division multiple access、W−CDMA)、符号分割多元接続(code division multiple access、CDMA)、時分割多元接続(time division multiple access、TDMA)、Bluetooth、Bluetooth Low Energy(BTLE)、Wireless Fidelity(Wi−Fi)(例えば、IEEE802.11a、IEEE802.11b、IEEE802.11g、IEEE802.11n、及び/若しくはIEEE802.11ac)、ボイスオーバーインターネットプロトコル(voice over Internet Protocol、VoIP)、Wi−MAX、電子メール用のプロトコル(例えば、インターネットメッセージアクセスプロトコル(Internet message access protocol、IMAP)及び/若しくはポストオフィスプロトコル(post office protocol、POP))、インスタントメッセージング(例えば、拡張可能メッセージング及びプレゼンスプロトコル(extensible messaging and Presence Leveraging Extensions、XMPP)、インスタントメッセージング及びプレゼンス利用拡張向けセッション開始プロトコル(Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions、SIMPLE)、インスタントメッセージング及びプレゼンスサービス(Instant Messaging and Presence Service、IMPS))、及び/若しくはショートメッセージサービス(Short Message Service、SMS)、又は本文書の出願日現在までにまだ開発されていない通信プロトコルを含むいずれかの他の適切な通信プロトコルを含むがこれらに限定されない、複数の通信規格、プロトコル、及び技術のうちのいずれかを使用する。
音声回路210、スピーカ211、及びマイクロフォン213は、ユーザとデバイス200との間の音声インタフェースを提供する。音声回路210は、周辺機器インタフェース218から音声データを受信し、この音声データを電気信号に変換し、電気信号をスピーカ211に送信する。スピーカ211は、電気信号を人間の可聴音波に変換する。音声回路210はまた、マイクロフォン213により音波から変換された電気信号を受信する。音声回路210は、電気信号を音声データに変換し、音声データを処理のために周辺機器インタフェース218に送信する。音声データは、周辺機器インタフェース218によって、メモリ202及び/若しくはRF回路208から取り出されてもよく、並びに/又はメモリ202及び/若しくはRF回路208に送信されてもよい。いくつかの実施形態では、音声回路210はまた、ヘッドセットジャック(例えば、図3の312)を含む。ヘッドセットジャックは、音声回路210と、出力専用ヘッドホン又は出力(例えば、片耳又は両耳用のヘッドホン)及び入力(例えば、マイクロフォン)の双方を有するヘッドセットなどの取り外し可能な音声入出力周辺機器との間のインタフェースを提供する。
I/Oサブシステム206は、周辺機器インタフェース218に、タッチスクリーン212及び他の入力制御デバイス216などのデバイス200の入出力周辺機器を接続する。I/Oサブシステム206は、任意選択的に、ディスプレイコントローラ256、光センサコントローラ258、強度センサコントローラ259、触覚フィードバックコントローラ261、及び他の入力若しくは制御デバイスのための1つ以上の入力コントローラ260を含む。1つ以上の入力コントローラ260は、他の入力制御デバイス216との間で、電気信号を受信/送信する。他の入力制御デバイス216は、任意選択的に、物理ボタン(例えば、プッシュボタン、ロッカーボタンなど)、ダイヤル、スライダスイッチ、ジョイスティック、及びクリックホイールなどを含む。いくつかの代替的実施形態では、入力コントローラ(単数又は複数)260は、任意選択的に、キーボード、赤外線ポート、USBポート、及びマウスなどのポインタデバイスのうちのいずれかに接続される(又は、いずれにも接続されない)。1つ以上のボタン(例えば、図3の308)は、任意選択的に、スピーカ211及び/又はマイクロフォン213の音量調節のための、アップ/ダウンボタンを含む。1つ以上のボタンは、任意選択的に、プッシュボタン(例えば、図3の306)を含む。
その全体が参照により本明細書に組み込まれる、2005年12月23日に出願された米国特許第7,657,849号である米国特許出願第11/322,549号、「Unlocking a Device by Performing Gestures on an Unlock Image」に記載されているように、プッシュボタンの素早い押圧は、タッチスクリーン212のロックを解除し、又はデバイスのロックを解除するためにタッチスクリーン上のジェスチャを使用する処理を開始することができる。プッシュボタン(例えば、306)のより長く押圧は、デバイス200の電源をオン又はオフすることができる。ユーザは、1つ以上のボタンの機能をカスタマイズすることができる。タッチスクリーン212は、仮想又はソフトボタン、及び1つ以上のソフトキーボードを実装するために使用される。
タッチ感知ディスプレイ212は、デバイスとユーザとの間の入力インタフェース及び出力インタフェースを提供する。ディスプレイコントローラ256は、タッチスクリーン212から電気信号を受信し、及び/又はタッチスクリーン212に電気信号を送信する。タッチスクリーン212は、ユーザに視覚出力を表示する。視覚出力は、グラフィック、テキスト、アイコン、ビデオ、及びそれらのいずれかの組合せ(「グラフィック」と総称される)を含んでもよい。いくつかの実施形態では、視覚出力の一部又は全てはユーザインタフェースオブジェクトに対応してもよい。
タッチスクリーン212は、触覚及び/若しくは触知の接触に基づくユーザからの入力を受け付けるタッチ感知面、センサ、又はセンサのセットを有する。タッチスクリーン212及びディスプレイコントローラ256は(メモリ202内のいずれかの関連モジュール及び/又は、命令セットと共に)、タッチスクリーン212上で接触(及びいずれかの接触の移動又は中断)を検出し、検出された接触をタッチスクリーン212上で表示されたユーザインタフェースオブジェクト(例えば、1つ以上のソフトキー、アイコン、ウェブページ、又は画像)との対話に変換する。例示的な実施形態では、タッチスクリーン212とユーザとの間の接触点は、ユーザの指に対応する。
タッチスクリーン212は、LCD(liquid crystal display、液晶ディスプレイ)技術、LPD(light emitting polymer display、発光ポリマーディスプレイ)技術、又はLED(light emitting diode、発光ダイオード)技術を使用してもよいが、他の実施形態では、その他のディスプレイ技術が使用されてもよい。タッチスクリーン212及びディスプレイコントローラ256は、現在既知の、又は今後開発される複数のタッチ感知技術のうちのいずれかを使用して、接触、及びその接触のあらゆる移動又はは中断を検出することができ、これらの技術は、静電容量技術、抵抗性技術、赤外線技術、及び表面弾性波技術、並びにタッチスクリーン212との1つ以上の接触点を判定するための他の近接センサアレイ又は他の要素を含むがこれらに限定されない。例示的な実施形態では、Apple Inc.(Cupertino,California)による、iPhone(登録商標)及びiPod Touch(登録商標)において見られるような、投影型相互静電容量感知技術が使用されている。
その各々が、その全体が参照により本明細書に組み込まれる、タッチスクリーン212のいくつかの実施形態におけるタッチ感知ディスプレイは、以下の米国特許第6,323,846号(Westermanら)、同第6,570,557号(Westermanら)、及び/又は同第6,677,932号(Westerman)、及び/又は米国特許出願公開第2002/0015024(A1)号に記載されているマルチタッチ感知タッチパッドと同様であってもよい。しかしながら、タッチスクリーン212はデバイス200からの視覚出力を表示するのに対して、タッチ感知タッチパッドは視覚出力を提供しない。
タッチスクリーン212のいくつかの実施形態におけるタッチ感知ディスプレイは、以下の出願で説明されているとおりにすることができる。(1)2006年5月2日に出願された米国特許出願第11/381,313号、「Multipoint Touch Surface Controller」、(2)2004年5月6日に出願された同第10/840,862号、「Multipoint Touchscreen」、(3)2004年7月30日に出願された同第10/903,964号、「Gestures For Touch Sensitive Input Devices」、(4)2005年1月31日に出願された同第11/048,264号、「Gestures For Touch Sensitive Input Devices」、(5)2005年1月18日に出願された同第11/038,590号、「Mode−Based Graphical User Interfaces For Touch Sensitive Input Devices」、(6)2005年9月16日に出願された同第11/228,758号、「Virtual Input Device Placement On A Touch Screen User Interface」、(7)2005年9月16日に出願された同第11/228,700号、「Operation Of A Computer With A Touch Screen Interface」、(8)2005年9月16日に出願された同第11/228,737号、「Activating Virtual Keys Of A Touch−Screen Virtual Keyboard」、及び(9)2006年3月3日に出願された同第11/367,749号、「Multi−Functional Hand−Held Device」。これらの出願の全ては、その全体が参照により本明細書に組み込まれる。
タッチスクリーン212は、100dpiを超えるビデオ解像度を有してもよい。いくつかの実施形態では、タッチスクリーンは約160dpiのビデオ解像度を有する。ユーザは、スタイラス及び指などのいずれかの適切な物体又は付属物を使用して、タッチスクリーン212と接触することができる。いくつかの実施形態では、ユーザインタフェースは、主として指に基づく接触とジェスチャと作用するように設計され、タッチスクリーン上の指の接触面積が広いことに起因して、スタイラスを基準とした入力よりも精度が低いことがある。いくつかの実施形態では、デバイスは、指に基づく粗い入力を正確なポインタ/カーソル位置又はユーザの望むアクションを実行するためのコマンドに変換する。
いくつかの実施形態では、タッチスクリーンに加えて、デバイス200は、特定の機能をアクティブ化又は非アクティブ化させるためのタッチパッド(図示せず)を含んでもよい。いくつかの実施形態では、タッチパッドは、タッチスクリーンとは異なり、視覚出力を表示しないデバイスのタッチ感知領域である。タッチパッドは、タッチスクリーン212とは別個のタッチ感知面、又はタッチスクリーンによって形成されるタッチ感知面の拡張部であってもよい。
デバイス200はまた、様々な構成要素に電力を供給するための電力システム262を含む。電力システム262は、電力管理システム、1つ以上の電源(例えば、バッテリ、交流(AC))、再充電システム、停電検出回路、電力コンバータ又はインバータ、電力状態インジケータ(例えば、発光ダイオード(LED))、並びにポータブルデバイスにおける電力の生成、管理、及び分配に関連するいずれかの他の構成要素を含んでもよい。
デバイス200はまた、1つ以上の光センサ264を含んでもよい。図2Aは、I/Oサブシステム206における光センサコントローラ258に結合された光センサを示す。光センサ264は、電荷結合デバイス(CCD)又は相補的金属酸化物半導体(CMOS)フォトトランジスタを含んでもよい。光センサ264は、1つ以上のレンズを通じて投影された、環境からの光を受光し、画像を表すデータに光を変換する。撮像モジュール243(カメラモジュールとも呼ばれる)と連携して、光センサ264は、静止画像又はビデオをキャプチャしてもよい。いくつかの実施形態では、光センサは、タッチスクリーンディスプレイを静止画像及び/又はビデオ画像取得のためのビューファインダとして使用することができるように、デバイスの前面のタッチスクリーンディスプレイ212の反対側である、デバイス200の背面に光センサに位置する。いくつかの実施形態では、光センサは、ユーザが他のビデオ会議参加者をタッチスクリーンディスプレイ上で見る間にユーザの画像をビデオ会議のために取得することができるように、デバイスの前面に位置する。いくつかの実施形態では、光センサ264の位置は、ビデオ会議並びに静止画像及び/又はビデオ画像の取得の双方のために単一の光センサ264をタッチスクリーンディスプレイと共に使用することができるように、ユーザによって(例えば、デバイス筐体内のレンズ及びセンサを回転させることによって)変更されてもよい。
デバイス200はまた、任意選択的に、1つ以上の接触強度センサ265を含む。図2Aは、I/Oサブシステム206における強度センサコントローラ259に結合された接触強度センサを示す。接触強度センサ265は、任意選択的に、1つ以上のピエゾ抵抗ひずみゲージ、電気容量式力センサ、電気力センサ、圧電力センサ、光学力センサ、容量式タッチ感知面、又は他の強度センサ(例えば、タッチ感知面上の接触の力(又は圧力)を測定するために使用するセンサ)を含む。接触強度センサ265は、環境から接触強度情報(例えば、圧力情報又は圧力情報のプロキシ)を受信する。いくつかの実施形態では、少なくとも1つの接触強度センサが、タッチ感知面(例えば、タッチ感知ディスプレイシステム212)に配置され、又はそれに近接している。いくつかの実施形態では、少なくとも1つの接触強度センサが、デバイス200の前面に位置するタッチスクリーンディスプレイ212の反対側である、デバイス200の背面に位置する。
デバイス200はまた、1つ以上の近接センサ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をオフにし、無効化する。
デバイス200はまた、任意選択的に、1つ以上の触知出力生成器267を含む。図2Aでは、I/Oサブシステム206における触覚フィードバックコントローラ261に結合された触知出力生成器を示す。触知出力生成器267は、スピーカ若しくは他の音声構成要素などの1つ以上の電気音響デバイス、及び/又はモータ、ソレノイド、電気活性ポリマー、圧電アクチュエータ、静電アクチュエータ、若しくは他の触知出力生成構成要素(例えば、デバイス上で電気信号を触知出力に変換する構成要素)など、エネルギーを直線運動に変換する電気機械デバイスを任意選択的に含む。接触強度センサ265は、触覚フィードバックモジュール233から触覚フィードバック生成命令を受信し、触知出力をデバイス200のユーザが感知することができるデバイス200上で生成する。いくつかの実施形態では、少なくとも1つの触知出力生成器は、タッチ感知面(例えば、タッチ感知ディスプレイシステム212)に配置され、又はそれに近接しており、任意選択的に、タッチ感知面を垂直方向(例えば、デバイス200の表面の内/外)又は横方向(例えば、デバイス200の表面と同一の平面内の前後)に移動させることによって触知出力を生成する。いくつかの実施形態では、少なくとも1つの触知出力生成器センサは、デバイス200の前面に位置するタッチスクリーンディスプレイ212の反対側である、デバイス200の背面に位置する。
デバイス200はまた、1つ以上の加速度計268を含んでもよい。図2Aは、周辺機器インタフェース218に結合された加速度計268を示す。代わりに、加速度計268は、I/Oサブシステム206における入力コントローラ260に連結されてもよい。加速度計268は、その双方が、その全体が参照により本明細書に組み込まれる、米国特許出願公開第20050190059号、「Acceleration−based Theft Detection System for Portable Electronic Devices」、及び同第20060017692号、「Methods And Apparatuses For Operating A Portable Device Based On An Accelerometer」で説明されるように実行してもよい。いくつかの実施形態では、情報は、1つ以上の加速度計から受信されたデータの分析に基づいて、縦長表示又は横長表示でタッチスクリーンディスプレイ上で表示される。デバイス200は、任意選択的に、加速度計(単数又は複数)268に加えて、磁気計(図示せず)及びデバイス200の位置及び向き(例えば、縦長又は横長)に関する情報を取得するためのGPS(又はGLONASS又は他のグローバルナビゲーションシステム)受信部(図示せず)を含む。
いくつかの実施形態では、メモリ202に記憶されたソフトウェア構成要素は、オペレーティングシステム226、通信モジュール(又は、命令セット)228、接触/動きモジュール(又は、命令セット)230、グラフィックモジュール(又は、命令セット)232、テキスト入力モジュール(又は、命令セット)234、全地球測位システム(GPS)モジュール(又は、命令セット)235、デジタルアシスタントクライアントモジュール229、及びアプリケーション(又は、命令セット)236を含む。更に、メモリ202は、ユーザデータ及びモデル231などのデータ及びモデルを記憶することができる。更に、いくつかの実施形態では、図2A及び図4に示されるように、メモリ202(図2A)又はメモリ470(図4)は、デバイス/グローバル内部状態257を記憶する。デバイス/グローバル内部状態257は、現在アクティブ状態のアプリケーションがある場合、どのアプリケーションがアクティブかを示すアクティブアプリケーション状態、どのアプリケーション、ビュー、又は他の情報がタッチスクリーンディスプレイ212の様々な領域を占領しているかを示す表示状態、デバイスの様々なセンサ及び入力制御デバイス216から得られる情報を含むセンサ状態、及びデバイスの位置及び/又は姿勢に関する位置情報のうちの1つ以上を含む。
オペレーティングシステム226(例えば、Darwin、RTXC、LINUX、UNIX、OS X、iOS、WINDOWS、又はVxWorksなどの組み込みオペレーティングシステム)は、一般的なシステムタスク(例えば、メモリ管理、記憶デバイス制御、電力管理など)を制御及び管理するための様々なソフトウェア構成要素及び/又はドライバを含み、様々なハードウェア構成要素とソフトウェア構成要素との間の通信を促進する。
通信モジュール228は、1つ以上の外部ポート224を通じて他のデバイスとの通信を促進し、RF回路208及び/又は外部ポート224によって受信されたデータを処理するための様々なソフトウェア構成要素をも含む。外部ポート224(例えば、ユニバーサルシリアルバス(Universal Serial Bus)(USB)、FIREWIREなど)は、直接的に、又はネットワーク(例えば、インターネット、無線LANなど)を通じて間接的に他のデバイスに結合するように適応している。いくつかの実施形態では、外部ポートは、iPod(登録商標)(Apple Inc.の商標)デバイス上で使用される30ピンコネクタと同一の若しくは同様のマルチピン(例えば、30ピン)コネクタ、及び/又は互換性のあるマルチピン(例えば、30ピン)コネクタである。
接触/動きモジュール230は、任意選択的に、(ディスプレイコントローラ256と連携して)タッチスクリーン212との接触、及び他のタッチ感知デバイス(例えば、タッチパッド又は物理クリックホイール)との接触を検出する。接触/動きモジュール230は、接触が生じたかを判定すること(例えば、指を下ろすイベントを検出すること)、接触の強度(例えば、接触の力若しくは圧力、又は接触の力若しくは圧力の代替物)を判定すること、接触の移動が存在するかを判定し、タッチ感知面を横断する移動を追跡すること(例えば、指をドラッグする1つ以上のイベントを検出すること)、及び接触が停止したかを判定すること(例えば、指を上げるイベント又は接触の中断を検出すること)など、接触の検出に関する様々な動作を実行するための様々なソフトウェア構成要素を含む。接触/動きモジュール230は、タッチ感知面から接触データを受信する。一連の接触データにより表される接触点の移動を判定することは、任意選択的に、接触点の速さ(大きさ)、速度(大きさ及び方向)、並びに/又は加速度(大きさ及び/又は方向における変化)を判定することを含む。これらの動作は、任意選択的に、単一の接触(例えば、1本の指の接触)又は複数の同時接触(例えば、「マルチタッチ」/複数の指の接触)に適用される。いくつかの実施形態では、接触/動きモジュール230及びディスプレイコントローラ256は、タッチパッド上の接触を検出する。
いくつかの実施形態では、接触/動きモジュール230は、ユーザによって動作が実行されたか判定するための(例えば、ユーザがアイコン上で「クリック」したかを判定するための)、1つ以上の強度閾値のセットを使用する。いくつかの実施形態では、少なくとも強度閾値のサブセットは、ソフトウェアパラメータに従って判定される(例えば、強度閾値は、特定の物理アクチュエータのアクティブ化閾値によって判定されず、デバイス200の物理ハードウェアを変更することなく調節されてもよい)。例えば、トラックパッド又はタッチスクリーンディスプレイのマウス「クリック」閾値は、トラックパッド又はタッチスクリーンディスプレイのハードウェアを変更することなく、広範囲の予め定義された閾値のうちのいずれかに設定されてもよい。加えて、いくつかの実装形態では、デバイスのユーザは、強度閾値の組のうちの1つ以上を調節するためのソフトウェア設定が提供される(例えば、個々の強度閾値を調節することによって、及び/又はシステムレベルのクリック「強度」パラメータで一度に複数の強度閾値を調節することによって)。
接触/動きモジュール230は、任意選択的に、ユーザによるジェスチャ入力を検出する。タッチ感知面上の異なるジェスチャは、異なる接触パターン(例えば、検出される接触の異なる動き、タイミング、及び/又は強度)を有する。よって、ジェスチャは、任意選択的に、特定の接触パターンを検出することによって検出される。例えば、指のタップジェスチャを検出することは、(例えば、アイコンの位置における)指を下ろすイベントを検出し、続いてその指を下ろすイベントと同一の位置(又は、実質的に同一の位置)において指を上げる(リフトオフ)イベントを検出することを含む。別の実施例として、タッチ感知面上で指のスワイプジェスチャを検出することは、指を下ろすイベントを検出し、続いて、1つ以上の、指をドラッグするイベントを検出し、その後、続いて指を上げる(リフトオフ)イベントを検出することを含む。
グラフィックモジュール232は、表示されるグラフィックの視覚的効果(例えば、輝度、透明度、彩度、コントラスト、又は他の視覚特性)を変更するための構成要素を含む、タッチスクリーン212又は他のディスプレイ上でグラフィックをレンダリング及び表示するための様々な既知のソフトウェア構成要素を含む。本明細書で使用されるとき、用語「グラフィック」は、テキスト、ウェブページ、アイコン(ソフトキーを含むユーザインタフェースオブジェクトなど)、デジタル画像、ビデオ、及びアニメーションなどを含むがこれらに限定されない、ユーザに対して表示することができるいずれかのオブジェクトを含む。
いくつかの実施形態では、グラフィックモジュール232は、使用されることになるグラフィックを表すデータを記憶する。各々のグラフィックは、任意選択的に、対応するコードが割り当てられる。グラフィックモジュール232は、アプリケーションなどから、必要に応じて、座標データ及び他のグラフィック特性データと共に表示されることとなるグラフィックを指定する1つ以上のコードを受信し、次いで、ディスプレイコントローラ256に出力するスクリーンの画像データを生成する。
触覚フィードバックモジュール233は、デバイス200とのユーザ対話に応じて、デバイス200上の1つ以上の位置において触知出力を生成するために、触知出力生成器(単数又は複数)267によって使用される命令を生成するための、様々なソフトウェア構成要素を含む。
テキスト入力モジュール234は、グラフィックモジュール232の構成要素とすることができ、様々なアプリケーション(例えば、連絡先237、電子メール240、IM241、ブラウザ247、及びテキスト入力を必要とするいずれかの他のアプリケーション)でテキストを入力するためのソフトキーボードを提供する。
GPSモジュール235は、デバイスの位置を判定し、この情報を様々なアプリケーションで使用するために提供する(例えば、位置に基づく電話にて使用するために電話238へ、写真/ビデオメタデータとしてカメラ243へ、及び、天気ウィジェット、ローカルイエローページウィジェット、及びマップ/ナビゲーションウィジェットなどの、位置に基づくサービスを提供するアプリケーションへ)。
デジタルアシスタントクライアントモジュール229は、デジタルアシスタントのクライアント側機能性を提供するための様々なクライアント側デジタルアシスタント命令を含んでもよい。例えば、デジタルアシスタントクライアントモジュール229は、ポータブル多機能デバイス200の様々なユーザインタフェース(例えば、マイクロフォン213、加速度計(単数又は複数)268、タッチ感知ディスプレイシステム212、光センサ(単数又は複数)229、他の入力制御デバイス216など)を通じて、音声入力(例えば、発話入力)、テキスト入力、タッチ入力、及び/又はジェスチャ入力を受信する能力を有することができる。デジタルアシスタントクライアントモジュール229はまた、ポータブル多機能デバイス200の様々な出力インタフェース(例えば、スピーカ211、タッチ感知ディスプレイシステム212、触知出力生成器(単数又は複数)267など)を通じて、音声(例えば、発話出力)、視覚、及び/又は触知の形式で出力を提供する能力を有することができる。例えば、出力は、音声、音響、警報、テキストメッセージ、メニュー、グラフィック、ビデオ、アニメーション、振動、及び/又は上記の2つ以上の組合せとして提供されてもよい。動作の間、デジタルアシスタントクライアントモジュール229は、RF回路208を使用してDAサーバ106と通信することができる。
ユーザデータ及びモデル231は、デジタルアシスタントのクライアント側機能性を提供するための、ユーザと関連付けられた様々なデータ(例えば、ユーザ特有の語彙データ、ユーザ優先度データ、ユーザ特有の名前の発音、ユーザの電子アドレス帳からのデータ、to doリスト、買い物リストなど)を含んでもよい。更に、ユーザデータ及びモデル231は、ユーザ入力を処理し、ユーザの意図を判定するための様々なモデル(例えば、発話認識モデル、統計的言語モデル、自然言語処理モデル、オントロジ、タスクフローモデル、サービスモデルなど)を含んでもよい。
いくつかの実施例では、デジタルアシスタントクライアントモジュール229は、ポータブル多機能デバイス200の周囲環境から追加情報を収集して、ユーザ、現在のユーザ対話、及び/又は現在のユーザ入力と関連付けられたコンテキストを確立するために、ポータブル多機能デバイス200の様々なセンサ、サブシステム、及び周辺機器を利用することができる。いくつかの実施例では、デジタルアシスタントクライアントモジュール229は、ユーザの意図の推測を支援するために、ユーザ入力と共にコンテキスト情報又はそのサブセットをDAサーバ106に提供することができる。いくつかの実施例では、デジタルアシスタントはまた、ユーザへの出力をどのように準備し、配信するかを判定するために、コンテキスト情報を使用することができる。コンテキスト情報は、コンテキストデータと称されてもよい。
いくつかの実施例では、ユーザ入力を伴うコンテキスト情報は、センサ情報、例えば、照明、周囲ノイズ、周囲温度、周囲環境の画像、又は映像などを含んでもよい。いくつかの実施例では、コンテキスト情報はまた、デバイスの物理状態、例えば、デバイスの向き、デバイスの位置、デバイスの温度、電力レベル、速度、加速度、動きパターン、セルラー信号強度などを含んでもよい。いくつかの実施例では、DAサーバ106のソフトウェア状態、例えば、稼働中の処理、インストールされたプログラム、過去及び現在のネットワーク活動、バックグラウンドサービス、エラーログ、リソース使用量など、並びにポータブル多機能デバイス200のソフトウェア状態に関係する情報は、DAサーバ106に、ユーザ入力と関連付けられたコンテキスト情報として提供されてもよい。
いくつかの実施例では、デジタルアシスタントクライアントモジュール229は、DAサーバ106からの要求に応じて、ポータブル多機能デバイス200に記憶された情報(例えば、ユーザデータ231)を選択的に提供することができる。いくつかの実施例では、デジタルアシスタントクライアントモジュール229はまた、DAサーバ106による要求があると、自然言語ダイアログ又は他のユーザインタフェースを介してユーザから追加入力を引き出すことができる。デジタルアシスタントクライアントモジュール229は、ユーザ要求において表されるユーザの意図の意図推論及び/又は履行においてDAサーバ106を支援するために、追加入力をDAサーバ106に渡すことができる。
デジタルアシスタントの更なる詳細な説明は、図7A〜Cを参照して以下で説明される。デジタルアシスタントクライアントモジュール229は、以下で説明されるデジタルアシスタント726のいずれかの数のサブモジュールを含むことができることを認識されるべきである。
アプリケーション236は、以下のモジュール(又は、命令セット)、又はそれらのサブセット若しくはスーパーセットを含んでもよい。
●連絡先モジュール237(アドレス帳又は連絡先リストと呼ばれる場合がある)、
●電話モジュール238、
●ビデオ会議モジュール239、
●電子メールクライアントモジュール240、
●インスタントメッセージング(IM)モジュール241、
●トレーニングサポートモジュール242、
●静止画像及び/又はビデオ画像用のカメラモジュール243、
●画像管理モジュール244、
●ビデオプレーヤモジュール、
●音楽プレーヤモジュール、
●ブラウザモジュール247、
●カレンダモジュール248、
●天気ウィジェット249−1、株式ウィジェット249−2、計算機ウィジェット249−3、アラーム時計ウィジェット249−4、辞書ウィジェット249−5、及びユーザによって取得された他のウィジェット、並びにユーザ作成ウィジェット249−6のうちの1つ以上を含むことができる、ウィジェットモジュール249、
●ユーザ作成ウィジェット249−6を作成するためのウィジェットクリエータモジュール250、
●検索モジュール251、
●ビデオプレーヤモジュール及び音楽プレーヤモジュールを統合した、ビデオ及び音楽プレーヤモジュール252、
●メモモジュール253、
●マップモジュール254、並びに/又は
●オンラインビデオモジュール255。
メモリ202に記憶することができる他のアプリケーション236の例は、他のワードプロセッシングアプリケーション、他の画像編集アプリケーション、描画アプリケーション、プレゼンテーションアプリケーション、JAVA対応アプリケーション、暗号化、デジタル著作権管理、音声認識、及び音声複製を含む。
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、及びテキスト入力モジュール234と連携して、連絡先モジュール237は、アドレス帳に名前(単数又は複数)を追加すること、アドレス帳から名前(単数又は複数)を削除すること、電話番号(単数又は複数)、電子メールアドレス(単数又は複数)、住所(単数又は複数)、又は他の情報を名前と関連付けること、画像を名前と関連付けること、名前を分類及び並べ替えること、電話番号又は電子メールアドレスを提供して、電話238、ビデオ会議モジュール239、電子メール240、若しくはIM241による通信を開始する及び/又は容易にすることなどを含む、(例えば、メモリ202又はメモリ470における連絡先モジュール237のアプリケーション内部状態292に記憶される)アドレス帳又は連絡先リストを管理するために使用されてもよい。
RF回路208、音声回路210、スピーカ211、マイクロフォン213、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、及びテキスト入力モジュール234と連携して、電話モジュール238は、電話番号に対応する一連の文字を入力し、連絡先モジュール237における1つ以上の電話番号にアクセスし、入力された電話番号を修正し、それぞれの電話番号をダイヤルし、会話を行い、会話が完了したときに接続を切り、又は電話を切るために使用されてもよい。上述したように、無線通信は、複数の通信規格、プロトコル、及び信技術のうちのいずれかを使用してもよい。
RF回路208、音声回路210、スピーカ211、マイクロフォン213、タッチスクリーン212、ディスプレイコントローラ256、光センサ264、光センサコントローラ258、接触/動きモジュール230、グラフィックモジュール232、テキスト入力モジュール234、連絡先モジュール237、及び電話モジュール238と連携して、ビデオ会議モジュール239は、ユーザの命令に従って、ユーザと1人以上の他の参加者との間のビデオ会議を開始、遂行、及び終了する実行可能命令を含む。
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、及びテキスト入力モジュール234と連携して、電子メールクライアントモジュール240は、ユーザの指示に応じて、電子メールを作成、送信、受信、及び管理する実行可能命令を含む。画像管理モジュール244と連携して、電子メールクライアントモジュール240は、カメラモジュール243で撮影された静止画像又はビデオ画像を有する電子メールを作成及び送信することを非常に容易にする。
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、及びテキスト入力モジュール234と連携して、インスタントメッセージングモジュール241は、インスタントメッセージに対応する文字列を入力し、前に入力された文字を修正し、(例えば、電話ベースのインスタントメッセージのためのショートメッセージサービス(SMS)若しくはマルチメディアメッセージサービス(MMS)プロトコルを使用して、又はインターネットベースのインスタントメッセージのためのXMPP、SIMPLE、若しくはIMPSを使用して)対応するインスタントメッセージを送信し、インスタントメッセージを受信し、受信されたインスタントメッセージを参照する実行可能命令を含む。いくつかの実施形態では、送信及び/又は受信されたインスタントメッセージは、MMS及び/又は拡張メッセージングサービス(Enhanced Messaging Service、EMS)でサポートされるような、グラフィック、写真、音声ファイル、ビデオファイル、及び/又は他の添付ファイルを含んでもよい。本明細書で使用するとき、「インスタントメッセージ」は、電話に基づくメッセージ(例えば、SMS又はMMSを使用して送信されるメッセージ)及びインターネットに基づくメッセージ(例えば、XMPP、SIMPLE、又はIMPSを使用して送信されるメッセージ)の双方を指す。
RF回路208、タッチ画面212、ディスプレイコントローラ256、接触/動作モジュール230、グラフィックモジュール232、テキスト入力モジュール234、GPSモジュール235、マップモジュール254、及び音楽プレーヤモジュールと連携して、トレーニングサポートモジュール242は、(例えば、時間、距離、及び/又はカロリー消費目標を有する)トレーニングを生成し、トレーニングセンサ(スポーツデバイス)と通信し、トレーニングセンサデータを受信し、トレーニングをモニタするために使用されるセンサを較正し、トレーニングのための音楽を選択及び再生し、トレーニングデータを表示、記憶、及び送信する実行可能命令を含む。
タッチスクリーン212、ディスプレイコントローラ256、光センサ(単数又は複数)264、光センサコントローラ258、接触/動きモジュール230、グラフィックモジュール232、及び画像管理モジュール244と連携して、カメラモジュール243は、静止画像又は(ビデオストリームを含む)ビデオをキャプチャし、メモリ202にそれらを記憶し、静止画像又はビデオの特性を変更し、又はメモリ202から静止画像若しくはビデオを削除する実行可能命令を含む。
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、テキスト入力モジュール234、及びカメラモジュール243と連携して、画像管理モジュール244は、静止画像及び/又はビデオ画像を配置し、修正し(例えば、編集)、又は別の方法で操作し、ラベルを付け、削除し、(例えば、デジタルスライドショー又はアルバムにおいて)提示し、記憶する実行可能命令を含む。
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、及びテキスト入力モジュール234と連携して、ブラウザモジュール247は、ウェブページ又はそれらの一部、並びにウェブページにリンクされた添付フィイル及び他のファイルを検索し、リンク付け、受信し、表示することを含む、ユーザの命令に従ってインターネットをブラウズする実行可能命令を含む。
Rf回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、テキスト入力モジュール234、電子メールクライアントモジュール240、及びブラウザモジュール247と連携して、カレンダモジュール248は、ユーザの指示に従って、カレンダ及びカレンダと関連付けられたデータ(例えば、カレンダ項目、to doリストなど)を作成、表示、変更、及び記憶する実行可能命令を含む。
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、テキスト入力モジュール234、及びブラウザモジュール247と連携して、ウィジェットモジュール249は、ユーザによってダウンロード及び使用することができるミニアプリケーション(例えば、天気ウィジェット249−1、株式ウィジェット249−2、計算機ウィジェット249−3、アラーム時計ウィジェット249−4、及び辞書ウィジェット249−5)、又はユーザによって作成するできるミニアプリケーション(例えば、ユーザ作成ウィジェット249−6)である。いくつかの実施形態では、ウィジェットは、HTML(Hypertext Markup Language)(ハイパーテキストマークアップ言語)ファイル、CSS(Cascading Style Sheets)(カスケーディングスタイルシート)ファイル、及びJavaScript(登録商標)ファイルを含む。いくつかの実施形態では、ウィジェットは、XML(拡張可能マークアップ言語)ファイル及びJavaScriptファイル(例えば、Yahoo!ウィジェット)を含む。
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、テキスト入力モジュール234、及びブラウザモジュール247と連携して、ウィジェットクリエータモジュール250は、ウィジェットを作成する(例えば、ウェブページのユーザ指定箇所をウィジェットに変える)ために、ユーザによって使用されてもよい。
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、及びテキスト入力モジュール234と連携して、検索モジュール251は、ユーザの命令に従って、1つ以上の検索基準(例えば、1つ以上のユーザによって指定された検索用語)と一致する、メモリ202内のテキスト、音楽、音、画像、ビデオ、及び/又は他のファイルを検索する実行可能命令を含む。
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、オーディオ回路210、スピーカ211、RF回路208、及びブラウザモジュール247と連携して、ビデオ及びミュージックプレーヤモジュール252は、MP3又はAACファイルなどの1つ以上のファイル形式で記憶された録音済みの音楽又は他のサウンドファイルをユーザがダウンロード及び再生できることを可能にする実行可能命令、並びにビデオを(タッチスクリーン212上、又は外部ポート224を介して接続された外部のディスプレイ上で)表示、提示、又は別の方法で、再生する実行可能命令を含む。いくつかの実施形態では、デバイス200は、任意選択的に、iPod(Apple Inc.の商標)などのMP3プレーヤの機能を含む。
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、及びテキスト入力モジュール234と連携して、メモモジュール253は、ユーザの命令に従って、メモ及びto doリストなどを作成及び管理する実行可能命令を含む。
RF回路208、タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、テキスト入力モジュール234、GPSモジュール235、及びブラウザモジュール247と連携して、マップモジュール254は、ユーザの命令に従って、マップ及びマップに関連付けられたデータ(例えば、運転方向、特定の場所若しくはその付近の店舗及び他の関心対象地点についてのデータ、並びに他の位置に基づく他のデータ)を受信、表示、修正、及び記憶するために使用されてもよい。
タッチスクリーン212、ディスプレイコントローラ256、接触/動きモジュール230、グラフィックモジュール232、オーディオ回路210、スピーカ211、RF回路208、テキスト入力モジュール234、電子メールクライアントモジュール240、及びブラウザモジュール247と連携して、オンラインビデオモジュール255は、ユーザがH.264などの1つ以上のファイル形式にあるオンラインビデオにアクセスし、閲覧し、(例えば、ストリーミング及び/又はダウンロードにより)受信し、(例えば、タッチスクリーン上で、又は外部ポート224を介して接続された外部のディスプレイ上で)再生し、特定のオンラインビデオへのリンクを有する電子メールを送信し、別の方法で管理することを可能にする命令を含む。いくつかの実施形態では、特定のオンラインビデオへのリンクを送信するために、電子メールクライアントモジュール240ではなく、インスタントメッセージングモジュール241が使用される。その内容が、その全体が参照により本明細書に組み込まれる、オンラインビデオアプリケーションの追加の説明は、2007年6月20日に出願された米国特許仮出願第60/936,562号、「Portable Multifunction Device,Method,and Graphical User Interface for Playing Online Videos」、及び2007年12月31日に出願された米国特許出願第11/968,067号、「Portable Multifunction Device,Method,and Graphical User Interface for Playing Online Videos」に見出すことができる。
上記特定されたモジュール及びアプリケーションの各々は、上記説明された1つ以上の機能、並びに本出願で説明される方法(例えば、コンピュータにより実装される方法、及び本明細書で説明される他の情報処理方法)を実行する実行可能な命令セットに対応する。これらのモジュール(例えば、命令のセット)は、別個のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、よって、様々な実施形態では、これらのモジュールの様々なサブセットが組み合わされてもよく、又は別の方法で、再編成されてもよい。例えば、ビデオプレーヤモジュールは、ミュージックプレーヤモジュールと組み合わされて、単一のモジュール(例えば、図2Aのビデオ及びミュージックプレーヤモジュール252)となってもよい。いくつかの実施形態において、メモリ202は、上記特定されたモジュール及びデータ構造のサブセットを記憶してもよい。更に、メモリ202は、上記説明されていない追加のモジュール及びデータ構造を記憶してもよい。
いくつかの実施形態では、デバイス200は、デバイス上の機能の予め定義されたセットの動作がタッチスクリーン及び/又はタッチパッドを通じて排他的に実行されるデバイスである。デバイス200の動作についての主要な入力制御デバイスとしてタッチスクリーン及び/又はタッチパッドを使用することによって、デバイス200上の(プッシュボタン、ダイヤルなどの)物理入力制御デバイスの数を削減することができる。
タッチスクリーン及び/又はタッチパッドを介して排他的に実行される予め定義された機能のセットは、任意選択的に、ユーザインタフェースの間のナビゲーションを含む。いくつかの実施形態では、タッチパッドは、ユーザによってタッチされるとき、デバイス200上で表示されるいずれかのユーザインタフェースから、メインメニュー、ホームメニュー、又はルートメニューにデバイス200をナビゲートする。そのような実施形態では、「メニューボタン」は、タッチパッドを使用して実装される。いくつかの他の実施形態では、メニューボタンは、タッチパッドの代わりに、物理プッシュボタン又は他の物理入力制御デバイスである。
図2Bは、いくつかの実施形態に従った、イベント処理のための例示的な構成要素を示すブロック図である。いくつかの実施形態では、メモリ202(図2A)又はメモリ470(図4)は、イベントソート部270(例えば、オペレーティングシステム226における)及びそれぞれのアプリケーション236−1(例えば、上述したアプリケーション237〜アプリケーション251、アプリケーション255、アプリケーション480〜アプリケーション490のうちのいずれか)を含む。
イベントソート部270は、イベント情報を受信し、イベント情報が配信されるアプリケーション236−1及びアプリケーション236−1のアプリケーションビュー291を判定する。イベントソート部270は、イベントモニタ271及びイベントディスパッチャモジュール274を含む。いくつかの実施形態では、アプリケーション236−1は、アプリケーションがアクティブであり、又は実行しているとき、タッチ感知ディスプレイ212上で表示される現在のアプリケーションビュー(単数又は複数)を示す、アプリケーション内部状態292を含む。いくつかの実施形態では、デバイス/グローバル内部状態257は、どのアプリケーション(単数又は複数)が現在アクティブであるかを判定するためにイベントソート部270によって使用され、アプリケーション内部状態292は、イベント情報が配信されるアプリケーションビュー291を判定するためにイベントソート部270によって使用される。
いくつかの実施形態では、アプリケーション内部状態292は、アプリケーション236−1が実行を再開するときに使用される再開情報、アプリケーション236−1によって情報が表示されているか又は表示の準備ができていることを示すユーザインタフェース状態情報、ユーザがアプリケーション236−1の前の状態又はビューに戻ることを可能にするための状態待ち行列、及びユーザが以前に行ったアクションのリドゥ/アンドゥ待ち行列のうちの1つ以上などの追加情報を含む。
イベントモニタ271は、周辺機器インタフェース218からイベント情報を受信する。イベント情報は、サブイベント(例えば、マルチタッチジェスチャの一部としての、タッチ感知ディスプレイ212上のユーザのタッチ)に関する情報を含む。周辺機器インタフェース218は、I/Oサブシステム206、又は近接センサ266、加速度計(単数又は複数)268、及び/若しくは(音声回路210を介する)マイクロフォン213などのセンサから受信する情報を送信する。周辺機器インタフェース218がI/Oサブシステム206から受信する情報は、タッチ感知ディスプレイ212又はタッチ感知面からの情報を含む。
いくつかの実施形態では、イベントモニタ271は、予め定められた間隔で周辺機器インタフェース218に要求を送信する。これに応じて、周辺機器インタフェース218はイベント情報を送信する。他の実施形態では、周辺機器インタフェース218は、重要なイベント(例えば、予め定められたノイズ閾値を上回り、及び/又は予め定められた持続時間を超えて入力を受信すること)が存在するときのみ、イベント情報を送信する。
いくつかの実施形態では、イベントソート部270はまた、ヒットビュー判定モジュール272及び/又はアクティブイベント認識部判定モジュール273を含む。
ヒットビュー判定モジュール272は、タッチ感知ディスプレイ212が1つより多いビューを表示するときに、サブイベントが1つ以上のビュー内のいずれの場所で発生したかを判定するためのソフトウェア手順を提供する。ビューは、制御部及びユーザがディスプレイ上で見ることが可能な他の要素で構成されている。
アプリケーションと関連付けられたユーザインタフェースの別の態様は、それらにおいて情報が表示され、タッチに基づくジェスチャが生じる、本明細書でアプリケーションビュー又はユーザインタフェースウィンドウと呼ばれる場合があるビューのセットである。タッチが検出される(それぞれのアプリケーションの)アプリケーションビューは、アプリケーションのプログラム階層又はビュー階層内のプログラムレベルに対応してもよい。例えば、タッチが検出される最下位レベルのビューをヒットビューと呼ばれてもよく、適切な入力として認識されるイベントのセットは、少なくとも部分的に、タッチに基づくジェスチャを開始する最初のタッチのヒットビューに基づいて判定されてもよい。
ヒットビュー判定モジュール272は、タッチに基づくジェスチャのサブイベントと関連する情報を受信する。アプリケーションが階層において編成された複数のビューを有するとき、ヒットビュー判定モジュール272は、そのサブイベントを処理すべき階層内の最下位のビューとしてヒットビューを特定する。ほとんどの状況では、ヒットビューは、最初のサブイベント(例えば、イベント又は潜在的なイベントを形成する一連のサブイベントにおける最初のサブイベント)が発生する最下位レベルのビューである。ヒットビューがヒットビュー判定モジュール272によって特定されると、ヒットビューは、典型的には、それがヒットビューとして特定された、同一のタッチ又は入力ソースに関連する全てのサブイベントを受信する。
アクティブイベント認識部判定モジュール273は、ビュー階層内のどのビューが特定の一連のサブイベントを受信すべきかを判定する。いくつかの実施形態では、アクティブイベント認識部判定モジュール273は、ヒットビューのみが特定の一連のサブイベントを受信すべきであると判定する。他の実施形態では、アクティブイベント認識部判定モジュール273は、サブイベントの物理位置を含む全てのビューがアクティブに関わっているビューであると判定し、したがって、全てのアクティブに関わっているビューは、特定の一連のサブイベントを受信すべきであると判定する。他の実施形態では、タッチサブイベントが1つの特定のビューと関連付けられた領域に完全に限定された場合でさえ、階層における上位のビューは、依然としてアクティブに関わっているビューのままでいる。
イベントディスパッチャモジュール274は、イベント情報をイベント認識部(例えば、イベント認識部280)に送出する。アクティブイベント認識部判定モジュール273を含む実施形態では、イベントディスパッチャモジュール274は、アクティブイベント認識部判定モジュール273により判定されたイベント認識部にイベント情報を配信する。いくつかの実施形態では、イベントディスパッチャモジュール274は、それぞれのイベント受信部282により取り出されるイベント情報をイベント待ち行列に記憶する。
いくつかの実施形態では、オペレーティングシステム226は、イベントソート部270を含む。代わりに、アプリケーション236−1は、イベントソート部270を含む。更なる他の実施形態では、イベントソート部270は、スタンドアロンモジュール、又は接触/動きモジュール230などのメモリ202に記憶された別のモジュールの一部である。
いくつかの実施形態では、アプリケーション236−1は、各々がアプリケーションのユーザインタフェースのそれぞれのビュー内で発生するタッチイベントを処理する命令を含む、複数のイベント処理部290及び1つ以上のアプリケーションビュー291を含む。アプリケーション236−1の各々のアプリケーションビュー291は、1つ以上のイベント認識部280を含む。典型的には、それぞれのアプリケーションビュー291は、複数のイベント認識部280を含む。他の実施形態では、イベント認識部280のうちの1つ以上は、ユーザインタフェースキット(図示せず)、又はアプリケーション236−1がメソッド及び他の性質をそれから継承する上位レベルのオブジェクトなどの、別々のモジュールの一部である。いくつかの実施形態では、それぞれのイベント処理部290は、データ更新部276、オブジェクト更新部277、GUI更新部278、及び/又はイベントソート部270から受信されたイベントデータ279のうちの1つ以上を含む。イベント処理部290は、アプリケーション内部状態292を更新するために、データ更新部276、オブジェクト更新部277、若しくはGUI更新部278を利用し、又は呼び出すことができる。代わりに、アプリケーションビュー291のうちの1つ以上は、1つ以上のそれぞれのイベント処理部290を含む。また、いくつかの実施形態では、データ更新部276、オブジェクト更新部277、及びGUI更新部278のうちの1つ以上は、それぞれのアプリケーションビュー291に含まれる。
それぞれのイベント認識部280は、イベントソート部270からイベント情報(例えば、イベントデータ279)を受信し、イベント情報からイベントを特定する。イベント認識部280は、イベント受信部282及びイベント比較部284を含む。いくつかの実施形態では、イベント認識部280はまた、メタデータ283及びイベント配信命令288(サブイベント配信命令を含んでもよい)の少なくともサブセットを含む。
イベント受信部282は、イベントソート部270からイベント情報を受信する。イベント情報は、サブイベント、例えば、タッチ又はタッチの動きに関する情報を含む。サブイベントに応じて、イベント情報はまた、サブイベントの位置などの追加の情報を含む。サブイベントがタッチの動きに関係する場合、イベント情報はまた、そのサブイベントの速さ及び方向を含んでもよい。いくつかの実施形態では、イベントは、1つの方向から別の方向への(例えば、縦向きから横向きへの、又はその逆の)デバイスの回転を含み、イベント情報は、デバイスの現在の向き(デバイスの姿勢とも呼ばれる)に関する対応する情報を含む。
イベント比較部284は、イベント情報を予め定義されたイベント若しくはサブイベントの定義と比較し、比較に基づいて、イベント若しくはサブイベントを判定し、又はイベント若しくはサブイベントの状態を判定若しくは更新する。いくつかの実施形態では、イベント比較部284は、イベント定義286を含む。イベント定義286は、例えば、イベント1(287−1)及びイベント2(287−2)などのイベントの定義(例えば、予め定義された一連のサブイベント)を含む。いくつかの実施形態では、イベント(287)におけるサブイベントは、例えば、タッチの開始、タッチの終了、タッチの移動、タッチの中止、及び複数のタッチを含む。1つの実施例では、イベント1(287−1)についての定義は、表示されたオブジェクト上のダブルタップである。ダブルタップは、例えば、予め定められた段階の間の表示されたオブジェクト上の第1のタッチ(タッチの開始)、予め定められた段階の間の第1のリフトオフ(タッチの終了)、予め定められた段階の間の表示されたオブジェクト上の第2のタッチ(タッチの開始)、及び予め定められた段階の間の第2のリフトオフ(タッチの終了)を含む。別の実施例では、イベント2(287−2)についての定義は、表示されたオブジェクト上のドラッグ操作である。このドラッグ操作は、例えば、予め定められた段階の間の表示オブジェクト上のタッチ(又は、接触)、タッチ感知ディスプレイ212を横断するタッチの移動、及びタッチのリフトオフ(タッチの終了)を含む。いくつかの実施形態では、イベントはまた、1つ以上の関連付けられたイベント処理部290についての情報を含む。
いくつかの実施形態では、イベント定義287は、それぞれのユーザインタフェースオブジェクトについてのイベントの定義を含む。いくつかの実施形態では、イベント比較部284は、どのユーザインタフェースオブジェクトがサブイベントと関連付けられるかを判定するためのヒットテストを実行する。例えば、3つのユーザインタフェースオブジェクトがタッチ感知ディスプレイ212上で表示されるアプリケーションビューにおいて、タッチ感知ディスプレイ212上でタッチが検出されるとき、イベント比較部284は、3つのユーザインタフェースオブジェクトのうちのどれがタッチ(サブイベント)と関連付けられているかを判定するためのヒットテストを実行する。表示された各々のオブジェクトがそれぞれのイベント処理部290と関連付けられる場合、イベント比較部は、どのイベント処理部290をアクティブ化すべきかを判定するためにヒットテストの結果を使用する。例えば、イベント比較部284は、サブイベント及びヒットテストのトリガとなるオブジェクトと関連付けられたイベント処理部を選択する。
いくつかの実施形態では、それぞれのイベント(287)についての定義はまた、一連のサブイベントがイベント認識部のイベントタイプに対応するかが判定されるまでイベント情報の配信を遅延させる遅延アクションを含む。
それぞれのイベント認識部280が、一連のサブイベントがイベント定義286におけるイベントのいずれとも一致しないと判定するとき、それぞれのイベント認識部280は、イベント不可能、イベント失敗、又はイベント終了状態に入り、その後は、タッチに基づくジェスチャの後続のサブイベントを無視する。この状況では、ヒットビューに対してアクティブのままである他のイベント認識部がある場合、そのイベント認識部は、進行中のタッチに基づくジェスチャのサブイベントを追跡及び処理をすることを続ける。
いくつかの実施形態では、それぞれのイベント認識部280は、イベント配信システムがどのようにサブイベント配信を実行すべきかをアクティブに関与しているイベント認識部に示す構成可能なプロパティ、フラグ、及び/又はリストを有するメタデータ283を含む。いくつかの実施形態では、メタデータ283は、構成変更可能なプロパティ、フラグ、及び/又はイベント認識部が互いにどのように対話することができ、若しくは対話が可能になるかについて示すリストを含む。いくつかの実施形態では、メタデータ283は、構成変更可能なプロパティ、フラグ、及び/又はサブイベントがビュー階層又はプログラム階層における様々なレベルに配信されるか否かを示すリストを含む。
いくつかの実施形態では、それぞれのイベント認識部280は、イベントの1つ以上の特定のサブイベントが認識されるとき、イベントと関連付けられたイベント処理部290をアクティブ化する。いくつかの実施形態では、それぞれのイベント認識部280は、イベントと関連付けられたイベント情報をイベント処理部290に配信する。イベント処理部290をアクティブ化することは、それぞれのヒットビューにサブイベントを送信(及び送信を延期する)することとは異なる。いくつかの実施形態では、イベント認識部280は、認識されたイベントと関連付けられたフラグをスローし、フラグと関連付けられたイベント処理部290は、フラグをキャッチし、予め定義された処理を実行する。
いくつかの実施形態では、イベント配信命令288は、イベント処理部をアクティブ化することなくサブイベントに関するイベント情報を配信するサブイベント配信命令を含む。代わりに、サブイベント配信命令は、一連のサブイベントと関連付けられたイベント処理部又はアクティブに関わっているビューにイベント情報を配信する。一連のサブイベント又はアクティブに関わっているビューと関連付けられたイベント処理部は、イベント情報を受信し、予め定められた処理を実行する。
いくつかの実施形態では、データ更新部276は、アプリケーション236−1で使用されるデータを作成及び更新する。例えば、データ更新部276は、連絡先モジュール237で使用される電話番号を更新し、又はビデオプレーヤモジュールで使用されるビデオファイルを記憶する。いくつかの実施形態では、オブジェクト更新部277は、アプリケーション236−1で使用されるオブジェクトを作成及び更新する。例えば、オブジェクト更新部277は、新たなユーザインタフェースオブジェクトを作成し、又はユーザインタフェースオブジェクトの位置を更新する。GUI更新部278は、GUIを更新する。例えば、GUI更新部278は、表示情報を作成し、タッチ感知ディスプレイ上で表示するためにそれをグラフィックモジュール232に送信する。
いくつかの実施形態では、イベント処理部(単数又は複数)290は、データ更新部276、オブジェクト更新部277、及びGUI更新部278を含み、又はそれらへのアクセスを有する。いくつかの実施形態では、データ更新部276、オブジェクト更新部277、及びGUI更新部278は、それぞれのアプリケーション236−1又はアプリケーションビュー291の単一モジュールに含まれる。他の実施形態では、それらは、2つ以上のソフトウェアモジュールに含まれる。
タッチ感知ディスプレイ上のユーザのタッチのイベント処理に関する前述の議論はまた、入力デバイスを有する多機能デバイス200を動作させるための他の形式のユーザ入力にも適用されるが、その全てがタッチスクリーン上で開始されるわけではないことが理解されよう。例えば、単一若しくは複数のキーボードの押圧若しくは保持に任意選択的に適合されたマウスの移動及びマウスボタンの押圧、タッチパッド上でのタップ、ドラッグ、スクロールなどの接触移動、ペンスタイラス入力、デバイスの移動、口頭による指示検出された眼球運動、バイオメトリック入力、並びに/又はそれらのいずれかの組合せは、任意選択的に、認識されることになるイベントを定義するサブイベントに対応する入力として利用される。
図3は、いくつかの実施形態に従った、タッチスクリーン212を有するポータブル多機能デバイス200を示す。タッチスクリーンは、任意選択的に、ユーザインタフェース(user interface)(UI)300内で1つ以上のグラフィックを表示する。本実施形態、及び以下で説明される実施形態では、ユーザは、例えば、1本以上の指302(図には、正確な縮尺率では描かれていない)又は1つ以上のスタイラス303(図には、正確な縮尺率では描かれていない)を使用してグラフィック上でジェスチャを行うことによって、グラフィックのうちの1つ以上を選択することが可能になる。いくつかの実施形態では、ユーザが1つ以上のグラフィックとの接触を中断するときに1つ以上のグラフィックの選択が生じる。いくつかの実施形態では、ジェスチャは、任意選択的に、1回以上のタップ、1回以上のスワイプ(左から右へ、右から左へ、上方向へ、及び/又は下方向へ)、及び/又はデバイス200と接触した指のローリング(右から左へ、左から右へ、上方向へ、及び/又は下方向へ)を含む。いくつかの実装形態又は状況では、グラフィックとの不測の接触は、グラフィックを選択しない。例えば、選択に対応するジェスチャがタップであるとき、アプリケーションアイコンの上をスイープするスワイプジェスチャは、任意選択的に、対応するアプリケーションを選択しない。
デバイス200はまた、「ホーム」又はメニューボタン304などの、1つ以上の物理ボタンを含んでもよい。前に説明されたように、メニューボタン304は、デバイス200上で実行することができるアプリケーションセットにおけるいずれかのアプリケーション236にナビゲートするために使用されてもよい。代わりに、いくつかの実施形態では、メニューボタンは、タッチスクリーン212上で表示されたGUIにおけるソフトキーとして実装される。
1つの実施形態では、デバイス200は、タッチスクリーン212、メニューボタン304、デバイスの電源をオン/オフし、デバイスをロックするためのプッシュボタン306、音量調節ボタン(単数又は複数)308、加入者識別モジュール(SIM)カードスロット310、ヘッドセットジャック312、及びドッキング/充電用外部ポート224を含む。プッシュボタン306は、任意選択的に、ボタンを押し下げ、予め定義された時間間隔の間にボタンを押し下げた状態で保持することによってデバイス上の電力をターンオン/オフし、ボタンを押し下げ予め定義された時間間隔が経過する前にボタンを解放することによってデバイスをロックし、及び/又はデバイスのロックを解除し、若しくはロック解除処理を開始するために使用される。代替的な実施形態では、デバイス200はまた、マイクロフォン213を通じて、いくつかの機能をアクティブ化又は非アクティブ化するための口頭入力を受け付ける。デバイス200はまた、任意選択的に、タッチスクリーン212上の接触の強度を検出するための1つ以上の接触強度センサ265、及び/又はデバイス200のユーザに対する触知出力を生成するための1つ以上の触知出力生成器267を含む。
図4は、いくつかの実施形態に従った、ディスプレイ及びタッチ感知面を有する例示的な多機能デバイスのブロック図である。デバイス400は、ポータブル型である必要はない。いくつかの実施形態では、デバイス400は、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、マルチメディアプレイヤデバイス、ナビゲーションデバイス、教育的デバイス(子供の学習玩具など)、ゲームシステム、又は制御デバイス(例えば、家庭用又は業務用コントローラ)である。デバイス400は、典型的には、1つ以上の処理ユニット(CPU)410、1つ以上のネットワーク若しくは他の通信インタフェース460、メモリ470、及びこれらの構成要素を相互接続するための1つ以上の通信バス420を含む。通信バス420は、任意選択的に、システム構成要素の間の通信を相互接続及び制御する回路(チップセットと呼ばれることがある)を含む。デバイス400は、典型的にはタッチスクリーンディスプレイであるディスプレイ440を含む入出力(I/O)インタフェース430を含む。I/Oインタフェース430はまた、任意選択的に、キーボード及び/又はマウス(又は他のポインティングデバイス)450、並びにタッチパッド455、デバイス400上で触知出力を生成するための(例えば、図2Aを参照して上記説明された触知出力生成器267(単数又は複数)と同様の)触知出力生成器457、センサ459(例えば、光センサ、加速度センサ、近接センサ、タッチ感知センサ、及び/又は図2Aを参照して上記説明された接触強度センサ(単数又は複数)265と同様の接触強度センサ)を含む。メモリ470は、DRAM、SRAM、DDR RAM、又は他のランダムアクセスソリッドステートメモリデバイスなどの高速ランダムアクセスメモリを含み、任意選択的に、1つ以上の磁気ディスク記憶デバイス、光ディスク記憶デバイス、フラッシュメモリデバイス、又は他の不揮発性半導体記憶デバイスなどの不揮発性メモリを含む。メモリ470は、任意選択的に、CPU(単数又は複数)410からリモートに位置する1つ以上の記憶デバイスを含む。いくつかの実施形態では、メモリ470は、ポータブル多機能デバイス200(図2A)のメモリ202に記憶されたプログラム、モジュール、及びデータ構造、又はそれらのサブセットに類似する、プログラム、モジュール、及びデータ構造を記憶する。更に、メモリ470は、任意選択的に、ポータブル多機能デバイス200のメモリ202に存在しない追加のプログラム、モジュール、及びデータ構造を記憶する。例えば、デバイス400のメモリ470は、任意選択的に、描画モジュール480、プレゼンテーションモジュール482、ワードプロセッシングモジュール484、ウェブサイト作成モジュール486、ディスクオーサリングモジュール488、及び/又はスプレッドシートモジュール490を記憶するが、ポータブル多機能デバイス200(図2A)のメモリ202は、任意選択的に、これらのモジュールを記憶しない。
図4で上記特定された要素の各々は、前述のメモリデバイスの1つ以上に記憶されてもよい。上記特定されたモジュールの各々は、上記説明された機能を実行する命令セットに対応する。上記特定されたモジュール又はプログラム(例えば、命令セット)は、別個のソフトウェアプログラム、手順、又はモジュールとして実装される必要はなく、よって、様々な実施形態では、これらのモジュールの様々なサブセットが組み合わされてもよく、又は別の方法で、再編成されてもよい。いくつかの実施形態では、メモリ470は、上記特定されたモジュール及びデータ構造のサブセットを記憶してもよい。更に、メモリ470は、上記説明されていない追加のモジュール及びデータ構造を記憶してもよい。
ここで、例えば、ポータブル多機能デバイス200上で実装することができるユーザインタフェースの実施形態に注意を向ける。
図5Aは、いくつかの実施形態に従った、ポータブル多機能デバイス200上のアプリケーションのメニューについての例示的なユーザインタフェースを示す。同様のユーザインタフェースは、デバイス400上で実装されてもよい。いくつかの実施形態では、ユーザインタフェース500は、以下の要素、又はそれらのサブセット若しくはスーパーセットを含む。
●セルラー信号及びWi−Fi信号などの無線通信(単数又は複数)のための信号強度インジケータ(単数又は複数)502、
●時刻504、
●Bluetoothインジケータ505、
●バッテリ状態インジケータ506、
●下記などの、頻繁に利用されるアプリケーション用のアイコンを含むトレー508、
○不在着信又はボイスメールメッセージの数のインジケータ514を任意選択的に含む、「電話」とラベル付けされた、電話モジュール238用のアイコン516、
○未読電子メールの数のインジケータ510を任意選択的に含む、「メール」とラベル付けされた、電子メールクライアントモジュール240用のアイコン518、
○「ブラウザ」とラベル付けされた、ブラウザモジュール247用のアイコン520、及び
○「iPod」とラベル付けされた、iPod(Apple Inc.の商標)モジュール252とも称されるビデオ及び音楽プレーヤモジュール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。
図5Aに示されたアイコンのラベルは、単なる例示であることに留意されたい。例えば、ビデオ及び音楽プレーヤモジュール252用のアイコン522は、任意選択的に、「音楽」又は「音楽プレーヤ」とラベル付けされてもよい。他のラベルは、任意選択的に、様々なアプリケーションアイコンのために使用される。いくつかの実施形態では、それぞれのアプリケーションアイコンについてのラベルは、それぞれのアプリケーションアイコンに対応するアプリケーションの名前を含む。いくつかの実施形態では、特定のアプリケーションアイコンのラベルは、特定のアプリケーションアイコンに対応するアプリケーションの名前とは異なる。
図5Bは、ディスプレイ550(例えば、タッチスクリーンディスプレイ212)とは別個のタッチ感知面551(例えば、図4のタブレット又はタッチパッド455)を有するデバイス(例えば、図4のデバイス400)上の例示的なユーザインタフェースを示す。デバイス400はまた、任意選択的に、タッチ感知面551上の接触の強度を検出するための1つ以上の接触強度センサ(例えば、センサ457のうちの1つ以上)、及び/又はデバイス400のユーザに対する触知出力を生成するための1つ以上の触知出力生成器459を含む。
以下の実施例のうちのいくつかはタッチスクリーンディスプレイ212上の入力(タッチ感知面とディスプレイとが組み合わされている場合)を参照して説明されるが、いくつかの実施形態では、デバイスは、図5Bに示されるように、ディスプレイとは別個のタッチ感知面上の入力を検出する。いくつかの実施形態では、このタッチ感知面(例えば、図5Bの551)は、ディスプレイ(例えば、550)上の主軸(例えば、図5Bの553)に対応する主軸(例えば、図5Bの552)を有する。これらの実施形態に従って、デバイスは、ディスプレイ上のそれぞれの位置に対応する位置(例えば、図5Bでは、560は568に対応し、562は570に対応する)においてタッチ感知面551との接触(例えば、図5Bの560及び562)を検出する。このように、タッチ感知面がディスプレイとは別個であるとき、タッチ感知面(例えば、図5Bの551)上でデバイスによって検出されたユーザ入力(例えば、接触560及び接触562、並びにそれらの移動)は、多機能デバイスのディスプレイ(例えば、図5Bでの550)上のユーザインタフェースを操作するためにデバイスによって使用される。同様の方法は、任意選択的に、本明細書で説明される他のユーザインタフェースに使用されることを理解されたい。
加えて、以下の実施例は主に指入力(例えば、指の接触、指のタップジェスチャ、指のスワイプジェスチャ)を参照して説明されるが、いくつかの実施形態では、それらの指入力のうちの1つ以上は、別の入力デバイスからの入力(例えば、マウスに基づく入力、又はスタイラス入力)で置き換えられることを理解されたい。例えば、スワイプジェスチャは、任意選択的に、マウスクリックと置き換えられ(例えば、接触の代わりに)、それに続いて、スワイプの経路に沿ってカーソルの移動が行われる(例えば、接触の移動の代わりに)。別の例として、タップジェスチャは、任意選択的に、カーソルがタップジェスチャの位置の上に位置する間のマウスクリックと置き換えられる(例えば、接触の検出と、それに続いて接触の検出を停止する代わりに)。同様に、複数のユーザ入力が同時に検出されるとき、複数のコンピュータマウスは、任意選択的に、同時に使用され、又はマウス及び指の接触が、任意選択的に、同時に使用されることを理解されたい。
図6Aは、例示的なパーソナル電子デバイス600を示す。デバイス600は、本体602を含む。いくつかの実施形態では、デバイス600は、デバイス200及びデバイス400(例えば、図2A〜図4B)に関して説明された特徴のいくつか又は全てを含むことができる。いくつかの実施形態では、デバイス600は、タッチ感知ディスプレイ画面604、以後、タッチスクリーン604を有する。タッチスクリーン604の代わりに、又はそれに加えて、デバイス600は、ディスプレイ及びタッチ感知面を有する。デバイス200及びデバイス400と同様に、いくつかの実施形態では、タッチスクリーン604(又はタッチ感知面)は、加えられている接触(例えば、タッチ)の強度を検出するための1つ以上の強度センサを有してもよい。タッチスクリーン604(又は、タッチ感知面)の1つ以上の強度センサは、タッチの強度を表す出力データを提供することができる。デバイス600のユーザインタフェースは、タッチの強度に基づいてタッチに応答することができ、これは、異なる強度のタッチは、デバイス600上で異なるユーザインタフェース動作を呼び出すことができることを意味する。
タッチ強度を検出及び処理するための技術は、例えば、関連出願である、各々が、その全体が参照により本明細書に組み込まれる、2013年5月8日に出願された「Device,Method,and Graphical User Interface for Displaying User Interface Objects Corresponding to an Application」と題された国際出願PCT/US2013/040061号、及び2013年11月11日に出願された「Device,Method,and Graphical User Interface for Transitioning Between Touch Input to Display Output Relationships」と題された同PCT/US2013/069483号に見出すことができる。
いくつかの実施形態では、デバイス600は、1つ以上の入力機構606及び入力機構608を有する。入力機構606及び入力機構608は、含まれる場合、物理的なものとすることができる。物理入力機構の例は、プッシュボタン及び回転可能機構を含む。いくつかの実施形態では、デバイス600は、1つ以上の取付機構を有する。そのような取付機構は、含まれる場合、例えば、デバイス600を、帽子、アイウェア、イヤリング、ネックレス、シャツ、ジャケット、ブレスレット、腕時計バンド、チェーン、ズボン、ベルト、靴、財布、バックパックなどに取り付けることを可能にする。これらの取付機構によって、ユーザはデバイス600を着用することができる。
図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、Bluetooth、近距離通信(「NFC」)、セルラー、及び/又は他の無線通信技術を使用して、アプリケーション及びオペレーティングシステムデータを受信するための通信ユニット630と接続されてもよい。デバイス600は、入力機構606及び/又は入力機構608を含むことができる。入力機構606は、例えば、回転可能入力デバイス、又は押し下げ可能かつ回転可能な入力デバイスであってもよい。入力機構608は、いくつかの実施例では、ボタンであってもよい。
入力機構608は、いくつかの実施例では、マイクロフォンであってもよい。パーソナル電子デバイス600は、GPSセンサ632、加速度計634、方向センサ640(例えば、コンパス)、ジャイロスコープ636、動きセンサ638、及び/又はこれらの組合せなどの様々なセンサを含むことができ、それらの全ては、I/O部614に動作可能に接続されてもよい。
パーソナル電子デバイス600のメモリ618は、コンピュータ実行可能命令を記憶するための非一時的コンピュータ可読記憶媒体とすることができ、それらの命令は、1つ以上のコンピュータプロセッサ616によって実行されるとき、例えば、コンピュータプロセッサに、処理1200(図12Aから12D)を含む、上記説明された技術を実行させることができる。コンピュータ実行可能命令はまた、コンピュータベースのシステム、プロセッサを含むシステム、又は命令実行システム、装置、若しくはデバイスから命令をフェッチし、命令を実行することができる他のシステムなど、命令実行システム、装置、又はデバイスによって、又はそれらと接続して使用されるいずれかの非一時的コンピュータ可読記憶媒体に記憶及び/又は伝送されてもよい。本文書の目的上、「非一時的コンピュータ可読記憶媒体」は、命令実行システム、装置、又はデバイスによって、又はそれらと接続して使用されるコンピュータ実行可能命令を有形的に収容又は記憶することができるいずれかの媒体とすることができる。非一時的コンピュータ可読記憶媒体は、磁気的、光学的、及び/又は半導体記憶装置を含んでもよいが、これらに限定されない。そのような記憶装置の例は、磁気ディスク、CD、DVD、又はBlu−ray技術に基づく光ディスクと共に、フラッシュ及びソリッドステートドライブなどの永続的ソリッドステートメモリを含む。パーソナル電子デバイス600は、図6Bの構成要素及び構成に限定されず、複数の構成における他の構成要素又は追加の構成要素を含むことができる。
本明細書で使用されるとき、用語「アフォーダンス」は、デバイス200、400、及び/又は600(図2、図4、及び図6)のディスプレイスクリーン上で表示することができるユーザ対話式のグラフィカルユーザインタフェースオブジェクトを指す。例えば、画像(例えば、アイコン)、ボタン、及びテキスト(例えば、リンク)は各々、アフォーダンスを構成してもよい。
本明細書で使用されるとき、用語「フォーカスセレクタ」は、ユーザが対話しているユーザインタフェースの現在の部分を示す入力要素を指す。カーソル又は他の位置マーカを含むいくつかの実装形態では、カーソルは「フォーカスセレクタ」として機能し、その結果、カーソルが特定のユーザインタフェース要素(例えば、ボタン、ウィンドウ、スライダ、又は他のユーザインタフェース要素)の上にある間にタッチ感知面(例えば、図4のタッチパッド455、又は図5Bのタッチ感知面551)上で入力(例えば、押圧入力)が検出されるとき、特定のユーザインタフェース要素が、検出された入力に従って調節される。タッチスクリーンディスプレイ上のユーザインタフェース要素との直接的な対話を可能にする、タッチスクリーンディスプレイ(例えば、図2Aのタッチ感知ディスプレイシステム212、又は図5Aのタッチスクリーン212)を含むいくつかの実装形態では、タッチスクリーン上で検出される接触は「フォーカスセレクタ」として機能し、その結果、入力(例えば、接触による押圧入力)が特定のユーザインタフェース要素(例えば、ボタン、ウィンドウ、スライダ、又は他のユーザインタフェース要素)の位置においてタッチスクリーンディスプレイ上で検出されるとき、特定のユーザインタフェース要素が、検出された入力に従って調節される。いくつかの実装形態では、(例えば、フォーカスを1つのボタンから別のボタンに移動させるためにタブキー又は矢印キーを使用することによって)タッチスクリーンディスプレイ上の対応するカーソルの移動又は接触の移動なしに、フォーカスがユーザインタフェースの1つの領域からユーザインタフェースの別の領域に移動され、それらの実装形態では、フォーカスセレクタは、ユーザインタフェースの異なる領域の間のフォーカスの移動に従って移動する。フォーカスセレクタによってとられる具体的な形態とは関係なく、フォーカスセレクタは概して、ユーザの意図したユーザインタフェースとの対話を通信するように(例えば、ユーザが対話することを意図しているユーザインタフェースの要素をデバイスに示すことによって)、ユーザによって制御されるユーザインタフェース要素(又は、タッチスクリーンディスプレイ上の接触)である。例えば、押圧入力がタッチ感知面(例えば、タッチパッド又はタッチスクリーン)上で検出される間にそれぞれのボタンの上のフォーカスセレクタ(例えば、カーソル、接触、又は選択ボックス)の位置は、(デバイスのディスプレイ上に示されている他のユーザインタフェース要素とは反対に)それぞれのボタンをユーザがアクティブ化することを意図していることを示す。
本明細書及び特許請求の範囲で使用されるとき、接触の「特性強度」という用語は、接触の1つ以上の強度に基づく接触の特性を指す。いくつかの実施形態では、特性強度は複数の強度サンプルに基づく。特性強度は、任意選択的に、予め定義された数の強度サンプル、あるいは予め定義されたイベントに対する(例えば、接触を検出した後、接触のリフトオフを検出する前、接触の移動の開始を検出する前若しくは後、接触の終わりを検出する前、接触の強度における増大を検出する前若しくは後、及び/又は接触の強度における減少を検出する前若しくは後)予め定められた時間期間の間(例えば、0.05、0.1、0.2、0.5、1、2、5、10秒)に収集された強度サンプルの組に基づく。接触の特性強度は、任意選択的に、接触の強度の最大値、接触の強度の平均値(mean value)、接触の強度の平均値(average value)、接触の強度の上位10%値、接触の強度の最大値の半分の値、接触の強度の最大値の90%の値などのうちの1つ以上に基づく。いくつかの実施形態では、接触の期間は、特性強度を判定する際に使用される(例えば、特性強度が経時的な接触の強度の平均にあるとき)。いくつかの実施形態では、特性強度は、操作がユーザによって実行されたかを判定するために1つ以上の強度閾値の組と比較される。例えば、1つ以上の強度閾値のセットは、第1の強度閾値及び第2の強度閾値を含んでもよい。この実施例では、第1の閾値を越えない特性強度を有する接触の結果として第1の動作が実行され、第1の強度閾値を越え、第2の強度閾値を越えない特性強度を有する接触の結果として第2の動作が実行され、第2の閾値を越える特性強度を有する接触の結果として第3の動作が実行される。いくつかの実施形態では、特性強度と1つ以上の閾値との間の比較が、第1の動作又は第2の動作のいずれを実行するかを判定するために使用されるのではなく、1つ以上の動作を実行するかどうか(例えば、それぞれの動作を実行するか、又はそれぞれの動作の実行を省略するか)を判定するために使用される。
いくつかの実施形態では、特性強度を判定する目的で、ジェスチャの一部が特定される。例えば、タッチ感知面は、その点において接触の強度が増加する、開始位置から遷移して終了位置まで到達する連続的なスワイプ接触を受信してもよい。この実施例では、終了位置における接触の特性強度は、連続的なスワイプ接触全体ではなく、そのスワイプ接触の一部のみ(例えば、終了位置におけるスワイプ接触の一部のみ)に基づいてもよい。いくつかの実施形態では、接触の特性強度を判定する前に、平滑化アルゴリズムをスワイプ接触の強度に適用してもよい。例えば、平滑化アルゴリズムは、任意選択的に、非荷重移動平均平滑化アルゴリズム、三角平滑化アルゴリズム、中央値フィルタ平滑化アルゴリズム、及び/又は指数平滑化アルゴリズムのうちの1つ以上を含む。いくつかの状況では、これらの平滑化アルゴリズムは、特性強度を判定する目的で、スワイプ接触の強度の小幅な上昇又は低下を除外する。
タッチ感知面上の接触の強度は、接触検出強度閾値、軽い押圧強度閾値、深い押圧強度閾値、及び/又は1つ以上の他の強度閾値などの1つ以上の強度閾値に対して特徴付けられてもよい。いくつかの実施形態では、軽い押圧強度閾値は、物理マウスのボタン又はトラックパッドのクリックに典型的と関連付けられた動作をデバイスが実行する強度に相当する。いくつかの実施形態では、深い押圧強度閾値は、物理マウスのボタン又はトラックパッドのクリックに典型的と関連付けられた動作とは異なる動作をデバイスが実行する強度に相当する。いくつかの実施形態では、軽い押圧強度閾値を下回る(例えば、かつ、それを下回ると接触がもはや検出されない名目上の接触検出強度閾値を上回る)特性強度で接触が検出されるとき、デバイスは、軽い押圧強度閾値又は深い押圧強度閾値と関連付けられた動作を実行することなく、タッチ感知面上の接触の移動に従ってフォーカスセレクタを移動させる。概して、特に明記されない限り、これらの強度閾値は、ユーザインタフェースの外観の異なるセットの間で一貫している。
軽い押圧強度閾値を下回る強度から、軽い押圧強度閾値と深い押圧強度閾値との間の強度への接触の特性強度の増大は、「軽い押圧」入力と呼ばれる場合がある。深い押圧強度閾値を下回る強度から、深い押圧強度閾値を上回る強度への接触の特性強度の増大は、「深い押圧」入力と呼ばれる場合がある。接触検出強度閾値を下回る強度から、接触検出強度閾値と軽い押圧強度閾値との間の強度への接触の特性強度の増大は、タッチ面上の接触の検出と呼ばれる場合がある。接触検出強度閾値を上回る強度から、接触検出強度閾値を下回る強度への接触の特性強度の減少は、タッチ面からの接触のリフトオフの検出と呼ばれる場合がある。いくつかの実施形態では、接触検出強度閾値はゼロである。いくつかの実施形態では、接触検出強度閾値はゼロより大きい。
本明細書で説明されるいくつかの実施形態では、1つ以上の操作は、それぞれの押圧入力を含むジェスチャを検出したことに応じて、又はそれぞれの接触(若しくは、複数の接触)で実行されるそれぞれの押圧入力を検出したことに応じて実行され、それぞれの押圧入力は、押圧入力強度閾値を上回る接触(又は、複数の接触)の強度における増大を検出したことに少なくとも部分的に基づいて検出される。いくつかの実施形態では、それぞれの動作は、押圧入力強度閾値を上回る、それぞれの接触の強度の増大(例えば、それぞれの押圧入力の「ダウンストローク」)の検出に応じて実行される。いくつかの実施形態では、押圧入力は、押圧入力強度閾値を上回るそれぞれの接触の強度の増大、及び後続の押圧入力強度閾値を下回る接触の強度の減少を含み、それぞれの動作は、後続の押圧入力閾値を下回るそれぞれの接触の強度の減少(例えば、それぞれの押圧入力の「アップストローク」)の検出に応じて実行される。
いくつかの実施形態では、デバイスは、「ジッタ」と呼ばれる場合がある不測の入力を回避するために強度ヒステリシスを採用し、デバイスは、押圧入力強度閾値との予め定義された関係を有するヒステリシス強度閾値を定義又は選択する(例えば、ヒステリシス強度閾値は、押圧入力強度閾値よりもX強度単位低いか、又はヒステリシス強度閾値は、押圧入力強度閾値の75%、90%、若しくは何らかの妥当な比率である)。よって、いくつかの実施形態では、押圧入力は、押圧入力強度閾値を上回るそれぞれの接触の強度の増大、及び後続の押圧入力強度閾値に対応するヒステリシス強度閾値を下回る接触の強度の減少を含み、それぞれの動作は、そのヒステリシス強度閾値を下回る後続のそれぞれの接触の強度の減少(例えば、それぞれの押圧入力の「アップストローク」)の検出に応じて実行される。同様に、いくつかの実施形態では、押圧入力は、デバイスが、ヒステリシス強度閾値以下の強度から押圧入力強度閾値以上の強度への接触の強度の増大、及び任意選択的に、ヒステリシス強度以下の強度への後続の接触の強度の減少を検出するときのみ検出され、それぞれの動作は、その押圧入力の検出(例えば、状況に応じて、接触の強度の増大、又は接触の強度の減少)に応じて実行される。
説明を容易にするために、押圧入力強度閾値と関連付けられた押圧入力に応じて、又は押圧入力を含むジェスチャに応じて実行される動作の説明は、任意選択的に、押圧入力強度閾値を上回る接触の強度の増大、ヒステリシス強度閾値を下回る強度から押圧入力強度閾値を上回る強度への接触の強度の増大、押圧入力強度閾値を下回る接触の強度の減少、及び/又は押圧入力強度閾値に対応するヒステリシス強度閾値を下回る接触の強度の減少のいずれかを検出したことに応じてトリガされる。加えて、押圧入力強度閾値を下回る接触の強度の減少を検出したことに応じて動作が実行されるとして説明される実施例では、動作は、任意選択的に、押圧入力強度閾値に対応し、かつそれよりも低いヒステリシス強度閾値を下回る接触の強度の減少を検出したことに応じて実行される。
3.デジタルアシスタントシステム
図7Aは、様々な実施例に従った、デジタルアシスタントシステム700のブロック図を示す。いくつかの実施例では、デジタルアシスタントシステム700はスタンドアロンコンピュータシステム上で実装されてもよい。いくつかの実施例では、デジタルアシスタントシステム700は、複数のコンピュータにわたって分散されてもよい。いくつかの実施例では、デジタルアシスタントのモジュール及び機能のうちのいくつかは、サーバ部分及びクライアント部分に分割されてもよく、クライアント部分は、例えば、図1に示すように、1つ以上のユーザデバイス(例えば、デバイス104、デバイス122、デバイス200、デバイス400、又はデバイス600)上に常駐し、1つ以上のネットワークを通じてサーバ部分(例えば、サーバシステム108)と通信する。いくつかの実施例では、デジタルアシスタントシステム700は、図1に示されたサーバシステム108(及び/又はDAサーバ106)の実装形態とすることができる。デジタルアシスタントシステム700は、デジタルアシスタントシステムの1つの実施例に過ぎず、デジタルアシスタントシステム700は、図示されているよりも多くの又は少ない構成要素を有してもよく、2つ以上の構成要素を組合せてもよく、又は構成要素の異なる構成又は配置を有することができることに留意されたい。図7Aに示される様々な構成要素は、1つ以上の信号処理回路及び/若しくは特定用途向け集積回路を含むハードウェア、1つ以上のプロセッサによって実行されるソフトウェア命令、ファームウェア、又はそれらの組合せで実装されてもよい。
デジタルアシスタントシステム700は、メモリ702、1つ以上のプロセッサ704、入出力(I/O)インタフェース706、及びネットワーク通信インタフェース708を含むことができる。これらの構成要素は、1つ以上の通信バス又は信号線710を通じて相互に通信することができる。
いくつかの実施例では、メモリ702は、高速ランダムアクセスメモリ並びに/又は不揮発性コンピュータ可読記憶媒体(例えば、1つ以上の磁気ディスク記憶デバイス、フラッシュメモリデバイス、若しくは他の不揮発性固体メモリデバイス)など、非一時的コンピュータ可読媒体を含むことができる。
いくつかの実施例では、I/Oインタフェース706は、ディスプレイ、キーボード、タッチスクリーン、及びマイクロフォンなどのデジタルアシスタントシステム700の入出力デバイス716をユーザインタフェースモジュール722に結合することができる。I/Oインタフェース706は、ユーザインタフェースモジュール722と連携して、ユーザ入力(例えば、音声入力、キーボード入力、タッチ入力など)を受信し、それらを適宜に処理することができる。いくつかの実施例では、例えば、デジタルアシスタントがスタンドアロンユーザデバイス上で実装されるとき、デジタルアシスタントシステム700は、図2A、図4、図6A〜図6Bにおいてそれぞれデバイス200、デバイス400、又はデバイス600に関連して説明された構成要素及びI/O通信インタフェースのいずれかを含むことができる。いくつかの実施例では、デジタルアシスタントシステム700は、デジタルアシスタントの実装形態のサーバ部分を表すことができ、ユーザデバイス(例えば、デバイス104、デバイス200、デバイス400、又はデバイス600)上に常駐するクライアント側部分を通じてユーザと対話することができる。
いくつかの実施例では、ネットワーク通信インタフェース708は、有線通信ポート(単数又は複数)712及び/又は無線送受信回路714を含むことができる。有線通信ポート(単数又は複数)は、1つ以上の有線インタフェース、例えば、イーサネット、ユニバーサルシリアルバス(USB)、FIREWIREなどを介して通信信号を受信及び送信することができる。無線回路714は、通信ネットワーク及び他の通信デバイスをから/にRF信号及び/又は光信号を受信及び送信することができる。無線通信は、GSM、EDGE、CDMA、TDMA、Bluetooth、Wi−Fi、VoIP、Wi−MAX、又はいずれかのその他の適切な通信プロトコルなどの、複数の通信規格、プロトコル、及び技術のうちのいずれかを使用することができる。ネットワーク通信インタフェース708は、インターネット、イントラネットなどのネットワーク、及び/若しくはセルラー電話ネットワーク、無線ローカルエリアネットワーク(LAN)などの無線ネットワーク、並びイに/又はメトロポリタンエリアネットワーク(Metropolitan Area Network、MAN)でデジタルアシスタントシステム700と他のデバイスとの間の通信を可能にすることができる。
いくつかの実施例では、メモリ702、又はメモリ702のコンピュータ可読記憶媒体は、オペレーティングシステム718、通信モジュール720、ユーザインタフェースモジュール722、1つ以上のアプリケーション724、及びデジタルアシスタントモジュール726の全て又はサブセットを含むプログラム、モジュール、命令、及びデータ構造を記憶することができる。特に、メモリ702又はメモリ702のコンピュータ可読記憶媒体は、以下で説明される処理1200を実行する命令を記憶することができる。1つ以上のプロセッサ704は、これらのプログラム、モジュール、及び命令を実行し、データ構造から/へと読み出し/書き込みを実行することができる。
オペレーティングシステム718(例えば、Darwin、RTXC(、LINUX、UNIX、iOS、OS X、WINDOWS、又はVxWorksなどの組み込みオペレーティングシステム)は、一般的なシステムタスク(例えば、メモリ管理、記憶装置制御、電力管理など)を制御及び管理するための様々なソフトウェア構成要素及び/又はドライバを含むことができ、様々なハードウェア、ファームウェア、及びソフトウェア構成要素間の通信を促進する。
通信モジュール720は、ネットワーク通信インタフェース708上でデジタルアシスタントシステム700と他のデバイスとの間の通信を促進する。例えば、通信モジュール720は、図2A、図4、図6A〜図6Bにそれぞれ示されるデバイス200、デバイス400、及びデバイス600などの電子デバイスのRF回路208と通信してもよい。通信モジュール720はまた、無線回路714及び/又は有線通信ポート712により受信されたデータを処理するための様々な構成要素を含むことができる。
ユーザインタフェースモジュール722は、I/Oインタフェース706を介して(例えば、キーボード、タッチスクリーン、ポインティングデバイス、コントローラ、及び/又はマイクロフォンから)ユーザからのコマンド及び/又は入力を受信することができ、ディスプレイ上でユーザインタフェースオブジェクトを生成することができる。ユーザインタフェースモジュール722はまた、I/Oインタフェース706を介して(例えば、ディスプレイ、音声チャネル、スピーカ、タッチパッドなどを通じて)、ユーザへの出力(例えば、発話、音声、アニメーション、テキスト、アイコン、振動、触覚フィードバック、光など)を準備及び配信することができる。
アプリケーション724は、1つ以上のプロセッサ704により実行されるように構成されたプログラム及び/又はモジュールを含むことができる。例えば、デジタルアシスタントシステムがスタンドアロンのユーザデバイス上で実装される場合、アプリケーション724は、ゲーム、カレンダアプリケーション、ナビゲーションアプリケーション、又は電子メールアプリケーションなどのユーザアプリケーションを含むことができる。デジタルアシスタントシステム700がサーバ上で実装される場合、アプリケーション724は、例えば、リソース管理アプリケーション、診断アプリケーション、又はスケジューリングアプリケーションを含むことができる。
メモリ702はまた、デジタルアシスタントモジュール726(又はデジタルアシスタントのサーバ部分)を記憶することができる。いくつかの実施例では、デジタルアシスタントモジュール726は、以下のサブモジュール、又はそれらのサブセット若しくはスーパーセットを含むことができる:入出力処理モジュール728、音声テキスト(STT)処理モジュール730、自然言語処理モジュール732、ダイアログフロー処理モジュール734、タスクフロー処理モジュール736、サービス処理モジュール738、及び音声合成モジュール740。これらのモジュールの各々は、デジタルアシスタントモジュール726の以下のシステム又はデータ及びモデルのうちの1つ以上、又はそれらのサブセット若しくはスーパーセットへのアクセスを有することができる:オントロジ760、語彙索引744、ユーザデータ748、タスクフローモデル754、サービスモデル756、及びASRシステム。
いくつかの実施例では、デジタルアシスタントモジュール726において実装された処理モジュール、データ、及びモデルを使用して、デジタルアシスタントは以下のもののうちの少なくともいくつかを実行することができる:発話入力をテキストに変換すること、ユーザから受信した自然言語入力内で表現されるユーザの意図を特定すること、ユーザの意図を完全に推測するために必要な情報を(例えば、単語、ゲーム、意図などの曖昧さを除去することによって)能動的に引き出し、取得すること、推測された意図を満たすためのタスクフローを判定すること、及びタスクフローを実行して、推測された意図を満たすこと。
いくつかの実施例では、図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(又は、発話認識器)に転送することができる。
STT処理モジュール730は1つ以上のASRシステムを含むことができる。1つ以上のASRシステムは、I/O処理モジュール728を介して受信された発話入力を処理して、認識結果を生成することができる。各々のASRシステムは、フロントエンド発話プリプロセッサを含むことができる。フロントエンド発話プリプロセッサは、発話入力から代表的な特徴を抽出することができる。例えば、フロントエンド発話プリプロセッサは、発話入力を代表的な多次元ベクトルの列として特徴付けるスペクトル特徴を抽出するために、発話入力に対してフーリエ変換を実行することができる。更に、各々のASRシステムは、1つ以上の発話認識モデル(例えば、音響モデル及び/又は言語モデル)を含むことができ、1つ以上の発話認識エンジンを実装することができる。発話認識モデルの実施例は、隠れマルコフモデル、混合ガウスモデル、ディープニューラルネットワークモデル、nグラム言語モデル、及び他の統計モデルを含むことができる。発話認識エンジンの実施例は、動的時間伸縮ベースのエンジン及び重み付き有限状態トランスデューサ(WFST)ベースのエンジンを含むことができる。フロントエンド発話プリプロセッサの抽出された代表的な特徴を処理して、中間認識結果(例えば、音標、音標文字列、及び部分単語)を生成し、最終的には、テキスト認識結果(例えば、単語、単語文字列、又はトークンの列)を生成するために、1つ以上の発話認識モデル及び1つ以上の発話認識エンジンを使用することができる。いくつかの実施例では、発話入力は、認識結果を生成するために、サードパーティサービスによって、又はユーザのデバイス(例えば、デバイス104、デバイス200、デバイス400、若しくはデバイス600)上で少なくとも部分的に処理することができる。STT処理モジュール730が、テキスト文字列(例えば、単語、単語の列、又はトークンの列)を包含する認識結果を生成すると、認識結果は意図推論のために自然言語処理モジュール732に渡されることができる。例示的なASRシステムは、図9で更に詳細に説明される。
音声テキスト処理についての更なる詳細は、その全体が参照により本明細書に組み込まれる、2011年9月20日に出願された、「Consolidating Speech Recognition Results」についての米国実用特許出願第13/236,942号に説明される。
いくつかの実施例では、STT処理モジュール730は、認識可能な単語の語彙を含むことができ、及び/又は音標アルファベット変換モジュール731を介してそれにアクセスすることができる。各々の語彙語は、1つ以上の発話認識音標アルファベットで表される単語の発音候補と関連付けられてもよい。特に、認識可能な単語の語彙は、複数の発音候補と関連付けられた単語を含むことができる。例えば、語彙は、発音候補/
と関連付けられた単語「トマト」を含むことができる。更に、語彙語は、ユーザからの前の発話入力に基づく、カスタム発音候補と関連付けられてもよい。そのようなカスタム発音候補は、STT処理モジュール730に記憶されてもよく、デバイス上のユーザのプロファイルを介して、特定のユーザと関連付けられてもよい。いくつかの実施例では、単語の発音候補は、単語の綴り、並びに1つ以上の言語規則及び/又は音標規則に基づいて判定されてもよい。いくつかの実施例では、例えば、発音候補は、既知の正規発音に基づいて手動で生成されてもよい。
いくつかの実施例では、発音候補は、発音候補の一般性に基づいてランク付けされてもよい。例えば、発音候補
が(例えば、全てのユーザのうち、特定の地理的領域のユーザについて、又はいずれかの他の適切なユーザのサブセットについて)より一般的に使用される発音であることを理由に、発音候補
は、
よりも高くランク付けされてもよい。いくつかの実施例では、発音候補は、発音候補がユーザと関連付けられたカスタム発音候補であるかに基づいてランク付けされてもよい。例えば、カスタム発音候補は、正規発音候補よりも高くランク付けされてもよい。このことは、正規発音から逸脱する独特の発音を有する固有名詞を認識するために有用となることがある。いくつかの実施例では、発音候補は、出身地、国籍又は民族性などの1つ以上の発話特性と関連付けられてもよい。例えば、発音候補
が米国と関連付けられてもよいのに対し、発音候補
は英国と関連付けられてもよい。更に、発音候補のランクは、デバイス上のユーザのプロファイルに記憶されたユーザの1つ以上の特性(例えば、出身地、国籍、民族など)に基づいてもよい。例えば、ユーザのプロファイルから、ユーザが米国と関連付けられていることが判定されてもよい。ユーザが米国と関連付けられていることに基づいて、(米国と関連付けられた)発音候補
は、(英国と関連付けられた)発音候補
よりも高くランク付けされてもよい。いくつかの実施例では、ランク付けされた発音候補のうちの1つは、予測された発音(例えば、最も可能性が高い発音)として選択されてもよい。
発話入力が受信されるとき、STT処理モジュール730は、発話入力に対応する音標を(例えば、音響モデルを用いて)判定し、次に、音標に一致する単語を(例えば、言語モデルを用いて)決定することを試みるために使用されてもよい。例えば、STT処理モジュール730は、発話入力の一部に対応する音標の列
を最初に特定することができる場合、語彙インデックス744に基づいて、この音標の列が単語「トマト」に対応すると判定することができる。
いくつかの実施例では、STT処理モジュール730は、音声入力内の単語を判定するために近似マッチング技術を使用することができる。よって、例えば、STT処理モジュール730は、特定の音標の列が、単語「トマト」の候補音標の列のうちの1つではない場合でさえ、音標の列
が単語「トマト」に対応すると判定することができる。
デジタルアシスタントの自然言語処理モジュール732(「自然言語プロセッサ」)は、STT処理モジュール730によって生成された単語又はトークンの列(「トークン列」)を取得し、トークン列を、デジタルアシスタントによって認識される1つ以上の「実施可能な意図」に関連付けることを試みることができる。「実施可能な意図」は、デジタルアシスタントによって実行することができるタスクを表すことができ、タスクフローモデル754において実装される、関連付けられたタスクフローを有することができる。関連付けられたタスクフローは、タスクを実行するためにデジタルアシスタントが取る一連のプログラムされたアクション及びステップとすることができる。デジタルアシスタントの能力の範囲は、タスクフローモデル754において実装及び記憶されたタスクフローの数及び種類に依存し、すなわち、換言すれば、デジタルアシスタントが認識する「実施可能な意図」の数及び種類に依存することができる。しかしながら、デジタルアシスタントの有効性はまた、自然言語内で表現されるユーザ要求から正確な「実施可能な意図(単数又は複数)」を推定するアシスタントの能力に依存することができる。
いくつかの実施例では、STT処理モジュール730から取得される単語又はトークン列に加えて、自然言語処理モジュール732はまた、例えば、I/O処理モジュール728から、ユーザ要求と関連付けられたコンテキスト情報を受信することができる。自然言語処理モジュール732は、任意選択的に、STT処理モジュール730から受信されたトークン列内に包含される情報を明らかにし、補完し、及び/又は更に定義するために、コンテキスト情報を使用することができる。コンテキスト情報は、例えば、ユーザ優先度、ユーザデバイスのハードウェア及び/又はソフトウェア状態、ユーザ要求の前、間、若しくは直後に収集されたセンサ情報、並びにデジタルアシスタントとユーザとの間の前の対話(例えば、ダイアログ)などを含むことができる。本明細書で説明されるように、コンテキスト情報は動的であってもよく、時間、位置、ダイアログの内容、及び他の因子によって変化することができる。
いくつかの実施例では、自然言語処理は、オントロジ760に基づいてもよい。オントロジ760は、多数のノードを包含する階層構造とすることができ、各々のノードは、「実施可能な意図」又は他の「属性」のうちの1つ以上に関連する「実施可能な意図」又は「属性」のいずれかを表す。上述したように、「実施可能な意図」は、デジタルアシスタントが実行する能力を有する、即ち、それは「実施可能」であり、又は作用を及ぼされてもよいタスクを表すことができる。「属性」は、実施可能な意図、又は別の属性の下位態様と関連付けられたパラメータを表すことができる。オントロジ760内の実施可能な意図ノードと属性ノードとの間のリンクは、属性ノードにより表されるパラメータが、実施可能な意図ノードによって表されるタスクにどのように関係するのかを定義することができる。
いくつかの実施例では、オントロジ760は、実施可能な意図ノード及び属性ノードで構成されてもよい。オントロジ760内では、各々の実施可能な意図ノードは、直接又は1つ以上の中間属性ノードを介して、1つ以上の属性ノードにリンク付けされてもよい。同様に、各々の属性ノードは、直接又は1つ以上の中間属性ノードを介して、1つ以上の実施可能な意図ノードにリンク付けされてもよい。例えば、図7Cに示されるように、オントロジ760は、「レストラン予約」ノード(すなわち、実施可能な意図ノード)を含んでもよい。属性ノードである「レストラン」、「日付/時間」(予約用)及び「参加人数」は各々、実施可能な意図ノード(即ち、「レストラン予約」ノード)に直接リンク付けされてもよい。
加えて、属性ノード「料理」、「価格帯」、「電話番号」及び「ロケーション」は、属性ノード「レストラン」のサブノードであってもよく、各々が中間属性ノード「レストラン」を介して「レストラン予約」ノード(即ち、実施可能な意図ノード)にリンク付けされてもよい。別の例として、図7Cに示されるように、オントロジ760はまた、「リマインダ設定」ノード(即ち、別の実施可能な意図ノード)を含むことができる。属性ノード「日付/時間」(リマインダ設定用)及び「テーマ」(リマインダ用)は各々、「リマインダ設定」ノードにリンク付けされてもよい。属性ノード「日付/時間」は、レストラン予約をするタスク及びリマインダを設定するタスクの両方に関連することがあるので、属性ノード「日付/時間」はオントロジ760内で「レストラン予約」ノード及び「リマインダ設定」ノードの両方にリンク付けされてもよい。
実施可能な意図ノードは、そのリンクされた属性ノードと共に、「ドメイン」として説明されることがある。本議論では、各々のドメインは、それぞれの実施可能な意図と関連付けられてもよく、特定の実施可能な意図と関連付けられたノードのグループ(及び、ノードの間の関係)を指す。例えば、図7Cに示されるオントロジ760は、オントロジ760内のレストラン予約ドメイン762の例、及びリマインダドメイン764の例を含むことができる。レストラン予約ドメインは、実施可能な意図ノード「レストラン予約」、属性ノード「レストラン」、「日付/時間」、及び「参加人数」、並びに下位属性ノード「料理」、「価格帯」、「電話番号」及び「ロケーション」を含む。リマインダドメイン764は、実施可能な意図ノード「リマインダ設定」、並びに属性ノード「テーマ」及び「日付/時間」を含んでもよい。いくつかの実施例では、オントロジ760は多、くのドメインで構成されてもよい。各々のドメインは、1つ以上の他のドメインと1つ以上の属性ノードを共有することができる。例えば、「日付/時間」属性ノードは、レストラン予約ドメイン762及びリマインダドメイン764に加えて、多くの異なるドメイン(例えば、スケジューリングドメイン、旅行予約ドメイン、映画チケットドメインなど)と関連付けられてもよい。
図7Cは、オントロジ760内の2つの例示的なドメインを示すが、他のドメインは、例えば、「映画を探す」、「通話を開始する」、「道順を探す」、「会議をスケジュールする」、「メッセージを送信する」、「質問への回答を提供する」、「リストを読み上げる」、「ナビゲーションの指示を提供する」、及び「タスクについての手順を提供する」などを含むことができる。「メッセージを送信する」ドメインは、「メッセージを送信する」の実施可能な意図ノードと関連付けられてもよく、「受信者(単数又は複数)」、「メッセージタイプ」、及び「メッセージ本文」などの属性ノードを更に含んでもよい。属性ノード「受信者」は更に、例えば、「受信者名」及び「メッセージアドレス」などの下位属性ノードによって定義されてもよい。
いくつかの実施例では、オントロジ760は、デジタルアシスタントが理解し、作用を及ぼす能力を有する全てのドメイン(したがって、実施可能な意図)を含むことができる。いくつかの実施例では、オントロジ760は、ドメイン若しくはノード全体を追加又は除去することによって、又はオントロジ760内のノードの間の関係を修正するなどによってなど修正されてもよい。
いくつかの実施例では、複数の関連する実施可能な意図と関連付けられたノードは、オントロジ760内の「上位ドメイン」の下にクラスタ化されてもよい。例えば、「旅行」上位ドメインは、旅行に関連する属性ノード及び実施可能な意図ノードのクラスタを含んでもよい。旅行に関連する実施可能な意図ノードは、「航空券予約」、「ホテル予約」、「カーレンタル」、「道順を知る」、及び「興味のある場所を探す」などを含むことができる。同一の上位ドメイン(例えば、「旅行」上位ドメイン)の下の実施可能な意図ノードは、共通する多くの属性ノードを有することができる。例えば、「航空券予約」、「ホテル予約」、「カーレンタル」、「道順を知る」、及び「興味のある場所を探す」についての実施可能な意図ノードは、属性ノード「出発場所」、「目的地」、「出発日/時間」、「到着日/時間」、及び「参加人数」のうちの1つ以上を共有することができる。
いくつかの実施例では、オントロジ760内の各々のノードは、ノードによって表される属性又は実施可能な意図に関連する単語及び/又はフレーズのセットと関連付けられてもよい。各々のノードと関連付けられた単語及び/又はフレーズのそれぞれのセットは、ノードと関連付けられたいわゆる「語彙」とすることができる。各々のノードと関連付けられた単語及び/又はフレーズのそれぞれのセットは、ノードによって表される属性又は実施可能な意図と関連して語彙索引744に記憶されてもよい。例えば、図7Bに戻ると、「レストラン」の属性についてのノードと関連付けられた語彙は、「食べ物」、「飲み物」、「料理」、「空腹」、「食べる」、「ピザ」、「ファストフード」、及び「食事」などの単語を含むことができる。別の例として、「通話を開始する」の実施可能な意図についてのノードと関連付けられた語彙は、「電話する(call)」、「電話(phone)」、「ダイヤルする(dial)」、「電話をかける(ring)」、「この番号に電話する(call this number)」、及び「〜に電話をかける(make a call to)」などの単語及びフレーズを含むことができる。語彙索引744は、任意選択的に、異なる言語内の単語及びフレーズを含むことができる。
自然言語処理モジュール732は、STT処理モジュール730からトークン列(例えば、テキスト文字列)を受信し、トークン列内の単語がどのノードを暗示しているのかを判定することができる。いくつかの実施例では、トークン列内の単語又はフレーズが(語彙索引744を介して)オントロジ760内の1つ以上のノードと関連付けられていることが発見される場合、単語又はフレーズは、それらのノードを「トリガする」又は「アクティブ化する」ことができる。アクティブ化されたノードの量及び/又は相対的重要度に基づき、自然言語処理モジュール732は、ユーザがデジタルアシスタントに実行させようと意図したタスクとして、実施可能な意図のうちの1つを選択することができる。いくつかの実施例では、最も多く「トリガされた」ノードを有するドメインが選択されてもよい。いくつかの実施例では、最も高い信頼値を有するドメインが(例えば、その様々なトリガされたノードの相対的重要度に基づいて)選択されてもよい。いくつかの実施例では、トリガされたノードの数及び重要度の組合せに基づいて、ドメインが選択されてもよい。いくつかの実施例では、ノードを選択する際には、デジタルアシスタントがユーザからの同様の要求を前に正確に解釈したかなどの追加の因子が考慮される。
ユーザデータ748は、ユーザ特有語彙、ユーザ優先度、ユーザアドレス、ユーザのデフォルトの言語及び第二言語、ユーザの連絡先リスト、並びに各ユーザに関するその他の短期的若しくは長期的情報などのユーザ特有情報を含むことができる。いくつかの実施例では、自然言語処理モジュール732は、ユーザ入力内に包含された情報を補完してユーザの意図を更に明確にするために、ユーザ特有情報を使用することができる。例えば、ユーザ要求「私の誕生日パーティーに私の友人を招待して下さい(invite my friends to my birthday party)」について、自然言語処理モジュール732は、誰が「友人」であり、いつ及びどこで「誕生日パーティー」が催されるのであるかを判定するために、そのような情報をユーザの要求において明示的に提供するようにユーザに要求するではなく、ユーザデータ748にアクセスすることができる。
トークン文字列に基づくオントロジを検索することのその他の詳細は、その全体が参照により本明細書に組み込まれる、2008年12月22日出願の「Method and Apparatus for Searching Using an Active Ontology」に対する米国実用特許出願第12/341,743号において説明される。
いくつかの実施例では、自然言語処理モジュール732が、ユーザ要求に基づいて実施可能な意図(又はドメイン)を特定すると、自然言語処理モジュール732は、特定された実施可能な意図を表すように、構造化されたクエリを生成することができる。いくつかの実施例では、構造化されたクエリは、実施可能な意図に関するドメイン内の1つ以上のノードについてのパラメータを含むことができ、パラメータの少なくともいくつかは、ユーザ要求で指定された特定の情報及び要求事項が追加される。例えば、ユーザは、「7時に寿司屋で夕食の予約を取って下さい(Make me a dinner reservation at a sushi place at 7)」と言うことがある。このケースでは、自然言語処理モジュール732は、ユーザ入力に基づいて、実施可能な意図を「レストラン予約」であると正確に特定することが可能であってもよい。オントロジに従って、「レストラン予約」ドメインについての構造化されたクエリは、{料理}、{時間}、{日付}、及び{参加人数}などのパラメータを含んでもよい。いくつかの実施例では、発話入力、及びSTT処理モジュール730を使用して発話入力から導出されたテキストに基づいて、自然言語処理モジュール732は、レストラン予約ドメインのための部分的な構造化されたクエリを生成することができ、部分的な構造化されたクエリは、パラメータ{料理=「寿司」}及びパラメータ{時間=「午後7時」}を含む。しかしながら、この例では、ユーザの発話入力は、ドメインと関連付けられた構造化されたクエリを完了するために十分な情報を包含していない。したがって、{参加人数}及び{日付}などのその他の必要パラメータは、現在利用可能な情報に基づいて、構造化されたクエリ内に指定されなくてもよい。いくつかの実施例では、自然言語処理モジュール732は、構造化されたクエリのいくつかのパラメータに、受信したコンテキスト情報を追加することができる。例えば、いくつかの実施例では、ユーザが「私の近くの」寿司レストランを要求した場合、自然言語処理モジュール732は、構造化されたクエリ内の{ロケーション}パラメータにユーザデバイスからのGPS座標を追加することができる。
いくつかの実施例では、自然言語処理モジュール732は、(いずれかの完了したパラメータを含む)生成した構造化されたクエリをタスクフロー処理モジュール736(「タスクフロープロセッサ」)に渡すことができる。タスクフロー処理モジュール736は、自然言語処理モジュール732から、構造化されたクエリを受信し、必要な場合、構造化されたクエリを完了し、ユーザの最終的な要求を「完了する」ために必要とされるアクションを実行するように構成されてもよい。いくつかの実施例では、これらのタスクを完了するために必要な様々な手順は、タスクフローモデル754において提供されてもよい。いくつかの実施例では、タスクフローモデル754は、ユーザから追加情報を取得するための手順、及び実施可能な意図と関連付けられたアクションを実行するためのタスクフローを含むことができる。
上記説明されたように、構造化されたクエリを完了するために、タスクフロー処理モジュール736は、追加情報を取得し、及び/又は潜在的に曖昧な発話入力の曖昧性を回避するために、ユーザとの追加のダイアログを開始することが必要になることがある。このような対話が必要となるとき、タスクフロー処理モジュール736は、ユーザとのダイアログに携わるためにダイアログフロー処理モジュール734を呼び出すことができる。いくつかの実施例では、ダイアログフロー処理モジュール734は、どのように(及び/又は、いつ)ユーザに追加情報を求めるべきかを決定することができ、ユーザ応答を受信し、これらを処理する。I/O処理モジュール728を通じてユーザに質問を提供することができ、ユーザから回答を受信することができる。いくつかの実施例では、ダイアログフロー処理モジュール734は音声及び/又は視覚出力を介してユーザにダイアログ出力を提示することができ、口頭の応答又は物理的な(例えば、クリック)応答を介してユーザから入力を受信する。上述の例を続けると、タスクフロー処理モジュール736が、ドメイン「レストラン予約」に関連付けられる構造化されたクエリについての「参加人数」及び「日付」情報を決定するためにダイアログフロー処理モジュール734を呼び出すとき、ダイアログフロー処理モジュール734は、「何人分ですか?(For how many people?)」及び「どの日にしますか?(On which day?)」などの質問をユーザに渡すために生成してもよい。ユーザから回答が受信されると、次に、ダイアログフロー処理モジュール734は、構造化されたクエリに欠けている情報を追加することができ、又は構造化されたクエリから欠けている情報を完了するために、情報をタスクフロー処理モジュール736に渡すことができる。
タスクフロー処理モジュール736が、実施可能な意図のための構造化されたクエリを完了すると、タスクフロー処理モジュール736は、実施可能な意図と関連付けられた最終的なタスクの実行を続けて行うことができる。それに従って、タスクフロー処理モジュール736は、構造化されたクエリ内に包含された具体的なパラメータに従って、タスクフローモデルにおけるステップ及び命令を実行してもよい。例えば、「レストラン予約」の実施可能な意図についてのタスクフローモデルは、レストランと連絡を取り、特定の時間に特定の参加人数のための予約を実際に希望するためのステップ及び命令を含んでもよい。例えば、レストラン予約について、レストラン=ABC Cafe、日付=3/12/2012、時間=午後7時、参加人数=5、などの構造化されたクエリを使用して、タスクフロー処理モジュール736は、(1)ABC Cafeのサーバ、又はOPENTABLE(登録商標)等のレストラン予約システムにログオンするステップと、(2)ウェブサイト上のフォーム内に日付、時間、及び参加人数情報を入力するステップと、(3)フォームを送信するステップと、及び(4)ユーザのカレンダ内に予約のためのカレンダ項目を記入するステップと、を実行してもよい。
いくつかの実施例では、タスクフロー処理モジュール736は、ユーザ入力で要求されたタスクを完了するために、又はユーザ入力で要求された情報の回答を提供するために、サービス処理モジュール738(「サービス処理モジュール」)の支援を採用することができる。例えば、サービス処理モジュール738は、電話をかけるため、カレンダ項目を設定するため、マップ検索を呼び出すため、ユーザデバイス上にインストールされているその他のユーザアプリケーションを呼び出し、若しくはそれと対話するため、並びにサードパーティサービス(例えばレストラン予約ポータル、ソーシャルネットワーキングウェブサイト、バンキングポータル等)を呼び出すか若しくはそれと対話するために、タスクフロー処理モジュール736の代わりに動作することができる。いくつかの実施例では、各サービスによって必要とされるプロトコル及びアプリケーションプログラミングインタフェース(application programming interface、API)は、サービスモデル756の中のそれぞれのサービスモデルによって指定されてもよい。サービス処理モジュール738は、サービスについての適切なサービスモデルにアクセスすることができ、サービスモデルに従ったサービスによって必要とされるプロトコル及びAPIに従ってサービスの要求を生成することができる。
例えば、レストランがオンライン予約サービスを可能にしている場合、レストランは、予約を行うために必要なパラメータ、及び必要なパラメータの値をオンライン予約サービスへ伝達するためのAPIを指定するサービスモデルを提出することができる。タスクフロー処理モジュール736によって要求されるとき、サービス処理モジュール738は、サービスモデルに記憶されたウェブアドレスを使用して、オンライン予約サービスとのネットワーク接続を確立することができ、必要な予約のパラメータ(例えば、時間、日付、参加人数)を、オンライン予約サービスのAPIに従う形式でオンライン予約インタフェースへ送信することができる。
いくつかの実施例では、ユーザの意図を推定及び定義し、ユーザの意図を更に明らかにして絞り込むための情報を取得し、ユーザの意図を満たすための応答(即ち、ユーザへの出力又はタスクの完了)を最終的に生成するために、自然言語処理モジュール732、ダイアログフロー処理モジュール734、及びタスクフロー処理モジュール736は、集合的かつ反復的に使用されてもよい。生成された応答は、ユーザの意図を少なくとも部分的に満たす発話入力へのダイアログ応答とすることができる。更に、いくつかの実施例では、生成された応答は、発話出力として出力されてもよい。これらの実施例では、生成された応答は、発話合成モジュール740(例えば、発話合成器)に送信されてもよく、そこでは、生成された応答は、発話形式にあるダイアログ応答を合成するように処理されてもよい。更なる他の実施例では、生成された応答は、発話入力のユーザ要求を満たすことに関連するデータコンテンツとすることができる。
発話合成モジュール740は、ユーザに提示するための発話出力を合成するように構成されてもよい。発話合成モジュール740は、デジタルアシスタントにより提供されたテキストに基づいて発話出力を合成する。例えば、生成されたダイアログ応答は、テキスト文字列の形式にあることができる。発話合成モジュール740は、テキスト文字列を可聴の発話出力に変換することができる。発話合成モジュール740は、テキストから発話出力を生成するために、波形接続合成、単位選択合成、ダイフォン合成、ドメイン限定合成、フォルマント合成、調音合成、隠れマルコフモデル(HMM)ベースの合成、及びサイン波合成を含むが、これらには限定されない任意の適切な音声合成技術を使用することができる。いくつかの実施例では、発話合成モジュール740は、単語に対応する音標文字列に基づいて、個々の単語を合成するように構成されてもよい。例えば、音標文字列は、生成したダイアログ応答内の単語に関連付けられてもよい。音標文字列は、単語と関連付けられたメタデータに記憶されてもよい。音声合成モデル740は、単語を音声形式で合成するために、メタデータ内の音標文字列を直接処理するよう構成されてもよい。
いくつかの実施例では、発話合成モジュール740の使用の代わりに(又は、それに加えて)、リモートデバイス(例えば、サーバシステム108)上で発話の合成が実行されてもよく、合成した発話は、ユーザへの出力のためにユーザデバイスに送信されてもよい。例えば、これは、デジタルアシスタントのための出力がサーバシステムにおいて生成される、いくつかの実装形態で行われてもよい。また、サーバシステムは概して、ユーザデバイスよりも多くの処理電力又はリソースを有することを理由に、クライアント側合成で実用的な出力よりも高い品質発話出力を取得することが可能であってもよい。
デジタルアシスタントに関する追加の詳細は、その開示全体が参照により本明細書に組み込まれる、2011年1月10日出願の「Intelligent Automated Assistant」と題された米国実用特許出願第12/987,982号、2011年9月30日出願の「Generating and Processing Data Items That Represent Tasks to Perform」と題された米国実用特許出願第13/251,088号において説明される。
4.デバイスの例示的なアーキテクチャ
図8Aは、本開示の様々な実施例に従った、デバイス800についての例示的なアーキテクチャのブロック図を示す。いくつかの実施例では、デバイス800及びリモート810は、デジタルアシスタントシステム(例えば、デジタルアシスタントシステム700)を実装することができる。いくつかの実施例では、デバイス800、リモート810、及びサーバ(例えば、サーバ108)は、デジタルアシスタントシステム(例えば、デジタルアシスタントシステム700)を実装することができる。図8Aの実施形態では、メディア又は他のコンテンツは、任意選択的に、ネットワークインタフェース802を介してデバイス800により受信され、ネットワークインタフェース802は、任意選択的に、無線又は有線接続である。1つ以上のプロセッサ804は、任意選択的に、本明細書で説明される方法及び/又は処理(例えば、方法1200)のうちの1つ以上を実行する命令を任意選択的に含むメモリ806又は記憶装置に記憶されたいずれかの数のプログラムを実行することができる。
ディスプレイコントローラ808は、1つ以上のユーザインタフェースをディスプレイ814上で表示させる。更に、デバイス800への入力は、任意選択的に、無線又は有線接続を使用して、リモートインタフェース812を介してリモート810によって提供される。図8Aの実施形態は、本開示のデバイスの特徴を限定することを意味するわけではないことが理解され、本開示で説明される他の特徴を容易にする他の構成要素は、任意選択的に、図8Aのアーキテクチャに含まれ、又は省略されることも理解される。いくつかの実施形態では、デバイス800は、任意選択的に、図2A及び図3におけるポータブル多機能デバイス200、並びに図4におけるデバイス400のうち1つ以上に対応し、ネットワークインタフェース802は、任意選択的に、図2A及び図4におけるRF回路208、外部ポート224、及び周辺機器インタフェース218、並びに図4におけるネットワーク通信インタフェース460のうちの1つ以上に対応し、プロセッサ804は、任意選択的に、図2Aにおけるプロセッサ(複数可)220、及び図4におけるCPU(複数可)410のうちの1つ以上に対応し、ディスプレイコントローラ808は、任意選択的に、図2Aにおけるディスプレイコントローラ256、及び図4におけるI/Oインタフェース430のうちの1つ以上に対応し、メモリ806は、任意選択的に、図2Aにおける1つ以上のメモリ202、及び図3におけるメモリ470に対応し、リモートインタフェース812は、任意選択的に、図2Aにおける周辺機器インタフェース218及びI/Oサブシステム206(及び/又は、その構成要素)、並びに図4におけるI/Oインタフェース430のうち1つ以上に対応し、リモート812は、任意選択的に、図2Aにおけるスピーカ211、タッチ感知ディスプレイシステム212、マイクロフォン213、光センサ(単数又は複数)264、接触強度センサ(単数又は複数)265、触知出力生成器(単数又は複数)267、他の入力制御デバイス216、加速度計(単数又は複数)268、近接センサ266、及びI/Oサブシステム206、図4におけるキーボード/マウス450、タッチパッド455、触知出力生成器(単数又は複数)457、及び接触強度センサ(単数又は複数)459、並びに図5Bにおけるタッチ感知面551のうちの1つ以上に対応し、かつ/又はこれらのうち1つ以上を含み、ディスプレイ814は、任意選択的に、図2A及び図3におけるタッチ感知ディスプレイシステム212、並びに図4におけるディスプレイ440のうちの1つ以上に対応する。
図8Bは、本開示の様々な実施例に従った、リモート810についての例示的な構造を示す。リモート810は、任意選択的に、タッチ感知面551を含む。いくつかの実施形態では、タッチ感知面551は、縁なし(edge−to−edge)である(例えば、図8Bで示されるように、タッチ感知面551とリモート810の1つ以上の端との間でリモート810の面がほとんど又は全く存在しないように、タッチ感知面551がリモート810の反対端に延在する)。タッチ感知面551は、任意選択的に、本明細書で説明される実施例に従って、接触と共に、接触強度(例えば、タッチ感知面551のクリック)を感知することが可能である。リモート810はまた、任意選択的に、ボタン816、818、820、822、824、及び826を含む。ボタン816、818、820、822、824、及び826は、任意選択的に、例えば、デバイス800上で対応するアクション(単数又は複数)を開始するためのそのようなボタンとの接触又はボタンの押圧を感知することが可能な機械ボタン又は機械ボタンの代替物である。いくつかの実施形態では、ユーザによる「メニュー」ボタン816の選択は、現在実行しているアプリケーション若しくは現在表示されているユーザインタフェース内で後方に(例えば、現在表示されているユーザインタフェースの前に表示されたユーザインタフェースの背後に)デバイス800をナビゲートし、又は現在表示されているユーザインタフェースよりも1つ上位レベルのユーザインタフェースにデバイス800をナビゲートする。いくつかの実施形態では、ユーザによる「ホーム」ボタン818の選択は、デバイス800のディスプレイ814上で表示されたいずれかのユーザインタフェースから、メイン、ホーム、又はルートユーザインタフェースにデバイス800をナビゲートする(例えば、デバイス800上でアクセス可能な1つ以上のアプリケーションを任意選択的に含む、デバイス800のホームスクリーンに)。いくつかの実施形態では、ユーザによる「再生/中断」ボタン820の選択は、デバイス800上の現在再生しているコンテンツアイテムを再生及び中断することの間でトグルする(例えば、「再生/中断」ボタン820が選択されるときにコンテンツアイテムがデバイス800上で再生している場合、コンテンツアイテムは、任意選択的に中断され、「再生/中断」ボタン820が選択されるときにコンテンツアイテムがデバイス800上で中断している場合、コンテンツアイテムは、任意選択的に再生される)。いくつかの実施形態では、ユーザによる「+」822又は「−」824ボタンの選択は、デバイス800によって再生される音声のボリュームをそれぞれ増大又は減少させる(例えば、デバイス800上で現在再生しているコンテンツアイテムのボリューム)。いくつかの実施形態では、ユーザによる「音声入力」ボタン826の選択によって、デジタルアシスタント(例えば、デジタルアシスタントシステム700)は、ユーザの音声入力を受信することが可能になる。リモート810はまた、受信された音声入力又はそれらの表現を更なる処理のために別のデバイス(例えば、デバイス800又はサーバ)に送信することができる。いくつかの実施形態では、リモート810は、リモートの動きに関する情報を検出するための1つ以上の加速度計を含み、加速度計は、任意選択的に、以下で示される実施形態の説明で提供される方式で利用される。
図9は、いくつかの実施形態に従った、自動発話認識(ASR)システム900の例示的な概略的ブロック図を示す。いくつかの実施例では、ASRシステム900は、デジタルアシスタントシステム700のASRシステム(単数又は複数)731に対応することができる。いくつかの実施形態では、ASRシステム900は、デバイス200、400、及び800(図2A、4、及び8A)を含むがそれらに限定されない、1つ以上の多機能デバイスを使用して実装されてもよい。多機能デバイスは、サーバ、パーソナルコンピュータ、モバイルデバイス、又はリモートなどのデバイスを含むことができる。特に、ASRシステム900は、1つ以上のデバイスのメモリ(例えば、メモリ202若しくは470)及び/又はプロセッサ(単数又は複数)(例えば、プロセッサ(単数又は複数)220若しくはCPU410)内で実装されてもよい。ASRシステム900は、デジタルアシスタントに含まれてもよく、多機能デバイスにおいて発話認識能力を提供することができる。特に、ASRシステム900は、以下で説明される処理又は方法(例えば、処理1200)のいずれかを実行するように構成されてもよい。ASRシステム900は、以下で更に説明される、特徴抽出器902及び認識エンジン904を含んでもよい。
概して、ASRシステム900は、音声入力(例えば、発話入力)を受信してもよく、音声入力に基づいて文字、フレーズ、コマンド、単語、又はそれらの組合せ(総合して「コンテンツ」)を識別してもよく、音声入力の識別されたコンテンツをテキストに変換してもよい。ASRシステム900は更に、音声入力に含まれるコンテンツの順序に対応する順番でテキストを表示させることができる。
いくつかの実施形態では、文字は、字、数字の桁、制御文字、又は空白を含むことができる。字は、例えば、アルファベットのいずれかの小文字又は大文字(例えば、「a」、「b」、...「z」、又は「A」、「B」、...「Z」)とすることができる。数字の桁は、例えば、0〜9の値(「0」、「1」、「2」、...「9」)を有するいずれかの数字の桁とすることができる。制御文字は、句読点(例えば、「@」、「#」、「%」、「!」)文字とすることができる。いくつかの実施例では、句読点は、句読点の単語によって識別されてもよい。例えば、句読点「@」は、句読点の単語「at」によって識別されてもよく、句読点「#」は、句読点の単語「ポンド記号」によって識別されてもよく、句読点「%」は、句読点の単語「パーセント」又は「パーセント記号」によって識別されてもよく、句読点「!」は、句読点の単語「感嘆符」によって識別されてもよい。句読点及びそれらの対応する句読点の単語の他の例は、例えば、句読点の単語「スラッシュ」によって識別される句読点「/」、句読点の単語「ハイフン」又は「ダッシュ」によって識別される句読点「−」、句読点の単語「ピリオド」又は「ドット」によって識別される句読点「.」、句読点の単語「カンマ」によって識別される句読点「,」、句読点の単語「コロン」によって識別される句読点「:」、「句読点の単語「セミコロン」によって識別される句読点「;」、句読点の単語「クエスチョンマーク」によって識別される句読点「?」、句読点の単語「アポストロフィ」によって識別される句読点「'」、句読点の単語「開括弧」によって識別される句読点「(」、句読点の単語「閉括弧」によって識別される句読点「)」、句読点の単語「ドル記号」によって識別される句読点「$」、句読点の単語「アスタリスク」によって識別される句読点「*」、及び句読点の単語「アンパサンド」によって識別される句読点「&」などを含んでもよい。制御文字はまた、句読点でない文字とすることができる。例えば、制御文字は、キャリッジリターン又はタブなどとすることができる。
フレーズは、対応する文字を識別するために使用されてもよく、例えば、文字の識別のために使用される単語の綴りを含んでもよい。例えば、字「a」を識別するための単語の綴りは、「apple」又は「alpha」などであってもよい。同様に、字「b」を識別するための単語の綴りは、「boy」又は「bravo」などであってもよい。いくつかの実施例では、対応する文字を識別するためのフレーズは、「appleにあるa」、「boyにあるb」、「Nancyのn」、及び「Maryのm」などの或るフォーマットを有してもよい。いずれかの単語の綴りが、対応する文字を識別するために使用されてもよく、対応する文字を識別するためのフレーズは、いずれかの所望のフォーマットを有することができる。
コマンドは、表示されたテキストを編集すること、及び/又は表示されたテキストに関する1つ以上の他の機能を実行することを可能にすることができる。例示的なコマンドは、「大文字」、「小文字」、「挿入」、「削除」、「置換」、「複製」、「ペースト」、「選択」、又は「検索」などを含む。コマンドは、1つ以上の付随のパラメータを含むことができる。例えば、コマンド「挿入」は、挿入されることになる文字(例えば、「cを挿入」)、挿入の場所、又は挿入の回数などを示すパラメータが付随されてもよい。コマンドは更に、いくつかの実施例では、他のコマンドとの組合せで使用されてもよい。コマンド「挿入」は、例えば、コマンド「大文字」との組合せで使用されてもよい(例えば、「cの大文字を挿入」)。
単語は、複数の文字を含むことができる。いくつかの実施例では、単語は、自然言語の単語「Lincoln」及び「center」などの複数の文字のいずれかの組合せを含むことができる。いくつかの状況では、単語は、予め定められた文字の組合せを含んでもよい。例として、句読点「@」に続く単語は、ドメイン拡張子(例えば、「com」、「net」、「org」)又は頭文字(例えば、FBI、IRS)などを形成する予め定められた文字の組合せを含んでもよい。このタイプの単語は、予め定められた数の文字の組合せを有してもよい。
ASRシステム900の例示的な動作では、音声入力を受信すると、特徴抽出器902は、音声入力を事前処理することができ、事前処理された音声入力を認識エンジン904に提供することができる。いくつかの実施例では、音声入力を事前処理することは、1つ以上の音響特性を音声入力から抽出することを含んでもよい。したがって、特徴抽出器902は、音響特性を音声入力から抽出することができ、抽出された音響特性を認識エンジン904に提供することができる。事前処理された音声入力を受信すると、認識エンジン904は、音声入力のコンテンツを識別することができる。認識エンジン904は、例えば、語彙912、発話認識モデル914、コンテキストデータ916、及び認識されたクレデンシャルモデル918(総合的に、知識リポジトリ910)のうちの1つ以上を使用して、コンテンツを識別してもよい。例えば、認識エンジン904は、音声入力のコンテンツを、知識リポジトリ910に記憶された文字、フレーズ、コマンド、及び/又は単語(総合的に、既知のタイプとして)と比較することができる。1つ以上の一致が発見される場合、認識エンジン904は、コンテンツを既知のタイプのいずれかの組合せとして識別することができる。認識エンジン904は、例えば、第1の文字(例えば、字「a」)、フレーズによって識別される第2の文字(例えば、フレーズ「boyにあるb」によって識別される字「b」)、及び/又は単語(例えば、「Lincoln」)を含むものとして音声入力のコンテンツを識別することができる。
コンテンツが識別されると、認識エンジン904は、音声入力のコンテンツをテキストに変換することができ、音声入力のコンテンツの順序に対応する順番でテキストを表示させることができる。例えば、表示されるテキストの順序は、音声入力内の文字(図10A〜10C)の順序に対応する、「a」、「b」、「r」であってもよい。
いくつかの実施例では、音声入力のコンテンツを識別することは、音声入力に含まれる1つ以上の発声を識別することを含んでもよい。説明されるように、特徴抽出器902によって抽出された音響特性は、コンテンツ識別のために認識エンジン904に提供されてもよい。音響特性に基づいて、認識エンジンは、対応する音声入力内の1つ以上の発声を識別してもよい。いくつかの例では、音響特性は、1つ以上の発声の始め及び終わりを判定するために使用されてもよい。例として、認識エンジン904は、1つ以上の音響特性が長い間の沈黙又は発声の間の中断に対応する(例えば、一致する)と判定してもよく、よって、別個又は個々の発声を識別することができる。別の例として、中断又は沈黙の周波数スペクトルは、文字、フレーズ、コマンド、又は単語の発声の周波数スペクトルとは異なることがある。結果として、周波数スペクトルの分析は、音声入力内の1つ以上の発声の識別のために使用されてもよい。
いくつかの実施形態では、音声入力のコンテンツを識別することは、識別された発声のタイプを判定することを含んでもよい。例えば、識別された発声ごとに、認識エンジン904は、発声のタイプを判定することができる。認識エンジン904は、例えば、発声のタイプが文字、対応する文字を識別するためのフレーズ、コマンド、又は単語に対応するかを判定することができる。いくつかの実施例では、前に認識された文字、フレーズ、単語、及びコマンドは、知識リポジトリ910の1つ以上の部分に記憶されてもよい。例として、知識リポジトリ910に記憶された文字、フレーズ、コマンド、及び単語は、共通して使用される文字、フレーズ、コマンド、及び単語、並びに/又は1つ以上の前の音声入力内の認識エンジン904によって受信されるそれらの文字、フレーズ、及びコマンドを含んでもよい。知識リポジトリ910は、デバイス800、サーバ(例えば、サーバ108)、複数のサーバ(例えば、サーバファーム)、又はそれらの組合せに記憶されてもよい。
上記説明されたように、知識リポジトリ910は、語彙912、発話認識モデル914、コンテキストデータ916、及び/又は認識されたクレデンシャルモデル918を含んでもよい。語彙912は、共通して使用される文字(例えば、26のアルファベット文字)、フレーズ(例えば、NATOの音標アルファベットを含むフレーズ)、コマンド(例えば、編集コマンド)、並びに単語(例えば、自然言語の単語、ドメイン拡張子、及び/又は頭文字)を含むことができる。上記説明されたように、発話認識モデル914は、例えば、音響モデル及び/又は言語モデルを含むことができ、1つ以上の発話認識エンジンを実装することができる。発話認識モデルの実施例は、隠れマルコフモデル、混合ガウスモデル、ディープニューラルネットワークモデル、nグラム言語モデル、及び他の統計モデルを含むことができる。発話認識エンジンの実施例は、動的時間伸縮ベースのエンジン及び重み付き有限状態トランスデューサ(WFST)ベースのエンジンを含むことができる。
いくつかの実施形態では、発話認識モデル914は、ユーザに特有であってもよく、ユーザ特有データを使用して発話認識及び言語モデルジェネレータ913によって生成されてもよい。発話認識及び言語モデルジェネレータ913は、ユーザ入力、ユーザ使用データ、又はユーザプロファイル情報などのユーザ特有データを受信又は取得するように構成されてもよい。発話認識及び言語モデルジェネレータ913は、ユーザ特有データを使用して、1つ以上のユーザ特有発話認識モデル914を生成するように更に構成されてもよい。
コンテキストデータ916は、例えば、ユーザ優先度、ユーザ発話プロファイル、ハードウェア及び/又はソフトウェア状態、収集されるセンサ情報、並びにデジタルアシスタントとユーザとの間の前の対話などを含むことができる。コンテキストデータ916はまた、ユーザがそれにクレデンシャルを提供しているセキュアリンク又はデバイスが適切であることを示す情報を含むことができる。例えば、コンテキストデータ916は、ユーザがクレデンシャルをウェブ電子メールアカウント(例えば、Yahoo、Gmail)、クラウド(例えば、Apple iCloud)アカウント、又はデバイスに提供していることを示してもよい。
認識されたクレデンシャルモデル918は、デジタルアシスタントとのユーザの過去の対話に基づく共通して使用されるクレデンシャルモデル及び/又はクレデンシャルモデルを含むことができる。例えば、認識されたクレデンシャルモデル918は、ユーザ名モデル及びパスワードモデルを含んでもよい。例示的なユーザ名モデルは、firstname.lastname@domain_name.com(例えば、Abraham.Lincoln@Lincolncenter.com)、firstinital.lastname@domain_name.com(例えば、ALincoln@Lincolncenter.com)、又はfirstnamelastname_numerical_digits@domain_name.com(例えば、AbrahamLincoln_123@Lincolncenter.com)などを含んでもよい。
説明されるように、認識エンジン904は、例えば、特徴抽出器902によって提供される音響特性に基づいて、音声入力の発声のタイプを判定することができる。いくつかの実施例では、認識エンジン904は、音声入力の1つ以上の識別された発声に対応する中間認識結果(例えば、音標、音標文字列、及び部分単語)を識別することができる(例えば、音響モデルを使用して)。中間認識結果は、例えば、各々の発声のタイプを判定するために使用されてもよい。認識エンジン904は、いくつかの実施形態では、発声のタイプが文字、フレーズ、コマンド、又は単語に対応するかを判定することができる。例えば、認識エンジン904は、中間認識結果を知識リポジトリ910内の既知のタイプと比較することができる(例えば、言語モデルを使用して)。
いくつかの実施例では、認識エンジン904は、発声の一連の音標(例えば、文字又は単語の発音)を、知識リポジトリ910に含まれる既知のタイプの1つ以上の一連の音標と比較することができる。一連の音標は、発声について識別されてもよい(例えば、音響特性を使用して)。発声の一連の音標が知識リポジトリ910内の既知のタイプの音標の連続と一致する(例えば、実質的に一致する)場合、認識エンジン904は、それに従って、発声のタイプを判定する。音標の連続が一致する度合いは、いくつかの実施例では、信頼度レベルを判定するために使用されてもよい。例として、音標の連続が完全な一致である場合、信頼度レベルは100%であってもよい。別の例として、連続の音標の6つのうち5つが一致する場合、信頼度レベルは90%であってもよい。一連の音標が発声の文字、フレーズ、コマンド、又は単語と一致する(例えば、実質的に一致する)場合、発声のタイプが文字、フレーズ、コマンド、又は単語それぞれであると判定される。
いくつかの実施例では、音声入力の発声のタイプが文字、フレーズ、単語、又はそれらの組合せに対応するとの判定に従って、認識エンジン904は、発声に対応する音声入力コンテンツの表現を取得することができる。表現は、音声表現、テキスト表現、空間/ベクトル表現、又はそれらの組合せであってもよい。
いくつかの実施例では、一連の音標が知識リポジトリ910内の1つよりも多くのタイプに一致する場合、認識エンジン904は、一致したタイプごとに信頼度レベルを判定してもよく、最高信頼度レベルを有するタイプを選択してもよい。例えば、一連の音標が単語(例えば、単語「挿入」)及びコマンド(例えば、コマンド「挿入」)の両方に一致する場合、認識エンジン904は、単語としてのタイプについての信頼度レベル及びコマンドとしてのタイプについての信頼度レベルを判定してもよい。いくつかの実施形態では、信頼度レベルは、音声入力内の追加のコンテンツ又は音声入力に関連する他のコンテキストに基づいて判定されてもよい。例えば、コマンドは、コマンドに従ってアクションを実行するための1つ以上のパラメータが伴ってもよい。結果として、認識エンジン904が音声入力内のコマンドと関連付けられた1つ以上のパラメータを識別する場合、コマンドのタイプについての信頼度レベルが単語のタイプについての信頼度レベルよりも高いと判定してもよい。いくつかの実施例では、認識エンジン904は、コンテキストデータ916に基づいて信頼度レベルを判定することができる。いくつかの実施例では、一致が発見されない場合、認識エンジン904は、デフォルトの構成として、発声が単語(例えば、自然言語の単語)に対応すると判定するように構成されてもよい。いくつかの実施例では、一致が発見されない場合、認識エンジン904はまた、1つ以上の候補タイプを判定するように構成されてもよい。候補タイプは、例えば、各々のタイプの信頼度レベルに基づいて判定されてもよい。いくつかの実施例では、候補タイプは、音声入力のコンテンツの候補表現を取得するために使用されてもよい。候補表現は、音声表現、テキスト表現、空間/ベクトル表現、又はそれらの組合せの形式にあってもよい。候補表現は、選択のためにユーザに提示されてもよい。
発声のタイプの判定は、いずれかの順序、又は文字、フレーズ、単語、若しくはコマンドに関するいずれかの組合せで実行されてもよいことが認識されよう。例えば、認識エンジン904は、発声のタイプが文字に対応するかを最初に判定することができる。発声のタイプが文字に対応しない場合、それは更に、タイプがフレーズ及び単語などに対応するかを判定する。別の例として、認識エンジン904はまた、発声のタイプがフレーズに対応するかを最初に判定することができる。発声のタイプがフレーズに対応しない場合、それは更に、タイプが文字及び単語などに対応するかを判定する。判定はまた、文字、フレーズ、単語、又はコマンドに関して並列して実行されてもよい。
表現を取得すると、認識エンジン904は、表現をテキストに変換することができる。テキストに変換すると、認識エンジン904は、テキストを表示させることができる。
いくつかの実施例では、音声入力のコンテンツを識別することは、信頼度レベルを判定することを含むことができる。信頼度レベルは、例えば、音声入力のコンテンツが正確に識別される可能性を示すことができる。いくつかの実施例では、信頼度レベルは、音声入力の識別されたコンテンツと関連付けられてもよい。説明されるように、いくつかの実施例では、音声入力のコンテンツを識別することは、以下で更に詳細に説明されるように、音声入力の発声を識別すること、発声のタイプを判定すること、及び/又は音声入力のコンテンツの表現を取得することを含んでもよい。したがって、信頼度レベルは、よって、発声の識別、発声の判定されたタイプ、音声入力のコンテンツの取得された表現、又はそれらの組合せと関連付けられてもよい。例えば、認識エンジン904は、関連付けられた信頼度レベルが閾値以上である場合に、特定のタイプの発声を含むものとしてコンテンツを認識してもよい。逆に、認識エンジン904は、関連付けられた信頼度レベルが閾値以下である場合に、いずれのタイプの発声を含むものとしてコンテンツを認識しなくてもよい。代わりに、認識エンジン904は、識別された発声タイプを無視してもよく、発声、エラーメッセージ、又はそれらの組合せのうちの1つ以上の候補タイプを提供してもよい。候補タイプは、例えば、各々のタイプの信頼度レベルに基づいて判定されてもよい。候補タイプは、視覚的形式、聴覚的形式、又はそれらの組合せでユーザに提供されてもよい。いくつかの実施例では、認識エンジン904はまた、エラーメッセージをユーザに提供させてもよい(例えば、「すいません、それを失念しておりました。もう一度言ってもらえますか?(Sorry, I missed that.Can you say it again?)」。
いくつかの実施例では、認識エンジン904は、音声入力コンテンツの表現についての信頼度レベルを取得することができる。前に説明されたように、信頼度レベルは、発声のタイプの判定が正確である確度を示す。信頼度レベルが閾値以上であるとの判定に従って、認識エンジン904は、表現をテキストに変換する。いくつかの実施例では、信頼度レベルが閾値未満であるとの判定に従って、認識エンジン904は、対応する候補表現を取得するために、1つ以上の候補タイプを識別することができる。候補表現は、選択のためにユーザに提供されてもよい。いくつかの実施例では、認識エンジン904は、候補表現、エラーメッセージ(例えば、「あなたが言ったことを認識しておりません、『appleにあるa』などの字又はフレーズを言って下さい(I do not recognize what you said, please say a letter or a phrase such as "a as in apple")」)、又はそれらの組合せを提供することができる。いくつかの実施例では、候補表現は、中間認識結果(例えば、音標、音標文字列、及び部分単語)と知識リポジトリ910に記憶された既知のタイプ(例えば、言語モデルを使用して)との間の一致に基づいて生成されてもよい。
いくつかの実施例では、認識エンジン904は、音声入力に基づいてコマンドを識別することができる。上記説明されたように、いくつかの実施形態では、認識エンジン904は、音声入力の発声を最初に識別することができ、発声のタイプがコマンドに対応するかを判定することができる。発声のタイプがコマンドに対応するとの判定に従って、認識エンジン904は、コマンドに従ってアクションを開始させることができる。例えば、認識エンジン904は、前に表示されたテキストを編集させることができる(例えば、文字を挿入又は削除する)。
いくつかの実施例では、認識エンジン904はまた、学習及び/又は訓練の目的で、1つ以上の発声を記憶させることができる。発声は、例えば、メモリ(例えば、メモリ202)及び/又はデータベースに記憶されてもよい。1つ以上の発声は、いくつかの実施例では、認識エンジン904によって識別される文字、対応する文字を識別するフレーズ、コマンド、及び/又は単語に対応する。それらの発声(例えば、発声の音響特性)は、後続のユーザの発声のタイプをより正確に判定することができるように、知識リポジトリ910の少なくとも一部を更新するために使用されてもよい。
5.音声入力識別の実施例
図10A〜10Fは、様々な実施例に従った、音声入力識別の機能性を示す。本明細書で説明される1つ以上の実施例に従って、図8Aのデバイス800及び/又はリモート810などの電子デバイスは、ユーザによって提供される発話されたユーザ入力(例えば、音声入力、発話入力)を使用して制御されてもよい。デバイス800、リモート810、サーバ(例えば、サーバ108)、又はそれらの組合せは、デジタルアシスタントシステム(デジタルアシスタントシステム700)を実装してもよい。図10A〜10Fを参照して、いくつかの実施例では、デバイス800は、ユーザ1030から、1024A〜Fなどの1つ以上の音声入力を受信してもよい。ユーザ1030は、例えば、ユーザクレデンシャル(例えば、ユーザ名及び/又はパスワード)を口述し、又は別の方法で、入力する目的で、音声入力を提供してもよい。ディスプレイ814は、ユーザ1030が認証の目的でユーザ名及びパスワードを入力することを促し、及び/又はそれを可能にするために使用されてもよい。ユーザは、例えば、デバイス、アカウント、又はサービスなどにログインするためにクレデンシャルを入力することを促されることがある。デバイス800は、ユーザ1030から直接、又はリモート810などの別のデバイスを通じて間接的に音声入力を受信してもよい。音声入力1024A〜Fは、デバイス800のマイクロフォン(例えば、マイクロフォン213)又はリモート810を介して受信されてもよい。いくつかの実施例では、デバイス800は、本明細書で説明される実施例に従って、音声入力1024A〜Fのコンテンツ(例えば、文字、文字を識別するフレーズ、コマンド、単語、又はそれらの組合せ)を識別してもよい。音声入力1024A〜Fのコンテンツの識別は、例えば、自動発話認識システム(例えば、ASRシステム900)を含むデジタルアシスタントによって実行されてもよい。
図10Aを参照して、いくつかの実施例では、デバイス800は、音声入力に基づいて文字を識別することができる。例として、音声入力1024Aを受信すると、デバイス800は、音声入力1024Aの1つ以上の発声を識別することができる。示されるように、音声入力1024Aの識別された発声は、文字「a」を含んでもよい。
1つ以上の発声を識別すると、デバイス800は、発声のタイプを判定することができる。いくつかの実施形態では、判定は、共通して使用されるアルファベット文字、数字の桁及び制御文字、並びに/又はデバイス800がユーザ1030から前に受信した文字など、知識リポジトリに記憶された文字に基づいてもよい。知識リポジトリ910に含まれる文字は、デバイス800又はサーバ(例えば、サーバ108)に記憶されてもよい。例えば、デバイス800は、発声の一連の音標(例えば、文字の発音)を既知の文字の音標の連続に一致させることによって、発声のタイプが文字に対応するかを判定することができる。
いくつかの実施例では、発声のタイプが文字に対応するとの判定に従って、デバイス800は、音声入力1024Aのコンテンツに含まれるものとして文字を識別し(例えば、文字「a」)、文字をテキストに変換する。
テキストへの変換に応じて、デバイス800は、例えば、ディスプレイ814を使用して、音声入力1024Aのコンテンツのテキスト(例えば、文字「a」のテキスト)を表示させることができる。
図10Bを参照して、いくつかの実施例では、デバイス800は、フレーズによって識別される文字を識別することができる。例として、音声入力1024Bを受信すると、デバイス800は、音声入力1024Bの1つ以上の発声を識別することができる。示されるように、音声入力1024Bは、フレーズの対応する文字(例えば、「b」)を識別するためのフレーズ(例えば、「boyにあるb」)を含んでもよい。
音声入力1024Bの1つ以上の発声を識別すると、デバイス800は、発声のタイプを判定することができる。いくつかの実施形態では、判定は、共通して使用されるフレーズなど、知識リポジトリに記憶されたフレーズに基づいてもよい。文字を識別するための共通して使用されるフレーズは、NATOの音標アルファベットで指定された単語の綴り(例えば、Alpha、Bravo、Charlie、Delta、Echo、Foxtrot、Golf、Hotel、India、Juliet、Kilo、Lima、Mike、November、Oscar、Papa、Quebec、Romeo、Sierra、Tango、Uniform、Victor、Whiskey、X−ray、Yankee、Zulu)を使用してもよい。
いくつかの実施形態では、知識リポジトリ内のフレーズはまた、前に受信されたフレーズを含んでもよい。例えば、ユーザ1030は、NATOの音標アルファベットを、文字を識別するための単語の綴りとして使用しないことがある。代わりに、ユーザ1030は、「Aaronにあるa」又は「Lincolnのl」などのカスタマイズされたフレーズを前に使用していることがある。デバイス800はまた、ユーザ1030が前に提供したそのようなカスタマイズされたフレーズを知識リポジトリに記憶することができる。結果として、ユーザ1030が前に使用されたカスタマイズされたフレーズを声に出す場合、デバイス800はまた、発声のタイプが対応する文字を識別するためのフレーズに対応すると判定することができる。知識リポジトリ内の対応する文字を識別するためのフレーズは、デバイス800又はサーバ(例えば、サーバ108)に記憶されてもよい。
説明されるように、発声のタイプは、ユーザが音声入力を提供したことに応じて判定されてもよい。例えば、デバイス800は、発声の一連の音標(例えば、フレーズの発音)を知識リポジトリ内のフレーズの音標の連続に一致させることによって、発声のタイプがフレーズに対応するかを判定することができる。
いくつかの実施例では、発声のタイプが対応する文字を識別するためのフレーズに対応するとの判定に従って、デバイス800は、音声入力1024Bのコンテンツに含まれるものとしてフレーズを識別し、フレーズによって識別される文字をテキストに変換する。テキストへの変換に応じて、デバイス800は、例えば、ディスプレイ814を使用して、音声入力1024Bのコンテンツのテキスト(例えば、文字「b」のテキスト)を表示させることができる。
図10Cを参照して、いくつかの実施例では、デバイス800は、追加の音声入力に基づいて追加の文字及びフレーズを識別することができる。例として、音声入力1024Cを受信すると、デバイス800は、音声入力1024Cの1つ以上の発声を識別することができる。示されるように、音声入力1024Cは、追加の文字(例えば、「r」、「a」、「h」、及び「a」)、並びに追加のフレーズ(例えば、「Maryにあるm」)を含んでもよい。説明されるように、音声入力1024Cを受信したことに応じて、デバイス800は、音声入力1024Cの1つ以上の発声を識別することができ、発声のタイプを判定することができ、音声入力1024Cのコンテンツの識別された文字をディスプレイ814上で表示するためにテキストに変換することができる。
いくつかの実施例では、デバイス800Cは、音声入力に基づいて句読点の単語を識別することができる。音声入力1024Cを受信すると、例えば、デバイス800は、音声入力1024Cの1つ以上の発声を識別することができる。示されるように、音声入力1024Cは、句読点「@」を識別する(例えば、対応する)句読点の単語「at」を含んでもよい。
音声入力1024Cの1つ以上の発声を識別すると、デバイス800は、発声のタイプを判定することができる。いくつかの実施形態では、判定は、共通して使用される句読点の単語(例えば、「at」、「ポンド記号」、若しくは「ドル記号」など)など、知識リポジトリに記憶された句読点の単語、及び/又はデバイス800がユーザ1030から前に受信した、カスタマイズされた句読点の単語に基づいてもよい。例えば、句読点「*」に対応する句読点の単語「アスタリスク」の代わりに、ユーザ1030は、句読点の単語「star」を前に声に出していることがあり、それが句読点「*」にも対応することを意図している。そのようなカスタマイズされた句読点の単語はまた、知識リポジトリに記憶されてもよい。知識リポジトリに含まれる句読点の単語は、デバイス800又はサーバ(例えば、サーバ108)に記憶されてもよい。
説明されるように、発声のタイプは、ユーザが音声入力を提供したことに応じて判定されてもよい。例えば、デバイス800は、発声の一連の音標(例えば、文字の発音)を知識リポジトリ910に含まれる句読点の単語の音標の連続に一致させることによって、発声のタイプが句読点の単語に対応するかを判定することができる。いくつかの状況の下、1つよりも多い実質的な一致が存在することがある。したがって、デバイス800は、句読点の単語のコンテキストに基づいて、及び/又は信頼度レベルを使用して、一致の曖昧さをなくすことができる。例として、デバイス800は、ユーザ1030によって提供された音声入力から識別された1つ以上の他の発声に基づいて、どの一致が適切であるかを判定してもよい。別の例として、デバイス800は、一致したタイプごとに信頼度レベルを判定してもよく、最高信頼度レベルを有するタイプを選択してもよい。例えば、一連の音標が句読点の単語(例えば、句読点の単語「at」)及び単語(例えば、自然言語の単語「at」)の両方に一致する場合、デバイス800は、句読点の単語としてのタイプについての信頼度レベル及び単語としてのタイプについての信頼度レベルを判定することができる。いくつかの実施形態では、信頼度レベルは、音声入力1024C内の追加の発声に基づいて判定されてもよい。例えば、認識されたクレデンシャルモデルを使用して、デバイス800は、ユーザが音声入力1024C内のユーザ名として電子メールアドレスを提供することを意図していると判定してもよい。したがって、デバイス800は、句読点の単語のタイプについての信頼度レベルが自然言語の単語のタイプについての信頼度レベルよりも高いと判定することができる。
いくつかの実施例では、発声のタイプが句読点の単語に対応するとの判定に従って、デバイス800は、音声入力1024Cのコンテンツの句読点の単語(例えば、単語「at」)を識別し、句読点の単語を対応する句読点のテキストに変換する。例えば、デバイス800は、句読点の単語「at」を句読点「@」のテキストに変換することができる。図10Cを参照して、変換に応じて、デバイス800は、例えば、ディスプレイ814を使用して、音声入力1024Cのコンテンツのテキスト(例えば、句読点「@」のテキスト)を表示させることができる。
図10Dを参照して、いくつかの実施例では、デバイス800は、例えば、音声入力1024Dの1つ以上の発声を識別することによって、音声入力に基づいて1つ以上の単語を識別することができる。示されるように、音声入力1024Dは、各々が複数の文字のいずれかの組合せを含むことができる、1つ以上の単語を含んでもよい。単語は、例えば、「Lincoln」及び「center」などの自然言語の単語であってもよい。
音声入力1024Dの発声を識別すると、デバイス800は、発声のタイプを判定することができる。いくつかの実施例では、判定は、クレデンシャルを入力するための共通して使用される単語(例えば、「yahoo」、「gmail」、及び「aol」)、並びに/又はユーザ1030が前に声に出した単語など、知識リポジトリに記憶された単語に基づいてもよい。例えば、ユーザ1030は、ユーザ名を入力するための単語「Lincoln」及び「center」を前に声に出していることがある。よって、単語「Lincoln」及び「center」は、知識リポジトリに記憶される。知識リポジトリに含まれる単語は、デバイス800又はサーバ(例えば、サーバ108)に記憶されてもよい。
デバイス800は、発声の一連の音標(例えば、単語の発音)を知識リポジトリに含まれる単語の音標の連続に一致させることによって、発声のタイプが単語に対応するかを判定することができる。
いくつかの実施例では、デバイス800は、予め定められた構成に基づいて、発声のタイプが単語に対応するかを判定することができる。例えば、デバイス800は、発声のデフォルトのタイプが単語に対応するように、発声のタイプを判定するように事前構成されてもよい。例えば、音声入力を受信すると、デバイス800は、1つ以上の発声を識別してもよく、各々の識別された発声のタイプが文字(例えば、字、数字の桁、若しくは句読点などの制御文字)、対応する文字を識別するフレーズ、又はコマンドに対応するかを判定してもよい。デバイス800が、発声のタイプがそれらのタイプのいずれにも対応しないと判定する場合、デバイス800は、デフォルトで、発声のタイプが単語に対応すると判定するように構成されてもよい。
いくつかの実施例では、発声のタイプが単語に対応するとの判定に従って、デバイス800は、単語(例えば、単語「Lincoln」)を識別し、識別された単語をテキストに変換する。図10Dを参照して、テキストに変換すると、デバイス800は、ディスプレイ814を使用して、音声入力1024Dのコンテンツのテキスト(例えば、単語「Lincoln」のテキスト)を表示させることができる。
図10Eを参照して、いくつかの実施例では、デバイス800は、例えば、音声入力1024E内の1つ以上の発声を識別することによって、追加の句読点の単語を識別することができる。示されるように、音声入力1024Eは、追加の句読点の単語(例えば、句読点の単語「ドット」)を含んでもよい。音声入力1024Eを受信したことに応じて、デバイス800は、発声を識別することができ、発声のタイプを句読点の単語として判定することができ、発声をディスプレイ814上で表示するためにテキストに変換することができる。
いくつかの実施例では、デバイス800はまた、音声入力に基づいて、予め定められた文字の組合せを有する単語を識別することができる。例として、音声入力1024Eを受信すると、デバイス800は、音声入力1024Eの発声を識別することができる。示されるように、音声入力1024Eは、予め定められた文字の組合せを有する単語(例えば、ドメイン拡張子)を含んでもよい。説明されるように、予め定められた文字の組合せを有する単語は、例えば、ドメイン拡張子(例えば、「com」、「net」、及び「org」)又は頭文字(例えば、FBI、IRS)などを形成する複数の文字を含んでもよい。
音声入力1024Eに基づいて発声を識別すると、デバイス800は、発声のタイプを判定することができる。いくつかの実施例では、判定は、前に認識され、知識リポジトリ(例えば、知識リポジトリ910)に記憶された単語に基づいてもよい。例として、それらの単語は、クレデンシャルを入力するためのいくつかの共通して使用される単語(例えば、ドメイン拡張子「com」、「net」、及び「org」)を含んでもよい。別の実施例として、それらの単語は、頭文字「FBI」、「IRS」、及び「USPTO」など、ユーザ1030が前に声に出した単語を含んでもよい。よって、前に声に出された単語はまた、知識リポジトリに記憶されてもよい。知識リポジトリに含まれる単語は、デバイス800又はサーバ(例えば、サーバ108)に記憶されてもよい。
説明されるように、ユーザが音声入力を提供したことに応じて、発声のタイプが判定されてもよい。例えば、上記説明されたように、デバイス800は、発声の一連の音標を知識リポジトリ内の単語の音標の連続に一致させることによって、発声のタイプが予め定められた文字の組合せを有する単語に対応するかを判定することができる。
いくつかの実施例では、発声のタイプが予め定められた文字の組合せを有する単語に対応するとの判定に従って、デバイス800は、予め定められた文字の組合せを有する単語(例えば、「com」)を識別し、単語をテキストに変換する。図10Eを参照して、テキストへの変換に応じて、デバイス800は、ディスプレイ814を使用して、音声入力1024Eのコンテンツのテキスト(例えば、単語「com」のテキスト)を表示させることができる。
図10Fを参照して、いくつかの実施例では、デバイス800は、追加の文字、句読点の単語、及びフレーズを識別することができる。デバイス800はまた、コマンドを識別することができる。例として、音声入力1024Fを受信すると、デバイス800は、音声入力1024F内の1つ以上の発声を識別することができる。示されるように、音声入力1024Fは、文字、フレーズ、及びコマンドの混合(例えば、文字「a」、句読点の単語「アスタリスク」、文字「b」、コマンド「大文字」、文字「c」、句読点の単語「ドル記号」、数字の桁「1」、「2」、及び「3」、並びに句読点の単語「パーセント記号」)を含んでもよい。音声入力1024Fを受信したことに応じて、デバイス800は、文字「a」、句読点の単語「アスタリスク」、文字「b」、句読点の単語「ドル記号」、数字の桁「1」、「2」、及び「3」、並びに句読点の単語「パーセント記号」の発声を識別することができる。デバイス800はまた、それらの発声のタイプを判定することができ、それらの発声をディスプレイ814上で表示するためにテキストに変換することができる。
図10Fを参照して、デバイス800はまた、例えば、音声入力1024F内の発声を識別することによって、音声入力に基づいてコマンドを識別することができる。示されるように、音声入力1024Fは、コマンド(例えば、コマンド「大文字」)を含んでもよい。コマンドによって、表示されたテキストを編集すること、又は表示されたテキストに関していずれかの所望の機能を実行することが可能になる。例示的なコマンドは、「大文字」、「小文字」、「挿入」、「削除」、「置換」、「複製」、「ペースト」、「選択」、又は「検索」などを含む。
音声入力1024Fに基づいて発声を識別すると、デバイス800は、発声のタイプを判定することができる。いくつかの実施例では、判定は、前に認識され、知識リポジトリ(例えば、知識リポジトリ910)に記憶されたコマンドに基づいてもよい。いくつかの実施形態では、それらのコマンドは、「挿入」、「削除」、「大文字」、又は「小文字」など、共通して使用されるコマンドを含んでもよい。それらのコマンドはまた、デバイス800がユーザ1030から前に受信したコマンドを含んでもよい。知識リポジトリに含まれるコマンドは、デバイス800又はサーバ(例えば、サーバ108)に記憶されてもよい。デバイス800は、発声の一連の音標(例えば、コマンドの発音)を知識リポジトリ内のコマンドの音標の連続に一致させることによって、発声のタイプがコマンドに対応するかを判定することができる。
いくつかの実施例では、発声のタイプがコマンドに対応するとの判定に従って、デバイス800は、開始されることになるコマンドに従ってアクションを開始させることができる。例えば、図10Fを参照して、「大文字」の発声のタイプがコマンドに対応するとの判定に従って、デバイス800は、音声入力1024Fのコンテンツ(例えば、文字「c」の発声)をテキストに変換させることができ、「c」のテキストをその大文字の形式「C」に変換するアクションを開始させることができる。
図11A〜11Eは、様々な実施例に従った、音声入力識別の機能性を示す。図11Aを参照して、いくつかの実施例では、デバイス800は、追加の文字及びフレーズを識別することができる。例えば、音声入力1144Aを受信すると、デバイス800は、音声入力1144A内の1つ以上の発声を識別することができる。示されるように、音声入力1144Aは、文字、フレーズ、及びコマンドの混合(例えば、文字「a」、フレーズ「boyにあるb」、文字「r」、「a」、及び「h」)を含んでもよい。説明されるように、音声入力1144Aを受信したことに応じて、デバイス800は、文字「a」、「r」、及び「a」、並びにフレーズ「boyにあるb」の発声を識別することができ、それらをテキストに変換することができ、テキストをディスプレイ814上で表示させることができる。
デバイス800はまた、音声入力に基づいて追加のコマンドを識別することができる。例として、デバイス800は、文字「h」を文字「s」として誤って識別することがあり、したがって、文字「h」の代わりに文字「s」をディスプレイ814上で表示させる。図11Aに示されるように、ユーザ1130は、そのような誤りを修正することを望むことがあり、よって、音声入力1144Aにおいて、文字「s」を削除することを意図する、「削除」を声に出すことがある。いくつかの実施例では、ユーザ1130は、代わりに、ユーザの意図された入力をより明確に強調するために、「Henryにあるh」と声に出すことがある。
いくつかの実施例では、音声入力1144A内の発声のタイプがコマンドに対応するとの判定に従って、デバイス800は、コマンドに従ってアクションを開始することができる。例えば、図11Aを参照して、音声入力1144A内の発声のタイプがコマンド(例えば、コマンド「削除」)に対応するとの判定に従って、デバイス800は、ディスプレイ814上で表示された現在の文字又は直接先行する文字を削除させることができる(例えば、文字「s」)。いくつかの実施例では、1つよりも多い「削除」コマンドが識別される場合、デバイス800は、ディスプレイ814上で表示された現在の文字又は1つ以上の先行する文字を削除させることができる。例えば、音声入力1144Aが2つの連続したコマンド「削除」を含む場合、デバイス800は、2つの直接先行する文字(例えば、文字「s」及び「a」)を削除させることができ、音声入力1144Aが3つの連続したコマンド「削除」を含む場合、デバイス800は、3つの直接先行する文字(例えば、文字「s」、「a」、及び「r」)を削除させることなどができる。
いくつかの実施例では、コマンド「削除」を含む音声入力を提供した後、ユーザ1030は、例えば、フレーズ(例えば、「Henryにあるh」)を使用して、ユーザの意図を明確にするために追加の音声入力を提供してもよい。音声入力1144Aを受信すると、デバイス800は、音声入力1144Aに基づいて、正確な文字(例えば、「h」)を識別することができる。例えば、デバイス800は、フレーズの発声を識別することができ、識別に基づいて正確な文字をテキストに変換することができ、ディスプレイ814上でテキストを表示させることができる。図11Aに示されるように、デバイス800は、コマンドに従ったアクションの実行の結果として(例えば、「s」を削除し、「h」を表示する)、ディスプレイ814に音声入力1144Aのコンテンツのテキストを表示させることができる。
図11Bを参照して、いくつかの実施例では、デバイス800は、追加のコマンドを識別することができる。例として、ユーザ1130は、文字「a」を挿入することを望むことがあり、よって、「『a』を挿入して下さい。(insert 'a.')」と声に出すことがある。
いくつかの実施例では、発声のタイプがコマンド(例えば、「挿入」)に対応するとの判定に従って、デバイス800は、コマンドに従ってアクションを開始させることができる。例えば、図11Bに示されるように、音声入力1144Bの発声のタイプがコマンドに対応するとの判定に従って、デバイス800は、コマンド「挿入」に続く文字(例えば、「a」)をディスプレイ814上で表示された現在の文字に直接先行する位置(例えば、文字「m」に先行する)において挿入させることができる。図11Bに示されるように、デバイス800は、コマンドに従ったアクションの実行の結果として(例えば、文字「m」の前に文字「a」を挿入すること)、音声入力1144Bのテキストを表示させることができる(例えば、ディスプレイ814を使用して)。
図11Cを参照して、いくつかの実施例では、コマンドは、1つ以上のパラメータとの組合せで提供されてもよい。例として、ユーザ1130は、音声入力の1144Cほとんどの部分がユーザ1130によって提供された後まで不適切な入力を認識しないことがある。例えば、ユーザ1130は、ユーザ1030がユーザ名を入力することを試みる際に「ドット」、「com」を声に出した後まで文字「a」が欠けていることを認識しないことがある。結果として、ユーザ1130は、単語「abraham」内の字「h」と「m」との間に文字「a」を挿入することを望むことがある。したがって、ユーザ1130は、コマンド「挿入」を含み、更に、「『at』の前の『h』と『m』との間の『a』」と指定する音声入力1144Cを提供してもよい。いくつかの実施例では、音声入力1144Cは、「単語『abraham』内で『h』と『m』との間に『a』を挿入して下さい。(insert 'a'between 'h'and 'm'in the word 'abraham.')」などのコマンドを含んでもよい。説明されるように、音声入力1144Cを受信すると、デバイス800は、音声入力1144C内の発声を識別することができる。
発声を識別すると、デバイス800はまた、発声のタイプがコマンド(例えば、「挿入」)及び1つ以上の関連付けられたパラメータに対応するかを判定することができる。いくつかの実施例では、デバイス800は、発声のうちの1つがコマンド(例えば、「挿入」)に対応するかを最初に判定することができる。発声のタイプがコマンドに対応するとの判定に従って、デバイス800は更に、コマンドに従ってアクションを実行するための1つ以上のパラメータがコマンドに伴うかを判定することができる。そのようなパラメータは、例えば、挿入又は削除されることになる文字(例えば、「a」)、及び編集する位置(例えば、「『at』の前の『h』と『m』との間」、「単語『abraham』内の『h』と『m』との間」)を含んでもよい。いくつかの実施例では、コマンドに1つ以上のパラメータが伴うかの判定によって、デフォルトの構成に従ってではなく、ユーザの意図に従ってアクションを開始させることが可能になる。例えば、以下で説明されるように、デバイス800は、コマンド及び1つ以上のデフォルトの構成(例えば、直接先行する文字を削除し、又は現在の文字の後に挿入するなどのためのデフォルトの構成)に従ってではなく、コマンド及びパラメータに従ってアクションを開始させることができる。
コマンドに1つ以上のパラメータが伴うとの判定に従って、デバイス800は、コマンド及びパラメータに対応するアクションを開始させることができる。例えば、図11Cに示されるように、「挿入」の発声のタイプがコマンドに対応するとの判定、及び「挿入」コマンドを伴うパラメータが存在するとの判定に従って、デバイス800は、コマンド(例えば、字「a」などの対応する文字を挿入するための)及びパラメータ(例えば、単語「abraham」内の「h」と「m」との間)に従ってアクションを開始させることができる。図11Cを参照して、デバイス800は、コマンド(例えば、文字「a」を正確な位置に挿入する)及びパラメータに従ったアクションの実行の結果として、音声入力1144Cのコンテンツのテキストを表示させることができる(例えば、ディスプレイ814を使用して)。
図11Dを参照して、デバイス800は、1つ以上の追加のコマンドを識別することができる。例として、ユーザ1130は、前の文字を繰り返すことがある。例えば、音声入力1144Dにおいて、パスワード内で文字「b」を2回入力することを意図するユーザ1130は、「boyにあるb」とそれに続いてコマンド「繰り返し」を声に出すことがある。
説明されるように、発声のタイプがコマンドに対応するとの判定に従って、デバイス800は、コマンドに従ってアクションを開始させることができる。例えば、図11Dに示されるように、デバイス800は、コマンド(例えば、直接先行する文字を繰り返すための)に従ってアクションを開始させることができる。図11Dを参照して、デバイス800は、コマンドに従ったアクションの実行の結果として(例えば、追加の文字「b」を表示する)、音声入力1144Dのコンテンツのテキストを表示させることができる。
図10A〜10F及び11A〜11Dは、例としてデバイス800を使用して説明されるが、代わりに、本明細書で説明されるデジタルアシスタントの機能及び処理のうちの1つ以上がサーバ(例えば、サーバ108)又はデバイス800及びサーバの組合せによって実行されてもよいことが認識されよう。例えば、音声入力1024A〜Fのうちの1つ以上を受信すると、デバイス800は、音声入力1024A〜Fを表すデータをサーバ108に提供することができ、サーバ108は、音声入力1024A〜Fのコンテンツを識別することができる。例として、サーバ108は、1つ以上の発声を識別することができ、1つ以上の発声のタイプを判定することができ、音声入力1024A〜Fのコンテンツの表現を取得することができる。いくつかの実施例では、サーバ108は、音声入力1024A〜Fのコンテンツの表現をデバイス800に提供することができる。音声入力1024A〜Fのコンテンツの表現をサーバ108から受信すると、デバイス800は、取得された表現をテキストに変換することができ、ディスプレイ814上でテキストを表示させることができる。いくつかの実施例では、サーバ108は、音声入力1024A〜Fの表現をテキストに変換することができ、テキストをデバイス800に提供することができる。その後、デバイス800は、ディスプレイ814上でテキストを表示させることができる。
6.音声入力を識別する処理
図12A〜Dは、いくつかの実施形態に従った、音声入力識別のための例示的な処理1200のフローチャートを示す。処理1200は、1つ以上のデバイス104、108、200、400、600、800、又は810(図1、2A、4、6A〜B、又は8A〜8B)を使用して実行されてもよい。処理1200における動作は、任意選択的に組み合わされ、若しくは分離され、及び/又はいくつかの動作の順序が任意選択的に変更される。
図12Aを参照して、ブロック1202において、音声入力が受信される。音声入力は、文字、フレーズ、コマンド、及び/又は単語に対応する1つ以上の発声を含んでもよい。音声入力は、ユーザ名を表す第1のユーザクレデンシャル又はパスワードを表す第2のユーザクレデンシャルのうちの少なくとも1つに対応することができる。
ブロック1204において、第1の文字、第2の文字を識別するフレーズ、及び単語は、音声入力に基づいて識別される。いくつかの実施例では、第1の文字は、字、数字の桁、制御文字、又は空白のうちの少なくとも1つを含む。制御文字は、句読点の単語によって識別される句読点、又は非句読点の文字(例えば、タブ、キャリッジリターン)を含むことができる。第2の文字を識別するフレーズは、第2の文字の識別を支援するための単語の綴りを含むことができる。単語は、例えば、自然言語の単語を表す複数の文字のいずれかの組合せを含んでもよい。単語はまた、例えば、ドメイン拡張子及び/又は頭文字を表す、予め定められた文字の組合せを含んでもよい。
いくつかの実施例では、音声に基づく第1の文字、第2の文字を識別するフレーズ、及び単語は、ユーザと関連付けられたコンテキストデータ又は1つ以上の認識されたクレデンシャルモデルのうちの少なくとも1つに基づいて識別される。例えば、コンテキストデータは、ユーザのカレンダ、連絡先、ユーザの発話プロファイル、又はいずれかの他のユーザ特有データを含んでもよい。いくつかの実施例では、認識されたクレデンシャルモデルは、ユーザ名のフォーマット(例えば、firstname_lastname@domain_name.com、firstinitial_lastname@domain_name.org)などの認識されたクレデンシャルのフォーマット、又は字、格、制御文字、及び数字の桁の混合などのパスワードのフォーマットを表すことができる。
いくつかの実施例では、音声に基づく第1の文字、第2の文字を識別するフレーズ、及び単語は、視線検出に基づいて識別される。例えば、音声入力をユーザから受信する間、ユーザが或る方向又は領域を見ているかが判定されてもよい(例えば、カメラを使用することによって)。方向又は領域がクレデンシャルを入力するためのキーボード又はキーに対応すると判定される場合、ユーザが見ている方向又は領域の情報は、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することを支援することができる。
ブロック1206において、音声入力のコンテンツは、ユーザデバイス(例えば、図10A〜10F及び11A〜11Dにおけるデバイス800)に記憶された1つ以上の発話認識モデルに基づいて識別されてもよい。いくつかの実施例では、識別は、サーバ(例えば、サーバ108)と通信することなくユーザデバイス上で実行されてもよい。
ブロック1208において、いくつかの実施例では、音声入力のコンテンツの識別は、ユーザデバイス及びサーバを使用して実行されてもよい。例えば、識別は、音声入力を表すデータをユーザデバイスからサーバに提供することを含むことができる。サーバは、サーバに記憶された1つ以上の言語モデルに基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語のうちの少なくとも1つの識別を実行することができる。次いで、ユーザデバイスは、サーバから、識別された第1の文字、第2の文字を識別する識別されたフレーズ、又は識別された単語のうちの少なくとも1つを表すデータを受信する。
図12Bを参照して、ブロック1212において、音声入力のコンテンツの識別は、音声入力の発声を識別することを含む。ブロック1214において、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、発声のタイプを判定することを含む。
ブロック1216において、発声のタイプが認識された文字に対応するかが判定される。ブロック1218において、発声について、発声が制御文字に対応するかが判定される。ブロック1220において、発声が制御文字に対応するとの判定に従って、発声について、発声が句読点の単語に対応するかが判定される。
ブロック1221において、発声が句読点の単語に対応するとの判定に従って、句読点の単語に対応する句読点の表現が取得される。ブロック1222において、発声が句読点の単語に対応しないとの判定に従って、句読点の単語以外の制御文字の表現が取得される。
ブロック1224において、発声のタイプが第2の文字を識別する認識されたフレーズに対応するかが判定される。ブロック1226において、発声のタイプが単語に対応するかが判定される。
ブロック1228において、判定された発声のタイプに基づいて、発声に対応する、第1の文字、フレーズによって識別される第2の文字、又は単語の表現が取得される。いくつかの実施例では、表現は、音声表現、テキスト表現、空間/ベクトル表現、又はそれらの組合せを含んでもよい。
ブロック1230において、表現についての信頼度レベルが取得される。信頼度レベルは、識別の正確度を示す。ブロック1232において、信頼度レベルが閾値以上であるかが判定される。ブロック1234において、信頼度レベルが閾値以上であるとの判定に従って、発声に対応する、第1の文字、フレーズによって識別される第2の文字、又は単語の表現がテキストに変換される。ブロック1236において、信頼度レベルが閾値未満であるとの判定に従って、1つ以上の候補表現、エラーメッセージ、又はそれらの組合せが提供されてもよい。
ブロック1238において、少なくとも1つのコマンドが識別されてもよい。コマンドによって、表示されたテキストの編集が可能になる。ブロック1240において、コマンドを識別するために、少なくとも1つの発声が識別される。ブロック1242において、発声のタイプが認識されたコマンドに対応するかが判定される。ブロック1244において、発声のタイプが認識されたコマンドに対応するとの判定に従って、表示されたテキストを編集するための認識されたコマンドに従ってアクションが開始される。
ブロック1246において、少なくとも1つのコマンドに対応する発声、及び少なくとも1つのコマンドに対応する発声と関連付けられた情報が記憶される。少なくとも1つのコマンドに対応する発声と関連付けられた情報は、例えば、ユーザがコマンド「削除」を声に出した回数を含むことができる。情報は、識別の正確度を示すことができる。
ブロック1248において、識別に応じて、第1の文字、第2の文字、及び単語がテキストに変換される。ブロック1250において、テキストは、ディスプレイ上で、音声入力内の第1の文字、第2の文字、及び単語の順序に対応する順番で表示される。例えば、音声入力は、第1の文字と、それに続く単語と、それに続く第2の文字を識別するフレーズの順序で提供されてもよい。よって、表示されるテキストは、第1の文字と、それに続く単語と、それに続く第2の文字の順序にある。
ブロック1252において、音声入力の1つ以上の識別された発声、第1の文字に対応する1つ以上の識別された発声、第2の文字を識別するフレーズ、及び単語が記憶されてもよい。発声を記憶することによって、識別の精度を改善するために、デジタルアシスタントの学習及び訓練が可能となってもよい。
7.電子デバイス
図13は、図9、10A〜10F、及び11A〜11Dを参照して説明される実施例を含む、様々な説明される実施例の原理に従うように構成された電子デバイス1300の機能的ブロック図を示す。デバイスの機能的ブロックは、任意選択的に、様々な説明される実施例の原理を実施するために、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組合せで実装されてもよい。図13で説明される機能的ブロックは、任意選択的に、様々な説明される実施例の原理を実装するために、組み合わされてもよく、又はサブブロックに分離されてもよいことが当業者によって理解される。したがって、本明細書における説明は、任意選択的に、本明細書で説明される機能的ブロックのいずれかの可能な組合せ、分離、又は更なる定義をサポートする。
図10に示されるように、電子デバイス1300は、マイクロフォン1302及び処理ユニット1308を含むことができる。いくつかの実施例では、処理ユニット1308は、受信ユニット1310、識別ユニット1312、変換ユニット1314、及び使役ユニット1316を含み、任意選択的に、提供ユニット1318、判定ユニット1320、取得ユニット1322、及び記憶ユニット1324を含む。
処理ユニット1308は、音声入力を受信し(例えば、受信ユニット1310)で)、音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別する(例えば、識別ユニット1312で)ように構成されている。処理ユニット1308は、識別に応じて、第1の文字、第2の文字、及び単語をテキストに変換し(例えば、変換ユニット1314で)、ディスプレイで、音声入力内の第1の文字、第2の文字、及び単語の順序に対応する順番でテキストを表示させる(例えば、使役ユニット1316で)ように更に構成されている。
いくつかの実施例では、第1の文字は、字、数字の桁、制御文字、又は空白のうちの少なくとも1つを含む。
いくつかの実施例では、制御文字は、句読点の単語によって識別される句読点を含む。
いくつかの実施例では、フレーズは、第2の文字の識別を支援するための単語の綴りを含む。
いくつかの実施例では、単語は、複数の文字を含む。
いくつかの実施例では、複数の文字は、ドメイン拡張子又は頭文字のうちの少なくとも1つを表す。
いくつかの実施例では、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、ユーザデバイスに記憶された1つ以上の発話認識モデルに基づいて、第1の文字、第2の文字を識別するフレーズ、又は単語のうちの少なくとも1つを識別すること(例えば、識別ユニット1312で)を含む。
いくつかの実施例では、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、音声入力を表すデータをサーバに提供すること(例えば、提供ユニット1318で)、並びにサーバから、識別された第1の文字、第2の文字を識別する識別されたフレーズ、又は識別された単語のうちの少なくとも1つを表すデータを受信すること(例えば、受信ユニット1310で)を含む。
いくつかの実施例では、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、サーバに記憶された1つ以上の言語モデルに基づいて、第1の文字、第2の文字を識別するフレーズ、又は単語のうちの少なくとも1つを識別すること(例えば、識別ユニット1312で)を含む。
いくつかの実施例では、音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、音声入力の発声を識別すること(例えば、識別ユニット1312で)、発声のタイプを判定すること(例えば、判定ユニット1320で)、並びに判定された発声のタイプに基づいて、発声に対応する、第1の文字、フレーズによって識別される第2の文字、又は単語の表現を取得すること(例えば、取得ユニット1322で)を含む。
いくつかの実施例では、発声のタイプを判定することは、発声のタイプが認識された文字に対応するかを判定すること(例えば、判定ユニット1320で)、発声のタイプが第2の文字を識別する認識されたフレーズに対応するかを判定すること(例えば、判定ユニット1320で)、及び発声のタイプが単語に対応するかを判定すること(例えば、判定ユニット1320で)のうちの少なくとも1つを実行することを含む。
いくつかの実施例では、発声のタイプが認識された文字に対応するかを判定することは、発声について、発声が制御文字に対応するかを判定すること(例えば、判定ユニット1320で)、及び発声が制御文字に対応するとの判定に従って、発声について、発声が句読点の単語に対応するかを判定すること(例えば、判定ユニット1320で)を含む。
いくつかの実施例では、判定された発声のタイプに基づいて、文字の表現を取得することは、発声が句読点の単語に対応するとの判定に従って、句読点の単語に対応する句読点の表現を取得すること(例えば、取得ユニット1322で)、発声が句読点の単語に対応しないとの判定に従って、句読点の単語以外の制御文字の表現を取得すること(例えば、取得ユニット1322で)を含む。
いくつかの実施例では、音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、表現についての信頼度レベルを取得すること(例えば、取得ユニット1322で)、信頼度レベルが閾値以上であるかを判定すること(例えば、判定ユニット1320で)を更に含む。
いくつかの実施例では、第1の文字、第2の文字、及び単語をテキストに変換することは、信頼度レベルが閾値以上であるとの判定に従って、発声に対応する、第1の文字、フレーズによって識別される第2の文字、又は単語の表現をテキストに変換すること(例えば、変換ユニット1314で)、信頼度レベルが閾値未満であるとの判定に従って、1つ以上の候補表現、エラーメッセージ、又はそれらの組合せを提供すること(例えば、提供ユニット1318で)を含む。
いくつかの実施例では、処理ユニット1308は、少なくとも1つのコマンドを識別するように更に構成され(例えば、識別ユニット1312で)、少なくとも1つのコマンドによって、表示されたテキストを編集することが可能になる。
いくつかの実施例では、少なくとも1つのコマンドを識別することは、少なくとも1つの発声を識別すること(例えば、識別ユニット1312で)、発声のタイプが認識されたコマンドに対応するかを判定すること(例えば、判定ユニット1320で)、及び発声のタイプが認識されたコマンドに対応するとの判定に従って、表示されたテキストを編集するための認識されたコマンドに従ってアクションを開始させること(例えば、使役ユニット1316で)を含む。
いくつかの実施例では、処理ユニット1308は、少なくとも1つのコマンドに対応する発声を記憶し(例えば、記憶ユニット1324で)、少なくとも1つのコマンドに対応する発声と関連付けられた情報を記憶する(例えば、記憶ユニット1324で)ように更に構成されている。
いくつかの実施例では、音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、ユーザと関連付けられたコンテキストデータ又は1つ以上の認識されたクレデンシャルモデルのうちの少なくとも1つに基づいている。
いくつかの実施例では、ユーザと関連付けられたコンテキストデータは、ユーザの発話プロファイルを含む。
いくつかの実施例では、1つ以上の認識されたクレデンシャルモデルは、1つ以上の認識されたクレデンシャルのフォーマットを表す。
いくつかの実施例では、音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、視線検出に基づいている。
いくつかの実施例では、音声入力は、ユーザ名を表す第1のユーザクレデンシャル又はパスワードを表す第2のユーザクレデンシャルのうちの少なくとも1つに対応する。
いくつかの実施例では、処理ユニット1308は、音声入力の1つ以上の発声、第1の文字に対応する1つ以上の発声、第2の文字を識別するフレーズ、及び単語を記憶する(例えば、記憶ユニット1324で)ように更に構成されている。
図13に関して上記説明された動作は、任意選択的に、図1、2A、4、6A〜B、7A、8A〜8B、又は9に記された構成要素によって実装される。例えば、受信ユニット1310、識別ユニット1312、変換ユニット1314、及び使役ユニット1316は、任意選択的に、プロセッサ(単数又は複数)220によって実装される。図1、2A、4、6A〜B、7A、8A〜8B、又は9で記された構成要素に基づいて他の処理をどのように実装することができるかが当業者にとって明らかであろう。
図13で説明された機能的ブロックは、任意選択的に、様々な説明された実施形態の原理を実装するために組み合わされ、又はサブブロックに分離されることが当業者によって理解される。したがって、本明細書における説明は、任意選択的に、本明細書で説明される機能的ブロックのいずれかの可能な組合せ、分離、又は更なる定義をサポートする。例えば、処理ユニット1308は、動作を有効にするために、処理ユニット1308と動作可能に結合された、関連付けられた「コントローラ」ユニットを有することができる。このコントローラユニットは、図13において別個に示されないが、デバイス1300などの処理ユニット1308を有するデバイスを設計する当業者の理解の中にあるものと理解される。別の例として、受信ユニット1310などの1つ以上のユニットは、いくつかの実施形態では、処理ユニット1308の外部のハードウェアユニットであってもよい。よって、本明細書における説明は、任意選択的に、本明細書で説明される機能的ブロックの組合せ、分離、及び/又は更なる定義をサポートする。
例示的な方法、非一時的コンピュータ可読記憶媒体、システム、及び電子デバイスは、以下の条項において示される。
条項1.1つ以上のユーザクレデンシャルを提供する音声入力を識別する方法であって、
ディスプレイ、1つ以上のプロセッサ、及びメモリを有するユーザデバイスにおいて、
音声入力を受信することと、
音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することと、
識別に応じて、第1の文字、第2の文字、及び単語をテキストに変換することと、
ディスプレイで、音声入力内の第1の文字、第2の文字、及び単語の順序に対応する順番でテキストを表示させることと、
を含む、方法。
条項2.第1の文字は、字、数字の桁、制御文字、又は空白のうちの少なくとも1つを含む、条項1に記載の方法。
条項3.制御文字は、句読点の単語により識別される句読点を含む、条項2に記載の方法。
条項4.フレーズは、第2の文字の識別を支援するための単語の綴りを含む、条項1〜3のいずれか一つに記載の方法。
条項5.単語は、複数の文字を含む、条項1〜4のいずれか一つに記載の方法。
条項6.複数の文字は、ドメイン拡張子又は頭文字のうちの少なくとも1つを表す、条項5に記載の方法。
条項7.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
ユーザデバイスに記憶された1つ以上の発話認識モデルに基づいて、第1の文字、第2の文字を識別するフレーズ、又は単語のうちの少なくとも1つを識別することを含む、条項1〜6のいずれか一つに記載の方法。
条項8.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
音声入力を表すデータをサーバに提供することと、
サーバから、第1の文字、第2の文字を識別するフレーズ、又は単語のうちの少なくとも1つを表すデータを受信することと、
を含み、
音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
サーバに記憶された1つ以上の言語モデルに基づいて、第1の文字、第2の文字を識別するフレーズ、又は単語のうちの少なくとも1つを識別することを含む、
条項1〜7のいずれか一つに記載の方法。
条項9.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
音声入力の発声を識別することと、
発声のタイプを判定することと、
判定された発声のタイプに基づいて、発声に対応する、第1の文字、フレーズによって識別される第2の文字、又は単語の表現を取得することと、
を含む、条項1〜8のいずれか一つに記載の方法。
条項10.発声のタイプを判定することは、
発声のタイプが文字に対応するかを判定することと、
発声のタイプが文字を識別するフレーズに対応するかを判定することと、
発声のタイプが単語に対応するかを判定することと、
のうちの少なくとも1つを実行することを含む、条項9に記載の方法。
条項11.発声のタイプが文字に対応するかを判定することは、
発声について、発声が制御文字に対応するかを判定することと、
発声が制御文字に対応するとの判定に従って、発声について、発声が句読点の単語に対応するかを判定することと、
を含み、
判定された発声のタイプに基づいて、文字の表現を取得することは、
発声が句読点の単語に対応するとの判定に従って、句読点の単語に対応する句読点の表現を取得することと、
発声が句読点の単語に対応しないとの判定に従って、句読点の単語以外の制御文字の表現を取得することと、
を含む、条項10に記載の方法。
条項12.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
表現についての信頼度レベルを取得することと、
信頼度レベルが閾値以上であるかを判定することと、
を更に含み、
第1の文字、第2の文字、及び単語をテキストに変換することは、
信頼度レベルが閾値以上であるとの判定に従って、発声に対応する、第1の文字、フレーズによって識別される第2の文字、又は単語の表現をテキストに変換することと、
信頼度レベルが閾値未満であるとの判定に従って、1つ以上の候補表現、エラーメッセージ、又はそれらの組合わせを提供することと、
を含む、条項9〜11のいずれか一つに記載の方法。
条項13.
音声入力に基づいて少なくとも1つのコマンドを識別することを更に含み、少なくとも1つのコマンドによって、表示されたテキストを編集することが可能になる、条項1〜12のいずれか一つに記載の方法。
条項14.少なくとも1つのコマンドを識別することは、
少なくとも1つの発声を識別することと、
発声のタイプがコマンドに対応するかを判定することと、
発声のタイプがコマンドに対応するとの判定に従って、表示されたテキストを編集するためのコマンドに対応するアクションを開始させることと、
を含む、条項13に記載の方法。
条項15.
少なくとも1つのコマンドに対応する発声を記憶し、少なくとも1つのコマンドに対応する発声と関連付けられた情報を記憶することを更に含む、条項14に記載の方法。
条項16.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、ユーザと関連付けられたコンテキストデータ又は1つ以上の認識されたクレデンシャルモデルのうちの少なくとも1つに基づいている、条項1〜15のいずれか一つに記載の方法。
条項17.ユーザと関連付けられたコンテキストデータは、ユーザの発話プロファイルを含む、条項16に記載の方法。
条項18.1つ以上の認識されたクレデンシャルモデルは、1つ以上の認識されたクレデンシャルのフォーマットを表す、条項16及び17のいずれか一つに記載の方法。
条項19.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、視線検出に基づいている、条項1〜18のいずれか一つに記載の方法。
条項20.音声入力は、ユーザ名を表す第1のユーザクレデンシャル又はパスワードを表す第2のユーザクレデンシャルのうちの少なくとも1つに対応する、条項1〜19のいずれか一つに記載の方法。
条項21.
音声入力の1つ以上の発声、第1の文字に対応する1つ以上の発声、第2の文字を識別するフレーズ、及び識別に基づいて認識された単語を記憶することを更に含む、条項1〜20のいずれか一つに記載の方法。
条項22.1つ以上のプログラムを記憶した非一時的コンピュータ可読記憶媒体であって、1つ以上のプログラムは、命令を含み、命令は、電子デバイスの1つ以上のプロセッサによって実行されるとき、電子デバイスに、
音声入力を受信させ、
音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別させ、
識別に応じて、第1の文字、第2の文字、及び単語をテキストに変換させ、
ディスプレイで、音声入力内の第1の文字、第2の文字、及び単語の順序に対応する順番でテキストを表示させる、
非一時的コンピュータ可読記憶媒体。
条項23.電子デバイスであって、
1つ以上のプロセッサと、
メモリと、
1つ以上のプログラムと、を含み、1つ以上のプログラムは、メモリに記憶され、1つ以上のプロセッサによって実行されるように構成されており、1つ以上のプログラムは、
音声入力を受信し、
音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別し、
識別に応じて、第1の文字、第2の文字、及び単語をテキストに変換し、
ディスプレイで、音声入力内の第1の文字、第2の文字、及び単語の順序に対応する順番でテキストを表示させる、
命令を含む、電子デバイス。
条項24.電子デバイスであって、
音声入力を受信する手段と、
音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別する手段と、
識別に応じて、第1の文字、第2の文字、及び単語をテキストに変換する手段と、
ディスプレイで、音声入力内の第1の文字、第2の文字、及び単語の順序に対応する順番でテキストを表示させる手段と、
を含む、電子デバイス。
条項25.電子デバイスであって、
1つ以上のプロセッサと、
メモリと、
メモリに記憶された1つ以上のプログラムと、を含み、1つ以上のプログラムは、条項1〜21のいずれか一つに記載の方法を実行する命令を含む、電子デバイス。
条項26.電子デバイスの1つ以上のプロセッサによる実行のための1つ以上のプログラムを含む非一時的コンピュータ可読記憶媒体であって、1つ以上のプログラムは、命令を含み、命令は、1つ以上のプロセッサによって実行されるとき、電子デバイスに条項1〜21のいずれか一つに記載の方法を実行させる、非一時的コンピュータ可読記憶媒体。
条項27.電子デバイスであって、
条項1〜21のいずれか一つに記載の方法を実行する手段を含む、電子デバイス。
条項28.電子デバイスであって、
音声入力を受信し、
音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別し、
識別に応じて、第1の文字、第2の文字、及び単語をテキストに変換し、
音声入力内の第1の文字、第2の文字、及び単語の順序に対応する順番でテキストを表示させる、
ように構成された処理ユニットを含む、電子デバイス。
条項29.第1の文字は、字、数字の桁、制御文字、又は空白のうちの少なくとも1つを含む、条項28に記載の電子デバイス。
条項30.制御文字は、句読点の単語により識別される句読点を含む、条項29に記載の電子デバイス。
条項31.フレーズは、第2の文字の識別を支援するための単語の綴りを含む、条項28〜30のいずれか一つに記載の電子デバイス。
条項32.単語は、複数の文字を含む、条項28〜31のいずれか一つに記載の電子デバイス。
条項33.複数の文字は、ドメイン拡張子又は頭文字のうちの少なくとも1つを表す、条項32に記載の電子デバイス。
条項34.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
ユーザデバイスに記憶された1つ以上の発話認識モデルに基づいて、第1の文字、第2の文字を識別するフレーズ、又は単語のうちの少なくとも1つを識別することを含む、条項28〜33のいずれか一つに記載の電子デバイス。
条項35.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
音声入力を表すデータをサーバに提供することと、
サーバから、第1の文字、第2の文字を識別するフレーズ、又は単語のうちの少なくとも1つを表すデータを受信することと、
を含み、
音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
サーバに記憶された1つ以上の言語モデルに基づいて、第1の文字、第2の文字を識別するフレーズ、又は単語のうちの少なくとも1つを識別することを含む、条項28〜34のいずれか一つに記載の電子デバイス。
条項36.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
音声入力の発声を識別することと、
発声のタイプを判定することと、
判定された発声のタイプに基づいて、発声に対応する、第1の文字、フレーズによって識別される第2の文字、又は単語の表現を取得することと、
を含む、条項28〜35のいずれか一つに記載の電子デバイス。
条項37.発声のタイプを判定することは、
発声のタイプが文字に対応するかを判定することと、
発声のタイプが文字を識別するフレーズに対応するかを判定することと、
発声のタイプが単語に対応するかを判定することと、
のうちの少なくとも1つを実行することを含む、条項36に記載の電子デバイス。
条項38.発声のタイプが文字に対応するかを判定することは、
発声について、発声が制御文字に対応するかを判定することと、
発声が制御文字に対応するとの判定に従って、発声について、発声が句読点の単語に対応するかを判定することと、
を含み、
判定された発声のタイプに基づいて、文字の表現を取得することは、
発声が句読点の単語に対応するとの判定に従って、句読点の単語に対応する句読点の表現を取得することと、
発声が句読点の単語に対応しないとの判定に従って、句読点の単語以外の制御文字の表現を取得することと、
を含む、条項37に記載の電子デバイス。
条項39.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、
表現についての信頼度レベルを取得することと、
信頼度レベルが閾値以上であるかを判定することと、
を更に含み、
第1の文字、第2の文字、及び単語をテキストに変換することは、
信頼度レベルが閾値以上であるとの判定に従って、発声に対応する、第1の文字、フレーズによって識別される第2の文字、又は単語の表現をテキストに変換することと、
信頼度レベルが閾値未満であるとの判定に従って、1つ以上の候補表現、エラーメッセージ、又はそれらの組合せを提供することと、
を含む、条項36〜38のいずれか一つに記載の電子デバイス。
条項40.処理ユニットは、
音声入力に基づいて少なくとも1つのコマンドを識別するように更に構成されており、少なくとも1つのコマンドによって、表示されたテキストを編集することが可能になる、条項28〜39のいずれか一つに記載の電子デバイス。
条項41.少なくとも1つのコマンドを識別することは、
少なくとも1つの発声を識別することと、
発声のタイプがコマンドに対応するかを判定することと、
発声のタイプがコマンドに対応するとの判定に従って、表示されたテキストを編集するためのコマンドに対応するアクションを開始させることと、
を含む、条項40に記載の電子デバイス。
条項42.処理ユニットは、
少なくとも1つのコマンドに対応する発声を記憶し、少なくとも1つのコマンドに対応する発声と関連付けられた情報を記憶するように更に構成されている、条項41に記載の電子デバイス。
条項43.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、ユーザと関連付けられたコンテキストデータ又は1つ以上の認識されたクレデンシャルモデルのうちの少なくとも1つに基づいている、条項28〜42のいずれか一つに記載の電子デバイス。
条項44.ユーザと関連付けられたコンテキストデータは、ユーザの発話プロファイルを含む、条項43に記載の電子デバイス。
条項45.1つ以上の認識されたクレデンシャルモデルは、1つ以上の認識されたクレデンシャルのフォーマットを表す、条項43及び44のいずれか一つに記載の電子デバイス。
条項46.音声入力に基づいて、第1の文字、第2の文字を識別するフレーズ、及び単語を識別することは、視線検出に基づいている、条項28〜45のいずれか一つに記載の電子デバイス。
条項47.音声入力は、ユーザ名を表す第1のユーザクレデンシャル又はパスワードを表す第2のユーザクレデンシャルのうちの少なくとも1つに対応する、条項28〜46のいずれか一つに記載の電子デバイス。
条項48.
音声入力の1つ以上の発声、第1の文字に対応する1つ以上の発声、第2の文字を識別するフレーズ、及び識別に基づいて認識された単語を記憶することを更に含む、条項28〜47のいずれか一つに記載の電子デバイス。
説明を目的とした上述した説明は、特定の実施形態を参照して説明されてきた。しかしながら、上記例示的な議論は、包括的であることを意図しておらず、又は発明を開示された簡易的な形式に限定することを意図していない。上記教示を考慮して多くの修正及び変形が可能である。技術の原理及びそれらの実際の適用を最良に説明するために実施形態が選択及び説明されてきた。それによって、他の当業者は、考えられる特定の使用に適切な様々な修正で、技術及び様々な実施形態を最良に利用することが可能である。
開示及び実施例が添付図面を参照して完全に説明されてきたが、様々な変更及び修正が当業者にとって明らかであることに留意されたい。そのような変更及び修正は、特許請求の範囲によって定義されるように、開示及び実施例の範囲内に含まれるものとして理解されることになる。