Shruti Odia
Speech to text for Odia and English, on your device, with no server.
Try it now · in your browser · free, no login
Speak Odia, English or both. Shruti Odia writes it down on your device.
Shruti · checking this device
Audio never leaves your device. Shruti and its open-source engine run inside this page.
(or drop one on the transcript)
Load Shruti, then press Record and speak Odia, English or both.
Speak Odia, English or both. English words stay in English (Latin script) and are underlined here; Odia is written in Odia script. While you speak, words appear once they have settled, a second or two behind you; when you stop, Shruti reads the whole recording once more for the final text.
Shruti Odia · 29.7 MB · Odia and English · 6 November 2026
On Odia conversations that mix in English, fewer errors than every model we measured, including SraVaani-1.0, a model about 31 times its size.
Shruti Odia writes Odia in Odia script and keeps English words in English, the way people type: hockey match ପାଇଁ ticket ମିଳିଗଲା. On real Odia conversations that mix in English, scored with English words written in English, it makes fewer errors than every model we measured, including SraVaani-1.0 (909 MB) and IndicConformer Odia (138 MB): DiarBench 36.2 against 43.4 and 49.9, same clips and scorer, 2 November 2026. It writes 55.8% of the English words in English letters; IndicConformer Odia and SraVaani-1.0 write none. It makes fewer errors than Dolphin base and small on every test we ran, and Whisper’s language list has no Odia. It runs offline on a five-year-old phone, about 10× faster than real time in 64 MB of memory with the native engine, and it invented no words on 100 silent clips.
| Model | File | DiarBench | FLEURS | Kathbath |
|---|---|---|---|---|
| Shruti Odia | 29.7 MB | 36.2 | 39.5 | 32.5 |
| Dolphin-base int8 | 103.7 MB | 97.5 | 68.1 | 52.7 |
| IndicConformer Odia | 137.7 MB | 49.9 | 25.9 | 21.1 |
| Dolphin-small int8 | 249.7 MB | 99.9 | 71.1 | 40.4 |
| SraVaani-1.0 | 908.8 MB | 43.4 | 22.1 | 21.4 |
Word error rate %, lower is better; 200 clips each for FLEURS and Kathbath and 196 turns for DiarBench, the same scorer for every model, measured 2 November 2026. DiarBench is real conversation that mixes in English, held out for every model, scored with English words written in English; FLEURS and Kathbath are read Odia. On DiarBench every gap holds in a paired bootstrap, with whole conversations resampled and with script ignored, including SraVaani-1.0 (interval -9.75 to -4.76 points). Other Odia speech models exist that we have not measured; these results cover only the models listed here.
Where it falls short
- On read Odia, IndicConformer Odia (almost 5× larger) makes about 35% fewer errors on FLEURS (25.9 against 39.5) and on Kathbath (21.1 against 32.5). SraVaani-1.0 (about 31× larger) is ahead on both. Character errors on FLEURS are 18.38% against 7.64% and 6.79%.
- On conversations scored against the native reference, which drops the English words, IndicConformer Odia (40.7) and SraVaani-1.0 (34.9) are ahead of Shruti Odia (49.2).
- In a phone’s browser, leaving the language to the engine went wrong: 3 of 4 English-heavy lines played into this page on 5 November came out as English garble. This page now tells the engine the language you picked, and those lines stayed in Odia script on 6 November. Plain English loses a little accuracy this way. Not yet tested with a live microphone.
- Some English words come out in Odia script (start as ଷ୍ଟାର୍ଟ, online as ଅନଲାଇନ୍ରେ) and acronyms can split into letters (EMI as e m i). Real errors happen (Cyclone as ସାଇଟ୍ରୋନର, ମହମବତୀ, candles, as ମହମ୍ମଦୀ). Joined words and spelling variants count as errors, and so do local names that the test writes in Latin (cuttack as କଟକ).
- No punctuation, and numbers come out as words. Noise, music, far-field and speaker-played audio were not tested. In loud noise, Shruti models sometimes repeat a phrase over and over (measured on Hindi-family models, not on Odia). No Odia speaker has reviewed this output yet.
Try Shruti Odia Shruti Odia on Hugging Face the model file, the full results and how each model was run
Use it in your app
Every Shruti model runs in Cactus’s open-source needle engine. Download the engine for your platform and the file for your language, and pass it a WAV file or 16 kHz audio.
# Command line (Mac, Linux, Windows)
# Engine: huggingface.co/Cactus-Compute/needle3, your platform
# Model: shruti-odia.cact, from Shruti Odia's Hugging Face repo
./needle --model shruti-odia.cact --audio clip.wav
# for speech that is only English: --audio-language en
# Python
pip install cactus-needle
import needle
shruti = needle.Whistle(weights="shruti-odia.cact")
print(shruti.transcribe("clip.wav")["text"])- Android, iOS and the web: call the engine’s C API.
needle_loadtakes the model file,needle_transcribea clip, andneedle_stream_transcribe_processabout a second of live audio at a time. The demo on this page makes the same calls, from WebAssembly in a Web Worker. - Leave the language unset for Hindi and Hinglish: detection does as well as setting it on Hindi, Hinglish, accented Hindi and US English. Set English when the speech is only English with an Indian accent, which detection often takes for Hindi. On a subset of Svarah: 21.13% word errors with English set, 25.75% detected.
- Keywords, one per line, favour the names, places and product words your users say.
- Cactus’s Python package (cactus-needle) sends anonymous usage counts by default; set
NEEDLE_TELEMETRY=0to turn that off. The command-line engine and the WebAssembly engine on this page make no network requests of their own.
Credits
Every Shruti model is built on Cactus Whistle and runs in the needle engine, both by Cactus Compute under Apache-2.0. The engine files on this page are Cactus’s WebAssembly build, unmodified, served with its licence and notice. Shruti Odia’s model card on Hugging Face lists its training datasets and their licences.