Narração para apresentador
Ferramentas: $VIDEO_ROOT/voice/ do video-generations (speak.py, speak_cast.py, polish_vo.py, mix_narration.py, el_cache.py); modelos em $VIDEO_ROOT/models (python studio/get_models.py).
1. Escreva como um apresentador (o roteiro importa mais que a voz)
-
Nunca leia a tela. O texto na tela apresenta o fato; a voz adiciona significado, emoção ou a história por trás dele. Se uma linha repete a tela palavra por palavra, reescreva ou corte-a. Exceções: nomes de produtos e o slogan final.
-
Uma ideia por linha. Frases curtas, de 6 a 12 palavras. Inglês falado, contrações permitidas.
-
Fio condutor herói. Siga uma pessoa (ex.: Aroon, Anita, Dr. Rao) e faça referência a ela; as pessoas lembram de histórias, não de funcionalidades.
-
Foco no final. Coloque a palavra-chave por último em sua frase ("...cada equipe tem apenas uma."); a voz naturalmente pousa ali. Contexto no início: "Às duas e catorze, de manhã cedo, // Aroon // desmaia."
-
Regra de três para benefícios e listas, com batidas uniformes.
-
Contraste e virada: problema → "Agora, imagine..." → solução.
-
Aberturas: comece cada seção com uma âncora ("Primeiro, para as famílias.", "Agora, entre no hospital.").
-
Finais: afirmações terminam com ponto final para um tom descendente e concluído. Feche com a promessa ou slogan, um convite claro, depois "Obrigado."
-
Ritmo (estilo da casa): entrega lenta e cheia de pausas soa robótica ("muitas pausas, poucas palavras"). Padrão para ritmo fluente de apresentador:
- velocidade 1.00 para a maioria das linhas, 1.02 para listas/explicações longas, 0.95–0.97 para slogans e encerramentos, 0.93 apenas para o único gancho emocional.
- No máximo uma batida
...por linha, e apenas na virada emocional ("Às duas e catorze, de manhã cedo ... Aroon desmaia", "E se ... bastasse um toque?"). Use/com moderação; prefira vírgulas comuns. - Taxa medida neste estilo: cerca de 2,6–2,8 palavras faladas por segundo (af_kore). Orçamento = palavras / 2,7 + 0,35 s de cauda polida; uma linha deve caber antes da próxima batida visual.
- Deixe um silêncio deliberado (1–1,5 s, sem linha) após a construção do problema e após o payoff emocional da solução ("Mais calmo que aquela primeira noite.").
- Densidade: cerca de 230–250 palavras narradas para um filme de 2,5 minutos; cada cena recebe pelo menos uma linha, então nenhuma cena fica silenciosa por mais de ~3 s, exceto os silêncios planejados.
-
Honestidade: nenhum resultado inventado; nomes e figuras fictícias são dados de demonstração.
-
Caminho rápido (para economizar tempo): escreva todas as linhas → estime durações com o orçamento acima → corrija excessos no texto antes de gerar → gere uma vez. Regenerar no laptop custa cerca de 25–40 s por linha, então a maior parte do tempo vai para texto que é reescrito.
2. Marcação (arquivo de narração)
LINES = [(start_s, speed, text), ...], VOICE = '...', mais um docstring com notas de entrega. Exemplo: voice/examples/narration_demo.py.
/= pausa para respirar (0,25 s),//= pausa dramática (0,55 s),...= batida mantida (0,8 s).- Soletre nomes que o motor erra em
voice/lexicon.py(ex.: Arun → "Aroon", Dr → "Doctor") e teste uma linha primeiro. - Diálogo com várias vozes:
LINES = [(key, voice, speed, text), ...]paraspeak_cast.py(voice/examples/dialogue_demo.py).
3. Voz
- Motor: Kokoro via kokoro-onnx, offline, 50+ vozes. Boas escolhas para apresentador: af_kore / af_heart (feminina calma e confiante), hm_omega / hm_psi (indiano masculino), am_onyx (masculino grave), bm_george (britânico masculino), hf_alpha / hf_beta (indiana feminina). Misturas funcionam:
hm_omega:0.6,am_onyx:0.4. - Para uma nova escolha de voz, renderize 3 linhas representativas (gancho, solução, slogan) por candidato e deixe o usuário escolher antes da execução completa.
- O estresse no nível da palavra não pode ser forçado; crie-o com fraseado, pontuação, pausas e velocidade. Ênfase exata requer gravação humana.
- Voz premium em nuvem:
voice/el_cache.py(ElevenLabs; cada linha faturada uma vez, depois em cache).
4. Gerar → polir → mixar
python voice/speak.py <narration>.py work/vo [voice]— retomável; cada frase é falada separadamente e unida com os silêncios marcados.python voice/polish_vo.py work/vo work/vo_polished— cortar, equalização warm/clear, compressão suave, sala sutil, cauda com fade-out.python voice/mix_narration.py <silent.mp4> <music.wav> <narration>.py work/vo_polished <out.mp4>— posiciona linhas, acelera uma linha longa em no máximo 1,08×, desloca linhas posteriores apenas conforme necessário, faz ducking na música, −16 LUFS, escreve.srt.- Verifique o relatório de deriva. Cada linha deve estar dentro de ~0,5 s de seu visual. Se a deriva acumular, encurte ou corte uma linha (prefira linhas que repetem a tela) e mova os tempos de início para suas batidas visuais; remixe sem regenerar linhas não tocadas.
Para refazer algumas linhas, mova seus clipes antigos para o lado e execute
speak.pynovamente; ele preenche apenas clipes ausentes. Mantenha a numeração dos clipes em sincronia com as LINHAS. - Entregue o MP4 e o SRT.