Мазмуну:

Ыңгайлаштырылган ашкана үн аныктагычы: 4 кадам
Ыңгайлаштырылган ашкана үн аныктагычы: 4 кадам

Video: Ыңгайлаштырылган ашкана үн аныктагычы: 4 кадам

Video: Ыңгайлаштырылган ашкана үн аныктагычы: 4 кадам
Video: ЭРКЕКТИН АЯЛЫН СҮЙБӨЙ КАЛГАНЫН КАНТИП БИЛСЕ БОЛОТ? 5 БЕЛГИ 2024, Ноябрь
Anonim
Image
Image
Ыңгайлаштырылган ашкана үн аныктагычы
Ыңгайлаштырылган ашкана үн аныктагычы

Бул жаздагы интерактивдүү системалар курсундагы акыркы долбоорубуз үчүн, Support-Vector Machine классификациясын колдонуу менен ашканада жалпы үндөрдү аныктоо жана элестетүү үчүн реалдуу убакыт системасын түздүк. Система аудио тандоо/классификациялоо үчүн ноутбуктан жана визуалдаштыруу үчүн Arduino/чекит матрицасынан турат. Төмөндө бул ашканадан чыккан үндөр үчүн бул тутумдун өз версиясын түзүү боюнча колдонмо.

Биздин баштапкы колдонуу дүлөй жана угуусу начар адамдын ашканасы үчүн түзүлүш болгон, бирок бул система теориялык жактан ар кандай контексттеги үндөрдүн топтомун аныктоого ылайыкташтырылышы мүмкүн. Ашкана баштоо үчүн идеалдуу жер болгон, анткени ал салыштырмалуу тынч болуп калат жана жөнөкөй, так үндөрдү камтыйт.

Бул долбоордун GitHub кампасын бул жерден тапса болот.

Жабдуулар

  • Ардуино Леонардо Микроконтроллер
  • KEYESTUDIO 16x16 Dot Matrix LED дисплейи Arduino үчүн
  • Банндын секирүүчү зымы
  • Микро-USBден USB 2.0 кабелине
  • Jupyter блокноту бар ноутбук (Anaconda орнотуусу)

    Jupyter дептерине башталгычтын көрсөтмөсүн бул жерден тапса болот

  • Системанын корпусу үчүн бир топ туура келбеген LEGO кирпичтери

    (Бирок, чынында, сиз муну каалаган DIY курулуш материалы менен алмаштыра аласыз!)

1 -кадам: ашкана үн үлгүлөрүн чогултуу

Ашкана үн үлгүлөрүн чогултуу
Ашкана үн үлгүлөрүн чогултуу

Жогорудагы сүрөт: Бул чогултуу процессин колдонгон вилка менен бычактын чогуу кагылышуусунан алынган аудио маалыматтар

Реалдуу убакытта үндөрдү аныктоо үчүн, машинаны үйрөнүү моделибизди салыштыруу үчүн сапаттуу мисалдар менен камсыз кылышыбыз керек. Биз бул процесс үчүн Jupyter дептерин түздүк, ага бул жерден же биздин долбоордун GitHub репозиторийи аркылуу кирүүгө болот. Репозиторийде тестирлөө максатында эки башка ашкананын үлгүлүү коллекциялары да бар.

1.1 -кадам: CollectSamples.ipynb дептерин иштеп жаткан Jupyter Notebook каталогуна көчүрүп, ачыңыз.

1.2 -кадам: Биз ар бир уячаны бирден иштетип, биз рубрикада берген бардык эскертүүлөргө көңүл буруңуз. "Үлгү жазуу" дегенге жеткенде токтотуңуз.

ЭСКЕРТҮҮ: Бул блокнотто бир нече Python китепканалары колдонулат жана алардын ар бири долбоорго ийгиликтүү импорттолордон мурун орнотууну талап кылат. Сиз муну кол менен жасасаңыз болот, бирок Jupyter Notebook ичинде китепкананы орнотуу боюнча көрсөтмөнү бул жерден тапса болот.

1.3 -кадам: Бул долбоордун жумушчу каталогунда үлгүлөрүңүздү сактоо үчүн бош каталог түзүңүз.

1.4 -кадам: "Sample Recording" уячасындагы SAMPLES_LOCATION өзгөрмөсүн бош каталогдун жайгашкан жерине дал келтирүү үчүн түзөтүңүз.

1.5 -кадам: SOUND_LABELS өзгөрмөсүнө каалаганча үндөрдү кошуу же алып салуу.

Үлгү жазуу коду иштеши үчүн, бул өзгөрмөнүн ар бир сабы үтүр жана төмөнкү формада бөлүнүшү керек:

'ts': Үн ("TargetedSound", "ts")

1.6 -кадам: Бардык энбелгилер кошулганда, "Үлгү жазуу" уячасын баалоо, үлгү чогултуу процессин баштоо менен. Уячанын чыгарылышында, сиз этикеткалардагы ар бир үн менен байланышкан кыска кодду киргизишиңиз керек (б.а. TargetedSound үчүн "ts"). Муну азырынча жасабаңыз.

1.7 -кадам: Ноутбугуңузду ашканага алып барыңыз жана даяр системаны жайгаштыра турган жерге коюңуз. Бул жер жакшы аудио чогултуу үчүн борбордук болушу керек жана кургак жана электроникаңызды коргоо үчүн мүмкүн болгон төгүлүүлөрдөн алыс болушу керек.

1.8 -кадам: Биринчи максаттуу үнүңүздү даярдаңыз. Эгерде бул мештин таймеринин бипи болсо, анда таймерди бир мүнөткө коюп, кийинки кадамга өтүүдөн мурун 20 секундга чейин же андан аз убакытка чейин күтүүгө болот.

1.9 -кадам: Этикетка кодун киргизиңиз (б.а. "ts"), жана Enter/Return баскычын басыңыз.

Система бөлмөнүн чуудан айырмаланган үн окуясын уга баштайт. Бул үн окуясын сезгенден кийин, ал бөлмөдө үн чөйрөнүн деңгээлине кайтып келгенге чейин жазууну баштайт. Андан кийин ал аудиону 16-бит WAV файлы катары SAMPLES_LOCATION каталогуна форматта сактайт:

TargetedSound _#_ captured.wav

Бул файл аталышынын # бөлүгү сиз чогулткан максаттуу үндүн үлгүлөрүнүн санына туура келет. WAV файлы сакталгандан кийин, эскертүү кайталанат, бул уячанын бир аткарылышында бир эле үндүн бир нече үлгүсүн чогултууга мүмкүндүк берет.

Бул файлдын атын өзгөртпөңүз. Бул кийинки кадам үчүн маанилүү.

1.10-кадам: 1.8 жана 1.9-кадамдарды ар бир үндүн 5-10 үлгүсүн чогултканга чейин кайталаңыз.

1.11 -кадам: аткаруудан чыгуу үчүн бүткөндө "x" киргизиңиз.

ЭСКЕРТҮҮ: Уячадан ушундай жол менен чыкпоо ноутбуктун иштебей калышына алып келиши мүмкүн. Бул учурда, Ноутбуктун ядросу баштапкы абалга келтирилип, ар бир уяча жогору жактан кайра иштеши керек.

1.11 -кадам (Милдеттүү эмес): "Ыкчам үн визуалдаштыруу" уячасындагы жеке файлдардын WAV маалыматтарын текшерип, бардык керектүү маалыматты басып алганыңызды текшериңиз.

Кээ бир кеңештер:

  • Сиздин ашкана тынч болгондо жазыңыз.
  • Бир убакта бир гана үн жазыңыз. Система үндөрдүн бири -бирине дал келүүсүн ажырата албайт.
  • Ар бир туура сыноону мүмкүн болушунча ырааттуу кылууга аракет кылыңыз. Бул идентификациянын тактыгына жардам берет.
  • Жазуу ячейкасын кайра баалоо файлдын # маанисин баштапкы абалга келтирет жана # менен дал келген учурдагы файлдардын үстүнө жазат. Биз бир үндүн бардык үлгүлөрүн дароо жаздырууну оңой таптык, андан кийин Жазуу уячасын токтоттук.
  • Эгерде система сиздин максаттуу үнүңүздү албаса, THRESHOLD маанисин төмөндөтүп көрүңүз (баштоо үчүн 30 деп коюңуз) жана уячаны кайра баалаңыз.
  • Эгерде жазуу максаттуу үндөн башка үндөрдөн келип чыкса, THRESHOLD маанисин көтөрүүгө аракет кылыңыз (баштоо үчүн 30 деп коюңуз) жана уячаны кайра баалаңыз.

2 -кадам: Arduino/Matrix дисплейин даярдоо

Arduino/Matrix дисплейин даярдоо
Arduino/Matrix дисплейин даярдоо
Arduino/Matrix дисплейин даярдоо
Arduino/Matrix дисплейин даярдоо
Arduino/Matrix дисплейин даярдоо
Arduino/Matrix дисплейин даярдоо

Андан кийин, биз Arduino Leonardo жана KEYESTUDIO 16x16 LED чекиттүү матрицанын дисплейин колдонуп визуалдаштыруу системасын түзөбүз. Бул классификация моделинин табылган үндөрдүн божомолун чыгаруу үчүн. Мурдагыдай эле, биз бул жерде да, долбоордун GitHub репозиторийинде да бардык керектүү файлдарды бердик.

2.1 -кадам: Жогорудагы диаграммага ылайык Arduino жана LED матрицасын өткөрүңүз. KEYESTUDIO алардын чекит матрицасына туташуу үчүн зымдарды камтыйт, бирок бул зымдарды Arduino менен туташтыруу үчүн нандын тактайчасы керек болот.

2.2 -кадам: Ardunio IDE аркылуу "arduino_listener.ino" ачыңыз жана аны Леонардого жүктөңүз. Эгерде туура зымдалса, жогорудагы сүрөттө көрсөтүлгөндөй "угуу" сүрөтчөсүн (Wi-Fiга окшош) көрүшүңүз керек.

2.3 -кадам: Ар бир максаттуу үнүңүз үчүн көрсөткүңүз келген иконкаларды даярдаңыз. Кайсы светодиоддор күйүшү керек экенин билүү үчүн, сөлөкөт Arduinoдон матрицага байт массиви катары жөнөтүлүшү керек. Мисалы, биздин кофе чөйчөгүнүн сөлөкөтү (жогорудагы сүрөттө) бул форматта матрицага жөнөтүлөт:

{

0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf, 0xff, 0xff 0xfb, 0xf7, 0x0f, 0xdf, 0x1f, 0xff, 0xff};

Биз сүрөтчөлөрүбүздү Dot2Pic онлайн инструментинин жардамы менен тарттык, анда 16 мамыча, 16 катар жана "монохроматикалык, байтына 8 пиксел, вертикалдуу параметр" ачылуучу менюдан тандалган. Биздикилерди "sample_icon_bytes.txt" массивинен тапса болот.

ЭСКЕРТҮҮ: Жүктөлгөн файлдар менен автоматтык түрдө жасай турган онлайн куралдар да болушу мүмкүн.

2.4 -кадам: Ар бир сөлөкөттү тартыңыз. Чийүү бүткөндөн кийин, "Массивге айландыруу" дегенди тандаңыз.

2.5 -кадам: "arduino_listening.ino" кодунун үстүндө аныкталган керексиз сүрөтчөлөрдү каалагандай алмаштырыңыз. Белги сүрөттөлгөн комментарийди кошууну унутпаңыз, андыктан кайсынысы экенин эстеп каласыз!

2.6 -кадам: Жаңы кодду Arduinoго жүктөңүз. Азырынча файлды жаппаңыз, бизге кийинки кадам үчүн керек болот.

3 -кадам: Классификаторду иштетүү жана үндөрдү аныктоо

Классификаторду иштетүү жана үндөрдү аныктоо
Классификаторду иштетүү жана үндөрдү аныктоо
Классификаторду иштетүү жана үндөрдү аныктоо
Классификаторду иштетүү жана үндөрдү аныктоо

Эми системаны бириктирүү мезгили келди. Классификация кууру, Arduino байланышы жана жандуу аудио жазуусу бардыгы ушул жерде берилген же биздин долбоордун GitHub репозиторийи аркылуу кирүүгө мүмкүн болгон бир гана Arduino дептери аркылуу жасалат.

3.1 -кадам: FullPipeline.ipynb дептерин иштеген Jupyter Notebook каталогуна көчүрүп, ачыңыз.

3.2 -кадам: Биз ар бир уячаны бирден иштетип, биз аталыштарда берген бардык эскертүүлөргө көңүл буруңуз. Эч кандай өндүрүш күтүлбөйт. "Окутуу маалыматын жүктөө" аттуу уячага жеткенде токтотуңуз.

3.3 -кадам: "Окутуу маалыматын жүктөө" уячасындагы SAMPLES_LOCATION_ROOT өзгөрмөсүн мурунку үлгү каталогуңуздун башкы каталогуна түзөтүңүз. Андан кийин, SAMPLES_DIR_NAME өзгөрмөсүн каталогуңуздун атына өзгөртүңүз. Демек, эгер сиз CollectSamples.ipynbдеги жайгашууну төмөнкүдөй орноткон болсоңуз:

SAMPLES_LOCATION = "/Users/xxxx/Documents/KitchenSoundClassifier/MySamples/NewDir"

Эми бул өзгөрмөлөрдү төмөнкүдөй коймоксуз:

SAMPLES_LOCATION_ROOT = "/Users/xxxx/Documents/KitchenSoundClassifier/MySamples/" SAMPLES_DIR_NAME = "NewDir"

Биз муну так эместик учурларда классификаторго тез өзгөртүүгө мүмкүнчүлүк бердик. Сиз маалыматтарды тууралоо үчүн ар кандай үлгүлөр жыйнактарынын ортосунда которула аласыз.

3.4 -кадам: Уячаны баалаңыз. Сиз ийгиликтүү жүктөлгөн ар бир коллекцияны көрүшүңүз керек.

3.5 -кадам: Ар бир уячаны бирден иштетүүнү улантыңыз, биз рубрикада берген бардык эскертүүлөргө көңүл буруңуз.

3.6 -кадам: "Messaging Arduino" клеткасына жеткенде токтотуңуз. PORT_DEF өзгөрмөсүндө сиздин компьютер Arduino менен байланыш үчүн колдоно турган сериялык портту аныктаңыз. Муну Arduino IDEден табууга болот жана Куралдар> Портко өтүңүз.

Көбүрөөк маалыматты бул жерден тапса болот.

3.8 -кадам: Arduino IDEди кайра ачыңыз. Сиз сүрөтчөлөргө өзгөртүүлөрдү киргизген жерлерде, массивдин жанындагы тамгаларды жазыңыз, бирок аны ЭМЕС. Төмөндөгү мисалда бул "g".

// таштанды чыгаруу, 0xff, 0x2f, 0x27, 0xc3, 0x03, 0xc3, 0x27, 0x2f, 0xff, 0xef, 0xdf, 0xbf, 0xff, 0xff,};

3.7 -кадам: (Блокноттун "Messaging Arduino" ячейкасына кайтуу) self.sounds сөздүгүндөгү энбелгилерди үлгүлөрүңүздү жазууда колдонгон энбелгилерге дал келгидей кылып өзгөртүңүз, ар бир этикетка мурунку сиз белгилеген бир тамгага туура келет. кадам "Жаздыруу" жана "Угуу" экөө тең системанын негизги функцияларынын бир бөлүгү жана аларды өзгөртүүгө болбойт. Экинчи тамганы өзгөртпөңүз, эгер Arduino кодуна бир нече кошумча өзгөртүүлөрдү киргизүүгө ишенбесеңиз, анткени ал Arduino/матрицасы менен болгон байланышты бузат.

3.8 -кадам: Негизги функцияны иштетиңиз! Код окутуу маалыматын кармап, анын негизги өзгөчөлүктөрүн чыгарып, куурга киргизет, классификация моделин курат, андан кийин үн окуяларын уга баштайт. Ал бир нерсени сезгенде, сиз матрицанын жазуу символуна (ичиндеги тегерек менен квадрат) өзгөргөнүн көрөсүз жана ал бул маалыматты сегменттеп, аны моделге киргизет. Модель эмнени айтса, бир нече секунддан кийин матрицанын дисплейинде көрүнөт.

Сиз төмөндөгү уячанын өндүрүшүн ээрчип кете аласыз. Канчалык так ала алаарыңызды көрүңүз!

4 -кадам: LEGO турак жайын түзүү

LEGO турак жайын түзүү
LEGO турак жайын түзүү
LEGO турак жайын түзүү
LEGO турак жайын түзүү
LEGO турак жайын түзүү
LEGO турак жайын түзүү

Бул кызыктуу бир бөлүгү болуп саналат! Сиз машинаны үйрөнүүнүн бардык олуттуу кадамдарын жасадыңыз жана бүтүндөй системаны ишке киргиздиңиз, эми сыйлык катары LEGO менен ойной аласыз. Бул жерде майда -чүйдөсүнө чейин анча -мынча процесс жок. Биз жөн эле жалпы дизайн жөнүндө көп тынчсызданбастан, бул жакка жактырган блокторду коштук жана анын кандай болуп өткөнү менен бактылуу болдук.

Биздин сүрөттөр ашканаңызга гана тиешелүү болгон жеке чыгармачыл турак жайыңызга илхам катары кызмат кылууга уруксат бериңиз. Биз Arduino менен зымдардын көпчүлүгүн көңдөй корпуска койдук, андан кийин үстүдөгү матрицанын дисплейин чыңалуу менен камсыз кылдык. Жарыкты бир аз таркатуу үчүн дисплейдин үстүнө бир аз кагаз коштук, бул сүрөтчөлөрдү ачык -айкын кылды.

Сунушталууда: