2009年09月04日

STRAIGHTライブラリを使ったUTAU音声セットベースの歌声合成のまとめ。

とりあえず俺のメモ代わりに。

・何をしているのか
 UTAUコアの処理をSTRAIGHTに投げているだけです。他に難しいことは一切していません。STRAIGHTはモーフィングできるので、連続音をモーフィングから作れないだろうかと思ったんです。
 実際の作業ははちゅねのないしょを入れたボカロエディタからテキストVSQを吐き出して、そのトラックデータとUTAUの音声セットを使って音を繋げています。STRAIGHTライブラリでは音声モーフィングが非常に手軽に扱えるので、各ノート間はモーフィングによりできるだけ滑らかに繋げています。苦手な子音はあるみたいです。
 ただ、聞かせるにはどうも周波数の微妙な震えに対してフォルマントがそれほど変化しないという要素が必要らしく、基本周波数が真っ直ぐなので機械っぽいです。要するにもう少し頑張れたろうと言う話。
 何がしたかったかといえば、既存資源を簡単に利用できる形が欲しかった。VSQ突っ込めば歌声のWavが出てくるのが理想。

-UTAUの原音設定ファイルから各波形の解析、STF(StraightFile)形式に。
-テキストVSQの読み込み。
-ノート情報と原音設定から音符の位置と長さを決定。
 --Location=NoteTick-Prepronounce
 --Length=NoteLength+Prepronounce+NextNote'sOverlap
-ノートの長さに合わせて時間伸縮。計算結果を元に切り張りしていく。
-オーバーラップ時にはSpectrumと非周期成分を線形に合成。
-オーバーラップ前(約50ms)から次のノートへのピッチベンド
 --超!適当!!
-PitchBendとPitchBendSensitivityとVibratoの反映
 --Vibratoの式は適当だがVSQにVibratoが入ってれば反映される。
-Dynamicsの反映。ただなんか、変。DYN下げでBREが同時に上がる感じ。
-地味にAccentとDecayに対応してる。ボカロほど効果的ではないが。

結局個別ノートの波形データを作っては繋げてるだけです。

 STRAIGHTに最適化するなら、母音+子音の個別波形を合成する方が多分より滑らかに繋がると思うんだけど、僕は研究的な意味合いより楽器が欲しかったのでUTAU原音設定とVSQでさっくり合成するほうを選びました。
 この方法での利点は、UTAUの音声セットなど既存のデータをSTRAIGHT技術が持つ高品質な合成エンジンを使用して合成できることで、吐き出されたWAVEは若干音が細くなるもののほぼ元のファイルと同じ音質です。その代わり時間とHDD食います。テトが2GBにふとr…じゃない増えました。
 もう少し合成の質的な部分は詰められたかなーとか思いつつ、お預けを食らった犬だったのでちゃっちゃき妥協しました。ラ行ナ行は敵です。

 しかしVocaloidの設定もUTAUの設定もよくできてるなぁと痛感しました。素晴らしいソフトがあったから試せることであって、非常に感謝しております。
posted by HAL at 22:57| Comment(4) | 音声合成 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
はじめまして、バーチャルボーカル音源用シーケンサー「Cadencii」の開発者です。
CadenciiからSTRAIGHTの機能を使えないかと考えています。
VSQ→STRAIGHTの部分を既に開発されているようなので、よろしければコラボしませんか?
Posted by kbinani at 2009年09月06日 04:38
初めまして、Cadenciiにはいつもお世話になっております。

思いつきで書いたプログラムでスパゲッティソースなコードなので書きなおすなりしてソースをアップするつもりではいました。Cadencii上で実行するにはリアルタイムレンダリングに対応するか、簡単な方法ではUTAUのレンダリングと同じようにスクリプトからのコマンドラインに対応するのが早いとか思います。
何はともあれプログラミングはド素人なので、お世話になっているCadenciiにご協力させていただたいとは思うのですが、正直何かできるかなぁというのが先に立ってます(苦笑)
とりあえず今回使用したソースコードをアップしておきますので、何かございましたらharunyann@hotmail.comまで連絡いただければ幸いです。

ソース:
http://hal-the-cat.up.seesaa.net/image/straightSynthesizer.zip
Posted by HAL at 2009年09月06日 09:52
ソースの公開ありがとうございます。
とりあえずコンパイル&試し合成までは出来ました。
どんなパターンでCadenciiに組み込むか検討してみます。
Posted by kbinani at 2009年09月06日 17:50
汚いソースで申し訳ないです。
基本的にはStraightLibraryを使っているので合成は最後にまとめています。この間出たRealTimeStraightを使えばもう少しストレス無く試し合成できるような気もしますが、まだサンプルを見ていないので何ともです。

今のところ解決法が分からないバグとして、ステレオのデータをモノラルで扱うと音全体が(いわゆる低速再生のように)丁度1オクターブ低く再生されるということがあります。重音テトのライブラリでは矢印つきのWaveは正しく合成できません。結局曲中に該当データを使わなかったのでの解決方法はまだ調べ途中です。

何かお手伝いできることがございましたら出来る限り協力いたしますのでなにとぞよろしくお願いします。
Posted by HAL at 2009年09月07日 00:37
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。