استفاده از فرمان صوتی این روز ها خیلی فراگیر تر شده و تقریبا اکثر افراد از دستیار های صوتی موجود در تلفن همراهشون نظیر Siri  و Cortana استفاده میکنند .

همچین غول های بزرگ صنعت IT هم از این به روز رسانی عقب نموندن و سرویس ها و سخت افزار هایی نظیر Amazon Echo  و GoogleHome  رو ساختند.

این سرویس ها اکثرشون قابلیت اتصال به سیستم تشخیص گفتار یا Speech recognition رو دارند و می تونند از طریق فرمان صوتی متن گفته شده شما رو تشخیص بدند و حتی جواب رو هم در قالب گفت و گو و محاوره با شما درمیون بذارند .

اما…

اما نکته جالب اینجاست که شرکت هایی نظیر گوگل و موزیلا دارند سعی می کنند تمامی این خدمات رو در قالب اجرای یک برنامه تحت وب و روی مرورگر به شما تحویل بدند . به عنوان مثال پردازش تصویر که اگه سرچ بزنید احتمالن پروژه شو پیدا خواهید کرد .یا اینجا رو ببینید.

توی این آموزش ما می خواهیم که یک صفحه وب داشته باشیم که کاربر با زدن یک دکمه بتونه حرف خودش رو به صورت کلامی بزنه و جواب رو هم به صورت گفتار بشنود.

این نکته رو بدونید که سیستم تشخیص گفتار به صورت خودکار روی اکثر مرورگر ها نصبه و ما از خود api  های مرورگر که کدهای جاوا اسکریپت هست استفاده میکنیم تا حرف های گفته شده کاربر رو تشخیص بدیم .البته این سیستم تشخیص گفتار مرورگر ها هنوز در نسخه آزمایشی به سر میبره و در شکل زیر می تونید ببینید که توسط چه ورژن هایی از مرورگر ها پشتیبانی میشه.

نکته: فعلا مرورگر هایی نظیر IE و Safari و Mozilla فقط و فقط از سیستم سنتز گفتگو یا speech synthesis پشتیبانی میکنند و این یعنی فقط می تونند جواب یا متن رو براتون بخونند .این قابلیت رو به صورت شکل بالای آیکون هر مرورگر دیده میشه . (عکس بالا)

ویدیو زیر یک مثال کوچولو از چیزیه که ما قراره بسازیم .

برای ساخت یک چنین چیزی نیاز به سه مرحله کار داریم .

1- استفاده از api تشخیص گفتار مرورگر برای شنیدن گفتار و تبدیل آن به متن مورد نظر (SpeechRecognition )

2- فرستادن متن مورد نظر به یکی از سرویس های هوش مصنوعی رایج به کمک nodejs  و دریافت جواب (در اینجا ما از سرویس گوگل که اسمش API.AI هست استفاده میکنیم)

3- تبدیل جواب دریافت شده به صوت یا همون خوندن متن با api های داخلی مرورگر (SpeechSynthesis)

اگه کمی درکش سخته میتونید به عکس زیر نگاه کنید تا متوجه این سه قسمت بالا بشید.

خب تمام سوروس کد رو  میتونید از اینجا دریافت کنید.

اما برسیم به بخش توضیح پیاده سازی و پیش نیاز های این آموزش:

این آموزش برپایه nodejs نوشته شده و شما باید یه حداقل هایی رو از nodejs و javascript بلد باشید تا راحت تر کد هارو درک کنید.

پیاده سازی کد:

ابتدا یک فولدر درست کنید و با دستور زیر فایل package.json رو به پروژه تون اضافه کنید .

سپس داخل پوشه ساخته شده فایل های مورد تظر رو طبق ساختار درختی زیر ایجاد کنید.

سپس با دستور npm اقدام به نصب ماژول های مورد نیاز خودمون برای نوشتن برنامه سمت سرور می کنیم.

این فرمان علاوه بر دانلود ماژول های مورد استفاده ، ورژن و نوع برنامه نصب شده رو در فایل package.json قرار میده تا برای استفاده های بعدی به مشکل نخورید.

توضیح بدم که express یک framework هست که بر مبنای معماری MVC کار میکنه و وظیفه اش اجرای صفحات وب برای کاربر ها و نوشتن route هستش .البته خیلی بیشتر از این حرفاست و واقعا express محشره و اکثر برنامه نویس های nodejs از این ماژول استفاده میکنند.

مورد بعدی socketIO هست که ما نصبش کردیم . این کتابخونه در حقیقت وظیفه ارسال و دریافت پیام از صفحه مرورگر ما به سمت سرور رو به صورت realTime بر عهده داره و دیگه نیازی به refresh صفحه وب نخواهد بود . البته از ajax و یا fetch هم میشه برای فرستادن پیام در قالب GET یا POST استفاده کرد ولی این بهترین راهه.

نکته:این socketIO که اینجا نصبش کردیم فقط و فقط وظیفه سمت سرور رو انجام میده و برای سمت کلاینت از نسخه CDN این کتابخونه استفاده خواهیم کرد.تا ارتباط دوطرفه بین سرور ما و صفحه وب از طریق socketIO برقرار بشه.

مورد بعدی ماژول apiai هست که کتابخونه ای جهت برقراری ارتباط با سرور های هوش مصنوعی گوگل هست. در حقیقت ما متنی که از مرورگر دریافت کردیم به سرور خودمون میفرستیم و سپس اون متن رو به سرور گوگل انتقال میدیم تا سرور گوگل اونو آنالیز کنه و جواب متناسب رو برگردونه و در نهایت ما اون جواب رو با socketIO به مرورگر کلاینت مون انتقال میدیم.

اگه مطالب گفته شده بالا کمی گُنگ بود به عکس زیر نگاه کنید تا کاملا مفهومش رو درک کنید.

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

کد اول index.js در حقیقت این کد اجرا میشه و وب اپلیکیشن ما آماده کار میشه.

دقت داشته باشید که دو خط اول از این کد نیاز به وارد کردن اطلاعات ثبت نامی شما در سایت API.AI  هستش که البته گوگل ایران رو تحریم کرده.

اما نحوه ساخت حساب کاربری در این سایت راحته شما واردش بشید و یک حساب بسازید برای اطلاعات بیشتر به اینجا مراجعه کنید.

پس از ساخت حساب بر روی گزینه “Small Talk” برید و اون دکمه تغییر وضعیت یا toggle اش رو روشن کنید . عکس زیر بیشتر توضیح میده.

بعد از این کار به قسمت “General Settings” برید (همون آیکون چرخ دنده) و در اونجا برای APIAI_TOKEN خودتون که توی کد برنامتون بود مقدار “client access token”

کپی کنید و در کد قرار بدید توی این قسمت (index.js)

در قسمت زیر هم یک نام دلخواه رو جای گذاری کنید (index.js)

همین حالا بقیه کد ها رو به ترتیب میذارم

index.html

script.js

style.css

و خروجی برنامه پس از اجرا به این صورت خواهد بود.

در پایان می تونید با زدن کلید F12 در مرورگر خودتون خطاهای تولید شده رو رد گیری کنید.

بازم به این نکته تاکیید می کنم که سیستم هوش مصنوعی گوگل برای ایرانی ها مورد تحریم واقع شده.

موفق باشید.

7 Comments

  1. اگر بخوام برنامه ای درست کنم که با گفتن مثلا چراغ های حال را خاموش کن (چراغهای حال خاموش شود) یا بلعکس چگونه باید عمل کنم

    پاسخ
    • دوست عزیز بهترین راه برای این کار وصل کردن فرمان صوتی به mqtt سرور ها هست.
      اما با js هم میتونی این کار رو انجام بدی . مثلا بعد از گفتن کلمه خاص ریکوئست بزنه به ماژول یا سرور وب ت که دستگاه روشن خاموش هم روی اونه.
      من نوشتم کل ماژولش رو به همین زودیا منتشرش میکنم اگه عمری باقی باشه.

      پاسخ
  2. میتونم شمارتو داشته باشم تماس بگیرم باهات یه چند تا سوال بپرسم ازت

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

    پاسخ
  4. ممنون که جوابمو ندادین

    پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Free
  • آموزش فرمان صوتی و هوش مصنوعی.