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).

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for waxal-benchmarking/omniasr-llm-300m-waxal-all19

Finetuned
(26)
this model

Dataset used to train waxal-benchmarking/omniasr-llm-300m-waxal-all19

Paper for waxal-benchmarking/omniasr-llm-300m-waxal-all19