Communitygithub.com

babysor/MockingBird

Convierte texto en voz con Kokoro o Noiz, incluyendo modos simple y alineado con la línea de tiempo.

¿Qué es MockingBird?

Esta habilidad permite convertir cualquier texto en audio de voz, ofreciendo dos backends: Kokoro (local y gratuito) y Noiz (en la nube, con clonación de voz y control de emociones). Soporta un modo simple para conversión directa de texto a audio, y un modo de línea de tiempo que permite generar archivos de audio sincronizados con un archivo SRT, ideal para doblaje, subtítulos o narraciones de video. Con Noiz, es posible clonar la voz a partir de un audio de referencia (archivo local o URL) y añadir parámetros emocionales. La habilidad utiliza scripts de shell en `skills/speak/scripts/tts.sh` y es compatible con plataformas como Claude Code, Cursor y Codex, siempre que se tengan instaladas las dependencias necesarias (ffmpeg y, opcionalmente, Kokoro o la clave API de Noiz).

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/babysor/MockingBird/tree/HEAD/skills/speak

Preguntar en tu IA favorita

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

Documentación

hablar

Convierte cualquier texto en audio de voz. Soporta dos backends (Kokoro local, Noiz en la nube), dos modos (simple o preciso con línea de tiempo) y control de voz por segmento.

Disparadores

  • texto a voz / hablar / decir / tts
  • clonar voz / doblaje
  • epub a audio / srt a audio / convertir a audio

Modo Simple — texto a audio

# Kokoro (se detecta automáticamente si está instalado)
bash skills/speak/scripts/tts.sh speak -t "Hola mundo" -v af_sarah -o hola.wav
bash skills/speak/scripts/tts.sh speak -f articulo.txt -v zf_xiaoni --lang cmn -o salida.mp3 --format mp3

# Noiz (se detecta automáticamente si NOIZ_API_KEY está configurada, o fuerza con --backend noiz)
# Si se omite --voice-id, el script imprime 5 voces integradas disponibles y sale.
# Elige una de la salida y vuelve a ejecutar con --voice-id <id>.
bash skills/speak/scripts/tts.sh speak -f entrada.txt --voice-id voz_abc --auto-emotion --emo '{"Alegría":0.5}' -o salida.wav

# Noiz: opcional --duration (float, segundos, rango (0, 36]) para longitud objetivo del audio
bash skills/speak/scripts/tts.sh speak -t "Línea corta" --voice-id voz_abc --duration 3.5 -o salida.wav

# Clonación de voz (solo Noiz — no necesita voice-id, usa audio de referencia)
# Usa tu propio audio de referencia: ruta de archivo local o URL (solo al usar Noiz).
bash skills/speak/scripts/tts.sh speak -t "Hola" --ref-audio ./ref.wav -o clon.wav
bash skills/speak/scripts/tts.sh speak -t "Hola" --ref-audio https://ejemplo.com/mi_voz.wav -o clon.wav

Modo Línea de Tiempo — SRT a audio sincronizado

Para temporización precisa por segmento (doblaje, subtítulos, narración de video).

Paso 1: Obtener o crear un SRT

Si el usuario no tiene uno, generar desde texto:

bash skills/speak/scripts/tts.sh to-srt -i articulo.txt -o articulo.srt
bash skills/speak/scripts/tts.sh to-srt -i articulo.txt -o articulo.srt --cps 15 --gap 500

--cps = caracteres por segundo (por defecto 4, bueno para chino; ~15 para inglés). El agente también puede escribir SRT manualmente.

Paso 2: Crear un mapa de voces

Archivo JSON que controla la configuración de voz predeterminada y por segmento. Las claves de segments admiten un solo índice "3" o un rango "5-8".

Mapa de voces para Kokoro:

{
  "default": { "voice": "zf_xiaoni", "lang": "cmn" },
  "segments": {
    "1": { "voice": "zm_yunxi" },
    "5-8": { "voice": "af_sarah", "lang": "en-us", "speed": 0.9 }
  }
}

Mapa de voces para Noiz (añade soporte para emo, reference_audio). reference_audio puede ser una ruta local o una URL (audio propio del usuario; solo Noiz):

{
  "default": { "voice_id": "voz_123", "target_lang": "zh" },
  "segments": {
    "1": { "voice_id": "voz_host", "emo": { "Alegría": 0.6 } },
    "2-4": { "reference_audio": "./refs/invitado.wav" }
  }
}

Corte dinámico de audio de referencia: Si estás traduciendo o doblando un video y quieres que cada oración use automáticamente el audio del video original en la misma marca de tiempo como su audio de referencia, usa el argumento --ref-audio-track en lugar de establecer reference_audio en el mapa:

bash skills/speak/scripts/tts.sh render --srt entrada.srt --voice-map vm.json --ref-audio-track video_original.mp4 -o salida.wav

Ver examples/ para ejemplos completos.

Paso 3: Renderizar

bash skills/speak/scripts/tts.sh render --srt entrada.srt --voice-map vm.json -o salida.wav
bash skills/speak/scripts/tts.sh render --srt entrada.srt --voice-map vm.json --backend noiz --auto-emotion -o salida.wav

Cuándo Elegir Cada Uno

NecesidadRecomendado
Solo leer texto en voz alta, sin complicacionesKokoro (predeterminado)
Audiolibro EPUB/PDF con capítulosKokoro (soporte nativo)
Mezcla de voces ("v1:60,v2:40")Kokoro
Clonación de voz a partir de audio de referenciaNoiz
Control de emociones (parámetro emo)Noiz
Duración exacta por segmento en el servidorNoiz

Cuando el usuario necesita control de emociones + clonación de voz + duración precisa juntos, Noiz es el único backend que soporta los tres.

Requisitos

  • ffmpeg en PATH (modo línea de tiempo)
  • Noiz: obtén tu clave API en developers.noiz.ai, luego ejecuta bash skills/speak/scripts/tts.sh config --set-api-key TU_CLAVE
  • Kokoro: si ya está instalado, pasa --backend kokoro para usar el backend local

Para detalles del backend y referencia completa de argumentos, ver reference.md.

Skills relacionados