Automatic Speech Recognition
Transformers
Safetensors
Khmer
qwen3_asr
speech
audio
khmer
qwen3-asr
Eval Results (legacy)
Instructions to use seanghay/Qwen3-ASR-0.6B-Khmer with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use seanghay/Qwen3-ASR-0.6B-Khmer with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("automatic-speech-recognition", model="seanghay/Qwen3-ASR-0.6B-Khmer")# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("seanghay/Qwen3-ASR-0.6B-Khmer") model = AutoModelForMultimodalLM.from_pretrained("seanghay/Qwen3-ASR-0.6B-Khmer") - Notebooks
- Google Colab
- Kaggle
File size: 4,283 Bytes
65cec60 1ad7fd7 65cec60 1ad7fd7 65cec60 1ad7fd7 65cec60 e8ba61e c64fc28 e8ba61e c64fc28 e8ba61e 65cec60 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | ---
license: apache-2.0
language:
- km
base_model:
- Qwen/Qwen3-ASR-0.6B
datasets:
- DDD-Cambodia/khmer-speech-dataset
pipeline_tag: automatic-speech-recognition
library_name: transformers
tags:
- automatic-speech-recognition
- speech
- audio
- khmer
- qwen3-asr
metrics:
- cer
model-index:
- name: Qwen3-ASR-0.6B-Khmer
results:
- task:
type: automatic-speech-recognition
name: Automatic Speech Recognition
dataset:
type: khmer
name: Khmer held-out dev set (in-domain)
metrics:
- type: cer
value: 1.96
name: CER
- task:
type: automatic-speech-recognition
name: Automatic Speech Recognition
dataset:
type: khmer
name: Khmer out-of-domain set
metrics:
- type: cer
value: 7.91
name: CER
---
# Qwen3-ASR-0.6B-Khmer
A Khmer (ខ្មែរ) automatic speech recognition model, fine-tuned from
[**Qwen/Qwen3-ASR-0.6B**](https://huggingface.co/Qwen/Qwen3-ASR-0.6B) on
~700 hours of Khmer speech from the
[**DDD-Cambodia/khmer-speech-dataset**](https://huggingface.co/datasets/DDD-Cambodia/khmer-speech-dataset).
It substantially improves Khmer transcription accuracy over the base model
while keeping the compact 0.6B footprint.
## Results
Character Error Rate (CER, lower is better). Khmer has no spaces between words,
so CER is computed **space-insensitive**; the out-of-domain set is additionally
normalized by removing punctuation.
| Evaluation set | Clips | CER (corpus) | CER (avg) | Median CER | Perfect (CER=0) |
|---|---:|---:|---:|---:|---:|
| In-domain dev | 1,000 | **1.96%** | 1.95% | 0.65% | 49.2% |
| Out-of-domain | 2,906 | **7.91%** | 8.26% | 6.25% | 26.4% |
- **CER (corpus)** = total edit distance ÷ total reference characters (micro-average).
- **CER (avg)** = mean of per-clip CER (macro-average).
## Usage
Install the [`qwen-asr`](https://pypi.org/project/qwen-asr/) package (transformers backend):
```bash
pip install -U qwen-asr
```
```python
import torch
from qwen_asr import Qwen3ASRModel
model = Qwen3ASRModel.from_pretrained(
"seanghay/Qwen3-ASR-0.6B-Khmer",
dtype=torch.bfloat16,
device_map="cuda:0",
max_inference_batch_size=32,
max_new_tokens=256, # increase for long audio to avoid truncation
)
results = model.transcribe(
audio="path/to/khmer.wav", # local path, URL, base64, or (np.ndarray, sr)
)
print(results[0].text)
```
Audio is resampled to 16 kHz mono internally. Long recordings are automatically
chunked; for long clips set a larger `max_new_tokens` so the transcript is not cut off.
## Training
| | |
|---|---|
| Base model | Qwen/Qwen3-ASR-0.6B |
| Language | Khmer (`km`) |
| Training data | [DDD-Cambodia/khmer-speech-dataset](https://huggingface.co/datasets/DDD-Cambodia/khmer-speech-dataset) (~700 h, ~384k clips) |
| Epochs | 3 (35,997 steps) |
| Effective batch size | 32 (per-device 4 × grad-accum 8) |
| Learning rate | 2e-5, linear schedule with warmup |
| Precision | bf16 |
| Hardware | 1× NVIDIA RTX 3090 (24 GB) |
| Final eval loss | 0.040 |
The model is trained to emit a language tag followed by the transcript
(`language Khmer<asr_text>…`); the `qwen-asr` package parses this automatically.
## Limitations
- Tuned primarily for **read/clean Khmer speech**. Accuracy degrades on noisy,
spontaneous, or heavily **code-switched (Khmer–English) technical speech**,
where English terms may be transliterated phonetically into Khmer script.
- Output is unpunctuated / minimally segmented Khmer text.
- As with most ASR models, very long or hesitant/repetitive speech can
occasionally produce repeated phrases.
## License
Released under the **Apache-2.0** license, inheriting the license of the base
Qwen3-ASR-0.6B model.
## Acknowledgements
Built on [Qwen3-ASR](https://github.com/QwenLM/Qwen3-ASR) by the Alibaba Qwen team.
## Citation
If you use this model, please cite:
```bibtex
@misc{seanghay2026qwen3asrkhmer,
title = {Qwen3-ASR-0.6B-Khmer},
author = {Seanghay},
year = {2026},
howpublished = {\url{https://huggingface.co/seanghay/Qwen3-ASR-0.6B-Khmer}}
}
```
This model is fine-tuned from Qwen3-ASR:
```bibtex
@misc{qwen3asr,
title = {Qwen3-ASR},
author = {Qwen Team},
year = {2025},
url = {https://github.com/QwenLM/Qwen3-ASR}
}
```
|