Lingala ASR — omniASR CTC-1B fine-tune (fairseq2)

Component of the 4th-place solution to the Google WAXAL ASR Challenge (Zindi, phase 2): 892 unseen clips, two African languages, no language metadata, scored 1 - (WER + CER) / 2 on raw text. Private leaderboard 0.771848284.

Code, full method and one-command verification: yehoshua0/waxal-asr-phase2 The repository reproduces the submitted CSV byte for byte on a laptop in about a minute, and re-decodes every input from the audio on rented GPUs in about four hours.

Role in the system

Witness (voter). fairseq2 checkpoint shard, loaded on top of the omniASR_CTC_1B_v2 card with strict=False. Its value is family distance from the whisper-derived voters, not solo quality.

What it measured

Re-decoding reproduces the published output to 0.63% of words.

Usage

# fairseq2 checkpoint shard, not a transformers directory
from huggingface_hub import hf_hub_download
import torch
from fairseq2.models.hub import load_model
from fairseq2.data.tokenizers import load_tokenizer
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline

model = load_model("omniASR_CTC_1B_v2", device=torch.device("cuda"), dtype=torch.bfloat16)
ck = hf_hub_download("yehoshua01/waxal-omni-ctc1b-lin", "step_1000/model/pp_00/tp_00/sdp_00.pt")
sd = torch.load(ck, map_location="cpu", weights_only=False)
# strict=False: the base carries buffers the shard does not. Missing keys WOULD be fatal.
model.load_state_dict({k.replace("_orig_mod.", ""): v for k, v in sd.items()}, strict=False)
pipe = ASRInferencePipeline(model_card=None, model=model.eval(),
                            tokenizer=load_tokenizer("omniASR_tokenizer_written_v2"))
print(pipe.transcribe(["clip16k.wav"], batch_size=1))

The rest of the system

code, method, verification yehoshua0/waxal-asr-phase2
cached decodes and chain inputs yehoshua01/waxal-phase2-chain-inputs
all checkpoints yehoshua01 on the Hub

Sibling checkpoints (primaries, voters and ablations of the same system): waxal-mms-1b-lin-pl2-spk · waxal-sunbird51-sna-pl2-spk · waxal-whisper-turbo-lin-r1 · waxal-whisper-turbo-lin-r2 · waxal-qlora-largev3-lin · waxal-omni-ctc1b-sna · waxal-sunbird51-lin-ft-r2 · waxal-sunbird51-lin-ft-light · waxal-mms-1b-lin-full · waxal-mms-1b-lin-fullmeta · waxal-ssa-hubert-lin

Licence and intended use

cc-by-nc-4.0. Training data is google/WaxalNLP (CC-BY-SA-4.0, share-alike), so derivatives carry that too.

These weights are not a general-purpose ASR model. Pseudo-labels were computed on the phase-2 test audio (transductive self-training, permitted for phase-2 training by the host), so the checkpoint is partly adapted to that specific set.

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