(57)【要約】【課題】合成音声の再生中に発生するタイムラグを抑制する。【解決手段】現在合成音再生中の段落の２つ前から２つ先までの段落の先頭の音声波形を補助バッファ１１０ａ〜１１０ｅにあらかじめ蓄積しておき、ユーザにより合成音の再生位置が変更された際にはこれを再生しつつ音声波形バッファ１１０の充填を行う。これにより、ユーザの操作による合成音再生位置の段落単位（文単位）の変更で、合成音生成部１００による音声波形バッファ１１０の再充填でラグを発生させることなく合成音の再生を続けることができる。【選択図】  図１
2004271976.tif 000002
【特許請求の範囲】
【請求項１】
テキスト情報を保持するテキスト記憶部と、
第１のバッファと、
第２のバッファと、
前記テキスト記憶部に保持されているテキスト情報の第１の位置から第２の位置までに対応する音声波形データを生成して前記第１のバッファに格納し、前記テキスト記憶部に保持されているテキスト情報の第３の位置から第４の位置までに対応する音声波形データを生成して前記第２のバッファに格納する合成音生成部と、
前記第１のバッファに格納されている音声波形データまたは前記第２のバッファに格納されている音声波形データを選択的に出力するバッファ切替部とを備える
ことを特徴とする音声合成装置。
【請求項２】
請求項１において、
前記合成音生成部は、
前記第１のバッファに格納されている音声波形データを前記バッファ切替部が出力しているときに、前記テキスト情報の第３の位置から第４の位置までに対応する音声波形データを前記第２のバッファに格納する
ことを特徴とする音声合成装置。
【請求項３】
請求項１において、
前記第１の位置または前記第３の位置は、
前記テキスト情報に含まれている文のうちのある１つの文の先頭に対応する
ことを特徴とする音声合成装置。
【請求項４】
請求項１において、
前記第１の位置または前記第３の位置は、
前記テキスト情報に対応する音声波形データを時系列的に区切って設けられた頭出し候補位置のうちのある１つの頭出し候補位置に対応する
ことを特徴とする音声合成装置。
【請求項５】
請求項１において、
前記第１の位置または前記第３の位置は、
前記テキスト情報の言語的区切りのうちのある１つの言語的区切りの先頭に対応する
ことを特徴とする音声合成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はテキスト情報からそれに対応した音声情報を生成する音声合成装置に関する。
【０００２】
【従来の技術】
従来の音声合成装置は、主に入力となるテキスト情報を保持するテキスト記憶装置と、入力されたテキスト情報から音声波形を生成する合成音生成装置と、生成された音声波形を蓄積する音声波形バッファ装置と、蓄積された音声波形を音声として出力するスピーカ装置によって構成される。
【０００３】
上記の従来型音声合成装置において、ユーザが現在音声波形バッファ装置に蓄積されていない部分の合成音を再生しようとした場合、まず音声波形バッファ装置内に蓄積された音声波形が破棄され、次にユーザの指定した再生開始位置からの合成音声波形で音声波形バッファ装置が再充填され、十分な量の音声波形が得られた後にスピーカから音声の出力が開始される。
【０００４】
【発明が解決しようとする課題】
従来の技術では、ユーザが合成音の再生位置を変更する場合、新しい位置からの合成音の再生の前に、音声波形バッファ装置の再充填にかかる時間だけタイムラグが空くことになる。このため、音声再生のスキップや巻き戻しなどの操作がスムースに行えないという課題があった。
【０００５】
この発明の目的は、合成音の再生中に発生するタイムラグを抑制することができる音声合成装置を提供することである。
【０００６】
【課題を解決するための手段】
この発明による音声合成装置は、テキスト記憶部と、第１のバッファと、第２のバッファと、合成音生成部と、バッファ切替部とを備える。テキスト記憶部は、テキスト情報を保持する。合成音生成部は、テキスト記憶部に保持されているテキスト情報の第１の位置から第２の位置までに対応する音声波形データを生成して第１のバッファに格納し、テキスト記憶部に保持されているテキスト情報の第３の位置から第４の位置までに対応する音声波形データを生成して第２のバッファに格納する。バッファ切替部は、第１のバッファに格納されている音声波形データまたは第２のバッファに格納されている音声波形データを選択的に出力する。
【０００７】
好ましくは、上記合成音生成部は、第１のバッファに格納されている音声波形データをバッファ切替部が出力しているときに、上記テキスト情報の第３の位置から第４の位置までに対応する音声波形データを第２のバッファに格納する。
【０００８】
好ましくは、上記第１の位置または上記第３の位置は、上記テキスト情報に含まれている文のうちのある１つの文の先頭に対応する。
【０００９】
好ましくは、上記第１の位置または上記第３の位置は、上記テキスト情報に対応する音声波形データを時系列的に区切って設けられた頭出し候補位置のうちのある１つの頭出し候補位置に対応する。
【００１０】
好ましくは、上記第１の位置または上記第３の位置は、上記テキスト情報の言語的区切りのうちのある１つの言語的区切りの先頭に対応する。
【００１１】
この発明による音声合成装置では、音声波形バッファ（第１のバッファまたは第２のバッファの一方）の再充填中にタイムラグが発生しないよう、音声波形バッファの再充填中に再生すべき音声をあらかじめ補助バッファ（第１のバッファまたは第３のバッファの他方）に蓄積しておき、ユーザにより合成音の再生位置が変更された際にはこれを再生しつつ音声波形バッファの充填を行う。これにより、音声を再生しながらの再生スキップや巻き戻しなどの操作をスムースに行うことができる。
【００１２】
この発明による音声合成装置では、現在再生中の音声波形のほかに、次に再生する可能性のある音声波形の一部を蓄積する補助バッファを持つことにより、合成音生成部による合成音の生成が音声波形の再生よりも遅れる際に補助バッファに蓄積された音声波形を再生し、ラグの発生を防ぐことができる。
【００１３】
各補助バッファに蓄積される音声波形の先頭が、テキスト記憶部内に保持されたテキスト情報の各文の先頭にあたることが好ましい。これにより、ユーザの操作による合成音再生位置の文単位の変更で、合成音生成部による音声波形バッファの再充填でラグを発生させることなく合成音の再生を続けることができる。
【００１４】
各補助バッファに蓄積される音声波形の先頭が、合成音生成部の生成する音声波形を時系列的に区切って設けた頭出し候補位置と一致することが好ましい。これにより、ユーザの操作による合成音再生位置の時間単位の変更で、合成音生成部による音声波形バッファの再充填でラグを発生させることなく合成音の再生を続けることができる。
【００１５】
各補助バッファに蓄積される音声波形の先頭が、テキスト記憶部内に保持されたテキスト情報の言語的区切りの先頭にあたることが好ましい。言語的区切りの先頭とは、例えば文節の先頭や自立語の先頭、特定の種類の形態素の先頭などが挙げられる。これにより、ユーザの操作による言語的区切りを単位とした合成音再生位置の変更で、合成音生成部による音声波形バッファの再充填でラグを発生させることなく合成音の再生を続けることができる。
【００１６】
以上のように本発明によれば、あらかじめ再生されることが分かっている、もしくは再生される可能性の高い音声を現在再生中の音声とは別に保存しておくことで、実行時の合成音生成部の負担を減らし、合成音生成処理の遅れを軽減することができる。また、この機能を実現するための構成を利用することにより、ラグを発生させないスムースな再生位置変更の機能が実現できる。
【００１７】
【発明の実施の形態】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付しその説明は繰り返さない。
【００１８】
（第１の実施形態）
＜音声合成装置の全体構成＞
第１の実施形態による音声合成装置の全体構成を図１に示す。この音声合成装置は、１つの音声波形バッファ１１０と５つの補助バッファ１１１ａ〜１１１ｅを持ち、現在合成音再生中の段落の２つ前から２つ先までの段落の先頭へのスキップができる装置である。この音声合成装置は、合成音生成部１００と、テキスト記憶部１０５と、言語情報データベース１０６と、音声情報データベース１０７と、バッファ切替部１０８，１１４と、ステータスバッファ解析部１０９と、音声波形バッファ１１０と、補助バッファ１１１ａ〜１１１ｅと、ステータスバッファ１１６，１１７ａ〜１１７ｅと、補助バッファ対応テーブル１１２と、スピーカ１１３と、再生位置変更制御スイッチ１１５とを備える。
【００１９】
合成音生成部１００は、音声合成位置制御部１０１と、形態素解析部１０２と、読み解析部１０３と、波形生成部１０４とを含む。合成音生成部１００は、テキスト記憶部１０５から読み込んだテキストを言語情報データベース１０６および音声情報データベース１０７に蓄積されたデータを元に解析して合成音に変換する。
【００２０】
言語情報データベース１０６は、言語モデルやシソーラス等の、入力テキストの意味や構造を解析するためのデータベースである。
【００２１】
音声情報データベース１０７は、音声素片や個人声質パラメータ等の、音声波形を作成するための元となるデータベースである。
【００２２】
波形生成部１０４から出力される合成音はバッファ切替部１０８に送られ、ステータスバッファ解析部１０９からの指示に従い、音声波形バッファ１１０もしくは補助バッファ１１１ａ〜１１１ｅのいずれかに格納される。
【００２３】
ステータスバッファ解析部１０９による出力先バッファの判定は補助バッファ対応テーブル１１２の内容を調べることによって行われる。
【００２４】
バッファ１１０，１１１ａ〜１１１ｅに格納された合成音の再生はスピーカ１１３によって行われる。音声の再生元となるバッファは、ステータスバッファ解析装置１０９からの指示に従い、バッファ切替部１１４により切り替えられる。
【００２５】
ユーザは、再生位置変更制御スイッチ１１５を操作することにより、合成音再生位置のスキップもしくは再生停止操作を行う。
【００２６】
スキップ先のテキスト位置に対応した音声が補助バッファ１１１ａ〜１１１ｅのどれかに保持されているか、保持されているのであればどれに保持されているのかは、補助バッファ対応テーブル１１２にあらかじめ記録しておく。また、補助バッファ対応テーブル１１２には、各補助バッファ１１１ａ〜１１１ｅへの出力が完了しているかどうかのフラグも持たせておく。
【００２７】
ステータスバッファ１１６，１１７ａ〜１１７ｅは、ある文章に対する音声合成を一時中断し、後でその中断した時点からの音声合成処理を素早く再開するための情報を保存するものである。この情報を、以下「ステータス情報」と呼ぶ。
【００２８】
以下、ステータスバッファ１１６，１１７ａ〜１１７ｅに保存されるステータス情報について実例をもとに説明する。
【００２９】
図２は、合成音生成部１００が、テキスト記憶部１０５から受け取ったテキスト文２００を合成音２０３に変換して出力するまでの処理の流れを表す。
【００３０】
まず、形態素解析部１０２が言語情報データベース１０６に格納された情報を元に入力のテキスト文２００を解析し、テキスト文２００を構成する単語の品詞構成や係り受けの情報を得る。以下、これを品詞・係り受け情報２０１と呼ぶ。
【００３１】
次に、読み解析部１０３が言語情報データベース１０６と品詞・係り受け情報２０１を用いてテキスト文２００を解析し、テキスト文２００の読み上げに対応する音素列２０２を生成する。
【００３２】
最後に、波形生成部１０４が音素列２０２と音声情報データベース１０７を用いて、テキスト文２００の読み上げに対応する合成音波形２０３を出力する。
【００３３】
ここで、時間のかかる処理は特に品詞・係り受け情報２０１や音素列２０２の生成を行う部分であり、波形生成部１０４による合成音波形２０３の生成にはそれほど時間を要しない。よって、合成音波形２０３の生成中にユーザが合成音再生位置のスキップを指示したら、音素列２０２と品詞・係り受け情報２０１、音素列２０２の中で現在どの部分の部分波形を生成しているのかを示すポインタ、および波形生成部１０４が合成音波形２０３を生成するために使用している内部状態変数を「ステータス情報」としてステータスバッファ１１６，１１７ａ〜１１７ｅに保存しておくことによって、合成音波形２０３の出力をこの位置から素早く再開することができる。
【００３４】
また、ステータス情報は、対応する音声波形バッファ１１０もしくは補助バッファ１１１ａ〜１１１ｅに格納された音声が、入力されたテキスト文に対する合成音の終端に達しているかどうかを示すフラグを含む。
【００３５】
＜音声合成装置の動作＞
この装置の動作を、実例に沿って説明する。
【００３６】
（１）…図３参照
まず最初に、各部の初期化を行う。初期化後の各部の状態を図３に示す。ここでの初期化には、補助バッファ対応テーブル１１２の内容クリア、合成音生成部１００の使用する各種内部変数の初期化、音声波形バッファ１１０や補助バッファ１１１ａ〜１１１ｅにおけるデータ書込み・再生位置を指すポインタの初期化、ステータスバッファ１１６，１１７ａ〜１１７ｅの内容クリアなどが含まれる。
【００３７】
合成音での読み上げの対象となるのはテキスト記憶部１０５に保持されているテキストである。このテキストは段落ごとに番号が振られており、この番号によって、テキストの中のそれぞれの段落を参照することができるものとする。ここでは１つの段落は１つの文で構成されるものとする。また、ここでは１から始まる連番が振られているものとして説明を行うが、「テキスト全体の先頭から何文字目か」というような数字でも良い。
【００３８】
音声波形バッファ１１０および補助バッファ１１１ａ〜１１１ｅはリングバッファである。音声波形バッファ１１０は２００個の記録ブロック（図３ではブロック０〜１９９）を含む。補助バッファ１１１ａ〜１１１ｅは１０個の記録ブロック（図３ではブロック０〜９）を含む。音声波形バッファ１１０および補助バッファ１１１ａ〜１１１ｅにはブロック単位でデータの書き込み／読み出しが行われる。
【００３９】
（２）…図４参照
段落１のテキストを読み込み、合成音の生成を開始する。生成された合成音は補助バッファ１１１ａの先頭から保存するが、この時点ではまだ再生を開始せず、補助バッファ１１１ａへの書き込みが２ブロック分終了するまで待つ。補助バッファ対応テーブル１１２には、補助バッファ１１１ａが段落１に対応しているという情報を書き込んでおく。
【００４０】
（３）…図５参照
補助バッファ１１１ａへの書き込みが２ブロック分終了したら、再生元を補助バッファ１１１ａにして、スピーカ１１３より合成音の再生を開始する。再生を行いながら同時に合成音の生成・書き込みを続行する。
【００４１】
（４）…図６参照
補助バッファ１１１ａへの書き込みが１０ブロック分終了したら、後にこの位置から合成音の生成を再開するのに必要なステータス情報をステータスバッファ１１７ａに保存し、続きの合成音を音声波形バッファ１１０に保存し始める。また、補助バッファ対応テーブル１１２の、補助バッファ１１１ａへの出力完了フラグを立てておく。
【００４２】
（５）…図７参照
補助バッファ１１１ａからの再生が終了する。音声波形バッファ１１０には、まだ合成音の書き込みが続いている。スピーカ１１３による合成音の再生元を音声波形バッファ１１０に切り替え、合成音の再生を切れ目無く続ける。
【００４３】
（６）…図８参照
音声波形バッファ１１０が一杯になる。現在再生中の段落１から±２つ以内の段落で、まだ対応する補助バッファが無いもの、もしくは対応する補助バッファの中身が出力途中であるものを補助バッファ対応テーブル１１２から探す。
【００４４】
（７）…図９参照
段落２のテキストを取得する。ステータス情報をステータスバッファ１１６に保存した上で、合成音の保存先を補助バッファ１１１ｂにして、補助バッファ１１１ｂの先頭から段落２のテキストに対応する合成音の保存を開始する。音声波形バッファ１１０からは、引き続き段落１の合成音の再生を続行する。補助バッファ対応テーブル１１２に、補助バッファ１１１ｂが段落２に対応しているという情報を書き込んでおく。
【００４５】
（８）…図１０参照
補助バッファ１１１ｂへの書き込み中に、音声波形バッファ１１０の空きブロック数が５０ブロックに達する。再度音声波形バッファ１１０へと合成音の出力を再開するため、まず現在のステータス情報をステータスバッファ１１７ｂへ出力し、次にステータスバッファ１１６からステータス情報を取得する。次に合成音の出力先を音声波形バッファ１１０に設定し、合成音の出力を開始する。
【００４６】
（９）…図１１参照
音声波形バッファ１１０が、再度一杯になる。現在のステータス情報をステータスバッファ１１６に保存し、現在再生中の段落１から±２つ以内の段落で、まだ対応する補助バッファが無いもの、もしくは対応する補助バッファの中身が出力途中であるものを補助バッファ対応テーブルから探す。
【００４７】
（１０）…図１２参照
段落２に対応する補助バッファ１１１ｂが出力途中なので、これを出力先に選択する。ステータスバッファ１１７ｂからステータス情報を取得し、補助バッファ１１１ｂに保存されている音声の続きを出力する。
【００４８】
（１１）…図１３参照
補助バッファ１１１ｂが一杯になる。現在のステータス情報をステータスバッファ１１７ｂに保存し、さらに補助バッファ対応テーブル１１２の補助バッファ１１１ｂへの出力完了フラグを立て、次の出力先を探す。音声波形バッファ１１０には、まだ十分な空きブロックができていない。一方、現在再生中の段落１から±２つの範囲内で、まだ補助バッファに保存されていない段落として、段落３がある。これを合成音の出力先に設定し、段落３のテキストを取得する。補助バッファ対応テーブル１１２に、補助バッファ１１１ｃが段落３に対応するという情報を書き込んでおく。
【００４９】
（１２）…図１４参照
補助バッファ１１１ｃの先頭から、段落３に対応する合成音の書き込みを行う。同時に、音声波形バッファ１１０からの再生を続行する。
【００５０】
（１３）…図１５参照
補助バッファ１１１ｃへの書き込み中に、音声波形バッファ１１０の空きブロック数が５０ブロックに達する。現在のステータス情報をステータスバッファ１１７ｃに保存し、ステータスバッファ１１６からステータス情報を取得する。
【００５１】
（１４）…図１６参照
音声波形バッファ１１０への、合成音の出力を再開する。
【００５２】
（１５）…図１７参照
音声波形バッファ１１０の空きブロック数が０になる前に、段落１に対応する合成音の出力が終了する。入力されたテキストに対する合成音の出力が終端に達したので、書き込み中であった音声波形バッファ１１０に対応するステータスバッファ１１６に、出力の完了を表すフラグを立てたステータスを書き込む。補助バッファ対応テーブル１１２によれば、次の段落２の音声は補助バッファ１１１ｂに保存されており、補助バッファへの出力は完了しているとあるので、ステータスバッファ１１７ｃからステータス情報を取得し、補助バッファ１１１ｃへ出力途中の合成音の出力を再開する。
【００５３】
（１６）…図１８参照
補助バッファ１１１ｃへの出力が完了する前に、音声波形バッファ１１０に保存された合成音の再生が完了する。ステータスバッファ１１６の内容を初期化した後、補助バッファ対応テーブル１１２から次の段落２の合成音を保持する補助バッファ１１１ｂを見付け、スピーカ１１３による合成音の再生元を補助バッファ１１１ｂに切り替える。また、現在のステータス情報をステータスバッファ１１７ｃに保存し、ステータスバッファ１１７ｂからステータス情報を取得する。合成音の出力先は音声波形バッファ１１０にして、補助バッファ１１１ｂに保存されている合成音の続きを音声波形バッファ１１０に出力開始する。
【００５４】
（１７）…図１９参照
音声波形バッファ１１０が一杯になる前に、ユーザにより「１つ前の段落にスキップ」という指示がなされる。補助バッファ対応テーブル１１２に、１つ前の段落１の音声は補助バッファ１１１ａに保存されているとあるので、ステータスバッファ１１７ａからステータス情報を取得し、合成音の出力先は音声波形バッファ１１０、再生元は補助バッファ１１１ａとして、補助バッファ１１１ａに保存されている合成音の続きを音声波形バッファ１１０に出力開始する。
【００５５】
（１８）…図２０参照
音声波形バッファ１１０が一杯になる前に、ユーザにより「２つ先の段落にスキップ」という指示がなされる。補助バッファ対応テーブル１１２に、２つ先の段落３の音声は補助バッファ１１１ｃに保存されているとあるので、ステータスバッファ１１７ｃからステータス情報を取得する。補助バッファ１１１ｃには既に２ブロック以上の音声が保持されているため、合成音の出力先と再生元を共に補助バッファ１１１ｃにし、スピーカ１１３からの再生を続行しつつ合成音の出力を開始する。
【００５６】
（１９）…図２１参照
補助バッファ１１１ｃが一杯になる。現在のステータス情報をステータスバッファ１１７ｃに保存し、合成音の出力先を音声波形バッファ１１０に変更する。また、補助バッファ対応テーブル１１２の補助バッファ１１１ｃへの出力完了フラグを立てる。
【００５７】
（２０）…図２２参照
音声波形バッファ１１０が一杯になる前に、ユーザにより「１つ先の段落にスキップ」という指示がなされる。補助バッファ対応テーブル１１２に、１つ先の段落４の音声はまだどこにも保存されていないとあるので、スピーカ１１３からの音声の再生を一旦停止し、段落４のテキストを取得して、補助バッファ１１１ｄへの合成音の出力を開始する。また、補助バッファ対応テーブル１１２に、補助バッファ１１１ｄが段落４に対応するという情報を書き込んでおく。
【００５８】
（２１）…図２３参照
補助バッファ１１１ｄへの合成音の書き込みが２ブロック分終了した時点で、スピーカ１１３からの再生を開始する。その後、補助バッファ１１１ｄが一杯になった時点で合成音の出力先を音声波形バッファ１１０に変更し、補助バッファ対応テーブル１１２に補助バッファ１１１ｄへの出力完了フラグを書き込む。さらに、補助バッファ１１１ｄからの再生が終了した時点で、再生元を補助バッファ１１１ｄから音声波形バッファ１１０に変更する。
【００５９】
（２２）…図２４参照
音声波形バッファ１１０が一杯になる。ステータスバッファ１６０に、現在のステータス情報を保存する。補助バッファ対応テーブル１１２に、次の段落５に対応する補助バッファの情報が無いので、補助バッファ１１１ｅを使用して段落５の音声の合成・蓄積を行う。合成音の出力先を補助バッファ１１１ｅにし、段落５のテキストを取得し、補助バッファ１１１ｅへの合成音の出力を開始する。
【００６０】
（２３）…図２５参照
同様の手順で、補助バッファ１１１ｅへの出力が完了する。さらに段落４に対応する合成音を音声波形バッファ１１０に出力中、音声波形バッファ１１０が一杯になる。補助バッファ対応テーブル１１２を見ると、現在再生中の段落４から±２つ以内の段落で、まだどこの補助バッファ装置にも合成音が入っていないものとして、段落６がある。一方、補助バッファ１１１ａに入っている段落１は、現在再生中の段落４から±２つ以内に入らないため、補助バッファ１１１ａを用いて段落６の音声を保存することにする。
【００６１】
（２４）…図２６参照
同様の手順で、補助バッファ１１１ａへの出力が完了する。補助バッファ対応テーブル１１２に、現在再生中の段落４から±２つ以内の段落に対応する合成音は、全ていずれかの補助バッファ装置に入っているとあるので、合成音の出力先・再生元は共に音声波形バッファ１１０とし、音声波形バッファ１１０に５０ブロックの空き容量ができるのを待って合成音の出力を行うことを繰り返す。
【００６２】
（２５）…図２７参照
段落４に対応する合成音の出力が終了する。まだ音声波形バッファ１１０内の合成音の再生は完了しておらず、再生中の段落から±２以内の段落に対応する合成音は既にいずれかの補助バッファに入っているのでこのまま待機する。
【００６３】
（２６）…図２８参照
音声波形バッファ１１０からの、合成音の再生が完了する。次の段落５に対応する合成音は補助バッファ１１１ｅに入っているので、合成音の再生元を補助バッファ装置１１１ｅにし、ステータスバッファ１１７ｅからステータス情報を取得し、合成音の出力先を音声波形バッファ１１０にして、補助バッファ１１１ｅに保存された合成音の続きを出力する。
【００６４】
（２７）…図２９参照
補助バッファ１１１ｅからの再生が終了し、合成音の再生元が音声波形バッファ１１０になる。
【００６５】
（２８）…図３０参照
ユーザにより、合成音の再生停止が指示される。スピーカ１１３による合成音の再生を停止し、アルゴリズムが終了する。
【００６６】
＜フローチャート＞
第１の実施形態による音声合成装置の動作フローの概略図を図３１に示し、図３２〜３４に各ブロックの詳細図を示す。
【００６７】
図３１は、第１の実施形態による音声合成装置の動作を機能ごとにブロック化して概略を示したものである。各ステップ及び機能ブロックの動作は以下の通りである。
【００６８】
［Ｓ０００］
装置の動作が開始する。
【００６９】
［Ｓ００１］
装置の初期化が行われる。これは、補助バッファ対応テーブル１１２の内容クリア、合成音生成部１００の使用する各種内部変数の初期化、音声波形バッファ１１０や各補助バッファ１１１ａ〜１１１ｅにおけるデータ書込み・再生位置を指すポインタの初期化、各ステータスバッファ１１６，１１７ａ〜１１７ｅの内容クリアなどを含む。
【００７０】
［Ｓ００２］
現在再生中の段落の合成音を合成音生成部１００から出力し、スピーカ１１３から再生させるための制御を行うための機能ブロックである。ＥＰ１は他の処理ステップからこのブロックに処理を移す際のエントリポイントである。即ち、Ｓ００２に含まれるステップを実行する際の制御フローは、必ずＥＰ１を通ってそのステップに到達する。
【００７１】
［Ｓ００３］
音声合成及び再生を行っている途中で、ユーザからの再生位置変更・再生停止等の入力を受け取り、それにより各種制御の振り分けを行うブロックである。このブロックには、ＥＰ２、ＥＰ３の２つのエントリポイントがある。
【００７２】
［Ｓ００４］
現在再生中の段落の合成音の生成に余裕がある際に、他の段落の合成音を生成しておくためのブロックである。エントリポイントとしてＥＰ４を持つ。
【００７３】
［Ｓ００５］
装置の動作が停止する。
【００７４】
＜機能ブロックＳ００２＞
図３２は、上記機能ブロックＳ００２の詳細な内容である。大まかに、以下のような動作をする。
・現在の再生対象であるバッファに、さらに合成音を書き込むことができなければＥＰ４へ。
・現在の再生対象であるバッファに、さらに合成音を書き込むことができれば書き込む。このとき、まだ再生が始まっておらず、かつ既に２ブロック分の合成音が書き込まれていれば再生を開始する。
【００７５】
各ステップの詳細は以下の通りである。
【００７６】
［Ｓ１００］
音声波形バッファ１１０，補助バッファ１１１ａ〜１１１ｅのうち現在再生中の段落の合成音を最後に出力したバッファに対応するステータスバッファの完了フラグがＯＮになっているか否かにより、分岐処理を行う。
【００７７】
［Ｓ１０１］
音声波形バッファ１１０，補助バッファ１１１ａ〜１１１ｅのうち現在合成音の出力先となっているバッファの空きブロック数が０になっているか否かにより、分岐処理を行う。
【００７８】
［Ｓ１０２］
１ブロック分の合成音出力を行う。
【００７９】
［Ｓ１０３］
Ｓ１０２で出力した音声が、現在出力中の段落の最後のブロックであったか否かによって分岐処理を行う。
【００８０】
［Ｓ１０４］
Ｓ１０３で最後のブロックの出力が行われたと判定したバッファ（音声波形バッファ１１０もしくは補助バッファ１１１ａ〜１１１ｅ）に対応するステータスバッファの完了フラグをＯＮにする。
【００８１】
［Ｓ１０５］
現在、スピーカ１１３からの音声の再生が行われているか否かによって分岐処理を行う。
【００８２】
［Ｓ１０６］
Ｓ１０２での出力が、補助バッファ１１１ａ〜１１１ｅの先頭から２ブロック目であったか否かによって分岐処理を行う。
【００８３】
［Ｓ１０７］
スピーカ１１３から合成音の再生を開始する。
【００８４】
［Ｓ１０８］
現在、合成音の出力先に指定されているのが音声波形バッファ１１０か否かによって分岐処理を行う。
【００８５】
［Ｓ１０９］
補助バッファ１１１ａ〜１１１ｅのうち現在の出力先である補助バッファに対応するステータスバッファに、その補助バッファ内の現在の出力位置から音声合成処理を再開するために必要なステータス情報の全てを保存する。
【００８６】
［Ｓ１１０］
生成する合成音の出力先を、音声波形バッファ１１０に変更する。
【００８７】
＜機能ブロックＳ００３＞
図３３は、上記機能ブロックＳ００３の詳細な内容である。大まかに、以下のような動作をする。
・ユーザから、合成音を再生する段落の変更が指示されたら、現在のステータス情報を保存し、新たな再生対象の段落が補助バッファ対応テーブル１１２に登録されているかどうか調べ、登録されていればステータスバッファに保存されているステータスの示す場所の続きから音声合成処理を再開し、登録されていなければ段落の先頭から音声合成処理を開始する。
・ユーザから、合成音の再生停止が指示されるか、合成音の再生がテキスト記憶部１０５に記憶されたテキストの終端に達したら、アルゴリズムを停止させる。
【００８８】
各ステップの詳細は以下の通りである。
【００８９】
［Ｓ２００］
ユーザから、再生位置変更制御スイッチ１１５を通じて再生する段落の変更が指示されたか否かによって分岐処理を行う。
【００９０】
［Ｓ２０１］
現在、合成音の出力先に指定されているのが補助バッファ１１１ａ〜１１１ｅのうちのどれかであるか否かによって分岐処理を行う。
【００９１】
［Ｓ２０２］
現在の出力先である補助バッファに対応するステータスバッファに、その補助バッファ内の現在の出力位置から音声合成処理を再開するために必要なステータス情報の全てを保存する。
【００９２】
［Ｓ２０３］
次の合成処理対象となる段落が、補助バッファ対応テーブル１１２に既に登録されているか否かによって分岐処理を行う。
【００９３】
［Ｓ２０４］
次の合成処理対象となる段落をテキスト記憶部１０５から取得し、言語処理を行って波形生成部１０４の入力にできる形式にする。
【００９４】
［Ｓ２０５］
補助バッファ対応テーブル１１２に、まだ新たに段落と補助バッファとの対応関係を追加することができるか否かによって分岐処理を行う。
【００９５】
［Ｓ２０６］
現在の再生対象の段落から、±２段落以内でない段落を補助バッファ対応テーブル１１２から１つ探し、削除する。さらに、対応するステータスバッファの内容をクリアする。
【００９６】
［Ｓ２０７］
補助バッファ１１１ａ〜１１１ｅから、補助バッファ対応テーブル１１２に登録されていないものを探し、現在の出力対象の段落とその補助バッファとを対応付けて補助バッファ対応テーブル１１２に登録する。
【００９７】
［Ｓ２０８］
合成音の出力先を、Ｓ２０７で現在の出力対象の段落と対応付けた補助バッファに設定する。
【００９８】
［Ｓ２０９］
スピーカ１１３からの、合成音の再生を停止する。
【００９９】
［Ｓ２１０］
補助バッファ対応テーブル１１２に登録された、現在の出力対象と対応付けられた補助バッファに対応するステータスバッファから、合成処理を再開するためのステータス情報を取得する。
【０１００】
［Ｓ２１１］
ステータスバッファから取得したステータス情報を見て、その補助バッファへの出力が既に完了しているか否かによって分岐処理を行う。
【０１０１】
［Ｓ２１２］
合成音の出力先を見付かった補助バッファにする。
【０１０２】
［Ｓ２１３］
選択した出力先の補助バッファに２ブロック分の音声を既に出力済みか否かによって分岐処理を行う。
【０１０３】
［Ｓ２１４］
スピーカ１１３からの音声の再生を中断する。
【０１０４】
［Ｓ２１５］
合成音の出力先を音声波形バッファ１１０に変更する。
【０１０５】
［Ｓ２１６］
ユーザから、再生位置変更制御スイッチ１１５を通じて本装置の停止が指示されたか否かによって分岐処理を行う。
【０１０６】
［Ｓ２１７］
現在の再生対象となっている段落の合成音を再生し終わったか否かによって分岐処理を行う。
【０１０７】
［Ｓ２１８］
テキスト記憶部１０５に保存されているテキストの終端まで合成音の再生処理が完了したか否かによって、分岐処理を行う。
【０１０８】
［Ｓ２１９］
再生対象となる段落を、現在の段落の直後の段落に変更する。
【０１０９】
［Ｓ２２０］
合成音の再生及び出力の対象となる段落を、Ｓ２００で指定された段落に変更する。
【０１１０】
［Ｓ２２１］
合成音の再生元を、Ｓ２０３で見付かった補助バッファもしくはＳ２０８で設定した補助バッファに変更する。
【０１１１】
＜機能ブロックＳ００４＞
図３４は、上記機能ブロックＳ００４の詳細な内容である。大まかに、以下のような動作をする。
・補助バッファ対応テーブル１１２を見て、現在再生中の段落から±２段落以内で、まだ補助バッファへの合成音出力が完了していない段落があるかどうか調べる。もしあれば、補助バッファ対応テーブル１１２にその段落を登録し、合成音の出力を行う。
・ユーザから、合成音の再生を行う段落の変更が指示されたら、その段落の処理に移る。
・ユーザから、合成音の再生停止が指示されるか、合成音の再生がテキスト記憶部１０５に記憶されたテキストの終端に達したら、アルゴリズムを停止させる。
【０１１２】
各ステップの詳細は以下の通りである。
【０１１３】
［Ｓ３００］
補助バッファ対応テーブル１１２を見て、現在再生中の段落から±２段落以内で、まだ補助バッファへの合成音出力が完了していない段落があるかどうか調べて分岐処理を行う。
【０１１４】
［Ｓ３０１］
Ｓ３００で見付かった段落が、既に補助バッファ対応テーブル１１２に登録されているかどうか、即ち補助バッファへの出力は完了していないが、一部の出力は既に行われているかどうか調べ、分岐処理を行う。
【０１１５】
［Ｓ３０２］
補助バッファ対応テーブル１１２に、テキスト記憶部１０５内の段落と補助バッファとの対応付けを登録するための空きエントリがまだ残っているか否かを調べて分岐処理を行う。
【０１１６】
［Ｓ３０３］
補助バッファ対応テーブル１１２に登録されているエントリの中で、現在再生中の段落から±２段落以内でない段落に関するものを１つ選び、削除を行う。さらに、対応するステータスバッファの内容をクリアする。
【０１１７】
［Ｓ３０４］
補助バッファ対応テーブル１１２の空きエントリの１つを用いて、Ｓ２００で見付かった段落を登録する。
【０１１８】
［Ｓ３０５］
合成音の出力先を、Ｓ３０４で段落との対応付けを登録した補助バッファもしくはＳ３０１で見付かった補助バッファに変更する。
【０１１９】
［Ｓ３０６］
１ブロック文の合成音生成・出力を行う。
【０１２０】
［Ｓ３０７］
現在出力中の段落を、最後まで出力し終わったか否かによって分岐処理を行う。
【０１２１】
［Ｓ３０８］
現在の出力先である補助バッファに対応するステータスバッファの完了フラグをＯＮにする。
【０１２２】
［Ｓ３０９］
ユーザから、再生位置変更制御スイッチ１１５を通じて再生する段落の変更が指示されたか否かによって分岐処理を行う。
【０１２３】
［Ｓ３１０］
ユーザから、再生位置変更制御スイッチ１１５を通じて本装置の停止が指示されたか否かによって分岐処理を行う。
【０１２４】
［Ｓ３１１］
ステータスバッファ１１６に保存されているステータスを見て、完了フラグがＯＮではなく、かつ音声波形バッファ１１０に５０ブロック以上の空き領域ができているか否かによって分岐処理を行う。
【０１２５】
［Ｓ３１２］
現在、合成音の生成・出力を行っていないのかどうかによって分岐処理を行う。
【０１２６】
［Ｓ３１３］
現在の出力先である補助バッファに対応するステータスバッファに、その補助バッファ内の現在の出力位置から音声合成処理を再開するために必要なステータス情報の全てを保存する。
【０１２７】
［Ｓ３１４］
現在再生中の段落の合成音の生成を再開するために、音声波形バッファ１１０に対応するステータスバッファ１１６からステータス情報を取得する。
【０１２８】
［Ｓ３１５］
出力先をＮＵＬＬにする。即ち、合成音の生成・出力処理を停止する。
【０１２９】
［Ｓ３１６］
補助バッファ対応テーブル１１２に登録済みで、既に一部が出力済みの合成音の続きを出力するために、対応するステータスバッファからステータス情報を取得する。
【０１３０】
［Ｓ３１７］
現在再生中の段落を、スピーカ１１３から再生完了したか否かによって分岐処理を行う。
【０１３１】
［Ｓ３１８］
テキスト記憶部１０５に保持されているテキストの終端まで、合成音の再生が終了したか否かによって分岐処理を行う。
【０１３２】
［Ｓ３１９］
合成音再生の対象を、現在再生対象となっている段落の次の段落に変更する。
【０１３３】
［Ｓ３２０］
次の合成処理対象となる段落をテキスト記憶部１０５から取得し、言語処理を行って波形生成部１０４の入力にできる形式にする。
【０１３４】
＜効果＞
第１の実施形態による音声合成装置では、現在合成音再生中の段落の２つ前から２つ先までの段落の先頭の音声波形を補助バッファ１１０ａ〜１１０ｅにあらかじめ蓄積しておき、ユーザにより合成音の再生位置が変更された際にはこれを再生しつつ音声波形バッファ１１０の充填を行う。これにより、ユーザの操作による合成音再生位置の段落単位（文単位）の変更で、合成音生成部１００による音声波形バッファ１１０の再充填でラグを発生させることなく合成音の再生を続けることができる。
【０１３５】
（第２の実施形態）
第２の実施形態による音声合成装置の全体構成を図３５に示す。この装置は、図１に示した補助バッファ１１１ａ〜１１１ｅの代わりに音声波形バッファ１１０を複数持つ。その他の構成は図１と同様である。第１の実施形態において補助バッファ１１１ａ〜１１１ｅは各段落の先頭のみを保存し、音声波形バッファ１１０にその続きの合成音が出力されていたために各段落の再生中に再生元バッファの切替えが必要であった。図３５の装置では、十分な容量を持つ複数の音声波形バッファ１１０が必要となるが、段落内での再生元バッファの切替えが不要になるという利点を有する。
【０１３６】
この構成を用いる場合のフローチャートの例を、図３６〜３９に示す。このフローチャートの概形は図３１〜３４に示される第１の実施形態とほとんど同じであるが、再生元バッファの切替えが必要無いため、主に図３８に示されるＳ４０３内のフローが簡略化されている。
【０１３７】
第２の実施形態における動作フローの概略図を図３６に、図３７〜３９に各ブロックの詳細図を示してその内容を以下に説明する。
【０１３８】
［Ｓ４００］
装置の動作が開始する。
【０１３９】
［Ｓ４０１］
装置の初期化が行われる。これは、補助バッファ対応テーブル１１２の内容クリア、合成音生成部１００の使用する各種内部変数の初期化、音声波形バッファ１１０におけるデータ書込み・再生位置を指すポインタの初期化、各ステータスバッファ１１６の内容クリアなどを含む。
【０１４０】
［Ｓ４０２］
現在再生中の段落の合成音を合成音生成部１００から出力し、スピーカ１１３から再生させるための制御を行うための機能ブロックである。ＥＰ５は他の処理ステップからこのブロックに処理を移す際のエントリポイントである。即ち、Ｓ４０２に含まれるステップを実行する際の制御フローは、必ずＥＰ５を通ってそのステップに到達する。
【０１４１】
［Ｓ４０３］
音声合成及び再生を行っている途中で、ユーザからの再生位置変更・再生停止等の入力を受け取り、それにより各種制御の振り分けを行うブロックである。このブロックには、ＥＰ６、ＥＰ７の２つのエントリポイントがある。
【０１４２】
［Ｓ４０４］
現在再生中の段落の合成音の生成に余裕がある際に、他の段落の合成音を生成しておくためのブロックである。エントリポイントとしてＥＰ８を持つ。
【０１４３】
［Ｓ４０５］
装置の動作が停止する。
【０１４４】
図３７に示されるＳ４０２の動作は、図３２に示されるＳ００２の動作とほぼ同様であり、概略以下のようなものである。
・現在の再生対象である音声波形バッファ１１０に、さらに合成音を書き込むことができなければＥＰ４へ。
・現在の再生目標である音声波形バッファ１１０に、さらに合成音を書き込むことができれば書き込む。このとき、まだ再生が始まっておらず、かつ既に２ブロック分の合成音が書き込まれていれば再生を開始する。
【０１４５】
図３２に示されるフローと、特に相違のあるステップについてのみ詳説する。
【０１４６】
［Ｓ５０１］
現在、合成音の出力先に指定されている音声波形バッファ１１０の空きブロック数が０になっているか否かにより分岐処理を行う。
【０１４７】
第１の実施形態においては、Ｓ１０８によって、現在再生中の段落の先頭にあたる合成音を補助バッファに出力中であったのなら音声波形バッファ１１０に出力を続行し、音声波形バッファ１１０が一杯になったのならＥＰ４へと進んで他の段落の合成音を生成するという分岐を行っていた。
【０１４８】
第２の実施形態では、補助バッファと音声波形バッファ１１０の切替えを行う必要が無いため、出力中の音声波形バッファ１１０の空きブロック数が０になった段階で他の段落の合成音の生成に移ることができる。
【０１４９】
図３８に示されるＳ４０３の動作は、図３３に示されるＳ００３の動作とほぼ同様であり、概略以下のようなものである。
・ユーザから、合成音を再生する段落の変更が指示されたら、現在のステータス情報を保存し、新たな再生対象の段落が補助バッファ対応テーブル１１２に登録されているかどうか調べ、登録されていればステータスバッファ１１６に保存されているステータスの示す場所の続きから音声合成処理を再開し、登録されていなければ段落の先頭から音声合成処理を開始する。
・ユーザから、合成音の再生停止が指示されるか、合成音の再生がテキスト記憶装置１０５に記憶されたテキストの終端に達したら、アルゴリズムを停止させる。
【０１５０】
図３３に示されるフローと、特に相違のあるステップについてのみ詳説する。
【０１５１】
［Ｓ６０２］
現在の出力先である音声波形バッファ１１０に対応するステータスバッファ１１６に、現在の出力位置から音声合成処理を再開するために必要なステータス情報の全てを保存する。
【０１５２】
第１の実施形態においては、Ｓ２０１において、現在の出力先が他段落の合成音の出力によって上書きされる音声波形バッファ１１０か、他段落の合成音の出力では保存される補助バッファであるかにより、Ｓ２０２でステータス情報をステータスバッファに保存するかどうかの分岐処理を行っている。
【０１５３】
第２の実施形態においては、Ｓ４０４からのフローにおいて、ステータス情報は常に保存しておけばよいため、Ｓ２０１における分岐処理は必要無い。
【０１５４】
［Ｓ６１２］
合成音の出力先を、補助バッファ対応テーブル１１２に登録された音声波形バッファ１１０に変更する。
【０１５５】
第１の実施形態においては、Ｓ２１１の分岐処理によって、合成音の出力先を変化させていた。第２の実施形態においてこの処理は必要無く、常に補助バッファ対応テーブル１１２に登録された音声波形バッファ１１０を出力先に指定すればよい。
【０１５６】
［Ｓ６２２］
再生の完了した音声波形バッファ１１０に対応するステータスバッファ１１６及び補助バッファ対応テーブル１１２内の対応するエントリをクリアする。
【０１５７】
第１の実施形態においては、各補助バッファ１１１ａ〜１１１ｅには常に各段落の先頭に当たる合成音が保持されており、各段落の合成音の再生が終了しても有効であったが、第２の実施形態においては、合成音の出力を進めることによって各音声波形バッファ１１０に保持されていた各段落の先頭部分に当たる合成音が上書きされてしまうため、無効となる。そのため、再生元の段落が変更される場合は、対応するステータスバッファ１１６及び補助バッファ対応テーブル１１２のエントリのクリアが必要である。
【０１５８】
図３９に示されるＳ４０４の動作は、図３４に示されるＳ００４の動作とほぼ同様であり、概略以下のようなものである。
・補助バッファ対応テーブル１１２を見て、現在再生中の段落から±２段落以内で、まだどの音声波形バッファ１１０へも合成音出力が完了していない段落があるかどうか調べる。もしあれば、補助バッファ対応テーブル１１２にその段落を登録し、合成音の出力を行う。
・ユーザから、合成音の再生を行う段落の変更が指示されたら、その段落の処理に移る。
・ユーザから、合成音の再生停止が指示されるか、合成音の再生がテキスト記憶部１０５に記憶されたテキストの終端に達したら、アルゴリズムを停止させる。
【０１５９】
図３４に示されるフローと、特に相違のあるステップについてのみ詳説する。
【０１６０】
［Ｓ７０５］
合成音の出力先を、Ｓ７０４で段落との対応付けを登録した音声波形バッファ１１０もしくはＳ７０１で見付かった音声波形バッファ１１０に変更する。
【０１６１】
以上のフローチャートに従った、図３５の構成の装置の動作を図４０〜４２を用いて簡単に説明する。
【０１６２】
図４０は、音声波形バッファ１１０及びステータスバッファ１１６を３つずつ持つ構成による装置の動作状態を表す。この図で、音声波形バッファ１１０の＃０には段落２の合成音が出力され、同時にスピーカ１１３より再生が行われている。また、音声波形バッファ１１０の＃１には、既に段落１の合成音がブロック１からブロック１９９まで書き込まれている状態である。
【０１６３】
図４１は、図４０で行っていた音声波形バッファ１１０の＃０への出力が終了した状態を表す。補助バッファ対応テーブル１１２によれば、段落１の内容は既に音声波形バッファ１１０の＃１に出力が行われているため、段落３のテキストを取得してその合成音を音声波形バッファ１１０の＃２へと出力開始する。
【０１６４】
図４２は、音声波形バッファ１１０の＃０からの合成音の再生が終了した状態を表す。次の段落３の合成音は既に音声波形バッファ１１０の＃２に出力中であるため、再生元の変更を行ってスピーカ１１３からの合成音の再生を続行する。
【０１６５】
図４３は、図４２の状態の直後、ユーザにより再生位置が段落１に変更された状態を表す。このとき、段落１の合成音はまだ音声波形バッファ１１０の＃１に残っているため、再生元を音声波形バッファ１１０の＃１に変更して再生を続行する。また、出力先も同じく音声波形バッファ１１０の＃１になるが、音声波形バッファ１１０の＃１には空きブロックが無い状態であるため、出力途中であった音声波形バッファ１１０の＃２への出力に戻る。
【０１６６】
図４４は、図４３の状態の直後、ユーザにより装置の停止が指示され、アルゴリズムが停止した状態を表す。
【０１６７】
以上の構成及び手順によって、第１の実施形態に記載の効果を、複数の音声波形バッファによって実現することができる。
【０１６８】
（第３の実施形態）
第３の実施形態による音声合成装置の構成を図４５に示す。この音声合成装置は、合成音生成部１００から出力される音声を時系列的に区切り、補助バッファ１１１に蓄積させることで時間的な再生位置を基準とした合成音の再生位置変更を実現する。
【０１６９】
図４６は、合成音生成部１００が、テキスト記憶部１０５から受け取ったテキスト文２００を、合成音２０３に変換して出力するまでの処理の流れを表す。ここでの処理の流れはほとんど図２に示されるものと同じであるが、波形生成部１０４から出力される合成音の波形データが、時刻テーブル４５０を通って出力される点で異なる。
【０１７０】
図４７は、第３の実施形態において各音声波形バッファ１１０及び補助バッファ１１１に出力され蓄積される音声波形２０３の概略を表す。この例では、合成音の再生開始から計測して３秒ごとの時点を起点として、そこから１秒ずつの合成音の波形データを各補助バッファに蓄積する。これにより、補助バッファ１１１に蓄積された３秒ごとの時間位置へと、ラグを生じさせずに再生位置変更を行うことが可能になる。
【０１７１】
第３の実施形態による音声合成装置の動作の概略を、以下に説明する。
【０１７２】
まず、本音声合成装置の動作が開始されると、合成音生成部１００はスピーカ１１３による合成音再生を待たずに、テキスト記憶部１０５に保持されたテキスト文から次々と合成音の生成を行う。このとき、各文の言語処理結果と、各文の頭が合成音の先頭から何秒の位置にあるかという情報が、時刻テーブル４５０に記録される。また、合成音の開始から３の倍数秒の時点を起点とし、かつ現在再生中の時点から前後６秒以内にある１秒間ずつの音声を補助バッファ１１１に蓄積し、補助バッファ対応テーブル１１２に各補助バッファ１１１と蓄積された合成音の部分波形の起点の時刻の対応付けを記録する。このようにして補助バッファ対応テーブル１１２と時刻テーブル４５０に記録される情報の例を、図４８に示す。
【０１７３】
ユーザにより、ある時点への再生位置の変更が指示された場合、音声合成位置制御部１０１はまず、ステータスバッファ解析部１０９を通じて、補助バッファ対応テーブル１１２に該当時点の登録があるかどうかを調べ、もしあればステータスバッファ１１６からステータス情報を取得し、そこからの音声合成処理を再開するとともに補助バッファ１１１に保存された合成音の再生を開始させる。補助バッファ対応テーブル１１２に該当時点の登録が無い場合は、時刻テーブル４５０から、指定された時点より前で最も近い時点から開始しているテキスト文を検索し、その言語処理結果を取得して音声合成処理を開始させ、指定された時点からの合成音をいずれかの補助バッファ１１１に出力してスピーカ１１３から再生する。
【０１７４】
以上の方法によって、合成音再生開始からの時刻を基準とした再生位置変更が可能な、合成音生成装置を実現できる。この実施の形態は、例えばアニメーション映像に同期して合成音の読み上げを行うような、時間を基準として提供されるマルチメディアコンテンツの再生において、「３０秒前に戻る」というような操作を行う場合に有効である。
【０１７５】
（第４の実施形態）
第４の実施形態による音声合成装置の構成を図４９に示す。この音声合成装置は、合成音生成部１００から出力される音声をテキスト記憶部１０５に保持されたテキストの言語的情報に基づいて区切り、補助バッファ１１１に蓄積させることを特徴とする。
【０１７６】
図５０は、合成音生成部１００が、テキスト記憶部１０５から受け取ったテキスト文２００を合成音２０３に変換して出力するまでの処理の流れを表す。ここでの処理の流れはほとんど図２に示されるものと同じであるが、合成音生成部１００に与えられるテキスト文に行った言語処理の結果が波形生成部１０４に与えられると同時に、言語バッファ４９０にも蓄積される点で異なる。
【０１７７】
図５１は、第４の実施形態において各音声波形バッファ１１０及び補助バッファ１１１に出力され蓄積される音声波形２０３の概略を表す。この例では、合成音生成部１００に入力されるテキスト文２００を文節ごとに分割し、合成音の再生開始から１つおきの文節に対応する合成音の波形データを各補助バッファ１１１に蓄積する。これにより、各補助バッファ１１１に蓄積された、先頭から１つおきの文節へと、ラグを生じさせずに再生位置変更を行うことが可能になる。
【０１７８】
第４の実施形態による音声合成装置の動作の概略を、以下に説明する。
【０１７９】
まず、本音声合成装置の動作が開始されると、合成音生成部１００はスピーカ１１３による合成音再生を待たずに、テキスト記憶部１０５に保持されたテキスト文の言語処理を行い、結果を言語バッファ４９０に蓄積する。その上で、波形生成部１０４は、合成音の生成に必要な言語情報をまず言語バッファ４９０から取得しようと試み、言語バッファ４９０にその情報が無かった場合のみテキスト記憶部１０５から元のテキスト文を取得して形態素解析部１０２及び読み解析部１０３による処理を通して言語情報を取得することにする。これにより、言語バッファ４９０にあらかじめ蓄積された情報があった場合は、波形生成部１０４が言語情報を取得しようとした時点で言語処理を行うことなく、言語処理の結果を素早く取得することができる。その上で、現在再生中のテキスト文の現在再生中の位置から、１つおきに前後２つ分の文節に対応する言語情報を言語バッファ４９０から直接取得し、補助バッファ１１１へと出力しておくことによって、それら文節への再生位置変更をラグを生じさせずに行うことができる。
【０１８０】
なお、ここで再生位置変更のために使用する言語的区切りは文節でなくてもよく、例えば各文の主語・述語・直接目的語を補助バッファに出力するようにしてもよい。
【０１８１】
以上の方法によって、合成音再生開始からの時刻を基準とした再生位置変更が可能な、合成音生成装置を実現できる。この実施の形態は、例えば話速や口調、声質を自由に選んでテキストの朗読を行わせることのできる音声合成装置において、テキストの読み方や、テキストに現れる単語の文字数などに関わらず、先頭から幾つ目の文節かといったような、読み上げる内容の意味的な長さに従って再生位置の変更を行いたいというような場合に有効である。
【０１８２】
【発明の効果】
以上のように本発明によれば、あらかじめ再生されることが分かっている、もしくは再生される可能性の高い音声を現在再生中の音声とは別に保存しておくことで、実行時の合成音生成部の負担を減らし、合成音生成処理の遅れを軽減することができる。また、この機能を実現するための構成を利用することにより、ラグを発生させないスムースな再生位置変更の機能が実現できる。
【図面の簡単な説明】
【図１】第１の実施形態による音声合成装置の構成を示す図である。
【図２】テキスト文の言語処理におけるデータの流れを示す図である。
【図３】動作開始時の初期状態を示す図である。
【図４】動作中の各部の状態とデータの流れを示す図である。
【図５】動作中の各部の状態とデータの流れを示す図である。
【図６】動作中の各部の状態とデータの流れを示す図である。
【図７】動作中の各部の状態とデータの流れを示す図である。
【図８】動作中の各部の状態とデータの流れを示す図である。
【図９】動作中の各部の状態とデータの流れを示す図である。
【図１０】動作中の各部の状態とデータの流れを示す図である。
【図１１】動作中の各部の状態とデータの流れを示す図である。
【図１２】動作中の各部の状態とデータの流れを示す図である。
【図１３】動作中の各部の状態とデータの流れを示す図である。
【図１４】動作中の各部の状態とデータの流れを示す図である。
【図１５】動作中の各部の状態とデータの流れを示す図である。
【図１６】動作中の各部の状態とデータの流れを示す図である。
【図１７】動作中の各部の状態とデータの流れを示す図である。
【図１８】動作中の各部の状態とデータの流れを示す図である。
【図１９】動作中の各部の状態とデータの流れを示す図である。
【図２０】動作中の各部の状態とデータの流れを示す図である。
【図２１】動作中の各部の状態とデータの流れを示す図である。
【図２２】動作中の各部の状態とデータの流れを示す図である。
【図２３】動作中の各部の状態とデータの流れを示す図である。
【図２４】動作中の各部の状態とデータの流れを示す図である。
【図２５】動作中の各部の状態とデータの流れを示す図である。
【図２６】動作中の各部の状態とデータの流れを示す図である。
【図２７】動作中の各部の状態とデータの流れを示す図である。
【図２８】動作中の各部の状態とデータの流れを示す図である。
【図２９】動作中の各部の状態とデータの流れを示す図である。
【図３０】動作中の各部の状態とデータの流れを示す図である。
【図３１】図１に示した音声合成装置の動作を示すフローチャートである。
【図３２】図１に示した音声合成装置の動作を示すフローチャートである。
【図３３】図１に示した音声合成装置の動作を示すフローチャートである。
【図３４】図１に示した音声合成装置の動作を示すフローチャートである。
【図３５】第２の実施形態による音声合成装置の構成を示すブロック図である。
【図３６】図３５に示した音声合成装置の動作を示すフローチャートである。
【図３７】図３５に示した音声合成装置の動作を示すフローチャートである。
【図３８】図３５に示した音声合成装置の動作を示すフローチャートである。
【図３９】図３５に示した音声合成装置の動作を示すフローチャートである。
【図４０】動作中の各部の状態とデータの流れを示す図である。
【図４１】動作中の各部の状態とデータの流れを示す図である。
【図４２】動作中の各部の状態とデータの流れを示す図である。
【図４３】動作中の各部の状態とデータの流れを示す図である。
【図４４】動作中の各部の状態とデータの流れを示す図である。
【図４５】第３の実施形態による音声合成装置の構成を示すブロック図である。
【図４６】テキスト文の言語処理におけるデータの流れを示す図である。
【図４７】各バッファに出力されるデータの例を示す図である。
【図４８】補助バッファ対応テーブル及び時刻テーブルに蓄積されるデータの例を示す図である。
【図４９】第４の実施形態による音声合成装置の構成を示すブロック図である。
【図５０】テキスト文の言語処理におけるデータの流れを示す図である。
【図５１】各バッファに出力されるデータの例を示す図である。
【図１】
2004271976.tif 000003
【図２】
2004271976.tif 000004
【図３】
2004271976.tif 000005
【図４】
2004271976.tif 000006
【図５】
2004271976.tif 000007
【図６】
2004271976.tif 000008
【図７】
2004271976.tif 000009
【図８】
2004271976.tif 000010
【図９】
2004271976.tif 000011
【図１０】
2004271976.tif 000012
【図１１】
2004271976.tif 000013
【図１２】
2004271976.tif 000014
【図１３】
2004271976.tif 000015
【図１４】
2004271976.tif 000016
【図１５】
2004271976.tif 000017
【図１６】
2004271976.tif 000018
【図１７】
2004271976.tif 000019
【図１８】
2004271976.tif 000020
【図１９】
2004271976.tif 000021
【図２０】
2004271976.tif 000022
【図２１】
2004271976.tif 000023
【図２２】
2004271976.tif 000024
【図２３】
2004271976.tif 000025
【図２４】
2004271976.tif 000026
【図２５】
2004271976.tif 000027
【図２６】
2004271976.tif 000028
【図２７】
2004271976.tif 000029
【図２８】
2004271976.tif 000030
【図２９】
2004271976.tif 000031
【図３０】
2004271976.tif 000032
【図３１】
2004271976.tif 000033
【図３２】
2004271976.tif 000034
【図３３】
2004271976.tif 000035
【図３４】
2004271976.tif 000036
【図３５】
2004271976.tif 000037
【図３６】
2004271976.tif 000038
【図３７】
2004271976.tif 000039
【図３８】
2004271976.tif 000040
【図３９】
2004271976.tif 000041
【図４０】
2004271976.tif 000042
【図４１】
2004271976.tif 000043
【図４２】
2004271976.tif 000044
【図４３】
2004271976.tif 000045
【図４４】
2004271976.tif 000046
【図４５】
2004271976.tif 000047
【図４６】
2004271976.tif 000048
【図４７】
2004271976.tif 000049
【図４８】
2004271976.tif 000050
【図４９】
2004271976.tif 000051
【図５０】
2004271976.tif 000052
【図５１】
2004271976.tif 000053