Instructions to use Dickson32-cell/akan-twi-mms with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Dickson32-cell/akan-twi-mms with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-to-audio", model="Dickson32-cell/akan-twi-mms")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForTextToWaveform tokenizer = AutoTokenizer.from_pretrained("Dickson32-cell/akan-twi-mms") model = AutoModelForTextToWaveform.from_pretrained("Dickson32-cell/akan-twi-mms", device_map="auto") - Notebooks
- Google Colab
- Kaggle
AkanTwi-MMS: Asante Twi Text-to-Speech — original fine-tune (research baseline)
Single-speaker Asante Twi (Akan) TTS: VITS checkpoint fine-tuned from Meta's facebook/mms-tts-aka on 9.09 h (6,360 clips post-filter) of one professional narrator from GhanaNLP's ghana-speech (Bible register), 11,940 optimizer steps, Colab T4.
Repo role: this is the ORIGINAL fine-tune, retained as the research baseline and ablation. Measured on the validated judge (10 unseen prompts, seed 33, noise 0.667), both fine-tunes sit above the base model; a lower-LR retrain recovered 39% of the regression and is the submitted variant at Dickson32-cell/akan-twi-mms-gentle. If you need working Akan TTS today, start with the base model.
Model Details
- Developed by: Abdul Rashid Dickson
- Model type: VITS — single-stage conditional VAE with adversarial learning, text→waveform end-to-end (MMS-TTS variant, character-level Akan tokenizer, 30-symbol vocab; 83M parameters, 16 kHz)
- Language(s): Asante Twi (Akan macro-language, ISO 639-3 aka)
- Finetuned from: facebook/mms-tts-aka
- License: CC-BY-NC-4.0 (inherited: checkpoint, dataset and judge are all CC BY-NC 4.0 — non-commercial use only)
- Model DOI: 10.57967/hf/10778
Model Sources
- Repository: https://github.com/Dickson32-cell/akan-tts-asante (own code: normalizer + test suite, corpus selection/dedup methodology, eval design +
--engine mms_akajudge port, environment patches, training configs) - Technical report: "Fine-tuning Massively Multilingual Speech Models for Asante Twi Text-to-Speech" (Oct 2026, submission document; ships with the artifact package)
- External review: "Akan TTS Fine-tune Review" (Oct 9-13, 2026) — its findings are addressed in the report and repo (infer.py settings fix, judge ported to
eval_asr.py --engine mms_aka, configs added, README rebuilt)
Training Data (selection funnel, executed run)
143,383 ghana-speech segments (200.02 h) → − 874 digit-prefix chapter headers → − 784 under-3-letter rows → − 49,956 outside the 2.0–12.0 s window → − 30,853 duplicate normalized texts → 60,916 unique rows (84.95 h) → single recording tradition (.1461/.1861 only; .2094 is a second narrator — kept out for purity) → 43.11 h across 60 books → 200 eval clips reserved first (seed 1234) → 9.09 h train budget: 6,402 clips, 42 lost to the harness's own length filter (6,360 trained).
- Narrator: single professional male reader; Bible-domain text
- Dialect: Asante Twi (untone-marked orthography)
- Consent/licence: dataset ships CC BY-NC 4.0 per GhanaNLP's card; no speaker was solicited for TTS use by this project
Training Procedure
ylacombe/finetune-hf-vits (MIT), 30 epochs = 11,940 steps, batch 16, LR 2e-4 (cosine, 2% warmup), Adam β=(0.8, 0.99), weight decay 0.01, loss weights mel 35 / disc 3 / KL 1.5 / duration 1 / fmaps 1 / gen 1, fp16, seed 456, 4.07 h wall clock on a Tesla T4 (Colab free tier). Launcher config: configs/akan-twi-original.json in the code repo. Checkpoints every 1,000 steps.
Convergence evidence: at run time no log survived the session (a review finding); this repo hosts the recovered evidence set (losses.csv, loss_curve.png, convergence_summary.json from the re-instrumented tooling). Later runs publish these automatically.
Environment hardening (documented as contribution): transformers pinned 4.49 (Colab 5.x drops harness-required config attrs); datasets pinned 3.2.0 (4.x/5.x route audio through torchcodec-FFmpeg and break WAV); harness loader patched to load_from_disk (format-inference crash on per-split formats); float-slice int-cast (Python 3.13); matplotlib buffer_rgba; single-process preprocessing. All syntax-verified and idempotent (scripts/patch_harness_v2.py).
Evaluation
Command: python src/eval_asr.py --samples <dir> --engine mms_aka — the repo's evaluator now carries the judge itself: Meta MMS-1b-all CTC ASR + Akan adapter (load_adapter('aka') BEFORE use; measured inflation without it: 0.20 vs 0.088 CER), finiteness guard, and a mismatched-prompt control. Judge bias caveat: judge descends from the same Meta MMS family as the base model; Bible-domain behaviour may favour base phonetics — not ruled out. Mismatched-text control CER 0.92–1.04 across models = the judge discriminates matched from mismatched pairs.
10 unseen everyday-Twi prompts, seed 33, noise 0.667:
| Model | CER | WER |
|---|---|---|
Base facebook/mms-tts-aka |
0.088 | 0.319 |
| This original fine-tune (ablation) | 0.324 | 0.769 |
| Gentle retrain (submitted; see -gentle repo) | 0.232 | 0.662 |
At noise 1.0: base 0.107 / original 0.424 / gentle 0.315 (measured Oct 9 runs; re-verification on CPU in progress).
Interpretation: on this judge this checkpoint sits far above its base (documented regression) and above the gentle retrain; it is retained (not deleted) as the baseline the improvement claim is measured against. Human listening panel (blinded MOS kit; Twi teacher recruited) is the designed perceptual check — results ship with the submission; ASR numbers are the objective, reproducible layer, not the perceptual gold standard.
Environmental Impact (estimate, Lacoste et al. 2019)
Hardware: 1× Tesla T4 · ~4.07 h training + ~0.6 h evaluation · cloud region: US (Colab) · ≈ 0.02 kg CO₂e (estimate; T4 draws ~50–70 W; grid-intensity assumption documented in repo).
Limitations and Bias
- Worse than its base model on the validated judge (see table) — do not use where the base suffices
- Single narrator, Bible domain; everyday-domain outputs show prosody flattening and ɛ→e articulatory blur (measured:
nea→niɛconfusions) - Untone-marked orthography → prosody acquired implicitly, not tone-controlled
- Short-clip metallic artifacts (<2 s rows, excluded by the duration window); residual breath insertions from the reading register
Intended / Out-of-Scope Use
- Research use: negative/ablation documentation, reproduction harness for low-resource TTS
- Out of scope: commercial deployment (CC BY-NC 4.0), voice cloning of persons, tone-pair-critical applications, use beyond Akan text
How to Get Started
from transformers import VitsModel, VitsTokenizer
import torch, scipy.io.wavfile, numpy as np
model = VitsModel.from_pretrained("Dickson32-cell/akan-twi-mms")
tok = VitsTokenizer.from_pretrained("Dickson32-cell/akan-twi-mms")
tok(noise_scale=...) # VITS sampling settings are LIVE attributes - see src/infer.py apply_inference_settings
inputs = tok(text="Mema wo akye, me nuanom. Wo ho te sɛn?", return_tensors="pt")
with torch.no_grad():
wav = model(**inputs).waveform[0]
scipy.io.wavfile.write("out.wav", rate=model.config.sampling_rate,
data=(np.clip(wav.numpy(), -1, 1)*32767).astype(np.int16))
Citation
@misc{akanTwimms2026,
author = {Abdul Rashid Dickson},
title = {AkanTwi-MMS: Akan (Asante Twi) Text-to-Speech Model},
year = {2026},
doi = {10.57967/hf/10778},
url = {https://huggingface.co/Dickson32-cell/akan-twi-mms}
}
APA: Dickson, A. R. (2026). AkanTwi-MMS: Akan (Asante Twi) text-to-speech model. Hugging Face. https://doi.org/10.57967/hf/10778
Model Card Contact
Abdul Rashid Dickson — dicksonapam@gmail.com — https://github.com/Dickson32-cell/akan-tts-asante
- Downloads last month
- 117
Model tree for Dickson32-cell/akan-twi-mms
Base model
facebook/mms-tts-aka