Amazonで商品を見るセール会場へ

After Effects│音声データから母音を抽出して口パクアニメーションを付けるスクリプト│Wav2Lab

音声データから口パクアニメーションを自動生成する方法を解説します。

以前から関心のあったボーカロイド関連の口パク技術をAfter Effectsで試しました。

明瞭な音声データを用意できれば、口パクアニメーションの下地として活用できます。

目次

STEP1:音声データの用意

今回は検証用として効果音ラボの音声データを用意しました。

参考:https://soundeffect-lab.info/sound/voice/line-girl1.html

STEP2:mp3からwavに変換

音声ファイルをmp3からwav形式に変換します。

母音抽出にはある程度の音声の長さが必要なため、今回は4秒程度のデータを使用しています。

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

配布元のページからWav2Labをダウンロードして解凍します。

ダウンロード:https://www.nicovideo.jp/watch/sm34735545

STEP4:データ生成

Wav2Lab.exeを起動し、変換したwav音声データをドラッグ&ドロップします。

処理が完了すると同階層に.labファイルが生成されます。

音声データをドラッグアンドドロップしてデータ生成処理を行う画面。

※設定の閾値と単位時間はデフォルトのままを推奨します。

単位時間を短くしすぎると口の切り替えが過度に細かくなります。

閾値や単位時間などの設定項目を確認する画面。

※生成された.labファイルはテキストエディタで開き、データが出力されているか確認してください。

波形や音質によっては正常に解析データが取得できない場合があります。

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

ビームマンP氏配布のLab2Marker.jsxをダウンロードします。

STEP6:データの作成

口パターンの素材を配置するためのコンポジションを新規作成します。

対象のコンポジションを選択した状態で、メニューの「ファイル」>「スクリプト」>「スクリプトファイルの実行」からLab2Marker.jsxを実行し、生成した.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 0

STEP8:仕上げ

親コンポジションで対象レイヤーにタイムリマップを適用します(ショートカット: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;

エクスプレッションのみでは切り替えが段階的になるため、キーフレームに変換して動きを滑らかにします。

タイムリマップを選択し、「アニメーション」>「キーフレーム補助」>「エクスプレッションをキーフレームに変換」を実行します。

続けて「ウィンドウ」>「スムーザー」を開き、「適用」で不要なキーフレームを間引きます。

生成されたキーフレームを全選択してイーズを適用し、プレビュー再生しながらタイミングを微調整します。

スムーザーでキーフレームを間引きイーズを適用してタイミングを調整する画面。

After Effectsのほかの操作は、まとめからご覧いただけます。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

見た目の効果を作る記事は、ほかにもあります。

まとめ

本来はAviUtl等と連携して使われる手法ですが、After Effects上でもスクリプト経由でマーカー化して応用できます。

最終的なニュアンスの手動調整は必要ですが、リップシンクの手付け作業の下地として効率化に役立ちます。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

After Effectsのおすすめ書籍

必要なPCスペック

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次