H3 Video : Processus Complet de Court Métrage IA
Ce processus est basé sur l’expérience de plusieurs projets réels. Idée centrale : planifier d’abord, valider chaque étape, et ne corriger que la couche qui pose problème.
Processus global (dans l’ordre, sans saut)
| Étape | Action | Validation |
|---|---|---|
| 0 | Recherche : étudier des œuvres similaires et les méthodes existantes, noter les techniques | — |
| 1 | Planification : ton et style, script, segmentation, liste de génération (template dans templates/planification-modele.md) | Validation par l’utilisateur |
| 2 | Doublage : produire la voix off et les voix hors champ via TTS, mesurer la durée réelle | L’utilisateur écoute et valide le timbre |
| 3 | Modèle de personnage : une image en pied de face par personnage, dans l’univers de l’histoire | Validation par l’utilisateur |
| 4 | Première image : une par segment, juste au début de l’action | Ne pas générer la vidéo avant validation |
| 5 | Génération : produire un brouillon avec les réglages les plus rapides | — |
| 6 | Vérification ligne par ligne : locuteur, regard, raccords | En cas d’erreur, ne refaire que ce segment |
| 7 | Agrandissement, sous-titres, volume sonore, couverture | Validation finale par l’utilisateur |
| 8 | Rétrospective : noter chaque point à vérifier du plan, documenter les leçons dans la base de connaissances | — |
Sept règles absolues
- Le style doit servir le ton de l’histoire. Avant de dessiner quoi que ce soit, rédiger une section « Ton et style » : source lumineuse et obscurité, palette de couleurs, état des vêtements (neufs, sales), expressions, ambiance du décor. Les modèles doivent aussi être dans cet univers, pas sur fond gris de studio. Poser la question « Cela appartient‑il à cette histoire ? » avant chaque image. L’erreur la plus fréquente est d’associer un visage parfait d’idole à une histoire sombre.
- Une génération = une seule source sonore. Les voix off et hors champ ne doivent jamais passer par H3, sinon le personnage à l’écran synchronisera ses lèvres sur la voix off, même avec « bouche fermée » dans le prompt. Pour les segments avec voix off, générer une vidéo sans dialogue et ajouter le son au montage.
- Personnage présent mais sans dialogue : ne pas lui donner de réplique lors de la génération. Pour un personnage qui doit être caché pendant qu’un autre parle, utiliser un plan de dos ou par‑dessus l’épaule.
- Le script est la seule source. Chaque ligne précise le type (dialogue/voix hors champ), le locuteur, le regard, le texte original. Budget d’environ 3 caractères par seconde, chaque ligne doit être terminée dans son segment. Aucune étape ultérieure ne doit modifier le script.
- Regard : le locuteur regarde son interlocuteur, l’interlocuteur regarde le locuteur. Chaque ligne du prompt doit clairement indiquer qui regarde qui.
- Si la première image est erronée, la refaire. Ne pas essayer de la corriger par le prompt. Vérifier à la résolution originale : mains, yeux, bouche, accessoires, objets superflus.
- Ne pas livrer sans vérification ligne par ligne. Pour chaque réplique, extraire une grille d’images denses avec
scripts/speaker_grid.pyet répondre à une seule question fermée : « Qui parle : A / B / les deux / aucun ». Comparer avec le script. Une grille de 4 images éparses peut manquer des erreurs.
Principes de génération et de reprise
- D’abord le brouillon, puis l’agrandissement : utiliser la résolution la plus rapide, valider, puis n’agrandir que la version validée.
- Analyser l’échec avant de corriger : déterminer si le problème vient du prompt, de la première image, du script ou du montage, puis décider quelle couche modifier. Une erreur commune à plusieurs segments se corrige sur la référence partagée (modèle de personnage) ; une erreur isolée se corrige uniquement sur ce segment, un seul changement à la fois.
- Écrire des prompts positifs, éviter les « ne pas… ». Pour éviter quelque chose, le corriger en amont (première image, modèle).
- Enregistrer pour chaque segment la première image, le modèle, la graine aléatoire et le prompt, afin de ne refaire qu’un segment si nécessaire.
- Test des 2 premières secondes : le spectateur doit comprendre immédiatement ce qu’il regarde.
Documents de référence
references/details-et-lecons-processus.md: détails de chaque étape et pièges rencontrés.references/noeuds-et-parametres-comfyui.md: nœuds et paramètres pour Qwen‑Image (modèles), Qwen‑Image‑Edit (retouche), VoxCPM2 (clonage vocal), H3 Ref2VA, ainsi que les solutions aux pannes connues.references/recherche-pipelines-open-source.md: comparaison de 9 projets vidéo IA open source, ce qui est intéressant à reprendre ou non.templates/planification-modele.md: modèle de document de planification incluant script et tableau de validation.
Scripts
Tous les scripts se connectent à ComfyUI via la variable d’environnement COMFY_URL (par défaut http://127.0.0.1:8188). Voir scripts/README.md pour l’utilisation.
| Script | Rôle |
|---|---|
t2i_masters.py | Générer en lot les modèles de personnages avec Qwen‑Image (préfixe de style + description par personnage) |
edit_image.py | Retoucher localement une image avec Qwen‑Image‑Edit, sans modifier le reste |
voice_design.py | Concevoir la voix d’un personnage avec VoxCPM2 selon une description textuelle, produire deux échantillons A/B |
tts_clone.py | Cloner un timbre vocal avec VoxCPM2 à partir d’un échantillon de référence, produire en lot la voix off |
h3_ref2va.py | Assembler et soumettre le workflow H3 Ref2VA (image de référence, audio de référence, ancrage de la première image) |
wait_download.py | Attendre la fin de la tâche et télécharger toutes les sorties |
ws_progress.py | Afficher la progression de la tâche (nécessite le client_id utilisé lors de la soumission) |
asr.py | Transcrire avec faster‑whisper pour vérifier que le doublage correspond mot pour mot |
speaker_grid.py | Générer une grille d’images denses par ligne de script pour la vérification du locuteur |
upscale_video.py | Agrandir la vidéo image par image avec RealESRGAN |
post_subtitle_loud.py | Incruster les sous‑titres + appliquer deux passes loudnorm pour atteindre -14 LUFS |
make_cover.py | Générer les couvertures au format 3:4 et 9:16 |