ساخت منشی هوش مصنوعی با پایتون و Quectel EC25-EUX

ساخت منشی هوش مصنوعی با پایتون
43 بازدید
۱۴۰۵-۰۷-۲۸
3 دقیقه
  • نویسنده: امیر مطهری
  • درباره نویسنده: مهندس نرم‌افزار ولی علاقمند به سخت‌افزار

به آخرین قسمت از این سلسله مقالات خوش اومدید! توی این مقاله قراره هر چیزی که توی چهار مقاله‌ی قبلی یاد گرفتیم و پیاده کردیم رو یک‌کاسه کنیم و در نهایت یک منشی هوش مصنوعی بسازیم که بتونه به تماس‌های ما پاسخ بده. برای اینکه به این نقطه برسیم، چه کارهایی کردیم؟

در قدم اول با ماژول EC25-EUX آشنا شدیم. بعد سراغ فعال‌سازی VoLTE رفتیم و در مرحله‌ی بعد، با کمک پایتون ماژول رو کنترل کردیم؛ از ارسال و دریافت پیامک گرفته تا مدیریت تماس. در قسمت قبلی، که از سخت‌افزار فاصله گرفتیم، به‌صورت کاملاً نرم‌افزاری و آفلاین با پایتون یک دستیار هوش مصنوعی ساختیم که می‌تونست با ما به‌صورت صوتی تعامل داشته باشه.

حالا توی این قسمت قراره همه‌ی این‌ها رو با هم ترکیب کنیم و ببینیم آیا می‌شه یک منشی تلفنی هوشمند ساخت یا نه!

قبل از شروع، باید پروژه‌های قبلی کنترل ماژول Quectel EC25-EUX با پایتون رو انجام داده باشید تا کتابخانه‌ها و مدل‌های مورد استفاده‌مون از قبل دانلود و آماده شده باشن.

پروژه‌ی این مقاله در واقع چیزی فراتر از پروژه‌های قبلی نیست؛ فقط این بار به‌جای اینکه صدای ورودی و خروجی از میکروفون و اسپیکر سیستم استفاده بشه، مسیر صوتی مستقیم به USB Audio ماژول EC25 وصل می‌شه. یعنی صدای تماس‌گیرنده وارد سیستم می‌شه، توسط برنامه پردازش می‌شه و پاسخ تولید شده دوباره از طریق ماژول روی تماس پخش می‌شه.

داخل هر دایرکتوری این ریپو یک فایل README.md قرار دادم و به فارسی توضیح دادم که هر پروژه دقیقاً چه کاری انجام می‌ده و چطور باید راه‌اندازیش کنید.

اجرای ساخت منشی هوش مصنوعی

برای اجرای این منشی، از ریشه‌ی ریپو دستور زیر رو اجرا کنید:

02-ai/.venv/bin/python 03-ai-secretary/main.py –port /dev/ttyUSB0

فقط حواستون باشه مقدار –port باید با پورت واقعی AT ماژول روی سیستم شما یکی باشه. شماره‌ی این پورت ممکنه روی سیستم‌های مختلف متفاوت باشه. تعداد نسبتاً زیادی گزینه‌ی تنظیمات هم برای این منشی در نظر گرفتم که می‌تونید رفتار برنامه رو بدون دستکاری کد تغییر بدید. توضیحات کامل این گزینه‌ها داخل README.md پروژه قرار داره.

حالا قرار نیست فقط یک کد رو اجرا کنیم و بگیم «خب، کار کرد!» در ادامه فقط بعضی از فایل‌های مهم رو بررسی می‌کنم تا بدونید با چه چیزی سروکار دارید و ساختار پروژه چطوریه.

config.py

همون‌طور که از اسمش پیداست، تنظیمات منشی اینجاست. یک‌سری مقدار پیش‌فرض برای برنامه در نظر گرفتم و زمانی که اسکریپت رو اجرا می‌کنید، با استفاده از سویچ‌های مختلف می‌تونید این مقادیر رو بدون تغییر دادن خود کد بازنویسی کنید.

مثلاً می‌تونید مدل، پورت، دستگاه صوتی، زمان انتظار و تنظیمات مختلف تماس رو از طریق همین گزینه‌ها تغییر بدید.

main.py

اینجا جاییه که بخش‌های مختلف پروژه رو کنار هم می‌ذاریم. کلاس‌ها و اجزای مختلفی که ساختیم در این قسمت به هم متصل می‌شن و گزینه‌های خط فرمان هم از همین‌جا دریافت و اعمال می‌شن. به بیان ساده‌تر، می‌تونیم بگیم main.py همون قسمتیه که تکه‌های مختلف این پازل رو کنار هم قرار می‌ده.

models.py

توی این فایل مدل‌های دیتابیس رو تعریف کردیم و یک‌سری متد برای کار با اون‌ها نوشتیم. این باعث می‌شه برای کارهای ساده لازم نباشه هر بار مستقیماً Query بنویسیم؛ هم کدمون خلوت‌تر می‌مونه و هم خوانایی اون بهتر می‌شه. اطلاعات مربوط به تماس‌ها و مکالمه هم در دیتابیس این پروژه ذخیره می‌شن.

modem.py

این فایل مسئول ارتباط سریال با ماژول و دریافت پاسخ‌های AT و اعلان‌های مربوط به تماس هست. در واقع این همون بخشی از برنامه‌ست که با خود مودم در ارتباطه و اتفاقاتی که از سمت ماژول دریافت می‌کنیم رو در اختیار بخش‌های دیگه‌ی برنامه قرار می‌ده.

secretary_prompt.txt

اینجا پرامپت اصلی منشی یا Agent رو تعریف کردیم. یک‌سری دستورالعمل و مثال هم براش قرار دادیم تا مدل بدونه چطور باید پاسخ بده. شما می‌تونید این فایل رو متناسب با نیاز خودتون تغییر بدید؛ مثلاً مشخص کنید منشی رسمی صحبت کنه یا خودمانی، چه اطلاعاتی از تماس‌گیرنده بگیره و به چه نوع سوالاتی پاسخ بده.

speech_cache.py

این فایل برای Cache کردن صدای خوش‌آمدگویی استفاده می‌شه. مثلاً وقتی یک نفر با ما تماس می‌گیره، لازم نیست هر بار عبارت خوش‌آمدگویی از ابتدا توسط مدل TTS تولید بشه. بار اول صدا تولید و ذخیره می‌شه و در تماس‌های بعدی، فایل آماده مستقیماً استفاده می‌شه. این کار هم باعث کاهش زمان انتظار می‌شه و هم نیاز به تولید دوباره‌ی یک صدای ثابت رو از بین می‌بره. حتی اگر متن خوش‌آمدگویی، صدای مرجع یا تنظیمات مدل TTS تغییر کنه، Cache مربوط به این صدا مجدداً ساخته می‌شه.

و همین! 🙂

البته قبول دارم کدی که اینجا داریم لزوماً چیزی نیست که برای استفاده در یک محصول واقعی مستقیماً پیشنهاد بشه و همه‌ی Best Practice ها هم رعایت نشده. علتش هم اینه که این پروژه از ابتدا با هدف آموزش ساخته شده و قدم‌به‌قدم از چیزهایی که در قسمت‌های قبلی ساختیم استفاده کردیم. اگر قرار باشه همین پروژه رو به یک محصول واقعی تبدیل کنیم، قطعاً باید بخش‌هایی مثل معماری، مدیریت خطا، هم‌زمانی، تست‌ها، امنیت و خیلی موارد دیگه باز طراحی و تکمیل بشن.

و بالاخره رسیدیم به آخر این مسیر!

ممنون از سیسوگ که این ماژول رو در اختیار من قرار داد تا بتونم این مجموعه مقاله‌ها رو آماده کنم و با شما به اشتراک بذارم. خودم واقعاً از ساختن این پروژه لذت بردم و امیدوارم شما هم از خوندن و اجرای اون‌ها لذت برده باشید. اگر این مجموعه مقاله‌ها براتون جالب بود، خوشحال می‌شم برسونیدشون به دست آدم‌هایی که به این موضوعات علاقه دارن. 🙂 و در آخر هم از Codex و Antigravity تشکر می‌کنم که در تولید و توسعه‌ی کد این پروژه کمکم کردن. این داستان اینجا تموم می‌شه… ولی پروژه تازه می‌تونه شروع بشه. 

ریپازیتوری این پروژه: https://github.com/mthri/sisoog-ec25

اطلاعات
43
0
0
اشتراک و حمایت
profile نویسنده: امیر مطهری مهندس نرم‌افزار

وبسایت: http://iamamir.ir

مهندس نرم‌افزار ولی علاقمند به سخت‌افزار


مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله