コンテンツにスキップ

UE5のBlueprintでリップシンクを実装する

v0.3.0 · UE 5.8.2 / Windows x64

**Unreal Engine 5(UE5)**のBlueprintで、音声解析・再生・表情カーブ適用を分けてリップシンクを接続します。先にプラグインを導入してください。ActorにはLAMAudio2ExpressionComponent、キャラクターメッシュにはAnimation Blueprintを用意し、ARKitカーブまたはVisemeをメッシュに合わせます。

BeginPlay または任意のイベント
→ Analyze SoundWave Async(Component, SoundWave, Settings)
Completed(Clip) → Play Expression Clip(Clip, StartTime=0)
Progress → ロード表示を更新
Failed → Errorを表示
Cancelled → ロード表示を終了

通常のmono / stereo SoundWave、8〜192 kHz、最大300秒に対応します。外部WAV / MP3を直接渡すことはできません。UEへインポートしてSoundWaveとして使用します。

CompletedのClip出力を再生ノードへ渡します。他のActorでも再利用する場合はClipをBlueprint変数で保持してください。解析中の中断はCancel Analysisです。同じコンポーネントで新しい解析を開始すると、前の解析はキャンセルされます。

BlueprintのComponentsパネル。Addボタンと追加済みのLAMコンポーネント。

ActorへLAMコンポーネントを追加する · 原寸画像を開く

  1. AddでLAM Audio2Expression Componentを検索して追加します。
  2. 追加したコンポーネントをLAMという名前で使用した例です。

撮影 2026-09-30 · UE 5.8.2 · Plugin 1860d0e · Demo 9dee71d · v0.3.0に含まれる操作。

BeginPlayからAnalyze SoundWave Asyncを呼び、CompletedとClipをPlay Expression Clipへ接続したBlueprint。

非同期解析のCompletedから再生する · 原寸画像を開く

  1. 同じLAMコンポーネントとSoundWaveを解析ノードへ渡します。
  2. Completedの実行線とClip出力を再生ノードへ接続します。

接続の最小例です。製品ではFailed・Cancelled・Progressも処理してください。

撮影 2026-09-30 · UE 5.8.2 · Plugin 1860d0e · Demo 9dee71d · v0.3.0に含まれる操作。

既存のポーズ → Apply LAM ARKit Curves → Output Pose
  1. キャラクターのAnimBPを開きます。
  2. Apply LAM ARKit Curvesを既存ポーズとOutput Poseの間に接続します。
  3. Source Componentに、解析・再生を担当するLAMコンポーネントを指定します。
  4. Alphaを0〜1で調整します。カーブ名が異なる場合はCurve Profileを設定します。

Source Componentが空欄なら、SkeletalMeshを所有するActorから検索します。複数のLAMコンポーネントを持つActorでは明示的に指定してください。

標準名jawOpenなどと同名のMorph Targetを持つメッシュで利用できます。ボーン駆動のリグでは出力カーブをControl Rigなどへ接続します。プラグインは独自のボーン配置を自動推定しません。

Local Space Ref Pose、Apply LAM ARKit Curves、Output Poseを接続した実際のAnimGraph。

既存ポーズへARKit表情カーブを適用する · 原寸画像を開く

  1. このサンプルのRef Poseは説明用です。実際には既存のアニメーションポーズを入力します。
  2. Source Componentに解析・再生用LAMを指定します。空欄なら所有Actorから検索されます。
  3. 出力をOutput Poseへ接続します。

撮影 2026-09-30 · UE 5.8.2 · Plugin 1860d0e · Demo 9dee71d · v0.3.0に含まれる操作。

Pause・Resume・Stop・Seekは音声と表情を一緒に制御します。一時停止では表情を保持し、停止では100 msで元のポーズへ戻ります。詳細は再生制御を参照してください。

  • Get Current Expression Frame:時刻、52値、Validity、適用Weight。
  • Get ARKit Curve Value:名前を指定したカーブの推定値。停止フェードのWeightは別扱いです。

配布プロジェクトの/Game/Examples/BP_LAMPlaybackは非同期解析と再生の例、/Game/Examples/ABP_LAMCurvesはAnimGraphの例です。後者はテスト用スケルトンで作られているため、自分のAnimBPへノード構成をコピーします。

公開ソースのBlueprint顔デモでは、BP_FaceDemoの02_Analyze_And_Playから接続を確認できます。v0.3.0 ZIPにこのデモ実装が含まれます。デモのバージョン差

収録済み音声はSoundWaveの事前解析でClipアセットを生成・保存できます。ロード済みClipをそのまま再生ノードへ渡し、実行時の解析を省きます。v0.3.0の配布ZIPに含まれる機能です。

最新ソースPlugin 1860d0eではLipsyncでもノードを検索できます。v0.3.0 ZIPではLAMまたは表示名を使ってください。5母音・OculusリグにはApply LAM Viseme Curvesで口のカーブを適用します。

Sequencerとの連携(公開ソース)

「Sequencerとの連携(公開ソース)」へのリンク

公開ソースのLAM Dialogueトラックでも、このページのApply LAM ARKit Curves/Apply LAM Viseme Curvesを使います。Sequencer用のPlay Expression Clipイベントは追加しません。対象が複数あるときはトラックのTarget ComponentsとAnimBPのSource Componentを同じLAMコンポーネントへ合わせます。Is Controlled By Sequencerで通常再生の開始を分岐できます。v0.3.0 ZIPには専用トラックはありません。

ライセンス・クレジット · デモのソース