Բովանդակություն:
- Պարագաներ
- Քայլ 1. Խոհանոցի ձայնի նմուշների հավաքում
- Քայլ 2. Arduino/Matrix ցուցադրման պատրաստում
- Քայլ 3. Գործարկեք դասակարգիչը և նույնականացրեք հնչյունները
- Քայլ 4: Ստեղծեք LEGO բնակարան
Video: Պատվերով խոհանոցի ձայնի նույնացուցիչ ՝ 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Այս գարնանը ինտերակտիվ համակարգերի դասընթացի մեր վերջնական ծրագրի համար մենք ստեղծեցինք խոհանոցում սովորական ձայների նույնականացման և պատկերացման իրական ժամանակի համակարգ `Աջակցություն-վեկտոր մեքենա դասակարգման միջոցով: Համակարգը բաղկացած է նոութբուքի նմուշառման/դասակարգման նոութբուքից և տեսողականացման համար Arduino/dot matrix ցուցադրումից: Ստորև բերված է ձեր սեփական խոհանոցից հնչող հնչյունների համար այս համակարգի ձեր սեփական տարբերակը ստեղծելու ուղեցույց:
Մեր սկզբնական կիրառումը եղել է որպես սարք խուլ և լսող մարդկանց համար խոհանոցի համար, բայց այս համակարգը տեսականորեն կարող է հարմարվել `տարբեր համատեքստերում հնչյունների մի շարք նույնականացնելու համար: Խոհանոցը իդեալական վայր էր սկսելու համար, քանի որ այն համեմատաբար հանգիստ է և պարունակում է պարզ, հստակ հնչյունների ողջամիտ քանակ:
Այս նախագծի GitHub պահոցը կարելի է գտնել այստեղ:
Պարագաներ
- Arduino Leonardo միկրոկառավարիչ ՝ վերնագրերով
- KEYESTUDIO 16x16 Dot Matrix LED էկրան Arduino- ի համար
- Breadboard jumper մետաղալար
- Micro-USB- ից USB 2.0 մալուխ
-
Նոթբուք Jupyter Notebook- ով (Anaconda տեղադրում)
Jupyter Notebook- ի սկսնակների ուղեցույցը կարող եք գտնել այստեղ:
-
Համակարգի բնակարանային LEGO աղյուսների զգալի քանակ
(Բայց իսկապես կարող եք դրանք փոխարինել ցանկացած DIY շինանյութով, որը կցանկանայիք):
Քայլ 1. Խոհանոցի ձայնի նմուշների հավաքում
Վերևի նկար. Աուդիո տվյալներ, որոնք վերցված են պատառաքաղի և դանակի ձայնը հավաքելով այս հավաքման գործընթացի միջոցով:
Իրական ժամանակի հնչյունները նույնականացնելու համար մենք պետք է մեր մեքենայական ուսուցման մոդելին տրամադրենք որակյալ օրինակներ `համեմատության համար: Այս գործընթացի համար մենք ստեղծեցինք Jupyter նոթատետր, որին կարելի է ծանոթանալ այստեղ կամ մեր նախագծի GitHub շտեմարանի միջոցով: Պահեստը պարունակում է նաև փորձարկման նպատակով երկու տարբեր խոհանոցների ընտրանքային հավաքածուներ:
Քայլ 1.1. Պատճենեք CollectSamples.ipynb նոթատետրը ձեր աշխատող Jupyter Notebook գրացուցակում և բացեք այն:
Քայլ 1.2. Գործարկեք յուրաքանչյուր բջիջ մեկ առ մեկ ՝ ուշադրություն դարձնելով վերնագրերում մեր տրամադրած գրառումներին: Կանգնեք, երբ հասնեք «Նմուշի ձայնագրման» վերնագրին:
Նշում. Այս նոթատետրում օգտագործվում են Python- ի մի քանի գրադարաններ, և յուրաքանչյուրը պահանջում է տեղադրում, նախքան դրանք հաջողությամբ ներմուծվելը նախագծում: Դուք կարող եք դա անել ձեռքով, չնայած Jupyter Notebook- ում գրադարանի տեղադրման ուղեցույցը կարող եք գտնել այստեղ:
Քայլ 1.3. Ստեղծեք դատարկ գրացուցակ ՝ ձեր ծրագրի ձեր աշխատանքային գրացուցակում ձեր նմուշները պահելու համար:
Քայլ 1.4. Խմբագրեք «SAMPLES_LOCATION» փոփոխականը «Նմուշի ձայնագրում» բջիջում `ձեր դատարկ գրացուցակի գտնվելու վայրին համապատասխանելու համար:
Քայլ 1.5. SOUND_LABELS փոփոխականին ավելացրեք կամ հեռացրեք այնքան ձայն, որքան ցանկանում եք:
Որպեսզի գրանցման ծածկագրի օրինակն աշխատի, այս փոփոխականի յուրաքանչյուր տող պետք է առանձնացված լինի ստորակետով և հետևյալ ձևով.
'ts': Sound ("TargetedSound", "ts")
Քայլ 1.6. Երբ բոլոր պիտակները ավելացվեն, գնահատելով «Նմուշի ձայնագրում» բջիջը `սկսեք ընտրանքի հավաքման գործընթացը: Բջջի ելքի մեջ ձեզ կառաջարկվի պիտակների մեջ յուրաքանչյուր ձայնի հետ կապած կարճ կոդը (այսինքն ՝ «ts» TargetedSound- ի համար) մուտքագրել: Մի արեք սա դեռ:
Քայլ 1.7. Վերցրեք ձեր նոութբուքը խոհանոց և տեղադրեք այն տարածքում, որտեղ, ամենայն հավանականությամբ, կտեղադրեք պատրաստի համակարգը: Այս վայրը պետք է կենտրոնացած լինի լավ աուդիո հավաքածուի համար և չորանա և հեռու լինի հնարավոր արտահոսքերից ՝ ձեր էլեկտրոնիկան պաշտպանելու համար:
Քայլ 1.8. Պատրաստեք ձեր առաջին նպատակային ձայնը: Եթե սա վառարանի ժամաչափի ազդանշան է, կարող եք ժամաչափը սահմանել մեկ րոպեի վրա և սպասել, մինչև այն հետհաշվի մինչև 20 վայրկյան, մինչև հաջորդ քայլին անցնելը:
Քայլ 1.9. Մուտքագրեք պիտակի կոդը հուշման մեջ (այսինքն ՝ «ts») և սեղմեք Enter/Return:
Համակարգը կսկսի լսել սենյակի շրջապատող աղմուկից տարբերվող ձայնային իրադարձություն: Այս ձայնային իրադարձությունը զգալուց հետո այն կսկսի ձայնագրվել, մինչև սենյակում ձայնի զգացումը չվերադառնա շրջապատի մակարդակին: Այնուհետև ձայնը կպահի որպես 16-բիթանոց WAV ֆայլ ՝ SAMPLES_LOCATION- ում նշված ձևաչափով գրացուցակում ՝
TargetedSound _#_ գրավված. Ալիք
Այս ֆայլի անվան # մասը համապատասխանում է ձեր հավաքած թիրախավորված ձայնի նմուշների թվին: WAV ֆայլը պահվելուց հետո հուշումը կկրկնվի ՝ թույլ տալով մի բջջի մեկ կատարման մեջ հավաքել նույն ձայնի մի քանի նմուշ:
ՄԻ փոխեք այս ֆայլի անունը: Դա կարևոր է հաջորդ քայլի համար:
Քայլ 1.10. Կրկնեք 1.8 և 1.9 քայլերը, մինչև չհավաքեք յուրաքանչյուր ձայնի 5-10 նմուշ:
Քայլ 1.11. Մուտքագրեք «x» - ն ավարտելուց հետո `կատարումից դուրս գալու համար:
ARԳՈՇԱՈՄ. Այս կերպ բջջից դուրս չգալը կարող է հանգեցնել նոթբուքի վթարի: Այս դեպքում, Notebook- ի միջուկը պետք է վերականգնվի և յուրաքանչյուր բջիջ նորից աշխատի վերևից:
Քայլ 1
Որոշ խորհուրդներ.
- Գրանցեք, երբ ձեր խոհանոցը հանգիստ է:
- Միանգամից ձայնագրեք միայն մեկ ձայն: Համակարգը չի կարող տարբերել հնչյունների համընկնումը:
- Փորձեք հնարավորինս հետևողական դարձնել յուրաքանչյուր առողջ փորձություն: Սա կօգնի նույնականացման ճշգրտությանը:
- Ձայնագրման բջիջի վերագնահատումը կվերականգնի # արժեքը ֆայլի անվան մեջ և կգրագրի այդ # -ին համապատասխանող բոլոր առկա ֆայլերը: Մենք գտանք, որ ամենահեշտն է միանգամից ձայնագրել բոլոր նմուշները, այնուհետև դադարեցնել Ձայնագրման բջիջը:
- Եթե համակարգը չի ընդունում ձեր նպատակային ձայնը, փորձեք իջեցնել THRESHOLD արժեքը (սկզբի համար սահմանել 30) և վերագնահատել բջիջը:
- Եթե ձայնագրությունը գործարկվում է թիրախային հնչյունից դուրս այլ հնչյունների պատճառով, փորձեք բարձրացնել THRESHOLD արժեքը (սկզբի համար սահմանել 30) և վերագնահատել բջիջը:
Քայլ 2. Arduino/Matrix ցուցադրման պատրաստում
Հաջորդը, մենք ստեղծելու ենք արտացոլման համակարգը `օգտագործելով Arduino Leonardo և KEYESTUDIO 16x16 LED կետային մատրիցային էկրան: Սա պետք է հանգեցնի դասակարգված մոդելի կանխատեսված հայտնաբերված հնչյունների կանխատեսմանը: Ինչպես նախկինում, մենք տրամադրել ենք բոլոր անհրաժեշտ ֆայլերը ինչպես այստեղ, այնպես էլ նախագծի GitHub պահոցում:
Քայլ 2.1. Միացրեք Arduino և LED մատրիցը `ըստ վերևի դիագրամի: KEYESTUDIO- ն ներառում է լարեր `իրենց կետային մատրիցային միանալու համար, սակայն այս լարերը Arduino- ին միացնելու համար կպահանջվեն տախտակի թռիչքային լարեր:
Քայլ 2.2. Բացեք «arduino_listener.ino» - ն ՝ օգտագործելով Ardunio IDE- ն և վերբեռնեք այն Լեոնարդոյին: Եթե ճիշտ լարված եք, ապա պետք է տեսնեք «լսող» պատկերակը (Wi-Fi- ի տեսք ունի), ինչպես ցույց է տրված վերևում պատկերում:
Քայլ 2.3. Պատրաստեք այն պատկերակները, որոնք կցանկանայիք ցուցադրել ձեր թիրախային յուրաքանչյուր հնչյունի համար: Իմանալու համար, թե որ LED- ները պետք է լուսավորվեն, պատկերակը պետք է Arduino- ից մատրից ուղարկվի որպես բայթ զանգված: Օրինակ, մեր սուրճի բաժակի պատկերակը (վերևում պատկերված) մատրից է ուղարկվում այս ձևաչափով.
{
0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf7, 0xfb, 0xfb, 0xfb, 0xfb, 0xf7, 0x0f, 0xdf, 0x1f, 0xff, 0xff};
Մենք նկարեցինք մեր սրբապատկերները ՝ օգտագործելով Dot2Pic առցանց գործիքը ՝ 16 սյունակ, 16 տող և բացվող ընտրացանկից ընտրված «մոնոխրոմատիկ, 8 պիքսել մեկ բայթ, ուղղահայաց կարգավորում»: Մերը կարելի է գտնել «sample_icon_bytes.txt» զանգվածում:
ՆՇՈՄ. Կարող են լինել նաև առցանց գործիքներ, որոնք կարող են դա անել ինքնաբերաբար վերբեռնված ֆայլերով:
Քայլ 2.4. Նկարեք յուրաքանչյուր պատկերակ: Նկարչությունն ավարտելուց հետո ընտրեք «Փոխարկել զանգվածին»:
Քայլ 2.5. Փոխարինեք «arduino_listening.ino» ծածկագրի վերևում նշված անհարկի սրբապատկերները ՝ ըստ ցանկության: Համոզվեք, որ ավելացրեք պատկերակը նկարագրող մեկնաբանություն, որպեսզի հիշեք, թե որն է:
Քայլ 2.6. Նոր կոդը վերբեռնեք Arduino- ում: Դեռ մի փակեք ֆայլը, այն մեզ անհրաժեշտ կլինի հաջորդ քայլին:
Քայլ 3. Գործարկեք դասակարգիչը և նույնականացրեք հնչյունները
Հիմա ժամանակն է համակարգը միավորել: Դասակարգման խողովակաշարը, Arduino հաղորդակցությունը և կենդանի ձայնագրումը կատարվում են մեկ Arduino նոթատետրի միջոցով, որը տրամադրվել է այստեղ կամ հասանելի է մեր նախագծի GitHub շտեմարանի միջոցով:
Քայլ 3.1. Պատճենեք FullPipeline.ipynb նոթատետրը ձեր աշխատող Jupyter Notebook գրացուցակում և բացեք այն:
Քայլ 3.2. Գործարկեք յուրաքանչյուր բջիջ մեկ առ մեկ ՝ ուշադրություն դարձնելով վերնագրերում մեր տրամադրած գրառումներին: Արդյունք չի սպասվում: Կանգնեք, երբ հասնեք «Բեռնել ուսուցման տվյալները» վերնագրով բջիջին:
Քայլ 3.3. Խմբագրեք SAMPLES_LOCATION_ROOT փոփոխականը «Բեռնել ուսուցման տվյալները» բջիջում ՝ ձեր նախկին ընտրանքային գրացուցակի գտնվելու վայրի մայր գրացուցակում: Այնուհետև SAMPLES_DIR_NAME փոփոխականը փոխեք ձեր գրացուցակի անվան: Այսպիսով, եթե Դուք տեղադրված լինեիք CollectSamples.ipynb- ի գտնվելու վայրը.
SAMPLES_LOCATION = "/Users/xxxx/Documents/KitchenSoundClassifier/MySamples/NewDir"
Այժմ դուք կարող եք սահմանել այս փոփոխականները.
SAMPLES_LOCATION_ROOT = "/Օգտվողներ/xxxx/Փաստաթղթեր/KitchenSoundClassifier/MySamples/" SAMPLES_DIR_NAME = "NewDir"
Մենք դա թույլ տվեցինք արագ փոփոխություններ կատարել դասակարգչի մեջ անճշտության դեպքում: Դուք կարող եք անցնել տարբեր ընտրանքային հավաքածուների միջև ՝ ձեր տվյալները կարգավորելու համար:
Քայլ 3.4. Գնահատեք բջիջը: Դուք պետք է հաջողությամբ բեռնված յուրաքանչյուր հավաքածու տեսնեք:
Քայլ 3.5. Շարունակեք գործարկել յուրաքանչյուր բջիջ մեկ առ մեկ ՝ ուշադրություն դարձնելով վերնագրերում մեր տրամադրած գրառումներին:
Քայլ 3.6. Կանգնեք, երբ հասնեք «Messaging Arduino» բջիջին: Սահմանեք սերիական պորտը, որը ձեր համակարգիչը կօգտագործի Arduino- ի հետ PORT_DEF փոփոխականում: Սա կարելի է գտնել Arduino IDE- ում և գնալ Գործիքներ> Պորտ:
Լրացուցիչ տեղեկություններ կարելի է գտնել այստեղ:
Քայլ 3.8. Վերաբացեք ձեր Arduino IDE- ն: Այն վայրերում, որտեղ դուք փոփոխություններ եք կատարել սրբապատկերների վրա, նշեք զանգվածի արժեքի կողքին գտնվող տառը, բայց ՄԻ փոխեք այն: Ստորև բերված օրինակում սա «g» է:
// աղբի հեռացում </ b> անստորագիր նշան 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. (Վերադառնալով նոթատետրի «Messaging Arduino» բջիջ) քայլ. «Ձայնագրումը» և «Լսելը» երկուսն էլ հիմնական համակարգի գործառույթի մի մասն են և չպետք է փոխվեն: Մի փոխեք երկրորդ տառը, եթե վստահ չեք զգում, որ Arduino ծածկագրում նույնպես կան մի քանի լրացուցիչ փոփոխություններ, քանի որ հակառակ դեպքում դա կխաթարի Arduino/մատրիցայի հետ հաղորդակցությունը:
Քայլ 3.8. Գործարկեք հիմնական գործառույթը: Կոդը կգրավի վերապատրաստման տվյալները, կհեռացնի դրա հիմնական առանձնահատկությունները, դրանք կներառի խողովակաշարի մեջ, կկառուցի դասակարգման մոդել, այնուհետև կսկսի լսել ձայնային իրադարձություններ: Երբ մեկը զգում է, կտեսնեք, որ մատրիցը փոխվում է ձայնագրման խորհրդանիշի (քառակուսի ՝ ներսում շրջանով), և այն կբաժանի այս տվյալները և դրանք կներառի մոդելի մեջ: Ինչ էլ որ գուշակի մոդելը, մի քանի վայրկյան անց կցուցադրվի մատրիցային էկրանին:
Ստորև կարող եք հետևել բջիջի ելքին: Տեսեք, թե որքան ճշգրիտ կարող եք այն ստանալ:
Քայլ 4: Ստեղծեք LEGO բնակարան
Սա զվարճալի մասն է: Դուք կատարել եք մեքենայական ուսուցման բոլոր լուրջ քայլերը և գործի դրել ամբողջ ծայրից ծայր համակարգը, և այժմ դուք կարող եք խաղալ LEGO- ների հետ որպես պարգև: Այստեղ մանրամասնեցնելու գործընթաց չկա: Մենք պարզապես ավելացրեցինք բլոկներ, որոնք մեզ դուր էին գալիս այստեղ և այնտեղ ՝ առանց չափազանց մտահոգվելու ընդհանուր դիզայնի վրա, և վերջում մենք գոհ մնացինք այն բանից, թե ինչպես ստացվեց:
Թույլ տվեք, որ մեր նկարները ոգեշնչեն ձեր խոհանոցին բնորոշ ձեր սեփական ստեղծագործական տան համար: Մենք տեղադրեցինք Arduino- ն և էլեկտրագծերի մեծ մասը խոռոչի պատյանում, այնուհետև ամրացրեցինք վերևում գտնվող մատրիցային ցուցադրումը `շեղումներով: Մենք մի փոքր թուղթ ավելացրեցինք էկրանին `լույսը փոքր -ինչ ցրելու համար, ինչը, մեր կարծիքով, սրբապատկերներն ավելի պարզ դարձրեց:
Խորհուրդ ենք տալիս:
Խոհանոցի ժամաչափ `4 քայլ
Kitchen Timer: Սա պարունակում է gen4-uLCD-35DT, որը կօգտագործվի որպես երկրորդային ցուցադրում Raspberry Pi նախագծի ՝ Kitchen Timer- ի համար: Այն օգտակար ծրագիր է մայրերի և խոհարարության սիրահարների մեծ մասի համար: Սա կարող է օգտագործվել ճաշ պատրաստելու ժամանակ վերահսկելու համար
Խոհանոցի կափարիչի ձեր լուսադիոդների փոխարինում. 4 քայլ
Ձեր խոհանոցի կափարիչի լուսադիոդների փոխարինում. Երբ մենք վերանորոգեցինք մեր տունը, խոհանոցը նախագծված էր որպես մեր կենտրոնական կտոր: Մենք վայելում ենք ընկերություն անելը, և մեր խոհանոցը միշտ այնտեղ էր, որտեղ բոլորը միասին էին: Վստահ եմ, որ շատերը կարող են հարաբերություններ հաստատել: Լինելով այն, որ ես ընտանիքի խոհարարն եմ
Ձայնի/ձայնի մակարդակի ցուցիչ `10 քայլ
Ձայնի/ձայնի մակարդակի ցուցիչ. Այս նախագծում ես ձեզ ցույց կտամ, թե ինչպես կարելի է կառուցել ձայնի մակարդակի պարզ ցուցիչ `օգտագործելով գործառնական ուժեղացուցիչներ: Նշում. Հարցեր տալու համար այցելեք իմ կայքը ՝ Հարցրեք փորձագետին: Օգտակար լրացուցիչ տեսանյութեր. Հացի տախտակի վրա տեղադրված մոդելավորված շրջան (Proto
Պատրաստեք խոհանոցի ժամաչափ MakerBit- ով ՝ 13 քայլ
Ստեղծեք խոհանոցի ժամաչափ MakerBit- ով. Այս նախագիծը ուսումնասիրում է, թե ինչպես է աշխատում խոհանոցային ժամաչափը `պատրաստելով այն: Շատ վաղուց ամենաօգտակար սարքերը մեխանիկական էին: Երեխաները կարող են առանձնացնել իրերը, որպեսզի տեսնեն ներսի մասերը և ուսումնասիրեն, թե ինչպես են դրանք շարժվում: Խոհանոցային ժամաչափի նման ժամանակակից էլեկտրոնային գործիքներն են
Ունիվերսալ ականջակալ/ականջակալների ձայնի ձայնի կառավարում. 8 քայլ (նկարներով)
Ունիվերսալ ականջակալ/ականջակալների ձայնի ձայնի կառավարում. Այսպիսով, ես Հոնկոնգից գնեցի PMP (դյուրակիր մեդիա նվագարկիչ), որպեսզի կարողանամ խաղալ NES- ի խաղերը ինքնաթիռի էմուլյատորի հետ, որտեղ հարմար էր: Երկար ճանապարհորդությունները, թռիչքները, սպասասրահները և այլն այն վայրերն են, որոնք ես սիրում եմ ժամանակ սպանել շարժական միջոցներով, բայց