音声データから口パクアニメーションを自動生成したい
まえまえからやってみたかったボーカロイドの口パク技術を試してみました。
音声データがしっかりしてれば、口パクアニメーションの下地に使えそうな方法です。
STEP1:音声データの用意
自分のボイスデータが波形的にいけてなかったので効果音ラボさんから音声データを用意しました。
参考:https://soundeffect-lab.info/sound/voice/line-girl1.html
STEP2:mp3からwavに変換
mp3からwavに変換します(line-girl1-denshagatouchaku1.wav)。音声データはある程度の長さは必要なようです(今回は4秒)。
STEP3:Wav2Labを使って母音データの抽出
下記のURLからWav2Labのダウンロードがあるので、ダウンロードして解凍します。
ダウンロード:https://www.nicovideo.jp/watch/sm34735545
STEP4:データ生成
Wav2Lab.exeを起動して、音声データをドラッグ&ドロップします。line-girl1-denshagatouchaku1.labというデータが生成されます。

※閾値と単位時間はデフォルトを推奨します。単位時間早くしてもやたら早く切り替わってしまいます。

※生成された.labファイルはメモ帳などでちゃんと記録されているか確認しておくこと。音声がいけてないと全然データ取れてない結果になります。
STEP5:母音データをLab2MarkerでAEのレイヤーマーカーに変換
@BeamManPさんのLab2Marker.jsxをダウンロードします。
STEP6:データの作成
適当なコンポジション(あとであいうえおの口パクデータをいれる)を用意します。
コンポジションを選択して、ファイル>スクリプト>スクリプトファイルの実行でline-girl1-denshagatouchaku1.labを選択します。
スクリプト実行後、母音のレイヤーマーカーが生成されます。
STEP7:「あいうえおん」の口パクアニメーションを適応


先程のコンポジション内にLive2Dデータをインポートします。公式リンクを参考に口のアニメーションを1秒を置きに作成します。
参考:https://docs.live2d.com/cubism-editor-manual/after-effects/?locale=ja
0s(無発声)
MOUTH_FORM 0
MOUTH_OPEN_Y 0
1s(あ)
MOUTH_FORM 1
MOUTH_OPEN_Y 1
2s(い)
MOUTH_FORM 1
MOUTH_OPEN_Y 0.4
3s(う)
MOUTH_FORM 0
MOUTH_OPEN_Y 0.3
4s(え)
MOUTH_FORM 0
MOUTH_OPEN_Y 0.6
5s(お)
MOUTH_FORM 0
MOUTH_OPEN_Y 1
6s(ん)
MOUTH_FORM 0
MOUTH_OPEN_Y 0STEP8:仕上げ
親のコンポジションにタイムリマップをかけます(Ctrl+Alt+T)。タイムリマップに下記のエクスプレッションを挿入します。
buffer = 0.1;
nKey = marker.nearestKey(time);
if(time < nKey.time){
cIndex = nKey.index-1;
} else {
cIndex= nKey.index;
}
ret = 0;
if(cIndex > 0)
{
nowmarker = marker.key(cIndex);
if(nowmarker.time + nowmarker.duration + buffer > time)
{
comment = nowmarker.comment;
if(comment == "a"){
ret = 1;
}else if(comment == "i"){
ret = 2;
}else if(comment == "u"){
ret = 3;
}else if(comment == "e"){
ret = 4;
}else if(comment == "o"){
ret = 5;
}else if(comment == "N"){
ret = 6;
}
}
}
ret;このままだとパカパカ口が切り替わるだけなので、すこし滑らかなカーブにします。
タイムリマップを選択してアニメーション>キーフレーム補助>エクスプレッションをキーフレームに変換します。ウインドウ>スムーザー>適応で適当にキーフレームを間引きます。
アニメーションカーブを全選択してイーズをかけたら、あとは再生しながら微調整します。

まとめ
本来はボカロ(とAviUtl)で使う技術のようですが、たまたまAEに変換するツイートを見たので試してみました。
うまくいけば、リップシンクを手付けする下地になるので、時短になるかもしれません(結局最後の詰めは、手動で調整になりますが)。
