Sisukord:

Kohandatud köögiheli identifikaator: 4 sammu
Kohandatud köögiheli identifikaator: 4 sammu

Video: Kohandatud köögiheli identifikaator: 4 sammu

Video: Kohandatud köögiheli identifikaator: 4 sammu
Video: Маска подсети – объяснение 2024, November
Anonim
Image
Image
Kohandatud köögiheli identifikaator
Kohandatud köögiheli identifikaator

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

Köögi helinäidiste kogumine
Köögi helinäidiste 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

Arduino/maatriksekraani ettevalmistamine
Arduino/maatriksekraani ettevalmistamine
Arduino/maatriksekraani ettevalmistamine
Arduino/maatriksekraani ettevalmistamine
Arduino/maatriksekraani ettevalmistamine
Arduino/maatriksekraani 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

Klassifikaatori käivitamine ja helide tuvastamine
Klassifikaatori käivitamine ja helide tuvastamine
Klassifikaatori käivitamine ja helide tuvastamine
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

LEGO korpuse loomine
LEGO korpuse loomine
LEGO korpuse loomine
LEGO korpuse loomine
LEGO korpuse loomine
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: