Fish Audio Docs
مرجع APIتحويل النص إلى كلامتحويل النص إلى كلام في الوقت الفعلي
Back to site

تحويل النص إلى كلام في الوقت الفعلي v2

بث الصوت باستخدام بروتوكول Realtime TTS WebSocket v2 العام.

يُحتفظ بـ Realtime TTS v2 للتوافق مع العملاء الحاليين. يجب أن تستخدم التكاملات الجديدة صفحة v3 أعلاه.

نقاط الاتصال والبروتوكول

العلامةنقطة الاتصال
Fish Audiowss://realtime.fishaudio.org/v2/tts/live

اطلب البروتوكول الفرعي realtime.tts.msgpack.v2. جميع رسائل التطبيق إطارات MessagePack ثنائية وليست نص JSON. تبقى تكاملات /v1/tts/live الحالية للتوافق، بينما يجب أن تستخدم التكاملات الجديدة عقد v3 في الصفحة الأعلى. هذه الصفحة مخصصة لصيانة عملاء v2 فقط.

المصادقة

Authorization: Bearer API_KEY
Sec-WebSocket-Protocol: realtime.tts.msgpack.v2

لا ترسل مفتاح API طويل الأجل إلى المتصفح. تستبدله الواجهة الخلفية الموثوقة عبر POST /v2/tts/browser-tickets بتذكرة قصيرة الأجل، أحادية الاستخدام ومرتبطة بـ Origin. يرسل المتصفح { event: 'auth', event_id, token: 'rtv2_ticket_...' } كأول إطار MessagePack. لا تضع بيانات الاعتماد في URL.

التدفق والمدخلات

connect → authenticated → start → ready → input → audio → finish

لا يتطلب وضع simple الافتراضي معرّفات من العميل. بعد ready أرسل { event: 'input', text }:

{
  event: 'start',
  request: {
    voice_id: 'PUBLIC_VOICE_UUID',
    model: 'fishaudio-s21pro-flash',
    format: 'mp3',
    speed: 1,
    volume: 0,
    language: 'ar',
    chunk_length: 200,
    latency: 'normal'
  }
}

استخدم start.mode='reliable' فقط للتقسيم الصريح وضمان عدم التكرار والاسترداد. في هذا الوضع تصبح event_id وrequest_id وtext.sequence وflush.segment_id إلزامية.

أحداث العميل هي auth وstart وinput وtext وflush وstop وping. يستخدم وضع simple عادةً start وinput فقط.

معاملات أحداث العميل

كل حدث هو MessagePack Map، وتُرفض الحقول غير المعروفة. تبدأ متطلبات event_id في وضع reliable من حدث start؛ ويمكن لحدث auth السابق له الاستغناء عنه.

الحدثالوضعالحقول المطلوبةالحقول الاختيارية والقيم الافتراضيةالقيود والسلوك
authقبل اختيار الوضعevent، tokenevent_idيُستخدم فقط مع تذكرة المتصفح عند غياب ترويسة Authorization.
startsimple، reliableevent، requestmode: "simple"، event_id، request_id، retry_failedيتطلب reliable حقلي event_id وrequest_id؛ وإعادة المحاولة reliable فقط.
inputsimpleevent، textevent_id، commit: trueنص غير فارغ، وبحد أقصى 10,000 حرف للطلب المخزن.
textreliableevent، event_id، sequence، textلا شيءsequence موجب ومتتالٍ؛ 2,000 حرف كحد أقصى لكل إطار.
flushreliableevent، event_id، segment_idلا شيءيرسل مخزنًا غير فارغ؛ segment_id فريد بطول 1–128 حرفًا.
stopreliableevent، event_idلا شيءينهي الطلب بعد اكتمال المقاطع المقبولة.
pingsimple، reliableevent؛ وevent_id مطلوب في reliableevent_id في simple، وtimestampيرد الخادم بحدث pong.

تتضمن استجابات PCM الحقول sample_rate وchannels وbit_depth.

التنسيقات الحالية هي mp3, wav, opus. مجال speed من 0.5 إلى 2، وvolume من 0 إلى 10، وchunk_length من 50 إلى 1000 عند دعم المزوّد والنموذج لها. تُرفض المعاملات غير المدعومة بالخطأ unsupported_parameter.

عند حذف parameter_profile يبقى سلوك v2 القديم كما هو، ويكون volume من 0 إلى 10 وتُرفض الحقول غير المعروفة أو غير المدعومة. عند استخدام parameter_profile: "product_v1" يصبح مجال volume من -20 إلى 20، وتتوفر أيضًا stability وsimilarity وpitch وtext_normalization وlanguage وlatency وemotion وinstructions وoptimize_instructions وchunk_length. يقيّد الخادم القيم المدعومة، ويتجاهل عناصر التحكم غير المدعومة من النموذج، ويعيد النتيجة في ready.effective_request.

يجب أن يتوافق voice_id العام مع النموذج. المزوّدون الحاليون هم FishAudio والنماذج هي fishaudio-s21pro-flash. استخدم GET /v2/tts/capabilities لمعرفة التنسيقات والمعلمات التي يدعمها Fish Audio قبل الاتصال.

يرسل الخادم أحداث authenticated وready وinput_ack وsegment_accepted وaudio وusage وsegment_completed وrequest_status وwarning وerror وfinish وpong. يحتاج عميل simple فقط إلى معالجة ready وaudio وerror وfinish، بينما ينتظر عميل reliable حدثي input_ack وsegment_completed. يحتوي audio.audio على بايتات خام داخل MessagePack.

تتضمن رموز الخطأ الثابتة authentication_failed وauthentication_required وalready_authenticated وpermission_denied وinvalid_message وinvalid_messagepack وinvalid_state وidempotency_conflict وempty_segment وsegment_too_large وsession_limit_exceeded وquota_exceeded وclient_backpressure وunsupported_parameter وvoice_not_found وmodel_not_found وprovider_unavailable وprovider_timeout وgeneration_failed وbilling_failed وconnection_closed وinternal_error.