Voices

Find a voice

Measured voice models, with the published naturalness evidence behind them.

Browse the roster

The catalog endpoint did not answer, so this is the bundled snapshot — which carries the voice models but not their per-voice rosters. The boards below are unaffected.

No per-voice roster in this snapshot. The models are listed below.

What each one scored

Naturalness is measured per language, not inferred from English — the model that wins one study routinely loses another. Every figure is the board's own.

#ModelNaturalnessEloSynthenglish board p50Cost$ / M chars
1
gemini-3.1-flash-tts-previewgoogle-tts:gemini-3.1-flash-tts-preview
1591978ms~$33.3
2
eleven_v3elevenlabs:eleven_v3
1590481ms$100.0
3
aura-2deepgram:aura-2
1584125ms$30.0
4
sonic-3.5cartesia:sonic-3.5
1574121ms$50.0
5
simba-3.2speechify:simba-3.2
1573345ms$10.0
6
tts-rt-v1soniox:tts-rt-v1
1569362ms~$13.0
7
s2.1-profishaudio:s2.1-pro
~1566185ms$15.0
8
inworld-tts-2inworld:inworld-tts-2
1561116ms$25.0
9
inworld-tts-2-flashinworld:inworld-tts-2-flash
~150182ms$15.0
10
lightning_v3.1smallest:lightning_v3.1
1544173ms$25.0
11
palabra-tts-v1palabra:palabra-tts-v1
~152072ms$30.0
12
grok-ttsxai:tts
1495272ms$15.0
13
defaultgradium:default
1448244ms$57.8
14
speech-2.8-hdminimax:speech-2.8-hd
1431294ms$100.0
15
arcanav3rime:arcanav3
1429238ms$40.0
16
gpt-4o-mini-ttsopenai:gpt-4o-mini-tts
1424691ms~$20.0
17
octave-2hume:octave-2
1377448ms$100.0
18
qwen3-tts-flashalibaba:qwen3-tts-flash
1310472ms$10.0

Latency and price are the English board’s, by model — a model measured only in this study carries neither.

Voice models and language coverage

Which model each voice belongs to, and the languages Router can select it for.

ModelVoices
sonic-3.5cartesia:sonic-3.5
enardeesfilfrhinbtate
gpt-4o-mini-ttsopenai:gpt-4o-mini-tts
endeesfilfrnb
inworld-tts-2inworld:inworld-tts-2
enardeesfilfr
lightning_v3.1smallest:lightning_v3.1
endeesfr
octave-2hume:octave-2
endeesfr
tts-rt-v1soniox:tts-rt-v1
endeesfr
s2.1-profish:s2.1-pro
en
tts-rt-v2soniox:tts-rt-v2
en
chirp-3-hdgoogle:chirp-3-hd
no languages declared
codarime:coda
no languages declared
eleven_flash_v2elevenlabs:eleven_flash_v2
no languages declared
eleven_flash_v2_5elevenlabs:eleven_flash_v2_5
no languages declared
eleven_multilingual_v2elevenlabs:eleven_multilingual_v2
no languages declared
eleven_turbo_v2elevenlabs:eleven_turbo_v2
no languages declared
eleven_turbo_v2_5elevenlabs:eleven_turbo_v2_5
no languages declared
flux-haley-endeepgram:flux-haley-en
no languages declared
grok-ttsxai:grok-tts
no languages declared
lightning_v3.1_prosmallest:lightning_v3.1_pro
no languages declared
mistv3rime:mistv3
no languages declared
octave-1hume:octave-1
no languages declared
qwen3-tts-flash-realtimealibaba:qwen3-tts-flash-realtime
no languages declared
qwen3-tts-instruct-flash-realtimealibaba:qwen3-tts-instruct-flash-realtime
no languages declared
sonic-3cartesia:sonic-3
no languages declared
speech-2.6-hdminimax:speech-2.6-hd
no languages declared
speech-2.6-turbominimax:speech-2.6-turbo
no languages declared
speech-2.8-turbominimax:speech-2.8-turbo
no languages declared

Take one to the API

Pin a voice route with the provider and model in an explicit routing object, then send the provider's voice id in voice. Router returns raw audio in the encoding declared by the request.

curl https://router.speko.dev/v1/tts/speech \
  -H "Authorization: Bearer $SPEKO_API_KEY" \
  -H "Idempotency-Key: tts-$(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "routing": {"mode":"auto","objective":"balanced"},
    "voice": "",
    "input": "Hello from Speko.",
    "audio": {"encoding": "pcm_s16le", "sample_rate_hz": 24000, "channels": 1}
  }'

Use routing.mode: "auto" to let Router select the voice model by language and objective instead of pinning a route.