CoolFace
Modelpublic

Awesome-x/aci-yoruba-phase10

sourceHugging Faceapache-2.0updated 5d agoView on Hugging Face
0likes119downloads
Model Card

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.

ModelWER (held-out, normalized)
Phase 912.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](https://huggingface.co/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-phase9 acoustic 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

bash
pip install torch transformers pyctcdecode librosa
python
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)