(57)【要約】【課題】合成器指令の途中でも、合成器指令に合致した音声素片系列を合成音声の品質低下を防ぎながら選択できる、音声素片選択装置を提供する。【解決手段】音声素片選択装置は、ある時刻において音声素片系列を構成する音声素片として選択された音声素片に対応するノードを根ノード、およびある時刻より所定の時間だけ後の音声素片の候補に対応するノードを葉ノードとし、各ノードには、当該ノードに対応する音声素片までの音声素片系列の累積コストの値がそれぞれ関連付けられている、可能な音声素片の系列を表す探索木を決定する処理部１８６と、探索木が決定されたことに応答して、ある時刻および所定の時刻に関連して予め定められる深さ制限を課したサーチ手法にしたがって、探索木をサーチすることにより、コストが所定の条件を充足する音声素片を選択して出力し、探索木を更新する処理部１９０、１９２とを含む。【選択図】      図６
2006047916.tif 000002
【特許請求の範囲】
【請求項１】
合成器指令に応答して、音声素片データベースから前記合成器指令によって定まるコスト関数が所定の条件を充足する音声素片系列を選択するための音声素片選択装置であって、
前記コスト関数は、時刻ｉにおけるコストが、時刻ｉ−１までのコストと、時刻ｉにおける音声素片候補の特徴量とによって決定されるように定められ、前記装置は、
合成器指令の入力に応答して、ある時刻における前記音声素片系列を構成する音声素片として選択された音声素片に対応するノードを根ノード、および前記ある時刻より所定の時間だけ後の時刻における音声素片の候補に対応するノードを葉ノードとし、各ノードには、当該ノードに対応する音声素片までの音声素片系列の累積コストの値がそれぞれ関連付けられている、可能な音声素片の系列を表す探索木を決定するための手段と、
前記探索木が決定されたことに応答して、前記ある時刻および前記所定の時間だけ後の時刻に関連して予め定められる深さ制限を課したサーチ手法にしたがって、前記探索木をサーチすることにより、前記コストが所定の条件を充足する音声素片を選択して出力するとともに、前記探索木を更新するための探索手段とを含む、音声素片選択装置。
【請求項２】
前記探索手段は、
前記葉ノードのうち、前記累積コストの値が所定の条件を充足するノードを決定するための葉ノード決定手段と、
前記根ノードの子ノードのうち、前記根ノードから前記所定の条件を充足するノードへの経路とは別の経路上に存在する子ノード、および前記別の経路上に存在する子ノードから分岐する全てのノードを前記探索木から削除するための第１のノード削除手段と、
前記根ノードから前記所定の条件を充足するノードへの経路上に存在する、前記根ノードの子ノードに対応する音声素片を、前記音声素片系列の、前記ある時刻に続く時刻における音声素片として選択し出力するための音声素片選択手段と、
前記根ノードから前記所定の条件を充足するノードへの経路上に存在する、前記根ノードの子ノードを新たな根ノードとして選択し、古い前記根ノードを前記探索木から削除するための根ノード選択手段と、
前記新たな根ノードから到達可能な前記葉ノードのうち、葉ノード数に対する所定の限定を充足するものと、前記新たな根ノードと、前記新たな根ノードから前記所定の限定を充足する葉ノードまでの経路上のノードとを残し、それ以外のノードを前記探索木から削除するための第２のノード削除手段と、
前記ある時刻から所定時間後の時刻における根ノードとして、前記新たな根ノードを前記葉ノード決定手段に与えるための手段とを含む、請求項１に記載の音声素片選択装置。
【請求項３】
前記葉ノード決定手段は、前記葉ノードのうち、前記累積コストの値が最小のノードを決定するための手段を含む、請求項２に記載の音声素片選択装置。
【請求項４】
前記第２のノード削除手段は、
前記新たな根ノードから到達可能な前記葉ノードのうち、対応する累積コストが小さいものから順に、かつ対応する音声素片が互いに異なる、予め定める上限個数以下の複数の葉ノードを決定するための手段と、
前記予め定める上限個数以下の複数の葉ノードと、前記新たな根ノードから前記予め定める上限個数以下の葉ノードまでの経路上のノードとを残し、それ以外のノードを前記探索木から削除するための手段を含む、請求項２に記載の音声素片選択装置。
【請求項５】
前記探索手段は、予め定める深さ制限を課した、所定ビーム幅のＤＰ（Ｄｙｎａｍｉｃ  Ｐｒｏｇｒａｍｍｉｎｇ）サーチ手法にしたがって、前記探索木をサーチし更新することにより、逐次的に音声素片を選択して前記音声素片系列を出力するための手段を含む、請求項１に記載の音声素片選択装置。
【請求項６】
コンピュータにより実行されると、当該コンピュータを請求項１〜請求項５のいずれかに記載の音声素片選択装置として動作させる、コンピュータプログラム。
【請求項７】
入力される合成目標のテキストを処理し、音声合成のための合成器指令を生成するためのテキスト処理手段と、
複数の音声素片を格納した音声素片データベースと、
前記テキスト処理手段が出力する前記合成器指令を入力として受けるように接続され、当該合成器指令に合致した音声素片を前記音声素片データベースから読み出すことにより音声素片系列を出力する、請求項１〜請求項５のいずれかに記載の音声素片選択装置と、
前記音声素片選択装置により出力された音声素片系列にしたがって前記音声素片データベースに記憶されている音声素片を順に接続することにより、前記合成目標のテキストに対応する音声波形を合成するための接続手段とを含む、音声合成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、波形接続型音声合成において、実時間で所与の条件を満足する波形候補を検索する際等に使用される検索技術に関し、特に、波形候補が多数の場合でも所定の制限時間内にできるだけ精度良く所与の波形候補を検索できる音声素片選択装置およびそれを用いた音声合成装置に関する。
【背景技術】
【０００２】
波形接続型音声合成において、高品質の音声を得るためには多数の音声素片が必要である。そのため、音声素片の数はより多く、音声素片データベースはより大きくなる。このように音声素片データベースが大きくなると、様々な問題が生じる。その第１の問題は、音声の録音がむずかしくなることである。なぜなら、音声素片は、合成音声を高品質にするためには、基本的に一人の話者の発声から収集しなければならないからである。しかしこの問題に対処することは、困難ではあっても決して不可能ではない。それよりも問題となるのは、音声素片データベースが大きくなることにより、音声素片の検索に要する時間が長くなることである。
【０００３】
機械による自動応答システムなどでは、音声合成を所定時間内に完了しなければならない。一方、音声素片データベース中の音声素片の数が多くなれば適切な音声素片の検索に要する時間が長くなることは直感的に分かる。さらに、波形接続型音声合成では、音声合成テキストから得られる合成器指令に最もよく合致するというだけではなく、前後の音声素片との間の接続についても考慮する必要がある。そのため、素片選択では前後の音声素片との組合せも考慮して素片を検索しなければならない。しかし、音声素片データベース中の音声素片の数が多くなると、それらの組合せの数は文字通り爆発的に増加するため、音声素片の検索を所与の時間内に完了することが困難になる。
【非特許文献１】Ｔ．トダ他２名「知覚的評価に基づく、波形接続型音声合成における素片選択のための統合コスト関数の最適化」、ＥＵＲＯＳＰＥＥＣＨ予稿集、ジュネーブ、スイス、ｐｐ．２９７−３００、２００３年９月（T.  Toda,  H.  Kawai,  and  M.  Tsuzaki,  "Optimizing  Integrated  Cost  Function  for  Segment  Selection  in  Concatenative  Speech  Synthesis  Based  on  Perceptual  Evaluations",  Proc.  EUROSPEECH,  Geneva,  Switzerland,  pp.  297-300,  Sep.  2003.）
【非特許文献２】戸田  智基、  河井  恒、津崎  実、「波形接続型音声合成における知覚的評価に基づく素片選択サブコスト関数の最適化」、信学技報、SP2003-81、ｐｐ．４３−４８、２００３年８月
【非特許文献３】阿部匡伸、匂坂芳典、梅田哲夫、桑原尚夫：「研究用日本語音声データベース利用解説書（連続音声データ編）」、  TR-I-0166、  ATR  自動翻訳電話研究所、1990。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
こうした問題を解決するために、主として二つの対策がある。一方は、選択すべき音声素片のカテゴリ範囲を狭くして、選択対象として考慮する必要のある音声素片の数を少なくする手法である。他方は、音声素片選択の際のアルゴリズムを工夫し、いわゆる枝刈り（プルーニング）という手法により検索空間を動的に小さくする手法である。前者の方法はオフラインで実行され、素片選択の際の計算量を直接減少させる。これに対し後者はオンラインで実行され、素片選択の際の計算量が減少するかどうかはわからず、むしろ計算量は変わらないことが多い。
【０００５】
しかし、自動応答システムのように実時間性と合成音声の品質との双方が要求されるアプリケーションでは、所定時間内にできるだけ高品質の音声合成を行なうことが必要である。したがって最初から選択対象が限定される前者の方策ではなく、オンラインで動的に選択対象を限定し、かつ時間が許す限りで合成音声の品質ができるだけ高くなるような音声素片の検索を行なう後者の方策を採ることが望ましい。
【０００６】
波形接続型音声合成の中に、「コスト」と呼ばれる値を計算することにより、音声素片系列を選択する手法がある（非特許文献１、２を参照されたい。）。この手法では、合成器指令となる一文の先頭から最後までについて、種々の可能性を考慮して複数の音声素片系列を累積コストとともに算出する。そうした音声素片系列の中でコストが最小となるものを選択し、その系列の音声素片を結合することにより、合成器指令の一文の合成音声波形を作成する。
【０００７】
この手法では、一文の最後まで到達しなければ最適解が得られず、したがって、それまでは音声を出力できない。もちろん、最適な音声素片系列を探索する場合、その探索空間は広大となるため、探索を効率的にする手法が考えられている。しかしそれでも結局は一文の最後まで最適解が得られないことには変わりがない。したがって、実時間で音声応答をするシステムに利用するには不利である。一文の最後まで到達しなくても、合成音声の品質を下げないような音声素片を検索できるようにすることが望まれる。
【０００８】
したがって本発明の目的は、合成器指令の途中でも、合成器指令に合致した音声素片系列を合成音声の品質低下を防ぎながら選択できる、音声素片選択装置および当該装置を用いた音声合成装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の第１の局面に係る音声素片選択装置は、合成器指令に応答して、音声素片データベースから合成器指令によって定まるコスト関数が所定の条件を充足する音声素片系列を選択するための音声素片選択装置であって、コスト関数は、時刻ｉにおけるコストが、時刻ｉ−１までのコストと、時刻ｉにおける音声素片候補の特徴量とによって決定されるように定められ、装置は、ある時刻において音声素片系列を構成する音声素片として選択された音声素片に対応するノードを根ノード、およびある時刻より所定の時間だけ後の音声素片の候補に対応するノードを葉ノードとし、各ノードには、当該ノードに対応する音声素片までの音声素片系列の累積コストの値がそれぞれ関連付けられている、可能な音声素片の系列を表す探索木を決定するための手段と、探索木が決定されたことに応答して、ある時刻および所定の時刻に関連して予め定められる深さ制限を課したサーチ手法にしたがって、探索木をサーチすることにより、コストが所定の条件を充足する音声素片を選択して出力するとともに、探索木を更新するための探索手段とを含む。
【００１０】
コスト関数が、時刻ｉ−１までのコストと、時刻ｉにおける音声素片候補の特徴量とによって決定される。音声素片候補の探索は、ある時刻において選択された音声素片に対応するノードを根ノード、それより所定の時間だけ後の時刻における音声素片の候補に対応するノードを葉ノードとする探索木を探索手段が探索することにより、ある時刻の次の時刻における音声素片が決定される。音声素片が逐次的に決定されるので、合成器指令の入力が完了するまえに音声素片系列を順に決定することができる。選択対象の音声素片数が多くなっても、所定時間のうちに音声素片の検索を終えることができるので、利用可能な音声素片数が大きくなったのに伴って合成音声の品質も向上する。
【００１１】
好ましくは、探索手段は、葉ノードのうち、累積コストの値が所定の条件を充足するノードを決定するための葉ノード決定手段と、根ノードの子ノードのうち、根ノードから所定の条件を充足するノードへの経路とは別の経路上に存在する子ノード、および別の経路上に存在する子ノードから分岐する全てのノードを探索木から削除するための第１のノード削除手段と、根ノードから所定の条件を充足するノードへの経路上に存在する、根ノードの子ノードに対応する音声素片を、音声素片系列の、ある時刻に続く時刻における音声素片として選択し出力するための音声素片選択手段と、根ノードから所定の条件を充足するノードへの経路上に存在する、根ノードの子ノードを新たな根ノードとして選択し、古い根ノードを探索木から削除するための根ノード選択手段と、新たな根ノードから到達可能な葉ノードのうち、葉ノード数に対する所定の限定を充足するものと、新たな根ノードと、新たな根ノードから所定の限定を充足する葉ノードまでの経路上のノードとを残し、それ以外のノードを探索木から削除するための第２のノード削除手段と、ある時刻から所定時間後の時刻における根ノードとして、新たな根ノードを葉ノード決定手段に与えて新たな探索木を決定させるための手段とを含む。
【００１２】
より好ましくは、葉ノード決定手段は、葉ノードのうち、累積コストの値が最小のノードを決定するための手段を含む。
【００１３】
さらに好ましくは、第２のノード削除手段は、新たな根ノードから到達可能な葉ノードのうち、対応する累積コストが小さい順に所定個数の葉ノードを決定するための手段と、所定個数の葉ノードと、新たな根ノードと、新たな根ノードから所定個数の葉ノードまでの経路上のノードとを残し、それ以外のノードを探索木から削除するための手段を含む。
【００１４】
第２のノード削除手段は、新たな根ノードから到達可能な葉ノードのうち、対応する累積コストが小さいものから順に、かつ対応する音声素片が互いに異なる、予め定める上限個数以下の複数の葉ノードを決定するための手段と、予め定める上限個数以下の複数の葉ノードと、新たな根ノードから予め定める上限個数以下の葉ノードまでの経路上のノードとを残し、それ以外のノードを探索木から削除するための手段を含んでもよい。
【００１５】
好ましくは、探索手段は、予め定める深さ制限を課した、所定ビーム幅のビームサーチ手法にしたがって、探索木をサーチし更新することにより、逐次的に音声素片を選択して音声素片系列を出力するための手段を含む。
【００１６】
より好ましくは、探索手段は、予め定める深さ制限を課した、所定ビーム幅のＤＰサーチ手法にしたがって、探索木をサーチし更新することにより、逐次的に音声素片を選択して音声素片系列を出力するための手段を含む。
【００１７】
本発明の第２の局面に係るコンピュータプログラムは、コンピュータにより実行されると、当該コンピュータを上記したいずれかの音声素片選択装置として動作させるものである。
【００１８】
本発明の第３の局面に係る音声合成装置は、入力される合成目標のテキストを処理し、音声合成のための合成器指令を生成するためのテキスト処理手段と、複数の音声素片を格納した音声素片データベースと、テキスト処理手段が出力する合成器指令を入力として受けるように接続され、当該合成器指令に合致した音声素片を音声素片データベースから読み出すことにより音声素片系列を出力する、上記したいずれかの音声素片選択装置と、音声素片選択装置により出力された音声素片系列にしたがって音声素片データベースに記憶されている音声素片を順に接続することにより、合成目標のテキストに対応する音声波形を合成するための接続手段とを含む。
【発明を実施するための最良の形態】
【００１９】
［第１の実施の形態］
図１に、本実施の形態に係る音声合成装置３６の概略ブロック図を示す。図１を参照して、この音声合成装置３６は、音声合成の目標となるテキストを含む入力３２を受け、それに対する音声波形からなる出力３８を得るものであって、入力３２を受け、音素、基本周波数、音声の継続時間長、各音声素片のＭＦＣＣ（Mel  Frequency  Cepstrum  Coefficient）のセントロイドなどを含む合成器指令を生成するためのテキスト処理部６４と、多数の音声素片を記憶する音声素片データベース（ＤＢ）６２と、テキスト処理部６４から合成器指令を受け、後述するコスト計算と、深さ制限をしたビームサーチとによって、短遅延で合成器指令に適した音声素片系列を選択するための素片選択部６６と、素片選択部６６が選択した音声素片系列にしたがって音声素片ＤＢ６２から音声素片を抽出し、合成器指令にしたがって加工および接続し出力３８を生成するための接続部６８とを含む。
【００２０】
図２を参照して、音声合成装置３６においては、テキスト処理部６４によるテキスト処理８０と、素片選択部６６による素片選択８２と、接続部６８による波形接続８４とが、所定の遅延時間をもって同時並列的に行なわれる。そして、素片選択８２が開始された後所定の遅延時間τが経過した後に、波形接続８４が開始されるようにする。そのために素片選択部６６は、遅延時間τの間に少なくとも最初の音声素片を確定しなければならない。この遅延時間τは外部から指定可能であり、したがって図１に示すように素片選択部６６は外部からこの遅延時間τの入力を受ける。
【００２１】
素片選択部６６において音声素片を選択する際の基準となるコストの計算方法について説明する。本実施の形態では、コストは複数のサブコストから構成される。本実施の形態では、コストは６種類のサブコスト、すなわちＣF0、Ｃdur、Ｃcen、Ｃenv、ＣspgおよびＣF0Cからなる。ＣF0およびＣdurはｌｏｇＦ0および音の継続時間長の相違による不自然さに対応する。Ｃcenは音声素片候補と合成器指令との間のケプストラム平均の相違による不自然さに対応する。本実施の形態では、ターゲットパラメータはすべてＨＭＭによる音声合成方式により生成されるので、ケプストラムについても目標特徴量として使用できる。ＣF0、ＣdurおよびＣcenはターゲットコストＣTを構成する。
【００２２】
Ｃenvは音声素片候補と目標との間の音素環境の不一致による不自然さに対応する。Ｃenvはまた、素片接続による影響も含む。二つの音声セグメントがコーパス中で連続したものではない場合には、仮にそれらセグメントの音声環境が一致していたとしてもＣenvは０にならない。Ｃspgはセグメント境界でのスペクトルの不連続による不自然さに対応する。Ｃspgは、境界の直前のセグメントと直後のセグメントとの間のメルケプストラム距離の加重和によって算出できる。ＣF0CはｌｏｇＦ0の不連続による不自然さに対応する。Ｃenv、ＣspgおよびＣF0Cは接続コストＣcを構成する。コーパス内で二つの音声セグメントが連続している場合、Ｃenv、ＣspgおよびＣF0Cはすべて０に設定される。
【００２３】
これらサブコスト関数の設計は、知覚実験の結果により最適化されている。
【００２４】
音声素片の選択は、累積コストを最小化することによって行なわれる。累積コスト関数Ｃはセグメント系列｛ｕi｝を用いたときに以下の式で計算される、不自然さを表す指標である。
【００２５】
【数１】
2006047916.tif 000003
ただしＣT、ＣCおよび｛ｔi｝はそれぞれ、ターゲットコスト、接続コスト、および目標セグメント系列を示す。ｗT、ｐT、ｗCおよびｐCはそれぞれ、ターゲットコストおよび接続コストの重みおよび指数重みをそれぞれ表す。なお、出願人は、従来はｐTおよびｐCとしてそれぞれ１と１．５の値を用いている。
【００２６】
ターゲットコストＣTおよび接続コストＣCはそれぞれ、以下の式により与えられる。
【００２７】
【数２】
2006047916.tif 000004
ただしｗF0、ｗdur、ｗcen、ｗenv、ｗspgおよびｗF0Cはそれぞれ、各サブコストの重みを表す。これらの係数もまた、知覚実験により推定された。
【００２８】
上記した基準により音声素片を選択する場合、一つの発話文の目標情報の全てが必要となるので、このままでは一つの文の入力が終了するまで素片選択が実行できない。本実施の形態では、応答を速くするため、文の入力が終了する前に素片選択の開始が行なえるようにする。そのため、以下に述べるように、合計コストの算出方法を改良し、深さ制限をしたビームサーチを採用した音声素片の探索方法を用いる。
【００２９】
本実施の形態では、素片選択の遅延を少なくするため、上記したコスト計算においてｐTおよびｐCをいずれも１に固定する。すると、時刻ｉにおける累積コストＣ(i)＝Ｃ（ｕ0，ｕ1，…，ｕi-1）は以下の式で与えられる。
【００３０】
【数３】
2006047916.tif 000005
ただしｗC'およびｗT'はそれぞれ、ターゲットコストと接続コストとの重みである。
【００３１】
式（４）は漸化式で、時刻ｉのコストが、時刻ｉ−１までの累積コストと時刻ｉにおける音声素片候補の特徴量とによって決定されるので、累積コストを効率よく算出できる。前述した式でｐTおよびｐCがそれぞれ１と１．５であったことを考えると、式（４）を採用したとしてもその影響は少ないと考えられる。
【００３２】
遅延時間をより小さくするためには、上記したようにコスト計算の方法を変えた上で、さらに音声素片選択のための探索空間を時間的に制限する必要がある。そのために本実施の形態では、深さ制限をしたビームサーチを採用して音声素片の選択を行なう。本明細書では「深さ」とは探索木の根ノードから葉ノードまでのノード数のことをいう。ただし根ノード自体はこの数には数えない。この場合、深さの最大値は音声素片のための最大遅延に対応する。
【００３３】
この方法では、すべての枝の深さは互いに等しい。深さが深さの制限値を超えたなら、根ノードの直下の子ノードのうちのいずれかが次の根ノードとしてまず保存される。この子ノードは、最小の累積コストを与える枝を逆にたどることで決定される。
【００３４】
次に、根ノードの子ノードのうち、保存された子ノード以外のノードとそれ以下のノードとを探索木から削除する。これら子ノードのコストが最適解を与えるものとは考えられないためである。この後、根ノードを削除し、保存しておいた子ノードを新たな根ノードとする。この新たな根ノードにおける音声素片が、音声合成のために選択される。こうした処理により、探索対象となる探索木の深さは深さ制限以内に維持される。
【００３５】
図３は、ビーム幅ｗ＝４、深さ制限Ｌ＝２の場合の探索木の例を示す。図３において、各ノード内のアルファベットは音素名ではなくノード名を示す。時刻０において、根ノードがノードＡとすると、ノードＡから深さが３の階層にある葉ノードＨ，Ｉ，Ｊ，Ｋ，Ｌ，Ｍ，Ｎ，Ｏのうちで累積コストが最小となるのは、Ａ−Ｃ−Ｆ−Ｍという経路である。この結果、ノードＣが時刻１において選択されるノード（音声素片）となる。Ａ−Ｂ−Ｄ−ＨおよびＡ−Ｂ−Ｄ−Ｉという経路は枝刈りされる（削除される）。図３において、このようにして枝刈りされた枝およびノードは点線で示してある。その後ノードＡを削除し、ノードＣを新たな根ノードとする。さらに、ノードＣの下にある葉ノードＪ，Ｋ，Ｌ，Ｍ，Ｎ，Ｏのうち、ビーム幅ｗ＝４を超える葉ノードが枝刈りされる。図３に示す例では、コストが大きくなる経路Ｃ−Ｇ−ＯおよびＣ−Ｅ−Ｋが枝刈りされ、葉ノードＪ，Ｌ，Ｍ，Ｎが残される。この処理で枝刈りされる枝およびノードは、図３では破線で示してある。
【００３６】
実際には、探索速度を制御するために、ビーム幅を変えることが必要である。累積コスト計算のための計算量には、ビーム幅が影響するためである。連続して音声合成出力を行なうためには、音声素片選択はリアルタイム以上の速度で実行される必要がある。
【００３７】
上記した音声合成装置３６は、実際にはコンピュータハードウェアおよび当該コンピュータハードウェア上で実行されるソフトウェアとからなるコンピュータシステムにより実現される。図４はこの音声合成装置３６を実現するコンピュータシステム１３０の外観を示し、図５はコンピュータシステム１３０の内部構成を示す。
【００３８】
図４を参照して、このコンピュータシステム１３０は、ＦＤ（フレキシブルディスク）ドライブ１５２およびＣＤ−ＲＯＭ（コンパクトディスク読出専用メモリ）ドライブ１５０を有するコンピュータ１４０と、キーボード１４６と、マウス１４８と、モニタ１４２とを含む。
【００３９】
図５を参照して、コンピュータ１４０は、ＦＤドライブ１５２およびＣＤ−ＲＯＭドライブ１５０に加えて、ＣＰＵ（中央処理装置）１５６と、ＣＰＵ１５６、ＦＤドライブ１５２およびＣＤ−ＲＯＭドライブ１５０に接続されたバス１６６と、ブートアッププログラム等を記憶する読出専用メモリ（ＲＯＭ）１５８と、バス１６６に接続され、プログラム命令、システムプログラム、および作業データ等を記憶するランダムアクセスメモリ（ＲＡＭ）１６０とを含む。コンピュータシステム１３０はさらに、プリンタ１４４を含んでいる。
【００４０】
ここでは示さないが、コンピュータ１４０はさらにローカルエリアネットワーク（ＬＡＮ）への接続を提供するネットワークアダプタボードを含んでもよい。
【００４１】
コンピュータシステム１３０に音声合成装置３６としての動作を行なわせるためのコンピュータプログラムは、ＣＤ−ＲＯＭドライブ１５０またはＦＤドライブ１５２に挿入されるＣＤ−ＲＯＭ１６２またはＦＤ１６４に記憶され、さらにハードディスク１５４に転送される。または、プログラムは図示しないネットワークを通じてコンピュータ１４０に送信されハードディスク１５４に記憶されてもよい。プログラムは実行の際にＲＡＭ１６０にロードされる。ＣＤ−ＲＯＭ１６２から、ＦＤ１６４から、またはネットワークを介して、直接にＲＡＭ１６０にプログラムをロードしてもよい。
【００４２】
このプログラムは、コンピュータ１４０にこの実施の形態に係る音声合成装置３６としての動作を行なわせる複数の命令を含む。この方法を行なわせるのに必要な基本的機能のいくつかはコンピュータ１４０上で動作するオペレーティングシステム（ＯＳ）またはサードパーティのプログラム、もしくはコンピュータ１４０にインストールされる各種ツールキットのモジュールにより提供される。したがって、このプログラムはこの実施の形態のシステムおよび方法を実現するのに必要な機能全てを必ずしも含まなくてよい。このプログラムは、命令のうち、所望の結果が得られるように制御されたやり方で適切な機能または「ツール」を呼出すことにより、上記した音声合成装置３６としての動作を実行する命令のみを含んでいればよい。コンピュータシステム１３０の動作は周知であるので、ここでは繰返さない。
【００４３】
図６は、コンピュータシステム１３０に音声合成装置３６としての動作を実行させるためのプログラムのうち、素片選択部６６を実現するプログラム部分の制御構造を示すフローチャートである。図６を参照して、まずステップ１８０で初期化処理が実行される。このステップでは、必要とする記憶領域の確保および初期化、必要な定数のロードなどが実行される。
【００４４】
ステップ１８２では、入力要求があるか否かについての判定が行なわれる。この入力要求は、設計遅延時間での音声合成が可能なように外部から制御される。入力要求があればステップ１８４に進み、入力要求がなければステップ１８８に進む。
【００４５】
ステップ１８４では、合成器指令を読込む。この合成器指令は、図１に示すテキスト処理部６４により生成された合成器指令を読込む処理である。続いてステップ１８６では、読込まれた合成器指令に応答し、合成器指令にしたがって、素片候補追加および探索木更新が実行される。ステップ１８６で実行される処理の詳細については図７を参照して後述する。
【００４６】
ステップ１８８では、出力要求があるか否かについての判定が行なわれる。この出力要求も、コンピュータシステム１３０に備えられたタイマ等に基づき、設計遅延時間τでの音声合成が可能なように外部から制御されるものとする。通常は、探索木が深くなるほど音声素片の選択結果はよくなるので、基本的にはこの出力要求は、設計遅延時間τにおさまる最大の遅延になるように制御される。出力要求があればステップ１９０に進み、出力要求がなければステップ１９４に進む。
【００４７】
ステップ１９０では、素片確定・探索木更新処理が実行される。ここで実行されるのが、上記した探索木内での深さ制限によるビームサーチによる探索である。この処理では、図３を参照して説明したとおり、根ノードの直下の子ノードのうち、深さ制限により決まる葉ノードまでの経路の累積コストが最小となるようなものが一旦保存される。さらに、根ノードの子ノードのうち、それ以外のノードが、各ノードの下に存在するノードとともに削除される。根ノードが削除され、保存されていた子ノードが新たな根ノードとなる。さらにこの根ノードのち、ビーム幅を超えるノードがコストの大きいものから順に削除される。
【００４８】
ステップ１９２では、ステップ１９０で新たな根ノードとなったノードに対応する素片が選択され、選択結果として出力される。この後，ステップ１９４に進み、ステップ１９４では全ての入力に対して出力を行なったか否かが判定される。判定結果がＹＥＳなら処理は終了し、判定結果がＮＯであれば制御はステップ１８２に戻る。
【００４９】
図７は、図６のステップ１８６で実行される素片候補追加・探索木更新処理（ビームサーチ処理）を実現するためのプログラム部分の制御構造を示すフローチャートである。図７を参照して、まずステップ２７０で、合成器指令入力に対応する素片候補列を配列｛ｕ0，ｕ1，…，ｕk-1｝に代入する。同じく、葉ノード番号のリストを配列｛Ｉ0，…，Ｉw-1｝（ｗはビーム幅）に代入する。続いてステップ２７２で変数ｉに０を代入する。
【００５０】
ステップ２７４では、変数ｉの値が素片候補列の素片候補数ｋより小さいか否かを判定する。変数ｉの値がｋより小さければステップ２７６に進む。変数ｉの値がｋ以上であればステップ２８８に進む。
【００５１】
ステップ２７６では、変数ｊに０を代入する。続くステップ２７８では、変数ｊの値がビーム幅ｗより小さいか否かを判定する。変数ｊがビーム幅ｗより小さければステップ２８０に進み、さもなければステップ２８６に進む。
【００５２】
ステップ２８０では、葉ノードＩjに登録されているコストおよび素片候補と素片候補ｕiとを用いて累積コストＣ（Ｉj,ｕi）を算出し、コストを表す変数Ｃに代入する。続いてステップ２８２で、ノードＩjの子ノードを作成し、そのノードに素片候補ｕiとコストＣとを登録する。ステップ２８４で変数ｊに１を加算し、ステップ２７８に戻る。こうして、全ての葉ノードＩjの下に素片候補ｕiに対応する子ノードが作成され、それらにはそれぞれ素片候補ｕiと累積コストとが登録される。
【００５３】
ステップ２７８での判定の結果、変数ｊの値が葉ノードの数と等しくなると、ステップ２８６で変数ｉに１を加算し、ステップ２７４に戻る。ステップ２７４からステップ２８６の処理が、ステップ２７４で変数ｉの値が変数ｋの値と等しいと判定されるまで繰返される。すなわち、全ての素片候補について、全ての葉ノードの下に対応の子ノードを作成し、それら全てに素片候補と累積コストとが登録される。
【００５４】
ステップ２７４において、変数ｉ＜変数ｋではないと判定されると、ステップ２８８においてビーム幅制限による枝刈りが実行される。この枝刈りについては図８を参照して後述する。ステップ２８８の処理が終了すると、素片候補追加・探索木更新処理は終了する。
【００５５】
図８は、図７のステップ２８８で実行されるビーム幅制限による枝刈りを実現するプログラム部分のフローチャートである。図８を参照して、まずステップ３００で探索木の葉ノードの数がビーム幅ｗより大きいか否かを判定する。葉ノードの数がビーム幅ｗより大きければステップ３０２に進み、それ以外の場合にはこの処理を終了する。
【００５６】
ステップ３０２では、葉ノードのうちで最大の累積コストを持つものの番号を変数ｍに代入する。この後、ステップ３０４でノードｍを削除する。ノードの削除については図１０を参照されたい。
【００５７】
図９は、図６のステップ１９０で実行される素片確定・探索木更新処理のフローチャートである。図９を参照して、この処理では、まずステップ２１０で累積コストが最小となる葉ノードの番号を変数ｍに代入する。ステップ２１２で葉ノードｍ（変数ｍにより表されるノードのことをノードｍと呼ぶ。以下同じ）から根ノードに向けて木構造をたどり、その経路上での根ノードの直下の子ノードの番号を変数ｎに格納する。すなわち、新たな根ノードとなるノードの番号を変数ｎに保存する。なお以下のフローチャートの説明では、変数としてｉ、ｊなどが使用される。これら変数は、図が異なればたとえ同じ名称（ｉ、ｊなど）であっても互いに異なる変数であることに注意されたい。
【００５８】
ステップ２１４では、以下の処理の繰返し変数ｉに０を代入し、ステップ２１６で変数ｉの値が葉ノードの数より大きいか否かを判定する。変数ｉの値が葉ノードの数より大きければステップ２２６に進み、それ以外の場合にはステップ２１８に進む。
【００５９】
ステップ２１８では、葉ノードｉから根ノードに向けて木構造をたどり、当該経路上における根ノードの直下の子ノード番号を変数ｊに格納する。続いてステップ２２０で，変数ｊの値が変数ｎの値と等しいか否かについて判定する。両者が等しければステップ２２４に進み、両者が等しくなければステップ２２２に進む。
【００６０】
ステップ２２２では、変数ｉにより示される葉ノードが、変数ｎにより示されるノードの下にないということであるから、その葉ノードを削除する。ステップ２２２の処理については図１０を参照して後述する。ステップ２２２の後、処理はステップ２２４に進む。
【００６１】
ステップ２２４では、変数ｉに１を加算し、ステップ２１６に戻る。
【００６２】
以上の処理により、葉ノードのうちで、次の根ノードになるノードの下に存在するもの以外の葉ノードが全て削除される。
【００６３】
一方、ステップ２１６で変数ｉの値が葉ノード数より大きいと判定された場合には、全ての葉ノードに対しステップ２１８〜２２４の処理が完了したということである。そこで、ステップ２２６でそれまでの根ノードを削除し、変数ｎにより特定されるノードが新たな根ノードとなる。
【００６４】
図１０は、図９のステップ２２２で実行されるノード削除のためのプログラムの制御構造を示すフローチャートである。図１０を参照して、まずステップ２４０で、削除する枝の子ノードの番号を変数ｉに代入する。ステップ２４２で、ノードｉが根ノードか否かを判定する。ノードｉが根ノードであれば、根ノードの子ノードで削除すべきものは全て削除したということである。したがってこの場合には処理を終了する。ノードｉが根ノードでなければステップ２４４に進む。
【００６５】
ステップ２４４では、ノードｉから子ノードへの枝数が０か否かを判定する。枝数が０以外であれば、このノードを削除できないので処理を終了する。枝数が０であればステップ２４６に進み、変数ｊにノードｉの親ノードの番号を代入する。
【００６６】
続いてステップ２４８で、枝ｊｉ（ノードｊとノードｉとを結ぶ枝）とノードｉとを削除する。ステップ２５０で変数ｊの値を変数ｉに代入し、ステップ２４２に戻る。以下、ステップ２４２で判定がＹＥＳまたはステップ２４４で判定がＮＯとなるまで、上記した処理を繰返すことにより、根ノードの直下の子ノードまで、不要なノードが削除される。
【００６７】
上記した素片選択部６６の動作によるノードの選択（すなわち素片候補の選択）は、図３を参照して説明したとおりとなる。したがって、ここではそれらについての詳細な説明は繰返さない。
【００６８】
以上のようにこの第１の実施の形態に係る音声合成装置３６によれば、コスト計算を漸化式にしたがって行なうようにし、さらに深さ制限を用いたビームサーチによって所定の計算量内でコスト最小の探索木上を探索することにより、素片候補の選択を所定時間ごとに逐次的に行なう。そのため、音声素片ＤＢ６２に含まれる音声素片数が大きくなっても、短い時間で素片を選択できる。そのため合成音声の品質を維持することができる。深さ制限を行なっているため、所定の短遅延時間ごとに素片を選択でき、合成器指令の入力の完了を待つ必要はない。その結果、実時間で高品質の音声合成を行なうことができる。
【００６９】
［第２の実施の形態］
第１の実施の形態では、探索木の探索に深さ制限を課したビームサーチを採用した。しかし、本発明はそのような実施の形態には限定されない。ビームサーチではなく、同じように深さ制限を課したＤＰ（動的プログラミング）サーチを採用することもできる。第２の実施の形態に係る音声合成装置は深さ制限を課したＤＰサーチを採用したものである。
【００７０】
この第２の実施の形態に係る音声合成装置の構成は、図１に示したものと同様で、ただし素片選択部６６で実行される探索方法のみが第１の実施の形態と異なる。したがって、以下では本実施の形態で第１の実施の形態で用いたビームサーチに替えて採用された深さ制限が課されたＤＰサーチについてのみ説明する。
【００７１】
ビームサーチの場合と異なり、ＤＰサーチでは、サーチの途中の各時刻において、探索木のあるノードから分岐するノードに対応する音声素片は、互いに異なっている必要がある。また、ある時刻において可能な音声素片の数がビーム幅未満であれば、その時刻におけるノードの数はビーム幅ではなくその可能な音声素片の数となる。すなわち、各時刻における探索木の葉ノードの数は、ビーム幅以下の値となる。
【００７２】
図１１は、深さ制限が課されたＤＰサーチを説明するための探索木を示す図である。ここでは、ビーム幅ｗ＝４であり、深さ制限Ｌ＝２とする。図１１に示す例では、時刻３において可能な音声素片の数は２となっているものとする。したがって、図１１において、ノードＨ，Ｊ，Ｌ，Ｎは互いに同じ音声素片に対応し、ノードＩ，Ｋ，Ｍ，Ｏも互いに同じ音声素片に対応することが想定されている。このサーチでは、可能な音声素片の各々に対し、枝との間の関係を調べて最適な枝が一つだけ作成される。したがって葉ノードの数の総和は、時刻３においては２である。
【００７３】
ビーム幅およびある時刻における音声素片候補の数をそれぞれｗ'およびｎとすると、累積コストを算出するための計算量はＯ（ｗ'ｎ）である。これはビームサーチにおける計算量（Ｏ（ｗｎ））と同程度である。したがって、もしｗ＝ｗ'であれば、ＤＰサーチの場合にはビームサーチと比較して探索木内により多くの種類の音声素片を持つことができるので、ビームサーチよりもＤＰサーチの方がより効率的な音声素片の選択ができる。これは、ＤＰサーチの場合には無駄な枝の数がビームサーチの場合より少ないためである。
【００７４】
しかし、短遅延の音声合成では探索木の枝を刈り込む必要が生ずる。ＤＰサーチの場合にビームサーチと同様の枝刈りを行なうと、サーチの際に有望な音声素片候補が多数捨てられてしまう可能性がある。図１１に示す例では、時刻３において可能な二つの音声素片のうち一方は、次の枝刈りで削除されてしまう。したがって、深さ制限をしたＤＰサーチにおける音声素片選択の結果は悪化する可能性がある。
【００７５】
図１１に示す例では、時刻０における根Ａから、時刻３における可能なノードの累積コストを見ると、ノードＭが最小（１．４）である。したがって、時刻１では、ノードＢ、Ｃのうち、ノードＭ側のノードＣが根ノードとして選択される。ノードＢと、ノードＢから枝分かれするノード（ノードＤ，Ｈ，Ｉ）とは全て削除される。削除された枝およびノードは、図１１では点線で示してある。
【００７６】
さらに、可能なノード数が２であるから、残りのノードのうちノードＪ，Ｍ以外のノード（ノードＫ，Ｌ，Ｎ，Ｏ）が削除される。ノードＧからの葉ノードが一つもなくなるので、ノードＧも削除される。ここで削除されるノードは、図１１では破線で示してある。
【００７７】
図１２は、図１１に示すようなＤＰサーチを実現するためのプログラム部分のフローチャートである。図１２に示す例は、ＤＰに基づく方法に相当するが、ここではＮ−ベストサーチとビームサーチとを組合せた方法としてより一般化したものを示してある。Ｎ＝１のときはＤＰサーチに相当する。
【００７８】
図１２に示す例では、各音声素片候補について、コスト計算結果をヒープ領域に格納した後、コストの小さい方からＮ個の可能性のみを探索木に追加する。Ｎを小さくすれば、最適ではない特定の素片ばかりが探索木に登録されてしまうことを防止できる。一方、Ｎを大きくすれば、出力結果を確定させたとき必要となる枝刈り操作において、ある音声素片候補が完全に探索木から失われてしまうことが防止できる。
【００７９】
図１２を参照して、まずステップ３２０において、合成器指令入力に対応する素片候補列を配列｛ｕ0…ｕk-1｝に代入し、葉ノード番号のリストを配列｛Ｉ0…Ｉw-1｝に代入する。ただしｋは素片候補の数、ｗはビーム幅である。
【００８０】
ステップ３２２において、繰返し変数ｉに０を代入する。続いてステップ３２４において変数ｉの値が素片候補の数ｋ未満か否かを判定する。判定結果がＹＥＳであればステップ３２６に進み、それ以外であればステップ３５２に進む。
【００８１】
ステップ３２６では、サイズＮのヒープを初期化する。ヒープとは、ノードに値が保持される木構造で、親ノードの値が子ノードの値よりも常に大きく（または常に小さく）なっているものをいう。この場合、根に最大（最小）の値が格納される。各ノードの値の間に大小の関係を課す事以外には、木の構造に意味はない。したがって、木の構造に強い制約を課すことが可能である。ヒープは、リスト構造ではなく配列を用いて実装するのが普通である。深さが等しい２分木Ｋ構造により実現されている場合、ヒープの挿入・削除に要する処理は最悪でｌｏｇ  Ｎとなる。ヒープの取扱いに関しては、古典的なアルゴリズムが存在する（ドナルド  Ｅ．クヌース（Ｄｏｎａｌｄ  Ｅ．  Ｋｎｕｔｈ）、「Ｔｈｅ  Ａｒｔ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｐｒｏｇｒａｍｍｉｎｇ，Ｖｏｌｕｍｅ  ３：  Ｓｏｒｔｉｎｇ  ａｎｄ  Ｓｅａｒｃｈｉｎｇ」、１９７３年）。
【００８２】
ステップ３２８では、変数ｊに０を代入する。ステップ３３０では、変数ｊがビーム幅ｗより小さいか否かを判定する。変数ｊがビーム幅ｗより小さければステップ３３２に進み、それ以外の場合にはステップ３４０に進む。
【００８３】
ステップ３３２では、葉ノードＩjと素片候補ｕiとの間で累積コストＣ（Ｉj，ｕi）を計算し、コストＣに代入する。続いてステップ３３４において、コストＣの値が、ヒープ中で最大のコストより小さいか、またはヒープに空きがあるか否かを判定する。判定結果がＹＥＳであればステップ３３６に進み、さもなければステップ３３８に進む。
【００８４】
ステップ３３６では、コストＣをキーにして｛ｕi，Ｉj，Ｃ｝をヒープに登録し、ステップ３３８に進む。
【００８５】
ステップ３３８では、変数ｊに１を加算し、ステップ３３０に戻る。
【００８６】
ステップ３４０では、Ｎ（Ｎ−ベストのＮ）を変数ｈに代入する。ステップ３４２では変数ｈの値が０より大きいか否かを判定する。変数ｈの値が０より大きいときにはステップ３４４に進み、さもなければステップ３５０に進む。
【００８７】
ステップ３４４では、小さい方からｈ番目のコストＣを含む｛ｕ，Ｉ，Ｃ｝をヒープから取除く。ステップ３４６では、Ｉの子ノードを作成し、そのノードにｕとコストＣとを登録する。その後ステップ３４８において変数ｈから１を減算し、ステップ３４２に戻る。
【００８８】
ステップ３４２で変数ｈが０以下であると判定されると、ステップ３５０で変数ｉに１を加算し、ステップ３４２に戻る。
【００８９】
一方、ステップ３２４で変数ｉの値が素片候補の数ｋ未満ではないと判定されたときは、ステップ３５２でビーム幅をｗに制限した枝刈りを行ない、処理を終了する。
【００９０】
以上のプログラムにより、深さ制限を課したＤＰサーチを行なうことができる。
【００９１】
［深さ制限によるサーチの評価］
深さ制限を課したビームサーチおよびＤＰサーチを評価するために、ビーム幅および深さ制限を様々に変えて累積コストを算出した。この評価で合成に使用した発話コーパスは、一人の男性話者による４５０文の発話を収録したものである。この発話は、非特許文献３に記載の５０３文コーパスのセットＡからセットＩまでのものと同じものである。合成目標は、上記した５０３文コーパスのセットＪの５３文である。合成目標に関する情報は、同じ話者が発話したセットＪの文から抽出した。データベース内の各音声素片は音素に対応する。音声素片の数は、無音をのぞいて２３，６３２である。テスト文に含まれる音声素片の平均数は４３．３であった。
【００９２】
図１３および図１４はそれぞれ、深さ制限を課したビームサーチと深さ制限を課したＤＰサーチとによって選択された音声素片の、１素片辺りの平均累積コストを示す。図１３には、ビーム幅ｗ＝１６、６４、２５６、１０２４、４０９６として得られた結果が、それぞれ折れ線３７０、３７２、３７４、３７６、３７８として示されている。また図１４には、ビーム幅ｗ＝１６、６４、２５６、１０２４に対して得られた結果が、それぞれ折れ線４００、４０２、４０４、および４０４（ｗ＝２５６の折れ線とｗ＝１０２４の折れ線とはほとんど重なっている。）で示されている。
【００９３】
この結果から、ビーム幅が等しい場合には、ＤＰサーチの方がビームサーチより累積コストの点で優れていることが分かる。例外は深さ制限の値が小さく、ビーム幅が大きなときである。ビームサーチでは、制限された深さが大きくなると累積コストは悪化する。これにより、ビームサーチでの探索木が非効率であることが分かる。ＤＰサーチでは、ビームサーチのときと異なり、深さ制限が小さいときにはビーム幅は累積コストの低減には貢献しない。これは枝刈りの影響によるものと思われる。
【００９４】
一般的にいって、遅延時間を非常に小さくすることが求められる場合には、深さ制限を課したビームサーチを採用すべきである。他の場合には、ＤＰサーチの方が優れている。もちろん結果は様々な要因により左右される。例えばコスト関数の設計、音声素片のカテゴリ分けの仕方、音声素片データベースの構造、評価で用いるテスト文などがそうした要因となる。しかし、将来の音声合成器のコストも、音声合成の原理に大きな変化が生じない限り、上記したのと同様の傾向を示すであろう。また、どんな場合にも、ＤＰサーチの方がビームサーチよりもよい結果を示すような最小の深さを確認すべきである。
【００９５】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味および範囲内でのすべての変更を含む。
【図面の簡単な説明】
【００９６】
【図１】本発明の第１の実施の形態に係る音声合成装置のブロック図である。
【図２】図１に示す装置で行なわれる処理の時間的関係を説明するための図である。
【図３】ビームサーチによる葉ノード選択処理を説明するための図である。
【図４】本発明の一実施の形態に係る音声合成装置３６を実現するためのコンピュータシステムの外観を示す図である。
【図５】図４に示すコンピュータシステムのブロック図である。
【図６】ビームサーチを実現するためのプログラムのメイン処理の制御構造を示すフローチャートである。
【図７】第１の実施の形態における素片候補追加・探索木更新処理のフローチャートである。
【図８】ビーム幅制限による枝刈り処理のフローチャートである。
【図９】素片確定・探索木更新処理のフローチャートである。
【図１０】ノード削除処理のフローチャートである。
【図１１】第２の実施の形態における葉ノード選択処理を説明するための図である。
【図１２】第２の実施の形態における素片候補追加・探索木更新処理のフローチャートである。
【図１３】深さ制限を課したビームサーチの評価結果を示すグラフである。
【図１４】深さ制限を課したＤＰサーチの評価結果を示すグラフである。
【符号の説明】
【００９７】
３２  入力、３６  音声合成装置、３８  出力、６２  音声素片ＤＢ、６４  テキスト処理部、６６  素片選択部、６８  接続部
【図１】
2006047916.tif 000006
【図２】
2006047916.tif 000007
【図３】
2006047916.tif 000008
【図４】
2006047916.tif 000009
【図５】
2006047916.tif 000010
【図６】
2006047916.tif 000011
【図７】
2006047916.tif 000012
【図８】
2006047916.tif 000013
【図９】
2006047916.tif 000014
【図１０】
2006047916.tif 000015
【図１１】
2006047916.tif 000016
【図１２】
2006047916.tif 000017
【図１３】
2006047916.tif 000018
【図１４】
2006047916.tif 000019