Workflow et API InfiniteTalk pour ComfyUI : des avatars avec synchronisation labiale gratuits

InfiniteTalk est un modèle open source qui transforme une photo et un fichier audio en vidéo parlante, avec des lèvres synchronisées et des mouvements de tête et de corps. Cet article présente le workflow ComfyUI, les réglages qui comptent, les appels API hébergés ou auto-hébergés, et une alternative dans le navigateur pour obtenir des résultats rapidement.

Workflow et API InfiniteTalk pour ComfyUI : des avatars avec synchronisation labiale gratuits
Cristian Da Conceicao
Fondateur de Picasso IA

Vous avez une photo, un enregistrement vocal et aucune équipe de tournage. InfiniteTalk transforme ces deux fichiers en une vidéo où la personne sur l’image parle réellement, avec les lèvres, la tête et les épaules qui bougent en rythme avec l’audio. Les poids sont publiés sous licence Apache 2.0, ComfyUI peut les faire tourner sur votre propre GPU, et une API hébergée peut les exécuter si vous n’en possédez pas. Cet article présente les deux voies : le workflow ComfyUI étape par étape, les réglages qui modifient le résultat, les appels API, et une alternative sans installation sur PicassoIA pour les jours où une configuration locale demande plus d’efforts que la tâche n’en mérite.

Ce que fait réellement InfiniteTalk

InfiniteTalk vient de l’équipe MeiGen-AI. Le code, les poids et le rapport technique ont été rendus publics le 19 août 2025. Le modèle repose sur le checkpoint 14B, 480P du modèle image vers vidéo Wan 2.1 et lit l’audio grâce à un encodeur wav2vec2. Les sorties en 480p comme en 720p sont prises en charge.

Le modèle a une filiation. Le précédent modèle de l’équipe, MultiTalk, gérait les vidéos de conversation pilotées par l’audio, et le wrapper ComfyUI le liste toujours à côté d’InfiniteTalk. Ce qu’InfiniteTalk ajoute, c’est la génération d’une durée illimitée et les mouvements de tout le corps en plus de ceux des lèvres. La section actualités du dépôt renvoie aussi désormais vers une famille successeure, LongCat Video Avatar : consultez-la si vous voulez les poids les plus récents de la même équipe.

Un jeune homme regarde une image figée d’une vidéo où une femme parle, sur un moniteur mat

Le doublage à images clés espacées, en termes simples

La plupart des anciens outils de synchronisation labiale repeignent une zone autour de la bouche et laissent le reste du visage figé. Le résultat ressemble à un masque qui parle. InfiniteTalk utilise ce que ses auteurs appellent le doublage vidéo à images clés espacées : il conserve quelques images de référence pour garder l’identité stable, puis génère tout le reste pour que les lèvres, les mouvements de tête, la posture et les expressions du visage suivent tous l’audio. Les longs clips sont construits à partir de fenêtres de contexte enchaînées, avec une fenêtre par défaut de 81 images, ce qui explique qu’une vidéo parlante puisse dépasser largement les cinq secondes habituelles.

Mode image ou mode vidéo

ModeVous fournissezIdéal pourDurée
Image vers vidéoUne photo et un fichier audioNarrateurs, avatars, chanteurs, porte-paroleJusqu’à environ une minute avant une baisse de qualité
Vidéo vers vidéoUn clip existant et un nouvel audioDoublage, remplacement d’une voix, conservation des mouvements de caméraIllimitée en théorie

💡 Commencez par le mode image. Il demande le moins d’entrées et échoue de la façon la plus lisible, ce qui vous permet de voir ce que font les réglages audio avant d’introduire une vidéo source dans le processus.

Est-ce vraiment gratuit ?

La licence est gratuite. Le calcul, lui, ne l’est pas. Cette différence détermine la voie à choisir.

VoieCe que ça coûteCe que vous y perdez
ComfyUI en localVotre GPU et votre électricitéTemps d’installation, limites de VRAM, rendus lents sur les petites cartes
API hébergéeFacturée à la seconde de sortie. Au moment de la rédaction, WaveSpeed affiche environ 0,03 $ par seconde en 480p et 0,06 $ par seconde en 720p, jusqu’à 10 minutes par tâcheDépense récurrente, moins de contrôle sur le graphe
Modèle navigateur sur PicassoIAEssai gratuit sur plusieurs modèles de synchronisation labialeUn autre modèle, des clips plus courts

Le gratuit a aussi un coût en temps. Une première installation en local mange une bonne partie d’un après-midi entre installations de nœuds et téléchargements, et les seuls fichiers de modèles pèsent plusieurs dizaines de gigaoctets. Jugez la voie selon le nombre de clips que vous comptez produire, et non selon le prix affiché.

Le matériel, retour à la réalité

InfiniteTalk repose sur un modèle vidéo de 14 milliards de paramètres : la mémoire est donc le premier mur que vous rencontrerez. Le dépôt officiel fournit un mode VRAM faible (--num_persistent_param_in_dit 0) qui garde les poids hors du GPU entre les étapes, ainsi qu’un checkpoint quantifié en FP8. Dans ComfyUI, les fichiers FP8 à échelle de Kijai remplissent le même rôle. Je ne donnerai pas de chiffre de VRAM, car il varie avec la résolution, le nombre d’images et la quantification. Testez avec un clip de 10 secondes en 480p avant de consacrer une soirée à un rendu en 720p.

Gros plan macro d’une carte graphique installée dans un boîtier de PC ouvert

Construire le flux de travail ComfyUI

La prise en charge de ComfyUI passe par le ComfyUI-WanVideoWrapper de Kijai. Le template InfiniteTalk pour la musique sur comfy.org liste trois packs de nœuds : le WanVideoWrapper, audio-separation-nodes-comfyui et comfyui-kjnodes. Ensemble, ils chargent le modèle, séparent la voix de la musique et gèrent la gestion des images et des vidéos.

Installer les nœuds personnalisés

  1. Ouvrez un terminal dans ComfyUI/custom_nodes et clonez le wrapper.
  2. Installez ses dépendances avec pip install -r requirements.txt (les versions portables utilisent plutôt l’interpréteur python_embeded fourni).
  3. Ajoutez les packs de séparation audio et kjnodes via ComfyUI Manager.
  4. Redémarrez ComfyUI pour que les nouveaux nœuds soient enregistrés.
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt

Vue de dessus d’un bureau avec un ordinateur portable, un SSD et une liste de contrôle de configuration écrite à la main

Télécharger les fichiers du modèle

Le README du wrapper répartit les modèles dans quatre dossiers : text_encoders, clip_vision, diffusion_models et vae. InfiniteTalk ajoute ses propres poids par-dessus la base Wan 2.1.

FichierDossierRemarques
Wan 2.1 image vers vidéo 14Bdiffusion_modelsModèle de base, des versions FP8 à échelle existent
Encodeur de texte UMT5text_encodersLe même que celui des workflows Wan 2.1
VAE Wan 2.1vaePartagé avec d’autres workflows Wan
Modèle CLIP visionclip_visionLit la photo de référence
InfiniteTalk Single (fp16, environ 5,1 Go)diffusion_modelsUn seul locuteur
InfiniteTalk Multi (fp16, environ 5,1 Go)diffusion_modelsDeux locuteurs

Les deux fichiers InfiniteTalk se trouvent dans le dossier InfiniteTalk du dépôt WanVideo_comfy de Kijai sur Hugging Face. Si une liste déroulante du chargeur reste vide après la copie d’un fichier, actualisez ComfyUI et vérifiez de nouveau le dossier.

Câbler le graphe

Les noms des nœuds changent d’une version du wrapper à l’autre : ouvrez donc le workflow d’exemple du dossier example_workflows du wrapper au lieu de tout construire à partir de zéro. La logique reste toujours la même :

  • Branche image : chargez le portrait, redimensionnez-le à la résolution cible et encodez-le avec le modèle CLIP vision.
  • Branche audio : chargez l’audio, séparez la voix de la musique éventuelle, puis faites-le passer par l’encodeur wav2vec2 pour obtenir les embeddings audio.
  • Branche modèle : chargez la base Wan 2.1, ajoutez les poids InfiniteTalk comme modèle supplémentaire et ajoutez une LoRA de vitesse si vous le souhaitez.
  • Sampler : injectez les embeddings d’image, de texte et d’audio dans le sampler, puis décodez avec le VAE.
  • Sortie : assemblez les images et l’audio d’origine dans un fichier MP4.

💡 Redimensionnez avant d’échantillonner. Un portrait qui ne correspond pas au format cible sera étiré ou recadré d’une façon qui ressemble à une mauvaise synchronisation labiale, alors que le problème vient de l’entrée.

Préparer l’audio et le portrait

Le graphe ne fait que la moitié du résultat. Les deux fichiers d’entrée déterminent le reste.

Un audio qui se synchronise proprement

La voix seule est l’entrée la plus sûre. Une musique de fond sous la voix brouille les formes de la bouche, c’est pourquoi le modèle ComfyUI inclut des nœuds de séparation audio qui extraient les voix d’un mélange. Coupez les silences en début de fichier, égalisez le volume et exportez en WAV quand c’est possible.

Pas d’enregistrement ? Générez la voix à la place. Speech 2.8 HD et ElevenLabs v3 transforment tous deux un script en voix off propre que vous pouvez envoyer directement à la branche audio.

Le mode image perd en qualité au bout d’environ une minute : écrivez donc pour des scènes, pas pour des monologues. Découpez un long script en sections de 20 à 40 secondes, générez chaque section à partir du même portrait et de la même seed, puis assemblez-les dans n’importe quel éditeur vidéo. Couper sur une pause masque la jointure, et le portrait répété maintient l’identité stable d’une scène à l’autre.

Mains tournant un bouton sur une interface audio à côté d’un microphone à condensateur

Une photo source qui fonctionne

Le portrait est la première image de votre avatar : chaque défaut se retrouve donc dans toute la vidéo.

  • Face à la caméra, avec une bouche détendue ou légèrement fermée.
  • Montrez les épaules, car InfiniteTalk anime aussi la posture.
  • Utilisez une lumière uniforme, sans ombre marquée sur les lèvres.
  • Gardez les mains, les microphones et les cheveux à l’écart de la bouche.

Pas de photo adaptée ? Créez-en une avec Seedream 4.5 et demandez une expression neutre, de face, avec une lumière douce de fenêtre.

Une femme d’une cinquantaine d’années en blazer bleu marine, face à la caméra, avec une expression neutre

Les réglages qui modifient le résultat

Deux curseurs font l’essentiel du travail : le nombre d’étapes d’échantillonnage et l’échelle CFG audio. Tout le reste est secondaire tant que ces deux-là ne se comportent pas correctement.

Étapes et CFG audio

Les valeurs par défaut officielles utilisent 40 étapes d’échantillonnage. Pour le CFG audio, le dépôt recommande une valeur entre 3 et 5 pour une bonne synchronisation labiale. En pratique, une valeur plus élevée pousse la bouche à suivre l’audio plus strictement, et la pousser trop loin rend le visage raide.

RéglageValeur de départCe qu’il fait
Étapes d’échantillonnage40Détail et stabilité, rendus plus lents
CFG audio3 à 5Force du lien entre l’audio et la bouche
Résolution480p d’abord, 720p pour les versions finalesNetteté contre temps de rendu et mémoire
SeedFixe pendant les testsPermet de changer un seul réglage à la fois

Mode rapide avec des LoRA

Quarante étapes sur un modèle de 14B, c’est lent. Le dépôt décrit deux raccourcis : 8 étapes avec la LoRA FusionX, ou 4 étapes avec la LoRA lightx2v. Lorsque vous utilisez une LoRA de vitesse, ramenez le CFG audio à environ 2. Vous perdez un peu de texture fine sur la peau et les cheveux : réservez donc le mode rapide aux brouillons et aux clips destinés à être vus en petit, puis relancez la meilleure prise avec le nombre d’étapes complet.

Quand un rendu tourne mal, le symptôme pointe généralement une seule cause :

SymptômeCause probableCorrectif
Les lèvres s’écartent de l’audioCFG audio trop bas, ou musique sous la voixRemontez le CFG audio vers 4 et séparez les voix
Visage raide, effet de masqueCFG audio trop élevéBaissez-le d’un point et relancez avec la même seed
Le visage change lentement dans un long clipMode image au-delà de sa limite d’environ une minuteDécoupez le script en scènes et assemblez-les dans un éditeur
Erreur de mémoire insuffisanteRésolution ou fenêtre d’images trop grandePassez en 480p, utilisez les fichiers FP8 ou activez le réglage VRAM faible
La bouche s’ouvre pendant les silencesRespiration ou bourdonnement de la pièce lus comme de la paroleNettoyez l’audio avec une porte de bruit avant de le charger

💡 Fixez la seed, changez une seule chose. Générez les mêmes cinq secondes en 480p pendant que vous ajustez le CFG audio. Une fois la bouche correcte, augmentez la résolution.

Appeler InfiniteTalk via une API

Une API transforme un processus manuel de dix minutes en un simple appel de fonction. Vous avez deux options, selon qui possède le GPU.

La voie de l’API hébergée

WaveSpeed héberge InfiniteTalk à l’adresse POST https://api.wavespeed.ai/api/v3/wavespeed-ai/infinitetalk. La requête prend image, audio, resolution (480p ou 720p), seed, un prompt facultatif et un mask_image facultatif. Vous recevez un identifiant de prédiction, puis vous interrogez une URL de résultat toutes les deux secondes environ jusqu’à ce que le statut atteigne un état final. Un audio allant jusqu’à 10 minutes est accepté par tâche.

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"))

Considérez cet extrait comme un point de départ et vérifiez la page du modèle pour le schéma actuel avant de le mettre en production. Comptez environ 10 à 30 secondes d’attente par seconde de vidéo, selon la résolution et la charge de la file d’attente.

Votre propre endpoint ComfyUI

ComfyUI fait déjà tourner un serveur HTTP : votre workflow devient donc une API dès que vous l’exportez. Utilisez Save (API Format), modifiez les noms de fichiers de l’image et de l’audio dans le JSON, puis envoyez-le à /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"])

Les fichiers cités dans le workflow doivent déjà se trouver dans le dossier input de ComfyUI, ou être d’abord importés vers l’endpoint /upload/image. Récupérez la vidéo finale depuis /view à l’aide du nom de fichier indiqué dans les sorties.

Vue en contre-plongée d’une rangée de baies serveurs, avec un technicien au bout

💡 N’exposez jamais le port 8188 sur internet. ComfyUI n’a pas de système de connexion. Placez-le derrière un VPN ou un reverse proxy avec authentification avant que quiconque hors de votre réseau puisse l’atteindre.

Là où les avatars sont vraiment utiles

Un avatar parlant se justifie quand filmer une personne est lent, coûteux ou impossible à reproduire.

  • Cours et formations : une seule photo de formateur et un script donnent des modules vidéo cohérents, et modifier une phrase revient à relancer un rendu plutôt qu’à retourner la scène.
  • Démonstrations de produits : un avatar porte-parole peut commenter la même page en plusieurs langues en changeant simplement l’audio.
  • Extraits de podcast : le modèle Multi gère deux locuteurs, ce qui convient aux extraits d’interview pour les réseaux sociaux.
  • Musique et personnages : chanteurs, mascottes et personnages illustrés fonctionnent tant que le visage est bien visible.

Une enseignante enregistrant un cours avec un smartphone sur trépied, à côté d’un tableau blanc

Deux amis riant à une table de podcast, avec des microphones sur bras articulés

💡 Obtenez l’autorisation. Animez votre propre visage, un personnage sous licence ou une personne qui a donné son accord, et indiquez que le résultat est généré par IA lorsqu’il pourrait être pris pour un enregistrement réel.

Se passer de la configuration sur PicassoIA

PicassoIA n’héberge pas InfiniteTalk lui-même. En revanche, la plateforme propose plusieurs modèles photo plus audio qui produisent le même type de résultat dans un onglet de navigateur, sans nœuds, sans téléchargements et sans calcul de VRAM.

Choisir un modèle de synchronisation labiale

ModèleEntréeBon à savoir
Omni Human 1.5Photo plus audioAudio de moins de 35 secondes, prompt textuel facultatif, mode rapide
Fabric 1.0Photo plus audioSortie au choix en 480p ou 720p
Wan 2.2 S2VPhoto, audio et promptLe prompt façonne le mouvement et l’ambiance, 81 images par segment par défaut
Kling Avatar v2Photo plus audio (MP3, WAV, M4A ou AAC)Mode standard ou Pro, gère aussi les dessins animés et les animaux
P Video AvatarPhoto plus un script tapé ou votre propre audioPlus de 30 voix intégrées, jusqu’à 1080p
Lipsync 2 ProVidéo existante plus audio WAVDétection du locuteur actif et cinq modes de synchronisation

La dernière ligne compte si vous êtes venu pour le doublage vidéo vers vidéo : Lipsync 2 Pro fonctionne sur des images que vous avez déjà tournées. Le choix de la voie dépend de la tâche :

  • Choisissez ComfyUI en local pour les clips de plus d’une minute, le modèle Multi avec deux locuteurs, un doublage qui conserve les mouvements de caméra d’origine, ou un contrôle total sur chaque réglage du sampler.
  • Choisissez l’API hébergée quand votre propre application doit créer des avatars à la demande et que vous préférez payer à la seconde plutôt que de garder un GPU allumé.
  • Choisissez un modèle PicassoIA quand vous voulez un résultat dans les dix prochaines minutes, que votre audio dure moins de 35 secondes, et que la rapidité compte davantage que la fidélité exacte au rendu d’InfiniteTalk.

Les étapes pour votre premier clip

  1. Ouvrez la page d’Omni Human 1.5 sur PicassoIA.
  2. Importez un portrait de face. Les visages, les plans en pied et les personnages illustrés fonctionnent tous.
  3. Importez un fichier MP3 ou WAV de moins de 35 secondes. Les audios en anglais, espagnol, japonais, coréen, chinois et indonésien sont pris en charge.
  4. Ajoutez un prompt facultatif pour diriger le mouvement de caméra ou les gestes, par exemple « elle sourit et hoche légèrement la tête ».
  5. Activez le mode rapide pour des brouillons rapides, ou laissez-le désactivé pour le meilleur niveau de détail.
  6. Définissez une seed si vous voulez reproduire un résultat, puis générez et téléchargez la vidéo.

💡 Écrivez d’abord le script, enregistrez-le avec Speech 2.8 HD et gardez chaque clip sous la limite de 35 secondes. Des clips courts assemblés paraissent plus naturels qu’une seule longue prise.

Créer votre premier avatar

Choisissez un portrait, enregistrez 20 secondes d’audio et faites passer le même clip dans deux ou trois modèles. Comparer les résultats côte à côte prend quelques minutes et en dit plus que n’importe quelle fiche technique. Ouvrez Omni Human 1.5 ou Fabric 1.0 sur PicassoIA, importez vos deux fichiers et regardez une photo fixe se mettre à parler. Si vous voulez plus tard un pipeline local, vous saurez déjà à quoi ressemble une bonne entrée.

Une jeune femme souriant à son smartphone dans un loft lumineux

Partager cet article

Choisissez votre langue