Ordinary Gujarati prose is handled well by current speech models. That is not where things go wrong.
What breaks is everything that is not a plain word: digits, percentages, phone numbers, web addresses, and names the model has barely seen. Every failure below is one we shipped, heard, and fixed, and several of them were only found because someone told us.
Numbers read half in English
The most recent one we found. A script containing 200% was spoken as something close to "two-so ટકા" rather than બસો ટકા.
The cause is that the text reaching the engine was the Latin digits `200` followed by ટકા. A digit string is effectively an instruction to guess a language, and the model resolved it inconsistently — reading the `2` in English and the trailing zeros as the Gujarati hundred suffix. The result is a hybrid that is not a word in either language.
Phone numbers read as one giant number
This is the one that cost us a real customer. A business call-to-action contained a ten-digit mobile number, and the engine read it as a single cardinal — beginning "six hundred and thirty-five crore" and continuing from there.
It is an entirely reasonable thing for a speech model to do. Ten digits in a row is a number, and reading a number as a cardinal is correct almost everywhere else. It is simply catastrophic for the one case where the digits are an address rather than a quantity.
| Digits | Almost always | Should be read as |
|---|---|---|
| 4 | A year | A cardinal — 1951 |
| 6 | A lakh figure | A cardinal |
| 8 | A crore figure | A cardinal |
| 10–12 | A phone number | Digit by digit |
Web addresses, and the two engines wanting opposite things
A bare domain like a government portal or a shop's website is a real, speakable thing, and deleting it is not an option when the whole point of the reel is to send someone there.
What surprised us is that different engines want it in different scripts, and we only established this by generating samples and listening. Three attempts to reason it out beforehand were all wrong.
| Engine | Wants | Example |
|---|---|---|
| Sarvam | English, as one unbroken span | foscos dot fssai dot gov dot in |
| Cartesia | Gujarati script | ફોસ્કોસ ડોટ એફએસએસએઆઈ ડોટ ગવ ડોટ ઇન |
Conjuncts are the fastest test
શ્રીજી, દ્વારકા and પ્રશ્ન each contain joined consonants. An engine that genuinely handles Gujarati speaks the join as one sound; an engine that merely accepts Gujarati text tends to pull the letters apart.
This is a two-minute test that tells you more than any feature list, and it is worth running on any tool before paying for it. It is also worth running on your own scripts, because a conjunct in a place name or a business name is exactly where you cannot afford it.
Proper nouns are where every engine is weakest
Business names, town names, family names. These are the words a model has seen least often, and they are also the words you can least afford to have mispronounced — a reel that says a shop's name wrong is worse than one that does not say it at all.
Our practical rule is to generate every unusual name on its own, before writing a script around it. If it comes out wrong, respell it phonetically in the script so the audio is right, and keep the correct spelling in the caption, which is a separate path and not affected by what the voice engine was given.
- Test the name alone first, not inside a sentence.
- Respell phonetically for the audio when needed — the caption keeps the real spelling.
- Keep the respelling consistent across a script, or one word gets two pronunciations in one video.
- Listen for vowel length. In Sanskrit-derived names the difference between a short and long vowel changes the word.
One model-level fact worth knowing
Not every model in a provider's range speaks Gujarati, even when the provider does. Cartesia's sonic-3.5 handles Gujarati; sonic-2 supports a list of European and Asian languages that does not include it. Picking the wrong model in the same family produces output that is wrong in a way that looks like a quality problem rather than a language problem.
It is worth checking which specific model a tool calls, not just which company built it.
The short version
- Ordinary sentences are fine. Numbers, names and addresses are where it breaks.
- Percentages can be read half in English — convert them to Gujarati words first.
- Ten digits in a row will be read as one enormous cardinal unless you split them.
- Web addresses want English in one engine and Gujarati script in another. Test by ear.
- Conjuncts are the two-minute test of whether an engine really handles Gujarati.
- Always generate proper nouns on their own before building a script around them.