تحويل النص إلى كلام في الوقت الفعلي v3
بث الكلام عبر بروتوكول WebSocket Realtime TTS v3 المحايد للمزوّد.
Realtime TTS v3 هو البروتوكول الموصى به للتكاملات الجديدة. تستخدم جميع المحركات أحداث camelCase والمصادقة والفوترة والاسترداد نفسها؛ ولتغيير المحرك يكفي تغيير modelId.
| العنصر | القيمة |
|---|---|
| WebSocket | wss://kittaai.com/v3/tts/live |
| البروتوكول الفرعي | realtime.tts.msgpack.v3 |
| الإمكانات | GET /v3/tts/capabilities على مضيف realtime |
كل الرسائل إطارات MessagePack ثنائية. يرسل عميل الخادم Authorization: Bearer API_KEY في المصافحة. في المتصفح، ينشئ خادم موثوق تذكرة لمرة واحدة عبر POST /v3/tts/browser-tickets. لا تضع بيانات الاعتماد في URL.
يتصل المتصفح باستخدام URL والبروتوكول الفرعي المُعادين، ثم يرسل { event: 'auth', token: 'rtv2_ticket_...' } كأول إطار MessagePack.
{ event: 'start', mode: 'simple', request: {
voiceId: '00a1b221-6137-4b73-ad62-b0cbce134167',
modelId: 'fishaudio-s21pro-flash', format: 'mp3',
speed: 1, stability: 1, similarity: 1, language: 'ar',
chunkLength: 200, latency: 'balanced'
}}voiceId وmodelId مطلوبان. تحدد capabilities النماذج والتنسيقات وعناصر التحكم، وتمثل ready.effectiveRequest القيم الفعلية. أرسل النص بواسطة { event:'input', text:'مرحبا', commit:true } ثم أنهِ الجلسة بـ stop.
أهم أحداث الخادم: authenticated وready وinput_ack وsegment_accepted وaudio وusage وsegment_completed وwarning وerror وfinish وpong، وجميع الحقول camelCase.
في الوضع الموثوق استخدم mode:'reliable' وrequestId ثابتًا. الحالة: GET /v3/tts/requests/{requestId}، والصوت: GET /v3/tts/requests/{requestId}/segments/{segmentId}/audio. أعد المحاولة فقط عندما تكون error.retryable تساوي true. يبقى Realtime v2 متوافقًا، لكن لا تخلط snake_case الخاص به مع v3.