Orodha ya maudhui:

Kitambulisho cha Sauti ya Jiko la kawaida: Hatua 4
Kitambulisho cha Sauti ya Jiko la kawaida: Hatua 4

Video: Kitambulisho cha Sauti ya Jiko la kawaida: Hatua 4

Video: Kitambulisho cha Sauti ya Jiko la kawaida: Hatua 4
Video: MAIDS WAINGIA BILA VIATU UKUMBINI !! NA WANAVYOJUA KURINGA SASA! |GadsonAndSalome |MCKATOKISHA 2024, Novemba
Anonim
Image
Image
Kitambulisho cha Sauti ya Jikoni
Kitambulisho cha Sauti ya Jikoni

Kwa mradi wetu wa mwisho katika kozi ya mifumo ya maingiliano chemchemi hii, tuliunda mfumo wa wakati halisi wa kutambua na kuibua sauti za kawaida jikoni ukitumia uainishaji wa Mashine ya Vector. Mfumo huo unajumuisha kompyuta ndogo ya sampuli / uainishaji wa sauti, na onyesho la matriki ya Arduino / dot kwa taswira. Ifuatayo ni mwongozo wa kuunda toleo lako la mfumo huu kwa sauti kutoka jikoni yako mwenyewe.

Kesi yetu ya matumizi ya asili ilikuwa kama kifaa cha jikoni la mtu kiziwi na ngumu kusikia, lakini mfumo huu unaweza kinadharia kubadilishwa kutambua seti ya sauti katika hali anuwai. Jikoni ilikuwa mahali pazuri pa kuanza, kwani huwa kimya na ina sauti rahisi, tofauti.

Hifadhi ya GitHub ya mradi huu inaweza kupatikana hapa.

Vifaa

  • Arduino Leonardo Microcontroller mwenye vichwa
  • KEYESTUDIO 16x16 Dot Matrix Kuonyesha LED kwa Arduino
  • Breadboard jumper waya
  • USB-ndogo kwa kebo ya USB 2.0
  • Laptop iliyo na Jupyter Notebook (ufungaji wa Anaconda)

    Mwongozo wa Kompyuta kwa Jupyter Notebook unaweza kupatikana hapa

  • Kiasi kikubwa cha matofali ya LEGO yasiyolingana kwa makazi ya mfumo

    (Lakini kweli unaweza kubadilisha hizi na vifaa vyovyote vya ujenzi vya DIY ungependa!)

Hatua ya 1: Kukusanya Sampuli za Sauti za Jikoni

Kukusanya Sampuli za Sauti za Jikoni
Kukusanya Sampuli za Sauti za Jikoni

Kielelezo hapo juu: Takwimu za sauti zilizochukuliwa kutoka kurekodi uma na kisu zikigongana pamoja kwa kutumia mchakato huu wa ukusanyaji

Ili kutambua sauti za wakati halisi, tunahitaji kusambaza mtindo wetu wa kujifunza mashine na mifano bora ya kulinganisha. Tuliunda daftari la Jupyter kwa mchakato huu, ambao unaweza kupatikana hapa au kupitia hazina ya mradi wa GitHub. Hifadhi pia ina makusanyo ya sampuli kutoka jikoni mbili tofauti kwa madhumuni ya upimaji.

Hatua ya 1.1: Nakili daftari la CollectSamples.ipynb kwenye saraka yako ya Jupyter Notebook na uifungue.

Hatua ya 1.2: Endesha kila seli moja moja, ukizingatia noti zozote ambazo tumetoa kwenye vichwa. Simama unapofikia moja inayoitwa "Mfano wa Kurekodi".

KUMBUKA: Maktaba kadhaa ya chatu hutumiwa katika daftari hii, na kila moja inahitaji usanikishaji kabla ya kuingizwa kwa mafanikio kwenye mradi huo. Unakaribishwa kufanya hivi kwa mikono, ingawa mwongozo wa usanikishaji wa maktaba ndani ya Jupyter Notebook unaweza kupatikana hapa.

Hatua ya 1.3: Unda saraka tupu ya kuhifadhi sampuli zako ndani ya saraka yako ya kazi ya mradi huu.

Hatua ya 1.4: Hariri ubadilishaji wa SAMPLES_LOCATION katika kisanduku cha "Mfano wa Kurekodi" ili ilingane na eneo la saraka yako tupu.

Hatua ya 1.5: Ongeza au ondoa sauti nyingi upendavyo kwa ubadilishaji wa SOUND_LABELS.

Ili sampuli ya kurekodi sampuli ifanye kazi, kila mstari wa mabadiliko haya lazima utenganishwe na koma na ya fomu ifuatayo:

'ts': Sauti ("Sauti Iliyolengwa", "ts")

Hatua ya 1.6: Wakati lebo zote zimeongezwa, kutathmini kiini cha "Mfano wa Kurekodi" na kuanza mchakato wa ukusanyaji wa sampuli. Katika pato la seli, utahamasishwa kuingiza nambari fupi uliyoihusisha na kila sauti kwenye lebo (yaani, "ts" ya TargetedSound). Usifanye hivi bado.

Hatua ya 1.7: Chukua kompyuta yako ndogo kuingia jikoni na uiweke kwenye eneo ambalo unaweza kuweka mfumo uliomalizika. Eneo hili linapaswa kuwa katikati ya mkusanyiko mzuri wa sauti, na kavu na mbali na utaftaji wowote unaowezekana kulinda umeme wako.

Hatua ya 1.8: Andaa sauti yako ya kwanza inayolengwa. Ikiwa hii ni beep timer beep, unaweza kuweka timer kwa dakika moja na subiri ihesabu hadi sekunde 20 au hivyo kabla ya kuendelea na hatua inayofuata.

Hatua ya 1.9: Andika msimbo wa lebo ndani ya haraka (yaani, "ts"), na bonyeza Enter / Return.

Mfumo utaanza kusikiliza hafla ya sauti tofauti na kelele iliyoko ya chumba. Baada ya kuhisi tukio hili la sauti, itaanza kurekodi hadi itakaposikia sauti kwenye chumba imerudi katika viwango vya kawaida. Kisha itahifadhi sauti kama faili ya WAV 16-bit kwenye saraka iliyoainishwa katika SAMPLES_LOCATION katika muundo:

TargetedSound _ # _ imefungwa.wav

Sehemu # ya jina hili la faili inalingana na idadi ya sampuli za sauti lengwa uliyokusanya. Baada ya faili ya WAV kuokolewa, haraka itarudia, hukuruhusu kukusanya sampuli kadhaa za sauti sawa katika utekelezaji mmoja wa seli.

USibadilishe jina hili la faili. Ni muhimu kwa hatua inayofuata.

Hatua ya 1.10: Rudia hatua 1.8 na 1.9 mpaka uwe umekusanya sampuli 5-10 za kila sauti.

Hatua ya 1.11: Ingiza "x" ukimaliza kutoka kwa utekelezaji.

ONYO: Kushindwa kuacha kiini kwa njia hii kunaweza kusababisha daftari kuanguka. Katika kesi hii, punje ya daftari lazima ibadilishwe na kila seli iendeshe tena kutoka juu.

Hatua ya 1.11 (Hiari): Angalia data ya WAV ya faili za kibinafsi kwenye seli ya "Sauti ya Haraka ya Sauti" ili kuhakikisha kuwa umepata habari zote unazohitaji.

Vidokezo kadhaa:

  • Rekodi wakati jikoni yako iko kimya.
  • Rekodi sauti moja tu mara moja. Mfumo hauwezi kutofautisha mwingiliano wa sauti.
  • Jaribu kufanya kila jaribio la sauti iwe thabiti iwezekanavyo. Hii itasaidia usahihi wa kitambulisho.
  • Kutathmini upya seli ya Kurekodi itaweka upya # thamani katika jina la faili na kuandika tena faili zilizopo zinazolingana na #. Tuligundua ni rahisi kurekodi sampuli zote za sauti moja mara moja, kisha simama Kiini cha Kurekodi.
  • Ikiwa mfumo hauchukui sauti yako lengwa, jaribu kushusha thamani ya THRESHOLD (iliyowekwa hadi 30 kuanza) na upime tena seli.
  • Ikiwa kurekodi kunasababishwa na sauti zingine nje ya ile lengwa, jaribu kuinua thamani ya THRESHOLD (iliyowekwa hadi 30 kuanza) na upime tena seli.

Hatua ya 2: Kuandaa Onyesho la Arduino / Matrix

Kuandaa Maonyesho ya Arduino / Matrix
Kuandaa Maonyesho ya Arduino / Matrix
Kuandaa Maonyesho ya Arduino / Matrix
Kuandaa Maonyesho ya Arduino / Matrix
Kuandaa Maonyesho ya Arduino / Matrix
Kuandaa Maonyesho ya Arduino / Matrix

Ifuatayo, tutaanzisha mfumo wa taswira kwa kutumia Arduino Leonardo na KEYESTUDIO 16x16 onyesho la matone ya nukta ya LED. Hii ni kutoa utabiri wa mfano wa uainishaji wa sauti zilizogunduliwa. Kama hapo awali, tumetoa faili zote zinazohitajika hapa na katika hazina ya mradi ya GitHub.

Hatua 2.1: Funga tumbo la Arduino na LED kulingana na mchoro hapo juu. KEYESTUDIO inajumuisha waya kuungana na matrix yao ya nukta, lakini waya za jumper za ubao wa mkate zitahitajika kuunganisha waya hizi kwa Arduino

Hatua ya 2.2: Fungua "arduino_listener.ino" ukitumia Ardunio IDE na uipakie kwa Leonardo. Ikiwa imeunganishwa vizuri, unapaswa kuona ikoni ya "kusikiliza" (inaonekana kama Wi-Fi) kama inavyoonyeshwa kwenye picha hapo juu.

Hatua ya 2.3: Andaa aikoni ambazo ungependa kuonyesha kwa kila sauti yako lengwa. Ili kujua ni taa zipi za kuwasha, ikoni lazima itumwe kutoka Arduino hadi kwenye tumbo kama safu ya kahawia. Kwa mfano, ikoni yetu ya kikombe cha kahawa (kwenye picha hapo juu) inatumwa kwa tumbo kwa muundo huu:

{

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

Tulichora aikoni zetu kwa kutumia zana ya mkondoni ya Dot2Pic, na nguzo 16, safu 16, na "monochromatic, saizi 8 kwa baiti, mpangilio wa wima" uliochaguliwa kutoka kwenye menyu kunjuzi. Yetu yanaweza kupatikana katika safu ya "sample_icon_bytes.txt".

KUMBUKA: Kunaweza pia kuwa na zana za mkondoni ambazo zinaweza kufanya hivyo kiatomati na faili zilizopakiwa.

Hatua ya 2.4: Chora kila ikoni. Unapomaliza kuchora, chagua "Badilisha hadi safu".

Hatua ya 2.5: Badilisha ikoni ambazo hazijahitajika zilizoainishwa juu ya msimbo wa "arduino_listening.ino" kama inavyotakiwa. Hakikisha kuongeza maoni kuelezea ikoni ili ukumbuke ambayo ni ipi!

Hatua ya 2.6: Pakia nambari mpya kwa Arduino. Usifunge faili bado, tutahitaji hatua inayofuata.

Hatua ya 3: Kuendesha Kitambulishaji na Sauti za Kutambua

Kuendesha Kiainishaji na Sauti za Kutambua
Kuendesha Kiainishaji na Sauti za Kutambua
Kuendesha Kiainishaji na Sauti za Kutambua
Kuendesha Kiainishaji na Sauti za Kutambua

Sasa ni wakati wa kuweka mfumo pamoja. Bomba la uainishaji, mawasiliano ya Arduino, na upigaji wa sauti moja kwa moja yote hufanywa kupitia daftari moja ya Arduino, ambayo imetolewa hapa au inaweza kupatikana kupitia hazina ya mradi wa GitHub.

Hatua ya 3.1: Nakili daftari ya FullPipeline.ipynb kwenye saraka yako ya Jupyter Notebook na uifungue.

Hatua ya 3.2: Endesha kila seli moja moja, ukizingatia noti zozote ambazo tumetoa kwenye vichwa. Hakuna pato linalotarajiwa. Simama unapofika kwenye seli inayoitwa "Pakia Takwimu za Mafunzo".

Hatua ya 3.3: Hariri ubadilishaji wa SAMPLES_LOCATION_ROOT katika kiini cha "Pakia Takwimu za Mafunzo" kwa saraka ya mzazi ya eneo la saraka ya sampuli ya mapema. Kisha, badilisha ubadilishaji wa SAMPLES_DIR_NAME kuwa jina la saraka yako. Kwa hivyo ikiwa ungeweka eneo katika CollectSamples.ipynb kwa:

SAMPLES_LOCATION = "/ Watumiaji / xxxx / Nyaraka / KitchenSoundClassifier / MySamples / NewDir"

Sasa ungeweka vigeuzi hivi kuwa:

SAMPLES_LOCATION_ROOT = "/ Watumiaji / xxxx / Nyaraka / KitchenSoundClassifier / MySamples /" SAMPLES_DIR_NAME = "NewDir"

Tulifanya hii kuruhusu mabadiliko ya haraka kwa kiainishaji katika hali ya usahihi. Unaweza kubadilisha kati ya makusanyo tofauti ya sampuli ili kurekebisha data yako.

Hatua ya 3.4: Tathmini seli. Unapaswa kuona kila mkusanyiko umepakiwa kwa mafanikio.

Hatua ya 3.5: Endelea kuendesha kila seli moja moja, ukizingatia noti zozote ambazo tumetoa kwenye vichwa.

Hatua ya 3.6: Simama unapofika kwenye kiini cha "Kutuma Ujumbe Arduino". Fafanua bandari ya serial ambayo kompyuta yako itatumia kwa mawasiliano na Arduino katika tofauti ya PORT_DEF. Hii inaweza kupatikana katika Arduino IDE na kwenda kwenye Zana> Bandari.

Habari zaidi inaweza kupatikana hapa.

Hatua ya 3.8: Fungua tena IDE yako ya Arduino. Katika maeneo ambayo ulifanya mabadiliko kwenye aikoni, andika barua karibu na thamani ya safu, lakini USIibadilishe. Katika mfano hapa chini, hii ni "g".

// taka takataka isiyosainiwa 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,};

Hatua ya 3.7: (Kurudi kwenye kiini cha "Ujumbe Arduino" cha Daftari) Badilisha lebo katika kamusi ya self.sounds ili kulinganisha lebo ulizotumia kurekodi sampuli zako, kuhakikisha kila lebo inalingana na herufi moja uliyobainisha hapo awali hatua. "Kurekodi" na "Kusikiliza" zote ni sehemu ya utendaji wa mfumo wa msingi na hazipaswi kubadilishwa. USibadilishe barua ya pili isipokuwa unajisikia ujasiri kufanya mabadiliko kadhaa ya ziada kwa nambari ya Arduino pia, kwani itaharibu mawasiliano na Arduino / matrix vinginevyo.

Hatua ya 3.8: Endesha kazi kuu! Nambari itachukua data ya mafunzo, itatoa vitu vyake muhimu, kuwalisha kwenye bomba, kujenga muundo wa uainishaji, kisha uanze kusikiliza hafla za sauti. Wakati inahisi moja, utaona mabadiliko ya tumbo kuwa alama ya kurekodi (mraba na mduara ndani) na itagawanya data hii na kuipatia mfano. Chochote kinachotabiriwa na mfano kitaonekana sekunde chache baadaye kwenye onyesho la tumbo.

Unaweza kufuata kwenye pato la seli hapa chini. Angalia jinsi unavyoweza kupata usahihi!

Hatua ya 4: Kuunda Nyumba ya LEGO

Kuunda Nyumba ya LEGO
Kuunda Nyumba ya LEGO
Kuunda Nyumba ya LEGO
Kuunda Nyumba ya LEGO
Kuunda Nyumba ya LEGO
Kuunda Nyumba ya LEGO

Hii ndio sehemu ya kufurahisha! Umefanya hatua zote kubwa za kujifunza mashine na kupata mfumo mzima wa mwisho hadi mwisho, na sasa unacheza na LEGO kama tuzo. Hakuna mchakato mwingi wa maelezo hapa. Tuliongeza tu vizuizi tulivyopenda hapa na pale bila kuwa na wasiwasi sana juu ya muundo wa jumla, na tuliishia kufurahi na jinsi ilivyotokea.

Ruhusu picha zetu kutumika kama msukumo kwa nyumba yako mwenyewe ya ubunifu kipekee kwa jikoni yako. Tuliweka Arduino na wiring nyingi katika kesi ya mashimo, kisha tukapata onyesho la tumbo hapo juu na overhangs. Tuliongeza karatasi kidogo juu ya onyesho ili kueneza taa kidogo ambayo tulihisi imefanya ikoni iwe wazi zaidi.

Ilipendekeza: