livekit-plugins-openai عبر توجيهه إلى عنوان Venice الأساسي.
تتناسب Venice مع بنية خط أنابيب STT-LLM-TTS في LiveKit Agents. لا توفّر Venice واجهة WebSocket لـ OpenAI Realtime (الكلام إلى كلام)، لذا لا يتوفر مسار
RealtimeModel / الوسائط المتعددة. استخدم خط الأنابيب المكوّن الموضح أدناه — فهو يمنحك تحكمًا كاملًا في كل نموذج ويُبقي الاستدلال على البنية التحتية الخاصة بـ Venice.كيف تُقابل Venice مكونات LiveKit Agents
الإعداد
ثبّت الإطار والملحقات المستخدَمة أدناه:يعود ملحق OpenAI إلى
OPENAI_API_KEY عند حذف api_key. وبما أنك توجهه إلى Venice، مرّر دائمًا api_key صراحةً (وإلا سيُقرأ المفتاح من المتغيّر الخطأ). تقرأ الأمثلة أدناه VENICE_API_KEY.وكيل صوتي متكامل
هذا وكيل صوتي كامل يفرّغ الكلام باستخدام Venice STT، ويفكّر عبر Venice LLM، ويتحدث بواسطة Venice TTS. يوفّر Silero كشفًا محليًا لنشاط الصوت حتى يعرف STT بوضع الدُفعات متى اكتمل الدور.إعداد كل مكوّن
LLM
يُعدّ ربط الـ LLM الأبسط — إذ يدعم/chat/completions من Venice تدفّق SSE واستدعاء الأدوات والرؤية، وكلها يستخدمها LiveKit مباشرة. يُبقي venice-uncensored-1-2 الاستدلال خاصًا وغير خاضع للرقابة بينما يغذّي خط أنابيب TTS؛ لا تلجأ إلى نموذج من فئة flash إلا إذا احتجت إلى تقليل زمن الوصول إلى أول رمز.
extra_body:
تحويل الكلام إلى نص
يستدعي OpenAI STT في LiveKit المسار/audio/transcriptions لكل مقطع كلامي، لذا يحتاج إلى VAD (مثل Silero أعلاه) للكشف عن انتهاء الدور. استبدل النموذج الافتراضي بنموذج STT من Venice. يُعدّ nvidia/parakeet-tdt-0.6b-v3 الخيار الأصغر والأقل تأخيرًا؛ بينما يمثّل stt-xai-v1 و elevenlabs/scribe-v2 بديلين أحدث إذا أردت دقة أعلى.
تحويل النص إلى كلام
يستدعي OpenAI TTS في LiveKit المسار/audio/speech. الأصوات في Venice خاصة بكل نموذج — مرّر زوج model/voice من النموذج نفسه. يُبقي tts-kokoro مرحلة الصوت خاصة وغير خاضعة للرقابة حتى يستطيع نطق مخرجات الـ LLM حرفيًا؛ اطلب pcm لتفادي خطوة فك ترميز MP3 وتوفير قليل من زمن التأخير. قد تطبّق الأصوات الأسرع المدعومة من مزوّدين آخرين (مثل Gemini) تصفية للمحتوى، لذا تجنّبها إذا احتجت إلى كلام غير خاضع للرقابة.
النماذج الموصى بها
تتغيّر معرّفات النماذج بمرور الوقت — اكتشف الخيارات الحالية أثناء التشغيل عبرGET /models?type=... و GET /models/traits بدلًا من ترميزها بشكل ثابت. بالنسبة للوكلاء الصوتيين، أعطِ الأولوية للفئات منخفضة زمن التأخير (النماذج المسمّاة flash أو turbo أو mini، أو ذات أعداد المعاملات الصغيرة) لأن الاستجابة المُدركة تعتمد على زمن الوصول إلى أول رمز وسرعة TTS. نقاط انطلاق جيدة من الكتالوج الحالي:
تصفح جميع النماذج
تصفية حسب النص وتحويل الكلام إلى نص وتحويل النص إلى كلام مع التسعير والقدرات الحيّة.
زمن التأخير ونصائح للإنتاج
تهيمن مدة تبادل الأدوار على جودة الوكيل الصوتي — أي الزمن بين انتهاء المستخدم من جملته وبدء الوكيل بالتحدث. مع خط أنابيب Venice الكامل، خصّص تقريبًا:
توقّع ~0.8–1.5 ثانية للوصول إلى أول صوت — رائع لتبادل أدوار بأسلوب المساعد ومقاس بعناية. أما في المحادثات القابلة للمقاطعة والمتداخلة بشدة، فستشعر بالفجوة مقارنةً بنموذج كلام إلى كلام أصلي.
تقليل زمن التأخير
- استخدم
response_format="pcm"في TTS لتخطي خطوة فك ترميز MP3. - اضبط Silero VAD (
silero.VAD.load(min_silence_duration=0.4)) لتقصير كشف انتهاء الدور دون قطع الكلام. - فضّل الفئات منخفضة زمن التأخير لـ STT/TTS (مثل TTS
tts-kokoro، و STTnvidia/parakeet-tdt-0.6b-v3). أبقِvenice-uncensored-1-2كـ LLM للحفاظ على الخصوصية وعدم الخضوع للرقابة؛ ولا تنتقل إلى LLM من فئةflashإلا إذا احتجت إلى زمن أسرع للوصول إلى أول رمز. - اجعل الردود موجزة — فالجملة الأولى هي ما يحدد الاستجابة المُدركة.
الدمج بين المزوّدين
يتيح لك LiveKit اختيار كل مكوّن باستقلالية، فيمكنك الإبقاء على Venice حيث تهم أكثر خصوصيتها ونماذجها غير الخاضعة للرقابة، والاستعانة بمزوّد تدفّق حيث يكون زمن التأخير حرجًا. إعداد شائع لتفاعلية عالية يُبقي على Venice LLM (وربما STT) ويقرنه بـ TTS تدفّقي مخصّص:القيود والملاحظات
- لا يوجد Realtime API أو كلام إلى كلام. لا تمتلك Venice WebSocket لـ OpenAI Realtime، لذا فإن
openai.realtime.RealtimeModelومسار الوكيل متعدد الوسائط غير متاحين. استخدم خط أنابيب STT-LLM-TTS الموضّح أعلاه. - STT بوضع الدُفعات لا التدفّق. التفريغ الصوتي في Venice طلب/استجابة، لذا يلزم VAD (مثل Silero) لكشف انتهاء الدور. يضيف ذلك قدرًا يسيرًا من زمن التأخير مقارنةً بمقبس STT تدفّقي.
- يقوم الملحق بتخزين TTS مؤقتًا. يُبلّغ غلاف OpenAI TTS في LiveKit بأن
streaming=False، لذا لا يستخدم علامةstreamingجملةً جملةً في Venice. يبقى زمن التأخير مناسبًا لمعظم الوكلاء؛ استخدمresponse_format="pcm"لتقليل تكلفة فك الترميز. - طابق الصوت مع النموذج. معرّفات
voiceفي TTS صالحة فقط معmodelالمطابق لها. راجع نماذج تحويل النص إلى كلام. - لا تُرمّز قوائم النماذج بشكل ثابت. يتم إهمال معرّفات نماذج Venice واستبدالها بانتظام — استعلم عن
GET /models/GET /models/traitsأثناء التشغيل. راجع الإهمالات.