المعمارية
يعتمد المشروع معمارية CTC متعددة المستويات فوق Wav2Vec2BERT، بحيث يتنبأ كل مستوى بسلسلة مختلفة:
- سلسلة الفونيمات (المستوى الأساسي)
- صفات الحروف (مستويات ثانوية: رأس لكل صفة)
المكوّنات الأساسية موجودة في src/quran_muaalem/modeling/.
التدفق العام
الصوت (16 kHz)
→ مستخرج الخصائص (AutoFeatureExtractor)
→ مشفر Wav2Vec2BERT
→ رؤوس CTC متعددة المستويات
→ فك ترميز CTC + محاذاة
→ فونيمات + صفاترؤوس CTC متعددة المستويات
Wav2Vec2BertForMultilevelCTC في modeling_multi_level_ctc.py ينشئ رأسًا لكل مستوى:
phonemeshams_or_jahrshidda_or_rakhawatafkheem_or_taqeeqitbaqsafeerqalqlatikraartafashieistitalaghonna
كل رأس له خسارة CTC مستقلة. أوزان الخسائر تُضبط عبر:
level_to_vocab_sizelevel_to_loss_weight
(راجع configuration_multi_level_ctc.py).
الترميز لكل مستوى
MultiLevelTokenizer يبني مُرمّزًا لكل مستوى باستخدام Wav2Vec2CTCTokenizer وقواميس النموذج. رموز الفونيمات هي الرموز الصوتية العربية، بينما رموز الصفات هي وسوم عربية محاطة بأقواس تُشتق من SifaOutput.
فك الترميز والمحاذاة
أثناء الاستدلال:
- ينتج النموذج لوغيتس لكل مستوى.
- يتم فك ترميز كل مستوى بـ CTC الجشعة (top‑1 مع دمج التكرارات وحذف الفراغ).
- تُقسّم سلسلة الفونيمات إلى مجموعات فونيمية.
- تُحاذى سلاسل الصفات مع المجموعات ومع المرجع إن توفر.
منطق المحاذاة موجود في src/quran_muaalem/decode.py.
ملاحظات للباحثين
- المستوى الأساسي: الفونيمات هي أكثر الإشارات استقرارًا.
- الصفات تعتمد على جودة المحاذاة؛ من الأفضل قياس الدقة مع/بدون محاذاة.
- أوزان الخسائر تؤثر مباشرة على دقة الصفات ويُنصح بضبطها تجريبيًا.