Modèles audio
Synthèse vocale, transcription et voix en temps réel via une seule API compatible OpenAI : requêtes, voix, formats et prix exact de chaque modèle audio.
Synthèse vocale, reconnaissance vocale et voix en temps réel via une seule API : les requêtes, les voix, les formats et les prix.
Tous les modèles, leurs capacités et leurs tarifs Index de la documentation pour les agents IA :https://oneprovider.dev/docs/llms.txt Modèles audio disponibles
grok-tts Runnable - caractères en entrée
- 15,00 $US / 1M de caractères
grok-stt Runnable - heure d’audio
- 0,10 $US / heure
grok-voice-3.0 Runnable - minute d’audio
- 0,08 $US / minute
grok-voice-latest Runnable - minute d’audio
- 0,08 $US / minute
gemini-2.5-flash-tts Runnable - jetons de texte en entrée
- 0,50 $US / 1M de jetons
- jetons audio en sortie
- 10,00 $US / 1M de jetons
gemini-2.5-pro-tts Runnable - jetons de texte en entrée
- 1,00 $US / 1M de jetons
- jetons audio en sortie
- 20,00 $US / 1M de jetons
gemini-3.1-flash-tts Runnable - jetons de texte en entrée
- 1,00 $US / 1M de jetons
- jetons audio en sortie
- 20,00 $US / 1M de jetons
gemini-3.1-tts Runnable - jetons de texte en entrée
- 1,00 $US / 1M de jetons
- jetons audio en sortie
- 20,00 $US / 1M de jetons
gemini-3.8-flash-tts Runnable - jetons de texte en entrée
- 0,50 $US / 1M de jetons
- jetons audio en sortie
- 9,00 $US / 1M de jetons
gemini-3.8-flash-lite-tts Runnable - jetons de texte en entrée
- 0,50 $US / 1M de jetons
- jetons audio en sortie
- 6,00 $US / 1M de jetons
gemini-3.5-transcribe Runnable - jetons audio en entrée
- 2,00 $US / 1M de jetons
- jetons de texte en sortie
- 12,00 $US / 1M de jetons
gemini-3.5-stt Runnable - jetons audio en entrée
- 0,30 $US / 1M de jetons
- jetons audio en entrée mis en cache
- 0,03 $US / 1M de jetons
- jetons de texte en sortie
- 2,50 $US / 1M de jetons
gemini-3-stt Runnable - jetons audio en entrée
- 1,00 $US / 1M de jetons
- jetons audio en entrée mis en cache
- 0,10 $US / 1M de jetons
- jetons de texte en sortie
- 3,00 $US / 1M de jetons
| Tâche | Chemin | Modèles |
|---|---|---|
| Synthèse vocale (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 |
| Reconnaissance vocale (STT) | POST /v1/audio/transcriptions | grok-stt, gemini-3-stt, gemini-3.5-stt, gemini-3.5-transcribe |
| Voix en temps réel | GET /v1/realtime?model= (WebSocket) | grok-voice-3.0, grok-voice-latest |
Synthèse vocale
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") | Champ | Valeur |
|---|---|
model | Obligatoire. L’ID d’un modèle de synthèse vocale. |
input | Obligatoire. Le texte à prononcer. |
voice | La voix : pour Grok, un nom en minuscules de la liste ci-dessous ou votre propre ID de voix personnalisée ; pour Gemini, un nom de la seconde liste. |
response_format | mp3 (par défaut), wav ou pcm. |
La réponse est le fichier audio au format choisi. Pour un long texte, envoyez une requête par paragraphe et assemblez les fichiers.
Voix Grok
altairaraatlasauroracarinacastorcelestecosmoevehelioshelixiriskeplerleolioralumenlunaluxnakshorionperseusrexrigelsalsiriusursazaganzenith Voix Gemini
ZephyrPuckCharonKoreFenrirLedaOrusAoedeCallirrhoeAutonoeEnceladusIapetusUmbrielAlgiebaDespinaErinomeAlgenibRasalgethiLaomedeiaAchernarAlnilamSchedarGacruxPulcherrimaAchirdZubenelgenubiVindemiatrixSadachbiaSadaltagerSulafat Reconnaissance vocale
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) La requête est en multipart/form-data avec les champs file (le fichier audio) et model. La réponse est un JSON avec un champ text.
Voix en temps réel
Ouvrez un WebSocket vers wss://api.oneprovider.dev/v1/realtime?model=grok-voice-3.0 avec la même clé dans l’en-tête Authorization. Les événements suivent l’API OpenAI Realtime.
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()) | Événement | Rôle |
|---|---|
session.update | Client : définit les instructions et les options de session. |
conversation.item.create | Client : ajoute un message à la conversation, texte ou audio. |
response.create | Client : demande au modèle de répondre. |
response.output_audio.delta | Serveur : le morceau suivant de l’audio de la réponse, en base64. |
response.output_audio_transcript.delta | Serveur : le morceau suivant du texte de ce que dit le modèle. |
response.done | Serveur : la réponse est terminée. |
Tarifs
- Grok TTS est facturé par caractère de texte d’entrée.
- Grok STT est facturé par heure d’audio.
- Grok Voice est facturé par minute de conversation, plus de petits frais pour chaque message texte que vous envoyez.
- Gemini est facturé en jetons : texte ou audio en entrée, audio ou texte en sortie ; une seconde d’audio correspond à 25 jetons.
Exemple : grok-tts, 1 000 caractères = 15,00 $US / 1M × 1 000 = 0,015 $US.
Le prix exact de chaque modèle figure dans le tableau ci-dessus et sur la page des tarifs .
Erreurs
| HTTP | Cause |
|---|---|
| 400 | Un champ non valide, une voix ou un format inconnu. |
| 401 | La clé est invalide ou révoquée. |
| 402 / 403 / 429 | Solde insuffisant ou limite de la clé atteinte. Rechargez et réessayez. |
| 5xx | Le service est temporairement indisponible. Réessayez plus tard. |
Réponses rapides
Quelle base URL utiliser ?
Claude Code et les SDK Anthropic utilisent https://api.oneprovider.dev. Les SDK OpenAI et les clients compatibles OpenAI utilisent https://api.oneprovider.dev/v1. Une seule clé fonctionne avec les deux ; la liste des modèles est sur la page des modèles , les tarifs sur la page des tarifs .
Comment s’authentifier ?
Envoyez la clé sk-… telle quelle dans x-api-key ou Authorization: Bearer : l’un des deux, jamais les deux. Conservez la clé dans une variable d’environnement, pas dans un fichier qui sera commité. En savoir plus sur l’authentification .
Où obtenir une clé ?
Ouvrez votre espace client dans le bot Telegram @oneprovider_robot ou sur app.oneprovider.dev, rechargez le solde et appuyez sur « Créer une clé ». Chaque clé peut avoir sa propre limite de dépense. Espace client et clés API .
Que signifient 401, 404 et 429 ?
401 : la clé est absente, mal saisie ou envoyée dans le mauvais en-tête ; collez la clé entière, sans guillemets ni espaces. 404 : le plus souvent une base URL incorrecte, par exemple un /v1 manquant ou en double. 429 avec « Insufficient balance » : le solde de l’espace client est à zéro ou la clé a atteint sa limite de dépense, donc rechargez au lieu de réessayer ; tout autre 429 est une limite de débit, donc attendez le délai indiqué par Retry-After. Détails : codes d’erreur et dépannage .
Pourquoi les flux se coupent-ils ou se réinitialisent-ils ?
Les VPN et les proxys VLESS mettent souvent le SSE en mémoire tampon ou perturbent la négociation HTTP/2. OneProvider n’a aucune restriction régionale et ne met pas les flux en mémoire tampon : désactivez le proxy et réessayez.
Où demander de l’aide si cela ne suffit pas ?
Écrivez à @Oneproviderhelpbot sur Telegram ou ouvrez « Support » dans l’espace client web, en indiquant le code de statut HTTP et le message d’erreur exact. Comment fonctionne le support .
Dernière mise à jour: 2026-11-08 Vous avez trouvé un bug ? @Oneproviderhelpbot