0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Audio2Face-3D NIM × Unreal Engine 技術検証メモ

Last updated at Posted at 2026-02-03

はじめに

音声入力からリアルタイムにフェイシャルアニメーションを生成する仕組みは、
デジタルヒューマンやインタラクティブアバターを作る上で、ほぼ避けて通れない要素になっています。

今回は、
音声 → フェイシャルアニメーション生成AI → Unreal Engine で表示
という構成を実際に試しながら、
「中で何が起きているのか」「どういう設計思想なのか」を整理してみました。


今回やったこと(ざっくり)

  • 音声入力をもとにフェイシャルアニメーションを生成
  • AIは Audio2Face-3D NIM を使用(コンテナとして起動)
  • 出力された表情データを Unreal Engine 側で再生
  • キャラクターは Blend Shape(Morph Target)駆動

フェイシャルアニメーション方式について

なぜ Blend Shape を使うのか

今回の構成では、ボーン駆動ではなく Blend Shape(Morph Target)方式を使っています。

Blend Shape は、

  • ニュートラルな顔メッシュ
  • 各表情ごとの差分メッシュ

を用意しておき、
各表情の「重み(0〜1)」を合成して最終的な顔を作る方式です。

この方式の良いところは:

  • 実行時に扱うデータが「名前 + 数値」だけで軽い
  • エンジンやDCCツールをまたいでも互換性を保ちやすい
  • AIが出力した数値をそのまま適用できる

音声駆動のように「外部システムが表情を決める」場合、
かなり相性が良い方式だと感じました。


Blend Shape 互換性で重要なポイント

実装上、最低限押さえておく必要があるのは以下です。

  • Blend Shape 名が一致していること
    • 今回は ARKit 52 Blend Shape 命名規則を使用
  • 値のスケールが 0〜1 で揃っていること
  • 同一トポロジーで作られていること

これが揃っていれば、

  • ポリゴン数
  • テクスチャ
  • シェーダ

が異なっていても、表情アニメーション自体は問題なく再生できます。


Audio2Face-3D NIM について

Audio2Face-3D NIM は、
音声(+感情情報)からフェイシャルアニメーションを生成するAI
GPU対応のコンテナとして提供する仕組みです。

特徴を整理すると:

  • 音声から自動的に口形・表情を生成
  • 感情は自動推定も、明示指定も可能
  • 出力は ARKit 互換の Blend Shape カーブ
  • Docker コンテナとして起動できる
  • 複数ストリームを同時に処理可能

重要なのは、
この仕組み自体は「描画」を一切しない点です。

あくまで「数値(表情データ)を出すAI」として割り切った設計になっています。


AIの出力データを見てみる

実際に出力される中間成果物は、主に2種類のCSVです。

animation_frames.csv

  • 約30fpsでサンプリングされたタイムライン
  • 各フレームに対して:
    • timeCode
    • blendShapes.JawOpen
    • blendShapes.MouthSmile_R
    • など約50種類以上のBlend Shape値

要するに、時系列に応じた大量のポリゴン・頂点の位置情報データが入っています。


a2f_3d_input_emotions.csv

  • joy / anger / sadness などの感情値
  • 各感情は 0〜1 のスカラー値

これは必ずしもフェイシャルに直接使う必要はなく、

  • 体の動きに反映する
  • カメラ演出に使う
  • ログや分析用途に回す

など、アプリ側で自由に解釈できます。


全体アーキテクチャ

今回の構成はかなりシンプルです。

音声入力

Audio2Face-3D NIM(GPU / Docker)

Blend Shape の重みデータ

Unreal Engine(キャラクター表示)

  • AIは Ubuntu Server 上でコンテナとして常駐
  • Unreal Engine 側はプラグイン経由でデータを受信
  • Unreal は「受け取った数値を適用するだけ」

スクリーンショット 2026-02-03 23.59.38.png


実装してみて感じたこと

この構成の良いところは:

  • エンジンを差し替えやすい
  • AIモデルを変えても下流が壊れにくい
  • 表情データを保存・再利用・分析できる
  • 複数キャラクター・複数ユーザーに拡張しやすい

「リアルな顔を作る」よりも、
インタラクティブなシステムをどう組むかという視点で見ると、
かなり扱いやすい設計だと感じました。


まとめ

音声駆動フェイシャルアニメーションを、

  • AIは数値生成に専念
  • エンジンは表示に専念

という形で分離して考えると、
実験・プロトタイプ・プロダクト化のどの段階でも柔軟に扱えます。

デジタルヒューマンだけでなく、
ゲーム、XR、教育、シミュレーションなど、
応用範囲はかなり広そうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?