seta-kk-ru-v2), and — unlike every general-purpose ASR — it handles a speaker switching between them mid-sentence, because it was never asked to pick one.
Your existing key works. One API key covers text-to-speech and speech-to-text, and both draw down the same credit balance — nothing new to provision.
Accuracy
8.71% WER on KSC2. Whisper large-v3 scores 44.95% on the same audio.
Drop-in for Whisper
Change
baseURL on your OpenAI client. That’s the whole migration.try it in one line
> transcript.txt captures only the text.
from code
what comes back
audio_seconds is what you pay for. x_realtime is how many times faster than real time the transcription ran.
Transcripts are lowercase and unpunctuated. That is not post-processing — the model’s output vocabulary contains no capitals and no punctuation, so nothing is being stripped. Punctuation and truecasing are on the roadmap.
why there is no language parameter
Kazakh and Russian share one 70-character output vocabulary — the full Kazakh alphabet (42 letters), the full Russian alphabet (33), and Latin a–z. Both languages live in the same output space, so the model never has to be told which one it is hearing, and a speaker can switch inside a single word without the model switching anything.
This is the whole architectural bet, and it is why Seta is not built on Whisper. Whisper must be told one language per utterance, which makes genuine code-switching impossible to represent, and it scores 37–49% WER on Kazakh regardless. See accuracy for the head-to-head.
language, prompt and temperature are accepted on the OpenAI-compatible endpoint, and ignored, so existing clients keep working.
audio you can send
Telephony audio is fine: on simulated 8 kHz G.711 μ-law, accuracy drops only 8% relative (8.71% → 9.41% WER), versus the 30–80% typical for models not adapted to narrowband.
what it costs
Same credit pool as text-to-speech. Estimate before you spend, with no request:
/v1/models, /health) are open and free.
latency and cold starts
Warm, a short clip transcribes in ~0.15 s (about 18× real time). The GPU scales to zero when idle, so the first request after a quiet period pays a cold start of roughly 20–30 s — and the first transcription in a fresh container costs ~1.9 s while CUDA kernels warm up. If you need predictable latency for a demo or a call window, ask us to pin a warm container.Accuracy & benchmarks
Per-domain WER, telephony, and comparisons against Whisper and ISSAI.
Billing & credits
One balance across both products.
TypeScript SDK
geko.stt.transcribe(...), typed end to end.Limits
Durations, rate limits, and cold starts.