Cubism5.0のUnityでのモーションシンクの設定に関しては説明しているものが少ない
まだリリースされたばかりなので、仕方ないだろう
まあ口パクを真剣にやるかどうかは、まだ決めかねているところなので、
まずは簡単に実験してしまおう
ということで、この記事を参考にしてみた
Cubism Audio Mouth InputのAudio InputにFeeのプレハブを選択すれば、簡単に口パクが動いた!
で、肝心なWebGLでBuildすると、口パクしない(涙)
さて、ここからが勝負だな
検索すると以下のようなものが
「AudioSource .GetOutputDataを使用できない」
検索してみると、Cubism Audio Mouth Input.csにこれがある
139: AudioInput.GetOutputData(Samples, 0);
$33 のアセットを購入しろだと? やなこった
ということでちょっと考えてみる
アイデアとしては、まったくやり方を変えるものがある
つまり、
口パクデータはCeVIO AIからテキストで入手する
これを音声と合わせてFeeにUnity側で設定する
これができる条件は「再生と口パクが同一トリガーでタイミングが合うこと」だ
わからんからとりあえずやってみよう
CeVIO AIからのリップシンクは下記のように得られる
Fee voice : こんにちは、今日は寒いですね
[(0.0, 0.005, 'sil'), (0.005, 0.19, 'k'), (0.19, 0.295, 'o'), (0.295, 0.36, 'N'), (0.36, 0.405, 'n'), (0.405, 0.47500000000000003, 'i'), (0.47500000000000003, 0.585, 'ch'), (0.585, 0.645, 'i'), (0.645, 0.6950000000000001, 'w'), (0.6950000000000001, 0.845, 'a'), (0.845, 1.055, 'pau'), (1.055, 1.24, 'ky'), (1.24, 1.305, 'o'), (1.305, 1.425, 'o'), (1.425, 1.485, 'w'), (1.485, 1.55, 'a'), (1.55, 1.655, 's'), (1.655, 1.725, 'a'), (1.725, 1.795, 'm'), (1.795, 1.87, 'u'), (1.87, 1.93, 'i'), (1.93, 1.98, 'd'), (1.98, 2.055, 'e'), (2.055, 2.115, 's'), (2.115, 2.1750000000000003, 'U'), (2.1750000000000003, 2.245, 'n'), (2.245, 2.475, 'e'), (2.475, 2.62, 'sil')]
フォーマットは (start time, end time, '発音')だろう
とすれば母音と'sil'(たぶんsilent)と'n'だけを注意してタイミングを合わせて口の開きと形をパラメータ設定すればいい
次に問題は、
を実行したときのタイミングのずれだ
File Openや読み出しはファイルサイズに比例して時間がかかるはず
だがそれが終わってしまい、あとはPlayのみ となれば、このコマンド発火から再生までの時間のばらつきは少ないだろうと予想される
いずれにせよ、通信の返信→パラメータの設定 という機能は必須なので、これをやってみる意味はあるだろう
構成は以下のとおり
is_Playback_readyでAudioPlayer.Playbackをキック
Wavファイルにアクセスして返信がきたら再生準備
2秒待ってis_Playback_playでPlayされたことをInputFieldに伝える
InputFieldではこのフラグが立ったら=再生が開始したらFeeの言葉を書き込む
体感的だが、タイミングはこれでも成り立ちそうだ
次にCeVIO AIからのリップシンクデータの分析とFeeへのパラメータ設定だ
Komentarze