Pricile's picture
compactage apres suppression luganda
6eed659
|
Raw
History Blame Contribute Delete
7.69 kB
# Compliance statement — data, models and licences
Google WAXAL ASR Challenge, Phase 2 · user `Pricilegangbe` · public score `0.761204`
This document discloses **every** data source and pre-trained checkpoint used to build the
submitted system, as required by the organisers.
---
## 1. Applicable rule on external datasets
The Rules page states *"You may use only the datasets specified for this challenge"*, while the
Phase 1 section states that participants *"may supplement the provided challenge data with other
publicly available open-source speech or language datasets"*. This inconsistency was raised on
the challenge discussion board and **clarified by the organisers**
([discussion 33616](https://zindi.africa/competitions/google-waxal-asr-challenge/discussions/33616),
answer by `meganomaly` (Zindi), 28 June 2026):
> "The intended rule is that participants **may use additional publicly available open-source
> speech or language datasets** during both Phase 1 and when developing the model they ultimately
> use for Phase 2. Any external datasets used must: be publicly accessible and appropriately
> licensed for research or development; comply with the competition rules; and **be clearly
> disclosed in your final solution documentation**."
The present section 2 is that disclosure.
---
## 2. Data sources used in the submitted system
| Dataset | Provenance | Licence | Used for |
|---|---|---|---|
| **`google/WaxalNLP`** — labelled train split | Official challenge dataset | Challenge dataset (CC-BY 4.0 sharing) | Fine-tuning of all three acoustic models; KenLM text; language-ID statistics; held-out development split |
| **`google/WaxalNLP`** — **unlabelled** Shona split | Official challenge dataset | idem | Self-training: pseudo-labels for the Shona model (labels generated by our own model, no external labels) |
| **`KasuleTrevor/lg_100hrs`** | **External**, public Hugging Face dataset, no gating. ~68.8 k Luganda audio–text pairs. Derived from **Mozilla Common Voice** (audio identifiers are `common_voice_lg_*`). | Underlying Common Voice corpus is released under **CC0-1.0** (public-domain dedication). The Hugging Face mirror carries no separate licence tag. | Additional **Luganda** training material for the multilingual acoustic model `joint_cont` |
### Exactly which model used which data
| Model | Role in the submission | Training material | Size |
|---|---|---|---|
| `joint_cont_best` | **Lingala** decoder | WAXAL lin + WAXAL lug + **`lg_100hrs` (external)** + WAXAL sna, concatenated | 95,467 clips / 291.6 h |
| `sna_ps_best` | **Shona** decoder | WAXAL sna (labelled) + pseudo-labelled WAXAL sna **unlabelled** split | 61,956 clips / 362.6 h |
| `sna_r2_best` | Shona n-best rescorer | WAXAL sna (labelled) only | 13,799 clips / 79.6 h |
| KenLM 5-gram | Lingala shallow fusion | **13,960 WAXAL Lingala training transcripts only** — no external text | — |
Note on `joint_cont`: the external Luganda material is **not** in either of the two evaluated
Phase 2 languages. It was included because multilingual training improves the shared encoder;
Luganda was one of the three focus languages when the model was developed.
### Not used in the final system
Several exploration scripts kept in `code/` for completeness mention datasets that are **not**
part of the submitted system — `AfriVoice` (referenced in `prep_data.py` job list and in the
`train_wbert.py` docstring example) and `BantuLanguagesInitiative/CSRC`. Neither appears in the
training manifest of any model used in the final submission; this can be verified from the
training manifests listed in the table above.
---
## 2-bis. Exact configuration of the submitted system
The submission is `sub_LMA06.csv` (public score `0.761204`, WER 0.3662 / CER 0.1121).
Test clips are routed by language using `artifacts/test_lang.json` (446 Lingala / 446 Shona).
| Language | Acoustic model | Decoding |
|---|---|---|
| **Lingala** | `joint_cont_best` | CTC beam search (`pyctcdecode`), **beam width 64**, shallow fusion with the KenLM 5-gram: **alpha = 0.6, beta = 1.0, lm_score_boundary = True**. The case of the first character is then copied from the greedy hypothesis. |
| **Shona** | `sna_ps_best` | CTC beam search **without any language model**, beam width 256; the 50-best list is re-scored by `sna_r2_best` (CTC forward score, weight 4.0) and the highest-scoring hypothesis is kept. |
`alpha = 0.6` was selected **on the public leaderboard**, not on a held-out split: our offline
development sets proved anti-correlated with the leaderboard on the language-model axis. The
measured curve is 0.5 → 0.759972, **0.6 → 0.761204**, 0.7 → 0.760865, 0.9 → 0.755362,
1.2 → 0.721312.
### Explored and **not** part of the submitted system
For the avoidance of doubt, the following were built and measured but are **absent** from the
submission:
- a **Shona KenLM** (5-gram over WAXAL Shona transcripts) — measured −0.00089, rejected;
- a **Lingala KenLM enriched** with pseudo-labelled text from the WAXAL unlabelled split —
measured −0.00444, rejected;
- a **second round of Shona self-training** (`sna_ps2`) — measured −0.00018, rejected;
- a **character-level neural rescoring LM** — rejected.
The submitted KenLM therefore uses **only the 13,960 Lingala training transcripts**, as stated in
section 2.
---
## 3. Data-leakage statement
- **No Phase 1 test transcriptions** were used for training, tuning or pseudo-labelling, at any
point, even though they are publicly available.
- **No Phase 2 test audio or transcriptions** were used for training or adaptation.
- **No pseudo-labels obtained from closed or commercial APIs.** The only pseudo-labels used
(Shona) were produced by our own model on the challenge's own unlabelled split.
- No publicly released checkpoint that had been fine-tuned on the WAXAL corpus was used, in line
with the organisers' answer in the same discussion thread.
---
## 4. Pre-trained checkpoint
| Checkpoint | Role | Licence |
|---|---|---|
| [`facebook/w2v-bert-2.0`](https://huggingface.co/facebook/w2v-bert-2.0) | Initialisation of all three acoustic models (speech encoder of SeamlessM4T v2, self-supervised pre-training by Meta AI, openly available to everyone). | **MIT** |
This is the only pre-trained checkpoint in the system. It was **not** trained on WAXAL data.
The three fine-tuned artifacts are derivatives of it.
---
## 5. Third-party software
| Component | Role | Licence |
|---|---|---|
| `transformers`, `datasets`, `accelerate` | model implementation and training loop | Apache-2.0 |
| `torch` | tensor backend | BSD-3-Clause |
| `pyctcdecode` | CTC beam search with shallow fusion | Apache-2.0 |
| `kenlm` | n-gram language model | LGPL-2.1 |
| `soundfile` / `libsndfile` | audio I/O | BSD-3-Clause / LGPL-2.1 |
| `jiwer` | our own WER/CER evaluation | Apache-2.0 |
| `ffmpeg` | 48 kHz → 16 kHz resampling of the test clips | LGPL-2.1 / GPL-2.0 |
All packages are open-source, as required. No component carries a non-commercial restriction.
`facebook/mms-1b-all` (CC-BY-NC-4.0) was evaluated during exploration and is **not** part of the
final system.
## 6. Reproducibility
- The development split is deterministic (`seed 1234`), regenerated by
`code/build_devhard_linsna.py`.
- The full pipeline is described step by step in `README.md` §3.2.
- Training used one NVIDIA L40S GPU; inference requires substantially less.
## 7. Credentials
No access token, key or credential is present in this package. Scripts that need Hugging Face
access read the token from the `HF_TOKEN` environment variable or the local Hugging Face cache;
nothing is hard-coded.