Cómo usar el plugin
Esta guía te lleva a través del proceso de configuración de Runtime MetaHuman Lip Sync para tus personajes MetaHuman.
Nota: Runtime MetaHuman Lip Sync funciona tanto con MetaHuman como con personajes personalizados. El plugin soporta varios tipos de personajes incluyendo:
- Personajes comerciales populares (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, etc)
- Personajes con blendshapes basados en FACS
- Modelos que usan estándares de blendshape ARKit
- Personajes con conjuntos de fonemas Preston Blair
- Sistemas de fonemas de 3ds Max
- Cualquier personaje con objetivos de morph personalizados para expresiones faciales
Para instrucciones detalladas sobre cómo configurar personajes personalizados, incluyendo referencias de mapeo de visemas para todos los estándares mencionados, consulta la Guía de configuración de personajes personalizados.
Requisitos previos
Antes de comenzar, asegúrate de:
- El plugin MetaHuman está habilitado en tu proyecto (Nota: A partir de UE 5.6, este paso ya no es necesario ya que la funcionalidad MetaHuman está integrada directamente en el motor)
- Tienes al menos un personaje MetaHuman descargado y disponible en tu proyecto
- El plugin Runtime MetaHuman Lip Sync está instalado
Plugin de Extensión de Modelo Estándar
Si planeas usar el Modelo Estándar (Más rápido), necesitarás instalar el plugin de extensión:
- Descarga el Standard Lip Sync Extension plugin desde Google Drive
- Extrae la carpeta del archivo descargado en la carpeta
Pluginsde tu proyecto (crea esta carpeta si no existe) - Asegúrate de que tu proyecto esté configurado como un proyecto C++ (incluso si no tienes código C++)
- Reconstruye tu proyecto
- Esta extensión es solo necesaria si quieres usar el Modelo Estándar. Si solo necesitas el Modelo Realista, puedes omitir este paso.
- Para más información sobre cómo construir plugins manualmente, consulta el tutorial Building Plugins
Plugins Adicionales
- Si planeas usar captura de audio (por ejemplo, entrada de micrófono), instala el plugin Runtime Audio Importer.
- Si planeas usar funcionalidad de texto a voz con mis plugins (puedes tener tu propio TTS personalizado u otra entrada de audio), entonces además del plugin Runtime Audio Importer, instala también:
- Para TTS local, el plugin Runtime Text To Speech.
- Para proveedores externos de TTS (ElevenLabs, OpenAI), el plugin Runtime AI Chatbot Integrator.
Configuración Específica por Plataforma
Configuración para Android / Meta Quest
Si estás desarrollando para plataformas Android o Meta Quest y encuentras errores de compilación con este plugin, necesitarás deshabilitar la arquitectura x86_64 (x64) para Android en la configuración de tu proyecto:
- Ve a Edit > Project Settings
- Navega a Platforms > Android
- En Platforms - Android, sección Build, encuentra Support x86_64 [aka x64] y asegúrate de que esté deshabilitado, como se muestra abajo

Esto se debe a que el plugin actualmente solo soporta las arquitecturas arm64-v8a y armeabi-v7a para plataformas Android / Meta Quest.
Proceso de Configuración
Paso 1: Localizar y modificar el Blueprint de animación facial
- UE 5.5 y anteriores (o MetaHumans Legacy en UE 5.6+)
- UE 5.6+ MetaHuman Creator Characters
Necesitas modificar un Animation Blueprint que será usado para las animaciones faciales de tu personaje MetaHuman. El Animation Blueprint facial predeterminado de MetaHuman se encuentra en:
Content/MetaHumans/Common/Face/Face_AnimBP

Tienes varias opciones para implementar la funcionalidad de lip sync:
- Edit Default Asset (Simplest Option)
- Create Duplicate
- Use Custom Animation Blueprint
Abre directamente el Face_AnimBP predeterminado y realiza tus modificaciones. Cualquier cambio afectará a todos los personajes MetaHuman que utilicen este Animation Blueprint.
Nota: Este enfoque es conveniente pero impactará a todos los personajes que usen el Animation Blueprint predeterminado.
- Duplica
Face_AnimBPy asígnale un nombre descriptivo - Localiza la clase Blueprint de tu personaje (por ejemplo, para el personaje "Bryan", estaría en
Content/MetaHumans/Bryan/BP_Bryan) - Abre el Blueprint del personaje y encuentra el componente Face
- Cambia la propiedad Anim Class a tu nuevo Animation Blueprint duplicado
Nota: Este enfoque te permite personalizar el lip sync para personajes específicos mientras dejas otros sin cambios.
Puedes implementar la mezcla de lip sync en cualquier Animation Blueprint que tenga acceso a los huesos faciales requeridos:
- Crea o usa un Animation Blueprint personalizado existente
- Asegúrate de que tu Animation Blueprint funcione con un esqueleto que contenga los mismos huesos faciales que el
Face_Archetype_Skeletonpredeterminado de MetaHuman (que es el esqueleto estándar usado para cualquier personaje MetaHuman)
Nota: Este enfoque te da la máxima flexibilidad para integrarlo con sistemas de animación personalizados.
A partir de UE 5.6, se introdujo el nuevo sistema MetaHuman Creator, que crea personajes sin el asset tradicional Face_AnimBP. Para estos personajes, el plugin proporciona un Animation Blueprint facial ubicado en:
Content/LipSyncData/LipSync_Face_AnimBP
Este Animation Blueprint se encuentra en la carpeta de contenido del plugin y será sobrescrito con cada actualización del plugin. Para evitar perder tus personalizaciones, es altamente recomendado:
- Copiar este activo a la carpeta Content de tu proyecto (por ejemplo, a
YourProject/Content/MetaHumans/LipSync_Face_AnimBP) - Usar tu versión copiada en la configuración de tu personaje
- Hacer todas tus modificaciones en la versión copiada
Esto asegura que tus configuraciones de lip sync persistirán a través de las actualizaciones del plugin.
Usando el Face Animation Blueprint del Plugin:
- Localiza la clase Blueprint de tu personaje de MetaHuman Creator
- Abre el Blueprint del personaje y encuentra el componente Face
- Cambia la propiedad Anim Class al
LipSync_Face_AnimBPdel plugin - Continúa con los Pasos 2-4 para configurar la funcionalidad Runtime MetaHuman Lip Sync
Opciones Alternativas:
- Usar Instrucciones Legacy: Aún puedes seguir las instrucciones de UE 5.5 mencionadas arriba si estás trabajando con MetaHumans legacy o prefieres el flujo de trabajo tradicional
- Crear un Animation Blueprint Personalizado: Crea tu propio Animation Blueprint que funcione con la estructura de esqueleto de MetaHuman Creator
Nota: Si estás usando UE 5.6+ pero trabajando con MetaHumans legacy (no creados a través de MetaHuman Creator), usa las instrucciones de la pestaña "UE 5.5 and Earlier" en su lugar.
Importante: La mezcla de Runtime MetaHuman Lip Sync puede implementarse en cualquier activo Animation Blueprint que tenga acceso a una pose que contenga los huesos faciales presentes en el Face_Archetype_Skeleton por defecto de MetaHuman. No estás limitado a las opciones anteriores - estos son solo enfoques comunes de implementación.
Paso 2: Configuración del Event Graph
Abre tu Face Animation Blueprint y cambia al Event Graph. Necesitarás crear un generador que procese datos de audio y genere animación de lip sync.
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Añade el nodo
Event Blueprint Begin Playsi no existe ya - Añade el nodo
Create Runtime Viseme Generatory conéctalo al evento Begin Play - Guarda la salida como una variable (ej. "VisemeGenerator") para usar en otras partes del grafo

- Añade el nodo
Event Blueprint Begin Playsi no existe ya - Añade el nodo
Create Realistic MetaHuman Lip Sync Generatory conéctalo al evento Begin Play - Guarda la salida como una variable (ej. "RealisticLipSyncGenerator") para usar en otras partes del grafo
- (Opcional) Configura los ajustes del generador usando el parámetro Configuration
- (Opcional) Establece el Processing Chunk Size en el objeto Realistic MetaHuman Lip Sync Generator

Nota: El modelo realista está optimizado específicamente para personajes MetaHuman y no es compatible con tipos de personajes personalizados.
Opciones de Configuración
El nodo Create Realistic MetaHuman Lip Sync Generator acepta un parámetro opcional de Configuration que te permite personalizar el comportamiento del generador:
Tipo de Modelo
El ajuste Model Type determina qué versión del modelo realista usar:
| Tipo de Modelo | Rendimiento | Calidad Visual | Manejo de Ruido | Casos de Uso Recomendados |
|---|---|---|---|---|
| Highly Optimized (Predeterminado) | Máximo rendimiento, menor uso de CPU | Buena calidad | Puede mostrar movimientos de boca notables con ruido de fondo o sonidos no vocales | Entornos de audio limpios, escenarios críticos de rendimiento |
| Optimized | Buen rendimiento, uso moderado de CPU | Alta calidad | Mayor estabilidad con audio ruidoso | Equilibrio entre rendimiento y calidad, condiciones de audio mixtas |
| Original Unoptimized | Adecuado para uso en tiempo real en CPUs modernas | Máxima calidad | Más estable con ruido de fondo y sonidos no vocales | Producciones de alta calidad, entornos de audio ruidosos, cuando se necesita máxima precisión |
Ajustes de Rendimiento
Intra Op Threads: Controla el número de hilos usados para operaciones internas de procesamiento del modelo.
- 0 (Predeterminado/Automático): Usa detección automática (típicamente 1/4 de los núcleos de CPU disponibles, máximo 4)
- 1-16: Especifica manualmente el conteo de hilos. Valores más altos pueden mejorar el rendimiento en sistemas multi-núcleo pero usan más CPU
Inter Op Threads: Controla el número de hilos usados para ejecución paralela de diferentes operaciones del modelo.
- 0 (Predeterminado/Automático): Usa detección automática (típicamente 1/8 de los núcleos de CPU disponibles, máximo 2)
- 1-8: Especifica manualmente el conteo de hilos. Normalmente se mantiene bajo para procesamiento en tiempo real
Uso de Configuración
Para configurar el generador:
- En el nodo
Create Realistic MetaHuman Lip Sync Generator, expande el parámetro Configuration - Establece Model Type a tu opción preferida:
- Usa Highly Optimized para mejor rendimiento (recomendado para la mayoría de usuarios)
- Usa Optimized para un equilibrio entre rendimiento y calidad
- Usa Original Unoptimized solo cuando la máxima calidad es esencial
- Ajusta Intra Op Threads e Inter Op Threads si es necesario (deja en 0 para detección automática en la mayoría de casos) Recomendaciones de Rendimiento:
- Para la mayoría de proyectos con audio limpio, usa Highly Optimized para el mejor rendimiento
- Si trabajas con audio que contiene ruido de fondo, música o sonidos no vocales, considera usar los modelos Optimized u Original Unoptimized para mayor estabilidad
- El modelo Highly Optimized puede mostrar movimientos sutiles de la boca al procesar audio no vocal debido a las técnicas de optimización aplicadas durante la creación del modelo
- El modelo Original Unoptimized, aunque requiere más recursos de CPU, sigue siendo adecuado para aplicaciones en tiempo real en hardware moderno y proporciona los resultados más precisos con condiciones de audio desafiantes
- Solo ajusta los conteos de hilos si experimentas problemas de rendimiento o tienes requisitos específicos de optimización
- Mayores conteos de hilos no siempre significan mejor rendimiento - los valores óptimos dependen de tu hardware específico y requisitos del proyecto
Configuración del Tamaño del Fragmento de Procesamiento: El Processing Chunk Size determina cuántas muestras se procesan en cada paso de inferencia. El valor predeterminado es 160 muestras, que corresponde a 10ms de audio a 16kHz (la tasa de muestreo interna de procesamiento). Puedes ajustar este valor para equilibrar entre frecuencia de actualización y uso de CPU:
- Valores más pequeños proporcionan actualizaciones más frecuentes pero aumentan el uso de CPU
- Valores más grandes reducen la carga de CPU pero pueden disminuir la capacidad de respuesta del Lip Sync
Para configurar el Processing Chunk Size:
- Accede a tu objeto
Realistic MetaHuman Lip Sync Generator - Localiza la propiedad
Processing Chunk Size - Establece tu valor deseado
Se recomienda usar valores que sean múltiplos de 160. Esto se alinea con la estructura interna de procesamiento del modelo. Los valores recomendados incluyen:
160(predeterminado, mínimo recomendado)320480640- etc.
El valor predeterminado de Processing Chunk Size de 160 muestras corresponde a 10ms de audio a 16kHz. Usar múltiplos de 160 mantiene la alineación con esta unidad base, lo que puede ayudar a optimizar la eficiencia del procesamiento y mantener un comportamiento consistente entre diferentes tamaños de fragmento.

Para un funcionamiento confiable y consistente con el Modelo Realista, es requerido recrear el Realistic MetaHuman Lip Sync Generator cada vez que quieras alimentar nuevos datos de audio después de un período de inactividad. Esto se debe al comportamiento del ONNX runtime que puede hacer que el Lip Sync deje de funcionar al reutilizar generadores después de períodos de silencio.
Ejemplo de escenario: Si realizaste Lip Sync con TTS y luego lo detuviste, y más tarde quieres realizar Lip Sync nuevamente con nuevo audio, crea un nuevo Realistic MetaHuman Lip Sync Generator en lugar de reutilizar el existente.
Paso 3: Configura el procesamiento de entrada de audio
Necesitas configurar un método para procesar la entrada de audio. Hay varias formas de hacer esto dependiendo de tu fuente de audio.
- Micrófono (Tiempo real)
- Micrófono (Reproducción)
- Texto a Voz (Local)
- Text-to-Speech (External APIs)
- Desde Archivo/Búfer de Audio
- Streaming Audio Buffer
Este enfoque realiza la sincronización de labios en tiempo real mientras se habla al micrófono:
- Modelo Estándar (Más rápido)
- Modelo Realista (Mayor calidad)
- Crea un Capturable Sound Wave usando Runtime Audio Importer
- Antes de comenzar a capturar audio, enlaza al delegado
OnPopulateAudioData - En la función enlazada, llama a
ProcessAudioDatadesde tu Runtime Viseme Generator - Comienza a capturar audio desde el micrófono

El Modelo Realista usa el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator en lugar de VisemeGenerator.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplaza:
VisemeGeneratorcon tu variableRealisticLipSyncGenerator- Los nombres de funciones y parámetros permanecen idénticos entre ambos modelos

Este enfoque captura audio de un micrófono, luego lo reproduce con sincronización de labios:
- Modelo Estándar (Más rápido)
- Realistic (Higher Quality) Model
- Crea un Capturable Sound Wave usando Runtime Audio Importer
- Comienza la captura de audio desde el micrófono
- Antes de reproducir el capturable sound wave, enlaza a su delegado
OnGeneratePCMData - En la función enlazada, llama a
ProcessAudioDatadesde tu Runtime Viseme Generator

El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator en lugar de VisemeGenerator.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplace:
VisemeGeneratorcon su variableRealisticLipSyncGenerator- Los nombres de funciones y parámetros permanecen idénticos entre ambos modelos

Nota: Si desea procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajuste el cálculo en la función SetNumSamplesPerChunk. Por ejemplo, dividir la frecuencia de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
- Regular
- Streaming
Este enfoque sintetiza voz a partir de texto y realiza sincronización labial:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Use Runtime Text To Speech para generar voz a partir de texto
- Use Runtime Audio Importer para importar el audio sintetizado
- Antes de reproducir la onda de sonido importada, vincúlela a su delegado
OnGeneratePCMData - En la función vinculada, llame a
ProcessAudioDatadesde su Runtime Viseme Generator

El TTS local proporcionado por el plugin Runtime Text To Speech actualmente no es compatible con el modelo Realista debido a conflictos con el tiempo de ejecución ONNX. Para texto a voz con el modelo Realista, considere usar servicios TTS externos (como OpenAI o ElevenLabs a través de Runtime AI Chatbot Integrator) o use el modelo Estándar en su lugar.
Nota: Si desea procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajuste el cálculo en la función SetNumSamplesPerChunk. Por ejemplo, dividir la frecuencia de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
Este enfoque utiliza síntesis de texto a voz en streaming con sincronización labial en tiempo real:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Usa Runtime Text To Speech para generar voz en streaming a partir de texto
- Usa Runtime Audio Importer para importar el audio sintetizado
- Antes de reproducir la onda de sonido en streaming, enlaza a su delegado
OnGeneratePCMData - En la función enlazada, llama a
ProcessAudioDatadesde tu Runtime Viseme Generator

El TTS local proporcionado por el plugin Runtime Text To Speech actualmente no es compatible con el modelo Realistic debido a conflictos con el runtime ONNX. Para texto a voz con el modelo Realistic, considera usar servicios externos de TTS (como OpenAI o ElevenLabs a través de Runtime AI Chatbot Integrator) o usa el modelo Standard en su lugar.
Nota: Si deseas procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajusta el cálculo en la función SetNumSamplesPerChunk. Por ejemplo, dividir la tasa de muestreo por 150 (streaming cada ~6.67 ms) en lugar de 100 (streaming cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
- Regular
- Streaming
Este enfoque utiliza el plugin Runtime AI Chatbot Integrator para generar voz sintetizada desde servicios de IA (OpenAI o ElevenLabs) y realizar sincronización labial:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Usa Runtime AI Chatbot Integrator para generar voz a partir de texto usando APIs externas (OpenAI, ElevenLabs, etc.)
- Usa Runtime Audio Importer para importar los datos de audio sintetizados
- Antes de reproducir la onda de sonido importada, enlaza a su delegado
OnGeneratePCMData - En la función enlazada, llama a
ProcessAudioDatadesde tu Runtime Viseme Generator

El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator en lugar de VisemeGenerator.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplace:
VisemeGeneratorcon su variableRealisticLipSyncGenerator- Los nombres de funciones y parámetros permanecen idénticos entre ambos modelos

Nota: Si desea procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajuste el cálculo en la función SetNumSamplesPerChunk. Por ejemplo, dividir la tasa de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
Este enfoque utiliza el plugin Runtime AI Chatbot Integrator para generar voz sintetizada en streaming desde servicios de IA (OpenAI o ElevenLabs) y realizar la sincronización labial:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Use Runtime AI Chatbot Integrator para conectarse a APIs de TTS en streaming (como ElevenLabs Streaming API)
- Use Runtime Audio Importer para importar los datos de audio sintetizados
- Antes de reproducir la onda de sonido en streaming, vincúlese a su delegado
OnGeneratePCMData - En la función vinculada, llame a
ProcessAudioDatadesde su Runtime Viseme Generator

El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator en lugar de VisemeGenerator.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplace:
VisemeGeneratorcon su variableRealisticLipSyncGenerator- Los nombres de funciones y parámetros permanecen idénticos entre ambos modelos

Nota: Si deseas procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajusta el cálculo en la función SetNumSamplesPerChunk. Por ejemplo, dividir la tasa de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
Este enfoque utiliza archivos de audio pregrabados o búferes de audio para la sincronización labial:
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Usa Runtime Audio Importer para importar un archivo de audio desde disco o memoria
- Antes de reproducir el sonido importado, enlaza a su delegado
OnGeneratePCMData - En la función enlazada, llama a
ProcessAudioDatadesde tu Runtime Viseme Generator - Reproduce el sonido importado y observa la animación de sincronización labial

El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator en lugar de VisemeGenerator.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplaza:
VisemeGeneratorcon tu variableRealisticLipSyncGenerator- Los nombres de funciones y parámetros permanecen idénticos entre ambos modelos

Nota: Si deseas procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajusta el cálculo en la función SetNumSamplesPerChunk. Por ejemplo, dividir la tasa de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
Para transmitir datos de audio desde un buffer, necesitas:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Datos de audio en formato PCM float (un array de muestras en punto flotante) disponibles desde tu fuente de streaming
- La tasa de muestreo y el número de canales
- Llama a
ProcessAudioDatadesde tu Runtime Viseme Generator con estos parámetros a medida que los fragmentos de audio estén disponibles
Aquí hay un ejemplo de procesamiento de Lip Sync desde datos de audio en streaming:

Nota: Cuando uses fuentes de audio en streaming, asegúrate de gestionar el tiempo de reproducción adecuadamente para evitar distorsiones. Consulta la documentación de Streaming Sound Wave para más información sobre la gestión correcta de audio en streaming.
El Realistic Model utiliza el mismo flujo de trabajo de procesamiento de audio que el Standard Model, pero con la variable RealisticLipSyncGenerator en lugar de VisemeGenerator.
En cada uno de los ejemplos mostrados para el Standard Model, simplemente reemplaza:
VisemeGeneratorcon tu variableRealisticLipSyncGenerator- Los nombres de funciones y parámetros permanecen idénticos entre ambos modelos

Nota: Cuando uses fuentes de audio en streaming, asegúrate de gestionar el tiempo de reproducción adecuadamente para evitar distorsiones. Consulta la documentación de Streaming Sound Wave para más información sobre la gestión correcta de audio en streaming.
Nota: Si deseas procesar datos de audio en fragmentos más pequeños para un Lip Sync más responsivo, ajusta el cálculo en la función SetNumSamplesPerChunk. Por ejemplo, dividir la tasa de muestreo por 150 (streaming cada ~6.67 ms) en lugar de 100 (streaming cada 10 ms) proporcionará actualizaciones de Lip Sync más frecuentes.
Paso 4: Configuración del Anim Graph
Después de configurar el Event Graph, cambia al Anim Graph para conectar el generador a la animación del personaje:
Lip Sync
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Localiza la pose que contiene la cara del MetaHuman (típicamente de
Use cached pose 'Body Pose') - Añade el nodo
Blend Runtime MetaHuman Lip Sync - Conecta la pose al
Source Posedel nodoBlend Runtime MetaHuman Lip Sync - Conecta tu variable
RuntimeVisemeGeneratoral pinViseme Generator - Conecta la salida del nodo
Blend Runtime MetaHuman Lip Syncal pinResultdelOutput Pose

Cuando se detecte lip sync en el audio, tu personaje se animará dinámicamente:

- Localiza la pose que contiene la cara del MetaHuman (típicamente de
Use cached pose 'Body Pose') - Añade el nodo
Blend Realistic MetaHuman Lip Sync - Conecta la pose al
Source Posedel nodoBlend Realistic MetaHuman Lip Sync - Conecta tu variable
RealisticLipSyncGeneratoral pinLip Sync Generator - Conecta la salida del nodo
Blend Realistic MetaHuman Lip Syncal pinResultdelOutput Pose

El Modelo Realista proporciona mayor calidad visual con movimientos de boca más naturales:

Nota: El Modelo Realista está diseñado exclusivamente para personajes MetaHuman y no es compatible con tipos de personajes personalizados.
Animación de Risa
También puedes añadir animaciones de risa que responderán dinámicamente a la risa detectada en el audio:
- Añade el nodo
Blend Runtime MetaHuman Laughter - Conecta tu variable
RuntimeVisemeGeneratoral pinViseme Generator - Si ya estás usando lip sync:
- Conecta la salida del nodo
Blend Runtime MetaHuman Lip SyncalSource Posedel nodoBlend Runtime MetaHuman Laughter - Conecta la salida del nodo
Blend Runtime MetaHuman Laughteral pinResultdelOutput Pose
- Conecta la salida del nodo
- Si solo usas risa sin lip sync:
- Conecta tu pose fuente directamente al
Source Posedel nodoBlend Runtime MetaHuman Laughter - Conecta la salida al pin
Result
- Conecta tu pose fuente directamente al

Cuando se detecte risa en el audio, tu personaje se animará dinámicamente:

Combinación con Animaciones Corporales
Para aplicar lip sync y risa junto con animaciones corporales existentes sin sobrescribirlas:
- Agrega un nodo
Layered blend per boneentre tus animaciones del cuerpo y la salida final. Asegúrate de queUse Attached Parentesté en true. - Configura el layer setup:
- Añade 1 item al array
Layer Setup - Añade 3 items a
Branch Filterspara el layer, con los siguientesBone Names:FACIAL_C_FacialRootFACIAL_C_Neck2RootFACIAL_C_Neck1Root
- Añade 1 item al array
- Realiza las conexiones:
- Animaciones existentes (como
BodyPose) → entradaBase Pose - Salida de animación facial (de los nodos de lip sync y/o risa) → entrada
Blend Poses 0 - Nodo Layered blend → pose
Resultfinal
- Animaciones existentes (como

Por qué funciona: Los branch filters aíslan los huesos de animación facial, permitiendo que el lip sync y la risa se mezclen exclusivamente con los movimientos faciales mientras se preservan las animaciones originales del cuerpo. Esto coincide con la estructura del rig facial de MetaHuman, asegurando una integración natural.
Nota: Las características de lip sync y risa están diseñadas para funcionar de forma no destructiva con tu configuración de animación existente. Solo afectan a los huesos faciales específicos necesarios para el movimiento de la boca, dejando intactas otras animaciones faciales. Esto significa que puedes integrarlos de forma segura en cualquier punto de tu cadena de animación - ya sea antes de otras animaciones faciales (permitiendo que esas animaciones sobrescriban el lip sync/risa) o después de ellas (dejando que el lip sync/risa se mezcle sobre tus animaciones existentes). Esta flexibilidad te permite combinar lip sync y risa con parpadeos, movimientos de cejas, expresiones emocionales y otras animaciones faciales sin conflictos.
Configuración
Configuración de Lip Sync
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
El nodo Blend Runtime MetaHuman Lip Sync tiene opciones de configuración en su panel de propiedades:
| Propiedad | Valor por defecto | Descripción |
|---|---|---|
| Interpolation Speed | 25 | Controla la rapidez con que los movimientos labiales transicionan entre visemas. Valores más altos resultan en transiciones más rápidas y abruptas. |
| Reset Time | 0.2 | La duración en segundos después de la cual el lip sync se reinicia. Es útil para evitar que el lip sync continúe después de que el audio se haya detenido. |
El nodo Blend Realistic MetaHuman Lip Sync tiene opciones de configuración en su panel de propiedades:
| Propiedad | Valor por defecto | Descripción |
|---|---|---|
| Interpolation Speed | 30 | Controla la rapidez con que los movimientos labiales transicionan entre posiciones. Valores más altos resultan en transiciones más rápidas y abruptas. |
| Reset Time | 0.2 | La duración en segundos después de la cual el lip sync se reinicia. Es útil para evitar que el lip sync continúe después de que el audio se haya detenido. |
Configuración de Risa
El nodo Blend Runtime MetaHuman Laughter tiene sus propias opciones de configuración:
| Propiedad | Valor por defecto | Descripción |
|---|---|---|
| Velocidad de Interpolación | 25 | Controla qué tan rápido transicionan los movimientos labiales entre las animaciones de risa. Valores más altos resultan en transiciones más rápidas y abruptas. |
| Tiempo de Reinicio | 0.2 | La duración en segundos después de la cual la risa se reinicia. Esto es útil para evitar que la risa continúe después de que el audio se haya detenido. |
| Peso Máximo de Risa | 0.7 | Escala la intensidad máxima de la animación de risa (0.0 - 1.0). |
Eligiendo Entre Modelos de Lip Sync
Al decidir qué modelo de lip sync usar para tu proyecto, considera estos factores:
| Consideración | Modelo Estándar | Modelo Realista |
|---|---|---|
| Compatibilidad de Personajes | MetaHumans y todos los tipos de personajes personalizados | Solo MetaHumans |
| Calidad Visual | Buen lip sync con rendimiento eficiente | Realismo mejorado con movimientos de boca más naturales |
| Rendimiento | Optimizado para todas las plataformas incluyendo móvil/VR | Requerimientos de recursos ligeramente más altos |
| Casos de Uso | Aplicaciones generales, juegos, VR/AR, móvil | Experiencias cinemáticas, interacciones cercanas con personajes |
Compatibilidad con Versiones del Motor
Si estás usando Unreal Engine 5.2, el Modelo Realista puede no funcionar correctamente debido a un bug en la biblioteca de resampling de UE. Para usuarios de UE 5.2 que necesiten funcionalidad de lip sync confiable, por favor usa el Modelo Estándar en su lugar.
Este problema es específico de UE 5.2 y no afecta otras versiones del motor.
Para la mayoría de proyectos, el Modelo Estándar provee un excelente balance entre calidad y rendimiento mientras soporta la más amplia gama de tipos de personajes. El Modelo Realista es ideal cuando necesitas la más alta fidelidad visual específicamente para personajes MetaHuman en contextos donde la sobrecarga de rendimiento es menos crítica.