/fabrica-videos-corte — découpage automatique
Skill de la Fábrica de Vídeos Agêntica. Nettoie un enregistrement parlé : supprime les silences, les erreurs, les bégaiements et les prises répétées, et ne conserve que la meilleure version de chaque phrase. L'original n'est jamais modifié.
Vous êtes le monteur vidéo. Commandes dans le terminal, à la racine du projet. TRABALHO = le dossier trabalho.
Quand l'utiliser
- Le client envoie un enregistrement et dit « nettoie », « coupe les pauses », « enlève les erreurs ».
- À l'intérieur de la skill
fabrica-videos-rapidoet de la skillfabrica-videos-reels, avant de synchroniser les animations.
Comment ça fonctionne
Les pauses sont supprimées automatiquement : le script détecte les silences dans l'audio. Ce qui est une erreur ou une prise répétée relève de votre décision (vous lisez le texte). Le client vérifie grâce au rapport et en écoutant le résultat.
Procédure pas à pas
- Enregistrement au format studio. S'il vient d'un téléphone : copiez l'original dans
TRABALHO\originais\et exécuteznpm run converter -- "<original>" <slug>(génèreTRABALHO\public\gravacao-<slug>.mp4). Valable aussi pour un enregistrement qui n'est pas en 4K HDR : le convertisseur redresse la vidéo en portrait, la recadre en 1080×1920 et la passe à 30 fps. Extrayez une image du converti et de l'original (ffmpeg -ss 20 -i <fichier> -frames:v 1 ...) et comparez : rotation et couleurs doivent correspondre. - Transcrire :
npm run legendar -- "travail\public\gravacao-<slug>.mp4"(en arrière-plan ; ~1 min pour 2 min d'enregistrement). - Analyser :
npm run cortar -- analisar "travail\public\gravacao-<slug>.mp4"→cortes\gravacao-<slug>.cortes.jsonetcortes\gravacao-<slug>.falas.md(l'enregistrement sous forme de tableau de paroles avec temps, pauses et l'avertissement « semble répéter la parole N »). - Décider ce qui est retiré. Lisez l'intégralité du tableau de paroles et remplissez la liste
removerdu.cortes.json:- prise répétée : on garde la dernière prise complète (il recommence quand il se trompe) ; les précédentes sont supprimées :
{ "falas": [2, 3], "motivo": "s'est trompé et a recommencé" }; - la même phrase dite entièrement deux fois, avec une longue pause au milieu (dans l'enregistrement réel, c'était le CTA final) : il a répété parce qu'il n'aimait pas la première. On garde la dernière, et dans le message dites-lui laquelle a été supprimée pour qu'il puisse échanger ;
- échauffement avant de commencer (« allez », « ok », bavardage) et tout ce qui suit le CTA : à supprimer ;
- bégaiement ou mot isolé au milieu d'une parole :
npm run cortar -- palavras cortes\gravacao-<slug>.cortes.json <n°>affiche les temps mot par mot ; utilisez{ "de": 12.30, "ate": 13.10, "motivo": "a bégayé" }; - commentaire hors script (« non, attends », « encore », « coupe ») : à supprimer ;
- pause intentionnelle (suspense avant un chiffre) : mettez-la dans
manter, ex. :{ "de": 20.1, "ate": 21.4 }; - si un script existe (
roteiros\<slug>.md), comparez : la prise conservée est celle qui dit le texte du script, ou la plus complète s'il a modifié la phrase. En cas de doute entre deux bonnes prises qui disent des choses différentes, ne coupez pas : demandez-lui.
- prise répétée : on garde la dernière prise complète (il recommence quand il se trompe) ; les précédentes sont supprimées :
- Appliquer :
npm run cortar -- aplicar cortes\gravacao-<slug>.cortes.json→TRABALHO\public\gravacao-<slug>-limpa.mp4etcortes\gravacao-<slug>.relatorio.md(ce qui a été retiré, combien de temps, pourquoi et le texte qui s'y trouvait). - Vérifier sans écouter : transcrivez la vidéo nettoyée (
npm run legendar -- "<...-limpa.mp4>") et liseznpm run falas -- legendas\gravacao-<slug>-limpa.json. Trois choses :- le texte doit correspondre à ce qu'il voulait dire, sans mot coupé au milieu et sans résidu d'erreur (lors du premier passage réel, un « Ok. » de l'échauffement est resté : c'est ainsi que le défaut est apparu) ;
- la colonne « pause après » ne doit rien contenir au-dessus d'environ 0,8 s : une longue pause dans la vidéo nettoyée est un morceau resté entre deux coupes ;
- le début et la fin : extrayez une planche d'images du nettoyé (
ffmpeg -i <limpa> -vf "fps=1/2.5,scale=180:-1,tile=7x2" -frames:v 1 <folha.jpg>) et vérifiez s'il est dans le cadre et parle de la première à la dernière image. S'il reste quelque chose, ajustez la listeremoveret réappliquez ; si le défaut vient du script, corrigezcortar.mjset notez-le ici.
- Lui montrer : envoyez la vidéo nettoyée avec le résumé du rapport : durée avant et après, nombre de coupes, les paroles que vous avez retirées de votre propre décision (pas les pauses) et la seconde de chaque raccord dans la vidéo nettoyée (additionnez la durée des segments qui restent dans
resultado.ficadu.cortes.json). La vérification auditive lui incombe.
Réglages (dans la config du .cortes.json, puis réappliquez)
| Champ | Défaut | Rôle |
|---|---|---|
pausaMin | 0,5 s | Silence à partir de cette durée est coupé. Plus élevé = plus naturel, moins de coupes. |
folga | 0,12 s | Respiration conservée avant et après chaque coupe. Si les paroles semblent trop collées, augmentez à 0,18. |
folgaFinal | 0,35 s | Silence conservé à la fin de la vidéo. |
ruidoDb | automatique | Seuil de ce qui est considéré comme silence. Pièce bruyante : relancez analisar avec une valeur plus élevée à la fin de la commande (ex. : -32). |
Comment le script assemble les coupes (révisé avec le premier enregistrement réel)
- Pauses : par le silence mesuré dans l'audio. Les fragments d'une même pause séparés par un claquement de bouche de moins de 0,1 s deviennent une seule pause.
- Début et fin : tout ce qui précède le premier mot et suit le dernier mot est supprimé (ajustement, sortie du cadre), laissant 0,12 s au début et
folgaFinalà la fin. - Parole marquée dans
remover: la coupe va de la première pause après le dernier mot conservé jusqu'à la dernière pause avant le prochain mot conservé. C'est le silence audio qui commande, pas le temps de Whisper.
Limites connues
- Temps de Whisper : dans l'enregistrement réel, le début d'une parole après une longue pause est arrivé jusqu'à 0,4 s en retard et la fin d'un mot jusqu'à 0,25 s en plus ou en moins. La coupe d'une parole entière s'appuie sur le silence et n'en souffre pas. En revanche, la coupe au milieu d'une phrase (bégaiement, sans silence des deux côtés) ne dispose que du temps de Whisper : vérifiez ces points avec plus d'attention et demandez-lui d'écouter. Ce cas ne s'est pas encore présenté dans un enregistrement réel.
- Une pause inférieure à
pausaMinreste (c'est la respiration naturelle entre les phrases). - Coupe sèche dans l'image : en écran partagé, c'est normal. Si le saut gêne, prévenez-le plutôt que d'inventer une transition.
- Plus de 150 segments en une passe : le script refuse ; augmentez
pausaMin.