Biogod2020/product-film-narration

Crie narrações em inglês para vídeos de produtos, demos e hackathons com qualidade profissional de locução. Ajuste por frase, sincronize com a duração da cena e evite o efeito "bomba" na mixagem, usando métodos quantificáveis para identificar o que "soa estranho".

O que é product-film-narration?

Este skill aborda o problema comum de narrações geradas por TTS soarem "estranhas" em vídeos de produtos, fornecendo um processo sistemático para alcançar um nível profissional. Ele diagnostica que a estranheza geralmente vem da prosódia (variação de tom, duração de pausas) e não da qualidade do áudio, usando métricas quantificáveis como desvio padrão de F0 e velocidade de fala para comparar com locuções de referência. O fluxo de trabalho prioriza a geração contínua de todo o texto (em vez de frases isoladas), seguida por corte preciso baseado em verificação de conteúdo, processamento de áudio mínimo e não destrutivo, e uma técnica de ducking que evita que a música "bombe" nas pausas entre as frases. O skill é compatível com TTS como MOSS-TTS, Qwen3-TTS, OpenAI e Gemini, e inclui scripts para alinhamento, divisão, pós-processamento e medição de prosódia, validando o resultado com testes de taxa de erro de palavras (WER) e avaliações de naturalidade com amostras grandes e intervalos de confiança.

Funciona com~Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Biogod2020/my-video-skill/tree/HEAD/skills/product-film-narration

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Narração AI para Vídeos de Produto: Do "Soa Estranho" ao Nível Profissional

Este skill nasceu de uma reformulação real. Um vídeo de hackathon de 2 minutos e 43 segundos em inglês (11 frases de narração, sincronizadas com as cenas) recebeu o feedback de que a narração "ainda soava um pouco estranha". Após 9 versões, dezenas de mecanismos e vozes TTS, avaliações calibradas e amostragem estatística, a abordagem final foi: geração contínua única com MOSS-TTS + corte baseado em verificação de conteúdo + pós-processamento clássico que não danifica a voz. O usuário aprovou.

O método de avaliação está em references/evaluation.md, as decisões de processamento acústico em references/acoustic-polish.md, e os scripts reutilizáveis em scripts/.

1. Diagnosticando o "Estranho": Geralmente Não é a Qualidade, é a Prosódia

[!IMPORTANT] TTS de boa qualidade já supera gravações comuns em qualidade de áudio. Pontuações UTMOS / Distill-MOS são superiores às de leituras humanas limpas (LibriSpeech), então o "estranho" quase sempre vem da prosódia. Usando locuções profissionais de domínio público (documentários da NASA, voz separada com Demucs) como referência, as características medidas são:

CaracterísticaLocução ProfissionalTTS de Clone por Frase (Versão Inicial)
Variação de Tom (F0 Std, semitons)4.62.7 (plano)
Queda no Final da Frase (semitons)0.72.3 (final cai muito)
Velocidade de Fala (sílabas/s)4.24.55 (um pouco rápida)
Pausa Média (segundos)0.390.54

Use scripts/prosody_compare.py, scripts/end_fall.py e scripts/take_features.py para comparar candidatos e referências no mesmo conjunto de características. Use dados, não impressões.

2. Geração: Leia o Texto Inteiro de Uma Vez, Não Junte Frases Isoladas

  1. Priorize a geração contínua. Ao gerar frase por frase, cada uma começa sua própria variação de tom, ênfase e pausa respiratória. Juntá-las resulta em "estranheza". Faça o TTS ler toda a narração de uma vez, separando as frases com linhas em branco. O modelo vê o contexto e as frases se conectam. Neste exemplo, usamos o modo de clone do MOSS-TTS v1.5, com um áudio de referência de ~15 segundos com tom apropriado. Geramos 4 vezes com 4 sementes aleatórias, cada uma com ~2 min 10 s e taxa de erro de palavras (WER) de 2-6%.
  2. Resultados da comparação de candidatos (mesmo método de avaliação):
    • MOSS contínuo: distância prosódica para locução profissional 0.29 (menor), menos defeitos;
    • Qwen3-TTS VoiceDesign por frase, com instruções de atuação e seleção por prosódia: distância 0.37, naturalidade comparável ao MOSS;
    • OpenAI gpt-audio: distância 0.57;
    • Clone por frase: distância 0.89.
  3. Armadilhas conhecidas:
    • MOSS-VoiceGenerator (descrição textual da voz) para em ~33s com texto longo, não serve para geração contínua.
    • Gemini TTS exige o formato "AUDIO PROFILE / DIRECTOR'S NOTES / TRANSCRIPT" em seções, senão lê as instruções. A camada gratuita tem apenas 10 chamadas por modelo por dia.
    • A voz da OpenAI tem pouca variação de tom na avaliação. Se usar voz AI comercial, indique nos créditos finais.
  4. Selecione a semente pelas características prosódicas: Com WER aceitável, escolha a semente com menor distância para a referência profissional. Se uma frase específica ficar ruim (ex.: slogan final com voz muito grave), substitua apenas essa frase pela versão de outra semente com a mesma voz de referência.

3. Corte: Verifique pelo Conteúdo, Não Confie Apenas nos Timestamps

O áudio contínuo gerado precisa ser cortado em frases para sincronizar com as cenas. O script scripts/align_split.py faz:

  1. Obter timestamps a nível de palavra com SenseVoice e alinhar com o roteiro por distância de edição.
  2. Cortar nos silêncios entre pares de frases.
  3. Verificar pelo conteúdo: Para cada silêncio dentro de 1,5s do ponto de corte, tente cortar ali, reconheça cada lado e selecione a posição com a menor soma de WER dos dois lados.

Confiar apenas nos timestamps causa erros: TTS costuma pausar dentro de frases (ex.: "Just | sentences.") e conectar frases sem pausa, enquanto os timestamps de palavras atrasam em relação ao início real da fala. Sem verificação, "does | it" e "Just | sentences" seriam cortados no início da próxima frase.

4. Pós-processamento: Apenas Problemas Quantificáveis, Sem Mexer no Tom

ProcessamentoConclusão
Ajuste de pausas por pontuação (pause_fix_en.py: 0,10s dentro do grupo, 0,25s na vírgula, 0,33s no dois-pontos, 0,45s no final da frase; slogans curtos mantêm 0,8s)Manter: Apenas encurta, não alonga. Fica mais próximo das pausas da locução profissional
Normalização de loudness (cada frase a -20 LUFS), HPF 70 Hz, -2 dB em 300 Hz, de-esser leve, reverb de sala pequena 6% (vo_post.py)Manter: A pontuação de qualidade do áudio não cai
LimitadorRemover: Distill-MOS cai ~0,14. Substituir por controle de pico com ganho linear
Elevar final de frase ou ampliar variação de tom com WORLD vocoder ou Praat PSOLADescartar: As características ficam mais próximas do profissional, mas a pontuação na avaliação rigorosa cai (WORLD piora quanto mais se aplica; pior nível −0,30, IC [−0,61, −0,03])

Princípio: Problemas de final de frase e variação de tom são resolvidos gerando várias vezes e selecionando, não ajustando o tom depois.

5. Mixagem: A Música Não Deve "Bombear" nas Pausas

scripts/duck_curve.py: Quando a pausa entre frases é menor que 2,5s, a música permanece baixa (−11 dB); a redução começa 0,25s antes e a recuperação usa suavização de polo único de 0,9s. A média móvel de 0,3s original fazia a música subir em cada pausa, dando a sensação de "respiração ofegante". O vídeo final tem −14 LUFS, pico abaixo de −1 dBFS; o WER da narração na mixagem fica entre 0 e 6,5%.

6. Duração das Cenas

  • Se a narração não couber na cena, a parte animada pode ser desacelerada em ~5%, e a gravação de tela pode ser estendida. Não comprima a voz.
  • Vírgulas em excesso podem fazer o TTS soar artificial. Ajuste o texto sem mudar o sentido, ex.: mude "Here it is, live, on real footage" para "running live on real footage".

7. Critérios de Aprovação

  1. WER por frase do roteiro não ultrapassa 0,08, e o mesmo se aplica na mixagem.
  2. Cada frase é verificada individualmente pelo Gemini quanto a defeitos (uma por vez): sem cortes, sem engolir palavras, sem erros de leitura, sem final de frase com voz muito grave.
  3. A distância prosódica em relação à locução profissional e o teste rigoroso de naturalidade (frase única, amostra grande, intervalo de confiança bootstrap) não são inferiores à referência. Consulte o documento de avaliação.
  4. Aprovação final pelo usuário. A avaliação AI não pode provar que "não soa estranho", veja a próxima seção.

8. Lições sobre "Avaliação por AI"

  • Comparação pareada do Gemini é inútil: Em 86% dos casos, escolhe a primeira a tocar; invertendo a ordem, a conclusão se inverte.
  • Ranking de múltiplas amostras é instável: Duas rodadas com o mesmo material deram rankings contraditórios.
  • Notas sem referência não são confiáveis: Gravações amadoras de humanos recebem ~5, abaixo do TTS (~6).
  • Método utilizável: Teste rigoroso de frase única com locução profissional como referência, combinado com amostra grande e intervalo de confiança. Mesmo assim, o item "classificado como humano" tem muito ruído (mesmo áudio pode ter 0/8 ou 3/8; atores profissionais também são classificados como AI).
  • Verifique opiniões da AI: Por exemplo, a alegação de que "a mixagem está bombeando" contradiz a curva de ganho medida; confie na medição.

Habilidades Relacionadas