MMS Asante Twi (BibleTTS)

Asante Twi speech recognition. The Akan adapter of facebook/mms-1b-all fine-tuned on BibleTTS with repaired transcripts.

⚠️ Non-commercial only

This model inherits CC BY-NC 4.0 from facebook/mms-1b-all. It may not be used commercially.

Note also that the training data, BibleTTS, is CC BY-SA 4.0, and BY-SA and BY-NC are not compatible licences. Whether trained weights constitute a derivative of their training data is unsettled, so this is flagged rather than resolved. If you need a commercially usable Twi recogniser, start from a permissively licensed base instead.

Results

Test split (Colossians, 64 clips), scored with jiwer after lowercasing and removing punctuation:

WER CER
This model 17.2% 3.9%
facebook/mms-1b-all, unmodified 27.6% 6.8%
openai/whisper-small, zero-shot 126.5% 92.3%
Published: Whisper-small fine-tuned on 2h Akan Bible (Mensah et al. 2025) 37.0% 11.0%

⚠️ This is a scripture transcriber

17.2% is measured on Bible readings by the single narrator the model trained on. Do not read it as general Twi speech recognition.

Mensah et al. 2025 measured Akan models of this kind collapsing outside their training domain: a Bible-trained model scoring 37% in-domain reached 64% on crowd-recorded sentences and 80% on spontaneous speech. Nothing in this model's training makes it exempt, and no evaluation here would detect it.

For general Ghanaian-language speech recognition, Khaya AI from GhanaNLP is trained on multi-speaker, multi-domain data.

Usage

import torch, soundfile as sf
from transformers import AutoProcessor, Wav2Vec2ForCTC

repo = "danieldzikunuofmarvel/mms-asante-twi-bibletts"
processor = AutoProcessor.from_pretrained(repo)
model = Wav2Vec2ForCTC.from_pretrained(repo).eval()

audio, sr = sf.read("clip.wav")          # 16 kHz mono
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")
with torch.no_grad():
    ids = torch.argmax(model(**inputs).logits, dim=-1)[0]
print(processor.decode(ids))

Output is lowercase with no punctuation: the MMS Akan vocabulary is 35 character-level tokens and holds neither.

Training

Base facebook/mms-1b-all, aka adapter, base frozen
Trainable 2.2M of 965M parameters (0.23%)
Data 21,342 clips, 57.6 h, single male narrator, 16 kHz
Hardware A100 40GB, bf16
Batch 7 × 2 accumulation = 14 effective
Epochs 3 (4,575 steps), learning rate 1e-3, 100 warmup
Time about 1h 15m

Best checkpoint selected on dev WER rather than loss.

One detail worth repeating elsewhere

MMS's Akan vocabulary contains no sentence punctuation. The repaired transcripts do, because punctuation was restored for a speech synthesis model that needs it for phrase breaks. Training on that text unchanged produced 201 <unk> tokens across 64 test labels and the model learned to predict them, wasting roughly 8% of output positions and inflating the measured error rate.

Filtering labels to the tokenizer's vocabulary before training took the starting loss from 3.03 to 0.65 and the test WER from 28.9% to 17.2%. If you fine-tune MMS on text from a source that carries punctuation, check this first.

Attribution

  • Base model: MMS, Pratap et al., Meta AI. CC BY-NC 4.0.
  • Speech data: BibleTTS, Meyer et al., Interspeech 2022. CC BY-SA 4.0.
  • Transcripts: Biblica Open Asante Twi Contemporary Bible. CC BY-SA 4.0.
Downloads last month
31
Safetensors
Model size
1.0B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for danieldzikunuofmarvel/mms-asante-twi-bibletts

Finetuned
(423)
this model

Dataset used to train danieldzikunuofmarvel/mms-asante-twi-bibletts

Paper for danieldzikunuofmarvel/mms-asante-twi-bibletts

Evaluation results

  • WER on BibleTTS Asante Twi (repaired transcripts), test split
    self-reported
    17.200
  • CER on BibleTTS Asante Twi (repaired transcripts), test split
    self-reported
    3.900