v1 · Hindi, English, Hinglish · Apache 2.0

India's speech to text.

AksharSTT writes down Hindi, English and the Hinglish in between, on an ordinary CPU and without the internet. The whole model is one 29.5 MB file that you can download, ship and keep. Hindi is the first Indian language. More are on the way.

akshar-v1.cact · 29.5 MB · Hugging Face · files and checksums

Languages
Hindi, English, Hinglish
Size
29.5 MB, 4-bit
Runs on
Any CPU, offline
Made by
ByteKnot Labs

जैसे कि आप देख सकते हैं workspace में पांच tabs हैं

MUCS test set · Hinglish11 words with timings · 5.55 s of audio · transcribed in 0.105 s on a laptop CPU
Why AksharSTT

Made for the way India talks.

  • Hinglish in one line

    Hindi stays in Devanagari and English words stay in English, in the same sentence, the way people type it. Numbers come out as words and there is no punctuation, so your app formats the text its own way.

  • Nothing leaves the device

    The model runs where the audio is. It works on a train, in a clinic with bad signal, or behind a company firewall.

  • Fast on a plain CPU

    96 times faster than real time on 12 threads of a Ryzen 9 7900X, in under 150 MB of memory. Each clip above took a laptop CPU about a tenth of a second.

  • Timing for every word

    Every word comes with when it was said and how sure the model was. That is what captions, search inside recordings and highlighting need.

  • One small file

    4-bit weights in a single 29.5 MB file for the needle engine from Cactus Compute. Small enough to ship inside an app.

  • Open weights

    Apache 2.0, with the full precision weights and every training record on Hugging Face. Use it, train it further, sell what you build.

Try it

Hear it for yourself.

Record a few seconds or drop in a clip. Our demo server runs the same files you can download, and you can pick which version answers or run them all.

Connecting to the demo server
Language
Choose Hindi for Hinglish too.
Audio
Connecting to the demo server. Then record or drop in a clip, and the transcript appears here with the time each word was spoken.
Your recording is sent to our demo server to be transcribed. Use clips you have the right to share.
Accuracy

Honest numbers, including where we lose.

Word error rate is the share of words a model gets wrong, so lower is better. Every number here comes from one harness, on one machine, on the full test sets. Shruti by Udgam Labs is the yardstick: the open model AksharSTT learned from, and the one we set out to beat.

Word error rate in percent per test set, AksharSTT v1 and Shruti
Test setClipsShrutiAksharSTT v1Difference
010203040
MonsoonUnscripted two person phone conversations75320.5421.781.24 behind
FLEURSHindi sentences read aloud41820.2119.370.84 ahead
LahajaHindi from speakers with accents from across India6,15226.2926.490.20 behind
MUCS 2021Technical tutorials that switch between Hindi and English3,13635.2634.410.85 ahead
SvarahEnglish spoken with Indian accents6,65622.4524.682.23 behind
LibriSpeechEnglish audiobooks, test clean2,6205.956.920.97 behind
Mean of the six21.7822.280.50 behind

How we measured: word error rate in percent after the normaliser nfc-lower-punct2space-v1, decoding with needle engine build 3.3.3 (cactus-needle 3.2.8) and its default 5 beams, language flag hi for the Hindi and Hinglish sets and en for the English ones. Monsoon is scored with OIWER, which accepts any spelling its references list for a word. Both models ran on the same AMD Ryzen 9 7900X. The harness and every number are in the akshar repository.

2 of 6

test sets where v1 already beats Shruti: FLEURS Hindi and the MUCS Hinglish tutorials. On Lahaja it is 0.2 behind.

2.23

points behind on Indian accented English (Svarah), its weakest set. Phone calls (Monsoon) are 1.24 behind.

0

words written on 100 clips of silence and background noise. Shruti also writes none.

Versions

Every version, scored the same way.

Each one is measured on the same clips, so you can see exactly what changed. The big number is the mean word error rate over the six test sets.

  • AksharSTT v1

    7 November 2026 · 29.5 MB, 4-bit · 524 hours

    22.28mean WER

    Ahead of Shruti on FLEURS Hindi and MUCS Hinglish. The last training step learned from human transcripts.

    Download from Hugging Face
  • akshar v0

    6 November 2026 · 29.5 MB, 4-bit · 364 hours

    23.11mean WER

    The first version, trained only on the teacher's transcripts, on less data.

  • akshar lite v0

    6 November 2026 · 20.4 MB, 2-bit with a 4-bit encoder · 364 hours

    24.03mean WER

    A third smaller, for apps with a tight size budget. A lite version of v1 comes next.

Word error rate in percent per version and test set
VersionMonsoonFLEURSLahajaMUCSSvarahLibriSpeechMean
AksharSTT v121.7819.3726.4934.4124.686.9222.28
akshar v023.5320.9227.7034.7524.816.9823.11
akshar lite v024.7921.7828.1835.0626.457.9124.03
Shruti, for reference20.5420.2126.2935.2622.455.9521.78
The model

Four steps from Whistle to AksharSTT.

About 55 million parameters, trained over two nights on a single RTX 5080.

  1. 01

    Teach it Devanagari

    Whistle, the open model from Cactus Compute that AksharSTT starts from, was built for English and European languages. We gave it the 714 Devanagari word pieces and the Hindi tag from Shruti's tokenizer, each new piece starting from the bytes it replaces.

  2. 02

    Learn from a teacher

    56,000 updates on up to 364 hours of audio, with Shruti's transcripts as targets and its full predictions as a second signal. The weights were 4-bit from the first update, so the model learned to live with them.

  3. 03

    Hear more of India

    64,000 more updates on 524 hours from nine sources, adding the rest of Kathbath, Hindi lectures from NPTEL and more of IndicVoices. Phone calls improved the most.

  4. 04

    Learn from people

    2,400 last updates where the targets are the datasets' own human transcripts, converted to the same output style. That took the mean error from 22.45 to 22.28.

Architecture
Whistle encoder and decoder transformer, 8 + 8 layers, width 512
Parameters
About 55 million
Precision
4-bit weights and 8-bit activations, trained that way from the start
File
akshar-v1.cact, 29.5 MB, for the needle engine
Tokenizer
Whistle's, plus 714 Devanagari pieces and a Hindi language tag
Output
Hindi in Devanagari, English words in lowercase Latin, numbers as words, no punctuation
Speed and memory
96 times real time on 12 threads of a Ryzen 9 7900X, under 150 MB
Training
About 11.5 GPU hours on one RTX 5080 over two nights
Training data

524 hours of open speech data.

Nine sources, mostly Hindi, with Indian English lectures and Hinglish tutorials, all published under licences that allow commercial use. Every clip that matched a test clip, by its audio or by its text, was removed before training, so the scores above are on speech the model never heard.

Training data
DatasetSpeechHoursLicence
KathbathAI4Bharat, HindiSentences read aloud and recorded on phones135CC BY 4.0
MUCS 2021Hindi and EnglishTechnical tutorials that switch between Hindi and English92CC BY SA 4.0
IndicVoicesAI4Bharat, HindiRead, spontaneous and conversational speech from many districts83CC BY 4.0
Rural Women ASR v2AI4Bharat, HindiWomen in rural India speaking freely80CC BY 4.0
NPTELAI4Bharat, HindiUniversity lectures in Hindi, full of English technical terms60CC BY 4.0
NPTELAI4Bharat, EnglishUniversity lectures in Indian English53CC BY 4.0
LibriSpeechpart of train clean 100English audiobooks22CC BY 4.0
FLEURSGoogle, HindiWikipedia sentences read aloud3CC BY 4.0
Silence and noisegeneratedClips with no speech, so the model learns to stay quiet2Ours
Total1% held out for validation, 524 hours trained on530
Languages

Hindi first. The rest of India next.

Version 1 understands Hindi, English and the Hinglish in between. We are bringing the same approach to more Indian languages, one at a time, and each will ship with its scores in public.

  • हिन्दीAvailableHindi
  • EnglishAvailableIndian English
  • हिन्दी + EnglishAvailableHinglish
  • मराठीComingMarathi
  • বাংলাComingBengali
  • தமிழ்ComingTamil
  • తెలుగుComingTelugu
  • ગુજરાતીComingGujarati
  • ಕನ್ನಡComingKannada
  • മലയാളംComingMalayalam
  • ਪੰਜਾਬੀComingPunjabi
  • ଓଡ଼ିଆComingOdia
Developers

Run it on your own machine.

The model file runs on the needle engine from Cactus Compute. Point it at the file from Hugging Face and you have a transcript in a few lines of Python.

transcribe.py
# pip install cactus-needle==3.2.8 huggingface_hub
import os
os.environ.setdefault("NEEDLE_TELEMETRY", "0")  # needle reports usage unless these are set
os.environ.setdefault("DO_NOT_TRACK", "1")

from huggingface_hub import hf_hub_download
from needle import Whistle

model = Whistle(hf_hub_download("byteknotlabs/AksharSTT-V1", "akshar-v1.cact"))
result = model.transcribe("speech.wav", language="hi")
print(result["text"])
your own HTTP API
# with the akshar server package running on this machine
curl http://localhost:8765/v1/transcribe \
  -F [email protected] \
  -F model=akshar-v1 \
  -F language=hi
Good to know

The honest list. Read it before you build on it.

  • Indian English is its weakest spot

    On Svarah it is 2.2 points behind Shruti. It has 53 hours of Indian English lectures to learn from today, and more accented English is on our list.

  • Plain text out

    No punctuation, and numbers as words: "नौ बजे" rather than "9:00". Formatting is left to your app, which knows its own rules.

  • Tell it the language

    Use hi for Hindi and Hinglish and en for English. Detection is there, but every score on this page was measured with the language set.

  • Borrowed words can go either way

    English words Hindi has borrowed, like time or phone, sometimes come out in Devanagari and sometimes in Latin letters, depending on how the training data wrote them.

  • Measured on Linux so far

    Our numbers come from x86 Linux machines. The needle engine runs on other platforms too, but we have not published measurements there yet.

  • Two languages for now

    It understands Hindi and English only, so other Indian languages will not transcribe well until they ship.

FAQ

Questions people ask first.

Is AksharSTT free to use?

Yes. The weights are released under Apache 2.0, which allows commercial use. The NOTICE file on Hugging Face credits the models and datasets it is built from.

Does it need the internet?

No. Once the model file is on the machine, transcription happens there. The demo on this page is the exception: it sends your clip to our server so you can try it without installing anything.

How is it related to Whistle and Shruti?

Whistle, an open model from Cactus Compute, is the starting point for the architecture and the weights. Shruti, from Udgam Labs, was the teacher during training. AksharSTT has its own weights and its own training recipe. All three are Apache 2.0.

What hardware does it need?

A CPU. On 12 threads of a Ryzen 9 7900X it runs 96 times faster than real time in under 150 MB of memory, and a laptop CPU handles the clips at the top of this page in about a tenth of a second each.

Can I train it further on my own data?

Yes. The full precision weights are on Hugging Face in the format our training code reads, and the code is on GitHub.

When will other Indian languages arrive?

We are working on them now and will not promise dates we cannot keep. Each language will ship with its scores on public test sets, like Hindi.

Why does it write Hindi and English in different scripts?

Because that is how people text. A Hinglish sentence written fully in Devanagari or fully in Latin letters is harder to read and harder to search.

Start with a recording.

Thirty seconds of your own voice tells you more than any table on this page.