الانتقال إلى المحتوى الرئيسي
توفر هذه الواجهة تحويل النص إلى كلام، واستدعاء الأصوات المحفوظة، واستنساخ الصوت الفوري لمرة واحدة، وعنوانها هو POST https://api.acedata.cloud/fish/tts。

عملية التقديم

لاستخدام Fish TTS API، انتقل أولاً إلى لوحة تحكم Ace Data Cloud للحصول على API Token الخاص بك، واحتفظ به للاستخدام لاحقًا. إذا لم تكن قد سجلت الدخول أو أنشأت حسابًا بعد، فسيتم توجيهك تلقائيًا إلى صفحة تسجيل الدخول لدعوتك إلى التسجيل وتسجيل الدخول، وستعود تلقائيًا إلى الصفحة الحالية بعد الإكمال. يمكن لـ API Token واحد استدعاء جميع خدمات المنصة، ولا حاجة للتقديم بشكل منفصل لكل خدمة. سيُمنح طلبك الأول رصيدًا مجانيًا للتجربة مجانًا؛ وعند عدم كفاية الرصيد، يمكنك شحن الرصيد العام من لوحة التحكم.
📘 الوثائق الكاملة: Fish TTS API →

رؤوس الطلب

حقول جسم الطلب

لا يقبل الاستنساخ لمرة واحدة سوى روابط الصوت عبر HTTPS، ولا يقبل MessagePack أو Base64 أو data URI أو الروابط التي تحتوي على بيانات اعتماد. يُنصح بأن يكون طول الصوت المرجعي من 10 إلى 270 ثانية؛ ويستخدم Studio نطاقًا أكثر تحفظًا من 10 إلى 60 ثانية.

المثال 1: الحد الأدنى للطلب (text + format=mp3)

الإرجاع (تم اختباره):
يشير audio_url إلى CDN الخاص بهذه المنصة، ويمكن تنزيله مباشرةً باستخدام GET أو تشغيله ضمن <audio>。سيعيد رد النجاح النهائي أيضًا cost في المستوى الأعلى، حيث إن amount هو عدد Credits المخصومة فعليًا هذه المرة؛ وإذا كان هناك خصم على الحساب، فإن list_amount يمثل الرصيد قبل الخصم. الرابط متاح على المدى الطويل، لكن لا يزال يُنصح بالاحتفاظ بنسخة في التخزين الخاص بك.

المثال 2: استخدام نبرة صوت مستنسخة reference_id

فيما يلي استخدام نبرة صوت إسبانية عامة على منصة Fish (يمكن الحصول على _id عبر البحث في Fish Model Query):
الإرجاع (تم اختباره):

المثال 3: استنساخ صوت فوري لمرة واحدة (references)

ضع الصوت المرجعي على عنوان HTTPS عام، وقدّم النص الأصلي الدقيق الذي قيل فيه فعليًا. يُستخدم هذا الصوت لهذه العملية فقط، ولن يتم إنشاء نموذج طويل الأمد:
استجابة نجاح تم اختبارها فعليًا:

المثال 3: ضبط سرعة الكلام / مستوى الصوت (prosody)

الإرجاع (تم اختباره فعليًا):
تزيد speed عن 1 السرعة، وتقللها إذا كانت أقل من 1؛ ووحدة volume هي dB، حيث يشير 0 إلى عدم التغيير، والقيمة الموجبة إلى زيادة، والقيمة السالبة إلى خفض.

المثال 5: تبديل النموذج + التحكم في معدل البت

قم بالتبديل إلى نموذج الاستقرار عبر ترويسة HTTP model: s1، وأضف mp3_bitrate: 128 في نص الطلب للتحكم في معدل بت MP3:
الإرجاع (تم اختباره فعليًا):

المثال 6: شكل موجة PCM الخام

بالنسبة للسيناريوهات التي تتطلب إجراء تجميع فوري في المتصفح، أو معالجة لاحقة على العميل (المزج، تغيير السرعة)، يوصى باستخدام pcm:
الإرجاع (تم اختباره فعليًا):
امتداد الرابط يتبع format في الطلب: يؤدي mp3 إلى .mp3، ويؤدي wav وpcm إلى .wav (حاوية WAV، PCM بعمق 16 بت).

رد الاتصال غير المتزامن (callback_url)

قد يستغرق تركيب النصوص الطويلة دفعة واحدة من عشرات الثواني، وإذا انقطع الاتصال يلزم إعادة المحاولة. بعد تمرير callback_url في نص الطلب، ستعيد الواجهة فورًا {task_id, started_at}، وعند إكمال المصدر الفعلي ستُرسل النتيجة الكاملة كـ POST JSON إلى عنوان URL هذا، مع تضمين نفس task_id وcost ذي المستوى الأعلى للفوترة النهائية لهذه المرة في نص الطلب. تأكيد المهمة الأولي لم يُكمل التركيب بعد، لذلك لا يتضمن cost.
الإرجاع الفوري (تم اختباره فعليًا):
لاحقًا، سيتلقى callback_url ما يشبه:
يمكنك أيضًا استخدام Fish Tasks API لسحب النتيجة بشكل نشط حسب task_id؛ تتطابق response.cost في سجل الحالة النهائية مع cost في رد الاتصال، راجع تلك الوثائق للتفاصيل.

معالجة الأخطاء

  • 400 token_mismatched: معلمات الطلب مفقودة أو غير صالحة (الأكثر شيوعًا أن يكون text فارغًا، أو أن يتم تمرير قيمة غير mp3/wav/pcm إلى format).
  • 401 invalid_token: رمز المصادقة token غير موجود أو غير صالح.
  • 429 too_many_requests: تم تفعيل حد معدل الحساب.
  • 500 api_error: خطأ داخلي في الخادم.
مثال على استجابة خطأ:
ستوضح أخطاء التحقق من المعلمات الحقل غير الصالح في حقل message، على سبيل المثال:

الخلاصة

أقل تكلفة لدمج Fish TTS هي: استبدال المصادقة برمز token الخاص بهذه المنصة في الكود الحالي الذي يستدعي api.fish.audio/v1/tts، وإضافة format: "mp3" بشكل صريح في نص الطلب. يوصى باستخدام رد الاتصال غير المتزامن callback_url لسيناريوهات النصوص الطويلة؛ ولاكتشاف reference_id للأصوات المستنسخة، يرجى استخدام Fish Model Query مع Fish Model Get.