Shruti: every language
Models · Shruti · 29.7 MB · released 7 November 2026

Shruti Manipuri

Speech to text for Manipuri and English, on your device, with no server.

Try it now · in your browser · free, no login

Speak Manipuri, English or both. Shruti Manipuri 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.

Load Shruti, then press Record and speak Manipuri, English or both.

Speak Manipuri, English or both. English words can stay in English (Latin script) and are underlined here; Manipuri is written in Meetei Mayek, not Bengali 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 Manipuri · 29.7 MB · Manipuri and English · 7 November 2026

Manipuri in Meetei Mayek and English in one 29.7 MB file that runs on your device.

Shruti Manipuri writes Manipuri in Meetei Mayek, and about 60% of DiarBench’s 243 English words stay in English letters: ꯍꯦꯡ ꯑꯌꯨꯛ ꯈꯨꯃꯟ ꯃꯄꯥꯛꯇ boxing practice ꯂꯩꯒꯅꯤ. On 44 conversation turns (DiarBench, held out), counting English words only in English letters, it has fewer errors than IndicConformer Manipuri (48.2 against 65.4), too few turns to be more than a pointer. It writes 60.9% of DiarBench’s 243 English words in English letters; IndicConformer Manipuri writes none. It runs offline on a five-year-old phone, about 11× faster than real time in 64 MB of memory with the native engine, and it invented no words on 100 silent clips.

ModelFileIndicVoices validDiarBench, English in EnglishDiarBench, native
Shruti Manipuri29.7 MB36.048.266.0
IndicConformer Manipuri137.7 MB31.265.453.5

Word error rate %, lower is better; DiarBench 44 turns, the same scorer for every model, measured 3 November 2026. 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: 44 turns from 20 conversations, 815 reference words, 243 of them English, in 39 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 Meetei Mayek. Other Manipuri speech models exist that we have not measured; these results cover only the models listed here.

Where it falls short

  • A small test. 44 turns from 20 conversations; the interval is wide (-26.78 to -7.98), and no script-ignored check exists for Meetei Mayek.
  • The native reference shows the gap. DiarBench native 66.0 vs 53.5. Character errors there 40.29% vs 17.48%, the highest in this group. IndicVoices valid 36.0 vs 31.2.
  • Meetei Mayek only. It does not write Manipuri in Bengali script.
  • Sometimes the whole line comes out in English letters: 4 of 200 IndicVoices clips and 2 of 44 DiarBench turns, with the engine’s own language choice.
  • English words in Meetei Mayek: about 33 of DiarBench’s 243 by automatic alignment. DiarBench also glosses some local names in Latin, so a correct native spelling can score as an error.
  • In a browser it was tested on 4 test clips read by an AI voice, not real speech, played into this page on one phone’s Chrome, with the language set. All 4 came out in Meetei Mayek. Not yet tested with a live microphone. On the other Shruti languages where we measured it, plain English loses a little accuracy this way.
  • No Manipuri 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 Manipuri).
  • Not tested on Manipuri: noise, music, far-away or speaker-played audio, Linux, Windows and iOS. No punctuation; numbers come out as words.

Try Shruti Manipuri Shruti Manipuri 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-manipuri.cact, from Shruti Manipuri's Hugging Face repo
./needle --model shruti-manipuri.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-manipuri.cact")
print(shruti.transcribe("clip.wav")["text"])
  • Android, iOS and the web: call the engine’s C API. needle_load takes the model file, needle_transcribe a clip, and needle_stream_transcribe_process about 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=0 to 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 Manipuri’s model card on Hugging Face lists its training datasets and their licences.

Every Shruti language