مستوى المقال: متوسط — مناسب لمطوّر يكتب Python بثقة، يعرف يثبّت package من pip، وعنده فكرة عامة عن GPU. لو لسه ما تعاملتش مع CUDA خالص، الكود هيشتغل على CPU برضه لكن أبطأ بـ 6-8 مرات.
Whisper Large-v3 محلياً: تفريغ صوتي عربي بدقة 88.6% في 4 دقائق لكل ساعة
لو شركتك بتدفع $0.006 لكل دقيقة صوت على Whisper API من OpenAI، 200 ساعة شهرياً = $72. الرقم صغير لحد ما تكتشف 3 حاجات: نفس النموذج بيشتغل محلياً على GPU بـ 8GB، بياناتك مش بتطلع من سيرفرك، والتكلفة بتنزل لـ $2.4 كهرباء بدل $72 اشتراك.
المشكلة باختصار
Whisper API السحابي حلّ ممتاز لـ MVP. بس لما يكبر الاستخدام، 3 أوجاع بتظهر بالترتيب:
- التكلفة خطّية: مفيش volume discount حقيقي. ضعف الاستخدام = ضعف الفاتورة.
- الخصوصية: الصوت بيتبعت لسيرفر OpenAI. مش مقبول في healthcare و legal و فاينانس.
- الـ latency: بيتأثر بالشبكة. ومش مناسب لتطبيقات real-time جوّا الـ datacenter.
الحل: تشغيل Whisper Large-v3 محلياً عبر faster-whisper اللي بيعيد كتابة الـ inference بمكتبة CTranslate2 بدل PyTorch. النتيجة: نفس الدقة، 4 أضعاف السرعة، ونص استهلاك الذاكرة.
المفهوم بمثال للمبتدئ ثم تعريف علمي
تخيّل سكرتير بيكتب محضر اجتماع. لو بيكتب كل كلمة الحظة ما تنطقها، مش هيقدر يفرّق بين "بحر" و"بحر" (الفعل والاسم) لأنه مش شايف السياق. السكرتير الكويس بيستنّى جزء كامل من الجملة، يفهم اللي قبله، وبعدين يكتب الكلمة الصح.
Whisper بيعمل بالظبط نفس الكلام. هو نموذج encoder-decoder transformer: الـ encoder بياخد 30 ثانية صوت، يقسّمها لـ mel-spectrogram، ويحوّلها لتمثيل عددي (vector). الـ decoder بعد كده بيتنبأ بالكلمة الجاية بناءً على اللي قبلها (autoregressive generation). الإصدار Large-v3 فيه 1.55 مليار parameter، اتدرّب على 5 مليون ساعة صوت في 99 لغة، و— وده اللي يهمّنا في العربي— استخدم 1.1 مليون ساعة عربية مقابل 380 ألف ساعة فقط في v2. التحسّن الحقيقي للعربي بيظهر هنا.
السكربت الكامل (شغّال على GPU بـ 8GB VRAM)
التثبيت في أمر واحد، بفرضية إن CUDA 12.1+ مثبّت بالفعل:
pip install faster-whisper==1.0.3
# للتحقق من CUDA: nvidia-smi
ودا السكربت الفعلي اللي بيفرّغ ساعة صوت في 4 دقائق: