VOCALOID モドキを作ってみる -- 第2報 --

歌うTiMidity の発案者の木本雅彦さん http://www.earthlight.jp/
こえうぇぶ で声素材の提供をされている,さかいれいしうさん http://www.reisiu.info/
にお知らせしたところ,歓迎していただけたました.やっほー.


さて,第2報です.
第1報で興味をもってくれたのぐちくんが,それぞれの声素材の基本周波数を推定するプログラムを Python で書いてくれました.ありがとー!
Messenger でやりとりしながら,若干の工夫をしたところ,かなりきれいに推定できました.
それを基にして,TiMidity++ のコンフィグファイルで,声素材それぞれの tune パラメータを調整しました.
コンフィグファイルの書き方の参考にしたサイトは,ここです.
http://timidity.s11.xrea.com/files/doc-cfgj.htm

tune = log a の F/F0

F: 目標周波数 (hz)
F0: 素材の基本周波数 (hz)
a: 2^(1/12)

tune パラメータを調整したコンフィグファイル koeweb.cfg をここに置いておきます.
http://noike.info/~kenzi/cgi-bin/koeweb.cfg

さて,第1報のときに作った MML を一度使って,調整前と後との違いを聴き比べてみましょう.

調整前:




調整後:




おぉぉ! かなりイイトコいってる.
ピッチがぴっちり合ってる.
「荒城の月」のデータが向上した!

次は,Soundfont 化と,Velocity 調整かな.
木本さんに,「MML2MP3をWeb上に作っても面白いかと思います」と,アイディアをいただいたので,それも面白そう.
あとは,
こえうぇぶ にある,「ささやき声」にも挑戦したいところ.


ということで,第3報もあるかもしれません.

--

VOCALOID モドキを作ってみる -- 第1報 --
http://cancoffee2.at.webry.info/200709/article_27.html

この記事へのコメント

のぐち
2007年10月01日 05:06
timidity?のリサンプリングアルゴリズムは変更できるのかな?この先の音質向上を目指すなら、ここが肝でしょう。
のぐち
2007年10月01日 07:26
PCMの最大振幅が出たところ以後でfftを掛けるようにしたら、全サンプルにfftをかけたのより1Hzほど高めの周波数が出てきた。人間の声は立上りは低い周波数になる傾向があるのでしょう。これでもうちょっと音程が修正されると思います。
ちゃっぴいの兄
2007年10月05日 21:00
私の耳じゃあ数Hz程度の違いは聞き取れないです^^;

ビブラートとかできるようになるとかっこいいかもですねー。
続報をwktkしながら楽しみにしております♪
2007年10月14日 16:50
のぐちくんは,特にどこからどこへの音程が気になる?
調整をする場合は,そこに注目して調整したほうがよさそう.
2007年10月14日 17:08
ちゃっぴい兄さん,MIDI のコマンドは全部使えるようになると思って,楽しみにしておいてください.
ymmttak さんにもよろしくー.
Kou
2007年10月17日 11:31
はじめまして.
現在似たようなテーマで研究していて,ちょうど作れないかなーと思っていたので,記事を読んでみてびっくり,でした.

リサンプリングの問題は,あらかじめリサンプリングした波形をPatchに登録する方法である程度カバーできないかな,とか思いました.
Patch内の波形が多ければ(例えば1オクターブに3つくらい波形を登録するとか)Timidity側でのピッチシフト量も減りますし….

patch内部で波形の数と,それぞれの基本周波数と,それを変換できる上限・下限の周波数を定義できるので,それを考慮してPatch設計するだけで結構変わってきそうな気がします.
2007年10月20日 18:04
Kou さん,はじめまして.
今後もどうぞよろしくー.
先に精度よくリサンプリングしておける場合は,そのほうがよいと思います.
ただ,お気づきだと思うのですが,本質的な解決方法ではないので,劇的な向上は望めないのではないかとみています.
また,歌声の場合は,個々の音素の音高の正確さよりも,直前の音素とのつながりのなめらかさのほうが,人間には意識されやすいと思います.
ですから,もしきちんと取り組まれるのであれば,そこそこの音高の正しさを得られたあとは,各音素をなめらかにつなぐほうに注力されたほうがよいと思います.
研究としても,そちらのほうが成立しやすいでしょう.
VOCALOID にも,各音素間をなめらかにつなぐ仕掛けが入っています.
2007年10月20日 18:09
"VOCALOIDモドキ" ではたいそうなことをするつもりが全然なくて(^^;),できあいのものを利用し,調整・加工することで,ある程度のことができてしまえば,私個人としては満足です.
それよりも,ツールとして公開したときに,ユーザがおもしろい使い方をしてくれることのほうに期待しています.
もし,声の提供があったら,積極的に組み込みたいと思っています.
現段階では,自由に使える声素材の少なさが,私のような素人には辛いところです.
2007年10月20日 18:20
あとは,楽器音のサンプリング・再生と違って,「フォルマント」を意識するとよいのかもしれません.
ホーミーという歌唱法では,二つの基本周波数を同時に発声させられる(感じられる)のは,なぜか,など.

フォルマントに着目した製品を,ヤマハは発売していたことがありましたが,あまり売れませんでしたね.
あれは,VOCALOID と違って,サンプリングすることなしに,計算することによって発声させています.
製品化していない技術も山ほど持っているでしょうから(特許化しているでしょうから),そこから調べ始めるというのも,論文から調べる以外の,もうひとつの方法だと思います.
のぐち
2007年10月21日 05:39
csoundで日本語フォルマントをコーディングするということをやっている人が居た。母音だけだけど、ちゃんとあいうえおに聞こえたよ。こういう計算で発生させる声に声質を乗せるにはどうしたらいいんだろう。後段でエフェクターを通すだけでできるのだろうか。フォルマントの周波数構成で男とか女とか年齢とかは制御できるみたいだけど、伸びのある声とかハスキーとか声質はどうしたらいいのかね?
2007年11月13日 00:41
フォルマント、なつかしー。
大学の時に音声認識・合成とかやってました。
音声の生データ(PCM)から、認識に使える特徴抽出として使ってました。(あの頃はニューラルネットワークが盛んで、大学院の時はHMMが出始めだったかな)

逆に、周期的なパルスを機械的に作って、抽出した情報(いわゆるフィルター)に食わせると音声になって出てきたりして。
パルスを変えると歌みたいにも出来たりして面白かった。。。