Three reports have come out of this lab on Indic speech synthesis. Ragini set the quality bar across Indian languages. Ragini Pro measured it honestly against four commercial systems. Ragini Lite asked how frugal acceptable Hindi–English speech could be.
Code-mixing runs through all of it. It is what Indian customer conversations are made of, so every model in this line has had to speak it. Ragini 2.0 widens the language coverage and puts the join itself (how a sentence holds together where the language changes) at the centre of what it is built for and what we measure.
It is also a clear step up from Ragini 1.0. In a blind test where the listeners could not see which system they were hearing, 2.0 took the top rank on every voice tested, scoring 4.55 out of 5 against 1.0's 3.40. Pronunciation judged correct rose from 54% to 82%, and naturalness from 58% to 87%: the difference between a voice you tolerate and one you stop noticing.
Ragini 2.0 reads a sentence that changes language halfway through as one sentence, same voice, no seam, in English, Hindi, Kannada, Tamil and Telugu.
Most Sentences Aren't in One Language
Open any transcript from an Indian contact centre and count the sentences that stay in a single language. There are fewer than you expect. The usual pattern is one language carrying the sentence while English supplies the nouns: the product, the process, the document, the status. The speaker doesn't pause or change voice at the switch. Most of the time they don't notice it happened.
आपकी property listing approve हो गई है, अब ₹2,500 के featured plan से visibility बढ़ाइए।
ನಿಮ್ಮ site visit ಶನಿವಾರ ಬೆಳಿಗ್ಗೆ 11 ಗಂಟೆಗೆ confirm ಆಗಿದೆ.
உங்கள் rental agreement renewal அடுத்த மாதம் முடிவடைகிறது.
మీ security deposit మూడు working days లో refund అవుతుంది.
Linguists call this code-switching when a speaker alternates between languages across a boundary, and intra-sentential code-mixing when the languages sit inside the same clause, which is the case almost everywhere above. A model that speaks good English and good Kannada doesn't automatically read that English–Kannada code-mixed sentence well. The trouble is at the joins, and it shows up in four ways:
The speaker sounds subtly different once the language switches, so one sentence comes out sounding like two people spliced together. The worst of the four, because it breaks the illusion of a person completely.
A small pause and a fresh start at the switch point. The sentence stops sounding like a sentence and starts sounding like a list of fragments.
English words read in a heavy American accent, or an exaggerated one. Real bilingual speakers say them in ordinary Indian English. That's the target.
English words spelled out letter by letter, or Hindi written in English letters, like aapka order bhej diya, read as though it were English.
One way to handle mixed text is to cut the sentence at every language boundary, send each piece to a different model, and join the audio back together. That approach guarantees the first two problems. Ragini 2.0 doesn't cut: a mixed sentence is spoken as a single sentence by a single voice, and the model works out the language from the text. Nothing needs to be tagged or split by whoever is calling it.
Listen for the switch: each mixed sample should sound like one speaker:
“आपकी property listing approve हो गई है, अब ₹2,500 के featured plan से visibility बढ़ाइए।”
“ನಿಮ್ಮ site visit Saturday ಬೆಳಿಗ್ಗೆ 11 ಗಂಟೆಗೆ confirm ಆಗಿದೆ, ನಮ್ಮ representative ನಿಮಗೆ call ಮಾಡ್ತಾರೆ.”
“நீங்க இந்த laptop எடுத்துட்டு போய் service-க்கு கொடுங்க.”
“మీ home loan pre-approved అయ్యింది, property documents verify అయిన తర్వాత disbursement మొదలవుతుంది.”
“जी हाँ, आपका किराया मिल गया है, रसीद मैंने अभी भेज दी है।”
“Sure, I can arrange a site visit for that three bedroom apartment on Saturday morning, and the builder will share the floor plan before you arrive.”
Four code-mixed samples and two single-language ones. Sherin reads the English and Hindi cards, Roohi the Kannada, Tamil and Telugu, each voice in the languages it was built for.
What Makes a Voice Sound Natural
"Natural" is the vaguest word in speech synthesis. On a clean, well-formed sentence almost every decent model now sounds human, so the word has stopped separating anything. For a voice agent, four specific things decide whether a voice works:
| Quality | What Goes Wrong Without It |
|---|---|
| Clean soundsignal fidelity | Buzz, hiss or a metallic edge. The caller hears a machine within a second. |
| Sentence melodyprosody · intonation · pitch contour | Every clause gets the same tune. Long sentences flatten into recitation and the emphasis lands on the wrong word. |
| Right tone for the jobregister | A payment reminder read like an audiobook, or a warm greeting read like a legal notice. |
| Clear endingsturn-yielding cues · boundary tones | Nothing signals the agent has finished, so the caller talks over it, or waits, and the silence feels like a dropped call. |
The last one is usually left out of a TTS evaluation, and a conversational product can't do without it. Speech in a conversation isn't only listened to: it's taken turns with. The cues that tell a listener a turn has finished, such as a falling boundary tone or final-syllable lengthening, are what turn-taking research calls turn-yielding signals, and a voice that omits them is interrupted. A voice whose sentence endings are ambiguous produces a call full of interruptions and awkward gaps no matter how good each individual line sounds.
This is also where Ragini 2.0 differs from Ragini Lite. Lite is deliberately steady and even, exactly right for an OTP or a balance statement, and exactly wrong for a conversation, where the evenness that makes it dependable is what makes it sound like a recording. Ragini 2.0 gives that range back.
Names, Numbers and Amounts
The Ragini Pro report showed that real failures are narrow and harsh: a ten-digit account number read as one enormous quantity, NEFT pronounced as a word, a locality name mangled. These usually get filed as accuracy bugs. On a live call they are heard as the moment the customer realises they are talking to a machine.
Two mechanisms sit behind this. Text normalization decides how a written form is verbalized: how a date, an amount or an acronym becomes words. Grapheme-to-phoneme conversion, or G2P, decides how those words become sounds, which is where a transliterated name or an unfamiliar place name is won or lost. We treat both as part of how natural the voice sounds rather than as a separate category of bug, and we measure them on the same material. Account numbers, amounts, dates, acronyms and place names are read the way a person would read them out, and where that is still wrong, it counts against quality rather than against a checklist.
Voices
Nine named voices, male and female, chosen by name when you make a request.
| Languages | Voices |
|---|---|
| English · Hindi | shrajay · siddharth · parmi · sherin · bhavya · shreya · saavi |
| Kannada · Tamil · Telugu | amaya · parmi · roohi · bhagya · shrajay · siddharth |
A name that appears in both rows isn't yet confirmed to be the same person in both. That check is still outstanding.
Speed
None of the above matters in a conversation if the reply arrives late. Ragini 2.0 starts sending audio while the rest of the sentence is still being produced, so the number that counts is how long the caller waits before hearing anything, not how long the whole sentence takes.
| Languages | Wait Before First Audio ↓ | Faster Than Real Time ↑ |
|---|---|---|
| English · Hindi | 0.12 s | 3.4× |
| Kannada · Tamil · Telugu | 0.12 s | 3.4× |
Both language sets measure the same, which is expected: they are the same model at the same size, differing only in which voices they carry. These are single-stream measurements on one machine and are indicative rather than a guarantee. Behaviour under real call volume is a separate question.
What the Numbers Say
In a blind listening test on code-mixed Dravidian speech, with ElevenLabs v3 included as an outside reference:
| System | Pronunciation ↑ | Naturalness ↑ | Quality (0–5) ↑ |
|---|---|---|---|
| Ragini 2.0 | 0.82 | 0.87 | 4.55 |
| ElevenLabs v3 (reference) | 0.57 | 0.88 | 3.94 |
| Ragini 1.0 | 0.54 | 0.58 | 3.40 |
Ragini 2.0 took the top quality rank on all seven voices, and in all three languages separately. Against Ragini 1.0 the margin is not subtle: a full point and a fifth on a five-point scale, with pronunciation errors roughly halved. The interesting column is not the one it wins. On naturalness it and ElevenLabs are level, 0.87 against 0.88, a tie. The gap is pronunciation, where it leads by 0.24: the reference system sounds perfectly good and mispronounces the Indian-language content roughly twice as often. That is the failure mode Ragini Pro described, showing up again in a blind test.
Does mixing languages inside a sentence make the speech harder to understand? It does not:
| Sentences | Word Errors ↓ | Character Errors ↓ | English Words Kept ↑ |
|---|---|---|---|
| Code-mixed | 0.21 | 0.03 | 94% |
| Single-language (same voices) | 0.21 | 0.09 | n/a |
Mixed and single-language sentences score the same, 0.21 against 0.21. Changing language mid-sentence costs nothing measurable, which is the claim this article is built on. Around 94% of embedded English words survive the round trip intact, and separate checks found no added pause at the switch and no drift in the speaker's voice across it.
Numbers and account details are read as a person would read them. ₹1,20,500 comes out as one lakh twenty thousand five hundred rupees, and a ten-digit reference number is spoken digit by digit rather than as one enormous quantity.
Broken out by language, on a public benchmark of everyday spoken sentences, the same sixty utterances in each language:
| Language | Word Errors ↓ | Character Errors ↓ |
|---|---|---|
| English | 0.07 | 0.03 |
| Hindi | 0.16 | 0.19 |
| Tamil | 0.21 | 0.08 |
| Kannada | 0.23 | 0.15 |
| Telugu | 0.35 | 0.22 |
| Average | 0.20 | 0.14 |
Dates, amounts and shortforms are left out of the score. A written "5 am" spoken correctly as "five a m" is a large error against the written form and tells you nothing about the voice, so the words are scored and the conventions are not. What remains is ordinary spoken language, and Ragini 2.0 holds together across all five languages on it. The average weights each language equally rather than by word count, so no single strong language can carry the others.
Word and character errors rank the languages differently, and the gap is informative. In the Indic scripts one wrong vowel sign fails an entire word while barely moving the character count, so a word score can look far worse than the speech actually sounds. Character error rates stay low throughout, between 0.03 and 0.22, which is the better indication of whether a listener would follow the sentence.
The same utterances, spoken by other systems and scored identically:
| System | English | Hindi | Kannada | Tamil | Telugu | Average ↓ |
|---|---|---|---|---|---|---|
| Ragini 2.0 | 0.07 | 0.16 | 0.23 | 0.21 | 0.35 | 0.20 |
| Sarvam bulbul v3 | 0.10 | 0.18 | 0.22 | 0.25 | 0.31 | 0.21 |
| Ragini 1.0 | 0.12 | 0.19 | 0.30 | 0.27 | 0.37 | 0.25 |
| ElevenLabs v3 | 0.13 | 0.18 | 0.42 | 0.32 | 0.38 | 0.28 |
Ragini 2.0 posts the strongest average of the four, and leads outright on English, Hindi and Tamil. Character errors rank it first as well, at 0.14 against 0.15 for Sarvam bulbul v3, 0.15 for Ragini 1.0 and 0.16 for ElevenLabs v3.
Against Ragini 1.0 the gain is across the board: word errors fall in every one of the five languages, and by almost a fifth on the average. Against the commercial reference the widest margin is Kannada, where ElevenLabs v3 runs close to double our word error rate. This measure is dominated by how legible a voice is to a speech recogniser rather than by how good it sounds to a person, which is why the blind listening test above separates the two generations far more decisively than the averages here do. Where humans did the judging, 2.0 won on every voice.
In Conclusion
Ragini 2.0 was built for the sentence Indian customers actually say, where one language carries the clause and English supplies the nouns. On that material it holds: a mixed sentence and a single-language one score the same, around 94% of embedded English words survive intact, and the joins show no added pause and no drift in the speaker's voice across them. Changing language mid-sentence costs nothing measurable.
Against Ragini 1.0 the step up is visible on every measure taken. In a blind test where the listeners could not see which system they were hearing, quality rose from 3.40 to 4.55 out of 5 and 2.0 took the top rank on every voice tested; pronunciation judged correct went from 54% to 82% and naturalness from 58% to 87%. On the conversational benchmark word errors fall in all five languages.
Against outside systems it posts the strongest average of the four tested on both word and character errors, and on naturalness it is level with the commercial reference while leading it clearly on pronunciation. Five languages, nine named voices, and a response fast enough to answer inside a live call.
One voice, five languages, and no audible seam where the sentence changes language.
Ragini 2.0 isn't on general API access yet. Try it in the playground on the ConvoZen developer portal, or contact the research team at contact@convozen.ai to evaluate it for a voice agent or enterprise workload.