Processamento de A-Roll (Cabeça Falante)
O objetivo: uma gravação longa, ou várias gravações do mesmo roteiro, entra, e um corte bruto apertado sai, construído a partir do melhor take de cada fala. A fala segue direto para a fala, cada palavra está inteira, e o corte soa como um take limpo, na primeira tentativa.
Esta skill é construída para Claude Code e Runneth. Ela precisa de:
- ffmpeg para medir o áudio, capturar quadros e cortar o vídeo.
- Tempos das palavras para tudo que é dito: uma ferramenta de fala para texto que fornece o tempo de cada palavra (Whisper, faster-whisper, whisper.cpp).
- Uma forma de julgar a imagem: veja "Como julgar um take" abaixo.
- O script de verificação em
scripts/cut_check.py(python3 com numpy e ffmpeg).
Fale com o editor em palavras simples do dia a dia, uma ideia de cada vez.
Antes de começar: as ferramentas
No Runneth, tudo já está instalado: pule esta seção.
No Claude Code, esta skill precisa das ferramentas de vídeo gratuitas que a skill video-editing-setup instala. Verifique silenciosamente se ~/.video-editing-tools/bin/ffmpeg -version funciona. Se funcionar, use as ferramentas em ~/.video-editing-tools/bin (ffmpeg, ffprobe, python) onde quer que esta skill diga ffmpeg, ffprobe ou python3, e continue. Se não funcionar, siga a skill video-editing-setup primeiro, depois volte aqui.
Passo 0: Duas verificações rápidas antes de qualquer trabalho
-
O arquivo é o que o editor quis dizer. Se ele disse que é uma regravação ou um novo clipe e ele tem o mesmo comprimento ou configuração que um anterior, pergunte em uma linha antes de começar.
-
Pergunte exatamente isto, como uma pergunta com duas opções:
"Você quer que eu mostre primeiro os takes que eu manteria, ou quer que eu vá direto e faça a edição?"
- Mostre primeiro → siga cada passo abaixo e pare no Passo 4 para a aprovação do editor.
- Apenas faça a edição → execute cada passo do início ao fim sem parar. Mencione qualquer coisa sobre a qual você não tinha certeza uma vez, no final.
Pule a pergunta se o editor já disse qual opção prefere ("apenas corte", "mostre os takes primeiro"). Se não houver ninguém para responder, trate como "apenas faça a edição".
Passo 1: Obter as palavras
- Verifique a duração, orientação e taxa de quadros de cada gravação (
ffprobe). Quando houver várias gravações, dê a cada uma um rótulo simples (Vídeo A, Vídeo B, Vídeo C) e execute cada passo abaixo em todas elas. - Extraia o áudio de cada gravação:
ffmpeg -i IN.mov -vn -ac 1 -ar 16000 audio.wav. - Marque cada trecho de fala:
ffmpeg -i audio.wav -af silencedetect=n=-35dB:d=0.3 -f null -. Os trechos entre silêncios são as ilhas de fala. Cada palavra vive dentro de uma, e elas são mais exatas do que qualquer tempo de transcrição. - Transcreva com tempos de palavras. Com faster-whisper: modelo
base,word_timestamps=True,condition_on_previous_text=False, e uminitial_promptlistando nomes e palavras de marca prováveis no vídeo. Modelos maiores apenas em inglês silenciosamente limpam reinícios, o que esconde as falsas partidas que esta skill precisa ver. - As transcrições se desviam ou pulam em trechos longos. Cada ilha de fala precisa de palavras. Quando uma não tem nenhuma, ou as palavras parecem faltar entre silêncios, transcreva apenas aquele trecho novamente: comece a janela cerca de 1 segundo antes da ilha, termine cerca de 1 segundo depois, e desligue qualquer filtro de fala (
vad_filter=False). - Janelas curtas retranscritas podem inventar palavras no final que não foram ditas ("Muito obrigado", "Obrigado por assistir"). Mantenha apenas palavras que caem dentro da ilha e se encaixam na linha; palavras empilhadas no mesmo timestamp são inventadas.
- Corrija erros claros de audição de nomes e palavras de marca. Se houver um roteiro, use-o como o mapa das falas; se não, a transcrição é o mapa.
Passo 2: Agrupar os takes
- Divida a filmagem em falas (uma frase ou ideia cada) e agrupe cada tentativa da mesma fala, em todas as gravações. Várias gravações de um roteiro são um único conjunto de takes: a fala 1 recebe cada take da fala 1 do Vídeo A, B e C lado a lado, e cada take é rotulado com sua gravação ("Vídeo B, take 3"). As tentativas geralmente começam com as mesmas poucas palavras.
- Um take vai do início de uma tentativa até o final de sua última palavra, antes da próxima tentativa começar.
- Marque cada take como completo (diz a linha inteira) ou uma falsa partida (para no meio).
- Cada frase dentro de uma fala conta como sua própria peça. Uma fala pode ser construída a partir das melhores peças de diferentes takes (a primeira frase do take 4, a segunda do take 2), incluindo peças limpas de falsas partidas.
Passo 3: Julgar cada take
Cada take de cada fala é julgado, incluindo falas ditas apenas uma vez. A melhor versão de cada frase vence, seja qual for o take ou ordem em que veio. Construa cada fala a partir dessas melhores peças quando a junção entre elas estiver limpa (veja a regra 7 abaixo). Use "O que torna um take o escolhido" abaixo, e escreva uma linha por take no arquivo de takes (modelo: templates/takes.md): fala, take, tempo, o que você viu, manter ou não, e uma razão curta.
Como julgar um take
O que julgar permanece o mesmo em ambos. Como ver depende da ferramenta:
- No Runneth (ou qualquer configuração que possa enviar vídeo para um modelo que o assista, como Gemini), faça esse modelo assistir a cada gravação e julgar cada fala repetida com base em "O que torna um take o escolhido", além de tom, ênfase, timing de piadas e hesitações. Mantenha suas próprias escolhas fora do que você envia a ele, para que as duas leituras permaneçam independentes. Onde ele escolher um take diferente do seu, a escolha dele prevalece. Sempre pegue os tempos da transcrição e das ilhas de fala, nunca do modelo de vídeo: seus timestamps se desviam e às vezes ele pula falas.
- No Claude, que não pode assistir vídeo, julgue a partir de três coisas que ele pode verificar por conta própria:
- As palavras (transcrição): a linha inteira, sem tropeços, sem palavras de enchimento, sem reinício no meio.
- O som (
astatsem cada take): volume constante, sem clipe, sem solavancos ou explosões de ruído. - A imagem (quadros congelados): uma folha por fala repetida com cada take empilhado, 2 quadros por segundo:
ffmpeg -nostdin -ss START -t LENGTH -i IN.mov -vf fps=2,scale=160:-2,tile=10xN take.jpg, um por take, empilhados em uma imagem. Olhe as folhas para tudo em "O que torna um take o escolhido".
- Gravações de tela com voz: julgue a redação, a voz e se o apontar ou clicar corresponde ao que está sendo dito.
Passo 4: Mostrar as escolhas (apenas se o editor pediu para vê-las primeiro)
- Mostre a lista de corte: uma linha numerada por peça mantida,
início-fime as palavras exatas mantidas. Marque escolhas apertadas com "(escolha apertada: o take 2 é igualmente limpo)" nessa linha, para que o editor saiba onde olhar; escolhas claras não recebem nota. Adicione uma linha curta no final apenas se algo bloquear a edição (uma palavra que você não pode entender). - O editor aprova, troca um take ("use o take 2 para a fala 4") ou corta uma fala. As alterações dele prevalecem, mesmo que um modelo de vídeo discorde depois. Quando ele trocar, pergunte o porquê em uma pergunta curta se ele não disse. A razão dele é como a skill aprende (Passo 7).
Passo 5: Construir o corte
O corte é realmente apertado: a fala segue direto para a fala em todos os lugares, também dentro dos takes mantidos. Pausas de pensamento e respirações entre frases são cortadas. O único momento mantido é cerca de 0,5s no último quadro.
- As bordas vêm das ilhas de fala, não da transcrição. Cada peça mantida começa no primeiro som de sua ilha e termina no último. Respirações, estalos de lábios e ruídos de manuseio antes da primeira palavra podem ultrapassar -30dB e ser costurados na ilha, então uma peça começa no início de sua primeira palavra (onde o nível sobe para a fala, geralmente -25dB ou mais alto), não no primeiro pipoco. Qualquer trecho de respiração ou ruído no início ou fim de uma peça é cortado. Os fins funcionam ao contrário: uma fala muitas vezes termina baixinho ("dormindo à noite" dito suavemente), então uma peça termina após sua última palavra, mesmo quando essa palavra é mais baixa que o resto. Verifique se a última palavra de cada fala está na transcrição do corte.
- Pausas dentro de um take mantido são encontradas com uma passagem mais sensível,
silencedetect=n=-30dB:d=0.2, e cada uma de 0,25s ou mais é cortada. Reinícios e palavras repetidas dentro de um take também são cortados, mantendo apenas a frase final limpa. - Adicione cerca de 0,05s de cada lado a cada peça. Mais deixa uma pausa; menos corta uma palavra. Em seguida, encaixe cada borda em um quadro inteiro (o início arredonda para baixo até o quadro anterior, o fim arredonda para cima até o quadro seguinte). Bordas entre quadros fazem a junção duplicar ou pular quadros, o que move cada corte posterior em um ou dois quadros e deixa passar quadros perdidos quando o b-roll é colocado nos cortes.
- Peças com menos de cerca de 0,3s são quase sempre sobras (uma sílaba perdida). Descarte-as, a menos que contenham uma palavra inteira.
- Adicione um fade de áudio de 20ms em cada junção e junte tudo em uma recompactação a partir de uma cópia de trabalho. O arquivo original permanece intocado.
- Salve a lista de peças (
[[início, fim], ...]em segundos) comoclips.json; o script de verificação o lê.
Passo 6: Verificar o corte antes que o editor o veja
Cada versão que o editor vê passou em todas as verificações naquele arquivo exato. Uma verificação que não foi executada conta como falha.
- Execute o script de verificação:
python3 scripts/cut_check.py --voice audio.wav --clips clips.json --out CORTE.mp4. Ele verifica três coisas e imprimeRESULTADO PASSOUouFALHOU:- Finais: os últimos 50ms de cada peça estão abaixo do nível de fala (-30dB). Se não estiverem, uma palavra foi cortada: mova esse final para mais tarde, onde o nível cai.
- Inícios: os 30ms antes do início de cada peça estão silenciosos, então nenhuma peça começa no meio de uma palavra.
- Lacunas: nenhuma pausa de 0,25s ou mais em qualquer lugar do corte, exceto a retenção final.
Com várias gravações, execute uma vez por gravação: o áudio dessa gravação como
--voicee apenas suas peças emclips.json, cada vez com o mesmo corte como--out. Se o som vier de um arquivo diferente da imagem (um microfone separado), também corte o áudio da própria câmera com os mesmos cortes e passe-o como--camlock, para que o script verifique também a sincronia (a cada 3 segundos dentro de 40ms).
- Cada palavra, inteira, uma vez: transcreva o corte com tempos de palavras e compare-o com a lista de corte, palavra por palavra. Uma meia palavra em uma junção significa que essa borda está muito apertada. Uma palavra ou frase repetida em uma junção significa um reinício residual. Sem ar morto entre palavras: nessa transcrição, nenhuma lacuna entre o fim de uma palavra e o início da próxima é maior que cerca de 0,3s (exceto a retenção final). A verificação de lacuna no script só encontra pausas silenciosas; uma pausa cheia de respiração é alta o suficiente para passar nela, então esta verificação de lacuna de palavras é o que a pega. Corte a peça em sua primeira palavra e execute todas as verificações novamente.
- Cada junção, uma por uma: para cada corte, nomeie a última palavra antes dele e a primeira palavra depois dele, e confirme que ambas são ditas completamente. Transcreva uma janela de 2 segundos em torno de cada junção para verificar (um "algum problema?" genérico deixa uma palavra cortada passar despercebida). No Runneth, também peça ao modelo de vídeo para assistir ao corte como um espectador exigente de primeira viagem e listar problemas com tempos: palavras cortadas ou perdidas, falhas, quadros congelados, saltos bruscos.
- Duração: a duração do corte corresponde ao total da lista de corte.
Corrija tudo que falhar, corte novamente e execute todas as verificações novamente.
Passo 7: Aprender com o editor
Cada vez que o editor troca um take, muda uma borda ou diz por que um take é melhor, transforme essa razão em uma regra geral e mescle-a em "O que torna um take o escolhido" abaixo (ou no Passo 5 quando for sobre o quão apertado está o corte). Mantenha a lista curta: reescreva e combine regras em vez de acumular novas. Apenas as razões do editor mudam as regras.
O que torna um take o escolhido
Estas regras vieram das escolhas reais de uma editora em seus próprios vídeos de cabeça falante. Aplique-as em ordem, depois substitua-as pelas regras do seu próprio editor conforme as razões dele chegarem.
- A linha inteira, dita claramente. Um take com um tropeço ou uma palavra faltando perde para um limpo, por mais bom que pareça.
- Nada cobrindo o rosto. Uma mão ou microfone na frente da boca descarta um take.
- Energia. Gestos, movimento e uma entrega animada vencem uma leitura parada e monótona.
- O rosto mais feliz. Um sorriso genuíno e olhos brilhantes vencem entre dois takes limpos.
- O rosto combina com a fala. Olhos arregalados em uma piada, um sorriso genuíno em uma fala feliz.
- Ritmo natural e uniforme. Não apressado, sem pausas longas.
- Melhores peças, unidas de forma limpa. O melhor take vence, independentemente de qual gravação está, e uma fala feita de partes de dois takes vence um take inteiro quando cada parte é a versão melhor. A junção está limpa quando a cabeça e as mãos do falante estão aproximadamente no mesmo lugar em ambos os lados (verifique o quadro antes e depois), ou quando a junção é posteriormente coberta por b-roll. Uma troca entre gravações também precisa da mesma aparência em ambos os lados (cabelo, luz, enquadramento, produto na mão); quando a aparência muda, a troca cai entre falas e é coberta por b-roll ou uma mudança de zoom.
- Mais curto quando atinge com mais força. Corte uma fala até sua parte mais forte quando o resto repete o que já foi dito ou desacelera o vídeo ("até que acabou" em vez de "Eu não percebi o quanto estava ajudando até que acabou").
- Escolhas apertadas continuam sendo escolhas apertadas. Quando dois takes são igualmente limpos e os quadros não mostram diferença real, escolha um e marque-o como uma escolha apertada. Quadros congelados não podem mostrar tom, então não finja que um é claramente melhor.
Regras para cada corte
- Cada palavra no corte vem do áudio. Palavras que você não consegue entender são marcadas como não claras, nunca adivinhadas.
- Os tempos vêm da linha do tempo da gravação original, e cada peça na lista de corte nomeia sua gravação.
- Os tempos da IA são aproximados, não exatos. Cada borda é definida a partir das ilhas de fala e verificada no áudio.