J’ai créé un outil qui génère une vidéo avec narration, sous-titres et BGM à partir d’un simple script YAML
(github.com/kmg28801)Comme je débutais en montage vidéo, il me fallait une demi-journée par vidéo ; j’ai donc automatisé le processus de montage avec du code.
L’entrée se résume à un seul fichier YAML où l’on indique, scène par scène, la narration / le visuel / le callout.
Une seule ligne, python3 src/pipeline.py scenario.yaml config.yaml, produit un mp4 finalisé.
Pipeline (Python) :
- Script → narration TTS (
say/ Supertone / ElevenLabs interchangeables, résultats mis en cache) - Répartition automatique du timing des sous-titres selon la durée de la narration ; narration = sous-titres identiques
- Rendu des sous-titres et callouts en PNG puis overlay (choix fait parce que ce build de ffmpeg n’a pas libass/drawtext — en pratique, le contrôle au pixel du contour et de la position du coréen est même plus simple)
- Correction automatique du ratio des vidéos de téléphone tournées à la verticale via padding avec arrière-plan flouté (16:9 ↔ Shorts 9:16 avec une seule ligne de config)
- Concaténation de la narration + mixage BGM (coupe automatique de la BGM à la fin de la vidéo + fondu → évite la « queue noire »)
- Vérification automatique en fin de rendu de la dérive de durée et de la luminosité de la dernière frame
C’est destiné aux vidéos faceless avec sous-titres, et je l’utilise réellement pour produire les vidéos de ma chaîne YouTube.
Limites : les sous-titres ne sont pas synchronisés mot par mot, mais par scène (répartition proportionnelle au nombre de caractères).
Et comme l’outil a été conçu en supposant que ffmpeg, dans cet environnement, n’a pas libass, l’overlay PNG est le mode par défaut.
L’objectif n’est pas de remplacer parfaitement un logiciel de montage, mais de rendre pratiquement instantané le passage « script → premier montage » afin de supprimer le coût de production répétitive.
Smoke test (vérification de tout le pipeline avec la voix macOS say, sans clé) :
python3 -m pip install -r requirements.txt
python3 demo/make_placeholders.py
python3 src/pipeline.py demo/scenario.yaml demo/config.yaml
MIT. Les retours sont bienvenus.
Aucun commentaire pour le moment.