(57)【要約】【課題】  ノードの増加と共にシナリオが複雑になるのを防止する。【解決手段】  シナリオ中の複数の場面からなるモジュールを用意し、モジュール内の場面の番地を指定してモジュール任意の位置へジャンプできるようにすると共に、モジュールからの帰り番地を後入れ先出しのスタックに積んでおく。【選択図】    図２
2007225682.tif 000002
【特許請求の範囲】
【請求項１】
マイクロフォンからの入力音声を認識する音声認識装置と、音声対話装置からの音声出力用のスピーカと、
複数の処理からなり、かつシナリオの次の処理を分岐させるノードを含む、音声対話のシナリオの記憶部と、
音声認識装置での入力音声の認識結果に従ってノードからの分岐先を定めながら、シナリオを処理する処理システム、とを備えた音声対話装置において、
前記シナリオの処理の一部をモジュールとして記憶するように、シナリオの記憶部を構成し、
かつモジュールからシナリオ内の他の処理へ戻る際の戻り先を記憶するためのスタックを設けて、該スタックの戻り先に従ってモジュールから復帰するようにしたことを特徴とする、音声対話装置。
【請求項２】
モジュール外からモジュール内の任意の処理へジャンプして、ジャンプした処理からモジュール内の処理を開始できるようにしたことを特徴とする、請求項１の音声対話装置。
【請求項３】
前記モジュールの処理の一部をサブモジュールとして記憶するように前記シナリオの記憶部を構成し、
前記スタックは後入れ先出しで複数の戻り先を記憶でき、
前記モジュールから前記サブモジュールへ入った場合には、モジュールからの戻り先の後にサブモジュールからの戻り先をスタックに記憶し、
前記モジュールを介さずサブモジュールへ入った場合には、サブモジュールからの戻り先をスタックに記憶するようにしたことを特徴とする、請求項１の音声対話装置。
【請求項４】
マイクロフォンからの入力音声を音声認識装置で認識すると共に、音声対話装置からの音声をスピーカから出力し、
複数の処理からなり、かつシナリオの次の処理を分岐させるノードを含む、音声対話のシナリオを記憶装置に記憶して、
情報処理装置により、音声認識装置での入力音声の認識結果に従ってノードからの分岐先を定めながら、シナリオを処理する音声対話方法において、
前記シナリオの処理の一部をモジュールとして記憶し、
かつモジュールからシナリオ内の他の処理へ戻る際の戻り先を記憶するためのスタックを設けて、該スタックの戻り先に従ってモジュールから復帰するようにしたことを特徴とする、音声対話方法。
【請求項５】
マイクロフォンからの入力音声を認識する音声認識装置と、音声対話装置からの音声出力用のスピーカと、
複数の処理からなり、かつシナリオの次の処理を分岐させるノードを含む、音声対話のシナリオの記憶部と、
音声認識装置での入力音声の認識結果に従ってノードからの分岐先を定めながら、シナリオを処理する処理システム、とを備えた音声対話装置のためのプログラムにおいて、
前記シナリオの処理の一部をモジュールとして処理するためのモジュール管理命令と、
モジュールからシナリオ内の他の処理へ戻る際の戻り先を記憶するためのスタックを管理するためのスタック管理命令とを設けて、該スタックの戻り先に従ってモジュールからシナリオの他の処理へ復帰するようにしたことを特徴とする、音声対話プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は機械と人間との音声を介しての対話に関し、特に対話シナリオの管理に関する。
【背景技術】
【０００２】
特許文献１は音声を用いたマン−マシンの対話システムを記載している。対話装置は対話のシナリオを記憶し、マイクロフォンなどの音声入力とスピーカなどの音声出力を備え、人間からの入力音声を音声認識してその意味を理解し、それに応じてシナリオを切り替えて対話する。ところで対話のシナリオはノードが増すと共に指数的に複雑になり、シナリオの作成、編集、管理が困難になる。そこで発明者は、シナリオの一部をまとめてモジュールとすると共に、モジュールをシナリオの任意の場面から利用できるようにすることを検討し、この発明に到った。
【特許文献１】特開２００５−３２１７３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この発明の課題は、音声対話用のシナリオを単純化して、その作成や編集・管理を容易にすることにある。
請求項２の発明での追加の課題は、シナリオの単純化に用いるモジュールの数を少なくできるようにすることにある。
請求項３の発明での追加の課題は、モジュールの出口を実質的に複数設けられるようにすることにある。
【課題を解決するための手段】
【０００４】
この発明は、マイクロフォンからの入力音声を認識する音声認識装置と、音声対話装置からの音声出力用のスピーカと、複数の処理からなり、かつシナリオの次の処理を分岐させるノードを含む、音声対話のシナリオの記憶部と、音声認識装置での入力音声の認識結果に従ってノードからの分岐先を定めながら、シナリオを処理する処理システム、とを備えた音声対話装置において、前記シナリオの処理の一部をモジュールとして記憶するように、シナリオの記憶部を構成し、かつモジュールからシナリオ内の他の処理へ戻る際の戻り先を記憶するためのスタックを設けて、該スタックの戻り先に従ってモジュールから復帰するようにしたことを特徴とする。
【０００５】
好ましくは、モジュール外からモジュール内の任意の処理へジャンプして、ジャンプした処理からモジュール内の処理を開始できるようにする。
また好ましくは、前記モジュールの処理の一部をサブモジュールとして記憶するように前記シナリオの記憶部を構成し、前記スタックは後入れ先出しで複数の戻り先を記憶でき、前記モジュールから前記サブモジュールへ入った場合には、モジュールからの戻り先の後にサブモジュールからの戻り先をスタックに記憶し、前記モジュールを介さずサブモジュールへ入った場合には、サブモジュールからの戻り先をスタックに記憶する。
【０００６】
この発明はまた、マイクロフォンからの入力音声を音声認識装置で認識すると共に、音声対話装置からの音声をスピーカから出力し、複数の処理からなり、かつシナリオの次の処理を分岐させるノードを含む、音声対話のシナリオを記憶装置に記憶して、情報処理装置により、音声認識装置での入力音声の認識結果に従ってノードからの分岐先を定めながら、シナリオを処理する音声対話方法において、前記シナリオの処理の一部をモジュールとして記憶し、かつモジュールからシナリオ内の他の処理へ戻る際の戻り先を記憶するためのスタックを設けて、該スタックの戻り先に従ってモジュールから復帰するようにしたことを特徴とする。
【０００７】
この発明はまた、マイクロフォンからの入力音声を認識する音声認識装置と、音声対話装置からの音声出力用のスピーカと、複数の処理からなり、かつシナリオの次の処理を分岐させるノードを含む、音声対話のシナリオの記憶部と、音声認識装置での入力音声の認識結果に従ってノードからの分岐先を定めながら、シナリオを処理する処理システム、とを備えた音声対話装置のためのプログラムにおいて、前記シナリオの処理の一部をモジュールとして処理するためのモジュール管理命令と、モジュールからシナリオ内の他の処理へ戻る際の戻り先を記憶するためのスタックを管理するためのスタック管理命令とを設けて、該スタックの戻り先に従ってモジュールからシナリオの他の処理へ復帰するようにしたことを特徴とする。
【０００８】
この明細書において、音声対話装置に関する説明は特に断らない限り、音声対話方法や音声対話プログラムにもそのまま当てはまり、音声対話方法に関する説明は特に断らない限り、音声対話装置や音声対話プログラムにもそのまま当てはまる。
モジュールは１つの処理のみからなるものでも良いが、好ましくは複数の処理からなる。
【発明の効果】
【０００９】
この発明ではシナリオの一部をモジュールとして、モジュールからスタックの戻り先に従ってシナリオの他の部分へ戻ることができる。このためモジュールをシナリオの複数の場所で共用して、シナリオを簡単にできる。
【００１０】
さらにモジュール内の任意の処理へジャンプできるようにすると、モジュールを入口毎に分けて別のモジュールにする場合に比べ、モジュールの数を減らしてシナリオの作成や管理、編集をより容易にできる。
【００１１】
親のモジュール内にサブモジュールを設けてスタックを利用すると、親のモジュールから入った場合には親のモジュールへ戻り、親モジュールを介さずにサブモジュールに直接入った場合には親モジュールの外へ戻ることができる。するとモジュールに出口を複数設けたのと同じ効果が得られ、モジュールの数をさらに減らすことができる。
【発明を実施するための最良の形態】
【００１２】
以下に本発明を実施するための最適実施例を示す。
【実施例】
【００１３】
図１〜図１１に、実施例とその変形とを示す。図において２は音声対話装置で、４は音声入力用のマイクロフォンで、６はアンプであり設けなくても良く、８は音声認識部で、入力音声を認識して、音声対話装置２からの質問に対する回答などの人間の入力音声を認識する。１０は処理システムで、音声認識部８で認識した人間の入力音声から対話を制御し、具体的には入力音声の認識結果に基づいてシナリオ中のノードでの分岐を制御し、かつシナリオの各処理（場面）をシナリオ記憶部１２から読み出して、音声認識部８や音声データ発生部２０を制御し、かつ後述のシナリオ記憶部１２，シナリオ番地レジスタ１，スタック１６を管理する。
【００１４】
装置２と人間との対話シナリオはシナリオ記憶部１２に記憶され、シナリオの個々の場面を特定するデータをIDと呼び、シナリオ記憶部１２での各場面の記憶位置を番地と呼ぶ。シナリオ番地レジスタ１４は現在実行中のシナリオの番地や、次に処理するシナリオの番地などを記憶し、記憶装置の種類はレジスタに限らない。ＬＩＦＯスタック１６はシナリオ中のモジュールからの戻り番地を後入れ先出しで記憶し、スタック１６に戻り番地をセットすることを戻り番地を積むといい、取り出された戻り番地はスタック１６から消去される。１つのモジュール内から別のモジュールへジャンプできるように、スタック１６には複数の戻り番地を記憶できる。２０は音声データ発生部で、対話装置２から出力する音声データを発生させ、アンプ２２を介してスピーカ２４から音声を出力する。なおアンプ２２は設けなくても良い。
【００１５】
シナリオ中のモジュールの処理を図２〜図６に示し、モジュール以外の部分は通常の音声対話装置での処理と同様である。モジュールに移行する場合、図２のステップ１でモジュール内へのジャンプ先番地を得て、これを図１のシナリオ番地レジスタ１４に記憶し、モジュールから戻る際の番地(戻り番地)をスタック１６にセットする(ステップ２)。そしてジャンプ先の番地からモジュールへ入り(ステップ３)、モジュール内の処理を実行する(ステップ４)。以上のように実施例ではモジュール内の任意の番地へジャンプできるので、大きなモジュールと小さなモジュールとを設ける代わりに、大きなモジュールを設けてその任意の位置へジャンプすることにより、別途に小さなモジュールを設ける必要が無くなる。
【００１６】
モジュール内から新しいモジュールへジャンプでき(ステップ５)、ジャンプしない場合、モジュール内の処理を終了すると(ステップ６)、スタック１６の記憶から先頭の戻り番地を取り出してそこへ戻り、処理を続行する(ステップ７)。新しいモジュールへジャンプする場合、新しいモジュール内のジャンプ先の番地を得ると共に(ステップ８)、スタック１６に元のモジュールへの戻り番地をセットする(ステップ９)。新しいモジュールへとジャンプし(ステップ１０)、図２のステップ１〜ステップ７と同様に、ジャンプしたモジュールでの処理を実行する。
【００１７】
図３に実施例の音声対話プログラム３０を示し、シナリオ管理命令３１は音声対話のシナリオを一般的に管理し、ロボットや、複写機、複合機などの事務機器、あるいはパーソナルコンピュータなどの情報処理装置により、図１の音声対話装置２の内で、モジュールに関係する部分以外を実現する。モジュール管理命令３２は、補助的な命令としてスタック管理命令３３とジャンプ先管理命令３４とを備え、モジュールへのジャンプ並びにモジュールからの復帰を管理し、スタック管理命令３３は図１のスタック１６を情報処理装置に実装させて、モジュールにジャンプする際に戻り番地をスタックに積み、モジュールから戻る際にスタックから戻り番地を取り出して、モジュール外の処理に戻る。ジャンプ先管理命令３４はモジュール内のジャンプ先の番地を管理し、具体的にはジャンプ先の番地からモジュールの処理を開始させる。
【００１８】
図４〜図６に、実施例の具体的に示す。図４〜図６のA−１などの記号はシナリオの各場面のIDを示し、図４のシナリオではB−３〜B−５やB−２〜B−５の処理が繰り返し行われている。図４のシナリオは例えば図５のシナリオを多少複雑にしたもので、図５のA−１で対話装置２がスピーカ２４から「花と団子、どちらが好き？」との質問をし、マイクロフォン４から入力され音声認識部８で認識した回答が「花」か「団子」かによってA−２またはA−４へジャンプし、次いでA−３もしくはA−５の処理をした後、共通の処理A−６で合流する。
【００１９】
図４において、(B−３,B−４,B−５)を１つのモジュールとして、B−３からモジュールに入り、B−５から復帰することが考えられる。同様に(B−２,B−５)を他のモジュールとし、B−２からモジュールに入ってB−５を終了した後、復帰することも考えられる。このようにすると例えば２つのモジュールが必要になる。これに対して実施例では、図６のモジュールBのように、(B−１〜B−５)を１つのモジュールBとし、モジュールBはノードB−１を含み、人間の回答によってB−２かB−３に分岐する。そして図１〜図３に示したように、モジュールB内の任意の位置へジャンプでき、B−５からスタック１６に積んだ戻り番地に従ってモジュールを脱出する。このためモジュールBをシナリオの３箇所で用いると、図６の左側のようにはるかに短くかつ管理や編集が容易なシナリオを作ることができる。この場合、A−２の次にB−１からモジュールBに入ると、戻り番地はスタックしておいたA−３である。またA−４の次にB−３からモジュールBに入ると、戻り先はA−５である。そしてA−５を処理すると、B−２からモジュールBに入り、戻り先はA−６である。このように、１つのモジュールを３回しかも異なる形で使用できるので、シナリオをはるかに簡単にできる。
【００２０】
モジュールBの場合、出口はB−５のみに限られる。１つのモジュール内に複数の出口を設けたい場合、モジュール内にサブモジュールを設けると対応できる。例えば図６のB−４を出口とすることが有り得る場合、B−３とB−４とでモジュールCとする。この場合、B−１からモジュールBに入ってB−３に進むと、サブモジュールからの戻り番地としてB−５がスタックされ、最終的にB−５からモジュールを脱出する。これに対してB−３もしくはB−４からサブモジュールに入ると、B−５を省略してメインシナリオの任意の位置へ復帰できる。
【００２１】
図７〜図９に、モジュールへの入口をモジュールの先頭のみに限定した変形例を示す。この場合、図１の音声対話装置２において、モジュール内へのジャンプ先の番地はモジュールの先頭番地に限られるものとし、図３の音声対話プログラム３０において、ジャンプ先管理命令３４ではジャンプ先はモジュールの先頭番地に限られるものとする。モジュールからの戻り番地をスタック１６に積む点は、図１〜図３と共通である。
【００２２】
図７に変形例での処理を示すと、図２と同じステップは同じ処理を表し、モジュールに移行する場合、ＬＩＦＯスタック１６に戻り番地をセットし(ステップ２)、モジュールの先頭からモジュール内の処理を実行し(ステップ４)、新しいモジュールへのジャンプの有無をステップ５でチェックし、モジュール内の処理が終了していると(ステップ６)、スタックから先頭の戻り番地を取り出してそこへ戻る(ステップ７)。また新しいモジュールへジャンプする場合、スタックに戻り番地をセットし(ステップ９)、新しいモジュールへジャンプする(ステップ１０)。
【００２３】
図８に変形例でのモジュール化前のシナリオを示し、これをモジュールS２,S３を用いて簡単化したシナリオを図９に示す。図８において、ID２−１〜２−３までの処理が２回用いられ、ID３−１,３−２の処理は３回用いられる。そこで(ID３−１,ID３−２)を小さなサブモジュールS３とし、(ID２−１〜ID２−３)をより大きなモジュールS２とする。モジュールを用いて図８のシナリオを簡単化すると、図９の左側のようになる。そして図９の左側の処理では、ID１−３からモジュールS２の先頭のID２−１へジャンプし、その最後のID２−３からスタックした戻り番地に従ってID１−４へ戻る。同様にID１−６からモジュールS２へ入り、ID１−７へ戻る。またID１−１からサブモジュールS３へジャンプし、ID１−８へ復帰する。モジュールS２はサブモジュールS３を含んでおり、モジュールS２がID２−２を処理すると、ID２−３をスタックに積んで、ID３−１からサブモジュールS３へ入り、ID３−２を処理した後、ID２−３へ戻る。
【００２４】
図１０,図１１に、サブモジュールを用いたモジュールからの出口制御の例を示す。４４はメインシナリオで、４０はモジュール、４２はその内部のサブモジュールである。例えば図１０でA４から戻り番地A５をセットしてモジュール４０へ入ると、出口はB−５で、この間にサブモジュール４２も処理される。これに対して図１１のように、A６から戻り番地A７をセットしてサブモジュール４２へ入ると、出口はC−３である。
【００２５】
実施例の音声対話装置は、音声あるいはこれに身振りや画面などを加えた対話的なガイダンス装置や取引装置に適し、例えばロボットが音声と身振りなどでガイダンスを行い、ファクシミリ装置や複写機、プリンタなどの事務機の使用方法をガイダンスし、もしくはパーソナルコンピュータなどの使用方法をガイダンスすることに用いることができる。実施例の音声対話装置はこれ以外に、テレフォンセンターやサービスセンターなどに用いて、様々な案内や予約、物品の販売や取引、診断、相談、残高証明書などの書類の発行などに用いることができる。
【図面の簡単な説明】
【００２６】
【図１】実施例の音声対話装置のブロック図
【図２】実施例の音声対話方法を示すフローチャート
【図３】実施例の音声対話プログラムのブロック図
【図４】実施例でのモジュール化前の音声対話シナリオを示す図
【図５】図４のシナリオの簡略版を示す図
【図６】実施例で図４のシナリオをモジュール化したシナリオを示す図
【図７】変形例の音声対話方法を示すフローチャート
【図８】変形例でのモジュール化前の音声対話シナリオを示す図
【図９】変形例で図８のシナリオをモジュール化したシナリオを示す図
【図１０】実施例で、サブモジュールを用いたモジュールの出口制御を模式的に示す図
【図１１】実施例で、サブモジュールを用いたモジュールの出口制御を模式的に示す図
【符号の説明】
【００２７】
２        音声対話装置
４        マイクロフォン
６,２２  アンプ
８        音声認識装置
１０      処理システム
１２      シナリオ記憶部
１４      シナリオ番地レジスタ
１６      ＬＩＦＯスタック
２０      音声データ発生部
２４      スピーカ
３０      音声対話プログラム
３１      シナリオ管理命令
３２      モジュール管理命令
３３      スタック管理命令
３４      ジャンプ先管理命令
４０      モジュール
４２      サブモジュール
４４      メインシナリオ
B,S２,S３  モジュール  
【図１】
2007225682.tif 000003
【図２】
2007225682.tif 000004
【図３】
2007225682.tif 000005
【図４】
2007225682.tif 000006
【図５】
2007225682.tif 000007
【図６】
2007225682.tif 000008
【図７】
2007225682.tif 000009
【図８】
2007225682.tif 000010
【図９】
2007225682.tif 000011
【図１０】
2007225682.tif 000012
【図１１】
2007225682.tif 000013
【手続補正書】
【提出日】平成18年3月17日(2006.3.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
親のモジュール内にサブモジュールを設けてスタックを利用すると、親のモジュールから入った場合には親のモジュールへ戻り、親モジュールを介さずにサブモジュールに直接入った場合には親モジュールの外へ直接戻ることができる。するとモジュールに出口を複数設けたのと同じ効果が得られ、モジュールの数をさらに減らすことができる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
図１〜図１１に、実施例とその変形とを示す。図において２は音声対話装置で、４は音声入力用のマイクロフォンで、６はアンプであり設けなくても良く、８は音声認識部で、入力音声を認識して、音声対話装置２からの質問に対する回答などの人間の入力音声を認識する。１０は処理システムで、音声認識部８で認識した人間の入力音声から対話を制御し、具体的には入力音声の認識結果に基づいてシナリオ中のノードでの分岐を制御し、かつシナリオの各処理（場面）をシナリオ記憶部１２から読み出して、音声認識部８や音声データ発生部２０を制御し、かつ後述のシナリオ記憶部１２，シナリオ番地レジスタ１４，スタック１６を管理する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
シナリオ中のモジュールの処理を図２〜図６に示し、モジュール以外の部分は通常の音声対話装置での処理と同様である。モジュールに移行する場合、図２のステップ１でモジュール内へのジャンプ先番地を得て、これを図１のシナリオ番地レジスタ１４に記憶し、モジュールから戻る際の番地(戻り番地)をスタック１６にセットする(ステップ２)。ステップ１，２は実行順序を逆にしても良い。そしてジャンプ先の番地からモジュールへ入り(ステップ３)、モジュール内の処理を実行する(ステップ４)。以上のように実施例ではモジュール内の任意の番地へジャンプできるので、大きなモジュールと小さなモジュールとを設ける代わりに、大きなモジュールを設けてその任意の位置へジャンプすることにより、別途に小さなモジュールを設ける必要が無くなる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
実施例の音声対話装置は、音声あるいはこれに身振りや画面などを加えた対話的なガイダンス装置や取引装置に適し、例えばロボットが音声と身振りなどでガイダンスを行い、ファクシミリ装置や複写機、プリンタなどの事務機がその使用方法をガイダンスし、もしくはパーソナルコンピュータなどがその使用方法をガイダンスすることに用いることができる。実施例の音声対話装置はこれ以外に、テレフォンセンターやサービスセンターなどに用いて、様々な案内や予約、物品の販売や取引、診断、相談、残高証明書などの書類の発行などに用いることができる。