So verwenden Sie das Plugin
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 Phonem-Sets
- 3ds Max Phonem-Systeme
- Jeden 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
Stellen Sie vor dem Start sicher, dass:
- Das MetaHuman-Plugin in Ihrem Projekt aktiviert ist (Hinweis: Ab UE 5.6 ist dieser Schritt nicht mehr erforderlich, da die MetaHuman-Funktionalität direkt in die Engine integriert ist)
- Sie mindestens einen MetaHuman-Charakter heruntergeladen und in Ihrem Projekt verfügbar haben
- Das Runtime MetaHuman Lip Sync-Plugin installiert ist
Standard Model Extension Plugin
Wenn Sie das Standard (Schnelleres) 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 (selbst 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 Bauen 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-to-Speech-Funktionalität mit meinen Plugins verwenden möchten (Sie haben möglicherweise Ihren eigenen benutzerdefinierten TTS oder andere Audioeingaben), dann installieren Sie zusätzlich zum Runtime Audio Importer-Plugin auch:
- Für lokalen TTS das Runtime Text To Speech-Plugin.
- Für externe TTS-Anbieter (ElevenLabs, OpenAI) das Runtime AI Chatbot Integrator-Plugin.
Einrichtungsprozess
Schritt 1: Suchen und modifizieren Sie die Gesichtsanimations-Blueprint
- UE 5.5 und früher (oder Legacy MetaHumans in UE 5.6+)
- UE 5.6+ MetaHuman Creator Charaktere
Sie müssen eine Animation Blueprint modifizieren, die für die Gesichtsanimationen Ihres MetaHuman-Charakters verwendet wird. Die standardmäßige MetaHuman-Gesichtsanimations-Blueprint befindet sich unter:
Content/MetaHumans/Common/Face/Face_AnimBP
Sie haben mehrere Optionen zur Implementierung der Lip-Sync-Funktionalität:
- Standard-Asset 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, wirkt sich jedoch auf alle Charaktere aus, die das Standard-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" wäre dies 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 dupliziertes 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 das Lip-Sync-Blending in jedem Animation Blueprint implementieren, das Zugriff auf die erforderlichen Gesichtsknochen hat:
- Erstellen oder verwenden Sie ein vorhandenes benutzerdefiniertes Animation Blueprint
- Stellen Sie sicher, dass Ihr Animation Blueprint mit einem Skelett funktioniert, das dieselben Gesichtsknochen wie das standardmäßige MetaHuman-
Face_Archetype_Skeleton
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 (zum Beispiel nach
IhrProjekt/Content/MetaHumans/LipSync_Face_AnimBP
) - Verwenden Sie Ihre kopierte Version in Ihrem Character-Setup
- Nehmen Sie alle Ihre Änderungen an der kopierten Version vor
Dies stellt sicher, dass Ihre Lip-Sync-Konfigurationen über Plugin-Updates hinweg bestehen bleiben.
Verwenden der Face Animation Blueprint des Plugins:
- Suchen Sie die Blueprint-Klasse Ihres MetaHuman Creator-Charakters
- Öffnen Sie die Character 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:
- Legacy-Anleitungen verwenden: Sie können weiterhin den oben stehenden UE 5.5-Anleitungen folgen, wenn Sie mit Legacy-MetaHumans arbeiten oder den traditionellen Workflow bevorzugen
- Eigene Animation Blueprint erstellen: Erstellen Sie Ihre eigene Animation Blueprint, die mit der MetaHuman Creator-Skelettstruktur 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 and Earlier".
Wichtig: Das Runtime MetaHuman Lip Sync-Blending kann in jedem Animation Blueprint-Asset implementiert werden, das Zugriff auf eine Pose mit den Gesichtsknochen hat, die im Standard-MetaHuman-Face_Archetype_Skeleton
vorhanden sind. 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 erzeugt.
- 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") zur 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") zur Verwendung in anderen Teilen des Graphs
- (Optional) Konfigurieren Sie die Generator-Einstellungen über den Configuration-Parameter
- (Optional) Setzen Sie die Processing Chunk Size am Realistic MetaHuman Lip Sync Generator-Objekt

Hinweis: Das Realistische Modell ist speziell für MetaHuman-Charaktere optimiert und ist nicht mit benutzerdefinierten Charaktertypen kompatibel.
Konfigurationsoptionen
Der Create Realistic MetaHuman Lip Sync Generator
-Knoten akzeptiert einen optionalen Configuration-Parameter, der es Ihnen ermöglicht, das Verhalten des Generators anzupassen:
Modelltyp
Die Model Type-Einstellung bestimmt, welche Version des realistischen Modells verwendet wird:
Modelltyp | Leistung | Visuelle Qualität | Umgang mit Störgeräuschen | Empfohlene Anwendungsfälle |
---|---|---|---|---|
Highly Optimized (Standard) | Höchste Leistung, niedrigste CPU-Auslastung | Gute Qualität | Kann merkliche Mundbewegungen bei Hintergrundgeräuschen oder Nicht-Sprach-Geräuschen zeigen | Saubere Audio-Umgebungen, leistungskritische Szenarien |
Optimized | Gute Leistung, moderate CPU-Auslastung | Hohe Qualität | Bessere Stabilität bei verrauschtem Audio | Ausgewogene Leistung und Qualität, gemischte Audio-Bedingungen |
Original Unoptimized | Eignet sich für Echtzeitanwendung auf modernen CPUs | Höchste Qualität | Stabilste Leistung bei Hintergrundgeräuschen und Nicht-Sprach-Geräuschen | Hochwertige Produktionen, verrauschte Audio-Umgebungen, wenn maximale Genauigkeit benötigt wird |
Leistungseinstellungen
Intra Op Threads: Steuert die Anzahl der Threads, die für interne Modellverarbeitungsoperationen verwendet werden.
- 0 (Standard/Automatisch): Verwendet automatische Erkennung (typischerweise 1/4 der verfügbaren CPU-Kerne, maximal 4)
- 1-16: Thread-Anzahl manuell angeben. Höhere Werte können die Leistung auf Multi-Core-Systemen verbessern, verbrauchen aber mehr CPU
Inter Op Threads: Steuert die Anzahl der Threads, die für die parallele Ausführung verschiedener Modelloperationen verwendet werden.
- 0 (Standard/Automatisch): Verwendet automatische Erkennung (typischerweise 1/8 der verfügbaren CPU-Kerne, maximal 2)
- 1-8: Thread-Anzahl manuell angeben. Wird für die Echtzeitverarbeitung normalerweise niedrig gehalten
Verwendung der Konfiguration
So konfigurieren Sie den Generator:
- Erweitern Sie im
Create Realistic MetaHuman Lip Sync Generator
-Knoten den Configuration-Parameter - Setzen Sie Model Type auf Ihre bevorzugte Option:
- Verwenden Sie Highly Optimized für die beste Leistung (für die meisten Benutzer empfohlen)
- Verwenden Sie Optimized für eine ausgewogene Leistung und Qualität
- Verwenden Sie Original Unoptimized nur, wenn maximale Qualität essentiell ist
- Passen Sie Intra Op Threads und Inter Op Threads bei Bedarf an (belassen Sie sie in den meisten Fällen bei 0 für automatische Erkennung) Leistungsempfehlungen:
- Für die meisten Projekte mit sauberem Audio verwenden Sie Hochoptimiert für die beste Leistung
- Wenn Sie mit Audio arbeiten, das Hintergrundgeräusche, Musik oder Nicht-Sprach-Geräusche enthält, ziehen Sie die Verwendung von Optimiert oder Original Unoptimized Modelle für bessere Stabilität in Betracht
- Das Hochoptimiert Modell kann bei der Verarbeitung von Nicht-Sprach-Audio aufgrund von Optimierungstechniken, die während der Modellerstellung angewendet wurden, subtile Mundbewegungen zeigen
- Das Original Unoptimized Modell, obwohl es mehr CPU-Ressourcen benötigt, ist dennoch für Echtzeitanwendungen auf moderner Hardware geeignet und liefert die genauesten Ergebnisse bei anspruchsvollen Audio-Bedingungen
- Passen Sie Thread-Anzahlen nur an, wenn Sie Leistungsprobleme haben oder spezifische Optimierungsanforderungen haben
- Höhere Thread-Anzahlen bedeuten nicht immer bessere Leistung - die optimalen Werte hängen von Ihrer spezifischen Hardware und Projektanforderungen ab
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 abzuwägen:
- Kleinere Werte bieten häufigere Aktualisierungen, erhöhen aber die CPU-Auslastung
- Größere Werte reduzieren die CPU-Last, können aber die Lippen-Synchronisations-Reaktionsfähigkeit verringern
So setzen Sie die Verarbeitungs-Chunk-Größe:
- Greifen Sie auf Ihr
Realistic MetaHuman Lip Sync Generator
Objekt zu - Suchen Sie die Eigenschaft
Processing Chunk Size
- Setzen Sie Ihren gewünschten Wert
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 Standard-Verarbeitungs-Chunk-Größe von 160
Samples entspricht 10ms Audio bei 16kHz. Die Verwendung von Vielfachen von 160 erhält die Ausrichtung mit dieser Basiseinheit, was zur Optimierung der Verarbeitungseffizienz beitragen und ein konsistentes Verhalten über verschiedene Chunk-Größen hinweg aufrechterhalten kann.
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ätsperiode neue Audiodaten verarbeiten möchten. Dies liegt am ONNX Runtime-Verhalten, das dazu führen kann, dass die Lippen-Synchronisation nicht mehr funktioniert, wenn Generatoren nach Stilleperioden wiederverwendet werden.
Beispielszenario: Wenn Sie TTS-Lippen-Synchronisation durchgeführt haben und dann gestoppt haben, und später erneut Lippen-Synchronisation mit neuem Audio durchführen möchten, erstellen Sie einen neuen Realistic MetaHuman Lip Sync Generator anstatt den vorhandenen wiederzuverwenden.
Schritt 3: Richten Sie die Audio-Eingabeverarbeitung ein
Sie müssen eine Methode einrichten, um Audio-Eingaben zu verarbeiten. Es gibt mehrere Möglichkeiten, dies zu tun, abhängig von Ihrer Audio-Quelle.
- Mikrofon (Echtzeit)
- Mikrofon (Wiedergabe)
- Text-to-Speech (Local)
- Text-to-Speech (External APIs)
- Von Audio-Datei/Puffer
- Streaming Audio Buffer
Dieser Ansatz führt die Lippenbewegungssynchronisation in Echtzeit durch, während in das Mikrofon gesprochen wird:
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Erstellen Sie eine Capturable Sound Wave mit dem Runtime Audio Importer
- Binden Sie sich vor Beginn 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 Realistische Modell verwendet den gleichen Audioverarbeitungs-Workflow wie das Standardmodell, jedoch mit der RealisticLipSyncGenerator
-Variable anstelle von VisemeGenerator
.
Ersetzen Sie in jedem der für das Standardmodell gezeigten Beispiele 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 Lippenbewegungssynchronisation ab:
- Standard (Schnelleres) Modell
- Realistic (Higher Quality) Model
- Erstellen Sie eine Capturable Sound Wave mit dem Runtime Audio Importer
- Starten Sie die Audioaufnahme vom Mikrofon
- Binden Sie sich vor der Wiedergabe der capturable sound wave an deren
OnGeneratePCMData
-Delegaten - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
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
mit IhrerRealisticLipSyncGenerator
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 SetNumSamplesPerChunk
Funktion an. Zum Beispiel wird das Teilen der Sample-Rate durch 150 (Streaming alle ~6,67 ms) anstatt durch 100 (Streaming alle 10 ms) häufigere Lip Sync Updates liefern.
- Regular
- Streaming
Dieser Ansatz synthetisiert Sprache aus Text und führt Lip Sync durch:
- Standard (Faster) Model
- 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 sich vor der Wiedergabe der importierten Sound Wave an deren
OnGeneratePCMData
Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Das lokale TTS, das vom Runtime Text To Speech Plugin bereitgestellt wird, wird derzeit aufgrund von ONNX Runtime Konflikten nicht mit dem Realistic Model unterstützt. Für Text-to-Speech mit dem Realistic Model sollten Sie externe TTS-Dienste in Betracht ziehen (wie OpenAI oder ElevenLabs via Runtime AI Chatbot Integrator) oder stattdessen das Standard Model verwenden.
Hinweis: Wenn Sie Audiodaten in kleineren Chunks für responsiveres Lip Sync verarbeiten möchten, passen Sie die Berechnung in der SetNumSamplesPerChunk
Funktion an. Zum Beispiel wird das Teilen der Sample-Rate durch 150 (Streaming alle ~6,67 ms) anstatt durch 100 (Streaming alle 10 ms) häufigere Lip Sync Updates liefern.
Dieser Ansatz verwendet Streaming-Text-to-Speech-Synthese mit Echtzeit-Lip Sync:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Verwende Runtime Text To Speech, um Streaming-Sprache aus Text zu generieren
- Verwende Runtime Audio Importer, um die synthetisierte Audio zu importieren
- Binde vor der Wiedergabe der Streaming-Soundwelle an ihren
OnGeneratePCMData
-Delegaten - Rufe in der gebundenen Funktion
ProcessAudioData
von deinem Runtime Viseme Generator auf
Der lokale TTS, der vom Runtime Text To Speech-Plugin bereitgestellt wird, wird aufgrund von ONNX-Runtime-Konflikten derzeit nicht mit dem Realistic-Modell unterstützt. Für Text-to-Speech mit dem Realistic-Modell ziehe die Verwendung externer TTS-Dienste in Betracht (wie OpenAI oder ElevenLabs über Runtime AI Chatbot Integrator) oder verwende stattdessen das Standard-Modell.
Hinweis: Wenn du Audiodaten in kleineren Chunks für responsiveren Lip Sync verarbeiten möchtest, passe die Berechnung in der SetNumSamplesPerChunk
-Funktion an. Zum Beispiel wird das Teilen der Abtastrate durch 150 (Streaming alle ~6,67 ms) anstatt durch 100 (Streaming alle 10 ms) häufigere Lip Sync-Updates liefern.
- Regular
- Streaming
Dieser Ansatz verwendet das Runtime AI Chatbot Integrator-Plugin, um synthetisierte Sprache von AI-Diensten (OpenAI oder ElevenLabs) zu generieren und Lip Sync durchzuführen:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Verwende Runtime AI Chatbot Integrator, um Sprache aus Text unter Verwendung externer APIs (OpenAI, ElevenLabs, etc.) zu generieren
- Verwende Runtime Audio Importer, um die synthetisierten Audiodaten zu importieren
- Binde vor der Wiedergabe der importierten Soundwelle an ihren
OnGeneratePCMData
-Delegaten - Rufe in der gebundenen Funktion
ProcessAudioData
von deinem Runtime Viseme Generator auf

Das Realistic Model verwendet den gleichen Audio-Verarbeitungs-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
mit IhrerRealisticLipSyncGenerator
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 SetNumSamplesPerChunk
Funktion an. Zum Beispiel: Teilen Sie die Sample-Rate durch 150 (Streaming alle ~6,67 ms) anstatt durch 100 (Streaming alle 10 ms), um häufigere Lip Sync Updates zu erhalten.
Dieser Ansatz verwendet das Runtime AI Chatbot Integrator Plugin, um synthetisierte Streaming-Sprache von AI-Diensten (OpenAI oder ElevenLabs) zu generieren und Lip Sync durchzuführen:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Verwenden Sie Runtime AI Chatbot Integrator um sich mit Streaming TTS APIs zu verbinden (wie ElevenLabs Streaming API)
- Verwenden Sie Runtime Audio Importer um die synthetisierten Audiodaten zu importieren
- Binden Sie sich vor der Wiedergabe des Streaming-Sound-Waves an dessen
OnGeneratePCMData
Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Das Realistic Model verwendet den gleichen Audio-Verarbeitungs-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
mit IhrerRealisticLipSyncGenerator
Variable- Die Funktionsnamen und Parameter bleiben bei beiden Modellen identisch
Hinweis: Wenn Sie Audiodaten in kleineren Blöcken verarbeiten möchten, um ein reaktionsschnelleres Lip Sync zu erreichen, 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-Aktualisierungen.
Dieser Ansatz verwendet vorab aufgezeichnete Audiodateien oder Audio-Puffer für das 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 sich vor der Wiedergabe der importierten Sound Wave an deren
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf - Spielen Sie die importierte Sound Wave 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
.
Ersetzen Sie in jedem der für das Standard-Modell gezeigten Beispiele einfach:
VisemeGenerator
durch IhreRealisticLipSyncGenerator
-Variable- Die Funktionsnamen und Parameter bleiben zwischen beiden Modellen identisch
Hinweis: Wenn Sie Audiodaten in kleineren Blöcken verarbeiten möchten, um ein reaktionsschnelleres Lip Sync zu erreichen, 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-Aktualisierungen.
Für das Streamen von Audiodaten aus einem Puffer benötigen Sie:
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Audiodaten im Float-PCM-Format (ein Array von Fließkomma-Samples), die von Ihrer Streaming-Quelle verfügbar sind
- Die Abtastrate und die Anzahl der Kanäle
- Rufen Sie
ProcessAudioData
von Ihrem Runtime Viseme Generator auf, wenn diese Parameter als Audioblöcke verfügbar werden
Hier ist ein Beispiel für die Verarbeitung von Lip Sync aus gestreamten Audiodaten:
Hinweis: Stellen Sie bei der Verwendung von Streaming-Audioquellen sicher, dass Sie die Audio-Wiedergabezeit angemessen verwalten, um verzerrte Wiedergabe zu vermeiden. Weitere Informationen zur ordnungsgemäßen Verwaltung von Streaming-Audio finden Sie in der Streaming Sound Wave-Dokumentation.
Das Realistische Modell verwendet den gleichen Audio-Verarbeitungs-Workflow wie das Standard-Modell, jedoch mit der RealisticLipSyncGenerator
-Variable anstelle von VisemeGenerator
.
Ersetzen Sie in jedem der für das Standard-Modell gezeigten Beispiele einfach:
VisemeGenerator
durch IhreRealisticLipSyncGenerator
-Variable- Die Funktionsnamen und Parameter bleiben bei beiden Modellen identisch
Hinweis: Stellen Sie bei der Verwendung von Streaming-Audioquellen sicher, dass Sie die Audio-Wiedergabezeit angemessen verwalten, um verzerrte Wiedergabe zu vermeiden. Weitere Informationen zur ordnungsgemäßen Verwaltung von Streaming-Audio finden Sie in der Streaming Sound Wave-Dokumentation.
Hinweis: Wenn Sie Audiodaten in kleineren Blöcken 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-Aktualisierungen.
Schritt 4: Anim Graph Einrichtung
Nachdem Sie den Event Graph eingerichtet haben, wechseln Sie zum Anim Graph
, um den Generator mit der Animation der Figur zu verbinden:
Lip Sync
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- 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
-Knoten hinzu - Verbinden Sie die Pose mit dem
Source Pose
-Eingang desBlend Runtime MetaHuman Lip Sync
-Knotens - Verbinden Sie Ihre
RuntimeVisemeGenerator
-Variable mit demViseme Generator
-Pin - Verbinden Sie den Ausgang des
Blend Runtime MetaHuman Lip Sync
-Knotens mit demResult
-Pin derOutput Pose
Wenn Lip Sync in der Audioausgabe erkannt wird, animiert sich Ihre Figur dynamisch entsprechend:
- 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
-Knoten hinzu - Verbinden Sie die Pose mit dem
Source Pose
-Eingang desBlend Realistic MetaHuman Lip Sync
-Knotens - Verbinden Sie Ihre
RealisticLipSyncGenerator
-Variable mit demLip Sync Generator
-Pin - Verbinden Sie den Ausgang des
Blend Realistic MetaHuman Lip Sync
-Knotens mit demResult
-Pin derOutput Pose
Das Realistische Modell bietet eine verbesserte visuelle Qualität mit natürlicheren Mundbewegungen:
Hinweis: Das Realistische Modell ist ausschließlich für MetaHuman-Charaktere konzipiert und nicht mit benutzerdefinierten Charaktertypen kompatibel.
Lachen-Animation
Sie können auch Lachen-Animationen hinzufügen, die dynamisch auf in der Audioausgabe erkanntes Lachen reagieren:
- Fügen Sie den
Blend Runtime MetaHuman Laughter
-Knoten hinzu - Verbinden Sie Ihre
RuntimeVisemeGenerator
-Variable mit demViseme Generator
-Pin - Wenn Sie bereits Lip Sync verwenden:
- Verbinden Sie den Ausgang des
Blend Runtime MetaHuman Lip Sync
-Knotens mit demSource Pose
-Eingang desBlend Runtime MetaHuman Laughter
-Knotens - Verbinden Sie den Ausgang des
Blend Runtime MetaHuman Laughter
-Knotens mit demResult
-Pin derOutput Pose
- Verbinden Sie den Ausgang des
- Wenn Sie nur Lachen ohne Lip Sync verwenden:
- Verbinden Sie Ihre Quellpose direkt mit dem
Source Pose
-Eingang desBlend Runtime MetaHuman Laughter
-Knotens - Verbinden Sie den Ausgang mit dem
Result
-Pin
- Verbinden Sie Ihre Quellpose direkt mit dem
Wenn Lachen in der Audioausgabe erkannt wird, animiert sich Ihre Figur dynamisch entsprechend:
Kombination mit Gesichts- und Körperanimationen
Um Lippen-Synchronisation und Lachen zusammen mit bestehenden Körperanimationen und benutzerdefinierten Gesichtsanimationen (wie Ausdrücke, Emotionen oder andere Gesichtsbewegungen) anzuwenden, ohne diese zu überschreiben:
- Fügen Sie einen
Layered blend per bone
-Knoten zwischen Ihren Körperanimationen und der endgültigen Ausgabe hinzu. Stellen Sie sicher, dassUse Attached Parent
auf true gesetzt ist. - Konfigurieren Sie das Layer-Setup:
- Fügen Sie 1 Element zum
Layer Setup
-Array hinzu - Fügen Sie 3 Elemente zu den
Branch Filters
für den Layer hinzu, mit den folgendenBone Name
s:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Fügen Sie 1 Element zum
- Wichtig für benutzerdefinierte Gesichtsanimationen: Wählen Sie in
Curve Blend Option
die Option "Use Max Value". Dies ermöglicht es, benutzerdefinierte Gesichtsanimationen (Ausdrücke, Emotionen usw.) korrekt über der Lippen-Synchronisation zu schichten. - Stellen Sie die Verbindungen her:
- Bestehende Animationen (wie
BodyPose
) →Base Pose
-Eingang - Gesichtsanimationsausgabe (von Lippen-Synchronisations- und/oder Lachen-Knoten) →
Blend Poses 0
-Eingang - Layered blend-Knoten → Endgültige
Result
-Pose
- Bestehende Animationen (wie
Warum das funktioniert: Die Branch-Filter isolieren die Gesichtsanimationsknochen, sodass Lippen-Synchronisation und Lachen ausschließlich mit Gesichtsbewegungen geblendet werden können, während die ursprünglichen Körperanimationen erhalten bleiben. Die "Use Max Value"-Option für die Kurvenüberblendung nimmt den Maximalwert von jeder Kurve anstatt sie additiv zu mischen, was es ermöglicht, benutzerdefinierte Gesichtsanimationen (wie Ausdrücke und Emotionen) korrekt mit der Lippen-Synchronisation zu kombinieren, ohne Konflikte. Dies entspricht der MetaHuman-Gesichtsrig-Struktur für eine natürliche Integration.
Hinweis: Die Lippen-Synchronisations- und Lachen-Funktionen sind so konzipiert, dass sie nicht-destruktiv mit Ihrem bestehenden Animations-Setup arbeiten. Sie beeinflussen nur die spezifischen Gesichtsknochen, die für die Mundbewegung benötigt werden, und lassen andere Gesichtsanimationen unberührt. Das bedeutet, Sie können sie sicher an jedem Punkt in Ihrer Animationskette integrieren - entweder vor anderen Gesichtsanimationen (was diesen Animationen erlaubt, die Lippen-Synchronisation/das Lachen zu überschreiben) oder nach ihnen (wodurch Lippen-Synchronisation/Lachen über Ihre bestehenden Animationen geblendet werden). Diese Flexibilität ermöglicht es Ihnen, Lippen-Synchronisation und Lachen mit Augenblinzeln, Augenbrauenbewegungen, emotionalen Ausdrücken und anderen Gesichtsanimationen ohne Konflikte zu kombinieren.
Feinabstimmung des Lippen-Synchronisations-Verhaltens
Nachdem Sie die grundlegende Lippen-Synchronisations-Funktionalität eingerichtet haben, möchten Sie möglicherweise bestimmte Aspekte der Mundbewegung feinabstimmen, um sie besser an die Anforderungen Ihres Projekts anzupassen.
Zungenvorstoß-Kontrolle
Im standardmäßigen Lippen-Synchronisations-Modell könnten Sie übermäßige Vorwärtsbewegung der Zunge bei bestimmten Phonemen bemerken. Um den Zungenvorstoß zu kontrollieren:
- Nach Ihrem
Blend Runtime MetaHuman Lip Sync
oderBlend Realistic MetaHuman Lip Sync
-Node fügen Sie einenModify Curve
-Node hinzu - Klicken Sie mit der rechten Maustaste auf den
Modify Curve
-Node und wählen Sie Add Curve Pin - Fügen Sie einen Curve-Pin mit dem Namen
CTRL_expressions_tongueOut
hinzu - Setzen Sie die Apply Mode-Eigenschaft des Nodes auf Scale
- Passen Sie den Value-Parameter an, um die Zungenstreckung zu steuern (z.B. 0.8, um den Vorsprung um 20% zu reduzieren)
Kieferöffnungssteuerung
Das realistische Lip Sync kann je nach Ihrem Audioinhalt und visuellen Anforderungen übermäßig reagierende Kieferbewegungen erzeugen. Um die Intensität der Kieferöffnung anzupassen:
- Nach Ihrem Lip Sync-Blend-Node fügen Sie einen
Modify Curve
-Node hinzu - Klicken Sie mit der rechten Maustaste auf den
Modify Curve
-Node und wählen Sie Add Curve Pin - Fügen Sie einen Curve-Pin mit dem Namen
CTRL_expressions_jawOpen
hinzu - Setzen Sie die Apply Mode-Eigenschaft des Nodes auf Scale
- Passen Sie den Value-Parameter an, um den Kieferöffnungsbereich zu steuern (z.B. 0.9, um die Kieferbewegung um 10% zu reduzieren)
Konfiguration
Lip Sync-Konfiguration
- Standard (Faster) Model
- Realistic (Higher Quality) Model
Der Blend Runtime MetaHuman Lip Sync
-Node hat Konfigurationsoptionen in seinem Eigenschaften-Bedienfeld:
Eigenschaft | Standard | Beschreibung |
---|---|---|
Interpolation Speed | 25 | Steuert, wie schnell die Lippenbewegungen zwischen Visemen übergehen. Höhere Werte führen zu schnelleren, abrupten Übergängen. |
Reset Time | 0.2 | Die Dauer in Sekunden, nach der das Lip Sync zurückgesetzt wird. Dies ist nützlich, um zu verhindern, dass das Lip Sync fortgesetzt wird, nachdem das Audio gestoppt hat. |
Der Blend Realistic MetaHuman Lip Sync
-Node hat Konfigurationsoptionen in seinem Eigenschaften-Bedienfeld:
Eigenschaft | Standard | Beschreibung |
---|---|---|
Interpolation Speed | 30 | Steuert, wie schnell die Lippenbewegungen zwischen Positionen übergehen. Höhere Werte führen zu schnelleren, abrupten Übergängen. |
Reset Time | 0.2 | Die Dauer in Sekunden, nach der das Lip Sync zurückgesetzt wird. Dies ist nützlich, um zu verhindern, dass das Lip Sync fortgesetzt wird, nachdem das Audio gestoppt hat. |
Lach-Konfiguration
Der Blend Runtime MetaHuman Laughter
-Node hat seine eigenen Konfigurationsoptionen:
Eigenschaft | Standard | Beschreibung |
---|---|---|
Interpolation Speed | 25 | Steuert, wie schnell die Lippenbewegungen zwischen Lachanimationen übergehen. Höhere Werte führen zu schnelleren, abrupten Übergängen. |
Reset Time | 0.2 | Die Dauer in Sekunden, nach der das Lachen zurückgesetzt wird. Dies ist nützlich, um zu verhindern, dass das Lachen fortgesetzt wird, nachdem das Audio gestoppt hat. |
Max Laughter Weight | 0.7 | Skaliert die maximale Intensität der Lachanimation (0.0 - 1.0). |
Auswahl zwischen Lip Sync-Modellen
Bei der Entscheidung, welches Lip-Sync-Modell Sie für Ihr Projekt verwenden, sollten Sie folgende Faktoren berücksichtigen:
Überlegung | Standardmodell | Realistisches Modell |
---|---|---|
Charakterkompatibilität | MetaHumans und alle benutzerdefinierten Charaktertypen | Nur MetaHumans |
Visuelle Qualität | Gutes Lip-Sync mit effizienter Leistung | Verbesserter Realismus mit natürlicheren Mundbewegungen |
Leistung | Für alle Plattformen optimiert, einschließlich Mobilgeräte/VR | Leicht höhere Ressourcenanforderungen |
Anwendungsfälle | Allgemeine Anwendungen, Spiele, VR/AR, Mobilgeräte | 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 der Resampling-Bibliothek der UE. Für UE 5.2-Benutzer, die zuverlässige Lip-Sync-Funktionalität benötigen, verwenden Sie bitte stattdessen das Standardmodell.
Dieses Problem betrifft speziell UE 5.2 und betrifft keine anderen Engine-Versionen.
Für die meisten Projekte bietet das Standardmodell eine ausgezeichnete 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 in Kontexten benötigen, in denen Leistungsüberkopf weniger kritisch ist.