Fluxo de trabalho e API do InfiniteTalk no ComfyUI: avatares com sincronização labial gratuitos
O InfiniteTalk é um modelo de código aberto que transforma uma foto e um arquivo de áudio em um vídeo falante, com lábios, cabeça e corpo em sincronia com a fala. Este artigo mostra o workflow no ComfyUI, as configurações que fazem diferença, chamadas de API hospedadas e auto-hospedadas e uma alternativa no navegador para resultados rápidos.
Você tem uma foto, uma gravação de voz e nenhuma equipe de filmagem. O InfiniteTalk transforma esses dois arquivos em um vídeo em que a pessoa da imagem realmente fala, com lábios, cabeça e ombros se movendo no ritmo do áudio. Os pesos são abertos sob a licença Apache 2.0, o ComfyUI consegue executá-los na sua própria GPU, e uma API hospedada pode fazer o mesmo quando você não tem uma. Este artigo percorre as duas rotas: o workflow no ComfyUI passo a passo, as configurações que mudam o resultado, as chamadas de API e uma alternativa sem instalação na PicassoIA para os dias em que uma configuração local dá mais trabalho do que a tarefa merece.
O que o InfiniteTalk realmente faz
O InfiniteTalk vem da equipe MeiGen-AI. O código, os pesos e o relatório técnico foram publicados em 19 de agosto de 2025. Ele é construído sobre o checkpoint de 14B e 480P do modelo Wan 2.1 de imagem para vídeo e lê o áudio por meio de um codificador wav2vec2. Tanto a saída em 480p quanto em 720p são suportadas.
O modelo tem uma linhagem. O MultiTalk, anterior do mesmo grupo, tratava de vídeos de conversa guiados por áudio, e o wrapper do ComfyUI ainda o lista ao lado do InfiniteTalk. O que o InfiniteTalk acrescenta é a geração de duração ilimitada e o movimento do corpo inteiro, além do movimento dos lábios. A seção de notícias do repositório também aponta para uma família sucessora chamada LongCat Video Avatar, então vale conferir quando você quiser os pesos mais recentes da mesma equipe.
Dublagem por quadros esparsos, em termos simples
A maioria das ferramentas mais antigas de sincronia labial repinta uma região em volta da boca e deixa o resto do rosto congelado. O resultado parece uma máscara falante. O InfiniteTalk usa o que os autores chamam de dublagem de vídeo por quadros esparsos: ele mantém um punhado de quadros de referência para manter a identidade estável e, depois, gera tudo o que está entre eles, para que lábios, giros de cabeça, postura e expressões faciais sigam o áudio. Clipes longos são construídos com janelas de contexto encadeadas, com uma janela padrão de 81 quadros, e é assim que um vídeo falante consegue ir bem além dos cinco segundos habituais.
Modo imagem ou modo vídeo
Modo
Você fornece
Ideal para
Duração
Imagem para vídeo
Uma foto mais um arquivo de áudio
Narradores, avatares, cantores, porta-vozes
Até cerca de um minuto, antes de a qualidade cair
Vídeo para vídeo
Um clipe existente mais um novo áudio
Dublagem, troca de voz, manter o movimento da câmera
Ilimitada, em teoria
💡 Comece pelo modo imagem. Ele exige o menor número de entradas e falha de formas mais fáceis de entender, então você vê o que as configurações de áudio fazem antes de misturar um vídeo de origem.
Ele é realmente gratuito?
A licença é gratuita. O processamento, não. Essa diferença decide qual rota você deve escolher.
Rota
Custo
O que você abre mão
ComfyUI local
Sua GPU e a energia elétrica
Tempo de configuração, limites de VRAM, renderizações lentas em placas pequenas
API hospedada
Cobrada por segundo de saída. No momento em que escrevo, a WaveSpeed lista cerca de US$ 0,03 por segundo em 480p e US$ 0,06 por segundo em 720p, até 10 minutos por tarefa
Gasto contínuo, menos controle sobre o grafo
Modelo no navegador na PicassoIA
Gratuito para testar em vários modelos de sincronia labial
Um modelo diferente, clipes mais curtos
Gratuito também custa tempo. A primeira instalação local consome boa parte de uma tarde com instalação de nós e downloads, e só os arquivos do modelo passam de dezenas de gigabytes. Avalie a rota pela quantidade de clipes que você pretende fazer, e não pelo preço de etiqueta.
Um choque de realidade sobre o hardware
O InfiniteTalk roda sobre um modelo de vídeo de 14 bilhões de parâmetros, então a memória é o primeiro obstáculo. O repositório oficial traz um modo de baixa VRAM (--num_persistent_param_in_dit 0) que mantém os pesos fora da GPU entre as etapas, além de um checkpoint quantizado em FP8. No ComfyUI, os arquivos FP8 com escala do Kijai servem ao mesmo propósito. Não vou citar um número de VRAM, porque ele varia com a resolução, o número de quadros e a quantização. Teste com um clipe de 480p e 10 segundos antes de dedicar uma noite a uma renderização em 720p.
Monte o workflow no ComfyUI
O suporte ao ComfyUI vem pelo ComfyUI-WanVideoWrapper, do Kijai. O template de música do InfiniteTalk no comfy.org lista três pacotes de nós: o WanVideoWrapper, o audio-separation-nodes-comfyui e o comfyui-kjnodes. Juntos, eles carregam o modelo, separam a voz da música e cuidam da parte de imagem e vídeo.
Instale os nós personalizados
Abra um terminal em ComfyUI/custom_nodes e clone o wrapper.
Instale os requisitos com pip install -r requirements.txt (as versões portáteis usam o interpretador python_embeded incluído).
Adicione os pacotes de separação de áudio e kjnodes pelo ComfyUI Manager.
Reinicie o ComfyUI para que os novos nós sejam registrados.
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
Baixe os arquivos do modelo
O README do wrapper organiza os modelos em quatro pastas: text_encoders, clip_vision, diffusion_models e vae. O InfiniteTalk acrescenta seus próprios pesos sobre a base do Wan 2.1.
Arquivo
Pasta
Observações
Wan 2.1 imagem para vídeo 14B
diffusion_models
Modelo base, existem versões FP8 com escala
Codificador de texto UMT5
text_encoders
O mesmo usado pelos workflows do Wan 2.1
VAE do Wan 2.1
vae
Compartilhado com outros workflows do Wan
Modelo CLIP vision
clip_vision
Lê a foto de referência
InfiniteTalk Single (fp16, cerca de 5,1 GB)
diffusion_models
Um falante
InfiniteTalk Multi (fp16, cerca de 5,1 GB)
diffusion_models
Dois falantes
Os dois arquivos do InfiniteTalk ficam na pasta InfiniteTalk do repositório WanVideo_comfy do Kijai, no Hugging Face. Se a lista de um carregador continuar vazia depois que você copiar um arquivo, atualize o ComfyUI e confira a pasta novamente.
Conecte o grafo
Os nomes dos nós mudam entre versões do wrapper, então abra o workflow de exemplo da pasta example_workflows do wrapper em vez de montar tudo do zero. A lógica é sempre a mesma:
Ramo da imagem: carregue o retrato, redimensione-o para a resolução de destino e codifique-o com o modelo CLIP vision.
Ramo do áudio: carregue o áudio, separe a voz de qualquer música e passe-o pelo codificador wav2vec2 para obter os embeddings de áudio.
Ramo do modelo: carregue a base do Wan 2.1, anexe os pesos do InfiniteTalk como modelo extra e adicione uma LoRA de velocidade, se quiser.
Sampler: envie os embeds de imagem, os embeds de texto e os embeds de áudio para o sampler e, depois, decodifique com o VAE.
Saída: combine os quadros e o áudio original em um MP4.
💡 Redimensione antes de amostrar. Um retrato que não corresponde à proporção de destino é esticado ou cortado de formas que parecem uma sincronia labial ruim, mas na verdade são uma entrada ruim.
Prepare o áudio e o retrato
O grafo é só metade do resultado. Os dois arquivos de entrada decidem o restante.
Áudio que sincroniza bem
Só voz é a entrada mais segura. Música de fundo sob a voz embaça os formatos da boca, e é por isso que o template do ComfyUI inclui nós de separação de áudio que tiram os vocais de uma mistura. Corte os silêncios do início, nivele o volume e exporte em WAV quando possível.
Sem gravação? Gere a voz. Speech 2.8 HD e ElevenLabs v3 transformam um roteiro em uma narração limpa que você pode enviar direto para o ramo de áudio.
O modo imagem perde qualidade depois de cerca de um minuto, então escreva para cenas, e não para monólogos. Divida um roteiro longo em seções de 20 a 40 segundos, renderize cada uma com o mesmo retrato e o mesmo seed e junte tudo em qualquer editor de vídeo. Cortar em uma pausa esconde a emenda, e o retrato repetido mantém a identidade estável de uma cena para outra.
Uma foto de origem que funciona
O retrato é o primeiro quadro do seu avatar, então cada falha se propaga por todo o vídeo.
Fique de frente para a câmera, com a boca relaxada ou levemente fechada.
Mostre os ombros, porque o InfiniteTalk também anima a postura.
Use luz uniforme, sem sombra forte sobre os lábios.
Mantenha mãos, microfones e cabelos longe da boca.
Sem uma foto adequada? Crie uma com o Seedream 4.5 e peça expressão neutra, de frente, com luz suave de janela.
Configurações que mudam o resultado
Dois controles fazem a maior parte do trabalho: o número de passos de amostragem e a escala de CFG do áudio. O resto é secundário até que esses dois se comportem.
Passos e CFG do áudio
Os padrões oficiais usam 40 passos de amostragem. Para o CFG do áudio, o repositório recomenda um valor entre 3 e 5 para uma boa sincronia labial. Na prática, um valor mais alto faz a boca seguir o áudio com mais rigor, e levar isso longe demais deixa o rosto rígido.
Configuração
Valor inicial
O que faz
Passos de amostragem
40
Detalhe e estabilidade, renderizações mais lentas
CFG do áudio
3 a 5
Força da ligação entre áudio e boca
Resolução
480p para testes, 720p para a versão final
Nitidez contra tempo de renderização e memória
Seed
Fixo durante os testes
Permite mudar uma configuração por vez
Modo rápido com LoRAs
Quarenta passos num modelo de 14B é lento. O repositório descreve dois atalhos: 8 passos com a LoRA FusionX ou 4 passos com a LoRA lightx2v. Ao usar uma LoRA de velocidade, reduza o CFG do áudio para cerca de 2. Você perde parte da textura fina da pele e do cabelo, então use o modo rápido para rascunhos e para clipes que serão vistos em tamanho pequeno, e depois refaça a melhor tomada com todos os passos.
Quando uma renderização dá errado, o sintoma geralmente aponta para uma causa:
Sintoma
Causa provável
Correção
Os lábios se afastam do áudio
CFG do áudio baixo demais, ou música sob a voz
Aumente o CFG do áudio para perto de 4 e separe os vocais
Rosto rígido, como máscara
CFG do áudio alto demais
Reduza um ponto e refaça com o mesmo seed
O rosto muda aos poucos em um clipe longo
Modo imagem além do limite de cerca de um minuto
Divida o roteiro em cenas e junte-as em um editor
Erro de falta de memória
Resolução ou janela de quadros grande demais
Use 480p, os arquivos FP8 ou ative a configuração de baixa VRAM
A boca se abre no silêncio
Ruído de respiração ou zumbido da sala lido como fala
Limpe o áudio com um noise gate antes de carregá-lo
💡 Fixe o seed e mude uma coisa por vez. Renderize os mesmos cinco segundos em 480p enquanto ajusta o CFG do áudio. Quando a boca estiver certa, aumente a resolução.
Chame o InfiniteTalk por API
Uma API transforma um processo manual de dez minutos em uma chamada de função. Você tem duas opções, dependendo de quem é dono da GPU.
A rota da API hospedada
A WaveSpeed hospeda o InfiniteTalk em POST https://api.wavespeed.ai/api/v3/wavespeed-ai/infinitetalk. A requisição recebe image, audio, resolution (480p ou 720p), seed, um prompt opcional e um mask_image opcional. Você recebe de volta um ID de previsão e consulta uma URL de resultado a cada dois segundos, mais ou menos, até que o status chegue a um estado final. Áudio de até 10 minutos é aceito por tarefa.
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"))
Trate o trecho de código como ponto de partida e confira a página do modelo para o esquema atual antes de colocá-lo em produção. Espere cerca de 10 a 30 segundos de espera por segundo de vídeo, dependendo da resolução e da carga da fila.
Seu próprio endpoint do ComfyUI
O ComfyUI já executa um servidor HTTP, então seu workflow vira uma API no momento em que você o exporta. Use Save (API Format), troque os nomes de arquivo da imagem e do áudio dentro do JSON e envie-o para /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"])
Os arquivos citados no workflow precisam já estar na pasta input do ComfyUI, ou ser enviados antes para o endpoint /upload/image. Busque o vídeo finalizado em /view usando o nome de arquivo listado nas saídas.
💡 Nunca exponha a porta 8188 à internet aberta. O ComfyUI não tem login. Coloque-o atrás de uma VPN ou de um proxy reverso com autenticação antes que alguém de fora da sua rede consiga acessá-lo.
Onde os avatares realmente ajudam
Um avatar falante se justifica quando gravar uma pessoa diante da câmera é lento, caro ou impossível de repetir.
Aulas e treinamentos: uma foto do instrutor e um roteiro geram módulos de vídeo consistentes, e atualizar uma frase significa renderizar de novo, sem regravar.
Demonstrações de produto: um avatar porta-voz pode narrar a mesma página em vários idiomas, trocando apenas o áudio.
Cortes de podcast: o modelo Multi lida com dois falantes, o que combina com trechos de entrevistas para redes sociais.
Música e personagens: cantores, mascotes e personagens ilustrados funcionam desde que o rosto esteja bem visível.
💡 Tenha permissão. Anime o seu próprio rosto, um personagem licenciado ou alguém que tenha concordado com isso, e identifique o resultado como gerado por IA quando ele puder ser confundido com uma gravação real.
Pule a configuração na PicassoIA
A PicassoIA não hospeda o próprio InfiniteTalk. Mas oferece vários modelos de foto mais áudio que entregam o mesmo tipo de resultado em uma aba do navegador, sem nós, sem downloads e sem cálculos de VRAM.
Detecção de falante ativo e cinco modos de sincronia
A última linha importa se você veio pela dublagem de vídeo para vídeo: o Lipsync 2 Pro funciona com filmagens que você já gravou. Qual rota serve depende do trabalho:
Escolha o ComfyUI local para clipes de mais de um minuto, o modelo Multi com dois falantes, dublagem que mantém os movimentos originais da câmera ou controle total sobre cada configuração do sampler.
Escolha a API hospedada quando o seu próprio app precisa criar avatares sob demanda e você prefere pagar por segundo a manter uma GPU ligada.
Escolha um modelo da PicassoIA quando quiser um resultado nos próximos dez minutos, seu áudio tiver menos de 35 segundos e a velocidade importar mais do que reproduzir exatamente o visual do InfiniteTalk.
Envie um retrato de frente. Rostos, fotos de corpo inteiro e personagens ilustrados funcionam.
Envie um arquivo MP3 ou WAV com menos de 35 segundos. Áudios em inglês, espanhol, japonês, coreano, chinês e indonésio são suportados.
Adicione um prompt opcional para orientar o movimento da câmera ou gestos, como "ela sorri e acena levemente com a cabeça".
Ative o modo rápido para rascunhos rápidos, ou deixe-o desligado para o máximo de detalhe.
Defina um seed se quiser reproduzir um resultado, depois gere e baixe o vídeo.
💡 Escreva o roteiro primeiro, grave-o com o Speech 2.8 HD e mantenha cada clipe abaixo do limite de 35 segundos. Clipes curtos unidos parecem mais naturais do que uma tomada longa só.
Crie seu primeiro avatar
Escolha um retrato, grave 20 segundos de áudio e rode o mesmo clipe em dois ou três modelos. Comparar os resultados lado a lado leva minutos e ensina mais do que qualquer ficha técnica. Abra o Omni Human 1.5 ou o Fabric 1.0 na PicassoIA, envie seus dois arquivos e veja uma foto parada começar a falar. Se você quiser um pipeline local depois, já saberá como é uma boa entrada.