オルタナティブ・ブログ > CloseBox & OpenPod >

Mac、iPhone、iPod、歌声合成、DTM、楽器、各種ガジェット、メディアなどの情報・雑感などなど

「ぼかりすでない何か」ことVocaSimがMacで動いた

»

 人生は是勉学の事の和泉聡さんが開発されている「ぼかりすでない何か」がついに公開されました。

VocalSIMulator –ボーカル歌唱のシミュレーション手法の提案

VocaListerner, MikuMikuVoice のアプローチは、肉声から音量と音高を抽出して、VSQファイルに反映させるというものです。肉声のニュアンスを緻密に反映できる特徴を有します。 VocaSim のアプローチは、ボーカルをフィードバック制御システムとしてモデル化し、制御理論で元にPC内でシミュレーションするというものです。元歌不要でボーカルに似せた調整を掛けること可能です。

という、ご本人の解説どおり、VSQファイルがあれば、それをさらにリアルなボーカルに処理することが可能です。つまり、リアルなうたい方にするために、ベタ打ちしたVSQファイルのDYNやPIT波形を手間ひまかけて加工する手間を省いてくれるわけです。

 和泉さんは、このために「ボーカルの脳」「声帯」「ボーカルの耳」のフィードバック制御システムをモデル化し、その制御パラメータと数式をPerlスクリプトに組み込み、VSQを変換するようにしたのです。

 つまり、ソースコード公開されているPerlスクリプトの数値をいじれば、そのボーカルスタイルを自分なりに加工することができる、ということ。

 詳しいことは和泉さんのエントリーを参照していただくとして、わたしは、これがMac OS Xで動作したことをご報告しておきます。

 和泉さんのスクリプトはWindows環境でActivePerlを想定していますが、CPANでMIDI-Perlをインストールし、コードの1行目を「#!/usr/bin/perl -w」に、改行タイプをLFに、エンコーディングをUTF-8にすることで、Macのターミナルから動作させることに成功しました。サンプルを出せたらと思ったのですが、自分の持ち曲ではビブラートが強くなりすぎる感じなので、そのあたりをソースコードの数値を変更して自分のスタイルに合わせられたら公開しようかと思います。

 なお、変換処理は一瞬です。和泉さん、すばらしい技術を公開していただきありがとうございます。

追記:2ちゃんねるのVOCALOID本スレを見ていたら、和泉さんが降臨して、ビブラート調整の方法を伝授してくれていました。感謝。

ビブラートの利きすぎ抑制には、こちらを変更ください。 
------------------------------------------------------------ 
$swingVibratoPit = 0.008 + 0.016 * $phraseVibrato/(2.0*3.141592*2.0); 
if( 0.03 < $swingVibratoPit ) { 
 $swingVibratoPit = 0.03; 
} 
------------------------------------------------------------ 
発音が長いほど、PITの振幅が次第に大きくなり、 
0.03 でリミットが掛かるようになっています。 

しかし、あまりに急峻に振幅が大きくなっていたようなので、
係数 0.016 -> 0.004 などに変えてみてください。
また、振幅最大値も抑え目の 0.02 などにした方がよいようです。
------------------------------------------------------------
$swingVibratoPit = 0.004 + 0.004 * $phraseVibrato/(2.0*3.141592*2.0);
if( 0.02 < $swingVibratoPit ) {
 $swingVibratoPit = 0.02;
}
-------------------------------------------------------------

 ニコニコ動画にベタ打ち、VocaSim、MikuMikuVoiceを比較したビデオをアップしてみました。いいサンプルとは言えないかもしれませんが……。ビブラートは上記の方法で「控え目」数値にしています。

追記:このベタ打ちはMikuMikuVoiceから作ったのでBPMが150固定です。それがビブラートが激しい理由かもしれません。あとで再検証します。

追記:修正した動画をニコニコ動画に投稿しました。こちらのほうがビブラートが自然になった気がします。VSQからBPMを取得して、その小節と音長に対してビブラート回数を割り当てているんですね。だから、前回うまくいかなかったのも当然でした。

Comment(0)