Shruti Bengali · Udgam Labs

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

Shruti Bengali

Shruti Bengali turns Bengali and English speech into text, offline, from one 29.7 MB file. Bengali comes out in Bengali script and English words stay in English, the way people actually type: বাচ্চাদের রবীন্দ্রসঙ্গীতের rehearsal শনিবার বিকেল চারটে হবে. It runs on a phone, a laptop or inside a web page, with no server and no internet connection. On a 2021 Samsung Galaxy F62 it transcribes 12.6x faster than real time using 64 MB of memory.

On everyday Bengali conversations that mix in English, scored with the English words written in English letters, it makes fewer errors than Vosk Bengali (90 MB) and IndicConformer Bengali (137.7 MB), Bengali-only models three and five times its size. On read Bengali both of them are more accurate (see below). Shruti Bengali is the Bengali member of the Shruti family, next to Shruti Hindi, Shruti Marathi and Shruti Tamil, and is built on Cactus Whistle (Apache-2.0) via Shruti Hindi: we retrained all its weights on openly licensed Bengali and English speech and added 700 Bengali vocabulary pieces.

Shruti (শ্রুতি) is Sanskrit for "that which is heard".

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

Audio (Bengali with English, AI voice)                Shruti Bengali writes (in the phone's browser, unedited)
"...রবীন্দ্রসংগীতের rehearsal শনিবার..."    ->  পঁচিশে বৈশাখের অনুষ্ঠানের জন্য বাচ্চাদের রবীন্দ্রসঙ্গীতের rehearsal শনিবার বিকেল চারটে হবে
"কাল রাতের derby টা দেখলি?..."            ->  কাল রাতের ডারবিটা দেখলি শেষ মিনিটের গোলটা একদম অবিশ্বাস্য ছিল আমি তো চেয়ার থেকে লাফিয়ে উঠেছিলাম

(The first line shows two spelling differences: রবীন্দ্রসঙ্গীতের for রবীন্দ্রসংগীতের and চারটে for চারটেয়. The second shows a real error of a common kind: "derby" and "goal" written in Bengali script.)

Developer Udgam Labs
Base model Shruti Hindi (Udgam Labs), built on Cactus Whistle (Cactus Compute); both Apache-2.0
Parameters 55.9M (8 encoder + 8 decoder layers, width 512)
File shruti-bengali.cact, 29.7 MB (4-bit weights, 8-bit activations) for the Cactus needle engine
Input / output 16 kHz audio of any length → text; Bengali in Bengali script, English words in lowercase Latin
Languages Bengali, English, and Bengali mixed with English. For Hindi use Shruti Hindi; for Marathi, Shruti Marathi; for Tamil, Shruti Tamil
Runtime Cactus needle engine (Apache-2.0): macOS, Linux, Windows, Android, iOS, WebAssembly
Licence Apache-2.0

Quick start

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

model = Whistle("shruti-bengali.cact")
print(model.transcribe("clip.wav"))   # Bengali 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-bengali.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 is a working page.

Results

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

Model File size FLEURS (read) Kathbath test-unknown (read) DiarBench, English in English (conversation, held out) DiarBench, native reference
Shruti Bengali 29.7 MB 29.9 22.2 36.0 41.8
Whisper tiny 43.5 MB 361.6 403.7 540.9 543.2
Whisper base 81.8 MB 176.7 214.5 339.9 341.6
Vosk Bengali int8 (third-party copy) 28.6 MB 20.9 22.4 43.3 39.1
Vosk Bengali (Zipformer) 90.0 MB 20.8 21.65 42.8 38.5
Dolphin base (int8) 103.7 MB 41.1 45.9 93.0 93.2
IndicConformer Bengali (int8) 137.7 MB 20.65 12.07 39.3 34.8
Dolphin small (int8) 249.7 MB 40.3 33.6 99.4 99.4
Whisper small 264.5 MB 184.3 173.2 167.1 167.9
SraVaani-1.0 908.8 MB 15.7 11.3 34.6 27.1

DiarBench is real conversation that mixes in English. The "English in English" column scores against references that write English words in English (Latin script), as Shruti Bengali does; the native column drops the English words from the reference. FLEURS and Kathbath are read Bengali.

  • Conversations that mix in English: Shruti Bengali makes fewer errors than Vosk Bengali (36.0 vs 42.8; paired 95% interval of the difference -9.3 to -4.3 points) and IndicConformer Bengali (36.0 vs 39.3; -5.5 to -1.0). The much larger SraVaani-1.0 is level with it (34.6). On the native reference, all three are ahead.
  • English inside Bengali: Shruti Bengali writes 49.7% of DiarBench's English words in English; Vosk Bengali and IndicConformer Bengali write none (0%), and the other models above 15% or fewer.
  • One file for two languages: Vosk Bengali and IndicConformer Bengali are Bengali-only. Shruti Bengali also transcribes English: LibriSpeech test-clean 6.30 (Shruti Hindi: 5.95), Svarah (Indian English) 23.33.
  • Read Bengali: on Kathbath it is level with Vosk Bengali (22.2 vs 21.65, paired interval -1.6 to +2.7); on FLEURS both rivals are clearly ahead. Under 100 MB, Whisper tiny and base get more Bengali words wrong than right (Whisper adds words, so its rates pass 100%).
  • Silence: 0 words invented on 100 silent clips.
  • Held-out sets: we did not train on FLEURS or DiarBench, or on Kathbath's unseen-speaker test set.
  • Sizes: a third-party int8 copy of Vosk Bengali is 28.6 MB, slightly smaller than Shruti Bengali. We measured it on the same clips (3 Nov 2026): FLEURS 20.9, Kathbath 22.4, DiarBench (English in English) 43.3. It is clearly more accurate on read Bengali; on mixed conversations Shruti Bengali makes fewer errors and it writes no English words in English.

Speed and memory (offline): Samsung Galaxy F62 (2021, 6 GB RAM), native engine, 12.6x faster than real time, 64 MB peak memory (20 clips). In that phone's Chrome, the page reports about 4-4.5 s on the device for 8.4-9.6 s of speech.

Where it falls short

  • Read Bengali accuracy. Vosk Bengali (3x larger) makes about 30% fewer errors on FLEURS; IndicConformer Bengali (about 5x larger) about 31% fewer on FLEURS and 46% fewer on Kathbath; SraVaani-1.0 (30x larger) is ahead on every set.
  • Conversations on the native reference. When English words are dropped from the reference, Vosk Bengali (38.5) and IndicConformer Bengali (34.8) are ahead of Shruti Bengali (41.8).
  • English words in Bengali script: only about half of the English words come out in English letters; others are written in Bengali script ("derby" as ডারবিটা, "goal" as গোলটা, "metro" as মেট্রোতে). A Bengali place name can come out in English (কলেজ স্ট্রিটে as "college street এ").
  • Spelling variants count as errors and are common (বেরোব/বেরোবো, রবীন্দ্রসংগীত/রবীন্দ্রসঙ্গীত), and endings can be dropped (চারটেয় as চারটে).
  • Names it has never heard are spelt by sound. Not tested: 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 700 Bengali vocabulary pieces and used Shruti Hindi's language tag for Bengali, then trained all weights with 4-bit quantisation-aware training.
  • Data: openly licensed Bengali speech, with English words kept in English where the dataset marks them, plus English from Shruti Hindi's own training data. Test speakers and test sentences were removed.
Source Licence
AI4Bharat IndicVoices, Bengali CC-BY-4.0
AI4Bharat Kathbath, Bengali CC-BY-4.0
SPRING-INX Bengali R1 and R2 (SPRING Lab, IIT Madras) CC-BY-4.0
ARTPARK-IISc Vaani, Bengali (transcribed part) 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 Bengali and English speech on devices where privacy, cost or connectivity rule out a cloud service: voice notes, dictation, voice commands, captions, field apps. Not for high-stakes use (medical, legal) without human review. Accuracy drops on noisy audio, strong accents, rare names, numbers and long technical English.

Licence

Apache-2.0. Shruti Bengali is a modified version of Shruti Hindi (Udgam Labs) and of Cactus Whistle by Cactus Compute (both Apache-2.0); see NOTICE. The training data licences are listed above; please credit the datasets if you build on it.

Citation

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

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
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for udgamlabs/shruti-bengali

Finetuned
udgamlabs/Shruti
Finetuned
(4)
this model

Datasets used to train udgamlabs/shruti-bengali

Space using udgamlabs/shruti-bengali 1

Collection including udgamlabs/shruti-bengali