وكلاء صوت: بيبيكات و LiveKit
Type: Learn
Languages: Python (stdlib)
Prerequisites: Phase 14 · 01 (Agent Loop), Phase 14 · 12 (Workflow Patterns)
Time: ~60 minutes
أهداف التعلم
- وصف خط أنابيب Pipecat القائم على الإطار: DOWNSTREAM (المصدر→الغموض) و UPSTREAM (التحكم).
- أسمائ مراحل خط الأنابيب الصوتية القنونية والتي تنقل دعم بيبيكات.
- شرح فصول وكلاء صوتي لـ LiveKit Agents (MultimodalAgent و VoicePipelineAgent) ومتى تناسب كل منهما.
- تلخيص توقعات تأخر الإنتاج عام 2026 وكيفية قيادة اختيارات الهندسة المعمارية.
المشكلة
وكلاء الصوت ليسوا حلقة نصية مع TTS مدفوعة. ميزانيات التأخير وحشية (~ 600ms) ، الصوت الجزئي هو الافتراض، واكتشاف التحول هو نموذج، والنقل تتراوح من الهاتف SIP إلى WebRTC. إما أن تبني خط أنابيب القائم على الإطار (Pipecat) أو تعتمد على منصة (LiveKit).
المفهوم
البيت (بيتكيت-اي/بيتكيت)
- إطار خط أنابيب على أساس إطار Python.
FrameFrameProcessorالسلسلة- اتجاهين للتدفق:
- DOWNSTREAM مصدر → حوض (صوت داخل، TTS خارج).
- UPSTREAM ردود الفعل والتحكم (إلغاء، المقاييس، إدخال المياه).
PipelineTaskيدير دورة الحياة مع الأحداث (on_pipeline_started،on_pipeline_finished،on_idle_timeout) ومراقبين للمقاييس/التتبع/RTVI.
خط الأنابيب النموذجي:
VAD (Silero) → STT → LLM (context alternates user/assistant) → TTS → transportالنقل: يومي، LiveKit، SmallWebRTCTransport، FastAPI WebSocket، WhatsApp.
تشتمل Pipecat Flow على محادثات مهيكلة (آلات الحالة).
وكلاء ليف كيت (livekit/agents)
- يُجبر نماذج الذكاء الاصطناعي على المستخدمين عبر شبكة الويب.
- المفاهيم الرئيسية:
Agent،AgentSession،entrypoint،AgentServer. . . - فصول عامل صوتيّين:
- MultimodalAgent صوت مباشر عبر OpenAI في الوقت الحقيقي أو ما يعادله.
- VoicePipelineAgent STT → LLM → TTS سلسلة؛ يعطي التحكم على مستوى النص.
- الكشف عن التحولات المفصلة عبر نموذج المحول
- التكامل المحلي في MCP
- الهاتف عبر SIP.
- 50+ نموذج بدون مفاتيح API عبر LiveKit Inference؛ 200+ أكثر عبر المكونات التضخمية.
المنصات التجارية
يُبني Vapi (~ 450600ms على كومة مكافأة مكافأة محسنة) و Retell (~ 600ms من نهاية إلى نهاية عبر 180 مكالمة اختبارية) على أعلى هذه. اختر منصة عندما تريد كومة صوتية مديرة دون فريق WebRTC.
حيث يذهب هذا النمط خطأ
- No barge-in handling.المستخدم يقاطع، وكيل يستمر في الحديث. يطلب UPSTREAM إلغاء الإطارات في Pipecat، المكافئ في LiveKit.
- STT confidence ignored.نسخة منخفضة الثقة تُقدّم إلى ماجستير العلوم كإنجيل
- TTS mid-sentence cutoff.عندما يقوم خط الأنابيب بإلغاء الصوت في منتصف الصوت، يجب على TTS أن يعرف أو يقطع الصوت.
- Latency budget ignored.كل مكون يضيف 50200ms. جمع سلسلة قبل الشحن.
التأخيرات النموذجية لعام 2026
- VAD: 2060ms
- المدة القصوى: 100250ms
- الـ "إلـم" الـ "أول رمز": 150400ms
- صوت TTS الأول: 100200ms
- RTT النقل: 3080ms
نهاية إلى نهاية 450600ms هي المكلفة المتميزة. 8001200ms هو شائع. أي شيء > 1500ms يشعر وكأنه مكسور.
بناءها
code/main.pyهو خط أنابيب لعبة على أساس الإطار مع:
Frameالنماذج (الصوت، النص، النص، tts_audio، التحكم).Processorالتواصل معprocess(frame). . .- خط أنابيب من خمس مراحل (VAD → STT → LLM → TTS → النقل) كمعالجات مكتوبة.
- إطار إلغاء UPSTREAM لإظهار القصف
إشغله
python3 code/main.pyيظهر البصمة التدفق الطبيعي و إغلاق المباراة التي توقف TTS في منتصف التعبير
استخدمها
- Pipecatللسيطرة الكاملة المعالجات المخصصة، Python-first، مزودي القابل للدخول.
- LiveKit Agentsلتنفيذ خدمات الويب آر تي سي أولاً والاتصال الهاتفي.
- Vapi / Retellللوكلاء الصوتيين المضيفين بدون فريق WebRTC.
- OpenAI Realtime / Gemini Liveللصوت المباشر في / خارج الصوت (متعدد الوسائل).
أرسله
outputs/skill-voice-pipeline.mdيستخدم جهاز الصوت على شكل بيبيكات مع VAD + STT + LLM + TTS + النقل بالإضافة إلى التعامل مع القارب.
التمارين
- إضافة مراقب قياسات إلى خط ألعابك: عد الإطارات لكل مرحلة في الثانية. أين تتراكم التأخير؟
- تنفيذ إطار التدريبات المختلفة: تحت العد، طلب "هل يمكنك تكرار ذلك؟"
- إضافة اكتشاف التحولات النطاقية: قاعدة بسيطة إذا انتهى النص مع "؟" نهاية التحول.
- قراءة وثائق نقل Pipecat. تبادل النقل stdlib لتنظيم SmallWebRTCTransport (stub).
- قياس سلسلة OpenAI في الوقت الحقيقي مقابل STT+LLM+TTS على نفس الاستفسار. ما هي تكلفة التخفيف التي تحملها التحكم على مستوى النص؟
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Frame | "Event" | Typed unit of data in the pipeline (audio, transcript, text, control) |
| Processor | "Pipeline stage" | Handler with process(frame) |
| DOWNSTREAM | "Forward flow" | Source to sink: audio in, speech out |
| UPSTREAM | "Feedback flow" | Control: cancel, metrics, barge-in |
| VAD | "Voice activity detection" | Detects when user is speaking |
| Semantic turn detection | "Smart end-of-turn" | Model-based decision that the user is done |
| MultimodalAgent | "Direct audio agent" | Audio in, audio out; no text in the middle |
| VoicePipelineAgent | "Cascade agent" | STT + LLM + TTS; text-level control |
المزيد من القراءة
- Pipecat docs خطوط الأنابيب القائمة على الإطار، المعالجات، النقل
- LiveKit Agents docs WebRTC + صوتي بدائي
- Vapi منصة صوتية مُدارة
- Retell AI صوت مدير، مؤشر تأخير
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.