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
- Jeden Charakter mit benutzerdefinierten Morph Targets für Gesichtsausdrücke
Detaillierte Anleitungen 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-to-Speech-Funktionalität mit meinen Plugins nutzen möchten (Sie können auch eine eigene benutzerdefinierte TTS-Lösung oder andere Audioeingaben haben), dann installieren Sie zusätzlich zum Runtime Audio Importer Plugin:
- Für lokale TTS, das Runtime Text To Speech Plugin.
- Für externe TTS-Anbieter (ElevenLabs, OpenAI), das Runtime AI Chatbot Integrator Plugin.
Plattformspezifische Konfiguration
Android / Meta Quest Konfiguration
Wenn 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 Support x86_64 [aka x64] 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: Suchen 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 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" 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 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 Sie oder verwenden Sie ein bestehendes benutzerdefiniertes Animation Blueprint
- Stellen Sie sicher, dass Ihr Animation Blueprint mit einem Skelett funktioniert, das die gleichen Gesichtsknochen enthält wie das standardmäßige MetaHuman-
Face_Archetype_Skeleton
(welches das Standardskelett für jeden MetaHuman-Charakter ist)
Hinweis: Dieser Ansatz bietet Ihnen maximale Flexibilität für die Integration mit benutzerdefinierten Animationssystemen.
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 befindet unter:
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
Dadurch wird sichergestellt, 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 oben genannten UE 5.5-Anleitungen 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 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 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 MetaHuman-Face_Archetype_Skeleton
hat. Sie sind nicht auf die oben genannten Optionen beschränkt - dies sind nur gängige Implementierungsansätze.
Schritt 2: Event Graph-Setup
Ö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 vorhanden ist - 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 vorhanden ist - 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) Konfigurieren Sie die Generator-Einstellungen mit dem Configuration-Parameter
- (Optional) Legen Sie die Processing Chunk Size auf dem Realistic MetaHuman Lip Sync Generator-Objekt fest

Hinweis: Das Realistische Modell ist speziell für MetaHuman-Charaktere optimiert und nicht mit benutzerdefinierten Charaktertypen kompatibel.
Konfigurationsoptionen
Der Create Realistic MetaHuman Lip Sync Generator
-Knoten akzeptiert einen optionalen Configuration-Parameter, der es 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 Rauschen | Empfohlene Anwendungsfälle |
---|---|---|---|---|
Highly Optimized (Standard) | Höchste Leistung, geringste CPU-Auslastung | Gute Qualität | Kann merkliche Mundbewegungen bei Hintergrundgeräuschen oder Nicht-Sprachgerä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 Echtzeit-Anwendungen auf modernen CPUs | Höchste Qualität | Stabilste Leistung bei Hintergrundgeräuschen und Nicht-Sprachgerä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: Manuelle Angabe der Thread-Anzahl. 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: Manuelle Angabe der Thread-Anzahl. Wird normalerweise niedrig gehalten für Echtzeit-Verarbeitung
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 beste Leistung (empfohlen für die meisten Benutzer)
- Verwenden Sie Optimized für 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 (in den meisten Fällen auf 0 belassen für automatische Erkennung) Leistungsempfehlungen:
- Für die meisten Projekte mit sauberem Audio verwenden Sie Highly Optimized für die beste Leistung
- Wenn Sie mit Audio arbeiten, das Hintergrundgeräusche, Musik oder Nicht-Sprachgeräusche enthält, ziehen Sie die Verwendung von Optimized oder Original Unoptimized Modellen für bessere Stabilität in Betracht
- Das Highly Optimized Modell kann bei der Verarbeitung von Nicht-Sprach-Audio aufgrund der während der Modellerstellung angewendeten Optimierungstechniken subtile Mundbewegungen zeigen
- Das Original Unoptimized Modell, das zwar 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 die Thread-Anzahl 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 Processing Chunk Size bestimmt, wie viele Samples in jedem Inferenzschritt verarbeitet werden. Der Standardwert ist 160 Samples, was 10ms Audio bei 16kHz entspricht (die interne 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 setzen Sie die Processing Chunk Size:
- Greifen Sie auf Ihr
Realistic MetaHuman Lip Sync Generator
-Objekt zu - Suchen Sie die
Processing Chunk Size
-Eigenschaft - 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 standardmäßige Processing Chunk Size von 160
Samples entspricht 10ms Audio bei 16kHz. Die Verwendung von Vielfachen von 160 gewährleistet die Ausrichtung auf diese Basiseinheit, was die Verarbeitungseffizienz optimieren und ein konsistentes Verhalten über verschiedene Chunk-Größen hinweg beibehalten kann.
Für 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-Laufzeitumgebung, die dazu führen kann, dass der Lip-Sync nicht mehr funktioniert, wenn Generatoren nach Stillephasen wiederverwendet werden.
Beispielszenario: Wenn Sie TTS-Lip-Sync durchgeführt haben und dann gestoppt haben, und später erneut Lip-Sync mit neuem Audio durchführen möchten, erstellen Sie einen neuen Realistic MetaHuman Lip Sync Generator, anstatt den vorhandenen wiederzuverwenden.
Schritt 3: Audio-Eingabeverarbeitung einrichten
Sie müssen eine Methode zur Verarbeitung der Audioeingabe einrichten. Es gibt mehrere Möglichkeiten, dies zu tun, abhängig von Ihrer Audioquelle.
- Mikrofon (Echtzeit)
- Mikrofon (Wiedergabe)
- Text-zu-Sprache (Lokal)
- Text-to-Speech (Externe APIs)
- Von Audio-Datei/Puffer
- Streaming Audio Buffer
Dieser Ansatz führt die Lippenbewegung 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 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 realistische Modell verwendet den gleichen Audioverarbeitungs-Workflow wie das Standardmodell, jedoch mit der RealisticLipSyncGenerator
-Variable anstelle von VisemeGenerator
.
In jedem der für das Standardmodell 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 Lippensynchronisation ab:
- Standard (Schnelleres) Modell
- Realistisches (höhere Qualität) Modell
- Erstellen Sie eine Capturable Sound Wave mit dem Runtime Audio Importer
- Starten Sie die Audioaufnahme vom Mikrofon
- Binden Sie vor der Wiedergabe der aufnehmbaren Sound Wave an ihren
OnGeneratePCMData
-Delegaten - 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 Variable RealisticLipSyncGenerator
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 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) anstatt durch 100 (Streaming alle 10 ms), erhalten Sie häufigere Lip Sync-Updates.
- Regulär
- Streaming
Dieser Ansatz synthetisiert Sprache aus Text und führt Lip Sync durch:
- Standard (schnelleres) Modell
- Realistisches (höhere Qualität) Modell
- 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-Welle 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 Realistischen Modell unterstützt, aufgrund von ONNX Runtime-Konflikten. Für Text-zu-Sprache mit dem Realistischen Modell sollten Sie externe TTS-Dienste in Betracht ziehen (wie OpenAI oder ElevenLabs via Runtime AI Chatbot Integrator) oder das Standard-Modell verwenden.
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) anstatt durch 100 (Streaming alle 10 ms), erhalten Sie häufigere Lip Sync-Updates.
Dieser Ansatz verwendet Streaming-Text-zu-Sprache-Synthese mit Echtzeit-Lip Sync:
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Verwenden Sie Runtime Text To Speech, um Streaming-Sprache aus Text zu generieren
- Verwenden Sie Runtime Audio Importer, um die synthetisierte Audio zu importieren
- Binden Sie vor der Wiedergabe des Streaming-Sound-Waves an seinen
OnGeneratePCMData
-Delegaten - 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 Realistischen Modell aufgrund von ONNX-Runtime-Konflikten unterstützt. Für Text-zu-Sprache mit dem Realistischen 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 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.
- 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
- Realistic (Higher Quality) Model
- Verwenden Sie Runtime AI Chatbot Integrator, um Sprache aus Text mit externen APIs zu generieren (OpenAI, ElevenLabs, etc.)
- Verwenden Sie Runtime Audio Importer, um die synthetisierten Audiodaten zu importieren
- Binden Sie vor der Wiedergabe des importierten Sound-Waves an seinen
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
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.
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 (Faster) Model
- Realistic (Higher Quality) Model
- Verwenden Sie Runtime AI Chatbot Integrator, um sich mit Streaming TTS APIs (wie ElevenLabs Streaming API) zu verbinden
- 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 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 Blöcken verarbeiten möchten, um eine reaktionsschnellere Lip Sync zu erreichen, passen Sie die Berechnung in der Funktion SetNumSamplesPerChunk
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 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
.
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: Wenn Sie Audiodaten in kleineren Blöcken verarbeiten möchten, um eine reaktionsschnellere Lip Sync zu erreichen, passen Sie die Berechnung in der Funktion SetNumSamplesPerChunk
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 Streaming 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 Anzahl der Kanäle
- Rufen Sie
ProcessAudioData
von Ihrem Runtime Viseme Generator auf, wenn diese Parameter als Audio-Chunks verfügbar werden
Hier ist ein Beispiel für die Verarbeitung von Lip Sync aus Streaming-Audiodaten:
Hinweis: Wenn Sie Streaming-Audioquellen verwenden, stellen Sie 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
.
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 Streaming-Audioquellen verwenden, stellen Sie 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 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-Aktualisierungen.
Schritt 4: Anim Graph-Einrichtung
Nachdem Sie das Event Graph eingerichtet haben, wechseln Sie zum Anim Graph
, um den Generator mit der Animation des Charakters zu verbinden:
Lip Sync
- Standard (Schnelleres) Modell
- Realistisches (Höhere Qualität) Modell
- Finden Sie die Pose, die das MetaHuman-Gesicht enthält (typischerweise aus
Use cached pose 'Body Pose'
) - Fügen Sie den
Blend Runtime MetaHuman Lip Sync
-Node hinzu - Verbinden Sie die Pose mit dem
Source Pose
-Eingang 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 derOutput Pose
Wenn Lippenbewegungen in der Audioaufnahme erkannt werden, animiert sich Ihr Charakter entsprechend:
- Finden Sie die Pose, die das MetaHuman-Gesicht enthält (typischerweise aus
Use cached pose 'Body Pose'
) - Fügen Sie den
Blend Realistic MetaHuman Lip Sync
-Node hinzu - Verbinden Sie die Pose mit dem
Source Pose
-Eingang 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 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 Audioaufnahme erkanntes Lachen 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
-Eingang desBlend Runtime MetaHuman Laughter
-Nodes - Verbinden Sie den Ausgang des
Blend Runtime MetaHuman Laughter
-Nodes mit demResult
-Pin derOutput Pose
- Verbinden Sie den Ausgang des
- Falls Sie nur Lachen ohne Lip Sync verwenden:
- Verbinden Sie Ihre Quellpose direkt mit dem
Source Pose
-Eingang desBlend Runtime MetaHuman Laughter
-Nodes - Verbinden Sie den Ausgang mit dem
Result
-Pin
- Verbinden Sie Ihre Quellpose direkt mit dem
Wenn Lachen in der Audioaufnahme 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
-Knoten zwischen Ihren Körperanimationen und der finalen 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 das Layer hinzu, mit folgendenBone Name
s:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Fügen Sie 1 Element zum
- Stellen Sie die Verbindungen her:
- Bestehende Animationen (wie
BodyPose
) →Base Pose
-Eingang - Gesichtsanimation-Ausgabe (von Lip-Sync- und/oder Laughter-Knoten) →
Blend Poses 0
-Eingang - Layered blend-Knoten → Finale
Result
-Pose
- Bestehende Animationen (wie
Warum das funktioniert: Die Branch Filters isolieren die Gesichtsanimation-Knochen, wodurch Lip Sync und Laughter 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 Animation-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 in Ihrer Animationskette integrieren - entweder vor anderen Gesichtsanimationen (wodurch diese Animationen den Lip Sync/Laughter überschreiben) oder danach (wodurch Lip Sync/Laughter über Ihren bestehenden Animationen geblendet wird). Diese Flexibilität ermöglicht es Ihnen, Lip Sync und Laughter mit Augenblinzeln, Augenbrauenbewegungen, emotionalen Ausdrücken und anderen Gesichtsanimationen ohne Konflikte zu kombinieren.
Konfiguration
Lip-Sync-Konfiguration
- Standard (Faster) Model
- Realistic (Higher Quality) Model
Der Blend Runtime MetaHuman Lip Sync
-Knoten hat Konfigurationsoptionen in seinem Eigenschaften-Panel:
Eigenschaft | Standardwert | Beschreibung |
---|---|---|
Interpolation Speed | 25 | Steuert, wie schnell die Lippenbewegungen zwischen Visemen wechseln. Höhere Werte führen zu schnelleren, abrupten Übergängen. |
Reset Time | 0.2 | Die Dauer in Sekunden, nach der der Lip Sync zurückgesetzt wird. Dies ist nützlich, um zu verhindern, dass der Lip Sync weiterläuft, nachdem das Audio gestoppt wurde. |
Der Blend Realistic MetaHuman Lip Sync
-Knoten hat Konfigurationsoptionen in seinem Eigenschaften-Panel:
Eigenschaft | Standardwert | Beschreibung |
---|---|---|
Interpolation Speed | 30 | Steuert, wie schnell die Lippenbewegungen zwischen Positionen wechseln. Höhere Werte führen zu schnelleren, abrupten Übergängen. |
Reset Time | 0.2 | Die Dauer in Sekunden, nach der der Lip Sync zurückgesetzt wird. Dies ist nützlich, um zu verhindern, dass der Lip Sync weiterläuft, nachdem das Audio gestoppt wurde. |
Laughter-Konfiguration
Der Blend Runtime MetaHuman Laughter
-Node verfügt über eigene Konfigurationsoptionen:
Eigenschaft | Standardwert | Beschreibung |
---|---|---|
Interpolation Speed | 25 | Steuert, wie schnell die Lippenbewegungen zwischen Lachen-Animationen ü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 die Audioquelle gestoppt wurde. |
Max Laughter Weight | 0.7 | Skaliert die maximale Intensität der Lachen-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 folgende Faktoren berücksichtigt werden:
Überlegung | Standardmodell | Realistisches Modell |
---|---|---|
Charakterkompatibilitä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 | Kinematische 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 stattdessen das Standardmodell.
Dieses Problem betrifft nur UE 5.2 und keine anderen Engine-Versionen.
Für die meisten Projekte bietet das Standardmodell eine ausgezeichnete Balance zwischen Qualität und Performance bei gleichzeitiger Unterstützung der breitesten Palette an Charaktertypen. Das Realistische Modell ist ideal, wenn Sie die höchste visuelle Qualität speziell für MetaHuman-Charaktere in Kontexten benötigen, wo Performance-Overhead weniger kritisch ist.