- Компоненте потребне
- Кружни дијаграм
- Креирање скупа података за Ардуино препознавање говора
- Обука модела
- Ардуино код за препознавање гласа Ардуино
Технологија препознавања говора врло је корисна у аутоматизацији која вам не само даје контролу над уређајима без руку, већ и додаје сигурност систему. Поред израде уређаја којима се управља гласом, препознавање говора такође пружа значајну помоћ људима који пате од различитих инвалидитета.
У претходним пројектима изградили смо претварач текста у говор (ТТС) заснован на Ардуину и светла контролисана гласом. Сада ћемо у овом пројекту користити машинско учење за обуку модела препознавања говора помоћу Едге Импулсе Студио-а са три команде, тј. ' ЛИГХТ ОН' , ' ЛИГХТ ОФФ' и ' НОИСЕ '. Едге Импулсе је мрежна платформа за машинско учење која омогућава програмерима да креирају следећу генерацију решења за интелигентне уређаје са уграђеним машинским учењем. Претходно смо користили Едге импулсе студио за разликовање звукова кашља и буке.
Компоненте потребне
Хардвер
- Ардуино 33 БЛЕ Сенсе
- ЛЕД
- Јумпер Вирес
Софтвер
- Едге Импулсе Студио
- Ардуино ИДЕ
Обрадили смо детаљан водич о Ардуино 33 БЛЕ Сенсе.
Кружни дијаграм
Кружни дијаграм за ово препознавање гласа помоћу Ардуина дат је у наставку. Фритзинг део за Ардуино 33 БЛЕ није био доступан, па сам користио Ардуино Нано јер оба имају исти пиноут.
Позитивни кабл ЛЕД-а повезан је на дигитални пин 5 ардуино 33 БЛЕ смисла, а негативни кабл је повезан на ГНД пин Ардуино-а.
Креирање скупа података за Ардуино препознавање говора
Овде се Едге Импулсе Студио користи за обуку нашег модела препознавања говора. Обука модела у Едге Импулсе Студио слична је обуци модела машинског учења на другим оквирима за машинско учење. За обуку, први корак модела машинског учења је прикупљање скупа података који садржи узорке података које бисмо желели да можемо да препознамо.
Како је наш циљ да управљамо ЛЕД-ом помоћу наше гласовне команде, мораћемо да прикупимо узорке гласа за све команде и шум како би могао да разликује гласовне команде од осталих шумова.
Направићемо скуп података са три класе „ ЛЕД УКЉУЧЕНО “, „ ЛЕД ИСКЉУЧЕНО “ и „ шум “. Да бисте креирали скуп података, направите Едге Импулсе налог, верификујте свој налог и започните нови пројекат. Узорке можете учитати помоћу мобилног телефона, плоче Ардуино или можете увести скуп података на свој налог импулса на ивици. Узорке ћете најлакше учитати на свој рачун помоћу мобилног телефона. За то повежите мобилни телефон са Едге Импулсе.
Да бисте повезали мобилни телефон, кликните на „ Уређаји “, а затим на „ Повежи нови уређај“ .
Сада у следећем прозору кликните на „Користи свој мобилни телефон“ и појавиће се КР код. Скенирајте КР код својим мобилним телефоном или унесите УРЛ наведен на КР коду.
Ово ће повезати ваш телефон са Едге Импулсе студијем.
Када је ваш телефон повезан са Едге Импулсе Студио, сада можете да учитате узорке. Да бисте учитали узорке, кликните на „ Прикупљање података“ . Сада на страници Прикупљање података унесите назив налепнице, изаберите микрофон као сензор и унесите дужину узорка. Кликните на „ Почни узорковање“ , уређај ће снимити узорак од 2 сек. Снимите укупно 10 до 12 узорака гласа у различитим условима.
Након отпремања узорака за прву класу, сада подесите ознаку за промену и сакупите узорке за класу „ искључено светло“ и „бука“ .
Ови узорци су за модул Обука, у следећим корацима прикупљаћемо податке о тестирању. Подаци о тестовима треба да чине најмање 30% података о обуци, па сакупљајте 4 узорка „буке“ и 4 до 5 узорака за „укључено светло“ и „искључено светло“.
Обука модела
Како је наш скуп података спреман, сада можемо створити импулс за податке. За то идите на страницу „ Стварање импулса “. Промените подразумеване поставке величине прозора од 1000 мс на 1200мс и 500 мс Прозор се повећава на 50мс. То значи да ће се наши подаци обрађивати 1.2 с одједном, почевши са сваких 58 мс.
Сада на страници „ Стварање импулса“ кликните на „ Додај блок обраде“ . У следећем прозору изаберите блок Аудио (МФЦЦ). Након тога кликните на „ Додај блок за учење“ и изаберите блок Неурал Нетворк (Керас). Затим кликните на „ Сачувај импулс“ .
У следећем кораку идите на страницу МФЦЦ, а затим кликните на „Генериши карактеристике“. Генерираће МФЦЦ блокове за све наше аудио прозоре.
Након тога идите на страницу „ НН класификатор“ и кликните на три тачке у горњем десном углу „ Подешавања неуронске мреже“ и изаберите „ Пребаци у Керас (стручни) режим“) .
Замените оригинал следећим кодом и промените „ Минималну оцену поузданости“ на „ 0,70“ . Затим кликните на дугме „ Започни тренинг“ . Почеће да тренира ваш модел.
импорт тенсорфлов ас тф фром тенсорфлов.керас.моделс импорт Секуентиал фром тенсорфлов.керас.лаиерс импорт Денсе, ИнпутЛаиер, Дропоут, Флаттен, Ресхапе, БатцхНормализатион, Цонв2Д, МакПоолинг2Д, АверагеПоолинг2Д фром тенсорфлов.керас.оптенсизстрантс импорт МакНорм # модел архитектуре модел = Секуентиал () модел.адд (ИнпутЛаиер (инпут_схапе = (Кс_траин.схапе,), наме = 'к_инпут')) модел.адд (Преобликовање ((инт (Кс_траин.схапе / 13), 13, 1), инпут_схапе = (Кс_траин.схапе,))) модел.адд (Цонв2Д (10, кернел_сизе = 5, ацтиватион = 'релу', паддинг = 'саме', кернел_цонстраинт = МакНорм (3))) модел.адд (АверагеПоолинг2Д (поол_сизе = 2, паддинг = 'саме')) модел.адд (Цонв2Д (5, кернел_сизе = 5, ацтиватион = 'релу', паддинг = 'саме', кернел_цонстраинт = МакНорм (3))) модел.адд (АверагеПоолинг2Д (величина базена = 2,паддинг = 'саме')) модел.адд (Флаттен ()) модел.адд (Густ (класе, активација = 'софтмак', наме = 'и_пред', кернел_цонстраинт = МакНорм (3))) # ово контролише брзину учења опт = Адам (лр = 0,005, бета_1 = 0,9, бета_2 = 0,999) # обучи модел неуронске мреже.цомпиле (губитак = 'цатегорицал_цроссентропи', оптимизер = опт, метрицс =) модел.фит (Кс_траин, И_траин, батцх_сизе = 32, епохе = 9, подаци о потврди = (Кс_тест, И_тест), детаљно = 2)опширно = 2)опширно = 2)
Након тренинга модела показаће перформансе тренинга. За мене је тачност износила 81,1%, а губитак 0,45, што није идеално, али можемо наставити с тим. Учинак свог модела можете повећати стварањем широког скупа података.
Сада када је наш модел препознавања говора спреман, применићемо овај модел као Ардуино библиотеку. Пре него што преузмете модел као библиотеку, можете да тестирате перформансе тако што ћете отићи на страницу „ Класификација уживо“ . Функција класификације уживо вам омогућава да тестирате модел са постојећим подацима за тестирање који сте добили уз скуп података или стримингом аудио података са мобилног телефона.
Да бисте тестирали податке на телефону, на телефону одаберите „ Пребаци у режим класификације“ .
Сада да бисте преузели модел као Ардуино Либрари, идите на страницу „ Примена “ и изаберите „ Ардуино Либрари“ . Сада се померите надоле и кликните на ' Буилд ' да бисте започели процес. Ово ће изградити Ардуино библиотеку за ваш пројекат.
Сада додајте библиотеку у свој Ардуино ИДЕ. За то отворите Ардуино ИДЕ, а затим кликните на Скица> Укључи библиотеку> Додај.ЗИП библиотеку
Затим учитајте пример тако што ћете отићи у Датотека> Примери> Назив вашег пројекта - Едге Импулсе> нано_бле33_сенсе_мицропхоне
Ардуино код за препознавање гласа Ардуино
Овде су направљене неке промене ради управљања ЛЕД-ом помоћу гласовних команди.
Уносимо неке промене у воид лооп () где се исписује вероватноћа наредби. У оригиналном коду се заједно штампају све налепнице и њихове вредности.
за (сизе_т ик = 0; ик <ЕИ_ЦЛАССИФИЕР_ЛАБЕЛ_ЦОУНТ; ик ++) {еи_принтф ("% с:%.5ф \ н", ресулт.цлассифицатион.лабел, ресулт.цлассифицатион.валуе); }
Да бисмо контролисали ЛЕД, морамо сачувати све командне вероватноће у три различите променљиве како бисмо на њих могли ставити условне наредбе. Дакле, према новом коду ако је вероватноћа наредбе „укључено светло“ већа од 0,50, он ће укључити ЛЕД и ако је вероватноћа наредбе „искључено светло“ већа од 0,50, угасит ће ЛЕД.
за (сизе_т ик = 2; ик <ЕИ_ЦЛАССИФИЕР_ЛАБЕЛ_ЦОУНТ; ик ++) {шум = резултат.класификација.валуе; Сериал.принтлн ("Шум:"); Сериал.принтлн (шум); } за (сизе_т ик = 0; ик <ЕИ_ЦЛАССИФИЕР_ЛАБЕЛ_ЦОУНТ; ик--) {лигхтофф = ресулт.цлассифицатион.валуе; Сериал.принтлн ("Искључено светло:"); Сериал.принт (лигхтофф); } лигхтон = 1- (шум + светло); Сериал.принтлн („Укључено светло:“); Сериал.принт (лигхтон); иф (лигхтон> 0,50) {дигиталВрите (лед, ХИГХ); } иф (осветљеност> 0,50) {дигиталВрите (лед, ЛОВ); }
Након уношења промена, отпремите код у свој Ардуино. Отворите серијски монитор на 115200 бауд.
На овај начин можете да направите препознавање говора помоћу Ардуина и дајете команде за управљање уређајима.
Комплетан радни видео са библиотеком и кодом дат је у наставку.