Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Pagkolekta ng Mga Sampol ng Tunog sa Kusina
- Hakbang 2: Paghahanda ng Arduino / Matrix Display
- Hakbang 3: Pagpapatakbo ng Classifier at Pagkilala ng Mga Tunog
- Hakbang 4: Lumilikha ng isang Pabahay sa LEGO
Video: Pasadyang Pagkakakilala ng Tunog sa Kusina: 4 na Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Para sa aming pangwakas na proyekto sa isang kurso ng mga interactive na system ngayong tagsibol, lumikha kami ng isang real-time na system para sa pagkilala at pag-visualize ng mga karaniwang tunog sa kusina gamit ang pag-uuri ng Suporta-Vector Machine. Ang system ay binubuo ng isang laptop para sa audio sampling / klasipikasyon, at isang Arduino / dot matrix display para sa visualization. Ang sumusunod ay isang gabay para sa paglikha ng iyong sariling bersyon ng system na ito para sa mga tunog mula sa iyong sariling kusina.
Ang aming orihinal na kaso ng paggamit ay bilang isang aparato para sa kusina ng isang bingi at mahirap pakinggan, ngunit ang sistemang ito ay maaaring iakma ayon sa teoretikal upang makilala ang isang hanay ng mga tunog sa iba't ibang mga konteksto. Ang kusina ay isang mainam na lugar upang magsimula, sapagkat madalas itong maging tahimik at naglalaman ng isang makatwirang dami ng simple, magkakaibang mga tunog.
Ang isang Repository ng GitHub para sa proyektong ito ay matatagpuan dito.
Mga gamit
- Arduino Leonardo Microcontroller na may mga header
- KEYESTUDIO 16x16 Dot Matrix LED Display para sa Arduino
- Breadboard jumper wire
- Micro-USB hanggang USB 2.0 cable
-
Isang laptop na may Jupyter Notebook (pag-install ng Anaconda)
Ang gabay ng isang nagsisimula sa Jupyter Notebook ay matatagpuan dito
-
Ang isang malaking halaga ng hindi tugma na mga brick ng LEGO para sa pabahay ng system
(Ngunit talagang maaari mong palitan ang mga ito sa anumang materyal na gusali ng DIY na nais mo!)
Hakbang 1: Pagkolekta ng Mga Sampol ng Tunog sa Kusina
Larawan Sa Itaas: Ang data ng audio na kinuha mula sa pagrekord ng isang tinidor at kutsilyo na clinking magkasama gamit ang proseso ng koleksyon na ito
Upang makilala ang mga tunog ng real-time, kailangan naming ibigay sa aming modelo ng pag-aaral ng machine ang mga halimbawa ng kalidad para sa paghahambing. Lumikha kami ng isang Jupyter notebook para sa prosesong ito, na maaaring ma-access dito o sa pamamagitan ng repository ng GitHub ng aming proyekto. Naglalaman din ang imbakan ng mga sample na koleksyon mula sa dalawang magkakaibang kusina para sa mga layunin sa pagsubok.
Hakbang 1.1: Kopyahin ang notebook ng CollectSamples.ipynb sa iyong gumaganang direktoryo ng Jupyter Notebook at buksan ito.
Hakbang 1.2: Isa-isahin ang bawat cell, binibigyang pansin ang anumang mga tala na ibinigay namin sa mga heading. Huminto kapag naabot mo ang isang pamagat na "Sample Recording".
TANDAAN: Maraming mga library ng Python ang ginagamit sa notebook na ito, at ang bawat isa ay nangangailangan ng pag-install bago sila matagumpay na mai-import sa proyekto. Malugod kang gawin ito nang manu-mano, kahit na ang isang gabay para sa pag-install ng library sa loob ng Jupyter Notebook ay matatagpuan dito.
Hakbang 1.3: Lumikha ng isang walang laman na direktoryo upang maiimbak ang iyong mga sample sa loob ng iyong gumaganang direktoryo para sa proyektong ito.
Hakbang 1.4: I-edit ang variable ng SAMPLES_LOCATION sa cell na "Pag-record ng Sample" upang tumugma sa lokasyon ng iyong walang laman na direktoryo.
Hakbang 1.5: Magdagdag o mag-alis ng maraming mga tunog hangga't gusto mo sa variable na SOUND_LABELS.
Upang gumana ang sample code ng pag-record, ang bawat linya ng variable na ito ay dapat na ihiwalay ng isang kuwit at ng sumusunod na form:
'ts': Tunog ("TargetedSound", "ts")
Hakbang 1.6: Kapag naidagdag ang lahat ng mga label, sinusuri ang cell na "Pag-record ng Sample" sa pagsisimula ng proseso ng sample ng koleksyon. Sa output ng cell, sasabihan ka na maglagay ng maikling code na naiugnay mo sa bawat tunog sa mga label (ibig sabihin, "ts" para sa TargetedSound). Huwag lang gawin ito.
Hakbang 1.7: Dalhin ang iyong laptop sa kusina at ilagay ito sa lugar na malamang na mailagay mo ang natapos na system. Ang lokasyon na ito ay dapat na sentro para sa mahusay na koleksyon ng audio, at tuyo at malayo sa anumang posibleng mga ligaw upang maprotektahan ang iyong electronics.
Hakbang 1.8: Ihanda ang iyong unang naka-target na tunog. Kung ito ay isang oven timer beep, maaari mong itakda ang timer sa isang minuto at hintayin itong bumilang hanggang 20 segundo o higit pa bago magpatuloy sa susunod na hakbang.
Hakbang 1.9: I-type ang code ng label sa prompt (ibig sabihin, "ts"), at pindutin ang Enter / Return.
Magsisimulang makinig ang system para sa isang tunog na kaganapan na naiiba mula sa paligid na ingay ng silid. Sa pag-sensing ng tunog na kaganapan na ito, magsisimula itong mag-record hanggang sa maramdaman nito ang tunog sa silid ay bumalik sa mga antas ng paligid. Pagkatapos ay mai-save ang audio bilang isang 16-bit WAV file sa direktoryo na nakilala sa SAMPLES_LOCATION sa format:
TargetedSound _ # _ capture.wav
Ang # na bahagi ng filename na ito ay tumutugma sa bilang ng mga sample ng naka-target na tunog na iyong nakolekta. Matapos ang WAV file ay nai-save, ang prompt ay ulitin, na nagbibigay-daan sa iyo upang mangolekta ng maraming mga sample ng parehong tunog sa isang solong pagpapatupad ng cell.
HUWAG baguhin ang filename na ito. Ito ay mahalaga para sa susunod na hakbang.
Hakbang 1.10: Ulitin ang mga hakbang 1.8 at 1.9 hanggang sa nakolekta mo ang 5-10 na mga sample ng bawat tunog.
Hakbang 1.11: Ipasok ang "x" kapag natapos upang lumabas sa pagpapatupad.
BABALA: Ang pagkabigo na umalis sa cell sa ganitong paraan ay maaaring maging sanhi ng pag-crash ng Notebook. Sa kasong ito, dapat i-reset ang kernel ng Notebook at muling tumakbo ang bawat cell mula sa itaas.
Hakbang 1.11 (Opsyonal): Suriin ang data ng WAV ng mga indibidwal na file sa cell na "Quick Sound Visualization" upang matiyak na nakunan mo ang lahat ng nais na impormasyon.
Ilang payo:
- Itala kung ang iyong kusina ay tahimik.
- I-record lamang ang isang tunog nang sabay-sabay. Hindi makilala ng system ang overlap sa mga tunog.
- Subukang gawing pare-pareho hangga't maaari ang bawat tunog na pagsubok. Makakatulong ito sa kawastuhan ng pagkakakilanlan.
- Ang muling pagsusuri sa cell ng Pagre-record ay ire-reset ang # na halaga sa filename at patungan ang anumang mga mayroon nang mga file na tumutugma sa #. Natagpuan namin ang pinakamadaling i-record ang lahat ng mga sample ng isang tunog nang sabay-sabay, pagkatapos ay itigil ang cell ng Pagre-record.
- Kung ang system ay hindi nakakakuha ng iyong naka-target na tunog, subukang babaan ang halagang THRESHOLD (nakatakda sa 30 upang simulan) at suriin muli ang cell.
- Kung ang pag-record ay na-trigger ng iba pang mga tunog sa labas ng naka-target, subukang itaas ang halagang THRESHOLD (itakda sa 30 upang simulan) at suriin muli ang cell.
Hakbang 2: Paghahanda ng Arduino / Matrix Display
Susunod, i-set up namin ang visualization system gamit ang isang Arduino Leonardo at KEYESTUDIO 16x16 LED dot matrix display. Ito ay upang maipalabas ang hula ng modelo ng pag-uuri ng mga napansin na tunog. Tulad ng dati, naibigay namin ang lahat ng kinakailangang mga file pareho dito at sa repository ng GitHub ng proyekto.
Hakbang 2.1: Wire ang Arduino at LED matrix ayon sa diagram sa itaas. Ang KEYESTUDIO ay may kasamang mga wires upang kumonekta sa kanilang dot matrix, ngunit kakailanganin ang mga wire ng jumper ng breadboard upang ikonekta ang mga wires na ito sa Arduino
Hakbang 2.2: Buksan ang "arduino_listener.ino" gamit ang Ardunio IDE at i-upload ito sa Leonardo. Kung nag-wire nang tama, dapat mong makita ang icon na "pakikinig" (parang Wi-Fi) tulad ng ipinakita sa imaheng nasa itaas.
Hakbang 2.3: Ihanda ang mga icon na nais mong ipakita para sa bawat isa sa iyong mga target na tunog. Upang malaman kung aling mga LED ang iilaw, ang icon ay dapat na ipadala mula sa Arduino sa matrix bilang isang byte array. Halimbawa, ang aming icon ng tasa ng kape (sa imahe sa itaas) ay ipinadala sa matrix sa format na ito:
{
0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf, 0xf, 0xf 0xfb, 0xf7, 0x0f, 0xdf, 0x1f, 0xff, 0xff};
Ginuhit namin ang aming mga icon gamit ang tool na online ng Dot2Pic, na may 16 na haligi, 16 na hanay, at "monochromatic, 8 pixel bawat byte, patayong setting" na napili mula sa dropdown na menu. Ang atin ay matatagpuan sa "sample_icon_bytes.txt" na array.
TANDAAN: Maaaring may mga online tool din na maaaring gawin ito nang awtomatiko sa mga nai-upload na file.
Hakbang 2.4: Iguhit ang bawat icon. Kapag natapos ang pagguhit, piliin ang "I-convert sa array".
Hakbang 2.5: Palitan ang mga hindi kinakailangang mga icon na tinukoy sa tuktok ng "arduino_listening.ino" code ayon sa ninanais. Tiyaking magdagdag ng isang puna na naglalarawan sa icon upang maalala mo kung alin ang alinman!
Hakbang 2.6: Mag-upload ng bagong code sa Arduino. Huwag lamang isara ang file, kakailanganin namin ito para sa susunod na hakbang.
Hakbang 3: Pagpapatakbo ng Classifier at Pagkilala ng Mga Tunog
Ngayon ay oras na upang pagsamahin ang sistema. Ang pipeline ng pag-uuri, komunikasyon ng Arduino, at live na pagkuha ng audio ay tapos na sa pamamagitan ng isang solong notebook ng Arduino, na ibinigay dito o maaaring ma-access sa pamamagitan ng repository ng GitHub ng aming proyekto.
Hakbang 3.1: Kopyahin ang FullPipeline.ipynb notebook sa iyong gumaganang direktoryo ng Jupyter Notebook at buksan ito.
Hakbang 3.2: Isa-isahin ang bawat cell, binibigyang pansin ang anumang mga tala na ibinigay namin sa mga heading. Walang inaasahang output. Huminto kapag naabot mo ang cell na may pamagat na "Load the Training Data".
Hakbang 3.3: I-edit ang variable ng SAMPLES_LOCATION_ROOT sa cell na "I-load ang Data ng Pagsasanay" sa direktoryo ng magulang ng lokasyon ng iyong naunang sample na direktoryo. Pagkatapos, baguhin ang variable ng SAMPLES_DIR_NAME sa pangalan ng iyong direktoryo. Kaya kung itinakda mo ang lokasyon sa CollectSamples.ipynb sa:
SAMPLES_LOCATION = "/ Users / xxxx / Documents / KitchenSoundClassifier / MySamples / NewDir"
Itatakda mo ngayon ang mga variable na ito sa:
SAMPLES_LOCATION_ROOT = "/ Users / xxxx / Documents / KitchenSoundClassifier / MySamples /" SAMPLES_DIR_NAME = "NewDir"
Pinayagan namin ang mabilis na mga pagbabago sa classifier sa mga kaso ng kawastuhan. Maaari kang lumipat sa pagitan ng iba't ibang mga sample na koleksyon upang ibagay ang iyong data.
Hakbang 3.4: Suriin ang cell. Dapat mong makita ang bawat koleksyon nang matagumpay na na-load.
Hakbang 3.5: Magpatuloy na patakbuhin ang bawat cell isa-isa, bigyang pansin ang anumang mga tala na ibinigay namin sa mga heading.
Hakbang 3.6: Huminto kapag naabot mo ang "Messaging Arduino" cell. Tukuyin ang serial port na gagamitin ng iyong computer para sa komunikasyon sa Arduino sa variable na PORT_DEF. Maaari itong matagpuan sa Arduino IDE at pagpunta sa Tools> Port.
Mahahanap ang karagdagang impormasyon dito.
Hakbang 3.8: Muling buksan ang iyong Arduino IDE. Sa mga lugar kung saan ka gumawa ng mga pagbabago sa mga icon, gumawa ng tala ng liham sa tabi ng halaga ng array, ngunit HUWAG baguhin ito. Sa halimbawa sa ibaba, ito ay "g".
// basura pagtataponconst 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,};
Hakbang 3.7: (Bumabalik sa cell na "Messaging Arduino" ng Notebook) Palitan ang mga label sa self.sounds na diksyunaryo upang itugma ang mga label na ginamit mo sa pagtatala ng iyong mga sample, tinitiyak na ang bawat label ay tumutugma sa solong titik na iyong nabanggit sa nakaraang hakbang Ang "pagrekord" at "Pakikinig" ay parehong bahagi ng pangunahing pag-andar ng system at hindi dapat baguhin. HUWAG baguhin ang pangalawang liham maliban kung sa tingin mo ay tiwala sa paggawa ng ilang dagdag na mga pagbabago sa Arduino code rin, dahil maguguluhan nito ang komunikasyon sa Arduino / matrix kung hindi man.
Hakbang 3.8: Patakbuhin ang pangunahing pagpapaandar! Kukunin ng code ang data ng pagsasanay, kunin ang mga pangunahing tampok nito, pakainin sila sa pipeline, bumuo ng isang modelo ng pag-uuri, pagkatapos ay simulang makinig para sa mga tunog na kaganapan. Kapag naintindihan nito ang isa, makikita mo ang pagbabago ng matrix sa isang simbolo ng pagrekord (parisukat na may bilog sa loob) at hahatiin nito ang data na ito at pakainin ito sa modelo. Anuman ang hinulaan ng modelo ay lalabas ng ilang segundo sa paglaon sa display ng matrix.
Maaari mong sundin kasama ang output ng cell sa ibaba. Tingnan kung gaano ka tumpak na makukuha mo ito!
Hakbang 4: Lumilikha ng isang Pabahay sa LEGO
Ito ang nakakatuwang bahagi! Nagawa mo na ang lahat ng mga seryosong hakbang sa pag-aaral ng makina at nakuha at napatakbo ang buong end-to-end na system, at ngayon nakakalaro ka sa mga LEGO bilang isang gantimpala. Walang gaanong proseso upang idetalye dito. Nagdagdag lamang kami ng mga bloke na gusto namin dito at doon nang hindi masyadong nag-aalala tungkol sa pangkalahatang disenyo, at natapos kami na masaya sa naging resulta nito.
Pahintulutan ang aming mga larawan na magsilbing isang inspirasyon para sa iyong sariling malikhaing pabahay na natatangi sa iyong kusina. Inilagay namin ang Arduino at karamihan ng mga kable sa isang guwang na kaso, pagkatapos ay na-secure ang display ng matrix sa itaas na may mga overhang. Nagdagdag kami ng kaunting papel sa ibabaw ng display upang maikalat ang ilaw nang bahagya na sa tingin namin ay naging mas malinaw ang mga icon.
Inirerekumendang:
Ang Charger ng Laptop Gumagawa ng Tunog ng Tunog ng Beep: 3 Mga Hakbang
Ang Charger ng Laptop Gumagawa ng Isang Tunog ng Beep Naayos: Ito ay orihinal na na-publish sa: https://highvoltages.co/tips-and-tricks/l laptop-charger-making-a-beep-sound/ bisitahin ang www.highvoltages.co/blogs para sa higit pa .LAPTOP CHARGER Gumagawa NG BEEP SOUND: Ang iyong charger ng laptop ay gumagawa ng tunog ng beep at hindi ito char
Mag-ukit ng isang Circuit Board Na May Mga Pantustos sa Kusina: 6 na Hakbang (na may Mga Larawan)
Mag-ukit ng isang Circuit Board Na Mayroong Mga Pantustos sa Kusina: Habang nag-tinker ka sa mga proyekto sa electronics, mabilis mong mapagtanto na mas kumplikado ang mga ito, mas mahirap silang magkakasama. Karaniwan nang nangangahulugan ito ng paglikha ng pugad ng daga ng mga indibidwal na wires, na maaaring malaki at mahirap i-troubleshoot.
Arduino Bascis - Mga tunog ng tunog at tono: 5 Hakbang
Arduino Bascis - Nagpe-play ng Mga Tunog at Tono: Nais kong maglaro ng ilang mga sound effects, at napagtanto na ito ay isa sa mga napabayaang lugar pagdating sa mga tutorial. Kahit sa Youtube, may kakulangan ng magagandang mga tutorial sa mga Arduino at tunog, kaya, ako ang mabuting tao, nagpasyang ibahagi ang aking kaalaman
Pakikipag-usap sa Computer (Pasadyang Mga Tunog sa Windows): 7 Mga Hakbang
Pakikipag-usap sa Computer (Pasadyang Mga Tunog sa Windows): Sa pagtuturo na ito magtuturo ako sa iyo kung hindi mo pa alam, kung paano gumawa ng isang computer na makikipag-usap sa iyo sa maraming mga okasyon depende sa iyong ginagawa sa iyong computer sa buong araw
Gumawa ng Mga Pasadyang Tunog ng System (Windows Vista Lamang): 4 na Hakbang
Gumawa ng Mga Pasadyang Sistema ng Mga Tunog (Windows Vista Lamang): Sa Instructable na Ito, tuturuan kita kung paano gumawa ng mga kanta sa iTunes sa tunog ng system