OneProvider

Modelos de audio

Texto a voz, voz a texto y voz en tiempo real con una API compatible con OpenAI: solicitudes, voces, formatos y el precio exacto de cada modelo de audio.

Texto a voz, voz a texto y voz en tiempo real con una sola API: las solicitudes, las voces, los formatos y los precios.

Todos los modelos, capacidades y precios Índice de la documentación para agentes de IA: https://oneprovider.dev/docs/llms.txt

Modelos de audio disponibles

grok-tts Runnable
caracteres de entrada
15,00 US$ / 1M de caracteres
grok-stt Runnable
hora de audio
0,10 US$ / hora
grok-voice-3.0 Runnable
minuto de audio
0,08 US$ / minuto
grok-voice-latest Runnable
minuto de audio
0,08 US$ / minuto
gemini-2.5-flash-tts Runnable
tokens de entrada de texto
0,50 US$ / 1M de tokens
tokens de salida de audio
10,00 US$ / 1M de tokens
gemini-2.5-pro-tts Runnable
tokens de entrada de texto
1,00 US$ / 1M de tokens
tokens de salida de audio
20,00 US$ / 1M de tokens
gemini-3.1-flash-tts Runnable
tokens de entrada de texto
1,00 US$ / 1M de tokens
tokens de salida de audio
20,00 US$ / 1M de tokens
gemini-3.1-tts Runnable
tokens de entrada de texto
1,00 US$ / 1M de tokens
tokens de salida de audio
20,00 US$ / 1M de tokens
gemini-3.8-flash-tts Runnable
tokens de entrada de texto
0,50 US$ / 1M de tokens
tokens de salida de audio
9,00 US$ / 1M de tokens
gemini-3.8-flash-lite-tts Runnable
tokens de entrada de texto
0,50 US$ / 1M de tokens
tokens de salida de audio
6,00 US$ / 1M de tokens
gemini-3.5-transcribe Runnable
tokens de entrada de audio
2,00 US$ / 1M de tokens
tokens de salida de texto
12,00 US$ / 1M de tokens
gemini-3.5-stt Runnable
tokens de entrada de audio
0,30 US$ / 1M de tokens
tokens de entrada de audio en caché
0,03 US$ / 1M de tokens
tokens de salida de texto
2,50 US$ / 1M de tokens
gemini-3-stt Runnable
tokens de entrada de audio
1,00 US$ / 1M de tokens
tokens de entrada de audio en caché
0,10 US$ / 1M de tokens
tokens de salida de texto
3,00 US$ / 1M de tokens
Qué modelo hace qué
TareaRutaModelos
Texto a voz (TTS)POST /v1/audio/speechgrok-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 a texto (STT)POST /v1/audio/transcriptionsgrok-stt, gemini-3-stt, gemini-3.5-stt, gemini-3.5-transcribe
Voz en tiempo realGET /v1/realtime?model= (WebSocket)grok-voice-3.0, grok-voice-latest

Texto a voz

bash
curl -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")
Parámetros de la solicitud
CampoValor
modelObligatorio. El ID de un modelo de texto a voz.
inputObligatorio. El texto que se va a locutar.
voiceLa voz: para Grok, un nombre en minúsculas de la lista de abajo o el ID de tu propia voz personalizada; para Gemini, un nombre de la segunda lista.
response_formatmp3 (por defecto), wav o pcm.

La respuesta es el archivo de audio en el formato elegido. Para textos largos, envía una solicitud por párrafo y une los archivos.

Voces de Grok

altairaraatlasauroracarinacastorcelestecosmoevehelioshelixiriskeplerleolioralumenlunaluxnakshorionperseusrexrigelsalsiriusursazaganzenith

Voces de Gemini

ZephyrPuckCharonKoreFenrirLedaOrusAoedeCallirrhoeAutonoeEnceladusIapetusUmbrielAlgiebaDespinaErinomeAlgenibRasalgethiLaomedeiaAchernarAlnilamSchedarGacruxPulcherrimaAchirdZubenelgenubiVindemiatrixSadachbiaSadaltagerSulafat

Voz a texto

bash
curl -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)

La solicitud es multipart/form-data con los campos file (el archivo de audio) y model. La respuesta es un JSON con un campo text.

Voz en tiempo real

Abre un WebSocket a wss://api.oneprovider.dev/v1/realtime?model=grok-voice-3.0 con la misma clave en el encabezado Authorization. Los eventos siguen la API Realtime de OpenAI.

python
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())
Eventos
EventoPara qué sirve
session.updateCliente: define las instrucciones y las opciones de la sesión.
conversation.item.createCliente: añade un mensaje a la conversación, de texto o de audio.
response.createCliente: pide al modelo que responda.
response.output_audio.deltaServidor: el siguiente fragmento del audio de la respuesta, en base64.
response.output_audio_transcript.deltaServidor: el siguiente fragmento de texto de lo que dice el modelo.
response.doneServidor: la respuesta está completa.

Precios

  • Grok TTS se cobra por carácter del texto de entrada.
  • Grok STT se cobra por hora de audio.
  • Grok Voice se cobra por minuto de conversación, más una pequeña tarifa por cada mensaje de texto que envías.
  • Gemini se cobra en tokens: texto o audio de entrada, y audio o texto de salida; un segundo de audio son 25 tokens.

Ejemplo: grok-tts, 1000 caracteres = 15,00 US$ / 1M × 1000 = 0,015 US$.

El precio exacto de cada modelo está en la tabla de arriba y en la página de precios .

Errores

Códigos de error
HTTPCausa
400Un campo no válido, una voz o un formato desconocidos.
401La clave no es válida o fue revocada.
402 / 403 / 429Saldo insuficiente o se alcanzó el límite de la clave. Recarga y reintenta.
5xxEl servicio no está disponible temporalmente. Reintenta más tarde.
Una clave para todos los modelos El audio se paga con el mismo saldo que el texto. Consulta la tabla completa de modelos en la página de modelos .

Respuestas rápidas

¿Qué base URL uso?

Claude Code y los SDK de Anthropic usan https://api.oneprovider.dev. Los SDK de OpenAI y los clientes compatibles con OpenAI usan https://api.oneprovider.dev/v1. Una misma clave funciona con ambas; la lista de modelos está en la página de modelos y las tarifas, en la página de precios .

¿Cómo me autentico?

Envía la clave sk-… tal cual en x-api-key o en Authorization: Bearer: en uno de los dos, nunca en ambos. Guarda la clave en una variable de entorno, no en un archivo que se suba al repositorio. Más sobre la autenticación .

¿Dónde obtengo una clave?

Abre tu panel en el bot de Telegram @oneprovider_robot o en app.oneprovider.dev, recarga el saldo y pulsa “Emitir una clave”. Cada clave puede tener su propio límite de gasto. Panel y claves de API .

¿Qué significan 401, 404 y 429?

401: falta la clave, está mal escrita o se envió en un encabezado equivocado; pega la clave completa, sin comillas ni espacios. 404: casi siempre es una base URL incorrecta, por ejemplo con /v1 ausente o duplicado. 429 con “Insufficient balance”: se agotó el saldo del panel o el límite de gasto de la clave, así que recarga en lugar de reintentar; cualquier otro 429 es un límite de frecuencia, así que espera según Retry-After. Detalles: códigos de error y solución de problemas .

¿Por qué se cortan o se reinician los streams?

Las VPN y los proxies VLESS suelen almacenar SSE en búfer o romper la negociación de HTTP/2. OneProvider no tiene restricciones regionales y no almacena los streams en búfer: desactiva el proxy y reintenta.

¿Dónde pregunto si esto no basta?

Escribe a @Oneproviderhelpbot en Telegram o abre “Soporte” en el panel web, con el código de estado HTTP y el mensaje de error exacto. Cómo funciona el soporte .

Última actualización: 2026-11-08 ¿Encontraste un error? @Oneproviderhelpbot