You need to agree to share your Hugging Face information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

Amharic-ASR-v1

Amharic-ASR-v1 is an Amharic speech recognition (ASR) model by SaarAI, built for real-world and telephone speech. It has two parts:

  1. Acoustic model: a 600M-parameter w2v-bert-2.0 CTC model that predicts characters. It starts from the Ethio-ASR Amharic model and is fine-tuned further on about 191k Amharic utterances, with environmental-noise and telecom-channel augmentation. This acoustic model is the best training setup (full data + 10% telecom augmentation) from the TeleASR-Amharic paper.
  2. Language model: a word 4-gram KenLM model trained on about 200M words of Amharic text. During beam-search decoding (pyctcdecode) it fixes spelling and word-boundary errors made by the acoustic model.

Everything is in this one repo. transformers loads the model, feature extractor, tokenizer and language model together.

Developed by SaarAI
Language Amharic (am, Ge'ez script)
Task Speech recognition (speech → text)
Architecture w2v-bert-2.0 encoder + 1 adapter layer + CTC head (411 character tokens) + KenLM 4-gram beam search
Size 0.61B parameters (acoustic model) + 613 MB language model
Input 16 kHz mono audio
Output Lowercased Amharic text, no punctuation
Built on Ethio-ASR (badrex/Ethio-ASR-amharic)
Related paper TeleASR-Amharic: A Benchmark for Robust Amharic ASR in Realistic Telecommunication Conditions
License CC-BY-4.0

🎧 Quick start

pip install transformers torch torchaudio pyctcdecode kenlm   # kenlm needs Python <= 3.12

Pipeline (the language model is used automatically)

from transformers import pipeline

asr = pipeline("automatic-speech-recognition",
               model="SaarAI/Amharic-ASR-v1",
               device=0)            # device=-1 for CPU

print(asr("audio.wav")["text"])

# long recordings: chunked inference
print(asr("call_recording.wav", chunk_length_s=20, stride_length_s=4)["text"])

Full control over decoding

import torch, torchaudio
from transformers import AutoModelForCTC, Wav2Vec2ProcessorWithLM

repo = "SaarAI/Amharic-ASR-v1"
processor = Wav2Vec2ProcessorWithLM.from_pretrained(repo)
model = AutoModelForCTC.from_pretrained(repo).eval().to("cuda")

wav, sr = torchaudio.load("audio.wav")
wav = torchaudio.functional.resample(wav.mean(0), sr, 16_000)

inputs = processor(wav.numpy(), sampling_rate=16_000, return_tensors="pt").to("cuda")
with torch.no_grad():
    logits = model(**inputs).logits

# beam search with the 4-gram LM (defaults: alpha=0.5, beta=1.5)
text = processor.batch_decode(logits.cpu().numpy(), beam_width=100).text[0]

# no-LM decoding (most likely character per frame): fastest, for comparison
no_lm = processor.tokenizer.batch_decode(logits.argmax(-1))[0]

Decoding a batch on many CPU cores

from multiprocessing import get_context

with get_context("fork").Pool(16) as pool:
    texts = processor.batch_decode(logits.cpu().numpy(), pool=pool, beam_width=100).text

When inputs are padded into a batch, trim each item's logits to its real length before decoding, e.g. with model._get_feat_extract_output_lengths(inputs["attention_mask"].sum(-1)).


📈 Results

Effect of the language model (dev sets)

Same acoustic model; only the decoding differs. WER and CER are computed after lowercasing and removing punctuation.

Dev set Utterances Decoding WER ↓ CER ↓
FLEURS am_et validation + test 739 no LM 21.83% 6.92%
+ 4-gram LM 18.62% 6.29%
SaarAI/waxal-amharic-combined validation 600 no LM 23.31% 9.70%
+ 4-gram LM 21.40% 9.45%

The LM cuts WER by about 15% (relative) on FLEURS and about 8% on WAXAL, and lowers CER on both. These are the sets the decoder settings were tuned on, so treat the numbers as slightly optimistic.

Example (FLEURS validation):

Transcript
Reference … ብሔራዊነት እና ሀገሪቱ … ማህበራዊ እና ፖለቲካዊ ተፅእኖዎች አሉ
No LM … ብሔራዊነትእና ሀገሪቱ … ማህበራዊና ፖለቲካዊ ተጽዕኖች አሉ
With LM … ብሔራዊነት እና ሀገሪቱ … ማህበራዊ እና ፖለቲካዊ ተጽዕኖዎች አሉ

SaarAI ASR leaderboard (TeleASR-Amharic, WAXAL, AfriSwitch)

The amharic_amh test sets are the TeleASR-Amharic benchmark: 15,965 Ethio Telecom-style customer-service utterances (30.63 h). Eight speakers recorded them, and they are released in seven acoustic and telecom-channel conditions. waxal_amh (3,420 utterances) and afriswitch_amh (1,229 utterances) are also part of the SaarAI ASR leaderboard.

All three models below were run on the full test sets with the same open_asr_leaderboard pipeline and normaliser, so the numbers are directly comparable. Amharic-ASR-v1 is the full model with the 4-gram LM (alpha 0.5, beta 1.5, beam 100). The no LM column is the same acoustic model with no-LM decoding (SaarAI/03082026-135002-01-aug-full-data).

Test set badrex/Ethio-ASR-amharic Acoustic model, no LM Amharic-ASR-v1 (+ LM)
waxal_amh (WAXAL read speech, test) 23.82% 27.38% 25.10%
TeleASR-Amharic: clean studio 38.64% 27.46% 21.93%
TeleASR-Amharic: ambient room noise 40.89% 27.27% 21.42%
TeleASR-Amharic: distant / low-volume mic 38.69% 29.13% 22.30%
TeleASR-Amharic: harsh environment 44.40% 30.05% 23.79%
TeleASR-Amharic: wideband phone (VoLTE) 47.53% 30.89% 24.38%
TeleASR-Amharic: randomized phone channel 48.97% 31.62% 24.83%
TeleASR-Amharic: narrowband 2G + packet loss 77.59% 56.33% 48.20%
afriswitch_amh (Amharic–English code-switching) 48.28% 43.92% 41.78%
Average (9 test sets) 45.42% 33.78% 28.19%
  • The LM lowers WER on every test set: 5.6 points on average (33.78% → 28.19%, about 17% relative), and 5.5–8.1 points on the TeleASR-Amharic conditions.
  • Compared with badrex/Ethio-ASR-amharic, average WER falls from 45.42% to 28.19%. On narrowband 2G + packet loss it falls from 77.59% to 48.20%.
  • WAXAL read speech is the one exception: there badrex/Ethio-ASR-amharic is still 1.3 points better.
  • Amharic-ASR-v1 has the lowest average WER of the 28 models evaluated on all nine Amharic test sets of the leaderboard.
  • Speed: with beam search on the CPU, throughput is about 77× real time on one A100 GPU plus a 16-process decoding pool (RTFx 76.6). No-LM decoding is about 120× real time.

These numbers use the leaderboard normaliser. The TeleASR-Amharic paper normalises text differently (it converts digits to Amharic words), so its numbers are not directly comparable. For example, it reports 40.57% clean studio and 79.36% narrowband 2G WER for badrex/Ethio-ASR-amharic.

The model's transcripts for every test set are in SaarAI/asr-benchmark-outputs (data/amharic/*__saarai-amharic-asr-v1.jsonl).


🏗️ How it was built

1. Acoustic model

  • Starting point: badrex/Ethio-ASR-amharic, the monolingual Amharic w2v-bert-2.0 model from the Ethio-ASR project.

  • Training code: the Ethio-ASR codebase (scripts/train_model.py), with CTC loss and Ethio-ASR's 411-token character vocabulary (Ge'ez syllables, Ethiopic numerals and punctuation, Latin letters, digits).

    • learning rate 3e-5, linear schedule, 10% warm-up, bf16
    • full encoder fine-tuning with 1 adapter layer
    • final checkpoint after about 4.2 epochs, on one A100 80 GB
  • Training data (SaarAI/waxal-amharic-combined; Table 2 of the TeleASR-Amharic paper):

    Source Utterances Hours
    WaxalNLP (amh) 38,022 189.0
    WAXAL auto-labelled (amh), from Ethio-ASR 80,321 398.1
    BDU Amharic ASR 32,901 101.0
    Common Voice (amh) 563 0.9
    Leyu: Gonder dialect 11,339 112.8
    Leyu: Wello dialect 10,010 114.7
    Leyu: Gojjam dialect 10,095 95.8
    Leyu: Shewa dialect 8,180 102.6
    Train total 191,431 1,115.0
    Validation (WaxalNLP) 2,912 14.0
  • Telecom-aware augmentation: 10% of training utterances get one pipeline (at most one telecom pipeline per utterance). The pipelines were designed from an analysis of recordings made over the Ethio Telecom network:

    • ambient room noise: a low noise floor plus slow volume fluctuation
    • distant / low-volume microphone: uniform attenuation
    • harsh environment: strong attenuation, heavy noise and fast volume fluctuation
    • wideband phone (VoLTE): 16 kHz codec, band-pass filter, compression, noise and 50 Hz hum
    • narrowband 2G + packet loss: 8 kHz codec, narrow band-pass, heavy compression, tanh overdrive, heavy noise, hum and 1–3 dropouts
    • randomized phone channel, standard and severe variants: parameters are sampled for each utterance, and the severe variant adds 1–5 full or partial dropouts

    Gaussian noise and random gain changes are also applied.

  • Number handling: digits are converted to Amharic words (e.g. 123 → አንድ መቶ ሃያ ሶስት) in the training text. Customer-service calls are full of phone numbers, balances and dates.

In the TeleASR-Amharic ablation, this setup (full data + 10% augmentation) beat both data scaling alone and augmentation alone on every degraded condition. On narrowband 2G + packet loss it cut WER from 0.794 to 0.607, a 23.6% relative reduction.

2. Language model

  • Type: word-level 4-gram KenLM with modified Kneser-Ney smoothing. Pruning is 0 1 1 2: singleton bigrams and trigrams are dropped, and 4-grams seen fewer than 3 times are dropped. Stored as a binary trie.

  • Size: 4.07M unigrams, 15.8M bigrams, 17.4M trigrams, 3.2M 4-grams.

  • Training text: about 12.3M sentences / 200M words:

    Source Sentences
    HuggingFaceFW/fineweb-2 (amh_Ethi, train) 8.87M
    SaarAI/amh-post-training (v1 + v2, train) 3.24M
    SaarAI/waxal-amharic-combined (train transcripts) 0.28M
    wikimedia/wikipedia (20231101.am) 0.13M
  • Text normalisation:

    • NFC Unicode normalisation and lowercasing
    • punctuation and symbols removed, the same way the evaluation normaliser does it
    • only characters the acoustic model can output are kept
    • sentences that are mostly non-Ge'ez are dropped
    • global de-duplication
  • Test-leakage guard: a sentence was removed if it is identical to, or shares any 8-word sequence with, a sentence in an evaluation or tuning set:

    • all TeleASR-Amharic conditions
    • waxal_amh and afriswitch_amh
    • the waxal-amharic-combined test split
    • FLEURS am_et validation/test

    About 7.7k sentences were removed this way.

3. Decoder tuning

The LM weight alpha and word-insertion bonus beta were grid-searched with beam width 100 on two held-out dev sets (FLEURS am_et validation+test and waxal-amharic-combined validation). The chosen setting gives the largest mean relative reduction of 0.5·WER + 0.5·CER across both:

Parameter Value
alpha (LM weight) 0.5
beta (word insertion bonus) 1.5
beam_width 100 (300 gave no further gain)
unk_score_offset -10.0

You can override these at inference time with processor.batch_decode(..., alpha=..., beta=..., beam_width=...). A 5-gram LM was also tested and scored the same as the 4-gram, so the smaller 4-gram is shipped.


📁 Repository contents

File Purpose
model.safetensors, config.json w2v-bert-2.0 CTC acoustic model
preprocessor_config.json SeamlessM4T feature extractor (80-dim log-mel, 16 kHz)
vocab.json, tokenizer_config.json, special_tokens_map.json, added_tokens.json CTC character tokenizer
alphabet.json pyctcdecode alphabet (token id → character)
language_model/amh_4gram.bin KenLM 4-gram (binary trie)
language_model/unigrams.txt LM vocabulary (4.07M words)
language_model/attrs.json default decoder settings (alpha, beta, unknown-word offset)
decoding_config.json decoder settings for the SaarAI open_asr_leaderboard kenlm_ctc runner
alpha_beta.json record of the tuned decoder settings

⚠️ Limitations

  • Output format: lowercased text without punctuation. Numbers come out as Amharic words. Add punctuation / inverse text normalisation if you need formatted text such as digits for phone numbers.
  • Very poor channels: narrowband 2G audio with packet loss is still hard (48.2% WER with the LM, 56.3% without).
  • Code-switching: Amharic–English speech is much harder (41.8% WER on afriswitch_amh). There is little English in Latin script in the LM text.
  • Rare words and names: the LM can push uncommon names or new terms towards more frequent words. Lower alpha, or use pyctcdecode hotwords, for domain names and terms.
  • Speed: beam search runs on the CPU, so it is slower than no-LM decoding. Use a multiprocessing pool for batches, or use the tokenizer's no-LM decoding when latency matters most.
  • Coverage and bias: the training data covers several dialects (Gonder, Wello, Gojjam, Shewa), but not all Amharic varieties, speaker groups or recording conditions. The TeleASR-Amharic benchmark speakers are Addis Ababa / Shewa only. Accuracy may vary by speaker and domain. See the Ethio-ASR paper for a gender-bias analysis of the base models.

🙏 Acknowledgements

This model is built directly on the Ethio-ASR project. We thank the Ethio-ASR team; their open models, training code and analysis made this work possible:

The acoustic model, its training data mix and the telecom augmentation come from the TeleASR-Amharic work (arXiv:2610.26448): HiLCoE School of Computer Science and Technology, GSMA, gheero and Saarland University. We thank Ethio Telecom experts for reviewing the benchmark dialogues, and the gheero contributors who recorded them.

We also thank the creators of the training data and tools:

  • Google for WAXAL
  • Bahir Dar University for the BDU Amharic speech corpus
  • Mozilla Common Voice and the Leyu Amharic dialect project
  • Meta AI for w2v-bert-2.0
  • Hugging Face for FineWeb-2
  • the Wikimedia community for Amharic Wikipedia
  • the authors of KenLM and pyctcdecode

📚 Citation

If you use this model, please cite:

@misc{marilign2026teleasramharic,
  title         = {TeleASR-Amharic: A Benchmark for Robust Amharic ASR in Realistic Telecommunication Conditions},
  author        = {Dagnachew Mekonnen Marilign and Enrique Molero and Abrham Haile and Louis Powell and Israel Abebe Azime},
  year          = {2026},
  eprint        = {2610.26448},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CL},
  note          = {Accepted to the AACL-IJCNLP 2026 TrustAudio Workshop},
  url           = {https://arxiv.org/abs/2610.26448}
}

@misc{abdullah2026ethioasr,
  title         = {Ethio-ASR: Joint Multilingual Speech Recognition and Language Identification for Ethiopian Languages},
  author        = {Badr M. Abdullah and Israel Abebe Azime and Atnafu Lambebo Tonja and Jesujoba O. Alabi and
                   Abel Mulat Alemu and Eyob G. Hagos and Bontu Fufa Balcha and Mulubrhan A. Nerea and
                   Debela Desalegn Yadeta and Dagnachew Mekonnen Marilign and Amanuel Temesgen Fentahun and
                   Tadesse Kebede and Israel D. Gebru and Michael Melese Woldeyohannis and
                   Walelign Tewabe Sewunetie and Bernd M{\"o}bius and Dietrich Klakow},
  year          = {2026},
  eprint        = {2603.23654},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CL},
  url           = {https://arxiv.org/abs/2603.23654}
}
Downloads last month
16
Safetensors
Model size
0.6B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for SaarAI/Amharic-ASR-v1

Finetuned
(2)
this model

Datasets used to train SaarAI/Amharic-ASR-v1

Papers for SaarAI/Amharic-ASR-v1