機器制御装置、音声認識装置、エージェント装置、機器制御方法及びプログラム
【課題】人間が言語の形で発する指示に適切に応答して機器を制御できる機器制御装置等を提供することである。
【解決手段】言語解析部2は、音声入力部1が入力した音声に音声認識を施して、この音声が表している可能性のある単語とそのスコアとを特定し、これらを表す単語データをエージェント処理部6に供給する。エージェント処理部6は、単語データ等を取得するデータ取得処理や、判別処理、入出力処理を定義する処理項目データと、ひとつの処理から次の処理への遷移を定義し、この遷移に遷移定数を与えるデータであるワイヤと、を記憶しており、処理項目データとワイヤとが全体として表すフローを実行することにより、入出力対象機器群5に属する機器を制御する。フロー内のどの処理へと遷移するかは、処理が進んだ地点とワイヤの接続関係とにより決まる各ワイヤの重み係数と、単語データのスコアとにより決まる。
【解決手段】言語解析部2は、音声入力部1が入力した音声に音声認識を施して、この音声が表している可能性のある単語とそのスコアとを特定し、これらを表す単語データをエージェント処理部6に供給する。エージェント処理部6は、単語データ等を取得するデータ取得処理や、判別処理、入出力処理を定義する処理項目データと、ひとつの処理から次の処理への遷移を定義し、この遷移に遷移定数を与えるデータであるワイヤと、を記憶しており、処理項目データとワイヤとが全体として表すフローを実行することにより、入出力対象機器群5に属する機器を制御する。フロー内のどの処理へと遷移するかは、処理が進んだ地点とワイヤの接続関係とにより決まる各ワイヤの重み係数と、単語データのスコアとにより決まる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、機器制御装置、音声認識装置、エージェント装置、機器制御方法及びプログラムに関する。
【背景技術】
【0002】
近年、音声認識の技術を用いて音声を認識し、認識結果に応答して電気機器などを制御する手法が用いられている。この手法は、具体的には、入力した音声が表す単語を識別し、識別された単語が所定のキーワードに合致するか否かを判別して、判別結果に基づいて外部の機器を制御するものである(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平8−339288号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、人間が言語の形で発する指示を完全に認識するのは困難である。このため、上述の手法では、人間が言語の形で発する指示に適切に応答することができない場合があった。
【0005】
この発明は上記実状に鑑みてなされたものであり、人間が言語の形で発する指示に適切に応答して機器を制御できる機器制御装置、音声認識装置、エージェント装置、機器制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、この発明の第1の観点にかかる機器制御装置は、
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする。
【0007】
前記処理項目データ記憶手段は、
処理項目を適宜追加可能なように構成されてもよい。
【0008】
前記遷移定義データは、入力情報に対応する条件をそれぞれ有してもよい。
【0009】
前記認識情報は、入力情報と前記遷移定義データの条件との一致状態を示す尤度を有してもよく、
前記遷移定義データの条件に対応する前記尤度が前記遷移定義データに設定されてもよい。
【0010】
前記入力情報は音声信号であり、
前記遷移定義データの条件は、音声認識を行う対象単語であり、
前記認識情報は、音声信号と前記遷移定義データの対象単語との一致状態を示す尤度を有し、
前記遷移定義データの対象単語に対応する前記尤度が前記遷移定義データに設定され、
前記尤度に応じて一の前記遷移定義データを選択し、選択された一の遷移定義データによって示される処理項目に状態を遷移させてもよい。
【0011】
前記遷移定義データは、
入力情報に対応する条件と、
前記条件に対応する重み係数と、を有してもよい。
【0012】
前記重み係数の算出基準である遷移定数は、前記遷移定義データに対応して定数として設定され、
状態が遷移している一の処理項目に連なる他の処理項目に係る遷移定義データの重み係数は、一の処理項目に係る遷移定義データの前記定数から、他の処理項目に係る遷移定義データまでの定数が累積されて算出されてもよい。
【0013】
この発明の第2の観点にかかる音声認識装置は、
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする。
【0014】
この発明の第3の観点にかかるエージェント装置は、
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする。
【0015】
この発明の第4の観点にかかる機器制御方法は、
入力情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶ステップと、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートを生成するステップと、
を有することを特徴とする。
【0016】
この発明の第5の観点にかかるプログラムは、
コンピュータを、
入力情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶部、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートを生成する生成部、
として機能させることを特徴とする。
【発明の効果】
【0017】
この発明によれば、人間が言語の形で発する指示に適切に応答して機器を制御できる機器制御装置、音声認識装置、エージェント装置、機器制御方法及びプログラムが実現される。
【図面の簡単な説明】
【0018】
【図1】この発明の実施の形態に係る車内空調システムを示す図である。
【図2】この実施の形態に係る車内空調システムのより詳細な構成図である。
【図3】グルーピング用のフラグの具体例を模式的に示す図である。
【図4】トリガ取得処理を説明するための図である。
【図5】判別処理を説明するための図である。
【図6】問い合わせ付きの判別処理を説明するための図である。
【図7】入出力処理を説明するための図である。
【図8】ワイヤを示す図である。
【図9】処理項目データベース及びワイヤデータベースが全体として表しているフローを示す図である。
【図10】重み係数の設定を説明するための図である。
【図11】エージェント処理部の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0019】
以下、図面を参照して、この発明の実施の形態を、車両内に設置された車内空調システムを例として説明する。尚、本発明によれば、入力情報に応じて状態を遷移させて処理を行うエージェント装置として車内空調システムを機能させることができる。また、車内空調システムの一部は、音声認識装置として機能する。
図1は、この車内空調システムの構成を示すブロック図である。図示するように、この車内空調システムは、音声入力部1と、言語解析部2と、音声合成処理部3と、音声出力部4と、入出力対象機器群5と、エージェント処理部6とより構成されている。
【0020】
音声入力部1は、音声を入力し、入力した音声からデジタル形式の音声データを生成し、この音声データを言語解析部2へと供給する。具体的には、音声入力部1は、図2に示すように、例えば、マイクロフォン11と、AF(Audio Frequency)増幅器12と、サンプルホールド回路を内蔵するA/D(Analog−to−Digital)コンバータ13などより構成されている。マイクロフォン11は音声を音声信号に変換して出力する。AF増幅器12は、マイクロフォン11からの音声信号を増幅して出力する。A/Dコンバータ13は、AF増幅器12からの増幅された音声信号をサンプリング、A/D変換することにより、ディジタル音声データを生成し、言語解析部2へと供給する。
【0021】
言語解析部2と音声合成処理部3とエージェント処理部6とは、図2に示すように、それぞれ、例えば、CPU(Central Processing Unit)等からなるプロセッサ21、31,61と、このプロセッサ21、31、61が実行するプログラムを記憶するハードディスク装置等の不揮発性メモリ22、32、62と、プロセッサのワークエリアとなる記憶領域を有するRAM(Random Access Memory)等の揮発性メモリ23、33,63とより構成されている。
なお、言語解析部2、音声合成処理部3及びエージェント処理部6の一部又は全部の機能を1つのプロセッサや1つの不揮発性メモリや1つの揮発性メモリで構成してもよい。
【0022】
言語解析部2は、音声入力部1より供給された音声データに音声認識処理を行う。
言語解析部2は、音声認識処理により、音声データが表している単語の候補と、この候補の尤度(スコア)Sとを特定する。スコアSの値が所定値を下回る単語については、候補として選択しない。音声認識の手法は任意であり、また、候補は複数特定されてよい。そして、特定した候補及び当該候補のスコアSを示すデータ(以下、単語データと呼ぶ)を生成し、エージェント処理部6へと供給する。尚、単語データは、単語情報そのものとスコアSを含むものとしても良いが、実際には単語IDとスコアSを含むものとした方が、データの取扱上有利である。
【0023】
音声合成処理部3の不揮発性メモリ32は、単語の波形を表すデータを記憶する音片データベースD1と、音素を構成するための波形を表すデータを記憶する素片データベースD2とを記憶する。
音片データベースD1は、単語の波形を表すデータを記憶する。素片データベースD2は、音素を構成するための波形を表すデータを記憶する。音声合成処理部3は、音片データベースD1及び/又は素片データベースD2に格納されているデータを用いて、エージェント処理部6より供給された文章データを読み上げる音声を表すデジタル音声データを生成する。
音声合成部3は、生成した音声データを音声出力部4に供給する。
デジタル音声データを生成する手法は任意であるが、例えば、録音編集方式や規則合成方式(Rule−based synthesis)を使用できる。なお、録音編集方式は、例えば、単語単位の音声を予めアナウンサーに読んでもらい、それらをつなぎあわせて出力する方式である。また、規則合成方式は、音韻(子音や母音)や仮名のような比較的小さな単位をつなぎあわせて出力する方式である。
【0024】
音声出力部4は、音声合成処理部3から供給されたデジタル音声データが表す音声を再生する。より詳細には、音声出力部4は、図2に示すように、D/A(Digital−to−Analog)コンバータ41、AF増幅器42及びスピーカ43を備える。
D/Aコンバータ41は、音声合成処理部3より供給されたデジタル音声データをD/A変換して、アナログ音声信号に変換する。AF増幅器42は、アナログ音声信号を増幅する。スピーカ43は、アナログ音声信号に従って振動し、アナログ音声データが表す音声を再生し、放音する。
【0025】
入出力対象機器群5は、例えば、エアコン(エアコンディショナ)51や、窓開閉制御部52などより構成されている。
【0026】
エアコン51は、自己に供給される制御信号に従って、冷房、暖房又は送風の動作を行う。また、エアコン51は、自己の動作状態を表すデータとして、例えば、自己が冷房動作中、暖房動作中、設定温度へ向けた温度調整中、送風動作中及び停止中のうちどの状態にあるかを示すデータを生成して出力する。また、エアコン51は、設定状態を表すデータとして、例えば、現在の設定温度を示すデータを生成して出力する。
【0027】
窓開閉制御部52は、モーターや、制御信号に従ってモータの回転及び停止を制御する制御回路や、モーターの回転に従って窓枠を動かすためのウインチ等から構成されており、自己に供給される制御信号に従って、窓の開閉を行う。また、窓開閉制御部52の制御回路は、窓開閉制御部52の動作状態を表すデータとして、例えば、開閉する対象の窓が開いている量を示すデータを生成して出力する。
【0028】
エージェント処理部6の不揮発性メモリ62は、単語データベースD3を記憶する。単語データベースD3は、複数の単語のデータと、複数の単語のグルーピングを示すための単語グルーピング用のフラグ1個以上とを、互いに対応付けて格納する。
【0029】
1個の単語に対応付けられている各フラグは、互いに異なる概念に対応付けられている。そして、フラグが所定の値(以下では、この値は“1”であるとする)を示す場合は、このフラグに対応付けられた単語が、このフラグに対応付けられた概念の下にグルーピングされていることを示す。一方、このフラグが他の値(例えば“0”)を示す場合は、この単語がこの概念の下にはグルーピングされていないことを示す。
【0030】
図3は、グルーピング用のフラグの具体例を模式的に示す図である。
図3の例では、単語「上がる」、「暑い」及び「開ける」に、単語グルーピング用のフラグが4ビットずつ対応付けられている。
4ビットビット群の最上位(MSB)のフラグは「温度」という概念に対応付けられている。上位から2ビット目のフラグが「エアーコンデショナの操作」という概念に対応付けられている。上位から3ビット目のフラグが「窓の開閉」という概念に対応付けられている。最下位のフラグが「故障」という概念に対応付けられている。一方、図示するように、単語「上がる」に対応付けられている4ビットのフラグ群の値が2進数“1110” であり、単語「暑い」に対応付けられているフラグ群の値が2進数“1100”であり、単語「開ける」に対応付けられているフラグ群の値が2進数“1010”である。
この場合、このフラグ群は、概念「温度」の下には単語「上がる」、「暑い」及び「開ける」がグルーピングされており、概念「エアコンの操作」の下には単語「上がる」及び「暑い」がグルーピングされており、概念「窓の開閉」の下には単語「暑い」及び「開ける」がグルーピングされており、概念「故障」の下には単語「上がる」、「暑い」又は「開ける」のいずれもグルーピングされていないことを示す。当然、ビット数を増加させれば、多くの概念との関連を示すことができる。
なお、各単語及び各概念は、処理項目データベースD4に格納されている各処理項目の「判別条件」として使用される。
【0031】
エージェント処理部6の不揮発性メモリは、更に、処理項目データベースD4及びワイヤデータベースD5を記憶している。
【0032】
処理項目データベースD4は、エージェント処理部6が行うトリガ取得処理(TGxx)、判別処理(CNxx又はQBxx)及び入出力処理(後述するEXxx)の内容を、処理項目(ポインタ)毎に記述するデータ(処理項目データ)を格納したデータベースである。なお、「xx」は識別番号である。
【0033】
処理項目データベースD4に格納される処理項目のうち、「トリガ取得処理(TGxx)」の内容を記述するデータは、これらの処理を開始させるトリガを特定するトリガデータ(トリガとして取得するデータの内容を指定するデータ)と、後述する進行方向決定用の遷移定数(その進行方向に遷移する程度を示すもので、後述する重み係数Jの算出基準となる定数)とを含む。
トリガデータは任意であり、例えば、エアーコンデショナが冷房動作中、暖房動作中、温度調整中、送風動作中及び停止中のうちどの状態にあるかを示すデータや、窓が開いている量を示すデータや、室内の温度を示すデータや、言語解析部2より供給される上述の単語データである。あるいは、トリガデータは、エージェント処理部6自身が行う処理から引き渡されるデータであってもよい。また、トリガデータ(トリガ取得処理で取得されるデータ)が単語データである場合は、当該単語データが表す単語が属すグルーピングに割り当てられている「概念」を示すデータでもよい。ただし、トリガ取得処理の内容は、後述するように、複数のトリガ取得処理が互いに同一の単語を表す単語データを取得することがないように記述されるものとする。
図4(a)にトリガ取得処理TGxxの例を示す。この例では、トリガTG01は、トリガとしての概念「暑い」を取得する(単語「暑い」にグルーピングされている単語(図3の例では、単語「温度」又は「エアコンの操作」)を識別する)処理であり、その処理に後続する処理に進む(遷移する)か否かを決定するための遷移定数kは0.8である。図4(b)には、トリガ取得処理TG01のフローチャートを示す。
トリガ取得処理TG02は単語「開けて」を取得する処理である。トリガ取得処理TG03は概念「温度」に対応するグループに属す単語を取得する(図3では、「上がる」、「暑い」、「開ける」のいずれかを取得する)処理である。TG04は、概念「エアコンの操作」に対応するグループに属す単語(図3では、「上がる」、「暑い」のいずれかを取得する)処理である。
【0034】
処理項目データベースD4に格納されている「判別処理(CNxx)」の内容を記述するデータは、判別条件と、判別結果としてとり得る結果のリストと、後述する戻り方向の遷移定数kとを、判別処理別に記述したデータを含んでいる。判別処理の内容を記述するデータは、進行方向を決定するための遷移定数kを、判別結果毎に記述したデータを含んでいる。
図5(a)に判別処理CNxxの例を示す。この例では、判別処理CN01は、「窓が開いているか否かを判別する処理」であり、開いていると判別したときに後続する処理に進むか否かを決定するための遷移定数kが0.3、開いていないと判別したときにそれに後続する処理に進むか否かを決定するため遷移定数kが0.4である。この例のフローチャートを図5(b)に示す。図5(b)に示すノードCN01.1は、処理の開始点を示す始点ノード、ノードCN01.2は、窓が閉じていると判別したときの進行方向のノードであり、その遷移定数kは0.4である。さらに、ノードCN01.3は、窓が開いていると判別したときの進行方向のノードであり、その遷移定数kは0.3である。また、判別処理CN02は、エアコン51のステータスがオン(動作中か)否かを判別する処理であり、動作中であると判別したときに後続する処理に進むか否かを決定するための遷移定数kが0.5、オフである(動作していない)と判別したときの遷移定数kが0.3である。
【0035】
「判別処理」は、判別に用いるデータを任意の取得源から取得する場合があってもよいとする。取得源としては、例えば、言語解析部2や、エージェント処理部6が実行する他の処理や、入出力対象機器群5に属する機器や、その他外部の機器などが考えられる。そしてこの場合、判別処理の内容を記述するデータは、例えば、判別に用いるデータの取得源を指定するデータを更に含んでいればよい。
【0036】
また、「判別処理」では、所定のデータを、判別に先立って所定の出力先に出力するようにしてもよい(この場合は、処理を示す記号を例えばQBxxとする)。例えば、所定の質問を表すデータを、判別に先立って音声合成処理部3に引き渡す、等が考えられる。判別処理において所定のデータを判別に先立って所定のデータを出力する場合、判別処理の内容を記述するデータは、例えば、出力するデータの内容と、このデータの出力先とを指定するデータを含む。
図6(a)に判別処理QBxxの例を示す。この例では、例えば、判別処理QB01は、「窓を開けますか?それともエアコンをつけますか?」と利用者に問い合わせ、その応答(利用者の回答)が「エアコンをつける」であったときの進行方向の遷移定数kが0.7、「窓を開ける」であったときの進行方向の遷移定数kが0.4である。この例のフローチャートを図6(b)に示す。図6(b)に示すノードQB01.1は、処理の開始点を示す始点ノード、ノードQB01.2は、問い合わせに対して、「エアコン」をつけることが指定されたことを判別したときの進行方向のノードであり、その遷移定数kは0.7である。さらに、ノードQB01.3は、窓を開けることが指定されたことを判別したときの進行方向のノードであり、その遷移定数kは0.4である。また、判別処理QB02は、「窓を閉じますか?」と利用者に問い合わせ、その応答(利用者の回答)が「閉じる」であったときの進行方向の遷移定数kが0.5、「閉じない」であったときの進行方向の遷移定数kが0.3である。
【0037】
処理項目データベースD4に格納されている「入出力処理」の内容を記述するデータは、入力あるいは出力するデータの内容を指定するデータから構成されている。入力データ及び出力データは任意の内容を有していてよい。例えば、出力データは、音声合成処理部3を介して音声出力部4に発生させる音声の読みを表すデータや外部の機器を制御する制御信号であってもよい。また、入力データは、例えば、外部の機器から供給されるデータであってもよい。
図7(a)に出力処理EXxxの例を示す。この例では、例えば、出力処理EX01は、「窓を閉める且つエアコンを動作させる」という動作であり、動作後の処理を行う進行方向の遷移定数kが0.8である。この例のフローチャートを図7(b)に示す。図7(b)に示すノードEX01.1は、処理の開始点を示す始点ノード、ノードEX01.2は、処理の終了を示すノードであり、遷移定数kは0.8である。尚、出力処理EXxxについては、遷移定数kの設定等を行わずに、処理の終了を示すノードの選択を必須の処理としてもよい。
【0038】
ワイヤデータベースD5は、複数の処理(TG、CNxx、QBxx、EXxx)間の遷移を記述するデータ(以下、この遷移定義データをワイヤと呼ぶ)の集合から構成されている。ワイヤは、例えば図8に示すような書式で記述されたデータから構成されている。ワイヤWn(W1、W2...)は図示するように、先行する処理X(From(X))から後続する処理Y(To(Y))への遷移(From(X)To(Y))について、当該先行の処理(X)と、当該後続の処理(Y)と、当該遷移に対して与えられた重み係数Jと、を指定するデータである。なお、先行の処理Xが判別処理である場合は、当該判別処理のどの判別結果からの遷移であるか、まで記述される必要がある。
また、遷移元処理Xと遷移先Yは、それぞれ、各処理のノード番号で特定される。
各ワイヤの重み係数Jは、固定値ではなく、処理の進行に応じて、適宜計算され、設定されるものである。ワイヤの重み係数Jの計算は図9を参照して後述する。
【0039】
処理項目データベースD4及びワイヤデータベースD5が全体として表しているフローを実行する。処理項目データベースD4及びワイヤデータベースD5は、例えば、図3〜図7の例に基づくと、全体として図9に示すようなフローを記述することができる。
【0040】
図9に示すフローにおいては、エージェント処理部6は、トリガ処理ステップTG01では、「暑い」という単語を示す単語データを言語解析部2より供給されるのを待機する。「暑い」という単語を示す単語データが供給されるとこれを取得し、入力された音声が「暑い」であったと判断されると、判別処理ステップCN01に引き渡す(ワイヤW1)。ここで、「暑い」という単語を示す単語データのスコアSと、前述の重み係数Jから、音声認識の判別結果を向上させることができるが、これについては後述する。
【0041】
エージェント処理部6は、判別処理ステップCN01では、窓が開いているか否かを示す情報を窓開閉制御部52より取得し、開いていると判別すると入出力処理ステップEX01に処理を移し(ワイヤW2)、入出力処理EX01では、窓開閉制御部52に、窓を閉めることを指示する制御信号を出力し、エアコン51に、冷房動作を開始することを指示する制御信号を出力する。この結果、窓開閉制御部52は窓を閉め、エアコン51は冷房動作を開始する。
【0042】
一方、判別処理ステップCN01で、窓が閉じていると判別すると、質問を含む判別処理QB01に処理を移す(ワイヤW3)。判別処理ステップQB01でエージェント処理部6は、まず、「窓を開けますか。それともエアコンをつけますか。」という文章を表すデータを音声合成処理部3に供給する。音声合成処理部3は、音声出力部4を介して、こ の文章を読み上げる音声を再生させる。
【0043】
判別処理ステップQB01でエージェント処理部6は、次に、言語解析部2から、単語「窓」又は単語「エアコン」を表す単語データが供給されるのを待機し、該当する単語データが供給されると、この単語データが単語「窓」又は単語「エアコン」のどちらを表すかを判別する。そして、単語「窓」を表すと判別すると入出力処理ステップEX03に処理を移し(ワイヤW5)、単語「エアコン」を表すと判別すると、入出力処理ステップEX02に処理を移す(ワイヤW6)。
【0044】
エージェント処理部6は、入出力処理ステップEX02では、エアコン51に、冷房を開始することを指示する制御信号を出力する。一方、エージェント処理部6は、入出力処理ステップEX03では、窓開閉制御部52に、換気用の窓を開けることを指示する制御信号を出力する。
【0045】
一方、エージェント処理部6は、「窓を開けて」という単語を示す単語データを言語解析部2より供給されるのを待機し(トリガ処理ステップTG02)、「窓を開けて」という単語を示す単語データが供給され、入力された音声が「窓を開けて」という単語であったと判別すると、入出力処理ステップEX03へと処理を移す(ワイヤW4)。
【0046】
エージェント処理部6は、例えば言語解析部2が単語データを複数供給した場合などにおいては、複数の判別処理を並行して行う。またこの場合、エージェント処理部6は同一の単語を入力の対象とする処理(例えば、トリガ取得処理や、判別処理におけるデータの入力)が複数があって、該当する単語を表す単語データが言語解析部2より供給された場合は、これらの処理すべてを並行して行う。このとき、入力された単語が何であったかの最終的な判別は、前述のように単語データの示すスコアSと重み係数Jを用いて行うことができるが、これについては後述する。
【0047】
次に、各ワイヤの重み係数Jを計算する方法を説明する。
複数の処理がワイヤWにより連結されている場合には、注目するワイヤWの重み係数Jは、現在処理中の処理を起点として、注目しているワイヤWに至るまでの遷移の経路上の進行方向決定用の遷移定数kを順次乗算することにより求められる。
理解を容易にするため、図10(a)にフローを示す処理を想定する。
この例では、先行する第1の処理(この例では、トリガ取得処理TGxx)を実行して後続の第2の処理(この例では、判別処理CNxx)に遷移するようにワイヤW51により定義されており、また、第2の処理を実行して後続の第3の処理(この例では、QBxx)に遷移するようにワイヤW52によって定義され、さらに、第3の処理を実行して後続の処理に遷移するようにワイヤW53によって定義されている。
なお、第1〜第3の処理のいずれについても、各進行方向決定用の遷移定数kはいずれも0.5であるものとする。
この場合、ワイヤは、例えば、図10(b)に示すように、定義される。
【0048】
例えば、エージェント処理部6の処理(又は制御)が第1の処理に到達しているとき、エージェント処理部6は、第1の処理を起点として、進行方向の遷移定数kを遷移経路に沿って順次乗算することにより、ワイヤW51〜W55(図示していないワイヤが存在する場合にはそれらを含むすべて)のそれぞれの重み係数Jを計算し、計算結果をワイヤW51〜W55に対応つけてワイヤデータベースDB5に書き込む。
【0049】
具体的には、第1の処理に到達したとき、例えば、ワイヤW51の重み係数Jは、第1の処理の第2の処理に繋がるノードに割り当てられている遷移定数kの値すなわち0.5となる。第2の処理のワイヤW52の重み係数Jは、第1の処理のワイヤW51に係る遷移定数k=0.5に第2の処理のワイヤW52に繋がるノードの遷移定数k=0.5を乗じた結果すなわち0.25となる。
ワイヤW53の重み係数Jは、第1の処理のワイヤW51に係る遷移定数k=0.5に第2の処理のワイヤW52に係る遷移定数k=0.5を乗じた結果に更に第3の処理のワイヤW53に係る遷移定数k=0.5を乗じた結果、すなわち0.125となる。
【0050】
このようにして、処理中の処理を基点としたときのそれぞれのワイヤの重み係数Jが計算される。よって、現在の状態が遷移すると、現在の処理を基点にしてその都度各ワイヤの重み係数Jが計算されることになる。
【0051】
具体的には、現在の状態が第2の処理に遷移すると、ワイヤW54の重み係数Jは、第2の処理のワイヤW52に係る遷移定数kに等しい値0.5となり、ワイヤW55の重み係数Jは第2の処理のワイヤW52に係る遷移定数k=0.5と第3の処理のワイヤW55に係る遷移定数k=0.5との積すなわち0.25となる。このとき、エージェント処理部6は、逆方向、つまり第1の処理に戻る方向に係るワイヤW51の重み係数Jも計算しデータベースに書き込む。第2の処理に遷移した場合では、ワイヤW51に係る戻り方向の遷移定数kを0.1とすると、0.1がそのままワイヤW51の重み係数Jとなる。第3の処理に遷移した場合は更に、ワイヤW52に係る戻り方向の遷移定数k=0.1がそのままワイヤW52の重み係数Jとなる。そして、第3の処理に遷移した状態におけるワイヤW51の重み係数Jは、第3の処理に遷移した状態におけるワイヤW52の重み係数J(=遷移定数k)0.1に、第2処理の戻り方向の遷移定数k=0.1を乗じた値すなわち0.01となる。
各ワイヤWnの重み係数Jの変化を図10(c)に示す。
【0052】
重み係数Jの計算は、関連するフローの処理のみではなく、全てのフローの全てのワイヤについて実行され、計算された重み係数Jが各ワイヤに設定される。ここで現在の処理に関連のないワイヤについては、予め定められた低い計数値を割り当てるようにすればよい。しかし、特にトリガ取得処理を先行の処理とするワイヤについては、遷移定数kをある程度高く設定するようにする。こうすることによって、直前までなされていた会話と著しく異なる内容の会話にもジャンプすることが可能になる。
尚、各ワイヤには条件がそれぞれ設定されている。具体的には、W01には単語「暑い」が条件として設定され、W05には単語「窓」が設定される。そして、言語解析部2から単語データが供給されたとき、その単語データが単語「暑い」を示すものである場合には、当該単語データが示すスコアSをW01に対して設定する。また、言語解析部2から供給された単語データが単語「窓」を示すものである場合には、当該単語データが示すスコアSをW05に対して設定する。
更に、各ワイヤに設定される条件は、単一の単語が設定される場合に限られない。例えば、同一の意味を表す複数の単語が条件として設定されるようにしてもよい。この条件の設定は、これらの単語とワイヤの関係が記憶されていれば足り、スコア算出の対象となる単語は前述の単語データベースに記憶される。
例えば、音声認識を行う場合に、入力された音声について、言語解析部2は単語データベースに登録されている全ての単語に対してスコアSの計算を行い、単語データを生成して、エージェント処理部6に単語データを出力する。次に、エージェント処理部6は、入力された各単語データが、いずれのワイヤに関連付けられているかを判別し、単語データが示すスコアSを関連する各ワイヤに設定する。このようにすれば、複数のワイヤに対して、同じ単語が条件として設定されている場合でも、入力された音声信号と単語とのスコアSの計算は一度で足りることになる。そして、得られた各単語のスコアSが、それぞれ関連付けられているワイヤに対して設定される。尚、1つのワイヤに対して複数のスコアSが得られる場合が生じることになるが、この場合には、例えば最も値が高いスコアSを選択するようにすればよい。
これによって、例えば、「イエス」「はい」「そうだね」等、同一の意味を示す単語データがそれぞれ1つのワイヤに対して設定されていれば、ユーザが「イエス」「はい」「そうだね」のいずれの音声で指示を出しても、音声認識のスコアSとして適切な結果を得ることができる。
また、判別処理によっては、入出力対象機器群5からの情報が入力情報として得られる場合がある。この場合、入出力対象機器群5に係る各機器の状態を示すデータが、状態データベースとして管理され(上述の「単語データベース」に相当)、入力情報がどの機器のどの状態を示すものかを状態データベースを参照して決定され、これとスコアSとが状態データとしてエージェント処理部6に出力される。尚、音声認識の場合と異なり、対応する状態が状態データベースにあれば、スコアSは必ず100%になる。そして、エージェント処理部6は、状態データが示す状態に関連するワイヤを判別し、各ワイヤに対してスコアSを設定する。
【0053】
次に、このように構成されたシステム全体の動作を、図11を参照して説明する。
音声入力部1と言語解析部2とは、独自に動作して、音声を取り込み、解析し、単語データをエージェント処理部6に提供する。
そして、エージェント処理部6は、判別条件に係る(1個又は複数個の)単語データが言語解析部2より供給されると、以下の処理を行う。
供給された単語を認識(識別)し(ステップS11)、それが、単語データベースDB4に登録されている単語に相当するか否かを判別する(ステップS12)。登録されていなければ(ステップS12,No)、単語入力処理を終了する。
一方、登録されていれば(ステップS12,Yes)、その単語又はその単語の属すグループの「概念」が条件となっている処理に関し、単語の尤度Sとワイヤの重み係数Jの積S・Jを計算する(ステップS13)。
例えば、図10(a)に示すフローを実行している場合において、処理ポインタPPが第1の処理を指示しているとする。この場合の、各ワイヤの重み係数Jは図10(c)に図す通りである。
この状態で、スコアSが80%の単語「暑い」と、スコアSが50%の単語「窓」を示す単語データが入力されたと仮定する。
図10(a)と(b)に示す例では、第1の処理では、単語「暑い」が判別条件に関連し、第3の処理では、単語「窓」が判別条件に関連する。
図10(c−1)示すように、単語「暑い」を示す単語データを入力する処理を先行の処理とするワイヤW51の重み係数Jが0.5、単語「窓」を示す単語データを入力する処理を先行の処理とするワイヤW53の重み係数Jが0.125である。この場合、ワイヤW51及びW53について求められる尤度Sと重み係数Jの積S・Jは、数式1及び2に示すとおりとなる。
【0054】
(数1) ワイヤW51についての積S・J:「暑い」のスコアS(=80%)×ワイヤW51の重み係数J(=0.5)=40
【0055】
(数2) ワイヤW53についての積S・J:「窓」のスコアS(=50%)×ワイヤW53の重み係数J(=0.125)=6.25
【0056】
エージェント処理部6は、スコアSと重み係数Jとの積S・Jを求める上述の処理を、フローが有するすべてのワイヤについて行う。
続いて、エージェント制御部6は、計算された積S・Jがもっとも大きいワイヤを選択する(図11のステップS14)。エージェント制御部6は、選択したワイヤに後続する処理に制御を進める(ステップS15)。例えばワイヤW51について求めた積S・Jが最も高い値を示した場合、入力された単語データは単語「暑い」を示すものであったと認識して、ワイヤW51が後続の処理としている第2の処理に遷移する。通常、現在の実行中の処理を起点するとワイヤの重み係数Jが比較的大きい。このため、一般的には、次の処理に移るが、従前と全く異なる単語で尤度Sの高いものが入力された場合には、その単語に対応する処理が開始されることもある。
【0057】
エージェント処理部6は、処理が遷移すると、遷移後の状態に基づいて、各ワイヤの重み係数Jを再計算する(ステップS16)。
以後は、その処理の内容に従って処理を進める(ステップS17)。この例では、第2の処理を実行する。すなわち、エージェント処理部6は、窓開閉制御部52から窓の開閉の情報を取り込み、取り込んだ情報に基づいてワイヤW52についての尤度Sと重み係数Jの積S・Jを求め、ワイヤW54についての尤度Sと重み係数Jの積S・Jを求めて、いずれかのワイヤを選択して、選択したワイヤに後続する処理を実行する。
【0058】
なお、窓開閉制御部52からの窓の開閉を示す信号は、開の尤度Sが100%又は0%、閉の尤度Sが0%又は100%でもよく、また、開度に応じて変化させるようにしてもよい。そして、処理の過程で、入出力処理EXxxがあり、エージェント処理部6がその処理を実行してにより音声データを出力すれば、それが音声として放音される。
また、処理の過程で、入出力処理EX01のように、エアコンや窓開閉制御部52への制御を行う処理を実行すると、その処理内容に従って、エアコン51や窓開閉制御部52への制御を行う。
【0059】
なお、図8,図9では、「単語」に基づく判別処理を主に説明したが、図11にも示したように概念に基づく判別処理でも同様になされる。また、単語或いは概念に基づくトリガ取得処理からのワイヤも判断の対象となる。トリガ取得処理からの遷移に対しては、ある程度高い遷移定数kを設定しておくとよい。具体的には、例えば図8のワイヤ群、すなわち、図9のフローにおいて、「窓を開けて」という単語を示す単語データを取得するトリガ取得処理TG02からの遷移に対しては、例えば遷移定数k=0.8を与えておく。そうすると、例えばエージェント処理部6の処理がトリガ取得処理TG01に係属している場合において、ユーザーが「窓を開けて」と発音し、例えば単語「窓を開けて」に対するスコアSが90%である単語データが得られれば、このスコアSと、「ユーザが「窓を開けて」と言ったか否かの判断」に係るワイヤW5の重み係数J(=遷移定数k)との積S・Jは、90%×0.8すなわち72となる。この値が他のワイヤで得られないような大きな値であれば、入力された音声は「窓を開けて」であったと認識され、エージェント処理部6の処理が入出力処理EX03にジャンプする可能性が高くなる。一方で、他のワイヤの重み係数Jを極めて低く設定しておけば、これら他のワイヤにより定義されている遷移が起こる可能性は極めて低くなり、結果として、ある程度想定される会話の流れに沿って認識率を向上させて制御処理を行うことができる。
【0060】
この実施の形態では、戻り方向への遷移も起こり得る。しかし、現実的には会話を戻すことは好ましくないことが多い。そこで、戻り方向の遷移定数kは、進行方向の遷移定数kに比べて低い値に設定するようにすればよい。そうすると、入力された音声から高いスコアSの単語データが仮に得られても、戻り方向の遷移定数kが重み係数Jとして書き込まれたワイヤについて求めた積S・Jは低い値となるため、戻り方向への遷移の可能性を低く抑えることができる。
また、エージェント処理部6は、求めた積S・Jの値が所定の条件に合致しないような処理(たとえば、積S・Jの値が所定値に達しないような処理)は、遷移を実行する対象から除外するよう取り扱ってもよい。
【0061】
なお、例えば図8に示しているように、ワイヤは、処理項目から処理項目へという形で遷移を定義する。そして、ワイヤを図8に示すような形態で記述してワイヤデータベースD5に格納することにより、各処理項目同士の関係を、あたかもコンピュータのマクロ処理のように定義することが可能になる。これによって、各処理項目を容易に接続することができる。
【0062】
また、トリガとなる処理項目は、実際には接続されるワイヤに係る認識対象単語等(他の入力対象機器群からの入力の場合もあり得る)のスコアSの判定になるので、ワイヤにおいてトリガ処理項目はワイヤの開始点として定義されず、ワイヤそのものが遷移元として定義されることになる。
【0063】
更に、上述のように各処理項目の接続関係をワイヤによって定義することによって、簡単にワイヤを追加することができる。例えば、「暑い」という音声入力の後に、ユーザーが休憩することを意図して「ファミリーレストランを探して」という音声を入力する機会が多い場合、ファミリーレストランの検索処理項目に対して自動でワイヤを追加する。そうすると、ワイヤが自動で追加された後には、ファミリーレストラン検索処理項目に接続されたワイヤの重み係数Jをある程度大きくすることで、当該入力「ファミリーレストランを探して」に適切に対応することができるようになる。(ただしこの場合、エージェント処理部6は、例えばファミリーレストランの位置を示す情報を含んだ地図データ等を記憶し、あるいは外部の地図データ等にアクセスするものとする。)
このワイヤの自動追加は、ある処理項目からある処理項目へのジャンプの回数を計数し、これが所定回数に達したときに自動で行うようにすればよい。
【0064】
以上説明したこの車内空調システ厶は、処理の内容を示すデータやワイヤが適切に記述されれば、制御する対象である機器や加える制御の内容を完全に特定することを必ずしも必要とせずに、ユーザが発した言語に応答し、この言語からユーザの欲求を推測し、この欲求を満たすためにどの機器にどのような制御を加えればよいかを適切に判断して、判断結果に従った制御を機器に加えることができるようになる。
【0065】
なお、この車内空調システムの構成は上述のものに限られない。
例えば、入出力対象機器群5に属する機器は、必ずしも直接にユーザの欲求を満たす結果をもたらす機器である必要はなく、例えば、外部の表示装置等を制御してユーザに特定の行動をとるよう促すメッセージを出力する機器(例えば、液晶ディスプレイ等の表示装置)からなっていてもよい。
【0066】
また、単語データベースは、必ずしも単語を示すデータのみならず、複数の単語からなる語句を示すデータを単語データベースの要素として記憶するようにしてもよいし、単語の一部あるいは音素を構成するためのデータを単語データベースの要素として記憶するようにしてもよい。また、単語等は必ずしも特定の概念の下にグルーピングされている必要はなく、グルーピングを行う場合も、グルーピングを行うために用いられるデータは、必ずしもフラグの集合の形をとっていなくてもよい。
【0067】
また、エージェント処理部6は、ワイヤに対応する遷移定数kを、過去に当該ワイヤが表す遷移を実行した数などに基づき所定の基準に従って変化させ、重み係数Jが変化後の遷移定数kに基づいて計算された値となるようにワイヤを書き換えてもよい。
具体的には、例えば、ワイヤデータベースに、それぞれのワイヤについて、当該ワイヤが表す遷移が実行された回数を記憶しておく。そしてエージェント処理部6は、当該遷移が新たに行われる毎に、この回数の値を書き換えることにより、この回数の値を1ずつインクリメントし、それぞれのワイヤに対応する遷移定数kを、例えば、当該ワイヤについて記憶された回数に比例した値と書き換える。
【0068】
尚、上述の実施例では、ワイヤに設定される条件は、それぞれのワイヤに対して設定されるとして説明したが、これには限られない。例えば、判別処理の中に各ワイヤの条件を記述するようにしてもよい。この場合、各条件がいずれのワイヤに対応するものかを予め特定しておく。
【0069】
また、エージェント処理部6は、判別処理や入出力処理において出力するデータを、これらの処理に引き渡されたデータや、これらの処理に伴って入力したデータや、その他任意の条件に従って変化させるようにしてもよい。
【0070】
また、この車内空調システムは、エージェント処理部6の制御に従って画像を出力するための表示装置(例えば、液晶ディスプレイ等)を備えていてもよく、エージェント処理部6は、入出力処理や判別処理において、処理毎に所定の画像を表示させるようこの表示装置を制御してもよい。
【0071】
また、エージェント処理部6は、1個の入力処理や1個の判別処理において、連続して発話される等した複数の単語データを一括して取得するようにしてもよい。また、エージェント処理部6は、一括して取得した複数の単語データがどの概念の下で同一のグループ内にグルーピングされているかを特定し、特定した概念が所定の概念に合致する場合にのみ、取得した単語データの一部または全部を処理に用いるものとしてもよい。
【0072】
また、エージェント処理部6は、トリガ取得処理、判別処理、入出力処理等の各種処理とワイヤとが全体として形成するフローを分担して行う、互いに接続された複数のデータ処理装置(例えば、コンピュータ等)から構成されていてもよい。この場合、エージェント処理部6を構成するそれぞれのデータ処理装置は、エージェント処理部6が実行し得るフロー全体のうち、自己が実行する可能性がある部分を表すデータを、処理項目データベースD4やワイヤデータベースD5の要素として記憶すれば十分である。そして、それぞれのデータ処理装置が記憶するデータが、当該データ処理装置が実行する部分の処理をマクロ定義するようなデータとなっていれば、複数のデータ処理装置に分散処理を行わせることも容易である。
【0073】
また、この車内空調システムは、音声入力部1や言語解析部2あるいは音声出力部4も複数備えていてよい。
また、音声入力部1は、たとえば、音声を表すデータが記録された記録媒体(たとえば、フロッピー(登録商標)ディスクや、CD(Compact Disc)や、MO(Magneto−Optical Disk)など)から波形信号を読み出して言語解析部2に供給する記録媒体ドライブ装置(たとえば、フロッピー(登録商標)ディスクドライブや、CD−ROMドライブや、MOドライブなど)を備えていてもよい。
【0074】
以上、この発明の実施の形態を説明したが、この発明にかかる機器制御装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。
例えば、入出力対象機器群5に接続されたパーソナルコンピュータに上述の音声入力部1、言語解析部2、音声合成処理部3、音声出力部4及びエージェント処理部6の動作を実行させるためのプログラムを格納した記録媒体から該プログラムをインストールすることにより、上述の処理を実行する車内空調システムを構成することができる。そして、このプログラ厶を実行するパーソナルコンピュータが、図1の車内空調システムの動作に相当する処理として、例えば、図9に示すフローを実行するものとする。
【0075】
なお、パーソナルコンピュータに上述の車内空調システムの機能を行わせるプログラムは、例えば、通信回線の掲示板(BBS)にアップロードし、これを通信回線を介して配信してもよく、また、このプログラムを表す信号により搬送波を変調し、得られた変調波を伝送し、この変調波を受信した装置が変調波を復調してこのプログラムを復元するようにしてもよい。そして、このプログラムを起動し、OSの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【0076】
なお、OSが処理の一部を分担する場合、あるいは、OSが本願発明の1つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
【産業上の利用可能性】
【0077】
本発明は、人間が言語の形で発する指示に適切に応答して機器を制御できる種々の機器制御装置等に利用可能である。
【符号の説明】
【0078】
1 音声入力部
2 言語解析部
3 音声合成処理部
4 音声出力部
5 入出力対象機器群
51 エアコン
52 窓開閉制御部
6 エージェント処理部
【技術分野】
【0001】
この発明は、機器制御装置、音声認識装置、エージェント装置、機器制御方法及びプログラムに関する。
【背景技術】
【0002】
近年、音声認識の技術を用いて音声を認識し、認識結果に応答して電気機器などを制御する手法が用いられている。この手法は、具体的には、入力した音声が表す単語を識別し、識別された単語が所定のキーワードに合致するか否かを判別して、判別結果に基づいて外部の機器を制御するものである(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平8−339288号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、人間が言語の形で発する指示を完全に認識するのは困難である。このため、上述の手法では、人間が言語の形で発する指示に適切に応答することができない場合があった。
【0005】
この発明は上記実状に鑑みてなされたものであり、人間が言語の形で発する指示に適切に応答して機器を制御できる機器制御装置、音声認識装置、エージェント装置、機器制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、この発明の第1の観点にかかる機器制御装置は、
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする。
【0007】
前記処理項目データ記憶手段は、
処理項目を適宜追加可能なように構成されてもよい。
【0008】
前記遷移定義データは、入力情報に対応する条件をそれぞれ有してもよい。
【0009】
前記認識情報は、入力情報と前記遷移定義データの条件との一致状態を示す尤度を有してもよく、
前記遷移定義データの条件に対応する前記尤度が前記遷移定義データに設定されてもよい。
【0010】
前記入力情報は音声信号であり、
前記遷移定義データの条件は、音声認識を行う対象単語であり、
前記認識情報は、音声信号と前記遷移定義データの対象単語との一致状態を示す尤度を有し、
前記遷移定義データの対象単語に対応する前記尤度が前記遷移定義データに設定され、
前記尤度に応じて一の前記遷移定義データを選択し、選択された一の遷移定義データによって示される処理項目に状態を遷移させてもよい。
【0011】
前記遷移定義データは、
入力情報に対応する条件と、
前記条件に対応する重み係数と、を有してもよい。
【0012】
前記重み係数の算出基準である遷移定数は、前記遷移定義データに対応して定数として設定され、
状態が遷移している一の処理項目に連なる他の処理項目に係る遷移定義データの重み係数は、一の処理項目に係る遷移定義データの前記定数から、他の処理項目に係る遷移定義データまでの定数が累積されて算出されてもよい。
【0013】
この発明の第2の観点にかかる音声認識装置は、
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする。
【0014】
この発明の第3の観点にかかるエージェント装置は、
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする。
【0015】
この発明の第4の観点にかかる機器制御方法は、
入力情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶ステップと、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートを生成するステップと、
を有することを特徴とする。
【0016】
この発明の第5の観点にかかるプログラムは、
コンピュータを、
入力情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶部、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートを生成する生成部、
として機能させることを特徴とする。
【発明の効果】
【0017】
この発明によれば、人間が言語の形で発する指示に適切に応答して機器を制御できる機器制御装置、音声認識装置、エージェント装置、機器制御方法及びプログラムが実現される。
【図面の簡単な説明】
【0018】
【図1】この発明の実施の形態に係る車内空調システムを示す図である。
【図2】この実施の形態に係る車内空調システムのより詳細な構成図である。
【図3】グルーピング用のフラグの具体例を模式的に示す図である。
【図4】トリガ取得処理を説明するための図である。
【図5】判別処理を説明するための図である。
【図6】問い合わせ付きの判別処理を説明するための図である。
【図7】入出力処理を説明するための図である。
【図8】ワイヤを示す図である。
【図9】処理項目データベース及びワイヤデータベースが全体として表しているフローを示す図である。
【図10】重み係数の設定を説明するための図である。
【図11】エージェント処理部の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0019】
以下、図面を参照して、この発明の実施の形態を、車両内に設置された車内空調システムを例として説明する。尚、本発明によれば、入力情報に応じて状態を遷移させて処理を行うエージェント装置として車内空調システムを機能させることができる。また、車内空調システムの一部は、音声認識装置として機能する。
図1は、この車内空調システムの構成を示すブロック図である。図示するように、この車内空調システムは、音声入力部1と、言語解析部2と、音声合成処理部3と、音声出力部4と、入出力対象機器群5と、エージェント処理部6とより構成されている。
【0020】
音声入力部1は、音声を入力し、入力した音声からデジタル形式の音声データを生成し、この音声データを言語解析部2へと供給する。具体的には、音声入力部1は、図2に示すように、例えば、マイクロフォン11と、AF(Audio Frequency)増幅器12と、サンプルホールド回路を内蔵するA/D(Analog−to−Digital)コンバータ13などより構成されている。マイクロフォン11は音声を音声信号に変換して出力する。AF増幅器12は、マイクロフォン11からの音声信号を増幅して出力する。A/Dコンバータ13は、AF増幅器12からの増幅された音声信号をサンプリング、A/D変換することにより、ディジタル音声データを生成し、言語解析部2へと供給する。
【0021】
言語解析部2と音声合成処理部3とエージェント処理部6とは、図2に示すように、それぞれ、例えば、CPU(Central Processing Unit)等からなるプロセッサ21、31,61と、このプロセッサ21、31、61が実行するプログラムを記憶するハードディスク装置等の不揮発性メモリ22、32、62と、プロセッサのワークエリアとなる記憶領域を有するRAM(Random Access Memory)等の揮発性メモリ23、33,63とより構成されている。
なお、言語解析部2、音声合成処理部3及びエージェント処理部6の一部又は全部の機能を1つのプロセッサや1つの不揮発性メモリや1つの揮発性メモリで構成してもよい。
【0022】
言語解析部2は、音声入力部1より供給された音声データに音声認識処理を行う。
言語解析部2は、音声認識処理により、音声データが表している単語の候補と、この候補の尤度(スコア)Sとを特定する。スコアSの値が所定値を下回る単語については、候補として選択しない。音声認識の手法は任意であり、また、候補は複数特定されてよい。そして、特定した候補及び当該候補のスコアSを示すデータ(以下、単語データと呼ぶ)を生成し、エージェント処理部6へと供給する。尚、単語データは、単語情報そのものとスコアSを含むものとしても良いが、実際には単語IDとスコアSを含むものとした方が、データの取扱上有利である。
【0023】
音声合成処理部3の不揮発性メモリ32は、単語の波形を表すデータを記憶する音片データベースD1と、音素を構成するための波形を表すデータを記憶する素片データベースD2とを記憶する。
音片データベースD1は、単語の波形を表すデータを記憶する。素片データベースD2は、音素を構成するための波形を表すデータを記憶する。音声合成処理部3は、音片データベースD1及び/又は素片データベースD2に格納されているデータを用いて、エージェント処理部6より供給された文章データを読み上げる音声を表すデジタル音声データを生成する。
音声合成部3は、生成した音声データを音声出力部4に供給する。
デジタル音声データを生成する手法は任意であるが、例えば、録音編集方式や規則合成方式(Rule−based synthesis)を使用できる。なお、録音編集方式は、例えば、単語単位の音声を予めアナウンサーに読んでもらい、それらをつなぎあわせて出力する方式である。また、規則合成方式は、音韻(子音や母音)や仮名のような比較的小さな単位をつなぎあわせて出力する方式である。
【0024】
音声出力部4は、音声合成処理部3から供給されたデジタル音声データが表す音声を再生する。より詳細には、音声出力部4は、図2に示すように、D/A(Digital−to−Analog)コンバータ41、AF増幅器42及びスピーカ43を備える。
D/Aコンバータ41は、音声合成処理部3より供給されたデジタル音声データをD/A変換して、アナログ音声信号に変換する。AF増幅器42は、アナログ音声信号を増幅する。スピーカ43は、アナログ音声信号に従って振動し、アナログ音声データが表す音声を再生し、放音する。
【0025】
入出力対象機器群5は、例えば、エアコン(エアコンディショナ)51や、窓開閉制御部52などより構成されている。
【0026】
エアコン51は、自己に供給される制御信号に従って、冷房、暖房又は送風の動作を行う。また、エアコン51は、自己の動作状態を表すデータとして、例えば、自己が冷房動作中、暖房動作中、設定温度へ向けた温度調整中、送風動作中及び停止中のうちどの状態にあるかを示すデータを生成して出力する。また、エアコン51は、設定状態を表すデータとして、例えば、現在の設定温度を示すデータを生成して出力する。
【0027】
窓開閉制御部52は、モーターや、制御信号に従ってモータの回転及び停止を制御する制御回路や、モーターの回転に従って窓枠を動かすためのウインチ等から構成されており、自己に供給される制御信号に従って、窓の開閉を行う。また、窓開閉制御部52の制御回路は、窓開閉制御部52の動作状態を表すデータとして、例えば、開閉する対象の窓が開いている量を示すデータを生成して出力する。
【0028】
エージェント処理部6の不揮発性メモリ62は、単語データベースD3を記憶する。単語データベースD3は、複数の単語のデータと、複数の単語のグルーピングを示すための単語グルーピング用のフラグ1個以上とを、互いに対応付けて格納する。
【0029】
1個の単語に対応付けられている各フラグは、互いに異なる概念に対応付けられている。そして、フラグが所定の値(以下では、この値は“1”であるとする)を示す場合は、このフラグに対応付けられた単語が、このフラグに対応付けられた概念の下にグルーピングされていることを示す。一方、このフラグが他の値(例えば“0”)を示す場合は、この単語がこの概念の下にはグルーピングされていないことを示す。
【0030】
図3は、グルーピング用のフラグの具体例を模式的に示す図である。
図3の例では、単語「上がる」、「暑い」及び「開ける」に、単語グルーピング用のフラグが4ビットずつ対応付けられている。
4ビットビット群の最上位(MSB)のフラグは「温度」という概念に対応付けられている。上位から2ビット目のフラグが「エアーコンデショナの操作」という概念に対応付けられている。上位から3ビット目のフラグが「窓の開閉」という概念に対応付けられている。最下位のフラグが「故障」という概念に対応付けられている。一方、図示するように、単語「上がる」に対応付けられている4ビットのフラグ群の値が2進数“1110” であり、単語「暑い」に対応付けられているフラグ群の値が2進数“1100”であり、単語「開ける」に対応付けられているフラグ群の値が2進数“1010”である。
この場合、このフラグ群は、概念「温度」の下には単語「上がる」、「暑い」及び「開ける」がグルーピングされており、概念「エアコンの操作」の下には単語「上がる」及び「暑い」がグルーピングされており、概念「窓の開閉」の下には単語「暑い」及び「開ける」がグルーピングされており、概念「故障」の下には単語「上がる」、「暑い」又は「開ける」のいずれもグルーピングされていないことを示す。当然、ビット数を増加させれば、多くの概念との関連を示すことができる。
なお、各単語及び各概念は、処理項目データベースD4に格納されている各処理項目の「判別条件」として使用される。
【0031】
エージェント処理部6の不揮発性メモリは、更に、処理項目データベースD4及びワイヤデータベースD5を記憶している。
【0032】
処理項目データベースD4は、エージェント処理部6が行うトリガ取得処理(TGxx)、判別処理(CNxx又はQBxx)及び入出力処理(後述するEXxx)の内容を、処理項目(ポインタ)毎に記述するデータ(処理項目データ)を格納したデータベースである。なお、「xx」は識別番号である。
【0033】
処理項目データベースD4に格納される処理項目のうち、「トリガ取得処理(TGxx)」の内容を記述するデータは、これらの処理を開始させるトリガを特定するトリガデータ(トリガとして取得するデータの内容を指定するデータ)と、後述する進行方向決定用の遷移定数(その進行方向に遷移する程度を示すもので、後述する重み係数Jの算出基準となる定数)とを含む。
トリガデータは任意であり、例えば、エアーコンデショナが冷房動作中、暖房動作中、温度調整中、送風動作中及び停止中のうちどの状態にあるかを示すデータや、窓が開いている量を示すデータや、室内の温度を示すデータや、言語解析部2より供給される上述の単語データである。あるいは、トリガデータは、エージェント処理部6自身が行う処理から引き渡されるデータであってもよい。また、トリガデータ(トリガ取得処理で取得されるデータ)が単語データである場合は、当該単語データが表す単語が属すグルーピングに割り当てられている「概念」を示すデータでもよい。ただし、トリガ取得処理の内容は、後述するように、複数のトリガ取得処理が互いに同一の単語を表す単語データを取得することがないように記述されるものとする。
図4(a)にトリガ取得処理TGxxの例を示す。この例では、トリガTG01は、トリガとしての概念「暑い」を取得する(単語「暑い」にグルーピングされている単語(図3の例では、単語「温度」又は「エアコンの操作」)を識別する)処理であり、その処理に後続する処理に進む(遷移する)か否かを決定するための遷移定数kは0.8である。図4(b)には、トリガ取得処理TG01のフローチャートを示す。
トリガ取得処理TG02は単語「開けて」を取得する処理である。トリガ取得処理TG03は概念「温度」に対応するグループに属す単語を取得する(図3では、「上がる」、「暑い」、「開ける」のいずれかを取得する)処理である。TG04は、概念「エアコンの操作」に対応するグループに属す単語(図3では、「上がる」、「暑い」のいずれかを取得する)処理である。
【0034】
処理項目データベースD4に格納されている「判別処理(CNxx)」の内容を記述するデータは、判別条件と、判別結果としてとり得る結果のリストと、後述する戻り方向の遷移定数kとを、判別処理別に記述したデータを含んでいる。判別処理の内容を記述するデータは、進行方向を決定するための遷移定数kを、判別結果毎に記述したデータを含んでいる。
図5(a)に判別処理CNxxの例を示す。この例では、判別処理CN01は、「窓が開いているか否かを判別する処理」であり、開いていると判別したときに後続する処理に進むか否かを決定するための遷移定数kが0.3、開いていないと判別したときにそれに後続する処理に進むか否かを決定するため遷移定数kが0.4である。この例のフローチャートを図5(b)に示す。図5(b)に示すノードCN01.1は、処理の開始点を示す始点ノード、ノードCN01.2は、窓が閉じていると判別したときの進行方向のノードであり、その遷移定数kは0.4である。さらに、ノードCN01.3は、窓が開いていると判別したときの進行方向のノードであり、その遷移定数kは0.3である。また、判別処理CN02は、エアコン51のステータスがオン(動作中か)否かを判別する処理であり、動作中であると判別したときに後続する処理に進むか否かを決定するための遷移定数kが0.5、オフである(動作していない)と判別したときの遷移定数kが0.3である。
【0035】
「判別処理」は、判別に用いるデータを任意の取得源から取得する場合があってもよいとする。取得源としては、例えば、言語解析部2や、エージェント処理部6が実行する他の処理や、入出力対象機器群5に属する機器や、その他外部の機器などが考えられる。そしてこの場合、判別処理の内容を記述するデータは、例えば、判別に用いるデータの取得源を指定するデータを更に含んでいればよい。
【0036】
また、「判別処理」では、所定のデータを、判別に先立って所定の出力先に出力するようにしてもよい(この場合は、処理を示す記号を例えばQBxxとする)。例えば、所定の質問を表すデータを、判別に先立って音声合成処理部3に引き渡す、等が考えられる。判別処理において所定のデータを判別に先立って所定のデータを出力する場合、判別処理の内容を記述するデータは、例えば、出力するデータの内容と、このデータの出力先とを指定するデータを含む。
図6(a)に判別処理QBxxの例を示す。この例では、例えば、判別処理QB01は、「窓を開けますか?それともエアコンをつけますか?」と利用者に問い合わせ、その応答(利用者の回答)が「エアコンをつける」であったときの進行方向の遷移定数kが0.7、「窓を開ける」であったときの進行方向の遷移定数kが0.4である。この例のフローチャートを図6(b)に示す。図6(b)に示すノードQB01.1は、処理の開始点を示す始点ノード、ノードQB01.2は、問い合わせに対して、「エアコン」をつけることが指定されたことを判別したときの進行方向のノードであり、その遷移定数kは0.7である。さらに、ノードQB01.3は、窓を開けることが指定されたことを判別したときの進行方向のノードであり、その遷移定数kは0.4である。また、判別処理QB02は、「窓を閉じますか?」と利用者に問い合わせ、その応答(利用者の回答)が「閉じる」であったときの進行方向の遷移定数kが0.5、「閉じない」であったときの進行方向の遷移定数kが0.3である。
【0037】
処理項目データベースD4に格納されている「入出力処理」の内容を記述するデータは、入力あるいは出力するデータの内容を指定するデータから構成されている。入力データ及び出力データは任意の内容を有していてよい。例えば、出力データは、音声合成処理部3を介して音声出力部4に発生させる音声の読みを表すデータや外部の機器を制御する制御信号であってもよい。また、入力データは、例えば、外部の機器から供給されるデータであってもよい。
図7(a)に出力処理EXxxの例を示す。この例では、例えば、出力処理EX01は、「窓を閉める且つエアコンを動作させる」という動作であり、動作後の処理を行う進行方向の遷移定数kが0.8である。この例のフローチャートを図7(b)に示す。図7(b)に示すノードEX01.1は、処理の開始点を示す始点ノード、ノードEX01.2は、処理の終了を示すノードであり、遷移定数kは0.8である。尚、出力処理EXxxについては、遷移定数kの設定等を行わずに、処理の終了を示すノードの選択を必須の処理としてもよい。
【0038】
ワイヤデータベースD5は、複数の処理(TG、CNxx、QBxx、EXxx)間の遷移を記述するデータ(以下、この遷移定義データをワイヤと呼ぶ)の集合から構成されている。ワイヤは、例えば図8に示すような書式で記述されたデータから構成されている。ワイヤWn(W1、W2...)は図示するように、先行する処理X(From(X))から後続する処理Y(To(Y))への遷移(From(X)To(Y))について、当該先行の処理(X)と、当該後続の処理(Y)と、当該遷移に対して与えられた重み係数Jと、を指定するデータである。なお、先行の処理Xが判別処理である場合は、当該判別処理のどの判別結果からの遷移であるか、まで記述される必要がある。
また、遷移元処理Xと遷移先Yは、それぞれ、各処理のノード番号で特定される。
各ワイヤの重み係数Jは、固定値ではなく、処理の進行に応じて、適宜計算され、設定されるものである。ワイヤの重み係数Jの計算は図9を参照して後述する。
【0039】
処理項目データベースD4及びワイヤデータベースD5が全体として表しているフローを実行する。処理項目データベースD4及びワイヤデータベースD5は、例えば、図3〜図7の例に基づくと、全体として図9に示すようなフローを記述することができる。
【0040】
図9に示すフローにおいては、エージェント処理部6は、トリガ処理ステップTG01では、「暑い」という単語を示す単語データを言語解析部2より供給されるのを待機する。「暑い」という単語を示す単語データが供給されるとこれを取得し、入力された音声が「暑い」であったと判断されると、判別処理ステップCN01に引き渡す(ワイヤW1)。ここで、「暑い」という単語を示す単語データのスコアSと、前述の重み係数Jから、音声認識の判別結果を向上させることができるが、これについては後述する。
【0041】
エージェント処理部6は、判別処理ステップCN01では、窓が開いているか否かを示す情報を窓開閉制御部52より取得し、開いていると判別すると入出力処理ステップEX01に処理を移し(ワイヤW2)、入出力処理EX01では、窓開閉制御部52に、窓を閉めることを指示する制御信号を出力し、エアコン51に、冷房動作を開始することを指示する制御信号を出力する。この結果、窓開閉制御部52は窓を閉め、エアコン51は冷房動作を開始する。
【0042】
一方、判別処理ステップCN01で、窓が閉じていると判別すると、質問を含む判別処理QB01に処理を移す(ワイヤW3)。判別処理ステップQB01でエージェント処理部6は、まず、「窓を開けますか。それともエアコンをつけますか。」という文章を表すデータを音声合成処理部3に供給する。音声合成処理部3は、音声出力部4を介して、こ の文章を読み上げる音声を再生させる。
【0043】
判別処理ステップQB01でエージェント処理部6は、次に、言語解析部2から、単語「窓」又は単語「エアコン」を表す単語データが供給されるのを待機し、該当する単語データが供給されると、この単語データが単語「窓」又は単語「エアコン」のどちらを表すかを判別する。そして、単語「窓」を表すと判別すると入出力処理ステップEX03に処理を移し(ワイヤW5)、単語「エアコン」を表すと判別すると、入出力処理ステップEX02に処理を移す(ワイヤW6)。
【0044】
エージェント処理部6は、入出力処理ステップEX02では、エアコン51に、冷房を開始することを指示する制御信号を出力する。一方、エージェント処理部6は、入出力処理ステップEX03では、窓開閉制御部52に、換気用の窓を開けることを指示する制御信号を出力する。
【0045】
一方、エージェント処理部6は、「窓を開けて」という単語を示す単語データを言語解析部2より供給されるのを待機し(トリガ処理ステップTG02)、「窓を開けて」という単語を示す単語データが供給され、入力された音声が「窓を開けて」という単語であったと判別すると、入出力処理ステップEX03へと処理を移す(ワイヤW4)。
【0046】
エージェント処理部6は、例えば言語解析部2が単語データを複数供給した場合などにおいては、複数の判別処理を並行して行う。またこの場合、エージェント処理部6は同一の単語を入力の対象とする処理(例えば、トリガ取得処理や、判別処理におけるデータの入力)が複数があって、該当する単語を表す単語データが言語解析部2より供給された場合は、これらの処理すべてを並行して行う。このとき、入力された単語が何であったかの最終的な判別は、前述のように単語データの示すスコアSと重み係数Jを用いて行うことができるが、これについては後述する。
【0047】
次に、各ワイヤの重み係数Jを計算する方法を説明する。
複数の処理がワイヤWにより連結されている場合には、注目するワイヤWの重み係数Jは、現在処理中の処理を起点として、注目しているワイヤWに至るまでの遷移の経路上の進行方向決定用の遷移定数kを順次乗算することにより求められる。
理解を容易にするため、図10(a)にフローを示す処理を想定する。
この例では、先行する第1の処理(この例では、トリガ取得処理TGxx)を実行して後続の第2の処理(この例では、判別処理CNxx)に遷移するようにワイヤW51により定義されており、また、第2の処理を実行して後続の第3の処理(この例では、QBxx)に遷移するようにワイヤW52によって定義され、さらに、第3の処理を実行して後続の処理に遷移するようにワイヤW53によって定義されている。
なお、第1〜第3の処理のいずれについても、各進行方向決定用の遷移定数kはいずれも0.5であるものとする。
この場合、ワイヤは、例えば、図10(b)に示すように、定義される。
【0048】
例えば、エージェント処理部6の処理(又は制御)が第1の処理に到達しているとき、エージェント処理部6は、第1の処理を起点として、進行方向の遷移定数kを遷移経路に沿って順次乗算することにより、ワイヤW51〜W55(図示していないワイヤが存在する場合にはそれらを含むすべて)のそれぞれの重み係数Jを計算し、計算結果をワイヤW51〜W55に対応つけてワイヤデータベースDB5に書き込む。
【0049】
具体的には、第1の処理に到達したとき、例えば、ワイヤW51の重み係数Jは、第1の処理の第2の処理に繋がるノードに割り当てられている遷移定数kの値すなわち0.5となる。第2の処理のワイヤW52の重み係数Jは、第1の処理のワイヤW51に係る遷移定数k=0.5に第2の処理のワイヤW52に繋がるノードの遷移定数k=0.5を乗じた結果すなわち0.25となる。
ワイヤW53の重み係数Jは、第1の処理のワイヤW51に係る遷移定数k=0.5に第2の処理のワイヤW52に係る遷移定数k=0.5を乗じた結果に更に第3の処理のワイヤW53に係る遷移定数k=0.5を乗じた結果、すなわち0.125となる。
【0050】
このようにして、処理中の処理を基点としたときのそれぞれのワイヤの重み係数Jが計算される。よって、現在の状態が遷移すると、現在の処理を基点にしてその都度各ワイヤの重み係数Jが計算されることになる。
【0051】
具体的には、現在の状態が第2の処理に遷移すると、ワイヤW54の重み係数Jは、第2の処理のワイヤW52に係る遷移定数kに等しい値0.5となり、ワイヤW55の重み係数Jは第2の処理のワイヤW52に係る遷移定数k=0.5と第3の処理のワイヤW55に係る遷移定数k=0.5との積すなわち0.25となる。このとき、エージェント処理部6は、逆方向、つまり第1の処理に戻る方向に係るワイヤW51の重み係数Jも計算しデータベースに書き込む。第2の処理に遷移した場合では、ワイヤW51に係る戻り方向の遷移定数kを0.1とすると、0.1がそのままワイヤW51の重み係数Jとなる。第3の処理に遷移した場合は更に、ワイヤW52に係る戻り方向の遷移定数k=0.1がそのままワイヤW52の重み係数Jとなる。そして、第3の処理に遷移した状態におけるワイヤW51の重み係数Jは、第3の処理に遷移した状態におけるワイヤW52の重み係数J(=遷移定数k)0.1に、第2処理の戻り方向の遷移定数k=0.1を乗じた値すなわち0.01となる。
各ワイヤWnの重み係数Jの変化を図10(c)に示す。
【0052】
重み係数Jの計算は、関連するフローの処理のみではなく、全てのフローの全てのワイヤについて実行され、計算された重み係数Jが各ワイヤに設定される。ここで現在の処理に関連のないワイヤについては、予め定められた低い計数値を割り当てるようにすればよい。しかし、特にトリガ取得処理を先行の処理とするワイヤについては、遷移定数kをある程度高く設定するようにする。こうすることによって、直前までなされていた会話と著しく異なる内容の会話にもジャンプすることが可能になる。
尚、各ワイヤには条件がそれぞれ設定されている。具体的には、W01には単語「暑い」が条件として設定され、W05には単語「窓」が設定される。そして、言語解析部2から単語データが供給されたとき、その単語データが単語「暑い」を示すものである場合には、当該単語データが示すスコアSをW01に対して設定する。また、言語解析部2から供給された単語データが単語「窓」を示すものである場合には、当該単語データが示すスコアSをW05に対して設定する。
更に、各ワイヤに設定される条件は、単一の単語が設定される場合に限られない。例えば、同一の意味を表す複数の単語が条件として設定されるようにしてもよい。この条件の設定は、これらの単語とワイヤの関係が記憶されていれば足り、スコア算出の対象となる単語は前述の単語データベースに記憶される。
例えば、音声認識を行う場合に、入力された音声について、言語解析部2は単語データベースに登録されている全ての単語に対してスコアSの計算を行い、単語データを生成して、エージェント処理部6に単語データを出力する。次に、エージェント処理部6は、入力された各単語データが、いずれのワイヤに関連付けられているかを判別し、単語データが示すスコアSを関連する各ワイヤに設定する。このようにすれば、複数のワイヤに対して、同じ単語が条件として設定されている場合でも、入力された音声信号と単語とのスコアSの計算は一度で足りることになる。そして、得られた各単語のスコアSが、それぞれ関連付けられているワイヤに対して設定される。尚、1つのワイヤに対して複数のスコアSが得られる場合が生じることになるが、この場合には、例えば最も値が高いスコアSを選択するようにすればよい。
これによって、例えば、「イエス」「はい」「そうだね」等、同一の意味を示す単語データがそれぞれ1つのワイヤに対して設定されていれば、ユーザが「イエス」「はい」「そうだね」のいずれの音声で指示を出しても、音声認識のスコアSとして適切な結果を得ることができる。
また、判別処理によっては、入出力対象機器群5からの情報が入力情報として得られる場合がある。この場合、入出力対象機器群5に係る各機器の状態を示すデータが、状態データベースとして管理され(上述の「単語データベース」に相当)、入力情報がどの機器のどの状態を示すものかを状態データベースを参照して決定され、これとスコアSとが状態データとしてエージェント処理部6に出力される。尚、音声認識の場合と異なり、対応する状態が状態データベースにあれば、スコアSは必ず100%になる。そして、エージェント処理部6は、状態データが示す状態に関連するワイヤを判別し、各ワイヤに対してスコアSを設定する。
【0053】
次に、このように構成されたシステム全体の動作を、図11を参照して説明する。
音声入力部1と言語解析部2とは、独自に動作して、音声を取り込み、解析し、単語データをエージェント処理部6に提供する。
そして、エージェント処理部6は、判別条件に係る(1個又は複数個の)単語データが言語解析部2より供給されると、以下の処理を行う。
供給された単語を認識(識別)し(ステップS11)、それが、単語データベースDB4に登録されている単語に相当するか否かを判別する(ステップS12)。登録されていなければ(ステップS12,No)、単語入力処理を終了する。
一方、登録されていれば(ステップS12,Yes)、その単語又はその単語の属すグループの「概念」が条件となっている処理に関し、単語の尤度Sとワイヤの重み係数Jの積S・Jを計算する(ステップS13)。
例えば、図10(a)に示すフローを実行している場合において、処理ポインタPPが第1の処理を指示しているとする。この場合の、各ワイヤの重み係数Jは図10(c)に図す通りである。
この状態で、スコアSが80%の単語「暑い」と、スコアSが50%の単語「窓」を示す単語データが入力されたと仮定する。
図10(a)と(b)に示す例では、第1の処理では、単語「暑い」が判別条件に関連し、第3の処理では、単語「窓」が判別条件に関連する。
図10(c−1)示すように、単語「暑い」を示す単語データを入力する処理を先行の処理とするワイヤW51の重み係数Jが0.5、単語「窓」を示す単語データを入力する処理を先行の処理とするワイヤW53の重み係数Jが0.125である。この場合、ワイヤW51及びW53について求められる尤度Sと重み係数Jの積S・Jは、数式1及び2に示すとおりとなる。
【0054】
(数1) ワイヤW51についての積S・J:「暑い」のスコアS(=80%)×ワイヤW51の重み係数J(=0.5)=40
【0055】
(数2) ワイヤW53についての積S・J:「窓」のスコアS(=50%)×ワイヤW53の重み係数J(=0.125)=6.25
【0056】
エージェント処理部6は、スコアSと重み係数Jとの積S・Jを求める上述の処理を、フローが有するすべてのワイヤについて行う。
続いて、エージェント制御部6は、計算された積S・Jがもっとも大きいワイヤを選択する(図11のステップS14)。エージェント制御部6は、選択したワイヤに後続する処理に制御を進める(ステップS15)。例えばワイヤW51について求めた積S・Jが最も高い値を示した場合、入力された単語データは単語「暑い」を示すものであったと認識して、ワイヤW51が後続の処理としている第2の処理に遷移する。通常、現在の実行中の処理を起点するとワイヤの重み係数Jが比較的大きい。このため、一般的には、次の処理に移るが、従前と全く異なる単語で尤度Sの高いものが入力された場合には、その単語に対応する処理が開始されることもある。
【0057】
エージェント処理部6は、処理が遷移すると、遷移後の状態に基づいて、各ワイヤの重み係数Jを再計算する(ステップS16)。
以後は、その処理の内容に従って処理を進める(ステップS17)。この例では、第2の処理を実行する。すなわち、エージェント処理部6は、窓開閉制御部52から窓の開閉の情報を取り込み、取り込んだ情報に基づいてワイヤW52についての尤度Sと重み係数Jの積S・Jを求め、ワイヤW54についての尤度Sと重み係数Jの積S・Jを求めて、いずれかのワイヤを選択して、選択したワイヤに後続する処理を実行する。
【0058】
なお、窓開閉制御部52からの窓の開閉を示す信号は、開の尤度Sが100%又は0%、閉の尤度Sが0%又は100%でもよく、また、開度に応じて変化させるようにしてもよい。そして、処理の過程で、入出力処理EXxxがあり、エージェント処理部6がその処理を実行してにより音声データを出力すれば、それが音声として放音される。
また、処理の過程で、入出力処理EX01のように、エアコンや窓開閉制御部52への制御を行う処理を実行すると、その処理内容に従って、エアコン51や窓開閉制御部52への制御を行う。
【0059】
なお、図8,図9では、「単語」に基づく判別処理を主に説明したが、図11にも示したように概念に基づく判別処理でも同様になされる。また、単語或いは概念に基づくトリガ取得処理からのワイヤも判断の対象となる。トリガ取得処理からの遷移に対しては、ある程度高い遷移定数kを設定しておくとよい。具体的には、例えば図8のワイヤ群、すなわち、図9のフローにおいて、「窓を開けて」という単語を示す単語データを取得するトリガ取得処理TG02からの遷移に対しては、例えば遷移定数k=0.8を与えておく。そうすると、例えばエージェント処理部6の処理がトリガ取得処理TG01に係属している場合において、ユーザーが「窓を開けて」と発音し、例えば単語「窓を開けて」に対するスコアSが90%である単語データが得られれば、このスコアSと、「ユーザが「窓を開けて」と言ったか否かの判断」に係るワイヤW5の重み係数J(=遷移定数k)との積S・Jは、90%×0.8すなわち72となる。この値が他のワイヤで得られないような大きな値であれば、入力された音声は「窓を開けて」であったと認識され、エージェント処理部6の処理が入出力処理EX03にジャンプする可能性が高くなる。一方で、他のワイヤの重み係数Jを極めて低く設定しておけば、これら他のワイヤにより定義されている遷移が起こる可能性は極めて低くなり、結果として、ある程度想定される会話の流れに沿って認識率を向上させて制御処理を行うことができる。
【0060】
この実施の形態では、戻り方向への遷移も起こり得る。しかし、現実的には会話を戻すことは好ましくないことが多い。そこで、戻り方向の遷移定数kは、進行方向の遷移定数kに比べて低い値に設定するようにすればよい。そうすると、入力された音声から高いスコアSの単語データが仮に得られても、戻り方向の遷移定数kが重み係数Jとして書き込まれたワイヤについて求めた積S・Jは低い値となるため、戻り方向への遷移の可能性を低く抑えることができる。
また、エージェント処理部6は、求めた積S・Jの値が所定の条件に合致しないような処理(たとえば、積S・Jの値が所定値に達しないような処理)は、遷移を実行する対象から除外するよう取り扱ってもよい。
【0061】
なお、例えば図8に示しているように、ワイヤは、処理項目から処理項目へという形で遷移を定義する。そして、ワイヤを図8に示すような形態で記述してワイヤデータベースD5に格納することにより、各処理項目同士の関係を、あたかもコンピュータのマクロ処理のように定義することが可能になる。これによって、各処理項目を容易に接続することができる。
【0062】
また、トリガとなる処理項目は、実際には接続されるワイヤに係る認識対象単語等(他の入力対象機器群からの入力の場合もあり得る)のスコアSの判定になるので、ワイヤにおいてトリガ処理項目はワイヤの開始点として定義されず、ワイヤそのものが遷移元として定義されることになる。
【0063】
更に、上述のように各処理項目の接続関係をワイヤによって定義することによって、簡単にワイヤを追加することができる。例えば、「暑い」という音声入力の後に、ユーザーが休憩することを意図して「ファミリーレストランを探して」という音声を入力する機会が多い場合、ファミリーレストランの検索処理項目に対して自動でワイヤを追加する。そうすると、ワイヤが自動で追加された後には、ファミリーレストラン検索処理項目に接続されたワイヤの重み係数Jをある程度大きくすることで、当該入力「ファミリーレストランを探して」に適切に対応することができるようになる。(ただしこの場合、エージェント処理部6は、例えばファミリーレストランの位置を示す情報を含んだ地図データ等を記憶し、あるいは外部の地図データ等にアクセスするものとする。)
このワイヤの自動追加は、ある処理項目からある処理項目へのジャンプの回数を計数し、これが所定回数に達したときに自動で行うようにすればよい。
【0064】
以上説明したこの車内空調システ厶は、処理の内容を示すデータやワイヤが適切に記述されれば、制御する対象である機器や加える制御の内容を完全に特定することを必ずしも必要とせずに、ユーザが発した言語に応答し、この言語からユーザの欲求を推測し、この欲求を満たすためにどの機器にどのような制御を加えればよいかを適切に判断して、判断結果に従った制御を機器に加えることができるようになる。
【0065】
なお、この車内空調システムの構成は上述のものに限られない。
例えば、入出力対象機器群5に属する機器は、必ずしも直接にユーザの欲求を満たす結果をもたらす機器である必要はなく、例えば、外部の表示装置等を制御してユーザに特定の行動をとるよう促すメッセージを出力する機器(例えば、液晶ディスプレイ等の表示装置)からなっていてもよい。
【0066】
また、単語データベースは、必ずしも単語を示すデータのみならず、複数の単語からなる語句を示すデータを単語データベースの要素として記憶するようにしてもよいし、単語の一部あるいは音素を構成するためのデータを単語データベースの要素として記憶するようにしてもよい。また、単語等は必ずしも特定の概念の下にグルーピングされている必要はなく、グルーピングを行う場合も、グルーピングを行うために用いられるデータは、必ずしもフラグの集合の形をとっていなくてもよい。
【0067】
また、エージェント処理部6は、ワイヤに対応する遷移定数kを、過去に当該ワイヤが表す遷移を実行した数などに基づき所定の基準に従って変化させ、重み係数Jが変化後の遷移定数kに基づいて計算された値となるようにワイヤを書き換えてもよい。
具体的には、例えば、ワイヤデータベースに、それぞれのワイヤについて、当該ワイヤが表す遷移が実行された回数を記憶しておく。そしてエージェント処理部6は、当該遷移が新たに行われる毎に、この回数の値を書き換えることにより、この回数の値を1ずつインクリメントし、それぞれのワイヤに対応する遷移定数kを、例えば、当該ワイヤについて記憶された回数に比例した値と書き換える。
【0068】
尚、上述の実施例では、ワイヤに設定される条件は、それぞれのワイヤに対して設定されるとして説明したが、これには限られない。例えば、判別処理の中に各ワイヤの条件を記述するようにしてもよい。この場合、各条件がいずれのワイヤに対応するものかを予め特定しておく。
【0069】
また、エージェント処理部6は、判別処理や入出力処理において出力するデータを、これらの処理に引き渡されたデータや、これらの処理に伴って入力したデータや、その他任意の条件に従って変化させるようにしてもよい。
【0070】
また、この車内空調システムは、エージェント処理部6の制御に従って画像を出力するための表示装置(例えば、液晶ディスプレイ等)を備えていてもよく、エージェント処理部6は、入出力処理や判別処理において、処理毎に所定の画像を表示させるようこの表示装置を制御してもよい。
【0071】
また、エージェント処理部6は、1個の入力処理や1個の判別処理において、連続して発話される等した複数の単語データを一括して取得するようにしてもよい。また、エージェント処理部6は、一括して取得した複数の単語データがどの概念の下で同一のグループ内にグルーピングされているかを特定し、特定した概念が所定の概念に合致する場合にのみ、取得した単語データの一部または全部を処理に用いるものとしてもよい。
【0072】
また、エージェント処理部6は、トリガ取得処理、判別処理、入出力処理等の各種処理とワイヤとが全体として形成するフローを分担して行う、互いに接続された複数のデータ処理装置(例えば、コンピュータ等)から構成されていてもよい。この場合、エージェント処理部6を構成するそれぞれのデータ処理装置は、エージェント処理部6が実行し得るフロー全体のうち、自己が実行する可能性がある部分を表すデータを、処理項目データベースD4やワイヤデータベースD5の要素として記憶すれば十分である。そして、それぞれのデータ処理装置が記憶するデータが、当該データ処理装置が実行する部分の処理をマクロ定義するようなデータとなっていれば、複数のデータ処理装置に分散処理を行わせることも容易である。
【0073】
また、この車内空調システムは、音声入力部1や言語解析部2あるいは音声出力部4も複数備えていてよい。
また、音声入力部1は、たとえば、音声を表すデータが記録された記録媒体(たとえば、フロッピー(登録商標)ディスクや、CD(Compact Disc)や、MO(Magneto−Optical Disk)など)から波形信号を読み出して言語解析部2に供給する記録媒体ドライブ装置(たとえば、フロッピー(登録商標)ディスクドライブや、CD−ROMドライブや、MOドライブなど)を備えていてもよい。
【0074】
以上、この発明の実施の形態を説明したが、この発明にかかる機器制御装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。
例えば、入出力対象機器群5に接続されたパーソナルコンピュータに上述の音声入力部1、言語解析部2、音声合成処理部3、音声出力部4及びエージェント処理部6の動作を実行させるためのプログラムを格納した記録媒体から該プログラムをインストールすることにより、上述の処理を実行する車内空調システムを構成することができる。そして、このプログラ厶を実行するパーソナルコンピュータが、図1の車内空調システムの動作に相当する処理として、例えば、図9に示すフローを実行するものとする。
【0075】
なお、パーソナルコンピュータに上述の車内空調システムの機能を行わせるプログラムは、例えば、通信回線の掲示板(BBS)にアップロードし、これを通信回線を介して配信してもよく、また、このプログラムを表す信号により搬送波を変調し、得られた変調波を伝送し、この変調波を受信した装置が変調波を復調してこのプログラムを復元するようにしてもよい。そして、このプログラムを起動し、OSの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【0076】
なお、OSが処理の一部を分担する場合、あるいは、OSが本願発明の1つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
【産業上の利用可能性】
【0077】
本発明は、人間が言語の形で発する指示に適切に応答して機器を制御できる種々の機器制御装置等に利用可能である。
【符号の説明】
【0078】
1 音声入力部
2 言語解析部
3 音声合成処理部
4 音声出力部
5 入出力対象機器群
51 エアコン
52 窓開閉制御部
6 エージェント処理部
【特許請求の範囲】
【請求項1】
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする機器制御装置。
【請求項2】
前記処理項目データ記憶手段は、
処理項目を適宜追加可能なように構成されてなる、
ことを特徴とする請求項1に記載の機器制御装置。
【請求項3】
前記遷移定義データは、入力情報に対応する条件をそれぞれ有する、
ことを特徴とする請求項1に記載の機器制御装置。
【請求項4】
前記認識情報は、入力情報と前記遷移定義データの条件との一致状態を示す尤度を有し、
前記遷移定義データの条件に対応する前記尤度が前記遷移定義データに設定される、
ことを特徴とする請求項3に記載の機器制御装置。
【請求項5】
前記入力情報は音声信号であり、
前記遷移定義データの条件は、音声認識を行う対象単語であり、
前記認識情報は、音声信号と前記遷移定義データの対象単語との一致状態を示す尤度を有し、
前記遷移定義データの対象単語に対応する前記尤度が前記遷移定義データに設定され、
前記尤度に応じて一の前記遷移定義データを選択し、選択された一の遷移定義データによって示される処理項目に状態を遷移させる、
ことを特徴とする請求項3に記載の機器制御装置。
【請求項6】
前記遷移定義データは、
入力情報に対応する条件と、
前記条件に対応する重み係数と、を有する、
ことを特徴とする請求項1に記載の機器制御装置。
【請求項7】
前記重み係数の算出基準である遷移定数は、前記遷移定義データに対応して定数として設定され、
状態が遷移している一の処理項目に連なる他の処理項目に係る遷移定義データの重み係数は、一の処理項目に係る遷移定義データの前記定数から、他の処理項目に係る遷移定義データまでの定数が累積されて算出される、
ことを特徴とする請求項6に記載の機器制御装置。
【請求項8】
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする音声認識装置。
【請求項9】
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とするエージェント装置。
【請求項10】
入力情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶ステップと、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートを生成するステップと、
を有することを特徴とする機器制御方法。
【請求項11】
コンピュータを、
入力情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶部、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートを生成する生成部、
として機能させることを特徴とするプログラム。
【請求項1】
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする機器制御装置。
【請求項2】
前記処理項目データ記憶手段は、
処理項目を適宜追加可能なように構成されてなる、
ことを特徴とする請求項1に記載の機器制御装置。
【請求項3】
前記遷移定義データは、入力情報に対応する条件をそれぞれ有する、
ことを特徴とする請求項1に記載の機器制御装置。
【請求項4】
前記認識情報は、入力情報と前記遷移定義データの条件との一致状態を示す尤度を有し、
前記遷移定義データの条件に対応する前記尤度が前記遷移定義データに設定される、
ことを特徴とする請求項3に記載の機器制御装置。
【請求項5】
前記入力情報は音声信号であり、
前記遷移定義データの条件は、音声認識を行う対象単語であり、
前記認識情報は、音声信号と前記遷移定義データの対象単語との一致状態を示す尤度を有し、
前記遷移定義データの対象単語に対応する前記尤度が前記遷移定義データに設定され、
前記尤度に応じて一の前記遷移定義データを選択し、選択された一の遷移定義データによって示される処理項目に状態を遷移させる、
ことを特徴とする請求項3に記載の機器制御装置。
【請求項6】
前記遷移定義データは、
入力情報に対応する条件と、
前記条件に対応する重み係数と、を有する、
ことを特徴とする請求項1に記載の機器制御装置。
【請求項7】
前記重み係数の算出基準である遷移定数は、前記遷移定義データに対応して定数として設定され、
状態が遷移している一の処理項目に連なる他の処理項目に係る遷移定義データの重み係数は、一の処理項目に係る遷移定義データの前記定数から、他の処理項目に係る遷移定義データまでの定数が累積されて算出される、
ことを特徴とする請求項6に記載の機器制御装置。
【請求項8】
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とする音声認識装置。
【請求項9】
入力情報を認識することによって得られた認識情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶手段を備え、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、
必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートが生成されてなる、
ことを特徴とするエージェント装置。
【請求項10】
入力情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶ステップと、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートを生成するステップと、
を有することを特徴とする機器制御方法。
【請求項11】
コンピュータを、
入力情報に対応する処理を実行する処理項目を複数記憶する処理項目データ記憶部、
遷移定義データによって複数の処理項目のうちの一の処理項目から他の処理項目への遷移を定義し、必要とされる処理項目の連なりに応じて、前記遷移定義データを追加若しくは削除することによって、処理項目のフローチャートを生成する生成部、
として機能させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2009−288815(P2009−288815A)
【公開日】平成21年12月10日(2009.12.10)
【国際特許分類】
【出願番号】特願2009−209008(P2009−209008)
【出願日】平成21年9月10日(2009.9.10)
【分割の表示】特願2005−516404(P2005−516404)の分割
【原出願日】平成16年12月6日(2004.12.6)
【出願人】(000003595)株式会社ケンウッド (1,981)
【Fターム(参考)】
【公開日】平成21年12月10日(2009.12.10)
【国際特許分類】
【出願日】平成21年9月10日(2009.9.10)
【分割の表示】特願2005−516404(P2005−516404)の分割
【原出願日】平成16年12月6日(2004.12.6)
【出願人】(000003595)株式会社ケンウッド (1,981)
【Fターム(参考)】
[ Back to top ]