- Released v1
- Open weights
- Apache 2.0
- CPU only
- Offline
AksharSTT: speech to text for Hindi, English and Hinglish, on a CPU
One 29.5 MB file that turns speech into text on the processor you already have, with no GPU and no internet connection. It runs 96 times faster than real time on a desktop CPU, and every score is published, including where it loses.
v1 released 7 November 2026 · by the ByteKnot Labs AI Lab
One clip, start to finish
जैसे कि आप देख सकते हैं workspace में पांच tabs हैं11 words · 5.55 s of audio
AksharSTT in numbers
- Model file
- 29.5 MB
- 4-bit weights in a single file, small enough to ship inside an app.
- Speed
- 96×
- Faster than real time, on 12 threads of a Ryzen 9 7900X.
- Clip to text
- 0.105 s
- For 5.55 seconds of Hinglish speech, on a laptop CPU.
- Memory
- < 150 MB
- While transcribing. No GPU and no internet connection.
- Parameters
- 55M
- An encoder-decoder transformer, 8 + 8 layers.
- Word error rate
- 22.28%
- Mean over six public test sets. Lower is better.
What is AksharSTT?
AksharSTT is a speech-to-text model from the ByteKnot Labs AI Lab. It writes down Hindi, English and the Hinglish in between, with Hindi in Devanagari, English words in Latin letters, and a time and a confidence for every word. It runs offline on an ordinary CPU: the model is a single 29.5 MB file that transcribes 96 times faster than real time on a desktop processor, in under 150 MB of memory. Version 1 came out on 7 November 2026 with open weights under Apache 2.0, and its word error rate is published for six public test sets, including the ones where it loses.
What it is built from
Built on Whistle from Cactus Compute and trained with Shruti from Udgam Labs as its teacher, on open speech from AI4Bharat, Google and OpenSLR. All three models are Apache 2.0.
What it shows for client work
We trained, compressed and measured a model end to end on one consumer GPU over two nights. Client model work runs the same way: an evaluation set first, the smallest model that measures the same, and weights the owner keeps.
Why AksharSTT
Built for how people in India speak.
Hinglish the way people type it
Hindi words come out in Devanagari and English words in Latin letters, in the same sentence. Numbers are written as words and punctuation is left out, so your app formats the text its own way.
Runs where the audio is
Once the file is on the machine, nothing is sent anywhere. It works on a train, in a clinic with poor signal or behind a company firewall.
Low latency on a plain CPU
A 5.55-second clip becomes text in about a tenth of a second on a laptop, and a desktop processor runs it 96 times faster than real time. No GPU, no queue and no network round trip.
A time for every word
Each word carries when it was said and how sure the model was, which is what captions, search inside recordings and word highlighting need.
Small enough to ship
4-bit weights in one 29.5 MB file, plus a 20.4 MB lite version for apps with a tight size budget. It fits inside an app download.
Open down to the training records
The weights are Apache 2.0, and the full-precision checkpoint, training code, data pipeline and the evaluation harness behind every score are public.
Size and speed
A lightweight model with low latency on an ordinary CPU.
The weights were 4-bit from the first training update, so the model learned to work at that precision instead of being squeezed afterwards. That is how about 55 million parameters fit in a 29.5 MB file, 7.5 times smaller than the 222.1 MB full-precision checkpoint.
On 12 threads of an AMD Ryzen 9 7900X it runs 96 times faster than real time in under 150 MB of memory, so an hour of audio takes about 38 seconds. On a laptop CPU, a 5.55-second clip is text in 0.105 seconds, with no GPU, no queue and no network round trip.
- Full-precision weights, for further training222.1 MB
- AksharSTT v1, 4-bit: the file you ship29.5 MB
- akshar lite v0, 2-bit with a 4-bit encoder20.4 MB
Accuracy
Every score in public, including where it loses.
Word error rate is the share of words a model gets wrong, so lower is better. AksharSTT is measured beside Shruti from Udgam Labs, the open model AksharSTT learned from, and the one it set out to beat. It is ahead on FLEURS Hindi and MUCS 2021, and Svarah is its weakest set.
- AksharSTT v1
- Shruti, the teacher
- Mean over six test sets
- 22.28%
- Shruti: 21.78%, so AksharSTT is 0.50 behind.
- Ahead of its teacher
- 2 of 6
- FLEURS Hindi and MUCS 2021.
- Words written on silence
- 0
- On 100 clips of silence and background noise.
| Test set | Clips | Shruti | AksharSTT v1 | Difference |
|---|---|---|---|---|
| MonsoonUnscripted phone calls between two people | 753 | 20.54 | 21.78 | 1.24 behind |
| FLEURS HindiHindi sentences read aloud | 418 | 20.21 | 19.37 | 0.84 ahead |
| LahajaHindi from speakers with accents from across India | 6,152 | 26.29 | 26.49 | 0.20 behind |
| MUCS 2021Technical tutorials that switch between Hindi and English | 3,136 | 35.26 | 34.41 | 0.85 ahead |
| SvarahEnglish spoken with Indian accents | 6,656 | 22.45 | 24.68 | 2.23 behind |
| LibriSpeechEnglish audiobooks, test-clean | 2,620 | 5.95 | 6.92 | 0.97 behind |
| Mean of the six | 21.78 | 22.28 | 0.50 behind |
How we measured. Word error rate is the share of words a model gets wrong, in per cent. Both models ran through one evaluation harness on the same AMD Ryzen 9 7900X, over the full test sets. Text is normalised with nfc-lower-punct2space-v1 and decoded by the needle engine (build 3.3.3, cactus-needle 3.2.8) with its default five beams, with the language set to 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. The harness and every number are in the akshar repository.
Versions
Every version, scored the same way.
Each version runs on the same clips, so the table shows exactly what changed between them.
AksharSTT v1
Current7 November 2026 · 29.5 MB, 4-bit · 524 hours of audio
22.28%
mean word error rate
Ahead of its teacher on FLEURS Hindi and the MUCS Hinglish tutorials. The last training step learned from human transcripts.
akshar v0
6 November 2026 · 29.5 MB, 4-bit · 364 hours of audio
23.11%
mean word error rate
The first version, trained only on the teacher's transcripts and on less data.
akshar lite v0
6 November 2026 · 20.4 MB, 2-bit with a 4-bit encoder · 364 hours of audio
24.03%
mean word error rate
About a third smaller, for apps with a tight size budget. A lite build of v1 is next.
| Version | Monsoon | FLEURS Hindi | Lahaja | MUCS 2021 | Svarah | LibriSpeech | Mean |
|---|---|---|---|---|---|---|---|
| AksharSTT v1 | 21.78 | 19.37 | 26.49 | 34.41 | 24.68 | 6.92 | 22.28 |
| akshar v0 | 23.53 | 20.92 | 27.70 | 34.75 | 24.81 | 6.98 | 23.11 |
| akshar lite v0 | 24.79 | 21.78 | 28.18 | 35.06 | 26.45 | 7.91 | 24.03 |
| Shruti, for reference | 20.54 | 20.21 | 26.29 | 35.26 | 22.45 | 5.95 | 21.78 |
How it was trained
Four steps, two nights, one consumer GPU.
- 1
Teach it Devanagari
AksharSTT starts from Whistle, an open model from Cactus Compute built for English and European languages. We added 714 Devanagari word pieces and a Hindi tag from Shruti's tokenizer, each new piece starting from the bytes it replaces.
- 2
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 work with them.
- 3
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
Learn from people
2,400 final updates against the datasets' own human transcripts, converted to the same output style. The mean word error rate fell from 22.45 to 22.28.
Model card
- Architecture
- Whistle encoder-decoder transformer, 8 + 8 layers, width 512
- Parameters
- About 55 million
- Precision
- 4-bit weights and 8-bit activations, trained that way from the first update
- Model file
- akshar-v1.cact, 29.5 MB, for the needle engine from Cactus Compute
- Full weights
- akshar-v1.safetensors, 222.1 MB, for further training
- Tokenizer
- Whistle's, plus 714 Devanagari pieces and a Hindi language tag
- Output
- Hindi in Devanagari, English words in lower-case Latin letters, numbers as words, no punctuation, and a time and confidence for each word
- Speed and memory
- 96 times real time on 12 threads of an AMD Ryzen 9 7900X, in under 150 MB
- Training compute
- About 11.5 GPU hours on one NVIDIA RTX 5080, over two nights
- Licence
- Apache 2.0, for the weights and the code
Built with
- Python
- Whistle
- needle engine
- Hugging Face
- Quantisation-aware training
- Knowledge distillation
Training data
524 hours of open speech, from 9 sources.
All nine sources are published under licences that allow commercial use. Every training clip that matched a test clip, by its audio or by its text, was removed first, so the scores are on speech the model never heard.
| Dataset | Speech | Hours | Licence |
|---|---|---|---|
| KathbathAI4Bharat, Hindi | Sentences read aloud and recorded on phones | 135 | CC BY 4.0 |
| MUCS 2021Hindi and English | Technical tutorials that switch between Hindi and English | 92 | CC BY-SA 4.0 |
| IndicVoicesAI4Bharat, Hindi | Read, spontaneous and conversational speech from many districts | 83 | CC BY 4.0 |
| Rural Women ASR v2AI4Bharat, Hindi | Women in rural India speaking freely | 80 | CC BY 4.0 |
| NPTELAI4Bharat, Hindi | University lectures in Hindi, full of English technical terms | 60 | CC BY 4.0 |
| NPTELAI4Bharat, English | University lectures in Indian English | 53 | CC BY 4.0 |
| LibriSpeechEnglish | Audiobooks, from train-clean-100 | 22 | CC BY 4.0 |
| FLEURSGoogle, Hindi | Wikipedia sentences read aloud | 3 | CC BY 4.0 |
| Silence and noiseByteKnot Labs, None | Generated clips with no speech, so the model learns to stay quiet | 2 | Ours |
| Total | 1% held out for validation, so 524 hours were trained on | 530 |
Languages
Hindi first. More Indian languages next.
Version 1 understands Hindi, English and the Hinglish between them. The same recipe is coming to more Indian languages, one at a time, each with its scores in public.
Available now
- हिन्दीHindi
- EnglishIndian English
- हिन्दी + EnglishHinglish
On the way
- मराठीMarathi
- বাংলাBengali
- தமிழ்Tamil
- తెలుగుTelugu
- ગુજરાતીGujarati
- ಕನ್ನಡKannada
- മലയാളംMalayalam
- ਪੰਜਾਬੀPunjabi
- ଓଡ଼ିଆOdia
Developers
A transcript in a few lines of Python.
The model file runs on the needle engine from Cactus Compute. Download it from Hugging Face and call it from Python, or run the akshar server package and send audio to it over HTTP from any language.
# 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"])# 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- Try it in your browser Record a few seconds or drop in a clip. The demo sends your clip to a server; the model itself runs offline.
- Model on Hugging Face The 29.5 MB file, the full-precision weights, the model card and the training records.
- Code on GitHub Training code, the data pipeline, the evaluation harness behind every score and the server package.
- The AksharSTT site Every version, the full accuracy tables, the developer guide and the licences.
Good to know
Read this before you build on it.
Indian-accented English is its weakest set
On Svarah it is 2.23 points behind Shruti. It has 53 hours of Indian English lectures to learn from so far, and more accented English is planned.
Plain text out
No punctuation, and numbers as words: “नौ बजे” rather than “9:00”. Formatting is left to your app.
Set the language
Use hi for Hindi and Hinglish and en for English. Detection exists, but every published score was measured with the language set.
Borrowed words can go either way
English words that Hindi has borrowed, such as 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
The published numbers come from x86 Linux machines. The engine runs on other platforms, but measurements there are not published yet.
Two languages for now
It understands Hindi and English only, so other Indian languages will not transcribe well until their own versions ship.
FAQ
AksharSTT questions
Last reviewed
What is AksharSTT?
AksharSTT is an open-weight speech-to-text model from ByteKnot Labs for Hindi, English and Hinglish. It runs offline on an ordinary CPU, the whole model is one 29.5 MB file, and it gives a time and a confidence for every word.
Does AksharSTT work offline?
Yes. Once the model file is on the machine, transcription happens there and nothing is sent anywhere. Only the browser demo on akshar.byteknotlabs.com sends your clip to a server, so you can try it without installing anything.
Can AksharSTT transcribe Hinglish?
Yes. It was trained on speech that switches between Hindi and English, and it writes it the way people type it: Hindi in Devanagari, English words in Latin letters. On the MUCS 2021 Hinglish tutorials its word error rate is 34.41%, against 35.26% for its teacher, Shruti.
How fast is AksharSTT on a CPU?
On 12 threads of an AMD Ryzen 9 7900X it runs 96 times faster than real time in under 150 MB of memory, so at that speed an hour of audio takes about 38 seconds. On a laptop CPU, a 5.55-second clip took 0.105 seconds.
How accurate is AksharSTT?
Its mean word error rate over six public test sets is 22.28%, half a point behind Shruti, the model it learned from. It is ahead on FLEURS Hindi and the MUCS Hinglish tutorials and behind on the other four, with Indian-accented English its weakest set. The harness and every number are public.
Is AksharSTT free for commercial use?
Yes. The weights and the code 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.
What hardware does AksharSTT need?
A CPU. It needs no GPU and no internet connection, and it uses under 150 MB of memory while transcribing. The published measurements are from x86 Linux; the engine also runs on macOS and ARM Linux.
Can AksharSTT be trained on our own recordings?
Yes. The full-precision weights and the training code are public, so it can be trained further on your audio. We do this as a custom model project in your own cloud account, with an evaluation set built from your recordings first.
Which Indian languages are next for AksharSTT?
Marathi, Bengali, Tamil, Telugu, Gujarati, Kannada, Malayalam, Punjabi and Odia are on the way, one at a time. We do not give dates: each language ships with its scores on public test sets, as Hindi did.
Need speech to text, or another model, trained on your own data and running in your own account?
Taking on new projects
Want a model like this inside your product?
A short call, a written brief, and a straight answer on scope, price and timeline before any work starts. NDA first if you need one.