Texto a voz

POST /v1/audio/speech

Convierte texto en voz natural con un único endpoint compatible con OpenAI. Envía JSON y recibe bytes de audio de vuelta. Para cambiar de proveedor solo modificas model. Nada se escribe en disco: el audio se te devuelve directamente en streaming.

Ejemplo de solicitud

curl https://synthorai.io/v1/audio/speech \
  -H "Authorization: Bearer $SYNTHORAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "Hello from Synthorai.",
    "voice": "alloy"
  }' \
  --output speech.mp3

Python (OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    api_key="$SYNTHORAI_API_KEY",
    base_url="https://synthorai.io/v1",
)

with client.audio.speech.with_streaming_response.create(
    model="tts-1",
    voice="alloy",
    input="Hello from Synthorai.",
) as response:
    response.stream_to_file("speech.mp3")

Cuerpo de la solicitud

Parámetro Tipo Descripción
model* string ID del modelo. Uno de tts-1, tts-1-hd, seed-tts-2.0.
input* string El texto que se va a sintetizar. Máximo 4096 caracteres.
voice string Voz con la que se habla. Por defecto alloy. Consulta Voces más abajo.
response_format string Contenedor de audio: mp3 (por defecto), opus, wav o pcm.
speed number Velocidad del habla, 0.25-4.0. Por defecto 1.0.

Modelos compatibles

¿Cuál debería usar?

Necesitas Modelos recomendados
El más barato, suficiente para la mayoría de las voces de producto google-tts-standard
Contenido principalmente en chino, o si quieres muchas opciones de voz qwen3-tts-instruct-flash seed-tts-2.0
Voz de producto para el día a día, equilibrando calidad y costo tts-1 google-tts-neural2
Mayor expresividad: narración, dispositivos de compañía, voz de marca tts-1-hd google-tts-chirp3-hd
Modelo Precio Ideal para
google-tts-standard $4 / 1M chars Notificaciones y avisos de gran volumen donde manda el costo
qwen3-tts-instruct-flash $11.50 / 1M chars Contenido en chino y multilingüe; el upstream informa del número de caracteres facturados
tts-1 $15 / 1M chars Voz de producto general, avisos, notificaciones
google-tts-neural2 $16 / 1M chars Voz cotidiana natural en muchos idiomas
tts-1-hd $30 / 1M chars Narración, marketing, todo lo que los usuarios escuchan durante un rato
seed-tts-2.0 $30 / 1M chars Contenido en chino y multilingüe; 180+ voces
google-tts-chirp3-hd $30 / 1M chars Las voces más nuevas y expresivas de Google

Tres modelos están en $30. Se diferencian en el carácter de la voz y la cobertura de idiomas, no en el precio. Pruébalos con tus propios textos antes de decidirte.

ℹ

Cambiar de proveedor te cuesta una línea. Todos los modelos de aquí hablan la misma forma de solicitud y respuesta. Por debajo, los proveedores difieren muchísimo (distinta autenticación, distintos formatos de streaming, distinta nomenclatura de voces). El gateway absorbe todo eso, así que lo único que cambias es model.

# Same request, different provider - only the model name changes.
-d '{"model": "tts-1",        "input": "...", "voice": "alloy"}'
-d '{"model": "seed-tts-2.0", "input": "...", "voice": "alloy"}'

Voces

Los modelos de OpenAI aceptan las voces estándar: alloy, echo, fable, onyx, nova, shimmer.

Para seed-tts-2.0 funcionan los mismos seis nombres (se asignan a voces comparables), y también puedes pasar directamente un ID de voz nativo de BytePlus para tener control total, por ejemplo zh_female_cancan_uranus_bigtts. La lista completa de las 180+ voces nativas está en el catálogo de voces de BytePlus.

Para qwen3-tts-instruct-flash funcionan los mismos seis nombres, o pasa una voz nativa de Qwen como Cherry, Ethan, Nofish, Jada.

⚠

Las voces de Google están ligadas a su nivel de precio. Cada modelo de Google cubre un nivel, y el nivel forma parte del nombre de la voz. Si pasas un id de voz nativo como en-US-Neural2-C debes usar el modelo correspondiente, en ese ejemplo google-tts-neural2. Las voces de otro nivel se rechazan con un 502 en lugar de facturarse en silencio a la tarifa equivocada.

Formatos de audio

Usa response_format para elegir el contenedor. El valor por defecto es mp3: mp3, opus, wav, pcm.

No todos los proveedores admiten todos los contenedores; los valores no admitidos recurren a MP3 en lugar de fallar.

Facturación

Se factura por carácter de entrada al precio de lista oficial del proveedor, sin margen añadido. Un carácter = un carácter chino = una letra = un signo de puntuación = un espacio. Las solicitudes fallidas nunca se cobran.

El audio que recibes no se mide aparte; solo se factura el texto que envías.

Límites

  • Máximo 4096 caracteres por solicitud. Una entrada más larga se rechaza antes de cobrar nada. Divídela en el cliente y concatena el audio.
  • La velocidad del habla se controla con speed (0.25-4.0, 1.0 por defecto). Los valores fuera del rango del proveedor se ajustan a los límites, no se rechazan.

Errores

Respuesta Descripción
400 La entrada está vacía o supera los 4096 caracteres.
401 Clave API ausente o no válida.
402 Cupo insuficiente para esta solicitud.
502 El modelo no está disponible en tu cuenta, o el proveedor upstream falló. No se cobra nada.
503 Ningún channel sirve este modelo en este momento.