Que fait Talking-head reels ?
Vous transformez un enregistrement d'une personne parlant face caméra en un Reel vertical final (MP4). Le style est éditorial et rapide : le présentateur est l'épine dorsale de la vidéo, et toutes les 2 à 4 secondes, le cadre change – un zoom avant, un grand mot, un insert B-roll, un écran partagé – toujours dicté par ce qui est dit à ce moment-là.
La mécanique est scriptée : coupe des pauses, mastérisation de la voix, masques, et un moteur de rendu qui dessine chaque image directement depuis une Edit Decision List (EDL). Votre travail est la partie éditoriale : comprendre le discours, décider à quoi chaque temps fort doit ressembler, trouver ou générer les séquences appropriées, rédiger l'EDL, vérifier les images fixes, et mener les cycles de révision avec l'utilisateur.
Prérequis
macOS (cible de rendu native) – Python 3.9+ avec numpy et faster-whisper, ffmpeg avec libass (Homebrew ffmpeg ou imageio-ffmpeg). Optionnel : outils en ligne de commande Xcode (masques Apple Vision).
Boîte de rendu Windows 10/11 : le moteur de rendu est neutre vis-à-vis de la plateforme. Python 3.9+ avec numpy et faster-whisper plus une version de ffmpeg qui embarque libass (version "full" de gyan.dev) suffit – utilisez ensuite les substituts gratuits fournis dans assets/fonts/win/ (Playfair Display 400/700/italique + Inter Medium, sous licence OFL) :
- définissez une seule fois la variable d'environnement utilisateur –
REEL_FONT_FILES= les quatre chemins .ttf, séparés par des points-virgules. Le moteur les récupère via son propre hookREEL_FONT_FILES(textass.py) et extrait les polices dans le dossier libass lui-même ; - placez la surcharge de polices EDL intégrée dans chaque EDL :
"fonts": {"anton": "Anton-Regular", "serif": "PlayfairDisplay-Bold", "didot": "PlayfairDisplay-Regular", "sub": "Inter-Medium"}(le mappage par défaut dansreel_plan.pyreste inchangé – les EDL macOS n'ont pas besoin de surcharge) ; - les masques de découpe Apple Vision n'existent pas sur Windows : ignorez ces temps forts.
python scripts/check_setup.pyrapporte des résultats compatibles Windows.
Pas de crédits impliqués : les B-roll proviennent du matériel de l'utilisateur et de bibliothèques gratuites (connecteurs MCP Pixabay / thesvg, Wikimedia Commons) ; l'annexe de génération payante (Higgsfield / Seedance) n'est réservée qu'aux demandes explicites.
Ce que vous livrez
PROJECT/render/<nom>_vN.mp4– 1080x1920, H.264, AAC 320 kbps, voix à environ -14 LUFS.PROJECT/edl.json(et copiesedl_vN.jsonpar cycle) – le montage complet sous forme de données ; son re-rendu donne toujours la même vidéo.- Images de contrôle pour révision (
PROJECT/qa/.../sheet.jpg).
Étape 0 – configuration et accueil
Exécutez python3 scripts/check_setup.py (les chemins dans ce fichier sont relatifs au dossier de la compétence) et corrigez ce qu'il signale. Utilisez le même Python pour chaque script ; un venv avec numpy faster-whisper imageio-ffmpeg est la voie la plus simple. Le ffmpeg doit inclure libass (tout le texte est dessiné avec lui) – la vérification indique quel binaire a été trouvé.
Assurez-vous ensuite de connaître (ne demandez que ce qui manque – un seul message court) :
- L'enregistrement (chemin). Idéalement 4K horizontal ou 1080x1920 vertical, le présentateur à peu près centré.
- La langue, et le script s'il l'a (aide à repérer les mots de remplissage et les erreurs de transcription).
- L'étalonnage : fichier déjà étalonné, une LUT
.cube, ou "utiliser la couleur de la caméra". - L'appel à l'action à la fin (par exemple "commentez MOT et je vous enverrai le lien").
- D'où peuvent provenir les B-roll : ses propres séquences (par défaut), banques gratuites et archives (Pixabay MCP, Wikimedia Commons), logos/icônes via le connecteur MCP thesvg (se rabat sur les rendus PNG de Commons). Demandez ce à quoi il a les droits. La génération payante IA (Higgsfield / Seedance) uniquement s'il le demande explicitement.
- Où conserver le dossier du projet (par défaut : à côté de la vidéo,
<nom>_reel/).
Étape 1 – préparation et analyse (scriptée)
python3 scripts/prepare_project.py VIDEO.mov [--graded GRADED.mov | --lut grade.cube] [--project DIR]
python3 scripts/transcribe.py DIR [--language en] [--model small|medium|large-v3]
python3 scripts/cut_pauses.py DIR [--remove 2.40-2.72 ...]
python3 scripts/master_audio.py DIR
python3 scripts/presenter_mattes.py DIR # nécessite swiftc ; ignorer seulement si indisponible
cut_pauses.py affiche chaque segment conservé avec ses mots. Lisez-le par rapport à la transcription : supprimez les faux départs, les prises répétées et les mots de remplissage avec --remove debut-fin (secondes source) et relancez-le. Signalez à l'utilisateur combien a été supprimé (par exemple "81,5 s -> 73,4 s"). Les étapes suivantes utilisent toutes la chronologie du programme (analysis/program_words.json).
Étape 2 – planifier le montage (votre jugement)
Lisez references/style-guide.md (le look et les règles) et references/edit-planning.md (comment transformer un discours en temps forts), puis rédigez une feuille de temps forts : une ligne par temps fort avec les temps du programme, les mots prononcés, ce qui est à l'écran (présentateur large/serré, type d'insert, disposition), le traitement du texte et l'idée de séquence. Montrez-la à l'utilisateur avant de sourcer les séquences – il est peu coûteux de modifier maintenant et coûteux plus tard.
Étape 3 – séquences
Suivez references/broll-sourcing.md : quoi chercher, d'où elles peuvent provenir, licences, et les recettes de récupération gratuites testées (recherches Pixabay MCP + vérification d'URL, API Wikimedia Commons + curl UA/tentatives + SHA-1, thesvg MCP pour logos, transcodes ffmpeg). La génération payante (Seedance via Higgsfield) se trouve dans l'annexe – uniquement lorsque l'utilisateur demande explicitement des plans générés par IA et approuve le coût. Mettez tout dans PROJECT/broll/ et les logos dans PROJECT/logos/. Passez en revue les candidats avec scripts/clip_sheet.py. Si l'utilisateur a déjà des clips ou des inserts, utilisez-les – ne ressourcez pas ce qui existe.
Étape 4 – EDL et validation
Rédigez PROJECT/edl.json en suivant references/edl-schema.md (un exemple complet – le Reel sur lequel ce style a été construit – se trouve dans assets/examples/example_edl.json). Ensuite :
python3 scripts/validate_edl.py DIR/edl.json
Corrigez chaque erreur ; lisez chaque avertissement et soit corrigez-le, soit acceptez-le consciemment.
Étape 5 – images fixes, puis rendu
python3 scripts/render_reel.py DIR/edl.json --stills 0.6 2.4 4.8 ... --out-dir DIR/qa/stills_v1
python3 scripts/render_reel.py DIR/edl.json --out DIR/render/<nom>_v1.mp4
Les images fixes prennent quelques secondes : choisissez un moment à l'intérieur de chaque temps fort, plus le milieu de chaque transition, et vérifiez la planche contact par rapport à la liste de contrôle dans references/style-guide.md (pas de bords vides, mots lisibles et dans le cadre, rien sur les yeux, texte dans la colonne centrale, traitement des couleurs correct). Corrigez l'EDL et revérifiez jusqu'à ce que ce soit propre. Ensuite, effectuez le rendu complet du Reel (quelques minutes sur un Mac récent ; voir references/renderer.md) et donnez à l'utilisateur le chemin ainsi que les chiffres imprimés par le moteur de rendu (taille, images par seconde, durée, sonie).
Étape 6 – cycles de révision (comme l'utilisateur le souhaite)
- L'utilisateur envoie ses remarques une par une, souvent des captures d'écran avec quelques mots. Numérotez-les (1, 2, 3...), confirmez brièvement, et ne modifiez rien tant qu'il n'a pas dit qu'il a terminé ("commence", "vas-y", "c'est tout"). Ensuite, appliquez-les toutes en une seule passe.
- Chaque cycle est une nouvelle version : copiez
edl.jsonversedl_vN.jsonavant de modifier, effectuez le rendu vers<nom>_vN.mp4. N'écrasez jamais un rendu ou une version EDL que l'utilisateur a déjà vu. - Vérifiez les moments modifiés avec
--stillsd'abord, puis effectuez le rendu de la vidéo complète une fois. - Conservez le même style d'un cycle à l'autre ; lorsqu'une remarque implique une règle générale ("pas de bords vides", "sous-titres plus grands"), appliquez-la partout, pas seulement dans la capture d'écran.
- Si l'utilisateur souhaite une séquence différente pour un plan, changez ce clip dans l'EDL (voir "Changement de clips" dans
references/edl-schema.md) – rien d'autre ne bouge.
Autres outils
scripts/render_reel.py --stills ...– n'importe quels moments, sous forme de PNG plus une planche contact.scripts/clip_sheet.py– images et temps de coupe franche de clips candidats.references/renderer.md– comment le moteur de rendu fonctionne, vitesse, polices, dépannage.
Règles de base
- Séquences : utilisez uniquement du matériel auquel l'utilisateur a les droits – les siennes, des banques sous licence ou libres de droits, ou des clips générés pour lui. Les personnes générées ne doivent pas ressembler à de vrais acteurs ou célébrités, et aucune reconstitution de personnages célèbres, costumes, logos ou scènes de films n'est autorisée.
- Chaque rendu est un nouveau fichier. N'écrasez jamais ce que l'utilisateur a révisé.
- Travaillez en anglais dans les fichiers du projet ; parlez à l'utilisateur dans sa langue.