...

ساخت دستیار صوتی آفلاین مشابه ChatGPT Voice

ساخت دستیار صوتی آفلاین مشابه ChatGPT Voice
7 بازدید
۱۴۰۵-۰۸-۰۲
5 دقیقه
  • نویسنده: امیر مطهری
  • درباره نویسنده: مهندس نرم‌افزار ولی علاقمند به سخت‌افزار

سلام!

به چالش‌برانگیزترین بخش این سری آموزش خوش اومدید!

البته چالشش برای من بوده؛ چون چندین روز درگیر دانلود چند ده گیگ مدل مختلف بودم و همه رو تست کردم تا در نهایت برسم به همین چند تا اسکریپتی که قراره شما با یک کلیک نصب و اجراشون کنید. منتّی هم نیست، فقط گفتم در جریان باشید! 🙂

البته قبل از هر چیزی برید بسته‌ی شبانه‌تون رو بخرید، چون حداقل ۱۵ تا ۲۰ گیگ دانلود داریم! اگر هم اهل قهوه یا چای هستید، لیوانتون رو پر کنید که حسابی کار داریم. 🙂 تمام تلاشم رو کردم بهینه‌ترین مدل‌هایی رو پیدا کنم که روی سیستم‌های معمولی هم تا حد ممکن راحت اجرا بشن. ولی خب، بعضی جاها دیگه نمی‌شه کاری کرد و برای اجرای مدل‌های قوی‌تر به کارت گرافیک یا سیستم قدرتمندتری نیاز دارید.

البته اگر سیستم قوی ندارید هم هیچ مشکلی نیست؛ چند راه جایگزین هم معرفی می‌کنم که با کمترین هزینه بتونید همین Pipeline رو راه‌اندازی کنید. سیستمی که من روی اون تست کردم:

  • Intel Core i7 12th Gen
  • 16 GB RAM
  • RTX 3060 6 GB

البته از قدیم گفتن: هر که بامش بیش، برفش بیشتر!

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

خلاصه‌ی کلام اینکه این‌ها صرفاً تجربه‌ی منه. اگر مدل بهتر یا روش بهتری سراغ دارید، خوشحال می‌شم داخل کامنت‌ها یا پست این مطلب در ایکس، یا همون توییتر خودمون، بهمون بگید.

ساخت ربات هوش مصنوعی کاملاً آفلاین

خب، حالا قراره دقیقاً چیکار کنیم؟ قراره یک ربات هوش مصنوعی کاملاً آفلاین بسازیم که بتونیم به‌صورت صوتی باهاش صحبت کنیم و اون هم جوابمون رو به‌صورت صوتی بده؛ چیزی شبیه Gemini Live یا ChatGPT Voice، با این تفاوت که اینجا کل پردازش رو روی سیستم خودمون انجام می‌دیم.

حالا به‌صورت کلی به چه چیزهایی نیاز داریم؟

۱- تبدیل صدا به متن؛ STT

اول به مدلی نیاز داریم که صدای ما رو به متن تبدیل کنه که به‌اختصار بهش STT یا Speech-to-Text می‌گن. اینجا از مدل Shenava-Koochik استفاده می‌کنیم که برای تشخیص گفتار فارسی طراحی شده.

۲- پردازش متن؛ LLM

بعد از تبدیل صدای ما به متن، باید این متن رو پردازش کنیم و جواب بگیریم. اینجا وارد دنیای LLMها یا مدل‌های زبانی بزرگ می‌شیم؛ همون مدل‌هایی که احتمالاً همه با اسم‌هایی مثل GPT، Gemini، DeepSeek و… باهاشون آشنا هستید.
در این آموزش از Gemma 4 E2B استفاده می‌کنیم که در دسته‌ی مدل‌های Edge قرار می‌گیره و برای اجرا روی سخت‌افزارهای محدودتر طراحی شده.

۳- تبدیل متن به صدا؛ TTS

در مرحله‌ی آخر به مدلی نیاز داریم که متن تولیدشده رو دوباره به صدا تبدیل کنه که بهش TTS یا Text-to-Speech می‌گن. اینجا از مدل Pocket-TTS Farsi استفاده می‌کنیم که برای زبان فارسی آماده شده و امکان استفاده از Voice Prompt و شبیه‌سازی صدا رو هم داره.

یه نکته هم اینجا وجود داره؛ زمانی که من این مقاله رو می‌نویسم، نسخه‌ی دوم Pocket-TTS Farsi هم منتشر شده که در بعضی تست‌ها کیفیت و پایداری بهتری داره، اما یک مرحله‌ی اضافه به اسم G2P یا تبدیل متن به واج به Pipeline اضافه می‌کنه. نسخه‌ای که ما اینجا استفاده می‌کنیم متن فارسی رو مستقیماً دریافت می‌کنه و به همین دلیل برای این آموزش ساده‌تره.

نصب برنامه

در قدم اول، ریپازیتوری این آموزش رو با دستور زیر از GitHub کلون کنید:

git clone https://github.com/mthri/sisoog-ec25.git

cd sisoog-ec25/02-ai

حالا یک محیط مجازی پایتون می‌سازیم:

python3 -m venv .venv

و با دستور زیر فعالش می‌کنیم:

source .venv/bin/activate

حالا کتابخانه‌های موردنیاز رو نصب می‌کنیم:

python -m pip install -r requirements.txt

حدود ۷ گیگ دانلود داریم؛ تا تموم بشه چای یا قهوه‌تون رو میل کنید! 🙂

دانلود مدل تبدیل متن به صدا

حالا باید مدل تبدیل متن به صدا رو دانلود و تنظیم کنیم:|

hf download mehdi-hf/pocket-tts-farsi –local-dir pocket-tts

بعد از دانلود، فایل pocket-tts/farsi.yaml رو باز کنید و مقدار این دو کلید رو تغییر بدید:

weights_path: model.safetensors

و داخل بخش flow_lm و سپس lookup_table:

tokenizer_path: tokenizer.model

راستی، دوست دارید با صدای خودتون صحبت کنه؟ فقط کافیه در یک محیط ساکت حدود ۵ ثانیه از صدای خودتون ضبط کنید و فایل example_voice.wav رو داخل دایرکتوری pocket-tts با فایل خودتون جایگزین کنید. این مدل از Voice Prompt برای شبیه‌سازی صدای ورودی استفاده می‌کنه.

دانلود مدل تبدیل صدا به متن

حالا بریم سراغ مدل Speech-to-Text:

hf download Reza2kn/Shenava-Koochik-v1.0 –local-dir shenava-koochik

همین! برای این مرحله کار دیگه‌ای لازم نیست.

نصب Ollama و مدل زبانی

مرحله‌ی آخر، نصب Ollama هست. اگر سیستمی دارید که می‌تونه مدل‌های زبانی رو به‌صورت محلی اجرا کنه، بر اساس مشخصات سیستم خودتون مدل مناسب رو انتخاب کنید. من در این آموزش از gemma4:e2b استفاده می‌کنم. در تست من این مدل مصرف VRAM مناسبی داشت و در کنار سرعت قابل‌قبول، کیفیت پاسخ مناسبی هم ارائه می‌داد. اگر دانلود مدل‌ها از Ollama برای شما در دسترس نیست(به علت تحریم و تحریم شکن ندارید)، می‌تونید فایل مدل‌ها رو از منابع دیگر تهیه کنید و در مسیر مناسب قرار بدید.

حالا چرا اصلاً از Ollama استفاده کردم؟ چون Ollama یک API سازگار با OpenAI در اختیارمون می‌ذاره. یعنی کد ما مستقیماً به API اختصاصی Ollama وابسته نیست و از همان ساختار استاندارد OpenAI برای ارتباط با مدل استفاده می‌کنیم.

شاید بگید خب که چی؟ اهمیتش اینجاست که خیلی از سرویس‌ها و واسطه‌های ایرانی و خارجی، مدل‌های مختلف هوش مصنوعی رو در قالب API در اختیار کاربر قرار می‌دن. در نتیجه اگر سیستم قدرتمندی ندارید، می‌تونید به‌جای اجرای مدل به‌صورت محلی، با هزینه‌ی نسبتاً کم از این سرویس‌ها استفاده کنید(ارزون‌ترین  مدل رو انتخاب کنید، لازم نیست سراغ مدل‌های گرون برید)

ساختار کدی که نوشتیم هم طوریه که برای این تغییر نیاز نیست کل برنامه رو از اول بنویسید؛در فایل llm.py می‌تونید BASE_URL و API_KEY رو تغییر بدید. الان که همه چیز رو نصب کردید فقط کافیه با دستور python main.py برنامه رو اجرا کنید! حالا میتونید با ایجنت‌تون صحبت کنید!

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

حالا نوبت مرحله‌ی بعده:

اتصال ماژول به این هوش مصنوعی!

برای چی؟ برای اینکه به تماس‌هامون رو پاسخ بده یا حتی کارهای دیگه‌ای انجام بده که با کمی خلاقیت خودتون می‌تونید بهش اضافه کنید.

تمرین در منزل!

در مورد Tool Calling سرچ کنید و سعی کنید این قابلیت رو به پروژه اضافه کنید.

با من همراه باشید.

این داستان ادامه داره…

اطلاعات
7
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
نویسنده شو !

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

ارسال مقاله