初音ミク

音声分析合成システムWORLDをPythonに移植した

最近,音声の声質変換を行うために,Pythonで使えるライブラリを探していました.matlab上で使える便利な音声分析合成ソフトとして「WORLD」が存在しますが,これをPython上で使おうとすると少々めんどくさいということがありました.そこで,科学研究用のスタンダードなPython開発環境Anacondaがあれば簡単にWORLDを使えるように,matlabのコードを参考にPythonへ完全移植を行っています.とりあえず,基本的な分析→合成までの部分の移植が完了したので,移植したコードがまともに動くかどうかの検証も含めて記事にしてみました.

 

まずは,元の音声データです.この音声データをもとに,パラメータを抽出(分析)し,さらに再合成することで音声データが再構築されます.再構築する際に,パラメータを統計的に変化させて別人の声を生成する方法が,「統計的声質変換」です.

 

次に,正規版(matlab)の変換結果です.

 

最後に,移植版(Python)の変換結果です.

 

聞いてみると,正規版と移植版の違いが分かると思いますが,これは,matlab版で使用されている一部の関数が,pythonでは存在しないために,なるべく同じような挙動をするようにコードを書いていますが,やや違いがでてきてしまうためです.

なお,この移植版を公開していいかわからないため,公開するかどうかは後日決定します.

今後,移植を完成させつつ,声質変換についての記事も書いていこうと思います.BYE!

 

 

–ここから残念なお話–

まず,matlabからpythonに移植するとき,配列のインデックスの書き方の違いで,とても混乱した.matlabでは,配列のはじめは1から始まるが,Pythonでは一般的な言語と同じく0である.これだけなら,数値を1ずらすだけでいいのだが(実際にはそれだけでもかなりのストレスである.),配列から一部の列を取り出す際,例えば,[0,1,2,3,4,5]という配列から[2,3,4]を取り出すとき,取り出しの記述はPythonでは2:5(2番目から5番目の意)となり,Matlabでは3:5(3番目から5番目の意)とかく(Pythonでは,一番最後のインデックスは無視される.)これが非常に頭を混乱させる要因となっており,一番混乱したときは,matlabのコードを実行したときの図を紙に書いて,紙に書かれた内容をPythonコードで書くという所業をしてしまった.

さらに,面倒くさいのが,matlabで定義されている関数を,pythonで移植する場合,matlabの関数となるべく近い挙動をするpythonコードを書く必要がある.pythonで完全一致する関数があればいいのだが(うれしいことに,汎用的なものは共通化されているようだ),すべてきれいに一致するとは限らないので,なるべく同じ計算結果となるようにコードを書く必要があった.

一部は,面倒くさいので放置しているが,聞こえ上は似ているものができたので,まずは良しとすることにした.

 

LOGSPECTROGRAMさむねいる

【MMD】くぁいい雪ミクで『好き!雪!本気マジック』

こんちぁ~す、いつもはMMD実写合成上げてる奴です。
今日はちょうど来月がクリスマスということで、すこし道をそれて普通のMMDの動画を作ってみました。

いやー、しつこいですけどこれが無料で作れる世の中ってすごいですね。

では、また。

MMD実写合成~その4~足元を魅せよう

全然関係ない話なんですが、「KCS」でぐぐったときのKCSのページよりも「MMD実写合成」でぐぐったこの記事の方が上位に来てて割かしビックリしてかなり責任感じています。

で、本題です。前回のを見てない方はまずそちらからの方が話の流れがわかりやすいかとこの記事のシリーズ一覧は記事の一番下にあるタグから見れば見れるはずです。

正直なところ前回までは技術的な分野の話は一切しておらず、これからもMMD技術的な話はしないつもりですが、これからは実写合成というテーマの元「どうすれば実写っぽくなるか」という点をみなさんと共有していきたいと思います。まぁ、ほとんどが僕の考えたアイデアとかでなくネットで拾ってきた情報なのですが…。

それで、今回は「足元を魅せよう」というお題で進めます。要は影をだそうってことです。 まずこちらを見比べてください。 小さくて差がわかんないのでクリックで拡大してください。

影なし MME付き影なし影あり MME付き影有り

MMDでも普通の黒い影なら出せますが、このように映ったような感じの影の出力には働く床こと「WorkingFloor」(リンク先でダウンロードできます)を使います。今回もそれを使ってます。

ちょっとあまりに細かいところなのでわかりにくいかもしれませんが、足元を見るとミクの影が写っているのがわかります。右側の方が影があってよりそこにいる感じがあります。 よく考えてみればこれは当たり前のことです。なぜなら「現実の世界になんか影響与えてる」->「現実世界にいる」という思考がめぐるのはどこも不思議でないからです。

実際には今回の写真には影以外にもいろいろ弄ってはいるんですが影以外の特性はどちらも共通です。さらに欲を言えば影をぼかすなどの処理をしたいところですが正直このくらいの濃さだとあまり効果がありません。

MMDではなくてaviutlという動画編集ソフトを使って適当にぼかしてみたのですがaviutlで合成 結果は散々でした。合成するときにいろいろ風合いを損ねてしまったようです。しかも、足元はぼけてるって言うより消えてる。 そんなこんなで自分でも言ってみたところで結局できてないというダメダメ度。

で、今更感が否めませんが、この「足元を魅せる」っていう考え方は別に僕が最初に言い始めた訳がなく、事実多くの方が実写合成をする上で重要と位置付けているようです。

1に影をつける。
2にごまかす。(゚д゚)! です。

ごまかすっていうのはもうどうにもならん時はそもそも足元が映らないように工夫するということです。

bokeboke<これでOKちゃうん?

足元がなければ人間が勝手に妄想してくれるので楽でいいですがちょい構図が制限されます。さらに言うなら、多少なりとも合成画像としての質の上限は足元を入れる場合の方に軍配が上がりそうです。

最後になりましたが、今回使ったMMEのクレジットを込めた紹介をさせていただいて終わりにします。 詳細については後日語りましょうかね?

PanelLitght(http://www.nicovideo.jp/watch/sm19123817)そぼろ様

SSAO(http://www.nicovideo.jp/watch/sm13796840)mqdl様

ExcellentShadow(http://www.nicovideo.jp/watch/sm19123817)そぼろ様

dAdultshader((´・ω・`)改造dAdultsShader 15.ぬる肌 – 新肌質201502CGⅣ) (http://www.nicovideo.jp/watch/sm25514069)ドゥドゥ様

それではまた

MMD実写合成~その3~エフェクトを使おう

みなさんこんにちは、どうもです。前回のその2をご覧になってない方はまずはそちらからどうぞ

前回はMMDのすごさを実感したわけですが、今回はその機能をさらにフルにつかっていこうと思います。

元来、MMDとはただの「ミクちゃん躍らせたい」ツールなので、機能としてはモデルを操作するためのもののみでした。もちろん実写合成のことを前提になんかしてないでしょう。なので、実写合成用にいろいろいじっていい感じにしたいところですが、実際、何をいじればいいんでしょうかね?

そこで出てくるものの一つが「MME」というツールです。
MMEとはMiku Miku Effectの略称で、要はMMDにエフェクトつけてくれる優れものです。しかもタダで。
で、その性能なんですが以下をご参照ください。画像はクリックで大きい画像がみれます。

effectなしMMEなし

effectありMMEあり

どうですか。差を感じるでしょ。

もう一度言います。これ、タダです。

いやー、いい時代。っと、こんな感じでいい感じにしてくれるMME様なのですが、MMDに標準で搭載されているわけではありません。というかMMEそのものはMMD開発者の樋口優氏が開発した訳ではなく、舞力介入P氏によって開発されたものなので当たり前といえば当たり前なのですが…。

失礼、閑話休題。

ということでMMEを使うにはそれなりに準備が必要です。最初はそれがおっくうに感じるかもしれませんが、既にそれ関連の記事は大量にありますし、見てわかる通りあるとないとじゃ全然違うのでMMDやるならそれこそ標準で入れるくらいの気持ちでしょうね。

さりげなく先ほど「MME」にリンク入れときましたがそれを見れば大体はわかるでしょう。ただ、最後の方の使い方のあたりは動画の通りでももちろん使えますが、今はもっと便利な使い方ができます。

MMEを入れるとMMDに表示されるようになる「MMEffect」ボタンから「エフェクト割り当て」を選べばいいのです。
それで任意のモデルに任意のエフェクトをかけられるようになります。具体的な動作や使用はエフェクトごとに異なるのでREADMEなどをよく読んで見てくださいね。

それではまた

MMD実写合成の道~その2~

前回の記事からだいぶ時間が経ちましたが、続きを書きたいと思います。

あの動画を見て「実写合成したい」と思ったはいいですが、僕は当時MMDすら触ったこともなく、そもそも実写合成って何すりゃいいのかすらもわからん状態でした。

まず、MMDの使い方についてですがこれは他のサイト様の方で解説されてるところも沢山あると思うのでここでは説明を省かせていただきます。

MMDのはじめかた

なんでMMD使うかなんですが、単純に素材が大量にフリーで出回っていること。これが大きいですね。最近は「金払わなくていいの?」ってレベルのものがゴロゴロしてますからそれだけで使う価値があると思います。

で、大量に素材だけはあるMMDなのですが肝心のアイデアの方が僕にありませんので最初は適当に「とりあえず写真撮ってそれを背景において躍らせればいんでしょ」ってことで作ったのが次の動画。

 

なんつ~か、いろいろ稚拙ですよね。

もし読者様にこれがよく見えたとしたらそれはモデルとモーションのの出来の良さに起因するものであり、僕のした部分はまったく関係ないです。

まず、影の色。
これがあまりにも明るい。これじゃ、陰なのか光ってるのかって感じです。

次に後ろの人間がまったく動いていない。
これはそもそもテストなので、そこはあんまり考えてなかったのですが、やはり後ろに男が座ってるのにまったく動かないと不自然さがぬぐえません。

他にもまわりは本物なのにミクだけどう見てもアニメ調(MMDではデフォルトでアニメ調に描画されます)。
ここら辺も変えたいところです。

まぁ、それでもそれなりに見えてくるのはやはりMMDパワーというところなんでしょうか。

MMD実写合成への道

いきなりですが、この動画をご覧ください。

どうでしょう?

「初音ミク」を御存じない方もいらっしゃるとは思いますが、それにしてもこのモデル。めちゃくちゃ背景の実写に馴染んでますよね。そこに燃えるもとい萌えませんか?

この動画を見て、僕は感じたんです。

「これを日吉でやらなアカン」

そんな訳で僕のMMD実写合成の道が開始されるのでした。