The moment it breaks
One voice was never going to be enough
The first version of any voice agent usually ships with one voice, from one provider, in one language. It works — right up until a user speaks Hindi to an English-only voice, or a cost-sensitive campaign gets stuck paying premium per-minute rates for accuracy nobody asked for. That's the exact moment a single voice profile stops being enough.
No provider is simultaneously the cheapest, the fastest, and the most accurate — in every language, at once.
So instead of betting on one TTS provider, we built a library of voice profiles spread across five providers — Unpod, ElevenLabs, Sarvam, Cartesia, gnani, and smallestai — each tuned for a specific language, gender, cost tier, and accuracy target. Pulling the real numbers off our own dashboard to write this, two things turned up that the original internal draft had gotten wrong or left out entirely — which turned out to be the more interesting part of the story.
Why one wasn't enough
Why a single voice profile never scales
Four forces pull in different directions, and no single provider sits at the intersection of all of them:
No single provider wins everywhere — ElevenLabs' English is excellent, but that doesn't make its Hindi the best option on the market. Sarvam, built specifically for Indian languages, closes part of that gap — though not always the part you'd expect (more on that below).
Cost and speed pull apart — the most natural-sounding voice is rarely the cheapest or fastest. Routing every call through a premium provider burns budget on interactions that never needed it.
Different flows need different personas — a male voice for certain flows, a true multilingual voice for code-switching callers, a Marathi-native voice for regional campaigns.
Vendor redundancy — if one provider degrades or changes pricing, profiles already built on other providers mean the system isn't dependent on a single vendor.
The correction
What the dashboard actually says
Pulling the live voice picker instead of the marketing draft turned up the first real discrepancy: Riya is tagged MULTI on the dashboard, not EN+HI. The original internal draft called her a bilingual English/Hindi profile — cheapest bilingual option in the library. That's not what she is. She's the cheapest true multilingual profile, which is a different (and arguably more useful) claim, not a smaller one.

The live voice picker — real per-minute cost and WER, pulled straight from the dashboard.
The second thing the dashboard has that the draft didn't: WER, word error rate — how often the transcript the STT hands to the LLM is actually wrong. That's an accuracy number, and it doesn't always move the way you'd expect. Anika's Marathi, transcribed through Sarvam — a provider built specifically for Indian languages — comes in at roughly 12% WER. Zara, Arjun, and Neha, all transcribed through Soniox for Hindi or English, sit around 8%. The Indian-language specialist has the worse number here, at least for this language pair. That's worth knowing before defaulting to "built for Indian languages" as a quality shortcut.
Riya and Pooja — the two cheapest profiles in the library — don't have a measured WER yet. That's an honest gap, not a hidden one: cheap and fast is confirmed; cheap, fast, and accurate isn't measured yet.

Six confirmed profiles, plotted on cost and accuracy together. The dashed rings are the two cheapest profiles — WER not yet measured.
The real bottleneck
Where the time actually goes
The original draft listed a single "latency" number per profile, in the 650–800ms range. Pulling live turns from actual sessions shows that number was measuring something narrower than what the caller experiences, and that it varies a lot by profile and playbook. One session on Pooja (gnani + smallestai) showed a time-to-first-audio (TTFA) of 2.36–2.83s. A separate session on Anika (sarvam + Cartesia) came in much faster: 1.62s on the opening greeting, 1.32s after the caller said "Hello." TTS itself stayed small in every sample — 68–232ms across both profiles. It was never the slow part.

Anika, opening greeting — DialogMachine.turn() 1.54s, TTS 68ms, TTFA 1.62s.

Anika, after the caller says "Hello" — DialogMachine.turn() 970ms, TTS 87ms, TTFA 1.32s.

DialogMachine.turn() — the LLM's own turn — is still the largest single piece of TTFA on this faster session, even though the total dropped by roughly a second.
That reframes what a "latency benchmark" per voice profile should even mean. TTS choice affects a few hundred milliseconds at most. The model behind DialogMachine.turn(), and which playbook is calling it, affects the rest — and clearly can swing total TTFA by more than a second depending on setup.
Provider by provider
Which provider actually wins for which language
Sarvam — Hindi specialist, mixed results on accuracy
Taniya's Hindi through Sarvam sits at a mid cost tier. Worth using for Hindi-first flows where native phrasing matters more than raw WER — but the Anika/Marathi result above is a reason to verify accuracy per-language rather than assuming "built for Indian languages" always wins on that axis.
gnani — budget Hindi and Punjabi
Shruti runs Hindi through gnani at a low cost tier. Satvir Kaur, Punjabi through gnani, is the only Punjabi coverage in the library — cost and WER for that profile aren't confirmed against the live dashboard yet, worth pulling before scaling Punjabi traffic through it.
Unpod — cheapest profile in the library, true multilingual
Riya is the cheapest profile confirmed on the dashboard at $0.0155/min — and she's tagged MULTI, not a fixed English/Hindi pair. For callers whose language can't be predicted ahead of time, this is the most efficient option on the table, full stop.
smallestai — the other true multilingual
Pooja is also tagged MULTI, at $0.0308/min — roughly double Riya's cost, still well below the ElevenLabs/Cartesia tier. Both Riya and Pooja are missing a measured WER, which is the one number worth closing before routing high-stakes calls through either by default.
ElevenLabs — fastest response, known accuracy, higher cost
Zara (Hindi) and Arjun (English, the only male voice in the set) both run on ElevenLabs at $0.0439–$0.0468/min with an ~8% WER. The premium buys the fastest TTS in the set and the only male persona — the right trade when responsiveness and voice identity matter more than shaving the last cent off cost.
Cartesia — Marathi coverage, at the highest cost and WER observed
Cartesia powers Anika (Marathi) and Neha (English + Hindi). Anika is both the most expensive confirmed profile ($0.0567/min) and the highest WER (~12%) in the set. It's also the only Marathi coverage in the library, which makes it the default for Marathi regardless — but a candidate to re-benchmark against Sarvam or a Marathi-specific alternative if that WER holds up under more testing.
Route by need
What this means in practice

Ten profiles, five providers — matched to the caller in front of them, not to whichever one shipped first.
Marathi caller → Anika (Cartesia). No other provider in the library covers this language, cost and WER aside.
Hindi, cost-sensitive, high volume → Shruti (gnani).
Hindi, quality-first → Taniya (Sarvam) or Zara (ElevenLabs), depending on whether native phrasing or response speed matters more.
Punjabi caller → Satvir Kaur (gnani) — confirm live cost/WER before scaling.
Unknown or mixed language input → Riya (Unpod) or Pooja (smallestai) — true MULTI, and the two cheapest profiles in the library.
English + male voice requirement → Arjun (ElevenLabs), the only male profile in the set.
Back to the start
Back to the moment it broke
Go back to that first voice agent, the one running a single profile in a single language. The fix was never "pick a better provider" — every provider in this library is the better pick for something. The fix was building the routing layer that sends Marathi to Cartesia, budget Hindi to gnani, unpredictable language to Riya or Pooja, and a male English voice to Arjun — and being honest about which of those numbers are confirmed on the dashboard and which still need a benchmark run.
Voice profiles were never about giving users "options." They're a routing problem — language first, then cost, then accuracy — solved once instead of re-solved on every call.
Building a multilingual voice agent and want this kind of routing out of the box?
Unpod's voice profile library ships with cost, latency, and accuracy data per profile — pick by language and budget, not by whichever provider you integrated first. Book a demo →
Numbers above reflect the live dashboard and two captured sessions at the time of writing — WER for Riya, Pooja, and Satvir Kaur, and any pricing changes, are worth re-pulling before quoting externally.

