【AfterEffects】音声データから母音を抽出して口パクアニメーションを付ける方法

afterEffects-Wav2Lab-lab2marker

まえまえからやってみたかったボーカロイドの口パク技術を試してみました。

音声データがしっかりしてれば、口パクアニメーションの下地に使えそうな方法です。

音声データの用意。

自分のボイスデータが波形的にいけてなかったので、効果音ラボさんから音声データを用意しました。

mp3からwavに変換(line-girl1-denshagatouchaku1.wav)

※音声データはある程度の長さは必要なようです。(今回は4秒)

Wav2Labを使って母音データの抽出

  1. 下記のURLからWav2Labのダウンロードがあるので、ダウンロードして解凍

https://www.nicovideo.jp/watch/sm34735545

  1. Wav2Lab.exeを起動して、音声データをドラッグ&ドロップ。line-girl1-denshagatouchaku1.labというデータが生成されます。

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

※生成された.labファイルはメモ帳などでちゃんと記録されているか確認しておくこと。音声がいけてないと全然データ取れてない結果になります。

母音データをLab2MarkerでAEのレイヤーマーカーに変換

  1. 上記のツイートからLab2Marker.jsxをダウンロード

  2. 適当なコンポジション(あとであいうえおの口パクデータをいれる)を用意

  3. コンポジションを選択して、ファイル>スクリプト>スクリプトファイルの実行でline-girl1-denshagatouchaku1.labを選択

  4. スクリプト実行後、母音のレイヤーマーカーが生成されます。

「あいうえおん」の口パクアニメーションを適応

  1. 先程のコンポジション内にLive2Dデータをインポートします。やり方は公式リンクを参考に

  2. 口のアニメーションを1秒を置きに作成。

  • 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 0

  1. 親のコンポジションにタイムリマップをかける(Ctrl+Alt+T)

  2. タイムリマップに下記のエクスプレッションを挿入

引用:Lab2Marker

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;

このままだとパカパカ口が切り替わるだけなので、すこし滑らかなカーブにします。

  1. タイムリマップを選択してアニメーション>キーフレーム補助>エクスプレッションをキーフレームに変換

  2. ウインドウ>スムーザー>適応。適当にキーフレームを間引きます

  3. アニメーションカーブを全選択してイーズをかけたら、あとは再生しながら微調整。

今回は全然調整していませんが、下記のような感じになります。

まとめ

本来はボカロ(とAviUtl)で使う技術のようですが、たまたまAEに変換するツイートを見たので試してみました。

うまくいけば、リップシンクを手付けする下地になるので、時短になるかもしれません。

(結局最後の詰めは、手動で調整になりますが)