Adapter l’intelligence artificielle au créole
1 – Le problème
Whisper a créé un véritable « boom » dans la communauté IA en 2022 : ce modèle, entraîné sur 680 000 heures d’audio dans de nombreuses langues, a été publié en open source par OpenAI (ce qui est plus rare qu’il n’y paraît). Il est désormais la base de la plupart des outils de retranscription vocale, supplantant des systèmes comme Alexa, Siri ou Google Assistant.
Pourtant, même ce champion a ses limites : il ne comprend pas certaines langues. Par exemple, pour le créole réunionnais, Whisper (dans sa version whisper-large-v3, testée en janvier 2025) n’arrive souvent pas à saisir le sens. À titre d’exemple (comme on peut le voir ici dans la section « prediction large ») :
- « Nana in moune i koz… ? » (Quelqu’un parle… ?)
→ Transcrit : « Nana est moniqueuse. » - « Lé posib shanzhé ? » (Est-il possible de changer ?)
→ Transcrit : « Les possibles sont osés ? » - « Mi rod in zhournal » (Je cherche un journal)
→ Transcrit : « Mirodin Zouhanal » - « Mi sava » (Je vais)
→ Transcrit : « Il s’en va »
Avec de telles traductions, non seulement le sens est complètement perdu, mais le résultat devient parfois totalement absurde.
2 – Contexte
Je suis né et j’ai grandi à La Réunion jusqu’à mes 20 ans. Le créole réunionnais est parlé par 455 000 personnes et se caractérise par une forte oralité : l’écrit n’y est pas stabilisé, avec plusieurs orthographes en usage, et le français domine souvent quand il s’agit de mettre des mots sur le papier. Dans ce contexte, le créole réunionnais fait partie des « low-resource languages », ces langues peu ou mal représentées dans l’IA.
Si tous les outils (comme Whisper) requièrent qu’on parle français ou anglais, on peut imaginer un futur dystopique où seules les quelques langues principales seraient prises en compte… Au risque de voir les autres disparaître dans la vraie vie, car sans vie numérique.
J’ai été frappé de voir des problèmes similaires un peu partout :
- Hakka (Chine) : Formospeech sur Hugging Face
- Langues régionales françaises (basque, alsacien) : étude
- Swahili (Afrique) : exemple
Mon excitation venait de l’idée de pouvoir, moi aussi, mettre la main à la pâte : au-delà de la simple utilisation classique de l'IA (inférence/prompting/agent), tenter d’entrer dans le cœur du système. C’était comme se retrouver face à un cachalot énigmatique, gigantesque et insaisissable…
3 – Réunir les données
Je n'ai aucune formation linguistique ni de formation en intelligence artificielle. Je me suis donc contenté d’une approche naïve : pour entraîner un modèle sur le créole réunionnais, il me fallait simplement des audios en créole et leurs transcriptions.
J’ai écrit un script Python pour récupérer des vidéos sur YouTube :
- Une vidéo de 2 h sur l’histoire de la Réunion
- Des cours pour apprendre le créole
- Un film sur la vie du Christ, doublé avec des acteurs réunionnais
Je les ai placés dans ce jeu de données. Ces données ne servent qu’à des tests temporaires d’entraînement IA. Je devais ensuite découper les fichiers en segments de moins de 30 secondes, en m’appuyant sur un détecteur de silences pour faciliter l’alignement.
Je savais déjà que la propreté des données était un facteur essentiel, mais pas à quel point. J’avais en tête la fameuse scaling laws : plus on a de data propre, plus l’IA est performante. Mon ambition de départ : au moins faire un peu mieux que Whisper à l’état brut, en imaginant qu’avec davantage de données, on pourrait encore progresser.
Voilà donc mes données en main : il était temps de faire chauffer les GPU et d’affronter la bête.
4 – Entraîner le modèle Whisper
Le créole réunionnais mêle souvent le français et le créole, parfois dans la même phrase. L’idéal serait donc un modèle bilingue, capable de jongler avec ces deux registres sans confusion. Pour tester l’efficacité de mes réglages, j’ai choisi comme validation la chanson de Jacqueline Farreyrole, qui alterne le créole et le français, et m’a replongé dans mes souvenirs d’enfance à l’îlet Geoffroy, du côté de Saint-Pierre :
Chanson de Jacqueline Farreyrole
Je me suis plongé dans l’affinage (fine-tuning) de Whisper grâce à ce tutoriel, qui explique comment ajuster les innombrables paramètres d’entraînement : learning_rate
, lr_scheduler_type
, save_steps
, num_train_epochs
, gradient_checkpointing
, etc. Je me délectais de voir Google Colab me mettre à disposition des GPU, comme un précieux sésame pour explorer ces pistes.
Ajuster tous les curseurs…
Les réglages, c’est un peu comme piloter un navire au milieu de l’océan : on a la barre, les voiles, quelques instruments, mais la météo peut toujours nous surprendre. Je pensais tout contrôler avec ces curseurs, alors qu’en réalité, le modèle est parfois très capricieux. Chaque entraînement se terminait par un tableau affichant l’évolution du WER (Word Error Rate), c’est-à-dire le pourcentage de caractères erronés comparés à la référence. L’objectif ? Arriver sous la barre des 10 %, signe d’une transcription convenable.
Sauf que dans la pratique, c’était loin d’être évident. J’avais réuni environ 3000 segments audio (mélangeant créole et français), que je confiais au modèle. Je lançais l’entraînement le soir, plein d’espoir, et je me réveillais parfois le matin avec la désagréable surprise : un WER qui explosait à 50 % ou plus. Au lieu de s’améliorer, le modèle partait en vrille, au point d’oublier même le français basique. Parfois, cela dépassait même les 80 %. Résultat : toutes les langues se mélangeaient, rien n’était plus cohérent.
Mon enthousiasme en a pris un coup... Je me suis demandé si je devais incriminer la qualité des données : des enregistrements mal découpés, du bruit de fond, des locuteurs qui basculent du français au créole trop rapidement… Ou si c’était un mauvais réglage de paramètres, comme une learning_rate trop élevée, ou un déséquilibre entre les données d’entraînement et de validation, influant la capacité du modèle à apprendre efficacement et à généraliser ses prédictions.
… avant de se recentrer sur un test minimaliste
Pour y voir plus clair, j’ai décidé de simplifier mon approche : me concentrer sur une seule expression créole, « mi sa va », que je voulais faire comprendre comme « je vais ». J’ai donc enregistré ma propre voix sur des dizaines de variations, par exemple « mi sa va dehors », « mi sa va l’aéroport », pour multiplier les occurrences de cette tournure. Au début, ça semblait fonctionner : Whisper commençait à saisir la correspondance entre « mi sa va » et « je vais ».
Hélas, cette réussite s’est accompagnée d’un effet secondaire : le modèle perdait encore ses repères en français. Quand je vérifiais sur la chanson de Farreyrole, la transcription devenait totalement incohérente. En gros, en apprenant le créole réunionnais, il désapprenait d’autres éléments. Il ne voyait qu’une suite de phrases de langues différentes, qu’il identifiait parfois au français, en faisant des contre-sens, au portugais, ou au créole haïtien.
Un problème plus profond : la langue absente des paramètres
C’est là que j’ai mis le doigt sur une limite fondamentale :
- Le tokenizer (le module qui divise les phrases en unités plus petites pour que l’IA puisse les traiter efficacement) de Whisper n’inclut pas le créole réunionnais. En fouillant dans le code source, on remarque qu’il y a un « créole haïtien », mais rien sur La Réunion.
- Ajouter tout le vocabulaire créole réunionnais reviendrait à refaire un entraînement géant, comme celui qu’OpenAI a mené initialement, et qui requiert des milliers d’heures d’audio.
- Le fine-tuning, lui, ne sert qu’à peaufiner ce que le modèle « connaît » déjà. Si l’on veut lui faire découvrir une langue inconnue, c’est une tout autre affaire.
J’ai également exploré d’autres approches, notamment le rapprochement phonétique. Ces modèles analysent les sons en phonèmes, cherchant à reconnaître la parole en se basant uniquement sur les caractéristiques sonores, sans prise en compte directe du contexte sémantique. Mais cette technique se heurte à un autre mur : la gestion du contexte. Les homonymes (mer, mère, maire) peuvent provoquer des contresens énormes. Sans un décodeur GPT capable de probabiliser la suite des mots, on obtient une transcription trop « brute », qui ne sait pas distinguer la bonne interprétation.
Ce qui fait la force de Whisper, c’est justement cette approche probabiliste et non strictement déterministe. Il tente de deviner ce que vous voulez dire en s’appuyant sur un langage-modèle interne. Pour le créole réunionnais, cela impliquerait d’énormes quantités de données et un entraînement bien plus vaste qu’un simple fine-tuning.
5 - Constats
Au final, j’ai compris que, dans l’état actuel, Whisper ne peut assimiler efficacement une langue absente de sa base initiale, sauf à tout revoir depuis le départ. Et ça, seuls des acteurs disposant de ressources colossales (OpenAI, ou d’autres géants du domaine) peuvent s’y risquer.
Pour un développeur indépendant, on navigue souvent à vue, en expérimentant diverses stratégies : affiner le modèle, sélectionner plus rigoureusement les données, ajuster les paramètres d’entraînement, ou encore adopter d’autres approches comme l’optimisation par QLoRA ou l’apprentissage par renforcement avec retour humain (RLHF). Mais malgré ces efforts, cela ne suffit pas à créer un nouveau langage « officiel » dans le tokenizer de Whisper, qui reste contraint par ses fondations initiales.
Autre question : comment évaluer la transcription d’une langue sans orthographe officielle ? Le WER compare des chaînes de caractères, ce qui est pratique pour le français standard, mais pas pour le créole, où « cœur » peut s’écrire « ker » ou « koeur ». De même, si chacun a sa propre manière d’écrire un mot, lequel est correct ?
On peut imaginer un dictionnaire sous forme de graphe, listant toutes les variantes, ou utiliser des métriques comme le PER (Phoneme Error Rate). Mais ce n’est pas simple à mettre en œuvre et ne règle pas tout, surtout si le modèle n’a pas une notion claire du contexte.
6 – Perspectives
À mon échelle, cette expérience ne prétend pas aboutir à une vérité absolue, mais elle montre les défis à relever pour intégrer un « low resource language » dans un système d'IA. J’ai publié mes résultats en open source : Collection créole réunionnais. Peut-être que la communauté s’en emparera, ce qui permettra d’avancer.
Plusieurs pistes d’action existent :
- Numériser les principaux dictionnaires créoles réunionnais, ainsi que des livres et autres ouvrages, pour fournir une base solide au préentraînement. Un des sujets d'Arthur Mensch, CEO de Mistral, dans ce podcast.
- Archiver davantage d’enregistrements, podcasts, émissions, livres audio, etc.
- Proposer des données d’évaluation claires. L’entraînement d’un modèle complet demande des ressources considérables, accessibles uniquement à une poignée d’entreprises dans le monde. En revanche, nous pouvons influer sur la manière dont l’IA comprend et retranscrit le créole, et le parle même, en évaluant le travail de chaque modèle publié.
Des travaux de recherche, comme cette étude sur la langue basque et son corpus de 4,3 millions de documents, montrent l'importance de telles initiatives pour mieux intégrer les langues minoritaires dans les modèles d’IA.
Si un jour, Whisper intègre officiellement le créole réunionnais, on pourra vraiment passer à la vitesse supérieure via le fine-tuning. Mais pour l’instant, on parle de millions heures d'enregistrements et de moyens matériels importants, donc pas à la portée du bricoleur lambda.
Reste que l’open source évolue vite. Qui sait ce qui peut se produire avec suffisamment de passionnés ? La langue créole ne représente qu'une goutte d'eau dans l'océan des langues, mais doit se battre pour sa survie, et cela passe par sa vie numérique.
Hugo How-Choong