以下、各種の実施例を、図面に従い順次説明する。なお、本明細書において、「肉声音声」とは、通常の意味における肉声音声を、「準肉声音声」とは、韻律や声質面で肉声に準じる合成肉声音声を、「(準)肉声音声」とは、通常の意味における肉声音声と、韻律や声質面で肉声に準じる合成肉声音声の両者を意味することとする。例えば、「肉声音声データ」とは、通常の意味における肉声音声データを意味し、「準肉声音声データ」とは、韻律や声質面で肉声に準じる合成肉声音声データを意味し、「(準)肉声音声データ」とは、肉声音声データと準肉声音声データの両者を意味している。
第1の実施例は、音声合成装置、システムに係るものである。本実施例の音声合成装置、システムの構成により、ユーザが入力した読み上げテキストを、合成音声に変換する基本機能を実現する。以下では、「部」という表現で、音声合成装置、システムの内部処理の各単位を呼称するが、ハードウェアとしての装置で実現しなくても、ソフトウェアプログラムとして実現されたシステム、またはプログラムという形態で、その機能を実現することも可能である。
図1Aは、本実施例の音声合成装置、システムの全体機能を説明する図である。本実施例の音声合成装置では、読み上げ対象となる、入力テキスト(漢字かな文)112に加えて、(準)肉声音声ID114を入力として与えると、音声合成処理が実施されて、合成音声113が出力される。この音声合成処理を実現するために、入力解析部106、韻律生成部107、声質考慮波形合成部110、接続合成部111、韻律モデル108、素片データベース(DB)109という通常の音声合成装置が持つ処理単位、機能処理部を備える。これに加えて、本実施例の構成に特徴的な、(準)肉声音声格納部101、韻律や声質面で肉声に準じる合成肉声音声を生成する準肉声音声生成部102、(準)肉声音声を選択する(準)肉声音声選択部103、韻律情報抽出部104、声質情報抽出部105を備え、さらに声質考慮波形合成部110は、声質情報抽出部105で抽出された声質情報に基づいて特別な波形合成処理を行う機能処理部であることを特徴とする。これらの図1Aの装置、システム中の処理単位、機能処理部は、例えば、次に説明する処理部でのプログラム実行で実現可能である。
以下ではまず本実施例を構成する各機能処理部で行われる処理について説明するが、それに先立ち、この全体機能構成を実現する、音声合成装置、システムのハードウェア構成の一具体例を図1Bに示す。なお、このハードウェア構成は、第1の実施例のみならず、後で説明する他の実施例の音声合成装置、システムのハードウェア構成としても利用できるものである。
図1Bの構成において、120はパーソナルコンピュータなどの通常のコンピュータであり、その内部に、内部バス128で相互接続された、処理部である中央処理部(CPU)121、記憶部であるメモリ(MM)122、ネットワーク124に接続されるネットワークインターフェース123、入出力部(I/O)126を備える。また、その外部には、記憶部であるハードディスクドライブ(HDD)125、入出力部126に接続されたスピーカ127を有する。外部記憶部であるHDD125には、動作時にMM122にロードされ、処理部であるCPU121で実行される各種の音声合成用の機能プログラムや、素片データベース(DB)等の各種のデータベースなどが記憶される。入出力部126に接続されたスピーカ127からは、音声合成装置、システムによる音声合成の結果である合成音声が出力される。
さて、図1Aの実施例1の機能構成図に戻り、漢字かな文である入力テキスト112は、「よろしくお願いします」や「今日の天気は晴れかなぁ」などの読み上げ対象テキストである。上記の例は文の数がそれぞれ1であるが、もちろん、複数の文を結合した長いテキストを入力することも可能である。また、図1Aでは漢字かな文としているが、もちろん、英語や中国語などの外国語でも構わない。その場合は、内部の音声合成処理もその外国語に対応したプログラム・データを用いなければならない。
(準)肉声音声ID114は、入力テキスト112の中でどの文字列部分に対してどの(準)肉声音声を使用するかを指定する情報である。図2にIDと対応する文字列、対応する(準)肉声音声を格納した(準)肉声音声格納部101中のデータベース200の一例を示す。ここで、(準)肉声音声とは、上述の通り、通常の肉声音声、或いは韻律や声質面で肉声に準じる合成肉声音声を意味する。本音声合成装置の利用者は、入力テキスト112「今日の天気は晴れかなぁ」とあわせて、(準)肉声音声ID114として例えば「2」という情報を入力する。利用者は図2に示す(準)肉声音声データベース200を参照して、入力テキストの一部分として使用すべき(準)肉声音声を指定するIDを決定する。例えば、「かなぁ」などの口語調表現に対しては、さまざまな韻律(抑揚)で発声した「かなぁ」がありえる。音声合成装置の利用者は、自分が求める韻律を持つ(準)肉声音声を選択し、対応する(準)肉声音声IDとして、「1」又は「2」を指定する必要がある。
入力解析部106は、入力テキスト112と(準)肉声音声ID114を受け取り、その解析処理を実施する。入力テキスト112に対しては、テキストに含まれる単語の発音やアクセントなどを決定する言語解析処理を実施し、解析結果を韻律生成部107に渡す。
一方、(準)肉声音声ID114は、そのまま(準)肉声音声選択部103に受け渡す。後述する別の実施例では、(準)肉声音声ID114が単純なIDで指定されない場合、または(準)肉声音声ID自体が指定されない場合を説明する。その場合は、入力解析部106では、入力テキスト112を解析した結果の中から(準)肉声音声の選択に必要な情報を、(準)肉声音声選択部103に受け渡すことになる。
入力解析部106で実施する言語解析処理はすでにさまざまな音声合成装置で実施されている入力解析部106から出力される情報は、例えば図3に示す情報300のようなものとなる。もちろん、図3の情報300は最小限必要なものであり、さらに多様な情報を付加して出力する場合も考えられる。
韻律生成部107では、入力された解析結果(図3)を用いて、合成音声が持つべき韻律情報を決定する。決定される韻律情報には、例えば、入力テキストを構成する各音素の長さ(ms)・高さ(Hz)・強さ(dB)などがある。韻律生成部107では、この韻律情報を決定するために韻律モデル108を使用する。
図4に韻律生成部107から出力される韻律情報の例を情報400として示す。ただし、本実施例の韻律生成部107は、韻律情報抽出部104から出力された(準)肉声音声の韻律情報をもとに、上記生成された入力テキストの韻律情報400を調整する。この処理については後述する。
声質考慮波形合成部110では、韻律生成部107から出力された図4の韻律情報400をもとに、合成音声データの生成を行う。ここで行われる基本処理は従来の音声合成処理で行われる波形合成処理を用いることができる。波形合成処理では通常、素片DB109と呼ばれる音声データを参照して合成音声を生成する。ここで用いられる技術は、例えば音素単位、音節単位の音声波形データ(素片)を多数、素片DBに格納しておき、それらの中から入力テキストを構成するために最適な素片の系列(並び)を選択し、その後、波形接続処理、または波形重畳処理を施して合成音声を生成するという技術を用いることができる。波形接続処理にはクロスフェードによる重ね合わせ処理などの、波形重畳処理には時間領域ピッチ同期オーバーラッピング処理(TD−PSOLA)などのアルゴリズムを用いることができる。また、この技術以外にも、音素単位、音節単位で音声分析パラメータをDBに格納しておき、入力テキストを構成する音素に対応する音声分析パラメータを取り出して、それを逆フィルタ処理に通すことで音声波形に変換するパラメータ合成技術というものを用いることもできる。近年では、音声分析パラメータをHMM(隠れマルコフモデル)という確率モデルでモデル化し、より滑らかなパラメータ変化を実現する手法なども存在している。
以上で説明した波形合成処理は、声質考慮波形合成部110で行われる波形合成処理の基本処理を説明したものである。本実施例の声質考慮波形合成部110は、声質情報抽出部105から出力された(準)肉声音声の声質情報をあわせて用いて、上記説明した素片選択処理、または音声分析パラメータの調整処理を実施する。これにより、(準)肉声音声に声質が近い合成音声の生成が可能となる。この処理については後述する。
接続合成部111では、波形合成部110から出力された合成音声と、(準)肉声音声選択部103から出力された(準)肉声音声データとの結合処理を行う。入力テキスト112「今日は晴れかなぁ」、(準)肉声音声ID114「2」に対して、声質考慮波形合成部110からは「今日は晴れかなぁ」に対応する合成音声が出力され、同時に(準)肉声音声選択部103からはID「2」に対応する準肉声音声データが出力される。接続合成部111では声質考慮波形合成部110から出力された「今日は晴れかなぁ」の合成音声のうち、「かなぁ」に対応する部分を(準)肉声音声選択部103から出力された「かなぁ」の(準)肉声音声データで置換する処理を実施する。この置換処理は例えば、クロスフェード重ね合わせ処理を用いることができる。また、この置換処理には、本発明者等による特許文献2や、特許文献3で開示されている肉声音声と合成音声の接続処理を用いることもできる。この結果、指定された(準)肉声音声を使用することでより音質を向上させた合成音声113が出力される。
以上は、入力テキスト112を合成音声113に変換するためのメインの音声合成処理の流れについて説明した。以下では、本実施例の音声合成装置に特徴的な機能処理部について説明する。
(準)肉声音声格納部101には、さまざまな表現(日本語文字列)に対応する(準)肉声音声波形データが格納されている。例えば、図5に示すリスト500がこの(準)肉声音声格納部101に格納されているデータの例である。この例では、口語調(話し言葉)音声の文末として使われる表現に対して、対応する(準)肉声音声の断片データが格納されている。もちろん、文末表現に限る必要はなく、肉声音声の品質を必要とするような表現に対してこのように(準)肉声音声データを対応付けて格納しておくことができる。ここで格納されている音声波形には、後の接続合成部111で使用するための付加情報として音声の長さ(ms)と両方の端点での音の高さ(Hz)が格納されている。
準肉声音声生成部102は、肉声音声の品質に準じる合成音声データである準肉声音声を生成するための処理部である。この処理部は、使用できる肉声音声の種類を(準)肉声音声格納部101に格納されているもの以外にも増やせることを目的としている。ただし、(準)肉声音声格納部101に格納されている(準)肉声音声データだけで必要な音質を確保できると判断されれば、この準肉声音声生成部102は必要ない。そこで、準肉声音声生成部102での処理は実施例2において説明する。この本実施例の説明では、この準肉声音声生成部102が動作しないとして説明を続けるが、本実施例の変形として、(準)肉声音声格納部101に格納されている(準)肉声音声データだけで必要な音質を確保できないと判断される場合は、準肉声音声生成部102において、必要とされる、準肉声音声、すなわち韻律や声質面で肉声に準じる合成肉声音声を生成することができる。
続いて、(準)肉声音声選択部103では、入力解析部を通して受け渡された(準)肉声音声ID114をもとに、対応する(準)肉声音声データを(準)肉声音声格納部101、または準肉声音声生成部102から取得する。上述の例、(準)肉声音声ID114として「2」が指定された場合は、図5に示される(準)肉声音声格納部101に格納されたデータの中からID=2に対応する(準)肉声音声データ、およびその付加情報が選択される。ここで選択されたデータ類は韻律情報抽出部104、声質情報抽出部105、および接続合成部111に渡される。
韻律情報抽出部104では、(準)肉声音声選択部103から出力された肉声音声データに対して韻律情報の抽出処理を行う。韻律情報とは音声データを構成する各音素の長さ(ms)、高さ(Hz)、強さ(dB)などの情報であり、従来から幅広く利用されているさまざまな音声信号処理アルゴリズムを用いることで分析することができる。例えば、音の高さ(Hz)の分析には、自己相関関数のピーク検出によるピッチ抽出アルゴリズムや、LPC残差波形の自己相関関数のピーク検出アルゴリズムなどを用いることができる。音の強さに関しても二乗平均値などのパワー分析アルゴリズムなどが存在する。
しかし、音声を構成する音素系列の決定やその時間位置の分析は容易ではない。さまざまな文献で開示されている音声認識アルゴリズムを用いることで、肉声音声データを音素列に変換(書き起こし)して、各音素の時間位置を決定することはできる。しかし、現状の音声認識アルゴリズムでは書き起こしの認識精度はあまり高くない。そこで、(準)肉声音声選択部103から(準)肉声音声データとともに受け渡される文字列表現を音素列に変換し、その時間位置のみを音声認識アルゴリズムで決定する手法をとることができる。現状の音声認識アルゴリズムでも、音素列が確定してさえいればある程度は精度も高く各音素の時間位置の決定は可能である。このようなさまざまな音声信号処理アルゴリズムを用いることで、韻律情報抽出部104は図6に示すような韻律情報を肉声音声データに対して生成する。もちろん、(準)肉声音声格納部101に格納されている音声データリスト500に対して、事前にこの韻律情報の抽出(さらには人手による修正)を行っておき、音声データとともに(準)肉声音声格納部101に格納しておく構成も可能である。
韻律情報抽出部104から出力された図6に示す韻律情報600は韻律生成部107に受け渡される。韻律生成部107は、入力解析部106から渡された入力テキストの解析結果300をもとに合成音声の韻律情報400を生成するが、本実施例の音声合成装置においては、この韻律情報抽出部104から受け渡された肉声音声データの韻律情報600を用いて、合成音声の韻律情報400の調整を行うことを特徴としている。この調整処理により、入力テキスト112をそのまま音声合成した場合の韻律(抑揚やリズムなど)が、指定された(準)肉声音声ID114と組み合わせられた場合にどう変化するかが解析され、最初に生成された韻律情報にその変化を施した調整結果を最終的な韻律情報400として出力する。これにより、上記選択された肉声音声データとスムーズにつながるように韻律情報が調整されることになる。この韻律生成部107での韻律情報調整処理の詳細については後述する。
声質情報抽出部105では、(準)肉声音声選択部103から出力された肉声音声データに対して声質情報の抽出処理を行う。声質情報とは音声データがどのような声色であるかを示す情報であり、例えばケプストラム係数やFFTなどによる周波数分析係数などが該当する。この声質情報の構成に関してはさまざまな形態が考えられ、後述する別の実施例などでいくつかの実施形態について詳細に説明を行う。また、この声質情報抽出部105で抽出される声質情報には少なくとも、肉声音声データの両端付近の声質を示す短時間声質情報(両端それぞれに対して)と、肉声音声データ全域に対する声質を示す全域声質情報の2種類が存在する。前者の短時間声質情報としては、肉声音声データの両端それぞれに対して、ある時間長(例えば20ms)の短時間音声データ(フレームと呼ぶ)を切り出し、その音声に対して上述の声質分析処理を施すことができる。一方、後者の全域声質情報の構成方法にはさまざまなものが考えられる。例えば、最も単純には肉声音声データ全体に対して上述の声質分析処理を施す方法がある。後述する別の実施例ではこの他の構成についても説明する。ここの説明では、この声質情報抽出部105から、短時間声質情報として肉声音声データ両端の短時間フレームケプストラム係数ベクトルが、全域声質情報として肉声音声データ全体に対するケプストラム係数ベクトルが出力されるとして説明を続ける。
声質考慮波形合成部110では、声質情報抽出部105から出力される声質情報(短時間および全域)を受け取り、それを用いた上で合成音声の波形合成処理を行う。すでに上述したように、この波形合成処理では、入力テキストを構成する各音素(音節)に対応する素片データを素片DB109から取り出し、接続コストと呼ばれる素片データ間の音の近さを示す値が素片系列全体で最小となるような素片系列(最適素片系列)を探索する。この接続コストの計算において、前記声質情報(短時間および全域)を勘案することで、指定された(準)肉声音声データと声質がスムーズにつながるような合成音声を生成できるようになる。ここでの処理の詳細は後述する。
以上で、図1Aに示す本実施例による音声合成装置の各機能処理の概要を説明した。この処理の結果、指定された入力テキスト112を音声合成した合成音声を、同じく指定された(準)肉声音声IDに対応する肉声音声データと置換・接続して生成することが可能となり、その合成音声は肉声音声データ部分の声質や韻律をもとに調整されることで、声質や韻律がスムーズに肉声音声データとつながるような合成音声にすることが可能となる。具体例で示すと、「今日は晴れかなぁ」という入力テキスト、および「かなぁ」に対応する肉声音声データとして図5のID=2の音声を指定した場合、出力される合成音声は「かなぁ」の部分に図5の(準)肉声音声データを使用し、その前の部分の「今日は晴れ」に相当する合成音声は、末尾の「かなぁ」の肉声音声データの声質や韻律に合うように調整されたものとなる。結果、末尾の肉声「かなぁ」と韻律や声質が合った(近い)「今日は晴れかなぁ」の合成音声が出力されることとなる。
続いて、本実施例の音声合成装置で特徴的な部分についてその処理フローも含めてより詳細に説明する。
図7、図8に示すフローチャートを用いて、韻律生成部107の詳細な処理の流れの一例を説明する。
韻律生成処理がスタートするとまず、入力解析部106から出力された言語解析結果300を受け取り、その言語解析結果をもとに入力テキストを構成する各音素(音節)の韻律情報(長さ、高さ、強さ)を生成する。この韻律情報生成処理703は、現在利用されているさまざまな音声合成プログラムで実施されている韻律情報生成処理をそのまま利用することができる。そこでは例えば図8のフローチャートに示す処理が実施されている。
図8において、言語解析結果300が入力されると各単語の発音を音素列(または音節列)へと分解する(ステップ802)。この結果、図4の「音素」列に示すような音素記号の系列へと変換される。
つづいて、各音素に対して環境情報ベクトルを生成する(ステップ803)。環境情報ベクトルとは、言語解析によって解析された情報300をもとに、それぞれの位置の音素が持っているさまざまな言語環境情報をベクトル形式で抽出したものである。そのベクトルに含まれる言語環境情報には例えば、その音素が子音であるか/母音であるか(0または1)、その音素が含まれる単語(アクセント句)の音節数(モーラ数)、その音素が含まれる単語の品詞、その音素の直前の音素が子音であるか/母音であるか(0または1)、その音素の直後の音素が子音であるか/母音であるか(0または1)、その音素の直前に単語(アクセント句)の境界が存在するか/しないか(0または1)、その音素の直後に単語(アクセント句)の境界が存在するか/しないか(0または1)などがありえる。
つづいて、上記生成された環境情報ベクトルを参照して、入力テキストを構成する各音素の継続長の決定処理が行われる(ステップ804)。この決定アルゴリズムには、例えば決定木を用いる手法、数量化I類や重回帰分析による回帰直線で予測する手法などさまざまな実施例が存在する。決定木による継続長決定手法を用いる場合は、事前に大量の音声データを用いて機械学習された決定木データを参照する。決定木データには、木のルートノード(始点)から出発して、木の各ノードに設定されている質問(環境情報ベクトルの第N要素が値kよりも大きいか/小さいか等)を、前記抽出された環境情報ベクトルを用いて分岐していき、最終的に到達した葉ノードに設定されている継続長値(ms)を、その環境情報ベクトルを持つ音素の継続長として出力する。数量化I類や重回帰直線による予測の場合も同様に、各音素の環境情報ベクトルと、ある重み係数ベクトルとの間で内積計算することでその音素の継続長を決定する。このような音素ごとの継続長決定処理を、入力テキストを構成するすべての音素に対して実行することで、入力テキスト全体の継続長値(ms)が決定される。
つづいて、各音素の音高(Hz)の決定処理を実施する(ステップ805)。こちらも同様に、決定木や重回帰予測などの手法を用いて、前記抽出された環境情報ベクトルから各音素の音の高さ(Hz)を決定する。最後に、ステップ806で音素ごとの強さ(dB)を決定する。ここの処理も上記と同様の手法を用いることができる。
上記の説明では、継続長の決定処理(ステップ804)を行ってから音高の決定処理(ステップ805)、強さの決定処理(ステップ806)を実施する形態で説明したが、環境情報ベクトルに含まれる情報の種類によっては、先に音高の決定を行ってから継続長を決定するという実施形態や、継続長と音高・強さとを同時に決定する実施形態も考えられる。この順番は本実施例の実施に対しては重要ではない。
以上の図8の処理の流れにより、図7のフローチャートの韻律情報生成処理(ステップ703)は実現できる。この結果、韻律情報生成処理(ステップ703)から図4に示すような音素ごとの韻律情報列が出力される。
韻律情報生成処理(ステップ703)につづいて、韻律情報抽出部104で抽出された(準)肉声音声データの韻律情報600を受け取り、その情報をもとに、前記ステップ703の韻律情報生成処理で生成された韻律情報400の調整処理が実施される。この調整処理は、(準)肉声音声データが持つ韻律(全体的な話速、音の高さ、強さなど)に合うように、前記生成された入力テキストの韻律情報400を調整する処理である。
図7に示すフローチャートでは、まず継続長の調整処理(ステップ705)を実行する。調整の仕方にはさまざまな方法が考えられるが、もっとも簡単には文全体(または息継ぎフレーズ単位など)での平均継続長が、図6に示す(準)肉声音声データの韻律情報600の平均継続長と近くなるように個々の音素の継続長値を増減させる手法がありえる。ここでの増減は、日本語音声においては話速の違いが母音音素に大きく影響するという知見から母音音素の継続長に対してのみ増減処理を行うという方法を採りえる。もちろん、話速変化が子音音素に及ぼす影響と母音音素に及ぼす影響とをそれぞれ定量化して、各々切り替えて増減処理を施すという手法も考えられる。さらには、その(準)肉声音声データを切り出した元となる文音声の対応区間(例えば、「かなぁ」に対応する(準)肉声音声データが元々、「そろそろ終わりかなぁ」という肉声音声から切り出されたものであった場合、「かなぁ」の直前の部分「そろそろ終わり」に相当する部分)の平均継続長を図5に示す(準)肉声音声格納部101に付加情報として格納しておき、その値を用いて調整処理を行うという手法もありえる。
つづいて、全体ピッチの調整処理(ステップ706)を実行する。このピッチ(音高)の調整処理でも同様に、文全体(または息継ぎフレーズ単位など)での音高値が、当該(準)肉声音声データの始点の音高とスムーズにつながるように調整処理が行われる。この調整処理もさまざまな実施形態が考えられるが、(準)肉声音声データと接続される端点に対応する音素箇所にて音高が一致するような調整が必要である(図9a)。これを一致させるには、図9bにあるように、ステップ703で生成された入力テキスト全体に対する音高曲線を上下に平行移動して、接続端点の音素箇所にて音高が一致するようにすれば良い。この平行移動によって、先頭音素などの音高がある一定値よりも低くなった場合には、さらに図9cのように接続端点を回転の中心点として音高曲線を回転させて音高が低くなりすぎない/高くなりすぎないようにすることができる。さらに、より適切には図9dのように音高曲線の始点位置と接続端点位置の高さを固定した上で曲線の上下の幅を拡大・縮小することで音高変化を調整することもできる。この場合の拡大・縮小割合は、(準)肉声音声データ部分の音高変化幅の値をもとに適切な予測手法(回帰予測、決定木等による予測など)を用いて決定する。また、前述のように、この肉声音声データが切り出された元の文音声の対応区間の音高変化幅の値をもとに予測する手法も考えられる。
最後に、上記のようにして継続長や音高(さらには図7のフローチャートでは示さなかったが音の強さ)を調整した結果として、図10に示した韻律情報1000を出力する。
このように図7に示すフローチャートの処理を実行することで、韻律生成部107は、指定された(準)肉声音声IDの(準)肉声音声データとスムーズに韻律がつながる合成音声の韻律情報を生成することが可能となる。
本実施例の音声合成装置で特徴的な部分として、次に声質情報抽出部105の処理についてのフローチャートを示す図11を用いて説明する。
図11に示すフローチャートによる声質情報抽出処理は、上記で既に説明した声質情報抽出部の処理内容とはまた違った実施形態となっている。この声質情報抽出処理では、(準)肉声音声選択部103から出力された(準)肉声音声データに対して、その始端と終端における短時間声質情報を計算するのに加えて、その(準)肉声音声データ全体での全域声質情報の計算を行う。ここでの説明では声質情報の具体的な計算アルゴリズムとしてケプストラム係数ベクトル(例えば16次元)を用いることとする。さらに全域声質情報の構成方法としては、その(準)肉声音声データにおいて声色が特徴的な(全体の声質印象に対して支配的な)時刻位置を事前に複数設定しておき、それぞれの時刻位置での短時間声質情報(ケプストラム係数ベクトル)に指定された重み係数をかけ合わせて、すべての時刻位置での短時間声質情報を加重加算した結果の声質情報(ケプストラム係数ベクトル)を全域声質情報として出力する。
以下、フローチャート図11を用いて、声質情報抽出部105の処理について説明する。
まず処理がスタートすると、ステップ1102にて(準)肉声音声選択部103から出力された(準)肉声音声データを受け取る。つづいて、ステップ1103では、その(準)肉声音声データに対して短時間声質情報を計算する。短時間声質情報はその(準)肉声音声データの始端位置と終端位置の2点において計算される。具体的には始端位置と終端位置(実際にはそれぞれ、無音部をとばして音声パワーがある閾値以上となった箇所)での短時間音声フレーム(例えば20ms)を切り出し、その音声フレームに対してケプストラム分析を実施する。この結果、短時間声質情報として、始端・終端に対応する2個の声質情報(ケプストラム係数ベクトル)が出力される。
つづいて、全域声質情報の計算処理ステップを実施する。
まず、ステップ1106にて出力される全域声質情報ベクトルVを初期化し、つづいてステップ1107にて、当該(準)肉声音声データに対する声質特徴点の数を取得する。ここで、声質特徴点とはその(準)肉声音声データにおいて声質(音色)が特徴的な時刻位置をあらわす。(準)肉声音声格納部101に格納されている(準)肉声音声データそれぞれに対して、図12の情報1200に示すように特徴点の個数、および各特徴点位置の時刻と重みを追加して格納しておく。ステップ1107では、(準)肉声音声選択部103から(準)肉声音声データとあわせて対応する特徴点の関連情報が受け渡されてあり、そこから特徴点の個数を取得することとなる。
ステップ1108もステップ1107と同様に、すでに受け渡されている特徴点関連情報(各特徴点の時刻Tiと重みWi(1≦i≦N))を取得する。
つづくステップ1110からステップ1113までは、変数iを1からNまで増加させながら繰り返して実行される。ステップ1110は、(準)肉声音声データからi番目の特徴点時刻における短時間音声フレーム(例えば20ms)の切り出し処理を実施する。つづくステップ1111でその短時間声質情報(ケプストラム係数ベクトル)を計算し、その値をこの特徴点に対する重みWiをかけあわせた上で出力変数Vに加算していく。
これらのステップを繰り返すことで、当該(準)肉声音声データに指定されている特徴点すべてにおける短時間声質情報を重み加算した結果となる全域声質情報を計算することができる。
そして、最後にステップ1104で、前記計算された始端・終端の短時間声質情報、および全域声質情報(それぞれ16次元のケプストラム係数ベクトル)が声質抽出部105から出力される。
また、図21に示すように、本実施例の全域声質情報の計算方法の別の構成を採ることもできる。図21の例は、(準)肉声音声データに対して、同図に示すように、分割なし(=分割1)、2分割、3分割、…、k分割と音声データ区間の分割を増やしていきながら、それぞれの分割区間で短時間声質情報を計算する。分割数iではi個の短時間声質情報が出力されるが、この中から全体を代表する代表声質情報を決定する。代表点の算出方法には、統計手法である平均値を用いる方法、メディアン(中央値)を用いる方法、さらにはクラスタリング手法による中心クラスタ(セントロイド)を用いる方法などが考えられる。こうして、k個の代表声質情報が計算されると、それら各分割の代表声質情報を纏めて全域声質情報ベクトルであるk次元全域声質情報として出力する。
次に、図13のフローチャートを用いて、本実施例の音声合成装置で特徴的な部分として、声質考慮波形合成部110の処理について説明する。
本フローチャートは素片選択型音声合成(Unit Selection Speech Synthesis)技術の基本的な構成に対して、本実施例に特徴的ないくつかの処理を加えたものとなっている。まず、素片選択型音声合成技術の基本構成を図13により説明したのち、本実施例の音声合成装置に特徴的なステップについてさらに追加して説明を行う。
図13の左側のフローチャートは素片選択手法による波形合成処理の流れを示す。まずステップ1302では、読み上げ文を構成する音素(音節、または特別な単位)ごとに、その素片候補をすべて列挙する。波形合成部110には韻律生成部107から図10に示すような韻律情報1000が渡されている。この韻律情報の音素欄で指定された「KY」や「O」などの音素それぞれに対して、素片DB109の中には複数個の素片候補が存在している。ステップ1302では、この「KY」に対する素片候補集合、「O」に対する素片候補集合というように、読み上げ文を構成する素片単位ごとに素片候補集合を探索・列挙する。つづいて、ステップ1303では列挙された素片候補すべてに対して、ターゲットコストと呼ばれるコスト値を計算する。
図13の中央のフローチャートで、このコスト値の計算処理の詳細を説明している。ターゲットコストの計算では、韻律情報1000で指定されている各音素の長さ・高さ・強さに対して、素片候補それぞれの長さ・高さ・強さがどの程度離れているかに基づいてコスト値を計算する。ここでの計算式はさまざまな実施例がありえるが、本実施例の装置の骨子には大きく影響しないため、ここでは詳細は省く。こうして、韻律情報に設定された値と素片の値との間で長さ・高さ・強さに対するコスト値を計算した後、本実施例に特徴的なステップとして、全域声質に対するコスト計算処理1315を実施する。ここでは声質抽出部105から出力された(準)肉声音声データの全域声質情報と、計算対象の素片が持つ全域声質情報との間でコスト値の計算を行う。(準)肉声音声データの全域声質情報は前記説明したような実施形態のデータである。一方、当該素片が持つ全域声質情報の計算方法については、いくつか実施形態が考えられる。もっとも単純には、素片データを一つの(準)肉声音声データとみなして、声質情報抽出部105での全域声質情報の抽出手法として前記説明した手法を用いることで、素片データに対する全域声質情報を取得することができる。すると、二つの全域声質情報(例えば、16次LPCケプストラム係数ベクトル)の間で距離計算(ユークリッド距離など)を行うことができる。
さらに、その素片データ内の子音音素区間と母音音素区間を区別して、母音音素区間のみに対して前記の全域声質情報の抽出方法を適用するという手法も実現できる。母音音素区間の方が子音音素区間と比較してより多く、話者の声質やそこの音声区間の声質を決定する情報を有しているためである。一般には、素片データを構成する音素の種別に応じて重み値を設定しておき、素片データ全体の全域声質情報に対する寄与を設定するという方法を採ることができる。
また、素片データに対する別の全域声質情報の計算方法として、その素片データが切り出された元々の収録音声において、その素片データが位置するある一定長の音声区間(例えばアクセント句)に対して、声質情報抽出部105ですでに説明した全域声質情報を抽出しておき、素片DB109にその素片データと対応づけて全域声質情報を格納しておくという方法も考えられる。この場合は、ステップ1302で素片候補を探索・列挙する際に、素片に対応づけられている全域声質情報も併せて取り出しておく必要がある。
また、図21に相当する全域声質情報を採用している場合は、ここで計算される素片データに対する全域声質情報もそれに対応した構成にしなければならない。単純に、各素片データに対して前述のk分割によるk次元全域声質情報を算出して、(準)肉声音声データのそれとの間で距離計算を行うという手法もある。しかし、素片データの場合は音声長が(準)肉声音声データの音声長と比べて短い場合が多く、単純に同じ分割数kを用いてしまうと、各分割の分析時間長が短くなりすぎるという問題が生じる。これに対しては、その素片データが切り出された元の収録音声に対して、k分割の全域声質情報の計算を行った上で、分割後の音声長が当該素片データの長さ以下となった時点で、分割範囲を素片データの中だけに限定するという手法を採ることもできる。つまり、分割単位が素片データ長よりも短い場合は素片データ内を短時間声質情報の計算範囲とし、素片データ長よりも分割単位が長い場合は素片データが切り出された元の収録音声を対象として声質情報を計算するという方法である。
また、ここで説明した方法では(準)肉声音声データと、素片データが切り出された元の収録音声の長さの違いは無視していたため、同じk分割でも分割単位の長さが対応しないという問題も生じる。これに対しては、分割数を増やしていくのではなく、分割単位の時間長を例えば、1000ミリ秒、500ミリ秒、250ミリ秒と小さくしていくという方法を採ることができる。これによって、各分割単位での分析時間長が異なるという問題は解決できる。
ターゲットコストの計算ステップ1303の説明に戻ると、上記のように、素片と韻律情報(ターゲット)との間で計算された長さ・高さ・強さに対するコスト値、およびステップ1315で本実施例独自に計算された全域声質情報に対するコスト値を最終的に重み加算して、その素片に対するターゲットコストを決定(ステップ1316)する。以上の処理を、すべての素片候補に対して繰り返す(ステップ1317)ことで、ターゲットコスト計算処理(ステップ1303)は実施される。
つづいて、接続コストの計算処理(ステップ1304)が実施される。このステップの詳細は、図13の右側にフローチャートとして示されている。ここのフローチャートも本実施例の実施によって、素片選択型音声合成における基本構成から変更された部分が存在する。
図13の右側のフローチャートにおける接続コストの計算では、まず読み上げ文の中で隣接する素片候補xとyを一つ取り出す(ステップ1322)。つまり、素片xの直後に素片yが結合されて合成音声が生成されるような素片の組である。読み上げ文を構成する素片単位(例えば音素)ごとに、複数の素片候補が探索・列挙されているため、この組合せの数は膨大なものとなる。この組合せの数を減らす手法にはさまざまなものが開示・実施されているが、本実施例の骨子とは関連しないため、説明は省略する。
ステップ1323では、左側の素片xに対して、その終端位置での短時間声質情報を抽出する。短時間声質情報の構成方法はすでに述べた。この接続コスト計算処理では、前記説明した(準)肉声音声データに対して抽出する短時間声質情報と、ここで抽出する素片の短時間声質情報との間で距離計算する必要があるため、この2種類の短時間声質情報は同じ手法で分析された情報であることが望ましい。
次に、素片yが(準)肉声音声データの先頭箇所に相当する音素(素片単位)であるかどうかにより、処理を切り分ける。まず、判定結果がNOの場合、すなわち、(準)肉声音声データとの接合点ではない場合は、通常の音声合成処理と同一であり、ステップ1325で素片yの先頭位置での短時間声質情報を計算し、ステップ1326で上記計算した素片xとyの短時間声質情報の間での距離を計算する。
一方、素片yの位置が(準)肉声音声データの先頭箇所に相当するものである場合、素片x終端の短時間声質情報と、前記声質抽出部105で計算された(準)肉声音声データの始点の短時間声質情報との間で、距離計算する必要がある。ステップ1327で(準)肉声音声データ始点の短時間声質情報を取り出し、ステップ1328で素片xの短時間声質情報との間での距離を計算する。
最後に、ステップ1329では、計算された短時間声質情報間の距離に対して、ある重み値をかけることで最終的な接続コスト値として出力する。この重み値は一定ではなく、接続コスト計算のフローチャートで左右どちらの経路で計算された値かによって重み値を変更する場合は考えられ、また素片xやyの音素の種類などで重みを変更する実施形態もありえる。
以上の処理を、すべての素片組合せに対して実施する。これにより、すべての素片の組合せに対して、その間での接続コストが設定される(ステップ1304)。
つぎに、最小コストとなる素片系列の探索処理を実施する(ステップ1305)。読み上げ文を構成する音素(音節)ごとに複数の素片候補が列挙されているが、その中から一つを決定する処理がこの処理である。決定処理においては、素片の持つターゲットコスト、および左右の音素(音節)に対応する素片との間での接続コストを足し合わせて、最もコスト和が小さな素片の組合せを決定する。この探索処理は、音声合成技術では広く用いられているビタビアルゴリズムなどを用いて実現することができる。
最後に、ステップ1306では、決定された素片の組合せを用いて、最終的な合成音声の生成処理を行う。ここでは、素片ごと、または素片間で波形重畳処理や波形接続処理と呼ばれる音声信号処理手法を用いることで実現できる。これらの手法にもさまざまな実施形態がありえるが、本実施例の骨子とは関連しないため、説明は省略する。
以上の処理によって、本実施例の音声合成手法および装置では、口語調音声を始めとする韻律や声質の変化が大きい発話スタイルの合成音声を生成する音声合成処理において、発話スタイルに特徴的な部分(口語表現部分)に肉声や肉声に準じる品質の音声データを用いることで全体の音質(肉声感)を向上させることができる。さらには、その(準)肉声音声とその他の合成音声部分との韻律や声質の違いをできるだけ小さくすることができ、従来技術で感じられた合成音声の違和感を軽減することが可能となる。
本実施例では、実施例1で説明した音声合成装置の基本構成を用いて、対話システムなどのように複数の文章を連続して音声合成するシステムの実施例を説明する。
本実施例では、シナリオ等に基づいて、またはユーザの応答に応じてシステムの次の読み上げ文章を決定する仕組み等を介して、複数の文章を連続して、またはユーザの応答と交互に音声合成するシステムを実現する。
図14は、本実施例の音声合成システム全体を説明する図である。この構成では、実施例1の基本構成(図1A、図1B)に加えて、読み上げシナリオ格納部1401、読み上げ文生成部1402、全域声質情報格納部1403を持つ。
以下、図14で新たに追加された機能処理部を中心に処理の流れを説明する。
本実施例では、音声合成システムへの入力(テキストおよび(準)肉声音声ID)はその都度都度の単独の入力ではなく、複数の文章から構成されるシナリオに沿ってその中から順次、音声合成すべき文章が決定される。
読み上げシナリオ格納部1401は、そのようなシナリオデータ(読み上げ文章の流れを指定するデータ)を格納している。この読み上げシナリオ格納部1401は、記憶部の一部に形成可能である。シナリオデータの構成方法にはさまざまな手法が考えられるが、もっとも単純には読み上げ文章および対応する(準)肉声音声IDの組を、シナリオの流れに沿って順番に記入したリストの形態で格納する手法である。この場合、読み上げシナリオ格納部1401には、例えば、図15に示すようなシナリオデータ1500が格納されている。
読み上げ文生成部1402は、読み上げシナリオ格納部1401から順番に読み上げ文と対応する(準)肉声音声IDを取り出し、本実施例の音声合成装置に入力する処理を行う。この読み上げ文生成部1402は、例えば、処理部であるCPUにおけるプログラム実行で実現できることはいうまでもない。
図15に示すようなシナリオデータ1500が格納されている場合であれば、次に音声合成する文と(準)肉声音声IDを取り出して、直前の音声合成処理が終了したタイミングで入力すれば良い。もちろん、もっと複雑な形式でシナリオデータを保存することもできる。例えば、VoiceXML、SSML(Speech Synthesis Markup Language)などの標準化された規格にもとづいたシナリオデータを用いることも考えられる。この場合、それらの規格データの中では読み上げ文のテキストしか指定できないため、その文に対応する(準)肉声音声IDを決定するために、別の対応表(図15もその例)を持つことになる。本実施例の好適な態様にあっては入力テキストを解析し、この図15の対応表を用いて、(準)肉声音声データを決定する。
本実施例のシステムでもう一つ追加された全域声質情報格納部1403は、声質情報抽出部105で抽出された全域声質情報を、毎回、追加・格納していく。ここで格納される全域声質情報の構成方法は特に限定しない。この格納部1403には、少なくとも直前に音声合成された数回分の全域声質情報を格納しておくことが必要である。例えば、図16に全域声質情報格納部1403に格納されている情報の例1600を示す。この情報1600では、現在の読み上げ文を履歴0として過去3回までの読み上げ文に関する全域声質情報が保存されている。また、読み上げ文や対応する(準)肉声音声IDも格納してある。ここに格納しておく必要がある情報も、先の履歴の長さと同じように、声質考慮波形合成処理において、過去の読み上げ文の全域声質情報をどのような処理方法で利用するかに依存する。
声質考慮波形合成部110では、声質情報抽出部105から出力された、今回の読み上げ文に関する声質情報に加えて、全域声質情報格納部1403に格納されている過去の読み上げ文に対する全域声質情報も参照して、今回の読み上げ文に対する合成音声を生成する。図17を用いて説明する。
図17は本実施例における声質考慮波形合成部110の処理フローチャートの一例である。
図17の処理フローチャートは、実施例1の声質考慮波形合成部110の処理フローチャート図13中と、全域声質に対するコスト計算処理の箇所が異なる。図17では、全域声質情報に対するコスト計算処理をさらに詳細ないくつかの処理ステップとして実現する。
ステップ1701では全域声質情報格納部1403に格納されている情報から、直前に音声合成した文に対する全域声質情報(以下、C1と呼ぶ)を取得し、続く1702では声質抽出部105から出力された今回の読み上げ文((準)肉声音声データ)に対する全域声質情報(以下、C0)を取得する。
つづいて、ステップ1703では、現在、ターゲットコストを計算している素片が読み上げ文の中でどこにあるかを示す位置情報Pを計算する。この位置Pとは、直前の読み上げ文における(準)肉声音声データの全域声質情報が、今回の文のどの位置まで影響を及ぼすかを評価するための情報として利用される。この位置Pの計算方法には、例えば、読み上げ文を構成する音素の系列の中で何番目に位置するかを示す値を使用することもでき、また読み上げ文の先頭から何秒目に位置するかを示す値を韻律情報1000から計算して使用することもできる。また、読み上げ文中で先頭からこの素片の占める位置までの間に息継ぎポーズが含まれた場合には位置Pに大きな値を加算するなどする実装形態も考えられる。息継ぎポーズが出現すると、そこで声質に関して大きく変化(またはリセット)することが想定されるため、位置Pの値にもこのような非線形な変化を行うことで、上記の現象を考慮することが可能となる。また別の実施形態では、位置Pとして当該素片が含まれる息継ぎフレーズ、またはアクセント句が先頭から何番目のものであるかを示す値を使用することもできる。全域声質情報の影響は、意味的にまとまった音声単位であるアクセント句、またはフレーズごとに段階的に変わっていくことも考えられる。
ステップ1704では、この位置情報Pに基づいて、全域声質情報C1とC0に対する重み値を計算する。これらの重み値は、直前の文の(準)肉声音声データの影響と、今回の文の(準)肉声音声データの影響のどちらが強いかを決定するための情報であり、上述の位置Pの値をもとに計算される。ここで、重み値の計算方法にもさまざまなものが考えられるが、もっとも単純には、W1=(1−P/Pmax)、W0=(1−W1)という計算手法が考えられる。ここでPmaxは読み上げ文を構成する最後の音素(音節)に対応する素片に対して計算される位置情報Pのことである。この計算式では、読み上げ文の先頭に位置する素片ほど、直前文の(準)肉声音声データの全域声質情報の影響が大きくなり、位置Pが増えるにつれて比例してその影響力が小さくなる、つまり、今回の文の(準)肉声音声データの全域声質情報の影響が大きくなる効果を持つ。この計算式は一例であり、もっとも単純な場合である。より実際的な実施形態では、位置Pの値ごとに(または値の幅ごとに)あらかじめ重み値W1、W0を設定したテーブルを参照する方法がありえる。上記のように、直前文の(準)肉声音声データの全域声質と、今回の文のそれの影響が線形に変化していくことは考えづらい。実際の音声を模擬するためには、あらかじめ調整された重みテーブルを設定しておくことが望ましい。
ステップ1705では、この素片に対する全域声質情報の距離計算で使用する、(準)肉声音声データ側の全域声質情報を修正する。今回の文の全域声質情報はC0であるが、前述の通り、読み上げ文中での位置によって、直前文の全域声質情報の影響が必要な場合がある。そこで、C=W0・C0+W1・C1という式により、距離計算で使用する全域声質情報を計算する。
最後に、ステップ1706では上記計算された全域声質情報Cと、この素片の全域声質情報(構成方法は実施例1にて説明)との間で距離を計算し、それを全域声質に対するコスト値とする。
以上の流れにより、全域声質格納部1403に格納されている、直前の文、さらにはそれより以前の文の全域声質情報を参照して、今回の文に対する合成音声の声質を補正することが可能となる。
この実施例2によれば、複数の文を連続して音声合成するような場合において、直前に音声合成した文の(準)肉声音声データの全域声質と合うように、今回の合成音声の先頭箇所の声質を調整できるようになる。この結果、声質がスムーズにつながる合成音声を生成することが可能となる。