Vídeos de avatar de IA em lote a partir de uma foto com o MiniMax H3 no ComfyUI

Entra um retrato e uma pasta de locuções; sai um vídeo pronto de pessoa falando para cada arquivo. Como funciona o fluxo em lote do MiniMax H3, qual GPU usar e quanto custa cada minuto pronto.

Anton Tenitsky13 de outubro de 202610 min de leituraVersão em vídeo abaixoCódigo no GitHub

Este guia foi traduzido do inglês com IA e pode conter erros. Leia o original.

Dois vídeos prontos de avatares falando, renderizados a partir de dois retratos e nomeados conforme seus arquivos de locução

Status: Testado no RunPod. Renderizei lotes com este template no RunPod em uma RTX A5000, uma RTX 5090 e uma B200. Os números deste guia vêm dessas execuções.

Dê a este fluxo um retrato e uma pasta de locuções (20, 50 ou 2.000) e ele renderiza um vídeo de pessoa falando para cada arquivo, um após o outro, sem você tocar em nada. Pode rodar por dias.

Ele é baseado no MiniMax H3, um modelo de vídeo de pesos abertos que o ComfyUI suporta nativamente. Em comparação com minha configuração anterior de avatares com o LTX-2.5, foi cerca de 30% mais rápido, cerca de 30% mais barato e deu emendas mais limpas entre os trechos.

Em resumo

  • Custo: cerca de 20 minutos de vídeo pronto em 768 × 768 por US$ 2–3 de GPU, aproximadamente US$ 0,13 por minuto pronto em uma RTX 5090.
  • GPU: 32 GB de VRAM é a escolha segura. 24 GB funciona, mas pode travar horas depois do início de um trabalho.
  • Licença: sem licença nos EUA, UE, Reino Unido ou Coreia do Sul, e isso inclui o local onde seu pod roda.
  • Como funciona: a locução é cortada em trechos de até 10 segundos nas pausas, cada trecho começa e termina no seu retrato, e os trechos são reunidos com seu áudio original.
  • Template gratuito no GitHub, ou um clique no RunPod.

Verifique a licença primeiro

A licença da comunidade do MiniMax H3 exclui os Estados Unidos, a União Europeia, o Reino Unido e a Coreia do Sul. Ela cobre tanto onde o modelo roda quanto onde você está, então escolha um data center do RunPod fora dessas regiões. Se precisar de uma delas, a MiniMax concede licenças mediante solicitação.

Slide listando as regiões que a licença da comunidade do MiniMax H3 exclui: Estados Unidos, União Europeia, Reino Unido e Coreia do Sul
As quatro regiões excluídas. O local onde o pod roda também conta.

A licença também tem uma política de uso aceitável. Entre outras coisas, ela proíbe se passar por pessoas reais sem o consentimento delas, e qualquer produto comercial construído sobre ela precisa exibir «MiniMax H3». Leia antes de usar isso em trabalho para clientes.

O que você precisa

  • Um retrato, de preferência em um fundo liso e iluminado de forma uniforme. Placas, telas e texto na imagem tendem a se animar.
  • Locuções em .wav, .mp3, .flac, .m4a, .aac, .ogg ou .opus. Cada arquivo vira um vídeo, com o nome do arquivo. Se precisar de locuções, meu template Qwen3-TTS as cria com modelos abertos.
  • Uma GPU com 32 GB de VRAM, como uma RTX 5090. Você pode rodar localmente se tiver uma; o script de instalação lista todos os modelos e nós.
  • Cerca de 100 GB de armazenamento. Só os modelos somam cerca de 46 GB.
Gráfico de barras dos downloads do MiniMax H3: modelo H3 21 GB, codificador de texto Qwen3-VL 15,7 GB, três LoRAs Turbo 6 GB, VAE de vídeo 2,8 GB, VAE de áudio 0,6 GB
O que a primeira inicialização baixa: cerca de 46 GB, uma única vez. Depois fica no volume.

Qual GPU

Rodei isso em três GPUs. Estes são os tempos do fluxo Fast:

GPU VRAM Preço (out. 2026) Tempo de GPU por trecho Vídeo de 20 minutos
RTX A5000 24 GB $0.27/h ~118 s para um trecho de 7 s ~5,4 h, ~US$ 1,50
RTX 5090 32 GB $1.19/h 60–70 s por trecho de 10 s ~2,2 h, ~US$ 2,60
B200 180 GB $7.99/h ~33 s por trecho de 10 s ~1,1 h, ~US$ 8,70

A RTX 5090 é a minha escolha: o melhor equilíbrio entre velocidade e custo. A B200 foi cerca de duas vezes mais rápida, mas cerca de seis vezes mais cara por hora, então só faz sentido quando um prazo importa mais que a conta. A A5000 é a mais barata por minuto de vídeo se você puder esperar.

Gráfico comparando 24 GB de VRAM, que rodou com algumas travadas, com 32 GB, que rodou por dias sem travar
Só o modelo H3 ocupa cerca de 20 GB depois de carregado. Com 24 GB rodou, com algumas travadas quando a memória sufocou; com 32 GB nunca travou.

A VRAM é a restrição real. Com 24 GB o trabalho roda, mas lotes longos podem travar depois de umas duas horas. Com 32 GB rodei trabalhos individuais por dias.

Esses preços são os de tabela do RunPod em outubro de 2026. O RunPod aumentou os preços recentemente; meu «US$ 2–3 por 20 minutos» foi medido com as tarifas anteriores (a B200 custava cerca de US$ 6,50/h na época).

Configure o pod

Se você nunca usou o RunPod, minha introdução ao RunPod cobre contas, volumes de rede e pods em detalhe. A versão curta para este template:

  1. Crie um volume de rede em um data center fora das regiões excluídas. O README do template recomenda 100 GB; usei 80 GB, que cabem os modelos padrão com folga para renders. O armazenamento custa US$ 0,07/GB por mês no padrão e US$ 0,14 no de alto desempenho, então 80 GB são US$ 5,60 ou US$ 11,20 por mês. É cobrado enquanto o volume existir, não adiantado.
  2. Implante o template com o volume anexado. Em Additional filters → CUDA Versions, selecione 13.0: o template roda na imagem CUDA 13 e precisa de um host com driver recente.
  3. Espere a primeira inicialização. Ela baixa cerca de 46 GB, o que leva de 10 a 15 minutos. Acompanhe nos logs. O ComfyUI às vezes diz «ready» antes de estar, e o JupyterLab pode dizer «initializing» quando já está pronto, então tente abri-lo.
Slide comparando a RTX A5000, 24 GB a US$ 0,27 por hora, com a RTX 5090, 32 GB a US$ 1,19 por hora
A A5000 é a mais barata por minuto, mas apertada em memória. A 5090 é minha favorita.

Envie retratos e locuções

Abra o JupyterLab (porta 8888) pelo menu Connect do pod. É o seu navegador de arquivos.

  • Coloque os retratos em ComfyUI/input/.
  • Coloque as locuções de um lote em ComfyUI/input/batch_audio/. O template cria esta pasta na primeira inicialização.

Rodando vários pods ao mesmo tempo? Crie uma pasta por lote (batch_audio_1, batch_audio_2 e assim por diante) e aponte o fluxo de cada pod para a sua própria pasta.

Depois de enviar, recarregue o ComfyUI no navegador. Seus menus de arquivos só são atualizados ao recarregar.

Escolha um fluxo

Abra o ComfyUI (porta 8188) e depois a barra lateral Workflows. Há três níveis de qualidade, cada um como um fluxo de arquivo único e uma versão _batch que renderiza uma pasta inteira:

Fluxo Resolução Steps Tempo de render Quando usar
Fast 768 × 768 4 1× Boa qualidade; minha escolha
Standard 768 × 768 8 ~2× A melhor qualidade, mas exagero para a maioria dos trabalhos
Draft 544 × 544 4 ~0,5× Só para testar tempos e enquadramento
Gráfico do tempo de render relativo por trecho: Fast 1x, Standard cerca de 2x, Draft cerca de 0,5x
Tempo de render relativo por trecho dos três fluxos.

Os fluxos foram feitos para trabalhos longos: é onde alugar uma GPU economiza dinheiro. Para um único clipe de teste, a sobrecarga não compensa.

Como funciona

Entender três ideias faz os ajustes fazerem sentido.

Cada trecho começa e termina no seu retrato. O H3 fixa o primeiro e o último quadro de cada geração na imagem que você fornece, então o rosto não consegue se desviar ao longo de um vídeo longo. A pessoa volta à mesma expressão neutra em cada emenda, o que soa natural para alguém falando para a câmera.

A locução é cortada nas pausas. Uma geração do H3 chega no máximo a cerca de 15 segundos (362 quadros a 24 fps), e quanto mais um trecho se afasta de seus quadros âncora, mais o fundo e o enquadramento se deslocam. Por isso o template corta seu áudio em trechos de até 10 segundos, sempre em uma pausa. Uma locução de 57,5 segundos virou 7 trechos, nenhum com mais de 10 segundos.

Forma de onda de áudio de uma locução de 57,5 segundos, cortada nas pausas em 7 trechos de menos de 10 segundos
A locução é dividida em pausas naturais, então nenhuma palavra é cortada ao meio.

A imagem segue o seu áudio. A fatia de locução de cada trecho é entregue ao H3 como guia, então o modelo anima a boca conforme o seu som em vez de inventar fala. O vídeo final usa sua faixa de áudio original, não a reconstrução do modelo.

Diagrama: sete arquivos de trecho são unidos por um nó incluído depois do último trecho em output/avatar-female-2_fast.mp4
Depois do último trecho, um nó incluído une tudo em um único vídeo nomeado conforme a locução.

As emendas são quase imperceptíveis, mais limpas que no LTX-2.5, onde o padrão de ruído muda visivelmente em cada emenda. O H3 tem sua própria mania: ocasionalmente ele dá zoom no rosto sem motivo, mesmo quando o prompt não pede. Confira o primeiro trecho para isso antes de se comprometer com horas de renderização.

Descreva o visual, ou ele vai mudar

Este é o ajuste que mais importa. O nó Talking-Head Prompt tem dois campos: o sujeito e o fundo, ambos descrevendo o que já está no seu retrato.

O nó Talking-Head Prompt no ComfyUI com uma descrição do sujeito e uma do fundo
O nó Talking-Head Prompt: um campo para o sujeito, um para o fundo.

Só o primeiro e o último quadro são ancorados; tudo no meio é gerado, e o modelo preenche o que o prompt deixa em aberto. Se você não descrever a roupa, ela pode mudar no meio de um trecho.

Lado a lado: com a roupa fora do prompt, a blusa vermelha do avatar mudou para azul; com a roupa descrita, ela continuou vermelha
Esquerda: roupa fora do prompt, e o traje mudou. Direita: roupa descrita, e se manteve.

Algumas regras que funcionaram para mim:

  • Descreva o cabelo e a roupa com palavras simples: por exemplo, «uma mulher de cabelo longo, claro e ondulado caindo além dos ombros, usando uma toga branca» (no prompt, em inglês).
  • Mantenha o fundo simples e diga isso: um pano de fundo liso, iluminação suave e uniforme.
  • Não escreva demais. Descrição em excesso pode deixar o resultado rígido ou queimado. Mire em algumas palavras concretas por campo. Um chatbot pode enxugar sua redação se você travar.

O prompt do template já exclui texto, legendas e logos, e evita palavras como «presenter», que puxam o modelo para gráficos de TV.

Execute o lote

Defina a resolução se precisar de algo diferente de quadrado e enfileire com Run (Instant). Cada execução renderiza o próximo trecho inacabado, então continua até todos os arquivos da pasta estarem prontos, e então para sozinho.

Teste um trecho primeiro. O primeiro trecho inclui o carregamento do modelo, então é mais lento (212 segundos na minha execução, contra 118 do segundo na A5000). Abra-o no JupyterLab em output/h3_longform/<nome da locução>/chunk_0000.mp4 e confira três coisas: sincronização labial, o rosto e o fundo. Sem zoom, sem troca de roupa: pode seguir.

JupyterLab reproduzindo chunk_0000.mp4 da pasta output, mostrando o avatar com asas de anjo e uma auréola
Confira o trecho 1 (sincronização labial, identidade e fundo) antes de deixar o lote rodando.
Gráfico de segundos de GPU por trecho de 10 segundos: B200 cerca de 33 segundos, RTX 5090 de 60 a 70 segundos
Tempo de GPU por trecho de 10 segundos com o fluxo Fast.

A retomada é automática. Se o pod parar no trecho 150 de 300, enfileire de novo e ele continua do 151, no mesmo pod ou em um novo anexado ao mesmo volume. Um vídeo pronto também é pulado. Para renderizar um de novo, mude o name_suffix no nó de nome de saída ou apague sua pasta em output/h3_longform/. Durante os testes, precisei limpar trechos antigos assim ao reutilizar um nome de arquivo.

Quando um vídeo fica pronto, ele é salvo como output/<nome da locução>_fast.mp4 (o sufixo corresponde ao fluxo). Clique com o botão direito nele no JupyterLab para baixar.

Opcional: motion carry

O template tem um ajuste experimental no nó Split Audio Chunk, motion_carry, que inicia cada trecho a partir dos últimos quadros do anterior em vez do retrato. Ele pode suavizar ainda mais as emendas, mas vem desativado por padrão e o README observa que ainda não foi testado em uma GPU. Se experimentar, enfileire os trechos em ordem e use um novo nome de sessão.

Quando terminar

Pare o pod: seus arquivos ficam no volume, e você pode reiniciar depois em qualquer GPU do mesmo data center. Quando o projeto terminar, exclua também o volume, ou ele continua cobrando. O RunPod não exclui um volume enquanto houver um pod anexado, então encerre esses pods primeiro.

Erros a evitar

  • Rodar em uma região excluída. Confira o data center, não só a sua localização.
  • Pular a descrição da roupa. O traje pode mudar no meio de um trecho.
  • Um prompt escrito demais. Algumas palavras concretas valem mais que um parágrafo.
  • Ir direto para um lote de 10 horas. Confira o primeiro trecho.
  • Versão errada do CUDA. Filtre por CUDA 13.0 ao implantar.
  • Esquecer o volume. Pods parados custam pouco; um volume esquecido cobra todo mês.

O link do RunPod do template, e meu link de indicação do RunPod, dão a novas contas que se cadastram com o Google de US$ 5 a US$ 500 em crédito após seus primeiros US$ 10, e eu recebo uma pequena comissão.

Assista à versão em vídeo (14:43)

Tudo o que está acima também está no vídeo, se você preferir acompanhar na tela. O vídeo está em inglês.

Perguntas frequentes

Quanto custa renderizar um vídeo de avatar falando com o MiniMax H3?

Nas minhas execuções, cerca de 20 minutos de vídeo pronto em 768 × 768 custaram US$ 2–3 de GPU, aproximadamente US$ 0,10–0,15 por minuto pronto em uma RTX 5090. Isso foi com as tarifas anteriores, mais baratas, do RunPod; confira os preços atuais antes de um trabalho grande.

Quanta VRAM o MiniMax H3 precisa?

32 GB é a escolha segura. Com 24 GB funciona, mas trabalhos longos podem travar horas depois, quando a memória acaba. Em uma RTX 5090 com 32 GB rodou por dias sem travar.

Posso usar o MiniMax H3 nos Estados Unidos ou na UE?

Não sob a licença da comunidade, que exclui os Estados Unidos, a União Europeia, o Reino Unido e a Coreia do Sul, inclusive o local onde o pod roda. A MiniMax concede licenças para essas regiões mediante solicitação.

Qual a duração máxima de uma geração do MiniMax H3?

Cerca de 15 segundos (362 quadros a 24 fps). O template renderiza trechos de 10 segundos cortados nas pausas e os une, então a locução em si pode ter qualquer duração.

O que acontece se o pod parar no meio de um lote?

Enfileire de novo. Trechos e vídeos já prontos são pulados, e o trabalho continua do próximo trecho inacabado, no mesmo pod ou em um novo anexado ao mesmo volume de rede.

Anton Tenitsky é artista 3D com mais de 15 anos em computação gráfica, que trabalhou com Nickelodeon, Gameloft, Marvel Rivals e muitos outros clientes. Mais sobre mim

Guias relacionados