top of page

再度モーションシンクに挑戦

執筆者の写真: snackvirtualsnackvirtual

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へのパラメータ設定だ



閲覧数:0回0件のコメント

最新記事

すべて表示

Komentarze


bottom of page