Satura rādītājs:

Pielāgots virtuves skaņas identifikators: 4 soļi
Pielāgots virtuves skaņas identifikators: 4 soļi

Video: Pielāgots virtuves skaņas identifikators: 4 soļi

Video: Pielāgots virtuves skaņas identifikators: 4 soļi
Video: Joka pēc alfabēts / Funny Alphabet 2024, Novembris
Anonim
Image
Image
Pielāgots virtuves skaņas identifikators
Pielāgots virtuves skaņas identifikators

Noslēdzošajam projektam interaktīvo sistēmu kursā šopavasar mēs izveidojām reālā laika sistēmu, lai identificētu un vizualizētu virtuvē izplatītās skaņas, izmantojot Support-Vector Machine klasifikāciju. Sistēmu veido klēpjdators audio paraugu ņemšanai/klasificēšanai un Arduino/punktu matricas displejs vizualizācijai. Tālāk ir sniegts ceļvedis, kā izveidot savu šīs sistēmas versiju skaņām no savas virtuves.

Mūsu sākotnējais lietošanas gadījums bija ierīce nedzirdīgu un vājdzirdīgu cilvēku virtuvei, taču šo sistēmu teorētiski varētu pielāgot, lai identificētu skaņu kopumu dažādos kontekstos. Virtuve bija ideāla vieta, kur sākt, jo tā mēdz būt salīdzinoši klusa un satur saprātīgu daudzumu vienkāršu, atšķirīgu skaņu.

Šī projekta GitHub repozitoriju var atrast šeit.

Piegādes

  • Arduino Leonardo mikrokontrolleris ar galvenēm
  • KEYESTUDIO 16x16 punktu matricas LED displejs Arduino
  • Maizes dēļa džemperis
  • Kabelis no mikro-USB līdz USB 2.0
  • Klēpjdators ar Jupyter piezīmjdatoru (Anaconda instalācija)

    Iesācēju rokasgrāmata par Jupyter Notebook ir atrodama šeit

  • Ievērojams daudzums neatbilstošu LEGO klucīšu sistēmas korpusam

    (Bet tiešām jūs varat tos aizstāt ar jebkuru DIY celtniecības materiālu, kuru vēlaties!)

1. darbība. Virtuves skaņas paraugu vākšana

Virtuves skaņas paraugu vākšana
Virtuves skaņas paraugu vākšana

Iepriekš redzamais attēls: audio dati, kas iegūti, ierakstot dakšiņu un nazi, klikšķinot kopā, izmantojot šo savākšanas procesu

Lai identificētu reāllaika skaņas, mums jāsniedz mūsu mašīnmācīšanās modelis ar kvalitātes piemēriem salīdzināšanai. Šim procesam mēs izveidojām Jupyter piezīmju grāmatiņu, kurai var piekļūt šeit vai caur mūsu projekta GitHub krātuvi. Krātuvē ir arī paraugu kolekcijas no divām dažādām virtuvēm testēšanas nolūkos.

Solis: kopējiet piezīmju grāmatiņu CollectSamples.ipynb savā darba Jupyter piezīmju grāmatiņā un atveriet to.

1.2. Solis: palaidiet katru šūnu pa vienam, pievēršot uzmanību piezīmēm, ko esam norādījuši virsrakstos. Pārtrauciet, kad sasniedzat vienu ar nosaukumu “Ieraksta paraugs”.

PIEZĪME. Šajā piezīmju grāmatiņā tiek izmantotas vairākas Python bibliotēkas, un katra no tām ir jāinstalē, pirms tās var veiksmīgi importēt projektā. Jūs esat laipni aicināti to izdarīt manuāli, lai gan šeit var atrast rokasgrāmatu bibliotēkas instalēšanai Jupyter Notebook.

1.3. Solis: izveidojiet tukšu direktoriju, lai saglabātu paraugus šī projekta darba direktorijā.

1.4. Darbība: rediģējiet mainīgo SAMPLES_LOCATION šūnā "Ieraksta paraugs", lai tas atbilstu tukšā direktorija atrašanās vietai.

1.5. Darbība. Pievienojiet vai noņemiet tik daudz skaņu, cik vēlaties, mainīgajam SOUND_LABELS.

Lai ierakstīšanas koda paraugs darbotos, katra šī mainīgā rinda ir jāatdala ar komatu un šādā formā:

"ts": skaņa ("TargetedSound", "ts")

1.6. Solis: Kad visas etiķetes ir pievienotas, novērtējiet šūnu "Parauga ierakstīšana", sākot paraugu vākšanas procesu. Šūnas izvadā jums tiks piedāvāts ievadīt īso kodu, ko saistījāt ar katru skaņu etiķetēs (t.i., "ts" TargetedSound). Dariet to vēl tikai tagad.

1.7. Solis: Paņemiet klēpjdatoru virtuvē un novietojiet to vietā, kurā, visticamāk, novietosit gatavo sistēmu. Šai vietai vajadzētu būt galvenajai, lai nodrošinātu labu audio savākšanu, un sausai un prom no iespējamām noplūdēm, lai aizsargātu jūsu elektroniku.

1.8. Darbība. Sagatavojiet savu pirmo mērķēto skaņu. Ja tas ir krāsns taimera pīkstiens, varat iestatīt taimeri uz vienu minūti un pagaidīt, līdz tas tiek skaitīts līdz 20 sekundēm, pirms turpināt nākamo darbību.

1.9. Darbība: uzvednē ierakstiet etiķetes kodu (t.i., "ts") un nospiediet taustiņu Enter/Return.

Sistēma sāks klausīties skaņas notikumu, kas atšķiras no apkārtējās vides trokšņa. Uzzinot šo skaņas notikumu, tas sāks ierakstīšanu, līdz uztvers, ka telpā esošā skaņa ir atgriezusies apkārtējā līmenī. Pēc tam audio tiks saglabāts kā 16 bitu WAV fails direktorijā SAMPLES_LOCATION, kas ir šādā formātā:

TargetedSound _#_ notverts.wav

Šī faila nosaukuma # daļa atbilst jūsu savāktās mērķauditorijas skaņas paraugu skaitam. Pēc WAV faila saglabāšanas uzvedne tiks atkārtota, ļaujot vienā šūnas izpildē savākt vairākus vienas skaņas paraugus.

Nemainiet šo faila nosaukumu. Tas ir svarīgi nākamajam solim.

1.10. Solis: Atkārtojiet 1.8. Un 1.9. Darbību, līdz esat savācis 5-10 katras skaņas paraugus.

1.11. Darbība. Kad esat pabeidzis, ievadiet "x", lai izietu no izpildes.

BRĪDINĀJUMS: Ja šādā veidā neiziet no šūnas, piezīmjdators var avarēt. Šajā gadījumā piezīmjdatora kodols ir jāatiestata un katra šūna jāpalaiž no jauna.

Solis 1.11.

Daži padomi:

  • Ierakstiet, kad jūsu virtuve ir klusa.
  • Ierakstiet tikai vienu skaņu vienlaikus. Sistēma nevar atšķirt skaņu pārklāšanos.
  • Mēģiniet padarīt katru skaņas izmēģinājumu pēc iespējas konsekventāku. Tas veicinās identifikācijas precizitāti.
  • Atkārtoti novērtējot šūnu Ierakstīšana, faila nosaukumā tiks atiestatīta # vērtība un pārrakstīti visi esošie faili, kas atbilst šim #. Mēs uzskatījām, ka visvieglāk ir ierakstīt visus vienas skaņas paraugus vienlaikus, pēc tam apturēt ierakstīšanas šūnu.
  • Ja sistēma neuztver jūsu mērķauditorijas skaņu, mēģiniet pazemināt vērtību THRESHOLD (lai sāktu iestatīt uz 30) un atkārtoti novērtējiet šūnu.
  • Ja ierakstu aktivizē citas skaņas ārpus mērķauditorijas, mēģiniet paaugstināt vērtību THRESHOLD (lai sāktu iestatīt uz 30) un atkārtoti novērtējiet šūnu.

2. darbība: Arduino/Matrix displeja sagatavošana

Arduino/Matrix displeja sagatavošana
Arduino/Matrix displeja sagatavošana
Arduino/Matrix displeja sagatavošana
Arduino/Matrix displeja sagatavošana
Arduino/Matrix displeja sagatavošana
Arduino/Matrix displeja sagatavošana

Tālāk mēs izveidosim vizualizācijas sistēmu, izmantojot Arduino Leonardo un KEYESTUDIO 16x16 LED punktu matricas displeju. Tas ir paredzēts, lai izvadītu klasifikācijas modeļa paredzēto skaņu prognozi. Tāpat kā iepriekš, mēs esam nodrošinājuši visus nepieciešamos failus gan šeit, gan projekta GitHub krātuvē.

2.1. Solis: pievienojiet Arduino un LED matricu saskaņā ar iepriekš redzamo diagrammu. KEYESTUDIO ietver vadus, lai izveidotu savienojumu ar punktu matricu, bet, lai savienotu šos vadus ar Arduino, būs nepieciešami maizes dēļa džemperu vadi

2.2. Darbība. Atveriet "arduino_listener.ino", izmantojot Ardunio IDE, un augšupielādējiet to Leonardo. Ja vads ir pievienots pareizi, jums vajadzētu redzēt ikonu "klausīšanās" (izskatās kā Wi-Fi), kā parādīts iepriekš redzamajā attēlā.

2.3. Solis: Sagatavojiet ikonas, kuras vēlaties parādīt katrai mērķa skaņai. Lai uzzinātu, kuras gaismas diodes iedegsies, ikona ir jānosūta no Arduino uz matricu kā baitu masīvs. Piemēram, mūsu kafijas krūzes ikona (attēlā iepriekš) tiek nosūtīta uz matricu šādā formātā:

{

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

Mēs zīmējām savas ikonas, izmantojot tiešsaistes rīku Dot2Pic, nolaižamajā izvēlnē atlasot 16 kolonnas, 16 rindas un “vienkrāsainu, 8 pikseļi baitā, vertikāls iestatījums”. Mūsējie atrodami masīvā "sample_icon_bytes.txt".

PIEZĪME. Var būt arī tiešsaistes rīki, kas to var izdarīt automātiski ar augšupielādētiem failiem.

2.4. Solis: uzzīmējiet katru ikonu. Kad esat pabeidzis zīmēt, atlasiet “Konvertēt uz masīvu”.

Solis: pēc vajadzības nomainiet nevajadzīgās ikonas, kas definētas koda "arduino_listening.ino" augšdaļā. Noteikti pievienojiet komentāru, kurā aprakstīta ikona, lai atcerētos, kura ir!

2.6. Darbība: augšupielādējiet jauno kodu Arduino. Vēl neaizveriet failu, mums tas būs vajadzīgs nākamajai darbībai.

3. darbība: palaidiet klasifikatoru un identificējiet skaņas

Klasifikatora palaišana un skaņu identificēšana
Klasifikatora palaišana un skaņu identificēšana
Klasifikatora palaišana un skaņu identificēšana
Klasifikatora palaišana un skaņu identificēšana

Tagad ir pienācis laiks salikt sistēmu kopā. Klasifikācijas cauruļvads, Arduino komunikācija un tiešraides audio uztveršana tiek veikta, izmantojot vienu Arduino piezīmjdatoru, kas ir pieejams šeit vai kuram var piekļūt, izmantojot mūsu projekta GitHub krātuvi.

3.1. Darbība. Kopējiet piezīmju grāmatiņu FullPipeline.ipynb savā darba Jupyter piezīmju grāmatiņā un atveriet to.

3.2. Solis: palaidiet katru šūnu pa vienam, pievēršot uzmanību piezīmēm, ko esam norādījuši virsrakstos. Izlaide nav gaidāma. Apstājieties, kad sasniedzat šūnu ar nosaukumu “Ielādēt treniņu datus”.

3.3. Darbība: rediģējiet mainīgo SAMPLES_LOCATION_ROOT šūnā "Ielādēt apmācības datus" iepriekšējā parauga direktorija atrašanās vietas vecākdirektorijā. Pēc tam mainiet mainīgo SAMPLES_DIR_NAME uz sava direktorija nosaukumu. Tātad, ja jūs būtu iestatījis atrašanās vietu vietnē CollectSamples.ipynb uz:

SAMPLES_LOCATION = "/Lietotāji/xxxx/Dokumenti/KitchenSoundClassifier/MySamples/NewDir"

Tagad jūs iestatīsit šos mainīgos:

SAMPLES_LOCATION_ROOT = "/Lietotāji/xxxx/Dokumenti/KitchenSoundClassifier/MySamples/" SAMPLES_DIR_NAME = "NewDir"

Mēs to izdarījām, ļaujot ātri mainīt klasifikatoru neprecizitātes gadījumos. Lai pārskaņotu savus datus, varat pārslēgties starp dažādām paraugu kolekcijām.

3.4. Solis: novērtējiet šūnu. Jums vajadzētu redzēt, ka katra kolekcija ir veiksmīgi ielādēta.

3.5. Solis. Turpiniet darbināt katru šūnu pa vienam, pievēršot uzmanību piezīmēm, ko esam norādījuši virsrakstos.

3.6. Darbība: apstājieties, kad sasniedzat šūnu “Ziņojumapmaiņas Arduino”. Nosakiet sērijas portu, ko dators izmantos saziņai ar Arduino, mainīgajā PORT_DEF. To var atrast Arduino IDE un dodoties uz Rīki> Ports.

Plašāku informāciju var atrast šeit.

3.8. Solis: Atveriet savu Arduino IDE. Vietās, kur esat veicis izmaiņas ikonās, atzīmējiet burtu blakus masīva vērtībai, bet NEMAINIET to. Zemāk redzamajā piemērā tas ir "g".

// atkritumu izvešanaconst unsigned 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. Solis: (Atgriešanās piezīmjdatora šūnā “Messaging Arduino”) Mainiet etiķetes vārdnīcā self.sounds, lai tās atbilstu etiķetēm, kuras izmantojāt paraugu ierakstīšanā, pārliecinoties, ka katra etiķete atbilst vienam burtam, kuru atzīmējāt iepriekšējā solis. Ierakstīšana un klausīšanās ir daļa no sistēmas pamatfunkcijas, un tās nevajadzētu mainīt. Nemainiet otro burtu, ja vien nejūtaties pārliecināts, ka veicat dažas papildu izmaiņas arī Arduino kodā, jo pretējā gadījumā tas izjauks saziņu ar Arduino/matricu.

3.8. Solis: palaidiet galveno funkciju! Kods uztvers apmācības datus, izvilks tās galvenās iezīmes, ievadīs tos cauruļvadā, izveidos klasifikācijas modeli un pēc tam sāks klausīties skaņas notikumus. Kad tā pamanīs, matrica mainīsies uz ierakstīšanas simbolu (kvadrāts ar apli iekšpusē), un tas segmentēs šos datus un ievadīs tos modelī. Lai ko modelis paredzētu, matricas displejā parādīsies dažas sekundes vēlāk.

Tālāk varat sekot šūnas izvadam. Skatiet, cik precīzi jūs to varat iegūt!

4. solis: LEGO korpusa izveide

LEGO korpusa izveide
LEGO korpusa izveide
LEGO korpusa izveide
LEGO korpusa izveide
LEGO mājokļa izveide
LEGO mājokļa izveide

Šī ir jautrā daļa! Jūs esat paveicis visus nopietnos mašīnmācīšanās soļus un izveidojis visu pilnīgu sistēmu, un tagad kā atlīdzība varat spēlēt ar LEGO. Šeit nav daudz detalizētu procesu. Mēs vienkārši pievienojām blokus, kas mums patika šeit un tur, neuztraucoties par kopējo dizainu, un galu galā esam apmierināti ar to, kā tas izrādījās.

Ļaujiet mūsu attēliem kalpot par iedvesmu jūsu radošajam mājoklim, kas ir unikāls jūsu virtuvei. Mēs ievietojām Arduino un lielāko daļu vadu dobā korpusā, pēc tam matricas displeju nostiprinājām ar pārkarēm. Mēs uz displeja pievienojām mazliet papīra, lai nedaudz izkliedētu gaismu, kas, mūsuprāt, padarīja ikonas skaidrākas.

Ieteicams: