Instructions to use Prahaladha/hima-asr with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Prahaladha/hima-asr with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="Prahaladha/hima-asr", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Prahaladha/hima-asr", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
Hima-ASR
Hima-ASR is a compact open speech recognition model for 11 Indian languages and English: Assamese, Bengali, Gujarati, Hindi, Kannada, Malayalam, Marathi, Odia, Punjabi, Tamil, Telugu and English.
| Task | speech to text |
| Size | 0.6B parameters (1.2 GB in bf16) |
| Input | 16 kHz mono audio, 1 to 30 seconds per clip |
| Output | text in the language's own script (native), or with English words in Latin letters (mixed) |
| Runs on | one GPU, or CPU for short clips |
Quick start
pip install "transformers>=5.13" torch torchaudio soundfile
import torch
from transformers import AutoModel
model = AutoModel.from_pretrained("Prahaladha/hima-asr", trust_remote_code=True, dtype=torch.float32)
model = model.to("cuda").eval() # or leave on CPU
print(model.transcribe("clip.wav", language="hi")) # one file -> one string
print(model.transcribe(["a.wav", "b.wav"], language="ta")) # list -> list
print(model.transcribe("clip.wav")) # the model detects the language
print(model.transcribe("clip.wav", language="hi", style="mixed")) # English words in Latin letters
transcribe also takes 16 kHz float arrays (sampling_rate= for other rates). On a GPU it runs in bfloat16 automatically.
| Argument | Values | Default |
|---|---|---|
language |
as bn en gu hi kn ml mr or pa ta te, or None |
None (detected) |
style |
native (own script), mixed (English words in Latin letters) |
native |
batch_size |
clips decoded together | 16 |
Giving the language gives the best accuracy.
Architecture
Hima-ASR is an encoder-decoder model in three parts:
- Audio encoder: turns 16 kHz speech into acoustic frames (12.5 per second). Initialised from the audio encoder of Qwen3-ASR-1.7B.
- Projector: maps the audio encoder's frames into the text decoder's input space.
- Text decoder: writes the transcript piece by piece (greedy). Initialised from Gemma 3 270M.
The text decoder can be told the language and writing style, or it can name the language itself before writing.
Benchmarks
Word error rate (WER, %, lower is better). All models are scored on the same clips with the same scorer, the language is given to each model (Sarvam through its API), and text is compared after standard normalisation (punctuation removed, Unicode NFC). Best result per row in bold.
| Model | Parameters |
|---|---|
| Hima-ASR | 0.6B |
| Indic-Transcribe-Flex | 1.2B |
| Indic-Transcribe-Core | 1.2B |
| Sarvam Saaras v3 (API) | not published |
By language
| Language | Hima-ASR | Flex | Core | Sarvam Saaras v3 |
|---|---|---|---|---|
| English | 7.5 | 6.4 | 6.9 | 4.0 |
| Gujarati | 10.2 | 10.5 | 10.1 | 10.6 |
| Kannada | 11.1 | 13.5 | 13.0 | 11.7 |
| Punjabi | 10.9 | 9.4 | 9.1 | 9.7 |
| Bengali | 12.3 | 10.9 | 10.0 | 10.5 |
| Odia | 12.5 | 12.9 | 12.3 | 11.1 |
| Telugu | 13.4 | 15.0 | 14.6 | 15.5 |
| Marathi | 13.9 | 13.4 | 13.4 | 12.0 |
| Hindi | 14.2 | 13.2 | 13.1 | 16.6 |
| Malayalam | 15.0 | 16.8 | 16.5 | 16.7 |
| Assamese | 17.0 | 15.8 | 15.2 | 14.7 |
| Tamil | 17.4 | 20.9 | 19.8 | 20.5 |
| Average (12 languages) | 12.95 | 13.23 | 12.84 | 12.79 |
Hima-ASR has the lowest error of the four in Tamil, Telugu, Malayalam and Kannada, and beats Sarvam in Hindi (14.2 vs 16.6). On the 12-language average it beats Flex and is within 0.2 points of Core (12.84) and Sarvam (12.79); Sarvam is best on English.
By test set
| Test set | Language | Hima-ASR | Flex | Core | Sarvam Saaras v3 |
|---|---|---|---|---|---|
| Kathbath (read speech) | Hindi | 3.4 | 2.5 | 2.6 | 3.4 |
| Kathbath | Bengali | 8.3 | 5.4 | 5.1 | 7.2 |
| Kathbath | Gujarati | 7.3 | 5.4 | 5.2 | 6.7 |
| Kathbath | Odia | 8.3 | 10.0 | 8.7 | 8.6 |
| Kathbath | Punjabi | 8.1 | 7.1 | 6.9 | 7.7 |
| Kathbath | Kannada | 9.5 | 11.7 | 10.4 | 11.4 |
| Kathbath | Marathi | 11.0 | 8.8 | 8.7 | 9.9 |
| Kathbath | Telugu | 12.9 | 12.8 | 11.6 | 13.7 |
| Kathbath | Tamil | 15.4 | 14.1 | 13.8 | 15.0 |
| Kathbath | Malayalam | 19.9 | 26.8 | 23.6 | 25.2 |
| FLEURS | Hindi | 5.7 | 4.3 | 4.2 | 4.9 |
| FLEURS | 12 languages, average | 12.7 | 12.7 | 12.3 | 12.0 |
| Lahaja (many accents) | Hindi | 8.8 | 8.1 | 8.0 | 12.1 |
| Monsoon (conversational) | Hindi | 11.1 | 8.0 | 7.6 | 9.9 |
| Monsoon (conversational) | English | 4.2 | 6.1 | 6.3 | 3.5 |
| Svarah (Indian-accented) | English | 11.4 | 6.8 | 7.8 | 4.7 |
| Gram Vaani (phone-quality, rural) | Hindi | 17.2 | 16.5 | 16.4 | 20.1 |
More test sets: conversational and read speech from two more public collections (SPRING-INX and MILE), 18 sets, about 1,100 to 1,500 clips each.
| Test set | Language | Words | Hima-ASR | Flex | Core | Sarvam Saaras v3 |
|---|---|---|---|---|---|---|
| SPRING-INX round 1 | Assamese | 21,758 | 35.6 | 38.5 | 37.9 | 38.9 |
| SPRING-INX round 2 | Assamese | 25,447 | 33.4 | 35.6 | 34.9 | 37.2 |
| SPRING-INX round 1 | Bengali | 25,210 | 26.2 | 26.9 | 26.4 | 26.8 |
| SPRING-INX round 2 | Bengali | 23,672 | 27.3 | 27.8 | 27.3 | 28.1 |
| SPRING-INX round 1 | Gujarati | 29,707 | 35.9 | 37.2 | 35.9 | 36.4 |
| SPRING-INX round 2 | Gujarati | 27,419 | 39.6 | 41.1 | 39.9 | 39.9 |
| MILE | Kannada | 19,997 | 13.8 | 15.8 | 15.0 | 15.5 |
| SPRING-INX round 1 | Kannada | 16,169 | 49.0 | 58.0 | 57.5 | 53.8 |
| SPRING-INX round 1 | Malayalam | 17,966 | 47.3 | 49.0 | 47.9 | 47.8 |
| SPRING-INX round 2 | Malayalam | 18,516 | 50.8 | 52.9 | 52.4 | 51.9 |
| SPRING-INX round 1 | Marathi | 16,992 | 38.7 | 39.6 | 38.3 | 37.1 |
| SPRING-INX round 2 | Marathi | 25,875 | 34.2 | 38.6 | 34.0 | 33.0 |
| SPRING-INX round 1 | Odia | 21,014 | 35.3 | 40.0 | 38.8 | 37.3 |
| SPRING-INX round 1 | Punjabi | 24,950 | 30.3 | 32.8 | 30.9 | 30.6 |
| SPRING-INX round 2 | Punjabi | 27,150 | 33.1 | 34.7 | 33.4 | 33.3 |
| MILE | Tamil | 10,966 | 14.0 | 18.8 | 17.3 | 18.7 |
| SPRING-INX round 1 | Tamil | 25,941 | 36.4 | 46.5 | 44.7 | 39.6 |
| SPRING-INX round 2 | Tamil | 19,107 | 37.5 | 50.5 | 48.1 | 40.9 |
Hima-ASR has the lowest error of the four on 15 of these 18 sets; it is ahead of Core on 15, of Sarvam on 16 and of Flex on all 18.
Files
| File | What it is |
|---|---|
model.safetensors |
weights (bf16) |
config.json, configuration_hima_asr.py |
configuration |
modeling_hima_asr.py |
model code (loaded with trust_remote_code=True) |
preprocessor_config.json |
audio feature settings |
tokenizer.json, tokenizer_config.json |
text decoder tokenizer |
Limitations
- Clips longer than 30 seconds should be split before transcription.
- Accuracy is lower on phone-quality and noisy audio than on clean speech.
- Without a language hint, the model can occasionally write a clip in the script of a related language.
- Proper nouns and rare words are the most common errors.
License
- Hima-ASR's own parts (projector, training changes, inference code): Apache 2.0, see
LICENSE. - Audio encoder: initialised from Qwen3-ASR-1.7B, Apache 2.0.
- Text decoder: initialised from Gemma 3 270M. Gemma is provided under and subject to the Gemma Terms of Use found at
ai.google.dev/gemma/terms, including its use restrictions. Hima-ASR is a Model Derivative of Gemma,
so any use or redistribution of Hima-ASR must follow those terms. See
NOTICE.
- Downloads last month
- 321
Model tree for Prahaladha/hima-asr
Base model
Qwen/Qwen3-ASR-1.7BEvaluation results
- WER (average of 12 languages) on FLEURS (12 languages)test set self-reported12.700
- WER on Kathbath (Hindi)test set self-reported3.400
- WER on Lahaja (Hindi)test set self-reported8.800