(57)【要約】      （修正有）【課題】音声認識結果をコンテキスト情報を用いて修正する方法を提供する。【解決手段】音声制御システムは、発話コマンド及び関連付けられた単語（例えば、「ｃａｌｌ  ｍｏｍ  ａｔ  ｈｏｍｅ」）を認識し、選択されたアプリケーション（例えば、電話ダイヤラ）にコマンドを実行させることにより、コマンド（例えば、ｌｏｏｋ  ｕｐ  ｍｏｍ’ｓ  ｐｈｏｎｅ  ｎｕｍｂｅｒ  ａｔ  ｈｏｍｅ  ａｎｄ  ｄｉａｌ  ｉｔ  ｔｏ  ｅｓｔａｂｌｉｓｈ  ａ  ｔｅｌｅｈｏｎｅ  ｃａｌｌ）に基づいてスマートフォン等のデータ処理システムに動作を実行させる。音声制御システムは、音声認識システムから認識されたテキストを修正するためにインタプリタの集合を使用し、集合からの結果は、選択されたアプリケーションに提供される最終的に修正されたトランスクリプションにマージされる。【選択図】図１
2015018265.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実行される方法であって、
データ処理システムのユーザからの音声入力を受信するステップと、
前記データ処理システムにおいて前記音声入力された際のコンテキストを判定するステップと、
音声認識システムを通じて前記音声入力におけるテキストを認識し、該テキストを認識することによりテキスト出力を生成するステップと、
それぞれが前記テキスト出力における単語を示す複数のトークンを有する構文解析されたデータ構造として前記テキスト出力を格納するステップと、
それぞれが前記テキスト出力における特定の種類の誤りを修正し、１つ以上のデータベースを検索してデータベースにおける１つ以上の項目と各トークンとの間のマッチングを識別し、インタプリタがテキスト出力におけるトークンを修正できるかを前記識別したマッチング及び前記コンテキストから判定するように設計される前記インタプリタの集合により各トークンを処理するステップと、
前記インタプリタの集合により生成された選択された結果をマージして前記テキスト出力の修正バージョンを示す修正された音声トランスクリプションを生成するステップと、
前記修正された音声トランスクリプションにおけるコマンドに基づいて、アプリケーションの集合の中で該コマンドを実行するように構成される選択されたアプリケーションに前記修正された音声トランスクリプションを提供するステップと
を含むことを特徴とする方法。
【請求項２】
前記コンテキストは、前のユーザ入力の履歴を含み、
前記１つ以上のデータベースは、名前、アドレス及び電話番号のうちの少なくとも１つを格納する連絡先データベースを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記コンテキストは、会話履歴を含み、
前記１つ以上のデータベースは、曲、タイトル及びアーティストのうちの少なくとも１つを格納するメディアデータベースを含み、
前記インタプリタの集合に含まれる前記インタプリタは、可能なマッチングを評価する場合に少なくとも２つの単語の文字列を使用することを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記インタプリタの集合に含まれる第１のインタプリタは、単語を修正するかを判定するために第１のアルゴリズムを使用し、
前記インタプリタの集合に含まれる第２のインタプリタは、単語を修正するかを判定するために第２のアルゴリズムを使用し、
前記第１のアルゴリズムは、前記第２のアルゴリズムとは異なることを特徴とする請求項１乃至３の何れか１項に記載の方法。
【請求項５】
前記インタプリタの集合に含まれる第３のインタプリタは、１つ以上のデータベースを検索するために第３のアルゴリズムを使用し、
前記インタプリタの集合に含まれる第４のインタプリタは、１つ以上のデータベースを検索するために第４のアルゴリズムを使用し、
前記第３のアルゴリズムは、前記第４のアルゴリズムとは異なることを特徴とする請求項１乃至４の何れか１項に記載の方法。
【請求項６】
前記インタプリタの集合に含まれる前記インタプリタは、コマンドの修正を禁止することを特徴とする請求項１乃至５の何れか１項に記載の方法。
【請求項７】
前記選択された結果のマージは、前記インタプリタの集合から重複していない結果のみをマージし、
前記インタプリタの集合からの重複する結果は、ランク付けされた集合の中でランク付けされ、
前記ランク付けされた集合の１つの結果は、選択されて、前記修正された音声トランスクリプションにマージされることを特徴とする請求項１乃至６の何れか１項に記載の方法。
【請求項８】
各インタプリタが修正するように設計される特定の種類の誤りは、前記インタプリタによって検索される前記１つ以上のデータベースにおける１つ以上のフィールドに基づいて判定されることを特徴とする請求項１乃至７の何れか１項に記載の方法。
【請求項９】
前記インタプリタの集合は、前記１つ以上のデータベースを検索し、前記テキスト出力における１つ以上の単語を修正するかを判定する場合に該テキスト出力における単語を１つ以上のデータベースにおける１つ以上の項目と比較することを特徴とする請求項１乃至８の何れか１項に記載の方法。
【請求項１０】
文法パーサは、前記テキスト出力から前記コマンドを判定することを特徴とする請求項１乃至９の何れか１項に記載の方法。
【請求項１１】
前記アプリケーションの集合は、
（ａ）電話番号をダイヤルするために修正された音声トランスクリプションを使用する電話ダイヤラと、
（ｂ）曲又は他のコンテンツを再生するメディアプレーヤと、
（ｃ）テキストメッセージングアプリケーションと、
（ｄ）電子メールアプリケーションと、
（ｅ）カレンダアプリケーションと、
（ｆ）ローカル検索アプリケーションと、
（ｇ）テレビ会議アプリケーションと、
（ｈ）人物又はオブジェクトの位置決めアプリケーションと
のうちの少なくとも２つを含むことを特徴とする請求項１乃至１０の何れか１項に記載の方法。
【請求項１２】
請求項１乃至１１の何れか１項に記載の方法の各ステップをデータ処理システムに実行させる、コンピュータで実行可能なプログラム命令を格納した、コンピュータで読取可能な記憶媒体。
【請求項１３】
システムであって、
１つ以上のプロセッサと、
請求項１乃至１１の何れか１項に記載の方法の各ステップを前記１つ以上のプロセッサに実行させる、コンピュータで実行可能なプログラム命令を格納したメモリと
を備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声認識システム及び１つの実施形態においてデータ処理システムを制御するために使用される音声認識システムに関する。
【背景技術】
【０００２】
多くの音声認識システムに関する共通の問題は精度である。ユーザは音声認識器に話しかけ、システムは認識したテキストで応答するが、音声認識器がユーザの単語を正しく認識しなかったために、認識されたテキストは多くの誤りを含むことが多々ある。
【０００３】
音声認識は、ユーザが電話でコマンド「ｃａｌｌ  ｍｏｍ」を発話する等電話で音声ダイヤルを呼び出すために使用される。ユーザが「ｃａｌｌ  ｍｏｍ」ではなく「ｃａｌｌ  Ｔｏｍ」と発話したと音声認識器システムからのトランスクリプションエラーが発生したと判断する場合、データ処理システムを制御する音声を使用した結果、異常なシステム動作を招くことになる。トランスクリプションエラーは、例えばＢｌｕｅｔｏｏｔｈヘッドセットを介して高品質のオーディオ録音を入手できないというハードウェアの欠陥、不正確又は不完全な発音等のユーザエラー、あるいは背景雑音により発生する。音声認識システムの中には、音声認識システムを改善するためにコンテキストの使用を採用するものもある。特許文献１は、音声認識処理において支援するためにコンテキストを採用する音声認識システムの一例を提供する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７，４７８，０３７号公報
【発明の概要】
【０００５】
本発明の一実施形態は、発話コマンド及び関連付けられた単語（例えば、「ｃａｌｌ  ｍｏｍ  ａｔ  ｈｏｍｅ」）を認識する音声制御システムを提供し、選択されたアプリケーション（例えば、電話ダイヤラ）にコマンドを実行させることにより、コマンド及び関連付けられた単語（例えば、ｐｌａｃｅ  ａ  ｐｈｏｎｅ  ｃａｌｌ  ｔｏ  ｍｏｍ  ａｔ  ｈｏｍｅ）に基づいてシステム（スマートフォンであってもよい）に動作を実行させる。１つの実施形態において、音声制御システムは、ユーザの音声から取得したデジタル化された入力からテキスト出力を生成するために、従来の音響モデル及び従来の言語モデルを含む音声認識器を使用する。音声制御システムは、１つの実施形態においてユーザが呼び出す音声アシスタントアプリケーションにより起動され、この音声アシスタントアプリケーションは、音声認識器からのテキスト出力を解釈及び修正し、修正されたテキスト出力をアプリケーションの集合の選択されたアプリケーションに提供し、例えばアプリケーションの集合は、電話アプリケーション（音声通話接続をダイヤル及び確立する）、メディアプレーヤアプリケーション（例えば、ｉＴｕｎｅｓ）、ＳＭＳ（ショートメッセージサービス）「テキストメッセージ」アプリケーション、テレビ会議（例えば、「ＦａｃｅＴｉｍｅ」）アプリケーション又はチャットアプリケーション、友人等の個人を発見あるいはその場所を特定するアプリケーション及び他のアプリケーション等の１つ以上のアプリケーションを含む。
【０００６】
１つの実施形態において、音声アシスタントアプリケーションは、アプリケーションの集合が使用する特定の種類のテキストを解釈するようにそれぞれが設計されるインタプリタの集合を使用してテキスト出力を解釈する。例えば、名インタプリタは、アドレス帳データベース又は連絡先データベースにおける名（名フィールドにおける）を解釈するように設計され、姓インタプリタは、アドレス帳データベース又は連絡先データベースにおける姓（姓フィールドにおける）を解釈するように設計され、姓名インタプリタは、アドレス帳データベース又は連絡先データベースにおける姓名を解釈するように設計され、店舗名インタプリタは、アドレス帳データベース又は連絡先データベースにおける店舗名を解釈するように設計される。１つの実施形態において、これらのインタプリタは、テキスト出力における各単語を解釈するために種々のアルゴリズム又は処理を使用するように構成される。例えば、姓名インタプリタは、テキスト出力における単語をアドレス帳データベース又は連絡先データベースにおける単語と比較するためにファジィマッチング（編集距離類似性測定を用いた）アルゴリズムを使用するが、１つの実施形態においてテキスト出力における単語をアドレス帳データベース又は連絡先データベースにおける単語と比較するためにｎグラムアルゴリズムを使用せず、名インタプリタは、テキスト出力における単語をアドレス帳データベース又は連絡先データベースにおける単語と比較するためにｎグラムアルゴリズムを使用する。１つの実施形態において、更にこれらのインタプリタは、マッチングをアドレス帳データベース又は連絡先データベース中を検索する場合に種々の検索アルゴリズムを使用する。１つの実施形態において、各インタプリタは、単語を解釈する場合にコンテキスト（例えばコンテキストは、メディアプレーヤが曲を再生していることを示す）を更に使用する。１つの実施形態において、例えばコンテキストは、会話履歴（例えば、前に認識された音声）等のユーザ入力の履歴又はアプリケーションの集合のアプリケーションの状態を含む。集合の各インタプリタは、１つの実施形態においてテキスト出力における各単語を処理して単語を修正できるかを判定しようとし、各インタプリタは、１つの実施形態において各単語を修正できるかを自身で判断し、インタプリタは、単語を修正できるかを示すスコア又は信頼性のレベルを生成する。
【０００７】
１つの実施形態において、インタプリタの集合の制御装置は、結果として得られる修正された解釈をランク付けし、ランク付けを実行するために各インタプリタのスコア又は信頼性のレベルを使用し、且つランク付けされた解釈をマージすることにより、インタプリタの集合の結果を処理する。１つの実施形態において、１つのインタプリタからの出力のみが特定の単語を修正するために使用されるように、マージにより解釈における重複を回避しようとする。
【０００８】
１つの実施形態において、音声アシスタントアプリケーションは、単語の文字列における単語の位置に基づいて、あるいはコマンドを判定するために文法パーサを使用することにより、音声認識器システムからテキスト出力におけるコマンドを判定し、そのコマンドは、修正された音声トランスクリプションと共に、特定のアプリケーションが修正された音声トランスクリプションを使用してコマンドを実行するために、音声アシスタントアプリケーションによりアプリケーションの集合の特定のアプリケーションに渡される。本実施形態において、音声アシスタントアプリケーションは、コマンドに基づいて特定のアプリケーションを選択する。例えば、認識されたテキストにおける「ｃａｌｌ」コマンドにより、音声アシスタントアプリケーションは、ＡＰＩを介して、修正された音声トランスクリプションと共に「ｃａｌｌ」コマンドを電話ダイヤラ又は電話アプリケーションに渡し、認識されたテキストにおける「ｓｔｏｐ」コマンドにより、音声アシスタントアプリケーションは、ＡＰＩを介して、「ｓｔｏｐ」コマンドをメディアプレーヤ（例えば、ｉＴｕｎｅｓ）に渡して現在再生中の曲の再生を停止する。この例において、インタプリタの集合のメディアプレーヤインタプリタに提供されたコンテキストはメディアの状態を含む（例えばコンテキストは、認識された単語「ｓｔｏｐ」を含む音声入力が音声認識器システムにより受信された時にＢｅａｔｌｅｓの曲「Ｃｏｍｅ  Ｔｏｇｅｔｈｅｒ」が現在再生中であるという状態を含む）。この例において、ユーザは、コマンドを発話する前に特定の所望のアプリケーションを選択する必要はない。ユーザは、最前面のアプリケーションである（且つ音声入力フォーカスを有する）音声アシスタントアプリケーションと話し、次に音声アシスタントアプリケーションは、コマンドに基づいてアプリケーションの集合の適切なアプリケーションを自動的に（ユーザがアプリケーションを直接指定せずに）選択し、ＡＰＩを介して選択されたアプリケーションにコマンドを渡す。
【０００９】
一態様において、機械により実現される方法は、データ処理システムのユーザから音声入力を受信するステップと、データ処理システムにおいて音声入力された際のコンテキストを判定するステップと、音声認識システムを通じて前記音声入力におけるテキストを認識し、該テキストを認識することによりテキスト出力を生成するステップと、それぞれがテキスト出力における単語を示す複数のトークンを有する構文解析されたデータ構造としてテキスト出力を格納するステップと、それぞれがテキスト出力における特定の種類の誤りを修正し、１つ以上のデータベースを検索してデータベースにおける１つ以上の項目と各トークンとの間のマッチングを識別し、且つインタプリタがテキスト出力におけるトークンを修正できるかを識別したマッチング及びコンテキストから判定するように設計されるインタプリタの集合により各トークンを処理するステップと、インタプリタの集合により生成された選択された結果をマージしてテキスト出力の修正バージョンを示す修正された音声トランスクリプションを生成するステップと、修正された音声トランスクリプションにおけるコマンドに基づいてアプリケーションの集合のコマンドを実行するように構成される選択されたアプリケーションに修正された音声トランスクリプションを提供するステップとを備える。
【００１０】
いくつかの実施形態において、コンテキストは前のユーザ入力の履歴を含み、１つ以上のデータベースは、名前、アドレス及び電話番号のうちの少なくとも１つを格納する連絡先データベースを含む。
【００１１】
いくつかの実施形態において、コンテキストは会話履歴を含み、１つ以上のデータベースは、曲、タイトル及びアーティストのうちの少なくとも１つを格納するメディアデータベースを含み、インタプリタの集合に含まれるインタプリタは、可能なマッチングを評価する場合に少なくとも２つの単語の文字列を使用する。
【００１２】
いくつかの実施形態において、インタプリタの集合に含まれる第１のインタプリタは単語を修正するかを判定するために第１のアルゴリズムを使用し、インタプリタの集合に含まれる第２のインタプリタは単語を修正するかを判定するために第２のアルゴリズムを使用し、第１のアルゴリズムは第２のアルゴリズムとは異なる。
【００１３】
いくつかの実施形態において、インタプリタの集合に含まれる第３のインタプリタは１つ以上のデータベースを検索するために第３のアルゴリズムを使用し、インタプリタの集合に含まれる第４のインタプリタは１つ以上のデータベースを検索するために第４のアルゴリズムを使用し、第３のアルゴリズムは第４のアルゴリズムとは異なる。
【００１４】
いくつかの実施形態において、インタプリタの集合に含まれるインタプリタはコマンドの修正を禁止する。
【００１５】
いくつかの実施形態において、マージはインタプリタの集合から重複していない結果のみをマージし、インタプリタの集合からの重複結果はランク付けされた集合においてランク付けされ、ランク付けされた集合の１つの結果は選択されて修正された音声トランスクリプションにマージされる。
【００１６】
いくつかの実施形態において、各インタプリタが修正するように設計される特定の種類の誤りは、インタプリタにより検索される１つ以上のデータベースにおける１つ以上のフィールドに基づいて判定される。
【００１７】
いくつかの実施形態において、インタプリタの集合は、１つ以上のデータベースを検索し、テキスト出力における１つ以上の単語を修正するかを判定する場合にテキスト出力における単語を１つ以上のデータベースにおける１つ以上の項目と比較する。
【００１８】
いくつかの実施形態において、文法パーサは、テキスト出力からコマンドを判定する。
【００１９】
いくつかの実施形態において、アプリケーションの集合は、（ａ）電話番号をダイヤルするために修正された音声トランスクリプションを使用する電話ダイヤラ、（ｂ）曲又は他のコンテンツを再生するメディアプレーヤ、（ｃ）テキストメッセージングアプリケーション、（ｄ）電子メールアプリケーション、（ｅ）カレンダアプリケーション、（ｆ）ローカル検索アプリケーション、（ｇ）テレビ会議アプリケーション、あるいは（ｈ）人物又はオブジェクトの位置決めアプリケーションのうちの少なくとも２つを含む。
【００２０】
いくつかの実施形態において、方法は上述の特徴のあらゆる組合せを含む。
【００２１】
一態様において、データ処理システムは、音声入力におけるテキストを認識し且つテキスト出力を生成するように動作可能な音声認識器と、音声入力された際のコンテキストを判定するように動作可能なコンテキスト判定モジュールと、音声入力を音声認識器に提供する音声認識器に結合されたマイクと、それぞれがテキスト出力における単語を示す複数のトークンを有する構文解析されたデータ構造としてテキスト出力を格納する記憶装置と、それぞれがテキスト出力における特定の種類の誤りを修正し、１つ以上のデータベースを検索してデータベースにおける１つ以上の項目と各トークンとの間のマッチングを識別し、且つインタプリタがテキスト出力におけるトークンを修正できるかを識別されたマッチング及びコンテキストから判定するように設計される音声認識器及びコンテキスト判定モジュールに結合されたインタプリタの集合と、インタプリタの集合により生成された選択された結果をマージしてテキスト出力の修正バージョンを示す修正された音声トランスクリプションを生成し、且つ修正された音声トランスクリプションにおけるコマンドに基づいてアプリケーションの集合のコマンドを実行するように構成される選択されたアプリケーションに修正された音声トランスクリプションを提供する制御装置とを備える。
【００２２】
いくつかの実施形態において、コンテキストは前のユーザ入力の履歴を含み、１つ以上のデータベースは、名前、アドレス及び電話番号のうちの少なくとも１つを格納する連絡先データベースを含む。
【００２３】
いくつかの実施形態において、コンテキストは会話履歴を含み、１つ以上のデータベースは、曲、タイトル及びアーティストのうちの少なくとも１つを格納するメディアを含み、インタプリタの集合のインタプリタは、可能なマッチングを評価する場合に少なくとも２つの単語の文字列を使用する。
【００２４】
いくつかの実施形態において、インタプリタの集合の第１のインタプリタは単語を修正するかを判定するために第１のアルゴリズムを使用し、インタプリタの集合の第２のインタプリタは単語を修正するかを判定するために第２のアルゴリズムを使用し、第１のアルゴリズムは第２のアルゴリズムとは異なる。
【００２５】
いくつかの実施形態において、インタプリタの集合の第３のインタプリタは１つ以上のデータベースを検索するために第３のアルゴリズムを使用し、インタプリタの集合の第４のインタプリタは１つ以上のデータベースを検索するために第４のアルゴリズムを使用し、第３のアルゴリズムは第４のアルゴリズムとは異なる。
【００２６】
いくつかの実施形態において、インタプリタの集合のインタプリタはコマンドを修正しようとしない。
【００２７】
いくつかの実施形態において、マージはインタプリタの集合から重複していない結果のみをマージし、インタプリタの集合からの重複結果はランク付けされた集合においてランク付けされ、ランク付けされた集合の１つの結果は選択されて修正された音声トランスクリプションにマージされる。
【００２８】
いくつかの実施形態において、各インタプリタが修正するように設計される特定の種類の誤りは、インタプリタにより検索される１つ以上のデータベースにおける１つ以上のフィールドに基づいて判定される。
【００２９】
いくつかの実施形態において、システムは、テキスト出力からコマンドを判定する文法パーサを更に含む。
【００３０】
いくつかの実施形態において、システムは上述の特徴のあらゆる組合せを含む。
【００３１】
本明細書において説明された実施形態は、非一時的な機械可読記憶媒体又は方法、あるいはデータ処理システムとして実現される。
【００３２】
上述の概要は、本発明の全ての態様の完全なリストを含まない。本発明は、先に概要を示された種々の態様の全ての適切な組合せ及び更に以下の発明を実施するための形態において開示される全ての適切な組合せから実施されると考えられる。
【図面の簡単な説明】
【００３３】
本発明は、例として示され、同一の図中符号が同様の要素を示す添付の図面において制限されない。
【図１】本発明の１つの実施形態に係る方法を示すフローチャートである。
【図２】本発明の１つの実施形態に係るソフトウェアモジュール及びデータ構造を含むアーキテクチャの一例を示す図である。
【図３】本発明の１つの実施形態に係る方法を示すフローチャートである。
【図４】制御装置モジュールが本発明の１つの実施形態に従ってインタプリタの集合からの修正された結果をランク付け及びマージするために使用される本発明の１つの実施形態に係るアーキテクチャの一例を示す図である。
【図５Ａ】本発明の１つの実施形態に係る方法を示すフローチャートである。
【図５Ｂ】本明細書において説明される１つ以上の実施形態において採用される１つ以上のＡＰＩを含むソフトウェアアーキテクチャを示す図である。
【図６】現在のコンテキストが音声認識システムにおいて判定及び使用される１つの実施形態に係るアーキテクチャを示す図である。
【図７】本明細書において説明される１つ以上の実施形態において修正処理で使用されるデータ構造の一例を示す図である。
【図８】インタプリタが音声認識システムにより認識されている特定の単語を修正するか否かを判定している場合に本明細書において説明されたインタプリタのうちの１つ以上により使用される特定のアルゴリズムの一例を示す図である。
【図９】本発明の１つの実施形態に係るデータ処理システムの一例を示す図である。
【図１０】本発明のいくつかの実施形態において使用されるソフトウェアスタックの一例を示す図である。
【図１１】本発明のいくつかの実施形態において使用される例示的なＡＰＩアーキテクチャを示すブロック図である。
【発明を実施するための形態】
【００３４】
本発明の種々の実施形態及び態様は、以下において説明される詳細を参照して説明され、添付の図面は種々の実施形態を示す。以下の説明及び図面は、本発明を例示し、本発明を限定するものとして解釈されるべきではない。多くの特定の詳細は、本発明の種々の実施形態を完全に理解するために説明される。しかし、ある特定の例において、既知の詳細又は従来の詳細は、本発明の実施形態を簡潔に説明するために示されない。
【００３５】
明細書において「１つの実施形態」又は「一実施形態」を参照することは、実施形態と関連して説明された特定の機能、構造又は特徴が本発明の少なくとも１つの実施形態に含まれることを意味する。明細書の種々の箇所に「１つの実施形態において」というフレーズが示されることは、必ずしも同一の実施形態を全て参照することではない。後続する図示された処理は、ハードウェア（例えば、回路網、専用論理等）、ソフトウェア又は双方の組合せを含む処理論理により実行される。処理はいくつかの一連の動作に関して以下において説明されるが、説明される動作のうちのいくつかは異なる順序で実行されてもよいことが理解されるべきである。また、いくつかの動作は、順次ではなく並列に実行される。
【００３６】
本発明の１つの実施形態は、それぞれが音声認識器システムにより提供された認識されたテキストにおける特定の種類の誤りを修正するように設計又は構成されるインタプリタの集合を提供する。音声認識器システムは、音響モデル及び言語モデルの双方を含む従来のソフトウェアベースの音声認識システムであり、音声認識器システムにおいてこれらのモデルを組み合わせることにより、後にインタプリタの集合により修正されるテキスト出力を生成する。インタプリタは、特定のデータベース及びデータベースにおけるコンテンツ、並びにこれらのデータベースを使用する特定のアプリケーションを用いて動作するように構成される。１つの実施形態において、音声認識システムからインタプリタの集合を分離することにより（音声認識システムが出力を提供した後にインタプリタの集合が動作するように）、音声制御システムを設計するに当たりより大きな柔軟性を許す。特定のアプリケーション及び／又はこれらのデータベースのあらゆる変化は、基礎となる音声認識システムを変更する必要なく適切な対応するインタプリタの変化において反映される。例えばデータ処理システムは、従来の既製の音声認識システムを使用し、次にデータ処理システム上でアプリケーション又はアプリケーションの集合毎に発話コマンドに出現するコンテンツを含む特定のアプリケーション及び特定のデータベースに対して適合される適合されたインタプリタを提供する。例えば、「ｃａｌｌ  Ｊｏｈｎ  Ｓｍｉｔｈ  ｏｎ  ｍｏｂｉｌｅ」等のコマンドは、ユーザの連絡先データベース又はアドレス帳データベースに出現すると推定される単語を使用する。名のＪｏｈｎ及び姓のＳｍｉｔｈは、データベースに出現すると推定される。更にデータベースは、電話番号のうちの１つがＪｏｈｎ  Ｓｍｉｔｈの移動電話番号であることを示すフィールド識別子を含むべきである。コマンド「ｃａｌｌ」が発話コマンドの最初にある必要があるか、あるいはデータ処理システムは、発話コマンドからコマンドの位置を判定するために文法パーサを使用する。連絡先データベース又は電話アプリケーションが変化する（例えば、コマンドが追加又は削除、あるいは変更される）場合、データベース及びアプリケーションに対するインタプリタは、音声認識システムを変更する必要なく（例えば、音声認識システムの言語モデルを変更する必要なく）変更される。例えばインタプリタは、対話するフィールド（データベースにおける）又はテキスト出力における単語（音声認識システムからの）をデータベースにおけるフィールドとマッチングするために使用されたアルゴリズムを変更すること、あるいはデータベースを検索するために使用された検索アルゴリズムを変更することにより変更される。
【００３７】
図１は、音響モデル及び言語モデルを使用するシステム等の音声認識器システムにより提供されているテキスト出力を修正するためにインタプリタの集合を使用する本発明の１つの実施形態に係る方法の一例を示す。方法は、音声制御システムが起動される動作１０において開始する。例えば１つの実施形態において、ユーザは、ボタンを押下するか、ボタンを押下及び押下し続けるか、音声アシスタントアプリケーションを選択又は起動するか、あるいは単に常に動作する背景デーモンとして音声アシスタントアプリケーションを呼び出すデータ処理システムをｏｎにする。音声制御システムは、起動された後に（例えば、音声アシスタントアプリケーションが最前面にあり且つ音声入力フォーカスを有する）音声入力を受信する（１２）。１つの実施形態において、ユーザは、例えば「ｃａｌｌ  Ｊｏｈｎ  Ｓｍｉｔｈ  ｏｎ  ｍｏｂｉｌｅ」、「ｔｅｌｌ  Ｊｏｈｎ  Ｓｍｉｔｈ  ｔｈａｔ  Ｉ  ａｍ  ｉｎ  ｔｒａｆｆｉｃ  ａｎｄ  ｗｉｌｌ  ｂｅ  ｌａｔｅ  ｆｏｒ  ｔｈｅ  ｍｅｅｔｉｎｇ」、「ｐｌａｙ  ａｌｌ  ｓｏｎｇｓ  ｂｙ  ｔｈｅ  Ｂｅａｔｌｅｓ」又は「ｔｅｌｌ  ｍｙ  ｓｏｎ  ｔｏ  ｐｉｃｋ  ｕｐ  ｍｉｌｋ  ｉｆ  ｈｅ  ｇｏｅｓ  ｔｏ  Ｓａｆｅｗａｙ  ａｆｔｅｒ  ｓｃｈｏｏｌ」等のコマンドを発話する。次に動作１４において、従来の音声認識システム又は音声認識器は、ユニコード又はＡＳＣＩＩのフォーマット、あるいは符号化又は他の文字符号化におけるテキスト出力を生成するために音響モデル及び言語モデルの双方を採用する従来の音声認識システムを使用してデジタル化並びに処理されている発話入力において受信された単語を認識する。従来の音声制御システム又は音声認識システムは、更なる処理なしでこの時点で結果として得られる出力を使用する。本発明の少なくともいくつかの実施形態において、出力は、動作１４により提供された音声認識器システムから認識されたテキスト出力における１つ以上の単語を修正するか否かを判定するために更に処理される。例えば、本発明の１つの実施形態において、動作１６は、認識されたテキストにおける１つ以上の単語が修正されるか否かを判定するようにユニコード符号化における認識されたテキストを処理することにより実行される。１つの実施形態において、修正は、各インタプリタがデータベースのデータ構造の特定のフィールドの誤り等の特定の種類の誤りを修正するように設計又は構成されるインタプリタの集合により実行される。例えば、１つのインタプリタは、連絡先データベースの名の誤りを修正するように構成及び設計され、別のインタプリタは、連絡先データベースにおける店舗名の誤りを修正するように設計される。種々の処理アルゴリズム又は検索アルゴリズムを含む種々のアルゴリズムを使用して、各インタプリタが特定のフィールドの特定の種類の誤りを修正するように構成される方法を以下において更に説明する。動作１６における処理の結果、修正されたテキストは、動作１８において提供され、次にアプリケーションの集合内の１つのアプリケーションである特定のアプリケーションに実際のコマンドとして提供される。
【００３８】
１つの実施形態において、データ処理システムは、集合の２つのアプリケーション、例えば音声入力により制御される電話ダイヤラ及びｉＴｕｎｅｓ等のメディアプレーヤを含む。別の実施形態において、アプリケーションの集合は、これらのアプリケーション、並びにテキストメッセージング（ＳＭＳ、すなわちショートメッセージングサービス）アプリケーション、電子メールアプリケーション、カレンダアプリケーション、リマインダアプリケーション、ローカル検索アプリケーション、テレビ会議アプリケーション及び人物又は物体の位置決めアプリケーションを含む。ローカル検索アプリケーションは、ユーザがユーザの現在位置に地理的に近接する近くにある店舗又は近くにあるエンティティに関する情報を提供するようにデータ処理システムに命令するアプリケーションである。例えば、ローカル検索発話コマンドは、ユーザの現在地に基づいて近くにある中華料理屋をウェブブラウザ中を検索することを呼び出す「ｆｉｎｄ  ａ  Ｃｈｉｎｅｓｅ  ｒｅｓｔａｕｒａｎｔ」である。あるいは、ローカル検索アプリケーションの場合、発話コマンドは「ｃａｌｌ  ＤＮＪ  Ａｕｔｏ  Ｒｅｐａｉｒ」である。ユーザのシステムにおける連絡先データベースがＤＮＪ  Ａｕｔｏ  Ｒｅｐａｉｒに対するエントリを含まない場合、システムは、応答してユーザの現在地（例えば、ＧＰＳ受信機により判定された場所）の近くにある領域においてＤＮＪ  Ａｕｔｏ  Ｒｅｐａｉｒとして既知である店舗に対するウェブ検索を呼び出す。
【００３９】
図２は、複数のソフトウェアモジュールからのデータベース及び出力等のデータ構造を更に含む図２に示された各ブロックを実現する複数のソフトウェアモジュール又はハードウェアサブシステムを含むデータ処理システムのアーキテクチャの一例を示す。１つの実施形態において、各要素２０１、２０５、２０７、２１１、２１５及び２１９は、図３に示される方法又は図５Ａに示される方法、あるいは図３及び図５Ａに示される方法の組合せを実行するために１つ以上のＡＰＩを介して対話するソフトウェアモジュール又はソフトウェアアプリケーションとして実現される。図２に示されたアーキテクチャは、デジタル化された音声入力を音声認識器システム２０１に提供する音声アシスタントアプリケーションを更に含む。１つの実施形態において、音声アシスタントアプリケーションは、要素２０７として示されたインタプリタの集合及び要素２１５として示された制御装置を含み、要素２０５として示されたプリプロセッサとして動作する。更に音声アシスタントアプリケーションは、要素２１１として示されるコンテキスト判定モジュールを更に含む。
【００４０】
図２の要素２０１は、ユーザからデジタル化された発話コマンド又は発話入力における単語を認識するために音響モデル及び言語モデルの双方を採用する従来の音声認識器システムを含む。１つの実施形態において、マイクはユーザから発話音を収集し、これらの音は、要素２０３として示されたユニコード等の文字符号化フォーマットで認識されたテキスト出力を順次生成する要素２０１として示された音声認識器システムにデジタル化及び提供される。このテキスト出力２０３は、次に、例えば図３に示された方法又は図５Ａに示された方法の修正処理において使用されるそのような構文解析されたデータ構造の一例を提供する図７に関連して以下において更に説明される１つの実施形態においてトークンを使用して構文解析されたデータ構造である修正データ構造を作成するプリプロセッサである要素２０５に提供される。１つの実施形態において、トークンは、テキスト出力２０３における各単語を示すためにデータ構造において使用され、要素２０７におけるインタプリタの集合は、テキスト出力２０３における各単語を修正するか否かを判定するためにこれらのトークン又は単語上で動作する。１つの実施形態において、オプションの文法パーサは、図５Ａに関連して以下において更に説明されるように、アプリケーションの集合から特定のアプリケーションを選択するために使用されるコマンドであるフレーズにおける単語を判定するために要素２０７に含まれる。要素２０７において使用されるインタプリタの集合の一例は、テキスト出力における単語と対応するデータベースにおける単語との間にマッチングが存在するかを判定するように対応するデータベースを検索するため又は単語を処理するために種々のアルゴリズムを使用するインタプリタの集合を含む図４に示される。
【００４１】
図８は、テキスト出力２０３における単語と図４に示された連絡先データベース４１５等の１つ以上のデータベースにおける単語との間にマッチングが存在するかを判定するためにインタプリタの集合の１つ以上のインタプリタにより使用されるアルゴリズムの一例を示す。これらの種々のアルゴリズムは、図４及び図８に関連して以下において更に説明される。要素２１１は、図６に示されたコンテキスト判定モジュール６０１等のコンテキスト判定モジュールである。要素２１１におけるこのコンテキスト判定モジュールからの出力は、テキスト出力２０３における単語が各インタプリタにより修正されるか否かを判定する場合にこれらのインタプリタがコンテキストを使用するために要素２０７において示されたインタプリタの集合のインタプリタのうちの１つ以上に提供される。
【００４２】
各インタプリタは、要素２０９におけるデータベース等の１つ以上のデータベースと対話するように構成又は設計される。これらのデータベースは、連絡先データベース又はアドレス帳データベース、電子メールデータベース、テキストメッセージングデータベース、例えばｉＴｕｎｅｓデータベース、あるいは曲又は映画のデータベース、あるいは曲と映画との組合せのメディアデータベース等を含む。これらのデータベースにおいて対話する他のデータベース及び対応するインタプリタは、本発明の１つの実施形態に更に含まれる。一般的な動作において、特定のデータベースと対話するように（且つ他のデータベースと対話しないように）設計されたインタプリタは、単語がその対応するデータベースにおける既存の単語にマッチングするか及びどの程度マッチングするかを判定するようにコマンドワード以外の各単語を処理する。例えば名インタプリタは、図８に示されたようなｎグラムアルゴリズムを使用して、その単語をデータベース中を検索し、且つ次にデータベースにおける単語とインタプリタにより現在処理されている単語との間のマッチングレベルを判定するように設計された１つ以上のアルゴリズムを使用して修正が実行されるべきであるか否かを判定することにより、連絡先データベースにおいて名である単語のマッチングを検索する。１つの実施形態において、各インタプリタは、そのインタプリタが単語を修正できるかを判定するようにテキスト出力２０３におけるコマンドワード以外の全ての単語を処理する。更に各インタプリタは、マッチングレベル又は単語がデータベースにおいて見つけられた別の単語を用いて修正されるべきかを示すスコア又は信頼性のレベルを提供する。
【００４３】
１つの実施形態において、要素２０７において示されたインタプリタの集合は別の解釈の集合２１３を提供し、これらの別の解釈は、後に音声入力におけるコマンドの対象であるアプリケーションに提供されるマージされた解釈２１７を提供するためにインタプリタの結果をランク付け及びマージする要素２１５において示された制御装置により処理される。
【００４４】
１つの実施形態において、要素２１５における制御装置は、以下において更に説明されるように１つ以上のアルゴリズムを使用してこれらのデータベースの検索を実行すること及びこれらのデータベースにおけるマッチングを処理することにより順次１つ以上のデータベースと対話する図４に示されたインタプリタの集合と対話する図４に示された制御装置モジュール４１１である。図５Ｂに示された音声アシスタントアプリケーション５１１等の音声アシスタントアプリケーションは、ＡＰＩに対して要素２１９として示された対象アプリケーションを呼び出し、これらの呼び出しのパラメータとしてコマンド及び１つの実施形態においてマージされた解釈２１７である修正されたトランスクリプションを提供する。
【００４５】
認識されたテキスト出力２０３等の認識されたテキスト出力における単語を修正する方法を図３に示す。図３の方法は、図２及び図４に示されたアーキテクチャを用いて実行され、図５Ｂに示された１つ以上のＡＰＩを使用する。また、図３の方法は、認識されたテキスト出力２０３において検出されるコマンドに基づいてアプリケーションの集合からアプリケーションを選択する音声アシスタントアプリケーションを使用する。図３の方法は、音声認識システムが最初のトランスクリプションを生成する動作３０１において開始する。これは、図２に示された認識されたテキスト出力２０３である。動作３０１において使用された音声認識システムは、デジタル化された音声入力における単語を認識するために使用された従来の音響モデル及び言語モデルを含む音声認識器システム２０１である。動作３０３において、図３の方法を実行しているデータ処理システムは、最初のトランスクリプションに対して構文解析されたデータ構造を作成する。この構文解析されたデータ構造は、図３の修正処理において使用され、そのようなデータ構造の一例を以下において更に説明される図７に示す。動作３０５において、システムは、トランスクリプションにおけるコマンドを判定し、ユーザ及び／又はシステムコンテキストを更に判定する。コマンドは、最初にコマンドを発話するようにユーザに要求すること又はコマンドの場所、すなわちテキスト出力２０３等のテキスト出力におけるコマンドワード自体を判定するためにテキスト出力２０３等のテキスト出力を構文解析する文法パーサを使用することで判定される。
【００４６】
また、図３に示された実施形態において、動作３０５は、ユーザ及び／又はシステムコンテキストを判定することを更に含む。コンテキスト情報は、起動され且つ動作しているアプリケーション、並びに起動されず且つ動作していないアプリケーション、メディアプレーヤが曲又は映画等のメディアを再生しているか否かのリストを含み、近接センサ、方位センサ、加速度計及び他のセンサ等のセンサに基づくユーザ状態を更に含む。更にコンテキスト情報は、例えばＢｅａｔｌｅｓのアルバム「Ａｂｂｅｙ  Ｒｏａｄ」を再生する等の前に認識されたテキストを含む（アプリケーションの集合のアプリケーション毎に）前の会話履歴を更に含む。１つの実施形態において、コンテキストは、前の会話において示されるアプリケーションドメインを含み、現在のアプリケーション状態が例えばｙｅｓ又はｎｏ、あるいは取消し等のユーザからの確認を期待する。選択値（確認に対する）は、現在の会話コンテキストに基づいてシステムにより指定される。例えばユーザは、電子メールを友人に送出するようにシステムに要求する。メッセージを構成した後、システムは確認するようにユーザに要求する。この時点で、確認選択値は、「ｙｅｓ」、「取消し」及び「それを変更」で代入される。１つの実施形態において、コンテキスト情報は、ユーザの現在地、例えばユーザが本明細書において説明されたようなローカル検索を要求する場合に使用されるＧＰＳの現在地を更に含む。コンテキスト情報は、ロケールコンテキスト及び／又は言語コンテキストを更に含む。例えば、入力言語コンテキストは、音声修正において支援するためにインタプリタの集合により使用される。１つの実施形態において、言語コンテキスト（１つの実施形態においてユーザの基本設定から判定される）が英語である場合、インタプリタは、テキストコンテキストにおける「ｙｅｔ」（音声認識システムからの最初のトランスクリプション）を「ｙｅｓ」に修正する。
【００４７】
動作３０７において、システムは、１つの実施形態においてトランスクリプション（例えば、認識されたテキスト出力２０３）が修正される必要があるか及び修正されてよいかを判定するためにインタプリタの集合の各インタプリタを実行する。１つの実施形態において、インタプリタの集合の全てのインタプリタは、動作３０７において実行される。別の実施形態において、トランスクリプションが現在実行しているアプリケーションに対してのみ修正される必要があるかを判定するために、現在実行しているアプリケーションに対するインタプリタのみが実行される。１つの実施形態において、各インタプリタは、図２の要素２０１における音声認識器システム等の音声認識器システムにより提供された認識されたテキスト出力における１つ以上の単語を修正できるかをそのアルゴリズムに基づいて自身で判断する。この動作は要素３０９として示される。インタプリタのうちで修正できるもの又は修正が必要ないと判断できるものがない場合、動作３１１において、認識されたテキスト出力２０３等の音声認識器システムにより提供された最初のトランスクリプションは、使用され且つ選択されたアプリケーションに提供される。一方、１つ以上の単語が修正可能であると判定されている場合、最初のトランスクリプション（例えば、認識されたテキスト出力２０３）及び修正された解釈を含む別の解釈の集合が提供される（３１３）。例えば、ユーザが連絡先データベースに「Ｊｏｈｎ」は有さないが「Ｊｏｎ」を有する場合、「Ｊｏｎ」という単語は、「Ｊｏｈｎ」という単語の別の解釈となる。各インタプリタは、例えば図４に示された制御装置モジュール４１１等の制御装置に提供する１つ以上の別の解釈に対するマッチングレベルを示すスコア又は信頼性のレベルを維持する。スコア又は信頼性のレベルは、それが最も高いマッチングする解釈を選択するために種々の解釈をランク付けする場合に使用される。スコア又は信頼性のレベルは、単語毎又はフレーズ（例えば、２つ又は３つの単語）毎に判定される。次に動作３１５において、制御装置モジュール又は他のモジュールは、１つの実施形態において各インタプリタにより提供された信頼スコア、あるいはマッチングスコア又はランキングスコアに基づいて重複していない解釈をマージしようとするマージ動作を実行する。修正されている最後のトランスクリプションであるマージされた解釈は、動作３１７において選択されたアプリケーションに提供される。１つの実施形態において、選択されたアプリケーションは、動作３０５において認識又は判定されたコマンドに基づいて選択される。
【００４８】
図４は、認識されたテキスト出力２０３等の最初のトランスクリプションにおける単語を修正するためにインタプリタの集合及び制御装置モジュールを使用するアーキテクチャの一例を示す。１つの実施形態において、各インタプリタは、アルゴリズムを適切に使用することにより１つ以上のデータベースのある特定のフィールドにおける単語を処理するように構成又は設計される。例えば、図４に示された実施形態において、インタプリタ４０１は、１つの実施形態において図８に示されたアルゴリズム等のｎグラムアルゴリズムであるアルゴリズムＡを使用して連絡先データベース４１５の名フィールドにおける単語を修正するように構成される。１つの実施形態において、インタプリタは、いくつかのアルゴリズム又は１つのアルゴリズムのみを採用する。アルゴリズムは、ｎグラムアルゴリズムに加え、２つのテキスト間の類似性を測定する編集距離、あるいはｄｏｕｂｌｅ  ｍｅｔａｐｈｏｎｅアルゴリズム又はｓｏｕｄｅｘアルゴリズム等の音声マッチングアルゴリズムを使用するファジィマッチングアルゴリズムを含む。また、接頭辞、接尾辞の部分トークンアルゴリズムが使用され、２つのテキスト間のマッチング又は類似性の度合いを判定する当技術分野において既知である他のアルゴリズムが更に使用される。１つの実施形態において、１つのインタプリタがアルゴリズムＡを使用し、別のインタプリタがアルゴリズムＡではなくアルゴリズムＢを使用するように、種々のインタプリタは種々のアルゴリズムを使用する。１つの実施形態において、アルゴリズムは、対応するデータベースにおいてマッチングを見つけ且つデータベースを検索するように適合され、特に各インタプリタが訂正するように設計される特定のフィールドに対して適合される。インタプリタ４０３はアルゴリズムＡを使用する姓インタプリタであり、インタプリタ４０５はアルゴリズムＢを使用する姓名インタプリタである。また、図４に示されたインタプリタの集合は、アルゴリズムＢ及びアルゴリズムＡとは異なるアルゴリズムＣを使用する店舗名インタプリタ４０７を含む。インタプリタ４０１、４０３、４０５及び４０７の各々は、対応するフィールドの各々におけるマッチングを検索するためにデータベース４１４ではなく連絡先データベース４１５へのアクセスを有する。種々のフィールドに対して種々のアルゴリズムを使用することに加え、各インタプリタは、対応するデータベースを検索する場合に種々の検索アルゴリズムを採用する。図４に示されたインタプリタの集合は、例えば曲及び／又は映画のｉＴｕｎｅｓデータベース等のメディアデータベース４１４、並びに他のメディアにおいて１つ以上のフィールドを検索するように設計されるメディアプレーヤインタプリタ４０９を更に含む。
【００４９】
図４に示されたアーキテクチャにおける各インタプリタは、別の解釈の集合２１３等の１つ以上の別の解釈を制御装置モジュール４１１に提供する。例えば、名インタプリタ４０１は、発話コマンドにおいて名であると思われるものの２つの異なる別の解釈を提供し、これらの２つの異なる解釈は、それぞれ、解釈が正しいという信頼性又は確率の度合いを示すスコアリング又はランキングを含む。１つの実施形態において、スコア又はランキングはマッチングレベル又は類似性レベルに基づく。図８は、異なるスコアを含む２つの解釈の一例を示す。
【００５０】
図８は、マッチングのランキングに対するスコアを提供するためにｎグラムアルゴリズムを使用する方法の一例を示す。この例において、認識されたテキスト出力２０３等の音声認識器システムからのテキストは、「ｃｒｅａｍ」８０１という単語を含む。音声認識器システムからのこの単語は、ユーザのアドレス帳において見つけられた少なくとも２つの異なる単語８０３及び８０５と比較され、特に単語８０１は、図８に示されたように単語８０３及び８０５と比較される。アルゴリズムは、アルファベットの対をテキスト８０１と比較することでスコアを提供する。図８から分かるように、Ｋｒｅａｍという名前は、アドレス帳において見つけられた他の名前、すなわちゼロのスコアを有する名前８０５より近いマッチングである（３のスコアを有するため）。
【００５１】
インタプリタの集合の各インタプリタは、要素２１１において示されたコンテキスト判定モジュール又は図６におけるコンテキスト判定モジュール６０１等のコンテキスト判定モジュールにより提供されたコンテキスト情報を使用する。コンテキストは、コマンドがアプリケーションの集合の１つ以上のアプリケーションに対して発話されるか、並びに必要に応じて単語自体に加えコマンド自体を示す前の会話履歴を含む。前の会話履歴６０３は、例えばタッチスクリーン又はキーボード上のユーザ入力等の前のユーザ入力を更に含むこの情報を提供する。コンテキスト判定モジュールは、前の会話履歴から、並びに起動され且つ実行しているアプリケーション、起動されていない、すなわち実行していないアプリケーション及びメディアが再生しているか等を示すインジケータを含むアプリケーションの状態６０５からもコンテキストを判定する。例えば、ユーザが事前にメディアの再生を開始させており、且つその状況においてメディアが再生している間に「ｓｔｏｃｋ」という単語がメディアプレーヤインタプリタ４０９により「ｓｔｏｐ」であると解釈されるため、メディアプレーヤインタプリタ４０９は、「ｓｔｏｃｋ」という単語の最初のトランスクリプションを「ｓｔｏｐ」に修正するためにメディアが再生している時のコンテキストインジケータを使用する。コンテキスト判定モジュールは、本明細書において説明されたような言語コンテキスト又はロケールコンテキストを判定する。コンテキスト判定モジュール６０１は、コンテキスト判定処理の一部として例えば方位センサ又は近接センサ、あるいは光センサ等のセンサからの入力を更に含む。更にコンテキスト判定モジュール６０１は、前のユーザ入力の履歴を含む。コンテキスト判定モジュール６０１は、コンテキストに関するこのような種々の情報を収集し、単語が発話コマンド入力において修正されるかに関する判断を行うことを支援するためにコンテキストを使用するインタプリタにそのような情報を提供する。
【００５２】
次に、本発明の一実施形態に係る特定の実現例を図７に関連して提供する。データ構造７０１は、トークン７０３を用いて認識されたテキスト出力における単語を示す。
【００５３】
音声認識の処理は、音声オーディオ録音を利用し、それを１つ以上のテキスト解釈にトランスクリプションする。最初のトランスクリプションはテキスト文字列７０５として示される。これらのトランスクリプションされたテキストは、１つの実施形態においてＲｅｃｏｇｎｉｔｉｏｎと呼ばれる表のようなデータ構造に格納され、図７に示される。
【００５４】
Ｒｅｃｏｇｎｉｔｉｏｎの基本構造はＴｏｋｅｎである。Ｔｏｋｅｎは、トランスクリプションの原子単位を表す不変の文字列である。トランスクリプションが一連のＴｏｋｅｎ７０３から構成される場合、各Ｔｏｋｅｎは、Ｐｈｒａｓｅ７０７と呼ばれる２次レベルのデータ構造にカプセル化される。Ｐｈｒａｓｅは列メジャーデータ構造である。Ｐｈｒａｓｅオブジェクトの順序付きリストはＲｅｃｏｇｎｉｔｉｏｎを形成する。Ｐｈｒａｓｅデータ構造の存在は、別のトランスクリプションを可能にするためのものである。
【００５５】
例えば、ユーザが「Ｃａｌｌ  Ｊｏｈｎ  Ｓｍｉｔｈ  ｏｎ  ｍｏｂｉｌｅ」と言う場合、音声アシスタントアプリケーションは、図７に示されたＲｅｃｏｇｎｉｔｉｏｎを生成する。
【００５６】
音声修正の処理は、入力としてＲｅｃｏｇｎｉｔｉｏｎオブジェクト（図７に示された）を利用し、元の認識のいずれかの部分が要求し且つ修正される場合に変形されたＲｅｃｏｇｎｉｔｉｏｎオブジェクトを生成する。
【００５７】
Ｍｅｔａ−Ｒｅｐａｉｒと呼ばれる内部データ構造は、音声修正処理を支援するために作成される。このデータ構造は、元のＲｅｃｏｇｎｉｔｉｏｎオブジェクト（図７に示された）、Ｒｅｐａｉｒオブジェクト及び元のトランスクリプションに対するＴｏｋｅｎ位置から構成される。
【００５８】
ここに図７に示されたデータ構造に対するＴｏｋｅｎ位置ルックアップテーブルの一例を示す。
【００５９】
Ｐａｉｒ＜Ｓｔａｒｔ，Ｅｎｄ＞：元の認識テキストに対する特定のトークン文字列の開始位置及び終了位置
「Ｃａｌｌ  Ｊｏｈｎ  Ｓｍｉｔｈ  ｏｎ  Ｍｏｂｉｌｅ」
Ｍｅｔａ−ＲｅｐａｉｒのＴｏｋｅｎ  Ｐｏｓｉｔｉｏｎ  Ｌｉｓｔ：
［０］：Ｐａｉｒ＜０，３＞
［１］：Ｐａｉｒ＜５，８＞
［２］：Ｐａｉｒ＜１０，１４＞
［３］：Ｐａｉｒ＜１６，１７＞
［４］：Ｐａｉｒ＜１９，２４＞。
【００６０】
Ｍｅｔａ−ＲｅｐａｉｒのＲｅｐａｉｒオブジェクトは、音声修正手順により生成された別の解釈のリストから構成される。別の解釈を示すために使用されたデータ構造を修正解釈と呼ぶ。
【００６１】
修正解釈は、元の認識における部分文字列、並びにその部分文字列の開始位置及び終了位置に対する妥当な置換であるテキストから構成される。例えば、「Ｊｏｎ」が「Ｊｏｈｎ」と置換される場合、図７に示されたデータ構造に対する修正解釈は、以下のように示される。
修正解釈：
テキスト：「Ｊｏｎ」
開始：５
終了：８。
【００６２】
Ｍｅｔａ−Ｒｅｐａｉｒオブジェクトは、解釈マージを実行するための情報を含む。１つの実施形態において元のトランスクリプションが全てのインタプリタを通過した後で及び生成された１つ以上の修正解釈がある場合、マージ論理が発生する。以下の擬似コードは、インタプリタの集合から重複していない解釈をマージするために使用されるマージ関数の一例を提供する。「ＩＮＰＵＴ：ｏｒｉｇｉｎａｌ：：Ｒｅｃｏｇｎｉｔｉｏｎ」を図７に示す。
ＦＵＮＣＴＩＯＮマージ
ＩＮＰＵＴ：  ｏｒｉｇｉｎａｌ：：Ｒｅｃｏｇｎｉｔｉｏｎ
ｒｅｐａｉｒ：：Ｒｅｐａｉｒ
ＯＵＴＰＵＴ：ｏｒｉｇｉｎａｌ：：Ｒｅｃｏｇｎｉｔｉｏｎ
ＢＥＧＩＮ
ＩＦ  ｒｅｐａｉｒ．ｇｅｔＲｅｐａｉｒＩｎｔｅｒｐｒｅｔａｔｉｏｎ（）  ｉｓ  ＥＭＰＴＹ
ＲＥＴＵＲＮ  ｏｒｉｇｉｎａｌ；
ＥＬＳＥ
Ｓｔｒｉｎｇ  ｏｒｉｇｉｎａｌＴｅｘｔ＝ｒｅｐａｉｒ．ｇｅｔＯｒｉｇｉｎａｌＴｅｘｔ（）；
Ｌｉｓｔ  ｉｎｔｅｒｐｒｅｔａｔｉｏｎｓ＝ｒｅｐａｉｒ．ｇｅｔＲｅｐａｉｒＩｎｔｅｒｐｒｅｔａｔｉｏｎｓ（）；
Ｌｉｓｔ  ｒａｎｋｅｄ＝ｒａｎｋ（ｏｒｉｇｉｎａｌＴｅｘｔ，ｉｎｔｅｒｐｒｅｔａｔｉｏｎｓ）；
Ｌｉｓｔ  ｎｏｎＯｖｅｒｌａｐ＝ｆｉｎｄＮｏｎＯｖｅｒｌａｐＩｎｔｅｒｐｒｅｔａｔｉｏｎｓ（ｒａｎｋｅｄ）；
ＦＯＲ  ｅａｃｈ  ＲｅｐａｉｒＩｎｔｅｒｐｒｅｔａｔｉｏｎ  ｉ  ｉｎ  ｎｏｎＯｖｅｒｌａｐ
Ｌｉｓｔ＜Ｐｈｒａｓｅ＞ｐｈｒａｓｅｓ＝ｆｉｎｄＲｅｐａｉｒＰｈｒａｓｅｓ（ｏｒｉｇｉｎａｌ，ｉ）
Ｌｉｓｔ＜Ｔｏｋｅｎ＞ｔｏｋｅｎｓ＝ｍａｋｅＲｅｐａｉｒＴｏｋｅｎｓ（ｉ）；
ａｄｄＴｏｋｅｎｓＴｏＰｈｒａｓｅＨｅａｄ（ｐｈｒａｓｅ，ｔｏｋｅｎｓ）；
ＥＮＤ  ＦＯＲ
ＲＥＴＵＲＮ  ｏｒｉｇｉｎａｌ；
ＥＮＤ
ＦＵＮＣＴＩＯＮ  ｒａｎｋ
ＩＮＰＵＴ：  ｏｒｉｇｉｎａｌＴｅｘｔ：：Ｓｔｒｉｎｇ
ｉｎｔｅｒｐｒｅｔａｉｏｎｓ：：Ｌｉｓｔ＜ＲｅｐａｉｒＩｎｔｅｒｐｒｅｔａｔｉｏｎ＞
ＯＵＴＰＵＴ：  ｒａｎｋｅｄ：：Ｌｉｓｔ＜ＲｅｐａｉｒＩｎｔｅｒｐｒｅｔａｔｉｏｎ＞
ＲＥＴＵＲＮ  オブジェクトの収集上で全順序を課すカスタムＪａｖａ  Ｃｏｍｐａｒａｔｏｒを使用してソートされた解釈リスト
／＊＊
Ｃｏｌｌｅｃｔｉｏｎｓ．ｓｏｒｔ（ｓｏｒｔｅｄ，ｎｅｗ  Ｃｏｍｐａｒａｔｏｒ＜Ｒｅｐａｉｒ．Ｉｎｔｅｒｐｒｅｔａｔｉｏｎ＞（）｛
＠Ｏｖｅｒｒｉｄｅ
ｐｕｂｌｉｃ  ｉｎｔ  ｃｏｍｐａｒｅ（Ｒｅｐａｉｒ．Ｉｎｔｅｒｐｒｅｔａｔｉｏｎ  ｏ  １，
Ｒｅｐａｉｒ．Ｉｎｔｅｒｐｒｅｔａｔｉｏｎｓ  ｏ２）｛
ｉｆ  （ｓｃｏｒｅＩｎｔｅｒｐｒｅｔａｉｏｎｓ（ｏ１）＞ｓｃｏｒｅＩｎｔｅｒｐｒｅｔａｔｉｏｎ（ｏ２））｛
ｒｅｔｕｒｎ  −１；
｝  ｅｌｓｅ  ｉｆ  （ｓｃｏｒｅＩｎｔｅｒｐｒｅｔａｔｉｏｎｓ（ｏ１）＜
ｓｃｏｒｅＩｎｔｅｒｐｒｅｔａｔｉｏｎ（ｏ２））｛
ｒｅｔｕｒｎ  １；
｝  ｅｌｓｅ  ｛
ｒｅｔｕｒｎ  ０；
｝
｝
ｐｒｉｖａｔｅ  ｆｌｏａｔ  ｓｃｏｒｅＩｎｔｅｒｐｒｅｔａｔｉｏｎ（Ｒｅｐａｉｒ．Ｉｎｔｅｒｐｒｅｔａｔｉｏｎ  ｉｔｐ）｛
ｆｌｏａｔ  ｓｃｏｒｅ＝０；
ｉｆ  （ｉｔｐ．ｉｓＰｅｒｆｅｃｔＭａｔｃｈ（ｇｅｔＯｒｉｇｉｎａｌＴｅｘｔ（）））｛
ｓｃｏｒｅ＝ｇｅｔＯｒｉｇｉｎａｌＴｅｘｔ（）．ｌｅｎｇｔｈ（）；
｝
ｓｃｏｒｅ＋＝（ｆｌｏａｔ）ｉｔｐ．ｇｅｔＬｅｎｇｔｈ（）／ｇｅｔＯｒｉｇｉｎａｌＴｅｘｔ（）．ｌｅｎｇｔｈ（）；
ｒｅｔｕｒｎ  ｓｃｏｒｅ；
｝
｝）；
／＊＊
ＥＮＤ。
【００６３】
図５Ａは、発話コマンドにおいて検出されるコマンドに基づいて発話コマンドの対象であると判定される適切なアプリケーションをシステムが選択できるようにする音声アシスタントアプリケーションを使用する本発明の１つの実施形態を示す。１つの実施形態において、音声アシスタントアプリケーションは、発話コマンドにおけるコマンドを検出することにより適切なアプリケーションを選択するために文法パーサを使用するか、あるいはシステムが発話入力における他の単語に対するコマンドである単語を判定できるように、ユーザは、全ての発話コマンドにおける最初の単語としてコマンドを発話する必要がある。本実施形態において、システムは、発話コマンドに基づいて特定のアプリケーションを選択することにより、アプリケーションをシステムの音声入力フォーカスを有する最前面のアプリケーションにするために、ユーザがコマンドを発話する前にアプリケーションを選択するように要求する。換言すると、本実施形態において、音声アシスタントアプリケーションは、アプリケーションに対して適切であるコマンドに基づいてアプリケーションの集合から１つのアプリケーションを選択する。動作５０１において、システムは、アプリケーションの集合の１つのアプリケーションに関する音声入力を受信する。アプリケーションは、実行中でも実行中でなくてもよい。１つの実施形態において、方法は、実行中のアプリケーションのみがアプリケーションの集合にあるが、別の実施形態において各アプリケーションが音声入力を受信する場合には実行中であるか否かに関係なく全てのアプリケーションがアプリケーションの集合にあるように構成される。動作５０３において、音声アシスタントアプリケーションは、音声入力におけるコマンドを判定し、判定されたコマンドに基づいて適切なアプリケーションを選択する。例えば、コマンドが「ｃａｌｌ」である場合、１つの実施形態における適切なアプリケーションは、音声入力（例えば、ｃａｌｌ  ｍｏｍ  ａｔ  ｈｏｍｅ）において特定された人物との通話を確立する電話ダイヤラである。コマンドは、動詞を使用するようにユーザに命令することで動詞であることが必要なコマンドの位置を特定するために文法パーサを使用することにより判定されるか、あるいはシステムは、一連の発話単語における固定の位置にコマンドを配置するようにユーザに要求する。１つの実施形態において、例えば、コマンドが「ｔｅｌｌ」という単語である場合、選択されたアプリケーションはテキストメッセージング（ＳＭＳ）アプリケーションであり、コマンドが「ｐｌａｙ」又は「ｓｔｏｐ」という単語である場合、選択されたアプリケーションはメディアプレーヤアプリケーションである。
【００６４】
次に動作５０５において、インタプリタは、認識された音声入力における１つ以上の単語を修正するように実行される。アプリケーションがインタプリタを実行する前に動作５０３で選択される場合、音声入力を介して発話コマンドを受信できる全てのアプリケーションに対するシステムにおいて使用可能な全てのインタプリタを実行するのではなく、その特定のアプリケーションで動作するように設計されるインタプリタのみが実行される。動作５０５は、動作３０７に類似し、図６に示されたコンテキスト判定モジュールと組み合わせて図４に示されたアーキテクチャを使用する。１つの実施形態において、動作５０３で判定又は検出されるコマンドは修正されない。この場合、インタプリタは、インタプリタが対話する１つ以上のデータベースを検索する場合にテキスト入力におけるコマンドをストップワードとして解釈する。次に動作５０７において、音声アシスタントアプリケーションは、コマンドを動作５０３で判定された選択されたアプリケーションに渡し、修正されたトランスクリプション（インタプリタを実行し且つ別の解釈をマージする結果得られた）を選択されたアプリケーションに渡す。１つの実施形態において、音声アシスタントアプリケーションは、図５Ｂに示されたような１つ以上のＡＰＩ等のＡＰＩを介して修正されたトランスクリプションと共にコマンドを渡す。
【００６５】
図５Ｂに示された音声アシスタントアプリケーション５１１は、図５Ａの１つ以上の方法を実行する音声アシスタントアプリケーションと同一である。音声アシスタントアプリケーション５１１は、上述され且つ／あるいは図６に示されたコンテキスト情報等のコンテキスト情報を順次返送するオペレーティングシステム５１６に対してＡＰＩ５１４を介してコンテキスト呼び出しを実行することにより、コンテキストを判定する。コンテキスト情報は、実行中のアプリケーション及び以前にユーザ入力又は発話コマンドを受信したアプリケーションのリストを更に含む。音声アシスタントアプリケーション５１１は、オペレーティングシステム５１６に加えて、音声アシスタントアプリケーション５１１、並びにアプリケーション５１８及び５２０等のアプリケーションの集合の１つ以上のアプリケーションを含むソフトウェアスタックを示す図５Ｂに示されたシステム上で実行するソフトウェアアプリケーションである音声認識器システムを更に呼び出す。アプリケーション５１８及び５２０は、ＡＰＩ５１２を介して音声アシスタントアプリケーションから渡されるコマンドを受信する。
【００６６】
以下は、１つの実施形態における音声アシスタントアプリケーションによる音声修正の３つの使用例である。
【００６７】
「ｓｎａｐ−ｔｏ−ｇｒｉｄ」音声ダイヤル。音声アシスタントアプリケーションにより、ユーザは、音声を使用してアドレス帳データベースにおける連絡先に通話できる。ユーザは、アドレス帳において「Ｍａｒｃ  Ｄｉｃｋｉｎｓｏｎ」と名前をつけられた連絡先を有し、「Ｍａｒｋ」又は「Ｄｉｃｋ」と名前をつけられた連絡先は有さない。ユーザが「Ｃａｌｌ  Ｍａｒｃ  Ｄｉｃｋｉｎｓｏｎ」と言う場合、音声認識は、入力を「Ｃａｌｌ  Ｍａｒｋ  Ｄｉｃｋ  ｓｏｎ」として間違ってトランスクリプションする。アシスタントがデータベースにおいて「Ｍａｒｋ  Ｄｉｃｋ  ｓｏｎ」を見つけられないために動作を完了できないことをユーザに伝えるのではなく、音声修正は、より妥当な別のトランスクリプション、すなわち「Ｃａｌｌ  Ｍａｒｃ  Ｄｉｃｋｎｓｏｎ」を生成するために連絡先の名前のスペリングを利用し且つファジィマッチングアルゴリズムを使用する。（２）ユーザの意図の曖昧性の除去。音声アシスタントアプリケーションにより、ユーザは、ＳＭＳメッセージを送出し且つ音声ダイヤル要求を行える。ユーザが「Ｔｅｌｌ  ｍｙ  ｗｉｆｅ  ｔｏ  ｐｉｃｋ  ｕｐ  ｍｉｌｋ  ａｎｄ  ｆｒｕｉｔｓ  ｉｆ  ｓｈｅ  ｇｏｅｓ  ｔｏ  Ｓａｆｅｗａｙ  ａｆｔｅｒ  ｗｏｒｋ」と言う場合、アシスタントは、自動的にユーザの妻に対してテキストメッセージを構成する。認識誤りのため、音声システムは、「ｔｅｌｌ」という動作語を「ｃａｌｌ」又は「ｔａｌｌ」として間違ってトランスクリプションする可能性がある。１つの実施形態において「Ｃａｌｌ  ｍｙ  ｗｉｆｅ  ｔｏ  ｐｉｃｋ  ｕｐ  ｍｉｌｋ  ａｎｄ  ｆｒｕｉｔｓ  ｉｆ  ｓｈｅ  ｇｏｅｓ  ｔｏ  Ｓａｆｅｗａｙ  ａｆｔｅｒ  ｗｏｒｋ」又は「Ｔａｌｌ  ｍｙ  ｗｉｆｅ  ｔｏ  ｐｉｃｋ  ｕｐ  ｍｉｌｋ  ａｎｄ  ｆｒｕｉｔｓ  ｉｆ  ｓｈｅ  ｇｏｅｓ  ｔｏ  Ｓａｆｅｗａｙ  ａｆｔｅｒ  ｗｏｒｋ」という要求がアシスタントにおけるいずれの動作可能なタスクともマッチングしないため、デフォルトの応答は、通常、「Ｓｏｒｒｙ！  Ｉ  ｄｏｎ’ｔ  ｋｎｏｗ  ｗｈａｔ  ｙｏｕ  ｍｅａｎｔ」である。音声修正は、コンテキストを使用して音声意図の曖昧性を除去することでこの問題を解決することを支援する。例えば、「ｔｅｌｌ」という単語と「ｔａｌｌ」という単語との編集距離が短く、且つ音声ダイヤルコマンドが一般に対象人物トークンの後に長く実行する文字列を有さないことを知ることにより、インタプリタは、元のトランスクリプションを「Ｔｅｌｌ  ｍｙ  ｗｉｆｅ  ｔｏ  ｐｉｃｋ  ｕｐ  ｍｉｌｋ  ａｎｄ  ｆｒｕｉｔｓ  ｉｆ  ｓｈｅ  ｐｌａｎｓ  ｔｏ  ｖｉｓｔ  Ｓａｆｅｗａｙ  ａｆｔｅｒ  ｗｏｒｋ」として書き直す。（３）コマンドキーワード／システムキーワードの曖昧性の除去。音声システムは、短いキーワードの発音を間違ってトランスクリプションする場合がある。例えば、ユーザが「Ｓｔｏｐ」と言い且つ最初のトランスクリプションが「Ｓｔｏｃｋ」であり、ユーザが「Ｙｅｓ」と言い且つ最初のトランスクリプションが「Ｙｅｔ」である。音声修正は、１つ以上のコンテキストヒントに基づいて元のトランスクリプションテキストがより妥当でない解釈である場合に別のトランスクリプションを提供する��とにより、これらの問題を克服することを支援する。例えば、アシスタントがＹＥＳ／ＮＯの確認をユーザに促している場合、ユーザがフォローアップ応答として「Ｙｅｔ」と言う可能性は低い。最終的なトランスクリプションとして「Ｙｅｔ」を返送するのではなく、音声修正は、より妥当な音声入力としてそれを「Ｙｅｓ」で上書きする。同様の修正論理は、メディアプレーヤドメインに適用可能である。ユーザが単に曲が再生されることを要求しており且つ即座の音声トランスクリプションが「Ｓｔｏｃｋ」である場合、音声修正は、より妥当なコマンドトランスクリプションとしてそれを「Ｓｔｏｐ」で書き直す。
【００６８】
図９は、本発明の１つの実施形態と共に使用されるデータ処理システム９００の一例を示す。例えば及び１つの実施形態において、システム９００は、スマートフォン、タブレット（例えば、ｉＰａｄ）装置、ラップトップ又はエンターテイメントシステム等の携帯データ処理装置として実現される。図９に示されたデータ処理システム９００は、１つ以上のマイクロプロセッサ又はチップ（集積回路）上のシステムである処理システム９１１を含み、システムは、処理システムにより実行するためのデータ及びプログラムを格納するメモリ９０１を更に含む。メモリ９０１は、図２に関連して説明されたソフトウェアコンポーネント等を格納し、半導体メモリ（例えば、フラッシュ、ＤＲＡＭ、ＳＲＡＭ等）の非一時的な機械可読記憶媒体のあらゆる既知の形態である。システム９００は、例えばスピーカ及びマイクを介して音楽を再生するかあるいは電話機能性を提供するマイク及びスピーカを含む。マイクは、本明細書において説明された音声入力を受信し、その入力は、本明細書において説明されたように音声認識器システムにデジタル化及び提供される。
【００６９】
表示制御装置及び表示装置９０９は、ビジュアルユーザインタフェースをユーザに提供する。このインタフェースは、ｉＰｈｏｎｅ又はｉＰａｄ上でＯＳ  Ｘオペレーティングシステムソフトウェア又はｉＯＳソフトウェアを実行する場合にＭａｃｉｎｔｏｓｈコンピュータ上に示されたものに類似するグラフィカルユーザインタフェースを含む。システム９００は、別のデータ処理システムと通信する１つ以上の無線送受信機９０３を更に備える。無線送受信機は、ＷＬＡＮ送受信機（例えば、ＷｉＦｉ）、赤外線送受信機、Ｂｌｕｅｔｏｏｔｈ送受信機及び／又は無線携帯電話送受信機である。ある特定の実施形態において、不図示の更なる構成要素はシステム９００の一部であってもよく、且つ図９に示されたより少ない構成要素はデータ処理システムにおいて更に使用されてもよいことが理解されるだろう。システム９００は、別のデータ処理システムと通信する１つ以上の通信ポート９１７を更に含む。通信ポートは、ＵＳＢポート、Ｆｉｒｅｗｉｒｅポート、Ｂｌｕｅｔｏｏｔｈインタフェース、ドッキングポート等である。
【００７０】
データ処理システム９００は、ユーザが入力をシステムに提供できるように提供される１つ以上の入力装置９１３を更に備える。これらの入力装置は、表示装置９０９等の表示装置と重ねられ且つ一体化されるキーパッド又はキーボード、あるいはタッチパネル又はマルチタッチパネルである。データ処理システム９００は、ドック用のコネクタであるオプションの入出力装置を更に備える。不図示の１つ以上のバスは、当技術分野において既知であるように種々の構成要素を相互接続するために使用されることが理解されるだろう。図９に示されたデータ処理システムは、ハンドヘルドコンピュータ又はパーソナルデジタルアシスタント（ＰＤＡ）、ＰＤＡのような機能性を含む携帯電話、携帯電話を備えるハンドヘルドコンピュータ、ｉＰｏｄ等のメディアプレーヤ、ゲーム装置又はエンターテイメント装置、あるいは１つの装置、組込み型装置又は他の消費者電子装置においてＰＤＡ及び携帯電話とを組み合わされたメディアプレーヤ等のこれらの装置の態様又は機能を組み合わせる装置である。他の実施形態において、データ処理システム９００は、別の装置内のネットワークコンピュータ又は組込み型処理装置、あるいは図９に示されたものより少ない構成要素又はあるいは図９に示されたものより多い構成要素を有する他の種類のデータ処理システムである。
【００７１】
データ処理システム９００は、必要に応じてオーディオＩ／Ｏ９０５におけるマイクにより受信されたユーザ音声をデジタル化及び格納するように設計された１つ以上のハードウェア装置を備える。
【００７２】
本発明の少なくともある特定の実施形態は、メディア、メディアを格納する記憶装置を提示するメディア処理システムを含み、且つアンテナシステム及びメディア処理システムと結合された無線周波数（ＲＦ）送受信機（例えば、携帯電話用のＲＦ送受信機）を更に備える携帯音楽プレーヤ及び／又はビデオメディアプレーヤ等のデジタルメディアプレーヤの一部である。ある特定の実施形態において、リモート記憶装置上に格納されたメディアは、ＲＦ送受信機を介してメディアプレーヤに送信される。例えばメディアは、音楽又は他のオーディオ、静止画又は動画のうちの１つ以上である。
【００７３】
携帯メディアプレーヤの例は、双方とも参考として本明細書に取り入れられる公開された米国特許第７，３４５，６７１号公報及び米国特許出願公開第２００４／０２２４６３８号において説明される。
【００７４】
１つ以上のアプリケーションプログラミングインタフェース（ＡＰＩ）は、いくつかの実施形態において使用される。ＡＰＩは、異なるプログラムコードコンポーネント又はハードウェアコンポーネント（以下において「ＡＰＩ呼び出しコンポーネント」）が１つ以上の機能、方法、手順、データ構造、クラス及び／又はＡＰＩ実装コンポーネントにより提供された他のサービスにアクセスし且つそれらを使用できるようにするプログラムコードコンポーネント又はハードウェアコンポーネント（以下において「ＡＰＩ実装コンポーネント」）により実現されたインタフェースである。ＡＰＩは、ＡＰＩ呼び出しコンポーネントとＡＰＩ実装コンポーネントとの間で渡される１つ以上のパラメータを規定する。
【００７５】
ＡＰＩにより、ＡＰＩ呼び出しコンポーネントの開発者（サードパーティ開発者である）は、ＡＰＩ実装コンポーネントにより提供された特定の機能に影響を及ぼすことができる。１つのＡＰＩ呼び出しコンポーネント又は２つ以上のそのようなコンポーネントがある。ＡＰＩは、アプリケーションからのサービスに対する要求を支援するためにコンピュータシステム又はプログラムライブラリが提供するソースコードインタフェースである。オペレーティングシステム（ＯＳ）は、ＯＳ上で動作するアプリケーションがこれらのＡＰＩのうちの１つ以上を呼び出せるようにする多数のＡＰＩを有し、サービス（例えば、プログラムライブラリ）は、サービスを使用するアプリケーションがこれらのＡＰＩのうちの１つ以上を呼び出せるようにする多数のＡＰＩを有する。ＡＰＩは、アプリケーションが構築される場合に解釈又はコンパイルされるプログラミング言語に関して規定される。
【００７６】
いくつかの実施形態において、ＡＰＩ実装コンポーネントは、それぞれがＡＰＩ実装コンポーネントにより実現された機能性の種々の態様にアクセスする種々の態様の異なるビュー又は種々の態様を含む異なるビューを提供する２つ以上のＡＰＩを提供する。例えば、ＡＰＩ実装コンポーネントの１つのＡＰＩは、機能の最初の集合を提供し、サードパーティ開発者に示され、ＡＰＩ実装コンポーネントの別のＡＰＩは、隠蔽され（示されず）、機能の最初の集合の部分集合を提供し、機能の最初の集合にないテスト機能又はデバッグ機能等の機能の別の集合を更に提供する。他の実施形態において、ＡＰＩ実装コンポーネントは、基礎となるＡＰＩ、すなわちＡＰＩ呼び出しコンポーネント及びＡＰＩ実装コンポーネントの双方を介して１つ以上の他のコンポーネントを自ら呼び出す。
【００７７】
ＡＰＩは、ＡＰＩ実装コンポーネントの特定の機能にアクセスし且つそれを使用する場合にＡＰＩ呼び出しコンポーネントが使用する言語及びパラメータを規定する。例えばＡＰＩ呼び出しコンポーネントは、ＡＰＩにより示された１つ以上のＡＰＩ呼び出し（例えば機能又は方法の呼び出しにより具体化された）を介してＡＰＩ実装コンポーネントの特定の機能にアクセスし、ＡＰＩ呼び出しを介してパラメータを使用してデータ及び制御の情報を渡す。ＡＰＩ実装コンポーネントは、ＡＰＩ呼び出しコンポーネントからのＡＰＩ呼び出しに応答してＡＰＩを介して値を返送する。ＡＰＩは、構文及びＡＰＩ呼び出しの結果（例えば、ＡＰＩを呼び出す方法及びＡＰＩ呼び出しが実行するもの）を規定するが、ＡＰＩ呼び出しがＡＰＩ呼び出しにより特定された機能を実行する方法は示さない。種々のＡＰＩ呼び出しは、呼び出し（ＡＰＩ呼び出しコンポーネント）とＡＰＩ実装コンポーネントとの間の１つ以上のアプリケーションプログラミングインタフェースを介して転送される。ＡＰＩ呼び出しを転送することは、機能呼び出し又は機能メッセージを発行すること、開始すること、呼び出すこと、受信すること、返送すること、あるいはそれらに応答することを含む。換言すると、転送することは、ＡＰＩ呼び出しコンポーネント又はＡＰＩ実装コンポーネントのいずれかによる動作を説明する。ＡＰＩの機能呼び出し又は他の呼び出しは、パラメータリスト又は他の構造を介して１つ以上のパラメータを送出又は受信する。パラメータは、ＡＰＩを介して渡されるデータ又は他の項目を参照する機能又は方法、あるいは別の方法に対する定数、キー、データ構造、オブジェクト、オブジェクトクラス、変数、データタイプ、ポインタ、アレイ、リスト又はポインタである。
【００７８】
また、データタイプ又はデータクラスは、ＡＰＩにより提供され、ＡＰＩ実装コンポーネントにより実現される。従って、ＡＰＩ呼び出しコンポーネントは、ＡＰＩにおいて提供された定義を使用することでそのようなタイプ又はクラスの定数値を使用あるいはインスタンス化するために変数を宣言し、ポインタを使用する。
【００７９】
一般にＡＰＩは、ＡＰＩ実装コンポーネントにより提供されたサービス又はデータにアクセスするため、あるいはＡＰＩ実装コンポーネントにより提供された動作又は計算の性能を開始するために使用される。例として、ＡＰＩ実装コンポーネント及びＡＰＩ呼び出しコンポーネントは、それぞれ、オペレーティングシステム、ライブラリ、デバイスドライバ、ＡＰＩ、アプリケーションプログラム又は他のモジュールのうちのいずれか１つである（ＡＰＩ実装コンポーネント及びＡＰＩ呼び出しコンポーネントは、同一の種類のモジュール又は互いに異なる種類のモジュールであることが理解されるべきである）。ＡＰＩ実装コンポーネントは、場合によってはファームウェア、マイクロコード又は他のハードウェア論理において少なくとも部分的に具体化される。いくつかの実施形態において、ＡＰＩにより、クライアントプログラムは、ソフトウェア開発キット（ＳＤＫ）ライブラリにより提供されたサービスを使用できる。他の実施形態において、アプリケーション又は他のクライアントプログラムは、アプリケーションフレームワークにより提供されたＡＰＩを使用する。これらの実施形態において、アプリケーション又はクライアントプログラムは、ＳＤＫ及びＡＰＩにより提供された機能又は方法に呼び出しを組み込むか、あるいはＳＤＫにおいて規定され且つＡＰＩにより提供されたデータタイプ又はデータオブジェクトを使用する。これらの実施形態において、アプリケーションフレームワークは、フレームワークにより規定された種々のイベントに応答するプログラムに対するメインイベントループを提供する。ＡＰＩにより、アプリケーションは、アプリケーションフレームワークを使用してイベント及びイベントへの応答を特定できる。いくつかの実現例において、ＡＰＩ呼び出しは、例えば入力の機能及び状態、出力の機能及び状態、処理機能、電源の状態、記憶装置の容量及び状態、通信機能等の態様に関連したものを含むハードウェア装置の機能又は状態をアプリケーションに対して報告し、ＡＰＩは、ハードウェアコンポーネント上で部分的に実行するファームウェア、マイクロコード又は他の低レベル論理により部分的に実現される。
【００８０】
ＡＰＩ呼び出しコンポーネントは、ネットワークを介してＡＰＩによりＡＰＩ実装コンポーネントと通信するローカルコンポーネント（すなわち、ＡＰＩ実装コンポーネントと同一のデータ処理システム上の）又はリモートコンポーネント（すなわち、ＡＰＩ実装コンポーネントとは異なるデータ処理システム上の）である。ＡＰＩ実装コンポーネントは、ＡＰＩ呼び出しコンポーネントとしても動作し（すなわち、それは、異なるＡＰＩ実装コンポーネントにより示されたＡＰＩに対するＡＰＩ呼び出しを実行し）、ＡＰＩ呼び出しコンポーネントは、異なるＡＰＩ呼び出しコンポーネントに対して示されるＡＰＩを実装することによりＡＰＩ実装コンポーネントとしても動作することが理解されるべきである。
【００８１】
ＡＰＩは、種々のプログラミング言語で書かれた多数のＡＰＩ呼び出しコンポーネントがＡＰＩ実装コンポーネントと通信できるようにする（従って、ＡＰＩは、ＡＰＩ実装コンポーネントとＡＰＩ呼び出しコンポーネントとの間で呼び出し及び返送を変換する機能を含む）が、特定のプログラミング言語に関して実現される。１つの実施形態において、ＡＰＩ呼び出しコンポーネントは、種々のプロバイダからのＡＰＩ、例えばＯＳプロバイダからのＡＰＩの集合及びプラグインプロバイダからのＡＰＩの集合、並びに別のプロバイダ（例えば、ソフトウェアライブラリのプロバイダ）からのＡＰＩの別の集合又はＡＰＩの別の集合のクリエータを呼び出す。
【００８２】
図１１は、本発明のいくつかの実施形態において使用される例示的なＡＰＩアーキテクチャを示すブロック図である。図１１に示されるように、ＡＰＩアーキテクチャ１１００は、ＡＰＩ１１２０を実装するＡＰＩ実装コンポーネント１１１０（例えば、オペレーティングシステム、ライブラリ、デバイスドライバ、ＡＰＩ、アプリケーションプログラム、ソフトウェア又は他のモジュール）を含む。ＡＰＩ１１２０は、ＡＰＩ呼び出しコンポーネント１１３０により使用されるＡＰＩ実装コンポーネントの１つ以上の機能、方法、クラス、オブジェクト、プロトコル、データ構造、フォーマット及び／又は他の特徴を規定する。ＡＰＩ１１２０は、ＡＰＩ実装コンポーネントにおける機能がＡＰＩ呼び出しコンポーネントからパラメータを受信する方法及び機能がＡＰＩ呼び出しコンポーネントに結果を返送する方法を規定する少なくとも１つの呼び出し規約を規定する。ＡＰＩ呼び出しコンポーネント１１３０（例えば、オペレーティングシステム、ライブラリ、デバイスドライバ、ＡＰＩ、アプリケーションプログラム、ソフトウェア又は他のモジュール）は、ＡＰＩ１１２０を介してＡＰＩ呼び出しを実行し、ＡＰＩ１１２０により規定されるＡＰＩ実装コンポーネント１１１０の機能にアクセスし且つそれを使用する。ＡＰＩ実装コンポーネント１１１０は、ＡＰＩ呼び出しに応答してＡＰＩ１１２０を介してＡＰＩ呼び出しコンポーネント１１３０に値を返送する。
【００８３】
ＡＰＩ実装コンポーネント１１１０は、ＡＰＩ１１２０を介して規定されず且つＡＰＩ呼び出しコンポーネント１１３０に対して使用不可である更なる機能、方法、クラス、データ構造及び／又は他の特徴を含むことが理解されるだろう。ＡＰＩ呼び出しコンポーネント１１３０は、ＡＰＩ実装コンポーネント１１１０と同一のシステム上にあってもよいが、あるいはリモートで配置されてもよく且つネットワークを介してＡＰＩ１１２０を使用してＡＰＩ実装コンポーネント１１１０にアクセスすることが理解されるべきである。図１１はＡＰＩ１１２０と対話する単一のＡＰＩ呼び出しコンポーネント１１３０を示すが、ＡＰＩ呼び出しコンポーネント１１３０とは異なる言語（又は同一の言語）で書かれる他のＡＰＩ呼び出しコンポーネントはＡＰＩ１１２０を使用することが理解されるべきである。
【００８４】
ＡＰＩ実装コンポーネント１１１０、ＡＰＩ１１２０及びＡＰＩ呼び出しコンポーネント１１３０は、機械（例えば、コンピュータ又は他のデータ処理システム）により可読な有形形式で情報を格納するあらゆる機構を含む非一時的な機械可読記憶媒体に格納される。例えば機械可読媒体は、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリ素子等を含み、１つ以上のネットワークによりクライアント装置に結合されるローカル記憶媒体又はリモート装置上の記憶媒体である。
【００８５】
図１０（「ソフトウェアスタック」において、例示的な一実施形態、アプリケーションは、いくつかのサービスＡＰＩを使用するサービス１又はサービス２及びいくつかのＯＳ  ＡＰＩを使用するオペレーティングシステム（ＯＳ）に対する呼び出しを実行する。サービス１及びサービス２は、いくつかのＯＳ  ＡＰＩを使用してＯＳに対する呼び出しを実行する。
【００８６】
尚、サービス２は２つのＡＰＩを有し、そのうちの一方（サービス２  ＡＰＩ１）はアプリケーション１から呼び出しを受信し且つアプリケーション１に値を返送し、他方（サービス２  ＡＰＩ２）はアプリケーション２から呼び出しを受信し且つアプリケーション２に値を返送する。サービス１（例えば、ソフトウェアライブラリである）は、ＯＳ  ＡＰＩ１に対する呼び出しを実行し且つＯＳ  ＡＰＩ１から戻り値を受信し、サービス２（例えば、ソフトウェアライブラリである）は、ＯＳ  ＡＰＩ１及びＯＳ  ＡＰＩ  ２の双方に対する呼び出しを実行し且つＯＳ  ＡＰＩ１及びＯＳ  ＡＰＩ  ２の双方から戻り値を受信する。アプリケーション２は、ＯＳ  ＡＰＩ２に対する呼び出しを実行し且つＯＳ  ＡＰＩ２から戻り値を受信する。
【００８７】
明細書において「１つの実施形態」又は「一実施形態」を参照することは、実施形態と関連して説明された特定の機能、構造又は特徴が本発明の少なくとも１つの実施形態に含まれることを意味する。明細書の種々の箇所に「１つの実施形態において」というフレーズが示されることは、必ずしも同一の実施形態を全て参照することではない。
【００８８】
上述の明細書において、本発明の特定の例示的な実施形態を参照して本発明を説明した。以下の特許請求の範囲において説明されるような本発明のより広範な趣旨及び範囲から逸脱せずに、種々の変形が本発明に対して行われてもよいことが明らかとなるだろう。従って、明細書及び図面は、限定的な意味ではなく例示的な意味で考えられるべきである。
【図１】
2015018265.tif 000003
【図２】
2015018265.tif 000004
【図３】
2015018265.tif 000005
【図４】
2015018265.tif 000006
【図５Ａ】
2015018265.tif 000007
【図５Ｂ】
2015018265.tif 000008
【図６】
2015018265.tif 000009
【図７】
2015018265.tif 000010
【図８】
2015018265.tif 000011
【図９】
2015018265.tif 000012
【図１０】
2015018265.tif 000013
【図１１】
2015018265.tif 000014
【手続補正書】
【提出日】平成26年9月29日(2014.9.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータで実行される方法であって、
データ処理システムのユーザからの音声入力を受信するステップと、
前記データ処理システムにおいて前記音声入力を受信した際に、該データ処理システムに含まれるデバイスのコンテキストを判定するステップと、
音声認識システムを通じて前記音声入力におけるテキストを認識し、該テキストを認識することによりテキスト出力を生成するステップと、
それぞれが前記テキスト出力における単語を示す複数のトークンを有する構文解析されたデータ構造として前記テキスト出力を格納するステップと、
それぞれが前記テキスト出力における特定の種類の誤りを修正し、１つ以上のデータベースを検索してデータベースにおける１つ以上の項目と各トークンとの間のマッチングを識別し、インタプリタがテキスト出力におけるトークンを修正できるか否かを前記識別したマッチング及び前記判定したコンテキストを用いて判定するように設計される前記インタプリタの集合により各トークンを処理するステップと、
前記インタプリタの集合により生成された結果をマージして前記テキスト出力の修正バージョンを示す修正された音声トランスクリプションを生成するステップと、
前記修正された音声トランスクリプションにおけるコマンドに基づいて、アプリケーションの集合の中で該コマンドを実行するように構成される選択されたアプリケーションに前記修正された音声トランスクリプションを提供するステップと
を含むことを特徴とする方法。
【請求項２】
前記コンテキストは、前のユーザ入力の履歴を含み、
前記１つ以上のデータベースは、名前、アドレス及び電話番号のうちの少なくとも１つを格納する連絡先データベースを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記コンテキストは、会話履歴を含み、
前記１つ以上のデータベースは、曲、タイトル及びアーティストのうちの少なくとも１つを格納するメディアデータベースを含み、
前記インタプリタの集合に含まれる前記インタプリタは、可能なマッチングを評価する場合に少なくとも２つの単語の文字列を使用することを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記インタプリタの集合に含まれる第１のインタプリタは、単語を修正するかを判定するために第１のアルゴリズムを使用し、
前記インタプリタの集合に含まれる第２のインタプリタは、単語を修正するかを判定するために第２のアルゴリズムを使用し、
前記第１のアルゴリズムは、前記第２のアルゴリズムとは異なることを特徴とする請求項１乃至３の何れか１項に記載の方法。
【請求項５】
前記インタプリタの集合に含まれる第３のインタプリタは、１つ以上のデータベースを検索するために第３のアルゴリズムを使用し、
前記インタプリタの集合に含まれる第４のインタプリタは、１つ以上のデータベースを検索するために第４のアルゴリズムを使用し、
前記第３のアルゴリズムは、前記第４のアルゴリズムとは異なることを特徴とする請求項１乃至４の何れか１項に記載の方法。
【請求項６】
前記インタプリタの集合に含まれる前記インタプリタは、コマンドの修正を禁止することを特徴とする請求項１乃至５の何れか１項に記載の方法。
【請求項７】
前記選択された結果のマージは、前記インタプリタの集合から重複していない結果のみをマージし、
前記インタプリタの集合からの重複する結果は、ランク付けされた集合の中でランク付けされ、
前記ランク付けされた集合の１つの結果は、選択されて、前記修正された音声トランスクリプションにマージされることを特徴とする請求項１乃至６の何れか１項に記載の方法。
【請求項８】
各インタプリタが修正するように設計される特定の種類の誤りは、前記インタプリタによって検索される前記１つ以上のデータベースにおける１つ以上のフィールドに基づいて判定されることを特徴とする請求項１乃至７の何れか１項に記載の方法。
【請求項９】
前記インタプリタの集合は、前記１つ以上のデータベースを検索し、前記テキスト出力における１つ以上の単語を修正するかを判定する場合に該テキスト出力における単語を１つ以上のデータベースにおける１つ以上の項目と比較することを特徴とする請求項１乃至８の何れか１項に記載の方法。
【請求項１０】
文法パーサは、前記テキスト出力から前記コマンドを判定することを特徴とする請求項１乃至９の何れか１項に記載の方法。
【請求項１１】
前記アプリケーションの集合は、
（ａ）電話番号をダイヤルするために修正された音声トランスクリプションを使用する電話ダイヤラと、
（ｂ）曲又は他のコンテンツを再生するメディアプレーヤと、
（ｃ）テキストメッセージングアプリケーションと、
（ｄ）電子メールアプリケーションと、
（ｅ）カレンダアプリケーションと、
（ｆ）ローカル検索アプリケーションと、
（ｇ）テレビ会議アプリケーションと、
（ｈ）人物又はオブジェクトの位置決めアプリケーションと
のうちの少なくとも２つを含むことを特徴とする請求項１乃至１０の何れか１項に記載の方法。
【請求項１２】
請求項１乃至１１の何れか１項に記載の方法の各ステップをデータ処理システムに実行させる、コンピュータで実行可能なプログラム命令を格納した、コンピュータで読取可能な記憶媒体。
【請求項１３】
システムであって、
１つ以上のプロセッサと、
請求項１乃至１１の何れか１項に記載の方法の各ステップを前記１つ以上のプロセッサに実行させる、コンピュータで実行可能なプログラム命令を格納したメモリと
を備えることを特徴とするシステム。
【請求項１４】
前記デバイスの前記コンテキストは、該デバイスに関連付けられたアプリケーションの状態情報を含むことを特徴とする請求項１に記載の方法。
【外国語明細書】
2015018265000001.pdf