التثبيت
المتطلبات
| النموذج | ذاكرة GPU | GPU |
|---|---|---|
| Drama 3 | 48 GB على الأقل (FP8) | NVIDIA GPU فقط: لا يدعم CPU أو Apple MPS أو AMD ROCm، ولا يدعم --compile |
| S2-Pro | 24 GB على الأقل | NVIDIA GPU أو CPU |
- النظام: Linux، WSL
Note
بطاقات مثل V100 والأقدم من SM80 لا تدعم bfloat16، فيتحول Drama 3 إلى float16 (مع إبقاء التيار المتبقي fp32).
إعداد النظام
يتشارك Fish Audio Drama 3 و S2-Pro في نفس طريقة التثبيت. اختر الخيار الأنسب لبيئة التطوير لديك.
المتطلبات المسبقة: ثبّت اعتماديات النظام اللازمة لمعالجة الصوت:
Conda
conda create -n fish-speech python=3.12
conda activate fish-speech
# تثبيت نسخة GPU (اختر إصدار CUDA الخاص بك: cu126، cu128، cu129)
# استبدل كلتا قيمتي "cu129" عند استخدام cu126 أو cu128.
pip install --extra-index-url https://download.pytorch.org/whl/cu129 -e ".[cu129]"
# تثبيت نسخة CPU فقط
pip install --extra-index-url https://download.pytorch.org/whl/cpu -e ".[cpu]"
# التثبيت الافتراضي (يستخدم فهرس PyTorch الافتراضي)
pip install -e .
# إذا واجهت خطأ أثناء التثبيت بسبب pyaudio، ففكر في استخدام الأمر التالي:
# conda install pyaudio
# ثم قم بتشغيل pip install -e . مرة أخرى
UV
يوفر UV حلًّا وتثبيتًا أسرع للاعتماديات:
# تثبيت نسخة GPU (اختر إصدار CUDA الخاص بك: cu126، cu128، cu129)
uv sync --python 3.12 --extra cu129
# تثبيت نسخة CPU فقط
uv sync --python 3.12 --extra cpu
دعم Intel Arc XPU
إذا كنت تستخدم بطاقة Intel Arc، فثبّت مع دعم XPU (لـ S2-Pro فقط؛ Drama 3 يحتاج بطاقة NVIDIA):
conda create -n fish-speech python=3.12
conda activate fish-speech
# تثبيت مكتبة C++ القياسية المطلوبة
conda install libstdcxx -c conda-forge
# تثبيت PyTorch مع دعم Intel XPU
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/xpu
# تثبيت Fish Speech
pip install -e .
Warning
خيار compile غير مدعوم على Windows و macOS. إذا أردت التشغيل مع compile، عليك تثبيت Triton يدويًا.
تحميل الأوزان
يتشارك النموذجان في نفس سطر الأوامر وخادم API، ويُستنتج نوع النموذج من ملف config.json في مجلد الأوزان. ضعهما في نفس مجلد checkpoints.
التحميل يحتاج أداة سطر أوامر Hugging Face:
Drama 3
إذا لم يكن ملف codec.pth موجودًا في مجلد الأوزان، فسيُستخدم codec الخاص بـ S2-Pro من checkpoints/s2-pro/codec.pth، لذا يُنصح بتحميل S2-Pro أيضًا.
S2-Pro
بعد تحميل الأوزان، راجع الاستنتاج.
إعداد Docker
يوفر Drama 3 و S2-Pro عدة طرق للنشر باستخدام Docker. يمكنك استخدام صور جاهزة من Docker Hub، أو البناء محليًا باستخدام Docker Compose، أو بناء صور مخصصة يدويًا.
نوفر صورًا لخادم API تعمل على GPU (CUDA126 افتراضيًا) وعلى CPU. الصور تتضمن واجهة WebUI بالفعل: افتح http://localhost:8080/ui بعد تشغيل الحاوية. صورة GPU قادرة على تشغيل النموذجين، أما صورة CPU فتدعم S2-Pro فقط.
المتطلبات الأساسية
- تثبيت Docker و Docker Compose
- (لـ GPU) تثبيت NVIDIA Docker runtime (إلزامي لـ Drama 3)
- ذاكرة GPU: 48 GB على الأقل لـ Drama 3 (FP8)، ويفضّل 24 GB لـ S2-Pro
تشغيل الصورة الجاهزة
Drama 3: على البطاقات SM89 أو الأحدث، اكشف بطاقة واحدة فقط كما يلي؛ أما البطاقات الأقدم فاستخدم --gpus all:
docker run --gpus device=0 \
-v ./checkpoints:/app/checkpoints \
-e LLAMA_CHECKPOINT_PATH=checkpoints/drama-3 \
-p 8080:8080 \
fishaudio/fish-speech:server-cuda
S2-Pro:
docker run --gpus all \
-v ./checkpoints:/app/checkpoints \
-e LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro \
-e DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth \
-p 8080:8080 \
fishaudio/fish-speech:server-cuda
استخدام Docker Compose
إذا كنت تحتاج إلى التطوير أو التخصيص، فننصح باستخدام Docker Compose للبناء والتشغيل محليًا:
# أولاً، استنسخ المستودع
git clone https://github.com/fishaudio/fish-speech.git
cd fish-speech
# بدء خادم API (يحمّل checkpoints/s2-pro افتراضيًا)
docker compose --profile server up
# تحميل Drama 3 وتثبيته على بطاقة واحدة عبر DEVICE (يصل إلى أربع بطاقات عند تركه فارغًا)
LLAMA_CHECKPOINT_PATH=checkpoints/drama-3 DEVICE=cuda:0 docker compose --profile server up
# بدء خادم API مع تحسين التجميع (لـ S2-Pro فقط)
COMPILE=1 docker compose --profile server up
# النشر باستخدام CPU فقط (لـ S2-Pro فقط)
BACKEND=cpu docker compose --profile server up
متغيرات البيئة لـ Docker Compose
يمكنك تخصيص النشر باستخدام متغيرات البيئة:
# مثال على ملف .env
BACKEND=cuda # أو cpu
COMPILE=1 # تمكين تحسين التجميع
API_PORT=8080 # منفذ خادم API
UV_VERSION=0.8.15 # إصدار مدير الحزم UV
سينفّذ الأمر بناء الصورة وتشغيل الحاوية. يمكنك الوصول إلى خادم API عبر http://localhost:8080 وإلى WebUI عبر http://localhost:8080/ui.
البناء اليدوي باستخدام Docker
لمن يريد تحكمًا أدق في عملية البناء:
# بناء صورة خادم API مع دعم CUDA
docker build \
--platform linux/amd64 \
-f docker/Dockerfile \
--build-arg BACKEND=cuda \
--build-arg CUDA_VER=12.6.0 \
--build-arg UV_EXTRA=cu126 \
--target server \
-t fish-speech-server:cuda .
# بناء صورة CPU فقط (تدعم منصات متعددة)
docker build \
--platform linux/amd64,linux/arm64 \
-f docker/Dockerfile \
--build-arg BACKEND=cpu \
--target server \
-t fish-speech-server:cpu .
# بناء صورة التطوير
docker build \
--platform linux/amd64 \
-f docker/Dockerfile \
--build-arg BACKEND=cuda \
--target dev \
-t fish-speech-dev:cuda .
وسيطات البناء
BACKEND:cudaأوcpu(الافتراضي:cuda)CUDA_VER: إصدار CUDA (الافتراضي:12.6.0)UV_EXTRA: إضافة UV الخاصة بـ CUDA (الافتراضي:cu126)UBUNTU_VER: إصدار Ubuntu (الافتراضي:24.04)PY_VER: إصدار Python (الافتراضي:3.12)
تحميل المجلدات
تحتاج الطريقتان إلى تحميل المجلدات التالية:
./checkpoints:/app/checkpoints- مجلد أوزان النموذج./references:/app/references- مجلد ملفات الصوت المرجعية
متغيرات البيئة
COMPILE=1- تمكين torch.compile لاستنتاج أسرع (حوالي 10 أضعاف)LLAMA_CHECKPOINT_PATH- مسار أوزان النموذج الرئيسي، مثلcheckpoints/drama-3أوcheckpoints/s2-proDECODER_CHECKPOINT_PATH- مسار أوزان الـ codec؛ إذا تُرك فارغًا فسيحدده الخادم من مجلد الأوزانDEVICE- جهاز الاستنتاج، مثلcuda:0؛ يستخدم Drama 3 تلك البطاقة فقط عند تحديدها، وما يصل إلى أربع بطاقات عند تركه فارغًاFISH_DRAMA3_FP8_EXPERTS=0أو1- يفرض على Drama 3 استخدام خبراء غير مكمَّمين أو بتنسيق FP8 (يُختار تلقائيًا حسب البطاقة افتراضيًا)FISH_DRAMA3_CUDA_GRAPH=0- يعطّل فك الترميز باستخدام CUDA graphs في Drama 3API_SERVER_NAME=0.0.0.0- عنوان خادم APIAPI_SERVER_PORT=8080- منفذ خادم API
Note
حاويات Docker تقرأ أوزان النماذج من /app/checkpoints. تأكد من تحميل الأوزان المطلوبة قبل تشغيل الحاويات.
Warning
دعم GPU يتطلب NVIDIA Docker runtime. عند النشر باستخدام CPU فقط، احذف --gpus all واستخدم صور CPU.