Sous-titres Vidéo
Ajoute automatiquement des sous-titres à une vidéo et les incruste dans l'image, produisant un « MP4 sous-titré + SRT ».
Pipeline
- Extraction audio en wav 16k mono (ffmpeg)
- Transcription via whisper.cpp en SRT (whisper-cli)
- SRT → ASS : retours à la ligne automatiques selon la largeur de l'image, police CJK, fond semi-transparent centré en bas
- Incrustation de l'ASS avec ffmpeg (nécessite libass), copie directe de la piste audio
Utilisation
bash scripts/add_subtitles.sh entree.mp4 -o sortie.mp4 -l fr
-l/--languageLangue source, par défautzh, peut êtreauto-f/--fontsizeTaille de police, par défaut 42-s/--srt-onlyGénère uniquement le SRT, sans incrustation
Règles impératives
- Vérifier le texte transcrit avant livraison : le script affiche le SRT dans le terminal. Les noms de personnes, de lieux et les expressions idiomatiques sont souvent mal reconnus (ex. : « 重阳姐 » → « 重阳节 », « 久久重扬 » → « 九九重阳 »). En cas d'erreur, utilisez
-spour générer une nouvelle version, corrigez le SRT, puis incrustez. - Valider le rendu final : extrayez 2 à 3 images du fichier final (
-ss <secondes> -frames:v 1) pour vérifier que les sous-titres sont complets et ne sont ni coupés ni débordants. - Ne pas utiliser le
ffmpegallégé de Homebrew : cette version n'inclut pas libass, les filtressubtitles/ass/drawtextsont absents. Le script sélectionne automatiquement un ffmpeg avec libass ; voir README.md pour l'installation. - Couper les phrases longues : l'ASS utilise
WrapStyle: 2(reconnaît uniquement\N),srt_to_ass.pyinsère automatiquement\Nen fonction delargeur de l'image / taille de police. Si une phrase déborde encore, réduisez la taille avec-f.
Dépendances
ffmpeg (avec libass) + whisper-cli + modèle ggml + python3. En cas d'absence, le script affiche une erreur claire. La liste complète des bibliothèques, les commandes d'installation et les instructions de dépannage se trouvent dans le README.md.