Mycroft چگونه کار میکند؟
قبل از توضیح نصب، یک سری از موارد پایهای را با هم مرور میکنیم تا مطمئن شویم که به راحتی میتوانیم از مستندات این پروژه استفاده کنیم. اینفوگرافیک زیر از تیم Mycroft کاملاً مختصر و مفید، پروسه نحوه کارکرد را توضیح میدهد.
اصطلاحات کلیدی
در ادامه اصطلاحاتی آورده شده که در اولین برخوردها با اکوسیستم Mycroft به چشمتان خواهد خورد. بعضی از این اطلاعات از whitepaper خود Mycroft آورده شده: Introduction to the voice stack
Wake word یا کلمهای که برای فعال کردن دستیار صوتی به کار میرود
wake word یک تریگر است که به دستیار صوتی آموزش داده شده که با شنیده صدای آن گوش به فرمان شود. بعضی مواقع به آن hot word هم گفته میشود. مثالهای رایج wake word را حتماً شنیدهاید: Hey Siri، OK Google، Alexa و موارد دیگر. دستیار صوتی دائماً در حال گوش فرا دادن برای شنیده wake word است.
Mycroft دو گزینه برای wake word دارد:
- Pocket Sphinx در حال حاضر فقط با زبان انگلیسی آموزش داده شده، برای فهمیدن wake word از دیکشنری اصوات CMU Flite استفاده میکند. این به این معنی است که wake word شما باید برای کارآمدی بهتر، انگلیسی باشد. خوبی این روش منعطف بودن و سهولت استفاده آن است. میتوانید هر ترکیبی از لغات مد نظر خود را از دیکشنری مذکور انتخاب کنید. از بدیهای آن این است که درست کار کردن آن هم آسان و هم بسیار دشوار است. امکاناتی برای تنظیم treshold و حساسیت آن وجود دارد که کمی کمککننده است.
- Precise از طرف دیگر به عنوان یک شبکه عصبی آموزشدادهشده با داده صوتی معرفی شده است. این روش منحصرا روی صداها آموزش داده شده است. این گزینه، بهترین برای افراد غیر بومی است که انگلیسی صحبت میکنند. تنظیم wake word ممکن است کمی کار ببرد چرا که باید بارها صدای خود را ضبط کنید و کلمه مورد نظر خود را بگویید. به این صورت Precise به شکل دقیقتری میتواند تشخیص دهد که wake word شما چه چیزی هست و چه چیزی نیست.
Utterance یا نطق کاربر
بعد از اینکه دیوایس گوش به فرمان برای ارسال دستور است، کاربر یک utterance را میگوید. یک چیزی شبیه به این: What’s the wheather forecast یا What’s the price of Bitcoin today. دستیار صوتی از utterance یک نسخه صوتی درست میکند.
گفتار به متن (speech-to-text (STT)) و متن به گفتار (text-to-speech(TTS))
به محض اینکه دستیار صوتی یک نسخه صوتی از utterance درست کند، آن را با پردازشگر گفتار به متن اجرا میکند و صوت را تبدیل به کلمات جداگانه میکند. همانطور که میتوانید تصور کنید، این یکی از سختترین بخشها است. اگر Mycroft به درستی متوجه منظور شما نشود، اصطلاحاً skill درست را انتخاب نخواهد کرد و بنابراین به نظر کاربر نهایی خنگ است!
با اینکه Mycroft برای صحت بالا، به صورت پیشفرض از سرویسهای گوگل استفاده میکند، تعدادی آپشن امنیتی نیز ارائه میدهد. اول از همه Mycroft درخواستهای ارسالی به گوگل را پراکسی میکند. بنابراین گوگل سختتر میتواند متوجه شود درخواست از طرف چه کسی و از کجا آمده. مورد دوم، آپشنهای زیادی برای ایجاد تغییر در بکند وجود دارد که همچنان در حال افزایش هستند.
در نهایت، دستیار صوتی به صدای کاربر پاسخ میدهد. اسم این لایه text-to-speech یا همان متن به گفتار است و اساساً معکوس لایه گفتار به متن است.
تحلیلکننده رفتار کاربر یا Intent Parser
وقتی که نسخه صوتی تبدیل به متن شد، یک intent parser با جستجو در متن، مقصود کاربر را شناسایی میکند و فرمانی که کاربر انتظار دارد دستیار صوتی اجرا کند را تشخیص میدهد. Mycroft دو نوع متفاوت intent parser دارد: یکی از آنها روی کلمات کلیدی شناساییشده در utterance کار میکند، و دیگری که بر پایه شبکه عصبی است، بهترین حدس ممکن از مقصود کاربر را میزند.
کار intent parser تلاش برای پیدا کردن چیزهاییست که کاربر میخواهد، با همراه یک skill یا مهارت که برای تحویل دادن نتایج استفاده میشود. دو نوع پارسری که Mycroft استفاده میکند Adapt و Padatious نام دارند.
- تجزیهکننده یا پارسر Adapt یک پارسر سبک است که به راحتی در دیوایسهای embedded و دیوایسهای با منابع محدود قابل استفاده است. این پارسر خروجی گفتار به متن را تجزیه میکند و یک فایل JSON یا یک داده ساختاریافته قابل خوانش برای ماشین میسازد. این پارسر برای اپلیکیشنهایی که با تعداد کم utterance سر و کار دارند، برنامهریزی شده. برای زمانهایی که اتصال اینترنت محدود یا غیر قابل دسترس است، این پارسر یک انتخاب عالی است.
- در مورد پارسر Padatious توضیحات وبسایت کاملاً گویا و خوب است:
Padatious یک شبکه عصبی ماشین لرنینگ بر پایه intent parser است. برخلاف Adapt که از گروه کوچکی از کلمات منحصربهفرد استفاده میکند، Padatious روی جملات به عنوان یک کل train شده است.
Padatious چند مزیت کلیدی بر دیگر تکنولوژیهای تجزیه و تحلیل هدف دارد.
- با کمک Padatious ساختن هدفها یا intent ها بسیار آسان است.
- مدل یادگیری ماشین در Padatious به طور نسبی نیازمند مقدار کمی داده است.
- مدلهای یادگیری ماشین نیازمند train شدن هستند و مدلی که در Padatious استفاده میشود بسیار آسان و سریع قابل آموزش دیدن است.
- inetntها به طور مستقل از یکدیگر اجرا میشوند. این موجب نصب یک مهارت جدید بدون نیاز به train کردن دیگر intentهای مربوط به مهارتها میشود.
- با Padatious به راحتی میتوانید موجودیتها را استخراج کنید و آنها را در مهارتها استفاده کنید. برای مثال Find the nearest gas station -> { “place”:”gas station”}.
Skill یا مهارتها
بعد از تلاشهای پارسر برای تشخیص هدفی که کاربر قصد دارد به آن برسد، قدم بعدی انجام کاری متناسب با فهم مقصود کاربر است. اگر مقصود کاربر درست فهمیده شود، پارسر تلاش میکند چیزی که کاربر میخواهد را به یک مهارت یا skill بهخصوص وصل کند. یک مهارت، مجموعهای از کدها است که برای رسیدن به یک خروجی مطلوب اجرا میشود. برای مثال، اگر به Mycroft بگوییم “add bread to my grocery list” کدهای متناظر با مهارت OurGroceries ما برای رسیدگی به آن تسک اجرا خواهد شد (به شرطی که تجزیه و تحلیل مقصود به درستی انجام شده باشد). مهارت انتخابشده کلمات bread وgrocery list را میگیرد و از آنها به عنوان آرگومانهای فانکشنی که یک ورودی به نام bread را به لیست grocery list اضافه میکند، استفاده میکند.
اگر پارسر مهارتی متناسب با نطق utterance پیدا نکند، معمولا دستیار صوتی یک fallback میدهد. این fallback مربوط به مهارتیست که وقتی دستیار صوتی نمیتواند مقصود کاربر را متوجه شود، برگردانده میشود. برای مثال، این مهارت ممکن است به جای اجرا کردن یک کد محلی، جستجوی در اینترنت برای یافتن مقصود کاربر باشد.
نصب Mycroft
راههای مختلفی برای نصب و اجرای Mycroft وجود دارد. Mycroft از داکر و لینوکس پشتیبانی میکند و برای رزبری پای یک ایمیج به نام Picroft دارد و حتی راهی برای اجرای Mycroft روی اندروید وجود دارد. برای توسعه، سادهترین راه دنبال کردن مسیر نصب لینوکس است.
سیستم شما به پشتیبانی Advanced Vector Extension در CPU نیاز دارد. برای اطمینان از اینکه پردازشگر شما از این مورد پشتیبانی میکند یا نه این کامند را اجرا کنید:
grep avx /proc/cpuinfo
به منظور سادگی، با توجه به اینکه ابونتو، فدورا و یا آرچ لینوکس بهترین نسخههای پشتیبانیشده برای پورسه نصب Mycroft هستند، پیشنهاد میشود از این سیستم عاملها استفاده کنید.برای شروع، ریپازیتوری گیت پروژه را دریافت کنید و اسکریپت dev_setup.sh را اجرا کنید. چیزی شبیه به این:
mkdir ~/git_projects
cd ~/git_projects
git clone https://github.com/MycroftAI/mycroft-core.git
cd mycroft-core
bash dev_setup.sh
این اسکریپت همچنین virtualenv را نصب و تنظیم میکند.
دانلود و build وابستگیهای پروژه ممکن است کمی زمان ببرد. در حین این پروسه، ابزار pip و بعضی پروسههای build، وابستگیهای لازم برای Mycroft را نصب میکنند. در حین این پروسه همچنین به شما پیشنهاد نصب Mimic را هم میدهد که اجباری نیست اما نصب آن پیشنهاد میشود.
تا پروسه نصب انجام شود، میتوانید در Mycroft اکانت بسازید. ساختن این اکانت از آنجایی که بعضی از اپلیکیشنها از طریق این پرتال اطلاعاتی از کاربر میگیرند، مزایایی دارد. برای مثال، این جاییست که شما اطلاعات ارتباطی دستیار خانه خود را تنظیم میکنید:
بعد از اینکه پروسه نصب کامل شد، میتوانید سرویسهای Mycroft را با اسکریپت start-mycroft.sh اجرا کنید:
./start-mycroft.sh all
Starting all mycroft-core services
Initializing...
Starting background service bus
Starting background service skills
Starting background service audio
Starting background service voice
فایلهای لاگ در مسیر /var/log/mycroft قرار دارند و بررسی آنها برای فرآیند دیباگ بسیار مفید است. مورد بسیار مفید بعدی رابط خط فرمان خود Mycroft است که به شما اجازه بعضی فرآیندهای دیباگ در حین اجرا و اجازه تایپ کردن ورودی به جای صحبت کردن را میدهد. برای اجرای این خط فرمان این دستور را اجرا کنید:
mycroft-cli-client
Pair کردن دیوایسها در مایکرافت
بعد از اینکه Mycroft کاملاً آماده شد، صدایی خواهید شنید که یک کد pair برای شما میخواند. در اکانت خود در Mycroft به صفحه دیوایسها بروید و یک دیوایس جدید اضافه کنید. در اینجا میتوانید کد pair خود را وارد کنید و اسم دیوایس خود، موقعیت آن در خانه، موقعیت جغرافیایی و صدایی که میخواهید استفاده کنید و یک کلمه wake word انتخاب کنید:
اگر کد مذکور را نشنیدید، فقط کافیست بگویید Hey Mycroft, pair my device خروجی را در خط فرمان خواهید دید و مجدداً صدای خوانش کد را خواهید شنید.
جمعبندی
تعداد زیادی گزینه پیشرفته برای کارکردن با پراکسیها و دیگر ملزوماتی که به خوبی مستند شدهاند نیز وجود دارد. برای اینکه ببینید چه مهارتهایی در Mycroft وجود دارد اینجا را ببینید و ببینید کدام یک از آنها به صورت پیشفرض نصب شدهاند.