ここに女声(Cevio さとうささら)の音声があります。
この声のイントネーションを 別の声(Cevio タカハシ)に近い感じに変換します。
変換後の音声がこれです。
ささらさんの声が、
あ→い→う→え→お→、から、あ↓い↓う↑え↑お↓、という感じになりました。
【はじめに】
女声ラップが圧倒的に不足していると感じる今日このごろ。
ないなら作ってしまえば良いというDIY精神のもとに、
Cevioさんで頑張ることにしました。
Cevioにはしゃべり声合成機能が付いているので、
それを使えばラップが出来そうなのですが、
イントネーションの調節がめんどくさいという問題点があります。
ソングトラックなら、XMLを直接書き換えるという裏技ができるのですが、
トークトラックは、基準の音高に対してどうずらすかということしか、
ファイルに記録されていないのでできません。
さて、どうするか。
Cevioの外側で補正すればよいじゃないか。
ということで、
Cevioで音声合成->どうにかピッチを修正してイントネーションを直す
->うれしい
【シリーズ目標】
・Cevioを使った女声ラップ曲のボーカルトラックを作成する
・Cevioでイントネーションの調節を頑張らない。外側の変換器で頑張る。
【実装】
山梨大の森勢先生が開発した
WORLDという音声分析変換合成システムを使用しました。
UTAUの合成エンジンや、Cevioの分析エンジンにも使われているそうです。
修正BSDライセンスでmatlab版とC言語版が公開されています。
ちなみに類似のものとして、STRAIGHTというものもあります。
音質やライセンス等を考慮して選ぶと良いと思います。
matlab版が公開されていたり、ライセンスが緩めで好みだという2点の理由から
とりあえず、WORLDと戯れてみようと思います。
で、戯れた結果が最初の音声になります。
コードはこちら。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[x, fs] = wavread('vaiueo2d.wav'); | |
[tWav, tFs] = wavread('aiueo.takahashi.wav'); | |
tF0 = Dio(tWav, tFs); | |
[x, fs] = wavread('aiueo.sasara.wav'); | |
f0_parameter = Dio(x, fs); | |
spectrum_parameter = CheapTrick(x, fs, f0_parameter); | |
source_parameter = Platinum(x, f0_parameter, spectrum_parameter); | |
source_parameter.f0 = tF0.f0 * 2; | |
y = SynthesisByWORLD(source_parameter, spectrum_parameter); |
いと、シンプル。
【次回の課題】
・実際の音声に対して適用するとどうなるか
0 件のコメント:
コメントを投稿