تحويل النص إلى كلام في الوقت الفعلي v2
بث الصوت باستخدام بروتوكول Realtime TTS WebSocket v2 العام.
يُحتفظ بـ Realtime TTS v2 للتوافق مع العملاء الحاليين. يجب أن تستخدم التكاملات الجديدة صفحة v3 أعلاه.
نقاط الاتصال والبروتوكول
| العلامة | نقطة الاتصال |
|---|---|
| Fish Audio | wss://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، token | event_id | يُستخدم فقط مع تذكرة المتصفح عند غياب ترويسة Authorization. |
start | simple، reliable | event، request | mode: "simple"، event_id، request_id، retry_failed | يتطلب reliable حقلي event_id وrequest_id؛ وإعادة المحاولة reliable فقط. |
input | simple | event، text | event_id، commit: true | نص غير فارغ، وبحد أقصى 10,000 حرف للطلب المخزن. |
text | reliable | event، event_id، sequence، text | لا شيء | sequence موجب ومتتالٍ؛ 2,000 حرف كحد أقصى لكل إطار. |
flush | reliable | event، event_id، segment_id | لا شيء | يرسل مخزنًا غير فارغ؛ segment_id فريد بطول 1–128 حرفًا. |
stop | reliable | event، event_id | لا شيء | ينهي الطلب بعد اكتمال المقاطع المقبولة. |
ping | simple، reliable | event؛ وevent_id مطلوب في reliable | event_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.