2008-05-10

初音ミクのマネをする藤田咲のマネをする初音ミクのマネを初音ミクにさせてみた 初音ミクのマネをする藤田咲のマネをする初音ミクのマネを初音ミクにさせてみた - Nao_uの日記 を含むブックマーク はてなブックマーク - 初音ミクのマネをする藤田咲のマネをする初音ミクのマネを初音ミクにさせてみた - Nao_uの日記 初音ミクのマネをする藤田咲のマネをする初音ミクのマネを初音ミクにさせてみた - Nao_uの日記 のブックマークコメント

今日は自転車で出かける予定だったのに雨が降ってたので、音声データから音の高さ情報を抽出したものをVOCALOID Editerにピッチ情報として出力することで、抑揚を変化させる実験をやってみた。

今回は以下のサイトの情報を参考にさせていただいた。

Waveファイルからピッチ情報を取り出してSMFに変換するやり方が紹介されていて、駅の案内放送を喋らせてみたサンプルが置かれている。

Pythonから呼び出せる音声処理API。基本周波数を抽出したり、その結果をフィルタリングするのに使用。かなり高機能なので、他にもいろんな情報が取れるみたい。Pythonはもう何年も触ってなくてすっかり忘れてて困った。言語自体は嫌いじゃないけど触る機会があまりない。

音のピッチを変えるだけでどのくらい元のデータに近づけられるのかが知りたくて試してみることにした。完全に再現できたら同じものになるはず、というのがわかりやすそうだったので、まずは初音ミクの喋りのデータから抽出してみたんだけど、かかった手間の割にはあまりうまくいってない感じ。


とりあえずやってみてわかった事:

  • 抑揚の強い、歌に似たタイプの音声であればそれなりに聞けるけど、普通の喋りに対してはピッチ修正だけでは今ひとつ効果は薄そう。
  • ピッチの波形は「ぼかんないんです」のVSQを見てる限りでは、ビブラートを抽出する分には十分な精度がありそうだけど、早い喋りになるとそのままではいろいろ問題があるかも。
  • 音の高低を機械的に得ることができても、現時点ではそこから先の歌詞の入力や調整は手作業でやるしかない。ピッチの高低と音声を目分量で合わせてるので、元の音とずれてる感じがする。もっとうまく調整すればもう少しはまともに聞けるものができそうだけど、微調整が大変。
  • それでも0から手作業で同じものを作るのと比べればだいぶマシか。絶対音感がない人でもずっと楽にそれっぽいものを作ることはできそう。

  • SMFからの変換の過程の精度の問題で、PITのカーブが量子化されたせいで起こるざらざらしたノイズ感が気になって補間してみると、ノイズが減るのと同時に生っぽさも消えていった。モーションのキャプチャーと似てる。ノイズを気にして丸めすぎるとなんだかヌルヌルした動きになって人間らしさが消えてしまい、キャプチャーの意味がなくなっていく、みたいな。
  • 抽出元の音声データが声のみの単純なデータであればそれなりに正しいピッチ情報が得られるのだけど、休憩のアナウンスみたいに背後にざわめきなどのノイズが入ってしまっているデータでは誤差が大きく、元データにフィルタをかけてざわめきのノイズを減らしたりしないとちゃんとした基本周波数が得られなかった。

  • VOCALODDエンジンはベースの音の高さによって違う声のデータを使いわけることで自然に聴こえるように作られているので、PITのみであまり極端に音を上げ下げしてしまうと、おかしな声になってしまう。それを防ぐため、今回はデータごとに抽出した周波数の分布を見て、基準にする音の高さを試行錯誤で決めている。
  • 譜面上の音符の高さとPBSを固定してPITのみで音高を変える今回のやり方は、音の上下の移動範囲が少ない喋りにはある程度対応できても、歌を歌わせようとするとたぶん破綻する。
  • 音の高さにあわせてベースの音符とそれにあったピッチ情報を出力したり、フォルマントの分析結果を使って自動的に歌詞データを出力できるようにしたりすれば、もっと少ない労力で喋らせたり歌わせたりすることができるんじゃないかと思うんだけど、どうやればいいのか思いつかないし、できたとしてもかなり大変そう。
  • あとはDYN(ダイナミックス)とかVEL(ベロシティ)も元の音声データから引っ張ってこれるとより人間に近い声が出せるようになりそう。DYNはともかくVELの方は何からどう情報を取ってくればいいのか見当もつかない。

自宅サーバが死んだままなので動画を作ってアップロードしてみたんだけど、結果的にはプログラムや音の調整よりも動画を作る方が時間と手間がかかってしまった。なんだか本末転倒な感じでいろいろと微妙。