(57)【要約】【課題】音声コーパスからの音声素片の選択によって音声合成を行う技術に関し、入力テキストデータと音声コーパス内の素片データとで韻律を抽出するための韻律辞書の韻律特徴が異なっても、音声コーパスから音声素片を正しく選択可能とする。【解決手段】目標韻律ピッチ特徴点抽出部２０３および素片韻律ピッチ特徴点抽出部２０４が、それぞれ例えば目標韻律および音声コーパス内の素片韻律のピッチ周波数のヒストグラムを算出することにより、それぞれ所定数例えば４点のピッチ特徴点を抽出する。韻律補正部２０５は、目標韻律の各ピッチ特徴点（特徴点１〜４）と、素片韻律の各ピッチ特徴点（特徴点１から４）との対応関係に基づいて、目標韻律データ２０１を補正して補正後目標韻律データ２０６を出力する。【選択図】図２
2015152788.tif 000002
【特許請求の範囲】
【請求項１】
入力テキストデータから生成される音素及び目標韻律に基づいて、音声コーパスを参照することにより音声素片を選択し、当該選択された音声素片を接続することにより合成音声を出力する音声合成装置において、
前記目標韻律からピッチ特徴点を抽出する目標韻律ピッチ特徴点抽出部と、
前記選択された音声素片中の韻律情報である素片韻律からピッチ特徴点を抽出する素片韻律ピッチ特徴点抽出部と、
前記目標韻律から抽出されたピッチ特徴点と前記素片韻律から抽出されたピッチ特徴点との対応関係に基づいて、前記目標韻律を補正する韻律補正部と、
を備えることを特徴とする音声合成装置。
【請求項２】
前記目標韻律ピッチ特徴点抽出部または素片韻律ピッチ特徴点抽出部はそれぞれ、前記目標韻律または前記素片韻律のピッチ周波数のヒストグラムを算出し、当該ヒストグラムから頻度値が極大を示す１つ以上の周波数と前記頻度値が概略ゼロに収束する１つ以上の周波数をそれぞれ、前記ピッチ特徴点として抽出する、
ことを特徴とする請求項１に記載の音声合成装置。
【請求項３】
前記韻律補正部は、前記目標韻律中のピッチ周波数が前記目標韻律から抽出された相互に隣接するいずれか２つの前記ピッチ特徴点の周波数の間に任意の内分比で位置する場合に、前記目標韻律から抽出された２つの前記ピッチ特徴点にそれぞれ対応する前記素片韻律から抽出された２つの前記ピッチ特徴点の周波数を前記内分比と同じ内分比で内分して得られる周波数になるように、前記目標韻律中のピッチ周波数を補正する、
ことを特徴とする請求項２に記載の音声合成装置。
【請求項４】
入力テキストデータから生成される音素及び目標韻律情報に基づいて、音声コーパスを参照することにより音声素片を選択し、当該選択された音声素片を接続することにより合成音声を出力する音声合成装置に用いられる音声合成方法であって、前記音声合成装置が、
前記目標韻律からピッチ特徴点を抽出し、
前記選択された音声素片中の韻律情報である素片韻律からピッチ特徴点を抽出し、
前記目標韻律から抽出されたピッチ特徴点と前記素片韻律から抽出されたピッチ特徴点との対応関係に基づいて、前記目標韻律を補正する、
ことを特徴とする音声合成方法。
【請求項５】
入力テキストデータから生成される音素及び目標韻律に基づいて、音声コーパスを参照することにより音声素片を選択し、当該選択された音声素片を接続することにより合成音声を出力する音声合成プログラムにおいて、
前記目標韻律からピッチ特徴点を抽出するステップと、
前記選択された音声素片中の韻律情報である素片韻律からピッチ特徴点を抽出するステップと、
前記目標韻律から抽出されたピッチ特徴点と前記素片韻律から抽出されたピッチ特徴点との対応関係に基づいて、前記目標韻律を補正するステップと、
をコンピュータに実行させるための音声合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声コーパスからの音声素片の選択によって音声合成を行う技術に関する。
【背景技術】
【０００２】
入力テキストデータから生成される合成目標に対して、電子化された大規模な言語・音声データである音声コーパスを参照することにより音声素片を選択し、当該音声素片を接続することにより合成音声を出力する音声合成技術が知られている（例えば非特許文献１に記載の技術）。
【０００３】
このような音声合成技術において、音声コーパスから合成目標に最も適合する音声素片列を選択するための手法として従来、次のような技術が知られている（例えば非特許文献１に記載の技術）。まず、入力テキストデータから抽出される音素セグメントごとに、その音素と同じ音素を有する音声素片のデータ（以下、「素片データ」と記載する）が、素片候補データとして音声コーパスから抽出される。次に、ＤＰ（Ｄｙｎａｍｉｃ  Ｐｒｏｇｒａｍｍｉｎｇ：動的計画法）アルゴリズムによって、入力テキストデータ全体に渡ってコストが最小となる最良の素片候補データの組（最良の素片データ列）が決定される。コストとしては、入力テキストデータと音声コーパス内の各素片データ間の音素列および韻律の差異、素片候補データである隣接する素片データ間のスペクトラム包絡などの音響パラメータ（特徴量ベクトルデータ）の不連続性などが用いられる。
【０００４】
入力テキストデータに対応する音素列は、例えば入力テキストデータに対して形態素解析処理を実行することで得られる。
【０００５】
入力テキストデータに対応する韻律（以下これを「目標韻律」と記載する）は、音素ごとの声帯の基本周波数であるピッチの高さ、持続時間長、および強度（振幅）であり、入力テキストデータから得られる言語情報をもとに、実際の音声データに基づく統計的なモデルを用いて生成される（例えば非特許文献２に記載の技術）。言語情報は、例えば入力テキストデータに対して形態素解析処理を実行することで得られる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】河井  恒、“知識ベース  3-4 コーパスベース音声合成”、［online］、ver.1/2011.1.7、電子情報通信学会、［平成２５年１２月２５日検索］、インターネット＜ＵＲＬ：http://27.34.144.197/files/02/02gun_07hen_03.pdf#page=6＞
【非特許文献２】匂坂  芳典、“知識ベース  3-7 韻律の生成”、［online］、ver.1/2011.1.7、電子情報通信学会、［平成２５年１２月２５日検索］、インターネット＜ＵＲＬ：http://27.34.144.197/files/02/02gun_07hen_03.pdf#page=13＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述したように、音声コーパスから入力テキストデータの合成目標に最も適合する音声素片列を選択するためには、入力テキストデータと音声コーパス内の各素片データ間の音素および韻律の差異が評価コストとして用いられる。
【０００８】
ここで、入力テキストデータから音素を抽出するための例えば形態素解析処理では形態素辞書が用いられ、各音素セグメントごとの目標韻律を抽出するための処理では実際の音声データに基づく統計的なモデルである韻律辞書が用いられる。一方、音声コーパス中の素片データの作成時における音素および韻律（以下これを「素片韻律」と記載する）の抽出にも、それぞれ同様の辞書が用いられる。
【０００９】
音声コーパスは予め作成され、入力テキストデータの解析はユーザによる入力テキストデータの入力時点で行われるため、一般的に両者の辞書の作成においては異なる話者の音声データが使用される場合が多い。
【００１０】
音声データにおける話者の個人性は、音声のスペクトラム包絡及び韻律に現れる特徴に依存する。
【００１１】
従って、入力テキストデータと音声コーパス内の素片データとで音素を抽出するための形態素辞書の話者が異なっても、抽出される音素の精度は、それほど大きな影響は受けない。
【００１２】
一方、入力テキストデータと音声コーパス内の素片データとで韻律を抽出するための韻律辞書の作成に用いられる音声データの話者が異なると、それぞれで抽出される韻律の特徴が異なることになる。韻律の特徴は、イントネーションやアクセント，声の高さ，話速，音韻継続長などの違いとなって現れる。
【００１３】
そして、入力テキストデータから抽出される目標韻律の特徴と音声コーパス内の各素片データの作成時に抽出される素片韻律の特徴がずれた状態で韻律に関するコスト計算が行われると、誤った音声素片が選択される確率が高くなり、合成音声の音質が劣化してしまうという課題を有していた。
【００１４】
本発明は、入力テキストデータと音声コーパス内の素片データとで韻律を抽出するための韻律辞書の韻律特徴が異なっても、音声コーパスから音声素片を正しく選択可能とすることを目的とする。
【課題を解決するための手段】
【００１５】
態様の一例では、入力テキストデータから生成される音素及び目標韻律に基づいて、音声コーパスを参照することにより音声素片を選択し、この選択された音声素片を接続することにより合成音声を出力する音声合成装置において、目標韻律からピッチ特徴点を抽出する目標韻律ピッチ特徴点抽出部と、選択された音声素片中の韻律情報である素片韻律からピッチ特徴点を抽出する素片韻律ピッチ特徴点抽出部と、目標韻律から抽出されたピッチ特徴点と素片韻律から抽出されたピッチ特徴点との対応関係に基づいて、目標韻律を補正する韻律補正部と、を備える。
【発明の効果】
【００１６】
本発明によれば、入力テキストデータと音声コーパス内の素片データとで韻律情報を抽出するための韻律辞書の韻律特徴が異なっても、音声コーパスから音声素片を正しく選択することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明による音声合成装置の実施形態のブロック図である。
【図２】波形選択部のブロック図である。
【図３】実施形態の動作説明図（その１）である。
【図４】実施形態の動作説明図（その２）である。
【図５】音声合成装置をソフトウェア処理として実現できるコンピュータのハードウェア構成例を示す図である。
【図６】制御変数のデータ構成例を示す図である。
【図７】セグメントデータのデータ構成例を示す図である。
【図８】韻律データのデータ構成例を示す図である。
【図９】素片候補データのデータ構成例を示す図である。
【図１０】音声辞書データのデータ構成例を示す図である。
【図１１】素片データのデータ構成例を示す図である。
【図１２】音素データのデータ構成例を示す図である。
【図１３】特徴量ベクトルデータのデータ構成例を示す図である。
【図１４】韻律補正部の処理例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
【００１９】
図１は、本発明による音声合成装置１００の実施形態のブロック図であり、テキスト入力部１０１、形態素解析部１０２、韻律予測部１０３、韻律辞書１０４、波形選択部１０５、音声辞書１０６、および波形合成部１０７を備える。
【００２０】
テキスト入力部１０１は、入力テキストデータを入力する。
【００２１】
形態素解析部１０２は、テキスト入力部１０１が入力した入力テキストデータに対して形態素解析処理を実行することにより、入力テキストデータに対応する音素列を抽出する。入力テキストデータは、音素列中の音素ごとにセグメント分けされ、各音素を示す音素データが、そのセグメント分けにより得られる合成目標を構成するセグメントデータに、音素データが登録される。
【００２２】
韻律予測部１０３は、形態素解析部１０２で得られる言語情報をもとに、実際の音声データに基づく韻律に関する統計的なモデルを記憶した韻律辞書１０４を参照することにより、合成目標の音素列中の音素ごとに、声帯の基本周波数であるピッチの高さ、持続時間長、および強度（振幅）によって表される韻律を予測する。この結果、韻律予測部１０３は、音素セグメント毎に、韻律情報である目標韻律データを生成し、合成目標を構成する上記セグメントデータに登録する。
【００２３】
すなわち、入力テキストデータから合成目標として生成されるセグメントデータ列において、各セグメントデータは、音素データと目標韻律データを有する。
【００２４】
波形選択部１０５は、まず、韻律予測部１０３から入力する目標韻律データを、音声辞書１０６中の音声コーパスを構成する各素片データの素片韻律データに合うように補正する。次に、波形選択部１０５は、補正された目標韻律データと音素データを含むセグメントデータごとに、素片評価のコスト条件を満たす素片候補データを音声辞書１０６中の音声コーパスからリストアップする。そして、波形選択部１０５は、セグメントデータごとに、接続評価のコスト条件を満たす最良の素片候補データを、リストアップした素片候補データから選択する。
【００２５】
波形合成部１０７は、波形選択部１０５がセグメントデータごとに音声辞書１０６から選択した最良の素片候補データを接続して、合成音声を生成し出力する。
【００２６】
図２は、図１の波形選択部１０５の詳細な構成を示すブロック図であり、波形選択部１０５は、図１の韻律予測部１０３から出力された目標韻律データ２０１、韻律入力部２０２、目標韻律ピッチ特徴点抽出部２０３、素片韻律ピッチ特徴点抽出部２０４、韻律補正部２０５、補正後目標韻律データ２０６を備える。また、波形選択部１０５は、素片選定部２０７および評価部２０８を備える。素片選定部２０７は、素片リストアップ部２０７ａとそこから出力された素片候補データ２０９、および音素列選択部２０７ｂを備える。評価部２０８は、素片評価部２０８ａおよび接続評価部２０８ｂを備える。
【００２７】
目標韻律ピッチ特徴点抽出部２０３は、入力テキストデータ全体にわたる目標韻律データ２０１から、所定数、例えば４点のピッチ特徴点を抽出する。より具体的には、目標韻律ピッチ特徴点抽出部２０３は、入力テキストデータ全体にわたる目標韻律データ２０１を構成するピッチ周波数のヒストグラムを算出する。そして、目標韻律ピッチ特徴点抽出部２０３は、そのヒストグラムから頻度値が極大を示す１つ以上の周波数と頻度値が概略ゼロに収束する１つ以上の周波数をそれぞれ、ピッチ特徴点として抽出する。図３（ａ）の３０１は、目標韻律データ２０１から算出されるピッチ周波数のヒストグラムの例を示している。横軸はピッチ周波数［Ｈｚ：ヘルツ］を示し、縦軸は正規化された頻度値を示している。この目標韻律のピッチ周波数のヒストグラム３０１から、頻度値が極大を示す特徴点２のピッチ周波数（１７５Ｈｚ）と特徴点３のピッチ周波数（４１０Ｈｚ）、および頻度値が概略ゼロに収束する特徴点１のピッチ周波数（１２０Ｈｚ）と特徴点４のピッチ周波数（４９５Ｈｚ）が、それぞれ抽出される。
【００２８】
素片韻律ピッチ特徴点抽出部２０４は、目標韻律の場合と同様に、音声辞書１０６に登録されている音声コーパス全体にわたる各素片データの素片韻律データから、上記所定数、例えば４点のピッチ特徴点を抽出する。より具体的には、素片韻律ピッチ特徴点抽出部２０４は、音声辞書１０６内の音声コーパス全体にわたる素片韻律データを構成するピッチ周波数のヒストグラムを算出する。そして、素片韻律ピッチ特徴点抽出部２０４は、そのヒストグラムから頻度値が極大を示す１つ以上の周波数と頻度値が概略ゼロに収束する１つ以上の周波数をそれぞれ、ピッチ特徴点として抽出する。図３（ｂ）の３０２は、素片韻律データから算出されるピッチ周波数のヒストグラムの例を示している。横軸はピッチ周波数［Ｈｚ］を示し、縦軸は正規化された頻度値を示している。この素片韻律のピッチ周波数のヒストグラム３０２から、頻度値が極大を示す特徴点２のピッチ周波数（１６０Ｈｚ）と特徴点３のピッチ周波数（２６０Ｈｚ）、および頻度値が概略ゼロに収束する特徴点１のピッチ周波数（８５Ｈｚ）と特徴点４のピッチ周波数（４００Ｈｚ）が、それぞれ抽出される。
【００２９】
図２で、韻律入力部２０２は、図１の韻律予測部１０３が出力した目標韻律データ２０１を入力する。
【００３０】
韻律補正部２０５は、目標韻律ピッチ特徴点抽出部２０３が抽出した例えば前述した４つのピッチ特徴点（特徴点１〜４）と、素片韻律ピッチ特徴点抽出部２０４が抽出した例えば前述した４つのピッチ特徴点（特徴点１から４）との対応関係に基づいて、目標韻律データ２０１を補正して補正後目標韻律データ２０６を出力する。より具体的には、韻律補正部２０５は、目標韻律データ２０１中のピッチ周波数が目標韻律ピッチ特徴点抽出部２０３で抽出された相互に隣接するいずれか２つのピッチ特徴点の周波数の間に任意の内分比で位置する場合に、これら２つのピッチ特徴点にそれぞれ対応する素片韻律ピッチ特徴点抽出部２０４で抽出された２つのピッチ特徴点の周波数を上述の内分比と同じ内分比で内分して得られる周波数になるように、目標韻律データ２０１中のピッチ周波数を補正し、補正後目標韻律データ２０６として出力する。
【００３１】
例えば図３において、補正前の目標韻律データ２０１のピッチ周波数が図３（ａ）の目標韻律のピッチ周波数のヒストグラム３０１上の特徴点２のピッチ周波数と特徴点３のピッチ周波数をａ：ｂで内分する周波数であった場合、補正後目標韻律データ２０６のピッチ周波数は次のようにして算出される。まず、図３（ａ）の目標韻律のピッチ周波数のヒストグラム３０１上の各特徴点１〜４のぞれぞれと、図３（ｂ）の素片韻律のピッチ周波数のヒストグラム３０２の各特徴点１〜４のそれぞれについて、図３の３０５の４本の矢印線として示されるように対応関係が取られる。その上で、図３（ａ）の目標韻律のピッチ周波数のヒストグラム３０１上の特徴点２および３にそれぞれ対応する図３（ｂ）の素片韻律のピッチ周波数のヒストグラム３０２上の特徴点２のピッチ周波数と特徴点３のピッチ周波数をａ：ｂに内分する周波数が算出される。そして、この周波数が、補正後目標韻律データ２０６のピッチ周波数として出力される。
【００３２】
目標韻律データ２０１のピッチ周波数が、特徴点２と３の間だけでなく、特徴点１と２の間または特徴点３と４の間に位置する場合も、上記と同様の考え方によって、２つの特徴点間の内分比が同じになるように、補正後目標韻律データ２０６のピッチ周波数を算出することができる。
【００３３】
いま、下記のように変数を仮定する。
目標韻律の下側のピッチ特徴点周波数：targ_pitch_feat[pf-1]
目標韻律の上側のピッチ特徴点周波数：targ_pitch_feat[pf]
素片韻律の下側のピッチ特徴点周波数：unitdb.pitch_feat[pf-1]
素片韻律の上側のピッチ特徴点周波数：unitdb.pitch_feat[pf]
補正前の目標韻律のピッチ周波数：pitch
補正後の目標韻律のピッチ周波数：modpit
【００３４】
上述した内分関係より、目標韻律の上側と下側のピッチ特徴点の周波数差と素片韻律の上側と下側のピッチ特徴点の周波数差の比は、補正前のピッチ周波数と目標韻律の下側のピッチ特徴点の周波数差と補正後のピッチ周波数と素片韻律の下側のピッチ特徴点の周波数差は、等しくなる。これより、次式が成立する。
【００３５】
(targ_pitch_feat[pf]-targ_pitch_feat[pf-1])
÷(unitdb.pitch_feat[pf]-unitdb.pitch_feat[pf-1])
=(pitch-targ_pitch_feat[pf-1])
÷(modpit-unitdb.pitch_feat[pf-1])
・・・（１）
【００３６】
ここで、次式のように変数tint,tdist,dintを定義する。
【００３７】
tint=targ_pitch_feat[pf]-targ_pitch_feat[pf-1]  ・・・（２）
tdist=pitch-targ_pitch_feat[pf-1]  ・・・（３）
dint=unitdb.pitch_feat[pf]-unitdb.pitch_feat[pf-1]  ・・・（４）
【００３８】
上記（２）、（３）、（４）式を（１）式に代入すると、次式が得られる。
【００３９】
tint÷dint=tdist÷(modpit-unitdb.pitch_feat[pf-1])  ・・・（５）
【００４０】
この（５）式をさらに変形すると、次式が得られる。
【００４１】
modpit=unitdb.pitch_feat[pf-1]+dint÷tint×tdist  ・・・（６）
【００４２】
よって、補正前の目標韻律のピッチ周波数と、このピッチ周波数をはさむ目標韻律の上側と下側のピッチ特徴点の周波数、およびこれらに対応する素片韻律の上側と下側のピッチ特徴点の周波数を用いて、上述の（２）（３）（４）を計算し、さらに（６）式を計算することにより、補正後の目標韻律のピッチ周波数を算出することができる。
【００４３】
いま、図３（ａ）の目標韻律のピッチ周波数のヒストグラム３０１と図３（ｂ）の素片韻律のピッチ周波数のヒストグラム３０２を比較してみる。この場合、図１の入力テキストデータから目標韻律を生成するために使用された図１の韻律辞書１０４の作成に用いられた音声データの話者の韻律のピッチ周波数の遷移に比較して、音声辞書１０６中の音声コーパスの作成に用いられた音声データの話者の韻律のピッチ周波数の遷移のほうが、全体的に周波数が低めに遷移していることがわかる。そこで、本実施形態では、目標韻律と素片韻律とで図３（ａ）の３０１および図３（ｂ）の３０２の各ヒストグラム上で、ピッチ周波数の遷移の代表的な特徴点の対応関係を３０５のように取る。そして、目標韻律データ２０１のピッチ周波数の目標韻律のピッチ周波数のヒストグラム３０１上での２つの特徴点間の内分比と同じになるように、素片韻律のピッチ周波数のヒストグラム３０２上での対応する２つの特徴点間を内分するピッチ周波数を補正後目標韻律データ２０６とすることにより、目標韻律データ２０１のピッチ周波数遷移を素片韻律データのピッチ周波数遷移に合わせることが可能となる。
【００４４】
図４は、図３（ａ）および（ｂ）の例に対応する、補正前目標韻律データ２０１のピッチ周波数の時間遷移４０１と補正後目標韻律データ２０６のピッチ周波数の時間遷移４０２の関係を示す図である。縦軸（Ｐｉｔｃｈ）がピッチ周波数（Ｈｚ）、横軸が時間遷移（ミリ秒）である。補正後目標韻律データ２０６のピッチ周波数の時間遷移４０２が、音声コーパス全体で低い周波数で遷移する素片データのピッチ周波数の時間遷移により近くなるように、韻律特徴が補正されていることがわかる。
【００４５】
このようにして、入力テキストデータから生成される補正後目標韻律データ２０６の韻律遷移を、音声辞書１０６内の音声コーパスの韻律遷移に合わせることが可能となって、入力テキストデータと素片データとで韻律特徴（言い換えれば例えば話者）が異なっても、素片データを正しく選択して質の良い合成音声を出力することが可能となる。
【００４６】
図２の説明に戻り、素片選定部２０７において、素片リストアップ部２０７ａは、図１の韻律予測部１０３から出力されるセグメントデータごとに（以下これを「処理対象セグメントデータ」と記載する）、その処理対象セグメントデータに含まれる音素と一致する音素を有する１つ以上の素片データを、音声辞書１０６中の音声コーパス内の素片データから選択し、素片候補データ２０９として出力する。
【００４７】
評価部２０８内の素片評価部２０８ａは、素片候補データ２０９ごとに（以下これを「処理対象素片候補データ２０９」と記載する）、処理対象素片候補データ２０９の音素を処理対象セグメントデータの音素と比較することによって、処理対象素片候補データ２０９の音素に関するコストを評価する。具体的には、素片評価部２０８ａは、処理対象セグメントデータの音素とその処理対象セグメントデータの前後のセグメントデータの音素とから構成される音素列と、処理対象素片候補データ２０９の音素とその処理対象素片候補データ２０９の前後の素片データの音素とから構成される音素列とを比較することにより、音素列コストを算出する。この音素列コストは、音素列の不一致度を示す。隣接するセグメントデータ間の音素列と隣接する素片データ間の音素列の一致度が高いほど音素列コストが低くなるように、音素列コストが算出される。前後の音素列が一致する素片データを選択したほうが、自然な合成音声が得られるからである。
【００４８】
また、素片評価部２０８ａは、素片候補データ２０９（処理対象素片候補データ２０９）ごとに、処理対象素片候補データ２０９の素片韻律データを、処理対象セグメントデータの補正後目標韻律データ２０６と比較することにより、処理対象素片候補データ２０９の韻律に関するコストを評価する。具体的には、素片評価部２０８ａは、処理対象素片候補データ２０９の補正後目標韻律データ２０６と処理対象素片候補データ２０９の素片韻律データとの差に基づいて、韻律コストを算出する。韻律コストは、補正後目標韻律データ２０６と処理対象素片候補データ２０９の距離を示す。
【００４９】
そして、素片評価部２０８ａは、音素列コストと韻律コストとの重み付け和のコスト値を、現在の素片候補データ２０９に対応する素片コストとして算出する。
【００５０】
素片リストアップ部２０７ａは、素片評価部２０８ａが評価した素片コストが低い順に、素片候補データ２０９を並び替えて、処理対象セグメントデータとリンクさせて出力する。
【００５１】
素片選定部２０７内の音素列選択部２０７ｂは、図１の韻律予測部１０３から入力するセグメントデータ列の先頭から２番目のセグメント（処理対象セグメントデータ）から順に、以下の処理を順次実行する。
【００５２】
まず、音素列選択部２０７ｂは、処理対象セグメントデータに対応する素片候補データ２０９のグループから１つの素片候補データ２０９（処理対象素片候補データ２０９）を選択する。
【００５３】
音素列選択部２０７ｂは、処理対象素片候補データ２０９と、処理対象セグメントデータの前方（時間的に１つ手前）のセグメントデータ（以下これを「前方セグメントデータ」と記載する）の各素片候補データ２０９（以下これを「前方素片候補データ２０９」と記載する）との間で、以下のコスト値を計算する。音素列選択部２０７ｂは、前方素片候補データ２０９に至るまでの最良の経路に対するコスト値として確定しているトータルコストと、前方素片候補データ２０９と処理対象素片候補データ２０９との間の接続コストとの、重み付き和のコスト値を計算する。
【００５４】
上述の接続コストは、評価部２０８内の接続評価部２０８ｂが計算する。接続評価部２０８ｂは、処理対象素片候補データ２０９と前方素片候補データ２０９との間の音素接続点での各素片データの音響パラメータ（特徴量ベクトルデータ）の不連続性の大きさを、接続コストとして算出する。より具体的には、接続評価部２０８ｂは例えば、上記両者間の各素片データの各特徴量ベクトルデータの組によって算出される各素片データの各スペクトル包絡の距離（例えばケプストラムのユークリッド距離）を、接続コストとして算出する。
【００５５】
音素列選択部２０７ｂは、前方素片候補データ２０９で確定しているトータルコストと、前方素片候補データ２０９と処理対象素片候補データ２０９との間の接続コストとの、重み付き和のコスト値が、最も小さい前方素片候補データ２０９を、処理対象素片候補データ２０９に対する最良の前方素片候補データ２０９として記憶する。同時に、音素列選択部２０７ｂは、そのときの重み付き和のコスト値を、処理対象素片候補データ２０９に対する確定したトータルコストとして記憶する。
【００５６】
音素列選択部２０７ｂは、処理対象セグメントデータ内の全ての素片候補データ２０９のうち、上述のトータルコストが最小となる素片候補データ２０９を記憶する。
【００５７】
その後、音素列選択部２０７ｂは、処理対象セグメントデータを１つ後方（時間的に１つ後ろ）に進める。
【００５８】
音素列選択部２０７ｂは、最後のセグメントデータまで処理が終わったら、まず、最後のセグメントデータでトータルコストが最小の素片候補データ２０９を選択し、その後、最後のセグメントデータから先頭のセグメントデータに向かって順次、選択した素片候補データ２０９に記憶されている最良の前方素片候補データ２０９を選択してゆく。音素列選択部２０７ｂは、このようにして順次選択した素片候補データ２０９列を、波形合成部１０７に出力する。
【００５９】
図５は、図１の音声合成装置１００をソフトウェア処理として実現できるコンピュータのハードウェア構成例を示す図である。図５に示されるコンピュータは、ＣＰＵ５０１、ＲＯＭ（リードオンリーメモリ：読出し専用メモリ）５０２、ＲＡＭ（ランダムアクセスメモリ）５０３、入力装置５０４、出力装置５０５、外部記憶装置５０６、可搬記録媒体５１０が挿入される可搬記録媒体駆動装置５０７、及び通信インタフェース５０８を有し、これらがバス５０９によって相互に接続された構成を有する。同図に示される構成は上記システムを実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
【００６０】
ＲＯＭ５０２は、コンピュータを制御する音声合成プログラムを含む各プログラムを記憶するメモリである。ＲＡＭ５０３は、各プログラムの実行時に、ＲＯＭ５０２に記憶されているプログラム又はデータを一時的に格納するメモリである。
【００６１】
外部記憶装置５０６は、例えばＳＳＤ（ソリッドステートドライブ）記憶装置またはハードディスク記憶装置であり、入力テキストデータや合成音声データの保存に用いられる。
【００６２】
ＣＰＵ５０１は、各プログラムを、ＲＯＭ５０２からＲＡＭ５０３に読み出して実行することにより、当該コンピュータ全体の制御を行う。
【００６３】
入力装置５０４は、ユーザによるキーボードやマウス等による入力操作を検出し、その検出結果をＣＰＵ５０１に通知する。また、入力装置５０４は、図１のテキスト入力部１０１の機能を実行して入力テキストデータを外部から入力し、ＲＡＭ５０３または外部記憶装置５０６に記憶させる。
【００６４】
出力装置５０５は、ＣＰＵ５０１の制御によって送られてくるデータを表示装置や印刷装置に出力する。また、出力装置５０５は、図１の波形合成部１０７が外部記憶装置５０６またはＲＡＭ５０３に出力した合成音声データを、音声として放音する。
【００６５】
可搬記録媒体駆動装置５０７は、光ディスクやＳＤＲＡＭ、コンパクトフラッシュ等の可搬記録媒体５１０を収容するもので、外部記憶装置５０６の補助の役割を有する。
【００６６】
通信インターフェース５０８は、例えばＬＡＮ（ローカルエリアネットワーク）又はＷＡＮ（ワイドエリアネットワーク）の通信回線を接続するための装置である。
【００６７】
本実施形態によるシステムは、図１および図２の各処理部の機能を搭載した音声合成プログラムを、ＲＯＭ５０２からＲＡＭ５０３に読み出してＣＰＵ５０１が実行することで実現される。そのプログラムは、例えば外部記憶装置５０６や可搬記録媒体５１０に記録して配布してもよく、或いはネットワーク接続装置５０８によりネットワークから取得できるようにしてもよい。
【００６８】
次に、図５のコンピュータが、図１および図２の機能を有する音声合成装置１００として動作するために、ＲＡＭ５０３または外部記憶装置５０６上に保持する各種データについて説明する。
【００６９】
図６は、ＲＡＭ５０３に保持される制御変数WaveSelectionのデータ構成例を示す図である。制御変数WaveSelectionは、unitdb、seg_count、segment、targ_pf_countのスカラー各変数データと、targ_pitch_feat[0]〜targ_pitch_feat[targ_pf_count-1]の各配列データを保持する。unitdbは、外部記憶装置５０６上の音声辞書１０６に記憶される音声辞書データへのポインタを保持する。seg_countは、セグメントデータの総数を保持する。segmentは、最初のセグメントデータ（後述する図７のsegment[0]の先頭アドレス）へのポインタを保持する。targ_pf_countは、入力テキストデータ全体にわたる目標韻律データ２０１（図２）のピッチ特徴点の数を保持する。前述した図３（ａ）では、targ_pf_count＝４である。targ_pitch_feat[0]からtarg_pitch_feat[targ_pf_count-1]は、目標韻律データ２０１（図２）の１番目からtarg_pf_count番目の各ピッチ特徴点（単位はcent）を保持する。targ_pitch_feat[0]〜targ_pitch_feat[targ_pf_count-1]は、図２の目標韻律ピッチ特徴点抽出部２０３によって抽出され、制御変数WaveSelectionにセットされている。
【００７０】
図７は、図６の制御変数WaveSelection内のsegmentポインタから参照されＲＡＭ５０３または外部記憶装置５０６に保持されるセグメントデータsegment[0]〜segment[seg_count]のデータ構成例を示す図である。各セグメントデータは、入力テキストデータを図１の形態素解析部１０２で形態素解析して得られる合計seg_count個（制御変数WaveSelectionのseg_countに保持される個数）の音素ごとに、図１の韻律予測部１０３によって、segment[0],segment[1],・・・,segment[seg_count-1]として得られる。セグメントデータの記憶アドレスは、制御変数WaveSelectionのsegmentによって示される。各セグメントデータsegment[i]（i=0,・・・,seg_count-1）は、seg_id、phone_id、target_prosody、candidate、best_cand、prev、nextの各変数データを保持する。seg_idは、セグメントＩＤ（識別子）を保持する。phone_idは、音素ＩＤを保持する。target_prosodyは、ＲＡＭ５０３または外部記憶装置５０６に保持される目標韻律データ２０１の先頭へのポインタを保持する。candidateは、最初の素片候補データ２０９（後述する図１０のcandidate[0]の先頭アドレス）へのポインタを保持する。best_candは、図２の音素列選択部２０７ｂに対応する処理によって現在のセグメントデータに対応してする選択される最良の素片候補データ２０９（後述する図９のcandidate[0]〜candidate[N]、・・・のいずれかの先頭アドレス）へのポインタを保持する。prevは１つ手前のセグメントデータへのポインタ、nextは１つ後ろのセグメントデータへのポインタを保持する。現在のセグメントデータが例えばsegmen[1]であれば、prevはsegment[0]の先頭アドレスを保持し、nextはsegment[2]の先頭アドレスを保持する。また、現在のセグメントデータが例えば先頭データsegment[0]であれば、prevは未定義値であるNULL値を保持する。現在のセグメントデータが例えば末端データsegment[seg_count]であれば、nextはNULL値を保持する。
【００７１】
図８は、図７の各セグメントデータ内のtarget_prosodyポインタまたは後述する図１１の各素片データ内のprosodyポインタから参照されＲＡＭ５０３または外部記憶装置５０６に記憶される韻律データprosody[0],prosody[1],・・・,prosody[N],・・・のデータ構成例を示す図である。各韻律データprosody[i]（i=0,・・・,N,・・・）は、time,pitch,power,prev,nextの各変数データを保持する。timeは、韻律が発生する時刻を保持する。pitchは、韻律の音高（ピッチ周波数）を保持する。powerは、韻律の強度を保持する。prevは１つ手前の韻律データへのポインタ、nextは１つ後ろの韻律データへのポインタを保持する。現在の韻律データが、先頭データであればprevはNULL値を保持し、末端データであればnextはNULL値を保持する。
【００７２】
図９は、図７のセグメントデータ内のtarget_prosodyポインタから参照されＲＡＭ５０３または外部記憶装置５０６に記憶される図２の素片候補データ２０９である素片候補データcandidate[0],candidate[1],・・・,candidate[N],・・・のデータ構成例を示す図である。各素片候補データcandidate[i]（i=0,・・・,N,・・・）は、図２のリストアップ部で生成され、unit_id,ctxt_distance,pros_distance,unit_distance,  cont_distance,total_cost,best_cand,prev,nextの各変数データを保持する。unit_idは、音声辞書１０６内の素片データを識別するための素片ＩＤ（図１２参照）を保持し、図２の素片リストアップ部２０７ａによりセットされる。ctxt_distanceは、前述した音素列コスト(音素列の不一致度)を保持し、図２の素片評価部２０８ａによって算出されセットされる。pros_distanceは、前述した韻律コスト(目標韻律データ２０１と素片韻律データの距離)を保持し、図２の素片評価部２０８ａによって算出されセットされる。unit_distanceは、音素列コストと韻律コストの重み付け和である前述した素片コストを保持し、図２の素片評価部２０８ａによって算出されセットされる。cont_distanceは、前述した接続コスト(音素接続点での特徴量距離)を保持し、図２の接続評価部２０８ｂによって算出されセットされる。total_costは、先頭のセグメントデータからこの素片候補データが属するセグメントデータまでに確定したトータルコストを保持し、前述したように図２の音素列選択部２０７ｂにより算出されセットされる。best_candは、この素片候補データと接続する最良の前方素片候補データへのポインタを保持し、前述した音素列選択部２０７ｂによって算出されセットされる。ここで、前方素片候補データは、best_candが含まれる素片候補データ（処理対象素片候補データ）が属するセグメントデータ（処理対象セグメントデータ）の１つ手前のセグメントデータ（前方セグメントデータ）に属する素片候補データであって、その前方素片候補データで確定しているトータルコストと、処理対象素片候補データとの間の接続コストとの、重み付き和のコスト値が、最も小さい（最良の）前方素片候補データである。prevは１つ手前の素片候補データへのポインタ、nextは１つ後ろの素片候補データへのポインタを保持する。現在の素片候補データが、先頭データであればprevはNULL値を保持し、末端データであればnextはNULL値を保持する。
【００７３】
図１０は、図１の音声辞書１０６を構成するＲＡＭ５０３または外部記憶装置５０６に記憶される音声辞書データunitdbのデータ構成例を示す図であり、図６の制御変数WaveSelectionのunitdbポインタから参照される。音声辞書データunitdbは、phone_count、phoneme、unit_count、unit、fval_count、pf_countの各変数データ、およびpitch_feat[0]〜pitch_feat[pf_count-1]の各配列変数データを保持する。phone_countは、この音声辞書データunitdbで定義されている音素数を保持する。phonemeは、先頭の音素データ（図１２のphoneme[0]の先頭アドレス）へのポインタを保持する。unit_countは、この音声辞書データunitdbが搭載する素片データの数を保持する。unitは、この音声辞書データunitdbが搭載する先頭の素片データ（図１２のunit[0]の先頭アドレス）へのポインタを保持する。pf_countは、素片データのピッチ特徴点の数を保持する。図３（ｂ）の例では、pf_count＝４である。pitch_feat[0]〜pitch_feat[pf_count-1]は、音声辞書データunitdb全体にわたる素片データの１番目からpf_count番目までの各ピッチ特徴点（単位はcent）を保持する。pitch_feat[0]〜pitch_feat[pf_count-1]は、図２の素片韻律ピッチ特徴点抽出部２０４によって抽出されている。
【００７４】
図１１は、図１の音声辞書１０６を構成するＲＡＭ５０３または外部記憶装置５０６に記憶される素片データunit[0]〜unit[unit_count-1]のデータ構成例を示す図であり、図１０の音声辞書データunitdbのunitポインタから参照される。音声辞書１０６への搭載素片数unit_countは、図１０の音声辞書データunitdbのunit_countデータとして登録される。各素片データunit[i]（i=0,・・・,unit_count-1）は、unit_id, phone_id,duration,prosody,prev,nextの各変数データと、featvalue[0]〜featvalue[fval_count-1]の各配列変数データを保持する。unit_idは、素片データを識別するための素片ＩＤを保持する。phone_idは、この素片データに対応付けられる音素を図１２で後述する音素データから特定するための音素ＩＤを保持する。durationはこの素片データがどれだけの時間長だけ継続しているかを示す継続長を保持する。prosodyは、図７のデータ構成例を有する、ＲＡＭ５０３または外部記憶装置５０６に保持される素片韻律データの先頭へのポインタを保持する。featvalue[0]〜featvalue[fval_count-1]は、１番目からfval_count番目までの後述する図１３に示されるデータ構成例を有する特徴量ベクトルデータの先頭データへのポインタを保持する。prevは１つ手前の素片データへのポインタ、nextは１つ後ろの素片データへのポインタを保持する。現在の素片データが、先頭データであればprevはNULL値を保持し、末端データであればnextはNULL値を保持する。
【００７５】
図１２は、図１０の音声辞書データunitdb内のphonemeポインタから参照されＲＡＭ５０３または外部記憶装置５０６に記憶される音素データphoneme[0]〜phoneme[phone_count-1]のデータ構成例を示す図である。音素データの数は、音声辞書データunitdbのphone_countデータにセットされている。各音素データphoneme[i] （i=0,・・・,phone_count-1）は、phone_id,phomene,prev,nextの各変数データを保持する。phone_idは、音素を識別するための音素ＩＤを保持する。前述した図７のセグメントデータまたは前述した図１１の素片データは、その中のphone_idデータによって、図６の制御変数WaveSelection内のunitdb→図１０の音声辞書データunitdb内のphoneme→図１２の音素データphoneme[0]〜phoneme[phone_count-1]のうち上記phone_idの値が格納されている音素データとたどって、その音素データ内の音素名phomeneと関連付けられる。phomeneは音素名を保持する。prevは１つ手前の音素データへのポインタ、nextは１つ後ろの音素データへのポインタを保持する。現在の音素データが、先頭データであればprevはNULL値を保持し、末端データであればnextはNULL値を保持する。
【００７６】
図１３は、図１２の各素片データ内のfeatvalue[i] （i=0,・・・,fval_count-1）ポインタから参照されＲＡＭ５０３または外部記憶装置５０６に記憶される特徴量ベクトルデータfeatvalue[0],featvalue[1],・・・,featvalue[N],・・・のデータ構成例を示す図である。各特徴量ベクトルデータfeatvalue[i](i=0,・・・,N,・・・)は、time,dimension,prev,nextの各変数データと、value[0]〜value[dimension-1]の各配列変数データを保持する。timeは、その特徴量ベクトルデータに対応する時刻を保持する。dimensionは、この特徴量ベクトルデータの次元数を保持する。value[0]〜value[dimension-1]は、１番目からdimension番目までの特徴量を保持する。prevは１つ手前の特徴量ベクトルデータへのポインタ、nextは１つ後ろの特徴量ベクトルデータへのポインタを保持する。現在の特徴量ベクトルデータが、先頭データであればprevはNULL値を保持し、末端データであればnextはNULL値を保持する。この特徴量ベクトルデータは、前述したように、図２の接続評価部２０８ｂが、処理対象素片候補データ２０９と前方素片候補データ２０９との間の音素接続点での各素片データの各スペクトル包絡の距離を算出するために使用される。
【００７７】
図１４は、図２の韻律補正部２０５に対応する機能を、図５のハードウェア構成例を有するコンピュータのＣＰＵ５０１が、ソフトウェアプログラムの処理により実現する場合の、韻律補正処理の例を示すフローチャートである。以下に説明する処理はすべてＣＰＵ５０１が実行する処理である。
【００７８】
まず、ＲＡＭ５０３上の変数データsegに、前述した図６のデータ構成例を有する制御変数WaveSelection内のsegmentデータの値が格納される（ステップＳ１４０１）。この値は、図７のデータ構成例を有するセグメントデータの最初のセグメントデータsegmen[0]の先頭アドレスへのポインタである。
【００７９】
次に、seg変数の値が未定義値NULLでないか否か、すなわち図７の全てのセグメントデータsegment[0]〜segment[seg_count]が処理されたか否かが判定される（ステップＳ１４０２）。
【００８０】
全てのセグメントデータの処理が完了しておらずseg変数の値が未定義値NULLではなくてステップＳ１４０２の判定がＹＥＳならば、ＲＡＭ５０３上の変数prosに、変数segが示す前述した図７のデータ構成例を有するセグメントデータ中のtarget_prosodyデータの値が格納される。この値は、図８のデータ構成例を有する目標韻律データ２０１の最初のデータprosody[0]の先頭アドレスへのポインタである。
【００８１】
続いて、pros変数の値が未定義値NULLでないか否か、すなわち図８の全ての目標韻律データprosody[0],prosody[1],・・・,prosody[N],・・・が処理されたか否かが判定される（ステップＳ１４０４）。
【００８２】
pros変数の値が未定義値NULLでなくステップＳ１４０４の判定がＹＥＳならば、以下に説明するステップＳ１４０５からＳ１４１９までの一連の処理が実行されることにより、pros変数が示す目標韻律データ内のpitchデータ（図８参照）を補正する韻律補正の処理が実行される。
【００８３】
現在の目標韻律データに対する韻律補正の処理が終了すると、pros変数が示す目標韻律データ内のnextポインタ（図８参照）が示す次の目標韻律データへのポインタ値が、新たにpros変数にセットされ（ステップＳ１４１９）、ステップＳ１４０４の判定に戻る。図８の説明で前述したように、末尾の目標韻律データのnextポインタには未定義値NULLが格納されている。このため、末尾の目標韻律データに対して韻律補正の処理が実行された後にステップＳ１４１９が実行されると、pros変数の値はNULL値となる。これにより、末尾の目標韻律データまで韻律補正の処理が完了すると、ステップＳ１４０４の判定がＮＯとなる。
【００８４】
現在のセグメントデータに対する全ての目標韻律データに対する韻律補正の処理が終了してステップＳ１４０４の判定がＮＯになると、seg変数が示すセグメントデータ内のnextポインタ（図７参照）が示す次のセグメントデータへのポインタ値が、新たにseg変数にセットされ（ステップＳ１４２０）、ステップＳ１４０２の判定に戻る。図７の説明で前述したように、末尾のセグメントデータのnextポインタには未定義値NULLが格納されている。このため、末尾のセグメントデータに対して全ての韻律データに対する韻律補正の処理が実行された後にステップＳ１４０４の判定がＮＯとなってステップＳ１４２０が実行されると、seg変数の値はNULL値となる。これにより、末尾のセグメントデータまで韻律補正の処理が完了すると、ステップＳ１４０２の判定がＮＯとなって、入力テキストデータに対応するセグメントデータ全体に対する韻律補正の処理が完了する。
【００８５】
ステップＳ１４０５からＳ１４１９までの韻律補正の処理について、以下に説明する。
【００８６】
まず、pros変数が示す図８のデータ構成例を有する目標韻律データのpitchデータすなわち音高データが、０よりも大きいか否かが判定される（ステップＳ１４０５）。
【００８７】
pitchデータがゼロでステップＳ１４０５の判定がＮＯならば、韻律補正の処理は実行せずにステップＳ１４１９に進んで、次の韻律データに対する処理に進む。
【００８８】
pitchデータがゼロよりも大きくステップＳ１４０５の判定がＹＥＳならば、そのpitchデータが、１オクターブの１２００分の１を示す単位であるcent値に変換される（ステップ１４０６）。
【００８９】
その後、ＲＡＭ５０３上の変数pfに値０がセットされる（ステップＳ１４０７）。pf変数は、図３で説明したピッチ特徴点（例えば１〜４）を順次指定するための変数であり、pf=0ならば周波数が最も低いピッチ特徴点（図３の例ではピッチ特徴点１）が指定される。また、前述したように、図６に例示される制御変数WaveSelection内のtarg_pf_countデータは、目標韻律のピッチ特徴点の数を示している。従って、ステップS１４１０でpf変数の値が順次＋１ずつインクリメントされながら、pf変数の値がtarg_pf_count-1になったときに、周波数が最も高いピッチ特徴点（図３の例ではピッチ特徴点４）が指定される。
【００９０】
ステップＳ１４０７の後、pf変数の値が上述の制御変数WaveSelection内のtarg_pf_countデータの値よりも小さいか否かが判定される（ステップＳ１４０８）。
【００９１】
ステップＳ１４０８の判定がＹＥＳならば、現在の韻律データ中のpitchデータが、図６に例示される制御変数WaveSelectionに格納されている、pf変数の値pfによって指定される目標韻律のpf+1番目のピッチ特徴点の周波数targ_pitch_feat[pf]よりも小さいか否かが判定される（ステップS１４０９）。ここでは、pf=0である場合のピッチ特徴点を1番目のピッチ特徴点と考える。
【００９２】
pitchデータが目標韻律のpf+1番目のピッチ特徴点の周波数targ_pitch_feat[pf]よりも小さくはなくステップＳ１４０９の判定がＮＯならば、ピッチ特徴点が１つ高い周波数に移されて、ステップＳ１４０８とＳ１４０９の判定が繰り返される。
【００９３】
いま例えば図３で説明したように、pitchデータが目標韻律の２番目と３番目のピッチ特徴点の間に位置するときには、pf=2のときにステップS１４０９の判定がＹＥＳとなる。
【００９４】
次に、pf=0であるか否かが判定される（ステップＳ１４１１）。pf=2の場合にはステップＳ１４１１の判定はＮＯとなる。
【００９５】
その後、図３の説明で前述した、（２）式の計算（ステップＳ１４１２）、（３）式の計算（ステップＳ１４１３）、（４）式の計算（ステップＳ１４１４）、および（６）式の計算（ステップＳ１４１５）が実行される。この結果、変数modpitの値として、pitchデータに対する韻律補正後のピッチデータが算出される。
【００９６】
このようにして得られたmodpit変数値がcent値に変換された後、その変換結果値によって、pros変数が示す目標韻律データのpitchデータが置き換えられる（ステップＳ１４１６）。
【００９７】
ステップＳ１４１６の処理の後、ステップＳ１４１９が実行されて、次の目標韻律データに処理が移る。
【００９８】
pitchデータが、１番目の目標韻律のピッチ特徴点よりも低い周波数である場合、ステップＳ１４１１の判定がＹＥＳになる。この場合には、pitchデータの周波数よりも下側の周波数域にはピッチ特徴点は存在しないため、前述した図３の内分点計算はできない。そこで近似的に、目標韻律の１番目のピッチ特徴点の周波数WaveSelection.target_pitch_feat[0]からpitchデータ値までの周波数差と同じ周波数だけ、素片韻律の１番目のピッチ特徴点の周波数unitdb.pitch_feat[0]から移動させられた周波数が、補正後の目標韻律のピッチ周波数modpitとして算出される（ステップＳ１４１７）。
【００９９】
ステップＳ１４１７の処理の後、ステップＳ１４１９が実行されて、次の目標韻律データに処理が移る。
【０１００】
pitchデータが、最も高い周波数の目標韻律のピッチ特徴点よりも高い周波数である場合、ステップＳ１４０８の判定がＮＯになる。この場合には、pitchデータの周波数よりも上側の周波数域にはピッチ特徴点は存在しないため、やはり前述した図３の内分点計算はできない。そこで近似的に、目標韻律の最後のピッチ特徴点の周波数WaveSelection.target_pitch_feat[WaveSelection.targ_pf_count-1]からpitchデータ値までの周波数差と同じ周波数だけ、素片韻律の最後のピッチ特徴点の周波数unitdb.pitch_feat[unitdb.pf_count-1]から移動させられた周波数が、補正後の目標韻律のピッチ周波数modpitとして算出される（ステップＳ１４１８）。
【０１０１】
ステップＳ１４１８の処理の後、ステップＳ１４１９が実行されて、次の目標韻律データに処理が移る。
【０１０２】
以上の韻律補正処理によって、入力テキストデータから生成される補正後目標韻律データ２０６の韻律遷移を、音声辞書１０６内の音声コーパスの韻律遷移に合わせることが可能となって、入力テキストデータと素片データとで韻律特徴（言い換えれば例えば話者）が異なっても、素片データを正しく選択して音声辞書１０６の音声コーパスの話者に合わせた、質の良い合成音声を出力することが可能となる。
【０１０３】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
入力テキストデータから生成される音素及び目標韻律に基づいて、音声コーパスを参照することにより音声素片を選択し、当該選択された音声素片を接続することにより合成音声を出力する音声合成装置において、
前記目標韻律からピッチ特徴点を抽出する目標韻律ピッチ特徴点抽出部と、
前記選択された音声素片中の韻律情報である素片韻律からピッチ特徴点を抽出する素片韻律ピッチ特徴点抽出部と、
前記目標韻律から抽出されたピッチ特徴点と前記素片韻律から抽出されたピッチ特徴点との対応関係に基づいて、前記目標韻律を補正する韻律補正部と、
を備えることを特徴とする音声合成装置。
（付記２）
前記目標韻律ピッチ特徴点抽出部または素片韻律ピッチ特徴点抽出部はそれぞれ、前記目標韻律または前記素片韻律のピッチ周波数のヒストグラムを算出し、当該ヒストグラムから頻度値が極大を示す１つ以上の周波数と前記頻度値が概略ゼロに収束する１つ以上の周波数をそれぞれ、前記ピッチ特徴点として抽出する、
ことを特徴とする付記１に記載の音声合成装置。
（付記３）
前記韻律補正部は、前記目標韻律中のピッチ周波数が前記目標韻律から抽出された相互に隣接するいずれか２つの前記ピッチ特徴点の周波数の間に任意の内分比で位置する場合に、前記目標韻律から抽出された２つの前記ピッチ特徴点にそれぞれ対応する前記素片韻律から抽出された２つの前記ピッチ特徴点の周波数を前記内分比と同じ内分比で内分して得られる周波数になるように、前記目標韻律中のピッチ周波数を補正する、
ことを特徴とする付記２に記載の音声合成装置。
（付記４）
入力テキストデータから生成される音素及び目標韻律に基づいて、音声コーパスを参照することにより音声素片を選択し、当該選択された音声素片を接続することにより合成音声を出力する音声合成装置に用いられる音声合成方法であって、前記音声合成装置が、
前記目標韻律からピッチ特徴点を抽出し、
前記選択された音声素片中の韻律情報である素片韻律からピッチ特徴点を抽出し、
前記目標韻律から抽出されたピッチ特徴点と前記素片韻律から抽出されたピッチ特徴点との対応関係に基づいて、前記目標韻律を補正する、
ことを特徴とする音声合成方法。
（付記５）
入力テキストデータから生成される音素及び目標韻律に基づいて、音声コーパスを参照することにより音声素片を選択し、当該選択された音声素片を接続することにより合成音声を出力する音声合成プログラムにおいて、
前記目標韻律からピッチ特徴点を抽出するステップと、
前記選択された音声素片中の韻律情報である素片韻律からピッチ特徴点を抽出するステップと、
前記目標韻律から抽出されたピッチ特徴点と前記素片韻律から抽出されたピッチ特徴点との対応関係に基づいて、前記目標韻律を補正するするステップと、
をコンピュータに実行させるための音声合成プログラム。
【符号の説明】
【０１０４】
１００  音声合成装置
１０１  テキスト入力部
１０２  形態素解析部
１０３  韻律予測部
１０４  韻律辞書
１０５  波形選択部
１０６  音声辞書
１０７  波形合成部
２０１  目標韻律データ
２０２  韻律入力部
２０３  目標韻律ピッチ特徴点抽出部
２０４  素片韻律ピッチ特徴点抽出部
２０５  韻律補正部
２０６  補正後目標韻律データ
２０７  素片選定部
２０７ａ  素片リストアップ部
２０７ｂ  音素列選択部
２０８  評価部
２０８ａ  素片評価部
２０８ｂ  接続評価部
２０９  素片候補データ
２１０  合成部
３０１  目標韻律のピッチ周波数のヒストグラム
３０２  素片韻律のピッチ周波数のヒストグラム
３０３  補正前の目標韻律のピッチ周波数
３０４  補正後の目標韻律のピッチ周波数
５０１  ＣＰＵ
５０２  ＲＯＭ（リードオンリーメモリ）
５０３  ＲＡＭ（ランダムアクセスメモリ）
５０４  入力装置
５０５  出力装置
５０６  外部記憶装置
５０７  可搬記録媒体駆動装置
５０８  通信インタフェース
５０９  バス
５１０  可搬記録媒体
【図１】
2015152788.tif 000003
【図２】
2015152788.tif 000004
【図５】
2015152788.tif 000005
【図３】
2015152788.tif 000006
【図４】
2015152788.tif 000007
【図６】
2015152788.tif 000008
【図７】
2015152788.tif 000009
【図８】
2015152788.tif 000010
【図９】
2015152788.tif 000011
【図１０】
2015152788.tif 000012
【図１１】
2015152788.tif 000013
【図１２】
2015152788.tif 000014
【図１３】
2015152788.tif 000015
【図１４】
2015152788.tif 000016