1 puntos por GN⁺ 2026-02-01 | 1 comentarios | Compartir por WhatsApp
  • Para ayudar a practicar la pronunciación y los tonos del chino, desarrollé directamente un modelo de voz basado en CTC de 9M de parámetros entrenado con unas 300 horas de datos de voz
  • Usa una arquitectura de encoder Conformer para capturar tanto características locales del habla como contexto global, y con una tokenización por unidades de Pinyin+tono distingue con claridad los errores de pronunciación
  • Mediante pérdida CTC, evalúa a nivel de frame lo que el usuario realmente pronunció, y realiza la alineación temporal con el algoritmo de Viterbi
  • Incluso al reducir el tamaño del modelo de 75M a 9M, casi no hubo pérdida de precisión, y tras cuantizarlo a INT8 quedó en unos 11 MB, por lo que puede ejecutarse al instante incluso en el navegador web
  • La demo basada en navegador muestra el potencial de un sistema de corrección de pronunciación on-device, y mejorar la calidad de los datos será la clave para elevar el rendimiento en el futuro

Resumen del modelo de evaluación de pronunciación

  • Para resolver las dificultades del aprendizaje de pronunciación del chino, entrené directamente un pequeño modelo de voz que califica la pronunciación
    • Se usaron unas 300 horas de datos de voz transcritos (AISHELL-1, Primewords)
    • Se ofrece en un formato que puede ejecutarse directamente en el navegador
  • Los métodos existentes de visualización de tono eran inestables por ruido, diferencias entre hablantes y otros factores, y se comprobó que un enfoque basado en datos era más eficaz
  • El objetivo es implementar un sistema Computer-Assisted Pronunciation Training (CAPT) on-device sin usar APIs comerciales

Estructura del modelo y método de entrenamiento

  • Se adoptó una arquitectura de encoder Conformer + pérdida CTC
    • La CNN captura características acústicas de ventanas cortas de tiempo (por ejemplo, zh vs z)
    • El Transformer procesa patrones tonales contextuales (por ejemplo, tone sandhi)
  • El método CTC produce distribuciones de probabilidad por frame para evaluar directamente los fonemas realmente pronunciados
    • Usa el token `` para alinear repeticiones y espacios en blanco
    • Refleja tal cual lo realmente pronunciado, sin correcciones automáticas

Tokenización y alineación

  • La combinación Pinyin+tono se define como un solo token
    • Por ejemplo, zhong1 y zhong4 son tokens distintos
    • El tono neutro se unifica como tono 5 (ma5)
    • En total: 1,254 tokens + ,
  • Con el algoritmo de Viterbi se calcula la ruta óptima entre los frames de voz y los tokens
    • Por ejemplo, al pronunciar “Nǐ hǎo” se distinguen los segmentos ni3 y hao3

Reducción del modelo y rendimiento

  • El modelo inicial de 75M de parámetros se redujo hasta 9M
    • 75M: TER 4.83%, Tone Accuracy 98.47%
    • 9M: TER 5.27%, Tone Accuracy 98.29%
    • La pérdida de precisión fue mínima, lo que sugiere que es una tarea dependiente de los datos (data-bound)
  • El modelo FP32 (37 MB) se redujo a 11 MB mediante cuantización INT8
    • Puede cargarse de inmediato en el navegador mediante onnxruntime-web

Errores de alineación y corrección

  • Surgió un problema en el que los segmentos de silencio distorsionaban la evaluación de la pronunciación
    • Ejemplo: antes de pronunciar “我喜欢…”, 1 segundo de silencio se alineaba erróneamente con wo3 y se calificaba con 0 puntos
  • Solución: excluir los frames de silencio del cálculo de la puntuación
    • Se filtran los frames cuya probabilidad de `` sea de 0.7 o más
    • Tras la corrección, la puntuación de confianza de la primera sílaba mejoró de 0.0 a 0.99

Resultados y limitaciones

  • Durante las pruebas beta se percibió el efecto de la corrección de pronunciación
    • El modelo califica de forma muy estricta
  • La voz de hablantes nativos y de niños muestra una caída de precisión
    • Los datos de AISHELL son principalmente de lectura en voz alta, por lo que hay diferencias de velocidad y entonación
    • En el futuro será necesario añadir datos conversacionales como Common Voice
  • La demo web pesa alrededor de 13 MB y ofrece corrección de pronunciación completa con un tamaño más ligero que la mayoría de los sitios web

1 comentarios

 
GN⁺ 2026-02-01
Comentarios en Hacker News
  • Gracias por este proyecto, está realmente genial
    Pero me pareció raro que en la frase “我想学中文” reconociera “wén” como “guó”
    Eso da la impresión de que el modelo aprendió la estructura de las palabras más que los tonos. Como “Zhōng guó” aparece mucho en los datos de entrenamiento, parece que se generó ese sesgo
    Como dice la entrada del blog, da la impresión de que no es un “modelo que te dice lo que realmente pronuncié”, sino una estructura que mapea al más cercano entre 1254 sílabas posibles

    • Probé repitiendo “guó” varias veces, pero no lo reconoció de forma repetida
      Aun así, me gusta este enfoque de aprendizaje centrado en la voz. El aprendizaje basado en escritura se vuelve confuso porque cada país tiene sistemas de notación distintos. Incluso el pinyin tiene muchos símbolos que confunden a principiantes
  • La idea y la UI me parecieron intuitivas e impresionantes
    Pero incluso yo, que soy de Beijing y hablo mandarín estándar perfectamente, tuve problemas para pasar preguntas fáciles
    En el ejemplo “你好吃饭了吗”, el reconocimiento de tonos estaba mal, y “了” en ese contexto debería ser “le”, no “liǎo”
    Mucha gente se preocupa por los tonos, pero en la práctica, aunque no sean perfectos, normalmente no causan grandes problemas de comunicación
    Como la entonación cambia según la región, incluso si los tonos se mezclan la gente suele entenderse bien. Recomiendo no obsesionarse con los tonos y aprender con base en el contexto

    • Como hablante nativo, discrepo: los tonos son muy importantes
      Aunque existan diferencias dialectales, la gente puede comunicarse porque 1) entre regiones vecinas la diferencia tonal no suele ser tan grande, y 2) cuando no se entienden, cambian al estándar (putonghua)
      La razón misma de que exista el chino se debe a su sistema tonal. Si los tonos están mal, la comunicación se vuelve casi imposible
    • Desde mi experiencia estudiándolo hasta nivel C1 en Taiwán, los tonos son importantes al principio, pero el contexto compensa más a medida que aumenta tu capacidad de expresión
      Aun así, una de las razones por las que en China se comunica tanto por escrito es que, como la pronunciación y los tonos cambian entre regiones, solo con la voz muchas veces no basta para entenderse
    • Entre nativos, aunque los patrones tonales difieran, la gramática y la entonación son predecibles y por eso pueden entenderse, pero los estudiantes no tienen esa ventaja
      Motivar a la gente a ignorar los tonos es peligroso. Si de verdad no fueran importantes, ya habrían desaparecido
    • Lo de “了” fue un bug de JavaScript y ya quedó corregido. El resto se puede mejorar con conjuntos de datos más variados
    • Aunque se diga que los tonos no importan tanto, hay muchos casos en los que una diferencia tonal cambia por completo el significado, como “熊猫(xióngmāo)” y “胸毛(xiōngmáo)”
      Cuando el contexto es limitado, eso genera confusión, así que los tonos siguen siendo clave. Además, hace falta reforzar los datos: por ejemplo, reconoce “吃” como “shi2”
  • Como estudiante intermedio, me creé una cuenta nueva para dejar comentarios
    Cuando hablo rápido, el seguimiento de fonemas falla y el reconocimiento tonal se desajusta
    Por ejemplo, si digo “他是我的朋友” a velocidad natural, reconoce “我” como “de” o procesa “是” como “si”
    Si hablo despacio y articulando, lo reconoce bien
    También debería considerar fenómenos como los cambios consecutivos de tercer tono (tone sandhi). Hace falta una función que maneje la pronunciación dentro de conversaciones naturales

    • El cambio tonal es una parte central de la pronunciación del chino. Por ahora parece más bien de nivel principiante y necesita mejoras
    • Gracias a los comentarios, ya agregué soporte para sandhi (cambio tonal). Piden que les digan si funciona bien
    • A mí también me pareció que no estaba manejando el cambio tonal. Aun así, la idea está buenísima
    • A mí me pasó lo mismo. Bromeé con si sería porque soy “dapangzi”
  • Para quienes hablan lenguas europeas, aprender chino u otras lenguas tonales es muy difícil
    El oído no está acostumbrado a los tonos, así que uno cree que los dice bien pero un nativo no entiende

    • Como hablante nativo de chino, siento que el sistema vocálico del inglés es mucho más difícil
      En inglés las vocales cambian según la región y cuesta distinguir diferencias como “done vs down” o “beat vs bit”
      En cambio, el español fue mucho más fácil de aprender porque sus vocales son simples
    • Por eso entiendo por qué los chinos se equivocan en la pronunciación del inglés o del alemán: el foco de atención es distinto
    • Para quienes no están acostumbrados a los tonos o a la altura tonal, puede ser desesperantemente difícil, pero herramientas como esta hacen que el proceso sea menos doloroso
      Cuando aprendí el acento tonal del japonés, al principio no notaba ninguna diferencia, pero con práctica repetida empecé a escucharlo
      Cuando me di cuenta de que incluso en inglés hay patrones de tono, como en “uh-oh”, empecé a agarrarle la idea
    • A veces digo frases simples y la gente igual no me entiende.
      En particular, el problema es el hábito de usar entonación al estilo inglés para expresar incertidumbre
    • Pero los tonos no son tan difíciles. Lo realmente difícil es la cantidad de vocabulario
      Los tonos y la gramática son la base que se aprende al principio, y después durante años casi todo el esfuerzo se va en memorizar palabras
      La verdadera dificultad del chino está en la falta de vocabulario compartido y en su sistema de escritura no fonémico
  • Funciona bien solo cuando hablas palabra por palabra; a nivel de frase o a velocidad natural hay muchos falsos reconocimientos
    Yo soy hablante nativo con certificación 2A de mandarín estándar, y aun así comete errores si hablo de manera casual
    El modelo no distingue entre la conversación cotidiana y la pronunciación formal

  • Cuando estudiaba en Taiwán, para memorizar los tonos practicaba dibujando con la mano la curva tonal
    Me veía como un extranjero loco, pero sí funcionaba
    Como también hay grandes diferencias de acento regional, sería bueno recolectar datos de referencia por hablante nativo

    • En mi clase también hubo un estudiante que exageraba mucho los tonos, pero al final terminó teniendo la pronunciación más precisa
      Me arrepiento de no haberlo imitado en ese momento
    • Recomiendo la clase de YouTube de Mike Laoshi
    • Yo también lo probé solo con unos pocos amigos, y estoy pensando si configurar la región como parámetro. Si entreno todos los dialectos, el sistema podría volverse demasiado permisivo
    • Esto se parece a la forma de expresar la altura del sonido con movimientos de la mano, como en el entrenamiento de solfeo
    • Los movimientos de la mano ayudan especialmente al memorizar palabras nuevas. Si marcas el tono con los dedos, se te queda mejor
  • Soy nativo, pero la demo no reconoció mi pronunciación
    Probablemente fue por el ruido de fondo. Mi hija estaba viendo caricaturas al lado

    • Por ahora es sensible al ruido de fondo, pero dicen que están entrenando una versión mejorada con aumento de datos
  • El proyecto está muy bueno, pero me gustaría aconsejar que no dependa demasiado de la retroalimentación externa
    La clave de corregir la pronunciación es entrenar el oído. Incluso en aprendices adultos sigue habiendo neuroplasticidad, así que conviene ejercitar el oído con pares mínimos y cosas por el estilo
    Eso mejora no solo la pronunciación, sino también la comprensión auditiva y la velocidad de adquisición de vocabulario

    • Estoy desarrollando Phrasing.app y coincido totalmente con ese consejo
      La sincronización texto-audio (estilo karaoke) fue mucho más efectiva que SST
      Resultó muy útil para el aprendizaje que el usuario pudiera escuchar su propia voz superpuesta con la original y notar por sí mismo la diferencia
    • Pienso lo mismo. Escuchar es la base de hablar
      Más que memorizar el tono de cada palabra, es mucho más natural imitar tal cual la pronunciación de un nativo
  • Me impresionó que todo funcione dentro del navegador con ONNX Runtime Web
    También fue una decisión inteligente usar alineación forzada para evitar adivinar el significado y aislar solo el problema tonal
    En versiones futuras, si agregan sandhi tonal como postproceso, sería todavía más útil para practicar a velocidad de conversación

  • Ojalá hubiera un modo pinyin. Yo solo estoy aprendiendo a hablar, no a leer caracteres
    Estoy organizando vocabulario con la webapp de flashcards que hice

    • Dijeron que era una buena sugerencia y que ya agregaron una función para alternar pinyin
    • Yo pienso lo mismo. Pero me frustró que no reconozca bien las consonantes; tampoco creo tener tan mala pronunciación
    • Le sumo otro voto al modo pinyin