الانتقال إلى المحتوى الرئيسي
LiveKit Agents هو إطار عمل لبناء ذكاء اصطناعي صوتي بالزمن الفعلي. وبما أن Venice متوافقة بالكامل مع OpenAI في المحادثة والتفريغ الصوتي وتوليد الكلام، يمكنك تشغيل جميع المراحل الثلاث للوكيل الصوتي — تحويل الكلام إلى نص (STT)، ونموذج اللغة الكبير (LLM)، وتحويل النص إلى كلام (TTS) — من خلال ملحق livekit-plugins-openai عبر توجيهه إلى عنوان Venice الأساسي.
تتناسب Venice مع بنية خط أنابيب STT-LLM-TTS في LiveKit Agents. لا توفّر Venice واجهة WebSocket لـ OpenAI Realtime (الكلام إلى كلام)، لذا لا يتوفر مسار RealtimeModel / الوسائط المتعددة. استخدم خط الأنابيب المكوّن الموضح أدناه — فهو يمنحك تحكمًا كاملًا في كل نموذج ويُبقي الاستدلال على البنية التحتية الخاصة بـ Venice.

كيف تُقابل Venice مكونات LiveKit Agents

الإعداد

ثبّت الإطار والملحقات المستخدَمة أدناه:
عيّن مفتاح Venice API وتفاصيل اتصال LiveKit:
يعود ملحق 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 إلا إذا احتجت إلى تقليل زمن الوصول إلى أول رمز.
مرّر الخيارات الخاصة بـ Venice (البحث على الويب، شخصيات الأدوار، التحكم في التفكير) عبر 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، و STT nvidia/parakeet-tdt-0.6b-v3). أبقِ venice-uncensored-1-2 كـ LLM للحفاظ على الخصوصية وعدم الخضوع للرقابة؛ ولا تنتقل إلى LLM من فئة flash إلا إذا احتجت إلى زمن أسرع للوصول إلى أول رمز.
  • اجعل الردود موجزة — فالجملة الأولى هي ما يحدد الاستجابة المُدركة.

الدمج بين المزوّدين

يتيح لك LiveKit اختيار كل مكوّن باستقلالية، فيمكنك الإبقاء على Venice حيث تهم أكثر خصوصيتها ونماذجها غير الخاضعة للرقابة، والاستعانة بمزوّد تدفّق حيث يكون زمن التأخير حرجًا. إعداد شائع لتفاعلية عالية يُبقي على Venice LLM (وربما STT) ويقرنه بـ TTS تدفّقي مخصّص:
ابدأ بإعداد Venice بالكامل للحصول على أبسط إعداد وأكثره خصوصية. أما إذا كنت تبني تجربة مستهلك سريعة ومحادثاتها عالية، فأبقِ Venice LLM وقيّم استخدام 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 أثناء التشغيل. راجع الإهمالات.

موارد ذات صلة