Mundarija:

Maxsus oshxona tovush identifikatori: 4 qadam
Maxsus oshxona tovush identifikatori: 4 qadam

Video: Maxsus oshxona tovush identifikatori: 4 qadam

Video: Maxsus oshxona tovush identifikatori: 4 qadam
Video: Arzonchi Ustadan MAXSUS OSHXONA MEBELLARI #кухня #гарнитура #2024 2024, Noyabr
Anonim
Image
Image
Maxsus oshxona tovush identifikatori
Maxsus oshxona tovush identifikatori

Bizning bahorgi interaktiv tizimlar kursidagi yakuniy loyihamiz uchun biz Support-Vector Machine tasnifi yordamida oshxonada keng tarqalgan tovushlarni aniqlash va vizualizatsiya qilish uchun real vaqtda tizim yaratdik. Tizim audio tanlab olish/tasniflash uchun noutbuk va vizualizatsiya uchun Arduino/nuqta matritsali displeydan iborat. Quyida o'zingizning oshxonangizdan keladigan tovushlar uchun ushbu tizimning o'z versiyasini yaratish bo'yicha ko'rsatma berilgan.

Bizning dastlabki foydalanish holati kar va eshitish qobiliyati cheklangan odamning oshxonasi uchun qurilma edi, lekin bu tizim nazariy jihatdan turli kontekstdagi tovushlar to'plamini aniqlash uchun moslashtirilishi mumkin edi. Oshxona boshlash uchun ideal joy edi, chunki u nisbatan jim bo'lib, oddiy va aniq tovushlarni o'z ichiga oladi.

Bu loyiha uchun GitHub omborini bu erda topish mumkin.

Ta'minotlar

  • Sarlavhali Arduino Leonardo mikrokontroller
  • Arduino uchun KEYESTUDIO 16x16 nuqta matritsali LED displey
  • Breadboard o'tish kabeli
  • Micro-USB-USB 2.0 kabeli
  • Jupyter noutbukli noutbuk (Anaconda o'rnatilishi)

    Yangi boshlanuvchilar uchun Jupyter daftarchasiga ko'rsatma bu erda

  • Tizim korpusi uchun katta miqdordagi mos bo'lmagan LEGO g'ishtlari

    (Lekin, albatta, siz ularni o'zingiz xohlagan DIY qurilish materiali bilan almashtira olasiz!)

1 -qadam: Oshxonadagi tovush namunalarini yig'ish

Oshxona tovush namunalarini yig'ish
Oshxona tovush namunalarini yig'ish

Yuqoridagi rasm: Ushbu yig'ish jarayoni yordamida vilkalar va pichoqlarning bir -biriga bog'langanini yozib olishdan olingan audio ma'lumotlar

Haqiqiy vaqtda tovushlarni aniqlash uchun biz mashinani o'rganish modeliga taqqoslash uchun sifatli misollar berishimiz kerak. Biz bu jarayon uchun Jupyter daftarchasini yaratdik, unga bu erdan yoki loyihamizning GitHub ombori orqali kirish mumkin. Shuningdek, omborda test maqsadida ikkita turli oshxonadan namunalar to'plami mavjud.

1.1 -qadam: CollectSamples.ipynb daftarini ishlaydigan Jupyter Notebook katalogiga nusxalash va ochish.

1.2 -qadam: Har bir katakchani birma -bir ishga tushiring, sarlavhalarda berilgan har qanday eslatmaga e'tibor bering. "Namunaviy yozish" nomli narsaga etib kelganingizda to'xtating.

QAYD: Bu daftarda bir nechta Python kutubxonalari ishlatiladi va ularning har biri loyihaga muvaffaqiyatli import qilinishidan oldin o'rnatishni talab qiladi. Siz buni qo'lda qilishingiz mumkin, lekin Jupyter daftarchasida kutubxonani o'rnatish bo'yicha qo'llanmani bu erda topishingiz mumkin.

1.3 -qadam: namunalaringizni ushbu loyiha uchun ishchi katalogingizda saqlash uchun bo'sh katalog yarating.

1.4 -qadam: "Namunaviy yozish" katagidagi SAMPLES_LOCATION o'zgaruvchisini bo'sh katalogingiz joylashuviga mos ravishda tahrir qiling.

1.5 -qadam: SOUND_LABELS o'zgaruvchisiga xohlagancha ovoz qo'shing yoki o'chiring.

Namuna yozish kodi ishlashi uchun bu o'zgaruvchining har bir satrini vergul va quyidagi shaklda ajratish kerak:

'ts': tovush ("TargetedSound", "ts")

1.6 -qadam: Barcha yorliqlar qo'shilgach, "Namuna yozish" katakchasini baholash, namunalarni yig'ish jarayonini boshlaydi. Hujayra chiqqanda, siz teglardagi har bir tovush bilan bog'langan qisqa kodni kiritishingiz so'raladi (ya'ni, TargetedSound uchun "ts"). Buni hozircha qilmang.

1.7 -qadam: Noutbukni oshxonaga olib borib, siz tayyor tizimni joylashtiradigan joyga qo'ying. Bu joy yaxshi ovoz yig'ish uchun markaz bo'lishi kerak, va sizning elektronikangizni himoya qilish uchun qurib qolishi va to'kilmasligi kerak.

1.8 -qadam: Birinchi maqsadli ovozingizni tayyorlang. Agar bu o'choq taymerining ovozli signal bo'lsa, siz taymerni bir daqiqaga qo'yishingiz va keyingi bosqichga o'tishdan oldin uning 20 soniya yoki undan kam vaqtgacha hisoblanishini kutishingiz mumkin.

1.9 -qadam: Yorliq kodini so'rovga kiriting (ya'ni "ts") va Enter/Return tugmasini bosing.

Tizim xonaning shovqinidan farqli o'laroq ovozli hodisani eshitishni boshlaydi. Bu tovushli hodisani sezganidan so'ng, u xonadagi ovoz atrof -muhit darajasiga qaytguncha ovoz yozishni boshlaydi. Keyin u ovozni 16 bitli WAV fayli sifatida SAMPLES_LOCATION da aniqlangan katalogga saqlaydi:

TargetedSound _#_ captured.wav

Bu fayl nomining # qismi siz to'plagan maqsadli ovoz namunalari soniga to'g'ri keladi. WAV fayli saqlanganidan so'ng, ko'rsatma takrorlanadi, bu sizga bitta ovozda bir nechta namunalarni to'plash imkonini beradi.

Ushbu fayl nomini o'zgartirmang. Keyingi qadam uchun bu muhim.

1.10-qadam: Har bir tovushning 5-10 ta namunasini yig'maguningizcha, 1.8 va 1.9-bosqichlarni takrorlang.

1.11 -qadam: bajarilgandan so'ng "x" ni kiriting.

OGOHLANTIRISH: Hujayrani shu tarzda tark etmaslik, noutbukning ishdan chiqishiga olib kelishi mumkin. Bunday holda, Notebook yadrosi tiklanishi va har bir katak yuqoridan qayta ishga tushirilishi kerak.

1.11 -qadam (ixtiyoriy): "Tez ovozli vizualizatsiya" katakchasidagi alohida fayllarning WAV ma'lumotlarini tekshiring, shunda siz kerakli barcha ma'lumotlarni olgansiz.

Ba'zi maslahatlar:

  • Oshxonangiz jim bo'lganda yozib oling.
  • Bir vaqtning o'zida faqat bitta ovoz yozing. Tizim tovushlarning bir -biriga o'xshashligini ajrata olmaydi.
  • Har bir ovozli sinovni iloji boricha izchil qilishga harakat qiling. Bu aniqlik aniqligiga yordam beradi.
  • Yozuv katakchasini qayta baholash fayl nomidagi # qiymatini qayta tiklaydi va unga mos keladigan mavjud fayllar ustidan yoziladi. Biz bir ovozning barcha namunalarini birdaniga yozib olishni, so'ngra Yozish kamerasini to'xtatishni osonlashtirdik.
  • Agar tizim sizning maqsadli ovozingizni qabul qilmasa, THRESHOLD qiymatini pasaytirishga harakat qiling (boshlash uchun 30 ga o'rnating) va katakchani qayta baholang.
  • Agar yozuv boshqa maqsadli ovozdan tashqarida bo'lsa, THRESHOLD qiymatini oshirishga harakat qiling (boshlash uchun 30 ga o'rnating) va katakchani qayta baholang.

2 -qadam: Arduino/Matrix displeyini tayyorlash

Arduino/Matrix displeyini tayyorlash
Arduino/Matrix displeyini tayyorlash
Arduino/Matrix displeyini tayyorlash
Arduino/Matrix displeyini tayyorlash
Arduino/Matrix displeyini tayyorlash
Arduino/Matrix displeyini tayyorlash

Keyin biz Arduino Leonardo va KEYESTUDIO 16x16 LED nuqta matritsali displey yordamida vizualizatsiya tizimini o'rnatamiz. Bu tasnif modelining aniqlangan tovushlar haqidagi bashoratini chiqarish uchun. Avvalgidek, biz bu erda ham, loyihaning GitHub omborida ham barcha kerakli fayllarni taqdim etdik.

2.1 -qadam: Arduino va LED matritsasini yuqoridagi sxema bo'yicha simlang. KEYESTUDIO o'z nuqta matritsasiga ulanish uchun simlarni o'z ichiga oladi, lekin bu simlarni Arduino -ga ulash uchun simli o'tish simlari kerak bo'ladi.

2.2 -qadam: Ardunio IDE yordamida "arduino_listener.ino" ni oching va uni Leonardoga yuklang. Agar sim to'g'ri ulangan bo'lsa, yuqoridagi rasmda ko'rsatilgandek "tinglash" belgisini (Wi-Fi kabi) ko'rishingiz kerak.

2.3 -qadam: Har bir maqsadli tovushingiz uchun ko'rsatmoqchi bo'lgan piktogramma tayyorlang. Qaysi LEDlar yonishini bilish uchun belgini Arduino -dan matritsaga bayt qatori sifatida yuborish kerak. Masalan, bizning qahva chashka belgisi (yuqoridagi rasmda) matritsaga quyidagi formatda yuboriladi:

{

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

Biz ikonkalarni Dot2Pic onlayn vositasi yordamida chizdik, 16 ustun, 16 qator va "monoxromatik, bayt uchun 8 piksel, vertikal sozlash" ochiladigan menyudan tanlangan. Biznikini "sample_icon_bytes.txt" qatorida topish mumkin.

QAYD: yuklangan fayllar bilan avtomatik tarzda bajaradigan onlayn vositalar ham bo'lishi mumkin.

2.4 -qadam: Har bir belgini chizish. Chizishni tugatgandan so'ng, "Massivga aylantirish" -ni tanlang.

2.5 -qadam: "arduino_listening.ino" kodining yuqori qismida belgilangan keraksiz piktogrammalarni xohlaganingizcha o'zgartiring. Belgini tasvirlaydigan sharh qo'shganingizga ishonch hosil qiling, shunda qaysi biri ekanligini eslaysiz!

2.6 -qadam: Yangi kodni Arduino -ga yuklang. Hali faylni yopmang, keyingi qadam uchun bizga kerak bo'ladi.

3 -qadam: tasniflagichni ishga tushirish va tovushlarni aniqlash

Klassifikatorni ishga tushirish va tovushlarni aniqlash
Klassifikatorni ishga tushirish va tovushlarni aniqlash
Klassifikatorni ishga tushirish va tovushlarni aniqlash
Klassifikatorni ishga tushirish va tovushlarni aniqlash

Endi tizimni birlashtirish vaqti keldi. Tasniflash liniyasi, Arduino aloqasi va jonli ovoz yozish bitta Arduino daftarchasi orqali amalga oshiriladi, bu erda taqdim etilgan yoki bizning loyihamizning GitHub ombori orqali kirish mumkin.

3.1 -qadam: FullPipeline.ipynb daftarini ishlaydigan Jupyter Notebook katalogiga nusxalash va ochish.

3.2 -qadam: Har bir katakchani birma -bir ishga tushiring, sarlavhalarda berilgan har qanday eslatmaga e'tibor bering. Hech qanday chiqish kutilmaydi. "O'quv ma'lumotlarini yuklash" nomli katakka etib kelganingizda to'xtating.

3.3 -qadam: "Ta'lim ma'lumotlarini yuklash" katagidagi SAMPLES_LOCATION_ROOT o'zgaruvchisini oldingi namunaviy katalogingiz joylashgan asosiy katalogga o'zgartiring. Keyin, SAMPLES_DIR_NAME o'zgaruvchisini katalogingiz nomiga o'zgartiring. Shunday qilib, agar siz CollectSamples.ipynb manzilini joylashtirgan bo'lsangiz:

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

Endi siz bu o'zgaruvchilarni quyidagicha o'rnatasiz:

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

Biz bu aniq bo'lmagan hollarda tasniflagichni tez o'zgartirish imkonini berdi. Ma'lumotlaringizni sozlash uchun siz turli xil namunaviy to'plamlar o'rtasida almashishingiz mumkin.

3.4 -qadam: hujayrani baholang. Siz muvaffaqiyatli yuklangan har bir to'plamni ko'rishingiz kerak.

3.5 -qadam: Har bir katakchani birma -bir ishga tushirishda davom eting, sarlavhalarda berilgan har qanday eslatmaga e'tibor bering.

3.6 -qadam: "Arduino -ga xabar yuborish" kamerasiga kirganingizda to'xtating. PORT_DEF o'zgaruvchisida Arduino bilan aloqa qilish uchun kompyuteringiz foydalanadigan ketma -ket portni aniqlang. Buni Arduino IDE -da topish mumkin va Asboblar> Port -ga o'ting.

Qo'shimcha ma'lumotni bu erda topishingiz mumkin.

3.8 -qadam: Arduino IDE -ni qayta oching. Belgilarga o'zgartirishlar kiritilgan joylarda, qator qiymatining yonidagi harfni yozing, lekin uni o'zgartirmang. Quyidagi misolda bu "g".

// axlatni tozalash imzosiz char g [1] [32] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf7, 0xf7, 0xfb, 0xff, 0xfe, 0xfd, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x27, 0xc3, 0x03, 0xc3, 0x27, 0x2f, 0xff, 0xef, 0xdf, 0xbf, 0xff, 0xff,};

3.7 -qadam: (Notebookning "Messaging Arduino" katakchasiga qaytish) self.sounds lug'atidagi teglarni namunalaringizni yozishda ishlatgan belgilarga mos keladigan qilib o'zgartiring, har bir belgi avvalgi siz yozgan bitta harfga mos kelishiga ishonch hosil qiling. qadam "Yozish" va "Tinglash" ikkalasi ham tizimning asosiy funktsiyalarining bir qismidir va ularni o'zgartirish kerak emas. Ikkinchi harfni o'zgartirmang, agar Arduino kodiga bir nechta qo'shimcha o'zgartirishlar kiritishga ishonchingiz komil bo'lmasa, aks holda Arduino/matritsa bilan aloqani buzadi.

3.8 -qadam: Asosiy funktsiyani ishga tushiring! Kod o'quv ma'lumotlarini oladi, uning asosiy xususiyatlarini chiqaradi, ularni quvurga uzatadi, tasniflash modelini tuzadi, so'ngra ovozli hodisalarni tinglashni boshlaydi. Agar u sezsa, siz matritsaning yozish belgisiga o'zgarishini ko'rasiz (ichida aylana bo'lgan kvadrat) va u bu ma'lumotlarni segmentlarga ajratadi va uni modelga uzatadi. Model nimani bashorat qilsa, bir necha soniyadan so'ng matritsa displeyida paydo bo'ladi.

Quyidagi katakchaning chiqishini kuzatib borishingiz mumkin. Buni qanchalik aniq olish mumkinligini ko'ring!

4 -qadam: LEGO korpusini yaratish

LEGO korpusini yaratish
LEGO korpusini yaratish
LEGO korpusini yaratish
LEGO korpusini yaratish
LEGO korpusini yaratish
LEGO korpusini yaratish

Bu qiziqarli qism! Siz mashinani o'rganishning barcha jiddiy qadamlarini bajardingiz va butun tizimni oxirigacha ishga tushirdingiz, endi siz mukofot sifatida LEGO bilan o'ynashingiz mumkin. Bu erda batafsil ko'rib chiqiladigan jarayon yo'q. Biz umumiy dizayn haqida ko'p tashvishlanmasdan, bu erda va u erda o'zimizga yoqqan bloklarni qo'shdik va natijada biz xursand bo'ldik.

Bizning rasmlarimiz sizning oshxonangizga xos bo'lgan ijodiy uyingiz uchun ilhom sifatida xizmat qilishiga ruxsat bering. Biz Arduino va simlarning ko'p qismini bo'sh korpusga joylashtirdik, so'ngra yuqoridagi matritsali displeyni osilgan holda mahkamladik. Biz yorug'likni bir oz tarqatish uchun displeyga bir oz qog'oz qo'shdik, bu piktogramma aniqroq bo'ldi.

Tavsiya: