〔実施形態1〕
以下、本発明の一実施形態について、図1〜図7に基づいて説明する。まず、本発明の概要を図2に基づいて説明する。図2は、本発明の概要を示す図である。なお、ここでは、本発明の一態様をロボット1に適用した例を説明する。本実施形態に係るロボット1は、ユーザが入力(発話)した音声に応じてアプリケーションを起動し、該音声に応じた処理を実行する装置である。なお、ロボット1は、ユーザの指示に応じて可動部位を駆動させる機能や、通話機能、画面表示機能、音声出力機能、写真撮影機能などのスマートフォンとしての機能を備えるものであってもよい。なお、本発明は入力された音声が示す指示に応じた処理を実行する装置であれば適用可能であり、本発明の適用例はロボット1に限定されない。本発明の一態様は例えば、パーソナルコンピュータ、スマートフォン、タブレット、携帯電話などに好適である。
図2に示すように、ロボット1は、ユーザが入力した音声を受け付ける。図示の例では、ユーザはスケジュール帳アプリケーションに予定を追加するために、「明日、アベノハルカスに行くと覚えて」と発話している。ユーザが発話した音声を受け付けると、ロボット1は、該音声の波形データから音素列を生成する。なお、波形データからの音素列の生成には既存の技術を使用することができる。図示の例では、音素列として「asitaabenotarukasuniikutoomoete」と、ユーザが発話した音声とは一部異なる音素列が生成されたとする(図2の「(1)音素列生成」の下線部分)。ただし、図示の生成された音素列は一例であり、この例に限定されない。例えば、ユーザが発話した音声のとおり、「asitaabenoharukasuniikutooboete」という音素列が生成されてもよい。なお以降、上記の音素列を入力音素列と称する場合がある。
次に、ロボット1は、入力音素列の特定を行う。具体的には、図示のように、ロボット1はまず入力音素列において述部に相当する部分の音素列を特定する。図示の例では、入力音素列の「omoete」の部分を「oboete」であると特定している。続いて、ロボット1は、図示のように、述部以外の単語に相当する部分の音素列を特定する。図示の例では、入力音素列の「asitaabenotarukasuniikuto」の部分を「asitaabenoharukasuniikuto」であると特定している。なおこのとき、ロボット1は、特定した述部の音素列(図示の例では「oboete」)で、述部以外の単語に相当する部分を特定するための辞書の絞り込みを行う。
最後に、ロボット1は、特定した音素列に応じた処理を実行する。図示の例では、スケジュール帳アプリケーションを起動し、翌日(明日)の予定として「アベノハルカスに行く」を登録している。なお、ロボット1が画面表示機能を備えている場合、図示のように、表示部に予定を登録したことを示す画面50を表示してもよい。なお、図2を参照して説明した、上記の処理の詳細については後述する。
以上のように、本発明の一態様に係るロボット1は、述部の音素列によって、入力音素列の述部以外の部分(上記の例では「asitaabenotarukasuniikuto」の部分)に含まれる単語を絞り込むことができる。これにより、ユーザが入力した音声に応じて、特定の処理を実行するという、音声入力を特定の目的に使用するケースにおいて、認識精度を上げることができる。また、音素列を特定するためにかかる時間を短縮することができる。
次に、ロボット1の要部構成について図1に基づいて説明する。図1は、ロボット1の要部構成の一例を示すブロック図である。ロボット1は、音声を受け付けるデバイス(例えばマイク)である音声入力部11、ロボット1の機能を統括して制御する制御部12、および、ロボット1が使用する各種データを記憶する記憶部13を備える。なお、ロボット1がスマートフォンとしての機能を有する場合、ロボット1は該機能を実現する部材(例えば、通話機能を実現する通話部、音声出力機能を実現する音声出力部など)を備える。また、ロボット1は可動部位を駆動させる機能を実現する部材を備えていてもよい。ただし、これらの部材は本発明との関連が薄いため、図示および説明を省略する。
制御部12は、音声入力制御部21、音素列生成部22、文末検知部23、一致率特定部24、音素列特定部25、および処理実行部26を含む。
音声入力制御部21は、音声入力部11を制御する。具体的には、音声入力制御部21は、音声入力部11から取得した音声の波形データを音素列生成部22に出力する。また、音声入力制御部21は、文末検知部23からの指示に従って波形データを文末検知部23に出力する。
音素列生成部22は、音声の波形データから音素列(入力音素列)を生成する。音素列生成部22は、音声入力制御部21から取得した波形データから音素を特定し、該音素を記憶部13に記憶していく処理を繰り返す。これにより、記憶部13には音素列データ31(例えば、図2で示した「asitaabenotarukasuniikutoomoete」)が記憶される。音素列生成部22は、音素を生成できなかった場合(換言すれば、音声入力制御部21から、音素を生成できるような波形データを取得できなかった場合)、文末検知部23に音声入力が終了したか否かを判定するよう指示する。
文末検知部23は、音声入力が終了したか否か、すなわち、記憶部13に記憶された音素列データ31の最後の音素が文末であるか否かを検知する。具体的には、文末検知部23は、音素列生成部22からの指示に従って、音声入力制御部21から波形データを取得する。そして、該波形データを参照し、音声の入力が終了したか否かを判定する。該判定について具体的に説明すると、文末検知部23は、音声が入力されていないことを示す波形データを所定時間取得した場合、音声の入力が終了したと判定する。一方、所定時間中に音声が入力されたことを示す波形データを取得した場合、音声の入力が終了していないと判定する。なお、「音声が入力されていないことを示す波形データ」とは、波の高さが所定の閾値に満たない波形データ(換言すれば、音素が生成できない波形データ)である。文末検知部23は、判定結果を音素列生成部22に出力する。また、音声の入力が終了したと判定した場合、最後の音素を文末と特定し、音素列の特定指示を一致率特定部24に出力する。
一致率特定部24は、音素列データ31に含まれる部分である1以上の部分音素列について、辞書に登録された音素列との一致率を特定する。一致率特定部24は、述部特定部241(第1の特定部)と述部以外特定部242(第2の特定部)とを含む。一致率特定部24は、文末検知部23からの指示を受けると、記憶部13から音素列データ31を読み出す。
述部特定部241は、読み出した音素列データ31から、該音素列データ31の一部であり、述部に相当する部分音素列(第1部分音素列)と、辞書に登録された述部を示す音素列(述部音素列)とを比較する。そして、述部特定部241は、比較結果に基づいて一致率(以降、第1一致率と称する場合がある)を特定する。具体的には、述部特定部241はまず、記憶部13に記憶された音素列辞書32から、述部音素列を登録している辞書である述部辞書32a(述部音素列辞書)を読み出す。ここで、述部辞書32aについて図3に基づいて説明する。図3は、音素列辞書32のデータ構造および具体例を示す図である。なお、図3に示す音素列辞書32のデータ構造および具体例は一例であり、この例に限定されない。
図3の(a)に示すように、述部辞書32aは、「音素列」のカラムに、ユーザが発話した音声の述部候補となる複数の述部音素列を格納している。なお、括弧書きで示した部分は、音素列が示す述部を明示するための記載であり、「音素列」のカラムに格納されていなくてもよい。また、「検索辞書」のカラムには、音素列データ31の第1部分音素列が各述部音素列に特定された場合に、その他の単語を特定する際に使用する音素列辞書32を示す情報(カテゴリ情報)が格納されている。具体的には、第1部分音素列が「oboete」であると特定された場合、ユーザが入力した音声は予定の登録のための音声である可能性が高く、音素列データ31には、時制、場所、動作などが含まれる可能性が高い。そのため、「oboete」という述部音素列には、後述する時制辞書32b、場所辞書32c、および動作辞書32dを示す情報などが格納されている。時制辞書32bは、時制を示す音素列が登録されている辞書である。場所辞書32cは、場所を示す音素列が登録されている辞書である。動作辞書32dは、動作を示す音素列が登録されている辞書である。なお、本実施形態に係る音素列は、子音と母音とが1文字になるように構成される。すなわち、撥音および促音も1文字で表現される。例えば、図3の(a)に示すように、「ん」に相当する音素は「@」で表現される。また、図3の(b)に示すように、「きょ」に相当する音素は「Ko」で表現される(これに対して、小文字の「k」を用いる「ko」は「こ」を表す)。さらに、促音である「っ」は「!」で表現される。なお、この表現方法は一例であり、撥音や促音などの音素の表現方法はこの例に限定されない。
続いて、述部特定部241は、読み出された音素列データ31を、音素列データ31の文末部分(最後の音素)とその他の部分とに分割する。つまり、音素列データ31が「asitaabenotarukasuniikutoomoete」である場合、「asitaabenotarukasuniikutoomoet/e」と分割する(「/」は分割箇所を示す)。そして、音素列データ31の最後の音素側の音素列(以降、後方音素列と称する)について、述部辞書32aに含まれる述部音素列と比較し、一致率を算出する。なお、一致率の算出については既存の技術を用いることができる。例えば、編集距離(レーベンシュタイン距離)から一致率を算出する技術を用いてもよいが、この例に限定されるものではない。そして、述部特定部241は、最も一致率の高い述部音素列を特定する。
続いて、述部特定部241は、分割箇所を1つ前に移動させた新たな分割パターン(すなわち、「asitaabenotarukasuniikutoomoe/te」)について、同様の処理を行い、後方音素列と最も一致率の高い述部音素列を特定する。そして、述部特定部241は、この処理を繰り返し、「/asitaabenoharukasuniikutoomoete」という分割パターンまでの各分割パターンについて、後方音素列と最も一致率の高い述部音素列を特定する。
続いて、述部特定部241は、特定した述部音素列についてのランキングを生成し、一致率ランキング33として記憶部13に記憶する。ここで、述部音素列の一致率ランキング33a(以降、単に一致率ランキング33aと称する)の詳細について図4に基づいて説明する。図4は、一致率ランキング33aのデータ構造および具体例を示す図である。なお、図4に示す一致率ランキング33aは一例であり、データ構造および具体例はこの例に限定されない。
一致率ランキング33aは、分割パターンの後方音素列と述部音素列との組み合わせを一致率が高い順に並べたデータである。該組み合わせには、分割パターン(すなわち後方音素列を特定可能な情報)、該分割パターンにおける後方音素列と最も一致率の高い述部音素列、および、該一致率が含まれる。図示の例では、一致率ランキング33aは、上記の組み合わせを、一致率が高い順に3つ並べたデータである。一致率ランキング33aにおいて、分割パターンは「分割パターン」のカラムに格納される。また、分割パターンにおける後方音素列と最も一致率の高い述部音素列は、「特定音素列」のカラムに格納される。また、一致率は「一致率」のカラムに格納される。述部特定部241は、該一致率ランキング33aから、一致率が最も高い(すなわち、ランキングが1位の)レコードを特定する。そして、特定したレコードに含まれる分割パターンと述部音素列とを述部以外特定部242に出力する。
述部以外特定部242は、音素列データ31から第1部分音素列以外の残部(第2部分音素列)と、辞書に登録された単語を示す音素列(単語音素列)とを比較し、一致率(以降、第2一致率と称する場合がある)を特定する。具体的には、述部以外特定部242はまず、記憶部13に記憶された音素列辞書32から、述部辞書32aを読み出す。そして、述部辞書32aにおいて、述部特定部241から取得した述部音素列に対応付けられている音素列辞書32の情報を読み出す。例えば、「oboete」に対応付けられている時制辞書32b、場所辞書32c、動作辞書32d(単語音素列辞書)などを読み出す。
ここで、図3を再度参照して、述部辞書32a以外の音素列辞書32について説明する。述部辞書32a以外の音素列辞書32(図示の例では、時制辞書32b、場所辞書32c、動作辞書32d)は、述部辞書32aと異なり、ユーザが発話した音声の単語候補となる複数の音素列(以降、単語音素列と称する)のみを格納するものである。なお、述部辞書32a以外の音素列辞書32は、図示の例に限定されるものではない。他の例としては、助詞を示す音素列を格納した助詞辞書などが挙げられる。
続いて、述部以外特定部242は、述部特定部241から取得した分割パターンについて、音素列データ31の最初の音素側の音素列(以降、前方音素列と称する)を、最初の音素とその他の部分とに分割する。つまり、「asitaabenotarukasuniikuto」を「a/sitaabenotarukasuniikuto」と分割する。そして、該分割パターン(以降、第2分割パターンと称する)における前方音素列について、読み出した音素列辞書32に含まれる単語音素列と比較し、一致率を算出する。そして、最も一致率の高い単語音素列を特定する。
続いて、述部以外特定部242は、分割箇所を1つ後に移動させた新たな第2分割パターン(すなわち、「as/itaabenotarukasuniikuto」)について、同様の処理を行い、前方音素列と最も一致率の高い単語音素列を特定する。そして、述部以外特定部242は、この処理を繰り返し、「asitaabenoharukasuniikuto/」という第2分割パターンまでの各第2分割パターンについて、前方音素列との一致率が最も高い単語音素列を特定する。
続いて、述部以外特定部242は、特定した単語音素列についてのランキングを生成し、一致率ランキング33として記憶部13に記憶する。ここで、単語音素列の一致率ランキング33b(以降、単に一致率ランキング33bと称する)の詳細について図5に基づいて説明する。図5は、一致率ランキング33b、および、後述する一致率ランキング33cのデータ構造および具体例を示す図である。なお、図5に示す一致率ランキング33bおよび一致率ランキング33cは一例であり、データ構造および具体例はこの例に限定されない。
図5の(a)に示すように、一致率ランキング33bは、第2分割パターンの前方音素列と単語音素列との組み合わせを一致率が高い順に並べたデータである。該組み合わせには、第2分割パターン(すなわち、第2分割パターンの前方音素列を特定可能な情報)、該第2分割パターンの前方音素列と最も一致率の高い単語音素列、および、該一致率が含まれる。図示の例では、一致率ランキング33bは、上記の組み合わせを一致率が高い順に3つ並べたデータである。一致率ランキング33bにおいて、第2分割パターンは「分割パターン」のカラムに格納される。また、第2分割パターンの前方音素列と最も一致率の高い単語音素列は、「特定音素列」のカラムに格納される。また、一致率は「一致率」のカラムに格納される。
続いて、述部以外特定部242は、一致率ランキング33bの各レコードに含まれる第2分割パターンそれぞれの後方音素列(すなわち、単語音素列との第2一致率が算出されていない部分)について、最初の音素とその他の部分とに分割する。つまり、第2分割パターンが「asita/abenotarukasuniikuto」のレコードの場合、「abenotarukasuniikuto」を「a/benotarukasuniikuto」と分割する。そして、該分割パターン(以降、第3分割パターンと称する)における前方音素列について、読み出した音素列辞書32に含まれる単語音素列と比較し、一致率を算出する。そして、最も一致率の高い単語音素列を特定する。続いて、述部以外特定部242は、分割箇所を1つ後に移動させた新たな第3分割パターン(すなわち、「ab/enotarukasuniikuto」)について、同様の処理を行い、前方音素列との一致率が最も高い単語音素列を特定する。そして、述部以外特定部242は、この処理を繰り返し、「abenoharukasuniikuto/」という第3分割パターンまでの各第3分割パターンについて、前方音素列との一致率が最も高い単語音素列を特定する。なお、後の説明のために、この段落の処理を処理Aとする。
続いて、述部以外特定部242は、特定した単語音素列についてのランキングを生成し、一致率ランキング33(一致率ランキング33c)として記憶部13に記憶する。上述したように、一致率ランキング33cは、第2分割パターンそれぞれの後方音素列において生成されるので、図5の(b)および図5の(c)に示すように、複数の一致率ランキング33cが生成されることとなる。図5の(b)に示す一致率ランキング33c1は、一致率ランキング33bにおける順位が1位の第2分割パターンの後方音素列を、さらに分割した第3分割パターンの前方音素列と単語音素列との組み合わせについて、一致率が高い順に並べたデータである。また、図5の(c)に示す一致率ランキング33c2は、一致率ランキング33bにおける順位が2位の第2分割パターンの後方音素列を、さらに分割した第3分割パターンの前方音素列と単語音素列との組み合わせについて、一致率が高い順に並べたデータである。また、述部以外特定部242は、一致率ランキング33bにおける順位が3位の第2分割パターンの後方音素列を、さらに分割した第3分割パターンの前方音素列と単語音素列との組み合わせについて、一致率が高い順に並べた一致率ランキングも生成する。述部以外特定部242は、該一致率ランキングについても記憶部13に記憶する。なお、後の説明のために、この段落の処理を処理Bとする。
述部以外特定部242は、一致率ランキング33bにおける各一致率と、一致率ランキング33cにおける各一致率と合計した合計値(前後統合一致率)が最も高いレコードの組み合わせを特定する。図5の例の場合、一致率ランキング33bにおける、分割パターンが「asita/abenotarukasuniikuto」のレコードと、一致率ランキング33c1における、分割パターンが「abenotarukasu/niikuto」のレコードとの組み合わせを特定する。なお以降、分割パターンが「asita/abenotarukasuniikuto」のレコードを第1レコードと称する。また、分割パターンが「abenotarukasu/niikuto」のレコードを第2レコードと称する。そして、述部以外特定部242は、第1レコードに含まれる一致率を第2一致率として更新(特定)し、該第1レコードに含まれる分割パターンを一時的に記憶しておく。また、述部以外特定部242は、第1レコードに含まれる分割パターンの後方音素列から生成された一致率ランキング33cを、上述した処理Aを行う対象の一致率ランキングとする。この例の場合、一致率ランキング33c1が処理Aを行う対象の一致率ランキングとなる。なお、後の説明のために、この段落の処理を処理Cとする。
以降、述部以外特定部242は、第2部分音素列における、単語音素列との第2一致率が特定されていない部分に対して、上述した処理A、処理B、および処理Cと同様の処理を、それ以上分割できなくなるまで繰り返す。これにより、少なくとも1つの分割パターンが一時的に記憶された状態となる。なお、「それ以上分割できなくなる」とは、分割箇所を示す「/」が最後の音素の後にある分割パターンを含むレコードが、処理Cにおけるレコードの組み合わせの一方として特定された場合を示す。分割箇所を示す「/」が最後の音素の後にある分割パターンの一例としては、後方音素列が「to」である場合における「to/」のような分割パターンが挙げられる。
このように、前後統合一致率が最も高いレコードの組み合わせを特定し、該組み合わせの第1レコードに含まれる一致率を第2一致率として特定することで、最も確からしい単語音素列を選ぶことができる可能性が高くなる。
一致率特定部24は、記憶部13に記憶した一致率ランキング33と、一時的に記憶した分割パターンとを音素列特定部25に出力する。なお、図4および図5に示す一致率ランキング33のレコードは3つ(すなわち、3位までのランキング)であるが、この例に限定されるものではない。また、一致率ランキング33は、一致率が所定の閾値以上(例えば、0.50以上)の後方音素列と述部音素列との組み合わせのみを格納するものであってもよい。換言すれば、図4および図5の例において、一致率が0.50以上の分割パターンが1つまたは2つのみの場合、それぞれレコードが1つまたは2つのみとなってもよい。
音素列特定部25は、音素列データ31からユーザが入力した音声に相当する音素列を特定する。換言すれば、音素列データ31をユーザが入力した指示を実行可能な音素列に補正する。具体的には、音素列特定部25は、一致率特定部24から取得した一致率ランキング33aから、一致率が最も高いレコードを特定する。そして、該レコードに含まれる分割パターンの後方音素列を、該レコードに含まれる述部音素列(最尤述部音素列)に特定する。例えば、「omoete」を「oboete」として特定する。
続いて、音素列特定部25は、一致率ランキング33a以外の一致率ランキング33と一時的に記憶された分割パターンとから第2部分音素列に含まれる各単語音素列(最尤単語音素列)を特定する。なお、一致率ランキング33a以外の一致率ランキングとは、一致率ランキング33b、一致率ランキング33cなどを指す。具体的には、一時的に記憶された分割パターンを一致率ランキング33から特定し、該分割パターンの前方音素列を、一致率ランキング33において該分割パターンに対応付けられた単語音素列に特定する。図5の例の場合、「asita」、「abenoharukasu」、「ni」、「iku」、「to」をそれぞれ特定する。
上記の処理について換言すれば、音素列特定部25は、統合一致率が最も高い、第1部分音素列および第2部分音素列の組み合わせを特定する。そして、音素列特定部25は、述部音素列として最も確からしい最尤述部音素列と、単語音素列として最も確からしい最尤単語音素列とを特定する。なお、統合一致率とは、一致率ランキング33aにおける最も高い一致率(第1一致率)と、一致率ランキング33a以外の一致率ランキング33における最も高い一致率(第2一致率)とを統合したものである。
そして、音素列特定部25は、特定した述部音素列および単語音素列によって補正された音素列データ31(以降、補正音素列と称する場合がある)を処理実行部26に出力する。上述の例の場合、「asitaabenoharukasuniikutooboete」を処理実行部26に出力する。
処理実行部26は、ユーザが入力した音声が示す指示に応じた処理を実行する。具体的には、処理実行部26は、音素列特定部25から取得した補正音素列に含まれる述部音素列を特定し、該述部音素列と記憶部13に記憶されている処理特定用データベース34とから、処理を実行するためのアプリケーションを特定する。ここで、処理特定用データベース34の詳細について、図6を参照して説明する。図6は、処理特定用データベース34のデータ構造および具体例を示す図である。なお、図6の処理特定用データベース34は一例であり、処理特定用データベース34のデータ構造および具体例は図6の例に限定されない。
処理特定用データベース34は、述部音素列とアプリケーションを示す情報とを対応付けて記憶するデータベースである。図6に示すように、「特定音素列」のカラムには、補正音素列に含まれ得る述部音素列が格納されている。また、「アプリケーション」のカラムには、処理を実行するためのアプリケーションの名称が格納されている。つまり、処理実行部26は、補正音素列に含まれる述部音素列を含むレコードを特定することで、処理を実行するために用いるアプリケーションを特定することができる。
なお、「アプリケーション」のカラムに格納されている情報は、図3に示す述部辞書32aの各情報に対応付けられていてもよい。この場合、処理特定用データベース34は省略され、処理実行部26は、処理特定用データベース34に代えて、述部辞書32aを参照して、処理を実行するために用いるアプリケーションを特定する。
処理実行部26は特定したアプリケーションを記憶部13に記憶されているアプリケーション35から読み出す。そして、補正音素列に応じた処理を実行する。例えば、処理実行部26は、スケジュール帳のアプリケーションを起動して、補正音素列を漢字仮名混じりの文字列に変更する。そして、該文字列が示す日時に、該文字列が示す予定を登録する。例えば、翌日の予定として、「アベノハルカスに行く」を登録する。なお、音素列を漢字仮名混じりの文字列に変更する技術、および、漢字仮名混じりの文字列から日付を特定する技術は、既存の技術を用いることができる。
記憶部13は、音素列データ31、音素列辞書32、一致率ランキング33、処理特定用データベース34、およびアプリケーション35を少なくとも記憶している。なお、これらのデータについては既に説明しているため、ここでの説明を省略する。
次に、本実施形態に係るロボット1が実行する処理の流れについて、図7に基づいて説明する。図7は、ロボット1が実行する処理の流れの一例を示すフローチャートである。
まず、ロボット1の音声入力制御部21は、音声の波形データの取得を待機している状態である(S1)。音声入力部11が音声を受け付けることにより、音声入力制御部21が該波形データを取得すると(S1でYES)、音素列生成部22は、該波形データから音素列を生成し、記憶する(S2)。具体的には、該波形データから音素を生成し、記憶部13に記憶する処理を繰り返す。音素列生成部22は、音素を生成できなかった場合、文末検知部23に音声入力が終了したか否かを判定するよう指示する。
続いて、文末検知部23は、音素列生成部22からの指示に従って、音声の入力が終了したか否かを判定する(S3)。具体的には、文末検知部23は、音声入力制御部21から取得した波形データを参照し、音声の入力が終了したか否かを判定する。音声の入力が終了したと判定した場合(S3でYES)、最後の音素を文末と特定する(S4)とともに、音素列の特定指示を一致率特定部24に出力する。
一致率特定部24の述部特定部241は、文末検知部23からの指示に従って第1部分音素列と述部音素列との一致率(第1一致率)を特定する(S5、第1の特定ステップ)。具体的には、述部特定部241は、音素列データ31の分割パターンにおける後方音素列と述部音素列との組み合わせを一致率が高い順に並べた一致率ランキング33aを生成する。そして、述部特定部241は、一致率ランキング33aにおいて1位の組み合わせを、一致率特定部24の述部以外特定部242に出力する。続いて、述部以外特定部242は、第2部分音素列と単語音素列との一致率(第2一致率)を特定する(S6、第2の特定ステップ)。具体的には、述部特定部241から取得した述部音素列に、述部辞書32aにおいて対応付けられている音素列辞書32を用いて一致率を特定する。そして、一致率ランキング33を生成するとともに、前後統合一致率が最も高いレコードの組み合わせ(第1レコードと第2レコードとの組み合わせ)を特定する。述部以外特定部242は、第1レコードに含まれる一致率を第2一致率として更新し、該第1レコードに含まれる分割パターンを一時的に記憶しておく。述部以外特定部242は、ステップS6の処理を、第2部分音素列をそれ以上分割できなくなるまで繰り返す。一致率特定部24は、生成した一致率ランキング33、および、一時的に記憶した分割パターンを音素列特定部25に出力する。
続いて、音素列特定部25は、入力された音声の音素列を特定する(S7、音素列特定ステップ)。具体的には、音素列特定部25は、音素列データ31を、取得した一致率ランキング33および分割パターンに従って補正する。そして、補正した音素列データ31(補正音素列)を、処理実行部26に出力する。
最後に、処理実行部26は、特定した音素列に応じた処理を実行する(S8、処理実行ステップ)。具体的には、補正音素列に含まれる述部音素列から処理の実行に使用するアプリケーションを特定し、該アプリケーションを起動して処理を実行する。例えば、スケジュール帳アプリケーションを用いて、翌日の予定として「アベノハルカスに行く」を登録する。以上で、ロボット1が実行する処理は終了する。
〔実施形態2〕
本発明の他の実施形態について、図8に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
図8は、本実施形態に係る処理実行システム100に含まれるロボット1aの要部構成の一例を示すブロック図である。本実施形態に係るロボット1aは、実施形態1に係るロボット1と異なり、制御部12に代えて制御部12aを備える。また新たに、外部の装置と情報の送受信を行う通信部14を備える。
制御部12aは、実施形態1にて説明した音素列生成部22を備えない。また、音声入力制御部21および文末検知部23に代えて、音声入力制御部21aおよび文末検知部23aを備える。
音声入力制御部21aは、通信部14を介して、波形データを音素列生成装置2に出力する。また、通信部14は、音素列生成装置2から受信した音素を音素列データ31として記憶部13に記憶していく処理を繰り返す。
文末検知部23aは、音素列生成装置2から受信した指示に従って、音声入力制御部21から波形データを取得する。そして、該波形データを参照し、音声の入力が終了したか否かを判定する。この判定については、実施形態1で既に説明しているため、ここでの説明を省略する。文末検知部23aは、判定結果を音素列生成装置2に送信する。
音素列生成装置2は、実施形態1にて説明した音素列生成部22の機能を実現する装置である。なお、図示してはいないが、音素列生成装置2はロボット1aと無線通信を行う機能を備えており、ロボット1aの通信部14と情報の送受信を行うことができる。例えば、音素列生成装置2は、ロボット1aから波形データを受信する。また、生成した音素や、文末検知部23aへの指示をロボット1aに送信する。
以上のように、本実施形態に係るロボット1aは、外部の装置である音素列生成装置2と通信可能に接続されており、音素列生成装置2が生成した音素を取得することで音素列データ31を記憶部13に記憶する。これにより、ロボット1aが実行する処理を減らすことができる。なお、処理実行システム100は、図8の例においてロボット1aが備える部材のうち、一致率特定部24、音素列特定部25、および処理実行部26を、ロボット1aと通信可能に接続された外部の装置の制御部が備える構成としてもよい。この例の場合、該外部の装置が本発明の一態様に係る処理実行装置となる。また、図8の例においてロボット1aが備える文末検知部23aおよび記憶部13についても、外部の装置が備える構成であってもよい。文末検知部23aおよび記憶部13については、上述した処理実行装置としての外部の装置(以降、処理実行装置と称する)が備える構成であってもよい。また、文末検知部23aおよび記憶部13については、処理実行装置とは別の外部の装置が備え、該別の外部の装置と処理実行装置とが通信可能に接続された構成であってもよい。すなわち、ロボット1aは、究極的には、音声入力部11、通信部14、および音声入力制御部21aのみを備える構成であってもよい。
〔実施形態3〕
本発明のさらに別の実施形態について、図9および図10に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
図9は、本実施形態に係る処理実行システム200に含まれるロボット1bおよびサーバ3の要部構成の一例を示すブロック図である。ここでは、まずサーバ3について説明した後、ロボット1bについて説明する。
サーバ3は、ロボット1bから取得した波形データに基づいて処理を行う装置である。具体的には、サーバ3は、ロボット1bからの指示に応じて、自然言語処理を含む音声認識を行う。サーバ3は、サーバ通信部41、音素列生成部42、音声認識部43、および意図解析部44を備える。
サーバ通信部41は、ロボット1bと情報の送受信を行う。具体的には、サーバ通信部41は、ロボット1bから波形データを受信する。また、生成した音素や、文末検知部23aへの指示をロボット1bに送信する。
音素列生成部42は、実施例1にて説明した音素列生成部22と同様に波形データから入力音素列を生成する。具体的には、音素列生成部42は、該波形データから音素を特定し、サーバ通信部41を介して、該音素をロボット1bに送信する処理を繰り返す。これにより、ロボット1bは音素列データ31を取得することができる。また、音素列生成部42は、特定した音素を音声認識部43に出力する処理を繰り返す。これにより、音声認識部43は音素列を取得することができる。
音声認識部43は、取得した音素列を漢字仮名混じりの文字列に変換する。また、音声認識部43は、必要に応じて音素列または文字列の補正を行う。これにより、音声認識部43は例えば、「asitaabenotarukasuniikutoomoete」という音素列を、「明日アベノハルカスに行くと覚えて」と変換することができる。なお、文字列への変換には既存の技術を用いることができる。音声認識部43は、生成した文字列を意図解析部44へ出力する。
意図解析部44は、音声認識部43が生成した文字列から、利用者の意図を解析する。具体的には、意図解析部44は、取得した文字列に対して形態素解析を行い、文字列を分解して品詞を対応付ける。次に、意図解析部44は、形態素を分節に分け、述部と文末表現との組み合わせを示す分節情報を生成する。例えば、述部「覚え(動詞)」と文末表現「て(助詞)」との組み合わせを示す分節情報が生成される。
そして、意図解析部44は、生成した分節情報から文字列の意図を特定する。換言すれば、意図解析部44は、文字列の意図が「依頼」であるか否かを判定する。具体的には、サーバ3は「依頼」を示す文末表現のリスト(不図示)、および、述部の文字列とアプリケーションを示す情報とを対応付けたデータベース(不図示)を記憶している。意図解析部44は、特定した文末表現が、上記のリストに含まれているか否かを判定する。そして、リストに含まれていると判定した場合、意図解析部44は、上記のデータベースを参照して、述部の文字列が対応付けられたアプリケーションを示す情報を特定する。
例えば、分節情報が述部「覚え(動詞)」と文末表現「て(助詞)」との組み合わせである場合、まず文末表現「て(助詞)」が上記のリストに含まれていることが特定される。さらに、述部「覚えて」がスケジュール帳のアプリケーションを示す情報に対応付けられていることが特定される。そして、意図解析部44は、スケジュール帳のアプリケーションを起動する指示と、音声認識部43が生成した文字列とをロボット1bに送信する。ロボット1bの通信部14は、受信した指示と文字列とを、記憶部13に一時的に記憶する。
ロボット1bは、実施形態1にて説明したロボット1、および、実施形態2にて説明したロボット1aと異なり、制御部12または制御部12aに代えて制御部12bを備える。制御部12bは、音素列特定部25および処理実行部26に代えて、音素列特定部25bおよび処理実行部26bをそれぞれ備える。
音素列特定部25bは、統合一致率が最も高い、第1部分音素列および第2部分音素列の組み合わせを特定したとき、該統合一致率が所定の値以上であるか否かをさらに特定する。そして、該統合一致率が所定の値に満たない場合、記憶部13に一時的に記憶されている、サーバ3の意図解析部44が特定したアプリケーションの起動指示と、音声認識部43が生成した文字列とを処理実行部26bに出力する。なお、統合一致率が所定の値以上の場合の処理については、実施形態1にて既に説明しているため、ここでの説明を省略する。また、サーバ3での文字列およびアプリケーションの起動指示の生成に時間がかかっているなどの要因で、記憶部13に該文字列および該指示が記憶されていない場合、音素列特定部25bは、これらの情報が記憶部13に記憶されるまで待機する。
処理実行部26bは、音素列特定部25bからアプリケーションの起動指示および文字列を取得した場合、アプリケーション35のうち、該起動指示が示すアプリケーションを特定し、起動する。そして、取得した文字列に応じた処理を実行する。例えば、処理実行部26bは、スケジュール帳のアプリケーションを起動して、取得した文字列が示す日時に該文字列が示す予定を登録する。
次に、本実施形態に係る処理実行システム200が実行する処理の流れについて、図10に基づいて説明する。図10は、処理実行システム200が実行する処理の流れの一例を示すフローチャートである。なお、図10のステップS1〜ステップS6は、実施形態1にて図7を参照して既に説明しているため、ここでの説明を省略する。
音素列特定部25bは統合一致率を算出する(S11)。具体的には、一致率ランキング33aにおける最も高い一致率(第1一致率)と、一致率ランキング33a以外の一致率ランキング33における最も高い一致率(第2一致率)とを合計し、統合一致率を算出する。そして、音素列特定部25bは、該統合一致率が所定の値以上であるか否かを判定する(S12)。統合一致率が所定の値以上であると判定した場合(S12でYES)、音素列特定部25bは、最尤述部音素列と最尤単語音素列とからなる音素列(すなわち、実施形態1にて説明した補正音素列)を処理実行部26に出力する。なお、最尤述部音素列は、一致率ランキング33aにおいて第1一致率に対応付けられた述部音素列である。また、最尤単語音素列は、一致率ランキング33a以外の一致率ランキング33において第2一致率に対応付けられた単語音素列である。
そして、処理実行部26は、最尤述部音素列と最尤単語音素列からなる音素列に応じた処理を実行する(S13)。なおステップS13の処理は、実施形態1で説明したステップS8の処理と実質的に同一である。
一方、統合一致率が所定の値以上でないと判定した場合(S12でNO)、音素列特定部25bは、サーバ3に起動するアプリケーションを特定するよう指示する。サーバ3は、該指示に従って、音声認識および意図解析を行う(S14)。そして、音声認識によって生成された文字列と、意図解析によって特定されたアプリケーションを起動する指示とを音素列特定部25bに送信する。音素列特定部25bは、受信した文字列および指示を処理実行部26bに出力する。
最後に、処理実行部26bは、音声認識および意図解析の結果に応じた処理を実行する(S15)。具体的には、取得した指示が示すアプリケーションを特定し、起動する。そして、取得した文字列に応じた処理を実行する。
以上のように、処理実行システム200は、統合一致率が所定の値に満たない場合、すなわち、ユーザの指示通りの処理が実行できない可能性が高い場合、サーバ3が行った音声認識および意図解析の結果を取得し、該結果に応じた処理を実行する。これにより、ユーザの指示に応じた処理を正しく実行することができる。
(実施形態3の変形例)
サーバ3(外部の装置)はさらに、ロボット1bの制御部12bに含まれている文末検知部23および一致率特定部24と同様の機能を備える文末検知部および一致率特定部(ともに不図示)を備える構成であってもよい。この構成の場合、サーバ3は、ロボット1bの記憶部13に記憶されている音素列辞書32および一致率ランキング33と同様のデータである音素列辞書および一致率ランキング(ともに不図示)を、サーバ3の記憶部(不図示)に記憶している。
つまり、サーバ3は、ロボット1bと同様に、一致率ランキングを生成し、該一致率ランキングと分割パターンとをロボット1bに送信する。なお、一致率ランキングの生成処理については、実施形態1で説明した処理と同様であるため、ここでの説明を省略する。
ロボット1bの通信部14は、サーバ3から受信した一致率ランキングおよび分割パターンと、ロボット1bにおいて生成された一致率ランキング33および分割パターンとを区別して記憶部13に記憶する。
音素列特定部25bは、第1部分音素列および第2部分音素列の組み合わせにおける統合一致率が所定の値に満たない場合、記憶部13に記憶されている、サーバ3から受信した一致率ランキングおよび分割パターンを読み出す。そして、該一致率ランキングおよび分割パターンから、統合一致率が最も高い第1部分音素列および第2部分音素列の組み合わせ(外部組み合わせ)を特定する。そして、該統合一致率が所定の値以上であるか否かを特定する。
統合一致率が所定の値以上である場合、第1部分音素列を最尤述部音素列、第2部分音素列を最尤単語音素列と特定し、該最尤述部音素列および該最尤単語音素列によって補正された補正音素列を処理実行部26に出力する。
一方、統合一致率が所定の値に満たない場合、記憶部13に一時的に記憶されている、サーバ3の意図解析部44が特定したアプリケーションの起動指示と、音声認識部43が生成した文字列とを処理実行部26bに出力する。以降の処理は、実施形態3にて既に説明しているため、ここでの説明を省略する。
このように、本変形例に係るロボット1bは、一致率ランキング33に基づいて特定した第1部分音素列および第2部分音素列の組み合わせにおける統合一致率が所定の値に満たない場合、統合一致率が所定の値以上であるか否かを判定する。なお、該統合一致率は、サーバ3にて生成された一致率ランキングに基づいて特定した第1部分音素列および第2部分音素列の組み合わせ(外部組み合わせ)における統合一致率である。
音素列辞書は新たな単語の登録などによって随時更新されるが、ロボット1bが記憶している音素列辞書32が常に最新版であるとは限らない。音素列辞書32が最新版でない場合、適切な分割パターンが特定できず、ユーザの意図通りの処理が実行できない可能性がある。一方、この例のように、サーバ3において一致率ランキングを生成する構成の場合、サーバ3に記憶している音素列辞書は、サーバ3の管理者によって容易に更新することができる。そのため、サーバ3は、常に最新の音素列辞書を用いて、一致率ランキングを生成することができる。ロボット1bは、サーバ3で生成された一致率ランキングを用いることにより、より適切な第1部分音素列および第2部分音素列の組み合わせを特定することができる。よって、実行する処理をユーザの意図通りのものとすることができる可能性が高くなる。
なお、音素列特定部25bは、一致率ランキング33に基づいて特定した第1部分音素列および第2部分音素列の組み合わせと、外部組み合わせとのうち、統合一致率が高い方を用いて補正音素列を生成する構成であってもよい。
また、サーバ3は、音声認識および意図解析に代えて、一致率ランキングを生成する構成であってもよい。この場合、サーバ3の音声認識部43および意図解析部44は省略される。
また、サーバ3の一致率特定部は、ロボット1bの一致率特定部と異なる方法で一致率を算出する構成であってもよい。例えば、サーバ3の一致率特定部は、音素列生成部42によって生成された音素列の一部と、音素列辞書に記憶されている音素列とが所定文字数一致している場合に一致率を加算する方法を用いてもよい。
また、サーバ3の意図解析部44は、音声認識部43が生成した文字列から、起動するアプリケーションに実行させる処理を特定し、該処理の内容を示す情報を、アプリケーションを起動する指示とともにロボット1bに送信してもよい。例えば、音声認識部43が生成した文字列が「明日アベノハルカスに行くと覚えて」である場合、「明日の予定として『アベノハルカスに行く』を登録する」という処理を示す情報を、アプリケーションを起動する指示とともにロボット1bに送信してもよい。この場合のアプリケーションは例えば、スケジュール帳のアプリケーションである。また、「明日の予定として『アベノハルカスに行く』を登録する」という処理を示す情報は、「『アベノハルカスに行く』を明日の予定として登録するための指示」と表現することもできる。
〔変形例〕
上述した各実施形態では、述部以外特定部242は、述部特定部241が生成した一致率ランキング33aのうち、一致率が最も高いレコードの分割パターンにおける前方音素列のみについて一致率ランキング33を生成する構成であった。しかしながら、述部以外特定部242は、一致率ランキング33aに含まれるレコードの分割パターンそれぞれにおける前方音素列について、一致率ランキング33を生成する構成であってもよい。これにより、処理に係る時間は長くなるが、音素列の特定精度を上げることができる。
また、述部以外特定部242は、上述した処理Cにおいて、第1レコードに含まれる分割パターンの後方音素列から生成された一致率ランキング33cを、上述した処理Aを行う対象の一致率ランキングとする構成であった。しかしながら、述部以外特定部242は、一致率ランキング33cのすべてを、上述した処理Aを行う対象の一致率ランキングとしてもよい。これにより、処理に係る時間は長くなるが、音素列の特定精度を上げることができる。
また、上述した各実施形態では、文末検知部23および文末検知部23aは、取得した波形データが、音素を生成することができない波形データであるか否かを判定して、文末を検知する構成であった。しかしながら、文末検知部23および文末検知部23aは、音素列生成部22が生成した音素列を参照して文末を検知する構成であってもよい。具体的には、音素列(音素列データ31)が所定の条件を満たす場合、文末検知部23は音声の入力が終了したと判定する。所定の条件の一例としては、「同一の音素が所定数連続した」などが挙げられるが、この例に限定されるものではない。なお、「同一の音素が所定数連続した」ことを検知して、音声の入力が終了したと判定した場合、文末検知部23は、該同一の音素の中の最初の音素を文末と特定する。具体的には、ユーザが「…と覚えて」という音声を入力したときに、語尾を伸ばすように発話したことによって、「…tooboeteeeeee」という音素列が生成されたとする。この場合、文末検知部23および文末検知部23aは6つの「e」のうち最初の「e」を文末と特定し、以降の「eeeee」を削除する。
また、文末検知部23および文末検知部23aは、上述した2つの文末検知方法を組み合わせてもよい。具体的には、波形データを参照して仮の文末を特定した後、生成された音素列データ31が所定の条件を満たしているか否かを判定し、文末を特定してもよい。これにより、音素列データ31から、指示に関係しない余計な音素を除くことができるので、指示の認識精度を向上させることができる。
また、述部特定部241は、第1部分音素列と述部音素列との一致率を算出するとき、2つの音素列の音素数の差が所定値以上である場合、一致率を最低値としてもよい。この例について、図11に基づいて説明する。図11は、音素数の差が所定値以上である場合、一致率を0とする例を説明する図である。図11の例の場合、「分割パターン」のカラムに含まれる後方音素列の音素数と、「比較対象の音素列」のカラムに含まれる述部音素列の音素数との差が5以上である場合は、編集距離から一致率を算出する処理を行わず、一致率を0としている。これにより、一致率を算出する音素列の組み合わせの数を減らすことができ、処理時間の短縮を図ることができる。
また、上述した各実施形態では、ユーザが発話する音声が日本語であったため、述部特定部241は、音素列データ31の後方音素列と述部音素列との一致率を算出していた。しかしながら、述部特定部241は、ユーザが発話する音声が、英語などの、述部が最初に発話される言語である場合、音素列データ31の前方音素列と述部音素列とを比較する構成であってもよい。
また、第2部分音素列に含まれる単語のカテゴリの順序が予め決められていてもよい。例えば、述部音素列が「oboete」である場合、第2部分音素列は、「時制」、「場所」、「助詞」、「動作」、「助詞」の順である(例えば「明日」、「アベノハルカス」、「に」、「行く」、「と」の順)と予め決められていてもよい。これにより、第2部分音素列の各部分と単語音素列との一致率を算出するときに、参照する辞書を1つに特定することができる。
また、本発明の一態様に係る処理実行装置の構成を、既存の音声認識の結果に基づいて処理を実行する装置に組み込んでもよい。なお、既存の音声認識は特に限定されない。例えば、該音声認識は、FST(Finite-State Transducer;有限状態トランスデューサ)を用いて生成された音響モデルおよび言語モデルを使用するものであってもよい。なお以降、生成された音響モデルおよび言語モデルを総称して「モデル」と称する。また、この例の場合、通常の処理の実行は、入力された音声を既存の音声認識の結果に基づいて行う。そして、既存の音声認識において、モデルの修正(例えば、新たな単語の学習など)を行っている期間については、本発明の一態様に係る処理実行装置の構成を用いて、音素列に基づいて処理を実行してもよい。
上述したモデルの修正には、通常、2週間から1か月程度を要する。一方、本発明の一態様に係る処理実行装置において、上述したモデルの修正と同様の結果を得るためには、音素列辞書32に該当する単語に相当する音素列を追加するだけでよく、短時間で終了する。よって、上記装置は、既存の音声認識のモデルの修正中であっても、あたかも修正後のモデルを使用して音声認識を行っているように動作することが可能となる。なお、上記モデルがFSTを用いて生成されている場合、上記モデルの生成に用いたデータ(例えば、単語のデータ)を使用して音素列辞書32の生成を行なうことができる。
また、処理に時間がかかると予測される場合は、述部以外特定部242の処理を、並列コンピューティング技術を用いて並列化することで、処理の高速化を図ってもよい。処理に時間がかかると予測される場合とは、例えば、第2部分音素列の比較対象となる単語音素列の数が多い場合や、第2部分音素列に含まれると考えられる単語の数が多い場合などである。
また、処理実行部26がアプリケーションを起動して、補正音素列を漢字仮名混じりの文字列に変更したとき、該アプリケーションが、特定の文字列でないと処理を実行できないアプリケーションである可能性がある。例えば、スケジュール帳のアプリケーションにおいて、「明日」という文字列の場合、翌日の日付を示す文字列として特定することができるが、「次の日」という文字列の場合、翌日の日付を示す文字列として特定できない場合が考えられる。
そこで、上述した各実施形態に係るロボット1は、音素列辞書32に格納されている音素列のうち、アプリケーションが処理を実行できない文字列を示す音素列には、アプリケーションが処理を実行可能な文字列を示す別の音素列が対応付けられていてもよい。例えば、図3の(b)に示す時制辞書32bにおいて、「tuginohi」という音素列に「asita」という音素列が対応付けられていてもよい。
述部特定部241および述部以外特定部242は、一致率ランキング33を生成するとき、別の音素列が対応付けられている音素列を、特定音素列として特定した場合、該特定音素列を、上記別の音素列に置き換える。例えば、特定音素列として「tuginohi」が特定された場合、該特定音素列を、時制辞書32bにおいて「tuginohi」に対応付けられている「asita」に置き換える。これにより、処理実行部26が補正音素列を漢字仮名混じりの文字列に変更したとき、「明日」という文字列が生成されることとなるので、処理実行部26はユーザの意図通りに、翌日の日付に予定を登録することができる。なお、実施形態3の変形例で説明した、サーバ3にて一致率ランキングを生成する構成に、この変形例を適用してもよい。
〔ソフトウェアによる実現例〕
ロボット1、1a、1bの制御ブロック(特に制御部12、12a、12b)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよい。また、上記制御ブロックは、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、ロボット1、1a、1bは、CPU、ROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、RAM(Random Access Memory)などを備えている。CPUは、各機能を実現するソフトウェアであるプログラムの命令を実行する。ROMまたは記憶装置には、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されている。RAMは上記プログラムを展開する。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
〔まとめ〕
本発明の態様1に係る処理実行装置(ロボット1)は、入力された音声が示す指示に応じた処理を実行する処理実行装置であって、上記音声から生成された入力音素列の一部である第1部分音素列と、上記音声の述部候補となる複数の音素列である述部音素列のいずれかとの一致率である第1一致率を特定する第1の特定部(述部特定部241)と、上記入力音素列における、上記第1部分音素列以外の残部である第2部分音素列と、上記第1一致率が特定された述部音素列に応じた、上記音声の単語候補となる複数の音素列である単語音素列のいずれかとの一致率である第2一致率を特定する第2の特定部(述部以外特定部242)と、上記第1一致率と上記第2一致率とを統合した統合一致率が最も高い、上記第1部分音素列および上記第2部分音素列の組み合わせを特定して、上記入力音素列に含まれる上記述部音素列として最も確からしい最尤述部音素列と、上記入力音素列に含まれる上記単語音素列として最も確からしい最尤単語音素列とを特定する音素列特定部(音素列特定部25)と、上記最尤述部音素列および上記最尤単語音素列に応じた処理を実行する処理実行部(処理実行部26)と、を備える。
上記の構成によれば、第1部分音素列と述部音素列との第1一致率を特定し、その後に第1一致率が特定された述部音素列に応じた単語音素列と第2部分音素列との第2一致率を特定する。これにより、第2部分音素列と比較する単語音素列を絞り込むことができる。実行する処理が限定される場合(すなわち、特定の処理を実行する場合)、ユーザが発話した音声に含まれる単語のカテゴリはある程度限定される。このため、第1一致率が特定された述部音素列によって第2部分音素列と比較する単語音素列を絞り込むことにより、処理の実行に関係ない単語音素列と第2部分音素列との比較が行われなくなるので、ユーザが発話した音声に合致した単語音素列が最尤単語音素列となる可能性が高くなる。よって、実行する処理をユーザの意図通りのものとすることができる。
また、第2部分音素列と比較する単語音素列を絞り込むので、第2一致率を特定する処理に係る時間を短縮したり、処理実行装置の負担を軽くしたりすることができる。これにより、計算能力の低い装置であっても、該装置内での計算のみで、入力された音声に応じた処理の実行を実現することができる。
また、入力された音声から生成された入力音素列と、述部音素列および単語音素列との比較によって実行する処理を特定するので、既存の音声認識装置のように、音響モデルと言語モデルとを最適なものとするための準備(いわゆる、「学習」やこれらモデルの「修正」)を行う必要が無いため、該学習や修正にかかる時間、コストを削減することができる。
本発明の態様2に係る処理実行装置は、上記態様1において、上記第2の特定部は、上記第1一致率が最も高い第1部分音素列の残部である上記第2部分音素列について、上記第2一致率を特定してもよい。
上記の構成によれば、第1一致率が最も高い第1部分音素列を第2部分音素列とし、該第2部分音素列のみの第2一致率を特定する。これにより、第2一致率の特定にかかる時間をさらに短縮することができる。
本発明の態様3に係る処理実行装置は、上記態様1または2において、上記第2の特定部は、上記第2部分音素列の一部について、上記第2一致率を特定するものであるとともに、上記第2部分音素列のうち、上記第2一致率が特定されていない部分を2つに分割した前方音素列および後方音素列のそれぞれについて、上記単語音素列のいずれかとの一致率を特定して、上記前方音素列の一致率と上記後方音素列の一致率とを統合した前後統合一致率が最も高い、上記前方音素列および上記後方音素列の組み合わせを特定し、上記前後統合一致率が最も高い組み合わせの上記前方音素列の一致率を上記第2一致率として更新するとともに、上記前後統合一致率が最も高い組み合わせの上記後方音素列を上記第2一致率が特定されていない部分として更新してもよい。
上記の構成によれば、第2部分音素列の第2一致率が特定されていない部分の前方音素列と単語音素列との一致率と後方音素列と単語音素列との一致率とを算出して、2つの一致率を統合した前後統合一致率が最も高い前方音素列の一致率を第2一致率として特定し、後方音素列を第2一致率が特定されていない部分とする処理を繰り返す。つまり、第2一致率が特定された部分については、以降の第2一致率の特定には関与しない。これにより、第2部分音素列におけるすべての第2一致率の特定に係る時間を短縮することができる。
本発明の態様4に係る処理実行装置は、上記態様1から3のいずれかにおいて、上記第1の特定部は、上記第1部分音素列と上記述部音素列との音素数の差が所定値以上である場合、上記第1一致率を最低値とし、上記第2の特定部は、上記第2部分音素列と上記単語音素列との音素数の差が所定値以上である場合、上記第2一致率を最低値としてもよい。
上記の構成によれば、第1部分音素列および述部音素列、並びに、第2部分音素列および単語音素列の音素数の差が所定値以上である場合は、比較を行わずとも一致率が最低値に決まるので、処理時間を短縮することができる。
本発明の態様5に係る処理実行装置は、上記態様1から4のいずれかにおいて、上記処理実行部は、上記最尤述部音素列に応じて、処理の実行に用いるアプリケーションを特定してもよい。
上記の構成によれば、処理の実行に用いるアプリケーションは、最尤述部音素列に応じて決まる。つまり、既存の音声認識を行う装置のように、ユーザが発話した音声の意図を特定するなどの煩雑な処理を必要とせず、処理の実行に用いるアプリケーションを特定することができる。
本発明の態様6に係る処理実行装置は、上記態様1から5のいずれかにおいて、上記音素列特定部は、上記統合一致率が最も高く、かつ、該統合一致率が所定値以上の組み合わせを特定し、上記処理実行部は、上記統合一致率が所定値以上の組み合わせが無い場合、上記音声に対する自然言語処理を含む音声認識を行った結果を用いて特定した処理を実行してもよい。
上記の構成によれば、統合一致率が所定値以上の組み合わせが無い場合、自然言語処理を含む音声認識を行った結果を用いて実行する処理を特定する。これにより、ユーザの意図通りの最尤述部音素列および最尤単語音素列が特定されなかった場合でも、ユーザの意図通りの処理を実行することができる。
本発明の態様7に係る処理実行装置は、上記態様1から6のいずれかにおいて、上記音素列特定部は、外部の装置(サーバ3)によって特定された上記第1一致率、および、外部の装置によって特定された上記第2一致率を統合した上記統合一致率が最も高い、上記第1部分音素列および上記第2部分音素列の組み合わせである外部組み合わせをさらに特定し、上記外部組み合わせが、上記統合一致率が最も高い組み合わせである場合、上記外部組み合わせに基づいて、上記最尤述部音素列と上記最尤単語音素列とを特定してもよい。
上記の構成によれば、外部の装置によって特定された第1一致率および第2一致率を統合した統合一致率が最も高い組み合わせである外部組み合わせが、統合一致率が最も高い組み合わせである場合、該外部組み合わせに基づいて最尤述部音素列と最尤単語音素列とを特定する。これにより、ユーザの意図通りの処理が実行できる可能性が高くなる。
本発明の態様8に係る処理実行装置は、上記態様1から7のいずれかにおいて、上記第1の特定部は、上記入力音素列の最後の音素を含む上記第1部分音素列について、上記第1一致率を特定してもよい。
上記の構成によれば、入力音素列の最後の音素を含む第1部分音素列の第1一致率を特定する。音声が日本語などの言語の音声である場合、述部は音声の最後に来る場合が多い。このため、第1部分音素列を入力音素列の最後の音素を含む部分とすることで、入力音素列において述部に相当する可能性が高い部分を述部音素列と比較することができる。
本発明の態様9に係る処理実行装置は、上記態様1から8のいずれかにおいて、複数の上記述部音素列を、上記単語音素列のカテゴリを示すカテゴリ情報に対応付けて格納する述部音素列辞書(述部辞書32a)と、上記カテゴリごとに上記単語音素列を格納する複数の単語音素列辞書(時制辞書32b、場所辞書32c、動作辞書32d)とを記憶する記憶部(記憶部13)をさらに備え、上記第2の特定部は、上記第1一致率が特定された述部音素列に、上記述部音素列辞書にて対応付けられているカテゴリ情報を特定し、該カテゴリ情報が示す単語音素列辞書に格納されている上記単語音素列と上記第2部分音素列との上記第2一致率を特定してもよい。
上記の構成によれば、第1一致率が特定された述部音素列に対応付けられているカテゴリ情報を特定し、該カテゴリ情報が示す単語音素列辞書に格納されている単語音素列と第2部分音素列との第2一致率を比較する。これにより、第1一致率が特定された述部音素列に応じた単語音素列と第2部分音素列とを比較することができる。また、述部音素列および単語音素列は辞書データとして格納されているので、音素列を追加する場合は、適切な述部音素列辞書または単語音素列辞書に新しい音素列を追加するだけでよい。よって、新たな音素列の追加(いわゆる新たな言葉の学習)を簡単に行うことができる。
本発明の態様10に係る処理実行装置は、上記態様1から9のいずれかにおいて、上記第1の特定部は、編集距離を用いて上記第1一致率を算出し、上記第2の特定部は、編集距離を用いて上記第2一致率を算出してもよい。
上記の構成によれば、編集距離を用いて第1一致率および第2一致率を算出するので、最尤述部音素列および最尤単語音素列を正しく特定することができる。
本発明の態様11に係る処理実行装置の制御方法は、入力された音声が示す指示に応じた処理を実行する処理実行装置の制御方法であって、上記音声から生成された入力音素列の一部である第1部分音素列と、上記音声の述部候補となる複数の音素列である述部音素列のいずれかとの一致率である第1一致率を特定する第1の特定ステップ(ステップS5)と、上記入力音素列における、上記第1部分音素列以外の残部である第2部分音素列と、上記第1一致率が特定された述部音素列に応じた、上記音声の単語候補となる複数の音素列である単語音素列のいずれかとの一致率である第2一致率を特定する第2の特定ステップ(ステップS6)と、上記第1一致率と上記第2一致率とを統合した統合一致率が最も高い、上記第1部分音素列および上記第2部分音素列の組み合わせを特定して、上記入力音素列に含まれる上記述部音素列として最も確からしい最尤述部音素列と、上記入力音素列に含まれる上記単語音素列として最も確からしい最尤単語音素列とを特定する音素列特定ステップ(ステップS7)と、上記最尤述部音素列および上記最尤単語音素列に応じた処理を実行する処理実行ステップ(ステップS8)と、を含む。本態様に係る処理実行装置の制御方法は、態様1に係る処理実行装置と同様の作用効果を奏する。
本発明の各態様に係る処理実行装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記処理実行装置が備える各部(ソフトウェア要素)として動作させることにより上記処理実行装置をコンピュータにて実現させる処理実行装置の制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。さらに、各実施形態にそれぞれ開示された技術的手段を組み合わせることにより、新しい技術的特徴を形成することができる。