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にしちゃっていいのか、ソレはダメなんじゃないか…。どうもわからんです。
[ ツッコむ ]
#2 [prog][neta] 実験用画像が欲しいよなと
上記のスクリプトを書きながら思ったのだけど。
ライセンス面で問題が無い、見た目がアニメ風の実験用画像が入手できなくて、この手の実験をする時にいつも困るなと。仕方ないから自分で泣く泣く描いたけど、本当はこんな下手糞な絵なんか描きたくないわけで。既存アニメのキャプチャ画像を利用したほうがはるかにそれらしく見えるし伝わるよなー、と思うけど、そんな画像を勝手に使ったり同梱したら当然ながら訴えられてしまうからできるわけないし。
_lena様画像 のアニメ版相当があればいいのになと。何か実験するときはこの画像使っとけばまあオッケー、みたいな画像が欲しいなと。 *1
こういうのって難しい。上記のスクリプトは低レベルで論外だから横に置いとくとしても…。仮に何かしら画期的な技術を発表する人が居ても、サンプル画像がショボいと、やってることまでショボいと思われてしまう。例えば、欧米製のアニメ制作ツールでは、欧米風キャラのサンプル動画しか紹介されてないから、「日本では使えん」と短絡的に思われてしまう、みたいな現象が発生してそうな予感。
そんな時、リファレンス画像相当があれば、目が曇ることも多少は避けられるのではと思うのだけど。甘いかな。甘いだろうな。
まあ、色々難しいです…。
ライセンス面で問題が無い、見た目がアニメ風の実験用画像が入手できなくて、この手の実験をする時にいつも困るなと。仕方ないから自分で泣く泣く描いたけど、本当はこんな下手糞な絵なんか描きたくないわけで。既存アニメのキャプチャ画像を利用したほうがはるかにそれらしく見えるし伝わるよなー、と思うけど、そんな画像を勝手に使ったり同梱したら当然ながら訴えられてしまうからできるわけないし。
_lena様画像 のアニメ版相当があればいいのになと。何か実験するときはこの画像使っとけばまあオッケー、みたいな画像が欲しいなと。 *1
こういうのって難しい。上記のスクリプトは低レベルで論外だから横に置いとくとしても…。仮に何かしら画期的な技術を発表する人が居ても、サンプル画像がショボいと、やってることまでショボいと思われてしまう。例えば、欧米製のアニメ制作ツールでは、欧米風キャラのサンプル動画しか紹介されてないから、「日本では使えん」と短絡的に思われてしまう、みたいな現象が発生してそうな予感。
そんな時、リファレンス画像相当があれば、目が曇ることも多少は避けられるのではと思うのだけど。甘いかな。甘いだろうな。
まあ、色々難しいです…。
*1: いや、lena様画像もライセンス的にはアレだけど。当時は「勝手に使いやがって。訴えてやる!」と揉めたらしいし…。お咎め無しになったのはフェアユースの概念がある国だから、だろうな。これが日本なら、そういう展開にはならなかったんじゃないか。
[ ツッコむ ]
#3 [prog][neta] プログラマーは上手い絵なんか描けない
愚痴です。
プログラマーは、自分が自由に使えるリソースのほとんどを、プログラミングにぶっこみ続けてるからプログラマーで居られるわけで。
絵描きさんは、自分が自由に使えるリソースのほとんどを、絵の練習にぶっこみ続けてるから絵描きさんで居られるわけで。
だから、フツー、プログラマーは上手い絵なんか描けない。絵の練習してないから。そんな時間あったらプログラミングの勉強してるから。
そして、フツー、絵描きさんはプログラムソースなんか書けない。プログラミングの勉強してないから。そんな時間あったら絵の練習してるから。 *1
ということで、絵描きさんから見たら嘔吐したくなるんだろうけど、プログラマーがサンプル画像として下手な絵を描いていても生温かい目で見てほしいよなー。などと(甘えたことを)ちょっとばかり言いたくもなるわけですよ。
ていうか絵の見た目に文句があるならアンタ自分で描いて差し替えといてよ…。誰でも好きなだけ魔改造できるように毎回わざわざ「CC0で置いとくよ」と付け加えているのだし。
プログラマーは、自分が自由に使えるリソースのほとんどを、プログラミングにぶっこみ続けてるからプログラマーで居られるわけで。
絵描きさんは、自分が自由に使えるリソースのほとんどを、絵の練習にぶっこみ続けてるから絵描きさんで居られるわけで。
だから、フツー、プログラマーは上手い絵なんか描けない。絵の練習してないから。そんな時間あったらプログラミングの勉強してるから。
そして、フツー、絵描きさんはプログラムソースなんか書けない。プログラミングの勉強してないから。そんな時間あったら絵の練習してるから。 *1
ということで、絵描きさんから見たら嘔吐したくなるんだろうけど、プログラマーがサンプル画像として下手な絵を描いていても生温かい目で見てほしいよなー。などと(甘えたことを)ちょっとばかり言いたくもなるわけですよ。
ていうか絵の見た目に文句があるならアンタ自分で描いて差し替えといてよ…。誰でも好きなだけ魔改造できるように毎回わざわざ「CC0で置いとくよ」と付け加えているのだし。
*1: 時々両方描ける(書ける)人が居るけど、そういう橋渡し役になれそうな人は、両方の世界にリソース分散してるから出力結果が中途半端にならざるを得ない。中途半端な出力しかできないから、どちらの世界からも低評価を受ける。「何余計なことしてんだよ」とか言われちゃう。
[ ツッコむ ]
#4 [cg_tools] CLIP STUDIO PAINTの使い方が今一つ分からず
全レイヤーにスムージングを一気にかけるのってできないのかな。
アニメ塗りをする時は線画を二値化してから色を塗って最後にスムージングというかアンチエイリアスをフィルタでかけると早く作業できるとどこかで見た記憶があってそういうやり方で試してたのだけど、各レイヤーを選択してスムージングフィルタをかけるのが面倒臭いなと。一気にかけられないのかなと。もっとも、ベクターレイヤーとか入ってたりするとそこは無視されたりするから逐一レイヤー選択してやったほうがいいのだろうか。
そもそも、塗り方がよく分からんのだけど。線画レイヤーを複製して、そこにバケツツールで塗っていったほうがいいのか。線画レイヤーを参照レイヤーにしてバケツツールで塗ったほうがいいのか。しかし後者は線の部分が塗られていない状態になるよなと。すると前者のほうがいいのかな。せっかく線画を二値化して作業してるのだし。
まあ、色々と分からんです。
アニメ塗りをする時は線画を二値化してから色を塗って最後にスムージングというかアンチエイリアスをフィルタでかけると早く作業できるとどこかで見た記憶があってそういうやり方で試してたのだけど、各レイヤーを選択してスムージングフィルタをかけるのが面倒臭いなと。一気にかけられないのかなと。もっとも、ベクターレイヤーとか入ってたりするとそこは無視されたりするから逐一レイヤー選択してやったほうがいいのだろうか。
そもそも、塗り方がよく分からんのだけど。線画レイヤーを複製して、そこにバケツツールで塗っていったほうがいいのか。線画レイヤーを参照レイヤーにしてバケツツールで塗ったほうがいいのか。しかし後者は線の部分が塗られていない状態になるよなと。すると前者のほうがいいのかな。せっかく線画を二値化して作業してるのだし。
まあ、色々と分からんです。
[ ツッコむ ]
#5 [firefox] Firefox の Load Tabs Progressively が動かなくてツライ
_Load Tabs Progressively :: Add-ons for Firefox
一気にタブを開こうとした際に、開く数に制限をつけてくれる拡張機能。なのだけど。Firefox 38 に更新したら動かなくなってしまった…。地味に不便…。
ググってみたら、改良版を出してくれた方が居るようで。
_Mozilla Firefox 拡張機能スレッド Part90
_firefox用スクリプトアップローダー | uploader.jp
_loadTabsProgressively172a.xpi(loadTabsProgressively172a.xpi) ダウンロード | firefox用スクリプトアップローダー | uploader.jp
入れてみたら動いてくれた。いやー、助かった…。ありがたや。
一気にタブを開こうとした際に、開く数に制限をつけてくれる拡張機能。なのだけど。Firefox 38 に更新したら動かなくなってしまった…。地味に不便…。
ググってみたら、改良版を出してくれた方が居るようで。
_Mozilla Firefox 拡張機能スレッド Part90
_firefox用スクリプトアップローダー | uploader.jp
_loadTabsProgressively172a.xpi(loadTabsProgressively172a.xpi) ダウンロード | firefox用スクリプトアップローダー | uploader.jp
入れてみたら動いてくれた。いやー、助かった…。ありがたや。
[ ツッコむ ]
以上、1 日分です。