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

Shruti Gujarati

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

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

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

The language is detected for you. English words stay in English (Latin script) and are underlined here; Gujarati is written in Gujarati 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 Gujarati · 29.7 MB · Gujarati and English · 4 November 2026

On Gujarati conversations that mix in English, fewer errors than every model we measured, including SraVaani-1.0, a model about 30 times its size.

Shruti Gujarati writes Gujarati in Gujarati script and keeps English words in English, the way people type: દસ વાગ્યે party plot પર મળીએ. On real Gujarati 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 Gujarati (138 MB): DiarBench 28.5 against 32.4 and 44.9, same clips and scorer, 2 November 2026. It writes about half of the English words in English letters (50.4%); IndicConformer Gujarati, Vosk Gujarati, SraVaani-1.0 and the Whisper Gujarati fine-tunes write none. It makes fewer errors than Vosk Gujarati (108 MB) on every test we ran. 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.

ModelFileDiarBenchFLEURSKathbath
Shruti Gujarati29.7 MB28.527.920.7
Whisper tiny43.5 MB469.1205.9222.9
Whisper base81.8 MB278.6191.1189.4
Dolphin-base int8103.7 MB77.674.764.0
Vosk Gujarati (small)108.1 MB71.936.528.0
IndicConformer Gujarati137.7 MB44.918.814.5
Dolphin-small int8249.7 MB92.961.647.3
Whisper small264.5 MB131.8131.9136.0
Whisper-base Gujarati fine-tune (vasista22)290.5 MB72.532.329.8
SraVaani-1.0908.8 MB32.416.112.5
Whisper-small Gujarati fine-tune (vasista22)967.1 MB65.426.835.1

Word error rate %, lower is better; 200 clips per set, 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 Gujarati. On DiarBench every gap holds in a paired bootstrap, including SraVaani-1.0 (interval -5.66 to -2.14 points). Whisper adds words, so its rates pass 100%. Other Gujarati speech models exist that we have not measured; these results cover only the models listed here.

Where it falls short

  • On read Gujarati, IndicConformer Gujarati (almost 5× larger) makes about 33% fewer errors on FLEURS (18.8 against 27.9) and 30% fewer on Kathbath (14.5 against 20.7). SraVaani-1.0 (about 30× larger) is ahead on every read set, and the Whisper-small Gujarati fine-tune is level on FLEURS.
  • On conversations scored against the native reference, which drops the English words, SraVaani-1.0 is ahead (22.8 against 33.6).
  • Some English words come out in Gujarati script (party plot as પાર્ટી પ્લોટ, stock as સ્ટોક). Real errors happen (ઉછીની, on loan, as ઓછીની), and joined words and spelling variants count as errors.
  • 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 Gujarati).

Try Shruti Gujarati Shruti Gujarati 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-gujarati.cact, from Shruti Gujarati's Hugging Face repo
./needle --model shruti-gujarati.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-gujarati.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 Gujarati’s model card on Hugging Face lists its training datasets and their licences.

Every Shruti language