Modelos de áudio
Texto para fala, fala para texto e voz em tempo real por uma só API compatível com OpenAI: requisições, vozes, formatos e o preço exato de cada modelo.
Texto para voz, voz para texto e voz em tempo real por uma única API: as requisições, as vozes, os formatos e os preços.
Todos os modelos, recursos e preços Índice da documentação para agentes de IA:https://oneprovider.dev/docs/llms.txt Modelos de áudio disponíveis
grok-tts Runnable - caracteres de entrada
- US$ 15,00 / 1M de caracteres
grok-stt Runnable - hora de áudio
- US$ 0,10 / hora
grok-voice-3.0 Runnable - minuto de áudio
- US$ 0,08 / minuto
grok-voice-latest Runnable - minuto de áudio
- US$ 0,08 / minuto
gemini-2.5-flash-tts Runnable - tokens de entrada de texto
- US$ 0,50 / 1M de tokens
- tokens de saída de áudio
- US$ 10,00 / 1M de tokens
gemini-2.5-pro-tts Runnable - tokens de entrada de texto
- US$ 1,00 / 1M de tokens
- tokens de saída de áudio
- US$ 20,00 / 1M de tokens
gemini-3.1-flash-tts Runnable - tokens de entrada de texto
- US$ 1,00 / 1M de tokens
- tokens de saída de áudio
- US$ 20,00 / 1M de tokens
gemini-3.1-tts Runnable - tokens de entrada de texto
- US$ 1,00 / 1M de tokens
- tokens de saída de áudio
- US$ 20,00 / 1M de tokens
gemini-3.8-flash-tts Runnable - tokens de entrada de texto
- US$ 0,50 / 1M de tokens
- tokens de saída de áudio
- US$ 9,00 / 1M de tokens
gemini-3.8-flash-lite-tts Runnable - tokens de entrada de texto
- US$ 0,50 / 1M de tokens
- tokens de saída de áudio
- US$ 6,00 / 1M de tokens
gemini-3.5-transcribe Runnable - tokens de entrada de áudio
- US$ 2,00 / 1M de tokens
- tokens de saída de texto
- US$ 12,00 / 1M de tokens
gemini-3.5-stt Runnable - tokens de entrada de áudio
- US$ 0,30 / 1M de tokens
- tokens de entrada de áudio em cache
- US$ 0,03 / 1M de tokens
- tokens de saída de texto
- US$ 2,50 / 1M de tokens
gemini-3-stt Runnable - tokens de entrada de áudio
- US$ 1,00 / 1M de tokens
- tokens de entrada de áudio em cache
- US$ 0,10 / 1M de tokens
- tokens de saída de texto
- US$ 3,00 / 1M de tokens
| Tarefa | Caminho | Modelos |
|---|---|---|
| Texto para voz (TTS) | POST /v1/audio/speech | grok-tts, gemini-2.5-flash-tts, gemini-2.5-pro-tts, gemini-3.1-flash-tts, gemini-3.1-tts, gemini-3.8-flash-tts, gemini-3.8-flash-lite-tts |
| Voz para texto (STT) | POST /v1/audio/transcriptions | grok-stt, gemini-3-stt, gemini-3.5-stt, gemini-3.5-transcribe |
| Voz em tempo real | GET /v1/realtime?model= (WebSocket) | grok-voice-3.0, grok-voice-latest |
Texto para voz
bashcurl -sS https://api.oneprovider.dev/v1/audio/speech \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "grok-tts",
"input": "Hello from OneProvider.",
"voice": "eve",
"response_format": "mp3"
}' \
--output hello.mp3 python from openai import OpenAI
client = OpenAI(base_url="https://api.oneprovider.dev/v1", api_key="sk-...")
with client.audio.speech.with_streaming_response.create(
model="gemini-3.8-flash-tts",
voice="Kore",
input="Hello from OneProvider.",
response_format="wav",
) as response:
response.stream_to_file("hello.wav") | Campo | Valor |
|---|---|
model | Obrigatório. O ID de um modelo de texto para voz. |
input | Obrigatório. O texto a ser falado. |
voice | A voz: para o Grok, um nome em minúsculas da lista abaixo ou o ID de uma voz personalizada sua; para o Gemini, um nome da segunda lista. |
response_format | mp3 (padrão), wav ou pcm. |
A resposta é o arquivo de áudio no formato escolhido. Para textos longos, envie uma requisição por parágrafo e junte os arquivos.
Vozes do Grok
altairaraatlasauroracarinacastorcelestecosmoevehelioshelixiriskeplerleolioralumenlunaluxnakshorionperseusrexrigelsalsiriusursazaganzenith Vozes do Gemini
ZephyrPuckCharonKoreFenrirLedaOrusAoedeCallirrhoeAutonoeEnceladusIapetusUmbrielAlgiebaDespinaErinomeAlgenibRasalgethiLaomedeiaAchernarAlnilamSchedarGacruxPulcherrimaAchirdZubenelgenubiVindemiatrixSadachbiaSadaltagerSulafat Voz para texto
bashcurl -sS https://api.oneprovider.dev/v1/audio/transcriptions \
-H "Authorization: Bearer sk-..." \
-F model=grok-stt \
-F file=@meeting.mp3
# {"text":"..."} python from openai import OpenAI
client = OpenAI(base_url="https://api.oneprovider.dev/v1", api_key="sk-...")
with open("meeting.mp3", "rb") as audio:
result = client.audio.transcriptions.create(model="gemini-3.5-transcribe", file=audio)
print(result.text) A requisição é multipart/form-data com os campos file (o arquivo de áudio) e model. A resposta é um JSON com o campo text.
Voz em tempo real
Abra um WebSocket para wss://api.oneprovider.dev/v1/realtime?model=grok-voice-3.0 com a mesma chave no cabeçalho Authorization. Os eventos seguem a OpenAI Realtime API.
import asyncio, base64, json
import websockets
async def main():
url = "wss://api.oneprovider.dev/v1/realtime?model=grok-voice-3.0"
async with websockets.connect(url, additional_headers={"Authorization": "Bearer sk-..."}) as ws:
await ws.send(json.dumps({"type": "session.update", "session": {"instructions": "Answer briefly."}}))
await ws.send(json.dumps({"type": "conversation.item.create", "item": {
"type": "message", "role": "user",
"content": [{"type": "input_text", "text": "Say hello in one sentence."}],
}}))
await ws.send(json.dumps({"type": "response.create"}))
audio = bytearray()
async for message in ws:
event = json.loads(message)
if event["type"] == "response.output_audio.delta":
audio += base64.b64decode(event["delta"])
elif event["type"] == "response.output_audio_transcript.delta":
print(event["delta"], end="")
elif event["type"] == "response.done":
break
asyncio.run(main()) | Evento | Finalidade |
|---|---|
session.update | Cliente: define as instruções e as opções da sessão. |
conversation.item.create | Cliente: adiciona uma mensagem à conversa, em texto ou áudio. |
response.create | Cliente: pede ao modelo que responda. |
response.output_audio.delta | Servidor: o próximo trecho do áudio da resposta, em base64. |
response.output_audio_transcript.delta | Servidor: o próximo pedaço de texto do que o modelo diz. |
response.done | Servidor: a resposta está completa. |
Preços
- O Grok TTS é cobrado por caractere do texto de entrada.
- O Grok STT é cobrado por hora de áudio.
- O Grok Voice é cobrado por minuto de conversa, mais uma pequena taxa a cada mensagem de texto que você envia.
- O Gemini é cobrado em tokens: texto ou áudio de entrada e áudio ou texto de saída; um segundo de áudio equivale a 25 tokens.
Exemplo: grok-tts, 1.000 caracteres = US$ 15,00 / 1M × 1.000 = US$ 0,015.
O preço exato de cada modelo está na tabela acima e na página de preços .
Erros
| HTTP | Causa |
|---|---|
| 400 | Um campo inválido, uma voz ou um formato desconhecido. |
| 401 | A chave é inválida ou foi revogada. |
| 402 / 403 / 429 | Saldo insuficiente ou o limite da chave foi atingido. Recarregue e tente de novo. |
| 5xx | O serviço está temporariamente indisponível. Tente de novo mais tarde. |
Respostas rápidas
Qual base URL devo usar?
O Claude Code e os SDKs da Anthropic usam https://api.oneprovider.dev. Os SDKs da OpenAI e os clientes compatíveis com a OpenAI usam https://api.oneprovider.dev/v1. Uma única chave funciona nos dois; a lista de modelos está na página de modelos e os preços, na página de preços .
Como me autentico?
Envie a chave sk-… pura em x-api-key ou em Authorization: Bearer: um dos dois, nunca ambos. Guarde a chave em uma variável de ambiente, não em um arquivo que vai para o commit. Mais sobre autenticação .
Onde consigo uma chave?
Abra o seu painel no bot do Telegram @oneprovider_robot ou em app.oneprovider.dev, recarregue o saldo e toque em “Emitir chave”. Cada chave pode ter o seu próprio limite de gastos. Painel e chaves de API .
O que significam 401, 404 e 429?
401: a chave está ausente, foi digitada errado ou enviada no cabeçalho errado; cole a chave inteira, sem aspas nem espaços. 404: em geral, uma base URL errada, por exemplo um /v1 ausente ou duplicado. 429 com “Insufficient balance”: o saldo do painel ou o limite de gastos da chave acabou, então recarregue em vez de tentar de novo; qualquer outro 429 é um limite de requisições, então aguarde o tempo de Retry-After. Detalhes: códigos de erro e solução de problemas .
Por que os streams são cortados ou reiniciados?
VPNs e proxies VLESS costumam armazenar SSE em buffer ou quebrar a negociação do HTTP/2. A OneProvider não tem restrições regionais e não armazena streams em buffer; desative o proxy e tente de novo.
Onde pergunto se isso não bastar?
Escreva para @Oneproviderhelpbot no Telegram ou abra “Suporte” no painel web, informando o código de status HTTP e a mensagem de erro exata. Como funciona o suporte .
Última atualização: 2026-11-08 Encontrou um erro? @Oneproviderhelpbot