音声対応動作とビジネスロジックとを協調的に仲介する方法であって、XMLデータを受信するステップと、前記XMLデータから少なくとも1つのオブジェクトを生成するステップと、前記少なくとも1つのオブジェクトが呼び出されたと判定するステップに応答して、前記オブジェクトの一部により定義された動作を実施するステップとを含む方法。前記動作を実施するステップが、前記オブジェクトに関連付けられたスピーチ出力をユーザに提供するために、音声エンジンにアクセスするステップを含む、請求項1に記載の方法。前記オブジェクトに関連付けられた少なくとも1つのビジネス動作シーケンスの実行と並行して前記動作を実施するステップをさらに含む請求項1に記載の方法。前記オブジェクトが、前記動作の実施後に前記オブジェクトの遷移を定義する遷移リンクを含む、請求項1に記載の方法。前記遷移リンクが、前記動作からの遷移が即時かつ無条件の遷移であることを示すデフォルトリンクである、請求項4に記載の方法。前記遷移リンクが、前記動作からの遷移が少なくとも1つのワードの認識に基づくことを示すボキャブラリリンクである、請求項4に記載の方法。前記遷移リンクが、前記動作からの遷移が規定された条件の真実に基づくことを示す条件リンクである、請求項4に記載の方法。前記遷移リンクが、前記動作から第2の動作への遷移を示す、請求項4に記載の方法。前記遷移リンクが、前記動作からビジネス動作シーケンスへの遷移を示す、請求項4に記載の方法。ユーザのスピーチ入力をキャプチャするステップに応答して、前記スピーチ入力をマシン可読入力に変換するステップをさらに含む請求項1に記載の方法。前記XMLデータが、ダイアログフローに関連付けられている、請求項1に記載の方法。少なくとも1つの処理ユニットと、メモリと、前記メモリに常駐するプログラムコードであって、前記少なくとも1つの処理ユニットによって実行されるときに、XMLデータを受信し、前記XMLデータから少なくとも1つのオブジェクトを生成し、前記少なくとも1つのオブジェクトが呼び出されたとの判定に応答して、前記オブジェクトの一部により定義された動作を実施するように構成された、プログラムコードとを含む装置。前記プログラムコードが、前記オブジェクトに関連付けられたスピーチ出力をユーザに提供するために、音声エンジンにアクセスするようにさらに構成されている、請求項12に記載の装置。前記プログラムコードが、前記オブジェクトに関連付けられた少なくとも1つのビジネス動作シーケンスの実行と並行して前記動作を実施するようにさらに構成されている、請求項12に記載の装置。前記オブジェクトが、前記動作の実施後に前記オブジェクトの遷移を定義する遷移リンクを含む、請求項12に記載の装置。前記遷移リンクが、前記動作からの遷移が即時かつ無条件の遷移であることを示すデフォルトリンクである、請求項15に記載の装置。前記遷移リンクが、前記動作からの遷移が少なくとも1つのワードの認識に基づくことを示すボキャブラリリンクである、請求項15に記載の装置。前記遷移リンクが、前記動作からの遷移が規定された条件の真実に基づくことを示す条件リンクである、請求項15に記載の装置。前記遷移リンクが、前記動作から第2の動作への遷移を示す、請求項15に記載の装置。前記遷移リンクが、前記動作からビジネス動作シーケンスへの遷移を示す、請求項15に記載の装置。前記プログラムコードが、ユーザのスピーチ入力を、前記スピーチ入力のキャプチャリングに応答してマシン可読入力に変換するようにさらに構成されている、請求項12に記載の装置。前記XMLデータが、ダイアログフローに関連付けられている、請求項12に記載の装置。少なくとも1つの処理ユニットによって実行されるときに、XMLデータを受信し、前記XMLデータから少なくとも1つのオブジェクトを生成し、前記少なくとも1つのオブジェクトが呼び出されたとの判定に応答して、前記オブジェクトの一部により定義された動作を実施するように構成されたプログラムコードと、前記プログラムコードを持っているコンピュータ可読媒体とを含むプログラム製品。本発明の実施形態は、音声対応動作とビジネスロジックとを協調的に仲介するための方法、装置、およびプログラム製品を提供することによって、先行技術の不完全性に対処する。方法は、XMLデータを受信するステップと、XMLデータから少なくとも1つのオブジェクトを生成するステップとを含む。方法は、少なくとも1つのオブジェクトが呼び出されたと判定するステップに応答して、オブジェクトの一部により定義された動作を実施するステップをさらに含む。本発明の実施形態は、ダイアログフローの間に、続けて呼び出され得る音声ダイアログオブジェクトの作成を提供する。このようにして、本発明の実施形態は、音声対応動作とビジネスロジックとの仲介を考慮して、いくつかの動作の前処理、およびまたはそれらの動作の並列化を可能にする。したがって、運用能力を犠牲にすることなく、音声対応アプリケーションの効率および動作を高めることができる。これらの効果および他の効果は、以下の図面および詳細な説明に照らして、明らかとなるであろう。本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の実施形態を図示し、以上の本発明の一般的な説明および以下の実施形態の詳細な説明と共に、本発明の原理を明らかにするために役立つ。添付の図面は、必ずしも一定の縮尺ではなく、本発明の実施形態の基本原理を説明するさまざまな特徴のいくぶん簡略化した表現を提示していることを理解されたい。たとえば、さまざまな図示されたコンポーネントの固有の寸法、向き、位置、および形状、ならびに固有の動作シーケンスを含む、本明細書で開示される本発明の実施形態の固有の設計特徴は、特定向けのアプリケーションおよび使用環境によって、ある程度決定されることになる。視覚化および明瞭な理解を促進するために、図示された実施形態のある特徴が、他の特徴に比べて、拡大されている、または変形している可能性がある。ハードウェアおよびソフトウェア環境次に、図面全体を通して同様の番号が同様の部品を示している図面を見ると、図1は、本発明の実施形態に適合する音声駆動システム10の概略図である。システム10は、音声クライアントサーバ12と、移動システム16とを含む。VCS12は、スピーチ入力をマシン可読入力に変換し、加えて、インタプリタ型スクリプトベースのビジネスロジックと、音声認識機能およびスピーチ合成機能とを仲介するように構成されている。移動システム16は、インタプリタ型プログラミング言語スクリプトモジュールと他のアプリケーションリソースとを、使用される音声ダイアログのXMLベースの記述により束ねるように構成されている。VCS12および移動システム16の図は、単に説明のためにすぎず、VCS12およびまたは移動システム16の機能性を、1つのコンポーネントの中にまとめることができることが理解されるであろう。図2は、本発明の実施形態に適合するVCS12の概略図である。特定の実施形態において、VCS12は、コンピュータ、コンピューティングシステム、コンピューティングデバイス、サーバ、ディスクアレイ、またはプログラマブルデバイスであり、たとえば、マルチユーザコンピュータ、シングルユーザコンピュータ、ハンドヘルドコンピューティングデバイス、ネットワーク化されたデバイス、移動電気通信デバイス、ビデオゲームコンソールなどである。したがって、VCS12は、メモリ32に結合された少なくとも1つの中央処理ユニット30を含む。各CPU30は、通常、1つまたは複数の物理的に統合された回路デバイスまたはチップの上に配置された回路論理を使用して、ハードウェアにおいて実施される。各CPU30は、1つまたは複数のマイクロプロセッサ、マイクロコントローラ、フィールドプログラマブルゲートアレイ、またはASICであってよく、一方、メモリ32は、ランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、スタティックランダムアクセスメモリ、フラッシュメモリ、およびまたは別のデジタルストレージ媒体を含むことができ、やはり、通常、1つまたは複数の物理的に統合された回路デバイスまたはチップの上に配置された回路論理を使用して実施されてよい。したがって、メモリ32は、VCS12のどこか別の場所に物理的に位置するメモリストレージ、たとえば、少なくとも1つのCPU30における任意のキャッシュメモリ、ならびに、仮想メモリとして使用される任意のストレージ容量、たとえば、マスストレージデバイス34、別のコンピューティングシステム、ネットワークストレージデバイス、または、ネットワーク18を経由した少なくとも1つのネットワークインターフェース36を通してVCS12に結合された別のネットワークデバイス上に記憶されるものを含むと考えることができる。VCS12は、入力出力デバイスインターフェース38を通して、少なくとも1つの周辺デバイスに結合されている。とりわけ、VCS12は、少なくとも1つのユーザインターフェース40を通して、ユーザからデータを受信し、およびまたは、少なくとも1つの出力デバイス42を通して、ユーザにデータを出力する。さらに、いくつかの実施形態では、IOIF38は、タッチスクリーンディスプレイなどの、ユーザインターフェース40および出力デバイス42の組み合わせとして働くデバイスと通信する。VCS12は、通常、オペレーティングシステム44の制御下にあり、本発明の実施形態に適合するさまざまなコンピュータソフトウェアアプリケーション、動作シーケンス、コンポーネント、プログラム、ファイル、オブジェクト、モジュールなどを実行する、または別のやり方でそれらに依存する。特定の実施形態において、VCS12は、音声クライアントアプリケーション46を実行する、または別のやり方でそれに依存して、音声ダイアログとビジネスロジックとの協調性を管理する。音声クライアントアプリケーションを、以下では、VoiceArtisanアプリケーション46と呼ぶ。VCS12のマスストレージ34は、音声ダイアログデータ構造48と、ログデータ構造50とを含む。VoiceArtisanアプリケーション46はさらに、その動作に関連付けられたデータをログし、そのデータをログデータ構造50の中に記憶することができる。移動システム16は、音声ダイアログフローを実施し、スピーチ入力をキャプチャし、ビジネスロジックを実行するように構成されている。VCS12および移動システム16の機能性が分離している実施形態においては、移動システム16はまた、ネットワーク18にわたってVoiceArtisanアプリケーション46と通信するように構成されている。図3は、本発明の実施形態に適合する移動システム16の図である。具体的には、移動システム16は、持ち運び可能な、およびまたは着用可能なコンピュータもしくはデバイス60と、周辺デバイスもしくはヘッドセット62とを含む。図3に示すように、移動デバイス60は、ベルト66の上などで、ユーザ64によって着用される着用可能なデバイスである。代替実施形態において、移動デバイス60は、たとえば、ユーザの前腕で、またはリフトトラック、装着具、または他の輸送のやり方で、持ち運ばれる、または別のやり方で輸送される。いくつかの実施形態において、コード68を通して移動デバイス60に結合されたヘッドセット62を通して、ユーザ64は、移動デバイス60とインターフェース接続する。代替実施形態において、ヘッドセット62は、無線ヘッドセットであり、無線信号を通して移動デバイス60に結合される。ヘッドセット62は、スピーカ70と、マイクロフォン72とを含む。スピーカ70は、オーディオを再生するように構成されており、一方、マイクロフォン72は、ユーザ64からのスピーチ入力をキャプチャするように構成されている。したがって、およびいくつかの実施形態において、ユーザ64は、ヘッドセット62を通して、ハンズフリーで移動デバイス60とインターフェース接続する。図4は、本発明の実施形態に適合する移動デバイス60のコンポーネントの少なくとも一部の概略図である。移動デバイス60は、メモリ82に結合された少なくとも1つの処理ユニット80を含む。各処理ユニット80は、通常、1つまたは複数の物理的に統合された回路デバイスまたはチップに配置された回路論理を使用して、ハードウェアにおいて実施される。各処理ユニット80は、1つまたは複数のマイクロプロセッサ、マイクロコントローラ、フィールドプログラマブルゲートアレイ、またはASICであってよく、一方、メモリ82は、RAM、DRAM、SRAM、フラッシュメモリ、およびまたは別のデジタルストレージ媒体を含むことができ、メモリ82もまた、通常、1つまたは複数の物理的に統合された回路デバイスまたはチップに配置された回路論理を使用して実施される。したがって、メモリ82は、移動デバイス60のどこかに別の場所に物理的に位置するメモリストレージ、たとえば、少なくとも1つの処理ユニット80における任意のキャッシュメモリ、ならびに、仮想メモリとして使用される任意のストレージ容量、たとえば、マスストレージデバイス、コンピュータ、およびまたは、ネットワーク18を経由した少なくとも1つのネットワークインターフェース84を通して移動デバイス60に結合されることを含めて、移動デバイス60に結合された別のデバイス上に記憶されるものを含むと考えることができる。移動デバイス60は、次いで、少なくとも1つの有線接続およびまたは無線接続を使用して、ネットワークlF84を通してネットワーク18に結合する。特定の実施形態において、移動デバイス60は、IEEE802規格を通して、とりわけ、本技術分野で知られているようなIEEE80211無線通信規格を通して、ネットワーク18に結合する。いくつかの実施形態において、移動デバイス60は、ヘッドセット62以外の少なくとも1つの周辺機器と通信するように構成された、少なくとも1つの入力出力インターフェース86を追加的に含む。そのような周辺機器は、1つまたは複数のトレーニングデバイス、画像スキャナ、バーコードリーダ、RFIDリーダ、モニタ、プリンタ、ユーザインターフェース、出力デバイス、およびまたは他の周辺機器のうちの少なくとも1つを含むことができる。特定の実施形態において、IOlF86は、少なくとも1つの周辺機器インターフェースを含み、周辺機器インターフェースは、1つまたは複数のシリアルインターフェース、ユニバーサルシリアルバス、PCカード、VGA、HDMI登録商標、DVI、およびまたは他のインターフェースのうちの少なくとも1つを含む。移動デバイス60はまた、バッテリ、充電可能なバッテリ、整流器、およびまたは他の電源などの電力供給部88を含む。移動デバイス60は、電力モニタリング回路90によって、電力供給部88からの電圧をモニタする。いくつかの実施形態において、および電力モニタリング回路90に応答して、電力供給部88からの電力が十分でないと判断されると、移動デバイス60は、潜在的なダメージを防ぐためにシャットダウンする。移動デバイス60は、ヘッドセットインターフェース92を通して、ヘッドセット62と通信するように構成されており、ヘッドセットインターフェース92は、コード68を通して、およびまたは無線で、ヘッドセット62に結合するように構成されている。特定の実施形態において、移動デバイス60は、本技術分野で知られているBlueToothオープン無線技術規格を通して、ヘッドセット62に結合する。移動デバイス60は、本発明の実施形態に適合するさまざまなソフトウェアアプリケーション、コンポーネント、プログラム、ファイル、オブジェクト、モジュールなどの制御下にあってよい、およびまたは、別のやり方でそれらに依存していてよい。このプログラムコードは、オペレーティングシステム94、ならびに、1つまたは複数のソフトウェアアプリケーションを含むことができる。したがって、メモリ82は、ダイアログフローを実施し、ビジネスロジックを実行し、およびまたは、VoiceArtisanアプリケーション46と通信するように、音声アプリケーション96と共に構成されている。メモリは、移動デバイス60、ヘッドセット62、およびまたはユーザ64に関連したデータを記憶するためのデータストア98をさらに含む。いくつかの実施形態において、本発明を実施するための好適な移動デバイス60は、Pittsburgh、PAのVocollectIncより入手可能なTalkmanの着用可能なコンピュータである。移動デバイス60は、文書化およびまたは通信のためのスピーチ認識技術を使用する音声対応システムにおいて利用される。ヘッドセット62は、ユーザ64と移動デバイス60との間にハンズフリー音声通信を提供する。たとえば、一実施形態において、音声アプリケーション96は、ピックアンドプレース、音声支援動作、または音声主導型動作のためなどの、ダイアログフローを実施する。音声アプリケーション96は、VoiceArtisanアプリケーション46と通信して、音声ダイアログを呼び出す。次いで、音声アプリケーション96は、VoiceArtisanアプリケーション46によって使用可能なデジタルフォーマットに続いて変換するために、スピーチ入力をキャプチャすることができる。図5は、図2のVoiceArtisanアプリケーション46に含まれてよい、複数のアプリケーション、動作シーケンス、コンポーネント、プログラム、ファイル、オブジェクト、モジュールなどの概略図である。いくつかの実施形態において、VoiceArtisanアプリケーション46は、少なくとも1つのタスク実行エンジン100と、移動デバイス通信モジュール102と、コア音声ライブラリ104と、プログラミング言語音声ライブラリ106と、少なくとも1つのテキストトゥスピーチエンジン108と、プログラミング言語インタプリタ110とを含む。少なくとも1つのタスク実行エンジン100は、音声アプリケーション96からのデータを構文解析し、音声ダイアログを実施するかどうかを決定するように構成されている。これは、テキストトゥスピーチエンジン108を利用してスピーチ入力をマシン可読入力に変換すること、または制御を音声アプリケーション96に返してビジネスロジックを実行することを含むことができる。特定の実施形態において、テキストトゥスピーチエンジン108は、音声認識器と共に利用されてよく、音声認識器は、雑音、別の人間のスピーチ入力、およびまたは他のサウンドとは相対するものとして、そのユーザのスピーチ入力を認識するように構成されている。移動デバイス通信モジュール102は、音声アプリケーション96へのメッセージをフォーマット化し、音声アプリケーション96からのメッセージを構文解析するように構成されている。図5に戻って参照すると、VoiceArtisanアプリケーションはまた、コア音声ライブラリ104と、プログラミング言語音声ライブラリ106とを含む。具体的には、コア音声ライブラリ104は、複数の音声ダイアログを記憶して、ユーザのために再生するように、およびまたは、テキストトゥスピーチエンジン108によって利用される少なくとも1つのスピーチ入力テンプレートを記憶して、ユーザのスピーチ入力をマシン可読入力に変換するように構成されている。一方、プログラミング言語音声ライブラリ106は、ビジネスロジックを実施するために使用されるデータを記憶し、加えて、音声アプリケーション96によって要求された音声ダイアログを、コア音声ライブラリ104の中の対応する音声ダイアログと突き合わせるように構成されている。プログラミング言語音声ライブラリ106の中のデータは、プログラミング言語インタプリタ110と併せて使用されてよい。特定のプログラミング言語は、ユーザの要件に応じて異なってよいが、1つの例示的なプログラミング言語は、WolfeboroFalls、NHのPythonSoftwareFoundationによって開発されたPythonプログラミング言語を含むことができる。図6は、図4の音声アプリケーション96に含まれてよい、複数のアプリケーション、動作シーケンス、コンポーネント、プログラム、ファイル、オブジェクト、モジュールなどの概略図である。いくつかの実施形態において、VoiceArtisanアプリケーション46は、少なくとも1つのダイアログフローモジュール120と、少なくとも1つのリソース122と、少なくとも1つのプログラミング言語スクリプト124とを含む。少なくとも1つのダイアログフローモジュール120は、ユーザのための少なくとも1つのダイアログフローを定義する。そのようなダイアログフローは、ピックアンドプレース、音声支援動作、または音声主導型動作で典型的に使用される。たとえば、ダイアログフローは、呼び出されることになる音声ダイアログを示すことができる、およびまたは、特定のビジネスイベントシーケンスが実行されることになるのを示すことができる。また、たとえば、限定することを意図せずに、そのようなビジネスロジックは、マシン可読入力に基づいたアクションを実施するかどうか決定すること、ユーザからの入力に基づいたアクションを実施するかどうかを決定すること、ユーザまたは別のシステムと対話するかどうかを決定すること、スピーチ入力のマシン可読入力への変換以外のなんらかのアクションを実施するかどうか決定すること、ならびに他のビジネスロジックを含むことができる。一方、少なくとも1つのリソース122は、ユーザに提供することができる、画像、サウンドファイル、または他のデータを含む。たとえば、リソース122は、表示するための特定の画像、発話するための特定のスピーチ出力、音を出すための特定のサウンドトーン、およびまたは、ダイアログフローを実施するのに必要となることがある他のデータを含むことができる。一方、プログラミング言語スクリプト124は、ビジネスロジックを実行するための一群の特定のプログラミング言語を含み、通常、クライアントによって開発される。当業者は、図1~図6に図示した環境が、本発明の実施形態の範囲を限定する意図がないものであると認識するであろう。とりわけ、VCS12およびまたは移動システム16は、より少ないコンポーネント、もしくは追加のコンポーネント、または本発明の代替実施形態に適合する代替の構成を含むことができる。具体的には、VoiceArtisanアプリケーション46および音声アプリケーション96は、別々のシステム上に構成されなくてもよく、代替実施形態においては、両方が、VCS12およびまたは移動システム16のどちらの上に構成されてもよい。代替の移動システム16がまた、本発明の実施形態に適合して使用されてもよい。たとえば、移動システム16は、無線で通信する移動デバイス60およびヘッドセット62を含むことができる。また、たとえば、移動システム16は、単一の内蔵型ユニットに互いに組み込まれた移動デバイス60およびヘッドセット62を含むことができる。したがって、単一の内蔵型移動システムが、ユーザ64の頭部に着用されてもよい。このようにして、当業者は、他の代替ハードウェアおよびまたはソフトウェア環境が、本発明の範囲から逸脱することなく、使用されてよいことを認識するであろう。たとえば、音声クライアント46およびまたは音声アプリケーション96は、より少ないモジュールで、または追加のモジュールで構成されてもよく、一方、マスストレージ34およびまたはメモリ32は、より少ないデータ構造、または追加のデータ構造で構成されてもよい。加えて、当業者は、VCS12およびまたは移動システム16が、そこに配置されるより多いアプリケーション、またはより少ないアプリケーションを含むことができることを理解するであろう。したがって、他の代替ハードウェアおよびソフトウェア環境は、本発明の実施形態の範囲から逸脱することなく、使用されてよい。さらに、当業者は、XML、Python、音声ダイアログ、ビジネスロジックインスタンス、プログラミング言語、スピーチ入力、およびマシン可読入力などの、さまざまなデータを記述するために使用される専門用語が、単に区別する目的で使用されており、限定することを意図しないことを理解するであろう。本発明の実施形態を実施するために実行されるルーチンは、オペレーティングシステムの一部として実施されるのであれ、または、1つもしくは複数のコンピューティングシステムによって実行される特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール、もしくは命令のシーケンスとして実施されるのであれ、本明細書では、動作シーケンス、プログラム製品、または単に、プログラムコードと呼ぶことにする。プログラムコードは、通常、1つまたは複数の命令を含み、命令は、コンピューティングシステムのさまざまなメモリおよびストレージデバイスに、さまざまな時間において常駐し、それが、コンピューティングシステムの1つまたは複数のプロセッサによって読み込まれ、実行されるときに、コンピューティングシステムに必要なステップを実施させて、本発明のさまざまな態様を具体化するステップ、要素、およびまたはブロックを実行する。本発明は、完全に機能するコンピューティングシステムのコンテキストにおいて説明されており、かつ以下で説明されることになるが、当業者は、本発明のさまざまな実施形態が、さまざまな形態におけるプログラム製品として配布されることが可能であること、および、実際にその配布を実行するために使用される特定のタイプのコンピュータ可読媒体にかかわらず、本発明が等しく適用されることを理解するであろう。コンピュータ可読媒体の例としては、限定はせずに、揮発性および不揮発性のメモリデバイス、フロッピー登録商標、および他のリムーバブルディスク、ハードディスクドライブ、光学ディスクなどの、物理的かつ有形な記録可能なタイプの媒体がとりわけ含まれる。加えて、以下で説明するさまざまなプログラムコードは、それが本発明の特定の実施形態において実施される範囲内のアプリケーションまたはソフトウェアコンポーネントに基づいて、識別されてよい。しかしながら、以下の任意の特定のプログラムの呼び名は、単に便宜上使用され、したがって、本発明が、そのような呼び名によって識別される、およびまたは示唆される任意の特定のアプリケーションにおける使用だけに限定されるべきではないことを理解されたい。さらに、コンピュータプログラムを、ルーチン、手続き、メソッド、モジュール、オブジェクトなどに編成することができる典型的に無数のやり方、ならびにプログラムの機能性を、典型的なコンピュータ内に常駐するさまざまなソフトウェア層の中で割り当てることができるさまざまなやり方を考えれば、本発明が、本明細書で説明される特定の編成およびプログラムの機能性の割り当てに限定されないことを理解すべきである。ソフトウェアの記述とフロー一般に、ダイアログフローは、ユーザによって作成され、ピックアンドプレース、音声支援動作、または音声主導型動作などの音声対応動作のための、音声ダイアログおよびまたはビジネスロジックを定義する。ユーザは、開発環境上でダイアログフローをグラフィカルに定義し、その中で音声ダイアログおよびまたはビジネスロジックをさらにグラフィカルに定義する。ダイアログフローが構築されるとき、開発環境は、音声アプリケーションのためのPythonスクリプト、ならびにVoiceArtisanアプリケーションのためにそのPythonスクリプトにおいて呼び出された音声ダイアログに対応したXMLデータを生成する。VoiceArtisanアプリケーションは次いで、XMLデータを解析して、そのXMLデータにおいて定義された音声ダイアログに対応した音声ダイアログオブジェクトを作成する。音声ダイアログが音声アプリケーションによって呼び出されるとき、VoiceArtisanアプリケーションは、対応する音声ダイアログオブジェクトを実行して、その音声ダイアログに関連付けられた関数を実施する。いくつかの実施形態において、音声ダイアログは、ノードおよび遷移リンクを含むステートマシンを定義し、ノードおよび遷移リンクは、少なくとも1つのスピーチ出力およびまたはビジネスロジックを定義する。各ノードは、ステートマシンのステートを表し、一方、各リンクは、ステート間の遷移である。限定することを意図せず、遷移のタイプには、デフォルトリンク、ボキャブラリリンク、および条件リンクのうちの少なくとも1つを含むことができる。音声ダイアログは、ノードまたはリンクのコールバックメソッドを介して、ビジネスロジックに接続される。たとえば、図7は、複数のノード、およびノード間のリンクを示す、第1の音声ダイアログ200のグラフィック表現の概略図である。具体的には、第1の音声ダイアログ200のグラフィック表現は、ユーザが音声ダイアログを構築するときに、見ることができるビューの一実施形態を示している。第1の音声ダイアログ200は、リンク206に基づいて第2のノード204に遷移する第1のノード202を含む。第1の音声ダイアログ200は、本発明の実施形態に適合する音声アプリケーションによって呼び出されてよい。とりわけ、第1のノード202が登録されるとき、ワードAtStateOneが話される。ステートマシンは、ボキャブラリリンク206において、ユーザがワード準備よしを言うのを待つ。それが行われると、ステートマシンは、第2のノード204に遷移して、ワードAtStateTwoが話される。その時点で、第1の音声ダイアログ200は終了する。いくつかの実施形態において、第1のノード202およびまたは第2のノード204は、それぞれonentry関数を指定されてよい。したがって、第1のノード202は、firstdialogstateoneを呼び出されるonentry関数を指定されてよく、一方、第2のノード204は、firstdialogstatetwoを呼び出されるonentry関数を指定されてよい。また、たとえば、図8は、複数のノード、およびノード間のリンクを示す第2の音声ダイアログ210のグラフィック表現の概略図である。やはり、第2の音声ダイアログ210は、リンク216に基づいて第2のノード214に遷移する第1のノード212を含み、本発明の実施形態に適合した音声アプリケーションによって呼び出されてよい。第1のノード212が登録されるとき、ワードAtFirstStateが話される。しかしながら、ステートマシンは、seconddialogcondition関数がTrueに戻るまで、条件リンク206において無期限に待つ。seconddialogcondition関数がTrueに戻るとき、ステートマシンは第2のノード204に遷移し、ワードAtStateTwoが話される。その時点で、第2の音声ダイアログ210は終了する。第1の音声ダイアログ200と同様に、第2の音声ダイアログ210の第1のノード212または第2のノード214もまた、上で説明したような、それぞれのonentry関数に関連付けられていてよいことが理解されるであろう。本発明の実施形態に適合して、第1の音声ダイアログ200およびまたは第2の音声ダイアログ210は、音声アプリケーションによって呼び出されてよい。とりわけ、第1の音声ダイアログ200およびまたは第2の音声ダイアログ210は、音声アプリケーションによって実行されるダイアログフローのmain関数によって呼び出されてよい。具体的には、ダイアログフローが構築されるとき、作成される少なくとも2つのファイルが存在する。最初のファイルは、音声アプリケーションによって実行されるダイアログフローのための擬似コードである。この擬似コードは、音声ダイアログおよびまたはビジネスロジックへの呼び出しを含む。2番目のファイルは、音声ダイアログおよびまたはそれに関連付けられた固有のビジネスロジックを定義するXMLデータを含む。以下のコード一覧1は、音声アプリケーションによって実施されてよいダイアログフローのためのPython擬似コードの一実施形態を示しており、コードは、第1の音声ダイアログ200および第2の音声ダイアログ210の使用を示し、ビジネスロジックの使用もまた示すmain関数を含む。♯これは音声アプリケーションのためのドライバモジュールである。importvoice♯これは音声アプリケーションのためのドライバ関数である。defmain♯所望により、追加のアプリケーションスタートアップロジックをここに追加せよ♯ここで、firstdialogを走らせよdvoiceDialogdrun♯ダイアログが完了するとき、制御はここに戻る♯所望により、追加のビジネスロジックをここで実行せよ♯ここで、seconddialogを走らせよdvoiceDialogdrun♯ダイアログが完了するとき、制御はここに戻る♯所望により、追加のビジネスロジックをここで実行せよ♯ビジネスロジックが完了するとき、プログラムは終了する♯これは、firstdialogにおいて開始Nodeに付けられた関数であるdeffirstdialogstateone♯この関数のビジネスロジックは、♯音声ダイアログステートマシンが♯firstdialogにおいて開始ノードを登録するとき、実行されるpass♯これは、firstdialogにおいてNode2に付けられた関数であるdeffirstdialogstatetwo♯この関数のビジネスロジックは、♯音声ダイアログステートマシンが♯firstdialogにおいてノードNode2を登録するとき、実行されるpass♯これは、seconddialogにおいて♯条件リンクに付けられた関数であるdefseconddialogcondition♯この関数のビジネスロジックは、条件リンクを介して♯seconddialogが、開始ノードからNode2ノードへの♯遷移を試みるとき、実行される。♯この関数は、遷移が行われる時点で♯真値に戻るまで繰り返し呼び出されるreturnTrueコード一覧1例示的なmain関数したがって、コード一覧1から明らかなように、制御は、音声ダイアログならびにビジネスロジックの間を行ったり来たりして渡される。とりわけ、コード一覧1は、firstdialogを走らせるmain関数において実行が開始されることを示している。firstdialogの実行中に、実行されるfirstdialogstateone関数およびfirstdialogstatetwo関数への呼び出しがある。firstdialog関数が終了した後で、制御は、main関数に戻って、必要であれば、ビジネスロジックを実施する。main関数は次いで、その中でseconddialogcondition関数への少なくとも1つの呼び出しが実行されるseconddialog関数を走らせる。seconddialog関数が終了した後で、制御は、やはりmain関数に戻って、必要であれば、ビジネスロジックを実施する。main関数が完了するとき、音声アプリケーションは終了する。次いでXMLデータが、VoiceArtisanアプリケーションのタスク実行エンジンによって使用されて、音声ダイアログを表す音声ダイアログオブジェクトを組み立てることができる。とりわけ、VoiceArtisanアプリケーションは、XMLデータを構文解析し、音声ダイアログの当然の結果として、音声ダイアログオブジェクトをCで構築することができる。音声ダイアログが音声アプリケーションによって呼び出されるとき、音声ダイアログが実施される。具体的には、コード一覧2が、コード一覧1によって呼び出された音声ダイアログおよびまたはビジネスロジックについてのデータを含むXMLデータの一実施形態を示している。コード一覧2音声ダイアログおよびまたはビジネスロジックについてのXML表現このようにして、XML表現は、それがスピーチ出力の提供であるにせよ、スピーチ認識の実施であるにせよ、または他のアクションの実行であるにせよ、VoiceArtisanアプリケーションに、音声ダイアログについて対応するアクションを実施するように指示する。スピーチ出力の後で、VoiceArtisanは、制御を音声アプリケーションに返して、遷移リンクによって定義されたビジネスロジックなどの、ビジネスロジックを実施することができる。したがって、VoiceArtisanアプリケーションと音声アプリケーションとの対話により、2つをまたぐ機能の抽出が可能になる。しかしながら、VoiceArtisanアプリケーションの機能性への直接アクセスが妨げられて、そのセキュリティを維持する。上で詳述したように、本発明の実施形態は、音声対応システムのために、とりわけ、ピックアンドプレース、音声支援、およびまたは音声主導型動作のために、音声ダイアログとビジネスロジックとを調和させるように使用されてよい。たとえば、音声アプリケーションのためのダイアログフローは、音声ダイアログへの呼び出しを規定することができる。音声ダイアログは、ダイアログフローにおける音声オブジェクトに相関した音声ダイアログオブジェクトを既に作成しているVoiceArtisanアプリケーションによって認識される。VoiceArtisanアプリケーションは、音声ダイアログが呼び出されるときにそれを実行する。同時に、音声ダイアログまたはダイアログフローのいずれかに関連付けられた情報に基づいて、ビジネスロジックが、音声アプリケーションおよびまたはVoiceArtisanアプリケーションによって実施されてよい。図9は、本発明の実施形態に適合する、音声アプリケーションによってその構成について実行される動作シーケンスを示すフローチャート220である。とりわけ、音声アプリケーションは、それがVoiceArtisanアプリケーションと通信しているかどうか、または別のやり方で通信するかどうかを判定する。具体的には、音声アプリケーションは、最初に、VoiceArtisanアプリケーションがインストールされて、その音声アプリケーションと同じコンピューティングシステム上で動いているかどうか、およびまたは、VoiceArtisanアプリケーションがインストールされて、音声アプリケーションが通信しているコンピューティングシステム上で動いているかどうかを判定する。音声アプリケーションがVoiceArtisanアプリケーションと通信していないとき、動作シーケンスは終了してよい。あるいは、および図示されないブロックにおいて、音声アプリケーションがVoiceArtisanアプリケーションと通信していないとき、音声アプリケーションは、VoiceArtisanアプリケーションと通信するためのVoiceArtisanアプリケーションのインスタンスを開始して、その後ブロック222に戻ることができる。音声アプリケーションがVoiceArtisanアプリケーションと通信しているとき、音声アプリケーションは、メモリから、実施するための少なくとも1つのダイアログフローを決定する。音声アプリケーションが実施するためのいずれのダイアログフローも決定しないとき、動作シーケンスは終了してよい。特定の実施形態において、各ダイアログフローは、XMLにおいて定義され、ビジネスロジック、ならびに音声ダイアログへの少なくとも1つの呼び出しを含む。さらに、ダイアログフローは、音声ダイアログと利用される特定のボキャブラリワードに加えて、そのダイアログフローと使用される特定のボキャブラリワードを定義することができる。したがって、音声アプリケーションが、実行するための少なくとも1つのダイアログフローが存在すると判定するとき、音声アプリケーションは、そのダイアログフローに関連付けられたすべてのワードがスピーチ入力からマシン可読入力へと変換するために利用可能であるかどうか、その逆もまた同様であるかどうかを判定する。ダイアログフローについてのすべてのワードがトレーニングされていないとき、音声アプリケーションは、その1つおよびもしくは複数のワードに関連付けられたスピーチ入力をキャプチャして、テキストトゥスピーチエンジンおよびまたは音声認識器をトレーニングすることができる。ダイアログフローについてのすべてのワードがトレーニングされたとき、音声アプリケーションは、そのダイアログフローに関連付けられたメインモジュールの位置を特定し、ダイアログフローを実行する。図10は、本発明の実施形態に適合する、音声ダイアログへの呼び出しに応答するためのVoiceArtisanアプリケーションの動作シーケンスを示すフローチャート240である。具体的には、VoiceArtisanアプリケーションが、音声アプリケーションに関連付けられたスクリプトからの音声ダイアログへの呼び出しを受信し、音声アプリケーションから動作の制御を取ることができる。次いで、VoiceArtisanアプリケーションは、呼び出された音声ダイアログに対応した音声ダイアログオブジェクトを決定し、音声ダイアログの第1のノードを実行して、要求された音声ダイアログに関連付けられたスピーチ出力を音声アプリケーションに送り返す、およびまたは音声ダイアログによって定義されたアクションを実施する。音声ダイアログにおいて、ノードは、リンクによって1つのノードから別のノードへ遷移することができ、リンクは、デフォルトリンク、ボキャブラリリンク、または条件リンクを含むことができる。特定のスピーチ出力に関連付けられたリンクがない場合、動作シーケンスは終了する。しかしながら、特定のスピーチ出力に関連付けられたリンクがある場合、VoiceArtisanアプリケーションは、そのリンクが条件リンクであるかどうかを判定する。条件リンクにおいては、そのリンクに関連付けられた条件が真であるときに、1つのノードから別のノードへの遷移が存在する。したがって、条件リンクが存在するとき、VoiceArtisanアプリケーションは、そのリンクに関連付けられた条件が真であるときに、次のノードへと遷移し、動作シーケンスはブロック248に戻る。しかしながら、リンクが条件リンクではないとき、VoiceArtisanアプリケーションは、リンクがボキャブラリリンクであるかどうかを判定する。リンクがボキャブラリリンクであるとき、VoiceArtisanアプリケーションは、話されたボキャブラリワードまたはフレーズの認識に基づいて、次のノードへと遷移する。したがって、特定のボキャブラリワードまたはフレーズが話されたとき、VoiceArtisanアプリケーションは、次のノードへと遷移して、別の音声ダイアログを送信する、およびまたはビジネスロジックを実施して、ブロック248に戻る。しかしながら、リンクがボキャブラリリンクではないとき、リンクは、デフォルトリンクである可能性がある。デフォルトリンクにおいては、1つのノードから別のノードへの即時の、無条件の遷移が存在する。したがって、VoiceArtisanアプリケーションは、次のノードへと遷移して、別の音声ダイアログを送信する、およびまたはビジネスロジックを実施して、ブロック248に戻る。いくつかの実施形態において、ダイアログフローおよびまたは音声ダイアログによって定義された特定の動作に応じて、ダイアログフローの制御は、音声アプリケーションとVoiceArtisanアプリケーションとの間でハンドオフされてよい。たとえば、音声ダイアログのボキャブラリリンクは、ユーザが特定のワードまたはフレーズを言うときに遷移が行われることを示すことができる。音声アプリケーションは、制御を取ってユーザのスピーチ入力をキャプチャし、マシン可読入力への変換のために、制御をVoiceArtisanアプリケーションに提供する。VoiceArtisanアプリケーションは、スピーチ入力をマシン可読入力に変換し、次いでそのマシン可読入力を音声アプリケーションに再び提供して、規定されたワードまたはフレーズがユーザによって話されたかどうかを判定する。したがって、音声アプリケーションは、次のノードへと遷移するかどうかを示す。また、たとえば、条件リンクは、特定のバーコードが走査される、およびまたは特定のボタンが押下されるときに遷移が行われることを示すことができる。しかしながら、条件が真であるかどうかの判定は、音声アプリケーションによって決定される。図11は、本発明の実施形態に適合する、音声ダイアログオブジェクトを作成するためのVoiceArtisanアプリケーションの動作シーケンスを示すフローチャート260である。VoiceArtisanアプリケーションは、最初に、ダイアログフローに関連付けられたXMLデータがメモリの中に存在するかどうかを判定する。ダイアログフローに関連付けられたXMLデータが存在するとき、VoiceArtisanアプリケーションは、そのXMLデータを構文解析し、そこから少なくとも1つの音声ダイアログオブジェクトを作成する。特定の実施形態において、VoiceArtisanアプリケーションは、音声ダイアログデータを表す音声ダイアログの当然の結果としてCを作成する。したがって、呼び出されるとき、VoiceArtisanアプリケーションは、その音声ダイアログによって定義された動作のうちの少なくともいくつかを実施することができる。ダイアログフローに関連付けられたXMLデータが存在しないとき、または少なくとも1つの音声ダイアログオブジェクトを作成した後で、動作シーケンスは終了してよい。本発明をさまざまな実施形態および例を説明することによって示し、これらの実施形態をかなり詳細に説明してきたが、添付の特許請求の範囲をそのような詳細に制限する、またはどのようなやり方で限定することも、出願人の意図するところではない。追加の利点および修正形態は、当業者には容易に明らかであろう。たとえば、音声ダイアログは、示されたノードおよび遷移リンクよりも多い、またはより少ないノードおよび遷移リンクを含むことができる。とりわけ、音声ダイアログのノードは、複数の遷移リンクを通して複数のノードに接続されてよい。遷移された先の特定のノードは、したがって、そのノードへの遷移に使用される特定のリンクに依存していてよい。さらに、音声ダイアログは、必ずしもスピーチ出力を含む必要はなく、代わりに、アクションまたはビジネスロジックを含むことができる。さらに、当業者は、音声アプリケーションおよびVoiceArtisanアプリケーションが、協調的なやり方で動作することを理解するであろう。したがって、音声アプリケーションおよびVoiceArtisanアプリケーションは、同じコンピューティングシステム上で実行されてよく、特定の実施形態においては、音声アプリケーションは、VoiceArtisanアプリケーションの仮想コンポーネントとして動くこともできる。それゆえ、音声アプリケーションおよびVoiceArtisanアプリケーションについての特定の呼び名は、単に区別するための目的であって、限定することを意図しない。このように、そのより広い態様における本発明は、したがって、示され、説明された特定の詳細、装置、および方法には限定されない。当業者は、上のフローチャートのブロックのうちのいずれかが、本発明の実施形態の原理に従って、削除され、増やされ、別のブロックと同時に行われ、組み合わされ、または別のやり方で変更されてもよいことを理解するであろう。したがって、出願人の全体的な発明の概念の範囲から逸脱せずに、そのような詳細から外れることが可能である。