chatterbox / INTEGRATION_AR.md
Abdo96's picture
Upload 55 files
d3963e7 verified
|
Raw
History Blame Contribute Delete
3.19 kB
# ربط كل الخدمات على خادم واحد — جسر
الآن **خادم واحد** (Hugging Face Space) يقدّم الخدمات الثلاث، والسيرفر الوسيط
(`api-server.js`) يوجّه إليه فقط. عنوان واحد لكل شيء.
## المعمارية بعد الربط
```
[تطبيق Flutter]
│ يرسل: نص للترجمة / صوت للتفريغ / نص للنطق
[api-server.js] ← وسيط خفيف (Node، صفر تبعيات)
│ يحوّل طلبات REST إلى نداءات Gradio
[Hugging Face Space] ← خادم واحد على ZeroGPU
├── /translate → MADLAD-400-3b-mt (Apache 2.0 تجاري، 400+ لغة)
├── /stt → Whisper small
└── /tts → Chatterbox (استنساخ صوتي، 7 لغات)
```
## ما الذي تغيّر
**في الـ Space** (`app.py` + `requirements.txt`):
- أضيف endpoint `translate` يستخدم MADLAD-400 (تجاري، بديل NLLB غير التجاري)
- أضيف endpoint `stt` يستخدم Whisper
- الواجهة الآن ثلاثة تبويبات: توليد كلام / ترجمة / تفريغ
**في السيرفر الوسيط** (`api-server.js`):
- حُذفت `TRANSLATE_URL` و `STT_URL` — لم تعد هناك خدمات منفصلة
- كل الطلبات تذهب لنفس `INFERENCE_BASE_URL` عبر مُنادٍ Gradio عام
- التفريغ يرفع الملف لـ Gradio ثم ينادي `stt`
**في التطبيق** (`api_service.dart`):
- التفريغ الآن يرسل بايتات الصوت الخام مع ترويسة `x-lang`
## خطوات التشغيل
### 1) الـ Space
انسخ (Duplicate) الـ Space الرسمي ResembleAI/Chatterbox-Multilingual-TTS-V3،
ثم استبدل `app.py` و `requirements.txt` بالنسختين المرفقتين، وارفع `default_voice.wav`.
اختر عتاد **ZeroGPU**.
> تحميل أول مرة: MADLAD-3B (~12 جيجا) + Whisper + Chatterbox. أول طلب لكل
> خدمة يستغرق وقتاً للتحميل، ثم يصبح سريعاً. لو أردت MADLAD أصغر/أسرع اضبط
> متغير البيئة `MADLAD_MODEL=google/madlad400-3b-mt` (الافتراضي) — أو للجودة
> الأعلى `google/madlad400-7b-mt`.
### 2) السيرفر الوسيط
```bash
INFERENCE_BASE_URL=https://YOUR-USERNAME-SPACENAME.hf.space node api-server.js
```
متغير واحد فقط! (اختياري: `HF_TOKEN` لو الـ Space خاص، `PORT`).
### 3) التطبيق
```bash
flutter run --dart-define=API_BASE_URL=https://your-bridge-server.com
```
## اختبار سريع للخادم الموحّد
```bash
BASE=https://YOUR-USERNAME-SPACENAME.hf.space
# ترجمة
curl -X POST $BASE/gradio_api/call/translate \
-H "Content-Type: application/json" \
-d '{"data":["مرحبا بالعالم","العربية (ar)","English (en)"]}'
# ثم curl $BASE/gradio_api/call/translate/EVENT_ID
```
## ملاحظة الترخيص
- **MADLAD-400**: Apache 2.0 ✅ تجاري مسموح (بديل NLLB الذي كان CC-BY-NC)
- **Whisper**: MIT ✅
- **Chatterbox**: MIT ✅
كلها آمنة لتطبيق مدفوع.