BENCHMARK · SPEECH RECOGNITION · 9 MIN READ
Routing Hinglish speech: why a 10-second window beat a short one
Memos that switch between English and Hinglish need two speech models and a router between them. Checking each short piece on its own sent nearly a third of Hinglish pieces to the wrong model. Giving the language detector 10 seconds of audio around each piece fixed most of that. Here are the numbers, the phone cost, and the ideas we dropped.
Founder, Bodham LabsPublished · Updated
THE SHORT ANSWER
- On the developer's own recordings (laptop CPU), Parakeet had 11.7% word errors on English against 24.5%, and Hinglish-Swift 22.8% on Hinglish against 70.9%. So we route each memo between them.
- Routing each piece alone sent 29.7% of Hinglish pieces to the English model. A 10-second window around each piece cut that to 7.2%, while word errors on mixed clips fell from 35.7% to 18.2% against the old first-10-seconds rule.
- The price: on the phone, the language checks take about as long as the transcription itself.
Why does a voice-memo app need two speech models?
Our on-device voice-memo app, Mementos (codename), transcribes every memo on the phone. Many speakers in India use English in one memo and Hinglish, a mix of Hindi and English, in the next. Sometimes they switch in the middle of a sentence.
We tested speech models on the developer's own recordings: 17 items, 304 seconds in total, 12 of them in English and 3 in Hinglish. Each model won one language and lost the other.
| MODEL (INT8) | SIZE | ENGLISH, 12 RECORDINGS | HINGLISH, 3 RECORDINGS |
|---|---|---|---|
| Parakeet TDT 0.6B v2 | 661 MB | 11.7% | 70.9% |
| Hinglish-Swift (Whisper-base, 73 M) | 160 MB | 24.5% | 22.8% |
Word error rate (WER) is the share of words a model gets wrong (swapped, missing or added) against a correct transcript. Lower is better. On Hindi-heavy audio, Parakeet, an English model, wrote nothing or English-sounding nonsense. So each memo, or each part of a memo, has to go to the right model. That job is called routing.
How do we tell English from Hinglish?
With language identification (language ID): a small model listens to a stretch of audio and names its language. We used Whisper-tiny (int8, 111 MB) and sent a stretch to Hinglish-Swift only when it said Hindi (“hi”) or Urdu (“ur”). Everything else went to Parakeet, because the detector sometimes labels Indian English as another Indian language. One of the developer's English memos came back as Telugu.
| ROUTER, FIRST 10 S OF EACH CLIP | ENGLISH SENT TO HINGLISH MODEL | HINGLISH KEPT AS ENGLISH | LAPTOP TIME PER 10 S |
|---|---|---|---|
| Transcribe with Hinglish-Swift first, count Hindi words (better of two variants) | 8/150 | 6/150 | 1,449 ms |
| Whisper-tiny language ID | 0/150 | 8/150 | 349 ms |
An earlier idea, guessing the language from Parakeet's own English transcript, missed 64 of 150 Hinglish clips (43%). Names and deal terms looked like non-English words too.
The first build let the first 10 seconds decide
Our first test build ran language ID once, on a memo's first 10 seconds, and sent the whole memo to one model. For memos in one language that worked. A memo that switched language halfway went entirely to one model, and the other language came out as nonsense.
Why did a 10-second window beat a short one?
The obvious fix was to check every piece. The app already cuts memos at pauses into pieces of up to 12 seconds, using voice activity detection (VAD), a small model that finds where speech starts and stops. So we ran language ID on each piece and sent each piece to its own model.
In the first laptop test (866 pieces from 327 clips), this halved word errors on 10 mixed clips, from 34.84% to 17.72%. But it sent 30.7% of Hinglish pieces to the English model, up from 5.9%. A short piece gives the detector too little audio to go on.
So we gave it more. For each piece, the detector now hears a 10-second window centred on that piece, borrowing audio from its neighbours. The piece itself still goes to one model on its own.
| ROUTING RULE (LAPTOP CPU) | HINGLISH PIECES SENT TO ENGLISH | ENGLISH PIECES SENT TO HINGLISH | WER, 30 MIXED CLIPS | WER, 17 RECORDINGS |
|---|---|---|---|---|
| First 10 s decides the whole memo | 61/444 (13.7%) | 39/579 (6.7%) | 35.7% | 13.98% |
| Each piece alone | 132/444 (29.7%) | 4/579 (0.7%) | 18.2% | 14.31% |
| Each piece, 10 s window (adopted) | 32/444 (7.2%) | 13/579 (2.2%) | 18.2% | 13.98% |
Read the table honestly. The drop in word errors on mixed clips, 35.7% to 18.2%, comes from routing per piece; the short and the 10-second windows tie there. What the window adds is the rest: Hinglish misroutes fall from 29.7% to 7.2%, and the developer's 17 recordings stay at 13.98% instead of rising to 14.31%. Of the rules we tried, it is the best balance across all four columns.
It did not meet every bar we set beforehand. We wanted Hinglish misroutes at or below 5.9%, the old rule's figure in the first test, and mixed-clip errors at or below 20%. No rule met both. The 10-second window came closest.
What does it cost on the phone?
On our test phone, a Redmi Note 14 Pro+ 5G, the app's routes matched the laptop script exactly: 23 of 23 pieces on 5 mixed clips. Then we measured where the time goes, in our benchmark app, with 5 runs of each setting.
| RECORDING, ON THE REDMI | TRANSCRIPTION ONLY | ONE LANGUAGE CHECK | CHECK PER PIECE |
|---|---|---|---|
| English, 54 s, 12 pieces | 0.070 | 0.078 | 0.146 |
| Mixed English and Hinglish, 57 s, 12 pieces | 0.076* | 0.081 | 0.185 |
| English, 96 s, 19 pieces | 0.081 | 0.086 | 0.153 |
Real-time factor (RTF) is processing time divided by the length of the audio. An RTF of 0.1 means a 60-second memo takes 6 seconds.
- The language check costs as much as the transcription. Each check took 0.34 s on the Redmi, 4.1 s for the 54-second memo. Transcription itself stayed at 0.07 to 0.08 of the memo's length.
- Hinglish is slower to transcribe. Hinglish pieces took about 0.16 of their length, against 0.07 for English.
- Memory. In the app, peak memory was 1.30 GB for an English memo and 1.66 GB for a mixed one, which loads both speech models. In the benchmark app the peak stayed between 1.44 and 1.72 GB over all 60 runs.
What did we try and drop?
| IDEA | WHAT HAPPENED |
|---|---|
| Run both models on unsure pieces, keep both for search | Checking each piece alone, 49.4% of pieces were decoded twice, for 3.5 to 3.9 more points of Hinglish content words findable. With the 10 s window, 26.5% were decoded twice, and no extra words became findable on the public Hindi test clips. |
| Blank penalty (0.5, 1.0, 2.0) | Every value above 0 added errors: 11.70%, 12.06% and 13.12%, against 11.35% at 0 (12 English clips). |
| A slower second pass at night | On 27 clips: beam search 4 and 8 made the 17 recordings worse (14.48% and 14.14% against 13.98%). Picking between two hearings helped mixed clips (17.72% to 16.34%) but hurt the 17 recordings (15.31%) at twice the time. Merging pieces to 24 s doubled errors on mixed clips. |
| Hotwords for names | On the 17 recordings, at boost 1.5 and 3.0, they fixed no name, made one worse, and made Hinglish output worse. |
| Switch language only after 2 pieces agree | 10.4% Hinglish misroutes, and 32.21% word errors on the 30 mixed clips. |
| Prefer Hinglish when a neighbour is Hinglish | 5.6% Hinglish misroutes, but 10.9% of English pieces misrouted and 22.7% on mixed clips. |
| One model for both languages (Nemotron 3.5) | English 19.5% against 11.7%, about 10× slower on the laptop, and Hinglish written in Devanagari. |
- Blank penalty: Parakeet emits a “blank” when it hears no new word. Penalising blanks is meant to stop it dropping words.
- Beam search: keeping several candidate transcripts at each step instead of only the single best one.
- Hotwords: a list of words the decoder is nudged towards. Our test had a flaw: the model shipped without a vocabulary file, so we built one with equal scores, which may not match its real tokenizer.
What this does not prove
- The mixed clips are synthetic. We made them by joining the developer's own English and Hinglish recordings. Real switching in the middle of a memo is not measured, and a real Hinglish memo spoken into the phone's microphone has not been tested yet.
- Few Hinglish recordings. 3 from the developer. The public Hinglish clips are tutorial-style speech; more English-heavy Hinglish may be labelled English more often.
- No WER on the public clips. Their Hindi references are in Devanagari while our model writes Roman letters, and the English references contain markup. We use them only to count routes.
- One phone. 1.66 GB on mixed memos has not been tried on a phone with 8 GB of memory.
What we decided
Each piece of a memo is routed by language ID on a 10-second window around it, and goes to Parakeet or Hinglish-Swift on its own. Only one transcript is kept per piece; we do not decode twice.
The cost is now the language check, not the transcription. Most memos are in one language and do not need a check on every piece, so the next test looks for a rule with far fewer checks and the same accuracy. It has not run yet. The wider research is on our on-device voice memory page.
Questions
Why not use one speech model for both English and Hinglish?
In our tests, no single model did both well. On the developer's own recordings (laptop CPU), Parakeet had 11.7% word errors on English but 70.9% on Hinglish, and Hinglish-Swift had 22.8% on Hinglish but 24.5% on English. A single multilingual model we tried had 19.5% on English, was about ten times slower, and wrote Hinglish in Devanagari script.
How much audio does a language detector need to route Hinglish speech?
More than one short piece. When Whisper-tiny judged each piece of up to 12 seconds on its own, it sent 29.7% of Hinglish pieces to the English model. Giving it a 10-second window centred on each piece cut that to 7.2%, on 444 Hinglish pieces, on a laptop CPU.
Does checking the language of every piece slow transcription on a phone?
Yes, about twice over. On the Redmi, each check took 0.34 seconds, or 4.1 seconds for a 54-second memo, about as long as the transcription itself. Transcription alone took 0.070 of the memo's length, and 0.146 with a check per piece.
RAW DATA
A summary of the logs behind every number on this page is available on request.
CITE THIS NOTE
Chandra, P. (2026). Routing Hinglish speech: why a 10-second window beat a short one. Bodham Labs Notes.
Founder of Bodham Labs. BTech in Electrical Engineering, MCA and B.Ed; teaches AI and builds the systems in our work ledger.