برد هوش مصنوعی Sipeed

پردازش صوت با برد Maixduino بخش دوم: پردازش و تشخیص صوت

voice-recognition-with-maixduino-m1-sipeed-board-part-two-sound-process-digispark
نوشته شده توسط معین صابری

در قسمت دوم از مجموعه آموزش های هوش مصنوعی برد Maixduino، این قسمت را به تشخیص صدا و اجرای خروجی یا همان پردازش و تشخیص صوت اختصاص می دهیم. در قسمت پیشین به نحوه ضبط صدا و نمایش الگوی صوتی ضبط شده در سریال مانیتور پرداختیم. در این قسمت قصد داریم تا با دریافت الگوی صوتی، آن را با الگوهای موجود مقایسه کرده و در صورت یافتن مورد، خروجی مناسب را در سریال مانیتور نمایش دهیم. در ادامه این آموزش با مرجع تخصصی برد هوش مصنوعی Sipeed به زبان فارسی، دیجی اسپارک همراه باشید.

 


نحوه ذخیره سازی مدل های صوتی


همانطور که گفته شد، در این قسمت قصد داریم تا با دریافت صدا از کاربر، آن را در مدل های قبلی و ذخیره شده جست و جو کنیم. پس از یافتن مدل صوتی مد نظر، عبارت مناسب را در خروجی نمایش خواهیم داد. برای ذخیره الگوی صوتی، می بایست یک آرایه ایجاد کرده تا کدهای عددی معادل صدا را در آن قرار دهیم. این آرایه باید از نوع بدون علامت ۱۶ بیتی و به صورت زیر تعریف گردد.

 

 مطابق تعریف فوق، آرایه ای به نام sound تعریف کرده ایم. در این آرایه می بایست حجم نیز درج گردد. حجم این آرایه از حاصلضرب دو مقدار از پیش تعریف شده در هسته نرم افزاری Maixduino به نام های vv_frm_max و mfcc_num تشکیل می گردد. پس از آن، می بایست کدهای عددی معادل صوت را درون آرایه قرار دهید.  برای روشن تر شدن موضوع، نرم افزار آردوینو را باز کنید. سپس روی گزینه file، سپس examples، برنامه های مشخص شده با کادر قرمز رنگ را انتخاب کنید.

نحوه ذخیره سازی مدل های صوتی برد مایکس دوینو - دیجی اسپارک

 

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

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 


توابع دریافت و تشخیص صوت


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

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

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

شرح ورودی
این متغیر شماره الگو صوتی را در حافظه مشخص می کند. uint8_t keyword_num
این متغیر شماره مدل از الگو صوتی را مشخص می کند. uint8_t model_num
این متغیر نام آرایه صوتی را مشخص می کند. const int16_t *voice_model
این متغیر شماره فریم را مشخص می کند. uint16_t frame_num

 

 مطابق پارامترهای جدول فوق، می توانیم مدل صوتی را اضافه کنیم. در رابطه با دو پارامتر نخست، keyword و model، فرض کنید مدل شماره ۰ دارای ۴ الگوی مختلف است. در این حالت keword مقدار ۰ و model می تواند مقادیر بین ۰ الی ۳ را دربر، بگیرد. در ادامه این موضوع، به کمک تابع recognize می توانیم صدا را از ورودی دریافت کرده و به مقایسه با مدل های صوتی که به تابع addVoice معرفی شده، بپردازیم. با فراخوانی این تابع، ابتدا صدا از ورودی دریافت شده و پس از دریافت، به مقایسه پرداخته خواهد شد. خروجی این تابع، عدد صحیح خواهد بود. این عدد در صورتیکه ۱ باشد، یعنی مدل شماره ۰ تشخیص داده شده است. همچنین عدد ۲ به معنای تشخیص مدل شماره ۱ و به همین ترتیب مدل ها تشخیص داده خواهند شد. عدد ۱- نیز به معنای عدم تشخیص است. در قسمت بعد با اجرای یک نمونه برنامه، مورد را بررسی و اجرا خواهیم کرد.

 


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


در این قسمت به اجرای یک نمونه برنامه می پردازیم. توجه داشته باشید که برای اجرای مدل صوتی، یک نمونه برنامه توسط Maixduio ارائه شده اما این نمونه برنامه دارای اشکالاتی است. بنابراین در این قسمت از یک نمونه برنامه جایگزین استفاده خواهیم نمود.  این برنامه دارای یک فایل هدر صوتی برای ۴ کلمه زیر است:

  • Red
  • Green
  • Blue
  • Turnoff

هرکدام از این فایل های صوتی با ۴ الگوی دیگر تعریف شده است. همچنین عبارت RED به عنوان الگوی شماره ۰، عبارت Green الگوی شماره ۱، Blue الگوی شماره ۲ و در نهایت TurnOff الگوی شماره ۳ خواهد بود. برای اجرای این برنامه، همانطور که در قسمت قبل دیدیم، از منوی File->Examples->Maix_Speech_recognition را انتخاب کنید. سپس برنامه زیر را جایگزین برنامه نمونه نمایید.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 


لوازم مورد نیاز


بردهای مبتنی بر هوش مصنوعی Sipeed

برد Maixduino

 


 جمع بندی


در مجموعه آموزش های برد Maixduino قسمت دوم از فصل دوم را به دریافت صدا و تشخیص الگوی صوتی پرداختیم. در آموزش پیشین نحوه دریافت الگوی صوتی و ذخیره آن را مشاهده نمودیم. در این آموزش نیز به دریافت الگوی صوتی و مقایسه آن با الگوهای صوتی موجود در حافظه برد Maixduino پرداختیم. در ابتدای آموزش نحوه ذخیره سازی و فرمت الگوهای صوتی مورد بررسی قرار گرفت. پس از آن نیز توابع جهت دریافت و پردازش صوت را مشاهده نمودیم. در نهایت با ارائه مثالی، نحوه عملکرد و تشخیص صوت را بررسی نمودیم.

 

چنانچه هرگونه ابهامی در مطالب درج شده وجود دارد، می توانید با ثبت نظر در انتهای همین پست سوال خود را بپرسید. تاکنون در دیجی اسپارک ده ها هزار سوال و پاسخ ثبت شده است؛ پس نظرات بی جواب نمی مانند! همچنین اگر ایراد و یا اشکالی در مطالب درج شده وجود دارد، لطفا آن را با ثبت نظر، مطرح کنید. همچنین اگر مشکلی در کدها وجود داشته و یا اجرا نمی شوند، مورد را حتما در انتهای همین آموزش مطرح نمایید. نظرات شما برای ما بسیار ارزشمند هسنند!! 

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه