Bangun umpan balik Anda sendiri di atas keluaran model

Quran Lab tidak menyediakan penilai. Apa itu head, ambang batas yang disertakan sebagai data, dan apa yang dibangun sendiri oleh aplikasi Anda.

SDK adalah mesin inferensi: SDK menerima audio dan mengembalikan keluaran model. SDK tidak pernah membandingkan bacaan dengan ayat yang diharapkan dan tidak pernah menyatakan bahwa ada yang keliru. Quran Lab tidak menyediakan penilai. Umpan balik yang dilihat pelajar adalah hasil kerja aplikasi Anda, yang dibangun di atas apa yang didengar model. Halaman ini menjelaskan apa yang Anda dapatkan dan apa yang perlu Anda bangun sendiri.

Yang diberikan SDK

Untuk setiap take (satu kali bacaan yang didengarkan SDK dari awal sampai akhir):

  • Lapisan hasil dekode. Apa yang didengar model, siap ditampilkan: text, tokens (masing-masing dengan id, name, firstMs, peakMs, lastMs, dan confidence), words, serta, untuk setiap frame 40 ms, token teratas beserta token peringkat kedua dan selisih di antara keduanya. settled adalah jumlah token di bagian awal yang tidak akan berubah lagi dalam take ini; isFinal bernilai true pada hasil terakhir.
  • Head. Keluaran mentah jaringan, per potongan selama take berjalan dan untuk seluruh take saat take berakhir.
  • Kosakata. model.tokens: 38 token. Blank, batas kata, 28 konsonan, bunyi dengung ikhfa, vokal pendek a, i, dan u, vokal panjang aa, ii, dan uu, serta satu token untuk bunyi asing.

Selain itu, ada dua berkas data baca-saja yang disertakan bersama model. SDK tidak pernah menerapkan atau membaca satu pun dari keduanya:

  • Kalibrasi (model.calibration): ambang batas yang diukur Quran Lab untuk model ini.
  • Data referensi (model.reference): unit yang diharapkan untuk setiap ayat.

Asal unit yang diharapkan dan hukum-hukumnya: model.reference dibuat dari acuan Quran Lab untuk fonetik dan hukum tajwid Al-Qur'an, yang juga memberikan untuk setiap unit fonnya, hukumnya, dan tempat kitab-kitab klasik menyatakan hukum itu. Acuan menunjukkan cara menghubungkannya dengan unit model, dengan sebuah contoh lengkap.

Head

Dua belas keluaran, dengan nama yang sama di setiap platform. Sesi menghitung log_probs, inter1_log_probs, timing_log_probs, gem, attr_qalqalah, dan conf, kecuali Anda meminta yang lain.

Head Laju Keterangan
log_probs 40 ms CTC akhir atas 38 token: apa yang diucapkan
inter1_log_probs 40 ms CTC dari lapisan awal, yang tetap lebih dekat dengan bunyi
inter4_log_probs 40 ms CTC dari lapisan tengah, untuk diagnosis
id_log_probs 20 ms CTC identitas atas token yang sama, dengan resolusi waktu yang lebih halus
timing_log_probs 20 ms Kapan setiap bunyi ditahan: durasi, dan berapa lama mad ditahan
gem 20 ms Tasydid: tunggal atau ditahan (bersyaddah)
attr_tafkheem 20 ms Tipis (tarqiq), tebal (tafkhim), atau tebal tingkat rendah
attr_ghunna 20 ms Tidak ada, biasa, bertasydid, ikhfa, idgham bighunnah
attr_qalqalah 20 ms Tidak ada, sughra, kubra
attr_face 20 ms Tidak ada, imalah, tashil, saktah
boundary 20 ms Satu logit per frame untuk tempat sebuah unit dimulai
conf 20 ms Satu logit keyakinan per frame

Head CTC berisi log-probabilitas atas token; gem dan head attr_ berisi probabilitas per kelas; boundary dan conf berupa logit (terapkan sigmoid).

Model ini sama sekali tidak memakai model bahasa: tanpa transducer, tanpa rescoring, tanpa prior teks. Model bahasa diam-diam mengoreksi apa yang diucapkan qari, dan justru itulah yang tidak Anda inginkan di sini.

Ambang batas disertakan sebagai data

calibration.json ikut bersama model, bertanda tangan dan diverifikasi seperti setiap berkas lainnya, dan SDK menyerahkannya kepada Anda persis seperti saat dikirimkan. Berkas ini terikat pada satu model dan satu kosakata; model_id dan tokens_sha256 di dalamnya menunjukkan model dan kosakata yang mana. Isinya:

  • kelas perbedaan satu unit (classes) yang dapat diuji oleh suatu pembacaan: vowel_sub, vowel_del, vowel_ins, short_to_long, long_to_short, cons_sub, cons_del, dan insertion;
  • empat set ambang batas bernama (strict, balanced, sensitive, very_sensitive), masing-masing disesuaikan dengan target tingkat tanda keliru pada bacaan yang benar;
  • per konteks, fusion: dua head yang dikenai ambang batas (log_probs dan inter1_log_probs), bobot a per kelas, cara menyiapkan inter1_log_probs (batas kata digabungkan ke dalam blank), serta batas clip untuk nilainya;
  • per konteks dan kelas, satu ambang batas dalam satuan nat untuk setiap set bernama, serta status: validated, experimental, unverified, atau off;
  • per konteks, angka untuk mad (madd, dibaca dari timing_log_probs), qalqalah (dari attr_qalqalah), gemination (dari gem), dan, bila build memilikinya, hasil baca per kata (word).

unverified berarti ambang batas disesuaikan pada data pengembangan dan belum dibaca pada data uji yang disisihkan (held-out), sehingga tidak ada klaim apa pun tentang tingkat tanda kelirunya. Build di kanal awal dapat membawa status ini pada sebuah kelas atau pada angka madd, qalqalah, dan gemination. Perlakukan status ini seperti Anda memperlakukan experimental: boleh dipakai, tetapi tidak dijamin. Status ini tidak pernah berarti bahwa pembacaan pada data uji yang disisihkan telah lulus.

Build juga bisa datang tanpa hasil baca per kata: kalibrasinya kemudian tidak memiliki blok word. Periksa bahwa blok itu ada sebelum Anda membacanya.

Ambang batas bisa berbeda dari satu versi model ke versi berikutnya. Baca ambang batas dari model yang dimuat; jangan pernah menyalinnya ke dalam kode Anda.

Yang dibangun sendiri oleh aplikasi Anda

  1. Unit yang diharapkan dari ayat. model.reference adalah tabel pencarian: masukannya surah dan ayat, keluarannya id unit dan batas kata. Data ini tidak termasuk dalam unduhan pertama; ambil satu kali. Id di dalamnya sama dengan id di model.tokens.
  2. Bukti di setiap posisi. Untuk setiap posisi dalam urutan yang diharapkan dan setiap alternatif satu unit dari sebuah kelas, hitung log-probabilitas forward CTC atas seluruh urutan, baik untuk urutan yang diharapkan maupun untuk alternatifnya, pada log_probs dan sekali lagi pada inter1_log_probs yang disiapkan sesuai ketentuan kalibrasi. Rasio log-likelihood sebuah head adalah log P(alternatif terbaik) dikurangi log P(yang diharapkan). Gabungkan kedua head dengan bobot kelas tersebut, a * llr(log_probs) + (1 - a) * llr(inter1_log_probs), clip hasilnya, lalu bandingkan dengan ambang batas kalibrasi untuk konteks dan kelas itu.
  3. Mad, qalqalah, dan tasydid. Mad dihitung dari timing_log_probs: rentang waktu sebuah vokal panjang ditahan, dibandingkan dengan median rentang vokal pendek dalam take itu, dengan titik potong dari kalibrasi. Qalqalah dibaca dari attr_qalqalah pada frame setelah hurufnya, dan tasydid dari gem pada rentang huruf tersebut, masing-masing dibandingkan dengan nilainya di kalibrasi.
  4. Set ambang batas mana yang didapat pelajar, dan perubahan apa pun per kelas. Itu adalah pengaturan aplikasi Anda.
  5. Redaksi yang ditampilkan kepada pelajar. Cara dan waktu sebuah perbedaan ditampilkan adalah keputusan Anda.

docs/migrating-to-3.md di setiap SDK menjelaskan penyelarasan dan rasionya langkah demi langkah.

Batasan yang perlu Anda perhitungkan dalam desain

Menurut kartu model, untuk TajweedFormer V4:

  • Kalibrasi rilis ini menandai tasydid sebagai off dan qalqalah sebagai experimental; build lain bisa menandainya secara berbeda, jadi baca setiap status dari model yang dimuat. Head attr_ghunna dan attr_tafkheem tidak memiliki ambang batas yang tervalidasi dalam rilis ini: perlakukan keduanya sebagai sinyal mentah.
  • Mad lazim memiliki terlalu sedikit titik kalibrasi untuk bisa diandalkan, dan mad muttasil adalah kelas mad yang paling lemah.
  • Rekaman dari ponsel dan suara anak-anak adalah kasus terlemah untuk setiap ambang batas.
  • Ambang batas disesuaikan untuk nilai gabungan dua head. Satu head saja, atau teks greedy, bukan bukti bahwa pelajar keliru membaca sesuatu.

Yang diminta lisensi dari layar Anda

Di tempat aplikasi Anda menampilkan umpan balik yang dibangun di atas model, sampaikan hal itu dalam satu baris: "Umpan balik tajwid otomatis bisa keliru. Umpan balik ini tidak menggantikan guru yang berkompeten." Jangan pernah menyajikan keluaran model sebagai fatwa keagamaan atas bacaan siapa pun, dan jangan pernah memungut biaya untuk model, untuk akses ke model, atau untuk fitur yang ditenagainya. Pengajaran dan pekerjaan Anda sendiri tetap milik Anda.

Analitik untuk apa yang Anda bangun

SDK menghitung apa yang diukurnya sendiri: take, detik audio, ucapan dan hening, latensi, token. Hal yang tidak dapat diketahui SDK tanpa umpan balik Anda boleh dilaporkan oleh aplikasi Anda; jika aplikasi tidak melaporkannya, tidak ada yang dikirim:

session.reportRecited(1, 1, 7);                       // surah, first ayah, last ayah of this take
client.analytics.reportChecks('vowel_sub', 31, 1);    // your rule, times checked, times flagged

Keduanya masuk ke total anonim hari itu dan ditandai di halaman aplikasi Anda sebagai dilaporkan oleh aplikasi.