إسماعيل بن علا

STT Workbench

مقاربات تحويل الكلام إلى نص في PyTorch

الصوت · أكتوبر 2026 · مكتمل

ست طرق لتحويل الكلام إلى نص، مبنية بحجم صغير يكفي لمشاهدة كل منها وهي تتعلم على المعالج المركزي.

التقنياتPyTorchtorchaudioBeam searchONNXHugging Face TransformersNumPypytestKaggle

STT Workbench — نظرة عامة

نظرة عامة

يضم التعرف التلقائي على الكلام (Automatic Speech Recognition) عدة عائلات من النماذج تحل المسألة الصعبة نفسها بطرق مختلفة: محاذاة متتالية طويلة من إطارات الصوت مع متتالية قصيرة من الحروف. أردت أن أرى هذه الفروق بنفسي بدلاً من القراءة عنها، فكتبت كل مقاربة في قاعدة شيفرة PyTorch صغيرة واحدة تتشارك فيها الواجهة الأمامية والمُرمِّزات والمدرِّب والتقييم.

النماذج هي CTC، ومُرمِّز-مفكك بالانتباه، وListen-Attend-Spell، والهجين CTC/الانتباه، وRNN-Transducer، على مُرمِّزات BiLSTM أو Transformer أو Conformer، إضافة إلى مغلِّفات للضبط الدقيق (fine-tuning) لـ wav2vec2 وWhisper في الدفتر. وكل خوارزميات فك الترميز موجودة أيضاً: الجشع، وبحث الحزمة البادئي لـ CTC ‏(CTC prefix beam search) مع نموذج لغة n-gram، وبحث الحزمة بالانتباه مع تسجيل البادئة بـ CTC، والفك الجشع وmodified beam search لـ RNN-T. تحتوي النماذج على 1 إلى 1.3 M معامل افتراضياً.

اختبرته على بيانات بسيطة بتردد 8 kHz تتدرب في دقائق على المعالج المركزي: لغة تجريبية اصطناعية، وFree Spoken Digit Dataset، وYESNO. يبلغ CTC معدل خطأ كلمات (WER) قدره 2.4% على اللغة التجريبية؛ وعلى FSDD مع متحدث محجوز للاختبار يحقق نموذج CTC ‏24.7% بالفك الجشع و15.1% مع بحث الحزمة ونموذج لغة 5-gram على مستوى الحروف. تُظهر هذه التشغيلات أن كل مقاربة تتعلم وأن مفككات الترميز تعمل؛ وهي ليست مقاييس معيارية، فالتدريب الحقيقي مكانه دفتر Kaggle/Colab.

السؤال

إذا تشاركت نماذج CTC والانتباه والمحوِّل (transducer) الواجهة الأمامية نفسها والمُرمِّزات نفسها والمدرِّب نفسه، فما الذي يحتاجه كل منها فعلاً لتعلم المحاذاة بين إطارات الصوت والنص؟

أهم الميزات

كيف يعمل

  1. الواجهة الأمامية

    تتحول الموجة الصوتية إلى مخطط طيفي log-mel بـ 80 نطاقاً، مطبَّع لكل عبارة (CMVN) ومقنَّع في الزمن والتردد بواسطة SpecAugment أثناء التدريب.

  2. الترميز

    يقلّص التفافان بخطوة الإطارات بمعامل أربعة، ثم تبني طبقات BiLSTM أو Transformer أو Conformer سمات صوتية سياقية.

  3. محاذاة الإطارات مع الرموز

    يجمع CTC على كل مسارات الإطارات التي تختزل إلى النص المكتوب؛ وتتعلم مفككات الانتباه محاذاة مرنة عبر الانتباه المتقاطع؛ ويدمج RNN-T المُرمِّز مع شبكة تنبؤ على شبكية رتيبة.

  4. التدريب

    رموز حرفية أو SentencePiece، وAdam مع إحماء، ودفعات مجمَّعة حسب المدة، وWER / CER على التحقق عند كل تقييم، ونقاط حفظ قابلة للاستئناف.

  5. فك الترميز والتقييم

    فك جشع أو بحث حزمة، مدمج اختيارياً مع نموذج لغة n-gram؛ ويحاذي stt-eval الفرضيات مع المراجع ويطبع WER وCER وأسوأ العبارات.

أمثلة

اللغة التجريبية، 400 جملة تدريب، 1,500 خطوة: يتعلم CTC ‏(WER ‏2.4%) وRNN-T ‏(5.3%) في بضع مئات من الخطوات، بينما لم تجد مفككات الانتباه الثلاثة (الهجين وLAS وAED) المحاذاة بعد.
اللغة التجريبية، 400 جملة تدريب، 1,500 خطوة: يتعلم CTC ‏(WER ‏2.4%) وRNN-T ‏(5.3%) في بضع مئات من الخطوات، بينما لم تجد مفككات الانتباه الثلاثة (الهجين وLAS وAED) المحاذاة بعد.
مفككات الانتباه نفسها مع أربعة أضعاف البيانات (1,600 جملة، 3,000 خطوة): يبلغ LAS معدل WER ‏0% ابتداءً من الخطوة 1,000، والهجين 21.7%، بينما لا يزال مفكك Transformer البسيط يتحسن عند 70.4%.
مفككات الانتباه نفسها مع أربعة أضعاف البيانات (1,600 جملة، 3,000 خطوة): يبلغ LAS معدل WER ‏0% ابتداءً من الخطوة 1,000، والهجين 21.7%، بينما لا يزال مفكك Transformer البسيط يتحسن عند 70.4%.
صوت حقيقي بتردد 8 kHz: نموذجا CTC والهجين على مقاطع FSDD من ثلاثة أرقام مع متحدث محجوز (WER ‏24.7% و39.8%)، وCTC على مجموعة YESNO ذات 60 مقطعاً (WER ‏56.9%).
صوت حقيقي بتردد 8 kHz: نموذجا CTC والهجين على مقاطع FSDD من ثلاثة أرقام مع متحدث محجوز (WER ‏24.7% و39.8%)، وCTC على مجموعة YESNO ذات 60 مقطعاً (WER ‏56.9%).
مصفوفة التباس الكلمات لمفكك CTC الجشع على متحدث FSDD غير المسموع: معظم الأرقام صحيحة، و"six" هي الكلمة الوحيدة التي يحذفها النموذج كثيراً (العمود <del>) أو يسمعها "eight".
مصفوفة التباس الكلمات لمفكك CTC الجشع على متحدث FSDD غير المسموع: معظم الأرقام صحيحة، و"six" هي الكلمة الوحيدة التي يحذفها النموذج كثيراً (العمود <del>) أو يسمعها "eight".

المدخل

stt-train --data-dir data/synthetic --sample-rate 8000 --model ctc --encoder conformer --d-model 96 --n-layers 4 --max-steps 1500 --output-dir checkpoints/ctc && stt-eval data/synthetic/val.jsonl hyps.jsonl

المخرج

val WER 2.4%, CER 0.6% (1.04 M parameters, 20 min on one CPU with two threads)

تشغيل البدء السريع من ملف README: نموذج Conformer + CTC على اللغة التجريبية الاصطناعية، بفك ترميز جشع.

المدخل

python scripts/compare_decoders.py # same CTC checkpoint, 166 FSDD validation clips

المخرج

greedy: 24.7% WER | beam 8: 24.1% | beam 8 + character 5-gram LM (weight 0.3): 15.1%

ثلاثة مفككات ترميز على نقطة حفظ واحدة. يعرف نموذج اللغة، المدرَّب على النصوص الـ 830 لمجموعة التدريب، أنه لا توجد إلا عشر كلمات، فيزيل معظم الكلمات الجزئية مثل "even" بدلاً من "seven".

التقنيات المستخدمة

ما تعلمته

الحدود

الكلمات المفتاحية

التعرف على الكلام · ASR · تحويل الكلام إلى نص · CTC · RNN-Transducer · RNN-T · Listen Attend and Spell · مُرمِّز-مفكك بالانتباه · الهجين CTC/الانتباه · Conformer · BiLSTM · Transformer · بحث الحزمة البادئي · نموذج لغة n-gram · SpecAugment · المخطط الطيفي log-mel · WER · CER · wav2vec2 · Whisper · PyTorch · ONNX · FSDD · LibriSpeech