Modele audio
Tekst na mowę, mowa na tekst i głos w czasie rzeczywistym przez jedno API zgodne z OpenAI: zapytania, głosy, formaty i dokładna cena każdego modelu audio.
Zamiana tekstu na mowę, mowy na tekst i głos w czasie rzeczywistym przez jedno API: żądania, głosy, formaty i ceny.
Wszystkie modele, możliwości i ceny Indeks dokumentacji dla agentów AI:https://oneprovider.dev/docs/llms.txt Dostępne modele audio
grok-tts Dostępny - znaki wejściowe
- 15,00 USD / 1 mln znaków
grok-stt Dostępny - godzina audio
- 0,10 USD / godzina
grok-voice-3.0 Dostępny - minuta audio
- 0,08 USD / minuta
grok-voice-latest Dostępny - minuta audio
- 0,08 USD / minuta
gemini-2.5-flash-tts Dostępny - tokeny tekstowe na wejściu
- 0,50 USD / 1 mln tokenów
- tokeny audio na wyjściu
- 10,00 USD / 1 mln tokenów
gemini-2.5-pro-tts Dostępny - tokeny tekstowe na wejściu
- 1,00 USD / 1 mln tokenów
- tokeny audio na wyjściu
- 20,00 USD / 1 mln tokenów
gemini-3.1-flash-tts Dostępny - tokeny tekstowe na wejściu
- 1,00 USD / 1 mln tokenów
- tokeny audio na wyjściu
- 20,00 USD / 1 mln tokenów
gemini-3.1-tts Dostępny - tokeny tekstowe na wejściu
- 1,00 USD / 1 mln tokenów
- tokeny audio na wyjściu
- 20,00 USD / 1 mln tokenów
gemini-3.8-flash-tts Dostępny - tokeny tekstowe na wejściu
- 0,50 USD / 1 mln tokenów
- tokeny audio na wyjściu
- 9,00 USD / 1 mln tokenów
gemini-3.8-flash-lite-tts Dostępny - tokeny tekstowe na wejściu
- 0,50 USD / 1 mln tokenów
- tokeny audio na wyjściu
- 6,00 USD / 1 mln tokenów
gemini-3.5-transcribe Dostępny - tokeny audio na wejściu
- 2,00 USD / 1 mln tokenów
- tokeny tekstowe na wyjściu
- 12,00 USD / 1 mln tokenów
gemini-3.5-stt Dostępny - tokeny audio na wejściu
- 0,30 USD / 1 mln tokenów
- tokeny audio z cache na wejściu
- 0,03 USD / 1 mln tokenów
- tokeny tekstowe na wyjściu
- 2,50 USD / 1 mln tokenów
gemini-3-stt Dostępny - tokeny audio na wejściu
- 1,00 USD / 1 mln tokenów
- tokeny audio z cache na wejściu
- 0,10 USD / 1 mln tokenów
- tokeny tekstowe na wyjściu
- 3,00 USD / 1 mln tokenów
| Zadanie | Ścieżka | Modele |
|---|---|---|
| Tekst na mowę (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 |
| Mowa na tekst (STT) | POST /v1/audio/transcriptions | grok-stt, gemini-3-stt, gemini-3.5-stt, gemini-3.5-transcribe |
| Głos w czasie rzeczywistym | GET /v1/realtime?model= (WebSocket) | grok-voice-3.0, grok-voice-latest |
Tekst na mowę
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") | Pole | Wartość |
|---|---|
model | Wymagane. Identyfikator modelu zamiany tekstu na mowę. |
input | Wymagane. Tekst do wypowiedzenia. |
voice | Głos: dla Grok nazwa małymi literami z listy poniżej albo identyfikator własnego głosu, dla Gemini nazwa z drugiej listy. |
response_format | mp3 (domyślnie), wav lub pcm. |
Odpowiedzią jest plik audio w wybranym formacie. Dla długiego tekstu wyślij osobne żądanie na każdy akapit i połącz pliki.
Głosy Grok
altairaraatlasauroracarinacastorcelestecosmoevehelioshelixiriskeplerleolioralumenlunaluxnakshorionperseusrexrigelsalsiriusursazaganzenith Głosy Gemini
ZephyrPuckCharonKoreFenrirLedaOrusAoedeCallirrhoeAutonoeEnceladusIapetusUmbrielAlgiebaDespinaErinomeAlgenibRasalgethiLaomedeiaAchernarAlnilamSchedarGacruxPulcherrimaAchirdZubenelgenubiVindemiatrixSadachbiaSadaltagerSulafat Mowa na tekst
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) Żądanie to multipart/form-data z polami file (plik audio) i model. Odpowiedzią jest JSON z polem text.
Głos w czasie rzeczywistym
Otwórz WebSocket pod wss://api.oneprovider.dev/v1/realtime?model=grok-voice-3.0 z tym samym kluczem w nagłówku Authorization. Zdarzenia są zgodne z 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()) | Zdarzenie | Przeznaczenie |
|---|---|
session.update | Klient: ustawia instrukcje i opcje sesji. |
conversation.item.create | Klient: dodaje do rozmowy wiadomość, tekstową lub audio. |
response.create | Klient: prosi model o odpowiedź. |
response.output_audio.delta | Serwer: kolejny fragment audio odpowiedzi, base64. |
response.output_audio_transcript.delta | Serwer: kolejny fragment tekstu wypowiadanego przez model. |
response.done | Serwer: odpowiedź jest kompletna. |
Cennik
- Grok TTS jest rozliczany za znak tekstu wejściowego.
- Grok STT jest rozliczany za godzinę audio.
- Grok Voice jest rozliczany za minutę rozmowy, plus niewielka opłata za każdą wysłaną wiadomość tekstową.
- Gemini jest rozliczany w tokenach: tekst lub audio na wejściu oraz audio lub tekst na wyjściu; jedna sekunda audio to 25 tokenów.
Przykład: grok-tts, 1000 znaków = 15,00 USD / 1 mln × 1000 = 0,015 USD.
Dokładną cenę każdego modelu znajdziesz w tabeli powyżej i na stronie z cennikiem .
Błędy
| HTTP | Przyczyna |
|---|---|
| 400 | Nieprawidłowe pole, nieznany głos lub format. |
| 401 | Klucz jest nieprawidłowy lub unieważniony. |
| 402 / 403 / 429 | Za niskie saldo albo osiągnięty limit klucza. Doładuj i spróbuj ponownie. |
| 5xx | Usługa jest chwilowo niedostępna. Spróbuj ponownie później. |
Szybkie odpowiedzi
Jakiego base URL użyć?
Claude Code i SDK Anthropic używają https://api.oneprovider.dev. SDK OpenAI i klienty zgodne z OpenAI używają https://api.oneprovider.dev/v1. Jeden klucz działa przy obu; lista modeli jest na stronie modeli , a stawki na stronie cennika .
Jak się uwierzytelnić?
Wyślij surowy klucz sk-… w x-api-key albo Authorization: Bearer: w jednym z nich, nigdy w obu. Trzymaj klucz w zmiennej środowiskowej, a nie w pliku, który trafia do repozytorium. Więcej o uwierzytelnianiu .
Skąd wziąć klucz?
Otwórz swój Panel w bocie Telegram @oneprovider_robot lub na app.oneprovider.dev, doładuj saldo i naciśnij „Utwórz klucz”. Każdy klucz może mieć własny limit wydatków. Panel i klucze API .
Co oznaczają 401, 404 i 429?
401: klucza brakuje, jest błędnie wpisany albo wysłany w złym nagłówku; wklej cały klucz bez cudzysłowów i spacji. 404: zwykle zły base URL, na przykład brakujące lub podwojone /v1. 429 z komunikatem „Insufficient balance”: saldo Panelu lub limit wydatków klucza się wyczerpał, więc doładuj zamiast ponawiać; każde inne 429 to limit zapytań, więc poczekaj zgodnie z Retry-After. Szczegóły: kody błędów i rozwiązywanie problemów .
Dlaczego strumienie się urywają lub resetują?
VPN i proxy VLESS często buforują SSE albo zrywają negocjację HTTP/2. OneProvider nie ma ograniczeń regionalnych i nie buforuje strumieni, więc wyłącz proxy i spróbuj ponownie.
Gdzie pytać, jeśli to nie wystarcza?
Napisz do @Oneproviderhelpbot w Telegramie albo otwórz „Wsparcie” w Panelu w przeglądarce, podając kod statusu HTTP i dokładny komunikat błędu. Jak działa wsparcie .
Ostatnia aktualizacja: 2026-11-08 Widzisz błąd? @Oneproviderhelpbot