ACI Yoruba Phase 10
Acoustic weights fine-tuned from Phase 9, using an error-weighted training set (samples Phase 9 got wrong, oversampled 3x) drawn from a 90% split of our AR_Audios dataset. Paired with the same KenLM decoder (alpha=0.5, beta=1.0) and phonetic map as Phase 9.
Evaluation
Measured on the untouched 10% held-out split (55 samples) -- the only samples this model's acoustic weights never saw during fine-tuning.
| Model | WER (held-out, normalized) |
|---|---|
| Phase 9 | 12.63% |
| Phase 10 (this model) | 12.33% |
| Phase X (stronger decoder config, same acoustic weights as Phase 10) | 7.09% |
The acoustic fine-tuning here produced a modest 0.3-point gain over Phase 9. A much larger gain came from decoder configuration alone -- for production use, see Awesome-x/aci-yoruba-phaseX, which uses these same acoustic weights with a stronger KenLM weighting and larger unigram vocabulary.
Training configuration
- Base:
Awesome-x/aci-yoruba-phase9acoustic weights - Method: continued fine-tuning, feature encoder frozen
- Learning rate: 1e-5, 3 epochs
- Training set: 90% split of AR_Audios (n approx 495), hard examples oversampled 3x
Quickstart
pip install torch transformers pyctcdecode librosa
import torch
import librosa
from transformers import Wav2Vec2ForCTC, Wav2Vec2ProcessorWithLM
REPO_ID = "Awesome-x/aci-yoruba-phase10"
model = Wav2Vec2ForCTC.from_pretrained(REPO_ID)
processor = Wav2Vec2ProcessorWithLM.from_pretrained(REPO_ID)
audio, sr = librosa.load("sample.wav", sr=16000)
input_values = processor(audio, sampling_rate=16000, return_tensors="pt").input_values
with torch.no_grad():
logits = model(input_values).logits
print(processor.decode(logits[0].numpy()).text)
- Downloads last month
- 136
Evaluation results
- Test WER (%, punctuation-normalized, held-out) on ACI Yoruba-English Code-Switching Held-Out Setself-reported12.330