Hinglish
Sonic supports code-switching between Hindi and English (Hinglish) in a single generation. Pass the transcript in conventional written form — Devanagari, Latin script, or a mix — and the model switches languages naturally mid-sentence.Romanized Hindi and Indic text
Sonic reads Hindi and other Indic languages written in Latin script — Hinglish and other transliterated text — and follows romanized transcripts materially better in Sonic 3.6, available onsonic-preview now.
Write romanized text the way it’s naturally typed, and keep English words in their standard spelling:
language field to the language of the transcript (hi for Hinglish) even when the text is romanized.
Quality varies with how scripts are mixed in the transcript:
For pure English transcripts, either
en or hi works as the language: the more Indian words the sentence carries — names, places, product terms — the more the hi setting pronounces them correctly.
Worked examples
Accent and reading conventions are independent controls:locale picks the voice’s accent, normalization picks how dates, times, and numbers are read.
Hindi voice, English digit reading
An OTP or confirmation code inside a Hindi transcript should read digit-by-digit the English way:4821 as “four eight two one” rather than as a Hindi number.
Romanized Hindi with English read-outs
The highest-traffic combination: a Hinglish transcript spoken with a Hindi-Indian accent while dates, times, and digits follow English-Indian conventions.Normalizers
Normalizers control how Sonic expands written forms — numbers, currency, dates, phone numbers — into spoken words. By default, Sonic applies locale-aware normalization automatically, so$19.99 is spoken as “nineteen dollars and ninety-nine cents”.
Documentation for configuring individual normalizers is coming soon.
Regional reading conventions
Today,en-GB and en-US produce identical normalization output: English and Hindi are excluded from the locale-aware normalization engine, so all English regional variants inherit the same reading conventions. The locale and normalization fields make regional differentiation expressible.
If British-specific read-outs matter for your product today, pre-normalize the forms that differ (dates, currency) and see turning normalization off.
Turning normalization off
Settingnormalization to "off" skips the automatic normalizer — and only the automatic normalizer. Everything else still applies:
- SSML tags and generation controls
- Pronunciation dictionaries
- Transcript buffering
- Input validation: potentially malicious character sequences may be blocked for security and stability reasons
# as “number”), or need all-caps words spoken as words rather than spelled out letter by letter.
Normalization is all-or-nothing per request — there is no per-span control. If most of a transcript should be normalized but one span shouldn’t, write out that span as it should be spoken (along with any other written forms in the transcript that would have needed normalizing) and send the request with normalization off.
Normalizer worked examples
Pre-normalized text with the normalizer off
For “teleprompter” transcripts you’ve already written out the way they should be spoken, custom symbol read-outs, or all-caps words that should be spoken as words:British accent with US reading conventions
The decoupling pattern itself: pick the accent withlocale, pick the reading conventions with normalization.
03/04/2026 as March fourth). Note that today the reverse isn’t distinguishable — see regional reading conventions: en-GB and en-US normalization output is currently identical, so this pattern matters as regional differentiation lands rather than changing read-outs today.
Different read-out conventions inside one transcript
A single request applies onenormalization value to the whole transcript — there is no per-span control, because detecting language switches inside a transcript would add latency to every request.
If one clause needs Hindi read-outs and another needs English read-outs, split the transcript and send two requests with different normalization values and the same voice, so the accent stays consistent, then concatenate the audio:
Request 1
Request 2