以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。ただし、本発明が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。各図面において、同一の構成要素には同一の符号を付し、説明は適宜省略される。
図1は、実施の形態に係る音声認識表示装置1の概略構成を示すブロック図である。音声認識表示装置1は、音声データを取得する機能、及び、該音声データから生成されたテキストデータを表示する機能を有する装置である。図1に示すように、音声認識表示装置1は、音声取得部10、時間区切音声分割部11、音声バッファ12、音声認識部13、テキスト表示部14、テキスト判定部21、バッファ制御部31を備える。
音声取得部10は、音声データを取得して、時間区切音声分割部11に送信する。時間区切音声分割部11は、受信した音声データを時間軸に沿って所定の区切時間で分割して、分割音声データを生成する。この分割音声データは、該区切時間が経過する毎に、音声バッファ12に先頭から順に格納されるとともに、音声認識部13に入力される。音声認識部13は、分割音声データを分割音声テキストデータに変換し、テキスト判定部21に送信する。テキスト判定部21は、分割音声テキストデータが空か否かを判定する。
テキスト判定部21による判定結果は、バッファ制御部31に入力される。バッファ制御部31は、分割音声テキストデータが空ではない場合、音声バッファ12に格納された分割音声データを先頭から順に結合した結合音声データを生成する。テキスト表示部14は、区切時間が経過する毎に、結合音声データを音声認識した結合音声テキストデータを表示する。これにより、音声認識精度を向上させるとともに、リアルタイム性を担保することが可能となる。
実施の形態1.
図2は、実施の形態1に係る音声認識表示装置1Aの構成を示すブロック図である。図2に示す例では、音声認識表示装置1Aは、IP電話機40での通話音声をリアルタイムで音声認識し、テキスト表示する。図2では、図1のテキスト判定部21を含む分割音声・テキスト制御部20と、バッファ制御部31を含む結合音声・テキスト制御部30とが示されている。
音声認識表示装置1Aは、時間区切音声分割部11、音声バッファ12、音声認識部13、テキスト表示部14、認識DB15、分割音声・テキスト制御部20、結合音声・テキスト制御部30を備える。分割音声・テキスト制御部20は、テキスト判定部21、分割音声送信部22、分割音声テキスト受信部23を含む。結合音声・テキスト制御部30は、バッファ制御部31、結合音声送信部32、結合音声テキスト受信部33を含む。
音声取得部10は、IP電話機40から出力されるデジタル音声信号を取得し、音声データとして時間区切音声分割部11に出力する。時間区切音声分割部11は、音声取得部10から受け取った音声データを予め設定された区切時間で区切り、複数の分割音声データを生成する。時間区切音声分割部11は、区切時間が経過する毎に、分割音声データを音声バッファ12に先頭から順に格納する。また、時間区切音声分割部11は、分割音声データを分割音声・テキスト制御部20の分割音声送信部22に送信する。
図3は、IP電話機40での通話内容及び通話音声波形の一例である。ここでは、音声の開始時刻を0とし、所定の区切時間をTdとする。音声データは、区切時間Td毎に複数の分割音声データに分割される。図3に示すように、最初の区切時間Tdが経過した時刻をTd1とし、以降、区切時間Tdが経過する毎に、順にTd2→Td3→Td4→Td5→Td6→Td7とする。時間0~Td1、Td1~Td2、Td2~Td3、Td3~Td4、Td4~Td5、Td5~Td6、Td6~Td7の分割音声データを、それぞれ分割音声データd1、d2、d3、d4、d5、d6、d7とする。
時間区切音声分割部11は、区切時間Tdが経過する毎に、分割音声データを音声バッファ12の待ち行列(音声キュー)の末尾に保存する。分割音声送信部22は、時間区切音声分割部11から受信した分割音声データを音声認識部13に送信する。音声認識部13は、認識DB15を参照して、分割音声データを分割音声テキストデータに変換して、分割音声テキスト受信部23に送信する。
認識DB15には、音声認識処理を実行する際に使用される、音響モデル、言語モデル、辞書等が格納されている。音声認識部13は、音声データを音響分析して得られる特徴量の時系列のパターンに対して、例えば、隠れマルコフモデル(Hidden Markov Model)などの音響モデルを用いることで音素を判別する。また、音声認識部13は、判別した音素に対して、辞書とN-gram等の言語モデルとを用いて、蓄積されている単語の中から最も妥当な単語を選択することでテキストデータを生成する。
分割音声テキスト受信部23は、音声認識部13から受信した分割音声テキストデータをテキスト判定部21に送信する。テキスト判定部21は、分割音声テキストデータが「空」であるか否かを判定し、判定結果をバッファ制御部31に入力する。
バッファ制御部31は、判定結果が「空でない」場合、音声バッファ12に格納されている分割音声データを先頭から順に結合した結合音声データを生成し、結合音声送信部32へ送信する。一方、判定結果が「空である」場合、バッファ制御部31は、音声バッファ12に格納されている分割音声データを削除して、音声バッファ12を空にする。
結合音声送信部32は、バッファ制御部31から受信した結合音声データを音声認識部13に送信する。音声認識部13は、認識DB15を参照して、結合音声データを結合音声テキストデータに変換して、結合音声テキスト受信部33に送信する。なお、ここでは、1つの音声認識部13が、分割音声データと結合音声データ両方の音声認識処理を行うように構成されているが、それぞれの音声データを異なる音声認識部により処理してもよい。
結合音声テキスト受信部33は、受信した結合音声テキストデータをテキスト表示部14に送信する。テキスト表示部14は、受信した結合音声テキストデータを表示する。例えば、テキスト表示部14は、区切時間Td毎に更新される結合音声テキストデータを、1行ずつ順に表示することができる。
ここで、図4及び図5A~5D、6A~6D、図7を参照して、実施の形態1に係る音声認識方法について説明する。図4は、実施の形態1に係る音声認識方法を説明するフロー図である。図5A~5Dは、各時刻経過後に音声バッファに保存される分割音声データを示す図である。図6A~6Dは、各時刻経過後にテキスト表示部に表示されるテキストを示す図である。なお、分割音声データd1、d2、d3、d4、d5、d6、d7を音声認識して生成されるテキストデータをそれぞれ、分割音声テキストデータTX1、TX2、TX3、TX4、TX5、TX6、TX7とする。
まず、音声取得部10が、IP電話機40のデジタル音声信号から音声データを取得する(ステップS10)。音声取得部10は、音声データを時間0から逐次、時間区切音声分割部11へ送信する。そして、時間区切音声分割部11が、音声データを所定の区切時間で時間軸に沿って区切時間Tdで分割して分割音声データを生成し、区切時間が経過する毎に分割音声データを音声バッファ12の末尾に保存するとともに、音声認識部13へ送信する(ステップS11)。
具体的には、時間区切音声分割部11は、最初の区切り時間Tdの経過時(時刻Td1)に、時間0~Td1の分割音声データd1を音声バッファ12へ格納する。このとき、音声バッファ12は空であるため、図5Aに示すように、分割音声データd1は、音声バッファ12の音声キューのインデックス0に格納される。
そして、音声認識部13が、認識DB15を参照して、分割音声データd1を分割音声テキストデータTX1に変換する(ステップS12)。分割音声テキストデータTX1の内容は、「通行人が倒れ」となる。分割音声テキストデータTX1は、分割音声テキスト受信部23を介して、テキスト判定部21に入力される。そして、テキスト判定部21が、分割音声テキストデータTX1が空であるか否かを判定する(ステップS13)。
テキスト判定部21による判定結果は、バッファ制御部31に入力される。上述の通り、分割音声テキストデータTX1は、空ではない。分割音声テキストデータが空ではない場合(ステップS13NO)、バッファ制御部31は、音声バッファ12に格納されている分割音声データを先頭から順に結合して結合音声データを生成し、音声認識部13へ送信する(ステップS14)。このとき、音声キューに格納されている分割音声データはインデックス0のみであるため、インデックス0の分割音声データが結合音声送信部32を介して音声認識部13へ入力される。
そして、音声認識部13は、認識DB15を参照し、結合音声データを結合音声テキストデータへ変換する。この結合音声テキストデータは、結合音声テキスト受信部33を介してテキスト表示部14へ入力される。テキスト表示部14は、受信した結合音声テキストデータを表示する(ステップS15)。このときの結合音声テキストデータの内容は、「通行人が倒れ」である。テキスト表示部14は、受信した結合音声テキストデータを1行ずつ表示する。図6Aに示すように、テキスト表示部14は「通行人が倒れ」とのテキストを表示する。
ステップS11へ戻り、次の区切時間Tdが経過するとき(時刻Td2)、時間区切音声分割部11は、時間Td1~Td2の分割音声データd2を音声バッファ12の音声キューの末尾へ格納する。このとき、図5Bに示すように、分割音声データd2は、音声キューのインデックス1に格納される。同時に、時間区切音声分割部11は、時間Td1~Td2の分割音声データd2を、分割音声送信部22へ送信する。
音声認識部13は、分割音声送信部22から分割音声データd2を受信する。そして、音声認識部13は、認識DB15を参照し、分割音声データd2を分割音声テキストデータTX2へ変換する(ステップS12)。分割音声テキストデータTX2の内容は、「ていて胸が苦しい」となる。分割音声テキストデータTX2は、分割音声テキスト受信部23を介して、テキスト判定部21に入力される。そして、テキスト判定部21が、分割音声テキストデータTX2が空であるか否かを判定する(ステップS13)。
テキスト判定部21による判定結果は、バッファ制御部31に入力される。上述の通り、分割音声テキストデータTX2は、空ではない。分割音声テキストデータが空ではない場合(ステップS13NO)、バッファ制御部31は、音声バッファ12に格納されている分割音声データを先頭から順に結合して結合音声データを生成し、音声認識部13へ送信する(ステップS14)。このとき、音声キューに格納されている分割音声データはインデックス0、1であるため、インデックス0、1の分割音声データが結合され、結合音声送信部32を介して音声認識部13へ入力される。このときの、音声認識部13へ入力される結合音声データが図7に示される。
そして、音声認識部13は、認識DB15を参照し、結合音声データを結合音声テキストデータへ変換する。この結合音声テキストデータは、結合音声テキスト受信部33を介してテキスト表示部14へ入力される。テキスト表示部14は、受信した結合音声テキストデータを表示する(ステップS15)。このときの結合音声テキストデータの内容は、「通行人が倒れていて胸が苦しい」である。図6Bに示すように、テキスト表示部14は「通行人が倒れていて胸が苦しい」とのテキストを表示する。
同様に、時刻Td6経過後まで(すなわち、時間Td2~Td3、Td3~Td4、Td4~Td5、Td5~Td6の分割音声データd3~d6に対して)、ステップS11~S15が繰り返し実行される。図5Cには、時刻Td6経過後に、音声バッファ12に格納された分割音声データが示される。図5Cに示すように、音声バッファ12には、インデックス0~5にそれぞれ分割音声データd1~d6が格納されている。また、図6Cには、図5Cの分割音声データd1~d6が先頭から順に結合された結合音声データが音声認識され、テキスト表示部14に表示されたテキストが示されている。
次に、時刻Td7経過後の動作について説明する。時間Td6~Td7では、分割音声データは無音であるものとする。ステップS11において、次の区切時間Tdが経過するとき(時刻Td7)、時間区切音声分割部11は、時間Td6~Td7の分割音声データd7を音声バッファ12の音声キューの末尾へ格納する。
図5Dに示すように、分割音声データd7は、音声キューのインデックス6に格納される。同時に、時間区切音声分割部11は、時間Td6~Td7の分割音声データd7を、分割音声送信部22へ送信する。
音声認識部13は、分割音声送信部22から分割音声データd7を受信する。そして、音声認識部13は、認識DB15を参照し、分割音声データd7を分割音声テキストデータTX7へ変換する(ステップS12)。上述の通り、分割音声データは無音であるため、分割音声テキストデータTX2の内容は空となる。分割音声テキストデータTX7は、分割音声テキスト受信部23を介して、テキスト判定部21に入力される。そして、テキスト判定部21が、分割音声テキストデータTX7が空であるか否かを判定する(ステップS13)。
テキスト判定部21による判定結果は、バッファ制御部31に入力される。上述の通り、分割音声テキストデータTX7は空であるため(ステップS13YES)、バッファ制御部31は、音声バッファ12に格納されている分割音声データを削除して(ステップS16)、音声キューを空にする。
このときにテキスト表示部14に表示されるテキストが図6Dに示される。時刻Td6経過の時点ですべての音声データのテキスト化が完了しているため、図6Cと図6Dで表示されるテキストの内容の差分はない。このように、区切り時間Tdが経過する毎に、テキスト表示部14に徐々に結合されたテキストが1行ずつ表示されていく。
所定の固定時間によって音声データを強制的に分割する比較例1では、テキスト表示部に表示されるテキストは、固定時間毎の音声データをそれぞれ音声認識したテキストが単純に結合されたものとなる。固定時間毎の音声データをそれぞれ音声認識したテキストは、前後の単語との関係をもとにした音声の解析ができず、単語の途中等で区切られている可能性のある音声データのテキストであり、このようなテキストを単純に結合しただけでは、文章として理解できない内容となる可能性がある。
これに対し、実施の形態1によれば、区切時間の度に、それまでの分割音声データをすべて結合した結合音声データを再認識させることができる。このため、音声認識部13にて、前後の単語の関係をもとにした解析が可能であり、単語の途中で区切られることなく、認識精度が向上したテキスト化が可能である。
また、無音区間によって音声分割を行う比較例2において、図4の音声データをリアルタイム認識する場合、時刻Td5とTd6の中間あたり(Td5’とする)から無音区間が始まるため、時刻Td5’までは分割音声データが生成されず、Td5’以降に初めて分割音声データを音声認識してテキストが表示されることとなる。これに対し、実施の形態1によれば、区切時間Tdの度に、それまでの音声データを結合しテキスト化することができる。これにより、Td5’経過前に、区切時間Td毎に徐々に文章が構築されていくようにテキストを表示することができ、比較例2よりもリアルタイム性が向上した音声認識が可能である。
実施の形態2.
図8は、実施の形態2に係る音声認識表示装置1Bの構成を示すブロック図である。実施の形態2では、実施の形態1と同様に、IP電話機40での通話内容(通話音声波形)をリアルタイムで音声認識し、テキスト表示する。上述のように、実施の形態1では、区切時間Td毎に更新される結合音声テキストデータを、1行ずつ順に表示している。実施の形態2では、テキスト表示部14の表示をより見やすくするために、テキスト表示部14に表示されるテキストが文章単位となるようにする。
実施の形態2において、実施の形態1と異なる点は、結合音声・テキスト制御部30がテキストバッファ34をさらに含み、バッファ制御部31が音声バッファ12を制御するとともに、テキストバッファ34を制御する点である。以下、実施の形態1との差異について詳細に説明し、重複説明は適宜省略する。
結合音声テキスト受信部33は、区切時間Td毎に結合音声テキストデータを受信すると、音声認識部13から受信した結合音声テキストデータをテキストバッファ34の空きインデックスのうち最も番号の小さいインデックスに格納する。なお、「空きインデックス」とは、行末に改行コードが付与されていないインデックスである。すなわち、空きインデックスには、結合音声テキストデータが格納されていないか、又は、行末に改行コードが付与されず、1つの文章として確定していない結合音声テキストデータが格納されている。
結合音声テキスト受信部33は、当該インデックスにすでに結合音声テキストデータが存在する場合は、既存のデータを新たなデータで上書きする。すなわち、結合音声テキストデータは、区切時間が経過する毎に新たな結合音声テキストデータに更新される。
バッファ制御部31は、テキスト判定部21から受け取った判定結果が「空」である場合、テキストバッファ34に保存されている結合音声テキストデータを1つの文章として確定する。バッファ制御部31は、例えば、テキストバッファ34に保存されている結合音声テキストデータの行末に改行コード[EOL]を付与することで、結合音声テキストデータを1つの文章として確定する。
この1つの文章として確定した結合音声テキストデータが格納されたインデックスが、使用インデックスとなる。この場合、次に結合音声テキスト受信部33が結合音声テキストデータを受信すると、前回格納した使用インデックスの、1つ後ろの空きインデックスに該結合音声テキストデータが格納されることとなる。
テキスト表示部14は、テキストバッファ34から結合音声テキストデータを読み出し、先頭インデックスから順にテキストを表示する。例えば、テキスト表示部14は、区切時間Tdよりも短い読み出し時間Tr毎に、テキストバッファ34に格納されている結合音声テキストデータを読み出して、テキストを表示することができる。
ここで、図9及び図10A~10D、11A~11Dを参照して、実施の形態2に係る音声認識方法について説明する。図9は、実施の形態2に係る音声認識方法を説明するフロー図である。図10A~10Dは、各時刻経過後にテキストバッファに保存される結合音声テキストデータを示す図である。図11A~11Dは、各時刻経過後にテキスト表示部に表示されるテキストを示す図である。
なお、図9において、図4と同一のステップには、同一の符号が付されている。IP電話機40での通話内容及び通話音声波形、音声データの区切り方、音声バッファ12の音声キューの内容の遷移については、実施の形態1と同様であるものとする(図3、図5A~5D)。
図9に示すように、最初の区切り時間Tdの経過時(時刻Td1)に、実施の形態1と同様に、ステップS10~S14の処理が実行される。そして、結合音声テキスト受信部33は、音声認識部13により変換された結合音声テキストデータをテキストバッファ34に格納する(ステップS17)。結合音声テキスト受信部33は、テキストバッファ34の、行末に改行コードが付与されていないインデックスのうち、最も番号の小さいインデックスに、「通行人が倒れ」との結合音声テキストデータを格納する。
このときのテキストバッファ34に格納されたテキストファイルの内容が、図10Aに示される。「通行人が倒れ」との結合音声テキストデータを書き込む際、テキストファイルは空である。このため、このテキストファイルの1行目が、結合音声テキストデータが格納されておらず、最も番号の小さい空きインデックスに相当する。図10Aに示すように、「通行人が倒れ」との結合音声テキストデータが、テキストファイルの1行目に書き込まれる。この時、テキストファイルの行末に改行コードが付与されていない行(1行目)が、テキストファイルの最終行となる。
そして、テキスト表示部14は、テキストバッファ34からテキストファイルを読み出して、結合音声テキストデータを表示する(ステップS18)。例えば、テキスト表示部14は、区切時間Tdよりも短い読出時間Trでテキストファイルを読み出して、テキストを表示することができる。このとき、図11Aに示すように、テキスト表示部14は「通行人が倒れ」とのテキストを表示する。
ステップS11へ戻り、次の区切時間Tdが経過すると(時刻Td2)、ステップS11~S14が再度実行される。図10Aに示すように、テキストファイルの1行目には、「通行人が倒れ」との結合音声テキストデータが格納されているものの、改行コードは付与されていない。このため、テキストファイルの1行目は、行末に改行コードが付与されず、1つの文章として確定していない結合音声テキストデータが格納されている、最も番号の小さいインデックスに相当する。
ステップS17では、「通行人が倒れていて胸が苦しい」との結合音声テキストデータが、テキストファイルの1行目に上書きされる。図10Bに示すように、「通行人が倒れていて胸が苦しい」との結合音声テキストデータが、テキストファイルの1行目に書き込まれる。そして、ステップS18では、図11Bに示すように、テキスト表示部14は「通行人が倒れていて胸が苦しい」とのテキストを表示する。
同様に、時刻Td6経過後まで、ステップS11~S14、S17、S18が繰り返し実行される。図10Cには、時刻Td6経過後に、テキストバッファ34に格納された結合音声テキストデータが示される。図10Cに示すようにテキストバッファ34には、テキストファイルの1行目に「通行人が倒れていて胸が苦しいと訴えていてえーとかかりつけの病院はないと言っています」との結合音声テキストデータが格納される。そして、図11Cに示すように、テキスト表示部14は同様のテキストを表示する。
次に、時刻Td7経過後の動作について説明する。時間Td6~Td7では、分割音声データは無音である。ステップS13において、分割音声テキストデータTX7は空であるため(YES)、ステップS19へと進む。ステップS19では、バッファ制御部31は、音声バッファ12に格納されている分割音声データを削除して、音声キューを空にするとともに、結合音声テキストデータの行末に改行コード[EOL]を付与する。このときのテキストバッファ34に格納されたテキストファイルを図10Dに示す。
また、このときのテキスト表示部14が表示するテキストを、図11Dに示す。時刻Td6の経過の時点ですべての音声データのテキスト化が完了しているため、図11Cと図11Dで表示されるテキストの内容の差分はない。このように、実施の形態2では、区切り時間Tdが経過する毎に、テキスト表示部14に徐々に結合されたテキストが表示されていく。
このように、実施の形態2では、テキストファイルを使用し、文章の区切りまでは結合音声テキストデータを上書きして更新する。これにより、テキスト表示部14に、音声認識テキストが文章単位で表示されるため、実施の形態1よりも見やすくなる。
上述したように、無音区間によって音声分割を行う比較例2では、無音と判断する音声レベルによっては音声データが文章単位で分割されないケースが発生する。そこで、実施の形態2に記載の音声認識表示装置1Bを用いて、このような問題を改善する例について説明する。ここでは、図12の発話内容及び音声波形を音声認識する。図12では、119番通報をした通報者の発話内容「近くにコンビニが見えます。他に怪我人はいません。」とその音声波形が示されている。図12において、縦軸は音声波形の音声レベル(振幅)、横軸は時間である。
上述した、無音区間によって音声分割を行う比較例2において、無音と判断する音声レベルを図12の-A1~A1とする。音声の波形のすべてが-A1~A1内に収まれば、無音と判断され、当該時刻で音声データが分割される。通報者の発話内容「近くにコンビニが見えます。」と「他に怪我人はいません。」の間には、発話していない時間Tnが存在するが、通報者の音声データに周囲のノイズ音が乗り、発話していない時間Tnの音声レベルは-A1~A1に収まっていない。
このため、比較例2では、発話していない時間Tnを無音区間と判断できず、音声データを区切ることができない。したがって、比較例2では、この音声データ全体の「近くにコンビニが見えます。他に怪我人はいません。」を一度にテキスト化することとなる。
そこで、音声認識表示装置1Bにおいて、区切時間TdをTd<1/2Tnと設定する。これにより、必ず音声キューに発話なし時間の音声データが格納されることとなる。音声認識部13では、ノイズ音はテキスト化されないため、上述したバッファ制御部31の動作により、発話なし区間の音声データが格納された時点で、結合音声テキストデータの行末に改行コード[EOL]が付与される。すなわち、全体の音声データ「近くにコンビニが見えます。他に怪我人はいません。」は、「近くにコンビニが見えます。」と「他に怪我人はいません。」の2つの文章としてテキスト化されて、テキスト表示部14に表示されることとなる。
このように、実施の形態2によれば、周囲の環境音に左右されずに文章単位での音声分割及びテキスト化が可能となり、比較例2のように、無音と判断する音声レベルによっては文章単位で音声データが分割されないケースが発生するという問題を解決することができる。
実施の形態3.
実施の形態2では、分割音声データを分割音声送信部22から、結合音声データを結合音声送信部32から別々に音声認識部13へ入力し、分割音声テキストデータを分割音声テキスト受信部23で、結合音声テキストデータを結合音声テキスト受信部33で別々に受信していた。この構成を簡素化するために、実施の形態3では、フラグを設定することで、分割音声データと結合音声データを送信する機能を1つにまとめるとともに、分割音声データと結合音声データを受信する機能を1つにまとめる。
図13は、実施の形態3に係る音声認識表示装置1Cの構成を示すブロック図である。図13に示す例では、アナログ電話機41での通話音声をリアルタイムで音声認識しテキスト表示するものとする。図13に示すように、音声認識表示装置1Cは、時間区切音声分割部11、音声バッファ12、音声認識部13、テキスト表示部14、認識DB15、テキスト判定部21、バッファ制御部31、テキストバッファ34、共有メモリ50、音声送信部51、テキスト受信部52を含む。
実施の形態3において、実施の形態2と異なる点は、音声送信部51が分割音声データと結合音声データのいずれを送信しているかを示すフラグを設定可能であり、テキスト受信部52は該フラグを参照して、分割音声データをテキスト判定部21へ送信するか、結合音声データをテキストバッファ34へ書き込むかを選択的に実行する点である。以下、実施の形態1との差異について詳細に説明し、重複説明は適宜省略する。
音声取得部10は、アナログ電話機41から出力されるアナログ音声信号を、該音声取得部10が有するアナログ-デジタル変換部(A-D変換部)10Aにてデジタル音声データへ変換し、時間区切音声分割部11へ出力する。時間区切音声分割部11は、音声データを予め設定された区切時間Tdで区切りって分割音声データを生成し、区切時間Tdが経過する毎に該分割音声データを音声バッファ12に先頭から順に格納する。また、時間区切音声分割部11は、分割音声データを音声送信部51に送信する。
音声送信部51は、分割音声データに加えて、バッファ制御部31からの結合音声データを受信する。音声送信部51は、時間区切音声分割部11から受信した分割音声データ、及び、バッファ制御部31から受信した結合音声データを音声認識部13に送信する。このとき、音声送信部51は、共有メモリ50に、時間区切音声分割部11から分割音声データを受信した場合は共有メモリ50にFALSEフラグを設定し、バッファ制御部31から結合音声データを受信した場合はTRUEフラグを設定する。
音声認識部13は、認識DB15を参照して、分割音声データを分割音声テキストデータに、結合音声データを結合音声テキストデータにそれぞれ変換して、テキスト受信部52に送信する。共有メモリ50は、音声送信部51、テキスト受信部52からアクセス可能である。テキスト受信部52は、共有メモリ50に設定されたフラグを参照し、フラグがFALSEの場合には、分割音声テキストデータをテキスト判定部21に入力する。また、テキスト受信部52は、フラグがTRUEの場合には、結合音声テキストデータをテキストバッファ34の、行末に改行コードが付与されていない、空きインデックスのうち最も番号の小さいインデックスに書き込む。なお、この時すでに当該インデックスに結合音声テキストデータが存在する場合には、既存のデータを新たなデータで上書きする。
上述の通り、テキスト判定部21は、分割音声テキストデータが「空」であるか否かを判定し、判定結果をバッファ制御部31に入力する。バッファ制御部31は、判定結果が「空でない」場合、音声バッファ12に格納されている分割音声データを先頭から順に結合した結合音声データを生成し、音声送信部51へ送信する。一方、判定結果が「空である」場合、バッファ制御部31は、音声バッファ12に格納されている分割音声データを削除して、音声キューを空にするとともに、結合音声テキストデータの行末に改行コード[EOL]を付与する。テキスト表示部14は、読出時間Tr(Tr<Td)でテキストバッファ34のテキストファイルを読み出し、テキストを表示する。
以下、実施の形態3に係る音声認識方法について説明する。なお、ここに示す例では、音声取得部10では、アナログ電話機41から入力されたアナログ音声が時間0から逐次A-D変換され、時間区切音声分割部11へA-D変換後の音声データが逐次入力される。この音声データの波形、音声データの区切り方、音声バッファ12の音声キューの内容の遷移、テキストバッファ34のテキスのテキストファイルの内容の遷移、テキスト表示部14に表示されるテキストについては、実施の形態2と同様であるものとする(図3、図5A~5D、図10A~10D、図11A~11D)。
時間区切音声分割部11は、時刻Td1経過時に、時間0~Td1の分割音声データd1を音声バッファ12の音声キューの末尾へ格納する。このとき、音声キューは空のため、分割音声データd1は音声キューのインデックス0に格納される。このときの音声キューの内容は、図5Aと同様である。同時に、時間区切音声分割部11は分割音声データd1を音声送信部51へ送信する。
音声送信部51は、時間区切音声分割部11から分割音声データd1を受信したため、共有メモリ50にFALSEフラグを設定する。また、音声送信部51は、分割音声データd1を音声認識部13へ送信する。音声認識部13は、認識DB15を参照して、分割音声データd1を分割音声テキストデータTX1へ変換し、テキスト受信部52へ送信する。このときの分割音声テキストデータTX1は、「通行人が倒れ」である。
テキスト受信部52は、共有メモリ50に保存されたフラグを参照し、フラグがFALSEであるため、「通行人が倒れ」との分割音声テキストデータTX1をテキスト判定部21へ送信する。テキスト判定部21は、テキスト受信部52からの分割音声テキストデータTX1が空であるか否かを判定し、判定結果をバッファ制御部31に送信する。分割音声テキストデータTX1は空でないため、バッファ制御部31は、音声バッファ12に格納された分割音声データを先頭から順に結合する。
このとき、音声バッファ12に格納されている分割音声データはインデックス0のデータのみであるため、インデックス0のデータを結合音声データとして音声送信部51へ送信する。音声送信部51は、バッファ制御部31から結合音声データを受信したため、共有メモリ50にTRUEフラグを設定する。また、音声送信部51は、結合音声データを音声認識部13へ送信する。
音声認識部13は、認識DB15を参照して、結合音声データを結合音声テキストデータへ変換し、テキスト受信部52へ送信する。このときの結合音声テキストデータは、「通行人が倒れ」である。
テキスト受信部52は、共有メモリ50に保存されたフラグを参照し、フラグがTRUEであるため、「通行人が倒れ」との結合音声テキストデータをテキストバッファ34へ書き込む。上述したように、「通行人が倒れ」との結合音声テキストデータは、行末に改行コードが付与されていない、テキストファイルの1行目に書き込まれる(図10A)。そして、テキスト表示部14は、読出時間Tr(Tr<Td)で、テキストバッファ34に格納されたテキストファイルを読み出し、テキストを表示する(図11A)。
次の区切時間Tdが経過すると(時刻Td2)、時間区切音声分割部11は、時間Td1~Td2の分割音声データd2を音声バッファ12の末尾に格納する。図5Bに示すように、分割音声データd2は音声キューのインデックス1に保存される。同時に、時間区切音声分割部11は、分割音声データd2を音声送信部51に送信する。
音声送信部51は、時間区切音声分割部11から分割音声データd2を受信したため、共有メモリ50にFALSEフラグを設定する。また、音声送信部51は、分割音声データd2を音声認識部13へ送信する。音声認識部13は、認識DB15を参照して、分割音声データd2を分割音声テキストデータTX2へ変換し、テキスト受信部52へ送信する。このときの分割音声テキストデータTX2は、「ていて胸が苦しい」である。
テキスト受信部52は、共有メモリ50に保存されたフラグを参照し、フラグがFALSEであるため、「ていて胸が苦しい」との分割音声テキストデータTX2をテキスト判定部21へ送信する。テキスト判定部21は、テキスト受信部52からの分割音声テキストデータTX2が空であるか否かを判定し、判定結果をバッファ制御部31へ送信する。分割音声テキストデータTX2は空ではないため、バッファ制御部31は、音声バッファ12に格納されている分割音声データを先頭から順に結合する。このときの結合音声データは、図7と同様である。
このとき、音声バッファ12に格納されている分割音声データはインデックス0、1のデータであるため、インデックス0、1のデータを結合音声データとして音声送信部51へ送信する。音声送信部51は、バッファ制御部31から結合音声データを受信したため、共有メモリ50にTRUEフラグを設定する。また、音声送信部51は、結合音声データを音声認識部13へ送信する。
音声認識部13は、認識DB15を参照して、結合音声データを結合音声テキストデータへ変換し、テキスト受信部52へ送信する。このときの結合音声テキストデータは、「通行人が倒れていて胸が苦しい」である。
テキスト受信部52は、共有メモリ50に保存されたフラグを参照し、フラグがTRUEであるため、「通行人が倒れていて胸が苦しい」との結合音声テキストデータをテキストバッファ34に書き込む。図10Aに示すように、テキストファイルの1行目には、「通行人が倒れ」との結合音声データが格納されているものの、改行コードは付与されていない。このため、「通行人が倒れていて胸が苦しい」との結合音声テキストデータで、テキストファイルの1行目が上書きされる(図10B)。そして、テキスト表示部14は、テキストバッファ34に格納されたテキストファイルを読み出し、テキストを表示する(図11B)。
以降、時刻Td6経過後まで、同様の処理が繰り返し実行される。図10Cに、時刻Td6経過後に、テキストバッファ34に格納された結合音声テキストデータが示される。そして、図11Cに、このときにテキスト表示部14に表示されるテキストが示される。
次に、時刻Td7経過後の動作について説明する。時間Td6~Td7では、分割音声データは無音である。時刻Td7が経過すると、時間区切音声分割部11は、時間Td6~Td7の分割音声データd7を音声バッファ12の末尾へ格納する。図5Dに示すように、分割音声データd7は音声キューのインデックス6に保存される。同時に、時間区切音声分割部11は、分割音声データd7を音声送信部51に送信する。
音声送信部51は、時間区切音声分割部11から分割音声データd7を受信したため、共有メモリ50にFALSEフラグを設定する。また、音声送信部51は、分割音声データd7を音声認識部13へ送信する。音声認識部13は、認識DB15を参照して、分割音声データd7を分割音声テキストデータへ変換し、テキスト受信部52へ送信する。このときの分割音声テキストデータは、「-(空)」である。
テキスト受信部52は、共有メモリ50に保存されたフラグを参照し、フラグがFALSEであるため、「-(空)」との分割音声テキストデータをテキスト判定部21へ送信する。テキスト判定部21は、テキスト受信部52からの分割音声テキストデータTX7が空であるか否かを判定し、判定結果をバッファ制御部31に送信する。この分割音声テキストデータTX7は空であるため、バッファ制御部31は、音声バッファ12に格納されている分割音声データを削除し、音声キューを空にするとともに、結合音声テキストデータの行末に改行コード[EOL]を付与する。
このときのテキストバッファ34に格納された結合音声テキストデータは図10Dと同様である。そして、図11Dに、このときにテキスト表示部14に表示されるテキストが示される。このように、実施の形態3においても、実施の形態2と同様に、区切り時間Tdが経過する毎に、テキスト表示部14に徐々に結合されたテキストが表示されていく。
以上説明したように、実施の形態3によれば、実施の形態2と同様に、テキスト表示部14に、音声認識テキストを文章単位で表示させることができる。また、音声認識部13への分割音声データ、結合音声データの送信機能、音声認識部13からの分割音声テキストデータ、結合音声テキストデータの受信機能をそれぞれ1つの構成要素にまとめることがでるため、音声認識表示装置の構成を簡素化することが可能となる。
実施の形態4.
実施の形態4では、実施の形態2の音声認識表示装置1Bを2つ用い、2人の話者が発話した内容を時系列で表示する。図14は、実施の形態4に係る音声認識表示装置1Dの構成を示す図である。図14において、実施の形態2と同一の構成要素には同一の符号を付している。また、2人の話者X、Yがそれぞれ用いる音声認識表示装置1Bを区別するために、各要素にX又はYの符号を付している。
なお、図14に示す例では、2人の話者(話者X、話者Y)がそれぞれ使用する音声認識表示装置1Bで、1つの音声認識部13が共用されているが、音声認識部13をそれぞれ別に設けてもよい。また、2人の話者が発話した内容は1つのテキスト表示部14にまとめて表示されるが、テキスト表示部14を話者Xと話者Yとにそれぞれ別に設けて、同一内容を表示してもよい。
実施の形態4では、2つのマイク42(マイクX、マイクY)でそれぞれ集音される話者X、Yの発話内容が時系列で表示される。図14に示すように、実施の形態4に係る音声認識表示装置1Dには、実施の形態2において説明した音声認識表示装置1Bが2つ含まれている。
音声認識表示装置1Dは、テキスト併合部60と併合テキストバッファ61をさらに含む。テキスト併合部60は、テキストバッファXに格納されるテキストファイルXとテキストバッファYに格納されるテキストファイルYとを併合する。併合テキストバッファ61は、テキスト併合部60が併合した併合テキストデータを格納する。テキスト表示部14は、併合テキストバッファ61を読み出して、併合テキストデータを表示する。
実施の形態4では、実施の形態2と異なり、テキストバッファX、Yにそれぞれ格納されるテキストファイルX、Yは、テキストデータをいくつかのフィールド(項目)に分け、各項目の情報を区切る区切り文字(デリミタ)にカンマやタブを用いたCSV(character-separated values)形式のテキストファイルである。テキストファイルX、Yは、TIME_FIELD(1区切り目)とTEXT_FIELD(2区切目)を持つものとする。
また、テキストファイルX、Yを併合した併合テキストデータも、CSV形式のテキストファイルである。併合テキストデータは、SPEAKER_FIELD(1区切目)、TIME_FIELD(2区切り目)、TEXT_FIELD(3区切り目)を持つものとする。
図15A、図15Bは、それぞれ区切時間が3回分経過した後に、音声バッファX、Yに保存される分割音声データを示す図である。図16A、図16Bと、図17A、図17Bと、図18A、図18Bとは、それぞれ1~3回目の区切り時間経過後に、テキストバッファX、Yに保存される分割音声テキストデータを示す図である。図19A~図19Fは、併合前から併合4回目までの併合テキストバッファの保存状態を示す。図20A~図20Fは、表示前から表示5回目までのテキスト表示部の表示状態を示す図である。
時間区切音声分割部X、Yは、区切時間が経過する毎に、それぞれ分割音声データを音声バッファX、Yの待ち行列(音声キューX、Y)の末尾に保存する。3回分の区切時間が経過すると、音声キューX、Yは、図15A、図15Bに示すものとなる。実施の形態4では、時間区切音声分割部X、Yは、音声キューX、Yに分割音声データを格納する際に、分割音声データの格納時間を音声キューA、Bの各インデックスに紐づけて保存する。
バッファ制御部X、Yは、テキスト判定部X、Yから受信した判定結果が「空ではない」場合、音声キューX、Yに格納されている分割音声データを先頭から結合し、結合音声送信部X、Yにそれぞれ送信する。この動作は、実施の形態2と同様である。これに加えて、バッファ制御部X、Yは、音声キューX、Yの先頭インデックスの分割音声データに紐づけされている格納時刻を、テキストファイルX、Yの最終行(改行コード[EOL]が付与されていない行)のTIME_FIELDに書き込む。
なお、テキスト判定部X、Yから受信した判定結果が「空」の場合、実施の形態2と同様に、バッファ制御部X、Yは、音声バッファX、Yに格納されている分割音声データを削除し、各音声キューX、Yを空にする。
以下、図14に示す音声認識表示装置1Dの動作を時間軸に沿って説明する。図15A、図15Bを参照すると、時間区切音声分割部X、Yにおいて1回目及び2回目の区切時間が経過したときは、それぞれの分割音声データは空ではない。このため、バッファ制御部X、Yがテキスト判定部X、Yから受信する判定結果は、いずれも「空ではない」となる。したがって、1回目の区切時間経過後の、テキストファイルXは図16A、テキストファイルYは図16Bに示すものとなる。また、2回目の区切時間経過後の、テキストファイルXは図17A、テキストファイルYは図17Bに示すものとなる。
その後、時間区切音声分割部X、Yにおいて3回目の区切時間が経過したときは、分割音声データは空である。このため、バッファ制御部X、Yがテキスト判定部X、Yから受信する判定結果は、いずれも「空」となる。このとき、バッファ制御部X、Yは、テキストファイルX、Yの最終行の末尾にそれぞれ改行コード[EOL]を付与する。したがって、3回目の区切時間経過後の、テキストファイルXは図18A、テキストファイルYは図18Bに示すものとなる。
テキスト併合部60は、併合時間Tm(Tm<Td)が経過するごとに、テキストファイルX及びテキストファイルYを読み出し、併合テキストバッファ61に格納された併合テキストファイルを更新する。テキスト併合部60は、まず、テキストバッファXに格納されているテキストファイルXを読み出す。そして、テキスト併合部60は、テキストファイルXの最終行(改行コード[EOL]が付与されていない行)のTIME_FIELDの時刻をキーにして、併合テキストバッファ61に格納されている併合テキストファイルのTIME_FIELDの時刻が一致し、かつ、SPEAKER_FIELDが「話者X」である行を探索する。
該当する行が存在する場合、その行のTEXT_FIELDを、テキストファイルXのTEXT_FIELDの内容で上書きする。該当する行が存在しない場合、テキストファイルXの最終行のTIME_FIELDの時刻を参照して、併合テキストファイルのTIME_FIELDの時刻が昇順(すなわち、インデックス番号が増えるに従い、時刻が古いものから新しいもの)となるように、併合テキストファイルの該当行にテキストファイルXの内容が書き込まれる。
具体的には、併合テキストファイルの該当行において、SPEAKER_FIELDに「話者X」、TIME_FIELDにテキストファイルXの最終行のTIME_FIELDの時刻、TEXT_FIELDにテキストファイルXの最終行のTEXT_FIELDの内容が書き込まれる。テキストファイルYについても、テキストファイルXと同様の動作で、併合テキストファイルの該当行にテキストファイルYの内容が書き込まれる。
例として、区切時間Tdを500msec、併合時間Tmを400msecとし、テキスト併合部60が動作する1回目の併合時間を13:00:15.400として、テキスト併合部60の動作の流れを説明する。
まず、テキスト併合部60の動作開始前(13:00:15.000)(併合前)では、併合テキストバッファ61に保存される併合テキストファイルは、図19Aのような空の状態である。併合時間400msecが経過した併合1回目(13:00:15.400)の時刻には、テキストファイルXは図16Aであり、テキストファイルYは空である。このとき、テキスト併合部60の動作により、併合テキストファイルは図19Bのようになる。
その後、併合テキストファイルは、併合2回目(13:00:15.800)の時刻に図19C、併合3回目(13:00:16.200)の時刻に図19D、併合4回目(13:00:16.600)の時刻に図19E、併合5回目(13:00:17.000)の時刻に図19Fとなる。
テキスト表示部14は、所定の読出時間Tr(Tr<Tm)で、併合テキストファイルを読み出して表示する。図20Aに示すように、実施の形態4では、テキスト表示部14は、話者X用の表示エリア(左側)と話者Y用の表示エリア(右側)の2つのエリアを有する。テキスト表示部14は、FIELD行を除いた併合テキストファイルを先頭行から1行ずつ読みだし、テキスト表示手段で先頭行から順に表示する。このとき、併合テキストファイルのSPEAKER_FIELDが「話者X」の併合テキストデータを、話者X用の表示エリア(左側)に表示する。また、SPEAKER_FIELDが「話者Y」の併合テキストデータを、話者Y用の表示エリア(右側)に表示する。
上述の通り、併合時間Tmを400msecとし、読出時間Trを例えば300msecとする。テキスト表示部14が動作する1回目の表示時間を13:00:15.600として、テキスト表示部14の動作の流れを説明する。
まず、テキスト表示部14の動作開始前(13:00:15.000)(表示前)では、テキスト表示部14に表示されるテキストは、図20Aのような空の状態である。読出時間300msが経過した表示1回目(13:00:15.600)の時刻には、併合テキストファイルは図19Bであるため、テキスト表示部14に表示されるテキストは図20Bのようになる。
その後、表示2回目(13:00:15.900)の時刻では、併合テキストファイルは図19Cであるため、テキスト表示部14に表示されるテキストは図20Cのようになる。そして、表示3回目(13:00:16.200)では、併合テキストファイルは図19Dであるため、テキスト表示部14に表示されるテキストは図20Dのようになる。
表示4回目(13:00:16.500)の時刻では、併合テキストファイルは図19Dのままであるため、テキスト表示部14に表示されるテキストは、表示3回目(図20D)と変わらず、図20Eのようになる。表示5回目(13:00:16.800)の時刻では、併合テキストファイルは図19Eであるため、テキスト表示部14に表示されるテキストは図20Fのようになる。
このように、実施の形態4では、実施の形態2と同様のリアルタイム性を担保しつつ、2人の話者の会話内容をチャットのように表示することができる。なお、ここでは、2つのマイクを使用した例を示したが、例えば、電話機での送話音声を一方の音声データ、受話音声を他方の音声データとして、これらをチャット形式で表示することも可能である。これにより、緊急通報システムなどで、受付者と通報者の音声をリアルタイムにチャット形式でテキスト化がすることができ、他の指令員が通報内容を瞬時に把握し、適切な業務(消防車や救急車の出動等)を迅速に行うことが可能となる。
実施の形態5.
図21は、実施の形態5に係る音声認識表示装置1Eの構成を示すブロック図である。図21に示すように、音声認識表示装置1Eは、実施の形態2の音声認識表示装置1Bの構成に加えて、全体音声バッファ16、音声再生部17をさらに備える。
図21に示す例では、音声認識表示装置1Eは、マイク42により集音された発話内容をリアルタイムでテキスト化するとともに、1つの文章のテキスト化が完了する度に自動で当該テキストと対応する音声を読み上げるか、又は、ユーザ操作により1文章単位で対応する音声を読み上げる。以下、実施の形態2との差異について詳細に説明し、重複説明は適宜省略する。
音声取得部10は、取得した音声データを時間区切音声分割部11へ送信するとともに、音声データの全てを全体音声バッファ16に格納する。実施の形態5では、時間区切音声分割部11は、音声バッファ12に分割音声データを格納する際に、分割回数カウンタを1プラスして音声キューの各インデックスに紐づけて保存する。なお、分割回数カウンタは、音声データの分割回数を計測するカウンタであり、初期値は0である。
また、実施の形態2と異なり、テキストバッファ34に格納されるテキストファイルは、テキストデータをいくつかのフィールド(項目)に分け、各項目の情報を区切る区切り文字(デリミタ)にカンマやタブを用いたCSV形式のテキストファイルである。このテキストファイルは、COUNT_FIELD(1区切り目)とTEXT_FIELD(2区切目)を持つものとする。
実施の形態2と同様に、バッファ制御部31は、テキスト判定部21から入力された判定結果が「空でない」場合、音声キューに格納されている分割音声データを先頭から結合し、結合音声送信部32に送信する。このとき、バッファ制御部31は、音声キューの先頭インデックスの分割音声データに紐づけされた分割回数カウンタ値を、テキストバッファ34に格納されているテキストファイルの最終行(改行コード[EOL]が付与されていない行)のCOUNT_FIELDに書き込む。
なお、テキスト判定部21から入力された判定結果が「空」の場合、実施の形態2と同様に、バッファ制御部31は、音声バッファ12に格納されている分割音声データを削除し、音声キューを空にする。
テキスト表示部14は、上述したテキストの表示を行うとともに、1つの文章のテキスト化が完了する度に、自動で又はユーザ操作により、音声再生部17へ読み出したテキストファイルの分割回数カウンタ値を含む音声再生指示を出力する。なお、テキスト表示部14は、表示装置と入力装置とが一体化したタッチパネルを用い、ユーザ操作を受け付け可能に構成されてもよい。音声再生部17は、音声再生指示を受けると、全体音声バッファ16に格納された音声データを読み出し、分割回数カウンタ値に基づく再生開始位置から音声データの再生を行う。
以下、図21に示す音声認識表示装置1Eの動作を時間軸に沿って説明する。図22は、図21のマイク42で集音した発話内容及び発話音声波形の一例を示す図である。図22において、音声の開始時刻を0とし、所定の区切時間をTdとする。図22に示すように、最初の区切時間Tdが経過した時刻をTd1とし、以降、区切時間Tdが経過する毎に、順にTd2→Td3→Td4→Td5→Td6→Td7とする。時間区切音声分割部11は、時刻Td1~Td7に音声データを分割する。
図23Aは、1文章目の3回分の区切時間Td経過後(時刻Td3経過後)に音声バッファ12に保存される分割音声データを示す図である。図23Bは、2文章目の3回分の区切時間Td経過後(時刻Td7経過後)に音声バッファ12に保存される分割音声データを示す図である。
図24A~図24Gは、それぞれ時刻Td1~Td7経過後にテキストバッファに保存される結合音声テキストデータを示す図である。図25Aは、テキスト表示部14の初期表示状態を示している。図25B~図25Gは、それぞれ時刻Td1~Td7経過後にテキスト表示部14に表示されるテキストを示す図である。
図23Aを参照すると、時刻Td1における1回目及び時刻Td2における2回目の音声分割では、それぞれの分割音声データは空ではないため、テキスト判定部21による判定結果は「空でない」となる。このため、時刻Td1経過後のテキストファイルは図24Aとなり、時刻Td2経過後のテキストファイルは図24Bとなる。
その後、時刻Td3における3回目の音声分割では分割音声データが空であるため、テキスト判定部21による判定結果は「空」となる。このため、バッファ制御部31は、テキストファイルの最終行(1行目)の末尾に改行コード[EOL]を付与する。したがって、Td3経過後のテキストファイルは図24Cとなる。
次に、図23Bを参照すると、時刻Td4、Td5、Td6における4、5、6回目の音声分割では、それぞれの分割音声データは空ではないため、テキスト判定部21による判定結果は「空でない」となる。このため、時刻Td4経過後のテキストファイルは図24Dとなり、時刻Td5経過後のテキストファイルは図24E、時刻Td6経過後のテキストファイルは図24Fとなる。
その後、時刻Td7における7回目の音声分割では分割音声データは空であるため、テキスト判定部21による判定結果は「空」となる。このため、バッファ制御部31は、テキストファイルの最終行(2行目)の末尾に改行コード[EOL]を付与する。したがって、Td7経過後のテキストファイルは図24Gとなる。
テキスト表示部14は、所定の読出時間Tr(Tr<Td)でテキストファイルを読み出して表示する。また、テキスト表示部14は、表示エリアの右側に、[再生]ボタンを表示可能である。例えば、テキスト表示部14は、初期表示では[再生]ボタンを非表示とし、ある行に何らかのテキストが表示された場合、当該行の右側に[再生]ボタンを表示することができる。音声再生部17は、ユーザの[再生]ボタンの押下に応じて、音声データを再生することができる。
このとき、各[再生]ボタンには、当該行に表示されているテキストに対応する分割回数カウンタ値が紐づけられている。ユーザが[再生]ボタンを押下すると、テキスト表示部14は、音声再生部17へ当該行のテキストに対応する分割回数カウンタ値を含む音声再生指示を送信する。また、テキスト表示部14がテキストファイルを読み出したタイミングで、改行コード[EOL]が付与された行を検出した場合、音声再生部17へ当該行のCOUNT_FIELDの値(分割回数カウンタ値)とともに音声再生指示を出力してもよい。
ここで、テキスト表示部14の動作の流れを説明する。図25Aにテキスト表示部14の初期表示状態が示される。時刻Td1が経過すると(1回目の音声分割)、テキストバッファ34に保存されるテキストファイルは図24Aとなる。テキスト表示部14では、図25Bに示すように、1行目にテキストが表示される。このとき、はじめて当該行にテキストが表示されたため、当該行の右側に[再生]ボタンが表示される。
時刻Td2が経過すると(2回目の音声分割)、テキストバッファ34に保存されるテキストファイルは図24Bとなる。テキスト表示部14では、図25Cに示すように、1行目のテキストが更新される。このとき、当該行はすでにテキストが表示されていたため、[再生]ボタンは表示されたままである。
時刻Td3が経過すると(3回目の音声分割)、テキストバッファ34に保存されるテキストファイルは図24Cとなる。図24Bと図24Cとの違いは、1行目の行末に改行コード[EOL]が付与されているのみであるため、図25Dに示すように、テキスト表示部14の1行目のテキストは変化しない。
なお、テキスト表示部14は、テキストファイルの1行目に改行コード[EOL]を検出した場合、音声再生部17へテキストファイルの1行目のCOUNT_FIELDに書き込まれた分割回数カウント値「1」とともに、音声再生指示を自動で送信してもよい。
時刻Td4が経過すると(4回目の音声分割)、テキストバッファ34に保存されるテキストファイルは図24Dとなる。テキスト表示部14では、図25Eに示すように、2行目のテキストが表示される。このとき、はじめて当該行にテキストが表示されたため、当該行の右側に[再生]ボタンが表示される。
時刻Td5、Td6が経過すると(5回目、6回目の音声分割)、テキストファイルはそれぞれ図24E、図24Fとなる。テキスト表示部14では、図25E、図25Fに示すように、2行目のテキストが更新される。このとき、当該行はすでにテキストが表示されていたため、[再生]ボタンは表示されたままである。
時刻Td7が経過すると(7回目の音声分割)、テキストバッファ34に保存されるテキストファイルは図24Gとなる。図24Fと図24Gとの違いは、2行目の行末に改行コード[EOL]が付与されているのみであるため、図25Hに示すように、テキスト表示部14の2行目のテキストは変化しない。
なお、テキスト表示部14は、テキストファイルの2行目に改行コード[EOL]を検出した場合、音声再生部17へテキストファイルの2行目のCOUNT_FIELDに書き込まれた分割回数カウント値「4」とともに、音声再生指示を自動で送信してもよい。
音声再生部17は、テキスト表示部14から分割回数カウンタ値を含む音声再生指示を受けると、全体音声バッファ16から音声データを取得し、以下の式から計算される再生開始位置から音声を再生する。
再生開始位置(時間)=(分割回数カウンタ値-1)×Td
これにより、テキスト表示部14で1行ごとにテキストが表示される度に、自動的に表示されたテキストに対応する音声が読み上げられる。
なお、テキスト表示部14に[再生]ボタンが表示された時点で、当該テキストに対応する音声の再生がいつでも可能となる。つまり、文章の終わり(自動再生)を待たずとも、[再生]ボタンを押下することで、押下時点のテキストと対応する音声の再生が可能である。さらに、発話内容が増えた場合でも、テキストと対応する[再生]ボタンを押下することで、過去に遡ってテキストと対応する音声の再生が可能となる。
以上説明したように、実施の形態5によれば、発話内容についてリアルタイムで音声認識を行い、テキストが表示されるたびに1文章単位で、当該文章と対応する音声の自動再生が可能となる。また、1文章単位で、又は、文章の途中で、当該文章と対応する音声の手動再生が可能となる。これにより、例えば、取材等で取得した音声データを音声認識でテキストに変換した後に、作業者がテキストと音声とを比較して、人手によりテキストを修正する作業を行う場合に効果を発揮する。
なお、上述した様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU、メモリ、その他の回線で構成することができる。また、本発明は、任意の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。従って、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
プログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、random-access memory(RAM)、read-only memory(ROM)、フラッシュメモリ、solid-state drive(SSD)又はその他のメモリ技術、CD-ROM、digital versatile disc(DVD)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。