2015/05/17(日) [n年前の日記]
#1 [ruby] DXRuby + wavefile でリップシンクの実験
リップシンクと言っても、日本のアニメのソレだけど。口を閉じる、口を半分開く、口を開くの3枚を、3コマ撮りでランダムっぽく表示するソレ。音声データ(wavファイル)の音量だけを見て、パクパクさせてみて、本当にそれらしく見えるのか実験。しかもRubyで。Rubyで。大事なことなので2回言いました。
安直というか、簡単なことしかしてないのに、結構なんだかそれっぽくなった。まあ、GIFアニメだけでは音が無いから、らしさが伝わらないと思うけど…。
とりあえず、スクリプトソース、wavファイル、画像ファイルをzipにまとめて置いときます。lipsync_test.rb がスクリプトです。
_lipsync_test_20150522.zip
ソースも、画像も、CC0 / Public Domain ってことで。どうせこれだけじゃ何かに使えるわけでもないし。音声データ(wavファイル)は SofTalk (AquesTalk)で出力したファイルなので、ライセンスはどうなるのかちと分かりません。 *1
ちなみに、wavファイルのフォーマットは、サンプリング周波数 48000Hz(48KHz)、モノラル、16bitで決め打ちなので、別のwavを読ませたい時はフォーマット変換等よろしくです。 _Audacity や _SoundEngine Free を使えば変換できるはず…。
動作確認した環境は以下。
安直というか、簡単なことしかしてないのに、結構なんだかそれっぽくなった。まあ、GIFアニメだけでは音が無いから、らしさが伝わらないと思うけど…。
とりあえず、スクリプトソース、wavファイル、画像ファイルをzipにまとめて置いときます。lipsync_test.rb がスクリプトです。
_lipsync_test_20150522.zip
ソースも、画像も、CC0 / Public Domain ってことで。どうせこれだけじゃ何かに使えるわけでもないし。音声データ(wavファイル)は SofTalk (AquesTalk)で出力したファイルなので、ライセンスはどうなるのかちと分かりません。 *1
ちなみに、wavファイルのフォーマットは、サンプリング周波数 48000Hz(48KHz)、モノラル、16bitで決め打ちなので、別のwavを読ませたい時はフォーマット変換等よろしくです。 _Audacity や _SoundEngine Free を使えば変換できるはず…。
動作確認した環境は以下。
- Windows7 x64
- Ruby 2.0.0 p645 mingw版 (Rubyinstaller版)
- wavefile
- dxruby
◎ 感想とか妄想とか。 :
エロゲではこうやって口パクさせてるらしいから、わざわざ実験しなくても実績はあるというか、それらしくなることは当の昔に分かってるのだろうけど。ていうか、大昔のゲーム機、例えばPCエンジンのCD-ROMタイトル等でこういうことやっていても全然おかしくないよなと。だから、「何故に今頃こんなことを」「こんな古い物を…父さん、酸素欠乏性にかかって…」と言われそうだけど。
それでもとりあえず、RubyのようなLL( _lightweight language、軽量プログラミング言語 ) でも、wavファイルを読み込むライブラリさえあれば、こういうソレを気軽に実験できることが分かったので、まあいいやと。
もしかすると、JavaScriptに詳しい人なら、Webブラウザ上でやれたりするのかしらん。今時のブラウザは、音声データをサンプル値単位でアレコレできるAPIが実装済みだった記憶もあるし。
ちなみに、3コマ撮りじゃなくて1コマで、24fpsじゃなくて60fpsで試したら、気持ち悪くて見てられませんでした。フレームレートが上がったら、こんな安直なやり方じゃ全然ダメだなと。何を発音してるか抽出して合わせていかないとおそらく自然に見えないのだろうなと。日本のアニメって、作業の省略化・省エネ化という点でノウハウあるんだなー、と再認識して感心しました。イイ感じの落としどころを見つけたもんだなあ…。
それでもとりあえず、RubyのようなLL( _lightweight language、軽量プログラミング言語 ) でも、wavファイルを読み込むライブラリさえあれば、こういうソレを気軽に実験できることが分かったので、まあいいやと。
もしかすると、JavaScriptに詳しい人なら、Webブラウザ上でやれたりするのかしらん。今時のブラウザは、音声データをサンプル値単位でアレコレできるAPIが実装済みだった記憶もあるし。
ちなみに、3コマ撮りじゃなくて1コマで、24fpsじゃなくて60fpsで試したら、気持ち悪くて見てられませんでした。フレームレートが上がったら、こんな安直なやり方じゃ全然ダメだなと。何を発音してるか抽出して合わせていかないとおそらく自然に見えないのだろうなと。日本のアニメって、作業の省略化・省エネ化という点でノウハウあるんだなー、と再認識して感心しました。イイ感じの落としどころを見つけたもんだなあ…。
◎ 2015/05/22追記。 :
数日後に見返したら絵の下手さにダメージを受けて。SDキャラにすれば誤魔化せるんじゃないかと思いついたので、絵を描き直して差し替え。
*1: ググってみたら、個人が非営利で使うなら無料らしいけど、それは音声合成エンジンの話で、生成した音声データの二次利用制限はまた別、ともあって…。音声データは権利を主張しない、と書いてあるように読めるけど、だからと言って勝手にCC0にしちゃっていいのか、ソレはダメなんじゃないか…。どうもわからんです。
[ ツッコむ ]
以上です。