The active provider disconnects or rejects its managed connection.
02
Preserve the turn
The Router retains recent input audio while it starts the next model.
03
Resume automatically
Buffered audio is replayed and transcripts continue on the same WebSocket.
Route or fail over by model
VoiceRun
Deepgram
OpenAI
ElevenLabs
Google
Qwen
Choosing an STT vendor shouldn't be a one-way door
Stream audio once and receive one event schema. VoiceRun handles provider integrations, routing, failover, usage, and billing behind the socket.
Configure a primary model and an ordered fallback_models list when the session starts. The Router moves to the next model when it cannot establish the provider connection, the provider rejects its managed credential, or the provider returns a terminal session error. Invalid configuration, an invalid VoiceRun key, insufficient balance, and a client closing the socket are not treated as provider failures.
During a switch, VoiceRun preserves up to eight seconds of recent input audio and replays it into the fallback model so the current turn can continue. Your agent stays on the same WebSocket, receives session.model_changed with a provider-neutral failure reason, then continues receiving the same transcript events.
Need a key? Sign in to the VoiceRun profile, click Add PAT under Personal Access Tokens, and use the generated token as VOICERUN_API_KEY. Keep it server-side and out of source control.
# Pick a primary model and an ordered fallback chain.
{"type": "session.update",
"model": "voicerun-asr-realtime-v1",
"fallback_models": ["nova-3", "gpt-4o-transcribe"]}
▶ {"type": "input_audio_buffer.append", "audio": "<base64 PCM16>"}
◀ {"type": "session.model_changed",
"from_model": "voicerun-asr-realtime-v1",
"to_model": "nova-3",
"reason": "provider_unavailable",
"replayed_audio_ms": 2400}
◀ {"type": "transcription.delta", "text": "I'd like a table for four"}
◀ {"type": "turn.ended", "text": "I'd like a table for four.", "reason": "provider"}
⚡
Realtime, not file upload
OpenRouter's STT endpoint accepts finished files over POST. VoiceRun streams live audio over WebSocket and returns partials immediately.
🗣️
Events built for voice agents
Speech, transcript, and turn events arrive in one shape across every provider.
🛟
Automatic model failover
Configure an ordered model chain. If the active provider fails, VoiceRun switches the live session and replays buffered audio so the current turn can continue.
🔑
One key, one balance
One VoiceRun API key and credit balance across every enabled model.
🧪
Bake-off on your own audio
Compare accuracy and latency on the production audio that actually matters.
🏠
Including our own model
VoiceRun STT Model is selectable through the same protocol, with audio kept inside VoiceRun.
Built for the realtime audio path
The Router adds one network hop: your voice agent connects to VoiceRun, and VoiceRun connects to the selected STT model. We've engineered the Rust data path specifically for realtime audio, minimizing processing and forwarding latency on every frame.
Production-path latency, measured
Simultaneous direct and routed audio over warmed WebSockets
Same GCP region
6–40 ms
Positive paired p50 impact across the tested realtime signals. Final-result impact was 7.5 ms for Cartesia and 6.6 ms for Inworld; Deepgram first-partial impact was 40 ms.
US East → US Central
5–75 ms
Paired p50 impact from end of speech to final transcript: 5 ms for Cartesia, 75 ms for Deepgram, and 62 ms for Inworld.
Authentication, billing, and other control-plane operations stay outside the per-frame audio path.
September 2026 benchmark: 100 simultaneous pairs per provider from separate GCP compute, using persistent warmed connections and the same 3.8-second fixture. Routed traffic crossed the production global load balancer before reaching the VoiceRun STT Router. Paired p50 is the median of each routed-minus-direct pair. Results include network, load-balancer, provider-backend, and event normalization variance. Tail latency can exceed these medians; these measurements are directional, not a latency guarantee.
Realtime STT models, one integration
Every provider below is available through the same STT Router protocol. Audio input and partial, final, error, and fallback events use one schema. Model-specific settings are applied when supported, so switching models does not require a new provider integration.
Provider
Models
VoiceRun
voicerun-asr-realtime-v1
First-party, self-hosted — per-turn context and semantic turn-taking
Deepgram
flux-general-en · flux-general-multi · nova-3
Low-latency workhorse for English and multilingual
OpenAI
gpt-4o-transcribe · gpt-4o-mini-transcribe
Strong general accuracy; prompt biasing supported
ElevenLabs
scribe_v2_realtime
Realtime scribe with broad language coverage
Cartesia
ink-whisper
Fast streaming transcription
Soniox
stt-rt-v4
Realtime multilingual recognition
Google
chirp_3
Chirp 3 speech recognition
Qwen
qwen3-asr-flash · qwen3-asr-flash-realtime
Low-latency multilingual recognition with contextual biasing
xAI
grok-stt
Grok speech-to-text
Inworld
inworld/inworld-stt-1
Conversational speech recognition
Gradium
gradium-default-stt
Gradium speech recognition
Tencent
tencent-16k
16 kHz recognition for China-region workloads
Model availability evolves as vendors ship and retire snapshots; the API reference carries the current list and per-model capabilities.
Access VoiceRun STT Model through the Router
STT Router is the shared access layer. Select VoiceRun STT Model for our first-party model—with per-turn context, semantic turn-taking, hallucination and language-drift guards, and audio that stays inside VoiceRun—or select an external model with the same VoiceRun key. The socket, audio format, event schema, and credit balance stay the same.
Integrate once, compare models on your own calls, and move between them by changing the model string.