- अवयव आवश्यक
- सर्किट आरेख
- Arduino भाषण मान्यता के लिए डेटासेट बनाना
- मॉडल को प्रशिक्षित करना
- Arduino आवाज पहचान के लिए Arduino कोड
भाषण मान्यता प्रौद्योगिकी स्वचालन में बहुत उपयोगी है जो न केवल आपको उपकरणों पर मुफ्त नियंत्रण प्रदान करती है बल्कि सिस्टम में सुरक्षा भी जोड़ती है। वॉयस नियंत्रित गैजेट्स बनाने के अलावा, भाषण मान्यता विभिन्न विकलांग लोगों को महत्वपूर्ण मदद भी प्रदान करती है।
पिछली परियोजनाओं में हमने Arduino पर आधारित टेक्स्ट टू स्पीच (TTS) कनवर्टर और आवाज नियंत्रित रोशनी का निर्माण किया। अब इस परियोजना में, हम एज इंपल्स स्टूडियो का उपयोग करते हुए तीन कमांड यानी ' लाइट ऑन' , ' लाइट ऑफ' और ' नॉइज़ ' के साथ स्पीच रिकग्निशन मॉडल का प्रशिक्षण लेने के लिए मशीन लर्निंग का उपयोग करने जा रहे हैं । एज इंपल्स एक ऑनलाइन मशीन लर्निंग प्लेटफॉर्म है जो डेवलपर्स को एम्बेडेड मशीन लर्निंग के साथ अगली पीढ़ी के इंटेलिजेंट डिवाइस सॉल्यूशन बनाने में सक्षम बनाता है। खांसी और शोर की आवाज़ को अलग करने के लिए हमने पहले एज इम्पल्स स्टूडियो का इस्तेमाल किया।
अवयव आवश्यक
हार्डवेयर
- Arduino 33 BLE Sense
- एलईडी
- जम्पर तार
सॉफ्टवेयर
- एज इंपल्स स्टूडियो
- Arduino IDE
हमने Arduino 33 BLE Sense पर एक विस्तृत ट्यूटोरियल कवर किया है।
सर्किट आरेख
Arduino का उपयोग करके इस ध्वनि पहचान के लिए सर्किट आरेख नीचे दिया गया है। Arduino 33 BLE के लिए फ्रिटिंग भाग उपलब्ध नहीं था, इसलिए मैंने Arduino Nano का उपयोग किया क्योंकि दोनों में समान पिनआउट है।
एलईडी का पॉजिटिव लीड Arduino 33 BLE सेंस के डिजिटल पिन 5 से जुड़ा है और नेगेटिव लीड Arduino के GND पिन से जुड़ा है।
Arduino भाषण मान्यता के लिए डेटासेट बनाना
यहां एज इंपल्स स्टूडियो का उपयोग हमारे भाषण मान्यता मॉडल को प्रशिक्षित करने के लिए किया जाता है। एज इंपल्स स्टूडियो पर एक मॉडल का प्रशिक्षण अन्य मशीन लर्निंग फ्रेमवर्क पर मशीन सीखने के मॉडल के प्रशिक्षण के समान है। प्रशिक्षण के लिए, एक मशीन लर्निंग मॉडल का पहला कदम एक डेटासेट को इकट्ठा करना है जिसमें डेटा के नमूने हैं जिन्हें हम पहचानने में सक्षम होना चाहते हैं।
जैसा कि हमारा लक्ष्य हमारी आवाज कमांड के साथ एक एलईडी को नियंत्रित करना है, हमें सभी कमांड और शोर के लिए आवाज के नमूने एकत्र करने की आवश्यकता होगी ताकि यह आवाज कमांड और अन्य शोर के बीच अंतर कर सके।
हम तीन वर्गों " LED ON ", " LED OFF " और " शोर " के साथ एक डेटासेट बनाएंगे । डेटासेट बनाने के लिए, एक एज इंपल्स खाता बनाएं, अपने खाते को सत्यापित करें और फिर एक नई परियोजना शुरू करें। आप अपने मोबाइल, अपने Arduino बोर्ड का उपयोग करके नमूने लोड कर सकते हैं या आप अपने किनारे के आवेग खाते में डेटासेट आयात कर सकते हैं। अपने मोबाइल फोन का उपयोग करके नमूनों को अपने खाते में लोड करने का सबसे आसान तरीका है। इसके लिए एज इंपल्स से मोबाइल को कनेक्ट करें।
मोबाइल फोन को जोड़ने के लिए ' डिवाइस ' पर क्लिक करें और फिर ' कनेक्ट ए न्यू डिवाइस' पर क्लिक करें ।
अब अगली विंडो में 'यूज़ योर मोबाइल फ़ोन' पर क्लिक करें , और एक क्यूआर कोड दिखाई देगा। अपने मोबाइल फोन के साथ QR कोड को स्कैन करें या QR कोड पर दिए गए URL दर्ज करें।
यह आपके फोन को एज इंपल्स स्टूडियो से जोड़ेगा।
एज इंपल्स स्टूडियो से जुड़े अपने फोन के साथ, अब आप अपने नमूने लोड कर सकते हैं। नमूने लोड करने के लिए ' डाटा अधिग्रहण' पर क्लिक करें । अब डेटा अधिग्रहण पृष्ठ पर लेबल नाम दर्ज करें, सेंसर के रूप में माइक्रोफोन का चयन करें, और नमूना लंबाई दर्ज करें। A स्टार्ट सैंपलिंग’ पर क्लिक करें, आपका डिवाइस 2 सेकंड के नमूने को कैप्चर करेगा। विभिन्न स्थितियों में कुल 10 से 12 आवाज के नमूने रिकॉर्ड करें।
प्रथम श्रेणी के लिए नमूने अपलोड करने के बाद अब परिवर्तन लेबल सेट करें और ' लाइट ऑफ' और 'शोर' वर्ग के लिए नमूने एकत्र करें ।
ये नमूने मॉड्यूल को प्रशिक्षित करने के लिए हैं, अगले चरणों में, हम टेस्ट डेटा एकत्र करेंगे। परीक्षण डेटा कम से कम 30% प्रशिक्षण डेटा होना चाहिए, इसलिए 'शोर' के 4 नमूने और 'लाइट ऑन' और 'लाइट ऑफ' के लिए 4 से 5 नमूने एकत्र करें।
मॉडल को प्रशिक्षित करना
जैसे ही हमारा डेटासेट तैयार होता है, अब हम डेटा के लिए एक आवेग बना सकते हैं। इसके लिए ' क्रिएट इम्पल्स ' पेज पर जाएं। 1000 ms विंडो के आकार की डिफ़ॉल्ट सेटिंग्स को 1200ms में बदलें और 500 ms की विंडो को 50ms तक बढ़ाएं। इसका मतलब है कि हमारे डेटा को एक बार में 1.2 s संसाधित किया जाएगा, प्रत्येक 58ms से शुरू होगा।
अब ' Create impulse' पेज पर ' Add a processing block' पर क्लिक करें । अगली विंडो में ऑडियो (MFCC) ब्लॉक चुनें । उसके बाद ' Add a Learning block' पर क्लिक करें और Neural Network (Keras) ब्लॉक चुनें । इसके बाद ' सेव इम्पल्स’ पर क्लिक करें ।
अगले चरण में MFCC पेज पर जाएं और फिर 'Generate Features' पर क्लिक करें। यह हमारी सभी ऑडियो विंडो के लिए MFCC ब्लॉक जेनरेट करेगा।
उसके बाद N एनएन क्लासिफायर’ पेज पर जाएं और and न्यूरल नेटवर्क सेटिंग्स’ के ऊपरी दाएं कोने पर तीन डॉट्स पर क्लिक करें और to स्विच टू केयर्स (विशेषज्ञ) मोड’चुनें ।
निम्नलिखित कोड के साथ मूल को बदलें और ' न्यूनतम आत्मविश्वास रेटिंग' को ' 0.70' में बदलें । इसके बाद click स्टार्ट ट्रेनिंग’ बटन पर क्लिक करें। यह आपके मॉडल का प्रशिक्षण शुरू कर देगा।
tensorflow.keras.models से tf के रूप में आयात टेंसरफ़्लो आयात करें। आयात MaxNorm # मॉडल वास्तुकला मॉडल = अनुक्रमिक () Model.add (InputLayer (input_shape = (X_train.shape), नाम, = 'x_input')) model.add (Reshape (int (X_train.shape / 13)), 13, 13) (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, सक्रियण = 'relu', padding = 'same', kernel_constraint (MaxNorm (3))) model.add (averagePooling2D () पूल_साइज़ = 2,पैडिंग = 'वही')) मॉडल। एड (फ्लैटन ()) मॉडल। एड (डेंस (कक्षाएं, सक्रियण = 'सॉफ्टमैक्स'), नाम = 'y_pred', kernel_constraint = MaxNorm (3)) #) यह सीखने की दर को नियंत्रित करता है = एडम (lr = 0.005, Beta_1 = 0.9, Beta_2 = 0.999) # ट्रेन ने न्यूरल नेटवर्क model.compile (हानि = 'श्रेणीबद्ध_क्रोसेंट्रोपी', ऑप्टिमाइज़र = ऑप्ट, मेट्रिक्स =) मॉडल.fit (X_train, Y_train, batch_size = 32, युग) = 9, सत्यापन_दाता = (एक्स_टेस्ट, वाई_टेस्ट), क्रिया = 2)क्रिया = 2)क्रिया = 2)
मॉडल को प्रशिक्षित करने के बाद यह प्रशिक्षण प्रदर्शन दिखाएगा। मेरे लिए, सटीकता 81.1% थी और नुकसान 0.45 था जो आदर्श प्रदर्शन नहीं है, लेकिन हम इसके साथ आगे बढ़ सकते हैं। आप एक विशाल डेटासेट बनाकर अपने मॉडल का प्रदर्शन बढ़ा सकते हैं।
अब जैसे ही हमारा स्पीच रिकॉग्निशन मॉडल तैयार होता है, हम इस मॉडल को अरुडिनो लाइब्रेरी के रूप में तैनात करेंगे। मॉडल को लाइब्रेरी के रूप में डाउनलोड करने से पहले आप ' लाइव क्लासिफिकेशन' पेज पर जाकर प्रदर्शन का परीक्षण कर सकते हैं । लाइव वर्गीकरण सुविधा आपको मौजूदा परीक्षण डेटा के साथ मॉडल का परीक्षण करने की अनुमति देती है जो डेटासेट के साथ या अपने मोबाइल फोन से ऑडियो डेटा स्ट्रीमिंग करके आता है।
अपने फोन के साथ डेटा का परीक्षण करने के लिए, अपने फ़ोन पर 'वर्गीकरण मोड पर स्विच करें' चुनें ।
अब मॉडल को Arduino Library के रूप में डाउनलोड करने के लिए, ' परिनियोजन ' पृष्ठ पर जाएँ और ' Arduino Library' चुनें । अब नीचे स्क्रॉल करें और प्रक्रिया शुरू करने के लिए ' बिल्ड ' पर क्लिक करें । यह आपकी परियोजना के लिए एक Arduino पुस्तकालय का निर्माण करेगा।
अब अपने Arduino IDE में लाइब्रेरी जोड़ें। इसके लिए Arduino IDE खोलें और फिर स्केच> लाइब्रेरी शामिल करें> Add.ZIP लाइब्रेरी पर क्लिक करें
फिर, फ़ाइल> उदाहरण> अपनी परियोजना का नाम - एज आवेग> nano_ble33_sense_microphone पर जाकर एक उदाहरण लोड करें
Arduino आवाज पहचान के लिए Arduino कोड
यहां वॉयस कमांड के साथ एलईडी को नियंत्रित करने के लिए कुछ बदलाव किए गए हैं।
हम शून्य लूप () में कुछ बदलाव कर रहे हैं जहां यह कमांड की संभावना को प्रिंट कर रहा है। मूल कोड में, यह सभी लेबल और उनके मूल्यों को एक साथ प्रिंट कर रहा है।
for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f \ n", result.classification.label, result.classification.value); }
एलईडी को नियंत्रित करने के लिए हमें तीन अलग-अलग चर में सभी कमांड संभावनाओं को सहेजना होगा ताकि हम उन पर सशर्त बयान डाल सकें। इसलिए नए कोड के अनुसार यदि ' लाइट ऑन' कमांड की संभावना 0.50 से अधिक है तो यह एलईडी को चालू करेगा और यदि ' लाइट ऑफ' कमांड की संभावना 0.50 से अधिक है तो यह एलईडी को बंद कर देगा।
for (size_t ix = 2; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {शोर = result.classification.value; धारावाहिक.प्रदर्शन ("शोर:"); सिरियल.प्रिंट (शोर); } के लिए (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix--) {lightoff = result.classification.value; सिरियल.प्रिंटल ("लाइट ऑफ़:"); सिरियल.प्रिंट (लाइटऑफ़); } लाइटन = 1- (शोर + लाइटऑफ); सीरियल.प्रिंटलेन ("लाइट ऑन:"); सिरियल.प्रिंट (लाइटन); if (लाइटन> 0.50) {digitalWrite (led, HIGH); } अगर (लाइटऑफ> 0.50) {digitalWrite (led, LOW); }
बदलाव करने के बाद, कोड को अपने Arduino में अपलोड करें। 115200 बॉड में सीरियल मॉनिटर खोलें।
यह है कि आप Arduino का उपयोग करके भाषण पहचान कैसे बना सकते हैं और उपकरणों को संचालित करने के लिए कमांड दे सकते हैं।
एक पुस्तकालय और कोड के साथ एक पूरा काम करने वाला वीडियो नीचे दिया गया है।