Dulu Malayalam ASR
Dulu turns Malayalam speech into text. It is an early model from Serendipity Labs, built on Google’s EmbeddingGemma 2.
It can produce useful transcripts, but still makes mistakes. Treat its output as a draft to review, especially for names, numbers, and unfamiliar words.
Try it
Use Python 3.12 or 3.13. Download the model and install its dependencies:
python -m pip install huggingface_hub==2.2.0
hf download serendipitylabs/dulu-malayalam-asr --local-dir dulu-malayalam-asr
cd dulu-malayalam-asr
python -m pip install -r requirements.txt
python dulu_asr.py recording.wav --device cpu
For a CUDA GPU that supports BF16, use --device cuda.
You can also use it from Python in the downloaded folder:
import torch
from dulu_asr import DuluASR
torch.set_num_threads(4)
model = DuluASR.from_pretrained(".", device="cpu")
print(model.transcribe("recording.wav"))
All the weights are included; you do not need to download the base model separately. The weights are about 1.3 GB, and running the model needs additional memory. Audio is converted to mono at 16 kHz automatically. Start with short recordings containing clear speech.
How it performs
We trained on 134.1 hours of Malayalam audio from Kathbath. We selected the checkpoint using Kathbath validation data, then evaluated it on FLEURS.
| Evaluation set | Word error rate ↓ | Character error rate ↓ |
|---|---|---|
| Kathbath validation · 1,767 recordings | 41.07% | 7.15% |
| FLEURS Malayalam test · 958 recordings | 44.13% | 11.15% |
Lower is better. These scores use normalized text and greedy decoding, without a language model. They are single-run results, not a claim that Dulu is state of the art.
A few details matter when reading those numbers:
- Kathbath validation includes speakers also present in training.
- Some FLEURS test content had been inspected in an earlier experiment. Removing that content leaves 887 recordings, with 44.14% word error rate and 11.28% character error rate. This is a custom subset, not the official benchmark.
- FLEURS was not used for training updates. Its validation set had been used in earlier development.
The release uses the best validation checkpoint, epoch 4 of a 12-epoch run. Training details are linked below.
What to expect
This is a research release, not a production-ready transcription service. We have not thoroughly tested conversations, dialects, Malayalam–English mixing, noisy audio, or long recordings.
It does not add punctuation, identify speakers, provide timestamps, or stream live audio. CPU and GPU outputs can differ slightly. The reported scores come from the original GPU evaluation; release checks verify the exported weights and test CPU inference.
More information
- Training, evaluation, and limitations
- Exact metrics and split audit
- Checkpoint provenance and release checks
- Apache 2.0 license and attribution
Built on Google’s EmbeddingGemma 2, with an architecture informed by qnguyen3/gemma-asr. Thanks to AI4Bharat for Kathbath and the FLEURS authors for their datasets. This is an independent Serendipity Labs release.
Version 0.1.0 · October 2026. Feedback and reproducible examples are welcome in the Community tab. Please avoid sharing private recordings without permission.