- భాగాలు అవసరం
- సర్క్యూట్ రేఖాచిత్రం
- ఆర్డునో స్పీచ్ రికగ్నిషన్ కోసం డేటాసెట్ను సృష్టిస్తోంది
- మోడల్ శిక్షణ
- ఆర్డునో వాయిస్ రికగ్నిషన్ కోసం ఆర్డునో కోడ్
స్పీచ్ రికగ్నిషన్ టెక్నాలజీ ఆటోమేషన్లో చాలా ఉపయోగకరంగా ఉంటుంది, ఇది మీకు పరికరాలపై ఉచిత నియంత్రణను ఇవ్వడమే కాకుండా సిస్టమ్కు భద్రతను జోడిస్తుంది. వాయిస్ కంట్రోల్డ్ గాడ్జెట్లను తయారు చేయడమే కాకుండా, వివిధ వైకల్యాలతో బాధపడుతున్న ప్రజలకు ప్రసంగ గుర్తింపు కూడా గణనీయమైన సహాయాన్ని అందిస్తుంది.
మునుపటి ప్రాజెక్టులలో మేము ఆర్డునో బేస్డ్ టెక్స్ట్ టు స్పీచ్ (టిటిఎస్) కన్వర్టర్ మరియు వాయిస్ కంట్రోల్డ్ లైట్లను నిర్మించాము. ఇప్పుడు ఈ ప్రాజెక్ట్లో, ఎడ్జ్ ఇంపల్స్ స్టూడియోని ఉపయోగించి ' లైట్ ఆన్' , ' లైట్ ఆఫ్' మరియు ' నోయిస్ ' అనే మూడు ఆదేశాలతో స్పీచ్ రికగ్నిషన్ మోడల్కు శిక్షణ ఇవ్వడానికి యంత్ర అభ్యాసాన్ని ఉపయోగించబోతున్నాం. ఎడ్జ్ ఇంపల్స్ అనేది ఆన్లైన్ మెషిన్ లెర్నింగ్ ప్లాట్ఫామ్, ఇది ఎంబెడెడ్ మెషిన్ లెర్నింగ్తో తదుపరి తరం తెలివైన పరికర పరిష్కారాలను రూపొందించడానికి డెవలపర్లను అనుమతిస్తుంది. దగ్గు మరియు శబ్దం శబ్దాలను వేరు చేయడానికి మేము గతంలో ఎడ్జ్ ఇంపల్స్ స్టూడియోని ఉపయోగించాము.
భాగాలు అవసరం
హార్డ్వేర్
- Arduino 33 BLE సెన్స్
- LED
- జంపర్ వైర్లు
సాఫ్ట్వేర్
- ఎడ్జ్ ఇంపల్స్ స్టూడియో
- Arduino IDE
మేము ఆర్డునో 33 బిఎల్ఇ సెన్స్ పై వివరణాత్మక ట్యుటోరియల్ ని కవర్ చేసాము.
సర్క్యూట్ రేఖాచిత్రం
Arduino ఉపయోగించి ఈ వాయిస్ గుర్తింపు కోసం సర్క్యూట్ రేఖాచిత్రం క్రింద ఇవ్వబడింది. Arduino 33 BLE కొరకు ఫ్రిట్జింగ్ భాగం అందుబాటులో లేదు, కాబట్టి రెండూ ఒకే పిన్అవుట్ ఉన్నందున నేను Arduino నానోను ఉపయోగించాను.
LED యొక్క పాజిటివ్ సీసం Arduino 33 BLE సెన్స్ యొక్క డిజిటల్ పిన్ 5 తో అనుసంధానించబడి ఉంది మరియు నెగటివ్ సీసం Arduino యొక్క GND పిన్తో అనుసంధానించబడి ఉంది.
ఆర్డునో స్పీచ్ రికగ్నిషన్ కోసం డేటాసెట్ను సృష్టిస్తోంది
ఇక్కడ ఎడ్జ్ ఇంపల్స్ స్టూడియో మా స్పీచ్ రికగ్నిషన్ మోడల్కు శిక్షణ ఇవ్వడానికి ఉపయోగించబడుతుంది. ఎడ్జ్ ఇంపల్స్ స్టూడియోలో ఒక మోడల్కు శిక్షణ ఇవ్వడం ఇతర మెషీన్ లెర్నింగ్ ఫ్రేమ్వర్క్లపై మెషిన్ లెర్నింగ్ మోడళ్లకు శిక్షణ ఇవ్వడం లాంటిది. శిక్షణ కోసం, మెషీన్ లెర్నింగ్ మోడల్ యొక్క మొదటి దశ డేటాసెట్ను సేకరించడం, అది మేము గుర్తించదలిచిన డేటా నమూనాలను కలిగి ఉంటుంది.
మా వాయిస్ కమాండ్తో LED ని నియంత్రించడమే మా లక్ష్యం కాబట్టి, మేము అన్ని ఆదేశాలు మరియు శబ్దం కోసం వాయిస్ నమూనాలను సేకరించాలి, తద్వారా ఇది వాయిస్ ఆదేశాలు మరియు ఇతర శబ్దాల మధ్య తేడాను గుర్తించగలదు.
మేము “ LED ON ”, “ LED OFF ” మరియు “ శబ్దం ” అనే మూడు తరగతులతో డేటాసెట్ను సృష్టిస్తాము. డేటాసెట్ను సృష్టించడానికి, ఎడ్జ్ ఇంపల్స్ ఖాతాను సృష్టించండి, మీ ఖాతాను ధృవీకరించండి, ఆపై కొత్త ప్రాజెక్ట్ను ప్రారంభించండి. మీరు మీ మొబైల్, మీ ఆర్డునో బోర్డ్ ఉపయోగించి నమూనాలను లోడ్ చేయవచ్చు లేదా మీరు మీ అంచు ప్రేరణ ఖాతాలో డేటాసెట్ను దిగుమతి చేసుకోవచ్చు. మీ మొబైల్ ఫోన్ను ఉపయోగించడం ద్వారా మీ ఖాతాలోకి నమూనాలను లోడ్ చేయడానికి సులభమైన మార్గం. దాని కోసం మొబైల్ను ఎడ్జ్ ఇంపల్స్తో కనెక్ట్ చేయండి.
మొబైల్ ఫోన్ను కనెక్ట్ చేయడానికి ' పరికరాలు ' పై క్లిక్ చేసి, ఆపై ' కొత్త పరికరాన్ని కనెక్ట్ చేయండి' పై క్లిక్ చేయండి.
ఇప్పుడు తదుపరి విండోలో 'మీ మొబైల్ ఫోన్ను వాడండి' పై క్లిక్ చేయండి మరియు QR కోడ్ కనిపిస్తుంది. మీ మొబైల్ ఫోన్తో QR కోడ్ను స్కాన్ చేయండి లేదా QR కోడ్లో ఇచ్చిన URL ని నమోదు చేయండి.
ఇది మీ ఫోన్ను ఎడ్జ్ ఇంపల్స్ స్టూడియోతో కనెక్ట్ చేస్తుంది.
మీ ఫోన్ ఎడ్జ్ ఇంపల్స్ స్టూడియోతో కనెక్ట్ కావడంతో, మీరు ఇప్పుడు మీ నమూనాలను లోడ్ చేయవచ్చు. నమూనాలను లోడ్ చేయడానికి ' డేటా సముపార్జన' పై క్లిక్ చేయండి. ఇప్పుడు డేటా సముపార్జన పేజీలో లేబుల్ పేరును నమోదు చేయండి, మైక్రోఫోన్ను సెన్సార్గా ఎంచుకోండి మరియు నమూనా పొడవును నమోదు చేయండి. ' ప్రారంభ నమూనా' పై క్లిక్ చేయండి, మీ పరికరం 2 సెకన్ల నమూనాను సంగ్రహిస్తుంది. వివిధ పరిస్థితులలో మొత్తం 10 నుండి 12 వాయిస్ నమూనాలను రికార్డ్ చేయండి.
మొదటి తరగతి కోసం నమూనాలను అప్లోడ్ చేసిన తరువాత ఇప్పుడు మార్పు లేబుల్ను సెట్ చేసి, ' లైట్ ఆఫ్' మరియు 'శబ్దం' తరగతి కోసం నమూనాలను సేకరించండి.
ఈ నమూనాలు మాడ్యూల్ శిక్షణ కోసం, తదుపరి దశలలో, మేము పరీక్ష డేటాను సేకరిస్తాము. టెస్ట్ డేటా శిక్షణ డేటాలో కనీసం 30% ఉండాలి, కాబట్టి 'శబ్దం' యొక్క 4 నమూనాలను మరియు 'లైట్ ఆన్' మరియు 'లైట్ ఆఫ్' కోసం 4 నుండి 5 నమూనాలను సేకరించండి.
మోడల్ శిక్షణ
మా డేటాసెట్ సిద్ధంగా ఉన్నందున, ఇప్పుడు మేము డేటా కోసం ఒక ప్రేరణను సృష్టించవచ్చు. దాని కోసం ' ప్రేరణను సృష్టించు ' పేజీకి వెళ్ళండి. 1000 ms విండో పరిమాణం యొక్క డిఫాల్ట్ సెట్టింగులను 1200ms మరియు 500 ms విండో పెరుగుదల 50ms కు మార్చండి. ప్రతి 58ms ప్రారంభించి, మా డేటా ఒకేసారి 1.2 సెకన్లు ప్రాసెస్ చేయబడుతుందని దీని అర్థం.
ఇప్పుడు ' క్రియేట్ ఇంపల్స్' పేజీలో ' యాడ్ ప్రాసెసింగ్ బ్లాక్' పై క్లిక్ చేయండి. తదుపరి విండోలో ఆడియో (MFCC) బ్లాక్ను ఎంచుకోండి. ఆ క్లిక్ తరువాత ' ఒక అభ్యాస బ్లాక్ జోడించండి' మరియు ఎంచుకోండి న్యూరల్ నెట్వర్క్ (Keras) బ్లాక్. అప్పుడు ' సేవ్ ఇంపల్స్' పై క్లిక్ చేయండి.
తదుపరి దశలో MFCC పేజీకి వెళ్లి, ఆపై 'ఫీచర్స్ సృష్టించు' పై క్లిక్ చేయండి. ఇది మా అన్ని ఆడియో విండోస్ కోసం MFCC బ్లాక్లను ఉత్పత్తి చేస్తుంది.
ఆ ప్రయాణంలో 'తర్వాత NN వర్గీకరణ' 'ఎగువ కుడి మూలలో మూడు చుక్కలు క్లిక్ పేజీ మరియు న్యూరల్ నెట్వర్క్ సెట్టింగ్లు' మరియు 'ఎంచుకోండి Keras (నిపుణుడు) మోడ్కు మారండి' .
కింది కోడ్తో అసలైనదాన్ని మార్చండి మరియు ' కనిష్ట విశ్వాస రేటింగ్' ను ' 0.70' గా మార్చండి. అప్పుడు ' స్టార్ట్ ట్రైనింగ్' బటన్ పై క్లిక్ చేయండి. ఇది మీ మోడల్కు శిక్షణ ఇవ్వడం ప్రారంభిస్తుంది.
tensorflow.keras. దిగుమతి మాక్స్నార్మ్ # మోడల్ ఆర్కిటెక్చర్ మోడల్ = సీక్వెన్షియల్ () మోడల్.అడ్ (ఇన్పుట్లేయర్ (ఇన్పుట్_షాప్ = (ఎక్స్_ట్రెయిన్.షాప్,), పేరు = 'ఎక్స్_ఇన్పుట్')) మోడల్ 1), input_shape = (X_train.shape,))) model.add (Conv2D (10, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3)) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3%)) model.add (AveragePooling2D (పూల్_సైజ్ = 2,padding = 'same')) model.add (Flatten ()) model.add (దట్టమైన (తరగతులు, క్రియాశీలత = 'సాఫ్ట్మాక్స్', పేరు = 'y_pred', kernel_constraint = MaxNorm (3%)) # ఇది అభ్యాస రేటు ఎంపికను నియంత్రిస్తుంది = ఆడమ్ (lr = 0.005, బీటా_1 = 0.9, బీటా_2 = 0.999) # న్యూరల్ నెట్వర్క్ మోడల్.కామ్ (నష్టం = 'వర్గీకరణ_క్రాసెంట్రోపీ', ఆప్టిమైజర్ = ఆప్ట్, మెట్రిక్స్ =) మోడల్కు శిక్షణ ఇవ్వండి. = 9, ధ్రువీకరణ_డేటా = (X_test, Y_test), verbose = 2)verbose = 2)verbose = 2)
మోడల్కు శిక్షణ ఇచ్చిన తరువాత అది శిక్షణ పనితీరును చూపుతుంది. నాకు, ఖచ్చితత్వం 81.1% మరియు నష్టం 0.45, ఇది ఆదర్శ పనితీరు కాదు కాని మేము దానితో కొనసాగవచ్చు. విస్తారమైన డేటాసెట్ను సృష్టించడం ద్వారా మీరు మీ మోడల్ పనితీరును పెంచుకోవచ్చు.
ఇప్పుడు మా స్పీచ్ రికగ్నిషన్ మోడల్ సిద్ధంగా ఉన్నందున, మేము ఈ మోడల్ను ఆర్డునో లైబ్రరీగా అమలు చేస్తాము. మోడల్ను లైబ్రరీగా డౌన్లోడ్ చేయడానికి ముందు మీరు ' లైవ్ క్లాసిఫికేషన్' పేజీకి వెళ్లి పనితీరును పరీక్షించవచ్చు. డేటాసెట్తో లేదా మీ మొబైల్ ఫోన్ నుండి ఆడియో డేటాను ప్రసారం చేయడం ద్వారా ఇప్పటికే ఉన్న పరీక్ష డేటాతో మోడల్ను పరీక్షించడానికి లైవ్ వర్గీకరణ లక్షణం మిమ్మల్ని అనుమతిస్తుంది.
మీ ఫోన్తో డేటాను పరీక్షించడానికి, మీ ఫోన్లో ' వర్గీకరణ మోడ్కు మారండి ' ఎంచుకోండి.
ఇప్పుడు మోడల్ను ఆర్డునో లైబ్రరీగా డౌన్లోడ్ చేయడానికి, ' డిప్లాయ్మెంట్ ' పేజీకి వెళ్లి ' ఆర్డునో లైబ్రరీ' ఎంచుకోండి . ఇప్పుడు క్రిందికి స్క్రోల్ చేసి, ప్రక్రియను ప్రారంభించడానికి ' బిల్డ్ ' పై క్లిక్ చేయండి. ఇది మీ ప్రాజెక్ట్ కోసం ఆర్డునో లైబ్రరీని నిర్మిస్తుంది.
ఇప్పుడు మీ Arduino IDE లో లైబ్రరీని జోడించండి. దాని కోసం Arduino IDE ని తెరిచి, ఆపై స్కెచ్> Includ Library> Add.ZIP లైబ్రరీపై క్లిక్ చేయండి
అప్పుడు, ఫైల్> ఉదాహరణలు> మీ ప్రాజెక్ట్ పేరు - ఎడ్జ్ ఇంపల్స్> నానో_బుల్ 33_సెన్స్_మిక్రోఫోన్కు వెళ్లడం ద్వారా ఉదాహరణను లోడ్ చేయండి
ఆర్డునో వాయిస్ రికగ్నిషన్ కోసం ఆర్డునో కోడ్
వాయిస్ ఆదేశాలతో LED ని నియంత్రించడానికి ఇక్కడ కొన్ని మార్పులు చేయబడ్డాయి.
మేము ఆదేశాల సంభావ్యతను ముద్రించే శూన్య లూప్ () లో కొన్ని మార్పులు చేస్తున్నాము. అసలు కోడ్లో, ఇది అన్ని లేబుల్లను మరియు వాటి విలువలను కలిపి ముద్రిస్తుంది.
(size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f \ n", result.classification.label, result.classification.value); }
LED ని నియంత్రించడానికి మనం అన్ని కమాండ్ ప్రాబబిలిటీలను మూడు వేర్వేరు వేరియబుల్స్లో సేవ్ చేయాలి, తద్వారా వాటిపై షరతులతో కూడిన స్టేట్మెంట్లు ఉంచవచ్చు. కాబట్టి కొత్త కోడ్ ప్రకారం ' లైట్ ఆన్' కమాండ్ యొక్క సంభావ్యత 0.50 కన్నా ఎక్కువ ఉంటే అది ఎల్ఈడీని ఆన్ చేస్తుంది మరియు ' లైట్ ఆఫ్' కమాండ్ యొక్క సంభావ్యత 0.50 కన్నా ఎక్కువ ఉంటే అది ఎల్ఈడీ ఆఫ్ అవుతుంది.
(size_t ix = 2; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {శబ్దం = result.classification.value; సీరియల్.ప్రింట్ల్న్ ("శబ్దం:"); సీరియల్.ప్రింట్ల్న్ (శబ్దం); } for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix--) {lightoff = result.classification.value; సీరియల్.ప్రింట్ల్న్ ("లైట్ ఆఫ్:"); సీరియల్.ప్రింట్ (లైట్ఆఫ్); } lighton = 1- (శబ్దం + లైట్ఆఫ్); సీరియల్.ప్రింట్ల్న్ ("లైట్ ఆన్:"); సీరియల్.ప్రింట్ (లైటన్); if (lighton> 0.50) {DigitalWrite (led, HIGH); } if (lightoff> 0.50) {DigitalWrite (led, LOW); }
మార్పులు చేసిన తర్వాత, కోడ్ను మీ ఆర్డునోలో అప్లోడ్ చేయండి. 115200 బాడ్ వద్ద సీరియల్ మానిటర్ను తెరవండి.
ఈ విధంగా మీరు ఆర్డునో ఉపయోగించి ప్రసంగ గుర్తింపును నిర్మించవచ్చు మరియు పరికరాలను ఆపరేట్ చేయడానికి ఆదేశాలను ఇవ్వవచ్చు.
లైబ్రరీ మరియు కోడ్తో పూర్తి పని వీడియో క్రింద ఇవ్వబడింది.