omniasr-llm-300m-waxal-all19
A all 19 WAXAL languages (multilingual) multilingual fine-tune of Meta's Omnilingual ASR (wav2vec2_llama,
300M-parameter shared wav2vec2 encoder + autoregressive Llama-style decoder), trained
jointly on 19 WAXAL languages. Part of the WAXAL ASR benchmark's
training-granularity study (monolingual vs. language-family vs. all-19 pooling).
- Base model:
facebook/omniASR-LLM-300M - Languages (19): Acholi, Akan, Amharic, Dagbani, Dagaare, Ewe, Fula, Ikposo, Lingala, Luganda, Masaaba, Malagasy, Nyankole, Oromo, Sidama, Shona, Soga, Tigrinya, Wolaytta
- Macro-averaged WER (this model): 32.9% | monolingual baselines: 31.8%
Training data
Fine-tuned on the pooled train splits of the WAXAL corpus for these languages (16 kHz mono; transcripts NFC-normalized and lower-cased, punctuation removed, phonemic diacritics/tone marks preserved). Total: 362,117 clips / 1857.7 hours.
| Language | Train clips | Train hours |
|---|---|---|
| Acholi | 4,108 | 25.8 |
| Akan | 10,107 | 55.0 |
| Amharic | 38,022 | 189.7 |
| Dagbani | 14,231 | 77.0 |
| Dagaare | 15,071 | 83.4 |
| Ewe | 15,052 | 79.5 |
| Fula | 19,132 | 99.7 |
| Ikposo | 14,415 | 82.1 |
| Lingala | 14,399 | 71.9 |
| Luganda | 5,455 | 37.3 |
| Masaaba | 6,865 | 39.3 |
| Malagasy | 18,526 | 94.7 |
| Nyankole | 6,783 | 40.8 |
| Oromo | 38,182 | 189.9 |
| Sidama | 38,752 | 192.7 |
| Shona | 14,109 | 79.7 |
| Soga | 6,219 | 40.0 |
| Tigrinya | 40,856 | 181.9 |
| Wolaytta | 41,833 | 197.3 |
Training procedure
Fine-tuned with the Omnilingual-ASR wav2vec2_llama recipe (fairseq2) on 2× NVIDIA H200
(DistributedDataParallel). All granularity conditions use an identical budget so the only
variable is the language mixture.
| Hyperparameter | Value |
|---|---|
| Base checkpoint | facebook/omniASR-LLM-300M |
| Tokenizer | omniASR_tokenizer_v1 (SentencePiece, 9,812 units) |
| Training steps | 5,000 |
| Optimizer | AdamW |
| Learning rate | 5e-5 |
| Weight decay | 0.01 |
| Batch size | 3,000,000 audio tokens/batch (dynamic) |
| Gradient accumulation | 4 |
| Precision | bfloat16 mixed |
| Audio length filter | 0.5 s – 30 s |
| Hardware | 2× H200 (DDP) |
Evaluation
Scored on each language's held-out test split (utterances ≥ 1.5 s, matching the
benchmark's filtered-test protocol). WER and CER computed with jiwer on NFC-normalized,
lower-cased text (diacritics preserved). The Monolingual WER column is the corresponding
per-language model (omniasr-llm-300m-waxal-<iso>)
evaluated identically, for a same-protocol comparison.
| Language | Code | WER | CER | Monolingual WER | Δ vs mono |
|---|---|---|---|---|---|
| Acholi | ach_Latn |
33.2 | 13.7 | 33.3 | -0.1 |
| Akan | aka_Latn |
29.1 | 9.8 | 29.2 | -0.1 |
| Amharic | amh_Ethi |
26.9 | 10.7 | 25.0 | +1.9 |
| Dagbani | dag_Latn |
34.0 | 11.6 | 31.2 | +2.8 |
| Dagaare | dga_Latn |
32.2 | 13.0 | 29.0 | +3.2 |
| Ewe | ewe_Latn |
29.8 | 9.4 | 29.0 | +0.8 |
| Fula | ful_Latn |
36.5 | 9.5 | 39.1 | -2.6 |
| Ikposo | kpo_Latn |
72.5 | 24.6 | 69.2 | +3.2 |
| Lingala | lin_Latn |
29.9 | 12.5 | 30.4 | -0.5 |
| Luganda | lug_Latn |
12.1 | 2.8 | 10.9 | +1.1 |
| Masaaba | myx_Latn |
45.1 | 10.2 | 45.5 | -0.5 |
| Malagasy | mlg_Latn |
12.9 | 3.4 | 11.4 | +1.5 |
| Nyankole | nyn_Latn |
32.2 | 8.4 | 32.3 | -0.1 |
| Oromo | orm_Latn |
22.8 | 6.0 | 20.9 | +2.0 |
| Sidama | sid_Latn |
30.5 | 7.5 | 28.7 | +1.8 |
| Shona | sna_Latn |
21.6 | 3.9 | 21.6 | +0.0 |
| Soga | xog_Latn |
42.7 | 8.5 | 42.8 | -0.1 |
| Tigrinya | tir_Ethi |
40.6 | 17.4 | 37.0 | +3.7 |
| Wolaytta | wal_Latn |
40.0 | 11.7 | 36.7 | +3.2 |
Usage
# pip install git+https://github.com/facebookresearch/omnilingual-asr.git
from pathlib import Path
import torch
from huggingface_hub import snapshot_download
from fairseq2.data.tokenizers.hub import load_tokenizer
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline
from omnilingual_asr.models.wav2vec2_llama.hub import get_wav2vec2_llama_model_hub
ckpt = snapshot_download("waxal-benchmarking/omniasr-llm-300m-waxal-all19")
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
dtype = torch.bfloat16 if device.type == "cuda" else torch.float32
hub = get_wav2vec2_llama_model_hub()
model = hub.load_custom_model(Path(ckpt) / "model", hub.get_arch_config("300m"), device=device, dtype=dtype)
tokenizer = load_tokenizer("omniASR_tokenizer_v1")
pipe = ASRInferencePipeline(model_card=None, model=model, tokenizer=tokenizer, device=device, dtype=dtype)
# pass the target language's Omnilingual token, e.g. Acholi -> "ach_Latn"
texts = pipe.transcribe(["your_audio.flac"], lang=["ach_Latn"])
print(texts)
Language tokens for this model: Acholi ach_Latn, Akan aka_Latn, Amharic amh_Ethi, Dagbani dag_Latn, Dagaare dga_Latn, Ewe ewe_Latn, Fula ful_Latn, Ikposo kpo_Latn, Lingala lin_Latn, Luganda lug_Latn, Masaaba myx_Latn, Malagasy mlg_Latn, Nyankole nyn_Latn, Oromo orm_Latn, Sidama sid_Latn, Shona sna_Latn, Soga xog_Latn, Tigrinya tir_Ethi, Wolaytta wal_Latn.
Audio should be mono 16 kHz (the pipeline resamples if needed); keep clips under 40 s.
Checkpoint format
Native fairseq2 sharded checkpoint (model/pp_00/tp_00/sdp_00.pt + model.yaml) —
not a transformers model, so AutoModel will not load it. Load with omnilingual_asr /
fairseq2 as shown above.
Citation
Part of the WAXAL ASR Benchmark (arXiv:2606.02375).
@article{waxalnet2026,
title = {The WAXAL ASR Benchmark: Fine-Tuned Edge Models Across 19 African Languages},
author = {Olufemi, Victor Tolulope and Babatunde, Oreoluwa and Njema, Ramsey and others},
year = {2026},
note = {arXiv preprint arXiv:2606.02375}
}
Acknowledgements
Supported by Lynguallabs (compute, researchers & storage), Open Token (compute), and CMU Africa (researchers & native speakers).
Model tree for waxal-benchmarking/omniasr-llm-300m-waxal-all19
Base model
facebook/omniASR-LLM-300M