Wie man das Plugin verwendet
Diese Anleitung führt Sie durch den Prozess der Einrichtung von Runtime MetaHuman Lip Sync für Ihre MetaHuman-Charaktere.
Hinweis: Runtime MetaHuman Lip Sync funktioniert sowohl mit MetaHuman als auch mit benutzerdefinierten Charakteren. Das Plugin unterstützt verschiedene Charaktertypen, darunter:
- Beliebte kommerzielle Charaktere (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, etc.)
- Charaktere mit FACS-basierten Blendshapes
- Modelle, die ARKit-Blendshape-Standards verwenden
- Charaktere mit Preston Blair-Phonemsätzen
- 3ds Max-Phonemsysteme
- Jeder Charakter mit benutzerdefinierten Morph Targets für Gesichtsausdrücke
Detaillierte Anweisungen zur Einrichtung benutzerdefinierter Charaktere, einschließlich Visem-Mapping-Referenzen für alle oben genannten Standards, finden Sie im Leitfaden zur Einrichtung benutzerdefinierter Charaktere.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher:
- Das MetaHuman-Plugin ist in Ihrem Projekt aktiviert (Hinweis: Ab UE 5.6 ist dieser Schritt nicht mehr erforderlich, da die MetaHuman-Funktionalität direkt in die Engine integriert ist)
- Sie haben mindestens einen MetaHuman-Charakter heruntergeladen und in Ihrem Projekt verfügbar
- Das Runtime MetaHuman Lip Sync-Plugin ist installiert
Standard Model Extension Plugin
Wenn Sie das Standard (Schnellere) Modell verwenden möchten, müssen Sie das Erweiterungs-Plugin installieren:
- Laden Sie das Standard Lip Sync Extension Plugin von Google Drive herunter
- Extrahieren Sie den Ordner aus dem heruntergeladenen Archiv in den
Plugins
-Ordner Ihres Projekts (erstellen Sie diesen Ordner, falls er nicht existiert) - Stellen Sie sicher, dass Ihr Projekt als C++-Projekt eingerichtet ist (auch wenn Sie keinen C++-Code haben)
- Bauen Sie Ihr Projekt neu
- Diese Erweiterung ist nur erforderlich, wenn Sie das Standard-Modell verwenden möchten. Wenn Sie nur das Realistische Modell benötigen, können Sie diesen Schritt überspringen.
- Weitere Informationen zum manuellen Erstellen von Plugins finden Sie im Building Plugins tutorial
Zusätzliche Plugins
- Wenn Sie Audioaufnahme verwenden möchten (z.B. Mikrofoneingang), installieren Sie das Runtime Audio Importer-Plugin.
- Wenn Sie Text-zu-Sprache-Funktionalität verwenden möchten:
- Für lokale TTS, installieren Sie das Runtime Text To Speech-Plugin.
- Für externe TTS-Anbieter (ElevenLabs, OpenAI), installieren Sie das Runtime AI Chatbot Integrator-Plugin.
Plattformspezifische Konfiguration
Android / Meta Quest Konfiguration
Falls Sie Android- oder Meta-Quest-Plattformen anvisieren und Build-Fehler mit diesem Plugin auftreten, müssen Sie die x86_64 (x64) Android-Architektur in Ihren Projekteinstellungen deaktivieren:
- Gehen Sie zu Bearbeiten > Projekteinstellungen
- Navigieren Sie zu Plattformen > Android
- Unter Plattformen - Android, Build-Abschnitt, finden Sie x86_64 [aka x64] unterstützen und stellen Sie sicher, dass es deaktiviert ist, wie unten gezeigt
Dies liegt daran, dass das Plugin derzeit nur arm64-v8a und armeabi-v7a Architekturen für Android / Meta-Quest-Plattformen unterstützt.
Einrichtungsprozess
Schritt 1: Finden und modifizieren Sie das Gesichtsanimation Blueprint
- UE 5.5 und früher (oder Legacy MetaHumans in UE 5.6+)
- UE 5.6+ MetaHuman Creator Charaktere
Sie müssen ein Animation Blueprint modifizieren, das für die Gesichtsanimationen Ihres MetaHuman-Charakters verwendet wird. Das standardmäßige MetaHuman-Gesichtsanimation Blueprint befindet sich unter:
Content/MetaHumans/Common/Face/Face_AnimBP
Sie haben mehrere Möglichkeiten, die Lip-Sync-Funktionalität zu implementieren:
- Standard-Asset direkt bearbeiten (einfachste Option)
- Duplikat erstellen
- Benutzerdefiniertes Animation Blueprint verwenden
Öffnen Sie die standardmäßige Face_AnimBP
direkt und nehmen Sie Ihre Änderungen vor. Alle Änderungen wirken sich auf alle MetaHuman-Charaktere aus, die dieses Animation Blueprint verwenden.
Hinweis: Dieser Ansatz ist bequem, betrifft aber alle Charaktere, die das standardmäßige Animation Blueprint verwenden.
- Duplizieren Sie
Face_AnimBP
und geben Sie ihm einen beschreibenden Namen - Suchen Sie die Blueprint-Klasse Ihres Charakters (z.B. für den Charakter "Bryan" unter
Content/MetaHumans/Bryan/BP_Bryan
) - Öffnen Sie die Charakter-Blueprint und finden Sie die Face-Komponente
- Ändern Sie die Anim Class-Eigenschaft auf Ihr neu erstelltes Animation Blueprint
Hinweis: Dieser Ansatz ermöglicht es Ihnen, das Lip-Sync für bestimmte Charaktere anzupassen, während andere unverändert bleiben.
Sie können die Lip-Sync-Einblendung in jedem Animation Blueprint implementieren, das Zugriff auf die erforderlichen Gesichtsknochen hat:
- Erstellen oder verwenden Sie ein bestehendes benutzerdefiniertes Animation Blueprint
- Stellen Sie sicher, dass Ihr Animation Blueprint mit einem Skelett funktioniert, das die gleichen Gesichtsknochen wie das standardmäßige
Face_Archetype_Skeleton
des MetaHuman enthält (welches das Standardskelett für jeden MetaHuman-Charakter ist)
Hinweis: Dieser Ansatz bietet Ihnen maximale Flexibilität für die Integration in benutzerdefinierte Animationssysteme.
Ab UE 5.6 wurde das neue MetaHuman Creator-System eingeführt, das Charaktere ohne das traditionelle Face_AnimBP
-Asset erstellt. Für diese Charaktere stellt das Plugin ein Face Animation Blueprint bereit, das sich unter folgendem Pfad befindet:
Content/LipSyncData/LipSync_Face_AnimBP
Diese Animation Blueprint befindet sich im Plugin-Content-Ordner und wird mit jedem Plugin-Update überschrieben. Um Ihre Anpassungen nicht zu verlieren, wird dringend empfohlen:
- Kopieren Sie dieses Asset in den Content-Ordner Ihres Projekts (z.B. nach
YourProject/Content/MetaHumans/LipSync_Face_AnimBP
) - Verwenden Sie Ihre kopierte Version in Ihrem Charakter-Setup
- Nehmen Sie alle Änderungen an der kopierten Version vor
Dies stellt sicher, dass Ihre Lip-Sync-Konfigurationen über Plugin-Updates hinweg erhalten bleiben.
Verwendung der Face Animation Blueprint des Plugins:
- Suchen Sie die Blueprint-Klasse Ihres MetaHuman Creator-Charakters
- Öffnen Sie die Charakter-Blueprint und finden Sie die Face-Komponente
- Ändern Sie die Anim Class-Eigenschaft in die
LipSync_Face_AnimBP
des Plugins - Fahren Sie mit den Schritten 2-4 fort, um die Runtime MetaHuman Lip Sync-Funktionalität zu konfigurieren
Alternative Optionen:
- Verwenden Sie Legacy-Anleitungen: Sie können weiterhin die UE 5.5-Anleitungen oben befolgen, wenn Sie mit Legacy-MetaHumans arbeiten oder den traditionellen Workflow bevorzugen
- Erstellen Sie eine benutzerdefinierte Animation Blueprint: Erstellen Sie Ihre eigene Animation Blueprint, die mit der Skelettstruktur des MetaHuman Creators funktioniert
Hinweis: Wenn Sie UE 5.6+ verwenden, aber mit Legacy-MetaHumans arbeiten (nicht über MetaHuman Creator erstellt), verwenden Sie stattdessen die Anleitungen im Tab "UE 5.5 und früher".
Wichtig: Die Runtime MetaHuman Lip Sync-Blending kann in jeder Animation Blueprint implementiert werden, die Zugriff auf eine Pose mit den Gesichtsknochen des standardmäßigen Face_Archetype_Skeleton
des MetaHumans hat. Sie sind nicht auf die oben genannten Optionen beschränkt - dies sind nur gängige Implementierungsansätze.
Schritt 2: Event Graph-Einrichtung
Öffnen Sie Ihre Face Animation Blueprint und wechseln Sie zum Event Graph
. Sie müssen einen Generator erstellen, der Audiodaten verarbeitet und Lip-Sync-Animationen generiert.
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Fügen Sie den
Event Blueprint Begin Play
-Knoten hinzu, falls er noch nicht existiert - Fügen Sie den
Create Runtime Viseme Generator
-Knoten hinzu und verbinden Sie ihn mit dem Begin Play-Event - Speichern Sie die Ausgabe als Variable (z.B. "VisemeGenerator") für die Verwendung in anderen Teilen des Graphs
- Fügen Sie den
Event Blueprint Begin Play
-Knoten hinzu, falls er noch nicht existiert - Fügen Sie den
Create Realistic MetaHuman Lip Sync Generator
-Knoten hinzu und verbinden Sie ihn mit dem Begin Play-Event - Speichern Sie die Ausgabe als Variable (z.B. "RealisticLipSyncGenerator") für die Verwendung in anderen Teilen des Graphs
- (Optional) Stellen Sie die Processing Chunk Size am Realistic MetaHuman Lip Sync Generator-Objekt ein
Hinweis: Das Realistic Model ist speziell für Meta Menschliche Charaktere und ist nicht mit benutzerdefinierten Charaktertypen kompatibel.
Konfiguration der Verarbeitungs-Chunk-Größe: Die Verarbeitungs-Chunk-Größe bestimmt, wie viele Samples in jedem Inferenzschritt verarbeitet werden. Der Standardwert ist 160 Samples, was 10ms Audio bei 16kHz entspricht (der internen Verarbeitungs-Sample-Rate). Sie können diesen Wert anpassen, um zwischen Aktualisierungshäufigkeit und CPU-Auslastung zu balancieren:
- Kleinere Werte bieten häufigere Aktualisierungen, erhöhen aber die CPU-Auslastung
- Größere Werte reduzieren die CPU-Last, können aber die Lip-Sync-Reaktionsfähigkeit verringern
So legen Sie die Verarbeitungs-Chunk-Größe fest:
- Greifen Sie auf Ihr
Realistic MetaHuman Lip Sync Generator
-Objekt zu - Suchen Sie die Eigenschaft
Processing Chunk Size
- Legen Sie Ihren gewünschten Wert fest
Es wird empfohlen, Werte zu verwenden, die Vielfache von 160 sind. Dies entspricht der internen Verarbeitungsstruktur des Modells. Empfohlene Werte umfassen:
160
(Standard, minimal empfohlen)320
480
640
- usw.
Die standardmäßige Verarbeitungs-Chunk-Größe von 160
Samples entspricht 10ms Audio bei 16kHz. Die Verwendung von Vielfachen von 160 gewährleistet die Ausrichtung mit dieser Basiseinheit, was die Verarbeitungseffizienz optimieren und ein konsistentes Verhalten über verschiedene Chunk-Größen hinweg erhalten kann.
Modelloptimierungsoptionen
Standardmäßig verwendet das Realistic Model eine quantisierte und hochoptimierte Version, um die Leistung signifikant zu verbessern und die CPU-Auslastung zu reduzieren. Wenn Sie jedoch die bestmögliche visuelle Qualität gegenüber der Optimierung priorisieren möchten, können Sie die ursprüngliche nicht optimierte Version des Modells verwenden.
Verwendung des ursprünglichen nicht optimierten Modells:
In zukünftigen Versionen wird es automatischere und benutzerfreundlichere Möglichkeiten geben, zwischen optimierten und nicht optimierten Modellen über Einstellungen zu wechseln. Die aktuelle Methode ist eine temporäre, aber funktionierende Lösung.
So wechseln Sie zum ursprünglichen nicht optimierten Modell:
- Laden Sie das ursprüngliche Modell herunter: Download von Google Drive
- Suchen Sie den Plugin-Ordner in Ihrer Engine-Installation:
- Navigieren Sie zu Ihrem UE-Installationsverzeichnis, dann zu
Engine\Plugins\Marketplace\
- Beispiel (Ihr Pfad wird abweichen):
F:\Epic Games\UE_5.6\Engine\Plugins\Marketplace\
- Suchen Sie nach einem Plugin-Ordner - der genaue Name hängt von Ihrer Engine-Version ab:
- Einige Engine-Versionen verwenden klare Namen wie
RuntimeMetaHumanLipSync
- Andere verwenden obfuskierte Namen wie
RuntimeM879a7d628ddcV1
- Einige Engine-Versionen verwenden klare Namen wie
- Navigieren Sie zu Ihrem UE-Installationsverzeichnis, dann zu
- Navigieren Sie zum Modell-Daten-Ordner:
- Gehen Sie zu
Content\RealisticModelData\
innerhalb des Plugin-Ordners - Sie sollten eine Datei namens
EpicMetaHumanLipSyncCpuModel.uasset
finden
- Gehen Sie zu
- Ersetzen Sie die Modell-Datei:
- Extrahieren Sie das heruntergeladene Archiv
- Ersetzen Sie die vorhandene
EpicMetaHumanLipSyncCpuModel.uasset
mit der aus dem Archiv
- Starten Sie Ihr Projekt neu, damit die Änderungen wirksam werden Leistungsüberlegungen:
Modellversion | Leistung | Visuelle Qualität | Empfohlene Anwendungsfälle |
---|---|---|---|
Optimiert (Standard) | Hohe Leistung, geringere CPU-Auslastung | Hervorragende Qualität | Die meisten Projekte, Echtzeitanwendungen, leistungskritische Szenarien |
Original Unoptimiert | Höhere CPU-Auslastung | Maximale visuelle Wiedergabetreue | Kinoproduktionen, Offline-Rendering, wenn Qualität oberste Priorität hat |
Wählen Sie die Version, die am besten zu den Leistungsanforderungen und Qualitätsstandards Ihres Projekts passt.
Für einen zuverlässigen und konsistenten Betrieb mit dem Realistic Model ist es erforderlich, den Realistic MetaHuman Lip Sync Generator jedes Mal neu zu erstellen, wenn Sie nach einer Inaktivitätsphase neue Audiodaten verarbeiten möchten. Dies liegt am Verhalten der ONNX Runtime, die dazu führen kann, dass die Lippenbewegung nicht mehr funktioniert, wenn Generatoren nach Stillephasen wiederverwendet werden.
Beispielszenario: Wenn Sie eine TTS-Lippensynchronisation durchgeführt haben und dann gestoppt haben, und später erneut eine Lippensynchronisation mit neuen Audiodaten durchführen möchten, erstellen Sie einen neuen Realistic MetaHuman Lip Sync Generator, anstatt den vorhandenen wiederzuverwenden.
Schritt 3: Audioeingabeverarbeitung einrichten
Sie müssen eine Methode zur Verarbeitung der Audioeingabe einrichten. Es gibt mehrere Möglichkeiten, je nach Ihrer Audioquelle.
- Mikrofon (Echtzeit)
- Mikrofon (Wiedergabe)
- Text-zu-Sprache (Lokal)
- Text-to-Speech (Externe APIs)
- Von Audiodatei/Puffer
- Benutzerdefinierte Audioquelle
Dieser Ansatz führt die Lippensynchronisation in Echtzeit durch, während Sie in das Mikrofon sprechen:
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Erstellen Sie eine Capturable Sound Wave mit dem Runtime Audio Importer
- Binden Sie sich vor dem Start der Audioaufnahme an den
OnPopulateAudioData
-Delegaten - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf - Starten Sie die Audioaufnahme vom Mikrofon
Das Realistic Model verwendet den gleichen Audioverarbeitungs-Workflow wie das Standard Model, jedoch mit der RealisticLipSyncGenerator
-Variable anstelle von VisemeGenerator
.
In jedem der für das Standard Model gezeigten Beispiele ersetzen Sie einfach:
VisemeGenerator
durch IhreRealisticLipSyncGenerator
-Variable- Die Funktionsnamen und Parameter bleiben bei beiden Modellen identisch
Dieser Ansatz nimmt Audio von einem Mikrofon auf und spielt es dann mit Lip Sync ab:
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Erstellen Sie eine Capturable Sound Wave mit Runtime Audio Importer
- Starten Sie die Audioaufnahme vom Mikrofon
- Binden Sie vor der Wiedergabe der capturable sound wave an ihren
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Das Realistische Modell verwendet den gleichen Audio-Verarbeitungs-Workflow wie das Standard-Modell, aber mit der RealisticLipSyncGenerator
-Variable anstelle von VisemeGenerator
.
In jedem der für das Standard-Modell gezeigten Beispiele ersetzen Sie einfach:
VisemeGenerator
mit IhrerRealisticLipSyncGenerator
-Variable- Die Funktionsnamen und Parameter bleiben bei beiden Modellen identisch
Hinweis: Wenn Sie Audiodaten in kleineren Chunks für responsiveren Lip Sync verarbeiten möchten, passen Sie die Berechnung in der SetNumSamplesPerChunk
-Funktion an. Zum Beispiel wird die Teilung der Sample-Rate durch 150 (Streaming alle ~6,67 ms) statt 100 (Streaming alle 10 ms) häufigere Lip Sync-Updates liefern.
- Regulär
- Streaming
Dieser Ansatz synthetisiert Sprache aus Text und führt Lip Sync durch:
- Standard (Schnelleres) Modell
- Realistic (Higher Quality) Model
- Verwenden Sie Runtime Text To Speech um Sprache aus Text zu generieren
- Verwenden Sie Runtime Audio Importer um das synthetisierte Audio zu importieren
- Binden Sie vor der Wiedergabe der importierten sound wave an ihren
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Die lokale TTS, die vom Runtime Text To Speech-Plugin bereitgestellt wird, wird derzeit nicht mit dem Realistic-Modell aufgrund von ONNX-Runtime-Konflikten unterstützt. Für Text-zu-Sprache mit dem Realistic-Modell sollten Sie externe TTS-Dienste in Betracht ziehen (wie OpenAI oder ElevenLabs über Runtime AI Chatbot Integrator) oder stattdessen das Standard-Modell verwenden.
Hinweis: Wenn Sie Audiodaten in kleineren Blöcken für responsiveres Lip Sync verarbeiten möchten, passen Sie die Berechnung in der Funktion SetNumSamplesPerChunk
an. Zum Beispiel: Wenn Sie die Abtastrate durch 150 teilen (Streaming alle ~6,67 ms) anstatt durch 100 (Streaming alle 10 ms), erhalten Sie häufigere Lip Sync-Aktualisierungen.
Dieser Ansatz verwendet Streaming-Text-zu-Sprache-Synthese mit Echtzeit-Lip Sync:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Verwenden Sie Runtime Text To Speech, um Streaming-Sprache aus Text zu generieren
- Verwenden Sie Runtime Audio Importer, um das synthetisierte Audio zu importieren
- Binden Sie sich vor der Wiedergabe der Streaming-Soundwelle an deren
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Die lokale TTS, die vom Runtime Text To Speech-Plugin bereitgestellt wird, wird derzeit nicht mit dem Realistic-Modell aufgrund von ONNX-Runtime-Konflikten unterstützt. Für Text-zu-Sprache mit dem Realistic-Modell sollten Sie externe TTS-Dienste in Betracht ziehen (wie OpenAI oder ElevenLabs über Runtime AI Chatbot Integrator) oder stattdessen das Standard-Modell verwenden.
Hinweis: Wenn Sie Audiodaten in kleineren Blöcken für responsiveres Lip Sync verarbeiten möchten, passen Sie die Berechnung in der Funktion SetNumSamplesPerChunk
an. Zum Beispiel: Wenn Sie die Abtastrate durch 150 teilen (Streaming alle ~6,67 ms) anstatt durch 100 (Streaming alle 10 ms), erhalten Sie häufigere Lip Sync-Aktualisierungen.
- Regulär
- Streaming
Dieser Ansatz verwendet das Runtime AI Chatbot Integrator Plugin, um synthetisierte Sprache von KI-Diensten (OpenAI oder ElevenLabs) zu generieren und Lip Sync durchzuführen:
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Verwenden Sie den Runtime AI Chatbot Integrator, um Sprache aus Text mit externen APIs (OpenAI, ElevenLabs, etc.) zu generieren
- Verwenden Sie den Runtime Audio Importer, um die synthetisierten Audiodaten zu importieren
- Binden Sie vor der Wiedergabe der importierten Soundwelle an deren
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Das Realistische Modell verwendet den gleichen Audio-Verarbeitungs-Workflow wie das Standard-Modell, aber mit der RealisticLipSyncGenerator
-Variable anstelle von VisemeGenerator
.
In jedem der für das Standard-Modell gezeigten Beispiele ersetzen Sie einfach:
VisemeGenerator
durch IhreRealisticLipSyncGenerator
-Variable- Die Funktionsnamen und Parameter bleiben bei beiden Modellen identisch
Hinweis: Wenn Sie Audiodaten in kleineren Chunks für responsiveren Lip Sync verarbeiten möchten, passen Sie die Berechnung in der SetNumSamplesPerChunk
-Funktion an. Zum Beispiel wird die Teilung der Sample-Rate durch 150 (Streaming alle ~6,67 ms) statt 100 (Streaming alle 10 ms) häufigere Lip Sync-Updates liefern.
Dieser Ansatz verwendet das Runtime AI Chatbot Integrator Plugin, um synthetisierte Streaming-Sprache von KI-Diensten (OpenAI oder ElevenLabs) zu generieren und Lip Sync durchzuführen:
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Verwenden Sie den Runtime AI Chatbot Integrator, um eine Verbindung zu Streaming-TTS-APIs (wie der ElevenLabs Streaming API) herzustellen
- Verwenden Sie den Runtime Audio Importer, um die synthetisierten Audiodaten zu importieren
- Binden Sie vor der Wiedergabe der Streaming-Soundwelle an deren
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Das Realistische Modell verwendet den gleichen Audio-Verarbeitungs-Workflow wie das Standard-Modell, jedoch mit der RealisticLipSyncGenerator
-Variable anstelle von VisemeGenerator
.
In jedem der für das Standard-Modell gezeigten Beispiele ersetzen Sie einfach:
VisemeGenerator
durch IhreRealisticLipSyncGenerator
-Variable- Die Funktionsnamen und Parameter bleiben bei beiden Modellen identisch
Hinweis: Wenn Sie Audiodaten in kleineren Chunks für responsiveren Lip Sync verarbeiten möchten, passen Sie die Berechnung in der SetNumSamplesPerChunk
-Funktion an. Wenn Sie beispielsweise die Abtastrate durch 150 teilen (Streaming alle ~6,67 ms) anstatt durch 100 (Streaming alle 10 ms), erhalten Sie häufigere Lip-Sync-Updates.
Dieser Ansatz verwendet vorab aufgezeichnete Audiodateien oder Audio-Puffer für die Lip Sync:
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Verwenden Sie den Runtime Audio Importer, um eine Audiodatei von der Festplatte oder aus dem Speicher zu importieren
- Binden Sie vor der Wiedergabe der importierten Soundwelle an deren
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf - Spielen Sie die importierte Soundwelle ab und beobachten Sie die Lip Sync-Animation
Das Realistische Modell verwendet den gleichen Audio-Verarbeitungs-Workflow wie das Standard-Modell, jedoch mit der RealisticLipSyncGenerator
-Variable anstelle von VisemeGenerator
.
In jedem der für das Standard-Modell gezeigten Beispiele ersetzen Sie einfach:
VisemeGenerator
durch IhreRealisticLipSyncGenerator
-Variable- Die Funktionsnamen und Parameter bleiben bei beiden Modellen identisch
Hinweis: Wenn Sie Audiodaten in kleineren Chunks für responsiveren Lip Sync verarbeiten möchten, passen Sie die Berechnung in der SetNumSamplesPerChunk
-Funktion an. Zum Beispiel wird die Teilung der Abtastrate durch 150 (Streaming alle ~6,67 ms) statt 100 (Streaming alle 10 ms) häufigere Lip Sync-Updates liefern.
Für eine benutzerdefinierte Audioquelle benötigen Sie:
- Standard (Schnelleres) Modell
- Realistic (Higher Quality) Model
- Audiodaten im Float-PCM-Format (ein Array von Fließkomma-Samples)
- Die Abtastrate und Anzahl der Kanäle
- Rufen Sie
ProcessAudioData
von Ihrem Runtime Viseme Generator mit diesen Parametern auf
Hier ist ein Beispiel für das Streaming von Audio von einer benutzerdefinierten Quelle:
Das Realistic Model verwendet den gleichen Audio-Verarbeitungs-Workflow wie das Standard Model, jedoch mit der Variable RealisticLipSyncGenerator
anstelle von VisemeGenerator
.
In jedem der für das Standard Model gezeigten Beispiele ersetzen Sie einfach:
VisemeGenerator
durch IhreRealisticLipSyncGenerator
Variable- Die Funktionsnamen und Parameter bleiben bei beiden Modellen identisch
Hinweis: Wenn Sie Audiodaten in kleineren Chunks für responsiveres Lip Sync verarbeiten möchten, passen Sie die Berechnung in der Funktion SetNumSamplesPerChunk
an. Zum Beispiel: Wenn Sie die Sample-Rate durch 150 teilen (Streaming alle ~6,67 ms) statt durch 100 (Streaming alle 10 ms), erhalten Sie häufigere Lip Sync Updates.
Schritt 4: Anim Graph Einrichtung
Nachdem Sie den Event Graph eingerichtet haben, wechseln Sie zum Anim Graph
, um den Generator mit der Animation des Charakters zu verbinden:
Lip Sync
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Suchen Sie die Pose, die das MetaHuman-Gesicht enthält (typischerweise von
Use cached pose 'Body Pose'
) - Fügen Sie den
Blend Runtime MetaHuman Lip Sync
Node hinzu - Verbinden Sie die Pose mit dem
Source Pose
desBlend Runtime MetaHuman Lip Sync
Nodes - Verbinden Sie Ihre
RuntimeVisemeGenerator
Variable mit demViseme Generator
Pin - Verbinden Sie den Ausgang des
Blend Runtime MetaHuman Lip Sync
Nodes mit demResult
Pin desOutput Pose
Wenn Lip Sync im Audio erkannt wird, animiert sich Ihr Charakter entsprechend dynamisch:
- Suchen Sie die Pose, die das MetaHuman-Gesicht enthält (typischerweise von
Use cached pose 'Body Pose'
) - Fügen Sie den
Blend Realistic MetaHuman Lip Sync
Node hinzu - Verbinden Sie die Pose mit dem
Source Pose
desBlend Realistic MetaHuman Lip Sync
Nodes - Verbinden Sie Ihre
RealisticLipSyncGenerator
Variable mit demLip Sync Generator
Pin - Verbinden Sie den Ausgang des
Blend Realistic MetaHuman Lip Sync
Nodes mit demResult
Pin desOutput Pose
Das Realistic Model bietet eine verbesserte visuelle Qualität mit natürlicheren Mundbewegungen:
Hinweis: Das Realistic Model ist ausschließlich für MetaHuman-Charaktere konzipiert und nicht mit benutzerdefinierten Charaktertypen kompatibel.
Lachanimation
Sie können auch Lachanimationen hinzufügen, die dynamisch auf Lachen im Audio reagieren:
- Fügen Sie den
Blend Runtime MetaHuman Laughter
-Node hinzu - Verbinden Sie Ihre
RuntimeVisemeGenerator
-Variable mit demViseme Generator
-Pin - Falls Sie bereits Lip Sync verwenden:
- Verbinden Sie den Ausgang des
Blend Runtime MetaHuman Lip Sync
-Nodes mit demSource Pose
desBlend Runtime MetaHuman Laughter
-Nodes - Verbinden Sie den Ausgang des
Blend Runtime MetaHuman Laughter
-Nodes mit demResult
-Pin desOutput Pose
- Verbinden Sie den Ausgang des
- Falls Sie nur Lachen ohne Lip Sync verwenden:
- Verbinden Sie Ihre Quellpose direkt mit dem
Source Pose
desBlend Runtime MetaHuman Laughter
-Nodes - Verbinden Sie den Ausgang mit dem
Result
-Pin
- Verbinden Sie Ihre Quellpose direkt mit dem
Wenn Lachen im Audio erkannt wird, animiert sich Ihr Charakter entsprechend:
Kombination mit Körperanimationen
Um Lip Sync und Lachen zusammen mit bestehenden Körperanimationen anzuwenden, ohne diese zu überschreiben:
- Fügen Sie einen
Layered blend per bone
-Node zwischen Ihre Körperanimationen und den finalen Ausgang ein. Stellen Sie sicher, dassUse Attached Parent
aktiviert ist. - Konfigurieren Sie das Layer-Setup:
- Fügen Sie 1 Item zum
Layer Setup
-Array hinzu - Fügen Sie 3 Items zu den
Branch Filters
für den Layer hinzu, mit folgendenBone Name
s:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Fügen Sie 1 Item zum
- Stellen Sie die Verbindungen her:
- Bestehende Animationen (wie
BodyPose
) →Base Pose
-Eingang - Gesichtsanimation (von Lip Sync- und/oder Laughter-Nodes) →
Blend Poses 0
-Eingang - Layered blend-Node → Finale
Result
-Pose
- Bestehende Animationen (wie
Warum das funktioniert: Die Branch Filters isolieren die Gesichtsanimations-Knochen, sodass Lip Sync und Lachen ausschließlich mit Gesichtsbewegungen geblendet werden, während die ursprünglichen Körperanimationen erhalten bleiben. Dies entspricht der MetaHuman-Gesichtsrig-Struktur und gewährleistet eine natürliche Integration.
Hinweis: Die Lip Sync- und Laughter-Funktionen sind so konzipiert, dass sie nicht-destruktiv mit Ihrem bestehenden Animations-Setup arbeiten. Sie beeinflussen nur die spezifischen Gesichtsknochen, die für Mundbewegungen benötigt werden, und lassen andere Gesichtsanimationen unberührt. Das bedeutet, Sie können sie sicher an jedem Punkt Ihrer Animationskette integrieren - entweder vor anderen Gesichtsanimationen (sodass diese den Lip Sync/das Lachen überschreiben) oder danach (sodass Lip Sync/Lachen über Ihren bestehenden Animationen geblendet wird). Diese Flexibilität ermöglicht es Ihnen, Lip Sync und Lachen mit Augenblinzeln, Augenbrauenbewegungen, emotionalen Ausdrücken und anderen Gesichtsanimationen zu kombinieren, ohne Konflikte zu verursachen.
Konfiguration
Lip Sync-Konfiguration
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
Der Blend Runtime MetaHuman Lip Sync
-Knoten hat Konfigurationsoptionen in seinem Eigenschaften-Panel:
Eigenschaft | Standard | Beschreibung |
---|---|---|
Interpolationsgeschwindigkeit | 25 | Steuert, wie schnell die Lippenbewegungen zwischen Visemen wechseln. Höhere Werte führen zu schnelleren, abrupten Übergängen. |
Zurücksetzzeit | 0.2 | Die Dauer in Sekunden, nach der die Lippenbewegung zurückgesetzt wird. Dies ist nützlich, um zu verhindern, dass die Lippenbewegung weiterläuft, nachdem die Audioquelle gestoppt wurde. |
Der Blend Realistic MetaHuman Lip Sync
-Knoten hat Konfigurationsoptionen in seinem Eigenschaften-Panel:
Eigenschaft | Standard | Beschreibung |
---|---|---|
Interpolationsgeschwindigkeit | 30 | Steuert, wie schnell die Lippenbewegungen zwischen Positionen wechseln. Höhere Werte führen zu schnelleren, abrupten Übergängen. |
Zurücksetzzeit | 0.2 | Die Dauer in Sekunden, nach der die Lippenbewegung zurückgesetzt wird. Dies ist nützlich, um zu verhindern, dass die Lippenbewegung weiterläuft, nachdem die Audioquelle gestoppt wurde. |
Lach-Konfiguration
Der Blend Runtime MetaHuman Laughter
-Knoten hat seine eigenen Konfigurationsoptionen:
Eigenschaft | Standard | Beschreibung |
---|---|---|
Interpolationsgeschwindigkeit | 25 | Steuert, wie schnell die Lippenbewegungen zwischen Lach-Animationen wechseln. Höhere Werte führen zu schnelleren, abrupten Übergängen. |
Zurücksetzzeit | 0.2 | Die Dauer in Sekunden, nach der die Lach-Animation zurückgesetzt wird. Dies ist nützlich, um zu verhindern, dass die Animation weiterläuft, nachdem die Audioquelle gestoppt wurde. |
Maximales Lach-Gewicht | 0.7 | Skaliert die maximale Intensität der Lach-Animation (0.0 - 1.0). |
Auswahl zwischen Lip Sync-Modellen
Bei der Entscheidung, welches Lip Sync-Modell für Ihr Projekt verwendet werden soll, sollten Sie folgende Faktoren berücksichtigen:
Überlegung | Standardmodell | Realistisches Modell |
---|---|---|
Charakter-Kompatibilität | MetaHumans und alle benutzerdefinierten Charaktertypen | Nur MetaHumans |
Visuelle Qualität | Gute Lippenbewegung mit effizienter Performance | Verbesserter Realismus mit natürlicheren Mundbewegungen |
Performance | Optimiert für alle Plattformen inklusive Mobile/VR | Leicht höhere Ressourcenanforderungen |
Anwendungsfälle | Allgemeine Anwendungen, Spiele, VR/AR, Mobile | Filmische Erfahrungen, Nahaufnahmen von Charakterinteraktionen |
Engine-Version-Kompatibilität
Wenn Sie Unreal Engine 5.2 verwenden, funktioniert das realistische Modell möglicherweise nicht korrekt aufgrund eines Fehlers in UEs Resampling-Bibliothek. Für UE 5.2-Nutzer, die zuverlässige Lip Sync-Funktionalität benötigen, verwenden Sie bitte das Standardmodell.
Dieses Problem betrifft nur UE 5.2 und keine anderen Engine-Versionen.
Für die meisten Projekte bietet das Standard-Modell eine hervorragende Balance zwischen Qualität und Leistung und unterstützt gleichzeitig die breiteste Palette von Charaktertypen. Das Realistische Modell ist ideal, wenn Sie die höchste visuelle Wiedergabetreue speziell für MetaHuman-Charaktere benötigen, in Kontexten, in denen Leistungseinbußen weniger kritisch sind.