Saltar al contenido principal

Configuración del Plugin

Configuración del Modelo

Configuración Estándar del Modelo

El nodo Create Runtime Viseme Generator utiliza configuraciones predeterminadas que funcionan bien para la mayoría de los escenarios. La configuración se maneja a través de las propiedades del nodo de mezcla del Animation Blueprint.

Para ver las opciones de configuración del Animation Blueprint, consulta la sección Configuración de Sincronización Labial más abajo.

Configuración del Modelo Realista

El nodo Create Realistic MetaHuman Lip Sync Generator acepta un parámetro opcional Configuration que te permite personalizar el comportamiento del generador:

Tipo de Modelo

La configuración Model Type determina qué versión del modelo realista usar:

Tipo de ModeloRendimientoCalidad VisualManejo de RuidoCasos de Uso Recomendados
Altamente Optimizado (Predeterminado)Mayor rendimiento, menor uso de CPUBuena calidadPuede mostrar movimientos de boca notorios con ruido de fondo o sonidos no vocalesEntornos de audio limpios, escenarios críticos de rendimiento
Semi-OptimizadoBuen rendimiento, uso moderado de CPUAlta calidadMayor estabilidad con audio ruidosoRendimiento y calidad equilibrados, condiciones de audio mixtas
OriginalAdecuado para uso en tiempo real en CPUs modernasLa más alta calidadMás estable con ruido de fondo y sonidos no vocalesProducciones de alta calidad, entornos de audio ruidosos, cuando se necesita la máxima precisión

Configuraciones de Rendimiento

Intra Op Threads: Controla el número de hilos utilizados para las operaciones de procesamiento interno 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 recuento 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 utilizados para la 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 recuento de hilos. Generalmente se mantiene bajo para procesamiento en tiempo real

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 (10ms de audio a 16kHz):

  • 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 de la sincronización labial
  • Se recomienda usar múltiplos de 160 para una alineación óptima

Configurar el Tamaño del Fragmento de Procesamiento

Configuración del Modelo con Estados de Ánimo

El nodo Create Realistic MetaHuman Lip Sync With Mood Generator proporciona opciones de configuración adicionales más allá del modelo realista básico:

Configuración Básica

Lookahead Ms: Tiempo de anticipación en milisegundos para mejorar la precisión de la sincronización labial.

  • Predeterminado: 80ms
  • Rango: 20ms a 200ms (debe ser divisible por 20)
  • Valores más altos proporcionan mejor sincronización pero aumentan la latencia

Output Type: Controla qué controles faciales se generan.

  • Full Face: Los 81 controles faciales (cejas, ojos, nariz, boca, mandíbula, lengua)
  • Mouth Only: Solo controles relacionados con la boca, mandíbula y lengua

Performance Settings: Utiliza las mismas configuraciones de Intra Op Threads e Inter Op Threads que el modelo realista regular.

Configuraciones de Estado de Ánimo

Estados de Ánimo Disponibles:

  • Neutral, Happy, Sad, Disgust, Anger, Surprise, Fear
  • Confident, Excited, Bored, Playful, Confused

Intensidad del Estado de Ánimo: Controla cuán fuertemente afecta el estado de ánimo a la animación (0.0 a 1.0)

Control de Estado de Ánimo en Tiempo de Ejecución

Puedes ajustar las configuraciones de estado de ánimo durante el tiempo de ejecución utilizando las siguientes funciones:

  • Set Mood: Cambia el tipo de estado de ánimo actual
  • Set Mood Intensity: Ajusta cuán fuertemente afecta el estado de ánimo a la animación (0.0 a 1.0)
  • Set Lookahead Ms: Modifica el tiempo de anticipación para la sincronización
  • Set Output Type: Cambia entre controles Full Face y Mouth Only

Configuración de Estado de Ánimo

Guía de Selección de Estado de Ánimo

Elige estados de ánimo apropiados según tu contenido:

Estado de ÁnimoMejor ParaRango Típico de Intensidad
NeutralConversación general, narración, estado predeterminado0.5 - 1.0
HappyContenido positivo, diálogo alegre, celebraciones0.6 - 1.0
SadContenido melancólico, escenas emocionales, momentos sombríos0.5 - 0.9
DisgustReacciones negativas, contenido desagradable, rechazo0.4 - 0.8
AngerDiálogo agresivo, escenas de confrontación, frustración0.6 - 1.0
SurpriseEventos inesperados, revelaciones, reacciones de sorpresa0.7 - 1.0
FearSituaciones amenazantes, ansiedad, diálogo nervioso0.5 - 0.9
ConfidentPresentaciones profesionales, diálogo de liderazgo, discurso asertivo0.7 - 1.0
ExcitedContenido energético, anuncios, diálogo entusiasta0.8 - 1.0
BoredContenido monótono, diálogo desinteresado, discurso cansado0.3 - 0.7
PlayfulConversación casual, humor, interacciones ligeras0.6 - 0.9
ConfusedDiálogo con muchas preguntas, incertidumbre, desconcierto0.4 - 0.8

Configuración del Animation Blueprint

Configuración de Sincronización Labial

El nodo Blend Runtime MetaHuman Lip Sync tiene opciones de configuración en su panel de propiedades:

PropiedadPredeterminadoDescripción
Interpolation Speed25Controla la rapidez con la que los movimientos labiales transicionan entre visemas. Valores más altos resultan en transiciones más rápidas y abruptas.
Reset Time0.2La duración en segundos después de la cual se reinicia la sincronización labial. Esto es útil para evitar que la sincronización labial continúe después de que el audio se haya detenido.

Animación de Risa

También puedes agregar animaciones de risa que responderán dinámicamente a la risa detectada en el audio:

  1. Agrega el nodo Blend Runtime MetaHuman Laughter
  2. Conecta tu variable RuntimeVisemeGenerator al pin Viseme Generator
  3. Si ya estás usando sincronización labial:
    • Conecta la salida del nodo Blend Runtime MetaHuman Lip Sync al Source Pose del nodo Blend Runtime MetaHuman Laughter
    • Conecta la salida del nodo Blend Runtime MetaHuman Laughter al pin Result del Output Pose
  4. Si usas solo risa sin sincronización labial:
    • Conecta tu pose de origen directamente al Source Pose del nodo Blend Runtime MetaHuman Laughter
    • Conecta la salida al pin Result

Blend Runtime MetaHuman Laughter

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

Configuración de la Risa

El nodo Blend Runtime MetaHuman Laughter tiene sus propias opciones de configuración:

PropiedadValor por DefectoDescripción
Velocidad de Interpolación25Controla la rapidez con la que los movimientos labiales transicionan entre las animaciones de risa. Valores más altos resultan en transiciones más rápidas y abruptas.
Tiempo de Reinicio0.2La duración en segundos después de la cual se reinicia la risa. Esto es útil para evitar que la risa continúe después de que el audio se haya detenido.
Peso Máximo de Risa0.7Escala la intensidad máxima de la animación de risa (0.0 - 1.0).

Nota: La detección de risa está disponible actualmente solo con el Modelo Estándar.

Combinación con Animaciones Existentes

Para aplicar sincronización labial y risa junto con animaciones corporales existentes y animaciones faciales personalizadas sin sobrescribirlas:

  1. Agrega un nodo Layered blend per bone entre tus animaciones corporales y la salida final. Asegúrate de que Use Attached Parent sea verdadero.
  2. Configura la configuración de capas:
    • Agrega 1 elemento al array Layer Setup
    • Agrega 3 elementos a los Branch Filters para la capa, con los siguientes Bone Names:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. Importante para animaciones faciales personalizadas: En Curve Blend Option, selecciona "Use Max Value". Esto permite que las animaciones faciales personalizadas (expresiones, emociones, etc.) se superpongan correctamente sobre la sincronización labial.
  4. Realiza las conexiones:
    • Animaciones existentes (como BodyPose) → entrada Base Pose
    • Salida de animación facial (de los nodos de sincronización labial y/o risa) → entrada Blend Poses 0
    • Nodo de mezcla por capas → pose Result final

Layered Blend Per Bone

Selección del Conjunto de Morph Targets

El Modelo Estándar utiliza assets de pose que inherentemente soportan cualquier convención de nombres de morph target a través de la configuración de asset de pose personalizada. No se necesita configuración adicional.

Ajuste Fino del Comportamiento de Sincronización Labial

Control de Protrusión de la Lengua

En el modelo estándar de sincronización labial, puedes notar un movimiento excesivo de la lengua hacia adelante durante ciertos fonemas. Para controlar la protrusión de la lengua:

  1. Después de tu nodo de mezcla de sincronización labial, agrega un nodo Modify Curve
  2. Haz clic derecho en el nodo Modify Curve y selecciona Add Curve Pin
  3. Agrega un pin de curva con el nombre CTRL_expressions_tongueOut
  4. Establece la propiedad Apply Mode del nodo en Scale
  5. Ajusta el parámetro Value para controlar la extensión de la lengua (ej., 0.8 para reducir la protrusión en un 20%)

Control de Apertura de la Mandíbula

La sincronización labial realista puede producir movimientos de mandíbula excesivamente sensibles dependiendo de tu contenido de audio y requisitos visuales. Para ajustar la intensidad de la apertura de la mandíbula:

  1. Después de tu nodo de mezcla de sincronización labial, agrega un nodo Modify Curve
  2. Haz clic derecho en el nodo Modify Curve y selecciona Add Curve Pin
  3. Agrega un pin de curva con el nombre CTRL_expressions_jawOpen
  4. Establece la propiedad Apply Mode del nodo en Scale
  5. Ajusta el parámetro Value para controlar el rango de apertura de la mandíbula (ej., 0.9 para reducir el movimiento de la mandíbula en un 10%)

Ajuste Fino Específico del Estado de Ánimo

Para modelos con estados de ánimo habilitados, puedes ajustar finamente expresiones emocionales específicas:

Control de Cejas:

  • CTRL_expressions_browRaiseInL / CTRL_expressions_browRaiseInR - Elevación de la ceja interior
  • CTRL_expressions_browRaiseOuterL / CTRL_expressions_browRaiseOuterR - Elevación de la ceja exterior
  • CTRL_expressions_browDownL / CTRL_expressions_browDownR - Descenso de la ceja

Control de Expresión Ocular:

  • CTRL_expressions_eyeSquintInnerL / CTRL_expressions_eyeSquintInnerR - Entrecerrar los ojos
  • CTRL_expressions_eyeCheekRaiseL / CTRL_expressions_eyeCheekRaiseR - Elevación de la mejilla

Comparación y Selección de Modelos

Elección Entre Modelos

Al decidir qué modelo de sincronización labial usar para tu proyecto, considera estos factores:

ConsideraciónModelo EstándarModelo RealistaModelo Realista con Estados de Ánimo
Compatibilidad de PersonajesMetaHumans y todos los tipos de personajes personalizadosPersonajes MetaHumans (y ARKit)Personajes MetaHumans (y ARKit)
Calidad VisualBuena sincronización labial con rendimiento eficienteRealismo mejorado con movimientos de boca más naturalesRealismo mejorado con expresiones emocionales
RendimientoOptimizado para todas las plataformas incluyendo móvil/VRRequisitos de recursos más altosRequisitos de recursos más altos
Características14 visemas, detección de risa81 controles faciales, 3 niveles de optimización81 controles faciales, 12 estados de ánimo, salida configurable
Soporte de PlataformaWindows, Android, QuestWindows, Mac, iOS, Linux, Android, QuestWindows, Mac, iOS, Linux, Android, Quest
Casos de UsoAplicaciones generales, juegos, VR/AR, móvilExperiencias cinematográficas, interacciones de primer planoNarrativa emocional, interacción avanzada de personajes

Compatibilidad de Versiones del Motor

Problema de Compatibilidad con UE 5.2

Si estás usando Unreal Engine 5.2, los Modelos Realistas pueden no funcionar correctamente debido a un error en la biblioteca de remuestreo de UE. Para los usuarios de UE 5.2 que necesitan funcionalidad de sincronización labial confiable, por favor usa el Modelo Estándar en su lugar.

Este problema es específico de UE 5.2 y no afecta a otras versiones del motor.

Recomendaciones de Rendimiento

  • Para la mayoría de los proyectos, el Modelo Estándar proporciona un excelente equilibrio entre calidad y rendimiento
  • Usa el Modelo Realista cuando necesites la máxima fidelidad visual para personajes MetaHuman
  • Usa el Modelo Realista con Estados de Ánimo cuando el control de expresión emocional sea importante para tu aplicación
  • Considera las capacidades de rendimiento de tu plataforma objetivo al elegir entre modelos
  • Prueba diferentes niveles de optimización para encontrar el mejor equilibrio para tu caso de uso específico

Resolución de Problemas

Problemas Comunes

Recreación del Generador para Modelos Realistas: Para un funcionamiento confiable y consistente con los Modelos Realistas, se recomienda recrear el generador cada vez que quieras alimentar nuevos datos de audio después de un período de inactividad. Esto se debe al comportamiento del tiempo de ejecución de ONNX que puede hacer que la sincronización labial deje de funcionar al reutilizar generadores después de períodos de silencio.

Por ejemplo, podrías recrear el generador de sincronización labial en cada inicio de reproducción, como cada vez que llamas a Play Sound 2D o usas cualquier otro método para iniciar la reproducción de ondas de sonido y sincronización labial:

Recreate Lip Sync Generator On Play Sound

Ubicación del Plugin para Integración con Runtime Text To Speech: Cuando usas Runtime MetaHuman Lip Sync junto con Runtime Text To Speech (ambos plugins usan ONNX Runtime), puedes experimentar problemas en builds empaquetados si los plugins están instalados en la carpeta Marketplace del motor. Para solucionar esto:

  1. Localiza ambos plugins en tu carpeta de instalación de UE bajo \Engine\Plugins\Marketplace (ej., C:\Program Files\Epic Games\UE_5.6\Engine\Plugins\Marketplace)
  2. Mueve ambas carpetas RuntimeMetaHumanLipSync y RuntimeTextToSpeech a la carpeta Plugins de tu proyecto
  3. Si tu proyecto no tiene una carpeta Plugins, crea una en el mismo directorio que tu archivo .uproject
  4. Reinicia el Unreal Editor

Esto aborda problemas de compatibilidad que pueden ocurrir cuando múltiples plugins basados en ONNX Runtime se cargan desde el directorio Marketplace del motor.

Configuración de Empaquetado (Windows): Si la sincronización labial no funciona correctamente en tu proyecto empaquetado en Windows, asegúrate de usar la configuración de build Shipping en lugar de Development. La configuración Development puede causar problemas con el tiempo de ejecución de ONNX de los modelos realistas en builds empaquetados.

Para solucionar esto:

  1. En la Configuración de tu Proyecto → Packaging, establece la Build Configuration en Shipping
  2. Vuelve a empaquetar tu proyecto

Shipping Configuration

Proyectos Solo con Blueprints

En algunos proyectos solo con Blueprints, Unreal Engine aún puede construir en configuración Development incluso cuando se selecciona Shipping. Si esto sucede, convierte tu proyecto a un proyecto C++ agregando al menos una clase C++ (puede estar vacía). Para hacer esto, ve a Tools → New C++ Class en el menú del editor de UE y crea una clase vacía. Esto forzará al proyecto a construirse correctamente en configuración Shipping. Tu proyecto puede permanecer solo con Blueprints en funcionalidad, la clase C++ solo es necesaria para la configuración de build correcta.

Degradación de la Capacidad de Respuesta de la Sincronización Labial: Si experimentas que la sincronización labial se vuelve menos receptiva con el tiempo cuando usas Streaming Sound Wave o Capturable Sound Wave, esto puede ser causado por la acumulación de memoria. Por defecto, la memoria se reasigna cada vez que se agrega nuevo audio. Para evitar este problema, llama a la función ReleaseMemory periódicamente para liberar la memoria acumulada, como cada 30 segundos aproximadamente.

Optimización del Rendimiento:

  • Ajusta el Tamaño del Fragmento de Procesamiento para modelos realistas según tus requisitos de rendimiento
  • Usa recuentos de hilos apropiados para tu hardware objetivo
  • Considera usar el tipo de salida Mouth Only para modelos con estados de ánimo cuando no se necesite animación facial completa