Voice Agent چیست؟ راهنمای ساخت دستیار صوتی هوش مصنوعی فارسی
Voice Agent صدای کاربر را دریافت میکند، منظور او را میفهمد، اطلاعات لازم را از ابزارها میگیرد و با صدایی طبیعی پاسخ میدهد. در این مقاله معماری و ساخت دستیار صوتی فارسی با API را بررسی میکنیم
چتباتهای متنی منتظر میمانند تا کاربر پیام خود را تایپ کند؛ اما Voice Agent میتواند صدای کاربر را بشنود، منظور او را بفهمد، اطلاعات لازم را از نرمافزارهای متصل دریافت کند و با صدایی طبیعی پاسخ دهد.
این قابلیت میتواند در مرکز تماس، فروشگاه اینترنتی، اپلیکیشن موبایل، سامانه رزرو، نرمافزار CRM یا دستیار داخل خودرو استفاده شود.
یک Voice Agent حرفهای فقط متن را به صدا تبدیل نمیکند. این سامانه باید بتواند مکالمه زنده را مدیریت کند، پایان صحبت کاربر را تشخیص دهد، در صورت قطعشدن صحبت خود متوقف شود، ابزار مناسب را فراخوانی کند و پاسخ کوتاهی متناسب با گفتوگوی صوتی تولید کند.
در این راهنما بررسی میکنیم Voice Agent چیست، چه تفاوتی با چتبات صوتی و تلفنگویای سنتی دارد، چگونه ساخته میشود و API درواره در کدام بخش معماری آن قرار میگیرد.
Voice Agent چیست؟
Voice Agent یا عامل صوتی، سامانهای مبتنی بر هوش مصنوعی است که از طریق گفتار با کاربر تعامل میکند و میتواند برای انجام یک هدف مشخص، چند مرحله پردازش یا عملیات اجرا کند.
جریان ساده یک مکالمه میتواند به این شکل باشد:
- کاربر صحبت میکند.
- سامانه صدای او را دریافت میکند.
- گفتار به متن یا نمایش معنایی تبدیل میشود.
- مدل زبانی منظور کاربر را تشخیص میدهد.
- در صورت نیاز، یک ابزار یا API فراخوانی میشود.
- مدل پاسخ مناسب را تولید میکند.
- پاسخ به صدا تبدیل و برای کاربر پخش میشود.
- مکالمه تا رسیدن به نتیجه ادامه پیدا میکند.
برای مثال، کاربر میگوید:
میخواهم وضعیت سفارش دیروز را بدانم.
عامل صوتی میتواند شماره تماس یا شناسه مکالمه را به سابقه مشتری مرتبط کند، ابزار استعلام سفارش را فراخوانی کند و پاسخ دهد:
سفارش شما آماده ارسال شده و امروز تحویل شرکت حملونقل میشود.
در این مثال، عامل فقط گفتوگو نکرده است؛ بلکه برای دریافت اطلاعات واقعی از یک ابزار استفاده کرده است.
تفاوت Voice Agent با دستیار صوتی چیست؟
عبارتهای Voice Agent، دستیار صوتی و چتبات صوتی گاهی بهجای یکدیگر استفاده میشوند؛ اما دامنه آنها میتواند متفاوت باشد.
دستیار صوتی
دستیار صوتی معمولاً فرمان یا سؤال کاربر را دریافت میکند و پاسخ میدهد. اجرای فرمانهایی مانند تنظیم یادآور، پخش موسیقی یا پاسخ به سؤال در این گروه قرار میگیرد.
چتبات صوتی
چتبات صوتی نسخه گفتاری یک چتبات متنی است. صدای کاربر به متن تبدیل میشود، چتبات پاسخ میدهد و پاسخ به صدا تبدیل میشود.
Voice Agent
Voice Agent علاوه بر مکالمه میتواند:
- هدف کاربر را تشخیص دهد.
- وضعیت مکالمه را نگه دارد.
- ابزار و API فراخوانی کند.
- اطلاعات را از چند سامانه دریافت کند.
- مراحل یک فرایند را اجرا کند.
- نتیجه عملیات را بررسی کند.
- مکالمه را به عامل تخصصی دیگری منتقل کند.
- در پایان یک نتیجه مشخص ثبت کند.
بنابراین، هر Voice Agent یک رابط صوتی دارد؛ اما هر برنامه صوتی الزاماً عامل هوشمند محسوب نمیشود.
تفاوت Voice Agent با تلفنگویای سنتی
تلفنگویای سنتی یا IVR معمولاً بر منو و دکمههای ثابت متکی است:
برای فروش عدد یک، برای پشتیبانی عدد دو و برای پیگیری سفارش عدد سه را وارد کنید.
در این سیستم، کاربر باید ساختار منو را دنبال کند. اگر درخواست او خارج از گزینههای تعریفشده باشد، سیستم انعطاف محدودی دارد.
Voice Agent میتواند زبان طبیعی را درک کند. کاربر میگوید:
سفارشم هنوز به دستم نرسیده و میخواهم بدانم الان کجاست.
عامل میتواند هدف «پیگیری سفارش» را تشخیص دهد، اطلاعات تکمیلی بخواهد و ابزار مناسب را اجرا کند.
| ویژگی | تلفنگویای سنتی | Voice Agent |
|---|---|---|
| روش تعامل | دکمه و منوی ثابت | مکالمه طبیعی |
| درک عبارتهای متنوع | محدود | گستردهتر |
| پاسخ پویا | محدود | دارد |
| اتصال به مدل زبانی | معمولاً ندارد | دارد |
| استفاده از ابزار | بر اساس مسیر ثابت | پویا و متناسب با درخواست |
| مدیریت ابهام | محدود | امکان پرسیدن سؤال تکمیلی |
| تغییر جریان مکالمه | دشوارتر | انعطافپذیرتر |
| تولید پاسخ شخصیسازیشده | محدود | امکانپذیر |
Voice Agent میتواند در کنار IVR نیز استفاده شود. برای مثال، منوی ابتدایی تماس ثابت باقی بماند و درخواستهای نیازمند گفتوگو به عامل صوتی منتقل شوند.
اجزای اصلی یک Voice Agent
ورودی و خروجی صوتی
در اپلیکیشن وب و موبایل، صدا معمولاً از میکروفون دریافت میشود. برای مکالمه بلادرنگ در مرورگر میتوان از WebRTC استفاده کرد.
WebRTC یک استاندارد باز برای انتقال زنده صدا، تصویر و داده در مرورگرها و برنامههای مختلف است.
در تماس تلفنی، صدا از طریق زیرساخت تلفن، SIP، مرکز تماس یا نرمافزاری مانند Asterisk دریافت میشود.
تشخیص فعالیت صوتی
Voice Activity Detection یا VAD مشخص میکند کاربر چه زمانی شروع به صحبت کرده و چه زمانی سکوت کرده است.
بدون VAD، سامانه نمیداند:
- چه زمانی پردازش را آغاز کند.
- آیا مکث کوتاه بخشی از جمله است.
- آیا صحبت کاربر تمام شده است.
- آیا کاربر وسط پاسخ عامل شروع به صحبت کرده است.
تشخیص پایان نوبت فقط بر اساس سکوت ثابت همیشه مناسب نیست. کاربر ممکن است برای فکرکردن مکث کند و سپس جمله خود را ادامه دهد.
تبدیل گفتار به متن
Speech-to-Text یا STT صدای کاربر را به متن تبدیل میکند.
مدل مناسب باید بتواند مواردی مانند اینها را درست تشخیص دهد:
- گفتار فارسی رسمی
- مکالمه محاورهای
- نام اشخاص و محصولات
- اعداد و مبلغها
- تاریخ و ساعت
- واژههای انگلیسی داخل جمله فارسی
- لهجههای مختلف
- گفتار سریع یا همراه با مکث
خروجی STT به مدل زبانی ارسال میشود تا هدف و محتوای درخواست تحلیل شود.
مدل زبانی
مدل زبانی نقش اصلی در فهم درخواست و مدیریت مکالمه دارد.
وظایف آن میتواند شامل این موارد باشد:
- تشخیص هدف کاربر
- استخراج اطلاعات لازم
- تصمیم درباره سؤال بعدی
- انتخاب ابزار
- تفسیر خروجی ابزار
- تولید پاسخ مناسب
- نگهداری جریان مکالمه
- تشخیص پایان موفق فرایند
برای کارهایی مانند تشخیص Intent یا استخراج اطلاعات میتوان از مدل کوچکتر استفاده کرد. مکالمههای پیچیدهتر ممکن است به مدل قویتری نیاز داشته باشند.
ابزارها و Function Calling
بدون اتصال به ابزار، عامل صوتی معمولاً فقط اطلاعات عمومی ارائه میدهد. برای انجام کار واقعی باید به APIهای نرمافزار متصل شود.
نمونه ابزارها:
- دریافت وضعیت سفارش
- مشاهده موجودی محصول
- ثبت نوبت
- تغییر زمان رزرو
- استعلام مانده حساب
- ایجاد تیکت
- دریافت اطلاعات شعبه
- ثبت درخواست تماس
- محاسبه هزینه ارسال
- ثبت نتیجه مکالمه در CRM
مدل تصمیم میگیرد چه زمانی ابزار مناسب را فراخوانی کند. اجرای واقعی عملیات توسط Backend انجام میشود و نتیجه دوباره به مدل برمیگردد.
تبدیل متن به صدا
Text-to-Speech یا TTS پاسخ متنی مدل را به صدای قابلپخش تبدیل میکند.
برای یک Voice Agent فارسی، مدل TTS باید بتواند موارد زیر را طبیعی بخواند:
- اعداد فارسی و لاتین
- مبلغها
- شماره سفارش
- ساعت و تاریخ
- نام برندها
- واژههای ترکیبی فارسی و انگلیسی
- علامت سؤال و تعجب
- مکث و تأکید
- لحن رسمی یا دوستانه
پاسخ صوتی باید کوتاهتر از پاسخ متنی باشد. شنیدن یک پاراگراف طولانی دشوارتر از خواندن همان متن روی صفحه است.
مدیریت وضعیت مکالمه
عامل باید بداند در کدام مرحله قرار دارد و چه اطلاعاتی قبلاً دریافت شده است.
برای نمونه، فرایند رزرو ممکن است این اطلاعات را نیاز داشته باشد:
- نوع خدمت
- شعبه
- تاریخ
- ساعت
- نام متقاضی
- شماره پیگیری
اگر کاربر بعضی اطلاعات را در ابتدای مکالمه گفته باشد، عامل نباید دوباره همان سؤال را تکرار کند.
معماری اول: زنجیره STT، مدل زبانی و TTS
رایجترین معماری Voice Agent از سه مدل تخصصی تشکیل میشود:
صدای کاربر
↓
تشخیص فعالیت صوتی
↓
تبدیل گفتار به متن
↓
مدل زبانی و ابزارها
↓
تولید پاسخ متنی
↓
تبدیل متن به صدا
↓
پخش پاسخ
طبق مستندات رسمی LiveKit، این معماری با عنوان STT–LLM–TTS Pipeline شناخته میشود.
مزایای معماری زنجیرهای
- امکان انتخاب جداگانه مدل هر مرحله
- مشاهده متن استخراجشده
- کنترل بیشتر بر پرامپت
- امکان اصلاح و استانداردسازی متن
- انتخاب صدای مناسب
- امکان تغییر مدل زبانی بدون تغییر کل سامانه
- ارزیابی جداگانه هر بخش
- استفاده از مدل اقتصادی برای بعضی مراحل
محدودیتهای معماری زنجیرهای
هر مرحله مقداری زمان به مکالمه اضافه میکند. اگر تبدیل گفتار، مدل زبانی یا تولید صدا کند باشد، کاربر فاصله غیرطبیعی میان سؤال و پاسخ احساس میکند.
همچنین بخشی از اطلاعات صوتی مانند لحن، سرعت و احساس کاربر ممکن است هنگام تبدیل صدا به متن کاهش پیدا کند.
معماری دوم: مدل مستقیم گفتاربهگفتار
در معماری Speech-to-Speech، یک مدل صوت را مستقیماً دریافت و پاسخ صوتی تولید میکند.
صدای کاربر
↓
مدل صوتی بلادرنگ
↓
پاسخ صوتی
در این معماری لازم نیست گفتار حتماً از سه مدل جداگانه عبور کند. مدل میتواند ویژگیهای صوتی مکالمه را بهتر در نظر بگیرد و پاسخ طبیعیتری تولید کند.
مزایای مدل گفتاربهگفتار
- اجزای کمتر در مسیر اصلی
- امکان مکالمه روانتر
- درک بهتر لحن و ویژگیهای صوتی
- تولید پاسخ صوتی طبیعیتر
- مناسب برای تعامل بلادرنگ
محدودیتهای مدل گفتاربهگفتار
- کنترل مستقل کمتر بر هر مرحله
- ارزیابی دشوارتر علت بعضی خطاها
- وابستگی بیشتر به قابلیتهای همان مدل
- تفاوت در پشتیبانی زبانها و صداها
- نیاز به بررسی جداگانه Tool Calling و خروجی متنی
معماری سوم: مدل ترکیبی
در معماری Hybrid میتوان بخشی از پردازش را به مدل صوتی بلادرنگ و بخش دیگری را به مدل تخصصی جداگانه سپرد.
برای مثال:
- مدل صوتی برای فهم سریع صحبت کاربر
- مدل زبانی تخصصی برای تصمیمگیری
- مدل TTS جداگانه برای تولید صدای فارسی
یا:
- STT مستقل
- مدل صوتی یا زبانی بلادرنگ
- ابزارهای Backend
- TTS قابلکنترل
این معماری زمانی مفید است که یک مدل در فهم صوت قوی باشد، اما صدای خروجی یا قابلیتهای زبانی موردنیاز محصول را بهطور کامل ارائه نکند.
Interrupt و Barge-in چیست؟
در مکالمه انسانی، افراد همیشه منتظر پایان کامل صحبت طرف مقابل نمیمانند. ممکن است کاربر وسط پاسخ بگوید:
نه، منظورم سفارش امروز بود.
Voice Agent باید بتواند:
- شروع صحبت کاربر را تشخیص دهد.
- پخش پاسخ خود را متوقف کند.
- بخش شنیدهشده پاسخ را در وضعیت مکالمه ثبت کند.
- صدای جدید را پردازش کند.
- پاسخ اصلاحشده ارائه دهد.
به این قابلیت Barge-in یا Interrupt Handling گفته میشود.
اگر عامل به صحبت خود ادامه دهد و همزمان صدای کاربر را نشنود، مکالمه مصنوعی و خستهکننده خواهد شد.
Turn Detection چیست؟
Turn Detection مشخص میکند نوبت صحبت کاربر چه زمانی پایان یافته است.
پایان نوبت فقط با سکوت مشخص نمیشود. این عوامل نیز اهمیت دارند:
- کامل یا ناقصبودن جمله
- آهنگ پایان جمله
- طول مکث
- نوع سؤال
- الگوی مکالمه
- انتظار عامل برای دریافت یک مقدار مشخص
برای مثال، کاربر میگوید:
شماره سفارشم... یک لحظه... ۴۸۳۲ است.
اگر سامانه مکث کوتاه را پایان نوبت در نظر بگیرد، قبل از شنیدن شماره پاسخ خواهد داد.
مستندات Pipecat و LiveKit تشخیص نوبت، VAD و مدیریت وقفه را از اجزای اصلی مکالمه صوتی طبیعی معرفی میکنند.
چرا تأخیر در Voice Agent اهمیت دارد؟
در رابط متنی، کاربر ممکن است چند ثانیه برای پاسخ منتظر بماند. در مکالمه صوتی، سکوت طولانی سریعتر احساس میشود.
زمان پاسخ تحت تأثیر این مراحل قرار دارد:
- انتقال صوت
- تشخیص شروع و پایان صحبت
- تبدیل گفتار به متن
- پردازش مدل زبانی
- فراخوانی ابزار
- تولید پاسخ
- تبدیل متن به صدا
- انتقال و پخش صدا
هدف فقط سریعترکردن مدل زبانی نیست. تمام زنجیره باید بررسی شود.
استفاده از Streaming
در Streaming لازم نیست منتظر تولید کامل پاسخ بمانید. مدل میتواند متن را تدریجی تولید کند و TTS نیز همان بخشها را به صدا تبدیل کند.
فرایند میتواند به این شکل باشد:
مدل: «سفارش شما...»
↓
TTS شروع به تولید صدا میکند
مدل: «امروز تحویل شرکت حملونقل شده...»
↓
ادامه صدا تولید میشود
این روش زمان شروع پاسخ را کاهش میدهد، اما متن باید در نقاط مناسب جمله تقسیم شود تا صدا بریده و غیرطبیعی نباشد.
کوتاهکردن پاسخ صوتی
پرامپت Voice Agent باید مدل را به پاسخهای کوتاه هدایت کند. عامل میتواند ابتدا پاسخ اصلی را بگوید و سپس بپرسد:
آیا جزئیات بیشتری میخواهید؟
آمادهسازی پاسخهای ثابت
پیامهایی مانند خوشامدگویی، اعلام انتظار یا درخواست تکرار را میتوان از قبل تولید و ذخیره کرد تا فوراً پخش شوند.
انتخاب مدل متناسب با وظیفه
همه نوبتهای مکالمه به مدل قدرتمند نیاز ندارند. تشخیص پاسخ بله یا خیر، استخراج شماره سفارش و انتخاب مسیر میتواند با مدل سریعتری انجام شود.
ساخت Voice Agent فارسی چه چالشهایی دارد؟
تشخیص گفتار محاورهای
کاربران معمولاً مانند متن رسمی صحبت نمیکنند:
سفارشم هنوز نیومده، میشه ببینید کجاست؟
مدل STT و مدل زبانی باید این عبارت را با «پیگیری وضعیت سفارش» مرتبط کنند.
اعداد و شمارهها
اعداد در مکالمه فارسی به شکلهای مختلف بیان میشوند:
- چهلوهشت سیودو
- چهار، هشت، سه، دو
- صفر نهصد و دوازده
- دو میلیون و پانصد
- بیستویکم مرداد
برای شماره تلفن، کد پیگیری و مبلغ باید قواعد جداگانهای تعریف شود.
واژههای فارسی و انگلیسی
در مکالمات واقعی، نام مدل، محصول یا سرویس ممکن است انگلیسی باشد:
پلن Premium من فعال نشده.
STT باید بتواند متن ترکیبی فارسی و انگلیسی را تشخیص دهد و TTS نیز آن را قابلفهم بخواند.
نام اشخاص و برندها
اسامی اختصاصی معمولاً بیشترین خطا را ایجاد میکنند. میتوان فهرست نام محصولات، شعب، شهرها و برندهای پرتکرار را در اختیار سامانه تشخیص گفتار یا لایه اصلاح متن قرار داد.
لحن پاسخ
صدای عامل باید با کاربرد محصول هماهنگ باشد:
- رسمی برای سامانه سازمانی
- دوستانه برای فروشگاه
- آرام برای رزرو و راهنمایی
- کوتاه و مستقیم برای پیگیری سفارش
- پرانرژی برای معرفی محصول
طول پاسخ
پاسخهایی که برای چت مناسباند، الزاماً برای صدا مناسب نیستند. جملهها باید کوتاهتر باشند و در هر نوبت فقط اطلاعات ضروری گفته شود.
کاربردهای Voice Agent در کسبوکار
پاسخگویی به تماسهای پرتکرار
عامل میتواند به سؤالهای تکراری مانند ساعت کاری، آدرس شعبه، وضعیت سفارش و شیوه استفاده از خدمات پاسخ دهد.
پیگیری سفارش
Voice Agent با اتصال به سامانه سفارش میتواند آخرین وضعیت، زمان تقریبی ارسال و شماره مرسوله را دریافت کند.
رزرو و نوبتدهی
عامل میتواند خدمت، شعبه، روز و ساعت موردنظر را دریافت و زمانهای دردسترس را اعلام کند.
پشتیبانی اولیه
عامل اطلاعات اولیه مشکل را جمعآوری میکند، راهنمای مناسب را ارائه میدهد یا درخواست را در بخش مرتبط ثبت میکند.
فروش و معرفی محصول
Voice Agent میتواند نیاز مشتری را بپرسد، محصولات مناسب را توضیح دهد و درخواست تماس کارشناس ثبت کند.
ارزیابی اولیه سرنخ فروش
عامل میتواند اطلاعاتی مانند نوع کسبوکار، نیاز، زمان اجرا و دامنه پروژه را جمعآوری و در CRM ثبت کند.
نظرسنجی صوتی
پس از خرید یا ارائه خدمت، عامل میتواند چند سؤال کوتاه بپرسد و پاسخها را به داده ساختاریافته تبدیل کند.
دستیار داخل اپلیکیشن
کاربر میتواند بهجای جستوجو در منوها، درخواست خود را با صدا بیان کند و پاسخ صوتی یا تصویری دریافت کند.
راهنمای محصول
عامل میتواند درباره مراحل راهاندازی، انتخاب قابلیت یا رفع مشکلات رایج توضیح دهد.
معماری Voice Agent برای تماس تلفنی
برای پاسخگویی به تماس تلفنی، فقط API مدل کافی نیست. یک لایه ارتباط تلفنی نیز لازم است.
معماری کلی میتواند چنین باشد:
تماسگیرنده
↓
شماره تلفن و شبکه مخابراتی
↓
SIP یا مرکز تلفن
↓
Asterisk یا سامانه مدیریت تماس
↓
انتقال زنده صوت
↓
Voice Agent Backend
↓
STT / مدل زبانی / TTS
↓
CRM، سفارش، رزرو یا ابزارهای دیگر
↓
بازگشت صدا به تماس
Asterisk یک پلتفرم متنباز ارتباطی است. رابط ARI آن امکان ساخت برنامههایی را فراهم میکند که کانالها، تماسها، Bridgeها و رسانه را مدیریت کنند.
قابلیت External Media نیز میتواند صدا را میان Asterisk و برنامه پردازش Voice Agent منتقل کند.
API درواره لایه تلفن یا شماره تماس ارائه نمیدهد. وظیفه درواره فراهمکردن دسترسی به مدلهای هوش مصنوعی است و اتصال مخابراتی باید جداگانه طراحی شود.
معماری Voice Agent برای وب و اپلیکیشن
برای نسخه تحت وب، جریان سادهتر است:
میکروفون کاربر
↓
مرورگر یا اپلیکیشن
↓
WebRTC یا WebSocket
↓
سرور Voice Agent
↓
مدلهای صوتی و زبانی
↓
پاسخ صوتی
↓
پخش در مرورگر
در این معماری میتوان همزمان اطلاعات بصری نیز نمایش داد؛ برای مثال:
- متن مکالمه
- وضعیت پردازش
- کارت محصول
- زمانهای رزرو
- شماره پیگیری
- دکمه تأیید
- خلاصه نتیجه مکالمه
این روش برای ساخت دستیار صوتی در سایت، اپلیکیشن فروشگاهی یا نرمافزار سازمانی مناسب است.
نقش API درواره در ساخت Voice Agent
یک Voice Agent معمولاً به چند نوع مدل نیاز دارد:
- مدل تبدیل گفتار به متن
- مدل زبانی یا استدلالی
- مدل تبدیل متن به صدا
- در بعضی معماریها مدل مستقیم صوتی
- مدل سبک برای دستهبندی یا مسیریابی
درواره دسترسی به مدلهای مختلف هوش مصنوعی را از طریق API یکپارچه فراهم میکند. توسعهدهنده میتواند مدلهای فعال متنی و صوتی را در کاتالوگ بررسی و برای هر مرحله گزینه مناسب را انتخاب کند.
نقش درواره میتواند شامل این بخشها باشد:
- تبدیل فایل یا جریان صوتی به متن، در مدلهای پشتیبانیشده
- پردازش متن مکالمه با مدل زبانی
- تشخیص هدف و استخراج اطلاعات
- Function Calling برای اتصال به Backend
- تولید پاسخ متنی
- تبدیل پاسخ به صوت، در مدلهای پشتیبانیشده
- استفاده از چند مدل برای وظایف متفاوت
- مدیریت مصرف از یک داشبورد
پشتیبانی دقیق از Streaming صوتی، فرمت فایل، زبان، Voice، Speech-to-Speech و Endpointهای صوتی به مدل انتخابشده بستگی دارد. پیش از پیادهسازی باید مشخصات همان مدل در کاتالوگ و مستندات بررسی شود.
درواره بهتنهایی یک Voice Agent آماده، مرکز تلفن یا سامانه تماس نیست؛ بلکه لایه دسترسی به مدلها را برای ساخت این محصول فراهم میکند.
نمونه زنجیره صوتی با API سازگار درواره
نمونه زیر ساختار کلی یک پردازش غیرزنده را نشان میدهد:
- فایل صوتی کاربر به متن تبدیل میشود.
- متن به مدل زبانی ارسال میشود.
- پاسخ مدل به صدا تبدیل میشود.
ابتدا کتابخانه را نصب کنید:
pip install openai
نمونه Python:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DARVAREH_API_KEY"],
base_url="https://api.darvareh.ir/v1"
)
with open("user-message.wav", "rb") as audio_file:
transcript = client.audio.transcriptions.create(
model="YOUR_STT_MODEL_ID",
file=audio_file,
language="fa"
)
user_text = transcript.text
response = client.chat.completions.create(
model="YOUR_LLM_MODEL_ID",
messages=[
{
"role": "system",
"content": """
شما دستیار صوتی فارسی یک فروشگاه هستید.
قواعد مکالمه:
- پاسخ را کوتاه و گفتاری بنویس.
- در هر نوبت فقط یک سؤال بپرس.
- عددها را به شکلی بنویس که در گفتار واضح باشند.
- اگر اطلاعات کافی نیست، سؤال تکمیلی بپرس.
- از پاراگرافهای طولانی استفاده نکن.
"""
},
{
"role": "user",
"content": user_text
}
],
temperature=0.2
)
assistant_text = response.choices[0].message.content
speech = client.audio.speech.create(
model="YOUR_TTS_MODEL_ID",
voice="YOUR_VOICE_ID",
input=assistant_text
)
speech.write_to_file("assistant-response.mp3")
مقادیر زیر باید با شناسههای فعلی کاتالوگ درواره جایگزین شوند:
YOUR_STT_MODEL_IDYOUR_LLM_MODEL_IDYOUR_TTS_MODEL_IDYOUR_VOICE_ID
پارامترهایی مانند language، voice، فرمت خروجی و روش ذخیره پاسخ ممکن است میان مدلهای مختلف تفاوت داشته باشند.
این نمونه مکالمه بلادرنگ نیست. برای Voice Agent زنده باید انتقال Streaming صوت، VAD، تشخیص نوبت، Interrupt و مدیریت Session نیز اضافه شود.
Function Calling در Voice Agent
فرض کنید عامل برای پیگیری سفارش به ابزار زیر دسترسی دارد:
{
"name": "get_order_status",
"description": "دریافت آخرین وضعیت سفارش",
"parameters": {
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "شماره سفارش"
}
},
"required": ["order_id"]
}
}
جریان مکالمه:
کاربر:
وضعیت سفارش ۴۸۳۲ را میخواهم.
مدل:
- هدف را تشخیص میدهد.
- شماره سفارش را استخراج میکند.
- تابع
get_order_statusرا فراخوانی میکند.
Backend:
{
"order_id": "4832",
"status": "تحویل شرکت حملونقل",
"estimated_delivery": "فردا"
}
مدل پاسخ صوتی کوتاهی میسازد:
سفارش شماره چهار هزار و هشتصد و سیودو تحویل شرکت حملونقل شده و زمان تقریبی تحویل آن فرداست.
در این معماری، مدل اطلاعات سفارش را از خود تولید نمیکند؛ پاسخ را بر اساس نتیجه ابزار میسازد.
System Prompt مناسب دستیار صوتی
پرامپت Voice Agent باید با چتبات متنی متفاوت باشد.
نمونه:
شما دستیار صوتی فارسی یک سامانه نوبتدهی هستید.
هدف:
کمک به کاربر برای مشاهده، ثبت یا تغییر نوبت.
سبک گفتوگو:
- طبیعی، کوتاه و محترمانه صحبت کن.
- در هر نوبت فقط یک سؤال بپرس.
- پاسخها حداکثر دو یا سه جمله باشند.
- فهرست طولانی را یکجا نخوان.
- ابتدا مهمترین گزینهها را بگو.
- اطلاعات قبلی مکالمه را بیدلیل تکرار نکن.
- اعداد، ساعت و تاریخ را واضح بنویس.
- اگر صدای کاربر نامفهوم بود، فقط همان بخش را دوباره بپرس.
- پس از انجام کار، نتیجه را کوتاه تأیید کن.
قواعد ابزار:
- برای اطلاعات واقعی فقط از ابزارهای تعریفشده استفاده کن.
- اگر ابزار نتیجه کافی نداد، اطلاعات جدید تولید نکن.
- قبل از داشتن اطلاعات ضروری، ابزار را فراخوانی نکن.
چگونه مکالمه Voice Agent را طراحی کنیم؟
هدف محدود انتخاب کنید
در نسخه اول، عامل را برای یک یا دو فرایند مشخص بسازید:
- پیگیری سفارش
- رزرو نوبت
- پاسخ به سؤالهای پرتکرار
- ثبت درخواست تماس
عامل عمومی که قرار است به هر سؤالی پاسخ دهد، طراحی و ارزیابی دشوارتری دارد.
مسیر موفق مکالمه را مشخص کنید
برای هر هدف تعیین کنید:
- چه اطلاعاتی لازم است؟
- چه سؤالهایی باید پرسیده شوند؟
- چه ابزاری اجرا میشود؟
- نتیجه موفق چیست؟
- اگر اطلاعات ناقص باشد چه اتفاقی میافتد؟
- مکالمه چه زمانی تمام میشود؟
یک سؤال در هر نوبت بپرسید
این سؤال مناسب نیست:
نام، شماره تماس، شعبه، نوع خدمت و ساعت موردنظرتان را بگویید.
نسخه بهتر:
برای چه خدمتی نوبت میخواهید؟
پس از پاسخ:
کدام شعبه برایتان مناسبتر است؟
گزینهها را کوتاه ارائه دهید
خواندن ده گزینه پشت سر هم باعث فراموشی میشود. ابتدا چند گزینه مرتبط را اعلام کنید و امکان شنیدن موارد بیشتر را بدهید.
تأییدهای غیرضروری را حذف کنید
عامل نباید بعد از هر جمله بگوید «متوجه شدم». تأیید فقط برای اطلاعات مهم یا پایان عملیات استفاده شود.
متن را برای گفتار آماده کنید
پیش از TTS میتوان متن را استاندارد کرد:
- تبدیل نشانهها به مکث مناسب
- بازنویسی عددها
- اصلاح تلفظ نام برند
- حذف Markdown
- کوتاهکردن URL
- تبدیل مخففها به شکل قابلخواندن
ارزیابی Voice Agent
ارزیابی فقط با بررسی کیفیت متن پاسخ کافی نیست. کل تجربه مکالمه باید سنجیده شود.
نرخ تکمیل موفق وظیفه
چند درصد کاربران توانستهاند بدون رهاکردن مکالمه، کار موردنظر را کامل کنند؟
زمان شروع پاسخ
فاصله پایان صحبت کاربر تا شروع صدای عامل چقدر است؟
دقت تبدیل گفتار فارسی
نامها، اعداد، تاریخها، عبارتهای محاورهای و واژههای ترکیبی تا چه اندازه درست تشخیص داده میشوند؟
موفقیت فراخوانی ابزار
آیا مدل ابزار درست را با اطلاعات درست انتخاب کرده است؟
تعداد نوبتهای مکالمه
اگر انجام یک کار ساده به سؤالهای زیادی نیاز دارد، جریان مکالمه باید کوتاهتر شود.
نرخ تکرار سؤال
چند بار کاربر مجبور شده جمله یا عدد خود را دوباره بیان کند؟
عملکرد Interrupt
آیا عامل هنگام شروع صحبت کاربر سریع متوقف میشود و ادامه گفتار را درست دریافت میکند؟
کیفیت صدای فارسی
طبیعیبودن، تلفظ، مکث، سرعت و وضوح صدا باید توسط کاربران فارسیزبان ارزیابی شود.
هزینه هر مکالمه موفق
هزینه باید بر اساس کل زنجیره محاسبه شود:
- تبدیل گفتار به متن
- مصرف مدل زبانی
- تولید صوت
- زیرساخت انتقال صدا
- تعداد فراخوانی ابزار
- طول مکالمه
کاهش هزینه Voice Agent
پاسخها را کوتاه نگه دارید
پاسخ کوتاه هم تجربه صوتی بهتری ایجاد میکند و هم مصرف مدل و TTS را کاهش میدهد.
از چند مدل استفاده کنید
یک مدل سریع میتواند Intent را تشخیص دهد و مدل قویتر فقط در مکالمههای پیچیده استفاده شود.
پیامهای ثابت را ذخیره کنید
خوشامدگویی، اعلام انتظار و پیام پایان مکالمه لازم نیست هر بار دوباره تولید شوند.
Context مکالمه را مدیریت کنید
بهجای ارسال تمام Transcript، وضعیت ساختاریافته و خلاصه نوبتهای قبلی را نگه دارید.
خروجی ابزارها را کوتاه کنید
مدل به تمام پاسخ بزرگ CRM یا سیستم سفارش نیاز ندارد. فقط فیلدهای مرتبط با همان سؤال وارد Context شوند.
پایان مکالمه را تشخیص دهید
پس از تکمیل هدف، عامل نباید گفتوگو را بدون دلیل ادامه دهد.
خطاهای رایج در ساخت Voice Agent
ساخت چتبات متنی و افزودن TTS
پاسخهای متنی معمولاً طولانیاند و برای شنیدن طراحی نشدهاند. منطق مکالمه صوتی باید از ابتدا جداگانه طراحی شود.
نادیدهگرفتن Interrupt
عاملی که وسط صحبت خود متوقف نمیشود، تجربهای شبیه فایل صوتی تعاملی ایجاد میکند.
استفاده از سکوت ثابت برای پایان نوبت
مکث طبیعی کاربر ممکن است به اشتباه پایان جمله تشخیص داده شود.
پرسیدن چند سؤال همزمان
کاربر ممکن است فقط یکی از اطلاعات را پاسخ دهد و عامل نداند کدام بخش ناقص مانده است.
سپردن اطلاعات واقعی به مدل
وضعیت سفارش، موجودی، مبلغ و زمان رزرو باید از ابزار یا سامانه اصلی دریافت شوند.
نداشتن وضعیت ساختاریافته
نگهداری تمام اطلاعات فقط در Transcript باعث میشود مدل بعضی جزئیات را فراموش یا اشتباه برداشت کند.
استفاده از یک مدل برای تمام مراحل
بهترین مدل STT الزاماً بهترین مدل زبانی یا TTS نیست. مراحل باید جداگانه ارزیابی شوند.
آزمایش فقط با صدای واضح
سامانه باید با سرعتهای مختلف صحبت، واژههای محاورهای، اعداد، نامها و مکثهای واقعی آزمایش شود.
ابزارهای متنباز برای ساخت Voice Agent
LiveKit Agents
LiveKit Agents یک چارچوب متنباز Python و Node.js برای ساخت عاملهای صوتی بلادرنگ است. این چارچوب انتقال صوت، معماری STT–LLM–TTS، تشخیص نوبت، وقفه و مدیریت Session را پوشش میدهد.
Pipecat
Pipecat یک چارچوب متنباز Python برای ساخت زنجیرههای Voice AI و برنامههای چندوجهی بلادرنگ است. معماری آن بر Pipeline و پردازش جریانهای صوتی استوار است.
Asterisk
Asterisk برای مدیریت تماس، SIP، کانال صوتی و اتصال مرکز تلفن به Backend عامل قابل استفاده است.
این ابزارها در ایران قابل نصب و اجرا هستند؛ اما برای اتصال به شبکه تلفن، سرور و تنظیمات ارتباطی متناسب با پروژه نیز نیاز خواهید داشت.
نقشه راه ساخت نسخه اولیه Voice Agent
مرحله اول: انتخاب یک کاربرد
برای مثال، «پیگیری وضعیت سفارش» را انتخاب کنید.
مرحله دوم: آمادهسازی API ابزار
یک Endpoint بسازید که بر اساس شماره سفارش، وضعیت فعلی را برگرداند.
مرحله سوم: آزمایش متن
ابتدا جریان مکالمه و Function Calling را بدون صدا آزمایش کنید.
مرحله چهارم: افزودن STT و TTS
پس از درستبودن منطق، ورودی و خروجی صوتی را اضافه کنید.
مرحله پنجم: اضافهکردن Streaming
برای کاهش زمان شروع پاسخ، متن و صوت را تدریجی پردازش کنید.
مرحله ششم: مدیریت نوبت و وقفه
VAD، Turn Detection و Interrupt را با مکالمات واقعی تنظیم کنید.
مرحله هفتم: ارزیابی فارسی
اعداد، نامها، لهجهها، لحن محاورهای و واژههای انگلیسی را آزمایش کنید.
مرحله هشتم: اتصال به کانال نهایی
عامل را به وب، اپلیکیشن یا مرکز تلفن متصل کنید.
مرحله نهم: اندازهگیری
موفقیت وظیفه، زمان پاسخ، هزینه و تعداد تکرارها را ثبت و بهینه کنید.
پرسشهای متداول
Voice Agent چیست؟
Voice Agent سامانهای است که صدای کاربر را دریافت میکند، منظور او را میفهمد، در صورت نیاز ابزار اجرا میکند و با صدا پاسخ میدهد.
تفاوت Voice Agent و چتبات صوتی چیست؟
چتبات صوتی معمولاً نسخه صوتی یک چتبات است. Voice Agent میتواند وضعیت مکالمه را نگه دارد، ابزار فراخوانی کند و چند مرحله از یک فرایند را انجام دهد.
آیا میتوان Voice Agent فارسی ساخت؟
بله. برای این کار باید مدلهای STT، زبانی و TTS روی مکالمات واقعی فارسی ارزیابی شوند؛ بهویژه برای اعداد، نامها، گفتار محاورهای و متن ترکیبی فارسی و انگلیسی.
آیا Voice Agent میتواند تماس تلفنی پاسخ دهد؟
بله. برای این کار علاوه بر مدلهای هوش مصنوعی به شماره تلفن، SIP یا مرکز تلفن و لایه انتقال زنده صوت نیاز است.
آیا درواره شماره تلفن یا مرکز تماس ارائه میدهد؟
خیر. درواره زیرساخت API مدلهای هوش مصنوعی است. لایه تلفن، SIP، WebRTC یا مرکز تماس باید جداگانه فراهم شود.
معماری STT–LLM–TTS چیست؟
در این معماری، گفتار ابتدا به متن تبدیل میشود، مدل زبانی پاسخ را تولید میکند و متن پاسخ دوباره به صدا تبدیل میشود.
Speech-to-Speech چیست؟
مدلی است که ورودی صوتی را مستقیماً دریافت و خروجی صوتی تولید میکند، بدون اینکه توسعهدهنده الزاماً سه مدل جداگانه را مدیریت کند.
VAD چیست؟
VAD یا تشخیص فعالیت صوتی مشخص میکند کاربر چه زمانی شروع یا متوقف به صحبت کرده است.
Barge-in چیست؟
قابلیتی است که به کاربر اجازه میدهد وسط پاسخ عامل شروع به صحبت کند و عامل پخش صدای خود را متوقف کند.
چگونه تأخیر Voice Agent را کاهش دهیم؟
استفاده از Streaming، مدل سریع، پاسخ کوتاه، تشخیص نوبت مناسب، ابزارهای سریع و آغاز تدریجی TTS میتواند زمان شروع پاسخ را کاهش دهد.
هزینه Voice Agent چگونه محاسبه میشود؟
هزینه به مدت صوت ورودی، تبدیل گفتار، مصرف توکن مدل زبانی، مدت صوت خروجی، زیرساخت انتقال صدا و تعداد فراخوانی ابزارها وابسته است.
آیا API درواره برای ساخت Voice Agent مناسب است؟
درواره میتواند لایه دسترسی به مدلهای متنی و صوتی را فراهم کند. قابلیت دقیق هر مدل و Endpoint باید در کاتالوگ فعلی بررسی شود.
جمعبندی
Voice Agent نسل جدیدی از رابطهای مکالمهای است که بهجای محدودشدن به متن، با صدای کاربر تعامل میکند و میتواند برای رسیدن به یک نتیجه واقعی از ابزارها و APIهای مختلف استفاده کند.
یک عامل صوتی کامل از چند بخش تشکیل میشود:
- انتقال زنده صدا
- تشخیص فعالیت و نوبت گفتار
- تبدیل گفتار به متن یا مدل صوتی بلادرنگ
- مدل زبانی
- ابزارها و Function Calling
- مدیریت وضعیت مکالمه
- تبدیل متن به صدا
- مدیریت وقفه و Streaming
- ارزیابی کیفیت و هزینه
برای ساخت یک نسخه موفق، از کاربرد محدودی مانند پیگیری سفارش یا رزرو نوبت شروع کنید. ابتدا منطق مکالمه را در حالت متنی آزمایش کنید و سپس STT، TTS، انتقال زنده صوت و اتصال تلفنی را اضافه کنید.
با API درواره میتوانید مدلهای مختلف متنی و صوتی را از طریق یک اتصال یکپارچه آزمایش و لایه هوش مصنوعی Voice Agent خود را پیادهسازی کنید. مدلهای فعال، شناسهها، قابلیتها و قیمتهای فعلی باید از کاتالوگ درواره دریافت شوند.
مقالات مرتبط
- تبدیل صدای فارسی به متن با هوش مصنوعی
- تبدیل ویس فارسی به متن با هوش مصنوعی
- تبدیل متن فارسی به صدا با هوش مصنوعی
- API هوش مصنوعی چیست؟
- AI Agent و Agent Skills چیست؟
- معماری چندمدلی هوش مصنوعی
منابع
- مستندات رسمی LiveKit Agents
- انواع معماری Voice Pipeline در LiveKit
- مستندات رسمی Pipecat
- استاندارد WebRTC برای ارتباط بلادرنگ
- مستندات Asterisk REST Interface
این مقاله صرفاً با هدف آموزش و اطلاعرسانی تهیه شده است. پیش از استفاده عملی، مستندات رسمی سرویسها و صفحه سلب مسئولیت را مطالعه کنید.