Vídeos de avatar con IA en lote a partir de una sola foto con MiniMax H3 en ComfyUI

Entra un retrato y una carpeta de locuciones; sale un vídeo terminado de una persona hablando por cada archivo. Cómo funciona el flujo por lotes de MiniMax H3, qué GPU usar y cuánto cuesta cada minuto terminado.

Anton Tenitsky13 de octubre de 202611 min de lecturaVersión en vídeo más abajoCódigo en GitHub

Esta guía se tradujo del inglés con IA y puede contener errores. Leer el original.

Dos vídeos terminados de avatares hablando, renderizados a partir de dos retratos y con el nombre de sus archivos de locución

Estado: Probada en RunPod. Rendericé lotes con esta plantilla en RunPod con una RTX A5000, una RTX 5090 y una B200. Las cifras de esta guía salen de esas ejecuciones.

Dale a este flujo un retrato y una carpeta de locuciones (20, 50 o 2000) y renderiza un vídeo de una persona hablando por cada archivo, uno tras otro, sin que tengas que tocarlo. Puede funcionar durante días.

Está basado en MiniMax H3, un modelo de vídeo de pesos abiertos que ComfyUI admite de forma nativa. En comparación con mi configuración anterior de avatares con LTX-2.5, fue un 30 % más rápido, un 30 % más barato y dio uniones más limpias entre trozos.

En resumen

  • Coste: unos 20 minutos de vídeo terminado a 768 × 768 por 2–3 $ de GPU, aproximadamente 0,13 $ por minuto terminado en una RTX 5090.
  • GPU: 32 GB de VRAM es la opción segura. 24 GB funciona, pero puede bloquearse horas después de empezar un trabajo.
  • Licencia: no está licenciado en EE. UU., la UE, el Reino Unido ni Corea del Sur, y eso incluye el lugar donde se ejecuta tu pod.
  • Cómo funciona: la locución se corta en trozos de hasta 10 segundos en las pausas, cada trozo empieza y termina en tu retrato, y los trozos se vuelven a unir con tu audio original.
  • Plantilla gratuita en GitHub, o con un clic en RunPod.

Comprueba primero la licencia

La licencia comunitaria de MiniMax H3 excluye a Estados Unidos, la Unión Europea, el Reino Unido y Corea del Sur. Cubre tanto el lugar donde el modelo se ejecuta como el lugar donde estás tú, así que elige un centro de datos de RunPod fuera de esas regiones. Si necesitas alguna de ellas, MiniMax concede licencias bajo solicitud.

Diapositiva con las regiones que excluye la licencia comunitaria de MiniMax H3: Estados Unidos, Unión Europea, Reino Unido y Corea del Sur
Las cuatro regiones excluidas. Cuenta también el lugar donde se ejecuta el pod.

La licencia también incluye una política de uso aceptable. Entre otras cosas, prohíbe suplantar a personas reales sin su consentimiento, y cualquier producto comercial construido sobre ella debe mostrar «MiniMax H3». Léela antes de usar esto para trabajo de clientes.

Qué necesitas

  • Un retrato, idealmente sobre un fondo liso e iluminado de forma uniforme. Los carteles, las pantallas y el texto de la imagen tienden a animarse.
  • Locuciones en .wav, .mp3, .flac, .m4a, .aac, .ogg o .opus. Cada archivo se convierte en un vídeo con su nombre. Si necesitas locuciones, mi plantilla de Qwen3-TTS las crea con modelos abiertos.
  • Una GPU con 32 GB de VRAM, como una RTX 5090. Puedes ejecutarlo en local si tienes una; el script de instalación enumera todos los modelos y nodos.
  • Unos 100 GB de almacenamiento. Solo los modelos ocupan unos 46 GB.
Gráfico de barras de las descargas de MiniMax H3: modelo H3 21 GB, codificador de texto Qwen3-VL 15,7 GB, tres LoRA Turbo 6 GB, VAE de vídeo 2,8 GB, VAE de audio 0,6 GB
Lo que descarga el primer arranque: unos 46 GB, una sola vez. Después se queda en el volumen.

Qué GPU

Lo ejecuté en tres GPU. Estos son los tiempos del flujo Fast:

GPU VRAM Precio (oct. 2026) Tiempo de GPU por trozo Vídeo de 20 minutos
RTX A5000 24 GB $0.27/h ~118 s para un trozo de 7 s ~5,4 h, ~1,50 $
RTX 5090 32 GB $1.19/h 60–70 s por trozo de 10 s ~2,2 h, ~2,60 $
B200 180 GB $7.99/h ~33 s por trozo de 10 s ~1,1 h, ~8,70 $

La RTX 5090 es mi elección: el mejor equilibrio entre velocidad y coste. La B200 fue unas dos veces más rápida pero unas seis veces más cara por hora, así que solo compensa cuando un plazo importa más que la factura. La A5000 es la más barata por minuto de vídeo si puedes esperar.

Gráfico que compara 24 GB de VRAM, que funcionó con algunos bloqueos, con 32 GB, que funcionó durante días sin bloquearse
Solo el modelo H3 ocupa unos 20 GB una vez cargado. Con 24 GB funcionó, con algunos bloqueos cuando la memoria se ahogaba; con 32 GB nunca se bloqueó.

La VRAM es la limitación real. Con 24 GB el trabajo se ejecuta, pero los lotes largos pueden bloquearse un par de horas después de empezar. Con 32 GB ejecuté trabajos individuales durante días.

Estos precios son los de lista de RunPod en octubre de 2026. RunPod subió los precios hace poco; mi «2–3 $ por 20 minutos» se midió con las tarifas anteriores (la B200 costaba entonces unos 6,50 $/h).

Prepara el pod

Si nunca has usado RunPod, mi introducción a RunPod explica en detalle las cuentas, los volúmenes de red y los pods. La versión corta para esta plantilla:

  1. Crea un volumen de red en un centro de datos fuera de las regiones excluidas. El README de la plantilla recomienda 100 GB; yo usé 80 GB, que bastan para los modelos por defecto con margen para los renders. El almacenamiento cuesta 0,07 $/GB al mes en almacenamiento estándar y 0,14 $ en el de alto rendimiento, así que 80 GB son 5,60 $ u 11,20 $ al mes. Se factura mientras el volumen exista, no se cobra por adelantado.
  2. Despliega la plantilla con el volumen conectado. En Additional filters → CUDA Versions, selecciona 13.0: la plantilla funciona con la imagen de CUDA 13 y necesita un host con un controlador reciente.
  3. Espera al primer arranque. Descarga unos 46 GB, lo que tarda entre 10 y 15 minutos. Síguelo en los logs. ComfyUI a veces dice «ready» antes de estarlo, y JupyterLab puede decir «initializing» cuando en realidad ya está listo, así que prueba a abrirlo.
Diapositiva que compara la RTX A5000, 24 GB a 0,27 $ la hora, con la RTX 5090, 32 GB a 1,19 $ la hora
La A5000 es la más barata por minuto pero va justa de memoria. La 5090 es mi favorita.

Sube retratos y locuciones

Abre JupyterLab (puerto 8888) desde el menú Connect del pod. Es tu explorador de archivos.

  • Pon los retratos en ComfyUI/input/.
  • Pon las locuciones de un lote en ComfyUI/input/batch_audio/. La plantilla crea esta carpeta en el primer arranque.

¿Ejecutas varios pods a la vez? Crea una carpeta por lote (batch_audio_1, batch_audio_2 y así) y apunta el flujo de cada pod a su propia carpeta.

Después de subir, recarga ComfyUI en el navegador. Sus menús de archivos solo se actualizan al recargar.

Elige un flujo

Abre ComfyUI (puerto 8188) y luego la barra lateral Workflows. Hay tres niveles de calidad, cada uno como flujo de un solo archivo y como versión _batch que renderiza una carpeta entera:

Flujo Resolución Steps Tiempo de render Cuándo usarlo
Fast 768 × 768 4 1× Buena calidad; mi elección
Standard 768 × 768 8 ~2× La mejor calidad, pero excesivo para la mayoría de los trabajos
Draft 544 × 544 4 ~0,5× Solo para probar tiempos y encuadre
Gráfico del tiempo de render relativo por trozo: Fast 1x, Standard unos 2x, Draft unos 0,5x
Tiempo de render relativo por trozo de los tres flujos.

Los flujos están pensados para trabajos largos: ahí es donde alquilar una GPU ahorra dinero. Para un solo clip de prueba, no compensa el trabajo extra.

Cómo funciona

Entender tres ideas hace que los ajustes cobren sentido.

Cada trozo empieza y termina en tu retrato. H3 fija el primer y el último fotograma de cada generación a la imagen que le das, de modo que el rostro no puede alejarse con el paso de un vídeo largo. La persona vuelve a la misma expresión neutra en cada unión, lo que resulta natural en alguien que habla a cámara.

La locución se corta en las pausas. Una generación de H3 llega como mucho a unos 15 segundos (362 fotogramas a 24 fps), y cuanto más se aleja un trozo de sus fotogramas ancla, más se desplazan el fondo y el encuadre. Por eso la plantilla corta tu audio en trozos de hasta 10 segundos, siempre en una pausa. Una locución de 57,5 segundos se convirtió en 7 trozos, ninguno de más de 10 segundos.

Forma de onda de audio de una locución de 57,5 segundos, cortada en las pausas en 7 trozos de menos de 10 segundos
La locución se divide en pausas naturales, así que ninguna palabra queda cortada por la mitad.

La imagen sigue tu audio. El fragmento de locución de cada trozo se da a H3 como guía, de modo que el modelo anima la boca según tu sonido en lugar de inventarse el habla. El vídeo terminado usa tu pista de audio original, no la reconstrucción del modelo.

Diagrama: siete archivos de trozos se unen mediante un nodo incluido tras el último trozo en output/avatar-female-2_fast.mp4
Después del último trozo, un nodo incluido en la plantilla lo une todo en un solo vídeo con el nombre de la locución.

Las uniones son casi perfectas, más limpias que con LTX-2.5, donde el patrón de ruido cambia visiblemente en cada unión. H3 tiene su propia manía: de vez en cuando hace zoom sobre el rostro sin motivo, incluso cuando el prompt no lo pide. Comprueba el primer trozo antes de comprometerte con horas de renderizado.

Describe el aspecto, o cambiará

Este es el ajuste que más importa. El nodo Talking-Head Prompt tiene dos campos: el sujeto y el fondo, ambos describiendo lo que ya está en tu retrato.

El nodo Talking-Head Prompt en ComfyUI con una descripción del sujeto y otra del fondo
El nodo Talking-Head Prompt: un campo para el sujeto y otro para el fondo.

Solo se anclan el primer y el último fotograma; todo lo del medio se genera, y el modelo rellena lo que el prompt deja abierto. Si no describes la ropa, puede cambiar a mitad de un trozo.

Comparación lado a lado: con la ropa fuera del prompt, la camiseta roja del avatar cambió a azul; con la ropa descrita, siguió siendo roja
Izquierda: ropa fuera del prompt, y el atuendo cambió. Derecha: ropa descrita, y se mantuvo.

Algunas reglas que me funcionaron:

  • Describe el pelo y la ropa con palabras sencillas: por ejemplo, «una mujer con el pelo largo, claro y ondulado cayéndole más allá de los hombros, con una toga blanca» (en el prompt, en inglés).
  • Mantén el fondo simple y dilo: un telón liso, iluminación suave y uniforme.
  • No te pases escribiendo. Demasiada descripción puede volver el resultado rígido o quemado. Apunta a unas pocas palabras concretas por campo. Un chatbot puede condensar tu redacción si te atascas.

El prompt de la plantilla ya descarta texto, subtítulos y logotipos, y evita palabras como «presenter» que arrastran al modelo hacia gráficos de televisión.

Ejecuta el lote

Ajusta la resolución si necesitas algo distinto de un cuadrado y pon en cola con Run (Instant). Cada ejecución renderiza el siguiente trozo sin terminar, así que sigue hasta que todos los archivos de la carpeta estén hechos, y entonces se detiene solo.

Prueba primero un trozo. El primer trozo incluye la carga del modelo, así que es más lento (212 segundos en mi ejecución, frente a 118 del segundo en la A5000). Ábrelo en JupyterLab en output/h3_longform/<nombre de la locución>/chunk_0000.mp4 y comprueba tres cosas: la sincronización labial, el rostro y el fondo. Sin zoom ni cambio de atuendo: listo para seguir.

JupyterLab reproduciendo chunk_0000.mp4 de la carpeta output, con el avatar con alas de ángel y un halo
Comprueba el trozo 1 (sincronización labial, identidad y fondo) antes de dejar el lote en marcha.
Gráfico de segundos de GPU por trozo de 10 segundos: B200 unos 33 segundos, RTX 5090 de 60 a 70 segundos
Tiempo de GPU por trozo de 10 segundos con el flujo Fast.

La reanudación es automática. Si el pod se detiene en el trozo 150 de 300, vuelve a poner en cola y continúa desde el 151, en el mismo pod o en uno nuevo conectado al mismo volumen. Un vídeo terminado también se salta. Para renderizar uno otra vez, cambia name_suffix en el nodo de nombre de salida o borra su carpeta en output/h3_longform/. Durante las pruebas tuve que limpiar trozos antiguos así cuando reutilicé un nombre de archivo.

Cuando un vídeo está terminado, se guarda como output/<nombre de la locución>_fast.mp4 (el sufijo coincide con el flujo). Haz clic derecho en JupyterLab para descargarlo.

Opcional: motion carry

La plantilla tiene un ajuste experimental en el nodo Split Audio Chunk, motion_carry, que empieza cada trozo desde los últimos fotogramas del anterior en lugar de desde el retrato. Puede suavizar aún más las uniones, pero está desactivado por defecto y el README señala que todavía no se ha probado en una GPU. Si lo pruebas, pon los trozos en cola en orden y usa un nombre de sesión nuevo.

Cuando termines

Detén el pod: tus archivos se quedan en el volumen y puedes reiniciar más tarde en cualquier GPU del mismo centro de datos. Cuando el proyecto haya terminado, borra también el volumen, o seguirá facturando. RunPod no borra un volumen mientras haya un pod conectado, así que termina primero esos pods.

Errores que evitar

  • Ejecutarlo en una región excluida. Comprueba el centro de datos, no solo tu ubicación.
  • Saltarte la descripción de la ropa. El atuendo puede cambiar a mitad de un trozo.
  • Un prompt demasiado largo. Unas pocas palabras concretas valen más que un párrafo.
  • Lanzarte directamente a un lote de 10 horas. Comprueba el primer trozo.
  • Versión de CUDA equivocada. Filtra por CUDA 13.0 al desplegar.
  • Olvidarte del volumen. Los pods detenidos cuestan poco; un volumen olvidado factura cada mes.

El enlace de RunPod de la plantilla, y mi enlace de referido de RunPod, dan a las cuentas nuevas que se registran con Google entre 5 y 500 $ de crédito después de su primer gasto de 10 $, y yo recibo una pequeña comisión.

Ver la versión en vídeo (14:43)

Todo lo anterior también está en el vídeo, si prefieres seguirlo en pantalla. El vídeo está en inglés.

Preguntas frecuentes

¿Cuánto cuesta renderizar un vídeo de avatar hablando con MiniMax H3?

En mis ejecuciones, unos 20 minutos de vídeo terminado a 768 × 768 costaron entre 2 y 3 $ de GPU, es decir, entre 0,10 y 0,15 $ por minuto terminado en una RTX 5090. Fue con las tarifas anteriores, más baratas, de RunPod; comprueba los precios actuales antes de un trabajo grande.

¿Cuánta VRAM necesita MiniMax H3?

32 GB es la opción segura. Con 24 GB funciona, pero los trabajos largos pueden bloquearse horas después cuando se agota la memoria. En una RTX 5090 con 32 GB funcionó durante días sin bloqueos.

¿Puedo usar MiniMax H3 en Estados Unidos o en la UE?

No con la licencia comunitaria, que excluye a Estados Unidos, la Unión Europea, el Reino Unido y Corea del Sur, incluido el lugar donde se ejecuta el pod. MiniMax concede licencias para esas regiones bajo solicitud.

¿Cuánto puede durar una generación de MiniMax H3?

Unos 15 segundos (362 fotogramas a 24 fps). La plantilla renderiza trozos de 10 segundos cortados en las pausas y los une, así que la locución en sí puede tener cualquier duración.

¿Qué pasa si el pod se detiene a mitad de un lote?

Vuelve a ponerlo en cola. Los trozos y vídeos terminados se saltan, y el trabajo continúa desde el siguiente trozo sin terminar, en el mismo pod o en uno nuevo conectado al mismo volumen de red.

Anton Tenitsky es artista 3D con más de 15 años en gráficos por ordenador, que ha trabajado con Nickelodeon, Gameloft, Marvel Rivals y muchos otros clientes. Más sobre mí

Guías relacionadas