ساخت ایجنت صوتی تعاملی صرفاً الصاق یک تبدیل متن به گفتار (TTS) به خروجی یک مدل متنی نیست؛ بلکه سیستمی بلادرنگ است که در آن تاخیر سرتاسری باید زیر 600 میلیثانیه نگه داشته شود و سیستم بتواند به محض ورود ناگهانی کاربر به کلام (barge-in)، پخش صدا را لغو کند.
فریمورکهایی مانند Pipecat با ارائهی پایپلاین فریممحور دوطرفه و LiveKit Agents با بهرهگیری از بستر کمتاخیر WebRTC، الگوهای استاندارد پیادهسازی این دستیارها را در اختیارتان میگذارند تا چالشهای تبدیل گفتار به متن (STT)، تشخیص پایان صحبت و جابهجایی جریان صوت را مدیریت کنید.
اگر برای بخشهای هوش مصنوعی این پایپلاین قصد استفاده از مدلهای ابری خارجی نظیر OpenAI Realtime را دارید، با توجه به محدودیتهای پرداخت ارزی و محدودیت دسترسی بر اساس IP، استفاده از گیتویهای واسط سازگار با API یا ارائهدهندگان جایگزین یک رویکرد رایج است. همچنین امکان اجرای مراحل به کمک مدلهای کوچکتر یا فریمورکهای سبک محلی نیز وجود دارد.
ایجنتهای صوتی در سال 2026 به یک دستهبندی پروداکشن درجهیک تبدیل شدهاند. Pipecat یک پایپلاین فریممحور پایتونی در اختیارتان میگذارد (VAD → STT → LLM → TTS → transport). پلتفرم LiveKit Agents مدلهای هوش مصنوعی را روی بستر WebRTC به کاربران متصل میکند. هدفگذاری تاخیر پروداکشن برای استکهای پیشرفته، 450 تا 600 میلیثانیه بهصورت سرتاسری (end-to-end) است.
اهداف یادگیری
- پایپلاین فریممحور Pipecat را توصیف کنید: DOWNSTREAM (مبدا→مقصد) و UPSTREAM (کنترل).
- مراحل استاندارد پایپلاین صوتی و بسترهای انتقالی را که Pipecat پشتیبانی میکند، نام ببرید.
- دو کلاس ایجنت صوتی LiveKit Agents یعنی MultimodalAgent و VoicePipelineAgent و کاربرد هرکدام را توضیح دهید.
- انتظارات تاخیر پروداکشن در سال 2026 و نقش تعیینکنندهی آنها در انتخاب معماری را خلاصه کنید.
صورت مسئله
ایجنت صوتی صرفاً یک حلقهی متنی نیست که یک TTS به آن وصله شده باشد. سقف تاخیر (Latency budget) بسیار سختگیرانه است (حدود 600 میلیثانیه)، ارسال تکهای صدا (Partial audio) حالت پیشفرض است، تشخیص نوبت گفتوگو (Turn detection) خودش یک مدل جداگانه میطلبد و بسترهای انتقال نیز از SIP تلفنی تا WebRTC متغیرند. در نتیجه یا باید یک پایپلاین فریممحور بسازید (Pipecat) یا به یک پلتفرم تکیه کنید (LiveKit).
مفاهیم کلیدی
فریمورک Pipecat (pipecat-ai/pipecat)
- فریمورک پایپلاین فریممحور در پایتون.
- زنجیرهی
Frame←FrameProcessor. - دو جهت جریان داده:
- DOWNSTREAM — مبدا به مقصد (ورود صدا، خروج صدای TTS).
- UPSTREAM — بازخورد و کنترل (لغو، متریکها، ورود ناگهانی به کلام یا barge-in).
- کلاس
PipelineTaskچرخهی حیات را با رویدادها (on_pipeline_started،on_pipeline_finishedوon_idle_timeout) و آبزرورها برای متریکها/ردگیری محاسبات (tracing)/پروتکل RTVI مدیریت میکند.
یک پایپلاین معمولی:
VAD (Silero) → STT → LLM (context alternates user/assistant) → TTS → transport
بسترهای انتقال: Daily، LiveKit، SmallWebRTCTransport، FastAPI WebSocket و WhatsApp.
افزونهی Pipecat Flows مکالمات ساختاریافته (ماشین وضعیت) را اضافه میکند. همچنین Pipecat Cloud محیط اجرای (Runtime) مدیریتشدهی آن است.
ابزار LiveKit Agents (livekit/agents)
- اتصال مدلهای هوش مصنوعی به کاربران روی بستر WebRTC.
- مفاهیم کلیدی:
Agent،AgentSession،entrypointوAgentServer. - دو کلاس ایجنت صوتی:
- MultimodalAgent — صدای مستقیم از طریق OpenAI Realtime یا معادل آن.
- VoicePipelineAgent — ساختار آبشاری STT → LLM → TTS؛ امکان کنترل در سطح متن را فراهم میکند.
- تشخیص معنایی نوبت گفتوگو با استفاده از یک مدل ترنسفورمر.
- یکپارچگی بومی با MCP.
- پشتیبانی از تلفنی از طریق SIP.
- دسترسی به بیش از 50 مدل بدون نیاز به کلید API از طریق LiveKit Inference؛ و بیش از 200 مدل دیگر با پلاگینها.
پلتفرمهای تجاری
سرویسهای Vapi (حدود 450 تا 600 میلیثانیه روی یک استک بهینهشدهی پیشرفته) و Retell (حدود 600 میلیثانیه سرتاسری در 180 تماس آزمایشی) روی همین پایهها بنا شدهاند. وقتی یک استک صوتی مدیریتشده میخواهید و قصد ندارید یک تیم اختصاصی WebRTC راه بیندازید، به سراغ یک پلتفرم بروید.
جاهایی که این الگو به مشکل میخورد
- مدیریت نشدن ورود ناگهانی به کلام (Barge-in): کاربر کلام را قطع میکند؛ ایجنت به حرف زدن ادامه میدهد. رفع این مشکل نیازمند فریمهای لغو UPSTREAM در Pipecat و سازوکار معادل آن در LiveKit است.
- نادیدهگرفتن ضریب اطمینان STT: متنهای خروجی STT با ضریب اطمینان پایین، طوری به LLM داده میشوند که انگار حقیقت مطلقاند. باید خروجی را با آستانه (Threshold) کنترل کنید یا از کاربر تایید بخواهید.
- قطع ناقص جمله در TTS: وقتی پایپلاین وسط جمله لغو میشود، TTS باید باخبر شود یا پخش صدا را فوراً قطع کند.
- نادیدهگرفتن سقف تاخیر: هر بخش از این زنجیره 50 تا 200 میلیثانیه به تاخیر اضافه میکند. پیش از استقرار در پروداکشن، مجموع تاخیرهای زنجیره را حساب کنید.
تاخیرهای متداول در سال 2026
- تشخیص فعالیت صوتی (VAD): حدود 20 تا 60 میلیثانیه
- تبدیل گفتار به متن لحظهای (STT partial): حدود 100 تا 250 میلیثانیه
- اولین توکن LLM: حدود 150 تا 400 میلیثانیه
- اولین بخش صدای TTS: حدود 100 تا 200 میلیثانیه
- رفت و برگشت بستر انتقال (Transport RTT): حدود 30 تا 80 میلیثانیه
تاخیر سرتاسری 450 تا 600 میلیثانیهای عملکردی ممتاز است. بین 800 تا 1200 میلیثانیه رایج است. هر مقداری بیشتر از 1500 میلیثانیه حس یک سیستم خراب را به کاربر میدهد.
پیادهسازی
کد code/main.py یک پایپلاین آموزشی و فریممحور است شامل:
- انواع
Frame(صدا، رونوشت، متن، صدای tts و سیگنال کنترلی). - رابط
Processorهمراه با متدprocess(frame). - یک پایپلاین پنجمرحلهای (VAD → STT → LLM → TTS → transport) در قالب پردازندههای اسکریپتشده.
- یک فریم لغو UPSTREAM برای نشان دادن نحوهی عملکرد barge-in.
اجرایش کنید:
python3 code/main.py
ردگیری محاسبات (Trace)، جریان عادی داده و سپس یک لغو از طریق barge-in را نشان میدهد که چطور پخش صدای TTS را در میانهی کلام قطع میکند.
کاربردها
- Pipecat برای کنترل کامل — پردازندههای سفارشی، تمرکز روی پایتون و تعویض آسان سرویسدهندهها.
- LiveKit Agents برای استقرارهای متمرکز بر WebRTC و سیستمهای تلفنی.
- Vapi / Retell برای ایجنتهای صوتی مدیریتشده، بدون نیاز به تیم WebRTC.
- OpenAI Realtime / Gemini Live برای ورودی و خروجی مستقیم صدا (MultimodalAgent).
تحویل پروژه
فایل outputs/skill-voice-pipeline.md قالبی آماده از یک پایپلاین صوتی به سبک Pipecat شامل VAD + STT + LLM + TTS + transport همراه با مدیریت barge-in ارائه میدهد.
تمرینها
- یک آبزرور متریک به پایپلاین آزمایشی اضافه کنید: تعداد فریمها در ثانیه را به تفکیک مراحل بشمارید. تاخیر بیشتر در کدام بخش انباشته میشود؟
- مرحلهی STT را به بررسی آستانهی اطمینان مجهز کنید: اگر ضریب اطمینان کمتر از آستانه بود، پیام «میشود دوباره تکرار کنید؟» فرستاده شود.
- تشخیص معنایی نوبت گفتوگو را اضافه کنید؛ یک قانون ساده: اگر رونوشت با علامت «؟» تمام شد، نوبت گفتوگو به پایان رسیده است.
- مستندات بسترهای انتقال Pipecat را بخوانید. بستر انتقال کتابخانهی استاندارد را با کانفیگ ماکت SmallWebRTCTransport تعویض کنید.
- تاخیر مدل OpenAI Realtime را در مقایسه با زنجیرهی آبشاری STT+LLM+TTS روی یک پرسش یکسان اندازه بگیرید. داشتن کنترل در سطح متن، چقدر تاخیر اضافی به سیستم تحمیل میکند؟
اصطلاحات کلیدی
| اصطلاح | در گفتوگوها چه میگویند | معنای دقیق فنی |
|---|---|---|
| فریم (Frame) | «رویداد» (Event) | واحد دادهی تایپشده در پایپلاین (صدا، رونوشت، متن، کنترل) |
| پردازنده (Processor) | «مرحلهی پایپلاین» | هندلری با متد process(frame) |
| DOWNSTREAM | «جریان رفت» | مسیر مبدا به مقصد: ورود صدا، خروج کلام |
| UPSTREAM | «جریان بازخورد» | سیگنالهای کنترلی: لغو، متریکها، ورود ناگهانی به کلام (Barge-in) |
| تشخیص فعالیت صوتی (VAD) | «تشخیص صدا» | تشخیص اینکه کاربر چه زمانی مشغول صحبت است |
| تشخیص معنایی نوبت گفتوگو (Semantic turn detection) | «پایان هوشمندانهی کلام» | تصمیمگیری مبتنی بر مدل دربارهی پایان صحبت کاربر |
| MultimodalAgent | «ایجنت صوتی مستقیم» | ورودی مستقیم صدا، خروجی صدا؛ بدون متن واسط |
| VoicePipelineAgent | «ایجنت آبشاری» | زنجیرهی STT + LLM + TTS؛ همراه با کنترل در سطح متن |
برای مطالعهی بیشتر
- مستندات Pipecat — پایپلاین فریممحور، پردازندهها و بسترهای انتقال
- مستندات LiveKit Agents — مبانی صوتی و WebRTC
- پلتفرم Vapi — پلتفرم مدیریتشدهی صدا
- پلتفرم Retell AI — صدای مدیریتشده همراه با بنچمارکهای تاخیر
