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
| Necesidad | Recomendado |
|---|---|
| Solo leer texto en voz alta, sin complicaciones | Kokoro (predeterminado) |
| Audiolibro EPUB/PDF con capítulos | Kokoro (soporte nativo) |
Mezcla de voces ("v1:60,v2:40") | Kokoro |
| Clonación de voz a partir de audio de referencia | Noiz |
Control de emociones (parámetro emo) | Noiz |
| Duración exacta por segmento en el servidor | Noiz |
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
ffmpegen 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 kokoropara usar el backend local
Para detalles del backend y referencia completa de argumentos, ver reference.md.