API pública · Coqui XTTS-v2
Síntesis de voz en tu servidor
API compatible con el formato de OpenAI Audio Speech. XTTS-v2 corre localmente en esta PC; el túnel de Cloudflare publica este servicio bajo https://tts.ceballosleon.com.
Autenticación
Crea una API key en el panel de administración y envíala como Bearer token. Las claves tienen límites individuales y máximos globales administrados. La colección Postman incluye un ejemplo de respuesta por cada petición.
Authorization: Bearer tts_TU_API_KEY
Generar audio
/v1/audio/speech input y voice requeridos{
"model": "xtts-v2",
"input": "Hola, esta es una prueba de voz.",
"voice": "builtin:NOMBRE_DE_VOZ",
"language": "es",
"speed": 1,
"response_format": "mp3"
}model: tts-1, tts-1-hd o xtts-v2. speed: 0.5–2. response_format: mp3, wav, opus, aac, flac o pcm (mp3 por defecto). El resultado es audio binario; revisa X-Request-Id para el identificador de la petición.
La voz puede ser builtin:... o cloned:.... El endpoint autenticado GET /v1/voices lista los ids disponibles; cada voz del modelo incluye gender (f, m o u = sin clasificar) para agruparlas en femeninas, masculinas y otras.
Textos largos (async)
XTTS en CPU tarda ~2-3 s por segundo de audio (unas 132 palabras superan los 100 s y Cloudflare corta con 524). Si la estimación supera el presupuesto de respuesta directa (~80 s), o si envías "async": true, el endpoint responde 202 con un status_url en vez de dejar la conexión colgada:
POST /v1/audio/speech {"input": "texto largo…", "voice": "…", "async": true}
→ 202 {"id": "a1b2c3…", "status": "queued", "estimated_seconds": 190,
"status_url": "/v1/audio/speech/jobs/a1b2c3…"}GET/v1/audio/speech/jobs/<id> Estado: queued → running → done (incluye audio_url) o error. Requiere Bearer token.
GET/v1/audio/speech/jobs/<id>/audio Descarga el audio cuando status es done (409 si aún no está listo). Requiere Bearer token.
Los trabajos expiran al cabo de 1 h. Si una petición sync se acerca al límite, el servidor la degrada a 202 automáticamente: el audio se sigue generando en segundo plano.
Catálogos y estado
GET/v1/models Modelos disponibles. Requiere Bearer token.
GET/v1/voices Voces precargadas (con gender) y clonadas. Requiere Bearer token.
GET/health Health check sin autenticación.
Ejemplo cURL
curl https://tts.ceballosleon.com/v1/audio/speech \
-H "Authorization: Bearer tts_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"xtts-v2","input":"Hola desde TTS","voice":"builtin:NOMBRE_DE_VOZ","language":"es"}' \
--output speech.mp3