Turinys:

Individualus virtuvės garso identifikatorius: 4 žingsniai
Individualus virtuvės garso identifikatorius: 4 žingsniai

Video: Individualus virtuvės garso identifikatorius: 4 žingsniai

Video: Individualus virtuvės garso identifikatorius: 4 žingsniai
Video: Часть 1 — Аудиокнига «Грозовой перевал» Эмили Бронте (гл. 01–07) 2024, Lapkritis
Anonim
Image
Image
Individualus virtuvės garso identifikatorius
Individualus virtuvės garso identifikatorius

Paskutiniam šio pavasario interaktyvių sistemų kurso projektui sukūrėme realaus laiko sistemą, skirtą nustatyti ir vizualizuoti įprastus virtuvės garsus, naudojant „Support-Vector Machine“klasifikaciją. Sistemą sudaro nešiojamasis kompiuteris garso atrankai/klasifikavimui ir „Arduino“/taškinės matricos ekranas vizualizacijai. Toliau pateikiamas vadovas, kaip sukurti savo šios sistemos versiją garsams iš savo virtuvės.

Mūsų originalus naudojimo atvejis buvo kurtųjų ir neprigirdinčiųjų virtuvės prietaisas, tačiau ši sistema teoriškai galėtų būti pritaikyta atpažinti garsų rinkinį įvairiuose kontekstuose. Virtuvė buvo ideali vieta pradėti, nes ji yra gana tyli ir turi pakankamai paprastų, ryškių garsų.

Šio projekto „GitHub“saugyklą rasite čia.

Prekės

  • „Arduino Leonardo“mikrovaldiklis su antraštėmis
  • KEYESTUDIO 16x16 taškų matricos LED ekranas, skirtas „Arduino“
  • Duonos lentos trumpiklis
  • „Micro-USB to USB 2.0“kabelis
  • Nešiojamasis kompiuteris su „Jupyter Notebook“(„Anaconda“diegimas)

    Pradedančiųjų „Jupyter Notebook“vadovą rasite čia

  • Didelė dalis nesuderintų LEGO kaladėlių sistemos korpusui

    (Bet jūs tikrai galite juos pakeisti bet kuria norima „pasidaryk pats“statybine medžiaga!)

1 žingsnis: virtuvės garso pavyzdžių rinkimas

Virtuvės garso pavyzdžių rinkimas
Virtuvės garso pavyzdžių rinkimas

Paveikslėlis aukščiau: garso duomenys, paimti įrašant šakutę ir peilį, suglaudžiant šį surinkimo procesą

Kad galėtume atpažinti garsus realiuoju laiku, turime pateikti savo mašinų mokymosi modelį su kokybiškais palyginimo pavyzdžiais. Šiam procesui sukūrėme „Jupyter“bloknotą, kurį galite pasiekti čia arba per mūsų projekto „GitHub“saugyklą. Saugykloje taip pat yra pavyzdžių kolekcijos iš dviejų skirtingų virtuvių bandymams.

1.1 veiksmas: nukopijuokite „CollectSamples.ipynb“bloknotą į savo „Jupyter Notebook“katalogą ir atidarykite jį.

1.2 veiksmas: paleiskite kiekvieną langelį po vieną, atkreipdami dėmesį į visas pastabose pateiktas pastabas. Sustokite, kai pasieksite vieną pavadinimą „Pavyzdinis įrašymas“.

PASTABA: šiame nešiojamajame kompiuteryje naudojamos kelios „Python“bibliotekos, ir prieš jas sėkmingai importuojant į projektą reikia įdiegti kiekvieną. Galite tai padaryti rankiniu būdu, nors bibliotekos diegimo „Jupyter Notebook“vadovą rasite čia.

1.3 veiksmas: sukurkite tuščią katalogą, kuriame mėginiai būtų saugomi šio projekto darbo kataloge.

1.4 veiksmas: redaguokite kintamąjį SAMPLES_LOCATION langelyje „Pavyzdinis įrašymas“, kad jis atitiktų tuščio katalogo vietą.

1.5 veiksmas: pridėkite arba pašalinkite tiek garsų, kiek norite prie kintamojo SOUND_LABELS.

Kad įrašymo kodo pavyzdys veiktų, kiekviena šio kintamojo eilutė turi būti atskirta kableliu ir tokia forma:

„ts“: garsas („TargetedSound“, „ts“)

1.6 žingsnis: Kai visos etiketės buvo pridėtos, įvertinkite langelį „Pavyzdžio įrašymas“ir pradėkite mėginių rinkimo procesą. Langelio išvestyje būsite paraginti įvesti trumpą kodą, kurį susiejote su kiekvienu garsu etiketėse (ty „ts“, skirtas „TargetedSound“). Dar nedarykite to.

Žingsnis 1.7: Nuneškite nešiojamąjį kompiuterį į virtuvę ir padėkite jį toje vietoje, kurioje greičiausiai pastatysite gatavą sistemą. Ši vieta turėtų būti centrinė, kad būtų galima rinkti gerą garso įrašą, ir sausa, atokiau nuo galimų išsiliejimų, kad apsaugotumėte savo elektroniką.

1.8 žingsnis: Paruoškite pirmąjį tikslinį garsą. Jei tai orkaitės laikmačio pyptelėjimas, galite nustatyti laikmatį į vieną minutę ir palaukti, kol jis skaičiuos iki maždaug 20 sekundžių, prieš tęsdamas kitą žingsnį.

1.9 žingsnis: Įveskite etiketės kodą į eilutę (t. Y. „Ts“) ir paspauskite „Enter“/„Return“.

Sistema pradės klausytis garso įvykio, kuris skiriasi nuo aplinkos triukšmo. Pajutęs šį garso įvykį, jis pradės įrašinėti, kol pajus, kad garsas kambaryje grįš į aplinkos lygį. Tada jis įrašys garsą kaip 16 bitų WAV failą į katalogą, nurodytą SAMPLES_LOCATION, tokiu formatu:

TargetedSound _#_ užfiksuotas.wav

Šio failo pavadinimo # dalis atitinka jūsų surinkto tikslinio garso pavyzdžių skaičių. Išsaugojus WAV failą, raginimas kartojasi, leidžiant surinkti kelis to paties garso pavyzdžius vienu langelio vykdymu.

NEKEISKITE šio failo pavadinimo. Tai svarbu kitam žingsniui.

1.10 žingsnis: Kartokite 1.8 ir 1.9 veiksmus, kol surinksite 5-10 kiekvieno garso pavyzdžių.

1.11 veiksmas: įveskite „x“, kai baigsite vykdyti.

ĮSPĖJIMAS: Jei tokiu būdu neišeisite iš langelio, nešiojamasis kompiuteris gali sudužti. Tokiu atveju nešiojamojo kompiuterio branduolys turi būti iš naujo nustatytas ir kiekvienas langelis paleidžiamas iš naujo.

1.11 veiksmas (neprivaloma): Patikrinkite atskirų failų WAV duomenis langelyje „Greita garso vizualizacija“ir įsitikinkite, kad užfiksavote visą norimą informaciją.

Keletas patarimų:

  • Įrašykite, kai jūsų virtuvėje tylu.
  • Įrašykite tik vieną garsą vienu metu. Sistema negali atskirti sutapimų garsuose.
  • Stenkitės, kad kiekvienas garso bandymas būtų kuo nuoseklesnis. Tai padės identifikuoti tikslumą.
  • Iš naujo įvertinus įrašymo langelį, failo pavadinimo # reikšmė bus iš naujo nustatyta ir visi esami failai, atitinkantys tą #, bus perrašyti. Mums pasirodė lengviausia įrašyti visus vieno garso pavyzdžius vienu metu, tada sustabdyti įrašymo langelį.
  • Jei sistema nelaiko jūsų tikslinio garso, pabandykite sumažinti THRESHOLD reikšmę (pradžiai nustatykite į 30) ir iš naujo įvertinkite langelį.
  • Jei įrašą suaktyvina kiti garsai, esantys už tikslinio, pabandykite padidinti THRESHOLD reikšmę (pradžiai nustatykite į 30) ir iš naujo įvertinkite langelį.

2 veiksmas: „Arduino“/matricos ekrano paruošimas

„Arduino“/matricos ekrano paruošimas
„Arduino“/matricos ekrano paruošimas
„Arduino“/matricos ekrano paruošimas
„Arduino“/matricos ekrano paruošimas
„Arduino“/matricos ekrano paruošimas
„Arduino“/matricos ekrano paruošimas

Toliau mes nustatysime vizualizacijos sistemą naudodami „Arduino Leonardo“ir „KEYESTUDIO 16x16 LED“taškinės matricos ekraną. Taip išvedama klasifikavimo modelio aptiktų garsų prognozė. Kaip ir anksčiau, visus reikalingus failus pateikėme čia ir projekto „GitHub“saugykloje.

2.1 veiksmas: prijunkite „Arduino“ir LED matricą pagal aukščiau pateiktą schemą. „KEYESTUDIO“apima laidus, skirtus prisijungti prie taškinės matricos, tačiau norint prijungti šiuos laidus prie „Arduino“, reikės duonos lentos trumpiklių

2.2 veiksmas: atidarykite „arduino_listener.ino“naudodami „Ardunio IDE“ir įkelkite jį į „Leonardo“. Jei laidas prijungtas teisingai, turėtumėte pamatyti „klausymo“piktogramą (atrodo kaip „Wi-Fi“), kaip parodyta aukščiau esančiame paveikslėlyje.

2.3 žingsnis: Paruoškite piktogramas, kurias norite rodyti kiekvienam tiksliniam garsui. Kad žinotumėte, kurie šviesos diodai turi užsidegti, piktograma turi būti išsiųsta iš „Arduino“į matricą kaip baitų masyvas. Pavyzdžiui, mūsų kavos puodelio piktograma (paveikslėlyje aukščiau) siunčiama į matricą tokiu formatu:

{

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

Piešėme savo piktogramas naudodami internetinį „Dot2Pic“įrankį su 16 stulpelių, 16 eilučių ir išskleidžiamajame meniu pasirinkta „vienspalvė, 8 pikseliai baite, vertikalus nustatymas“. Mūsų galima rasti „sample_icon_bytes.txt“masyve.

PASTABA: Taip pat gali būti internetinių įrankių, kurie tai gali padaryti automatiškai su įkeltais failais.

2.4 žingsnis: Nubrėžkite kiekvieną piktogramą. Baigę piešti, pasirinkite „Konvertuoti į masyvą“.

2.5 veiksmas: pakeiskite nereikalingas piktogramas, apibrėžtas kodo „arduino_listening.ino“viršuje, kaip norite. Būtinai pridėkite komentarą, kuriame aprašoma piktograma, kad prisimintumėte, kuri yra kuri!

2.6 žingsnis: Įkelkite naują kodą į „Arduino“. Dar neuždarykite failo, mums jo reikės kitam žingsniui.

3 žingsnis: paleiskite klasifikatorių ir nustatykite garsus

Klasifikatoriaus paleidimas ir garsų atpažinimas
Klasifikatoriaus paleidimas ir garsų atpažinimas
Klasifikatoriaus paleidimas ir garsų atpažinimas
Klasifikatoriaus paleidimas ir garsų atpažinimas

Dabar atėjo laikas surinkti sistemą. Klasifikavimo vamzdynas, „Arduino“ryšys ir tiesioginis garso įrašymas atliekamas naudojant vieną „Arduino“nešiojamąjį kompiuterį, kuris buvo pateiktas čia arba kurį galima pasiekti per mūsų projekto „GitHub“saugyklą.

3.1 veiksmas: nukopijuokite „FullPipeline.ipynb“bloknotą į savo „Jupyter Notebook“katalogą ir atidarykite jį.

3.2 veiksmas: paleiskite kiekvieną langelį po vieną, atkreipdami dėmesį į visas pastabose pateiktas pastabas. Produkcijos nesitikima. Sustokite, kai pasieksite langelį pavadinimu „Įkelti treniruočių duomenis“.

3.3 veiksmas: redaguokite kintamąjį SAMPLES_LOCATION_ROOT langelyje „Įkelti mokymo duomenis“į ankstesnio pavyzdinio katalogo pirminį katalogą. Tada pakeiskite kintamąjį SAMPLES_DIR_NAME į katalogo pavadinimą. Taigi, jei buvote nustatę vietą „CollectSamples.ipynb“:

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

Dabar šiuos kintamuosius nustatysite į:

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

Mes tai padarėme, kad netikėtai galima greitai pakeisti klasifikatorių. Norėdami perjungti duomenis, galite perjungti įvairias pavyzdžių kolekcijas.

3.4 žingsnis: Įvertinkite langelį. Turėtumėte matyti, kad kiekviena kolekcija sėkmingai įkelta.

3.5 veiksmas: toliau vykdykite kiekvieną langelį po vieną, atkreipdami dėmesį į visas pastabose pateiktas pastabas.

3.6 žingsnis: Sustokite, kai pasieksite langelį „Messaging Arduino“. Nustatykite nuoseklųjį prievadą, kurį jūsų kompiuteris naudos ryšiui su „Arduino“kintamajame PORT_DEF. Tai galima rasti „Arduino IDE“ir eikite į Įrankiai> Uostas.

Daugiau informacijos rasite čia.

3.8 žingsnis: Iš naujo atidarykite „Arduino IDE“. Tose vietose, kur pakeitėte piktogramas, pažymėkite raidę šalia masyvo vertės, bet NEKEISKITE jos. Žemiau pateiktame pavyzdyje tai yra „g“.

// šiukšlių šalinimaskonstruojamas unsigned char 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,};

3.7 žingsnis: (Grįžimas į nešiojamojo kompiuterio langelį „Messaging Arduino“) Pakeiskite „self.sounds“žodyno etiketes, kad jos atitiktų etiketes, kurias naudojote įrašydami mėginius, ir įsitikinkite, kad kiekviena etiketė atitinka vieną raidę, kurią pažymėjote ankstesniame žingsnis. „Įrašymas“ir „Klausymasis“yra pagrindinės sistemos funkcijos dalis ir neturėtų būti keičiami. NEKEISKITE antrosios raidės, nebent esate tikri, kad atliksite keletą papildomų „Arduino“kodo pakeitimų, nes kitaip sutriks bendravimas su „Arduino“/matrica.

3.8 žingsnis: paleiskite pagrindinę funkciją! Šis kodas paims mokymo duomenis, išskleis pagrindines jo savybes, pateiks juos į duomenų bazę, sukurs klasifikavimo modelį ir pradės klausytis garso įvykių. Kai matysite matricą, ji pasikeis į įrašymo simbolį (kvadratas su apskritimu viduje) ir suskirstys šiuos duomenis į segmentą bei pateks į modelį. Kad ir ką prognozuotų modelis, matricos ekrane pasirodys po kelių sekundžių.

Galite sekti toliau pateiktą langelio išvestį. Pažiūrėkite, kaip tiksliai galite tai gauti!

4 žingsnis: sukurkite LEGO būstą

LEGO būsto kūrimas
LEGO būsto kūrimas
LEGO būsto kūrimas
LEGO būsto kūrimas
LEGO būsto kūrimas
LEGO būsto kūrimas

Tai linksma dalis! Jūs atlikote visus rimtus mašininio mokymosi veiksmus ir sukūrėte visą sistemą iki galo, o dabar kaip atlygį galite žaisti su LEGO. Čia nėra daug detalių. Mes čia ir ten pridėjome mums patinkančius blokus, per daug nesirūpindami bendru dizainu, ir galiausiai likome patenkinti tuo, kaip pavyko.

Leiskite mūsų nuotraukoms tapti įkvėpimu jūsų kūrybiškam būstui, unikaliam jūsų virtuvei. Mes įdėjome „Arduino“ir didžiąją dalį laidų į tuščiavidurį dėklą, tada matricos ekraną pritvirtinome viršūnėmis. Prie ekrano pridėjome šiek tiek popieriaus, kad šiek tiek išsklaidytų šviesą, kuri, mūsų manymu, piktogramas tapo aiškesnė.

Rekomenduojamas: