لماذا تستضيف Whisper ذاتيًا على خادم VPS
تفرض واجهات التفريغ السحابية فوترة لكل دقيقة صوت وتُلزِم بإرسال تسجيلاتك إلى خوادم خارجية — وهي مشكلة حالما يتعلق الأمر باجتماعات سرية أو مقابلات موارد بشرية أو بيانات طبية. تمنحك استضافة Whisper ذاتيًا على خادم VPS نقطة نهاية تفريغ خاصة، متاحة على مدار الساعة، تعالج ملفاتك محليًا. مع تطبيق faster-whisper (المبني على CTranslate2)، تحصل على عمليات تفريغ أسرع بما يصل إلى 4 مرات من التطبيق الأصلي، حتى على وحدة المعالجة المركزية CPU. تختار حجم النموذج (tiny حتى large-v3) وفق التوازن بين السرعة والدقة الذي تحتاجه، وتربط كل ذلك بتطبيقاتك الخاصة عبر واجهة REST API.
الفوائد الملموسة للاستضافة الذاتية
- خصوصية: لا تغادر ملفاتك الصوتية الحساسة خادم VPS الخاص بك أبدًا.
- تفريغ متعدد اللغات وترجمة إلى الإنجليزية مضمّنان في النموذج نفسه.
- توقيت زمني على مستوى الكلمة أو المقطع، مثالي لتوليد ترجمات SRT/VTT.
- لا حدّ لمدة الملف الواحد، خلافًا للواجهات عبر الإنترنت.
- تكلفة ثابتة بدل فوترة لكل دقيقة صوت مُفرَّغ.
- التكامل عبر واجهة REST API في أدواتك الداخلية (CRM، بودكاست، دعم العملاء).
المتطلبات العتادية والبرمجية
Whisper كثير الاستهلاك خصوصًا للذاكرة RAM والحوسبة. على وحدة المعالجة المركزية CPU، يعمل النموذج base أو small بأريحية مع 4 غيغابايت من ذاكرة RAM ونواتين vCPU؛ أما النموذج large-v3 فيتطلب بالأحرى 8 إلى 10 غيغابايت من ذاكرة RAM و4 أنوية vCPU ليبقى قابلًا للاستخدام. ويُسرّع خادم VPS بوحدة GPU (بذاكرة VRAM بسعة 6 غيغابايت) النموذج large-v3 كثيرًا. خصّص بضعة غيغابايتات من القرص للأوزان (يزن large-v3 نحو 3 غيغابايت) ومساحة مؤقتة للملفات الصوتية المرفوعة. أما برمجيًا: فيلزم Ubuntu 22.04 وDocker وffmpeg (لا غنى عنه لفكّ ترميز صيغ الصوت)، ونطاق فرعي من نوع whisper.mydomain.com.
النشر خطوة بخطوة
تحضير البيئة
عبر SSH، ثبّت Docker وتحقّق من وجود ffmpeg (apt install ffmpeg). أنشئ مجلد whisper/ يحتوي على ملف docker-compose.yml الخاص بك وحجم ./audio للملفات المطلوب معالجتها.
اختيار صورة بواجهة API
استخدم صورة تعرِض مباشرةً واجهة REST API، مثل onerahmet/openai-whisper-asr-webservice. في ملف compose، عرّف ASR_ENGINE=faster_whisper وASR_MODEL=small (اضبط وفق ذاكرة RAM لديك)، ووجّه المنفذ 9000.
تشغيل الخدمة
ابدأ بـ docker compose up -d. عند أول استدعاء، تُنزّل الحاوية أوزان النموذج تلقائيًا؛ ركّب حجمًا على /root/.cache كي لا تُعيد تنزيله عند كل إعادة تشغيل.
اختبار التفريغ
أرسل ملفًا محليًا: curl -F "[email protected]" "http://localhost:9000/asr?output=txt". يجب أن تسترجع التفريغ في غضون بضع ثوانٍ إلى بضع دقائق حسب النموذج.
التعريض عبر HTTPS مع مصادقة
ضع Caddy أو Nginx أمام المنفذ 9000، مع مصادقة (مفتاح API في ترويسة أو Basic Auth) لمنع طرف ثالث من استخدام نقطة النهاية الخاصة بك. سيتولى Caddy شهادة Let's Encrypt تلقائيًا لـ whisper.mydomain.com.
ربط مسارات عملك
من تطبيقاتك، استدعِ https://whisper.mydomain.com/asr?output=srt للحصول على ترجمات مباشرةً، أو output=json للمقاطع المؤرّخة زمنيًا لإعادة حقنها في قاعدة بياناتك.
لمعالجة تسجيلات طويلة على وحدة المعالجة المركزية CPU دون إشباع ذاكرة RAM، فعّل ميزة VAD (كشف النشاط الصوتي) في faster-whisper لتخطّي فترات الصمت، وثبّت compute_type=int8: تنخفض الدقة بالكاد لكن استهلاك الذاكرة يتراجع بشدة، ما يتيح تشغيل medium حيث لا يمرّ large. وللأحجام الكبيرة، أنشئ طابور انتظار (Redis + عامل) بدل الاستدعاءات المتزامنة.