Workflow de InfiniteTalk en ComfyUI y API: avatares con sincronización labial gratis
InfiniteTalk es un modelo de código abierto que convierte una foto y un archivo de audio en un video parlante con los labios, la cabeza y el cuerpo sincronizados con la voz. Este artículo muestra el workflow en ComfyUI, los ajustes que importan, las llamadas a la API alojada y autoalojada, y una alternativa en el navegador para obtener resultados rápidos.
Tienes una foto, una grabación de voz y ningún equipo de rodaje. InfiniteTalk convierte esos dos archivos en un video donde la persona de la imagen habla de verdad, con los labios, la cabeza y los hombros moviéndose al ritmo del audio. Los pesos son abiertos bajo la licencia Apache 2.0, ComfyUI puede ejecutarlos en tu propia GPU, y una API alojada puede ejecutarlos si no tienes una. Este artículo recorre ambas vías: el workflow de ComfyUI paso a paso, los ajustes que cambian el resultado, las llamadas a la API y una alternativa sin instalación en PicassoIA para los días en que montar un entorno local da más trabajo del que merece la tarea.
Qué hace InfiniteTalk exactamente
InfiniteTalk viene del equipo de MeiGen-AI. El código, los pesos y el informe técnico se publicaron el 19 de agosto de 2025. Está construido sobre el checkpoint de 14B y 480P del modelo de imagen a video Wan 2.1, y lee el audio mediante un codificador wav2vec2. Admite salidas tanto en 480p como en 720p.
El modelo tiene predecesores. El modelo anterior del mismo grupo, MultiTalk, se encargaba de videos de conversación impulsados por audio, y el wrapper de ComfyUI sigue listándolo junto a InfiniteTalk. Lo que InfiniteTalk añade es la generación de duración ilimitada y el movimiento de todo el cuerpo además del movimiento de labios. La sección de noticias del repositorio también apunta ahora a una familia sucesora llamada LongCat Video Avatar, así que revísala si quieres los pesos más recientes del mismo equipo.
Doblaje con fotogramas dispersos, explicado sin tecnicismos
La mayoría de las herramientas de sincronización labial antiguas repintan un parche alrededor de la boca y dejan el resto del rostro congelado. El resultado parece una máscara parlante. InfiniteTalk usa lo que sus autores llaman doblaje de video con fotogramas dispersos: conserva un puñado de fotogramas de referencia para mantener estable la identidad y después genera todo lo que hay entre ellos, de modo que los labios, los giros de cabeza, la postura y las expresiones faciales siguen al audio. Los clips largos se construyen con ventanas de contexto encadenadas, con una ventana predeterminada de 81 fotogramas, lo que permite que un video parlante supere con creces los cinco segundos habituales.
Modo imagen frente a modo video
Modo
Lo que aportas
Ideal para
Duración
Imagen a video
Una foto y un archivo de audio
Narradores, avatares, cantantes, portavoces
Hasta aproximadamente un minuto antes de que baje la calidad
Video a video
Un clip existente y audio nuevo
Doblaje, sustituir una voz, conservar los movimientos de cámara
Ilimitada en teoría
💡 Empieza por el modo imagen. Necesita menos entradas y sus fallos son los más fáciles de interpretar, así que verás qué hacen los ajustes de audio antes de introducir un video de origen.
¿Es realmente gratis?
La licencia es gratuita. El cómputo no. Esa diferencia decide qué vía te conviene.
Vía
Lo que cuesta
Lo que cedes
ComfyUI en local
Tu GPU y la electricidad
Tiempo de instalación, límites de VRAM, renders lentos en tarjetas pequeñas
API alojada
Facturación por segundo de salida. En el momento de escribir esto, WaveSpeed indica unos $0.03 por segundo en 480p y $0.06 por segundo en 720p, hasta 10 minutos por trabajo
Gasto continuo, menos control sobre el grafo
Modelo en el navegador de PicassoIA
Gratis para probar con varios modelos de sincronización labial
Un modelo diferente, clips más cortos
Lo gratis también tiene un precio en tiempo. Una primera instalación en local se come buena parte de una tarde entre instalaciones de nodos y descargas, y solo los archivos del modelo ocupan decenas de gigabytes. Juzga la vía según cuántos clips pienses hacer, no por el precio de etiqueta.
Un baño de realidad sobre el hardware
InfiniteTalk se apoya en un modelo de video de 14 000 millones de parámetros, así que la memoria es el primer muro con el que te encuentras. El repositorio oficial incluye un modo de VRAM baja (--num_persistent_param_in_dit 0) que mantiene los pesos fuera de la GPU entre pasos, además de un checkpoint cuantizado en FP8. En ComfyUI, los archivos FP8 escalados de Kijai cumplen la misma función. No voy a citar una cifra de VRAM, porque cambia según la resolución, el número de fotogramas y la cuantización. Haz pruebas con un clip de 480p de 10 segundos antes de dedicar una tarde entera a un render en 720p.
Crear el workflow en ComfyUI
El soporte para ComfyUI llega a través de ComfyUI-WanVideoWrapper de Kijai. La plantilla de música de InfiniteTalk en comfy.org enumera tres paquetes de nodos: WanVideoWrapper, audio-separation-nodes-comfyui y comfyui-kjnodes. Juntos cargan el modelo, separan la voz de la música y gestionan la conexión de imagen y video.
Instalar los nodos personalizados
Abre una terminal en ComfyUI/custom_nodes y clona el wrapper.
Instala sus requisitos con pip install -r requirements.txt (las versiones portátiles usan en su lugar el intérprete incluido, python_embeded).
Añade los paquetes de separación de audio y kjnodes desde ComfyUI Manager.
Reinicia ComfyUI para que se registren los nuevos nodos.
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
Descargar los archivos del modelo
El README del wrapper organiza los modelos en cuatro carpetas: text_encoders, clip_vision, diffusion_models y vae. InfiniteTalk añade sus propios pesos sobre la base de Wan 2.1.
Archivo
Carpeta
Notas
Wan 2.1 imagen a video 14B
diffusion_models
Modelo base, existen versiones escaladas en FP8
Codificador de texto UMT5
text_encoders
El mismo que usan los workflows de Wan 2.1
VAE de Wan 2.1
vae
Compartido con otros workflows de Wan
Modelo de visión CLIP
clip_vision
Lee la foto de referencia
InfiniteTalk Single (fp16, unos 5.1 GB)
diffusion_models
Un solo hablante
InfiniteTalk Multi (fp16, unos 5.1 GB)
diffusion_models
Dos hablantes
Ambos archivos de InfiniteTalk están en la carpeta InfiniteTalk del repositorio WanVideo_comfy de Kijai en Hugging Face. Si un desplegable del cargador sigue vacío después de copiar un archivo, actualiza ComfyUI y vuelve a revisar la carpeta.
Conectar el grafo
Los nombres de los nodos cambian entre versiones del wrapper, así que abre el workflow de ejemplo de la carpeta example_workflows del wrapper en lugar de construirlo desde cero. La lógica es siempre la misma:
Rama de imagen: carga el retrato, redimensiónalo a la resolución de destino y codifícalo con el modelo de visión CLIP.
Rama de audio: carga el audio, separa la voz de cualquier música y pásalo por el codificador wav2vec2 para obtener los embeddings de audio.
Rama del modelo: carga la base de Wan 2.1, añade los pesos de InfiniteTalk como modelo extra y, si lo quieres, un LoRA de velocidad.
Muestreador: introduce los embeddings de imagen, los embeddings de texto y los embeddings de audio en el muestreador y luego decodifica con el VAE.
Salida: combina los fotogramas y el audio original en un MP4.
💡 Redimensiona antes de muestrear. Un retrato que no coincide con la relación de aspecto de destino se estira o se recorta de maneras que parecen una mala sincronización labial, pero en realidad son un mal dato de entrada.
Preparar el audio y el retrato
El grafo es solo la mitad del resultado. Los dos archivos de entrada deciden el resto.
Audio que se sincroniza bien
La voz sola es la entrada más segura. La música de fondo bajo la voz enturbia las formas de la boca, y por eso la plantilla de ComfyUI incluye nodos de separación de audio que extraen las voces de una mezcla. Recorta los silencios del principio, iguala el volumen y exporta en WAV cuando puedas.
¿No tienes grabación? Genera la voz en su lugar. Speech 2.8 HD y ElevenLabs v3 convierten un guion en una locución limpia que puedes introducir directamente en la rama de audio.
El modo imagen pierde calidad después de aproximadamente un minuto, así que escribe pensando en escenas, no en monólogos. Divide un guion largo en secciones de 20 a 40 segundos, renderiza cada una a partir del mismo retrato y la misma semilla, y únelas en cualquier editor de video. Cortar en una pausa oculta la unión, y el retrato repetido mantiene estable la identidad de una escena a otra.
Una foto de origen que funciona
El retrato es el primer fotograma de tu avatar, así que cada defecto viaja por todo el video.
Mira a la cámara, con la boca relajada o ligeramente cerrada.
Muestra los hombros, porque InfiniteTalk también anima la postura.
Usa luz uniforme, sin sombras duras sobre los labios.
Mantén las manos, los micrófonos y el pelo lejos de la boca.
¿No tienes una foto adecuada? Créala con Seedream 4.5 y pide una expresión neutra, de frente y con luz suave de ventana.
Ajustes que cambian el resultado
Dos controles hacen casi todo el trabajo: el número de pasos de muestreo y la escala de audio CFG. Todo lo demás es secundario hasta que esos dos se comporten bien.
Pasos y audio CFG
Los valores predeterminados oficiales usan 40 pasos de muestreo. Para el audio CFG, el repositorio recomienda un valor entre 3 y 5 para una buena sincronización labial. En la práctica, un valor más alto hace que la boca siga el audio con más rigor, y si te pasas, el rostro se queda rígido.
Ajuste
Valor inicial
Qué hace
Pasos de muestreo
40
Detalle y estabilidad, renders más lentos
Audio CFG
3 a 5
Intensidad del vínculo entre audio y boca
Resolución
480p primero, 720p para las versiones finales
Nitidez frente a tiempo de render y memoria
Semilla
Fija mientras pruebas
Te permite cambiar un ajuste cada vez
Modo rápido con LoRA
Cuarenta pasos en un modelo de 14B es lento. El repositorio describe dos atajos: 8 pasos con el LoRA FusionX o 4 pasos con el LoRA lightx2v. Cuando uses un LoRA de velocidad, baja el audio CFG a unos 2. Pierdes algo de textura fina en la piel y el pelo, así que usa el modo rápido para borradores y para clips que se verán en tamaño pequeño, y luego vuelve a renderizar la mejor toma con todos los pasos.
Cuando un render sale mal, el síntoma suele apuntar a una sola causa:
Síntoma
Causa probable
Solución
Los labios se alejan del audio
Audio CFG demasiado bajo, o música bajo la voz
Sube el audio CFG hacia 4 y separa las voces
Rostro rígido, como una máscara
Audio CFG demasiado alto
Bájalo un punto y vuelve a renderizar con la misma semilla
El rostro cambia poco a poco en un clip largo
Modo imagen más allá de su límite de un minuto
Divide el guion en escenas y únelas en un editor
Error de memoria insuficiente
Resolución o ventana de fotogramas demasiado grande
Baja a 480p, usa los archivos FP8 o activa el ajuste de VRAM baja
La boca se abre en los silencios
Ruido de respiración o zumbido de la sala leídos como habla
Limpia el audio con una puerta de ruido antes de cargarlo
💡 Fija la semilla y cambia una sola cosa. Renderiza los mismos cinco segundos a 480p mientras ajustas el audio CFG. Cuando la boca se vea bien, sube la resolución.
Llamar a InfiniteTalk mediante una API
Una API convierte un proceso manual de diez minutos en una llamada a una función. Tienes dos opciones, según quién tenga la GPU.
La vía de la API alojada
WaveSpeed aloja InfiniteTalk en POST https://api.wavespeed.ai/api/v3/wavespeed-ai/infinitetalk. La solicitud recibe image, audio, resolution (480p o 720p), seed, un prompt opcional y un mask_image opcional. Recibes un ID de predicción y después consultas una URL de resultados cada pocos segundos hasta que el estado llega a un estado final. Se aceptan audios de hasta 10 minutos por trabajo.
import os, time, requests
TOKEN = os.environ["WAVESPEED_TOKEN"]
HEADERS = {"Authorization": f"Bearer {TOKEN}"}
BASE = "https://api.wavespeed.ai/api/v3"
job = requests.post(
f"{BASE}/wavespeed-ai/infinitetalk",
headers=HEADERS,
json={
"image": "https://example.com/portrait.jpg",
"audio": "https://example.com/voice.wav",
"resolution": "480p",
},
).json()["data"]
while True:
result = requests.get(f"{BASE}/predictions/{job['id']}/result", headers=HEADERS).json()["data"]
if result["status"] not in ("created", "processing"):
break
time.sleep(2)
print(result["status"], result.get("outputs"))
Toma el fragmento como punto de partida y revisa la página del modelo para ver el esquema actual antes de publicar nada. Cuenta con unos 10 a 30 segundos de espera por cada segundo de video, según la resolución y la carga de la cola.
Tu propio endpoint de ComfyUI
ComfyUI ya ejecuta un servidor HTTP, así que tu workflow es una API en el momento en que lo exportas. Usa Save (API Format), cambia los nombres de archivo de imagen y audio dentro del JSON y después envíalo a /prompt.
import json, time, requests
COMFY = "http://127.0.0.1:8188"
workflow = json.load(open("infinitetalk_api.json"))
prompt_id = requests.post(f"{COMFY}/prompt", json={"prompt": workflow}).json()["prompt_id"]
while True:
history = requests.get(f"{COMFY}/history/{prompt_id}").json()
if prompt_id in history:
break
time.sleep(3)
print(history[prompt_id]["outputs"])
Los archivos que menciona el workflow deben estar ya en la carpeta input de ComfyUI, o subirse antes al endpoint /upload/image. Recupera el video terminado desde /view usando el nombre de archivo que aparece en las salidas.
💡 No expongas nunca el puerto 8188 a internet abierta. ComfyUI no tiene inicio de sesión. Colócalo detrás de una VPN o de un proxy inverso con autenticación antes de que nadie fuera de tu red pueda llegar a él.
Dónde ayudan de verdad los avatares
Un avatar parlante se gana su lugar cuando grabar a una persona frente a la cámara es lento, caro o imposible de repetir.
Clases y formación: una foto del instructor y un guion te dan módulos de video coherentes, y cambiar una frase implica volver a renderizar en lugar de volver a grabar.
Demostraciones de productos: un avatar portavoz puede narrar la misma página en varios idiomas cambiando el audio.
Clips de podcast: el modelo Multi maneja a dos hablantes, lo que encaja con fragmentos de entrevistas para redes sociales.
Trabajo con música y personajes: cantantes, mascotas y personajes ilustrados funcionan siempre que el rostro se vea con claridad.
💡 Pide permiso. Anima tu propio rostro, un personaje con licencia o a alguien que lo haya aceptado, y etiqueta el resultado como generado por IA cuando pueda confundirse con una grabación real.
Evita la configuración en PicassoIA
PicassoIA no aloja InfiniteTalk en sí. Sí ofrece varios modelos de foto más audio que dan el mismo tipo de resultado en una pestaña del navegador, sin nodos, sin descargas y sin cálculos de VRAM.
Detección del hablante activo y cinco modos de sincronización
La última fila importa si viniste por el doblaje de video a video: Lipsync 2 Pro trabaja sobre metraje que ya grabaste. Qué vía encaja depende del trabajo:
Elige ComfyUI en local para clips de más de un minuto, el modelo Multi con dos hablantes, un doblaje que conserve los movimientos de cámara originales o un control total de cada ajuste del muestreador.
Elige la API alojada cuando tu propia aplicación tenga que crear avatares bajo demanda y prefieras pagar por segundo antes que mantener una GPU encendida.
Elige un modelo de PicassoIA cuando quieras un resultado en los próximos diez minutos, tu audio dure menos de 35 segundos y la velocidad importe más que reproducir el aspecto exacto de InfiniteTalk.
Sube un retrato de frente. Los rostros, las tomas de cuerpo entero y los personajes ilustrados funcionan todos.
Sube un archivo MP3 o WAV de menos de 35 segundos. Se admite audio en inglés, español, japonés, coreano, chino e indonesio.
Añade un prompt opcional para dirigir el movimiento de cámara o los gestos, como "she smiles and nods slightly".
Activa el modo rápido para borradores rápidos, o déjalo desactivado para conseguir el máximo detalle.
Fija una semilla si quieres reproducir un resultado, y después genera y descarga el video.
💡 Escribe primero el guion, grábalo con Speech 2.8 HD y mantén cada clip por debajo del límite de 35 segundos. Los clips cortos unidos parecen más naturales que una toma larga.
Crea tu primer avatar
Elige un retrato, graba 20 segundos de audio y pasa el mismo clip por dos o tres modelos. Comparar los resultados lado a lado lleva minutos y te dice más que cualquier ficha técnica. Abre Omni Human 1.5 o Fabric 1.0 en PicassoIA, sube tus dos archivos y mira cómo una foto fija empieza a hablar. Si más adelante quieres un pipeline local, ya sabrás cómo es una buena entrada.