以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、発話練習装置(音声訓練システムともいう)に対して本発明を適用した場合の実施形態である。
[1. 発話練習装置Sの構成及び機能]
初めに、図1を参照して、本実施形態に係る発話練習装置Sの概要構成及び機能について説明する。図1は、本実施形態に係る発話練習装置Sの概要構成例を示す図である。なお、発話練習装置の一例として、パーソナルコンピュータ、タブレット端末、携帯型情報端末(スマートフォン等)などが挙げられる。図1に示すように、発話練習装置Sは、通信部1、記憶部2、制御部3、操作部4、及びインターフェース(IF)部5等を備えて構成され、これらの構成要素はバス6に接続されている。操作部4は、発話練習装置Sのユーザ(例えば、練習者や管理者等)の操作(ユーザ操作)に応じた信号を制御部3へ出力する。操作部4の例として、マウスやキーボード、或いは操作表示機能を有するタッチパネルなどが挙げられる。インターフェース部5には、マイクM、及びディスプレイD等が接続される。なお、マイクM、及びディスプレイDは、発話練習装置Sと一体型であってもよいし、別体であってもよい。マイクMは、アナウンスなどの発話練習を行う練習者である話者が、複数の文要素を含む文(文章)を音読したときに発した音声を集音する。文要素は、文を構成する単位である。文要素の例として、フレーズ、文節、単語の他、複数のフレーズが結合した結合フレーズ等が挙げられる。ここで、フレーズは、一般に文章を読むときに一息で読む単位である。フレーズは、1以上の文節から構成される。つまり、1つのフレーズが1つの文節から構成される場合もあるし、1つのフレーズが複数の文節から構成される場合もある。文節は、例えば、1つ以上の単語のまとまりである。単語には、名詞、動詞、形容詞、副詞、及び接続詞等の自立語(単独で文節を構成できる品詞)や、助動詞及び助詞等の付属語(単独で文節を構成できない品詞)などがある。音読対象となる文の例として、アナウンス、朗読などで用いられる文章などが挙げられる。
ディスプレイDには、制御部3からの表示指令にしたがって、音読評価画面が表示される。音読評価画面は、話者が文を音読したときの音読評価の結果を示す情報を表示する画面である。音読評価は、音読対象となる文を音読するときの手本となる音声(以下、「手本音声」という)の波形を示す音声波形データと、話者が音読対象となる文を音読したときに発した音声(以下、「話者音声」という)の波形を示す音声波形データとに基づいて制御部3により行われる。音読評価画面には、音読評価の結果を示す情報として、例えば、得点(評価点)を示す情報や、手本音声の各音要素と話者音声の各音要素とを比較可能に示す情報などが表示される。ここで、音要素の例として、音高(ピッチまたは抑揚ともいう)、音圧、音読スピード、間合いなどが挙げられる。
図2(A)は、音読評価画面の一例を示す図である。図2(A)に示す音読評価画面には、各種ボタン、及び表示領域50〜53等が設けられている。各種ボタンには、手本音声と話者音声のそれぞれを再生するための再生ボタン、及びマイクMにより集音された音声を録音するための録音ボタン等がある。表示領域50には、音読対象となる文を表すテキスト(以下、「文テキスト」という)が表示されている。文テキストには句読点が含まれている。なお、図2(A)に示す文テキストにおいて、丸、三角、四角等の記号が含まれているが、これらの記号は、実際には、漢字、ひらがな、またはカタカナである(他の図面についても同様)。表示領域51には、手本の音高の時系列的な変化を表すグラフ51aと、手本の音圧の時系列的な変化を表すグラフ51bとが、時間軸tに沿って表示されている。表示領域52には、話者の音高の時系列的な変化を表すグラフ52bと、話者の音圧の時系列的な変化を表すグラフ52aとが、時間軸tに沿って表示されている。なお、時間軸tを表す領域内には、スクロールバーScが表示されている。スクロールバーScは、スクロール指示を示すユーザ操作にしたがって左右方向に移動される。そして、スクロールバーScの移動に応じて表示領域51及び52が左右方向にスクロールする。
また、図2(A)の例では、表示バー51cと表示バー52cとが、それぞれに対応する文要素区間毎に、表示領域51と表示領域52の境界部分において上下方向に並べられて選択可能に表示されている。また、表示バー51cは、文の先頭から時系列で表示領域51に複数表示されており、これらの複数の表示バー51cは離間して表示されている(表示バー52cも同様)。これにより、話者は、表示バー51cと表示バー52cとを基準として手本音声の音要素と話者音声の音要素とを比較することで、手本音声の音要素と話者音声の音要素との違いを、文要素区間毎に把握することができる。ここで、表示バー51cに対応する文要素区間は、手本音声の波形を示す音声波形データに基づいて特定された区間であって、文を構成する文要素(例えば、フレーズ)の開始タイミングから終了タイミングまでの区間である。一方、表示バー52cに対応する文要素区間は、話者音声の波形を示す音声波形データに基づいて特定された区間であって、文を構成する文要素(例えば、フレーズ)の開始タイミングから終了タイミングまでの区間である。それぞれの文要素区間は、それぞれの音声波形データが示す音声の波形の時間経過方向(時間軸tと並行する方向)における時間範囲(波形の時間範囲)が波形の塊毎に区分(分割)されて特定される。特定された文要素区間には、例えば先頭から順番にシリアル番号が付与される。また、表示バー51cの時間経過方向の長さD1(言い換えれば、ピクセル数)は、表示バー51cに対応する文要素区間の時間長に応じた長さに設定されている。同様に、表示バー52cの時間経過方向の長さD2は、表示バー52cに対応する文要素区間の時間長に応じた長さに設定されている。つまり、文要素区間の時間長が長いほど、表示バーの長さは距離的に長く設定される。
そして、表示領域51と表示領域52において、文要素区間毎に表示される表示バー上には、それぞれの文要素を表すテキスト(以下、「文要素テキスト」という)が表示されている。つまり、文要素区間毎に表示される表示バーには、それぞれの文要素テキストが対応付けられて表示される。なお、表示バー上に文要素テキストが収まらない場合、例えば、文要素テキストが表示バーの領域からはみ出す部分の文字は表示されないか、或いは、文要素テキストが複数行で表示バー上に表示される。文要素テキストは、文のテキストデータに基づいて文テキストが複数に区分(分割)されたテキストである。本実施形態では、手本音声の波形を示す音声波形データに基づいて特定された文要素区間と、文のテキストデータに基づいて特定された文要素テキストとを文の先頭から時系列で対応付けた対応付けデータが制御部3により生成される。この対応付けデータにより、文要素区間の時間長に応じた長さの表示バー51cと、文要素テキストとを、文の先頭から時系列で対応付けて表示することが可能となる。なお、話者音声の波形を示す音声波形データに基づいて特定された文要素区間と文要素テキストとの対応付けには、上記手本音声の対応付けデータを用いることができる。
また、表示領域52に表示された表示バー52cの右端部には、文要素区間毎の得点に応じた絵柄Mが表示されている。この得点は、例えば、それぞれの文要素区間における音高の得点、音量の得点、滑舌の得点、及び音読スピード(速度)の得点の平均点または合計点である。ここで、晴れを示す絵柄は、その文要素区間の評価点が例えば70〜100点であることを示す。曇りを示す絵柄は、その文要素区間の評価点が例えば50〜69点であることを示す。雨を示す絵柄は、その文要素区間の評価点が例えば49〜0点であることを示す。また、表示領域53には、全区間における総合得点、音高の得点、音量の得点、滑舌の得点、音読スピード(速度)の得点、及び間合い(間)の得点が表示されている。ここで、全区間における総合得点は、全区間における音高の得点、音量の得点、滑舌の得点、音読スピードの得点、及び間合いの得点の平均点または合計点である。また、例えば、全区間における音高の得点は、それぞれの文要素区間における音高の得点の平均点または合計点である。
また、ディスプレイDには、制御部3からの表示指令にしたがって、テキスト対応付け編集画面が表示される。テキスト対応付け編集画面は、例えば制御部3により生成された、手本音声の対応付けデータが示す文要素区間と文要素テキストとの対応付けの編集に利用される画面である。このような対応付けの編集処理は、ユーザ操作にしたがって行われる。
図2(B)は、テキスト対応付け編集画面の一例を示す図である。図2(B)に示すテキスト対応付け編集画面には、各種ボタン、及び表示領域50,51等が設けられている。各種ボタンには、手本音声を再生するための再生ボタン、ユーザ操作により選択された文要素区間の手本音声を再生するための文要素再生ボタン(図2(B)の例では、便宜上、文要素をフレーズと表記している)、及び対応付けの編集処理を終了するための編集終了ボタン等がある。表示領域50,51の表示内容は、基本的に音読評価画面と同様である。ただし、表示領域51には、グラフ51a,51b及び表示バー51c(51c1,51c2,51c3)に加えて、複数の表示バー51cの境界領域Bから所定距離(例えば数mm程度)以内の近傍位置に結合アイコン51d1,51d2が表示されている。図2(B)の例では、結合アイコン51d1は、表示バー51c2の先頭位置(左端部分)の直ぐ下に表示されているが、境界領域Bから所定距離以内の近傍位置であればどの位置であってもよい。このような位置に結合アイコンを表示させることで、ユーザによる操作性を高めることができる。
さらに、テキスト対応付け編集画面には、図2(B)に示すように、文要素テキストが入力されるテキストボックスTB1,TB2が表示(つまり、テキストボックスを表す枠が表示)される。このようなテキストボックスは、文要素区間と同じ数だけメモリ(例えばRAM)上に生成(つまり、領域が確保)される。こうして生成されたテキストボックスの内容が図2(B)に示すように表示されることになる。文要素区間とテキストボックスとは、文の先頭から時系列で1対1で対応付けられる。図2(B)の例では、表示バー51c1に対応する文要素区間には、テキストボックスTB1が対応付けられている。言い換えれば、表示バー51c1には、テキストボックスTB1が対応付けられている。また、表示バー51c2に対応する文要素区間には、テキストボックスTB2が対応付けられている。また、生成されたテキストボックスには、例えば先頭から順番にテキストボックス番号が付与される。このテキストボックス番号は、文要素区間に付与されたシリアル番号に対応している。例えば、先頭の文要素区間に付与されたシリアル番号は“1”であり、先頭のテキストボックスに付与されたテキストボックス番号は“1”であるというように採番されることで対応付けがなされる。この場合、シリアル番号とテキストボックス番号とは特に区別しなくてもよい。なお、対応付けを図ることができるのであれば、シリアル番号とテキストボックス番号との値が同一でなくてもよい。例えば、シリアル番号は1,2,3・・・というような番号体系がとられる一方、テキストボックス番号は100,200,300・・・というような番号体系がとられてもよい。
そして、テキストボックスには、これに対応する表示バーに対応付けられている文要素テキストが表示される。例えば、テキストボックスTB1には、表示バー51c1に対応付けられている文要素テキストが表示される。また、テキストボックスTB2には、表示バー51c2に対応付けられている文要素テキストが表示される。また、図2(B)の例では、表示領域51に表示された複数の表示バー51cのうち、ユーザ操作により選択された1つの表示バー51c1に対応付けられている文要素テキストがテキストボックスTB1において強調表示されている。つまり、テキストボックスTB1における文要素テキストは、テキストボックスTB2における文要素テキストより濃く表示(強調表示の一例)されている。また、選択された表示バーは、その色が変化(例えば、青色から橙色に変化)する。さらに、選択された1つの表示バー51c1に対応付けられているテキストボックスTB1は、その枠の色が明るい色で且つ太線で強調表示(これを、「選択表示」という)される。なお、選択された表示バーに対応付けられている文要素テキストのみがテキストボックスに表示されるように構成してもよい。つまり、選択されていない表示バーに対応付けられている文要素テキストはテキストボックスに表示されないように構成してもよい。また、後述する処理において、文要素区間の増減に応じてテキストボックスも増減することになる。また、テキスト対応付け編集画面においても、時間軸tを表す領域内には、ユーザ操作にしたがって左右方向に移動するスクロールバーScが表示されており、スクロールバーScの移動に応じて表示領域51及びテキストボックスTBm(m=1,2,・・・)が左右方向にスクロールする。
通信部1は、有線または無線によりネットワーク(図示せず)に接続してサーバ等と通信を行う。記憶部2は、例えばハードディスクドライブ等からなり、OS(オペレーティングシステム)、及びアプリケーションプログラム等を記憶する。アプリケーションプログラムには、テキスト対応付け処理プログラム(本発明のプログラムの一例)、テキスト対応付け編集処理プログラム、及び音読評価処理プログラム等が含まれる。テキスト対応付け処理プログラムは、コンピュータとしての制御部3に、テキスト対応付け処理を実行させるプログラムである。テキスト対応付け編集処理プログラムは、コンピュータとしての制御部3に、テキスト対応付け編集処理を実行させるプログラムである。音読評価処理プログラムは、コンピュータとしての制御部3に、音読評価処理を実行させるプログラムであるが、以下の説明では、音読評価処理の説明を省略する。アプリケーションプログラムは、所定のサーバからダウンロードされてもよいし、CD、DVD等の記録媒体に記憶されて提供されてもよい。また、記憶部2は、文のテキストデータと、この文を音読するときの手本音声の波形を示す音声波形データとを記憶する。手本音声の波形を示す音声波形データは、自動作成プログラムにより生成されてもよいし、お手本者(模範者)が文を音読したときに発した音声をマイクMにより集音することで生成されてもよい。なお、音声波形データは、所定の音声ファイル形式で記憶される。
制御部3は、コンピュータとしてのCPU(Central Processing Unit)、ROM(Read Only Memory)、及びRAM(Random Access Memory)等により構成される。制御部3は、アプリケーションプログラムの実行により、音声処理部31、テキスト処理部32、テキスト対応付け部33、表示処理部34、及びテキスト対応付け編集部35等として機能する。音声処理部31は、本発明における第1特定手段の一例である。テキスト処理部32は、本発明における第2特定手段の一例である。テキスト対応付け部33は、本発明における比較手段及び対応付け手段の一例である。記憶部2または制御部3におけるRAMは、本発明における記憶手段の一例である。
音声処理部31は、所定の音声ファイル形式で記憶された音声波形データを処理対象として記憶部2から入力する。入力された音声波形データはRAMに記憶される。なお、音声波形データは、離散化された時系列の音圧波形データであり、例えば、サンプリングレート44.1kHz、量子化16bit、及びモノラルの波形データである。音圧とは、音波による空気の圧力の変化分(Pa)をいう。本実施形態では、音圧として、瞬時音圧(Pa)の二乗平均平方根(RMS)である実効音圧(Pa)の大きさを計算上扱い易い数値で表した音圧レベル(dB)を適用する。音圧レベル(dB)は、広義には音量ともいう。
音声処理部31は、処理対象として入力された音声波形データに基づいて文を構成する文要素の開始タイミング(つまり、文要素区間の開始タイミング)から終了タイミング(つまり、文要素区間の終了タイミング)までの文要素区間及び文要素区間の時間長を文要素毎に特定する。特定された文要素区間には、先頭から順番にシリアル番号が付与される。文要素区間及びその時間長を示すデータ、並びに文要素区間のシリアル番号は対応付けられてRAMに記憶される。なお、文要素区間は、例えば波形の開始時点からの時間の範囲(例えば、01:00-03:00)で表される。ここで、開始タイミングと終了タイミングは、それぞれ、音声の波形から認識されてもよいし、上述したように算出された音圧レベル(dB)から認識されてもよい。例えば、音声処理部31は、音声の波形の振幅が所定値以上になった時点を開始タイミングとして認識する。或いは、音声処理部31は、音圧レベル(dB)が所定値以上になった時点を開始タイミングとして認識する。また、例えば、音声処理部31は、音声の波形の振幅が所定値未満になった時点を終了タイミングとして認識する。或いは、音声処理部31は、音圧レベル(dB)が所定値未満になった時点を終了タイミングとして認識する。なお、例えば、音圧レベル(dB)が所定値未満になった時点から、音圧レベル(dB)が所定値以上になった時点までの時間(無音時間)が閾値以上である場合に限り、音圧レベル(dB)が所定値未満になった時点が終了タイミングとして認識され、且つ音圧レベル(dB)が所定値以上になった時点が開始タイミングとして認識されるとよい(音声の波形の振幅についても同様)。これは、無音時間が閾値より短い場合、その区間で文要素を区切らない趣旨である。また、音声処理部31は、音声波形データに基づいて、複数の文要素のうち何れかの文要素の終了タイミングから次の文要素の開始タイミングまでの手本インターバル区間を特定してもよい。
また、音声処理部31は、処理対象として入力された音声波形データに基づいて音高と音圧との少なくとも何れか一方の音要素を特定する。例えば、音声処理部31は、音声波形データから所定時間毎に切り出したデータから基本周波数(Hz)を算出し、算出した基本周波数(Hz)を音高として所定時間間隔毎に特定する。なお、音高の特定方法には、例えば、ゼロクロス法やベクトル自己相関等の公知の手法を適用できる。また、音声処理部31は、音声波形データから所定時間毎に切り出したデータから音圧レベル(dB)を音圧として所定時間間隔毎に特定する。特定された音高と音圧との少なくとも何れか一方の音要素を示す音要素データは例えばRAMに記憶される。なお、音高特定及び音圧特定するための上記所定時間は、文要素区間の時間長より短い時間であり、例えば10ms程度に設定される。
また、音声処理部31は、上述したように特定した文要素区間数分のテキストボックスをメモリ(例えば、RAM)の所定領域に生成する。これにより、文要素区間毎に対応付けられるテキストボックスがメモリの所定領域に確保される。生成されたテキストボックスには、先頭から順番にテキストボックス番号が付与される。生成されたテキストボックスが確保された領域のアドレス、及びテキストボックス番号は対応付けられて例えばRAMに記憶される。例えば、テキストボックスが確保された領域のアドレスは、テキストボックス識別子として管理されてもよい。以下の説明では、テキストボックス識別子を、TBm(m=1,2,3・・・)と称するものとする。このように生成されたテキストボックスには、文要素テキストが入力(格納)されることになる。テキストボックスに入力された文要素テキストは、図2(B)に示すように表示(つまり、テキストボックスを表す枠内に表示)されることになる。
テキスト処理部32は、処理対象の音声波形データに対応付けられたテキストデータを処理対象として記憶部2から入力する。入力されたテキストデータはRAMに記憶される。そして、テキスト処理部32は、上記テキストデータに基づいて文要素テキストを文要素毎に特定する。例えば、テキスト処理部32は、テキストデータが示す文テキストに含まれる区切り文字(例えば、句点、読点)を特定し、特定した区切り文字の直後で文テキストを区切ることで文要素テキストを特定する。なお、テキスト処理部32は、他の方法で文テキストを区切って文要素テキストを特定してもよい。
図3は、区切り文字の直後で文テキストが区切られる例を示す概念図である。図3(A)に示す文テキストに含まれる句点及び読点は、図3(B)に示すように、区切り文字として特定される。その結果、図3(C)に示すように、文テキストは、複数の文要素テキストに区分される。図3(C)の例では、22個の文要素テキストが特定されている。
テキスト対応付け部33は、テキスト処理部32により特定された文要素テキストを、先頭から順に、上記生成されたテキストボックスに入力(格納)する。これにより、音声処理部31により特定された文要素区間と、テキスト処理部32により特定された文要素テキストとがテキストボックス番号(シリアル番号)を介して文の先頭から時系列で対応付けられ、文要素区間と文要素テキストとを対応付けた対応付けデータが生成される。ただし、文要素区間の数と文要素テキストの数とが必ずしも一致するとは限らない。そのため、上記対応付けにおいて、テキスト対応付け部33は、音声処理部31により特定された文要素区間の数(以下、「文要素区間数」という)と、テキスト処理部32により特定された文要素テキストの数(以下、「文要素テキスト数」という)とを比較する。この比較の結果、文要素区間数と文要素テキスト数とが一致しない場合、テキスト対応付け部33は、テキスト処理部32により特定された文要素テキストの分離と結合との少なくとも何れか一方を行うことで文要素区間数と文要素テキスト数とを一致させ、且つ、文要素区間と文要素テキストとを文の先頭から時系列で対応付ける。これにより、文要素区間数と文要素テキスト数とが一致しない場合であっても、文要素区間数と文要素テキスト数とを一致させて対応付けるので、ユーザの編集作業負荷を低減することができる。
図4は、テキストボックス番号と文要素テキストとの対応関係の一例を示す図である。図4(A)の例では、文要素区間数と文要素テキスト数が一致している。一方、図4(B)に示すように、文要素区間数より文要素テキスト数が少ない場合、空欄のテキストボックスが存在することになる。図5は、文要素区間数より文要素テキスト数が少ない場合に、文要素区間数と文要素テキスト数とを一致させる例を示す概念図である。この場合、先ず、テキスト対応付け部33は、テキスト処理部32により特定された複数の文要素テキストから所定の分割条件を満たす文要素テキストを1つ抽出する抽出処理を実行する。この抽出処理において、テキスト対応付け部33は、例えば図5(A)に示すように、全ての文要素テキストをカタカナ化し(ひらがな化でもよい)、文要素テキスト毎に音数をカウントする。例えば、一文字が1音としてカウントされる。ただし、拗音(ゃ、ゅ、ょ等)は前の文字と合わせて1音、長音は単体で1音としてカウントされる。句読点等の記号は0音とされる(つまり、カウント対象外となる)。なお、図5(A)に示す文テキストにおいて、丸、三角、四角等の記号が含まれているが、これらの記号は、実際には、カタカナ(ひらがなでもよい)である。そして、テキスト対応付け部33は、カウントした音数または文字数が相対的に多い文要素テキストを上記分割条件を満たす文要素テキストとして抽出する。これにより、文要素区間と文要素テキストとをユーザの意図に沿って一致させることが可能となる。図5(A)の例では、音数が最も多い文要素テキスト(音数が20)が抽出されている。ここで、音数が最も多い文要素テキストが複数ある場合、これらの文要素テキストのうち、時間長が最短の文要素区間に対応付けられた文要素テキストが抽出される。
なお、テキスト対応付け部33は、上記抽出処理において、文要素テキスト毎に対応付けられた文要素区間の時間長(言い換えれば、音長)に対する文字数または音数の割合(比率)が相対的に大きい文要素テキストを分割条件を満たすテキストとして抽出してもよい。この構成によっても、文要素区間と文要素テキストとをユーザの意図に沿って一致させることができる。これは、音数が多いほど音長も大きくなる(=比例関係にある)と考えられ、音長に対応する音数が多すぎる文要素テキストを上記分割条件を満たす文要素テキストとして抽出する趣旨である。この場合、例えば、テキスト対応付け部33は、全ての文要素テキストをカタカナ化し(ひらがな化でもよい)、文要素テキスト毎に音数をカウントし、且つ、文要素テキスト毎に対応つけられた文要素区間の時間長を取得する。そして、テキスト対応付け部33は、例えば、文要素テキストの音数を文要素区間の時間長で割った値を文要素テキスト毎に算出し、算出された値が最も大きい文要素テキストを上記分割条件を満たす文要素テキストとして抽出する。
次に、テキスト対応付け部33は、上記抽出処理により抽出された文要素テキストにおける文字間の特定位置より時系列で後にある文要素テキストを分離する分離処理を実行する。ここで、特定位置は、以下の通り、上記抽出された文要素テキストにおける中間地点(中央位置)を基準とする近傍範囲内にするとよい。これにより、文要素区間と文要素テキストとをユーザの意図に沿って一致させることが可能となる。この分離処理において、テキスト対応付け部33は、先ず、例えば、図5(B),(C)に示すように、上記抽出処理により抽出された文要素テキスト(例えば、カタカナ化された文要素テキスト)における中間地点(この例では、先頭から10音直後の地点)を仮の分割境界として特定する。また、テキスト対応付け部33は、上記抽出処理により抽出された文要素テキストをMeCab等の形態素解析器に入力し、文要素テキストを構成する語の分類(名詞、助詞等の品詞)を得る。そして、テキスト対応付け部33は、特定した仮の分割境界から最も近い距離に存在する「助詞から名詞に繋がる位置」または「助詞から接頭詞(名詞接続)に繋がる位置」を、上記抽出された文要素テキストから検索し、検索された位置を真の分割境界(特定位置の一例)として決定する。図5(D)の例では、助詞である文字“を”から接頭詞である文字“ご”に繋がる位置(つまり、助詞である文字“を”と接頭詞である文字“ご”との間の位置)が真の分割境界として決定されている。これにより、文要素区間と文要素テキストとを、より一層、ユーザの意図に沿って一致させることが可能となる。そして、テキスト対応付け部33は、上記抽出された文要素テキストにおける上記真の分割境界より時系列で後にある文要素テキストを分離(つまり、切り取る)する。図5(D)の例では、真の分割境界より時系列で後にある文要素テキスト“ご利用くださいまして、”が分離されることになる。
次に、テキスト対応付け部33は、分離処理により分離されたテキストを、上記抽出された文要素テキストに対応付けられている文要素区間(言い換えれば、テキストボックス)より時系列で1つ後の文要素区間に対応付け、且つ、文要素テキストの抽出時点で既に1つ後の文要素区間以後の文要素区間それぞれに対応付けられている文要素テキストが新たに対応付けられる文要素区間を1つずつ繰り下げるように対応付けを更新する更新処理を実行する。例えば、図4(B)に示すテキストボックス番号“2”のテキストボックスから分離された文要素テキストが、図5(E)に示すように、テキストボックス番号“3”のテキストボックスに入力されることで、上記抽出された文要素テキストに対応付けられている文要素区間より時系列で1つ後の文要素区間に対応付けられる。さらに、例えば、図4(B)に示すテキストボックス番号“3”〜“22”のテキストボックスから格納されている各文要素テキストが、図5(E)に示すように、テキストボックス番号“4”〜“23”のテキストボックスに順次1つずつ繰り下がるように入力されることで、上記抽出された文要素テキストに対応付けられている文要素区間より時系列で1つ後の文要素区間以後の文要素区間それぞれに対応付けられている文要素テキストが、1つずつ繰り下がった文要素区間に対応付けられる。
そして、テキスト対応付け部33は、文要素区間数と文要素テキスト数とが一致するまで(つまり、空欄のテキストボックスが無くなるまで)、上記抽出処理、上記分離処理、及び上記更新処理を繰り返し実行する。これにより、文要素区間と文要素テキストとの対応付け後のユーザの編集作業負荷(例えば操作数、操作頻度)を低減することができる。その結果、ユーザは今までよりも簡易に文要素テキストの編集作業を行うことができる。この場合、後述するように、テキスト対応付け編集部35により、文要素区間と文要素テキストとの対応付けの編集が行われる。なお、上記繰り返し処理において、上記分割条件を満たす文要素テキストが無くなった場合、空欄のテキストボックスがまだ残っていても、繰り返し処理が終了される。
一方、上記比較の結果、文要素区間数より文要素テキスト数が多い場合(言い換えれば、テキストボックスが足りない場合)、テキスト対応付け部33は、音声処理部31により特定された文要素区間と、テキスト処理部32により特定された文要素テキストとを文の先頭から時系列で対応付け、且つ、テキスト処理部32により特定された複数の文要素テキストのうち末尾の文要素テキストから、文要素テキスト数と文要素区間数との差だけ遡った文要素テキストまでを、音声処理部31により特定された複数の文要素区間のうち末尾の文要素区間に対応付ける。これにより、文要素テキストと文要素区間との差分に相当する文要素テキストが末尾の文要素区間に対応付けられた後にユーザが文要素テキストを編集するときの作業の効率化を図ることが可能となり、ユーザの編集作業負荷を低減することができる。例えば、特定された複数の文要素テキストのうち末尾の文要素テキストから文要素テキスト数と文要素区間数との差だけ遡った文要素テキストまでが結合された結合文要素テキスト(結合テキストの一例)が、図4(C)に示すように、テキストボックス番号“18”のテキストボックスに入力されることで、上記結合文要素テキストが末尾の文要素区間に対応付けられる。なお、結合文要素テキストもまた一つの文要素テキストであるので、結合文要素テキストを、単に、文要素テキストという場合がある。
このように上記結合文要素テキストが末尾の文要素区間に対応付けられた後に、末尾の結合文要素テキストを除く2つの文要素テキストの結合指示を示すユーザ操作があった場合、対応付けの編集処理が行われる。図6は、文要素テキストの結合指示を示すユーザ操作があった場合における対応付けの編集処理の一例を示す概念図である。この対応付けの編集処理において、テキスト対応付け部33(またはテキスト対応付け編集部35)は、結合指示対象である第1の文要素テキストと第2の文要素テキストを結合した結合文要素テキストを、第1の文要素テキストに対応付けられている文要素区間に対応付け、且つ、第2の文要素テキストに対応付けられている文要素区間より時系列で後の文要素区間それぞれに対応付けられている文要素テキストが新たに対応付けられる文要素区間を1つずつ繰り上げるように対応付けを更新する。そして、このような対応付けの更新において、テキスト対応付け部33(またはテキスト対応付け編集部35)は、何れか(例えば末尾)の結合文要素テキストの先頭文字から所定の区切り文字(例えば、読点)までのテキスト部分のみを、上記何れかの(例えば末尾)の結合文要素テキストが対応付けられている文要素区間より時系列で1つ前の文要素区間に対応付けるように対応付けを更新する。これにより、ユーザが例えば末尾の文要素区間に対応付けられた文要素テキストから一部のテキスト部分を分離する(切り出す)作業負荷(すなわち、手間)を低減することができる。
例えば、図6(A)に示すように、テキストボックス番号“4”のテキストボックスに格納されている第1の文要素テキストの末尾に、ユーザ操作によりキャレット位置(カーソル位置)が指定され、結合指示を示すユーザ操作があった場合、テキストボックス番号“4”のテキストボックスに格納されている第1の文要素テキストの末尾に、テキストボックス番号“5”のテキストボックスに格納されている第2の文要素テキストが結合されることで結合文要素テキストが生成され、生成された結合文要素テキストが、第1の文要素テキストに対応付けられている文要素区間に第1の文要素テキストに代えて対応付けられる。さらに、例えば、図6(A)に示すテキストボックス番号“6”〜“17”のテキストボックスから格納されている各文要素テキストが、図6(B)に示すように、テキストボックス番号“5”〜“16”のテキストボックスに順次1つずつ繰り上がるように入力されることで、第2の文要素テキストに対応付けられている文要素区間より時系列で後の文要素区間それぞれに対応付けられている文要素テキストが新たに対応付けられる文要素区間として、1つずつ繰り上がった文要素区間に対応付けられる。このとき、図6(B)に示すように、末尾の結合文要素テキストの先頭文字から所定の区切り文字(例えば、読点)までのテキスト部分(この例では、“次は、”)のみが、テキストボックス番号“17”に繰り上がるように入力されることで、末尾の結合文要素テキストが対応付けられている文要素区間より時系列で1つ前の文要素区間に対応付けられる。なお、キャレット位置は、例えば図2(B)に示すテキスト対応付け編集画面に表示されたテキストボックス上で指定されてもよいし、或いはテキストボックス番号“4”がキーボード等から入力されることで指定されてもよい。
表示処理部34は、例えば対応付け編集開始指示を示すユーザ操作があった場合、テキスト対応付け編集画面をディスプレイDに表示させる。そして、表示処理部34は、上述した対応付けデータに基づいて、上記特定された文要素区間の時間長に応じた長さの表示バー51cと、上記特定された文要素テキストとを文の先頭から時系列で対応付けて表示領域51に表示(例えば、表示バー51c上に文要素テキストを表示)させ、且つ複数の表示バー51cを離間して表示させる。これにより、複数の文要素区間の位置関係及び時間的な長さを表示バー51cにより、ユーザに一見して把握(視覚的に確認)させることができるため、ユーザの編集作業を効果的にサポートすることができる。また、ユーザの編集ミスを低減することができる。なお、上記特定された文要素区間の時間長に応じた長さの表示バー51cのうち表示領域51内に収まらない表示バー51c、及びこれに対応付けられる文要素テキストは、スクロール指示を示すユーザ操作に応じてスクロールして表示されることになる。また、表示処理部34は、離間して表示された複数の表示バー51cの境界領域Bから所定距離以内の近傍位置に結合アイコンを表示させる。なお、結合アイコンには、この結合アイコンの指定により結合される2つの文要素区間のシリアル番号が対応付けられて記憶される。また、表示処理部34は、上記音要素データが示す音高と音圧との少なくとも何れか一方の音要素の時系列的な変化を表すグラフ51a,51bを表示バー51cに対応付けて表示領域51に表示させる。これにより、音声波形データに基づく音要素と文要素区間との対応関係を、ユーザに一見して把握させることができる。このため、ユーザの編集作業を効果的にサポートすることができる。
そして、表示処理部34は、表示バー51c毎に対応付けられて表示される文要素テキストのうち、少なくとも何れか1つの文要素テキストを、テキスト対応付け編集画面に設けられたテキストボックスに表示させる。例えば、表示処理部34は、表示領域51に表示された複数の表示バー51cのうち、ユーザ操作により何れか1つの表示バー51cの選択を受け付け、選択された表示バー51cに対応付けられている文要素テキストをテキストボックス内に表示させる。或いは、表示処理部34は、表示領域51に表示された複数の表示バー51cそれぞれに対応付けられるテキストボックスをテキスト対応付け編集画面に表示させておき、上記選択が受け付けられたときに、上記選択された表示バー51cに対応付けられている文要素テキスト、及び上記選択された表示バー51cに対応付けられているテキストボックスの少なくとも何れか一方を上述したように強調表示させる。これにより、編集対象となる文要素テキストを、文要素テキストに対応付けられた表示バー51cの選択によりユーザに提示することができる。こうして、選択された表示バー51cに対応付けられているテキストボックスへの入力等が可能な状態になる。このため、ユーザの編集作業を効果的にサポートすることができる。
テキスト対応付け編集部35は、ユーザ操作により上記結合アイコンの指定が受け付けられた場合、離間して表示された複数の表示バー51cそれぞれに対応する文要素区間を含む結合文要素区間 (単に、文要素区間という場合がある)と、離間して表示された複数の表示バー51cそれぞれに対応付けられている文要素テキストを結合した結合文要素テキストとを対応付けるように対応付けを更新する。これにより、ユーザ操作による結合アイコンの指定だけで、文要素区間の編集と編集後の文要素区間と文要素テキストとの対応付けの編集をより簡易に行うことができる。なお、結合文要素区間もまた一つの文要素区間であるので、結合文要素区間を、単に、文要素区間という場合がある。
図7は、結合アイコンが指定された場合における画面遷移例を示す図である。例えば、図7(A)に示す結合アイコン51d1が指定された場合(つまり、結合アイコン51d1の指定が受け付けられた場合)、テキスト対応付け編集部35は、表示バー51c1に対応する文要素区間と、表示バー51c2に対応する文要素区間とを含む結合文要素区間を新たに特定する。例えば、表示バー51c1に対応する文要素区間の開始タイミングから、表示バー51c2に対応する文要素区間の終了タイミングまでが結合文要素区間として特定される。新たに特定された結合文要素区間には、表示バー51c1に対応する文要素区間のシリアル番号(図7(A)の例では、“1”)が付与され、この結合文要素区間より時系列で1つ後の文要素区間以後のシリアル番号は順次1つずつ繰り上げられる。なお、結合対象の2つの文要素区間(つまり、結合文要素区間の基となった2つの文要素区間)と、結合対象の2つの文要素区間それぞれに対応付けられていた文要素テキストがログデータに記録される。また、テキスト対応付け編集部35は、表示バー51c1に対応付けられている文要素テキストの末尾に、表示バー51c2に対応付けられている文要素テキストを結合することで結合文要素テキストを生成する。つまり、テキストボックスTB1の末尾位置(図7(A)の例では、“今日も、”の直後の位置)に、テキストボックスTB2における文要素テキストが繰り上がるように入力(図7(B))されることで、2つの文要素テキストが結合されて結合文要素テキストが生成される。これにより、テキストボックスTB1に格納される結合文要素テキストは、テキストボックス番号“1”(=シリアル番号“1”)を介して、上記結合文要素区間に対応付けられることになる。なお、テキストボックスTB3以後のテキストボックスに格納されている文要素テキストは、時系列で1つ前のテキストボックスに順次1つずつ繰り上がるように入力されることになる。例えば、テキストボックスTB3に格納されていた文要素テキスト(図7(A)の例では、“ありがとうございます。)は、図7(B)に示すように、テキストボックスTB2に入力されることになる。
表示処理部34は、テキスト対応付け編集部35による上記結合文要素区間と上記結合文要素テキストとの対応付けに応じて、例えば図7(A)に示すように離間して表示された複数の表示バー51c1,51c2を境界領域Bにおいて繋げて表示させる。これにより、図7(B)に示すように、上記結合文要素区間の時間長に応じた長さの表示バー51c1’が表示される。文要素区間の結合後の状態を表示バー51c1’により、ユーザに一見して把握させることができる。このため、ユーザの編集作業を効果的にサポートすることができる。また、表示処理部34は、テキスト対応付け編集部35による上記結合文要素区間と上記結合文要素テキストとの対応付けに応じて、表示バー51cと文要素テキストとを対応付けた表示を更新する。つまり、文要素区間と文要素テキストとの対応付けの更新が上記表示にも反映される。例えば、図7(B)に示すように、結合文要素区間の時間長に応じた長さの表示バー51c1’と、上記結合文要素テキストが対応付けられて表示(例えば、表示バー51c1’上に結合文要素テキストが表示)される。これにより、上記結合文要素区間と、上記結合文要素テキストとの対応付けを、ユーザに一見して把握させることができる。このため、ユーザの編集作業を効果的にサポートすることができる。さらに、表示処理部34は、テキスト対応付け編集部35による上記結合文要素区間と上記結合文要素テキストとの対応付けに応じて、例えば、図7(A)に示す結合アイコン51d1の表示態様を変化させることで、図7(B)に示すように分離アイコン(結合解除アイコン)51d1’として表示させる。なお、結合アイコン51d1は、複数の文要素区間を結合して結合文要素区間を生成する指示をCPUに与えるための操作アイコンであり、分離アイコン51d1’は、結合文要素区間の結合を解除する指示をCPUに与えるための操作アイコンであるため、互いの機能は異なる。図7(A)に示す結合アイコン51d1と、図7(B)に示すように分離アイコン51d1’との表示態様及び表示位置を比較すると、アイコン内の矢印(<、>)の向きとアイコン内の色とが異なっているが、表示領域51におけるアイコンの位置は同一となっている(つまり、同一の座標に配置されている)。このように、結合アイコン51d1と分離アイコン51d1’との表示態様を変化させる一方、表示位置を変化させないように構成することで、結合文要素区間がどの位置で分割可能かをユーザに把握させることができる。なお、結合アイコン51d1と分離アイコン51d1’の大きさや形状を変化させるように構成してもよい。また、分離アイコンには、この分離アイコンの指定により分離される結合文要素区間のシリアル番号が対応付けられて記憶される。
また、図7(B)に示す結合アイコン51d2が指定された場合、結合アイコン51d1が指定された場合と同様の手順で処理が行われる。すなわち、テキスト対応付け編集部35は、表示バー51c1’に対応する結合文要素区間と、表示バー51c3に対応する文要素区間とを含む結合文要素区間を新たに特定する。例えば、表示バー51c1’に対応する結合文要素区間の開始タイミングから、表示バー51c3に対応する文要素区間の終了タイミングまでが結合文要素区間として特定される。また、テキスト対応付け編集部35は、表示バー51c1’に対応付けられている文要素テキストの末尾に、表示バー51c3に対応付けられている文要素テキストを結合することで結合文要素テキストを生成する。つまり、テキストボックスTB1の末尾位置に、テキストボックスTB2における文要素テキストが繰り上がるように入力されることで、2つの文要素テキストが結合されて結合文要素テキストが生成される。これにより、テキストボックスTB1に格納される結合文要素テキストは、テキストボックス番号“1”(=シリアル番号“1”)を介して、表示バー51c1”に対応する結合文要素区間に対応付けられることになる。表示処理部34は、テキスト対応付け編集部35による上記結合文要素区間と上記結合文要素テキストとの対応付けに応じて、例えば図7(B)に示すように離間して表示された複数の表示バー51c1’,51c3を境界領域において繋げて表示させることで、図7(C)に示すように、上記結合文要素区間の時間長に応じた長さの表示バー51c1”が表示される。また、表示処理部34は、テキスト対応付け編集部35による上記結合文要素区間と上記結合文要素テキストとの対応付けに応じて、表示バー51cと文要素テキストとを対応付けた表示を更新する。さらに、表示処理部34は、テキスト対応付け編集部35による上記結合文要素区間と上記結合文要素テキストとの対応付けに応じて、例えば、図7(B)に示す結合アイコン51d2の表示態様を変化させることで、図7(C)に示すように分離アイコン51d2’として表示させる。
また、上記結合文要素区間と上記結合文要素テキストとの対応付け後に、上述したように表示態様が変化したアイコン(つまり、分離アイコン)の指定が受け付けられた場合、テキスト対応付け編集部35は、上記結合文要素区間の結合を解除し、且つ上記結合文要素テキストの結合を解除することで、上記結合文要素区間と上記結合文要素テキストとの対応付けを元の状態に戻す処理を行う。これにより、ユーザによる分離アイコンの指定だけで、文要素区間の結合と結合後の文要素区間と文要素テキストとの対応付けを簡易に元に戻すことができる。
図8は、分離アイコンが指定された場合における画面遷移例1を示す図である。例えば、図8(A)に示す分離アイコン51d1’が指定された場合(つまり、分離アイコン51d1’の指定が受け付けられた場合)、テキスト対応付け編集部35は、上述したログデータを参照して、表示バー51c1”に対応する結合文要素区間の結合を解除して、元の2つの文要素区間(図8(B)の例では、表示バー51c1に対応する文要素区間と、表示バー51c2’に対応する結合文要素区間)を特定する。特定された文要素区間のうち、先頭の文要素区間には、表示バー51c1”に対応する文要素区間のシリアル番号(図8(A)の例では、“1”)が付与され、この先頭の文要素区間より時系列で1つ後の文要素区間以後のシリアル番号は順次1つずつ繰り下げられる。また、テキスト対応付け編集部35は、上述したログデータを参照して、表示バー51c1”に対応する結合文要素区間に対応付けられている結合文要素テキストの結合を解除して、元の2つの文要素テキストを特定する。特定された文要素テキストのうち、先頭の文要素テキストは、テキストボックスTB1に格納されたままとなり、先頭の文要素テキストより時系列で1つ後の文要素テキストは、1つ後のテキストボックスTB2に入力され、且つテキストボックスTB2以後のテキストボックスに格納されていた文要素テキストは、時系列で1つ後のテキストボックスに順次1つずつ繰り下がるように入力されることになる。これにより、上記先頭の文要素テキストは、テキストボックス番号“1”(=シリアル番号“1”)を介して、上記先頭の文要素区間に対応付けられ、上記先頭の文要素テキストより時系列で1つ後の文要素テキストは、テキストボックス番号“2”(=シリアル番号“2”)を介して、上記先頭の文要素区間より時系列で1つ後の文要素区間に対応付けられることになる。
表示処理部34は、テキスト対応付け編集部35により対応付けが元の状態に戻されたことに応じて、例えば図8(A)に示す表示バー51c1”を、図8(B)に示すように元の表示バー51c1,51c2’に戻して表示させる。つまり、元の2つの文要素区間それぞれの時間長に応じた長さの表示バー51c1,51c2’が表示される。また、表示処理部34は、テキスト対応付け編集部35により対応付けが元の状態に戻されたことに応じて、表示バー51cと文要素テキストとを対応付けた表示を更新する。さらに、表示処理部34は、テキスト対応付け編集部35により対応付けが元の状態に戻されたことに応じて、例えば、図8(A)に示す分離アイコン51d1’の表示態様を変化させることで、図8(B)に示すように結合アイコン51d1として表示させる。なお、上記では、結合文要素区間を元の2つの文要素区間に戻し、結合文要素テキストを元の2つの文要素テキストに戻す例を示したが、これに代えて、結合文要素区間を元の3つ以上の文要素区間に戻し、結合文要素テキストを元の3つ以上の文要素テキストに戻すように構成してもよい。
また、図8(B)に示す分離アイコン51d2’が指定された場合、分離アイコン51d1’が指定された場合と同様の手順で処理が行われる。すなわち、テキスト対応付け編集部35は、上述したログデータを参照して、表示バー51c2’に対応する結合文要素区間の結合を解除して、元の2つの文要素区間(図8(C)の例では、表示バー51c2に対応する文要素区間と、表示バー51c3に対応する文要素区間)を特定する。特定された文要素区間のうち、先頭の文要素区間には、表示バー51c2’に対応する文要素区間のシリアル番号(図8(A)の例では、“2”)が付与され、この先頭の文要素区間より時系列で1つ後の文要素区間以後のシリアル番号は順次1つずつ繰り下げられる。また、テキスト対応付け編集部35は、上述したログデータを参照して、表示バー51c2’に対応付けられている結合文要素テキストの結合を解除して、元の2つの文要素テキストを特定する。特定された文要素テキストのうち、先頭の文要素テキストは、テキストボックスTB2に格納されたままとなり、先頭の文要素テキストより時系列で1つ後の文要素テキストは、1つ後のテキストボックスTB3に入力され、且つテキストボックスTB3以後のテキストボックスに格納されていた文要素テキストは、時系列で1つ後のテキストボックスに順次1つずつ繰り下がるように入力されることになる。これにより、上記先頭の文要素テキストは、テキストボックス番号“2”(=シリアル番号“2”)を介して、上記先頭の文要素区間に対応付けられ、上記先頭の文要素テキストより時系列で1つ後の文要素テキストは、テキストボックス番号“3”(=シリアル番号“3”)を介して、上記先頭の文要素区間より時系列で1つ後の文要素区間に対応付けられることになる。
ところで、上記結合文要素区間と上記結合文要素テキストとの対応付け後に、ユーザ操作により、この結合文要素テキストがテキストボックスにおいて編集された場合において、ユーザは、その編集内容を維持しつつ、上記結合文要素区間の結合を解除したい場合がある。そこで、上記対応付けを元の状態に戻す処理とは別の例として、分離アイコンの指定が受け付けられた場合、テキスト対応付け編集部35は、上記結合文要素区間を元の複数の文要素区間に戻し、元に戻された複数の文要素区間のうち、先頭の文要素区間に、結合文要素テキストを対応付け、且つ先頭の文要素区間より時系列で1つ後の文要素区間に、更に1つ後の文要素区間に対応付けられている文要素テキストを対応付けるように対応付けを更新する。これにより、文要素テキストの編集内容を維持しつつ、文要素区間の結合を簡易に元に戻すことができる。
図9は、分離アイコンが指定された場合における画面遷移例2を示す図である。例えば、図9(A)に示す分離アイコン51d1’が指定された場合、テキスト対応付け編集部35は、上述したログデータを参照して、表示バー51c1’に対応する結合文要素区間の結合を解除して、元の2つの文要素区間(図9(B)の例では、表示バー51c1に対応する文要素区間と、表示バー51c2に対応する文要素区間)を特定する。特定された文要素区間のうち、先頭の文要素区間には、表示バー51c1’に対応する文要素区間のシリアル番号(図9(A)の例では、“1”)が付与され、この先頭の文要素区間より時系列で1つ後の文要素区間以後のシリアル番号は順次1つずつ繰り下げられる。なお、表示バー51c1”に対応する結合文要素区間に対応付けられている結合文要素テキストの結合は解除されない。これにより、編集内容を維持することが可能となる。この場合、全てのテキストボックスに格納されている文要素テキストはそのままである。ただし、結合文要素区間の結合が解除され、シリアル番号が振りなおされているので、文要素区間と文要素テキストとの対応付けが更新されることになる。
また、上記対応付けを元の状態に戻す処理とはさらに別の例として、上記結合文要素テキストにおける何れかの文字間のキャレット位置の指定と、分離アイコンの指定とが受け付けられた場合、テキスト対応付け編集部35は、上記結合文要素区間を元の複数の文要素区間に戻し、元に戻された複数の文要素区間のうち、先頭の文要素区間に、結合文要素テキスト中の上記指定されたキャレット位置より時系列で前にある文要素テキストを対応付け、且つ先頭の文要素区間より時系列で1つ後の文要素区間に、上記指定されたキャレット位置より時系列で後にある文要素テキストを対応付けるように対応付けを更新する。これにより、文要素テキストの編集内容を維持しつつ、文要素区間の結合を簡易に元に戻すことができる。
図10は、分離アイコンが指定された場合における画面遷移例3を示す図である。図10(A)の例では、テキストボックスTB1における結合文要素テキストが編集されており、編集後の結合文要素テキストにおいて読点(、)の直後にキャレット位置Cがユーザ操作により指定されている。このような表示状態で、図10(A)に示す分離アイコン51d1’が指定された場合、テキスト対応付け編集部35は、上述したログデータを参照して、表示バー51c1’に対応する結合文要素区間の結合を解除して、元の2つの文要素区間(図10(B)の例では、表示バー51c1に対応する文要素区間と、表示バー51c2に対応する文要素区間)を特定する。特定された文要素区間のうち、先頭の文要素区間には、表示バー51c1’に対応する文要素区間のシリアル番号(図10(A)の例では、“1”)が付与され、この先頭の文要素区間より時系列で1つ後の文要素区間以後のシリアル番号は順次1つずつ繰り下げられる。また、テキスト対応付け編集部35は、表示バー51c1’に対応する結合文要素区間に対応付けられている結合文要素テキスト中の上記キャレット位置Cより時系列で前にある文要素テキストと、上記キャレット位置Cより時系列で後にある文要素テキストとを特定する。上記キャレット位置Cより前にある文要素テキストは、テキストボックスTB1に格納されたままとなり、上記キャレット位置Cより後にある文要素テキストは、1つ後のテキストボックスTB2に入力され、且つテキストボックスTB2以後のテキストボックスに格納されていた文要素テキストは、時系列で1つ後のテキストボックスに順次1つずつ繰り下がるように入力されることになる。これにより、上記キャレット位置Cより前にある文要素テキストは、テキストボックス番号“1”(=シリアル番号“1”)を介して、上記先頭の文要素区間に対応付けられ、上記キャレット位置Cより後にある文要素テキストは、テキストボックス番号“2”(=シリアル番号“2”)を介して、上記先頭の文要素区間より時系列で1つ後の文要素区間に対応付けられることになる。
上述したように、結合アイコンまたは分離アイコンにより文要素区間とテキストとの対応付けの編集を簡易に行うことができるが、文要素区間とテキストとの対応付けの編集は、テキストボックスにおける文要素テキストを分離または結合することによっても簡易に行うことができる。文要素テキストを分離する場合、テキスト対応付け編集部35は、テキスト対応付け編集画面におけるテキストボックスに表示された文要素テキストにおける何れかの文字間のキャレット位置の指定を受け付ける。そして、テキスト対応付け編集部35は、キャレット位置が指定された文要素テキストから、上記キャレット位置より時系列で後にある文要素テキストを分離し、分離された文要素テキストを、上記キャレット位置が指定された文要素テキストに対応付けられている文要素区間より時系列で1つ後の文要素区間に対応付けるように対応付けを更新する。つまり、ユーザ操作による文字間の位置の指定により、文要素テキストの分割と、分割後の文要素テキストと文要素区間との対応付けの編集をより簡易に行うことができる。また、編集中の文要素テキストと文要素区間との対応関係を表示バー51cにより、ユーザに一見して把握させることができる。このため、ユーザの編集作業を効果的にサポートすることができる。このような文要素テキスト分離時における対応付け更新例として、以下の通り、2つの例(a),(b)が挙げられる。
(a)文要素テキスト分離時における対応付け更新例1では、テキスト対応付け編集部35は、上記キャレット位置の指定が受け付けられ、且つキーボードに配置されたTABキーが押下された場合、上記分離された文要素テキストを1つ後の文要素区間に対応付け、且つ、キャレット位置の指定の受け付け前の時点で既に1つ後の文要素区間以後の文要素区間それぞれに対応付けられている文要素テキストが新たに対応付けられる文要素区間を1つずつ繰り下げるように対応付けを更新する。これにより、上記分離された文要素テキスト以降の文要素テキストを1つずつ後に繰り下げる玉突き移動、及び玉突き移動後の文要素テキストと文要素区間との対応付けの編集をより簡易に行うことができる。ここで、TABキーが押下された場合とは、第1のユーザ操作があった場合の一例である。なお、TABキー以外のキーまたはアイコンの指定が第1のユーザ操作として設定されてもよい。
(b)文要素テキスト分離時における対応付け更新例2では、テキスト対応付け編集部35は、上記キャレット位置の指定が受け付けられ、且つキーボードに配置されたTABキー及びシフトキーが押下された場合、上記分離された文要素テキストと、キャレット位置の指定の受け付け前の時点で既に1つ後の文要素区間に対応付けられている文要素テキストとを結合した結合文要素テキストを1つ後の文要素区間に対応付けるように対応付けを更新する((a)のような1つずつの繰り下げは行われない)。これにより、上記分離された文要素テキストを1つ後に繰り下げる移動、及び移動後の文要素テキストと文要素区間との対応付けの編集をより簡易に行うことができる。ここで、TABキー及びシフトキーが押下された場合とは、第2のユーザ操作があった場合の一例である。なお、TABキー及びシフトキー以外のキーまたはアイコンの指定が第2のユーザ操作として設定されてもよい。
図11は、文要素テキスト分離時における画面遷移例を示す図である。図12(A),(B)は、文要素テキスト分離時における対応付け更新例1を示す図であり、図12(C),(D)は、文要素テキスト分離時における対応付け更新例2を示す図である。図11(A)の例では、選択中の表示バー51c1に対応付けられているテキストボックスTB1における文要素テキストにおいて読点(、)の直後にキャレット位置Cがユーザ操作により指定されている。このような表示状態で、例えばTABキーが押下された場合、テキスト対応付け編集部35は、テキストボックスTB1における文要素テキストから、キャレット位置Cより時系列で後にある文要素テキストを分離し、分離された文要素テキストを、図11(B),図12(B)に示すように、1つ後のテキストボックスTB2に入力し、且つテキストボックスTB2以後のテキストボックスに格納されていた文要素テキストを、時系列で1つ後のテキストボックスに順次1つずつ繰り下がるように入力する。これにより、上記キャレット位置Cより前にある文要素テキストは、テキストボックス番号“1”(=シリアル番号“1”)を介して、上記先頭の文要素区間に対応付けられ、上記キャレット位置Cより後にある文要素テキスト(つまり、分離された文要素テキスト)は、テキストボックス番号“2”(=シリアル番号“2”)を介して、上記先頭の文要素区間より時系列で1つ後の文要素区間に対応付けられることになる。このように、玉突き移動を要する編集において、ユーザの操作負荷を大幅に削減し、より簡易な操作での玉突き移動を実現することができる。すなわち、従来、例えば、テキストボックスにおける文要素テキストをドラッグ等で選択し、キーボードにおけるCtrl+Xで切り取り、移動先のテキストボックスを選択し、キーボードにおけるCtrl+Vで貼り付けるという操作が繰り返し行われていたところ、このような手間を削減することができる。
なお、図12(B)の例では、テキストボックス番号“20”のテキストボックスには、1つ前のテキストボックスからの文要素テキストが入力されることで、結合文要素テキストが格納されることになる。また、図11(B)に示す表示バー51c2が選択された場合、選択された表示バー51c2に対応付けられているテキストボックスTB2が、図11(C)に示すように中央に配置されて強調表示(選択表示)される。これにより、テキストボックスTB2における文要素テキストが編集可能となる。
また、図11(B)に示す表示状態で、例えばTABキー及びシフトキーが同時押下された場合、テキスト対応付け編集部35は、テキストボックスTB1における文要素テキストから、キャレット位置Cより時系列で後にある文要素テキストを分離し、分離された文要素テキストを、図12(D)に示すように、1つ後のテキストボックスTB2の先頭位置に入力することで(1つ繰り下げ)、テキストボックスTB2に格納されていた文要素テキストと結合させる。これにより、上記分離された文要素テキストと、テキストボックスTB2における文要素テキストとが結合した結合文要素テキストがテキストボックスTB2に格納されることになる。これにより、上記キャレット位置Cより前にある文要素テキストは、テキストボックス番号“1”(=シリアル番号“1”)を介して、上記先頭の文要素区間に対応付けられ、上記結合文要素テキストは、テキストボックス番号“2”(=シリアル番号“2”)を介して、上記先頭の文要素区間より時系列で1つ後の文要素区間に対応付けられることになる。
一方、文要素テキスト結合時における対応付け更新例として、以下の通り、4つの例(c)〜(f)が挙げられる。
(c)文要素テキスト結合時における対応付け更新例1では、テキスト対応付け編集部35は、テキスト対応付け編集画面におけるテキストボックスに表示された文要素テキストの末尾の位置の指定をキャレット位置の指定として受け付ける。そして、テキスト対応付け編集部35は、上記キャレット位置の指定が受け付けられ、且つキーボードに配置されたDELキーの押下があった場合、末尾にキャレット位置が指定された文要素テキストと、この文要素テキストに対応付けられている文要素区間より時系列で1つ後の文要素区間に対応付けられている文要素テキストとを結合した結合文要素テキストを、末尾にキャレット位置が指定された文要素テキストに対応付けられている文要素区間に対応付け、且つ、末尾にキャレット位置が指定された文要素テキストに対応付けられている文要素区間より時系列で2つ後の文要素区間以後の文要素区間それぞれに対応付けられている文要素テキストが新たに対応付けられる文要素区間を1つずつ繰り上げるように対応付けを更新する。これにより、2つの文要素テキストの結合に応じて、後に続く文要素テキストを1つずつ繰り上げる移動、及び移動後の文要素テキストと文要素区間との対応付けの編集をより簡易に行うことができる。ここで、DELキーの押下があった場合とは、第3のユーザ操作があった場合の一例である。なお、DELキー以外のキーまたはアイコンの指定が第3のユーザ操作として設定されてもよい。
(d)文要素テキスト結合時における対応付け更新例2では、テキスト対応付け編集部35は、テキスト対応付け編集画面におけるテキストボックスに表示された文要素テキストの末尾の位置の指定をキャレット位置の指定として受け付ける。そして、テキスト対応付け編集部35は、上記キャレット位置の指定が受け付けられ、且つキーボードに配置されたDELキー及びシフトキーが同時押下された場合、末尾にキャレット位置が指定された文要素テキストと、この文要素テキストに対応付けられている文要素区間より時系列で1つ後の文要素区間に対応付けられている文要素テキストとを結合した結合文要素テキストを、末尾にキャレット位置が指定された文要素テキストに対応付けられている文要素区間に対応付けるように対応付けを更新する((c)のような1つずつの繰り上げは行われない)。これにより、2つの文要素テキストを結合して、結合された結合文要素テキストと文要素区間との対応付けの編集をより簡易に行うことができる。ここで、DELキー及びシフトキーが同時押下された場合とは、第3のユーザ操作があった場合の一例である。
(e)文要素テキスト結合時における対応付け更新例3では、テキスト対応付け編集部35は、テキスト対応付け編集画面におけるテキストボックスに表示された文要素テキストの先頭の位置の指定をキャレット位置の指定として受け付ける。そして、テキスト対応付け編集部35は、上記キャレット位置の指定が受け付けられ、且つキーボードに配置されたBSキーの押下があった場合、先頭にキャレット位置が指定された文要素テキストと、この文要素テキストに対応付けられている文要素区間より時系列で1つ前の文要素区間に対応付けられている文要素テキストとを結合した結合文要素テキストを、前記1つ前の文要素区間に対応付け、且つ、先頭にキャレット位置が指定された文要素テキストに対応付けられている文要素区間より時系列で1つ後の文要素区間以後の文要素区間それぞれに対応付けられている文要素テキストが新たに対応付けられる文要素区間を1つずつ繰り上げるように対応付けを更新する。これにより、2つの文要素テキストの結合に応じて、後に続く文要素テキストを1つずつ繰り上げる移動、及び移動後の文要素テキストと文要素区間との対応付けの編集をより簡易に行うことができる。ここで、BSキーの押下があった場合とは、第4のユーザ操作があった場合の一例である。なお、BSキー以外のキーまたはアイコンの指定が第4のユーザ操作として設定されてもよい。
(f)文要素テキスト結合時における対応付け更新例4では、テキスト対応付け編集部35は、テキスト対応付け編集画面におけるテキストボックスに表示された文要素テキストの先頭の位置の指定をキャレット位置の指定として受け付ける。そして、テキスト対応付け編集部35は、上記キャレット位置の指定が受け付けられ、且つキーボードに配置されたBSキー及びシフトキーの同時押下があった場合、先頭にキャレット位置が指定された文要素テキストと、この文要素テキストに対応付けられている文要素区間より時系列で1つ前の文要素区間に対応付けられている文要素テキストとを結合した結合文要素テキストを、前記1つ前の文要素区間に対応付けるように対応付けを更新する((d)のような1つずつの繰り上げは行われない)。これにより、2つの文要素テキストを結合して、結合された結合文要素テキストと文要素区間との対応付けの編集をより簡易に行うことができる。ここで、BSキー及びシフトキーが同時押下された場合とは、第4のユーザ操作があった場合の一例である。
図13は、文要素テキスト結合時における画面遷移例を示す図である。図14(A),(B)は、文要素テキスト結合時における対応付け更新例1を示す図であり、図14(C),(D)は、文要素テキスト結合時における対応付け更新例2を示す図である。図13(A)の例では、選択中の表示バー51c2に対応付けられているテキストボックスTB2における文要素テキストの末尾にキャレット位置Cがユーザ操作により指定されている。このような表示状態で、例えばDELキーが押下された場合、テキスト対応付け編集部35は、テキストボックスTB3における文要素テキストを、図13(B),図14(B)に示すように、1つ前のテキストボックスTB2に入力する(繰り上げる)ことでテキストボックスTB2における文要素テキストの末尾に結合させ、且つテキストボックスTB4以後のテキストボックスに格納されていた文要素テキストを、時系列で1つ前のテキストボックスに順次1つずつ繰り上がるように入力する。これにより、テキストボックスTB2において結合された結合文要素テキストは、テキストボックス番号“2”(=シリアル番号“2”)を介して、上記先頭の文要素区間より時系列で1つ後の文要素区間に対応付けられ、テキストボックスTB3以後に入力された文要素テキストは、上記先頭の文要素区間より時系列で2つ後の文要素区間以後の文要素区間に対応付けられることになる。なお、図14(B)の例では、文要素テキストの繰り上げにより、最後のテキストボックス番号“22”のテキストボックスは空欄になっているが、テキスト対応付け編集部35は、末尾の文要素テキストに所定の区切り文字(例えば、読点)が含まれる場合、末尾の文要素テキストの先頭文字から上記区切り文字までのテキスト部分のみを、末尾の文要素テキストが対応付けられている文要素区間より時系列で1つ前の文要素区間に対応付けるように対応付けを更新してもよい。
一方、図13(B)に示す表示状態で、例えばDELキー及びシフトキーが同時押下された場合、テキスト対応付け編集部35は、テキストボックスTB3における文要素テキストを、図14(D)に示すように、1つ前のテキストボックスTB2に入力する(繰り上げる)ことでテキストボックスTB2における文要素テキストの末尾に結合させる。これにより、テキストボックスTB2において結合された結合文要素テキストは、テキストボックス番号“2”(=シリアル番号“2”)を介して、上記先頭の文要素区間より時系列で1つ後の文要素区間に対応付けられる。
上述したように、テキスト対応付け編集部35は、テキストボックスに表示された文要素テキストの分離と結合との少なくとも何れか一方を含む編集をユーザ操作に応じて行い、編集結果に基づいてテキストボックスに表示された文要素テキストと文要素区間との対応付けを更新する。このように文要素テキストと文要素区間との対応付けが更新された場合、表示処理部34は、更新後の対応付けに基づいて、テキスト対応付け編集画面の表示領域51における表示バー51cと文要素テキストとを対応付けた表示を更新する。
なお、テキスト対応付け編集画面におけるテキストボックスへの文要素テキストの入力は、表示領域50に表示されている文テキストからも行うことができる。図15は、ユーザ操作により選択された文字列がドラッグ&ドロップでテキストボックスTB2に入力される例を示す図である。図15(A)の例では、例えばユーザがマウスの操作により表示領域50において所望の文字列(ハイライト部分)を選択する。そして、マウスポインタが上記選択された文字列の領域に重なった状態でユーザがマウスのボタンを押しながらマウスを移動(ドラッグ)させ、テキストボックス上でマウスのボタンを離す(ドロップ)と、テキスト対応付け編集部35は、図15(B)に示すように、上記選択された文字列をテキストボックスTB2に文要素テキストとして入力し、文要素テキストと文要素区間との対応付けを更新する。
[2.発話練習装置Sにおけるテキスト対応付け動作]
次に、本実施形態に係る発話練習装置Sにおけるテキスト対応付け動作について説明する。
(2−1.テキスト対応付け処理)
先ず、図16及び図17を参照して、テキスト対応付け動作において実行されるテキスト対応付け処理について説明する。図16(A)は、テキスト対応付け処理の一例を示すフローチャートである。図17は、図16(A)に示すテキスト対応付け処理の実行の結果、文要素区間数より文要素テキスト数が少ない場合に実行されるテキスト対応付け処理の一例を示すフローチャートである。なお、図16(A)及び図17に示す処理は、制御部3(音声処理部31、テキスト処理部32、テキスト対応付け部33)により実行される。
図16(A)に示す処理は、例えばユーザが操作部4を介して音読対象のお手本となる所望の音声ファイルを指定して対応付け開始指示を行うことにより開始される。図16(A)に示す処理が開始されると、上記指定された音声ファイルに格納された音声波形データと、この音声波形データに対応付けられたテキストデータとが記憶部2から制御部3により読み込まれる。そして、制御部3は、読み込まれた音声波形データから、上述したように文要素毎に文要素区間及びその時間長を特定する(ステップS1)。次いで、制御部3は、ステップS1で特定された各文要素区間に対して先頭から順番にシリアル番号を付与する(ステップS2)。次いで、制御部3は、ステップS1で特定された文要素区間及びその時間長を示すデータ、及びステップS2で付与されたシリアル番号を文要素区間毎に対応付けて記憶する(ステップS3)。
次いで、制御部3は、ステップS1で特定された文要素区間の数をカウントし、文要素区間数VCountとして特定する(ステップS4)。次いで、制御部3は、ステップS4で特定された文要素区間数VCount分のテキストボックスを生成する(ステップS5)。次いで、制御部3は、ステップS5で生成されたテキストボックスに対して先頭から順番にテキストボックス番号を付与する(ステップS6)。次いで、制御部3は、ステップS6で付与されたテキストボックス番号をテキストボックスリストに登録する(ステップS7)。次いで、制御部3は、上記読み込まれたデキストデータが示す文テキストの文字数をカウントし、テキストサイズText Sizeとして特定する(ステップS8)。次いで、制御部3は、ループカウンタi(変数)に0を代入する(ステップS9)。次いで、制御部3は、文テキストの切り出し開始文字start(変数)に文テキストの先頭文字を代入する(ステップS10)。なお、この例では、先頭文字は0番目の文字である。
次いで、制御部3は、ループカウンタiとテキストサイズText Sizeとが一致するか否かを判定する(ステップS11)。制御部3は、ループカウンタiとテキストサイズText Sizeとが一致しないと判定した場合(ステップS11:NO)、ステップS12へ進む。一方、制御部3は、ループカウンタiとテキストサイズText Sizeとが一致すると判定した場合(ステップS11:YES)、ステップS19へ進む。ステップS12では、制御部3は、文テキストの先頭文字からi番目の文字liを特定する。次いで、制御部3は、ステップS12で特定した文字liが区切り文字(例えば、読点、句点)であるか否かを判定する(ステップS13)。制御部3は、文字liが区切り文字でないと判定した場合(ステップS13:NO)、ステップS14へ進む。一方、制御部3は、文字liが区切り文字であると判定した場合(ステップS13:YES)、ステップS15へ進む。
ステップS14では、制御部3は、ループカウンタiとテキストサイズText Size−1とが一致するか否かを判定する。つまり、ステップS12で特定された文字liが文テキストの末尾文字であるか否かが判定される。制御部3は、ループカウンタiとテキストサイズText Size−1とが一致すると判定した場合(ステップS14:YES)、ステップS15へ進む。一方、制御部3は、ループカウンタiとテキストサイズText Size−1とが一致しないと判定した場合(ステップS14:NO)、ステップS18へ進む。ステップS15では、制御部3は、上記文テキストの切り出し終了文字end(変数)にステップS12で特定された文字liを代入する。つまり、切り出し文字または末尾文字が終了文字endとしてセットされる。
次いで、制御部3は、切り出し開始文字startから切り出し終了文字endまでの文字列を文要素テキストとして文テキストから取得し(切り出し)、文要素リストへ登録する(ステップS16)。次いで、制御部3は、文テキストの切り出し開始文字start(変数)に文字li+1を代入する(ステップS17)。次いで、制御部3は、ループカウンタi(変数)を1インクリメント(1加算)し(ステップS18)、ステップS11に戻る。ステップS11〜S18のループ処理(繰り返し処理)により、文テキストに含まれる区切り文字の直後で文テキストが区切られ、文要素テキストが文要素毎に取得(特定)されることになる。
ステップS19では、制御部3は、ループカウンタj(変数)に0を代入する。次いで、制御部3は、文要素リストに登録された文要素テキストの数をカウントし、文要素テキスト数PCountとして特定する(ステップS20)。次いで、制御部3は、ループカウンタjと文要素テキスト数PCountとが一致するか否かを判定する(ステップS21)。制御部3は、ループカウンタjと文要素テキスト数PCountとが一致しないと判定した場合(ステップS21:NO)、ステップS22へ進む。一方、制御部3は、ループカウンタjと文要素テキスト数PCountとが一致すると判定した場合(ステップS21:YES)、図16(A)に示す処理を終了する。
ステップS22では、制御部3は、文要素リストからj番目の文要素テキストを取得する。次いで、制御部3は、ループカウンタjが文要素区間数VCount以上であるか否かを判定する(ステップS23)。制御部3は、ループカウンタjが文要素区間数VCount以上でないと判定した場合(ステップS23:NO)、テキストボックスリストからj番目のテキストボックス番号を取得し(ステップS24)、ステップS26へ進む。一方、制御部3は、ループカウンタjが文要素区間数VCount以上であると判定した場合(ステップS23:YES)、テキストボックスリストから末尾のテキストボックス番号を取得し(ステップS25)、ステップS26へ進む。
ステップS26では、制御部3は、ステップS24またはS25で取得されたテキストボックス番号のテキストボックスにj番目の文要素テキストを入力する。なお、文要素テキスト数PCountより文要素区間数VCountが少なく、ステップS5で生成されたテキストボックスの数が足りない場合、ループ処理におけるステップS25で末尾のテキストボックス番号が複数回取得される。この場合、ステップS26では、末尾のテキストボックスにおいて文要素テキストが順次、テキストボックスの末尾位置に入力されることで文要素テキストが結合されることになる。次いで、制御部3は、ループカウンタj(変数)を1インクリメントし(ステップS27)、ステップS21に戻る。ステップS21〜S27のループ処理(繰り返し処理)により、ステップS16で特定された文要素テキストは、先頭から順に、ステップS5で生成されたテキストボックスに入力される。これにより、文要素区間と文要素テキストとがテキストボックス番号(シリアル番号)を介して文の先頭から時系列で対応付けられ、文要素区間と文要素テキストとを対応付けた対応付けデータが生成され、生成された対応付けデータは上記指定された音声ファイルに対応付けられて所定のファイル形式で記憶部2に保存されることになる。
図16(B),(C)は、テキストボックス番号と、テキストボックス識別子と、文要素テキストとの対応関係を示す図である。図16(B),(C)は、図16(A)に示すテキスト対応付け処理による対応付けの結果に基づくものである。図16(B)の例は、図16(A)に示すテキスト対応付け処理による対応付けの結果、生成された全てのテキストボックスに文要素テキストが格納された例を示しており、これは、文要素区間数VCountと文要素テキスト数PCountとが一致した場合、または文要素区間数VCountより文要素テキスト数PCountが多い場合に該当する。一方、図16(C)の例は、図16(A)に示すテキスト対応付け処理による対応付けの結果、生成された全てのテキストボックスに文要素テキストが格納されずに空欄のテキストボックスが存在する例を示しており、これは、文要素区間数VCountより文要素テキスト数PCountが少ない場合に該当する。なお、図16(B),(C)において、TBastr(a=1〜m)は、テキストボックスTBa(a=1〜m)に格納されている文要素テキストを示す。
図16(A)に示すテキスト対応付け処理による対応付けの結果、制御部3は、文要素区間数VCountより文要素テキスト数PCountが少ないと判定した(言い換えれば、空欄のテキストボックスがあると判定した)場合、図17に示すテキスト対応付け処理(言い換えれば、対応付け調整処理)を開始する。図17に示す処理が開始されると、制御部3は、ループカウンタi(変数)に0を代入する(ステップS31)。次いで、制御部3は、ループカウンタiと文要素テキスト数VCountとが一致するか否かを判定する(ステップS32)。制御部3は、ループカウンタiと文要素テキスト数VCountとが一致しないと判定した場合(ステップS32:NO)、ステップS33へ進む。一方、制御部3は、ループカウンタiと文要素テキスト数VCountとが一致すると判定した場合(ステップS32:YES)、ステップS37へ進む。
ステップS33では、制御部3は、テキストボックスリストからi番目のテキストボックス番号を取得する。次いで、制御部3は、i番目のテキストボックス番号のテキストボックスから文要素テキストtiを取得する(ステップS34)。次いで、制御部3は、文要素テキストtiから、句読点、記号、及び拗音を除く文字数を、文要素テキストtiの音数として特定し、音数リストへ登録する(ステップS35)。例えば、制御部3は、文要素テキストtiをカタカナ化することで文要素テキストtiの音数を特定する。次いで、制御部3は、ループカウンタi(変数)を1インクリメント(1加算)し(ステップS36)、ステップS32に戻る。ステップS32〜S36のループ処理(繰り返し処理)により、各文要素テキストの音数がテキストボックス番号順に特定され、音数リストへ登録されることになる。
ステップS37では、制御部3は、音数リストに登録された音数のうち、最も大きい音数の先頭からの順番をtarget番目として特定する。次いで、制御部3は、ステップS37で特定されたtarget番目のテキストボックスTBX(テキストボックス番号が“X”)に格納された文要素テキストTBXStrを抽出する(ステップS38)。このような抽出処理により、音数が最も多い文要素テキストが上記分割条件を満たす文要素テキストTBXStrとして抽出されることになる。次いで、制御部3は、ステップS38で抽出された文要素テキストTBXStrの先頭文字から文要素テキストTBXStrの音数の半分の値に相当する中央位置を仮の分割境界として特定する(ステップS39)。次いで、制御部3は、文要素テキストTBXStrに含まれる各語の品詞を形態素解析器により特定し、特定した品詞を品詞リストへ登録し、特定した品詞の数をカウントして品詞数CCountとして特定する(ステップS40)。
次いで、制御部3は、ループカウンタj(変数)に0を代入する(ステップS41)。次いで、制御部3は、ループカウンタjと品詞数CCountとが一致するか否かを判定する(ステップS42)。制御部3は、ループカウンタjと品詞数CCountとが一致しないと判定した場合(ステップS42:NO)、ステップS43へ進む。一方、制御部3は、ループカウンタjと品詞数CCountとが一致すると判定した場合(ステップS42:YES)、ステップS49へ進む。ステップS43では、制御部3は、上記品詞リストからj番目の品詞cjを取得する。次いで、制御部3は、ステップS43で取得された品詞cjは助詞であるか否かを判定する(ステップS44)。制御部3は、品詞cjは助詞であると判定した場合(ステップS44:YES)、ステップS45へ進む。一方、制御部3は、品詞cjは助詞でないと判定した場合(ステップS44:NO)、ステップS48へ進む。
ステップS45では、制御部3は、上記品詞リストからj+1番目の品詞cj+1を取得する。次いで、制御部3は、ステップS45で取得された品詞cj+1は名詞または接頭詞であるか否かを判定する(ステップS46)。制御部3は、品詞cj+1は名詞または接頭詞であると判定した場合(ステップS46:YES)、ステップS47へ進む。一方、制御部3は、品詞cj+1は名詞または接頭詞でないと判定した場合(ステップS46:NO)、ステップS48へ進む。ステップS47では、制御部3は、品詞cjと品詞cj+1との間の位置(つまり、文要素テキストTBXStrの先頭文字からj番目の品詞cj内の末尾文字直後の位置)を真の分割境界候補として分割境界リストに登録し、ステップS48へ進む。これにより、「助詞から名詞に繋がる位置」または「助詞から接頭詞に繋がる位置」が真の分割境界候補とされる。ステップS48では、制御部3は、ループカウンタj(変数)を1インクリメント(1加算)し、ステップS42に戻る。ステップS42〜S48のループ処理(繰り返し処理)により、文要素テキストTBXStrにおける真の分割境界候補が検索されることになるが、真の分割境界候補が発見されないこともありうる。
ステップS49では、制御部3は、真の分割境界リストに真の分割境界候補が登録されているか否かを判定する。制御部3は、真の分割境界リストに真の分割境界候補が登録されていないと判定した場合(ステップS49:NO)、ステップS50に戻る。ステップS50では、制御部3は、音数リストに登録された音数のうち、既に特定されたtarget番目以外で最も大きい音数の先頭からの順番をtarget番目として特定してステップS38に移行して上記と同様の処理を行う。一方、制御部3は、真の分割境界リストに真の分割境界候補が登録されていると判定した場合(ステップS49:YES)、ステップS51へ進む。
ステップS51では、制御部3は、分割境界リストに登録された真の分割境界候補のうち、仮の分割境界と最も位置が近いものを真の分割境界として決定する。次いで、制御部3は、ステップS51で決定された真の分割境界より時系列で後の文字列を文要素テキストTBNStrとして、文要素テキストTBXStrから分離する(ステップS52)。このような分離処理により、文要素テキストTBXStrにおける文字間の特定位置より時系列で後にある文要素テキストが文要素テキストTBNStrとして分離されることになる。次いで、制御部3は、空欄のテキストボックスのうち、テキストボックス番号が最も若いテキストボックスをテキストボックスTBnとして特定する(ステップ53)。
次いで、制御部3は、ループカウンタk(変数)に“n−1”を代入する(ステップS54)。次いで、制御部3は、ループカウンタkとXとが一致するか否かを判定する(ステップS55)。ここで、Xは、target番目のテキストボックスTBXのテキストボックス番号である。制御部3は、ループカウンタkとXとが一致しないと判定した場合(ステップS55:NO)、ステップS56へ進む。一方、制御部3は、ループカウンタkとXとが一致すると判定した場合(ステップS55:YES)、ステップS59へ進む。ステップS56では、制御部3は、テキストボックスTBk+1に文要素テキストTBkStrを入力する。次いで、制御部3は、文要素テキストTBkStrをテキストボックスTBkから削除する(ステップS57)。ステップS56及びS57の処理により、例えば、テキストボックス番号が最も若いテキストボックスをテキストボックスTBn(図5の例では、テキストボックス番号“23”のテキストボックスTB23)に、時系列で1つ前のテキストボックスTBn−1における文要素テキストTBn-1Strが繰り下がるように入力されることになる。
次いで、制御部3は、ループカウンタk(変数)を1デクリメント(1減算)し、ステップS55に戻る。ステップS59では、制御部3は、テキストボックスTBn+1に、ステップS52で分離された文要素テキストTBNStrを入力する。ステップS55〜S59の更新処理により、上記分離されたテキストTBNStrが、target番目のテキストボックスTBXに対応付けられている文要素区間より時系列で1つ後の文要素区間に対応付けられ、且つ、この文要素区間以後の文要素区間それぞれに対応付けられている文要素テキストが新たに対応付けられる文要素区間が1つずつ繰り下げられるように対応付けが更新される。次いで、制御部3は、空欄のテキストボックスがまだあるか否かを判定する(ステップS60)。制御部3は、空欄のテキストボックスがまだあると判定した場合(ステップS60:YES)、ステップS31に戻り、上記と同様の処理が空欄のテキストボックスが無くなるまで繰り返し実行される。一方、制御部3は、空欄のテキストボックスがないと判定した場合(ステップS60:NO)、上記対応付けデータを更新保存し、図17に示す処理を終了する。
なお、図16(A)に示すテキスト対応付け処理による対応付けの結果、文要素区間数VCountより文要素テキスト数PCountが多い場合、テキスト対応付け編集処理により対応付けの更新を行うことができる。
(2−2.テキスト対応付け編集処理)
次に、図18等を参照して、テキスト対応付け動作において実行されるテキスト対応付け編集処理について説明する。図18は、テキスト対応付け編集処理のメインルーチンの一例を示すフローチャートである。なお、図18等に示す処理は、制御部3(表示処理部34、及びテキスト対応付け編集部35)により実行される。
図18に示す処理は、例えばユーザが操作部4を介して音読対象のお手本となる所望の音声ファイルを指定して対応付け編集開始指示を行うことにより開始される。図18に示す処理が開始されると、上記指定された音声ファイルに格納された音声波形データと、この音声波形データに対応付けられた対応付けデータとが記憶部2から制御部3により読み込まれる。なお、音声波形データの代わりに、音声波形データに基づいて予め特定された音高と音圧との少なくとも何れか一方の音要素を示す音要素データが読み込まれてもよい。そして、制御部3は、読み込まれた音声波形データ(音要素データ)及び対応付けデータを用いて上述したテキスト対応付け編集画面の表示処理を実行する(ステップS71)。この表示処理では、制御部3は、テキスト対応付け編集画面をディスプレイDに表示させ、上記対応付けデータに基づいて、上記特定された文要素区間の時間長に応じた長さの表示バー51cと、上記特定された文要素テキストとを文の先頭から時系列で対応付けて表示領域51に表示させる。また、表示処理部34は、離間して表示された複数の表示バー51cの境界領域Bから所定距離以内の近傍位置に結合アイコンを表示させる。また、表示処理部34は、上記音要素データが示す音高と音圧との少なくとも何れか一方の音要素の時系列的な変化を表すグラフ51a,51bを表示バー51cに対応付けて表示領域51に表示させる。そして、表示処理部34は、表示バー51c毎に対応付けられて表示される文要素テキストのうち、少なくとも何れか1つの文要素テキストを、テキスト対応付け編集画面に設けられたテキストボックスに表示させる。テキスト対応付け編集画面が表示されると、制御部3は、ユーザ操作待ちの状態となる。
ステップS72では、制御部3は、ユーザ操作により結合アイコンが指定されたか否かを判定する。結合アイコンが指定されたと判定された場合(ステップS72:YES)、ステップS73へ進む。ステップS73では、後述する文要素区間結合処理が実行される。一方、結合アイコンが指定されていないと判定された場合(ステップS72:NO)、ステップS74へ進む。
ステップS74では、制御部3は、ユーザ操作により分離アイコンが指定されたか否かを判定する。分離アイコンが指定されたと判定された場合(ステップS74:YES)、ステップS75へ進む。ステップS75では、後述する文要素区間分離処理が実行される。一方、分離アイコンが指定されていないと判定された場合(ステップS74:NO)、ステップS76へ進む。
ステップS76では、制御部3は、ユーザ操作により表示バーが選択されたか否かを判定する。表示バーが選択されたと判定された場合(ステップS76:YES)、ステップS77へ進む。ステップS77では、制御部3は、選択された表示バーに対応付けられたテキストボックスを強調表示する。一方、表示バーが選択されていないと判定された場合(ステップS76:NO)、ステップS78へ進む。
ステップS78では、制御部3は、ユーザ操作によりキャレット位置(強調表示されたテキストボックスにおけるキャレット位置)が指定されたか否かを判定する。キャレット位置が指定されたと判定された場合(ステップS78:YES)、ステップS79へ進む。ステップS79では、制御部3は、指定されたキャレット位置を更新する。一方、キャレット位置が指定されていないと判定された場合(ステップS78:NO)、ステップS80へ進む。
ステップS80では、制御部3は、ユーザ操作によりTABキーが押下されたか否かを判定する。TABキーが押下されたと判定された場合(ステップS80:YES)、ステップS81へ進む。ステップS81では、後述するテキスト分離処理1が実行される。一方、TABキーが押下されていないと判定された場合(ステップS80:NO)、ステップS82へ進む。
ステップS82では、制御部3は、ユーザ操作によりTABキー及びシフトキーが同時押下されたか否かを判定する。TABキー及びシフトキーが同時押下されたと判定された場合(ステップS82:YES)、ステップS83へ進む。ステップS83では、後述するテキスト分離処理2が実行される。一方、TABキー及びシフトキーが同時押下されていないと判定された場合(ステップS82:NO)、ステップS84へ進む。
ステップS84では、制御部3は、ユーザ操作によりDELキーが押下されたか否かを判定する。DELキーが押下されたと判定された場合(ステップS84:YES)、ステップS85へ進む。ステップS85では、後述するテキスト結合処理1が実行される。一方、DELキーが押下されていないと判定された場合(ステップS84:NO)、ステップS86へ進む。
ステップS86では、制御部3は、ユーザ操作によりDELキー及びシフトキーが同時押下されたか否かを判定する。DELキー及びシフトキーが同時押下されたと判定された場合(ステップS86:YES)、ステップS87へ進む。ステップS87では、後述するテキスト結合処理2が実行される。一方、DELキー及びシフトキーが同時押下されていないと判定された場合(ステップS86:NO)、ステップS88へ進む。
ステップS88では、制御部3は、ユーザ操作により編集終了が指定されたか否かを判定する。編集終了が指定されていないと判定された場合(ステップS88:NO)、ステップS89へ進む。ステップS89に示すその他の処理では、例えばテキスト対応付け編集画面に表示された再生ボタンの指定に応じた処理、キーボードに配置されたBSキーの押下に応じた処理、BSキー及びシフトキーの同時押下に応じた処理等が行われるが、詳しい説明を省略する。一方、編集終了が指定されたと判定された場合(ステップS88:YES)、ステップS90へ進む。ステップS90では、制御部3は、文要素区間結合処理、文要素区間分離処理、テキスト分離処理1、テキスト分離処理2、テキスト結合処理1、及びテキスト結合処理2のうち、少なくとも何れか1つの処理の最終的な対応付けの更新にしたがって対応付けデータを更新して記憶部2に保存し、図18に示す処理を終了する。
(2−2−1.文要素区間結合処理)
次に、図19を参照して、上記ステップS73に示す文要素区間結合処理について説明する。図19は、文要素区間結合処理の一例を示すフローチャートである。図19に示す処理が開始されると、制御部3は、指定された結合アイコンに対応付けられた2つのシリアル番号それぞれに対応する文要素区間を、結合対象の2つの文要素区間として特定する(ステップS731)。次いで、制御部3は、ステップS731で特定された結合対象の2つの文要素区間と、結合対象の2つの文要素区間それぞれに対応付けられている文要素テキストとをログデータに記録する(ステップS732)。次いで、制御部3は、テキストボックスの数mと、ステップS731で特定された2つの文要素区間のうち先頭の文要素区間に対応するテキストボックスTBXのテキストボックス番号“X”とを特定する(ステップS733)。
次いで、制御部3は、ステップS731で特定された結合対象の2つの文要素区間を含む結合文要素区間を新たに特定する(ステップS734)。次いで、制御部3は、ステップS731で特定された2つの文要素区間のうち先頭の文要素区間のシリアル番号を、ステップS734で特定された結合文要素区間に対して付与する(ステップS735)。次いで、制御部3は、ステップS734で特定された結合文要素区間が最後の文要素区間であるか否かを判定する(ステップS736)。制御部3は、結合文要素区間が最後の文要素区間であると判定した場合(ステップS736:YES)、ステップS738へ進む。一方、制御部3は、結合文要素区間が最後の文要素区間でないと判定した場合(ステップS736:NO)、結合文要素区間より時系列で1つ後の文要素区間以後のシリアル番号を1つずつ繰り上げ(ステップS737)、ステップS738へ進む。
ステップS738では、制御部3は、ステップS734で特定された結合文要素区間の時間長に応じた長さの表示バーを表示領域51に表示させる。つまり、制御部3は、ステップS731で特定された2つの文要素区間それぞれに対応する2つの表示バーを境界領域において繋げて表示させる。次いで、制御部3は、上記指定された結合アイコンの表示態様を変化させることで分離アイコンを表示させる(ステップS739)。なお、こうして表示された分離アイコンには、ステップS735で付与されたシリアル番号が対応付けられて記憶される。
次いで、制御部3は、ループカウンタi(変数)にX(テキストボックス番号)を代入する(ステップS740)。次いで、制御部3は、ループカウンタiとテキストボックスの数mとが一致するか否かを判定する(ステップS741)。制御部3は、ループカウンタiとテキストボックスの数mとが一致しないと判定した場合(ステップS741:NO)、ステップS742へ進む。一方、制御部3は、ループカウンタiとテキストボックスの数mとが一致すると判定した場合(ステップS741:YES)、ステップS745へ進む。
ステップS742では、制御部3は、テキストボックスTBiの末尾位置にテキストボックスTBi+1の文要素テキストTBi+1Strを入力する。最初の処理では、テキストボックスTBXの末尾位置、すなわち、文要素テキストTBXStrの末尾に文要素テキストTBX+1Strが結合(つまり、テキストボックスTBX+1における文要素テキストTBX+1Strが1つ前に繰り上がることで結合)されることで、テキストボックスTBXには結合文要素テキストが格納されることになる。次いで、制御部3は、文要素テキストTBi+1StrをテキストボックスTBi+1から削除する(ステップS743)。
次いで、制御部3は、ループカウンタiを1インクリメント(1加算)し(ステップS744)、ステップS741に戻る。ステップS741〜S744のループ処理(繰り返し処理)により、テキストボックスTBXより時系列で1つ後のテキストボックス以後には文要素テキストが順次1つずつ繰り上がるように入力されることになる。これにより、文要素区間と文要素テキストとの対応付けが更新される。ステップS745では、制御部3は、表示バーと文要素テキストとを対応付けた表示を更新し、図18に示す処理に戻る。これにより、例えば、ステップS734で特定された結合文要素区間の時間長に応じた長さの表示バー上に結合文要素テキストが表示される。
(2−2−2.文要素区間分離処理)
次に、図20を参照して、上記ステップS75に示す文要素区間分離処理について説明する。図20は、文要素区間分離処理の一例を示すフローチャートである。図20に示す処理が開始されると、制御部3は、指定された分離アイコンに対応付けられたシリアル番号に対応する結合文要素区間を特定する(ステップS751)。次いで、制御部3は、テキストボックスの数mと、ステップS751で特定された結合文要素区間に対応するテキストボックスTBXのテキストボックス番号“X”とを特定する(ステップS752)。
次いで、制御部3は、ログデータを参照して、ステップS751で特定された結合文要素区間の結合を解除することで元の2つの文要素区間を特定する(ステップS753)。つまり、結合文要素区間が元の文要素区間に戻される。次いで、制御部3は、ステップS751で特定された結合文要素区間のシリアル番号を、ステップS753で特定された文要素区間(つまり、分離された2つの文要素区間)のうち先頭の文要素区間に対して付与する(ステップS754)。次いで、制御部3は、上記先頭の文要素区間より1つ後の文要素区間以後のシリアル番号を1つずつ繰り下げる(ステップS755)。
次いで、制御部3は、ステップS753で特定された文要素区間それぞれの時間長に応じた長さの表示バーを表示領域51に表示させる(ステップS756)。次いで、制御部3は、上記指定された分離アイコンの表示態様を変化させることで結合アイコンを表示(つまり、元に戻して表示)させる(ステップS757)。次いで、制御部3は、テキストボックスTBXにおける結合文要素テキストTBXStrの途中(つまり、文字間)にキャレット位置があるか否かを判定する(ステップS758)。制御部3は、キャレット位置が結合文要素テキストTBXStrの途中にないと判定した場合(ステップS758:NO)、ステップS767へ進む。この場合、図9を用いて説明したように、m個のテキストボックスに格納されている文要素テキストは分離及び結合されずそのままであるが、文要素区間のシリアル番号が振りなおされているので、文要素区間と文要素テキストとの対応付けが更新されることになる。一方、制御部3は、キャレット位置が結合文要素テキストTBXStrの途中にあると判定した場合(ステップS758:YES)、ステップS759へ進む。
次いで、制御部3は、Xとテキストボックスの数mとが一致するか否かを判定する(ステップS759)。ここで、Xは、テキストボックスTBXのテキストボックス番号である。制御部3は、Xとテキストボックスの数mとが一致しないと判定した場合(ステップS759:NO)、ステップS760へ進む。一方、制御部3は、Xとテキストボックスの数mとが一致すると判定した場合(ステップS759:YES)、結合文要素区間に対応するテキストボックスTBXが最後のテキストボックスであるため、図18に示す処理に戻る。
ステップS760では、制御部3は、テキストボックスTBXにおける結合文要素テキストTBXStrから、上記キャレット位置より後の文字列を文要素テキストTBNStrとして分離する。次いで、制御部3は、ループカウンタi(変数)に“m−1”を代入する(ステップS761)。次いで、制御部3は、ループカウンタiとXとが一致するか否かを判定する(ステップS762)。制御部3は、ループカウンタiとXとが一致しないと判定した場合(ステップS762:NO)、ステップS763へ進む。一方、制御部3は、ループカウンタiとXとが一致すると判定した場合(ステップS762:YES)、ステップS766へ進む。
ステップS763では、制御部3は、テキストボックスTBi+1の先頭位置に文要素テキストTBiStrを入力する。最初の処理では、最後のテキストボックスの先頭位置、すなわち、文要素テキストTBmStrの先頭に文要素テキストTBm-1Strが結合(つまり、最後から1つ前のテキストボックスにおける文要素テキストTBm-1Strが1つ後に繰り下がることで結合)されることで、最後のテキストボックスには結合文要素テキストが格納されることになる。次いで、制御部3は、文要素テキストTBiStrをテキストボックスTBiから削除する(ステップS764)。
次いで、制御部3は、ループカウンタiを1デクリメント(1減算)し(ステップS765)、ステップS762に戻る。ステップS762〜S765のループ処理(繰り返し処理)により、テキストボックスTBXより時系列で2つ後のテキストボックス以後には文要素テキストが順次1つずつ繰り下がるように入力されることになる。ステップS766では、制御部3は、テキストボックスTBX+1に、ステップS760で分離された文要素テキストTBNStrを入力し、ステップS767へ進む。こうして、図10を用いて説明したように、文要素区間と文要素テキストとの対応付けが更新される。ステップS767では、制御部3は、表示バーと文要素テキストとを対応付けた表示を更新し、図18に示す処理に戻る。これにより、例えば、ステップS753で特定された文要素区間それぞれの時間長に応じた長さの表示バー上に、対応付けの更新にしたがって文要素テキストが表示される。
なお、ユーザ操作により分離アイコンが指定された場合、図8を用いて説明したように、上記結合文要素区間の結合が解除され、且つ上記結合文要素テキストの結合が解除されることで、上記結合文要素区間と上記結合文要素テキストとの対応付けが元の状態に戻されてもよい。
(2−2−3.テキスト分離処理)
次に、図21(A)を参照して、上記ステップS81に示すテキスト分離処理1について説明する。図21(A)は、テキスト分離処理1の一例を示すフローチャートである。図21(A)に示す処理は、選択表示中のテキストボックスTBXにおいてキャレット位置が指定されている場合に開始され、キャレット位置が特定される。なお、選択表示中のテキストボックスTBXにおいてキャレット位置が指定されていない場合、図18に示す処理に戻る。図21(A)に示す処理が開始されると、制御部3は、テキストボックスの数mと、選択表示中のテキストボックスTBXのテキストボックス番号“X”とを特定する(ステップS811)。
次いで、制御部3は、Xとテキストボックスの数mとが一致するか否かを判定する(ステップS812)。制御部3は、Xとテキストボックスの数mとが一致しないと判定した場合(ステップS812:NO)、ステップS813へ進む。一方、制御部3は、Xとテキストボックスの数mとが一致すると判定した場合(ステップS812:YES)、図18に示す処理に戻る。ステップS813では、制御部3は、テキストボックスTBXにおける文要素テキストTBXStrの途中(つまり、文字間)にキャレット位置があるか否かを判定する。制御部3は、キャレット位置が文要素テキストTBXStrの途中にあると判定した場合(ステップS813:YES)、ステップS814へ進む。一方、制御部3は、キャレット位置が文要素テキストTBXStrの途中にないと判定した場合(ステップS813:NO)、図18に示す処理に戻る。
ステップS814では、制御部3は、テキストボックスTBXにおける文要素テキストTBXStrから、上記キャレット位置より後の文字列を文要素テキストTBNStrとして分離する。次いで、制御部3は、ループカウンタi(変数)に“m−1”を代入する(ステップS815)。次いで、制御部3は、ループカウンタiとXとが一致するか否かを判定する(ステップS816)。制御部3は、ループカウンタiとXとが一致しないと判定した場合(ステップS816:NO)、ステップS817へ進む。一方、制御部3は、ループカウンタiとXとが一致すると判定した場合(ステップS816:YES)、ステップS820へ進む。
ステップS817では、制御部3は、テキストボックスTBi+1の先頭位置に文要素テキストTBiStrを入力する。次いで、制御部3は、文要素テキストTBiStrをテキストボックスTBiから削除する(ステップS818)。次いで、制御部3は、ループカウンタiを1デクリメント(1減算)し(ステップS819)、ステップS816に戻る。ステップS816〜S819のループ処理(繰り返し処理)により、テキストボックスTBXより時系列で2つ後のテキストボックス以後には文要素テキストが順次1つずつ繰り下がるように入力されることになる。ステップS820では、制御部3は、ステップS814で分離された文要素テキストTBNStrをテキストボックスTBX+1に入力する。こうして、図11及び図12(A),(B)を用いて説明したように、文要素区間と文要素テキストとの対応付けが更新される。次いで、制御部3は、表示バーと文要素テキストとを対応付けた表示を更新し(ステップS821)、図18に示す処理に戻る。
次に、図21(B)を参照して、上記ステップS83に示すテキスト分離処理2について説明する。図21(B)は、テキスト分離処理2の一例を示すフローチャートである。図21(B)に示す処理は、図21(A)に示す処理と同様、選択表示中のテキストボックスTBXにおいてキャレット位置が指定されている場合に開始され、キャレット位置が特定される。なお、図21(B)に示すステップS831〜S834の処理は、図21(A)に示すステップS811〜S814の処理と同様である。ステップS835では、制御部3は、ステップS834で分離された文要素テキストTBNStrをテキストボックスTBX+1に入力することで、文要素テキストTBX+1Strの先頭に文要素テキストTBNStrを結合する。こうして、図12(C),(D)を用いて説明したように、文要素区間と文要素テキストとの対応付けが更新される。ステップS836では、制御部3は、表示バーと文要素テキストとを対応付けた表示を更新し、図18に示す処理に戻る。
(2−2−4.テキスト結合処理)
次に、図22(A)を参照して、上記ステップS85に示すテキスト結合処理1について説明する。図22(A)は、テキスト結合処理1の一例を示すフローチャートである。図22(A)に示す処理は、選択表示中のテキストボックスTBXにおいてキャレット位置が指定されている場合に開始され、キャレット位置が特定される。なお、選択表示中のテキストボックスTBXにおいてキャレット位置が指定されていない場合、図18に示す処理に戻る。図22(A)に示す処理が開始されると、制御部3は、テキストボックスの数mと、選択表示中のテキストボックスTBXのテキストボックス番号“X”とを特定する(ステップS851)。
次いで、制御部3は、Xとテキストボックスの数mとが一致するか否かを判定する(ステップS852)。制御部3は、Xとテキストボックスの数mとが一致しないと判定した場合(ステップS852:NO)、ステップS853へ進む。一方、制御部3は、Xとテキストボックスの数mとが一致すると判定した場合(ステップS852:YES)、図18に示す処理に戻る。ステップS853では、制御部3は、テキストボックスTBXにおける文要素テキストTBXStrの末尾にキャレット位置があるか否かを判定する。制御部3は、キャレット位置が文要素テキストTBXStrの末尾にあると判定した場合(ステップS853:YES)、ステップS854へ進む。一方、制御部3は、キャレット位置が文要素テキストTBXStrの末尾にないと判定した場合(ステップS853:NO)、図18に示す処理に戻る。
ステップS854では、制御部3は、ループカウンタi(変数)にXを代入する。次いで、制御部3は、ループカウンタiとテキストボックスの数mとが一致するか否かを判定する(ステップS855)。制御部3は、ループカウンタiとテキストボックスの数mとが一致しないと判定した場合(ステップS855:NO)、ステップS856へ進む。一方、制御部3は、ループカウンタiとテキストボックスの数mとが一致すると判定した場合(ステップS855:YES)、ステップS859へ進む。
ステップS856では、制御部3は、テキストボックスTBiの末尾位置に文要素テキストTBi+1Strを入力する。最初の処理では、文要素テキストTBXStrの末尾に文要素テキストTBX+1Strが結合される。次いで、制御部3は、文要素テキストTBi+1StrをテキストボックスTBi+1から削除する(ステップS857)。次いで、制御部3は、ループカウンタiを1インクリメント(1加算)し(ステップS858)、ステップS855に戻る。ステップS855〜S858のループ処理(繰り返し処理)により、テキストボックスTBXより時系列で1つ後のテキストボックス以後には文要素テキストが順次1つずつ繰り上がるように入力されることになる。こうして、図13及び図14(A),(B)を用いて説明したように、文要素区間と文要素テキストとの対応付けが更新される。ステップS859では、制御部3は、表示バーと文要素テキストとを対応付けた表示を更新し、図18に示す処理に戻る。
次に、図22(B)を参照して、上記ステップS87に示すテキスト結合処理2について説明する。図22(B)は、テキスト結合処理2の一例を示すフローチャートである。図22(B)に示す処理は、図22(A)に示す処理と同様、選択表示中のテキストボックスTBXにおいてキャレット位置が指定されている場合に開始され、キャレット位置が特定される。なお、図22(B)に示すステップS871〜S873の処理は、図22(A)に示すステップS851〜S853の処理と同様である。ステップS874では、制御部3は、文要素テキストTBX+1StrをテキストボックスTBXに入力することで、文要素テキストTBXStrの末尾に文要素テキストTBX+1Strを結合する。次いで、制御部3は、文要素テキストTBX+1StrをテキストボックスTBX+1から削除する(ステップS875)。こうして、図14(C),(D)を用いて説明したように、文要素区間と文要素テキストとの対応付けが更新される。ステップS876では、制御部3は、表示バーと文要素テキストとを対応付けた表示を更新し、図18に示す処理に戻る。
次に、図23を参照して、上記ステップS85に示すテキスト結合処理1の変形例について説明する。図23は、テキスト結合処理1の変形例を示すフローチャートである。図23に示す処理は、図22(A)に示す処理と同様、選択表示中のテキストボックスTBXにおいてキャレット位置が指定されている場合に開始され、キャレット位置が特定される。なお、図23に示すステップS881〜S885の処理は、図22(A)に示すステップS851〜S855の処理と同様である。ステップS886では、制御部3は、テキストボックスTBi+1における文要素テキストTBi+1Strの末尾以外に区切り文字が含まれるか否かを判定する。制御部3は、文要素テキストTBi+1Strの末尾以外に区切り文字が含まれないと判定した場合(ステップS886:NO)、ステップS887へ進む。なお、図23に示すステップS887〜S889の処理は、図22(A)に示すステップS856〜S858の処理と同様である。
一方、制御部3は、文要素テキストTBi+1Strの末尾以外に区切り文字が含まれると判定した場合(ステップS886:YES)、ステップS890へ進む。ステップS890では、制御部3は、テキストボックスTBi+1における文要素テキストTBi+1Strの先頭文字から区切り文字までの文字列を文要素テキストTBPStrとして分離する。次いで、制御部3は、ステップS890で分離された文要素テキストTBPStrをテキストボックスTBiに入力することで、文要素テキストTBiStrの末尾に文要素テキストTBPStrを結合する(ステップS891)。例えば、図6(B)に示すように、最後のテキストボックスにおける結合文要素テキストの先頭文字から区切り文字までのテキスト部分のみが文要素テキストTBPStrとして1つ繰り上がるように入力されることで、文要素区間と文要素テキストとの対応付けが更新される。ステップS892では、制御部3は、表示バーと文要素テキストとを対応付けた表示を更新し、図18に示す処理に戻る。
以上説明したように、上記実施形態によれば、発話練習装置Sは、音声波形データに基づいて特定された文要素区間の数と、テキストデータに基づいて特定された文要素テキストの数とを比較し、文要素区間数と文要素テキスト数とが一致しない場合、文要素テキストの分離と結合との少なくとも何れか一方を行うことで文要素区間数と文要素テキスト数とを一致させ、且つ、文要素区間と文要素テキストとを文の先頭から時系列で対応付ける。したがって、プログラムにより波形の時間範囲や文テキストについてユーザの意図しない分割が行われた場合であっても、先回りして文要素区間数と文要素テキスト数とを一致させるので、ユーザの編集作業負荷を低減することができる。
なお、上記実施形態においては、本発明のテキスト対応付け装置を発話練習装置Sに対して適用したが、その他のシステムや装置に適用してもよい。