Communitygithub.com

iamaanahmad/voiceover-tts

Genera y temporiza locuciones con texto a voz (ElevenLabs, OpenAI TTS, Kokoro, Piper) o prepara una voz grabada: preparación del guion, archivos de audio por escena, ritmo, pronunciación, limpieza y volumen. Úsalo cuando el usuario necesite una locución, narración, doblaje o guía para clonación de voz.

¿Qué es voiceover-tts?

Este skill proporciona un flujo de trabajo completo para la creación de locuciones y narraciones mediante texto a voz o voz grabada. Es especialmente útil para desarrolladores y creadores de contenido que trabajan con herramientas como Claude Code, Cursor o Codex, ya que automatiza tareas como la preparación del guion, la generación de audio por escena, el control del ritmo de habla, la limpieza de audio y el montaje final. Soporta múltiples motores TTS: ElevenLabs (alta naturalidad y clonación de voz), OpenAI TTS (simple y consistente), Kokoro (local, gratuito y de buena calidad) y Piper (rápido en CPU), así como la opción de usar voz humana grabada. El skill incluye ejemplos de código para generar audio, medir la duración con ffprobe, limpiar grabaciones con ffmpeg y unir archivos de audio con pausas. También aborda consideraciones éticas y legales sobre la clonación de voz y el uso comercial.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Locución y TTS

La locución impulsa la línea de tiempo. Genérala antes de construir los elementos visuales.

Elige un motor

MotorUbicaciónFortalezaPrecaución
ElevenLabsAPI en la nubeMejor naturalidad, clonación de vozDe pago; clona solo voces con consentimiento
OpenAI TTSAPI en la nubeSimple, consistenteOpciones de voz limitadas
KokoroLocalGratuito, buena calidad, sin conexiónRequiere configuración de Python
PiperLocalRápido, funciona en CPUMenos expresivo
Voz humana grabadaMicrófonoLo más auténticoNecesita limpieza

Mantén las claves de API en variables de entorno o en un archivo .env que esté en .gitignore. Nunca las imprimas ni las subas al repositorio.

Prepara el guion para el habla

  • Escribe números, unidades y acrónimos como se pronuncian: "veinte veintiséis", "A P I" si se debe deletrear, "gigabytes".
  • Añade comas para pausas de respiración; usa un punto para una pausa completa; evita paréntesis.
  • Coloca los nombres difíciles en una lista de pronunciación y pruébalos primero en una muestra corta.
  • Divide en un archivo por escena (audio/scene-01.mp3). Los archivos por escena te permiten regrabar una sola línea y mantener la temporización flexible.

Genera (ejemplo, ElevenLabs REST)

import os, requests, pathlib

def tts(text: str, voice_id: str, out: 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": text, "model_id": "eleven_multilingual_v2",
              "voice_settings": {"stability": 0.5, "similarity_boost": 0.75}},
        timeout=120,
    )
    r.raise_for_status()
    out.write_bytes(r.content)

Los nombres de modelos y los endpoints cambian. Confírmalos contra la documentación actual del proveedor antes de usarlos.

Mide y temporiza

ffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 audio/scene-01.mp3
  • Apunta a 140 a 160 palabras por minuto (palabras / segundos * 60). Si una escena supera las 180 ppm, regenérala con una entonación ligeramente diferente o recorta el texto; sonará apresurada.
  • No estires temporalmente el habla más de un 10 por ciento aproximadamente; sonará sintético. En lugar de eso, reescribe.

Limpia la voz grabada

# Filtro pasa altos, reducción suave de ruido, compresión, volumen
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

Recorta el silencio inicial y final:

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

Ensambla

# Une archivos de escena con espacios de 0.4 s
python - <<'PY'
import subprocess, pathlib
files = sorted(pathlib.Path("audio").glob("scene-*.mp3"))
parts = []
for i, f in enumerate(files):
    parts += ["-i", str(f)]
n = len(files)
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", *parts, "-filter_complex", filt, "-map", "[out]", "voiceover.mp3"], check=True)
PY

Luego mézclalo con música en audio-mixing y añade subtítulos con captions-subtitles.

Ética y derechos

  • Clona una voz solo con el permiso explícito del hablante.
  • Revela el uso de voz sintética donde las normas de la plataforma o la ley lo exijan.
  • Revisa la licencia del proveedor 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.

Skills relacionados