- Pour aider à pratiquer la prononciation et les tons du chinois, j’ai créé moi-même un modèle vocal basé sur CTC de 9M de paramètres, entraîné sur environ 300 heures de données vocales
- Il utilise une architecture d’encodeur Conformer pour capturer à la fois les caractéristiques vocales locales et le contexte global, avec une tokenisation en unités Pinyin+ton qui distingue clairement les erreurs de prononciation
- Grâce à la perte CTC, le modèle évalue image par image ce que l’utilisateur a réellement prononcé, et effectue l’alignement temporel avec l’algorithme de Viterbi
- Même en réduisant la taille du modèle de 75M à 9M, il n’y a eu presque aucune perte de précision ; après quantification INT8, il ne pèse plus qu’environ 11 Mo et peut s’exécuter immédiatement dans un navigateur web
- La démo dans le navigateur montre le potentiel d’un système de correction de prononciation on-device, et l’amélioration de la qualité des données sera la clé des progrès futurs
Vue d’ensemble du modèle d’évaluation de la prononciation
- Pour répondre à la difficulté de l’apprentissage de la prononciation chinoise, j’ai entraîné moi-même un petit modèle vocal qui note la prononciation
- En utilisant environ 300 heures de données vocales transcrites (AISHELL-1, Primewords)
- Fourni sous une forme exécutable directement dans le navigateur
- Les méthodes de visualisation de la hauteur existantes étaient instables à cause du bruit, des différences d’élocution, etc., et une approche fondée sur les données s’est révélée plus efficace
- L’objectif est d’implémenter un système Computer-Assisted Pronunciation Training (CAPT) on-device sans API commerciale
Architecture du modèle et méthode d’entraînement
- Adoption d’une architecture encodeur Conformer + perte CTC
- Le CNN capte les caractéristiques acoustiques de très courte durée (ex. : zh vs z)
- Le Transformer traite les schémas tonals contextuels (ex. : tone sandhi)
- La méthode CTC produit une distribution de probabilité par image afin d’évaluer directement les phonèmes réellement prononcés
- Le token `` est utilisé pour aligner les répétitions et les espaces
- Le contenu réellement prononcé est reflété tel quel, sans correction automatique
Tokenisation et alignement
- Chaque combinaison Pinyin+ton est définie comme un token unique
- Exemple :
zhong1etzhong4sont des tokens différents - Le ton neutre est unifié en ton 5 (
ma5) - Total : 1 254 tokens +
,
- Exemple :
- L’algorithme de Viterbi calcule le chemin optimal entre les images audio et les tokens
- Exemple : pour la prononciation de « Nǐ hǎo », il distingue les segments
ni3ethao3
- Exemple : pour la prononciation de « Nǐ hǎo », il distingue les segments
Allègement du modèle et performances
- Réduction du modèle initial de 75M de paramètres jusqu’à 9M
- 75M : TER 4,83 %, Tone Accuracy 98,47 %
- 9M : TER 5,27 %, Tone Accuracy 98,29 %
- La perte de précision est minime, ce qui suggère une tâche limitée par les données (data-bound)
- Le modèle FP32 (37 Mo) a été réduit à 11 Mo via quantification INT8
- Chargement immédiat dans le navigateur via
onnxruntime-web
- Chargement immédiat dans le navigateur via
Erreurs d’alignement et correction
- Les segments de silence posaient problème en faussant l’évaluation de la prononciation
- Exemple : une seconde de silence avant la prononciation de « 我喜欢… » était incorrectement alignée sur
wo3, ce qui donnait une note de 0
- Exemple : une seconde de silence avant la prononciation de « 我喜欢… » était incorrectement alignée sur
- Solution : exclure les images silencieuses du calcul du score
- Filtrage des images dont la probabilité de `` est supérieure ou égale à 0,7
- Après correction, le score de confiance de la première syllabe est passé de 0,0 à 0,99
Résultats et limites
- Les tests bêta ont montré un effet tangible sur la correction de prononciation
- Le modèle note de manière très stricte
- La précision baisse pour les voix de locuteurs natifs et d’enfants
- Les données AISHELL étant surtout des lectures à voix haute, il existe des écarts de vitesse et d’intonation
- À l’avenir, il faudra ajouter des données conversationnelles comme Common Voice
- La démo web pèse environ 13 Mo et fournit une fonction complète de correction de prononciation dans un format plus léger que la plupart des sites web
1 commentaires
Commentaires Hacker News
Merci pour ce projet vraiment génial
En revanche, il était étrange que, dans la phrase « 我想学中文 », « wén » soit reconnu comme « guó »
Cela donne l’impression que le modèle a appris la structure des mots plutôt que les tons. Comme « Zhōng guó » apparaît souvent dans les données d’entraînement, cela semble avoir introduit ce biais
Comme indiqué dans le billet de blog, cela ressemble moins à « un modèle qui indique la prononciation que j’ai réellement produite » qu’à une structure qui mappe vers la syllabe la plus proche parmi 1 254 possibilités
Cela dit, j’aime bien cette approche d’apprentissage centrée sur l’audio. L’apprentissage basé sur l’écrit est confus, car les systèmes de notation varient selon les pays. Pour un débutant, même le pinyin contient beaucoup de symboles déroutants
L’idée et l’UI sont intuitives, c’était impressionnant
Mais même moi, qui viens de Pékin et parle parfaitement le mandarin standard, j’ai eu du mal à réussir des questions faciles
Dans l’exemple « 你好吃饭了吗 », la reconnaissance des tons était erronée, et dans ce contexte, « 了 » devrait être « le », pas « liǎo »
Beaucoup s’inquiètent des tons, mais en pratique, même s’ils ne sont pas parfaits, cela ne pose pas de gros problème pour communiquer
Comme l’intonation varie selon les régions, les gens se comprennent généralement très bien même si les tons sont mélangés. Je recommande de ne pas trop s’y accrocher et de privilégier un apprentissage centré sur le contexte
Si des gens de dialectes régionaux différents peuvent communiquer, c’est parce que 1) les écarts de tons entre régions voisines ne sont pas si grands, et 2) quand ils ne se comprennent pas, ils basculent vers la langue standard (putonghua)
Si le chinois existe sous cette forme, c’est précisément grâce à son système tonal. Si les tons sont faux, la communication devient presque impossible
Cela dit, l’une des raisons pour lesquelles on communique en Chine surtout par écrit est aussi que, selon les régions, la prononciation et les tons diffèrent tellement que la seule parole ne suffit pas toujours
Encourager à ignorer les tons est risqué. Si les tons n’étaient vraiment pas importants, ils auraient déjà disparu
Quand le contexte est limité, cela crée de la confusion, donc les tons restent essentiels. Il faut aussi davantage d’augmentation de données, par exemple quand « 吃 » est reconnu comme « shi2 »
En tant qu’apprenant intermédiaire, j’ai créé un compte juste pour laisser un retour
Quand on parle vite, le suivi phonémique marche mal et la reconnaissance des tons se décale
Par exemple, si je dis « 他是我的朋友 » à vitesse naturelle, « 我 » peut être reconnu comme « de » ou « 是 » traité comme « si »
Si je parle lentement et très distinctement, c’est reconnu correctement
Il faut aussi prendre en compte des phénomènes comme les changements de troisième ton en chaîne (sandhi tonal). Il faudrait une fonction capable de gérer la prononciation en conversation naturelle
Pour les locuteurs de langues européennes, apprendre le chinois ou une autre langue tonale est extrêmement difficile
L’oreille n’étant pas habituée aux tons, on pense parler correctement alors que les natifs ne comprennent pas
En anglais, les voyelles changent selon les régions, et il est difficile de distinguer des différences comme « done vs down » ou « beat vs bit »
En revanche, l’espagnol, avec ses voyelles simples, était bien plus facile à apprendre
Quand j’ai appris l’accent de hauteur en japonais, au début je n’entendais absolument aucune différence, mais à force de répétition, j’ai fini par commencer à les percevoir
C’est en réalisant qu’il existe aussi des schémas de hauteur en anglais, comme dans « uh-oh », que j’ai commencé à comprendre
Le problème vient surtout de mon habitude d’exprimer l’incertitude avec une intonation à l’anglaise
Les tons et la grammaire sont les bases qu’on assimile au début, puis pendant des années l’essentiel de l’effort va à la mémorisation des mots
La vraie difficulté du chinois, c’est le faible partage lexical et un système d’écriture non phonémique
Cela fonctionne bien seulement quand on prononce des mots isolés, mais au niveau des phrases ou à vitesse naturelle, il y a beaucoup de fausses reconnaissances
Je suis locuteur natif avec la certification standard 2A, et pourtant si je parle de manière détendue, il y a des erreurs
Le modèle n’arrive pas à distinguer la conversation courante de la prononciation formelle
Quand j’étudiais à Taïwan, pour mémoriser les tons, je m’entraînais en traçant les courbes tonales avec la main
J’avais l’air d’un étranger complètement fou, mais c’était vraiment efficace
Comme les accents régionaux diffèrent beaucoup, ce serait bien de collecter des données de référence par locuteur natif
Je regrette de ne pas l’avoir imité à l’époque
Je suis natif, mais la démo n’a pas reconnu ma prononciation
C’était probablement à cause du bruit de fond. Ma fille regardait des dessins animés à côté
Projet vraiment génial, mais je voudrais conseiller de ne pas trop dépendre du feedback externe
Le cœur de la correction de prononciation, c’est l’entraînement de l’oreille. Même chez l’adulte, la neuroplasticité existe encore, donc il faut entraîner son oreille avec des exercices d’écoute de paires minimales, par exemple
Cela améliore énormément non seulement la prononciation, mais aussi la compréhension orale et la vitesse d’acquisition du vocabulaire
La synchronisation texte-audio (style karaoké) s’est révélée bien plus efficace que le SST
Le fait que l’utilisateur puisse écouter sa propre voix superposée à l’original et repérer lui-même les écarts a été très utile pour l’apprentissage
Plutôt que de mémoriser les tons mot par mot, imiter directement la prononciation des natifs est bien plus naturel
Le fait que tout fonctionne dans le navigateur avec ONNX Runtime Web est impressionnant
L’approche consistant à utiliser un alignement forcé pour éviter de deviner le sens et isoler uniquement le problème des tons est astucieuse
Dans les prochaines versions, ajouter le sandhi tonal en post-traitement rendrait l’outil encore plus utile pour s’exercer à vitesse de conversation
J’aimerais qu’il y ait un mode pinyin. Moi, j’apprends seulement à parler, pas à lire les caractères
J’organise mon vocabulaire avec la webapp de flashcards que j’ai créée