mms-mos-finetuned

Adaptateur CTC fine-tune pour la reconnaissance automatique de la parole en moore (Mossi, mos), a partir du modele multilingue facebook/mms-1b-all (Meta AI).

Produit dans le cadre du Hackathon IA CITADEL Summer School 2026, sujet "Audio Semantique Souverain" - indexation et veille critique de messages vocaux en langue nationale, sans transcription prealable fiable, sans API externe proprietaire.

Resultat cle

Metrique Valeur
WER (Word Error Rate) 13.7 % sur 50 exemples de validation
Corpus d'entrainement 10 000 exemples
Corpus de validation 1 000 exemples (50 evalues)
Epochs 3
Perte d'entrainement (debut -> fin) 0.503 -> 0.216

Pourquoi ce fine-tuning

Le modele de base facebook/mms-1b-all couvre le moore via un adaptateur generique entraine sur un corpus multilingue a tres faible volume par langue (l'architecture MMS partage un seul backbone wav2vec2 entre plus de 1000 langues, avec un adaptateur leger specifique par langue). En usage zero-shot, la transcription produite est exploitable mais bruitee - le brief du hackathon anticipe explicitement des taux d'erreur superieurs a 60 % pour les langues a tres faibles ressources dans ce regime.

L'objectif de ce fine-tuning : ameliorer specifiquement l'adaptateur mos en l'exposant a un volume plus important de parole moore reelle, sans toucher au backbone partage (qui doit rester valide pour les ~1000 autres langues du modele).

Methode

Famille de technique : PEFT par adaptateurs natifs MMS, pas LoRA

Ce fine-tuning appartient a la famille PEFT (Parameter-Efficient Fine-Tuning) : seule une fraction reduite des parametres du modele est entrainee, le reste du backbone restant fige. LoRA (Low-Rank Adaptation), une technique PEFT repandue qui insere des matrices de decomposition de rang faible par-dessus des poids geles via la librairie peft, n'a pas ete utilisee ici.

Nous avons exploite l'architecture a adaptateurs native de MMS : un module dedie par langue, deja integre au modele par Meta. Concretement, apres chargement de l'adaptateur mos (model.load_adapter("mos")), tous les parametres du modele ont ete geles, puis uniquement les couches dont le nom contient adapter ou lm_head ont ete redegelees pour l'entrainement :

model.load_adapter(LANG)
for param in model.parameters():
    param.requires_grad = False
for name, param in model.named_parameters():
    if "adapter" in name or "lm_head" in name:
        param.requires_grad = True

Le reste du backbone wav2vec2 (partage entre toutes les langues du modele) reste integralement fige.

Piste d'amelioration future : ajouter LoRA par-dessus le backbone partage (au-dela du seul adaptateur natif mos) permettrait potentiellement un gain supplementaire, sans fine-tuner le modele complet - au prix d'une complexite d'implementation plus elevee (dependance a peft, fusion des poids apres entrainement). Non explore ici par contrainte de temps (48h).

Pourquoi cette approche plutot qu'un fine-tuning complet

  1. Frugalite computationnelle (critere du brief, 15 % de la note) : un volume de parametres entrainables tres reduit permet un entrainement complet sur un seul GPU T4 gratuit (Google Colab), sans risque de saturation memoire.
  2. Preservation du backbone multilingue : un fine-tuning complet du modele 1B aurait risque un oubli catastrophique des autres langues supportees par le meme backbone partage.

Perte et optimisation

  • Fonction de perte : CTC (Connectionist Temporal Classification)
  • Taux d'apprentissage : 3e-4, 100 pas de warmup
  • Batch size effectif : 8 (batch_size=2 x gradient_accumulation_steps=4)
  • Precision : fp16 (T4-friendly)
  • 3 epochs, 3750 pas au total

Normalisation des donnees - etape critique

Le texte brut du corpus contient de la ponctuation editoriale, des majuscules, des chiffres et des guillemets typographiques, un tiret cadratin et des espaces insecables - autant de caracteres absents du vocabulaire CTC de l'adaptateur mos. Un diagnostic de couverture du vocabulaire sur un echantillon a revele seulement 40.5 % de couverture avant normalisation, contre 100 % apres. La normalisation a consiste a mettre en minuscules, retirer ponctuation et guillemets typographiques, normaliser les espaces (y compris l'espace insecable Unicode \xa0), et retirer les chiffres.

Sans cette etape, l'essentiel du signal de supervision aurait ete perdu en tokens <unk>, rendant l'entrainement largement inefficace malgre un volume de donnees suffisant.

Donnees

  • Source : CITADEL-BF-Center/moore_audio_data (~27 100 lignes, audio + texte aligne, domaine biblique/jw.org)
  • Sous-echantillon utilise : 10 000 exemples (entrainement) + 1 000 exemples (validation), tires aleatoirement (seed fixe pour reproductibilite)

Limite de domaine - assumee et documentee

Ce corpus est exclusivement de registre biblique/religieux. Le WER de 13.7 % est mesure dans ce meme domaine. Un risque de transfert de domaine est attendu sur du contenu hors-registre (sante, agriculture, gouvernance locale - le contenu reel vise par le hackathon) : un phenomene deja observe par l'equipe sur un fine-tuning NLLB anterieur utilisant un corpus biblique similaire (chrF++ en effondrement de 37.74 a 19.00 hors domaine). Ce risque n'a pas pu etre mesure ici par manque de donnees annotees hors-domaine au moment du fine-tuning, faute de temps (contrainte des 48h du hackathon). C'est l'axe d'amelioration prioritaire identifie pour une iteration future : melanger ce corpus avec des exemples du domaine cible plutot que de fine-tuner sur une seule source homogene.

Exemples de resultats (echantillon de validation)

Reference Prediction
bala wennaam pa bakd ned ye bala wennaam pa bakd ned ye (exact)
wennaam vuuga zeezi kanga la tond faa yaa bon kang kaset ramba wennaam vuuga zeezi kanga la tond faa yaa bon kang kaset ramba (exact)
re poore sodom riima yeela a abram yaa ko maam neba la f tall paoonga re poore sodom riima yeela a abraam yaa ko maam neba la f tall paanga
a yaa wa mutard bila a budba wakate a yaa bilf... a yaa wa murtaagd bila a budba wakate yaa yaa bilf...

La majorite des erreurs residuelles portent sur des diacritiques vocaliques ou de legers decalages de frontiere de mot - pas sur des erreurs de contenu lexical.

Utilisation

Ce depot contient uniquement les poids de l'adaptateur fine-tune (adapter_mos_finetuned.bin, quelques Mo), pas le modele de base complet (1B parametres, a charger separement depuis facebook/mms-1b-all).

import torch
from transformers import Wav2Vec2ForCTC, AutoProcessor
from huggingface_hub import hf_hub_download

BASE_MODEL = "facebook/mms-1b-all"
LANG = "mos"

processor = AutoProcessor.from_pretrained(BASE_MODEL, target_lang=LANG)
model = Wav2Vec2ForCTC.from_pretrained(
    BASE_MODEL, target_lang=LANG, ignore_mismatched_sizes=True
)
model.load_adapter(LANG)

adapter_path = hf_hub_download(
    repo_id="Uriath/mms-mos-finetuned",
    filename="adapter_mos_finetuned.bin",
)
finetuned_state = torch.load(adapter_path, map_location="cpu")
model.load_state_dict(finetuned_state, strict=False)

model.eval()

Licence

Ce modele est un derive de facebook/mms-1b-all, distribue sous licence CC-BY-NC-4.0 (Meta AI). Cet adaptateur herite de la meme licence : usage non-commercial uniquement, avec attribution.

Equipe et contexte

Developpe par Equipe 2 / CITADEL Summer School 2026 dans le cadre du defi Audio Semantique Souverain (Burkina Faso), aligne avec la Feuille de Route Nationale d'Intelligence Artificielle du Burkina Faso 2026-2030 et le cadre ethique VERTUS (Equite, Ethique, Redevabilite, Transparence, Utilite, Souverainete).

Citation

@misc{sukre2026mms,
  title={mms-mos-finetuned: Adaptateur MMS fine-tune pour le moore},
  author={Equipe 2},
  year={2026},
  howpublished={\url{https://huggingface.co/Uriath/mms-mos-finetuned}},
  note={Hackathon CITADEL Summer School 2026}
}
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Uriath/mms-mos-finetuned

Adapter
(8)
this model

Dataset used to train Uriath/mms-mos-finetuned