実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、第1実施形態に係る音声対話システムの構成を示すブロック図である。なお、図1の矢印はブロック間の音声に関する信号の流れを示し、制御に関する信号の流れは省略した。
図1において、音声対話システムには、音声入力部11、音声検出部12、音声認識部13、ユーザ意図理解部14、ユーザ理解管理部15、対話制御部16、応答生成部17、音声合成部18、システム意図理解部19、システム理解管理部20および音声出力部21が設けられている。音声対話システムは、スマートデバイスやサービスロボットなどに搭載することができる。
音声入力部11は、システムに搭載されたマイクロフォンから音声波形を取得する。音声検出部12は、音声入力部11から受信した音声波形から、ユーザが発生した音声を検出し、その音声区間情報を音声認識部13に送信する。音声認識部13は、音声入力部11から受信した音声波形と、音声検出部12から受信した音声区間情報を用いて音声認識処理を行い、音声波形を音声認識結果である文字列に変換する。
ユーザ意図理解部14は、ユーザが発生した音声の音声認識結果を音声認識部13から受信する。また、ユーザ意図理解部14は、音声認識部13から受信した音声認識結果に基づいて、ユーザ意図を理解する。ユーザ意図は、ユーザが音声でシステムに伝えようとしている意図である。ユーザ意図理解部14は、音声認識結果である文字列から目的語およびその目的語に関するトピックを抽出し、構造化データに変換することで、ユーザ意図を取得する。構造化データは、目的語およびトピックごとに類別されたデータである。トピックは、目的語についてユーザが伝えようとしている意図を示す。この時、構造化データはユーザ意図を示すことができる。ユーザ理解管理部15は、ユーザ意図理解部14から構造化データを受信し、その構造化データをユーザ理解データベース(以下、ユーザ理解DBと言う)に格納する。
対話制御部16は、ユーザに伝える情報が抽象化された情報要素ごとに対話制御ルールを保持する。対話制御ルールには、構造化データの入力に応じて出力される情報要素が登録される。情報要素は、ユーザに音声で伝える内容を抽象化した情報である。情報要素は、ユーザの発話内容から抽出された目的語およびその目的語についてのトピックを含むことができる。この時、情報要素には、目的語およびトピックに対し、それぞれ情報の種類または属性またはガテゴリを付加することができる。情報要素は、ユーザに伝える目的語およびその目的語に関するトピックごとに、それらの目的語およびトピックが類別された情報であってもよい。各情報要素には、その情報要素を応答文の生成に用いるかどうかを判断するための出力条件を設定することができる。
例えば、ユーザに伝える情報が、フランス、ハワイまたはイタリアなどであれば、そのカテゴリを地名に設定することができる。ユーザに伝える情報が、今日、夜または11時などであれば、そのカテゴリを日時に設定することができる。ユーザに伝える情報が、晴、雨または曇などであれば、そのカテゴリを天気に設定することができる。
また、対話制御部16は、ユーザ意図理解部14から構造化データを受信する。そして、対話制御部16は、対話制御ルールを参照することにより、構造化データに対応する情報要素を決定し、その情報要素を応答生成部17に出力する。さらに、対話制御部16は、音声検出部12から音声区間情報を受信する。そして、対話制御部16は、音声区間開始を検出した時に音声合成の停止指示を音声合成部18に送信する。なお、対話制御ルールには、音声区間開始を検出しても、音声合成の停止を音声合成部18に指示しないように設定してもよい。
応答生成部17は、情報要素を応答文の形式に変換する応答生成テンプレートを保持する。また、応答生成部17は、対話制御部16から情報要素を受信する。そして、応答生成部17は、ユーザ理解DBとシステム理解データベース(以下、システム理解DBと言う)の内容を参照しつつ、応答文を文字列として生成し、音声合成部18に出力する。この時、応答生成部17は、構造化データの入力に応じて対話制御部16から出力された情報要素を記憶する。また、応答生成部17は、構造化データに対して応答済みの情報要素をシステム理解管理部20から取得する。そして、応答生成部17は、記憶した情報要素から応答済みの情報要素を除いて応答文を生成し、音声合成部18に出力する。
この時、応答生成部17は、ある構造化データに対し、応答生成部17が記憶した情報要素と、システム理解管理部20から取得した応答済みの情報要素とをバージインごとに比較することができる。そして、応答生成部17は、ある構造化データに対し、応答生成部17が記憶した情報要素と、システム理解管理部20から取得した応答済みの情報要素との間の差分がなくなるまで、応答生成部17が記憶した情報要素のうちの未応答の情報要素を用いた応答文の出力をバージインごとに繰り返すことができる。また、応答生成部17は、バージイン時のユーザからの音声入力に基づいて生成された構造化データの入力に対応した新たな情報要素を取得し、その新たな情報要素を追加してバージイン後の音声出力に用いられる応答文を生成することができる。
音声合成部18は、応答生成部17から応答文を受信する。そして、音声合成部18は、応答文に基づいて音声合成を行うことで音声波形を生成し、音声出力部21に逐次送信する。この時、音声合成部18は、音声波形の送信完了位置を記憶する。音声合成部18は、音声波形の送信が完了すると、応答生成部17から受信した応答文をシステム意図理解部19に送信する。また、音声合成部18は、対話制御部16から音声合成の停止指示を受信すると、送信完了位置に相当する応答文の部分文字列をシステム意図理解部19に送信する。音声出力部21は、音声合成部18から受信した音声波形をシステムに搭載されたスピーカから出力する。
システム意図理解部19は、音声合成部18から受信した応答文(あるいはその部分文字列)に対してシステム意図を理解する。システム意図は、システムが音声でユーザに伝えようとしている意図である。システム意図理解部19は、音声合成部18から受信した文字列の目的語およびその目的語に関するトピックを抽出し、情報要素に変換することで、システム意図を取得する。システム理解管理部20は、システム意図理解部19からシステム意図として取得された情報要素を受信し、その情報要素をシステム理解DBに格納する。
ここで、情報要素で与えられる内容の一部しかユーザに伝えられていない場合、システム理解管理部20は、その情報要素で与えられる内容の伝達度合いを推定し、その伝達度合いが所定値を超えている場合に、その情報要素をシステム理解DBに格納する。この伝達度合いは、例えば、その情報要素の目的語およびトピックが何%伝わったかで判断することができる。この伝達度合いは、情報要素に基づく応答文の音声出力直後のユーザの発話内容から、その情報要素で与えられる内容の伝達度合いを推定するようにしてもよい。例えば、システムがある目的語を音声出力している途中でユーザが割り込んで発話した時に、そのユーザの発話にその目的語に関する内容が含まれている場合は、システムは、その目的語がユーザに伝わったと推定することができる。
以下、図1の音声対話システムの動作について説明する。
ユーザが音声入力部11に音声を入力すると、音声入力部11は、ユーザが発した音声波形を音声検出部12および音声認識部13に送信する。音声検出部12は、ユーザが発した音声波形から、音声が発せられている区間を検出し、その音声区間情報を音声認識部13および対話制御部16に送信する。音声認識部13は、音声検出部12から受信した音声区間情報からユーザの音声波形を特定する。そして、音声認識部13は、ユーザの音声波形に対して音声認識処理を行うことにより、その音声波形を文字列に変換し、ユーザ意図理解部14に出力する。
ユーザ意図理解部14は、音声認識部13から文字列を取得すると、その文字列から目的語およびその目的語に関するトピックを抽出する。そして、ユーザ意図理解部14は、目的語およびトピックを構造化データに変換することで、ユーザ意図を取得し、ユーザ理解管理部15および対話制御部16に送信する。この時、ユーザ意図は構造化データで表現することができる。構造化データは、文字列から抽出された目的語ごとにトピックを対応させたデータである。なお、目的語とトピックとの対応関係を表形式で表現するようにしてもよい。ユーザ理解管理部15は、ユーザ意図理解部14から構造化データを受信すると、その構造化データをユーザ理解DBに格納する。
対話制御部16は、ユーザ意図理解部14から構造化データを受信すると、対話制御ルールを参照することにより、その構造化データに対応した情報要素を決定し、その情報要素を応答生成部17に出力する。応答生成部17は、対話制御部16から情報要素を受信すると、応答生成テンプレートを参照することで、その情報要素を応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。この時、応答生成部17は、構造化データの入力に応じて対話制御部16から出力された情報要素を記憶する。また、応答生成部17は、その構造化データに対応する情報要素をシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した情報要素と、システム理解管理部20から取得した情報要素との対応関係を判断する。応答生成部17が記憶した情報要素の中に、システム理解管理部20から取得した情報要素以外の情報要素がない場合、その構造化データに対応するユーザ意図に対してシステム意図がユーザに伝わったと判断することができる。この時、応答生成部17は、その構造化データに対応する情報要素の応答文が再送されないようにする。
音声合成部18は、応答生成部17から取得した応答文に基づいて音声合成を行うことで音声波形を生成し、音声出力部21に逐次送信する。また、音声合成部18は、音声波形の送信が完了すると、応答生成部17から受信した応答文をシステム意図理解部19に送信する。音声出力部21は、音声合成部18から音声波形を受信すると、その音声波形を出力する。
一方、システム意図理解部19は、音声合成部18から応答文を取得すると、その応答文から目的語およびその目的語に関するトピックを抽出する。そして、システム意図理解部19は、目的語およびトピックを情報要素に変換することでシステム意図を取得し、システム理解管理部20に送信する。システム理解管理部20は、システム意図理解部19からシステム意図として取得された情報要素を受信すると、その情報要素をシステム理解DBに格納する。
ここで、音声合成部18から受信した音声波形を音声出力部21が出力している最中にユーザが割り込んで音声を発することで、バージインが発生したものとする。この時、バージインに伴って取得された音声区間情報が音声検出部12から対話制御部16に入力される。
対話制御部16は、その音声区間情報から音声区間開始を検出すると、音声合成の停止指示を音声合成部18に送信する。音声合成部18は、対話制御部16から音声合成の停止指示を受信すると、音声合成を停止するとともに、送信完了位置に相当する応答文の部分文字列をシステム意図理解部19に送信する。
システム意図理解部19は、音声合成部18から応答文の部分文字列を取得すると、その応答文の部分文字列からシステム意図を理解し、システム理解管理部20に送信する。この時、システム意図理解部19は、応答文の部分文字列を情報要素に変換する。そして、システム意図理解部19は、この情報要素をシステム意図として理解することができる。システム理解管理部20は、システム意図理解部19からシステム意図として理解された情報要素を受信すると、その情報要素をシステム理解DBに格納し、応答生成部17に出力する。
一方、音声認識部13は、バージイン時のユーザの音声波形に対して音声認識処理を行うことにより、その音声波形を文字列に変換し、ユーザ意図理解部14に出力する。ユーザ意図理解部14は、音声認識部13から文字列を取得すると、その文字列を構造化データに変換することで、ユーザ意図を取得し、ユーザ理解管理部15および対話制御部16に送信する。ユーザ理解管理部15は、ユーザ意図理解部14から構造化データを受信すると、その構造化データをユーザ理解DBに格納する。
対話制御部16は、ユーザ意図理解部14から構造化データを受信すると、対話制御ルールを参照し、その構造化データに対応した情報要素が対話制御ルールに登録されているかどうかを判断する。その構造化データに対応した情報要素が対話制御ルールに登録されている場合、対話制御部16は、その構造化データに対応した情報要素を応答生成部17に出力する。
応答生成部17は、対話制御部16から情報要素を受信すると、応答生成テンプレートを参照することで、その情報要素を応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。
さらに、応答生成部17は、応答生成部17が記憶した構造化データに対応する情報要素をシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した構造化データに対応する情報要素と、システム理解管理部20から取得したその構造化データに対応する情報要素との対応関係を判断する。そして、応答生成部17が記憶した情報要素の中に、システム理解管理部20から取得した情報要素以外の情報要素がある場合、その構造化データに対応するユーザ意図に対して全てのシステム意図がユーザに伝わっていない判断することができる。この時、応答生成部17は、システム理解管理部20から取得した情報要素以外の情報要素に対して応答生成テンプレートを適用することで、未応答の情報要素をバージイン後の応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。
未応答の情報要素をバージイン後の応答文の形式に変換するに当たり、応答生成部17は、情報要素の出力条件を満たさないトピックが構造化データに含まれていないかどうかを判断する。そして、情報要素の出力条件を満たさないトピックが構造化データに含まれている場合、応答生成部17は、その出力条件を満たさない情報要素を除外して応答文の形式に変換する。
上述したように、図1の音声対話システムは、ユーザに伝える情報が抽象化された情報要素を保持し、その情報要素に基づいて応答文を生成することができる。このため、ユーザのバージインが様々なタイミングで生じる場合においても、そのタイミングに応じて情報要素を選択することにより、バージインの様々なタイミングに応じた応答文を生成することが可能となる。この結果、バージイン時に想定されるユーザの様々の発話内容に応じた応答文を保持することなく、バージイン後の音声応答を実現することができ、バージインに対応した音声対話システムの低コスト化を図ることが可能となる。
以下、図1の音声対話システムの動作について、ユーザUとシステムSとの間での旅行に関する対話を具体例にとって説明する。
図2は、図1の対話制御部が保持する対話制御ルールの一例を示す図である。
図2において、対話制御ルールは、対話制御部16にユーザ意図として入力される構造化データと、その構造化データに対応して対話制御部16から出力される情報要素を含む。対話制御ルールの入力において、構造化データの目的語をobject、構造化データのトピックをtypeで示すことができる。この時、構造化データには、typeおよびobjectに対応する内容を設定することができる。
対話制御ルールの出力において、各情報要素は、目的語およびトピックを含む表形式で表現することができる。この時、情報要素の目的語をobject、情報要素のトピックをtypeで示すことができる。さらに、情報要素には、場所、特徴、状態、嗜好などの属性を含めることができる。場所はat、特徴はfeature、状態はofまたはdata、嗜好はforで示すことができる。この時、情報要素には、typeおよびobjectに対応する内容を設定することができる。さらに、情報要素には、at、feature、of、dataおよびforに対応する内容を適宜設定することができる。さらに、情報要素には、その情報要素を応答文の生成に用いるかどうかを判断するための出力条件を設定することができる。出力条件はifで示すことができる。
図2では、対話制御部16の入力である構造化データU1に対して、対話制御部16の出力である情報要素S1~S5が登録され、対話制御部16の入力である構造化データU2に対して、対話制御部16の出力である情報要素S6が登録されている例を示した。
対話制御部16は、このような対話制御ルールを、ユーザUとシステムSとの間で想定される全ての対話について保持することができる。例えば、図2では、旅行先の観光地を紹介する例を示したが、飲食店、宿泊先、交通機関、ショッピングなどの対話にも対応できるようにする場合には、対話制御部16は、これらの対話についての対話制御ルールも保持する。
図3は、図1の応答生成部が保持する応答生成テンプレートの一例を示す図である。
図3において、応答生成テンプレートには、情報要素パターンごとに、音声出力される応答文の形式が登録される。なお、XおよびYは、音声出力される具体的な単語を設定することができる。応答生成部17は、対話制御部16から情報要素を受信すると、応答生成テンプレートを参照することで、その情報要素を応答文に変換し、音声合成部18に出力する。この時、応答生成部17は、情報要素を応答生成テンプレートに当てはめることにより、応答文を生成することができる。
例えば、応答生成部17は、「type=introduce,object=X,at=Y」という情報要素パターンを対話制御部16から受信すると、応答生成テンプレートを参照することにより、その情報要素パターンに対応した「<X>が<Y>にあります」という応答文を取得する。そして、音声出力される具体的な単語をXおよびYに設定し、「<X>が<Y>にあります」という応答文を音声合成部18に出力する。
この時、「<X>が<Y>にあります」という応答文では、Xには、様々な観光スポットの名称、Yには、その観光スポットが存在する地名を設定することができる。このため、応答生成部17は、様々な観光スポットの名称や、その観光スポットが存在する地名ごとに応答文を保持する必要がなくなり、様々のタイミングで発生するバージインを受付可能な音声対話システムを実現することが可能となる。
なお、図3の応答生成テンプレートの(のでご注意ください)の部分はあってもよいし、なくてもよい。以下の音声入出力ログでは、図3の応答生成テンプレートの(のでご注意ください)の部分は省略した。
以下、音声入出力ログを例にとって図1の音声対話システムの動作について具体的に説明する。まず、システムSの応答中にユーザUからのバージインがない場合を説明する。
図4は、図1の音声対話システムの対話例1における音声入出力ログを示す図、図5は、図1の音声対話システムの対話例1におけるユーザ理解DBの内容を示す図、図6は、図1の音声対話システムの対話例1におけるシステム理解DBの内容を示す図である。
図4において、音声入出力ログには、発話IDが付与される。システムSは、ユーザUおよびシステムSの発話の順序に従って発話IDを付与することができる。
最初にユーザUが「こんにちは。」と発話したものとする(発話ID=0)。この時、システムSは、「こんにちは。」に対応した出力を対話制御ルールから取得し、「こんにちは。何かお困りですか?」と応答する(発話ID=1)。
次に、ユーザUが「〇〇に旅行に行きたいのですが、おすすめの場所はありますか?」と発話したものとする(発話ID=2)。この時、システムSにおいて、ユーザ意図理解部14は、ユーザUの発話に対応した文字列を構造化データU1に変換し、図5のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU1の発話IDを2に設定する。対話制御部16は、図2の対話制御ルールを参照し、構造化データU1に対応した情報要素S1~S5を応答生成部17に出力する。応答生成部17は、情報要素S1~S5を対話制御部16から受信すると、情報要素S1~S5を記憶する。
また、応答生成部17は、構造化データU1をユーザ理解DBから読み出し、各情報要素S1~S3の出力条件を満たさない内容が構造化データU1のトピックに含まれていないかどうかを判断する。そして、応答生成部17は、各情報要素S1~S3の出力条件を満たさない内容が構造化データU1のトピックに含まれていないと判断すると、図3の応答生成テンプレートを参照することで、その情報要素S1~S5を応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。そして、音声合成部18は、応答生成部17から受信した応答文を音声合成し、音声出力部21に出力する。音声出力部21は、音声合成にて生成された音声波形を出力することで、システムSは、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。現在見ることができません。改装中です。」と応答する(発話ID=3)。
また、音声合成部18は、応答生成部17から受信した応答文をシステム意図理解部19に送信する。システム意図理解部19は、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。現在見ることができません。改装中です。」という応答文から、目的語およびその目的語に関するトピックを抽出し、情報要素S1A、S2A、S3A、S4、S5に変換する。なお、情報要素S1A、S2A、S3Aは、情報要素S1、S2、S3に対応する。ただし、情報要素S1A、S2A、S3Aは、情報要素S1、S2、S3からif文が除去されている。そして、システム意図理解部19は、情報要素S1A、S2A、S3A、S4、S5を図6のシステム理解DBに格納する。この時、システムSは、情報要素S1A、S2A、S3A、S4、S5の発話IDを3に設定する。
次に、応答生成部17は、構造化データU1に対応する情報要素S1A、S2A、S3A、S4、S5をシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した情報要素S1、S2、S3、S4、S5と、システム理解管理部20から取得した情報要素S1A、S2A、S3A、S4、S5との対応関係を判断する。応答生成部17が記憶した情報要素S1、S2、S3、S4、S5の中に、システム理解管理部20から取得した情報要素S1A、S2A、S3A、S4、S5以外の情報要素がない場合、応答生成部17は、構造化データU1に対応する全ての情報要素S1、S2、S3、S4、S5がユーザUに伝えられたと判断することができる。この時、応答生成部17は、その構造化データU1に対応する情報要素S1、S2、S3、S4、S5の応答文が再送されないようにする。
次に、ユーザUが「いいですね。」と発話すると、システムSのユーザ意図理解部14は、ユーザUが発話した文字列を構造化データU3に変換し、図5のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU3の発話IDを4に設定する。対話制御部16は、図2の対話制御ルールを参照し、その構造化データU3に対応した情報要素がない場合は、システムSは、ユーザUの「いいですね。」に対する音声応答を出力しない。
なお、〇〇は、具体的な地名を設定することができる。AAAは、有名な建物が存在する具体的な地名を設定することができる。BBBは、具体的な美術館名などを設定することができる。CCCは、DDD寺院が存在する具体的な地名を設定することができる。DDDは、具体的な寺院名を設定することができる。例えば、〇〇がフランスとすると、AAAはパリ、BBBはルーブル美術館、CCCはシテ島、DDDはノートルダムとすることができる。
次に、図1の音声対話システムの動作について、システムSの応答中にユーザUからのバージインがある場合を具体的に説明する。
図7は、図1の音声対話システムの対話例2における音声入出力ログを示す図、図8は、図1の音声対話システムの対話例2におけるユーザ理解DBの内容を示す図、図9は、図1の音声対話システムの対話例2におけるシステム理解DBの内容を示す図である。
図7において、システムSが発話ID=3の内容を応答中に/の位置でユーザUのバージインが生じたものとする。すなわち、システムSは、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるなら」と応答したところで、ユーザUが「いいですね。」と発話したものとする。
ユーザUが「いいですね。」と発話すると、システムSのユーザ意図理解部14は、ユーザUが発話した文字列を構造化データU3に変換し、図8のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU3の発話IDを4に設定する。対話制御部16は、図2の対話制御ルールを参照し、その構造化データU3に対応した情報要素がない場合は、システムSは、ユーザUの「いいですね。」に対する音声応答を出力しない。
また、対話制御部16は、システムSの応答中に音声区間開始を検出すると、音声合成の停止指示を音声合成部18に送信する。音声合成部18は、対話制御部16から音声合成の停止指示を受信すると、送信完了位置に相当する「○○ですね。有名な建物がAAAで見られます。絵画に興味があるなら」という部分文字列をシステム意図理解部19に送信する。
システム意図理解部19は、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるなら」という部分文字列から、目的語およびその目的語に関するトピックを抽出し、情報要素S1A、S7に変換する。そして、システム意図理解部19は、情報要素S1A、S7を図9のシステム理解DBに格納する。この時、システムSは、情報要素S1A、S7の発話IDを3に設定する。
ここで、図7の音声入出力ログにおいて、図2の情報要素S2に基づく応答文である「絵画に興味があるならBBBがおすすめです。」のうち、「絵画に興味があるなら」という部分はバージイン前に伝わっているが、BBBというobjectは伝わっていない。このため、応答生成部17は、図9の発話ID=3の情報要素S1A、S7をシステム理解DBに格納する時に、情報要素S2Aはシステム理解DBに格納しないようにすることができる。
次に、応答生成部17は、構造化データU1に対応する情報要素S1A、S7をシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した情報要素S1、S2、S3、S4、S5と、システム理解管理部20から取得した情報要素S1A、S7との対応関係を判断する。応答生成部17が記憶した情報要素S1、S2、S3、S4、S5の中に、システム理解管理部20から取得した情報要素S1A、S7以外の情報要素がある場合、応答生成部17は、構造化データU1に対応する全ての情報要素S1、S2、S3、S4、S5がユーザUに伝えられていないと判断することができる。
この時、応答生成部17は、図3の応答生成テンプレートを参照することで、情報要素S2、S3、S4、S5を応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。この時、情報要素S2に基づく応答文である「絵画に興味があるならBBBがおすすめです。」のうち、「絵画に興味があるなら」という部分はバージイン前に伝わっているが、図3の応答生成テンプレートを参照することで、「絵画に興味があるなら」という部分を補ってバージイン後の応答文を生成することができる。
そして、音声合成部18は、応答生成部17から受信した応答文を音声合成し、音声出力部21に出力する。音声出力部21は、音声合成にて生成された音声波形を出力することで、システムSは、「はい。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。現在見ることができません。改装中です。」と応答する(発話ID=5)。
また、音声合成部18は、応答生成部17から受信した応答文をシステム意図理解部19に送信する。システム意図理解部19は、「はい。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。現在見ることができません。改装中です。」という応答文から、目的語およびその目的語に関するトピックを抽出し、情報要素S2A、S3A、S4、S5に変換する。そして、システム意図理解部19は、情報要素S2A、S3A、S4、S5を図9のシステム理解DBに格納する。この時、システムSは、情報要素S2A、S3A、S4、S5の発話IDを5に設定する。
次に、ユーザUが「そこにします。」と発話したものとする(発話ID=6)。この時、システムSにおいて、ユーザ意図理解部14は、ユーザUが発話した文字列を構造化データU4に変換し、図8のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU4の発話IDを6に設定する。対話制御部16は図2の対話制御ルールを参照し、その構造化データU4に対応した情報要素がない場合は、システムSは、ユーザUの「そこにします。」に対する音声応答を出力しない。
ここで、システムSは、どの情報要素がバージイン前にユーザUに伝わったかを判断し、バージイン前に伝わった情報要素を除外し、バージイン前に伝わっていない情報要素に基づいて、バージイン後の応答文を生成することができる。これにより、バージインの様々なタイミングに応じた応答文を保持することなく、バージインの様々なタイミングに応じたバージイン後の音声応答を実現することができる。
図10は、図1の音声対話システムの対話例3における音声入出力ログを示す図、図11は、図1の音声対話システムの対話例3におけるユーザ理解DBの内容を示す図、図12は、図1の音声対話システムの対話例3におけるシステム理解DBの内容を示す図である。
図10において、システムSが、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるなら」と応答したところで、ユーザUが「%%%の絵とかはありますか?」と発話したものとする。
ユーザUが「%%%の絵とかはありますか?」と発話すると、システムSのユーザ意図理解部14は、ユーザUが発話した文字列を構造化データU2Aに変換し、図11のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU2Aの発話IDを4に設定する。対話制御部16は、図2の対話制御ルールを参照し、その構造化データU2Aに対応した情報要素S6がある場合は、その情報要素S6を応答生成部17に出力する。なお、図11の構造化データU2Aは、図2の構造化データU2に対応する。
応答生成部17は、情報要素S6を受信すると、図3の応答生成テンプレートを参照することで、その情報要素S6を応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。応答生成部17は、情報要素S6を対話制御部16から受信すると、情報要素S6を記憶する。そして、音声合成部18は、応答生成部17から受信した応答文を音声合成し、音声出力部21に出力する。
さらに、応答生成部17は、構造化データU1に対応する情報要素S1A、S7をシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した情報要素S1、S2、S3、S4、S5と、システム理解管理部20から取得した情報要素S1A、S7との対応関係を判断する。応答生成部17が記憶した情報要素S1、S2、S3、S4、S5の中に、システム理解管理部20から取得した情報要素S1A、S7以外の情報要素がある場合、応答生成部17は、図3の応答生成テンプレートを参照することで、情報要素S1A、S7以外の情報要素S2、S3、S4、S5を応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。そして、音声合成部18は、応答生成部17から受信した応答文を音声合成し、音声出力部21に出力する。
音声出力部21は、音声合成にて生成された音声波形を出力することで、システムSは、「ありますよ。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。現在見ることができません。改装中です。」と応答する。
また、音声合成部18は、応答生成部17から受信した応答文をシステム意図理解部19に送信する。システム意図理解部19は、「ありますよ。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。現在見ることができません。改装中です。」という応答文から、目的語およびその目的語に関するトピックを抽出し、情報要素S6A、S2A、S3A、S4、S5に変換する。そして、システム意図理解部19は、情報要素S6A、S2A、S3A、S4、S5を図12のシステム理解DBに格納する。この時、システムSは、情報要素S6A、S2A、S3A、S4、S5の発話IDを5に設定する。
次に、応答生成部17は、構造化データU2Aに対応する情報要素S6Aをシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した情報要素S6Aの中に、システム理解管理部20から取得した情報要素S6A以外の情報要素がない場合、応答生成部17は、構造化データU2Aに対応する全ての情報要素S6がユーザUに伝えられたと判断することができる。
さらに、応答生成部17は、構造化データU1に対応する情報要素S1A、S2A、S3A、S4、S5をシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した情報要素S1、S2、S3、S4、S5の中に、システム理解管理部20から取得した情報要素S1A、S2A、S3A、S4、S5以外の情報要素がない場合、応答生成部17は、構造化データU1に対応する全ての情報要素S1、S2、S3、S4、S5がユーザUに伝えられたと判断することができる。
ここで、システムSは、バージイン時のユーザUからの発話に対する情報要素を対話制御ルールに保持することにより、バージイン時のユーザUからの発話に対して齟齬のない音声応答を実現することができる。
図13は、図1の音声対話システムの対話例4における音声入出力ログを示す図、図14は、図1の音声対話システムの対話例4におけるユーザ理解DBの内容を示す図、図15は、図1の音声対話システムの対話例4におけるシステム理解DBの内容を示す図である。
図13において、システムSが、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるなら」と応答したところで、ユーザUが「絵は好きじゃない。」と発話したものとする。
ユーザUが「絵は好きじゃない。」と発話すると、システムSのユーザ意図理解部14は、ユーザUが発話した文字列を構造化データU5に変換し、図14のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU5の発話IDを4に設定する。対話制御部16は、図2の対話制御ルールを参照し、その構造化データU5に対応した情報要素がない場合は、そのことを応答生成部17に伝えるとともに、システムSは、ユーザUの「絵は好きじゃない。」に対する音声応答を出力しない。
応答生成部17は、構造化データU5に対応した情報要素がないという通知を受信すると、構造化データU1に対応する情報要素S1A、S7をシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した情報要素S1、S2、S3、S4、S5と、システム理解管理部20から取得した情報要素S1A、S7との対応関係を判断する。応答生成部17が記憶した情報要素S1、S2、S3、S4、S5の中に、システム理解管理部20から取得した情報要素S1A、S7以外の情報要素S2、S3、S4、S5がある場合、応答生成部17は、構造化データU5をユーザ理解DBから読み出す。そして、応答生成部17は、各情報要素S2、S3の出力条件を満たさない内容が構造化データU5のトピックに含まれていないかどうかを判断する。そして、応答生成部17は、情報要素S2の出力条件(図2のif文)を満たさない内容が構造化データU5のトピックに含まれていると判断すると、情報要素S2、S3、S4、S5から情報要素S2を除外する。そして、応答生成部17は、図3の応答生成テンプレートを参照することで、情報要素S1A、S7、S2以外の情報要素S3、S4、S5を応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。そして、音声合成部18は、応答生成部17から受信した応答文を音声合成し、音声出力部21に出力する。
音声出力部21は、音声合成にて生成された音声波形を出力することで、システムSは、「はい。CCCには有名なDDD寺院があります。現在見ることができません。改装中です。」と応答する。
また、音声合成部18は、応答生成部17から受信した応答文をシステム意図理解部19に送信する。システム意図理解部19は、「はい。CCCには有名なDDD寺院があります。現在見ることができません。改装中です。」という応答文から、目的語およびその目的語に関するトピックを抽出し、情報要素S3A、S4、S5に変換する。そして、システム意図理解部19は、情報要素S3A、S4、S5を図15のシステム理解DBに格納する。この時、システムSは、情報要素S3A、S4、S5の発話IDを5に設定する。
ここで、システムSは、ユーザUからの発話に対する情報要素の出力条件を対話制御ルールに保持することにより、ユーザUからの発話に対して不要な音声応答を省略することができる。
図16は、図1の音声対話システムの対話例5における音声入出力ログを示す図、図17は、図1の音声対話システムの対話例5におけるユーザ理解DBの内容を示す図、図18は、図1の音声対話システムの対話例5におけるシステム理解DBの内容を示す図である。
図16において、システムSが、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。」と応答したところで、ユーザUが「いいですね。」と発話したものとする。
ユーザUが「いいですね。」と発話すると、システムSのユーザ意図理解部14は、ユーザUが発話した文字列を構造化データU3Aに変換し、図17のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU3Aの発話IDを4に設定する。対話制御部16は、図2の対話制御ルールを参照し、その構造化データU3Aに対応した情報要素がない場合は、システムSは、ユーザUの「いいですね。」に対する音声応答を出力しない。
また、対話制御部16は、システムSの応答中に音声区間開始を検出すると、音声合成の停止指示を音声合成部18に送信する。音声合成部18は、対話制御部16から音声合成の停止指示を受信すると、送信完了位置に相当する「○○ですね。有名な建物がAAAで見られます。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。」という部分文字列をシステム意図理解部19に送信する。
システム意図理解部19は、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。」という部分文字列から、目的語およびその目的語に関するトピックを抽出し、情報要素S1A、S2A、S3Aに変換する。そして、システム意図理解部19は、情報要素S1A、S2A、S3Aを図18のシステム理解DBに格納する。この時、システムSは、情報要素S1A、S2A、S3Aの発話IDを3に設定する。
次に、応答生成部17は、構造化データU1に対応する情報要素S1A、S2A、S3Aをシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した情報要素S1、S2、S3、S4、S5と、システム理解管理部20から取得した情報要素S1A、S2A、S3Aとの対応関係を判断する。応答生成部17が記憶した情報要素S1、S2、S3、S4、S5の中に、システム理解管理部20から取得した情報要素S1A、S2A、S3A以外の情報要素がある場合、応答生成部17は、構造化データU1に対応する全ての情報要素S1、S2、S3、S4、S5がユーザUに伝えられていないと判断することができる。この時、応答生成部17は、図3の応答生成テンプレートを参照することで、情報要素S1A、S2A、S3A以外の情報要素S4、S5を応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。
そして、音声合成部18は、応答生成部17から受信した応答文を音声合成し、音声出力部21に出力する。音声出力部21は、音声合成にて生成された音声波形を出力することで、システムSは、「はい。DDD寺院は現在見ることができません。改装中です。」と応答する(発話ID=5)。
また、音声合成部18は、応答生成部17から受信した応答文をシステム意図理解部19に送信する。システム意図理解部19は、「はい。DDD寺院は現在見ることができません。改装中です。」という応答文から、目的語およびその目的語に関するトピックを抽出し、情報要素S4、S5に変換する。そして、システム意図理解部19は、情報要素S4、S5を図18のシステム理解DBに格納する。この時、システムSは、情報要素S4、S5の発話IDを5に設定する。
次に、ユーザUが「そうなんですね。」と発話したものとする(発話ID=6)。この時、システムSにおいて、ユーザ意図理解部14は、ユーザUが発話した文字列を構造化データU4Aに変換し、図17のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU4Aの発話IDを6に設定する。対話制御部16は、図2の対話制御ルールを参照し、その構造化データU4Aに対応した情報要素がない場合は、システムSは、ユーザUの「そうなんですね。」に対する音声応答を出力しない。
ここで、応答生成部17は、情報要素S4、S5を応答文の形式に変換する際に、図3の応答生成テンプレートを参照することで、情報要素S4のobjectであるDDD寺院を補うことができる。このため、図16の発話ID=3の「現在見ることができません。改装中です。」という音声を出力する直前にバージインが発生した場合においても、システムSは、「はい。DDD寺院は現在見ることができません。改装中です。」という応答をバージイン後に出力することができ、バージイン後のシステムSの応答に脈絡がなくなるのを防止することができる。
図19は、図1の音声対話システムの対話例6における音声入出力ログを示す図、図20は、図1の音声対話システムの対話例6におけるユーザ理解DBの内容を示す図、図21は、図1の音声対話システムの対話例6におけるシステム理解DBの内容を示す図である。
図19において、システムSが、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。現在見ることができません。」と応答したところで、ユーザUが「残念ですね。」と発話したものとする。
ユーザUが「残念ですね。」と発話すると、システムSのユーザ意図理解部14は、ユーザUが発話した文字列を構造化データU6に変換し、図20のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU6の発話IDを4に設定する。対話制御部16は、図2の対話制御ルールを参照し、その構造化データU6に対応した情報要素がない場合は、システムSは、ユーザUの「残念ですね。」に対する音声応答を出力しない。
また、対話制御部16は、システムSの応答中に音声区間開始を検出すると、音声合成の停止指示を音声合成部18に送信する。音声合成部18は、対話制御部16から音声合成の停止指示を受信すると、送信完了位置に相当する「○○ですね。有名な建物がAAAで見られます。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。現在見ることができません。」という部分文字列をシステム意図理解部19に送信する。
システム意図理解部19は、「○○ですね。有名な建物がAAAで見られます。絵画に興味があるならBBBがおすすめです。CCCには有名なDDD寺院があります。現在見ることができません。」という部分文字列から、目的語およびその目的語に関するトピックを抽出し、情報要素S1A、S2A、S3A、S4に変換する。そして、システム意図理解部19は、情報要素S1A、S2A、S3A、S4を図21のシステム理解DBに格納する。この時、システムSは、情報要素S1A、S2A、S3A、S4の発話IDを3に設定する。
次に、応答生成部17は、構造化データU1に対応する情報要素S1A、S2A、S3A、S4をシステム理解管理部20から取得する。そして、応答生成部17は、応答生成部17が記憶した情報要素S1、S2、S3、S4、S5と、システム理解管理部20から取得した情報要素S1A、S2A、S3A、S4との対応関係を判断する。応答生成部17が記憶した情報要素S1、S2、S3、S4、S5の中に、システム理解管理部20から取得した情報要素S1A、S2A、S3A、S4以外の情報要素がある場合、応答生成部17は、構造化データU1に対応する全ての情報要素S1、S2、S3、S4、S5がユーザUに伝えられていないと判断することができる。この時、応答生成部17は、図3の応答生成テンプレートを参照することで、情報要素S1A、S2A、S3A、S4以外の情報要素S5を応答文の形式に変換し、その応答文を文字列として音声合成部18に出力する。
そして、音声合成部18は、応答生成部17から受信した応答文を音声合成し、音声出力部21に出力する。音声出力部21は、音声合成にて生成された音声波形を出力することで、システムSは、「はい。DDD寺院は改装中です。」と応答する(発話ID=5)。
また、音声合成部18は、応答生成部17から受信した応答文をシステム意図理解部19に送信する。システム意図理解部19は、「はい。DDD寺院は改装中です。」という応答文から、目的語およびその目的語に関するトピックを抽出し、情報要素S5に変換する。そして、システム意図理解部19は、情報要素S5を図21のシステム理解DBに格納する。この時、システムSは、情報要素S5の発話IDを5に設定する。
次に、ユーザUが「そうですか。」と発話したものとする(発話ID=6)。この時、システムSにおいて、ユーザ意図理解部14は、ユーザUが発話した文字列を構造化データU4Aに変換し、図20のユーザ理解DBに格納するとともに、対話制御部16に送信する。この時、システムSは、ユーザ理解DBに格納される構造化データU4Aの発話IDを6に設定する。対話制御部16は図2の対話制御ルールを参照し、その構造化データU4Aに対応した情報要素がない場合は、システムSは、ユーザUの「そうですか。」に対する音声応答を出力しない。
ここで、応答生成部17は、情報要素S5を応答文の形式に変換する際に、図3の応答生成テンプレートを参照することで、情報要素S5のobjectであるDDD寺院を補うことができる。このため、図16の発話ID=3の「改装中です。」という音声を出力する直前にバージインが発生した場合においても、システムSは、「はい。DDD寺院は改装中です。」という応答をバージイン後に出力することができ、バージイン後のシステムSの応答に脈絡がなくなるのを防止することができる。
なお、上述した実施形態では、応答生成部17が対話制御部16から出力された情報要素を記憶し、応答生成部17が記憶した情報要素と、システム理解管理部20から取得した応答済みの情報要素とを比較する方法について示した。別の実施形態として、対話制御部16が応答生成部17に出力した情報要素を記憶し、対話制御部16が記憶した情報要素と、システム理解管理部20から取得した応答済みの情報要素とを比較するようにしてもよい。この時、対話制御部16が記憶した情報要素と、システム理解管理部20から取得した応答済みの情報要素との間に差分がある場合、対話制御部16が記憶した情報要素のうちの未応答の情報要素を応答生成部17に出力するようにしてもよい。
図22は、図1の音声対話システムに適用可能な音声対話装置のハードウェア構成を示すブロック図である。
図22において、音声対話装置100には、プロセッサ101、通信制御デバイス102、通信インターフェース103、主記憶デバイス104および外部記憶デバイス105が設けられている。プロセッサ101、通信制御デバイス102、通信インターフェース103、主記憶デバイス104および外部記憶デバイス105は、内部バス106を介して相互に接続されている。主記憶デバイス104および外部記憶デバイス105は、プロセッサ101からアクセス可能である。
また、音声対話装置100の外部には、マイクロフォン120およびスピーカ130が設けられている。マイクロフォン120およびスピーカ130は、入出力インターフェース107を介して内部バス106に接続されている。
プロセッサ101は、音声対話装置100全体の動作制御を司るハードウェアである。主記憶デバイス104は、例えば、SRAMまたはDRAMなどの半導体メモリから構成することができる。主記憶デバイス104には、プロセッサ101が実行中のプログラムを格納したり、プロセッサ101がプログラムを実行するためのワークエリアを設けたりすることができる。
外部記憶デバイス105は、大容量の記憶容量を有する記憶デバイスであり、例えば、ハードディスク装置やSSD(Solid State Drive)である。外部記憶デバイス105は、各種プログラムの実行ファイルやプログラムの実行に用いられるデータを保持することができる。外部記憶デバイス105には、音声対話プログラム105A、対話制御ルール105Bおよび応答生成テンプレート105Cを格納することができる。音声対話プログラム105Aは、音声対話装置100にインストール可能なソフトウェアであってもよいし、音声対話装置100にファームウェアとして組み込まれていてもよい。
通信制御デバイス102は、外部との通信を制御する機能を有するハードウェアである。通信制御デバイス102は、通信インターフェース103を介してネットワーク109に接続される。ネットワーク109は、インターネットなどのWAN(Wide Area Network)であってもよいし、WiFiなどのLAN(Local Area Network)であってもよいし、WANとLANが混在していてもよい。
入出力インターフェース107は、マイクロフォン120から入力される音声波形をプロセッサ101が処理可能なデータ形式に変換したり、プロセッサ101から出力されるデータをスピーカ130の駆動信号に変換したりする。入出力インターフェース107には、ADコンバータおよびDAコンバータを設けるようにしてもよい。
プロセッサ101が音声対話プログラム105Aを主記憶デバイス104に読み出し、対話制御ルール105Bおよび応答生成テンプレート105Cを参照しつつ、音声対話プログラム105Aを実行することにより、ユーザからのバージインに対応しつつ、ユーザとの対話を実現することができる。
この時、音声対話プログラム105Aは、図1の音声検出部12、音声認識部13、ユーザ意図理解部14、対話制御部16、応答生成部17、音声合成部18およびシステム意図理解部19の機能を実現することができる。
なお、音声対話プログラム105Aの実行は、複数のプロセッサやコンピュータに分担させてもよい。あるいは、プロセッサ101は、ネットワーク109を介してクラウドコンピュータなどに音声対話プログラム105Aの全部または一部の実行を指示し、その実行結果を受け取るようにしてもよい。