تُعد Fish Audio S2 API واجهة برمجة تطبيقات REST لتحويل النص إلى كلام بجودة إنتاجية، مدعومة بنموذج يحتوي على 4 مليارات معلمة وتم تدريبه على 10 ملايين ساعة من الصوت. تدعم استنساخ الصوت، والبث المباشر، وأكثر من 50 لغة. لاستخدام Fish Audio S2 API بكفاءة، بما في ذلك إرسال الطلبات، وإدارة المراجع، وتشغيل اختبارات الوحدة، يُعد Apidog أسرع طريقة لاستكشاف كل نقطة نهاية وتوثيقها والتحقق من صحتها.
مقدمة
تخطت تقنيات تحويل النص إلى كلام باستخدام الذكاء الاصطناعي حدودها السابقة. لم تعد النماذج الحديثة تبدو آلية فقط، بل أصبحت قادرة على التعبير والتغيير في النبرة وحتى الضحك والهمس. Fish Audio S2 API توفر نموذجًا قويًا بـ 4 مليارات معلمة، مدرب على أكثر من 10 ملايين ساعة من الصوت متعدد اللغات، لإنتاج كلام طبيعي يصعب تمييزه عن الكلام البشري.
لدمج Fish Audio S2 API في مشاريع مثل أتمتة البودكاست، أو بناء مساعدين صوتيين، أو سير عمل الدبلجة الفورية، ستحتاج إلى معرفة كيفية المصادقة، وإدارة الصوت المرجعي، وتفعيل البث، وكتابة اختبارات وحدة تضمن استقرار التكامل في الإنتاج.
💡قبل إجراء أول مكالمة لـ Fish Audio S2 API، قم بتنزيل Apidog مجانًا. اختبر تفاعل المشاعر، والبث، واستنساخ الصوت، واستجابات الصوت الثنائية بسرعة ودون أي كود. يمكنك المحاكاة والاختبار والاستماع فورًا لضمان تكامل TTS من اليوم الأول.
ما هي Fish Audio S2 API؟
Fish Audio S2 API هي الواجهة البرمجية لـ Fish Speech S2-Pro، وهو نظام مفتوح المصدر لتحويل النص إلى كلام (TTS) يعتمد على بنية Dual-Autoregressive (Dual-AR). يفصل النموذج بين التوليد الدلالي عالي المعلمات (4 مليارات) والتوليد الرمزي (400 مليون معلمة)، ما يسمح بتوليف سريع وجودة عالية على وحدة NVIDIA H200 واحدة.
أهم إمكانيات Fish Audio S2 API:
| الميزة | التفاصيل |
|---|---|
| اللغات | ~50 (الإنجليزية، الصينية، اليابانية، الكورية، العربية، الفرنسية، الألمانية، والمزيد) |
| استنساخ الصوت | صوت مرجعي لمدة 10–30 ثانية، لا يلزم ضبط دقيق |
| التحكم في المشاعر داخل النص | علامات اللغة الطبيعية: [ضحك]، [همس]، [سعيد جداً]
|
| توليد متعدد المتحدثين | دعم رمزي أصلي <|speaker:i|>
|
| البث المباشر | صوت مجزأ في الوقت الفعلي عبر "streaming": true
|
| تنسيقات الإخراج | WAV, MP3, PCM |
| المصادقة | رمز Bearer (Authorization: Bearer YOUR_API_KEY) |
العنوان الأساسي بعد النشر المحلي: http://127.0.0.1:8080. جميع نقاط النهاية تحت /v1/.
البدء مع Fish Audio S2 API و Apidog
المتطلبات الأساسية لـ Fish Audio S2 API
قبل أي خطوة عملية، يجب تشغيل خادم Fish Speech S2-Pro وتجهيز عميل API يتعامل مع استجابات الصوت الثنائية.
تشغيل الخادم:
python tools/api_server.py \
--llama-checkpoint-path checkpoints/s2-pro \
--decoder-checkpoint-path checkpoints/s2-pro/codec.pth \
--listen 0.0.0.0:8080 \
--compile \
--half \
--api-key YOUR_API_KEY \
--workers 4
-
--compile: يفعّل تحسينtorch.compileلتسريع الاستجابة. -
--half: لتقليل استهلاك ذاكرة GPU (وضع FP16).
اختبار صحة الخادم:
curl http://127.0.0.1:8080/v1/health
# {"status":"ok"}
إعداد Fish Audio S2 API في Apidog
نزّل Apidog مجانًا، أنشئ مشروع HTTP جديد، ثم أضف http://127.0.0.1:8080 في Environments. أضف ترويسة:
Authorization: Bearer YOUR_API_KEY
سيتم تطبيق الرمز تلقائيًا على كل طلب، ويمكنك التبديل بين بيئات متعددة بسهولة.
إجراء أول طلب Fish Audio S2 API في Apidog
اختبار نقطة نهاية تحويل النص إلى كلام
أنشئ طلبًا جديدًا في Apidog باستخدام POST /v1/tts، ثم استخدم الجسم التالي:
{
"text": "مرحباً! هذا اختبار لواجهة برمجة تطبيقات Fish Audio S2.",
"format": "wav",
"streaming": false,
"temperature": 0.8,
"top_p": 0.8,
"repetition_penalty": 1.1,
"max_new_tokens": 1024
}
مخطط معلمات الطلب:
| المعلمة | النوع | الافتراضي | الوصف |
|---|---|---|---|
text |
string | مطلوب | النص المراد توليفه |
format |
string | wav | تنسيق الصوت: wav، mp3، pcm |
chunk_length |
int | 200 | حجم كتلة التوليف (100–300) |
seed |
int | null | تثبيت البذرة لإخراج ثابت |
streaming |
bool | false | البث في الوقت الفعلي |
max_new_tokens |
int | 1024 | أقصى عدد رموز |
temperature |
float | 0.8 | عشوائية العينات |
top_p |
float | 0.8 | عتبة أخذ العينات |
repetition_penalty |
float | 1.1 | معاقبة التكرار |
use_memory_cache |
string | off | تخزين الترميز مؤقتًا |
اضغط إرسال في Apidog. ستظهر استجابة الصوت ويمكنك الاستماع إليها مباشرة من الواجهة.
استنساخ الصوت باستخدام Fish Audio S2 API
رفع صوت مرجعي عبر Apidog
للاستنساخ، أضف مرجعًا صوتيًا عبر POST /v1/references/add:
{
"id": "نسخة صوتي",
"text": "هذا هو النص المرجعي الذي يطابق الصوت.",
"audio": "<base64-encoded-wav-bytes>"
}
في Apidog، استخدم Binary أو Form Data لتحميل الصوت. بعد الإضافة:
{
"success": true,
"message": "تمت إضافة المرجع بنجاح",
"reference_id": "نسخة صوتي"
}
للاستخدام:
{
"text": "ستُقال هذه الجملة بالصوت المستنسخ.",
"reference_id": "نسخة صوتي",
"format": "mp3"
}
يمكنك حفظ طلبات الاستنساخ كقوالب في Apidog لتبديل الأصوات بسهولة أثناء الاختبار.
كيفية اختبار وحدة تكاملات Fish Audio S2 API
أهمية اختبارات الوحدة
اختبارات الوحدة ضرورية لاكتشاف أخطاء مثل فقدان معرف مرجعي، أو قيم معلمات خارج النطاق، أو مشاكل البث، أو خطأ في تنسيق الصوت قبل وصولها للمستخدم.
كتابة اختبارات الوحدة ببايثون
import pytest
import httpx
import base64
BASE_URL = "http://127.0.0.1:8080"
API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
class TestFishAudioS2API:
def test_health_check(self):
response = httpx.get(f"{BASE_URL}/v1/health", headers=HEADERS)
assert response.status_code == 200
assert response.json()["status"] == "ok"
def test_tts_basic_request(self):
payload = {
"text": "اختبار وحدة: التحقق من إخراج Fish Audio S2 API TTS.",
"format": "wav",
"seed": 42,
}
response = httpx.post(
f"{BASE_URL}/v1/tts",
json=payload,
headers=HEADERS,
timeout=60,
)
assert response.status_code == 200
assert response.headers["content-type"] == "audio/wav"
assert len(response.content) > 1000
def test_tts_invalid_temperature_raises_error(self):
payload = {"text": "اختبار", "temperature": 99.0}
response = httpx.post(
f"{BASE_URL}/v1/tts",
json=payload,
headers=HEADERS,
timeout=30,
)
assert response.status_code == 422
def test_reference_add_and_list(self):
with open("test_reference.wav", "rb") as f:
audio_b64 = base64.b64encode(f.read()).decode()
add_response = httpx.post(
f"{BASE_URL}/v1/references/add",
json={
"id": "صوت-اختبار-وحدة",
"text": "هذا هو صوت مرجعي لاختبار الوحدة.",
"audio": audio_b64,
},
headers=HEADERS,
)
assert add_response.json()["success"] is True
list_response = httpx.get(
f"{BASE_URL}/v1/references/list", headers=HEADERS
)
assert "صوت-اختبار-وحدة" in list_response.json()["reference_ids"]
httpx.request(
"DELETE",
f"{BASE_URL}/v1/references/delete",
json={"reference_id": "صوت-اختبار-وحدة"},
headers=HEADERS,
)
لتشغيل الاختبارات:
pytest test_fish_audio_s2_api.py -v
تشغيل اختبارات الوحدة باستخدام Apidog
يمكنك تنفيذ اختبارات وحدة مباشرة في Apidog باستخدام ميزة سيناريوهات الاختبار:
- افتح مجموعة Fish Audio S2 API.
- انتقل إلى Test Scenarios ← New Scenario.
- أضف الطلبات: فحص الصحة → TTS → إضافة مرجع → قائمة المراجع.
- في تبويب Assertions لطلب TTS، أضف:
- حالة الاستجابة =
200 - ترويسة
content-typeتحتوي علىaudio - زمن الاستجابة <
30000ms
- حالة الاستجابة =
- شغّل السيناريو لمتابعة نتائج الاختبار وتحليل التقارير.
Apidog يوفر تقارير نجاح/فشل مع تفاصيل زمن الاستجابة، ويمكن جدولة السيناريوهات مع CI.
ميزات Fish Audio S2 API المتقدمة
بث الصوت في الوقت الفعلي
للتشغيل الفوري، استخدم البث المجزأ عبر "streaming": true:
import httpx
with httpx.stream(
"POST",
"http://127.0.0.1:8080/v1/tts",
json={
"text": "بث الصوت من Fish Audio S2 API في الوقت الفعلي.",
"format": "wav",
"streaming": True,
},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=None,
) as response:
with open("streamed_output.wav", "wb") as audio_file:
for chunk in response.iter_bytes(chunk_size=4096):
audio_file.write(chunk)
ستحصل على أول بايتات صوت خلال ~100 مللي ثانية، مما يجعلها مثالية لتطبيقات الصوت الحي.
التحكم في المشاعر داخل النص
أضف العلامات مباشرة في text:
{
"text": "[همسات] السر مخبأ هنا. [سعيد جداً] لقد وجدته!",
"format": "wav"
}
النموذج يفسر العلامات بين قوسين مثل [ضحك]، [همس]، وغيرها كتعليمات نبرة.
الخلاصة
Fish Audio S2 API توفر محرك TTS قويًا عبر REST، يدعم الاستنساخ، البث، والمشاعر المتقدمة. لتحقيق تكامل موثوق:
- اضبط معلمات العينات بشكل صحيح (
temperature،top_p...) - أدر المراجع الصوتية بوضوح.
- حافظ على اختبارات وحدة لكل نقطة نهاية.
Apidog يبسط هذه العملية: أرسل طلباتك، استمع مباشرة، أنشئ كود العميل تلقائيًا، وشغّل اختبارات الوحدة بدون إعدادات إضافية.
قم بتنزيل Apidog مجانًا وابدأ اختبار Fish Audio S2 API فورًا.
الأسئلة الشائعة
ما هي Fish Audio S2 API؟ هي واجهة REST لـ Fish Speech S2-Pro (نموذج TTS بـ4 مليارات معلمة، 50+ لغة، استنساخ، بث، مشاعر، عبر HTTP تحت /v1/).
كيف تتم المصادقة؟ أضف ترويسة Authorization: Bearer YOUR_API_KEY لكل طلب. اضبط المفتاح مع --api-key عند تشغيل الخادم. مع Apidog ستحصل على إدارة تلقائية للرمز.
هل يمكنني اختبار Fish Audio S2 API بدون كود؟ نعم، استخدم سيناريوهات Apidog لبناء وتشغيل اختبارات الوحدة بصريًا مع التأكيدات (رمز الحالة، زمن الاستجابة...).
ما هي تنسيقات الصوت المدعومة؟ WAV (افتراضي)، MP3، PCM. حدّد ذلك في حقل format.
كيف يعمل الاستنساخ؟ ارفع ملف صوتي ونصه عبر /v1/references/add، ثم مرر reference_id لأي طلب TTS.
كم سرعة Fish Audio S2 API؟ على NVIDIA H200، تبلغ RTF حوالي 0.195 والبث يبدأ في أقل من 100ms.
كيف أتحقق من استجابات الصوت في Apidog؟ سيظهر مشغل صوتي تلقائيًا مع كل استجابة صوتية، ويمكنك الاستماع والتأكد من صحة الإخراج مباشرة.
Top comments (0)