CoolFace
Modelpublic

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

sourceHugging Facecc-by-nc-4.0updated 15d agoView on Hugging Face
1likes
Model Card

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.

LanguageTrain clipsTrain hours
Acholi4,10825.8
Akan10,10755.0
Amharic38,022189.7
Dagbani14,23177.0
Dagaare15,07183.4
Ewe15,05279.5
Fula19,13299.7
Ikposo14,41582.1
Lingala14,39971.9
Luganda5,45537.3
Masaaba6,86539.3
Malagasy18,52694.7
Nyankole6,78340.8
Oromo38,182189.9
Sidama38,752192.7
Shona14,10979.7
Soga6,21940.0
Tigrinya40,856181.9
Wolaytta41,833197.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.

HyperparameterValue
Base checkpointfacebook/omniASR-LLM-300M
TokenizeromniASR_tokenizer_v1 (SentencePiece, 9,812 units)
Training steps5,000
OptimizerAdamW
Learning rate5e-5
Weight decay0.01
Batch size3,000,000 audio tokens/batch (dynamic)
Gradient accumulation4
Precisionbfloat16 mixed
Audio length filter0.5 s – 30 s
Hardware2× 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.

LanguageCodeWERCERMonolingual WERΔ vs mono
Acholiach_Latn33.213.733.3-0.1
Akanaka_Latn29.19.829.2-0.1
Amharicamh_Ethi26.910.725.0+1.9
Dagbanidag_Latn34.011.631.2+2.8
Dagaaredga_Latn32.213.029.0+3.2
Eweewe_Latn29.89.429.0+0.8
Fulaful_Latn36.59.539.1-2.6
Ikposokpo_Latn72.524.669.2+3.2
Lingalalin_Latn29.912.530.4-0.5
Lugandalug_Latn12.12.810.9+1.1
Masaabamyx_Latn45.110.245.5-0.5
Malagasymlg_Latn12.93.411.4+1.5
Nyankolenyn_Latn32.28.432.3-0.1
Oromoorm_Latn22.86.020.9+2.0
Sidamasid_Latn30.57.528.7+1.8
Shonasna_Latn21.63.921.6+0.0
Sogaxog_Latn42.78.542.8-0.1
Tigrinyatir_Ethi40.617.437.0+3.7
Wolayttawal_Latn40.011.736.7+3.2

Usage

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

bibtex
@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](https://lynguallabs.org/) (compute, researchers & storage), [Open Token](https://opentoken.global/) (compute), and [CMU Africa](https://www.africa.engineering.cmu.edu/) (researchers & native speakers).