Shruti Bodo · Udgam Labs

UDGAM LABS · Speech-to-text model · about 56M parameters · part of the Shruti family

Shruti Bodo

Bodo and English in one 29.7 MB file. On Bodo conversations, about 27% fewer errors than IndicConformer Bodo, a model almost five times its size. Bodo comes out in Devanagari, and about half of the English words stay in English letters: आंनि फिसाया गुवाहाटीयाव फरायो दिनै hostel fee होनांगौ. It runs on a phone, a laptop or in a browser, with no server and no internet connection. On a 2021 Samsung Galaxy F62 it transcribes about 11x faster than real time using 64 MB of memory.

The scope matters. On DiarBench (held out, all 112 usable turns from 25 conversations, 97 of them with English words), counting English words only in English letters, its word error rate is 39.9 against IndicConformer Bodo's 55.0, and that holds by conversation and with script ignored. Against the native reference on the same turns IndicConformer Bodo is ahead (46.9 vs 51.5), and on IndicVoices valid too (28.6 vs 34.5). It is the one rival we measured. No Bodo reader has reviewed this output yet.

Shruti Bodo is part of the Shruti family, one small model per language, and is built on Cactus Whistle (Apache-2.0) via Shruti Hindi: we retrained all its weights on Bodo and English speech and added 400 Bodo vocabulary pieces.

Shruti (श्रुति) is Sanskrit for "that which is heard".

Try it: on udgamlabs.com, on your own device · demo on Hugging Face · Code and examples: github.com/udgamlabs/shruti

An example of how it writes, from a test clip read by an AI voice, not real speech. It is the phone's unedited output, and no Bodo speaker has checked it:

आंनि फिसाया गुवाहाटीयाव फरायो दिनै hostel fee होनांगौ
Developer Udgam Labs
Base model Shruti Hindi (Udgam Labs), built on Cactus Whistle (Cactus Compute); both Apache-2.0
Parameters About 56M (55,722,313; 8 encoder + 8 decoder layers, width 512)
File shruti-bodo.cact, 29.7 MB (4-bit weights, 8-bit activations) for the Cactus needle engine
Input / output 16 kHz audio of any length → text; Bodo in Devanagari, English words in lowercase Latin when it keeps them in English
Languages Bodo, English, and Bodo mixed with English. Other languages have their own Shruti models
Runtime Cactus needle engine (Apache-2.0), native and WebAssembly; we measured it on a Mac, an Android phone and that phone's Chrome
Licence Apache-2.0 for this model; see the data section for the terms of its training data

Quick start

pip install cactus-needle
hf download udgamlabs/shruti-bodo shruti-bodo.cact config.json --local-dir .
from needle import Whistle

model = Whistle("shruti-bodo.cact")
print(model.transcribe("clip.wav"))   # Bodo or English is detected automatically

The cactus-needle Python package sends anonymous usage counts by default; set NEEDLE_TELEMETRY=0 to turn that off. Command line: ./needle --model shruti-bodo.cact --audio clip.wav with the needle binary for your platform from Cactus-Compute/needle3. In the browser, the wasm/ build of the same engine runs it inside a web page; udgamlabs.com/models/shruti/bodo is a working page.

Results

Word error rate (%, lower is better), the same clips and scorer for every model; Shruti Bodo in its on-device engine on a Mac. Measured 3 November 2026. Size is the file as published by its makers.

Model File size IndicVoices valid DiarBench, English in English DiarBench, native
Shruti Bodo 29.7 MB 34.5 39.9 51.5
IndicConformer Bodo (int8) 137.7 MB 28.6 55.0 46.9

How to read this. IndicVoices valid is IndicVoices' own held-out split: its speakers are kept out of training and its sentences blocked, but it is the same source as our training data, so it flatters us. DiarBench is real conversation from outside it: 112 turns from 25 conversations, 1,592 reference words, 409 of them English, in 97 turns. The "English in English" column scores against references that write English words in English (Latin script), and English words count only if written in English letters; the native column scores against references that write those English words in Devanagari.

Paired 95% intervals below are Shruti Bodo minus the other model, in word error points (1,000 resamples of clips; "by conversation" resamples whole conversations). A negative number means Shruti Bodo made fewer errors; an interval that includes 0 shows no lead either way.

  • IndicConformer Bodo: IndicVoices valid +3.47 to +8.51 by clip; DiarBench native +1.77 to +7.65 by clip, +1.28 to +8.03 by conversation, +2.62 to +8.40 with script ignored; DiarBench English in English -19.42 to -10.63 by clip, -19.89 to -10.54 by conversation, -17.42 to -8.43 with script ignored.
  • English words in English letters: 50.4% of DiarBench's 409 English words, on 112 turns. IndicConformer Bodo writes none.
  • One file for two languages: Shruti Bodo also transcribes English: LibriSpeech test-clean 5.99 (Shruti Hindi: 5.95).
  • Silence: 0 words invented on 100 silent clips.

Other Bodo speech models exist that we have not measured, and these results cover only the models listed here.

Speed and memory (offline): Samsung Galaxy F62 (2021, 6 GB RAM), native engine, 10.9x faster than real time, 64 MB peak memory (20 clips, 148.5 s of audio; slowest clip 3.6x). In that phone's Chrome, on 4 lines played into the page, it took 1.1-1.6 s on the device for 7.8-9.1 s of speech.

Where it falls short

  • One rival measured. Whisper, SraVaani-1.0, Dolphin and Vosk do not list Bodo. Other Bodo models exist that we have not measured.
  • The native reference shows the gap. IndicConformer Bodo is ahead on DiarBench native (46.9 vs 51.5) and on IndicVoices valid (28.6 vs 34.5). Character errors: DiarBench 28.99% vs 14.58%, IndicVoices valid 14.75% vs 8.34%.
  • No independent read test. IndicVoices valid shares a source with our training data, and no independent Bodo read set was available.
  • English words in Devanagari: about 102 of DiarBench's 409 by automatic alignment (france as फ्रेन्स). DiarBench also glosses some local names in Latin, so a correct native spelling can score as an error.
  • Browser: tested on 4 test clips only, played into the page on one phone's Chrome with the language set. All 4 came out in Devanagari. These are test clips read by an AI voice, not real speech. Not tested with a live microphone. On the other Shruti languages where we measured it, plain English loses a little accuracy with the language set.
  • No Bodo reader has reviewed this output yet.
  • Loud noise: Shruti models sometimes repeat a phrase over and over in loud noise (measured on Shruti Hindi-family models, not on Bodo).
  • Not tested on Bodo: noise, music, far-away or speaker-played audio, Linux, Windows and iOS. No punctuation; numbers come out as words.

How it was trained

  • Start: Shruti Hindi (itself a full fine-tune of Cactus Whistle). We added 400 Bodo vocabulary pieces and used Shruti Hindi's language tag for Bodo, then trained all weights with 4-bit quantisation-aware training.
  • Data: Bodo speech, with English words kept in English where the dataset marks them, plus English from Shruti Hindi's own training data. Test sentences were removed.
Source Licence
AI4Bharat IndicVoices, Bodo CC-BY-4.0
English from Shruti Hindi's training data: LibriSpeech, Mozilla Common Voice 17 English, AI4Bharat NPTEL CC-BY-4.0, CC0, CC-BY-4.0

Intended use and limitations

For transcribing Bodo and English on devices where privacy, cost or connectivity rule out a cloud service: voice notes, dictation, captions, field apps. If accuracy matters more than size, use a larger model. Not for high-stakes use without human review. Accuracy drops on noisy audio, strong accents, rare names, numbers and long technical English.

Licence

Apache-2.0 for this model. Shruti Bodo is a modified version of Shruti Hindi (Udgam Labs) and of Cactus Whistle by Cactus Compute (both Apache-2.0); see NOTICE. That licence covers this model, not its training data: the data section above gives each source's terms. Please credit the datasets if you build on it.

Citation

@misc{udgamlabs2026shrutibodo,
  title  = {Shruti Bodo: offline speech-to-text for Bodo and English in 29.7 MB},
  author = {{Udgam Labs}},
  year   = {2026},
  url    = {https://huggingface.co/udgamlabs/shruti-bodo}
}

About Udgam Labs. Udgam Labs is an independent AI research lab. We work from first principles: before we build, we understand why things work, whether we are training a model, fine-tuning one or applying AI to a new problem. Udgam (उद्गम) is Sanskrit for origin. udgamlabs.com

Downloads last month
4
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for udgamlabs/shruti-bodo

Finetuned
udgamlabs/Shruti
Finetuned
(22)
this model

Datasets used to train udgamlabs/shruti-bodo

Space using udgamlabs/shruti-bodo 1

Collection including udgamlabs/shruti-bodo

Article mentioning udgamlabs/shruti-bodo