(57)【特許請求の範囲】
【請求項１】
音声を分析して得られる調和成分のスペクトルエンベロープを分解して生成するＥｐＲパラメータを音韻ごとに複数記憶する音韻データベースと、ＥｐＲパラメータの時間変化分であるテンプレートを記憶するテンプレートデータベースと、ビブラート音声を分析して得られるＥｐＲパラメータを記憶するビブラートデータベースとを記憶する記憶手段と、
合成する音声のピッチ、ダイナミクス及び音韻の情報と、ビブラートを付加するための制御パラメータとを入力する入力手段と、
音韻データベースから前記入力された情報に基づき読み出したＥｐＲパラメータに、前記テンプレートデータベースから前記入力された情報に基づき読み出したテンプレートを適用してＥｐＲパラメータを生成するパラメータ発生手段と、
ビブラートデータベースから前記入力された制御パラメータに基づき読み出したＥｐＲパラメータから生成したデルタ値を前記パラメータ発生手段で生成したＥｐＲパラメータに加算してＥｐＲパラメータを生成するビブラート付加手段と、
前記入力された情報及び前記ビブラート付加手段で生成したＥｐＲパラメータに基づき音声を合成する音声合成手段と
を有する音声合成装置。
【請求項２】
前記ビブラートデータベースは前記ビブラート音声を分析して得られるＥｐＲパラメータをアタック部、ボディ部のそれぞれについて記憶する請求項１記載の音声合成装置。
【請求項３】
前記ビブラートデータベースは前記ビブラート音声を分析して得られるＥｐＲパラメータをアタック部、ボディ部、リリース部のそれぞれについて記憶する請求項１記載の音声合成装置。
【請求項４】
前記ビブラートデータベースに記憶される前記ビブラート音声を分析して得られるＥｐＲパラメータのボディ部の始端と終端がＥｐＲパラメータの極大値である請求項２〜３のいずれか１項に記載の音声合成装置。
【請求項５】
前記ビブラート付加手段は、前記ビブラートデータベースから読み出したＥｐＲパラメータをその複数の極大値により分割した区間のオフセット値に基づいてオフセット減算処理を行って前記デルタ値を生成する請求項１〜４のいずれか１項に記載の音声合成装置。
【請求項６】
合成する音声のピッチ、ダイナミクス及び音韻の情報と、ビブラートを付加するための制御パラメータとを入力する入力工程と、
音声を分析して得られる調和成分のスペクトルエンベロープを分解して生成するＥｐＲパラメータを音韻ごとに複数記憶する音韻データベースから前記入力された情報に基づき読み出したＥｐＲパラメータに、ＥｐＲパラメータの時間変化分であるテンプレートを記憶するテンプレートデータベースから前記入力された情報に基づき読み出したテンプレートを適用してＥｐＲパラメータを生成するパラメータ発生工程と、
ビブラート音声を分析して得られるＥｐＲパラメータを記憶するビブラートデータベースから前記入力された制御パラメータに基づき読み出したＥｐＲパラメータから生成したデルタ値を前記パラメータ発生工程で生成したＥｐＲパラメータに加算してＥｐＲパラメータを生成するビブラート付加工程と、
前記入力された情報及び前記ビブラート付加工程で生成したＥｐＲパラメータに基づき音声を合成する音声合成工程と
を有する音声合成方法。
【請求項７】
合成する音声のピッチ、ダイナミクス及び音韻の情報と、ビブラートを付加するための制御パラメータとを入力する入力手順と、
音声を分析して得られる調和成分のスペクトルエンベロープを分解して生成するＥｐＲパラメータを音韻ごとに複数記憶する音韻データベースから前記入力された情報に基づき読み出したＥｐＲパラメータに、ＥｐＲパラメータの時間変化分であるテンプレートを記憶するテンプレートデータベースから前記入力された情報に基づき読み出したテンプレートを適用してＥｐＲパラメータを生成するパラメータ発生手順と、
前記入力された制御パラメータに基づきビブラート音声を分析して得られるＥｐＲパラメータを記憶するビブラートデータベースから前記入力された制御パラメータに基づき読み出したＥｐＲパラメータから生成したデルタ値を前記パラメータ発生手順で生成したＥｐＲパラメータに加算してＥｐＲパラメータを生成するビブラート付加手順と、
前記入力された情報及び前記ビブラート付加手順で生成したＥｐＲパラメータに基づき音声を合成する音声合成手順と
を有する音声合成処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、音声合成装置に関し、より詳しくは、ビブラートを付加した歌唱音声を合成することが出来る音声合成装置に関する。
【０００２】
【従来の技術】
歌唱技術の１つであるビブラートは、歌唱音声に対して、周期的なピッチ、振幅のゆれを与える技術である。特に長い音符を歌う場合には、ビブラートをかけないと、音の変化が貧しく、歌唱が単調になりやすいので、これに表情を与える為にビブラートが用いられる。
【０００３】
ビブラートは、高度な歌唱技術であり、綺麗なビブラートを付けて歌うことは難しい。このため、カラオケ装置として、あまりうまくない歌手が歌った歌唱に、自動的にビブラートを付けるような装置が提案されている。
【０００４】
例えば、ビブラート付加技術として、特開平９−０４４１５８号公報には、機械的に、一定の大きさのビブラートを付加するのではなく、入力される歌唱音声信号のピッチ、音量、同じ音の継続時間などの状態に応じて、変調信号を生成し、この変調信号により入力歌唱音声信号のピッチや振幅を変調することによりビブラートを付加している。
【０００５】
上記のビブラート付加技術は、歌唱音声合成においても、一般的に用いられているものである。
【０００６】
【発明が解決しようとする課題】
しかしながら、上記従来技術では、ＬＦＯ（ＬｏｗＦｒｅｑｕｅｎｃｙ Ｏｓｃｉｌｌａｔｏｒ）にて発生させられた正弦波や、三角波などの合成信号をベースに変調信号を生成するので、現実の歌手によって歌われたビブラートの微妙なピッチや振幅のゆれを再現することは出来ず、なおかつ、音色の自然な変化をビブラートに伴わせることも出来ない。
【０００７】
また、従来技術には、正弦波などの代わりに、現実のビブラート波形をサンプリングしたものを使用するものもあるが、１つの波形から、全ての音声波形に対して、自然なピッチ、振幅、音色のゆれを再現することは非常に困難である。
【０００８】
本発明の目的は、非常にリアルなビブラートを付与することの出来る音声合成装置を提供することである。
【０００９】
本発明の他の目的は、音色の変化を伴うビブラートを付与することの出来る音声合成装置を提供することである。
【００１０】
【課題を解決するための手段】
本発明の一観点によれば、音声合成装置は、音声を分析して得られる調和成分のスペクトルエンベロープを分解して生成するＥｐＲパラメータを音韻ごとに複数記憶する音韻データベースと、ＥｐＲパラメータの時間変化分であるテンプレートを記憶するテンプレートデータベースと、ビブラート音声を分析して得られるＥｐＲパラメータを記憶するビブラートデータベースとを記憶する記憶手段と、合成する音声のピッチ、ダイナミクス及び音韻の情報と、ビブラートを付加するための制御パラメータとを入力する入力手段と、音韻データベースから前記入力された情報に基づき読み出したＥｐＲパラメータに、前記テンプレートデータベースから前記入力された情報に基づき読み出したテンプレートを適用してＥｐＲパラメータを生成するパラメータ発生手段と、前記入力された制御パラメータに基づきビブラートデータベースから前記入力された制御パラメータに基づき読み出したＥｐＲパラメータから生成したデルタ値を前記パラメータ発生手段で生成したＥｐＲパラメータに加算してＥｐＲパラメータを生成するビブラート付加手段と、前記入力された情報及び前記ビブラート付加手段で生成したＥｐＲパラメータに基づき音声を合成する音声合成手段とを有する。
【００１１】
【発明の実施の形態】
図１は、本発明の実施例による音声合成装置１の構成を表すブロック図である。
【００１２】
音声合成装置１は、データ入力部２、データベース３、特徴パラメータ発生部４、ビブラート付加部５、ＥｐＲ音声合成エンジン６、合成音声出力部７を含んで構成される。なお、ＥｐＲについては後述する。
【００１３】
データ入力部２に入力される入力データは、特徴パラメータ発生部４、ビブラート付加部５、及びＥｐＲ音声合成エンジン６に送られる。入力データは、合成する音声のピッチ、ダイナミクス、音韻名等に加えて、ビブラートを付加するための制御パラメータを含んでいる。
【００１４】
上記制御パラメータには、ビブラート開始時間（ＶｉｂＢｅｇｉｎＴｉｍｅ）、ビブラート時間長（ＶｉｂＤｕｒａｔｉｏｎ）、ビブラートレート（ＶｉｂＲａｔｅ）、ビブラート（ピッチ）デプス（Ｖｉｂｒａｔｏ（Ｐｉｔｃｈ）Ｄｅｐｔｈ）、トレモロデプス（ＴｒｅｍｏｌｏＤｅｐｔｈ）が含まれる。
【００１５】
データベース３は、少なくとも、音韻毎に複数のＥｐＲパラメータを記録したＴｉｍｂｒｅデータベース、ＥｐＲパラメータの時間変化分である各種テンプレートを記録したテンプレートデータベースＴＤＢ、及び、ビブラートデータベースＶＤＢを含んで構成される。
【００１６】
本実施例のＥｐＲパラメータは、例えば、励起波形スペクトルのエンベロープ、励起レゾナンス、フォルマント、差分スペクトルの４つに分類することが出来る。これらの４つのＥｐＲパラメータは、実際の人間の音声等（オリジナルの音声）を分析して得られる調和成分のスペクトルエンベロープ（オリジナルのスペクトル）を分解することにより得られるものである。
【００１７】
励起波形スペクトルのエンベロープ（ＥｘｃｉｔａｔｉｏｎＣｕｒｖｅ）は、声帯波形の大きさを表すＥＧａｉｎ［ｄＢ］、声帯波形のスペクトルエンベロープの傾きを表すＥＳｌｏｐｅ、声帯波形のスペクトルエンベロープの最大値から最小値の深さを表すＥＳｌｏｐｅＤｅｐｔｈ［ｄＢ］の３つのパラメータによって構成されている。
【００１８】
励起レゾナンスは、胸部による共鳴を表し、２次フィルター特性を有している。フォルマントは、複数個のレゾナンスを組み合わせることにより声道による共鳴を表す。
【００１９】
差分スペクトルは、上記の励起波形スペクトルのエンベロープ、励起レゾナンス、フォルマントの３つで表現することの出来ないオリジナルスペクトルとの差分のスペクトルを持つ特徴パラメータである。
【００２０】
ビブラートデータベースＶＤＢには、後述するビブラートアタック、ビブラートボディ、ビブラートリリースで構成されるビブラートデータ（ＶＤ）セットが記録されている。
【００２１】
このビブラートデータベースＶＤＢに、例えばいろいろなピッチでビブラートを付けて歌われた歌唱音声を分析して得たＶＤセットを用意（記録）しておくとよい。このようにすれば、音声合成時（ビブラート付加時）のピッチに一番近いＶＤセットを使用して、よりリアルなビブラートを付加することが出来る。
【００２２】
特徴パラメータ発生部４は、入力データに基づきデータベース３からＥｐＲパラメータ、各種テンプレートを読み込む。特徴パラメータ発生部４は、さらに、読み込んだＥｐＲパラメータに各種テンプレートを適用して、最終的なＥｐＲパラメータを生成してビブラート付加部５に送る。
【００２３】
ビブラート付加部５では、後述するビブラート付加処理により、特徴パラメータ発生部４から入力される特徴パラメータにビブラートを付加して、ＥｐＲ音声合成エンジン６に出力する。
【００２４】
ＥｐＲ音声合成エンジン６では、入力データのピッチ、ダイナミクス等に基づきパルスを発生させ、該発生させたパルスを周波数領域に変換したスペクトルにビブラート付加部５から入力される特徴パラメータを適用（加算）することにより、音声を合成して合成音声出力部７に出力する。
【００２５】
なお、ビブラートデータベースＶＤＢ以外のデータベース３、特徴パラメータ発生部４及びＥｐＲ音声合成エンジン６の詳細は、本出願と同一出願人による特許出願２００１−０６７２５７及び特許出願２００１−０６７２５８の明細書の実施の態様の項を参照する。
【００２６】
次にビブラートデータベースＶＤＢの作成について説明する。まず、実際の人間がビブラートを付けて発生した音声を、ＳＭＳ（Ｓｐｅｃｔｒａｌ  Ｍｏｄｅｌｉｎｇ  Ｓｙｎｔｈｅｓｉｓ）分析などの手法により分析を行う。
【００２７】
このＳＭＳ分析を行うと、一定の分析周期毎に調和成分と非調和成分に分解された情報（フレーム情報）が出力される。この内の調和成分のフレーム情報をさらに上述した４つのＥｐＲパラメータに分解する。
【００２８】
図２は、ビブラートのかかった音声のピッチ波形を表す図である。ビブラートデータベースＶＤＢに記憶するビブラートデータ（ＶＤ）セットは、図に示すような１つのビブラートのかかった音声波形をビブラートアタック部、ビブラートボディ部、ビブラートリリース部の３つに分け、それぞれをＳＭＳ分析などにより分析することにより作成される。
【００２９】
なお、ビブラートボディ部のデータだけあれば、ビブラートを付加することが可能であるが、本実施例では、上記のビブラートアタック部、ビブラートボディ部の２つ又は、ビブラートアタック部、ビブラートボディ部、ビブラートリリース部の３つを用いることにより、よりリアルなビブラート効果を付加する。
【００３０】
ビブラートアタック部は、図に示すようにビブラートのかけはじめの部分であるので、ピッチがビブラート変化をし始める個所から周期的な変化にいたる直前までの領域である。
【００３１】
なお、ビブラートアタック部の終点は、次のビブラートボディ部との滑らかな接続の為に、ピッチの山の極大値の部分を境界としている。
【００３２】
ビブラートボディ部は、図に示すようにビブラートアタック部に続く周期的なビブラート変化の部分である。このビブラートボディ部を、ビブラートを付加する合成音声（ＥｐＲパラメータ）の長さに応じて、後述するループ方法でループさせることにより、データベース区間長以上の長さのビブラートを付加することが出来る。
【００３３】
なお、ビブラートボディ部の始点及び終点は、前段のビブラートアタック部及び、後段のビブラートリリース部との滑らかな接続の為に、ピッチの山の極大値の部分を境界としている。
【００３４】
また、ビブラートボディ部は、周期的なビブラート変化の部分があれば足りるので、図に示すようにビブラートアタック部と、ビブラートリリース部の間の一部を取り出して用いてもよい。
【００３５】
ビブラートリリース部は、図に示すようにビブラートボディ部に続くビブラートの終端部分であり、ピッチの変化が減衰し始めてから、ビブラート変化がなくなるまでの領域である。
【００３６】
図３は、ビブラートアタック部の１例である。ここでは、ビブラート変化の仕方が最も顕著であるピッチのみを図に示しているが、実際には、音量、音色も変化しており、これらについても同様の手法でデータベース化する。
【００３７】
まず、図に示すようにビブラートアタック部の波形を取り出す。この取り出した波形を、ＳＭＳ分析などで調和成分と、非調和成分に分析し、その内の調和成分をさらにＥｐＲパラメータに分解する。このとき、ＥｐＲパラメータとともに、以下に述べる付加情報もビブラートデータベースＶＤＢに記録する。
【００３８】
ビブラートアタック部の波形から、付加情報を得る。付加情報としては、開始ビブラートデプス（ｍＢｅｇｉｎＤｅｐｔｈ［ｃｅｎｔ］）、終了ビブラートデプス（ｍＥｎｄＤｅｐｔｈ［ｃｅｎｔ］）、開始ビブラートレート（ｍＢｅｇｉｎＲａｔｅ［Ｈｚ］）、終了ビブラートレート（ｍＥｎｄＲａｔｅ［Ｈｚ］）、山の最大位置（ＭａｘＶｉｂｒａｔｏ［ｓｉｚｅ］［ｓ］）、データベース区間長（ｍＤｕｒａｔｉｏｎ［ｓ］）、開始ピッチ（ｍＰｉｔｃｈ［ｃｅｎｔ］）、及び、図示しないが開始ゲイン（ｍＧａｉｎ［ｄＢ］）、開始トレモロデプス（ｍＢｅｇｉｎＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］）、終了トレモロデプス（ｍＥｎｄＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］）等がある。
【００３９】
開始ビブラートデプス（ｍＢｅｇｉｎＤｅｐｔｈ［ｃｅｎｔ］）は、最初のビブラート周期のピッチの最大値と最小値の差分であり、終了ビブラートデプス（ｍＥｎｄＤｅｐｔｈ［ｃｅｎｔ］）は、最後のビブラート周期のピッチの最大値と最小値の差分である。
【００４０】
ビブラート周期とは、例えば、ピッチの極大値から次の極大値までの時間（秒）である。
【００４１】
開始ビブラートレート（ｍＢｅｇｉｎＲａｔｅ［Ｈｚ］）は、開始ビブラート周期の逆数（１／開始ビブラート周期）であり、終了ビブラートレート（ｍＥｎｄＲａｔｅ［Ｈｚ］）は、終了ビブラート周期の逆数（１／終了ビブラート周期）である。
【００４２】
山の最大位置（ＭａｘＶｉｂｒａｔｏ［ｓｉｚｅ］）［ｓ］）は、ピッチ変化の山の極大値を取る時間的位置であり、データベース区間長（ｍＤｕｒａｔｉｏｎ［ｓ］）は、データベースの時間的長さであり、開始ピッチ（ｍＰｉｔｃｈ［ｃｅｎｔ］）は、ビブラートアタック領域の最初のフレーム（ビブラート周期）の開始ピッチである。
【００４３】
開始ゲイン（ｍＧａｉｎ［ｄＢ］）は、ビブラートアタック領域の最初のフレームのＥＧａｉｎであり、開始トレモロデプス（ｍＢｅｇｉｎＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］）は、最初のビブラート周期のＥＧａｉｎの最大値と最小値の差分であり、終了トレモロデプス（ｍＥｎｄＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］）最後のビブラート周期のＥＧａｉｎの最大値と最小値の差分である。
【００４４】
これらの付加情報は、音声合成時に、このビブラートデータベースＶＤＢのデータを変形して、所望のビブラート周期、ビブラート（ピッチ）デプス、トレモロデプスを得るために使用する。また、ピッチやゲインの変化がその領域の平均値を中心に変化せずに、全体的に傾いて変化したときに望ましくない変化を避けるためにも用いられる。
【００４５】
図４は、ビブラートボディ部の１例である。ここでは、図２と同様に、ビブラート変化の仕方が最も顕著であるピッチのみを図に示しているが、実際には、音量、音色も変化しており、これらについても同様の手法でデータベース化する。
【００４６】
まず、図に示すようにビブラートボディ部の波形を取り出す。ビブラートボディ部は、ビブラートアタック部に続いて、周期的に変動する部分である。ビブラートボディ部の始端及び終端は、ビブラートアタック部及びビブラートリリース部との滑らかな接続を考慮し、ピッチ変化の山の極大値の位置とする。
【００４７】
この取り出した波形を、ＳＭＳ分析などで調和成分と、非調和成分に分析し、その内の調和成分をさらにＥｐＲパラメータに分解する。このとき、ＥｐＲパラメータとともに、ビブラートアタック部と同様に上述の付加情報もビブラートデータベースＶＤＢに記録する。
【００４８】
このビブラートボディ部を、ビブラートを付加する長さに応じて後述する手法でループさせてやることにより、ビブラートデータベースＶＤＢのデータベース長以上のビブラート長を実現する。
【００４９】
なお、図示しないが、ビブラートリリース部についても、元音声のビブラートの終わりの部分を、ビブラートアタック部及びビブラートボディ部と同様の手法で分析し付加情報とともにビブラートデータベースＶＤＢに記録する。
【００５０】
図５は、ビブラートボディ部のルーピング処理の例を表すグラフである。ビブラートボディ部のループはミラーループで行う。すなわち、ビブラートボディの開始時に始端からスタートし、終端に達したら逆方向からデータベースを読むようにする。さらに、そのまま始端に達したら再び順方向からデータベースを読み込む。
【００５１】
図５（Ａ）は、ビブラートデータベースＶＤＢのビブラートボディ部の開始及び終了位置をピッチの最大値と最小値の中間とする場合の、ビブラートボディ部のルーピング処理の１例を表すグラフである。
【００５２】
図５（Ａ）に示すようにループ境界から、時間を反転させ、さらにその時間位置でのピッチをループ境界位置での値を中心にひっくり返したピッチとする。ＥＧａｉｎ［ｄＢ］についても、ピッチと同様にその時間的位置でのＥＧａｉｎをループ境界位置での値を中心にひっくり返したＥＧａｉｎとする。
【００５３】
図５（Ａ）のルーピング処理では、ピッチとゲインの値に操作を加えるため、ループ時にピッチとゲインとの関係が変化してしまうため、自然なビブラートを得ることが難しい。
【００５４】
そこで本実施例では、ビブラートデータベースＶＤＢのビブラートボディ部の開始及び終了位置をピッチの山の極大値として、図５（Ｂ）に示すようなルーピング処理を行う。
【００５５】
図５（Ｂ）は、ビブラートデータベースＶＤＢのビブラートボディ部の開始及び終了位置をピッチの山の極大値とする場合の、ビブラートボディ部のルーピング処理の１例を表すグラフである。
【００５６】
図５（Ｂ）に示すように、ループ境界位置から時間を反転させて逆方向からデータベースを読み込むが、図５（Ａ）の場合とは異なり、ピッチ及びゲインの値はそのまま用いる。こうすることにより、ピッチとゲインの関係は保持されるので、自然なビブラートループを行うことが出来る。
【００５７】
次に、ビブラートデータベースＶＤＢの内容を歌唱合成に適用しビブラートを付加する手法について説明する。
【００５８】
ビブラートの付加は、基本的に、ビブラートデータベースＶＤＢのビブラートアタック部の開始ピッチ（ｍＰｉｔｃｈ［ｃｅｎｔ］）、開始ゲイン（ｍＧａｉｎ［ｄＢ］）を基準にしたデルタ値ΔＰｉｔｃｈ［ｃｅｎｔ］、ΔＥＧａｉｎ［ｄＢ］を、元の（ビブラートの付加されていない）フレームのピッチ及びゲインに加算することで行われる。
【００５９】
このようにデルタ値を用いることにより、ビブラートアタック、ボディ、リリースの各接続部での不連続性を回避することが出来る。
【００６０】
ビブラートの開始時にビブラートアタック部を１度だけ使い、続いてビブラートボディ部を使う。ビブラートボディ部は上述のルーピング処理によりビブラートボディ部の時間以上のビブラートを実現する。ビブラートの終了時には、ビブラートリリース部を１度だけ使う。なお、ビブラートリリース部を使用せずにビブラートの終了時まで、ビブラートボディ部をループさせてもよい。
【００６１】
このように、ビブラートボディ部をループさせて繰り返し使うことにより、自然なビブラートを得ることが出来るが、時間長の短いビブラートボディ部を繰り返すよりも、時間長の長いビブラートボディ部を繰り返さずに使用するほうが、より自然なビブラートを得る上では好ましい。つまり、ビブラートボディ部の時間長を長くすればするほど、より自然なビブラートを付加することが出来る。
【００６２】
しかし、ビブラートボディ部の時間長を長くすると、不安定になってしまう。ビブラートは平均値を中心に対照的な揺らぎを持っているのが理想的であるが、実際に歌唱者が長いビブラートを歌うと、どうしてもピッチやゲインがだんだん下がっていき、傾きを持ってしまう。
【００６３】
この場合に、これをこのまま合成歌唱音声に付加すると、全体的に傾きを持った不自然なビブラートになってしまう。さらに、これを上述の図５（Ｂ）に示した手法でミラーループさせると、本来ピッチやゲインがだんだん下がるものが、逆方向に読み込むときはだんだん上がっていってしまうということが起こり、不自然であるとともにループ感が目立ってしまう。
【００６４】
時間長の長いビブラートボディ部を用いて、自然で安定した、すなわち理想に近い平均値を中心とした対象的な揺らぎを持った、ビブラートを付加するために、以下に示すようなオフセット減算処理を行う。
【００６５】
図６は、本実施例におけるビブラートボディ部に対するオフセット減算処理の一例を表すグラフである。図中、上段は、ビブラートボディ部のピッチの軌跡を表し、下段は、データベースのもともと持っていたピッチの傾きを除去するための関数ＰｉｔｃｈＯｆｆｓｅｔＥｎｖｅｌｏｐｅ（ＴｉｍｅＯｆｆｓｅｔ）［ｃｅｎｔ］を表している。
【００６６】
まず、図６上段に示すように、ピッチ変化の山の極大値を取る時間（ＭａｘＶｉｂｒａｔｏ［］［ｓ］）で、データベース区間を分ける。そこで分けられたｉ番目の領域について、下記式（１）により、ｉ番目の領域の時間的中心位置をビブラートボディ部の区間長ＶｉｂＢｏｄｙＤｕｒａｔｉｏｎ［ｓ］で正規化した値ＴｉｍｅＯｆｆｓｅｔ［ｉ］Ｂｏｄｙを求める。これを全ての領域について行う。
TimeOffset[i]=(MaxVibrato[i+1]+MaxVibrato[i])/2/VibBodyDuration…（１）
上記式（１）によって求められた値ＴｉｍｅＯｆｆｓｅｔ［ｉ］を図６下段のグラフにおける関数ＰｉｔｃｈＯｆｆｓｅｔＥｎｖｅｌｏｐｅ（ＴｉｍｅＯｆｆｓｅｔ）［ｃｅｎｔ］の横軸の値とする。
【００６７】
次に、このｉ番目の領域内でのピッチの最大値及び最小値を求め、それぞれをＭａｘＰｉｔｃｈ［ｉ］及びＭｉｎＰｉｔｃｈ［ｉ］として、下記式（２）により、図6下段に示すように、ＴｉｍｅＯｆｆｓｅｔ［ｉ］の位置での縦軸の値ＰｉｔｃｈＯｆｆｓｅｔ［ｉ］［ｃｅｎｔ］を求める。
PitchOffset[i]=(MaxPitch[i]+MinPitch[i])/2-mPitch…（２）
なお、図示しないが、ＥＧａｉｎ［ｄＢ］についても、ピッチと同様に、このｉ番目の領域内でのゲインの最大値及び最小値を求め、それぞれをＭａｘＥＧａｉｎ［ｉ］及びＭｉｎＥＧａｉｎ［ｉ］として、下記式（３）により、ＴｉｍｅＯｆｆｓｅｔ［ｉ］の位置での縦軸の値ＥＧａｉｎＯｆｆｓｅｔ［ｉ］［ｄＢ］を求める。
EGainOffset[i]=(MaxEGain[i]+MinEGain[i])/2-mEGain…（３）
その後、各領域で求められた値の間の値を直線補間で求め、図6下段に示すような関数ＰｉｔｃｈＯｆｆｓｅｔＥｎｖｅｌｏｐｅ（ＴｉｍｅＯｆｆｓｅｔ）［ｃｅｎｔ］を求める。ゲインについても同様にＥＧａｉｎＯｆｆｓｅｔＥｎｖｅｌｏｐｅ（ＴｉｍｅＯｆｆｓｅｔ）［ｄＢ］を求める。
【００６８】
そして、歌唱音声合成時に、ビブラートボディ部の最初からの時間がＴｉｍｅ［ｓ］である時、前述のｍＰｉｔｃｈ［ｃｅｎｔ］、ｍＥＧａｉｎ［ｄＢ］からのデルタ値を、現在のＰｉｔｃｈ［ｃｅｎｔ］、ＥＧａｉｎ［ｄＢ］にそれぞれ加算する。データベースのＴｉｍｅ［ｓ］時間におけるＰｉｔｃｈ［ｃｅｎｔ］、ＥＧａｉｎ［ｄＢ］をそれぞれＤＢＰｉｔｃｈ［ｃｅｎｔ］、ＤＢＥＧａｉｎ［ｄＢ］とし、下記式（４）及び（５）により、ピッチ及びゲインのデルタ値が求められる。
ΔPitch=DBPitch(Time)-mPitch                        …（４）
ΔEGain=DBEGain(Time)-mEGain                          …（５）
そしてこれらの値をさらに、下記式（６）及び（７）により、オフセットすることで、データベースのもともと持っていたピッチ及びゲインの傾きを除去することが出来る。
ΔPitch= ΔPitch-PitchOffsetEnvelope(Time/VibBodyDuration)…（６）
ΔEGain= ΔEGain-EGainOffsetEnvelope(Time/VibBodyDuration)…（７）
最終的に、もとのピッチ（Ｐｉｔｃｈ）及びゲイン（ＥＧａｉｎ）に、下記式（８）及び（９）により、デルタ値を加算して、自然なビブラートの伸ばしを実現することが出来る。
Pitch=Pitch+ΔPitch                                 …（８）
Egain=EGain+ΔEGain                                  …（９）
次に、このビブラートデータベースＶＤＢを使って、所望のレート（周期）、ピッチデプス（ピッチの波の深さ）、トレモロデプス（ゲインの波の深さ）を有するビブラートを得る手法を説明する。
【００６９】
まず、所望のビブラートレートを得るには、下記式（１０）及び式（１１）により、ビブラートデータベースＶＤＢの読み取り時刻（速度）を変更する。ここで、ＶｉｂＲａｔｅ［Ｈｚ］は所望のビブラートレートを表し、ｍＢｅｇｉｎＲａｔｅ［Ｈｚ］及びｍＥｎｄＲａｔｅ［Ｈｚ］は、それぞれデータベースの開始及び終了ビブラートレートを表す。Ｔｉｍｅ［ｓ］は、データベースの開始時刻を０とした時間である。
VibRateFactor=VibRate/[(mBeginRate+mEndRate)/2]      …（１０）
Time=Time*VibRateFactor                            …（１１）
次に、ピッチデプスであるが、下記式（１２）により所望のピッチデプスを得る。下記式（１２）では、所望のピッチデプスをＰｉｔｃｈＤｅｐｔｈ［ｃｅｎｔ］で表し、データベースの開始ビブラート（ピッチ）デプス及び終了ビブラート（ピッチ）デプスをそれぞれ、ｍＢｅｇｉｎＤｅｐｔｈ［ｃｅｎｔ］、ｍＥｎｄＤｅｐｔｈ［ｃｅｎｔ］で表す。また、データベースの開始時間を０とした時間（データベースの読み取り時刻）をＴｉｍｅ［ｓ］で表し、Ｔｉｍｅ［ｓ］におけるピッチのデルタ値をΔＰｉｔｃｈ（Ｔｉｍｅ）［ｃｅｎｔ］で表す。
Pitch=ΔPitch(Time)*PitchDepth/[(mBeginDepth+mEndDepth)/2]…（１２）
次にトレモロデプスであるが、ＥＧａｉｎ［ｄＢ］の値を下記式（１３）によって変えてやることにより所望のトレモロデプスを得る。下記式（１３）では、所望のトレモロデプスをＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］、データベースの開始トレモロデプス及び終了トレモロデプスをそれぞれ、ｍＢｅｇｉｎＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］、ｍＥｎｄＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］で表す。また、データベースの開始時間を０とした時間（データベースの読み取り時刻）をＴｉｍｅ［ｓ］で表し、Ｔｉｍｅ［ｓ］におけるＥＧａｉｎのデルタ値をΔＥＧａｉｎ（Ｔｉｍｅ）［ｄＢ］で表す。
0003709817.tif 000002
以上、ピッチ及びゲインの変化のさせ方を説明したが、これら以外のＥｐＲパラメータのＥＳｌｏｐｅ、ＥＳｌｏｐｅＤｅｐｔｈ等についても、ピッチ及びゲインと同様にデルタ値を加算することにより、元の音声の持っているビブラートに伴う音色の変化を再現することが可能となり、さらに自然なビブラート効果を付与することが出来る。
【００７０】
例えば、元の歌唱合成音声のフレームのＥＳｌｏｐｅ値にΔＥＳｌｏｐｅ値を加算することにより、ビブラートの変化に伴う周波数特性の傾きの変化の仕方がオリジナルのビブラート音声の変化の仕方と同じになる。
【００７１】
また、例えば、Ｒｅｓｏｎａｎｃｅ（励起レゾナンス及びフォルマント）のパラメータ（アンプリチュード、周波数、バンド幅）に、デルタ値を加算することにより、オリジナルのビブラート音声の微妙な音色の変化を再現することが出来る。
【００７２】
このように、各ＥｐＲパラメータについて、上述のピッチ及びゲインと同様に処理することにより、オリジナルのビブラート音声の微妙な音色の変化等を再現することが可能となる。
【００７３】
図７は、図１の音声合成装置１のビブラート付加部５で行われるビブラートリリースを使用しない場合のビブラート付加処理を表すフローチャートである。なお、ビブラート付加部５には、図１の特徴パラメータ発生部４から、常に現在時刻Ｔｉｍｅ［ｓ］におけるＥｐＲパラメータが入力されている。
【００７４】
ステップＳＡ１では、ビブラート付加処理を開始して、次のステップＳＡ２に進む。
【００７５】
ステップＳＡ２では、図１のデータ入力部２から入力されるビブラート付加のための制御パラメータを取得する。入力される制御パラメータは、例えば、ビブラート開始時間（ＶｉｂＢｅｇｉｎＴｉｍｅ）、ビブラート時間長（ＶｉｂＤｕｒａｔｉｏｎ）、ビブラートレート（ＶｉｂＲａｔｅ）、ビブラート（ピッチ）デプス（Ｖｉｂｒａｔｏ（Ｐｉｔｃｈ）Ｄｅｐｔｈ）、トレモロデプス（ＴｒｅｍｏｌｏＤｅｐｔｈ）である。その後、次のステップＳＡ３に進む。
【００７６】
ビブラート開始時間（ＶｉｂＢｅｇｉｎＴｉｍｅ［ｓ］）は、ビブラートをかけ始める時間を指定するパラメータであり、現在時刻Ｔｉｍｅ［ｓ］が、この時間になったときからこのフローチャートの以下の処理が開始される。ビブラート時間長（ＶｉｂＤｕｒａｔｉｏｎ［ｓ］）は、ビブラートをかける時間長を指定するパラメータである。
【００７７】
すなわち、このビブラート付加部５では、Ｔｉｍｅ［ｓ］＝ＶｉｂＢｅｇｉｎＴｉｍｅ［ｓ］からＴｉｍｅ［ｓ］＝（ＶｉｂＢｅｇｉｎＴｉｍｅ［ｓ］＋ＶｉｂＤｕｒａｔｉｏｎ［ｓ］）までの間、特徴パラメータ発生部４から、供給されるＥｐＲパラメータに、ビブラート効果を付与する。
【００７８】
ビブラートレート（ＶｉｂＲａｔｅ［Ｈｚ］）は、ビブラート周期を指定するパラメータである。ビブラート（ピッチ）デプス（Ｖｉｂｒａｔｏ（Ｐｉｔｃｈ）Ｄｅｐｔｈ［ｃｅｎｔ］）は、ビブラートにおけるピッチの揺らぎの深さをセント値で指定するパラメータである。トレモロデプス（ＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］）は、ビブラートにおける音量変化の揺らぎの深さをｄＢ値で指定するパラメータである。
【００７９】
ステップＳＡ３では、現在時刻Ｔｉｍｅ［ｓ］＝ＶｉｂＢｅｇｉｎＴｉｍｅ［ｓ］である時に、ビブラート付加のためのアルゴリズムの初期化を行う。ここでは、例えば、フラグＶｉｂＡｔｔａｃｋＦｌａｇ及びフラグＶｉｂＢｏｄｙＦｌａｇを１に設定する。その後、次のステップＳＡ４に進む。
【００８０】
ステップＳＡ４では、図１のデータベース３内のビブラートデータベースＶＤＢから現在の合成ピッチに適合するビブラートデータセットを検索し、使用するビブラートデータの時間長を取得する。ビブラートアタック部の時間長をＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］とし、ビブラートボディ部の時間長をＶｉｂＢｏｄｙＤｕｒａｔｉｏｎ［ｓ］とする。その後、次のステップＳＡ５に進む。
【００８１】
ステップＳＡ５では、フラグＶｉｂＡｔｔａｃｋＦｌａｇをチェックする。フラグＶｉｂＡｔｔａｃｋＦｌａｇ＝１であればＹＥＳの矢印で示すステップＳＡ６に進む。フラグＶｉｂＡｔｔａｃｋＦｌａｇ＝０であれば、ＮＯの矢印で示すステップＳＡ１０に進む。
【００８２】
ステップＳＡ６では、ビブラートデータベースＶＤＢから、ビブラートアタック部を読み込み、これをＤＢＤａｔａとする。その後、次のステップＳＡ７に進む。
【００８３】
ステップＳＡ７では、上述の式（１０）により、ＶｉｂＲａｔｅＦａｃｔｏｒを計算し、さらに上述の式（１１）により、ビブラートデータベースＶＤＢの読み取り時刻（速度）を計算し、その結果をＮｅｗＴｉｍｅ［ｓ］とする。その後、次のステップＳＡ８に進む。
【００８４】
ステップＳＡ８では、ステップＳＡ７で計算したＮｅｗＴｉｍｅ［ｓ］と、ビブラートアタック部の時間長ＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］を比較する。ＮｅｗＴｉｍｅ［ｓ］が、ＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］を超えたら（ＮｅｗＴｉｍｅ［ｓ］＞ＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］）、すなわちビブラートアタック部を最初から最後まで使用したら、ビブラートボディ部を使用してビブラートを付加するためにＹＥＳの矢印で示すステップＳＡ９に進む。ＮｅｗＴｉｍｅ［ｓ］が、ＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］を超えていなければ、ＮＯの矢印で示すステップＳＡ１５に進む。
【００８５】
ステップＳＡ９では、フラグＶｉｂＡｔｔａｃｋＦｌａｇを０に設定しビブラートアタックを終了し、さらにそのときの時間をＶｉｂＡｔｔａｃｋＥｎｄＴｉｍｅ［ｓ］とする。その後、ステップＳＡ１０に進む。
【００８６】
ステップＳＡ１０では、フラグＶｉｂＢｏｄｙＦｌａｇをチェックする。フラグＶｉｂＢｏｄｙＦｌａｇ＝１であればＹＥＳの矢印で示すステップＳＡ１１に進む。フラグＶｉｂＢｏｄｙＦｌａｇ＝０であれば、ビブラート付加処理は終了したものとして、ＮＯの矢印で示すステップＳＡ２１に進む。
【００８７】
ステップＳＡ１１では、ビブラートデータベースＶＤＢから、ビブラートボディ部を読み込み、これをＤＢＤａｔａとする。その後、次のステップＳＡ１２に進む。
【００８８】
ステップＳＡ１２では、上述の式（１０）により、ＶｉｂＲａｔｅＦａｃｔｏｒを計算し、さらに下記式（１４）〜（１７）により、ビブラートデータベースＶＤＢの読み取り時刻（速度）を計算し、その結果をＮｅｗＴｉｍｅ［ｓ］とする。下記式（１４）〜（１７）は、ビブラートボディ部を前述した手法でミラーループさせるための式である。その後、次のステップＳＡ１３に進む。
NewTime=Time-VibAttackEndTime                        …（１４）
NewTime=NewTime*VibRateFactor                        …（１５）
NewTime=NewTime-((int)(NewTime/(VibBodyDuration*2)))
*(VibBodyDuration*2)                                     …（１６）
if (NewTime>=VibBodyDuration)[NewTime=VibBodyDuration*2-NewTime]…（１７）
ステップＳＡ１３では、ビブラート開始時間からの現在時刻までの経過時間（Ｔｉｍｅ−ＶｉｂＢｅｇｉｎＴｉｍｅ）が、ビブラート時間長（ＶｉｂＤｕｒａｔｉｏｎ）を超えたか否かを検出する。経過時間がビブラート時間長を超えた場合は、ＹＥＳの矢印で示すステップＳＡ１４に進む。経過時間がビブラート長を超えていない場合は、ＮＯの矢印で示すステップＳＡ１５に進む。
【００８９】
ステップＳＡ１４では、フラグＶｉｂＢｏｄｙＦｌａｇを０に設定しビブラートを終了する。その後、ステップＳＡ２１に進む。
【００９０】
ステップＳＡ１５では、ＤＢＤａｔａから、時刻ＮｅｗＴｉｍｅ［ｓ］におけるＥｐＲパラメータ（Ｐｉｔｃｈ、ＥＧａｉｎ等）を求める。この時、時刻ＮｅｗＴｉｍｅ［ｓ］が、ＤＢＤａｔａ内の実データのあるフレーム時間の中間にあたる場合は、時刻ＮｅｗＴｉｍｅ［ｓ］前後のフレームにおけるＥｐＲパラメータを補間（例えば、直線補間）して求める。その後次のステップＳＡ１６に進む。
【００９１】
なお、ＤＢＤａｔａは、ステップＳＡ８からＮＯの矢印に沿って進んできた場合は、ビブラートアタックＤＢであり、ステップＳＡ１３からＮＯの矢印に沿って進んできた場合は、ビブラートボディＤＢである。
【００９２】
ステップＳＡ１６では、前述した手法で、現在時刻における各ＥｐＲパラメータのデルタ値（例えばΔＰｉｔｃｈ又はΔＥＧａｉｎ等）を求める。この時、上述したようにＰｉｔｃｈＤｅｐｔｈ［ｃｅｎｔ］、ＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］の値を反映させてデルタ値を求める。その後、次のステップＳＡ１７に進む。
【００９３】
ステップＳＡ１７では、図８に示すような係数ＭｕｌＤｅｌｔａを求める。ＭｕｌＤｅｌｔａは、ビブラートをかけ始めてからの経過時間（Ｔｉｍｅ［ｓ］−ＶｉｂＢｅｇｉｎＴｉｍｅ［ｓ］）が、ビブラートをかけたい時間長（ＶｉｂＤｕｒａｔｉｏｎ［ｓ］）の、例えば８０％に達したらＥｐＲパラメータのデルタ値を徐々に小さくしビブラートを収束させるための係数である。その後、次のステップＳＡ１８に進む。
【００９４】
ステップＳＡ１８では、ステップＳＡ１６で求めたＥｐＲパラメータのデルタ値にステップＳＡ１７で求めた係数ＭｕｌＤｅｌｔａを乗算する。その後、次のステップＳＡ１９に進む。
【００９５】
上記のステップＳＡ１７及びＳＡ１８での処理は、ビブラート時間長に達した時点での急激なピッチや音量等の変化を避けるために行われる。
【００９６】
このように、ＥｐＲパラメータのデルタ値に係数ＭｕｌＤｅｌｔａを乗算して、ビブラート時間のある位置からデルタ値を小さくしていくことにより、ビブラート終了時の急激なＥｐＲパラメータの変化をなくすことが出来るので、ビブラートリリース部を用いないでも自然にビブラートを終了させることが出来る。
【００９７】
ステップＳＡ１９では、図１の特徴パラメータ発生部４から供給される各ＥｐＲパラメータ値に、ステップＳＡ１６で求めたＥｐＲパラメータのデルタ値又は、ステップＳＡ１８で係数ＭｕｌＤｅｌｔａを乗算したデルタ値を加算し、新しいＥｐＲパラメータを生成する。その後、次のステップＳＡ２０に進む。
【００９８】
ステップＳＡ２０では、ステップＳＡ１９で生成された新しいＥｐＲパラメータを、図１のＥｐＲ合成エンジン６に出力する。その後、次のステップＳＡ２１に進み、ビブラート付加処理を終了する。
【００９９】
図９は、図１の音声合成装置１のビブラート付加部５で行われるビブラートリリースを使用する場合のビブラート付加処理を表すフローチャートである。なお、ビブラート付加部５には、図１の特徴パラメータ発生部４から、常に現在時刻Ｔｉｍｅ［ｓ］におけるＥｐＲパラメータが入力されている。
【０１００】
ステップＳＢ１では、ビブラート付加処理を開始して、次のステップＳＢ２に進む。
【０１０１】
ステップＳＢ２では、図１のデータ入力部から入力されるビブラート付加のための制御パラメータを取得する。入力される制御パラメータは、図７のステップＳＡ２で入力されるものと同様である。
【０１０２】
すなわち、このビブラート付加部５では、Ｔｉｍｅ［ｓ］＝ＶｉｂＢｅｇｉｎＴｉｍｅ［ｓ］からＴｉｍｅ［ｓ］＝（ＶｉｂＢｅｇｉｎＴｉｍｅ［ｓ］＋ＶｉｂＤｕｒａｔｉｏｎ［ｓ］）までの間、特徴パラメータ発生部４から、供給されるＥｐＲパラメータに、ビブラート効果を付与する。
【０１０３】
ステップＳＢ３では、現在時刻Ｔｉｍｅ［ｓ］＝ＶｉｂＢｅｇｉｎＴｉｍｅ［ｓ］である時に、ビブラート付加のためのアルゴリズムの初期化を行う。ここでは、例えば、フラグＶｉｂＡｔｔａｃｋＦｌａｇ、フラグＶｉｂＢｏｄｙＦｌａｇ及びフラグＶｉｂＲｅｌｅａｓｅＦｌａｇを１に設定する。その後、次のステップＳＢ４に進む。
【０１０４】
ステップＳＢ４では、図１のデータベース３内のビブラートデータベースＶＤＢ現在の合成ピッチに適合するビブラートデータセットを検索し、使用するビブラートデータの時間長を取得する。ビブラートアタック部の時間長をＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］とし、ビブラートボディ部の時間長をＶｉｂＢｏｄｙＤｕｒａｔｉｏｎ［ｓ］とし、ビブラートリリース部の時間長をＶｉｂＲｅｌｅａｓｅＤｕｒａｔｉｏｎ［ｓ］とする。その後、次のステップＳＢ５に進む。
【０１０５】
ステップＳＢ５では、フラグＶｉｂＡｔｔａｃｋＦｌａｇをチェックする。フラグＶｉｂＡｔｔａｃｋＦｌａｇ＝１であればＹＥＳの矢印で示すステップＳＢ６に進む。フラグＶｉｂＡｔｔａｃｋＦｌａｇ＝０であれば、ＮＯの矢印で示すステップＳＢ１０に進む。
【０１０６】
ステップＳＢ６では、ビブラートデータベースＶＤＢから、ビブラートアタック部を読み込み、これをＤＢＤａｔａとする。その後、次のステップＳＢ７に進む。
【０１０７】
ステップＳＢ７では、上述の式（１０）により、ＶｉｂＲａｔｅＦａｃｔｏｒを計算し、さらに上述の式（１１）により、ビブラートデータベースＶＤＢの読み取り時刻（速度）を計算し、その結果をＮｅｗＴｉｍｅ［ｓ］とする。その後、次のステップＳＢ８に進む。
【０１０８】
ステップＳＢ８では、ステップＳＢ７で計算したＮｅｗＴｉｍｅ［ｓ］と、ビブラートアタック部の時間長ＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］を比較する。ＮｅｗＴｉｍｅ［ｓ］が、ＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］を超えたら（ＮｅｗＴｉｍｅ［ｓ］＞ＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］）、すなわちビブラートアタック部を最初から最後まで使用したら、ビブラートボディ部を使用してビブラートを付加するために、ＹＥＳの矢印で示すステップＳＢ９に進む。ＮｅｗＴｉｍｅ［ｓ］が、ＶｉｂＡｔｔａｃｋＤｕｒａｔｉｏｎ［ｓ］を超えていなければ、ＮＯの矢印で示すステップＳＢ２０に進む。
【０１０９】
ステップＳＢ９では、フラグＶｉｂＡｔｔａｃｋＦｌａｇを０に設定してビブラートアタックを終了し、さらにそのときの時間をＶｉｂＡｔｔａｃｋＥｎｄＴｉｍｅ［ｓ］とする。その後、ステップＳＢ１０に進む。
【０１１０】
ステップＳＢ１０では、フラグＶｉｂＢｏｄｙＦｌａｇをチェックする。フラグＶｉｂＢｏｄｙＦｌａｇ＝１であればＹＥＳの矢印で示すステップＳＢ１１に進む。フラグＶｉｂＢｏｄｙＦｌａｇ＝０であれば、ＮＯの矢印で示すステップＳＢ１５に進む。
【０１１１】
ステップＳＢ１１では、ビブラートデータベースＶＤＢから、ビブラートボディ部を読み込み、これをＤＢＤａｔａとする。その後、次のステップＳＢ１２に進む。
【０１１２】
ステップＳＢ１２では、上述の式（１０）により、ＶｉｂＲａｔｅＦａｃｔｏｒを計算し、さらに、ビブラートボディ部をミラーループさせるために、図７のステップＳＡ１２と同様に上述の式（１４）〜（１７）により、ビブラートデータベースＶＤＢの読み取り時刻（速度）を計算し、その結果をＮｅｗＴｉｍｅ［ｓ］とする。
【０１１３】
また、ビブラートボディ部のループ回数（ｎＢｏｄｙＬｏｏｐ）を、例えば、下記式（１８）で求める。その後、次のステップＳＢ１３に進む。
0003709817.tif 000003
ステップＳＢ１３では、ビブラートボディに入ってからのビブラートの繰り返し回数がループ回数（ｎＢｏｄｙＬｏｏｐ）以上か否かを検出する。ビブラートの繰り返し回数がループ回数（ｎＢｏｄｙＬｏｏｐ）以上ならば、ＹＥＳの矢印で示すステップＳＢ１４に進む。ビブラートの繰り返し回数がループ回数（ｎＢｏｄｙＬｏｏｐ）以上でない場合は、ＮＯの矢印で示すステップＳＢ２０に進む。
【０１１４】
ステップＳＢ１４では、フラグＶｉｂＢｏｄｙＦｌａｇを０に設定しビブラートボディの使用を終了する。その後、ステップＳＢ１５に進む。
【０１１５】
ステップＳＢ１５では、フラグＶｉｂＲｅｌｅａｓｅＦｌａｇをチェックする。フラグＶｉｂＲｅｌｅａｓｅＦｌａｇ＝１であればＹＥＳの矢印で示すステップＳＢ１６に進む。フラグＶｉｂＲｅｌｅａｓｅＦｌａｇ＝０であれば、ＮＯの矢印で示すステップＳＢ２４に進む。
【０１１６】
ステップＳＢ１６では、ビブラートデータベースＶＤＢから、ビブラートリリース部を読み込み、これをＤＢＤａｔａとする。その後、次のステップＳＢ１７に進む。
【０１１７】
ステップＳＢ１７では、上述の式（１０）により、ＶｉｂＲａｔｅＦａｃｔｏｒを計算し、さらに上述の式（１１）により、ビブラートデータベースＶＤＢの読み取り時刻（速度）を計算し、その結果をＮｅｗＴｉｍｅ［ｓ］とする。その後、次のステップＳＢ１８に進む。
【０１１８】
ステップＳＢ１８では、ステップＳＢ１７で計算したＮｅｗＴｉｍｅ［ｓ］と、ビブラートリリース部の時間長ＶｉｂＲｅｌｅａｓｅＤｕｒａｔｉｏｎ［ｓ］を比較する。ＮｅｗＴｉｍｅ［ｓ］が、ＶｉｂＲｅｌｅａｓｅＤｕｒａｔｉｏｎ［ｓ］を超えたら（ＮｅｗＴｉｍｅ［ｓ］＞ＶｉｂＲｅｌｅａｓｅＤｕｒａｔｉｏｎ［ｓ］）、すなわちビブラートリリース部を最初から最後まで使用したら、ＹＥＳの矢印で示すステップＳＢ１９に進む。ＮｅｗＴｉｍｅ［ｓ］が、ＶｉｂＲｅｌｅａｓｅＤｕｒａｔｉｏｎ［ｓ］を超えていなければ、ＮＯの矢印で示すステップＳＢ２０に進む。
【０１１９】
ステップＳＢ１９では、フラグＶｉｂＲｅｌｅａｓｅＦｌａｇを０に設定しビブラートリリースを終了する。その後、ステップＳＢ２４に進む。
【０１２０】
ステップＳＢ２０では、ＤＢＤａｔａから、時刻ＮｅｗＴｉｍｅ［ｓ］におけるＥｐＲパラメータ（Ｐｉｔｃｈ、ＥＧａｉｎ等）を求める。この時、時刻ＮｅｗＴｉｍｅ［ｓ］が、ＤＢＤａｔａ内の実データのあるフレーム時間の中間にあたる場合は、時刻ＮｅｗＴｉｍｅ［ｓ］前後のフレームにおけるＥｐＲパラメータを補間（例えば、直線補間）して求める。その後次のステップＳＢ２１に進む。
【０１２１】
なお、ＤＢＤａｔａは、ステップＳＢ８からＮＯの矢印に沿って進んできた場合は、ビブラートアタックＤＢであり、ステップＳＢ１３からＮＯの矢印に沿って進んできた場合は、ビブラートボディＤＢであり、ステップＳＢ１８からＮＯの矢印に沿って進んできた場合は、ビブラートリリースＤＢである。
【０１２２】
ステップＳＢ２１では、前述した手法で、現在時刻における各ＥｐＲパラメータのデルタ値（例えばΔＰｉｔｃｈ又はΔＥＧａｉｎ等）を求める。この時、上述したようにＰｉｔｃｈＤｅｐｔｈ［ｃｅｎｔ］、ＴｒｅｍｏｌｏＤｅｐｔｈ［ｄＢ］の値を反映させてデルタ値を求める。その後、次のステップＳＢ２２に進む。
【０１２３】
ステップＳＢ２２では、図１の特徴パラメータ発生部４から供給される各ＥｐＲパラメータ値に、ステップＳＢ２１で求めたＥｐＲパラメータのデルタ値を加算し、新しいＥｐＲパラメータを生成する。その後、次のステップＳＢ２３に進む。
【０１２４】
ステップＳＢ２３では、ステップＳＢ２２で生成された新しいＥｐＲパラメータを、図１のＥｐＲ合成エンジン６に出力する。その後、次のステップＳＢ２４に進み、ビブラート付加処理を終了する。
【０１２５】
以上、本実施例によれば、ビブラートをかけた実音声をＥｐＲ分析したデータを、アタック部、ボディ部、リリース部とに分割してデータベースとして持ち、音声合成時にそのデータベースを使用することで、合成音声にリアルなビブラートを付加することが出来る。
【０１２６】
また、本実施例によれば、元のデータベースに記憶された実音声に基づくビブラートのパラメータ（例えば、ピッチなど）が傾いている場合でも、合成時にその傾きを取り除いたパラメータ変化を与えることが出来るので、より自然な理想に近いビブラートを付加することが出来る。
【０１２７】
また、本実施例によれば、ビブラートリリース部を用いない場合でも、ＥｐＲパラメータのデルタ値に係数ＭｕｌＤｅｌｔａを乗算して、ビブラート時間のある位置からデルタ値を小さくしていくことによりビブラートを減衰させることが出来る。ビブラート終了時の急激なＥｐＲパラメータの変化をなくすことが出来るので、自然にビブラートを終了させることが出来る。
【０１２８】
また、本実施例によれば、ビブラートボディ部の始端と終端はパラメータの山の極大値を取るようにデータベースを作成するので、ビブラートボディ部のミラーループ時に時間を逆読みするだけでパラメータの値を変更せずにビブラートボディ部を繰り返すことが出来る。
【０１２９】
なお、本実施例は、カラオケ装置等においても使用することが出来る。その場合は、カラオケ装置等に予めビブラートデータベースを用意し、入力される音声をリアルタイムでＥｐＲ分析してＥｐＲパラメータを求め、そのＥｐＲパラメータに対して本実施例と同様の手法で、ビブラート付加処理を行うようにすればよい。このようにすると、カラオケに対してもリアルなビブラートを付加することが出来、歌唱技術の未熟な人の歌唱に対して、例えばプロの歌手が歌ったようなビブラートを付加することが出来る。
【０１３０】
なお、本実施例は歌唱音声合成を中心に説明したが、歌唱音声に限られるものではなく、通常の会話の音声や楽器音なども同様に合成することができる。
【０１３１】
なお、本実施例は、本実施例に対応するコンピュータプログラム等をインストールした市販のコンピュータ等によって、実施させるようにしてもよい。
【０１３２】
その場合には、本実施例に対応するコンピュータプログラム等を、ＣＤ−ＲＯＭやフロッピーディスク等の、コンピュータが読み込むことが出来る記憶媒体に記憶させた状態で、ユーザに提供してもよい。
【０１３３】
そのコンピュータ等が、ＬＡＮ、インターネット、電話回線等の通信ネットワークに接続されている場合には、通信ネットワークを介して、コンピュータプログラムや各種データ等をコンピュータ等に提供してもよい。
【０１３４】
以上実施例に沿って本発明を説明したが、本発明はこれらに制限されるものではない。例えば、種々の変更、改良、組合せ等が可能なことは当業者に自明であろう。
【０１３５】
【発明の効果】
以上説明したように、本発明によれば、非常にリアルなビブラートを付与することの出来る音声合成装置を提供することができる。
【０１３６】
また、本発明によれが、音色の変化を伴うビブラートを付与することの出来る音声合成装置を提供することができる。
【図面の簡単な説明】
【図１】  本発明の実施例による音声合成装置１の構成を表すブロック図である。
【図２】  ビブラートのかかった音声のピッチ波形を表す図である。
【図３】  ビブラートアタック部の１例である。
【図４】  ビブラートボディ部の１例である。
【図５】  ビブラートボディ部のルーピング処理の例を表すグラフである。
【図６】  本実施例におけるビブラートボディ部に対するオフセット減算処理の一例を表すグラフである。
【図７】  図１の音声合成装置１のビブラート付加部５で行われるビブラートリリースを使用しない場合のビブラート付加処理を表すフローチャートである。
【図８】  係数ＭｕｌＤｅｌｔａの１例を表すグラフである。
【図９】  図１の音声合成装置１のビブラート付加部５で行われるビブラートリリースを使用する場合のビブラート付加処理を表すフローチャートである。
【符号の説明】
１…音声合成装置、２…データ入力部、３…データベース、４…特徴パラメータ発生部、５…ビブラート付加部、６…ＥｐＲ音声合成エンジン、７…音声合成出力部
【図１】
0003709817.tif 000004
【図２】
0003709817.tif 000005
【図３】
0003709817.tif 000006
【図４】
0003709817.tif 000007
【図５】
0003709817.tif 000008
【図６】
0003709817.tif 000009
【図７】
0003709817.tif 000010
【図８】
0003709817.tif 000011
【図９】
0003709817.tif 000012