Communitygithub.com

Ahmed-OC/motion-video-skills

Gere narrações com temporização em nível de palavra: TTS multilíngue gratuito via edge-tts (padrão), Kokoro/Piper locais ou ElevenLabs — e transforme qualquer áudio em timestamps de palavras com faster-whisper. Produz vo.mp3, um JSON de palavras/legendas (páginas de 1 a 3 palavras com janelas de tempo por palavra) e um vo.js incorporável para pipelines de vídeo em canvas/web. Use quando o usuário precisar de narração, voz over, TTS, dublagem, conversão de texto em fala em qualquer idioma ou legendas sincronizadas por palavra (estilo TikTok/Hormozi) para um vídeo ou animação.

O que é motion-video-skills?

Esta skill especializada em geração de voz over e TTS com temporização em nível de palavra, suportando múltiplos idiomas e motores de síntese de fala. Ao executar o script `vo_gen.py`, o usuário pode gerar narrações com controle preciso de tempo, permitindo que animações e legendas sejam sincronizadas perfeitamente com a fala. A saída inclui um arquivo de áudio (vo.mp3), um JSON detalhado com palavras e legendas agrupadas em páginas de até 3 palavras, e um arquivo JavaScript (vo.js) que pode ser facilmente incorporado em projetos de canvas ou web. A skill é compatível com edge-tts (gratuito, sem chave de API), Kokoro e Piper (locais e gratuitos) e ElevenLabs (pago), além de oferecer suporte a qualquer áudio pré-existente através do faster-whisper para extrair temporizações de palavras. Ideal para criadores de conteúdo que produzem vídeos para redes sociais, animadores e desenvolvedores que precisam de legendas sincronizadas com alta precisão.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Ahmed-OC/motion-video-skills/tree/HEAD/skills/tts-voiceover

Perguntar na sua IA favorita

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

Documentação

Narração TTS — com temporização em nível de palavra

Temporizações de palavra são o que fazem as legendas aparecerem na palavra certa e as cenas serem ritmadas na sílaba certa. Sempre gere a NARRAÇÃO PRIMEIRO e anime de acordo com suas temporizações reais — nunca o contrário.

Início rápido (gratuito, sem chave de API)

pip install edge-tts
python scripts/vo_gen.py --text "Pythagore. Dans un triangle rectangle…" --voice fr-FR-DeniseNeural --rate -4%

Saídas (prefixo vo por padrão):

  • vo.mp3 — o áudio
  • vo_words.json — { words:[{text,fromMs,toMs}], captions:[{startMs,durationMs,text,tokens[]}] } onde as legendas são agrupadas em páginas de ≤3 palavras (intervalo >700ms quebra uma página) com janelas por palavra
  • vo.js — window.VO_B64 (mp3 em base64) + window.VO_DATA (o JSON), pronto para uso em um pipeline de canvas/busca: <script src="vo.js"> depois decodeAudioData para reprodução e VO_DATA.captions para desenho

Listar vozes: python scripts/vo_gen.py --list-voices fr (também: en, ja, es, de, pt, zh, ar…).

Menu de vozes (seleção rápida)

IdiomaNarrador calmoEnérgico
frfr-FR-DeniseNeuralfr-FR-HenriNeural
enen-US-AriaNeuralen-US-GuyNeural
jaja-JP-NanamiNeuralja-JP-KeitaNeural
eses-ES-ElviraNeurales-ES-AlvaroNeural
dede-DE-KatjaNeuralde-DE-ConradNeural
ptpt-BR-FranciscaNeuralpt-BR-AntonioNeural
zhzh-CN-XiaoxiaoNeuralzh-CN-YunjianNeural

Sintaxe de taxa: --rate -4% mais lento / +10% mais rápido. Frases curtas fornecem limites de palavra mais limpos; regenere por frase para refazer uma linha ruim sem refazer a faixa inteira.

Pegadinhas (aprendidas da pior forma)

  • edge-tts ≥ 7: limites de palavra estão DESLIGADOS por padrão — boundary="WordBoundary" é obrigatório (vo_gen.py já passa isso). Sintoma do bug: áudio OK, words vazio.
  • HTTP 403 do serviço: sua versão do edge-tts é muito antiga para o esquema de token atual — pip install -U edge-tts (use um venv se a instalação do sistema estiver bloqueada).
  • Os offsets de palavra estão em unidades de 100 nanossegundos no stream bruto; divida por 10⁴ para ms.

Alternativas e upgrades

  • Kokoro (pip install kokoro) — TTS neural local, 82M parâmetros, vários idiomas.
  • Piper — totalmente offline, rápido, downloads de voz por idioma.
  • ElevenLabs — pago, multilíngue v2; a API with-timestamps retorna tempos em nível de caractere que alimentam as legendas diretamente.
  • VOICEVOX (Japonês) — API HTTP local em localhost:50021, temporizações por fonema (ótimo para animação de lábios em JP).
  • Qualquer áudio existente → temporizações de palavra via faster-whisper:
    pip install faster-whisper
    python - <<'EOF'
    from faster_whisper import WhisperModel; import json
    m = WhisperModel("small"); segs, _ = m.transcribe("track.mp3", word_timestamps=True)
    json.dump([w._asdict() for s in segs for w in s.words], open("words.json","w"))
    EOF
    

Mixagem em um vídeo (referência rápida)

Voz, música e SFX como faixas SEPARADAS, depois: base musical −18…−22 LUFS abaixo da narração, duck com sidechaincompress do ffmpeg (narração como gatilho), final loudnorm=I=-14:TP=-1.5:LRA=11. Estilo de legenda que funciona: maiúsculas em negrito, 1–3 palavras por pop, palavra ativa em cor de destaque com um efeito de escala de ~20%, fundo preto tipo pílula ou contorno para contraste, mantido fora das zonas de UI da plataforma.

Individual skills in this repo

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

Habilidades Relacionadas