Communitygithub.com

iamaanahmad/voiceover-tts

Gere e sincronize narrações com texto-para-fala (ElevenLabs, OpenAI TTS, Kokoro, Piper) ou prepare uma voz gravada – preparação de roteiro, arquivos de áudio por cena, ritmo, pronúncia, limpeza e volume. Use quando o usuário precisar de narração, dublagem ou orientação sobre clonagem de voz.

O que é voiceover-tts?

Esta habilidade automatiza o processo de criação de narrações para vídeos e apresentações, oferecendo suporte a diversos motores de texto-para-fala (TTS), incluindo ElevenLabs, OpenAI TTS, Kokoro (local), Piper (local) e gravações de voz humanas. Ela cobre todas as etapas: desde a preparação do roteiro (com dicas para escrever números e siglas como são falados) até a geração de arquivos de áudio por cena, medição e ajuste de ritmo (140–160 palavras por minuto), limpeza de áudio gravado (remoção de ruído, compressão, normalização de volume) e montagem final com pausas entre as cenas. A habilidade é útil para produtores de conteúdo, desenvolvedores e criadores que precisam de narrações de alta qualidade sem depender de um único provedor, permitindo alternar entre soluções em nuvem pagas ou locais gratuitas conforme a necessidade. Ela também enfatiza aspectos éticos, como obter consentimento para clonagem de voz e divulgar o uso de voz sintética quando exigido por lei ou plataforma.

Funciona com~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/iamaanahmad/agents-video-editing-skills/tree/HEAD/skills/voiceover-tts

Perguntar na sua IA favorita

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

Documentação

Narração e TTS

A narração conduz a linha do tempo. Gere-a antes de construir os elementos visuais.

Escolha um motor

MotorOndePontos fortesCuidados
ElevenLabsAPI na nuvemMelhor naturalidade, clonagem de vozPago; clone apenas vozes com consentimento
OpenAI TTSAPI na nuvemSimples e consistenteOpções limitadas de voz
KokoroLocalGratuito, boa qualidade, offlineRequer configuração do Python
PiperLocalRápido, roda na CPUMenos expressivo
Voz gravadaMicrofoneMais autênticoPrecisa de limpeza

Mantenha as chaves da API em variáveis de ambiente ou em um arquivo .env que esteja no .gitignore. Nunca imprima ou envie as chaves para o repositório.

Prepare o roteiro para a fala

  • Escreva números, unidades e siglas como são falados: "vinte e vinte e seis", "A P I" se deve ser soletrado, "gigabytes".
  • Adicione vírgulas para pausas de respiração; use ponto final para uma parada; evite parênteses.
  • Coloque nomes difíceis em uma lista de pronúncia e teste-a primeiro com uma amostra curta.
  • Divida em um arquivo por cena (audio/cena-01.mp3). Arquivos por cena permitem regravar uma única linha e manter a flexibilidade de tempo.

Geração (exemplo, REST ElevenLabs)

import os, requests, pathlib

def tts(texto: str, voice_id: str, saida: pathlib.Path) -> None:
    r = requests.post(
        f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}",
        headers={"xi-api-key": os.environ["ELEVENLABS_API_KEY"], "Accept": "audio/mpeg"},
        json={"text": texto, "model_id": "eleven_multilingual_v2",
              "voice_settings": {"stability": 0.5, "similarity_boost": 0.75}},
        timeout=120,
    )
    r.raise_for_status()
    saida.write_bytes(r.content)

Os nomes dos modelos e endpoints mudam. Confirme na documentação atual do provedor antes de usar.

Meça e ajuste o ritmo

ffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 audio/cena-01.mp3
  • Alvo de 140 a 160 palavras por minuto (palavras / segundos * 60). Regere com uma entonação ligeiramente diferente ou corte o texto se uma cena ultrapassar 180 ppm; soará apressado.
  • Não estique o tempo da fala em mais de cerca de 10%; soa sintético. Reescreva em vez disso.

Limpe a voz gravada

# Filtro passa-altas, redução suave de ruído, compressão, volume
ffmpeg -i raw.wav -af "highpass=f=80,afftdn=nf=-25,acompressor=threshold=-18dB:ratio=3:attack=5:release=80,loudnorm=I=-16:TP=-1.5:LRA=11" -ar 48000 clean.wav

Remova o silêncio inicial e final:

ffmpeg -i in.wav -af "silenceremove=start_periods=1:start_threshold=-45dB,areverse,silenceremove=start_periods=1:start_threshold=-45dB,areverse" out.wav

Monte

# Junte arquivos de cena com intervalos de 0,4 s
python - <<'PY'
import subprocess, pathlib
arquivos = sorted(pathlib.Path("audio").glob("cena-*.mp3"))
partes = []
for i, f in enumerate(arquivos):
    partes += ["-i", str(f)]
n = len(arquivos)
filt = "".join(f"[{i}:a]apad=pad_dur=0.4[a{i}];" for i in range(n)) + "".join(f"[a{i}]" for i in range(n)) + f"concat=n={n}:v=0:a=1[out]"
subprocess.run(["ffmpeg", "-y", *partes, "-filter_complex", filt, "-map", "[out]", "narracao.mp3"], check=True)
PY

Em seguida, misture com música em audio-mixing e adicione legendas usando captions-subtitles.

Ética e direitos

  • Clone uma voz apenas com a permissão explícita do locutor.
  • Divulgue o uso de voz sintética onde as regras da plataforma ou a lei exigirem.
  • Verifique a licença do provedor de TTS para uso comercial.

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

iamaanahmad/captions-subtitles

Create, edit, translate and burn in captions and subtitles - transcribe speech with Whisper, write SRT/VTT/ASS files, style them, and hard-burn word-highlight captions for Shorts, Reels and TikTok. Use for any captioning, subtitle, transcript or accessibility request.

iamaanahmad/ffmpeg-essentials

Core FFmpeg and ffprobe recipes for trimming, joining, converting, resizing, compressing, speed changes, fades, audio extraction and GIF conversion. Use for any direct media transformation task, or when a video will not play, has odd dimensions, or is out of sync.

iamaanahmad/motion-design-craft

Motion design rules for programmatic and edited video - durations, easing, springs, staggering, read time for on-screen text, beat grids, transitions and visual hierarchy, plus the defaults that make a video look AI-generated. Use when animating scenes, choosing timings, or reviewing a video that feels off.

iamaanahmad/moviepy-python-video

Compose and edit video in pure Python with moviepy 2.x - overlay text, lower thirds and captions on footage, cut and join clips, add audio, build short single-file build.py videos without Node. Use when the user wants Python-based video editing or deterministic text over AI-generated video.

iamaanahmad/remotion-programmatic-video

Build videos as React code with Remotion - compositions, sequences, springs, interpolation, audio sync, data-driven props, studio preview and rendering to MP4. Use for explainers, product demos, release notes, data charts, branded templates, or any video that should be reproducible from code.

iamaanahmad/screen-recording-demos

Record clean product and web app demos - scripted browser recording with Playwright, cursor and zoom polish, speed ramps, trimming dead time and syncing to narration. Use when the user wants a walkthrough, tutorial, UI demo or release video of a web app, or a repeatable recording.

Habilidades Relacionadas