# خادم التفريغ الصوتيّ للمرتل — faster-whisper large-v3 (float16) على T4. # general = openai/whisper-large-v3 (أمين للمنطوق — الأفضل لرصد أخطاء القارئ) — المسار الوحيد المستعمَل. # CUDA 12.4 + cuDNN 9 (يلزمان CTranslate2 4.5+). النموذج مبنيٌّ في الصورة (لا تنزيل وقت التشغيل). FROM nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04 ENV DEBIAN_FRONTEND=noninteractive HF_HOME=/app/hf HF_HUB_ENABLE_HF_TRANSFER=1 WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ python3 python3-pip libsndfile1 ca-certificates && rm -rf /var/lib/apt/lists/* RUN pip3 install --no-cache-dir fastapi "uvicorn[standard]" numpy soundfile hf_transfer \ "faster-whisper>=1.1.0" "ctranslate2>=4.5" # النموذج العامّ فقط: نسخة CTranslate2 الجاهزة من faster-whisper، مخزَّنةٌ في الصورة. # ★ أُزيل النموذج القرآنيّ (‎ahishamm/finetuned-whisper-quranic-large-v3‎) و‎torch‎/‎transformers‎ من # الصورة في 2026-08-14. سببه مقيس: الإقلاع البارد كان **٢٠٩ ثوانٍ** (رُصد على المستخدمين: انتظارٌ # من دقيقةٍ إلى أربع عند فتح التطبيق بعد نوم المساحة) — وكانت الصورة تحمل ~٦.٥ جيجابايت من أوزانٍ # وحزمٍ **لا يستدعيها التطبيق إطلاقًا**: الكود يطلب ‎?m=general‎ حصرًا (تأكيدٌ بفحص كلّ الملفّات)، # لأنّ النموذج المُدرَّب على القرآن يحفظ النصّ فيُصحّح خطأ القارئ صامتًا فيُخفي ما وُجد التطبيق لكشفه. # ‎faster-whisper‎ يعمل على CTranslate2 ولا يحتاج ‎torch‎ البتّة. لإعادة مسار ‎quran‎ مستقبلًا: # أعِد سطرَي ‎pip‎ و‎snapshot_download‎ أدناه — واعلم أنّهما يُضاعفان زمن الإقلاع البارد. RUN python3 -c "from faster_whisper import download_model; download_model('large-v3', cache_dir='/app/hf')" RUN chmod -R a+rX /app COPY app.py ./ EXPOSE 7860 CMD ["python3", "-m", "uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]