Բովանդակություն:

Պատվերով խոհանոցի ձայնի նույնացուցիչ ՝ 4 քայլ
Պատվերով խոհանոցի ձայնի նույնացուցիչ ՝ 4 քայլ

Video: Պատվերով խոհանոցի ձայնի նույնացուցիչ ՝ 4 քայլ

Video: Պատվերով խոհանոցի ձայնի նույնացուցիչ ՝ 4 քայլ
Video: Wildberries/Ինչպես կատարել գնումներ Wildberries-ից ավելի մատչելի 2024, Նոյեմբեր
Anonim
Image
Image
Պատվերով խոհանոցի ձայնի նույնացուցիչ
Պատվերով խոհանոցի ձայնի նույնացուցիչ

Այս գարնանը ինտերակտիվ համակարգերի դասընթացի մեր վերջնական ծրագրի համար մենք ստեղծեցինք խոհանոցում սովորական ձայների նույնականացման և պատկերացման իրական ժամանակի համակարգ `Աջակցություն-վեկտոր մեքենա դասակարգման միջոցով: Համակարգը բաղկացած է նոութբուքի նմուշառման/դասակարգման նոութբուքից և տեսողականացման համար 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/Matrix ցուցադրման պատրաստում
Arduino/Matrix ցուցադրման պատրաստում
Arduino/Matrix ցուցադրման պատրաստում
Arduino/Matrix ցուցադրման պատրաստում
Arduino/Matrix ցուցադրման պատրաստում
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 բնակարանաշինություն
LEGO բնակարանաշինություն
LEGO բնակարանաշինություն
LEGO բնակարանաշինություն
LEGO բնակարանաշինություն
LEGO բնակարանաշինություն

Սա զվարճալի մասն է: Դուք կատարել եք մեքենայական ուսուցման բոլոր լուրջ քայլերը և գործի դրել ամբողջ ծայրից ծայր համակարգը, և այժմ դուք կարող եք խաղալ LEGO- ների հետ որպես պարգև: Այստեղ մանրամասնեցնելու գործընթաց չկա: Մենք պարզապես ավելացրեցինք բլոկներ, որոնք մեզ դուր էին գալիս այստեղ և այնտեղ ՝ առանց չափազանց մտահոգվելու ընդհանուր դիզայնի վրա, և վերջում մենք գոհ մնացինք այն բանից, թե ինչպես ստացվեց:

Թույլ տվեք, որ մեր նկարները ոգեշնչեն ձեր խոհանոցին բնորոշ ձեր սեփական ստեղծագործական տան համար: Մենք տեղադրեցինք Arduino- ն և էլեկտրագծերի մեծ մասը խոռոչի պատյանում, այնուհետև ամրացրեցինք վերևում գտնվող մատրիցային ցուցադրումը `շեղումներով: Մենք մի փոքր թուղթ ավելացրեցինք էկրանին `լույսը փոքր -ինչ ցրելու համար, ինչը, մեր կարծիքով, սրբապատկերներն ավելի պարզ դարձրեց:

Խորհուրդ ենք տալիս: