Texto para fala
POST /v1/audio/speech
Transforme texto em fala natural com um único endpoint compatível com OpenAI. Envie JSON e receba bytes de áudio de volta. Para trocar de provedor, você muda apenas model. Nada é gravado em disco: o áudio é devolvido direto para você em streaming.
Exemplo de requisição
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") Corpo da requisição
| Parâmetro | Tipo | Descrição |
|---|---|---|
model* | string | ID do modelo. Um entre tts-1, tts-1-hd, seed-tts-2.0. |
input* | string | O texto a sintetizar. No máximo 4096 caracteres. |
voice | string | Voz usada na fala. O padrão é alloy. Veja Vozes abaixo. |
response_format | string | Contêiner de áudio: mp3 (padrão), opus, wav ou pcm. |
speed | number | Velocidade da fala, 0.25–4.0. O padrão é 1.0. |
Modelos suportados
Qual devo usar?
| Você precisa | Modelos recomendados |
|---|---|
| O mais barato, suficiente para a maioria das vozes de produto | google-tts-standard |
| Conteúdo principalmente em chinês, ou quando você quer muitas opções de voz | qwen3-tts-instruct-flash seed-tts-2.0 |
| Voz de produto do dia a dia, equilibrando qualidade e custo | tts-1 google-tts-neural2 |
| Maior expressividade: narração, dispositivos de companhia, voz de marca | tts-1-hd google-tts-chirp3-hd |
| Modelo | Preço | Ideal para |
|---|---|---|
google-tts-standard | $4 / 1M chars | Notificações e avisos em grande volume, quando o custo é o que pesa |
qwen3-tts-instruct-flash | $11.50 / 1M chars | Conteúdo em chinês e multilíngue; o upstream informa a contagem de caracteres cobrada |
tts-1 | $15 / 1M chars | Voz de produto em geral, avisos, notificações |
google-tts-neural2 | $16 / 1M chars | Voz natural do dia a dia em muitos idiomas |
tts-1-hd | $30 / 1M chars | Narração, marketing, tudo que os usuários escutam por um tempo |
seed-tts-2.0 | $30 / 1M chars | Conteúdo em chinês e multilíngue; 180+ vozes |
google-tts-chirp3-hd | $30 / 1M chars | As vozes mais novas e expressivas do Google |
Três modelos ficam em $30. Eles diferem no caráter da voz e na cobertura de idiomas, não no preço. Teste com os seus próprios textos antes de decidir.
Trocar de provedor custa uma linha. Todos os modelos aqui falam o mesmo formato de requisição e resposta. Por baixo, os provedores são bem diferentes entre si (autenticação, formatos de streaming, nomes de vozes). O gateway absorve tudo isso, então você só muda 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"}' Vozes
Os modelos da OpenAI aceitam as vozes padrão: alloy, echo, fable, onyx, nova, shimmer.
Para seed-tts-2.0 os mesmos seis nomes funcionam (eles são mapeados para vozes equivalentes), e você também pode passar diretamente um ID de voz nativo da BytePlus para ter controle total, por exemplo zh_female_cancan_uranus_bigtts. A lista completa das 180+ vozes nativas está no catálogo de vozes da BytePlus.
Para qwen3-tts-instruct-flash os mesmos seis nomes funcionam, ou passe uma voz nativa do Qwen como Cherry, Ethan, Nofish, Jada.
As vozes do Google estão atreladas ao seu nível de preço. Cada modelo do Google cobre um nível, e o nível faz parte do nome da voz. Se você passar um id de voz nativo como en-US-Neural2-C precisa usar o modelo correspondente, nesse exemplo google-tts-neural2. Vozes de outro nível são rejeitadas com um 502 em vez de cobradas em silêncio pela tarifa errada.
Formatos de áudio
Use response_format para escolher o contêiner. O padrão é mp3: mp3, opus, wav, pcm.
Nem todo provedor suporta todos os contêineres; valores não suportados caem para MP3 em vez de falhar.
Cobrança
Cobrado por caractere de entrada pelo preço de tabela oficial do provedor, sem acréscimo. Um caractere = um caractere chinês = uma letra = um sinal de pontuação = um espaço. Requisições que falham nunca são cobradas.
O áudio que você recebe não é medido separadamente; só o texto que você envia é.
Limites
- No máximo 4096 caracteres por requisição. Entradas mais longas são rejeitadas antes de qualquer cobrança. Divida no cliente e concatene o áudio.
- A velocidade da fala é controlada por
speed(0.25–4.0, padrão 1.0). Valores fora da faixa do provedor são ajustados aos limites, não rejeitados.
Erros
| Resposta | Descrição |
|---|---|
400 | A entrada está vazia ou passa de 4096 caracteres. |
401 | Chave de API ausente ou inválida. |
402 | Cota insuficiente para esta requisição. |
502 | O modelo não está disponível na sua conta, ou o provedor upstream falhou. Nada é cobrado. |
503 | Nenhum channel atende esse modelo no momento. |