1 poin oleh GN⁺ 2026-02-01 | 1 komentar | Bagikan ke WhatsApp
  • Untuk membantu latihan pelafalan dan nada bahasa Mandarin, saya membuat sendiri model suara berbasis CTC dengan 9M parameter yang dilatih menggunakan sekitar 300 jam data suara
  • Menggunakan arsitektur encoder Conformer untuk menangkap sekaligus ciri suara lokal dan konteks global, serta tokenisasi unit Pinyin+nada agar kesalahan pelafalan bisa dibedakan dengan jelas
  • Melalui CTC loss, model mengevaluasi apa yang benar-benar diucapkan pengguna pada tingkat frame, lalu melakukan penyelarasan waktu dengan algoritme Viterbi
  • Bahkan setelah ukuran model diperkecil dari 75M→9M, hampir tidak ada penurunan akurasi, dan setelah kuantisasi INT8 ukurannya menjadi sekitar 11MB sehingga bisa langsung dijalankan di browser web
  • Demo berbasis browser menunjukkan potensi sistem koreksi pelafalan on-device, dan peningkatan kualitas data menjadi kunci utama untuk peningkatan performa ke depan

Gambaran umum model evaluasi pelafalan

  • Untuk mengatasi kesulitan belajar pelafalan bahasa Mandarin, penulis melatih sendiri model suara kecil untuk memberi skor pelafalan
    • Menggunakan sekitar 300 jam data suara bertranskrip (AISHELL-1, Primewords)
    • Disediakan dalam bentuk yang bisa langsung dijalankan di browser
  • Metode visualisasi pitch yang sudah ada tidak stabil karena noise, perbedaan cara bicara, dan faktor lain, sehingga pendekatan berbasis data terbukti lebih efektif
  • Tujuannya adalah mewujudkan sistem on-device Computer-Assisted Pronunciation Training (CAPT) tanpa API komersial

Struktur model dan metode pelatihan

  • Mengadopsi struktur encoder Conformer + CTC loss
    • CNN menangkap ciri akustik pada rentang waktu pendek (misalnya zh vs z)
    • Transformer menangani pola nada yang bergantung pada konteks (misalnya tone sandhi)
  • Metode CTC menghasilkan distribusi probabilitas per frame sehingga fonem yang benar-benar diucapkan bisa dievaluasi secara langsung
    • Menggunakan token `` untuk menyelaraskan pengulangan dan jeda
    • Mencerminkan apa yang benar-benar diucapkan tanpa koreksi otomatis

Tokenisasi dan penyelarasan

  • Kombinasi Pinyin+nada didefinisikan sebagai satu token
    • Contoh: zhong1 dan zhong4 adalah token yang berbeda
    • Nada netral diseragamkan menjadi tone 5 (ma5)
    • Total 1.254 token + ,
  • Algoritme Viterbi menghitung jalur optimal antara frame suara dan token
    • Contoh: saat mengucapkan “Nǐ hǎo”, segmen ni3 dan hao3 dapat dibedakan

Perampingan model dan performa

  • Model awal dengan 75M parameter diperkecil hingga 9M
    • 75M: TER 4.83%, Tone Accuracy 98.47%
    • 9M: TER 5.27%, Tone Accuracy 98.29%
    • Penurunan akurasi sangat kecil, yang menunjukkan ini adalah tugas yang data-bound
  • Model FP32 (37MB) diperkecil menjadi 11MB dengan kuantisasi INT8
    • Bisa langsung dimuat di browser melalui onnxruntime-web

Kesalahan penyelarasan dan perbaikannya

  • Muncul masalah ketika segmen hening mengganggu evaluasi pelafalan
    • Contoh: 1 detik hening sebelum pengucapan “我喜欢…” salah disejajarkan sebagai wo3, sehingga dinilai 0
  • Solusi: mengeluarkan frame hening dari perhitungan skor
    • Memfilter frame dengan probabilitas `` sebesar 0.7 atau lebih
    • Setelah diperbaiki, skor kepercayaan suku kata pertama meningkat dari 0.0 → 0.99

Hasil dan keterbatasan

  • Selama beta test, efek koreksi pelafalan terasa nyata
    • Model memberi penilaian dengan sangat ketat
  • Suara penutur asli dan anak-anak menunjukkan penurunan akurasi
    • Data AISHELL terutama berupa suara gaya membaca, sehingga ada perbedaan kecepatan dan intonasi
    • Ke depan perlu menambahkan data percakapan seperti Common Voice
  • Demo web berukuran sekitar 13MB, dan menyediakan fungsi koreksi pelafalan penuh dengan ukuran yang lebih ringan daripada kebanyakan situs web

1 komentar

 
GN⁺ 2026-02-01
Komentar Hacker News
  • Terima kasih untuk proyek yang benar-benar keren ini
    Namun, terasa aneh bahwa dalam kalimat “我想学中文”, “wén” dikenali sebagai “guó”
    Ini tampaknya menunjukkan bahwa model mempelajari struktur kata alih-alih nada. Sepertinya bias itu muncul karena “Zhōng guó” sering muncul di data latih
    Seperti yang disebutkan dalam tulisan blog, ini tampaknya bukan model yang memberi tahu pelafalan yang benar-benar saya ucapkan, melainkan struktur yang memetakan ke yang paling dekat dari 1254 suku kata yang mungkin

    • Saya mencoba mengulang “guó” berkali-kali, tetapi pengenalan berulang tidak berhasil
      Meski begitu, saya suka pendekatan pembelajaran yang berpusat pada suara seperti ini. Pembelajaran berbasis tulisan membingungkan karena sistem penulisannya berbeda di tiap negara. Bagi pemula, bahkan pinyin pun punya banyak simbol yang membingungkan
  • Idenya dan UI-nya intuitif, jadi sangat mengesankan
    Tetapi bahkan saya yang berasal dari Beijing dan menguasai bahasa Mandarin standar dengan sempurna pun sulit lolos soal yang mudah
    Pada contoh “你好吃饭了吗”, pengenalan nadanya salah, dan “了” dalam konteks itu seharusnya “le”, bukan “liǎo”
    Banyak orang khawatir soal nada, tetapi dalam praktiknya, komunikasi tetap tidak terlalu terganggu walau nada tidak sempurna
    Karena intonasi berbeda di tiap daerah, orang-orang tetap saling mengerti meski nada tercampur. Saya merekomendasikan pembelajaran yang berpusat pada konteks dan tidak terlalu terobsesi pada nada

    • Sebagai penutur asli, saya ingin membantah: nada itu sangat penting
      Alasan orang masih bisa berkomunikasi walau dialek daerah berbeda adalah karena 1) perbedaan nada antardaerah yang berdekatan tidak terlalu besar, dan 2) saat tidak saling paham, mereka beralih ke bahasa standar (Putonghua)
      Alasan bahasa Mandarin bisa eksis seperti sekarang justru karena sistem nadanya. Jika nadanya salah, komunikasi hampir mustahil
    • Dari sudut pandang seseorang yang belajar hingga level C1 di Taiwan, nada memang penting di awal, tetapi semakin ekspresif seseorang, konteks akan semakin membantu
      Namun, salah satu alasan Tiongkok berkomunikasi dengan berpusat pada tulisan adalah karena pelafalan dan nada berbeda di tiap daerah, sehingga suara saja sering tidak cukup untuk saling memahami
    • Sesama penutur asli masih bisa saling paham meski pola nada berbeda karena tata bahasa dan intonasinya bisa diprediksi, tetapi pelajar tidak punya keuntungan itu
      Memotivasi orang untuk mengabaikan nada itu berbahaya. Jika nada memang tidak penting, seharusnya sudah hilang sejak lama
    • Masalah “了” ternyata adalah bug JavaScript dan sudah diperbaiki. Sisanya bisa ditingkatkan dengan dataset yang lebih beragam
    • Walau dikatakan nada tidak penting, ada banyak kasus seperti 熊猫(xióngmāo) dan 胸毛(xiōngmáo) yang maknanya jadi sepenuhnya berbeda karena perbedaan nada
      Saat konteksnya sempit, kebingungan mudah terjadi, jadi nada tetap krusial. Selain itu, perlu pengayaan data karena “吃” dikenali sebagai “shi2”
  • Sebagai pelajar tingkat menengah, saya membuat akun baru hanya untuk meninggalkan umpan balik
    Saat bicara cepat, pelacakan fonemnya kurang bagus dan pengenalan nadanya meleset
    Misalnya, jika saya mengucapkan “他是我的朋友” dengan kecepatan alami, “我” kadang dikenali sebagai “de” atau “是” diproses sebagai “si”
    Jika diucapkan pelan dan jelas, hasil pengenalannya akurat
    Fenomena seperti perubahan nada berturut-turut pada nada ketiga (tone sandhi) juga perlu diperhitungkan. Diperlukan fitur yang bisa menangani pelafalan dalam percakapan alami

    • Perubahan nada adalah inti pelafalan bahasa Mandarin. Saat ini masih di tingkat untuk pemula, jadi perlu ditingkatkan
    • Berkat masukan ini, dukungan sandhi (perubahan nada) sudah ditambahkan. Tolong beri tahu apakah sekarang bekerja dengan baik
    • Saya juga merasa penanganan perubahan nada belum berfungsi. Meski begitu, idenya benar-benar keren
    • Saya juga mengalami masalah yang sama. Mungkin karena “dapangzi” ya, canda saya
  • Bagi penutur bahasa Eropa, mempelajari bahasa Mandarin atau bahasa bernada lainnya itu sangat sulit
    Telinga mereka tidak terbiasa dengan nada, jadi mereka merasa sudah mengucapkannya dengan benar padahal penutur asli tidak memahaminya

    • Sebagai penutur asli Mandarin, saya merasa sistem vokal bahasa Inggris jauh lebih sulit
      Dalam bahasa Inggris, vokal berubah-ubah menurut daerah, dan sulit membedakan hal seperti “done vs down”, “beat vs bit”
      Sebaliknya, bahasa Spanyol punya vokal yang sederhana sehingga jauh lebih mudah dipelajari
    • Karena itu saya paham mengapa orang Tiongkok sering salah dalam pelafalan bahasa Inggris dan Jerman. Fokus perhatian mereka memang berbeda
    • Bagi orang yang tidak terbiasa dengan nada atau tinggi-rendah suara, ini terasa nyaris gila sulitnya, tetapi alat seperti ini bisa membuat prosesnya tidak terlalu menyakitkan
      Saat belajar pitch accent bahasa Jepang, awalnya saya sama sekali tidak bisa merasakan perbedaannya, tetapi dengan latihan berulang akhirnya mulai terdengar
      Saya mulai memahami polanya setelah sadar bahwa bahasa Inggris juga punya pola pitch, seperti pada “uh-oh”
    • Kadang orang tidak mengerti bahkan saat saya mengucapkan kalimat sederhana.
      Terutama kebiasaan mengekspresikan ketidakpastian dengan intonasi gaya bahasa Inggris yang menjadi masalah
    • Namun, nada sebenarnya tidak sesulit itu. Yang benar-benar sulit adalah jumlah kosakata
      Nada dan tata bahasa adalah dasar yang dipelajari di awal, lalu selama bertahun-tahun sesudahnya sebagian besar usaha terserap untuk menghafal kata
      Kesulitan sejati bahasa Mandarin adalah minimnya kosakata bersama dan sistem tulisan yang nonfonemis
  • Ini hanya bekerja baik saat berbicara per kata; pada tingkat kalimat atau kecepatan alami, salah pengenalannya banyak
    Saya penutur asli dengan sertifikat Putonghua level 2A, tetapi tetap muncul kesalahan jika saya bicara santai
    Model ini tidak bisa membedakan percakapan sehari-hari dan pelafalan formal

  • Saat belajar di Taiwan, saya berlatih menggambar kurva nada dengan tangan agar bisa mengingat nada
    Saya tampak seperti orang asing gila, tetapi efeknya benar-benar nyata
    Karena perbedaan aksen daerah juga besar, akan bagus kalau data acuan dikumpulkan per penutur asli

    • Di kelas saya juga ada murid yang mengucapkan nada dengan sangat berlebihan, dan belakangan justru memiliki pelafalan paling akurat
      Saya menyesal dulu tidak menirunya
    • Saya merekomendasikan kuliah YouTube Mike Laoshi
    • Saya juga baru menguji dengan beberapa teman saja, dan sedang mempertimbangkan apakah wilayah harus dijadikan parameter. Jika semua dialek dipelajari, modelnya bisa jadi terlalu permisif
    • Ini mirip dengan latihan solfeggio, mengekspresikan tinggi nada dengan gerakan tangan
    • Gerakan tangan sangat membantu terutama saat menghafal kata baru. Jika nadanya ditandai dengan jari, ingatannya lebih melekat
  • Saya penutur asli, tetapi demo ini tidak bisa mengenali pelafalan saya
    Mungkin karena kebisingan latar belakang. Putri saya sedang menonton kartun di sebelah

    • Saat ini memang sensitif terhadap kebisingan latar, tetapi katanya versi yang ditingkatkan dengan augmentasi data sedang dilatih
  • Proyek ini benar-benar keren, tetapi saya ingin menyarankan agar jangan terlalu bergantung pada umpan balik eksternal
    Inti koreksi pelafalan adalah melatih telinga. Bahkan pelajar dewasa masih punya neuroplastisitas, jadi telinga bisa dilatih lewat latihan mendengar pasangan minimal dan sejenisnya
    Dengan begitu, bukan hanya pelafalan yang membaik, tetapi juga kemampuan menyimak dan kecepatan menyerap kosakata meningkat besar

    • Saya sedang mengembangkan Phrasing.app, dan sangat setuju dengan saran ini
      Dibanding SST, sinkronisasi teks-audio (gaya karaoke) jauh lebih efektif
      Metode agar pengguna mendengar suaranya sendiri ditumpuk dengan audio asli lalu mengenali perbedaannya sendiri sangat berguna untuk belajar
    • Saya juga berpikir begitu. Mendengarkan adalah inti dari berbicara
      Daripada menghafal nada tiap kata, meniru pelafalan penutur asli apa adanya terasa jauh lebih alami
  • Sangat mengesankan bahwa semuanya berjalan langsung di browser dengan ONNX Runtime Web
    Pendekatan yang mengisolasi masalah nada saja dengan metode forced alignment, tanpa menebak makna, sangat cerdas
    Pada versi mendatang, akan lebih berguna untuk latihan kecepatan percakapan jika perubahan nada (sandhi) ditambahkan sebagai tahap pascapemrosesan

  • Akan bagus jika ada mode pinyin. Saya hanya belajar berbicara dan tidak belajar membaca huruf Mandarin
    Saya sedang menata kosakata dengan web app flashcard yang saya buat

    • Saran yang bagus, jadi katanya fitur toggle pinyin sudah ditambahkan
    • Saya juga berpikiran sama. Hanya saja pengenalan konsonannya kurang baik sehingga cukup membuat frustrasi. Rasanya pelafalan saya tidak seburuk itu
    • Satu suara lagi untuk mode pinyin