(57)【要約】  アプリケーションのユーザーインタフェース要素内に提供された入力が観察される。レコードが入力および、その入力が提供された間にアプリケーションがあった状態から作られる。各状態に対して、対応する言語モデルが、アプリケーションがその状態にあった間にアプリケーションに提供された入力に基づいて、訓練される。アプリケーションが次に以前に観察された状態にあると観察されると、アプリケーションの現在の状態に関連付けられた言語モデルが適用されて、ユーザーによって提供された音声入力を認識し、それにより、アプリケーションに提供される音声認識出力を生成する。特定の時におけるアプリケーションの状態は、その時に表示されているか、かつ／またはフォーカスされているユーザーインタフェース要素を含み得る。【選択図】図１Ｃ
2014523543.tif 000002
【特許請求の範囲】
【請求項１】
第１の複数の入力をアプリケーション内に、前記アプリケーションが第１の状態にある間に受信することと、
第１の言語モデルを前記第１の複数の入力に基づいて訓練することと、
前記アプリケーションが前記第１の状態にあると判断することと、
前記アプリケーションが前記第１の状態にあることの判断に応答して、前記第１の言語モデルを第１の音声入力に適用することと
を含む、コンピュータ実装方法。
【請求項２】
受信することが、前記第１の複数の入力をテキストベースの入力装置から受信することをさらに含む、請求項１に記載の方法。
【請求項３】
受信することが、前記第１の複数の入力をポインティングデバイスから受信することをさらに含む、請求項１に記載の方法。
【請求項４】
受信することが、前記第１の複数の入力を音声入力装置から受信することをさらに含む、請求項１に記載の方法。
【請求項５】
第２の複数の入力を前記アプリケーション内に、前記アプリケーションが、前記第１の状態とは異なる第２の状態にある間に受信することと、
第２の言語モデルを前記第２の複数の入力に基づいて訓練することと、
前記アプリケーションが前記第２の状態にあると判断することと、
前記アプリケーションが前記第２の状態にあることの判断に応答して、前記第２の言語モデルを第２の音声入力に適用することと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記第１の言語モデルを訓練することが、
前記第１の複数の入力に関連付けられたユーザーインタフェースの使用パターンを識別することと、
前記第１の言語モデルを前記使用パターンに基づいて修正することと
を含む、請求項１に記載の方法。
【請求項７】
前記第１の複数の入力に基づき、前記言語モデルによってアクセスされる資源を修正することをさらに含む、請求項１に記載の方法。
【請求項８】
前記複数の入力内で、複数の入力値を識別することと、
前記複数の入力値の各々が前記複数の入力内に出現する頻度を識別することと、
前記第１の言語モデルを前記識別された頻度に基づいて訓練することと
をさらに含む、請求項１に記載の方法。
【請求項９】
前記複数の入力のうちの１つに対して、入力値を識別することと、
前記入力値が概念のインスタンスであると判断することと、
前記複数の入力内で、前記概念のインスタンスの数を識別することと、
前記概念が前記複数の入力内に出現する頻度を識別することと、
前記第１の言語モデルを前記識別された頻度に基づいて訓練することと
をさらに含む、請求項１に記載の方法。
【請求項１０】
前記第１の言語モデルを訓練することが、確率を前記言語モデル内の単語と関連付けることをさらに含む、請求項１に記載の方法。
【請求項１１】
オペレーティングシステムフックコンポーネントによって、グラフィカルユーザーインタフェースのフォアグラウンドに表示されているユーザーインタフェース要素を識別することと、
前記第１の言語モデルを前記識別されたユーザーインタフェース要素と関連付けることと
をさらに含む、請求項１に記載の方法。
【請求項１２】
オペレーティングシステムフックコンポーネントによって、前記第１の複数の入力のうちの１つが提供されるユーザーインタフェース要素を識別することと、
前記第１の言語モデルを前記識別されたユーザーインタフェース要素と関連付けることと
をさらに含む、請求項１に記載の方法。
【請求項１３】
オペレーティングシステムフックコンポーネントによって、前記第１の複数の入力のうちの１つが提供されるユーザーインタフェース要素に関連付けられたアプリケーションを識別することと、
前記第１の言語モデルを前記識別されたアプリケーションと関連付けることと
をさらに含む、請求項１に記載の方法。
【請求項１４】
判断することが、
アプリケーションデータを分析して前記アプリケーションの状態を判断することと、
前記アプリケーションの前記判断された状態を、前記第１の言語モデルに関連付けられた状態と比較することと、
前記判断された状態および前記第１の言語モデルに関連付けられた前記状態が実質的に同一の状態であると判断することと
をさらに含む、請求項１に記載の方法。
【請求項１５】
判断することが、
コンテキスト共有アプリケーションによって提供された情報を分析して前記アプリケーションの状態を判断することと、
前記アプリケーションの前記判断された状態を、前記第１の言語モデルに関連付けられた状態と比較することと、
前記判断された状態および前記第１の言語モデルに関連付けられた前記状態が実質的に同一の状態であると判断することと
をさらに含む、請求項１に記載の方法。
【請求項１６】
前記アプリケーションに、前記第１の言語モデルを前記第１の音声入力に適用した結果を提供することをさらに含む、請求項１に記載の方法。
【請求項１７】
提供することが、キーボードイベントをエミュレートして、テキストおよび制御シーケンスのうちの少なくとも１つを前記アプリケーションにサブミットすることをさらに含む、請求項１６に記載の方法。
【請求項１８】
第１の複数の入力をアプリケーション内に、前記アプリケーションが第１の状態にある間に受信するための手段と、
第１の言語モデルを前記第１の複数の入力に基づいて訓練するための手段と、
前記アプリケーションが前記第１の状態にあると判断するための手段と、
前記アプリケーションが前記第１の状態にあることの判断に応答して、前記第１の言語モデルを第１の音声入力に適用するための手段と
を備える、自動音声認識システム。
【請求項１９】
前記第１の複数の入力を取得するオペレーティングシステムフックコンポーネントをさらに備える、請求項１８に記載の自動音声認識システム。
【請求項２０】
方法を実行するために少なくとも１つのコンピュータプロセッサによって実行可能なコンピュータプログラム命令を格納する持続性コンピュータ可読媒体であって、前記方法が、
第１の複数の入力をアプリケーション内に、前記アプリケーションが第１の状態にある間に受信することと、
第１の言語モデルを前記第１の複数の入力に基づいて訓練することと、
前記アプリケーションが前記第１の状態にあると判断することと、
前記アプリケーションが前記第１の状態にあることの判断に応答して、前記第１の言語モデルを第１の音声入力に適用することと
を含む、
持続性コンピュータ可読媒体。
【請求項２１】
受信することが、前記第１の複数の入力をテキストベースの入力装置から受信することをさらに含む、請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
受信することが、前記第１の複数の入力をポインティングデバイスから受信することをさらに含む、請求項２０に記載のコンピュータ可読媒体。
【請求項２３】
受信することが、前記第１の複数の入力を音声入力装置から受信することをさらに含む、請求項２０に記載のコンピュータ可読媒体。
【請求項２４】
前記方法が、
第２の複数の入力を前記アプリケーション内に、前記アプリケーションが、前記第１の状態とは異なる第２の状態にある間に受信することと、
第２の言語モデルを前記第２の複数の入力に基づいて訓練することと、
前記アプリケーションが前記第２の状態にあると判断することと、
前記アプリケーションが前記第２の状態にあることの判断に応答して、前記第２の言語モデルを第２の音声入力に適用することと
をさらに含む、
請求項２０に記載のコンピュータ可読媒体。
【請求項２５】
前記第１の言語モデルを訓練することが、
前記第１の複数の入力に関連付けられたユーザーインタフェースの使用パターンを識別することと、
前記第１の言語モデルを前記使用パターンに基づいて修正することと
を含む、
請求項２０に記載のコンピュータ可読媒体。
【請求項２６】
前記方法が、前記第１の複数の入力に基づき、前記言語モデルによってアクセスされる資源を修正することをさらに含む、請求項２０に記載のコンピュータ可読媒体。
【請求項２７】
前記方法が、
前記複数の入力内で、複数の入力値を識別することと、
前記複数の入力値の各々が前記複数の入力内に出現する頻度を識別することと、
前記第１の言語モデルを前記識別された頻度に基づいて訓練することと
をさらに含む、
請求項２０に記載のコンピュータ可読媒体。
【請求項２８】
前記方法が、
前記複数の入力のうちの１つに対して、入力値を識別することと、
前記入力値が概念のインスタンスであると判断することと、
前記複数の入力内で、前記概念のインスタンスの数を識別することと、
前記概念が前記複数の入力内に出現する頻度を識別することと、
前記第１の言語モデルを前記識別された頻度に基づいて訓練することと
をさらに含む、
請求項２０に記載のコンピュータ可読媒体。
【請求項２９】
前記第１の言語モデルを訓練することが、確率を前記言語モデル内の単語と関連付けることをさらに含む、請求項２０に記載のコンピュータ可読媒体。
【請求項３０】
前記方法が、
オペレーティングシステムフックコンポーネントによって、グラフィカルユーザーインタフェースのフォアグラウンドに表示されているユーザーインタフェース要素を識別することと、
前記第１の言語モデルを前記識別されたユーザーインタフェース要素と関連付けることと
をさらに含む、
請求項２０に記載のコンピュータ可読媒体。
【請求項３１】
前記方法が、
オペレーティングシステムフックコンポーネントによって、前記第１の複数の入力のうちの１つが提供されるユーザーインタフェース要素を識別することと、
前記第１の言語モデルを前記識別されたユーザーインタフェース要素と関連付けることと
をさらに含む、
請求項２０に記載のコンピュータ可読媒体。
【請求項３２】
前記方法が、
オペレーティングシステムフックコンポーネントによって、前記第１の複数の入力のうちの１つが提供されるユーザーインタフェース要素に関連付けられたアプリケーションを識別することと、
前記第１の言語モデルを前記識別されたアプリケーションと関連付けることと
をさらに含む、
請求項２０に記載のコンピュータ可読媒体。
【請求項３３】
判断することが、
アプリケーションデータを分析して前記アプリケーションの状態を判断することと、
前記アプリケーションの前記判断された状態を、前記第１の言語モデルに関連付けられた状態と比較することと、
前記判断された状態および前記第１の言語モデルに関連付けられた前記状態が実質的に同一の状態であると判断することと
をさらに含む、
請求項２０に記載のコンピュータ可読媒体。
【請求項３４】
判断することが、
コンテキスト共有アプリケーションによって提供された情報を分析して前記アプリケーションの状態を判断することと、
前記アプリケーションの前記判断された状態を、前記第１の言語モデルに関連付けられた状態と比較することと、
前記判断された状態および前記第１の言語モデルに関連付けられた前記状態が実質的に同一の状態であると判断することと
をさらに含む、
請求項２０に記載のコンピュータ可読媒体。
【請求項３５】
前記方法が、前記アプリケーションに、前記第１の言語モデルを前記第１の音声入力に適用した結果を提供することをさらに含む、請求項２０に記載のコンピュータ可読媒体。
【請求項３６】
提供することが、キーボードイベントをエミュレートして、テキストおよび制御シーケンスのうちの少なくとも１つを前記アプリケーションにサブミットすることをさらに含む、請求項３５に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
音声を認識して、かかる音声のトランスクリプトを作成し、ソフトウェアアプリケーションを制御するための、様々な自動音声認識（ＡＳＲ）システムが存在する。例えば、ＡＳＲシステムの１つの一般的な使用は、ユーザーがテキストを口述してワープロ文書に挿入できるようにすること、およびワードプロセッシングアプリケーションのユーザーインタフェース（ＵＩ）要素（ウィンドウ、メニュー、およびダイアログボックスなど）を制御することである。例えば、ＡＳＲシステムをワードプロセッシングアプリケーションに関連して使用している場合、ユーザーは、音声コマンドを使用して「フォント」ダイアログボックスを表示させ、次いで、他の音声コマンドを使用して、フォント名をダイアログボックスに入力し、そのダイアログボックス内の「ＯＫ」ボタンをクリックして、所望のフォントを選択されたテキストに適用させるか、かつ／またはユーザーによって続いてタイプされたテキストに適用させることが可能であり得る。
【０００２】
かかる単純な例からでさえ明らかであるように、対象アプリケーション（例えば、ワードプロセッサ）は、様々なアプリケーション状態を有し得、例えば、ユーザーによって提供されたマウスおよびキーボード入力が、現在オープンされている文書に挿入されるテキストとして、および現在オープンされている文書を含むウィンドウを制御するためのコマンドとして解釈される、「テキスト入力」状態、ならびに、ユーザーによって提供されたマウスおよびキーボード入力が、「フォント」ダイアログボックスのユーザーインタフェース要素を制御するためのコマンドとして、およびその「フォント」ダイアログボックスのテキストフィールドに入力されるテキストとして解釈される「フォントダイアログボックス」状態などである。かかるアプリケーションとやりとりする任意のＡＳＲシステムは、アプリケーションの現在の状態に基づいて、アプリケーションと正しくやり取りできる必要がある。
【０００３】
ＡＳＲを対象アプリケーション（例えば、ワードプロセッサ）の状態に合わせるための１つの典型的な方法は、ＡＳＲを対象アプリケーションと密接に統合することである。例えば、対象アプリケーションは、音声認識エンジンを様々なアプリケーション状態で使用するために適切に構成し、音声認識結果をかかるアプリケーション状態において適切に解釈するために、ＡＳＲの音声認識エンジンを認識するように設計され得るか、または修正され得る。例えば、ワードプロセッシングアプリケーションは、そのワードプロセッシングアプリケーションが「テキスト入力」状態にある場合に第１の特定の言語モデル（一般的な英語モデルなど）を使用するように音声認識エンジンを構成し、また、そのワードプロセッシングアプリケーションが「フォントダイアログボックス」状態にある場合に第２の特定の言語モデル（対象とするコンピュータ上に現在インストールされているフォント名のみを認識するように制限されている「フォントダイアログボックス」言語モデルなど）を使用するように音声認識エンジンを構成するように設計され得る。
【０００４】
音声認識エンジンと対象アプリケーションとの間のかかる密接な統合の１つの利点は、音声認識エンジンが適切な言語モデルを使用でき、また、他の方法で対象アプリケーションの各状態に対して適切に構成できるようにすることにより、それが音声認識精度を向上できることである。かかる密接な統合の別の利点は、音声認識エンジンの構成および音声認識エンジンの結果の解釈が、ボタンおよび他のユーザーインタフェース要素のサイズ、位置、またはテキストラベルなどの、アプリケーション状態の視覚的特徴に直接関係しないことである。
【０００５】
かかる密接な統合の著しい欠点は、しかし、音声認識エンジンおよび対象アプリケーションが、前もって、このように互いに統合されるように設計されるか、または修正される必要があることである。かかる統合は、従って、音声認識エンジンが対象アプリケーションの様々な状態と適切にやりとりするよう調整するために著しい手動労力を必要とし得るだけでなく、音声認識エンジンの設計者に利用可能ではないかも知れない、対象アプリケーションのソースコードまたは他の内部詳細へのアクセスも必要とし得る。さらに、密接な統合に依存している場合、その音声認識エンジンは、密接に統合するために設計されている対象アプリケーションとのみ使用可能である。結果として、かかる音声認識エンジンは、統合するために特に設計されていない対象アプリケーションと関連して使用される場合、同じ効果を得ることができず、また、同じ対象アプリケーションの修正されたバージョンと正しくやりとりすることさえ可能でないかも知れない。
【０００６】
一般に、自動音声認識システムが、ワードプロセッサ、ウェブブラウザ、電子メールクライアント、およびデータベースアプリケーションなどの、幅広い種類の対象アプリケーションとともに、かかる対象アプリケーションの様々な状態の全てにおいて高い認識精度で、使用可能であることは望ましい。しかし、上の記述が示すように、自動音声認識システムと対象アプリケーションとの間で、その２つの密接な統合を通じて、かかる相互運用性を達成しようとする試みは、退屈で時間のかかるものであり、多くの場合、現実的な観点から可能でない。自動音声認識システムを幅広い種類の対象アプリケーションとそれらの様々な状態において相互運用可能にするための様々な他のアプローチは、それら独自の欠点を有する。それ故、必要なのは、自動音声認識システムが、幅広い種類の対象アプリケーションとかかるアプリケーションの様々な状態において容易に、かつ高い認識精度で相互運用できるようにするための改善された技術である
【発明の概要】
【課題を解決するための手段】
【０００７】
一態様では、方法は、アプリケーションが第１の状態にある間に、第１の複数の入力をアプリケーション内に受信することを含む。本方法は、第１の複数の入力に基づいて、第１の言語モデルを訓練することを含む。本方法は、アプリケーションが第１の状態にあると判断することを含む。本方法は、アプリケーションが第１の状態にあるという判断に応答して、第１の言語モデルを第１の音声入力に適用することを含む。
【０００８】
別の態様では、自動音声認識システムは、アプリケーションが第１の状態にある間に、第１の複数の入力をアプリケーション内に受信する入力受信機を含む。本システムは、第１の複数の入力に基づいて、第１の言語モデルを訓練する言語モデルトレーナーを含み得る。本システムは、アプリケーションが第１の状態にあると判断する言語モデル選択コンポーネントを含み得る。本システムは、アプリケーションが第１の状態にあるという判断に応答して、第１の言語モデルを第１の音声入力に適用する、言語モデル適用コンポーネントを含み得る。本システムは、自動音声認識システムおよびアプリケーションを順に実行するオペレーティングシステムを実行するコンピューティング装置を含み得る。自動音声認識システムおよびアプリケーションを異なるコンピューティング装置上で実行する分散モデルでは、本システムは、複数のコンピューティング装置を含み得る。
【０００９】
本発明の様々な態様および実施形態の他の特徴および利点は、以下の記述および請求項から明らかになるであろう。
【００１０】
本開示の前述および他の目的、態様、特徴および利点は、添付の図に関連した以下の記述を参照することにより、さらに明らかになり、より良く理解されるであろう。
【図面の簡単な説明】
【００１１】
【図１Ａ】コンテキストアウェア認識モデルを使用した音声認識のためのシステムの一実施形態を示すブロック図である。
【図１Ｂ】自動音声認識システムがオペレーティングシステムフックコンポーネントを含む、システムの一実施形態を示すブロック図である。
【図１Ｃ】調整された言語モデルを含む、システムの一実施形態を示すブロック図である。
【図２】コンテキストアウェア認識モデルを使用した音声認識のための方法の一実施形態を示す流れ図である。
【発明を実施するための形態】
【００１２】
前述のように、自動音声認識（ＡＳＲ）システムが、任意の特定の時に対象アプリケーションの状態に関わらず、対象アプリケーション（例えば、ワードプロセッサ）と相互運用できるようにする１つの一般的な方法は、ＡＳＲを対象アプリケーションと密接に統合することである。このアプローチの欠点のために、他の試みが、ＡＳＲシステムを対象アプリケーションと相互運用可能にするために行われてきた。例えば、１つのかかるアプローチは、以下のような一般に適用可能なインタフェースを通じて、ＡＳＲシステムを対象アプリケーションとやりとり可能にすることである：
・キーボードエミュレーション
ＡＳＲエンジンが、キーボードイベントをエミュレートすることにより、テキストおよび／または制御シーケンスを対象アプリケーションにサブミットして、対象アプリケーションがかかるイベントを、それらがユーザーによるキーボード入力に応答して生成されたかのように、受信して処理できるようにする
・クリップボード転送
ＡＳＲエンジンが音声認識結果をオペレーティングシステムの「クリップボード」にポストし、「貼り付け」イベントを対象アプリケーションに送信して、あたかもユーザーがテキストに関して「コピー」および「貼り付け」操作を実行したかのように、音声認識結果が対象アプリケーションに提供されるようにする
・ＡＳＲシステムによって対象アプリケーションに伝送されたオペレーティングシステムメッセージ
・ポインティングデバイス（例えば、マウス）エミュレーション、ならびに
・ＡＳＲシステムが、対象アプリケーションが現在フォアグラウンドにあることに関する情報を取得し、また、対象アプリケーションによって現在表示されているユーザーインタフェース要素（例えば、ウィンドウ、メニュー、ダイアログボックス、ボタン、およびテキストフィールド）および現在入力フォーカスを有しているユーザーインタフェース要素の識別などの、対象アプリケーションの現在の状態を識別できるようにするための、標準的なオペレーティングシステムの内観機能を使用したオペレーティングシステムおよび対象アプリケーションの内観（ｉｎｔｒｏｓｐｅｃｔｉｏｎ）。
【００１３】
このクラスのアプローチの１つの利益は、対象アプリケーションが音声入力を受け入れるため、またはＡＳＲシステムを肯定的に構成するために修正されるのを必要とすることなく、ＡＳＲシステムが対象アプリケーションと相互運用できるようにすることである。代わりに、ＡＳＲシステムが対象アプリケーションの現在の状態を考慮して適切に構成されるのを確実にすること、および正しい入力が対象アプリケーションに提供されるのを確実にすることの責任は、ＡＳＲシステムのみにある。例えば、内観を使用する場合、ＡＳＲシステムは、電子メールクライアントアプリケーション（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｏｕｔｌｏｏｋ）がフォアグラウンドにある場合に「ｒｅｌｏａｄ  ｗｅｂ  ｐａｇｅ」コマンドではなく「ｓｅｎｄ  ｍａｉｌ」コマンドをアクティブにすることによるなど、現在フォアグラウンドにあるアプリケーションに適用可能なコマンドのみアクティブにするために、そのコマンドおよび制御文法を構成し得る。別の例として、ダイアログボックスがフォアグラウンドアプリケーション内でフォーカスされている場合、ＡＳＲシステムは、そのダイアログボックス内のユーザーインタフェース要素を制御するためのコマンド（ダイアログボックス内でボタンを選択するためのコマンドなど）をアクティブにし得、また、そのダイアログボックスが表示されている間にアプリケーションメニューが選択可能でない場合にそのメニューを制御するためのコマンドをアクティブにし得る。
【００１４】
今記述したアプローチは、しかし、様々な制限を有する。例えば、ＡＳＲシステムを構成するために内観を使用することは、内観から引き出すことができる結論に基づいてＡＳＲシステムを構成することに限定される。例えば、内観は、特定のダイアログボックスがフォーカスされ、「ＯＫ」および「キャンセル」ボタンを含むという結論を有効にできるが、内観単独では、「ＯＫ」および「キャンセル」ボタンを選択するユーザーの相対的確率に関して引き出されるいかなる結論も有効にできない。より一般的には、内観は、特定のユーザーインタフェース要素が特定の時にフォーカスを有するかどうか、または特定のユーザーインタフェース要素が特定の時に存在するかどうかなどの、静的情報に基づくので、内観単独では、一人または複数のユーザーがアプリケーションのユーザーインタフェースを長期間にわたって使用する方法など、動的情報に基づいて結論を有効にできない。
【００１５】
対照的に、本発明の実施形態は、アプリケーションおよびそのユーザーインタフェースの使用を長い間にわたって観察するため、および１人または複数のユーザーがかかるインタフェースを長期間にわたってどのように使用するかに関する結論を引き出すために使用され得る。
【００１６】
ここで、図２と併せて、図１Ａを参照すると、コンテキストアウェア認識モデルを使用する音声認識のための方法２００およびシステム１００は、自動音声認識システム１０４を含む。方法２００は、アプリケーションが第１の状態にある間に、第１の複数の入力をアプリケーション内に受信することを含む（２１０）。方法２００は、第１の複数の入力に基づいて第１の言語モデルを訓練することを含む（２２０）。方法２００は、アプリケーションが第１の状態にあると判断することを含む（２３０）。方法２００は、アプリケーションが第１の状態にあるという判断に応答して、第１の言語モデルを第１の音声入力に適用することを含む（２４０）。例えば、本発明の実施形態は、自動音声認識システム１０４（ＡＳＲシステム１０４とも呼ばれ得る）によって、長期間にわたるアプリケーションの特定のユーザーインタフェースの使用を観察すること、その特定のユーザーインタフェースの使用パターンを識別すること、ならびに、その特定のユーザーインタフェースに関連して、ＡＳＲシステムによる使用のために特定の言語モデルを選択および／または構成することによるなど、その識別された使用パターンを使用して、その特定のユーザーインタフェースでの使用のためにＡＳＲシステム１０４を構成することを含む。当業者によって理解されるように、ユーザーインタフェースは、１つまたは複数のユーザーインタフェース要素を含み得る。本明細書で「ユーザーインタフェース」に提供される入力へのどの参照も、１つまたは複数のユーザーインタフェース要素を含むユーザーインタフェースに入力を提供することを含む。
【００１７】
方法２００は、アプリケーションが第１の状態にある間に、第１の複数の入力をアプリケーション内に受信することを含む（２１０）。ＡＳＲシステム１０４は、第１の複数の入力をアプリケーション１４０内に受信し得る。アプリケーション１４０は、例えば、ＡＳＲおよびその音声ベースのインタフェースとは無関係に、テキストベースの相互作用のために開発された実行可能アプリケーションであり得る。ＡＳＲシステム１０４およびアプリケーション１４０の両方は、同一のコンピューティング装置１０２上のオペレーティングシステム１５０内で実行し得る。あるいは、ＡＳＲシステム１０４は、コンピューティング装置１０２上で実行し得、アプリケーション１４０は、第２のコンピューティング装置１０２ｂ（図示せず）上で実行し得る。
【００１８】
いくつかの実施形態では、自動音声認識システム１０４は、第１の複数の入力を受信する入力受信機１０６を含む。入力受信機１０６は、アプリケーションデータ、アプリケーションの状態の識別、ならびに／または、テキスト、音声、およびテキストと音声入力の混合を含む、様々なタイプの入力を受信し得る。
【００１９】
例えば、入力受信機１０６は、第１の複数の入力を、例として、キーボードなどの、テキストベースの入力装置から受信し得る。入力受信機１０６は、第１の複数の入力を、例として、マウスまたはスタイラスなどの、ポインティングデバイスから受信し得る。入力受信機１０６は、第１の複数の入力を、例として、マイクロホンなどの、音声入力装置から受信し得る。いくつかの実施形態では、入力受信機１０６は、ＡＳＲシステム１０４が音声入力に基づいて生成したテキストベースの入力を受信する。入力受信機１０６は、第１の複数の入力内に入力のタイプの組合せを受信し得る；例えば、入力受信機１０６は、第１の複数の入力内に、音声ベースの入力、テキストベースの入力、およびポインティングデバイスからの入力の組合せを受信し得る。
【００２０】
いくつかの実施形態では、入力受信機１０６は、第１の複数の入力を、ＡＳＲシステム１０４およびアプリケーション１４０の両方が実行するオペレーティングシステム１５０から受信する。他の実施形態では、入力受信機１０６は、第１の複数の入力を、オペレーティングシステム１５０の、および標準的なオペレーティングシステムの内観機能を使用するアプリケーション１４０の内観を通して受信して、ＡＳＲシステム１０４が、どの対象アプリケーションが現在フォアグラウンドにあるかに関する情報を取得し、対象アプリケーションによって現在表示されているユーザーインタフェース要素（例えば、ウィンドウ、メニュー、ダイアログボックス、ボタン、およびテキストフィールド）および現在入力フォーカスを有しているユーザーインタフェース要素の識別などの、対象アプリケーションの現在の状態を識別できるようにする。例えば、図１Ｂに示すように、ＡＳＲシステム１０４は、アプリケーション１４０の状態を判断するため、アプリケーション１４０のアプリケーションデータを一般的に受信するため、または、特に第１の複数の入力を受信するために、アプリケーション１４０とオペレーティングシステム１５０との間でメッセージをインターセプトするオペレーティングシステムフックコンポーネント１０８を含み得る。
【００２１】
方法２００は、第１の複数の入力に基づいて第１の言語モデルを訓練することを含む（２２０）。自動音声認識システム１０４は、第１の複数の入力に基づいて第１の言語モデルを訓練する。いくつかの実施形態では、図１Ａに示すように、言語モデルトレーナー１１０が、言語モデルを訓練し得る。「言語モデル」という用語は、本明細書では、例えば、文法を含むように広範に使用されることに留意されたい。文法、および言語モデルは一般に、「概念」のインスタンスに適用され得る。例えば、ＡＳＲシステム１０４は、ユーザーインタフェース要素（例えば、テキストフィールド）が入力として単一概念の複数のインスタンスを受信すると判断する場合、ＡＳＲシステム１０４は、ユーザーインタフェース要素に対する後続の入力を概念のインスタンスと分類して、特定の言語モデルを後続の入力に適用するように自身を構成し得る。概念は、任意のレベルの抽象化で定義され得る。例えば、ＡＳＲシステム１０４は、「Ｏｃｔｏｂｅｒ  １，１９９３」、「Ｓｅｐｔｅｍｂｅｒ  ３，２００７」、および「Ｍａｒｃｈ  １２，１９４２」を一般的な「日付」概念のインスタンスとして識別し得る。別の例として、ＡＳＲシステム１０４は、「Ｏｃｔｏｂｅｒ  １，１９９３」、「１０／０１／１９９３」、および「Ｏｃｔ  ０１  １９９３」を全て、Ｏｃｔｏｂｅｒ  １，１９９３のより具体的な概念のインスタンスであると識別し得る。さらに、概念は、１つまたは複数のパラメータを含み得、その各々は、タイプおよび対応する値を有し得る。単一の概念は、異なるタイプの複数のパラメータを含み得る。例えば、「日付」概念のインスタンスは、「月」、「日」、および「年」のパラメータを含み得、その各々が対応する値を有し得る。前述の例では、「Ｏｃｔｏｂｅｒ」、「Ｏｃｔ」、および「１０」の各々は、「日付」概念のインスタンスの「月」パラメータの値の一例である。
【００２２】
本発明の実施形態が、様々に異なる日付がテキストフィールド内に口述されていることを観察すると、ＡＳＲシステム１０４は、それらの入力を「日付」概念のインスタンスとして分類し、そのテキストフィールドに口述される音声を認識する際に「日付」文法を適用するように構成され得る。かかる「日付」文法は、その用語が本明細書で使用されるように、「言語モデル」の一例である。いくつかの事例では、言語モデルは、それに先行する単語を前提として出現する単語（「トークン」とも呼ばれ得る）の確率を示す；例えば、言語モデルは、以前に話された複数の単語が「Ａ  ｃａｔ  ｉｎ  ａ」であるという事実を踏まえて、次に話された単語が「ｈａｔ」である確率を示し得る。適用される日付文法は、一般的な日付文法、またはテキストフィールド内に口述されている日付に基づいてさらに適合される日付文法のいずれかであり得る。例えば、テキストフィールド内に口述されている日付の全てが、「月  日  年」の形式で口述されている場合、「月  日  年」の形式の「日付」文法がそのテキストフィールドに適用され得る。これは、本発明の実施形態が文法または他の種類の言語モデルをユーザーインタフェース要素またはユーザーインタフェース要素の集合に適用し得る方法のほんの一例である。
【００２３】
ＡＳＲシステム１０４を構成する別の例は、例えば、単語の発音が、それが話されるコンテキストに応じて変化し得る事実を反映するために辞書を適合することである。例えば、省略形「ＰＡ」は、機器をリストするために拡声装置をテキストフィールドに指定するために使用される場合は、「ＰＥＥ  ＡＹ」と発音され得るが、州名を入力するためにフィールドに口述している場合は、単語「Ｐｅｎｎｓｙｌｖａｎｉａ」として発音され得る。ＡＳＲシステム１０４を構成するさらに別の例は、仲裁（ａｒｂｉｔｒａｔｉｏｎ）パラメータを構成することであり、それは、任意の所与の発語を文法として解釈するか、またはテキストとして解釈するかを制御するパラメータである。
【００２４】
本明細書に記載されるシステムは、異なるコンポーネントに対して異なるタイプのパラメータを含み得ることが理解されよう；例えば、ＡＳＲシステム１０４は、ここで記述したような仲裁パラメータを有し得るが、一方、概念は、主概念内の下位概念（例えば、日付内の月）を識別するパラメータを有し得る。単語「パラメータ」は、かかるタイプのパラメータの両方を記述するために使用されるが、これは、かかるタイプのパラメータの両方が同じタイプのパラメータであることを意味するつもりではない。
【００２５】
同じ技術が、同じアプリケーションの別のユーザーインタフェースに適用されて、その他のユーザーインタフェースの異なる使用パターンを識別し得、また、その異なる使用パターンを使用して、他のユーザーインタフェースでの使用のためにＡＳＲシステム１０４を構成し得る。結果として、ＡＳＲシステム１０４は、動的かつ自動的に学習される使用パターンに基づき、アプリケーションの異なる状態に関連して異なった使用のために構成され得る。同じ技術がアプリケーションにわたって適用され得る。
【００２６】
ＡＳＲシステム１０４は、追加の入力を受信し得、追加の情報を受信すると、言語モデルを修正するか、または再訓練し得る。例えば、ＡＳＲシステム１０４は、アプリケーションが第１の状態にある間に、第１の複数の入力をアプリケーション内に受信し、次いで、アプリケーションが第１の状態にある間に、第２の複数の入力を受信し得る；例えば、ＡＳＲシステム１０４は、第２の複数の入力を、アプリケーション１４０ｂの第２のコピーを実行する別のコンピューティング装置１０２ｂから、またはアプリケーション１４０をもつ第２のセッション中に（例えば、アプリケーション１４０が同じユーザーまたは異なるユーザーによって使用中の場合）、受信し得る。
【００２７】
その上、ＡＳＲシステム１０４は、複数の言語モデルを訓練し得る。例えば、ＡＳＲシステム１０４は、第１の状態でのアプリケーションへの第１の複数の入力に基づいて、第１の言語モデルを訓練し、次いで、そのアプリケーションが、第１の状態とは異なる第２の状態にある間に、第２の複数の入力をアプリケーション内に受信し得る；ＡＳＲシステム１０４は、次いで、第２の複数の入力に基づいて、第２の言語モデルを訓練し、アプリケーションが第２の状態にあるという判断に応答して、その第２の言語モデルを第２の音声入力に適用し得る。
【００２８】
今記述した技術は、任意の種類のユーザーインタフェース要素に対して、およびユーザーインタフェース要素の任意の組合せに対して使用され得る。本発明の実施形態が適用され得るユーザーインタフェース要素の例は、ウィンドウ、メニュー、ダイアログボックス、ボタン、チェックボックス、ラジオボタン、ドロップダウンリスト、およびテキストフィールドを含むがそれらに限定されない。メニューおよびダイアログボックスの例が示すように、本発明の実施形態は、複数のメニュー項目を含むメニュー、または複数のボタン、チェックボックス、テキストフィールド、および他のユーザーインタフェース要素を含むダイアログボックスなどのユーザーインタフェース要素の集合に適用され得る。
【００２９】
一例として、本発明の実施形態は、長期間にわたって、特定のアプリケーションで特定のユーザーインタフェース要素内に提供される入力を観察し得る。例えば、特定のアプリケーション内の特定のダイアログボックス内の特定のテキストフィールドを考える。ユーザーは任意のテキストをテキストフィールドに入力し得るので、ＡＳＲシステムが、その言語モデルを、ダイアログボックスの内観のみに基づいて、そのテキストフィールドに対して訓練することは可能でない。その結果、従来型のＡＳＲシステムは、通常、一般的な英語の言語モデルをかかるテキストフィールドに適用する。
【００３０】
本発明の実施形態は、しかし、長期間にわたる特定のテキストフィールドへの入力であるテキスト入力を観察し、その観察された入力に基づいて、テキストフィールドに関連付けられた言語モデルを調整し得る。一例として、テキストフィールドへの異なるテキストの入力の頻度が観察され得、言語モデルが、その観察された頻度に基づき、テキストフィールドに対して調整され、関連付けられ得る。例えば、第１のテキスト文字列（「Ｈｉｇｈ」など）が５０％の頻度でテキストフィールドに入力されること、第２のテキスト文字列（「Ｍｅｄｉｕｍ」など）が３０％の頻度でテキストフィールドに入力されること、および第３のテキスト文字列（「Ｌｏｗ」など）が２０％の頻度でテキストフィールドに入力されることが観察される場合、５０％の確率をテキスト文字列「Ｈｉｇｈ」に、３０％の確率をテキスト文字列「Ｍｅｄｉｕｍ」に、および２０％の確率をテキスト文字列「Ｌｏｗ」に割り当てる言語モデルが生成され得る。あるいは、例えば、一般的な英語の言語モデルが最初にテキストフィールドに関連付けられ得、そして、その言語モデルにおける単語の確率が、ユーザーがそれらの単語をテキストフィールドに入力していることの観察に応答して上方に調整され得、また、その言語モデルにおける単語の確率が、ユーザーがそれらの単語をテキストフィールドに入力していないことの観察に応答して下方に調整され得る。
【００３１】
ここで図１Ｃを参照すると、ブロック図が、言語モデルの一実施形態を示している。図１Ｃにおける言語モデルは、例示および説明を容易にするために、大いに簡略化された形式で示されている。実際には、言語モデルは、図１Ｃに示すものとは様々な形で異なり得る。
【００３２】
図１Ｃに示すように、言語モデルトレーナー１１０は、デフォルトの言語モデル１６０へのアクセス、ならびに調整された言語モデル１７０へのアクセスを有し得る。例えば、言語モデルトレーナー１１０は、デフォルト設定で複数の言語モデルへのアクセスを有し得、また、言語モデルトレーナー１１０は、１つまたは複数の言語モデルをカスタマイズして、特定の状態における特定のアプリケーションに関連付けられた調整された言語モデル、例として、アプリケーション１４０が第１の状態にある場合にアプリケーション１４０に関連付けられた調整された言語モデル１７０など、を生成する。図１Ｃに示すように、調整された言語モデル１７０は、ユニグラムモデルであり得、その中で、各トークンに関連付けられた確率は、任意の以前のトークンの出現とは関係なく、出現するトークンの確率である。ユニグラム言語モデルは、本発明の実施形態に関連して使用され得る一種の言語モデルの一例にすぎない。別の例として、調整されたモデル１８０に示すように、言語モデルトレーナー１１０は、ｎグラム言語モデルである調整されたモデルを生成し得るが、ここでｎは任意の値（例えば、１、２、３、４など）である。例えば、図１Ｃに示すように、調整された言語モデル１８０は、トリグラム（ｎ＝３）言語モデルであり得、それは、トークン「ｈａｔ」は、直接先行するトークンが「ｉｎ  ａ」であれば、６０％の出現確率であり、トークン「ｈａｔ」は、直接先行するトークンが「ｏｎ  ｔｈｅ」であれば、９９％の出現確率であり、また、トークン「ｈａｔ」は、直接先行するトークンが「ｗｅａｒｉｎｇ  ａ」であれば、５０％の出現確率であることを示す。図１Ｃに示すように、デフォルトの言語モデル１６０は、特定の入力値に対して等しい確率を示し得るが、調整された言語モデル１７０および１８０に示すように、ＡＳＲシステム１０４および観察された入力に基づいて言語モデルを訓練するための機能を使用すると、システム１００は、調整された言語モデルにおいて改善された精度を提供し得る。
【００３３】
いくつかの実施形態では、従って、ＡＳＲシステム１０４は、テキストベースの入力を使用して、言語モデルを調整する。ユーザーは、時々、テキストフィールドに手動でテキストを入力することにより、フィールドテキストに直接テキストを入力し得る；あるいは、ユーザーは、話して、その音声をＡＳＲシステム１０４によってテキストに転記させることにより、テキストを間接的に入力し得る。いずれの状況でも、ＡＳＲシステム１０４は、テキストフィールド入力を観察して言語モデルを訓練し得る。本明細書に記載するように、システムは、訓練のために様々な種類の音声入力も使用し得る。本明細書では、「音声入力」という用語は、ユーザーの音声を表す音声入力および／またはユーザーの音声に基づきＡＳＲシステム１０４によって生成された出力（ユーザーの音声に基づき生成されたテキストおよび／またはコマンドなど）を含み得る。本明細書で開示した技術を使用して訓練されている言語モデルを使用して音声から生成された入力が、訓練データとして含まれ得るか、または除外され得る。本発明の実施形態は、訓練で使用するために、誤り（すなわち、間違った音声認識結果）を含むか、または除外し得る。誤りを訓練データとして使用することは、間違った出力の生成という結果となり得るにしても、同じ誤った出力を常に生成する結果となり、それにより、出力のばらつきを減らして、潜在的に、出力訂正技術（例えば、スペル訂正技術）を使用して訂正されるようにし得る。
【００３４】
同様の技術が、テキストフィールド以外のユーザーインタフェース要素に適用され得る。例えば、３つのリスト要素：「Ｈｉｇｈ」、「Ｍｅｄｉｕｍ」、および「Ｌｏｗ」を含むドロップダウンリストを考える。これらのリスト要素は学習され、従来型の内観ベースの技術を使用して言語モデルを生成するために使用され得るが、かかる技術は、３分の１の等しい確率を３つのリスト要素の各々に割り当てる言語モデルという結果となるだろう。対照的に、本発明の実施形態は、かかるリスト要素が選択される実際の頻度を観察し得る。例えば、リスト要素「Ｈｉｇｈ」が５０％の頻度で選択され、リスト要素「Ｍｅｄｉｕｍ」が３０％の頻度で選択され、そして、リスト要素「Ｌｏｗ」が２０％の頻度で選択される場合、言語モデルは、前述した任意の方法で、かかる頻度に基づき、生成または修正され得る。結果として、３つのリスト要素のうちの１つを選択するために音声が認識される場合、認識はより正確に実行され得る。これは、例えば、２つのリスト要素が同様に発音される（例えば、「Ｍｅｄｉｕｍ」および「Ｍｅｄｉａｎ」）が、著しく異なる確率（例えば、５０％および１％）を有する場合、特に当てはまる。それ故、いくつかの実施形態では、言語モデルを訓練することは、ＡＳＲシステム１０４によって、確率を言語モデル内の単語に関連付けることを含む。
【００３５】
頻度を判断する際、ＡＳＲシステム１０４は、入力値を分析し得る。例えば、ＡＳＲシステム１０４は、複数の入力の中で、複数の入力値を識別し得、次いで、入力値の各々が複数の入力内で出現する頻度（例えば、３０の入力のうち、１５が「ｈｉｇｈ」の入力値を有し、１０が「ｍｅｄｉｕｍ」の入力値を有し、そして、５が「ｌｏｗ」の入力値を有する；「ｈｉｇｈ」の入力値を選択する頻度は、その結果５０％である）を識別し得る。
【００３６】
加えて、ＡＳＲシステム１０４は、入力値に関連した概念を分析し得る。例えば、ＡＳＲシステム１０４は、複数の入力のうちの１つに対して、入力値を識別し得、その入力値が概念のインスタンスであると判断し得、概念のインスタンス数を識別し、そして、その概念が複数の入力内で出現する頻度を識別する。この一例として、複数の入力のサブセットが、「１０／１／１２」および「Ｏｃｔｏｂｅｒ  １，２０１２」などの入力値を有し得るが、その両方がＯｃｔｏｂｅｒ  １，２０１２の概念のインスタンスである。ＡＳＲシステム１０４は、特定の概念（例えば、Ｏｃｔｏｂｅｒ  １，２０１２の概念、または日付のもっと一般的な概念）のインスタンスである入力値を有する入力の数を識別し得、それにより、その入力値内の概念の出現頻度を識別する。ＡＳＲシステム１０４はまた、動作（例えば、ファイルのオープンまたはクローズ、コマンドの実行、レコードの修正など）が起こる頻度を、その動作の開始に使用された入力値とは無関係に、分析し得る。ＡＳＲシステム１０４は、識別された頻度または複数の頻度を使用して、第１の言語モデルを訓練し得る。
【００３７】
追加または代替として、ＡＳＲシステム１０４は、異なる専門分野に対してカスタマイズされた言語モデルを生成するために頻度を使用し得る；例えば、動作、入力値、または概念の頻度が、その入力が、第１のタイプの医者（例えば、小児科医）による薬剤の処方に関連していることを示す場合は、第１の言語モデルが使用され得、また、頻度が、その入力が第２のタイプの医者（例えば、がん専門医）による薬剤の処方に関連していることを示す場合には、第２の言語モデルが使用され得る。かかる実施形態では、ＡＳＲシステム１０４が、アプリケーション１４０が第１の状態にあると判断し、第１の言語モデルを適用することを決定する場合、ＡＳＲシステム１０４は、特定の概念の頻度に基づいて訓練された複数のカスタマイズされた言語モデルから、第１の言語モデルを選択し得る。例えば、電子カルテ（ＥＭＲ）を管理するためのアプリケーション１４０の事例において、またはアプリケーション１４０の特定のタイプに対して、ＡＳＲシステム１０４は、「薬剤物質」、「薬剤投与量」、「投薬回数」、および「アレルゲン」などの概念を制限なく含む、ＥＭＲ関連の概念に基づいて訓練された第１の言語モデルを適用し得る。さらに、以下に記述するように、ＡＳＲシステム１０４は、複数のユーザーから受信した複数の入力内で識別された、動作、入力値、または概念の頻度を分析し、言語モデルの訓練において使用し得る。
【００３８】
別の例として、同じ用語の別の話された形式が学習されて、言語モデルを自動的に生成および／または修正するために使用され得る。例えば、「ＰＥＥ  ＡＹ」および「ＰＥＮＮＳＹＬＶＡＮＩＡ」と発音された音声の両方が、同じテキストフィールド内に口述されて、テキストの認識結果「ＰＡ」を生成する場合、システムは、かかる音声の例の両方がテキスト「ＰＡ」の別の話された形式であることを学習して、適切に適用可能な言語モデルを生成および／または修正し得る。さらに別の例として、特定のユーザーインタフェース要素が、テキストの省略形「ＰＡ」などの、特定の用語を入力として受け入れることが前もって分かっているが、特定のコンテキストにおけるその省略形の正しい発音が前もって分かっていない場合、当初は全ての（または多数の）可能な発音が、そのユーザーインタフェース要素に適用される音響モデルによって許可され得る。しかし、省略形「ＰＡ」の特定の発音が長期間にわたって観察されるにつれて、そのユーザーインタフェース要素への入力として実際に観察される発音を許可する（好む）ように音響モデルが狭められ得る。
【００３９】
さらに別の例として、自由にタイプされたテキストを受け入れ得るが、Ｎ個の可能な入力のうちの１つだけを許可するように設計されている、テキストボックスを考える。例えば、薬剤名を入力するために使用されるテキストボックスは、薬剤名の受入れに限定され得るが、かかる可能な入力の数は千単位であり得る。テキストボックスは、それまでにユーザーによって現在タイプされたテキストの許容可能な完了をユーザーに対して表示するように設計され得る。例えば、ユーザーが、テキストボックス内に「ｐ」をタイプして開始する場合、テキストボックスは、そのテキストボックスの下に、文字「ｐ」で始まる許容可能な薬剤名の全てを表示し得る。ユーザーがタイプを継続するにつれて、ユーザーによってそれまでにタイプされたテキストに一致する許容可能な薬剤名のみが表示される。
【００４０】
本発明の実施形態は、かかる例における許容可能な薬剤のリストを、そのテキストボックスに実際に提供された入力を長期間にわたって観察することにより、学習し得る。これは、本発明の実施形態が、Ｎ個の許容可能な入力からの１つがユーザーインタフェース要素に入力されることを要求するユーザーインタフェース要素へのＮ個の許容可能な入力のうちの一部または全部を学習し得る事例の一例にすぎない。
【００４１】
前述のように、本発明の実施形態によって訓練された各言語モデルが、１つまたは複数の対応するユーザーインタフェース要素に関連付けられ、その対応するユーザーインタフェース要素が入力フォーカスを有する場合に、各言語モデルが音声を認識するため適用され得るようにする。言語モデルとユーザーインタフェース要素との間のかかる関連付けは、様々な方法で作成および維持され得る。例えば、ユーザーが（音声および／または非音声）入力を提供している間に、本発明の実施形態は、「アプリケーションデータ」の以下の要素のうちの任意の１つまたは複数を観察し得る：
・現在フォアグラウンドにあるアプリケーション（すなわち、現在フォーカスされているアプリケーション）、
・現在フォアグラウンドにあるアプリケーションの状態、例えば、現在表示されているアプリケーション内のウィンドウ、ダイアログボックス、または他のユーザーインタフェース要素、および
・フォアグラウンドアプリケーション内の現在入力フォーカスを有しているユーザーインタフェース要素。
【００４２】
ユーザーが（音声および／または非音声入力を）提供すると、かかる入力が、観察され、記録され、かつ、前述したアプリケーションデータの１つまたは複数の要素と関連付けられ得る。いくつかの実施形態では、ＯＳフックコンポーネント１０８が、入力を、観察し、記録し、かつ、アプリケーションデータの１つまたは複数の要素と関連付ける。例えば、ユーザーが、ダイアログボックス内のテキストフィールドにテキストをタイプする場合、ＯＳフックコンポーネント１０８は、以下の任意の１つまたは複数のレコードを作成および格納し得る：（１）テキストフィールドにタイプされたテキスト；（２）テキストフィールドに関連付けられたアプリケーション；（３）アプリケーションによって現在表示されているユーザーインタフェース要素（例えば、ウィンドウおよびダイアログボックス）のリスト；（４）現在、入力フォーカスを有しているユーザーインタフェース要素；および（５）テキストがタイプされた特定のユーザーインタフェース要素（例えば、テキストフィールド）。同じことが、ユーザーによって任意の種類のユーザーインタフェース要素に提供され得る、任意の音声および／または非音声入力にも当てはまる。第１の言語モデルを、アプリケーション１０４によって受信された第１の音声入力に適用するかどうかを判断する際に、ＡＳＲシステム１０４は、アプリケーション１４０の状態を判断するためにアプリケーションデータを分析し得る。ＡＳＲシステム１０４は、アプリケーションの判断された状態を、第１の言語モデルに関連付けられた状態と比較して、判断された状態と第１の言語モデルに関連付けられた状態が実質的に同じ状態であるかどうかを判断し得る。あるいは、ＡＳＲシステム１０４は、（状態の比較の代わりに、またはそれに追加して）そのアプリケーションのアプリケーションデータを第１の言語モデルに関連付けられたアプリケーションデータと比較し得る。別の代替手段として、ＡＳＲシステム１０４は、アプリケーション１４０への観察された入力を音声入力と比較し得；入力の分布などの、入力に関する統計値が、十分に似ている（例えば、所定の閾値を満足するか、または超える）場合、ＡＳＲシステム１０４は、その２つの状態が実質的に同じであると判断し得る。
【００４３】
前述のように、あるタイプの入力、入力値、動作、および概念の頻度に追加して、またはその代わりに、かかる情報が、複数の入力に対して、同じユーザーによるか、または複数のユーザーによって、任意の単一のアプリケーションまたはアプリケーションの集合内に記録され得る。かかる情報は、単一のコンピュータ上で、または複数のコンピュータにわたって、提供された入力に対して記録され得る。例えば、特定のアプリケーション（特定のワードプロセッサ）が複数のコンピュータ上で実行する場合、複数のコンピュータ上でそのワードプロセッサの複数のコピーに提供された入力が観察され、前述したデータを生成および格納するために使用され得る。かかるデータは、複数のコンピュータにわたってワードプロセッサのそれら複数のコピーとともに使用され得る言語モデルを訓練するために集計され得る。集計、訓練、および他のステップが、そのアプリケーション（例えば、ワードプロセッサ）を実行する１つもしくは複数のコンピュータ上で、またはそのアプリケーションを実行しない１つもしくは複数の他のコンピュータ（サーバーなど）上で、実行され得る。
【００４４】
いくつかの実施形態では、言語モデルが、特定のユーザーインタフェース、または特定のユーザーインタフェース要素に関連付けられる。例えば、第１の言語モデルが第１のユーザーインタフェースに関連付けられ（かつ、例えば、アプリケーション１４０が、第１のユーザーインタフェースをレンダリングする状態にある場合に、適用され）得、他方、第２の言語モデルが第２のユーザーインタフェースに関連付けられ（かつ、例えば、アプリケーション１４０が、第２のユーザーインタフェースをレンダリングする状態にある場合に、適用され）得る。しかし、前述のある例では、言語モデルが特定のユーザーインタフェースまたはユーザーインタフェース要素に関連付けられると言われたが、これは、例にすぎず、本発明の制限を構成しない。より一般的には、本明細書で開示された技術を使用して訓練された言語モデルは、前述したアプリケーションデータの任意の１つまたは複数の要素と関連付けられ得る。例えば、特定のアプリケーションの複数のユーザーインタフェース要素への入力が、言語モデルを訓練するために使用され得るが、その言語モデルは、アプリケーションに関連付けられ、次いで、アプリケーション全体に対する、すなわち、アプリケーション内の全てのユーザーインタフェース要素に対する入力を生成するために使用される。別の例として、特定のアプリケーションの特定のウィンドウまたはダイアログボックス内の複数のユーザーインタフェース要素への入力が、言語モデルを訓練するために使用され得るが、その言語モデルは、そのウィンドウまたはダイアログボックスに関連付けられ、次いで、そのウィンドウまたはダイアログボックス全体に対する、すなわち、そのウィンドウまたはダイアログボックス内の全てのユーザーインタフェース要素に対する入力を生成するために使用される。
【００４５】
より一般的には、言語モデルは、アプリケーションの特定の状態または複数の状態に関連付けられ得る。状態は、アプリケーションによって現在表示されているユーザーインタフェース要素、または現在入力フォーカスを有しているユーザーインタフェース要素への参照によって定義され得るが、その必要はない。状態の例は、時刻、平日対週末、およびシフト勤務中対非番を含むが、それらに限定されない。複数のシステムが互いに相互運用する事例（例えば、ＥＭＲ、放射線医学システム、および研究室システム）では、通常、各アプリケーションが自身の状態を他のアプリケーションに伝達できるようにするコンテキスト共有アプリケーションがある。例えば、１つのアプリケーションが、特定の患者に対するデータの編集に切り替える場合、コンテキスト共有アプリケーションは、この新しい状態を他の相互運用しているアプリケーションに伝達して、それらのアプリケーションが自動的に、同じ患者に対するデータの表示および／または編集に切り替えることができるようにする。本発明の実施形態は、かかるコンテキスト共有アプリケーションによって提供された情報に基づいて現在の状態を識別し得、その識別された現在の状態が、例えば、現在の状態が今は糖尿病患者に関連していることを識別するために使用され得る。かかる情報は、本発明の実施形態によって現在の状態として使用され得る。
【００４６】
方法２００は、アプリケーションが第１の状態にあると判断することを含む（２３０）。ＡＳＲシステム１０４は、アプリケーションに関連付けられたアプリケーションデータを評価して、どの言語モデルを適用すべきかを判断し得る。言語モデル選択コンポーネント１２０は、アプリケーションが第１の状態にあると判断し得る。言語モデル選択コンポーネント１２０は、アプリケーションが第１の状態にある場合に、アプリケーションに対する複数の言語モデルから音声入力に対する言語モデルも識別し得る。
【００４７】
前述したように、いくつかの実施形態では、アプリケーションデータのある特定のセットが各言語モデルに関連付けられる。ユーザーが入力を提供すると、本発明の実施形態は、システムの現在の状態に関する情報を収集し、その情報を、様々な言語モデルに関連付けられたアプリケーションデータと比較し得る。例として、ＡＳＲシステム１０４は、アプリケーションデータを分析してそのアプリケーションの状態を判断し、そのアプリケーションの判断された状態を、第１の言語モデルに関連付けられた状態と比較して、判断された状態および第１の言語モデルに関連付けられた状態が実質的に同じ状態であると判断し得る。特定の言語モデルに関連付けられた状態が、（ある所定の基準に従って）システムの現在の状態に一致すると判断されると、その一致する言語モデルがユーザーから受信された音声入力に適用される。あるいは、例として、ＡＳＲシステム１０４は、そのアプリケーションのアプリケーションデータを第１の言語モデルに関連付けられたアプリケーションデータと（例えば、そのアプリケーションの状態を判断することなく）比較して、アプリケーションデータおよび第１の言語モデルに関連付けられたデータが実質的に同じ状態であると判断し得る。例えば、特定のダイアログボックスが表示されると判断され、そのダイアログボックス内の特定のテキストフィールドが入力フォーカスを有すると判断される場合、かつ、そのテキストフィールドに関連付けられた言語モデルが存在する場合、その言語モデルが、ユーザーから受信された音声入力に適用されて、そのテキストフィールドへのテキスト入力を生成する。
【００４８】
いくつかの実施形態では、ＡＳＲシステム１０４は、入力数の分析に基づいて言語モデルを適用するかどうかを判断し得るが、それは、言語モデルを適用するかどうかを評価するために閾値を使用することを含み得る。例えば、ＡＳＲシステム１０４は、ユーザーインタフェースへの複数の入力を分析して、複数の入力のうちのいくつが言語モデルに関連付けられるかを識別し得る；この関連付けは、直接的（例えば、「Ｏｃｔｏｂｅｒ  １，１９９３」は「日付」文法に直接関連付けられる）または間接的（例えば、「１０／０１／１９９３」は「ＭＭ／ＤＤ／ＹＹＹＹ」の「日付」概念に関連付けられ、「日付」概念は「日付」文法に関連付けられる）であり得る。ＡＳＲシステム１０４は、言語モデルに関連付けられた複数の入力の数が所定の閾値を超える場合、ＡＳＲシステム１０４は、言語モデルをユーザーインタフェースへの入力に適用すべきであると判断し得る。別の例として、ＡＳＲシステム１０４は、言語モデルに関連付けられた複数の入力の割合が所定の閾値を超える場合、ＡＳＲシステムは、言語モデルをユーザーインタフェースへの入力に適用すべきであると判断し得る。さらなる例として、ＡＳＲシステム１０４は、言語モデルを適用するかどうかを判断する際に複数の要因を評価し得る；例えば、ＡＳＲシステム１０４は、閾値数の入力を受信した後に入力を分析するように構成され得、また、分析された入力の閾値サブセットが言語モデルに関連付けられると判断した後に言語モデルを適用することを決定するように構成され得る（例えば、ＡＳＲシステム１０４は、ユーザーインタフェースへの１０の入力を受信した後に入力を分析し、受信した入力の７５％が言語モデルに関連付けられる場合、その言語モデルを適用することを決定する）。
【００４９】
方法２００は、アプリケーションが第１の状態にあるという判断に応答して、第１の言語モデルを第１の音声入力に適用することを含む（２４０）。一実施形態では、言語モデル適用コンポーネント１３０は、アプリケーションが第１の状態にあるという言語選択コンポーネント１２０による判断に応答して、第１の言語モデルを第１の音声入力に適用する。ＡＳＲシステム１０４は、例えば、テキストフィールドが入力フォーカスを有するとき、または、そのテキストフィールドを含む、ダイアログボックス、ウィンドウ、もしくは他のユーザーインタフェース要素がフォーカスを有するとき、言語モデルを適用し得る。本発明の実施形態は、例えば、内観を使用して、どのユーザーインタフェース要素が現在入力フォーカスを有するかを判断し得、次いで、音声を認識する際に対応する言語モデルを適用して、そのユーザーインタフェース要素への入力を作成し得る。この例が示すように、本発明の実施形態によって使用される技術は、言語モデルを訓練するための観察中および訓練後、音声認識中に訓練された言語モデルの適用中の両方で、内観を使用するために従来型の技術とともに使用され得る。
【００５０】
訓練が第１のステップで実行され、次いで、訓練された言語モデルの適用が続き得るが、代わりに訓練が継続していることがあり得、そのため、言語モデルが継続して訓練されて、観察に応答して更新されるようになり、また、そのため、かかる言語モデルが直ちに利用可能になることに留意されたい。言い換えれば、特定のユーザーインタフェース要素への入力の観察が、そのユーザーインタフェース要素に関連付けられた言語モデルの生成および／または更新のために使用され得、そして、言語モデルが次いで、音声認識中に適用されて、そのユーザーインタフェース要素への入力を生成し得る。同じユーザーインタフェース要素への後続の入力が、次いで、関連付けられた言語モデルを更新するために使用され得、その更新された言語モデルが次いで、音声認識中に適用されて、同じユーザーインタフェース要素への後続の入力を生成し得る。このプロセスを、任意の回数繰り返し得る。
【００５１】
言語モデルは、直ちにアクティブにされる必要がない。代わりに、例えば、特定の言語モデルは、ある最小限の訓練データで訓練されている場合、または言語モデルの精度において、ある最低限度の自信が達成された後にのみ、アクティブにされ得る。特定の言語モデルを使用のためにアクティブにするかどうか、またいつアクティブにするか判断するために、任意の測定基準が使用され得る。
【００５２】
ＡＳＲシステム１０４は、アプリケーション１４０に対して、第１の言語モデルを第１の音声入力に適用した結果を提供し得る。それを行う際、ＡＳＲシステム１０４は、結果をアプリケーション１４０に提供するために、キーボードエミュレーション、クリップボード転送、オペレーティングシステムメッセージング、ポインティングデバイスエミュレーション、および内観などの、前述した従来型の技術を利用し得る。例えば、ＡＳＲシステム１０４は、キーボードイベントをエミュレートして、テキスト入力もしくは制御シーケンスのいずれかをアプリケーション１４０にサブミットし得るか、またはＡＳＲシステム１０４は、ポインティングデバイスイベントをエミュレートして、テキスト入力もしくは制御シーケンスのいずれかをアプリケーション１４０にサブミットし得る。別の例として、ＡＳＲシステム１０４は、結果を、オペレーティングシステム１５０によって保持されているクリップボードバッファにポストして、アプリケーション１４０がその結果をクリップボードバッファから受信できるようにし得る；これは、例として、キーボードまたはポインティングデバイスのエミュレーション（例えば、ＡＳＲシステム１０４は、結果をクリップボードバッファにポストして、アプリケーション１４０にその結果をクリップボードバッファから取得するように指示するキーボードコマンドをエミュレートする）と併せて行われ得る。さらなる例として、ＡＳＲシステム１０４は、その結果を含むオペレーティングシステムメッセージを生成し、そのオペレーティングシステムメッセージをアプリケーションに伝送する。ＡＳＲシステム１０４は、入力フォーカスを有するユーザーインタフェースを識別するために内観も使用し、結果を識別されたユーザーインタフェースに提供し得る。これらの例の各々では、ＯＳフックコンポーネント１０８は、結果をアプリケーション１４０に提供するために必要な機能を提供し得る。
【００５３】
ＡＳＲシステム１０４は、各々が異なる機能を提供するか、もしくは冗長性およびフェールオーバー機能目的で、同一の機能を提供する、複数のサブアプリケーションを含む、単一のアプリケーションとして、または分散システムとして提供され得る。いくつかの事例では、ＡＳＲシステム１０４は、クライアントエージェント（図示せず）と通信し得る；例えば、ＡＳＲシステム１０４が第１のコンピューティング装置１０２上で実行し、第２のコンピューティング装置１０２ｂ上で実行しているアプリケーションに提供された第２の複数の入力を、第１の言語モデルの訓練で使用するために受信する実施形態では、システムは、第２のコンピューティング装置１０２ｂ上で実行して、第２の複数の入力を取得し、第２の複数の入力をＡＳＲシステム１０４に伝送する、クライアントエージェントを含み得る。別の例として、ＡＳＲシステム１０４が第１のコンピューティング装置上で実行し、アプリケーション１４０に提供された第１の複数の入力を受信するが、アプリケーション１４０が第２のコンピューティング装置１０２ｂ上で実行する実施形態では、ＡＳＲシステム１０４が言語モデルを音声入力に適用して結果を生成する場合、ＡＳＲシステム１０４は、結果を、直接的または間接的に、アプリケーション１４０に提供する第２のコンピューティング装置１０２ｂ上で実行しているクライアントエージェントに結果を伝送し得る。
【００５４】
本発明の実施形態は、様々な利点を有する。例えば、本発明の実施形態は、音声認識出力が提供されるアプリケーションの状態に依存する使用パターンを観察することにより、および、それらのアプリケーション状態に対してかかる音声認識出力を生成するために使用される言語モデルを調整することにより、より高い音声認識精度を達成するために使用され得る。特に、本発明の実施形態は、異なるアプリケーション状態における異なる入力の相対頻度を観察し、観察された相対頻度に基づき、それらのアプリケーション状態で使用するために言語モデルを調整し得る。各調整された言語モデルは、次いで、アプリケーションがその言語モデルに関連付けられた状態にある場合に音声入力に適用され得る。結果として生じる音声認識出力は、一般的な言語モデル（すなわち、アプリケーション状態に依存していない言語モデル）がアプリケーションの全ての状態に適用された場合よりも正確である可能性が高い。
【００５５】
かかる利益は、自動的に、かつ自動音声認識システムと対象アプリケーションの密接な統合を必要とすることなく、取得され得る。むしろ、ＡＳＲシステム１０４の精度は、アプリケーションによって使用される様々なユーザーインタフェースの知識などの、アプリケーション状態の任意の所定の知識を用いてＡＳＲシステム１０４を手動で構成する必要なく、ユーザー入力の観察に応答して、長期間にわたり自動的に改善し得る。本発明の実施形態は、しかし、アプリケーションの現在の状態を識別するため、およびアプリケーションの特定の状態の間にそのアプリケーションに許容可能な入力を識別するために、既存の内観ベースの技術を利用して、音声認識精度をさらに改善する。
【００５６】
本発明の実施形態の関連した利益は、さらなる観察が行われるにつれて、それらが長期間にわたって継続して改善されることである。本発明の実施形態のさらに別の関連した利益は、それらがユーザーにわたり、かつコンピュータにわたって適用され得ることである。例えば、一人のユーザーにより特定のアプリケーションに対して提供された入力は、他のユーザーがそのアプリケーションに入力を提供する場合でさえ、また、そのアプリケーションが他のコンピュータ上で実行される場合でさえ、そのアプリケーション内での使用のため言語モデルを訓練するために使用され得る。本発明の実施形態のさらに別の関連した利益は、訓練された言語モデルが、アプリケーション全体から個々のユーザーインタフェース要素（例えば、テキストボックスまたはドロップダウンリスト）のレベルに至るまで、任意のレベルの粒度で定義されるアプリケーション状態に関連付けられ得ることである。
【００５７】
本発明の実施形態の別の利点は、それらが、音声認識精度を最大限にするため、訓練された言語モデルを選択的に有効または無効にするために使用され得ることである。例えば、前述のように、全ての訓練された言語モデルが直ちに使用され得るか、あるいは、個々の言語モデルが、ある最小限の訓練データを使用して訓練されていることによるなど、それらがある所定の基準を満足した場合に限り、選択的に（手動または自動的のいずれかで）有効にされ得る。逆に、言語モデルの精度における信頼性が、ある最低限の信頼度を下回っている場合など、それらがある所定の基準を満足していると判断される場合、有効にされている言語モデルが（手動または自動的のいずれかで）無効にされ得る。結果として、本発明の実施形態は、観察・訓練された（ｏｂｓｅｒｖａｔｉｏｎ−ｔｒａｉｎｅｄ）言語モデルを、音声認識精度の向上に最も有効である状況においてのみ、選択的に適用するために使用され得る。
【００５８】
当然のことながら、本発明は、特定の実施形態に関して前述されてきたが、前述の実施形態は例示としてのみ提供されており、本発明の範囲を制限または定義するものではない。以下を含むがそれらに限定されない、他の様々な実施形態も、特許請求の範囲内である。例えば、本明細書に記載する要素およびコンポーネントは、追加のコンポーネントにさらに分割され得るか、または同じ機能を実行するためのより少ないコンポーネントを形成するために結合され得る。
【００５９】
前述した技術は、例えば、ハードウェア、コンピュータ可読媒体上に有形的に格納されたソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。前述した技術は、プロセッサ、そのプロセッサによって可読な記憶媒体（例えば、揮発性および不揮発性メモリならびに／または記憶素子を含む）、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む、プログラム可能コンピュータ上で実行する１つまたは複数のプログラムで実装され得る。プログラムコードは、記述された機能を実行するため、および出力を生成するために、入力装置を使用して入力された入力に適用され得る。出力は、１つまたは複数の出力装置に提供され得る。
【００６０】
以下の特許請求の範囲内の各コンピュータプログラムは、アセンブリ言語、機械語、高水準手続き型プログラミング言語、またはオブジェクト指向プログラミング言語などの、任意のプログラミング言語で実装され得る。プログラミング言語は、例えば、コンパイルされたか、または翻訳されたプログラム言語であり得る。
【００６１】
かかるコンピュータプログラムの各々は、コンピュータプロセッサによる実行のために機械可読記憶装置内で有形的に具体化されたコンピュータプログラム製品で実施され得る。本発明の方法ステップは、入力に関して動作し、出力を生成することにより、本発明の機能を実行するために、コンピュータ可読媒体上に有形的に具体化されたプログラムを実行するコンピュータプロセッサによって実行され得る。適切なプロセッサは、例として、汎用および専用マイクロプロセッサの両方を含む。一般に、プロセッサは、命令およびデータを読取り専用メモリおよび／またはランダムアクセスメモリから受信する。コンピュータプログラム命令を有形的に具体化するのに適した記憶装置は、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリ装置を含む、半導体記憶装置などの不揮発性メモリのすべての形式；内蔵ハードディスクおよび取外し可能ディスクなどの磁気ディスク；光磁気ディスク；およびＣＤ−ＲＯＭを含む。前述のいずれも、特別に設計されたＡＳＩＣ（特定用途向け回路）またはＦＰＧＡ（フィールドプログラマブルゲートアレイ）によって補足され得るか、またはそれらに組み込まれ得る。コンピュータは一般に、プログラムおよびデータを内蔵ディスク（図示せず）または取外し可能ディスクなどの記憶媒体からも受信できる。これらの要素も、本明細書に記載する方法を実装するコンピュータプログラムの実行に適した、従来型のデスクトップまたはワークステーションコンピュータならびに他のコンピュータで見られ、それらは、任意のデジタル印刷エンジンもしくはマーキングエンジン、ディスプレイモニター、または、カラーもしくはグレースケール画素を紙、フィルム、ディスプレイ画面、もしくは他の出力媒体上に生成可能な他のラスター出力装置とともに使用され得る。
【図１Ａ】
2014523543.tif 000003
【図１Ｂ】
2014523543.tif 000004
【図１Ｃ】
2014523543.tif 000005
【図２】
2014523543.tif 000006
【国際調査報告】
2014523543.tif 000007
2014523543.tif 000008