Communitygithub.com

eduardogalbiati/fabrica-videos-corte

Découpage automatique d'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, avec un rapport de ce qui a été retiré.

Qu'est-ce que fabrica-videos-corte ?

Cette skill, intégrée à l'écosystème **Fábrica de Vídeos Agêntica**, automatise le montage d'enregistrements parlés en éliminant les silences, erreurs, bégaiements et prises multiples pour ne garder que la meilleure version de chaque phrase, sans jamais altérer le fichier original. Elle est conçue pour être utilisée en terminal, dans un dossier de travail dédié (`TRABALHO`), et repose sur une séquence d'étapes : conversion au format studio, transcription via Whisper, analyse des coupures (générant un fichier JSON listant les segments), décision manuelle de ce qui doit être retiré (répétitions, erreurs, hors-script), et application des coupes. La skill fournit également un rapport détaillé (durée avant/après, nombre de coupes, motifs) et permet des ajustements fins (seuil de silence, marges de respiration). Elle est particulièrement utile avant la synchronisation avec d'autres skills de la fabrique (comme `fabrica-videos-rapido` ou `fabrica-videos-reels`), et le résultat final est toujours validé visuellement et auditivement par l'utilisateur. Sa documentation précise les limites connues (précision temporelle de Whisper, coupures sèches, nombre maximal de segments) et donne des conseils concrets pour chaque type de défaut.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/eduardogalbiati/fabrica-de-video-skills/tree/HEAD/.claude/skills/fabrica-videos-corte

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

/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-rapido et de la skill fabrica-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

  1. Enregistrement au format studio. S'il vient d'un téléphone : copiez l'original dans TRABALHO\originais\ et exécutez npm run converter -- "<original>" <slug> (génère TRABALHO\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.
  2. Transcrire : npm run legendar -- "travail\public\gravacao-<slug>.mp4" (en arrière-plan ; ~1 min pour 2 min d'enregistrement).
  3. Analyser : npm run cortar -- analisar "travail\public\gravacao-<slug>.mp4" → cortes\gravacao-<slug>.cortes.json et cortes\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 »).
  4. Décider ce qui est retiré. Lisez l'intégralité du tableau de paroles et remplissez la liste remover du .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.
  5. Appliquer : npm run cortar -- aplicar cortes\gravacao-<slug>.cortes.json → TRABALHO\public\gravacao-<slug>-limpa.mp4 et cortes\gravacao-<slug>.relatorio.md (ce qui a été retiré, combien de temps, pourquoi et le texte qui s'y trouvait).
  6. Vérifier sans écouter : transcrivez la vidéo nettoyée (npm run legendar -- "<...-limpa.mp4>") et lisez npm 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 liste remover et réappliquez ; si le défaut vient du script, corrigez cortar.mjs et notez-le ici.
  7. 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.fica du .cortes.json). La vérification auditive lui incombe.

Réglages (dans la config du .cortes.json, puis réappliquez)

ChampDéfautRôle
pausaMin0,5 sSilence à partir de cette durée est coupé. Plus élevé = plus naturel, moins de coupes.
folga0,12 sRespiration conservée avant et après chaque coupe. Si les paroles semblent trop collées, augmentez à 0,18.
folgaFinal0,35 sSilence conservé à la fin de la vidéo.
ruidoDbautomatiqueSeuil 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 à pausaMin reste (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.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés