1 points par GN⁺ 2026-02-01 | 1 commentaires | Partager sur WhatsApp
  • 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
    Publicité

Tokenisation et alignement

  • Chaque combinaison Pinyin+ton est définie comme un token unique
    • Exemple : zhong1 et zhong4 sont des tokens différents
    • Le ton neutre est unifié en ton 5 (ma5)
    • Total : 1 254 tokens + ,
  • 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 ni3 et hao3
Publicité

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

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
  • 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
    Publicité

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

 
GN⁺ 2026-02-01
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

    • J’ai essayé de répéter « guó » plusieurs fois, mais il ne l’a pas reconnu de manière répétée
      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

    • Pour répondre en tant que locuteur natif, les tons sont extrêmement importants
      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
    • Du point de vue de quelqu’un qui a appris jusqu’au niveau C1 à Taïwan, les tons sont importants au début, mais plus on gagne en expressivité, plus le contexte compense
      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
    • Entre natifs, même si les schémas tonals diffèrent, la grammaire et l’intonation restent prévisibles, donc on peut se comprendre, mais ce n’est pas le cas pour les apprenants
      Encourager à ignorer les tons est risqué. Si les tons n’étaient vraiment pas importants, ils auraient déjà disparu
    • Le problème avec « 了 » était un bug JavaScript et il a été corrigé. Le reste peut être amélioré avec des jeux de données plus variés
    • Même si l’on dit que les tons ne sont pas si importants, il existe beaucoup de cas comme 熊猫(xióngmāo) et 胸毛(xiōngmáo), où une différence de ton change complètement le sens
      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

    • Le sandhi tonal est au cœur de la prononciation chinoise. Pour l’instant, c’est encore au niveau débutant et il faut l’améliorer
    • Merci pour ce retour, j’ai ajouté la prise en charge du sandhi tonal. Dites-moi si cela fonctionne bien
    • J’ai aussi eu l’impression que le sandhi tonal n’était pas pris en charge. Mais l’idée reste vraiment géniale
    • J’ai eu le même problème moi aussi. Une blague suggérait que c’était peut-être parce que c’était « dapangzi »
  • 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 tant que locuteur natif du chinois, j’ai l’impression que le système vocalique de l’anglais est bien plus difficile
      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
    • Du coup, je comprends pourquoi les Chinois font des erreurs de prononciation en anglais ou en allemand. L’attention ne se porte pas sur les mêmes éléments
    • Pour quelqu’un qui n’est pas habitué aux tons ou à la hauteur, c’est terriblement difficile, mais des outils comme celui-ci rendent le processus moins pénible
      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
    • Il m’arrive souvent de dire des phrases simples sans être compris.
      Le problème vient surtout de mon habitude d’exprimer l’incertitude avec une intonation à l’anglaise
    • Mais les tons ne sont pas si difficiles. Le vrai défi, c’est le volume de vocabulaire
      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

    • Dans mon cours aussi, un étudiant exagérait énormément les tons, et au final, c’est lui qui a acquis la prononciation la plus précise
      Je regrette de ne pas l’avoir imité à l’époque
    • Je recommande la leçon YouTube de Mike Laoshi
    • Je n’ai fait des tests qu’avec quelques amis moi aussi, et je me demande s’il faut paramétrer la région. Si on entraîne le modèle sur tous les dialectes, il risque de devenir trop tolérant
    • C’est un peu comme l’entraînement au solfège, où l’on exprime la hauteur avec des gestes de la main
    • Les gestes de la main sont particulièrement utiles pour mémoriser de nouveaux mots. Indiquer les tons avec les doigts aide vraiment à s’en souvenir
  • 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é

    • Pour l’instant, le système est sensible au bruit de fond, mais une version améliorée grâce à l’augmentation de données est en cours d’entraînement
  • 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

    • Je développe Phrasing.app, et je suis entièrement d’accord avec ce conseil
      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
    • Je pense pareil. L’écoute est la clé même de la parole
      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

    • Bonne suggestion, j’ai ajouté une fonction de bascule pinyin
    • Je pense pareil. En revanche, la reconnaissance des consonnes ne marchait pas très bien, ce qui était frustrant. Je ne pense pourtant pas avoir une si mauvaise prononciation
    • Une voix de plus pour le mode pinyin