Sisukord:
- Tarvikud
- Samm: köögi heliproovide kogumine
- Samm: Arduino/maatriksi kuva ettevalmistamine
- 3. samm: klassifikaatori käivitamine ja helide tuvastamine
- 4. samm: LEGO korpuse loomine
Video: Kohandatud köögiheli identifikaator: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Sel kevadel toimunud interaktiivsete süsteemide kursuse viimase projekti jaoks lõime reaalajas süsteemi köögis levinud helide tuvastamiseks ja visualiseerimiseks, kasutades Support-Vector Machine klassifikatsiooni. Süsteem koosneb sülearvutist heliproovide võtmiseks/klassifitseerimiseks ja visualiseerimiseks Arduino/punktmaatriksi kuvarist. Järgnev on juhend selle süsteemi oma versiooni loomiseks teie köögist pärit helide jaoks.
Meie esialgne kasutusjuht oli kurtide ja vaegkuuljate köögi seade, kuid seda süsteemi saab teoreetiliselt kohandada helide kogumi tuvastamiseks erinevates kontekstides. Köök oli ideaalne koht alustamiseks, kuna see kipub olema suhteliselt vaikne ja sisaldab mõistlikus koguses lihtsaid, selgeid helisid.
Selle projekti GitHubi hoidla leiate siit.
Tarvikud
- Arduino Leonardo päistega mikrokontroller
- KEYESTUDIO 16x16 punktmaatriksiga LED -ekraan Arduino jaoks
- Leivaplaadi hüppaja traat
- Micro-USB-USB 2.0 kaabel
-
Sülearvuti Jupyteri sülearvutiga (Anaconda install)
Jupyteri märkmiku algajate juhendi leiate siit
-
Märkimisväärne hulk sobimatuid LEGO klotse süsteemi korpuse jaoks
(Aga tegelikult saate need asendada mis tahes soovitud ehitusmaterjaliga!)
Samm: köögi heliproovide kogumine
Joonis ülal: heliandmed, mis on võetud kahvli ja noa kokku klõpsamise salvestamisel selle kogumisprotsessi abil
Reaalajas helide tuvastamiseks peame varustama oma masinõppemudeli võrdluseks kvaliteetsete näidetega. Selle protsessi jaoks lõime Jupyteri märkmiku, millele pääseb juurde siin või meie projekti GitHubi hoidla kaudu. Hoidla sisaldab testimiseks ka näidiskogusid kahest erinevast köögist.
Samm 1.1. Kopeerige märkmik CollectSamples.ipynb oma töötavasse Jupyteri märkmiku kataloogi ja avage see.
Etapp 1.2. Käivitage iga lahter ükshaaval, pöörates tähelepanu pealkirjades esitatud märkustele. Peatage, kui jõuate pealkirjaga "Proovisalvestus".
MÄRKUS. Selles märkmikus kasutatakse mitut Pythoni teeki ja igaüks neist vajab enne nende edukat projekti importimist installimist. Olete teretulnud seda käsitsi tegema, kuigi Jupyter Notebooki raamatukogu installimise juhendi leiate siit.
Samm 1.3. Looge selle projekti töökataloogi jaoks näidiste salvestamiseks tühi kataloog.
Samm 1.4. Muutke lahtris "Proovisalvestus" muutujat SAMPLES_LOCATION, et see vastaks tühja kataloogi asukohale.
Samm 1.5: lisage või eemaldage muutujale SOUND_LABELS nii palju helisid kui soovite.
Salvestuskoodi näidise toimimiseks peab selle muutuja iga rida olema eraldatud komaga ja järgmisel kujul:
'ts': heli ("TargetedSound", "ts")
Samm 1.6. Kui kõik sildid on lisatud, alustage lahtri "Proovide salvestamine" hindamist proovide kogumise protsessiga. Lahtri väljundis palutakse teil sisestada siltide iga heliga seotud lühikood (st "ts" TargetedSoundi jaoks). Ära seda veel tee.
Samm 1.7: võtke sülearvuti kööki ja asetage see kohta, kuhu tõenäoliselt süsteemi paigutaksite. See asukoht peaks olema hea helikogumise jaoks kesksel kohal ning kuiv ja eemal võimalikest lekkest, et kaitsta teie elektroonikat.
Samm 1.8: valmistage ette esimene sihitud heli. Kui see on ahju taimeri piiks, võite taimeriks seada ühe minuti ja oodata, kuni see loeb kuni 20 sekundini, enne kui jätkate järgmise sammuga.
Samm 1.9. Sisestage viipale silt (st "ts") ja vajutage sisestusklahvi.
Süsteem hakkab kuulama heli, mis erineb ruumi ümbritsevast mürast. Seda helisündmust tajudes alustab see salvestamist, kuni tajub, et ruumis olev heli on naasnud ümbritsevale tasemele. Seejärel salvestab see heli 16-bitise WAV-failina kataloogi, mis on tuvastatud SAMPLES_LOCATION, järgmises vormingus:
TargetedSound _#_ jäädvustatud.wav
Selle failinime # osa vastab teie kogutud sihitud heli näidiste arvule. Pärast WAV -faili salvestamist kordub viip, mis võimaldab teil koguda mitu sama heli näidist ühe lahtri täitmisega.
ÄRGE muutke seda failinime. See on oluline järgmiseks sammuks.
Samm 1.10: Korrake samme 1.8 ja 1.9, kuni olete kogunud igast helist 5-10 näidist.
Samm 1.11: täitmisel lõpetamiseks sisestage "x".
HOIATUS. Kui sellisel viisil lahtrist väljuda, võib sülearvuti kokku kukkuda. Sel juhul tuleb sülearvuti kernel lähtestada ja iga lahter uuesti ülevalt käivitada.
Samm 1.11 (valikuline): kontrollige lahtris "Kiire heli visualiseerimine" olevate üksikute failide WAV -andmeid, et veenduda, et olete püüdnud kogu soovitud teabe.
Mõned näpunäited:
- Salvestage, kui teie köök on vaikne.
- Salvestage ainult üks heli korraga. Süsteem ei suuda eristada helide kattumist.
- Püüdke muuta iga heliproov võimalikult ühtlaseks. See aitab tuvastada täpsust.
- Salvestuslahtri uuesti hindamisel lähtestatakse failinime # väärtus ja kirjutatakse üle kõik olemasolevad failid, mis vastavad sellele #. Leidsime, et kõige lihtsam on salvestada kõik ühe heli proovid korraga ja seejärel peatada salvestuslahtrid.
- Kui süsteem ei võta teie sihitud heli, proovige alandada väärtust THRESHOLD (alustamiseks seatud väärtusele 30) ja hinnake lahtrit uuesti.
- Kui salvestamise käivitavad muud helid väljaspool sihtmärki, proovige tõsta THRESHOLD väärtust (alustamiseks seatud väärtusele 30) ja hinnake lahtrit uuesti.
Samm: Arduino/maatriksi kuva ettevalmistamine
Järgmisena seadistame visualiseerimissüsteemi Arduino Leonardo ja KEYESTUDIO 16x16 LED -maatriksekraani abil. Selle eesmärk on väljastada klassifitseerimismudeli tuvastatud helide ennustus. Nagu varemgi, oleme esitanud kõik vajalikud failid nii siin kui ka projekti GitHubi hoidlas.
Samm: ühendage Arduino ja LED -maatriks vastavalt ülaltoodud skeemile. KEYESTUDIO sisaldab juhtmeid oma punktmaatriksiga ühendamiseks, kuid nende juhtmete ühendamiseks Arduinoga on vaja leivaplaadi hüppajajuhtmeid
Samm 2.2. Avage arduino_listener.ino, kasutades Ardunio IDE -d, ja laadige see üles Leonardosse. Kui juhtmed on õigesti ühendatud, peaksite nägema "kuulamise" ikooni (näeb välja nagu Wi-Fi), nagu on näidatud ülaltoodud pildil.
Samm 2.3. Valmistage iga sihtheli jaoks ette ikoonid, mida soovite kuvada. Et teada saada, millised LED -id süttivad, tuleb ikoon saata Arduino maatriksist baitmassiivina. Näiteks meie kohvitassi ikoon (ülaltoodud pildil) saadetakse maatriksisse järgmises vormingus:
{
0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf, 0xf, 0xf 0xfb, 0xf7, 0x0f, 0xdf, 0x1f, 0xff, 0xff};
Joonistasime oma ikoonid veebitööriista Dot2Pic abil, mille rippmenüüst on valitud 16 veergu, 16 rida ja "ühevärviline, 8 pikslit baidi kohta, vertikaalne seade". Meie omad leiate massiivist "sample_icon_bytes.txt".
MÄRKUS. Samuti võivad olla veebitööriistad, mis saavad seda üleslaaditud failidega automaatselt teha.
Etapp 2.4: joonistage iga ikoon. Kui olete joonistamise lõpetanud, valige "Teisenda massiiviks".
Samm 2.5. Asendage mittevajalikud ikoonid, mis on määratletud koodi "arduino_listening.ino" ülaosas, vastavalt soovile. Lisage kindlasti kommentaar, mis kirjeldab ikooni, et mäletaksite kumb on kumb!
Samm 2.6: laadige uus kood Arduinosse üles. Ärge sulgege faili veel, vajame seda järgmiseks sammuks.
3. samm: klassifikaatori käivitamine ja helide tuvastamine
Nüüd on aeg süsteem kokku panna. Klassifitseerimissüsteem, Arduino side ja reaalajas heli jäädvustamine toimub ühe Arduino sülearvuti kaudu, mis on siin saadaval või millele pääseb juurde meie projekti GitHubi hoidla kaudu.
Samm: kopeerige märkmik FullPipeline.ipynb oma töötavasse Jupyteri sülearvuti kataloogi ja avage see.
Etapp 3.2. Käivitage iga lahter ükshaaval, pöörates tähelepanu pealkirjades esitatud märkustele. Väljundit pole oodata. Peatage, kui jõuate lahtrisse pealkirjaga "Laadi treeningandmed".
Samm 3.3. Muutke lahtrit "Laadi treeningandmed" muutujat SAMPLES_LOCATION_ROOT oma varasema näidiskataloogi asukoha vanemkataloogi. Seejärel muutke muutuja SAMPLES_DIR_NAME oma kataloogi nimeks. Nii et kui oleksite määranud CollectSamples.ipynb -i asukohaks:
SAMPLES_LOCATION = "/Kasutajad/xxxx/Dokumendid/KitchenSoundClassifier/MySamples/NewDir"
Nüüd määrate need muutujad järgmiseks:
SAMPLES_LOCATION_ROOT = "/Kasutajad/xxxx/Dokumendid/KitchenSoundClassifier/MySamples/" SAMPLES_DIR_NAME = "NewDir"
See võimaldas ebatäpsuse korral klassifikaatorit kiiresti muuta. Andmete häälestamiseks saate erinevate näidiskogude vahel vahetada.
Samm 3.4. Lahtri hindamine. Te peaksite nägema iga kollektsiooni edukat laadimist.
Samm 3.5. Jätkake iga lahtri käitamist ükshaaval, pöörates tähelepanu kõikidele pealkirjades esitatud märkustele.
Samm 3.6. Peatage, kui jõuate lahtrisse "Sõnumid Arduino". Määrake muutuja PORT_DEF jadaport, mida teie arvuti kasutab Arduinoga suhtlemiseks. Selle leiate Arduino IDE -st ja minge menüüsse Tööriistad> Port.
Lisateavet leiate siit.
Samm 3.8: avage oma Arduino IDE uuesti. Kohtades, kus muutsite ikoone, märkige massiivi väärtuse kõrval olev täht üles, kuid MITTE seda muuta. Allolevas näites on see "g".
// prügikäitluskonstruktsioon märkimata märk g [1] [32] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf7, 0xf7, 0xfb, 0xff, 0xfe, 0xfd, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x27, 0xc3, 0x03, 0xc3, 0x27, 0x2f, 0xff, 0xef, 0xdf, 0xbf, 0xff, 0xff,};
Samm 3.7: (naasmine sülearvuti lahtrisse "Messaging Arduino") Muutke sõnastikus self.sounds olevaid silte, et need vastaksid näidiste salvestamisel kasutatud siltidele, veendudes, et iga silt vastab eelmises kirjas märgitud ühele tähele samm. "Salvestamine" ja "kuulamine" on mõlemad osa süsteemi põhifunktsioonidest ja neid ei tohiks muuta. ÄRGE muutke teist tähte, kui te pole kindel, et teete ka mõned täiendavad muudatused Arduino koodis, kuna see segab Arduino/maatriksiga suhtlemist muidu.
Samm 3.8: käivitage põhifunktsioon! Kood haarab koolitusandmed, ekstraheerib selle põhijooned, suunab need konveieri, koostab klassifitseerimismudeli ja hakkab seejärel kuulama helisündmusi. Kui see tuvastab ühe, näete maatriksi muutumist salvestussümboliks (ruut, mille sees on ring) ning see segmenteerib need andmed ja lisab need mudelisse. Mida iganes mudel ennustab, kuvatakse maatriksiekraanil mõni sekund hiljem.
Saate järgida lahtri väljundit allpool. Vaadake, kui täpne see on!
4. samm: LEGO korpuse loomine
See on lõbus osa! Olete teinud kõik tõsised masinõppe toimingud ja kogu otsasüsteemi valmis ning nüüd saate preemiaks mängida LEGO-dega. Siin pole palju üksikasju. Lisasime lihtsalt siia -sinna meeldivaid klotse, muretsemata liialt üldise kujunduse pärast, ja jäime lõpuks selle väljanägemisega rahule.
Laske meie piltidel olla teie köögi jaoks ainulaadse loomingulise eluaseme inspiratsiooniks. Asetasime Arduino ja enamiku juhtmestikke õõnsasse korpusesse, seejärel kinnitasime ülaltoodud maatriksi kuva üleulatuvate osadega. Lisasime ekraani kohale natuke paberit, et hajutada valgust veidi, mis meie arvates muutis ikoonid selgemaks.
Soovitan:
STM32f767zi Cube IDE alustamine ja kohandatud visandi üleslaadimine: 3 sammu
STM32f767zi Cube IDE -ga alustamine ja teie üleslaadimise kohandatud visand: OSTA (veebilehe ostmiseks/külastamiseks klõpsake testi) STM32F767ZISUPPORTED TARKVARA · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKOW kasutatakse STM -i mikrokontrollerite programmeerimiseks
Kohandatud kaartide loomine oma Garmini GPS -i jaoks: 8 sammu (piltidega)
Kohandatud kaartide loomine oma Garmini GPS -i jaoks: kui teil on Garmini GPS, mis on mõeldud matkamiseks ja muudeks vabaõhutegevusteks (sh GPSMAP, eTrex, Colorado, Dakota, Oregon ja Montana, mõne muu hulgas), ei pea te seda tegema leppige selle eellaaditud kaartidega. E
Peatelefoni võimendi kohandatud trükkplaadiga: 8 sammu (piltidega)
Peatelefoni võimendi kohandatud trükkplaadiga: olen juba mõnda aega kõrvaklappide võimendit ehitanud (ja püüdnud seda täiustada). Mõni teist oleks näinud minu eelmisi õilsaid ehitisi. Neile, kes seda pole teinud, olen need allpool linkinud. Oma vanemate ehitiste puhul olen alati kasutanud prototüüpplaati t
Kiirklahvide klaviatuur kohandatud profiilidega: 14 sammu (piltidega)
Kiirklahvide klaviatuur kohandatud profiilidega: loodan, et teil läheb selle pandeemia ajal hästi. Ole ohutu. Ole tugev. #COVID19 Olles tööstusdisainer, pean mul olema juurdepääs rohkem kui 7-8 tarkvarale, mis sisaldavad iga päev Solidworksit, Photoshopi, Illustratorit, Keyshotit, Indesigni jne ja jah, paar g
Ehitage kantav liikumisjälgija (BLE Arduinost kohandatud Android Studio rakendusse): 4 sammu
Ehitage kantav liikumisjälgija (BLE Arduinost kohandatud Android Studio rakendusse): Bluetooth Low Energy (BLE) on väikese energiatarbega Bluetooth -side vorm. Kantavad seadmed, nagu nutikad rõivad, mida ma aitan Predictive Wearis disainida, peavad võimaluse korral piirama energiatarbimist, et pikendada aku kasutusaega, ja sageli kasutama BLE -d