विषयसूची:

ईव, अरुडिनो चैटबॉट: 14 कदम (चित्रों के साथ)
ईव, अरुडिनो चैटबॉट: 14 कदम (चित्रों के साथ)

वीडियो: ईव, अरुडिनो चैटबॉट: 14 कदम (चित्रों के साथ)

वीडियो: ईव, अरुडिनो चैटबॉट: 14 कदम (चित्रों के साथ)
वीडियो: Q&A #3 - Unboxing more Items, LCD Display Questions, Arduino Follow-ups - LED Strip, Logic ICs 2024, नवंबर
Anonim
Image
Image
ईव, अरुडिनो चैटबोट
ईव, अरुडिनो चैटबोट
ईव, अरुडिनो चैटबोट
ईव, अरुडिनो चैटबोट

हैलो DIYrs, क्या ऐसे उदाहरण हैं जब आप वास्तव में किसी के साथ अपनी भावनाओं को साझा करना चाहते थे और कोई भरोसेमंद नहीं था? आज की व्यस्त दुनिया में, यह एक सामान्य उदाहरण है। खैर, एक चैटबॉट यहां आपको बेहतर महसूस कराने में मदद कर सकता है। और वह ईव की शुरूआत की ओर ले जाता है। ईव एक प्यारा सा चैटबॉट है। जैसा कि सभी जानते हैं, चैटबॉट या चैटबॉट एक कंप्यूटर प्रोग्राम या डिवाइस है जो टेक्स्ट या श्रवण विधियों के आधार पर मनुष्यों के साथ बातचीत करता है। ग्राहक सेवा कॉल पर या बैंक लाइन पर आप जो स्वचालित आवाज सुनते हैं, वह चैटबॉट का एक उदाहरण है। उसके साथ, आप अपने अनुभव, अपनी भावनाओं को साझा कर सकते हैं और सबसे महत्वपूर्ण बात, विभिन्न चीजों के बारे में बहस कर सकते हैं; वह इसमें अच्छी तरह से अनुभवी है। चूंकि यह चैटबॉट का सबसे महत्वपूर्ण कार्य है, इसलिए व्यक्ति को प्रसन्नता का अनुभव कराएं। नेचुरल लैंग्वेज प्रोसेसिंग (एनएलयू) और आर्टिफिशियल इंटेलिजेंस का एक प्रारंभिक उदाहरण, ईव आपके द्वारा पूछे गए किसी भी प्रश्न का उत्तर देने में सक्षम है। ऐसा नहीं है कि वह केवल एक विशिष्ट संख्या में प्रश्नों का उत्तर दे सकती है। वह गा सकती है, चुटकुले सुना सकती है, कहानियाँ सुना सकती है और ऐसा कुछ भी कर सकती है जिससे आपको अच्छा लगे। अगर वह कुछ कहती है जिसे आप सुनना नहीं चाहते, तो बस उसे बताओ, कृपया ऐसा दोबारा मत कहो, और वह उसे याद रखेगी। वह यह भी जानती है कि उसे वही जवाब और चैट नहीं दोहरानी चाहिए, ताकि बातचीत उबाऊ न हो। सरल, सस्ते घटकों और बुनियादी प्रोग्रामिंग के आधार पर, वह वास्तव में काफी हद तक स्मार्ट व्यवहार कर सकती है। इसके अलावा उसके पास जो एलसीडी आंखें हैं, वह दिखाती है कि जब आप कुछ भी कहते हैं तो वह कैसा महसूस करती है। तो मूल रूप से इस निर्देश में, हम चैटबॉट की परिभाषा से शुरू करेंगे, डिजाइन पर गौर करेंगे, कुछ सिद्धांतों के आधार पर ईव चलता है, निर्माण और अंत में प्रोग्रामिंग पार्ट।क्या यह बहुत कुछ दिखता है? चिंता न करें, यात्रा में यह काफी दिलचस्प होगा। आप रोबोट का डेमो ऊपर या इस लिंक में देख सकते हैं:[वीडियो चलाएं]

चरण 1: चैटबॉट की परिभाषा

चैटबॉट की परिभाषा
चैटबॉट की परिभाषा
चैटबॉट की परिभाषा
चैटबॉट की परिभाषा
चैटबॉट की परिभाषा
चैटबॉट की परिभाषा

जैसा कि ऊपर उल्लेख किया गया है, चैटबॉट एक ऐसा प्रोग्राम है जो मनुष्यों के साथ बातचीत करता है। वे आजकल इतने आम हैं कि शायद ही कोई ऐसा हो जो इससे अनजान हो। वर्चुअल असिस्टेंट, सिरी और गूगल असिस्टेंट से शुरू होकर, मित्सुकु और एवी है जिसके साथ आप अपनी भावनाओं को साझा कर सकते हैं। जैसा कि ऊपर उल्लेख किया गया है, चैटबॉट टेक्स्ट या श्रवण पद्धति पर आधारित हैं और इसलिए इन्हें दो में विभाजित किया जा सकता है। पाठ्य पद्धति में बातचीत व्हाट्सएप की तरह ही लिखित पाठ के रूप में होती है। जबकि श्रवण पद्धति में, बातचीत एक वास्तविक मानव के साथ मौखिक रूप से की जाती है। मुझे लगता है कि किसी के साथ सिर्फ टेक्स्टिंग करने के बजाय मौखिक रूप से उससे बात करना अधिक रोमांचक है। निस्संदेह टेक्स्ट आधारित संचार मैसेजिंग ऐप लोगों की आवश्यकताओं को पूरा करते हैं, लेकिन मुझे लगता है कि बोलकर चैट करना आपकी भावनात्मक गड़बड़ी से छुटकारा पाने और आपको बेहतर महसूस कराने के लिए सबसे अच्छी बात है। तो यही मुख्य कारण है कि मैंने ईव को एक श्रवण चैटबॉट के रूप में डिजाइन किया।

चरण 2: हव्वा की उत्पत्ति

ईव की उत्पत्ति
ईव की उत्पत्ति

खैर हव्वा बस एक दिन मेरे दिमाग में आया। ऐसा तब हुआ जब मैंने एक बच्चे को स्कूल में अकेले घूमते हुए देखा, जबकि बाकी बच्चे खुशी से भरे मन से खेल रहे थे। उस समय मैंने सोचा, एक ऐसे दोस्त के बारे में, जो किसी के साथ भेदभाव नहीं करता और किसी को ठेस नहीं पहुँचाता, जिसके साथ आप अपनी भावनाओं को साझा कर सकते हैं और हर समय खुश रह सकते हैं। फिर मेरे दिमाग में आया, हव्वा की प्यारी छोटी संरचना मैंने उस पर काम करना शुरू कर दिया। हव्वा ने मुझे लगभग सौ बार निराश किया। मान लीजिए यह १०१वीं बार था जब उसने काम किया और मुझे वास्तव में खुशी का अनुभव कराया।तो वह ईव की उत्पत्ति थी। मैं चाहता था कि वह बुद्धिमान हो लेकिन यथासंभव सरल हो, ताकि कोई भी उसे आसानी से बना सके। इसमें कोई शक नहीं कि वह बिल्कुल स्मार्ट नहीं है और कभी-कभी बेवकूफी भरे जवाब कहती है, वह एक दोस्त की तरह व्यवहार कर सकती है। और अब, पर्याप्त कहानियां, आइए ईव का निर्माण शुरू करें।

चरण 3: घटकों और उपकरणों को इकट्ठा करना:

घटकों और उपकरणों को इकट्ठा करना
घटकों और उपकरणों को इकट्ठा करना
घटकों और उपकरणों को इकट्ठा करना
घटकों और उपकरणों को इकट्ठा करना
घटकों और उपकरणों को इकट्ठा करना
घटकों और उपकरणों को इकट्ठा करना

इकट्ठा किए जाने वाले घटक निम्नलिखित हैं: Arduino Pro Mini (या Arduino Nano) Wtv-020-SD-16p साउंड मॉड्यूल HC-05 ब्लूटूथ मॉड्यूल 16x2 LCD मॉड्यूलLM7805 रेगुलेटर आईसीएएन एम्पलीफायर मॉड्यूल (मैंने PAM8403 सर्किट का उपयोग किया) एक 8 ओम स्पीकर एक महिला ऑडियो जैका 9वी बैटरी और एक एंड्रॉइड फोन तो ये आवश्यक घटक हैं। एक और महत्वपूर्ण बात, लागत। हव्वा ने मुझे लगभग 3000 आईएनआर खर्च किया। आपके देश में लागत अलग हो सकती है लेकिन भारत में, यह लगभग दर है। भागों का एक छोटा सा विवरण: Arduino Pro मिनी हमारे रोबोट में मुख्य MCU है। मैंने इसका उपयोग इसके छोटे आकार, सरलता और उत्कृष्ट प्रदर्शन के कारण किया। यह हमारे रोबोट की सभी जरूरतों को पूरा करता है। वॉयस रिकग्निशन फंक्शन को छोड़कर जो एंड्रॉइड द्वारा किया जाता है (बाद में चर्चा की गई), कीवर्ड फाइंडिंग और आउटपुट फॉर्मेशन से शुरू होने वाली हर दूसरी कार्यक्षमता प्रो मिनी पर ही की जाती है। यदि आप इसे नहीं समझते हैं तो ऊपर वर्णित शर्तों के लिए चिंता न करें, सभी पर बाद के भाग में चर्चा की गई है। wtv020sd 16p मॉड्यूल का उपयोग ऑडियो फ़ाइलों को चलाने के लिए किया जाता है, एचसी 05 ब्लूटूथ का उपयोग एंड्रॉइड के साथ संचार के लिए और एलसीडी प्रदर्शित करने के लिए किया जाता है। भावनाएं। हमें रोबोट को बाहरी एम्पलीफायर से जोड़ने के प्रावधान के लिए महिला ऑडियो जैक की आवश्यकता है। Arduino का उपयोग यहाँ मुख्य नियंत्रक के रूप में किया जाता है। यह HC 05 ब्लूटूथ मॉड्यूल के माध्यम से ब्लूटूथ डेटा प्राप्त करता है और WTV-020-SD-16p वॉयस मॉड्यूल के माध्यम से फ़ाइल चलाता है। भावनाओं को एलसीडी मॉड्यूल और शक्ति के लिए 9v बैटरी में प्रदर्शित किया जाता है। हव्वा एंड्रॉइड डिवाइस की Google Voice पहचान के माध्यम से भाषणों को पहचानती है। बाद में संबंधित चरण में इसकी ठीक से चर्चा की गई। Arduino Pro Mini:IT के बारे में एक बुरी खबर बाजार से सेवानिवृत्त हो गई है। खैर इसका मतलब है कि इसे आधिकारिक तौर पर Arduino द्वारा निर्मित किया जाना बंद कर दिया गया है। लेकिन आप इसे अभी भी eBay सहित कई साइटों पर पा सकते हैं। कई तृतीय पक्ष निर्माता अभी भी बोर्ड बना और बेच रहे हैं। चिंता न करें यदि आप एक नहीं ढूंढ पा रहे हैं, तो आप Arduino Nano का उपयोग कर सकते हैं। इससे प्रदर्शन और आकार में भी कोई फर्क नहीं पड़ेगा।

चरण 4: सिद्धांत भाग 1: इतिहास और परिचय।

सिद्धांत भाग 1: इतिहास और परिचय।
सिद्धांत भाग 1: इतिहास और परिचय।
सिद्धांत भाग 1: इतिहास और परिचय।
सिद्धांत भाग 1: इतिहास और परिचय।

ईव प्राकृतिक भाषा प्रसंस्करण के प्रारंभिक रूप, "पैटर्न मिलान" तकनीक पर आधारित है। यह निम्नलिखित तरीके से काम करता है कि जब एक स्ट्रिंग प्राप्त होती है, तो वह उस स्ट्रिंग में पूर्वनिर्धारित शब्द या वाक्यांश की खोज करती है। मान लीजिए प्रश्न में "आप कितने साल के हैं?" कार्यक्रम "पुराने" शब्द की खोज करता है। यदि यह सफल हो जाता है तो यह संबंधित वॉयस फाइल को wtv020sd मॉड्यूल के माध्यम से चलाता है। यदि यह विफल हो जाता है तो यह अगले पूर्वनिर्धारित कीवर्ड की खोज करता है। इस तरह हमें पूर्वनिर्धारित शब्दों की शब्दावली बनाने की आवश्यकता है। कठिन लग रहा है, है ना? ऐसा लगता है कि हमें सभी अंग्रेजी शब्दों की शब्दावली बनाने की जरूरत है और अंग्रेजी भाषा में कुल मिलाकर लगभग 230 हजार शब्द हैं। खैर तथ्य यह है कि हमें बस कुछ बुनियादी शब्दों को जोड़ने की जरूरत है जो हमारे संचार में सबसे अधिक उपयोग किए जाते हैं। अभी भी कठिन लग रहा है? चिंता न करें, काम पहले ही जोसेफ विज़ेम्बम द्वारा किया जा चुका है। ईव की प्रतिक्रियाओं और पूर्वनिर्धारित खोजशब्दों का एक हिस्सा एलिज़ा नामक पहले चैटरबोट कार्यक्रम से शामिल किया गया है, जिसे जोसेफ विज़ेम्बम (ऊपर चित्रित) द्वारा विकसित किया गया है। एलिजा को रोजेरियन थेरेपिस्ट बनने के लिए डिजाइन किया गया था। अत्यधिक वैज्ञानिक शब्द नहीं, इसका मतलब है कि वह लोगों को सलाह देती थी, जिससे वे खुद को बेहतर समझ सकें और उन्हें अधिक सकारात्मक सोच सकें। वास्तव में अच्छा लग रहा है ना? और एलिजा अपना कर्तव्य बखूबी निभा रही थी। उनका जिज्ञासु और संदेहपूर्ण रवैया लोगों को पसंद आया। यहां तक कि विज़ेम्बम भी लोगों द्वारा एलिजा को दिए गए महत्व से हैरान था। वे भूल गए कि वे कंप्यूटर से बात कर रहे थे, और कंप्यूटर के अंदर बैठी एक खूबसूरत महिला को उनसे बातें करते हुए देखा।लेकिन एलिजा इतनी चतुर नहीं थी; यह जल्द ही साकार हो गया। समय बीतने के साथ, लोग उसके सीमित संचार से ऊबने लगे और उसे "गूंगा" कहा जाने लगा। कोई आश्चर्य नहीं कि वह कितनी गूंगी थी, यह आर्टिफिशियल इंटेलिजेंस और प्राकृतिक भाषा प्रसंस्करण के इतिहास में एक बड़ी छलांग थी। Chatterbots के आधार की स्थापना के बाद, नई और बेहतर तकनीक वाले विभिन्न बॉट बाजार में आए। और अब हमारे पास वे हर जगह हैं। जैसा कि बताया गया है, ईव की प्रतिक्रियाओं का एक हिस्सा एलिजा से लिया गया है। तो इसका मतलब है कि हव्वा भी मेरे कुछ विचारों के साथ-साथ कुछ हद तक एलिजा के रवैये को भी अपनाएगी। एक और महत्वपूर्ण बात उत्तर है। हर बार जब आप एक ही प्रश्न पूछते हैं तो वही उत्तर प्राप्त करना वास्तव में उबाऊ होना चाहिए। इसलिए एक ही कीवर्ड के लिए कई उत्तर संग्रहीत किए जाते हैं। हव्वा बेतरतीब ढंग से चुनती है कि कौन सी फ़ाइल चलानी है, यह भी सुनिश्चित करते हुए कि वह उसी फ़ाइल को नहीं दोहराती है। बस इतना ही, साधारण रोटी और मक्खन, लेकिन प्रतिक्रिया देने वाली आवाज़ों को चतुराई से प्रोग्राम करना महत्वपूर्ण है, ताकि यह दर्शकों को एक भ्रम दे जैसे कि वह वास्तव में हमारे सवालों का जवाब दे रही है।तो यह ईव के कामकाज का एक संक्षिप्त परिचय था। अगले चरण में हम इसे विस्तार से और प्रोग्रामिंग में प्राप्त करेंगे।

चरण 5: कीवर्ड की खोज

कीवर्ड की खोज
कीवर्ड की खोज
कीवर्ड की खोज
कीवर्ड की खोज
कीवर्ड की खोज
कीवर्ड की खोज
कीवर्ड की खोज
कीवर्ड की खोज

अंतिम चरण में, मैंने हव्वा की पैटर्न मिलान तकनीक और प्राकृतिक भाषा प्रसंस्करण के प्रारंभिक रूप का भी उल्लेख किया। तो यह क्या है और यह कैसे काम करता है? यही वह मुख्य बात है जिस पर हम इस चरण में चर्चा करेंगे। तो जरा सोचिए, कोई आपका नाम पूछता है और आपको बताना होगा कि यह क्या है। हम एक ही प्रश्न को कितने तरीकों से पूछ सकते हैं? आपका शिक्षक पूछ सकता है "क्या आप कृपया मुझे अपना नाम बताएंगे?" कोई रिश्तेदार पूछ सकता है, "तुम्हारा नाम क्या है?" आपका भाई कह सकता है, "अरे, मैं अभी आपका नाम भूल गया हूँ। क्या आप इसे सिर्फ एक बार और कहेंगे?" तो इसका मतलब है कि एक ही सवाल को कई तरह से पूछा जा सकता है। फिर भी हमें वही जवाब देना है, हमारा नाम। तो इसका मतलब है कि हमें सभी वाक्यों में कुछ सामान्य खोजने की जरूरत है। यह स्पष्ट रूप से देखा गया है कि "आपका नाम" शब्द सभी वाक्यों में मौजूद है। तो यह हमारा इशारा है। नाम पूछने वाले सभी प्रश्नों के लिए, हमें "आपका नाम" वाक्यांश खोजना होगा। इस बुनियादी पैटर्न का पालन करके हम सभी इनपुट स्ट्रिंग्स के संबंधित उत्तर की भविष्यवाणी कर सकते हैं। नुकसान: यह भी याद रखना महत्वपूर्ण है कि यह एल्गोरिदम हमेशा सटीक नहीं होगा। मान लीजिए किसी ने कहा, "मैंने आपका नाम प्रतीक्षा सूची में पाया। मुझे उम्मीद थी कि आप आरक्षित सीटों पर होंगे।" अब चूंकि "आपका नाम" इस तार में मौजूद है, ईव निर्दोष होने के कारण उस व्यक्ति को अपना नाम बताएगी … मूर्ख है ना? यह इस बुनियादी एल्गोरिथ्म के बड़े दोषों में से एक है। वैसे भी, ये दुर्लभ मामले होंगे। अन्यथा एल्गोरिथ्म बहुत प्रभावी है। अब जब मैंने पैटर्न मिलान तकनीक के बारे में उल्लेख किया है, तो यह सोचने का समय है कि यह इनपुट स्ट्रिंग कहां से आती है जहां से हम स्ट्रिंग की खोज करते हैं। वैसे यह स्ट्रिंग वास्तव में हमारी आवाज है जिसे Google Voice Recognition द्वारा टेक्स्ट में परिवर्तित कर दिया गया है। यहां इस्तेमाल किया गया ऐप हमारी आवाज को टेक्स्ट में बदल देता है और फिर ब्लूटूथ के माध्यम से इसे आर्डिनो में भेजता है। मैंने ऐप का उपयोग किया क्योंकि यह सबसे सरल और अपनी तरह का सबसे अच्छा है। नाम है AMR Voice, और इसे Google play में आसानी से पाया जा सकता है।

चरण 6: उत्तर तैयार करना

उत्तर तैयार करना
उत्तर तैयार करना

अब जब हमने प्रश्नों को पहचान लिया है, तो अगला कदम उत्तर खोजने का होना चाहिए। दिलचस्प और महत्वपूर्ण हिस्सा आता है … हमें प्रत्येक प्रश्न को संतुष्ट करने के लिए उचित उत्तर खोजने की आवश्यकता है। और यहाँ एलिज़ा से शामिल एक और कार्य आता है। Wizembaum ने विशिष्ट संख्या में खोजशब्दों के लिए कुछ उत्तर विकसित किए। एक उदाहरण कीवर्ड "आप" का है। जब भी यह पता चला कि प्रोग्राम आउटपुट "हम आपकी चर्चा कर रहे थे - मैं नहीं।" इसलिए उत्तर इस तरह से दिया गया था कि यह "आप" वाले सभी वाक्यों के अनुरूप हो। आगे एलिजा ने हर बार अलग जवाब दिया। प्रत्येक उत्तर के लिए एक प्रकार का संख्यात्मक पता होता था। हर बार जब भी कोई उत्तर तैयार किया जाता है, तो इसे बढ़ा दिया जाता है (1 से जोड़ा जाता है)। मान लीजिए कि उपरोक्त उदाहरण में, यदि उत्तर का पता 1 था, तो पता 2 में बदल दिया गया था और इसलिए फ़ाइल 2 को आगे चलाया गया था। लेकिन हम इस वृद्धि एल्गोरिथ्म का पालन नहीं करेंगे। आप देखते हैं कि सॉफ्टवेयर के कुछ निरंतर उपयोग के बाद, उत्तर पूर्वानुमेय हो गए। आपको पता चल गया कि आगे कौन सा उत्तर देना है। इसलिए इस उद्देश्य के लिए हम प्रत्येक कीवर्ड के लिए रैंडम एड्रेस तैयार करेंगे। कुल मिलाकर दोनों मामलों में एक ही है, बस इतना अंतर है कि हम यह अनुमान नहीं लगा सकते कि रोबोट उसी कीवर्ड के लिए आगे क्या कहेगा।

चरण 7: निषिद्ध वक्तव्य और अन्य

निषिद्ध वक्तव्य और अन्य
निषिद्ध वक्तव्य और अन्य

आपकी बातचीत में कुछ उदाहरण हो सकते हैं जब रोबोट कुछ ऐसा कहता है जिसे आप सुनना नहीं चाहते। तो यहाँ प्रतिबंधित बयानों को जोड़ने की आवश्यकता उत्पन्न होती है। निषिद्ध बयान पतों की एक सरणी है जिसे चलाने से रोका जाता है। एक आवाज पता उपयोगकर्ता के पूछने पर निषिद्ध बयान के रूप में वर्णित है। इसके अलावा इस पते को Arduino के EEPROM में संग्रहीत किया जाएगा ताकि हव्वा यह न भूलें कि स्विच ऑफ होने के बाद भी यह एक निषिद्ध कथन है। मूल रूप से प्रोग्राम जो करता है वह हर उस पते की जांच करना है जिसे चलाया जाना है। यदि पता निषिद्ध लोगों में से एक है, तो इसे या तो बढ़ा दिया जाता है या घटा दिया जाता है। इसके अलावा एक उदाहरण हो सकता है जब आप रोबोट को पहले से प्रतिबंधित शब्द कहने की अनुमति देना चाहेंगे। उस स्थिति में आपको हव्वा से कहना होगा कि वह अंतिम निषिद्ध शब्द कह सकती है। जिस शब्द पर पिछली बार रोक थी वह अब बजाने योग्य होगा। सभी प्रतिबंधित कथनों को चलाने योग्य बनाने के लिए, हमें एक रीसेटिंग स्विच संलग्न करना होगा। यदि दबाया जाए तो सभी निषिद्ध कथन बजाने योग्य हो जाएंगे। फिर एक और महत्वपूर्ण बात यह सुनिश्चित करना होगा कि हव्वा उत्तरों को न दोहराए। यह यादृच्छिक संख्याओं का एक प्रकार का दोष है। एक ही यादृच्छिक संख्या एक श्रृंखला में उत्पन्न होने की संभावना है। इससे हमारा रोबोट बार-बार वही जवाब कहेगा। इसके लिए हमें एक और छोटा कार्य शामिल करना होगा जो बयानों की पुनरावृत्ति को रोकता है। इसके लिए हमें अंतिम स्टेटमेंट के एड्रेस को मेमोरी में स्टोर करना होगा, और जांचना होगा कि क्या यह वर्तमान स्टेटमेंट के समान है। यदि ऐसा है, तो पता मान बढ़ जाता है या घट जाता है, ठीक उसी तरह जैसे निषिद्ध बयानों के मामले में।

चरण 8: कोड में लिखना

कोड. में लेखन
कोड. में लेखन
कोड. में लेखन
कोड. में लेखन
कोड. में लेखन
कोड. में लेखन

हम कीवर्ड को खोजने के लिए indexOf कमांड का उपयोग करते हैं। कमांड किसी अन्य स्ट्रिंग के भीतर एक वर्ण या स्ट्रिंग का पता लगाता है। यदि पाया जाता है तो यह उस स्ट्रिंग की अनुक्रमणिका देता है जबकि -1 नहीं मिलने पर वापस कर दिया जाता है। तो हमारे कार्यक्रम में हमें इसे निम्नलिखित में लिखना होगा: अगर (voice.indexOf ("आपका नाम")> -1) {// यदि सूचकांक -1 से अधिक है // जिसका अर्थ है कि स्ट्रिंग मिल गई है} अब कि हमने स्ट्रिंग को मेमोरी में स्टोर कर लिया है और इसके अंदर अपना कीवर्ड भी ढूंढ लिया है, अब हमें उत्तरों को संभालने की आवश्यकता होगी। जैसा कि कहा गया है, यादृच्छिक संख्याएं संख्या की एक विशेष श्रेणी (वॉयस फाइलों के पते) के भीतर उत्पन्न होती हैं। यहां रैंडम () कमांड आता है। निम्नलिखित वाक्य रचना है: यादृच्छिक (न्यूनतम, अधिकतम); // यादृच्छिक संख्या न्यूनतम और अधिकतम की सीमा में उत्पन्न होती है। हम प्रत्येक श्रेणी की न्यूनतम संख्या और अधिकतम संख्या को परिभाषित करते हैं, और इसे लागू करने से हमारा कोड कुछ इस तरह दिखता है: यदि (voice.indexOf ("आपका नाम")> - १)){मिनट नहीं = ०; maxNo = 5;RandomNumber = random(minNo, maxNo);}अब उत्तरों का प्रबंधन आता है। अंतिम चरण में मैंने कहा था कि एल्गोरिथम के आधार पर संख्याएँ बढ़ाई या घटाई जाती हैं। यह एल्गोरिथम वह है जिसकी हम अभी चर्चा कर रहे हैं। यह भाग इस अर्थ में बहुत महत्वपूर्ण है कि आप अपनी इच्छानुसार केवल वृद्धि या कमी नहीं कर सकते। बढ़ी हुई या घटी हुई संख्या सीमा में होनी चाहिए। मान लीजिए कि उपरोक्त मामले में, कीवर्ड "आपका नाम" के लिए, हमारे पास 0 से 5 तक की सीमा है, और उत्पन्न यादृच्छिक संख्या 5 है, ठीक है, यदि आप इसे बढ़ाते हैं, तो आप अंत में किसी अन्य कीवर्ड की ध्वनि फ़ाइल चलाएंगे।.आपको क्या लगता है कि यह कैसा होगा? आप पूछते हैं, "अरे, कृपया मुझे अपना नाम बताएं।", और रोबोट जवाब देता है, "मुझे कुकीज़ और इलेक्ट्रिक चार्ज खाना पसंद है।" न्यूनतम संख्या का भी यही हाल है। यदि उत्पन्न यादृच्छिक संख्या 0 है, तो आप इसे घटा नहीं सकते। तो इस कारण से एल्गोरिदम बहुत महत्वपूर्ण है। इसके बारे में सोचें: जब संख्या अधिकतम संख्या से कम होती है और न्यूनतम संख्या से अधिक होने पर घटती है तो हम वृद्धि करने में सक्षम होते हैं। जब उत्पन्न संख्या 0 के बराबर या 5 से कम होती है, तो संख्या में वृद्धि होती है। दूसरी ओर, जब यह 5 के बराबर होता है, तो हम इसे घटाते हैं, यह सुनिश्चित करने के लिए कि संख्या निर्दिष्ट सीमा के भीतर है। अब निषिद्ध बयानों के बारे में आ रहे हैं। जैसा कि उल्लेख किया गया है कि वे EEPROM में संग्रहीत हैं। इसके लिए सबसे पहले हम प्रतिबंधित एरे में फ्री मेमोरी सर्च करते हैं। मान लीजिए पता 4 मुफ़्त है, तो हम फ़ाइल नंबर को फ्री ऐरे एड्रेस में इनपुट करते हैं और साथ ही EEPROM में एक ही पता लिखते हैं। (int i; i if (never == 0) { EEPROM.write(कभी नहीं , मेमोरी);}} इतना ही, Wtv020sd16p मॉड्यूल को मॉड्यूल.playVoice() कमांड और प्रस्तावित फ़ाइल नंबर का उपयोग करके चलाया जाएगा। Wtv020 मॉड्यूल के कामकाज पर बाद में चर्चा की जाएगी।

चरण 9: भावनाओं को सम्मिलित करना

भावनाओं को सम्मिलित करना
भावनाओं को सम्मिलित करना
भावनाओं को सम्मिलित करना
भावनाओं को सम्मिलित करना
भावनाओं को सम्मिलित करना
भावनाओं को सम्मिलित करना

अब तक हमारा रोबोट हम जो कहते हैं उसे पहचानने, मेमोरी में स्टोर करने और प्रश्नों के लिए उपयुक्त उत्तर खोजने में सक्षम है। अब भावनाओं को सम्मिलित करने का प्रश्न आता है। निश्चित रूप से हर कोई एक जीवंत चेहरे के साथ-साथ कुछ बेवकूफी भरे सवाल-जवाब कार्यक्रम को पसंद करेगा। परियोजना में 16x2 एलसीडी का उपयोग किया जाता है। यह आंखों को प्रिंट करने के लिए काफी अच्छा है। आंखें बनाने के लिए हमें कस्टम कैरेक्टर फ़ंक्शन का उपयोग करने की आवश्यकता है। कस्टम वर्ण हमें पिक्सेल को परिभाषित करके नए वर्ण बनाने में सक्षम बनाता है। हम इसके बारे में थोड़ी देर बाद विस्तार से जानेंगे। सबसे पहले यह याद रखना महत्वपूर्ण है कि केवल 8 कस्टम वर्ण Arduino द्वारा समर्थित हैं। इसलिए हमें केवल 8 वर्णों के साथ भावनाओं को प्रबंधित करने की आवश्यकता है। प्रत्येक वर्ण एक विशेष बॉक्स में मुद्रित किया जाएगा, और इसमें 16 कॉलम और 2 पंक्तियाँ हैं जो कुल 32 बॉक्स बनाती हैं।

आप Arduino में कस्टम वर्णों के बारे में ऑनलाइन अच्छी जानकारी प्राप्त कर सकते हैं। इस लिंक पर भी जा सकते हैं:

[कस्टम वर्ण Arduino]कस्टम वर्ण बाइट की संरचना कुछ इस तरह दिखेगी:

सामान्य रूप: बायां बॉक्स0b01111, 0b01111, 0b01111, 0b01111, 0b01111, 0b01111, 0b01111, 0b01111, दायां बॉक्स0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, ये दो बाइट्स प्रत्येक आंख का 1/4 भाग बनाते हैं।. तो इसका मतलब है कि हमें एक पूरी आंख भरने के लिए कुल 4 बक्सों की आवश्यकता होगी। बाईं ओर दो पंक्तियाँ और दाईं ओर दो पंक्तियाँ एक आँख के लिए कुल चार बक्से बनाती हैं। बायां बॉक्स बाइट बाईं ओर दो पंक्तियों को कवर करेगा और दायां बॉक्स दाहिनी पंक्तियों को कवर करेगा। तो यह हव्वा की पूरी आंख बनाता है। और अब दूसरी आंख के लिए भी यही दोहराते हुए, हम हव्वा का तटस्थ रूप प्राप्त करते हैं। अब यह याद रखना महत्वपूर्ण है कि हमने उपलब्ध आठ कस्टम वर्णों में से एक का उपयोग किया है। और कुल पाँच भावनाएँ हैं: उल्लास, उदास, भेंगापन, सामान्य और पलक। शेष सात कस्टम वर्णों के रूप में, हमें सभी भावों को फिट करने के लिए समायोजित करने की आवश्यकता है। जगह बनाने के लिए हम प्रत्येक आंख के लिए 2 बक्से का उपयोग करेंगे। कोई आश्चर्य नहीं कि आकार थोड़ा छोटा होगा, लेकिन इसे मानव आंख से नजरअंदाज कर दिया जाएगा। बस एलसीडी कार्यों के बीच कुछ देरी जोड़ना सुनिश्चित करें, अन्यथा Arduino अस्थिर हो जाएगा।

चरण 10: कनेक्शन बनाना

संबंध बनाना
संबंध बनाना
संबंध बनाना
संबंध बनाना
संबंध बनाना
संबंध बनाना

एलसीडी मॉड्यूल: पिन को यहां बताए अनुसार कनेक्ट करें: आरएस: डिग पिन 12 आरडब्ल्यू: जीएनडी सक्षम: 7 डी 4: डिग पिन 8 डी 5: डिग पिन 9 डी 6: डिग पिन 10 डी 7: डिग पिन 13 ए (एनोड) से 5 वीके (कैथोड) से जीएनडी एचसी 05 मॉड्यूल:इन कनेक्शनों का पालन करें:HC 05 TX पिन से Arduino RX पिनHC 05 RX पिन से Arduino TX पिनस्टेट पिन को Arduino डिग पिन 11संचार TX और RX पिन की मदद से किया जाता है। स्टेट पिन यह जांचने के लिए आवश्यक है कि एचसी 05 के माध्यम से जुड़ा है या निष्क्रिय है। डब्ल्यूटीवी 020 एसडी 16 पी मॉड्यूल पिन1: रीसेट पिन, इसे डिग पिन से कनेक्ट करें 2pin7: क्लॉक पिन, इसे डिग पिन से कनेक्ट करें 3pin10: डेटा पिन, कनेक्ट करें पिन को खोदने के लिए 4pin15: व्यस्त पिन, डिग पिन से कनेक्ट करें 5pin2: इस पिन को वॉल्यूम के माध्यम से एक एम्पलीफायर से कनेक्ट करें और महिला ऑडियो जैक के लिए भी। पिन 4 को स्पीकर + पिन 5 से जोड़ा जाना चाहिए ताकि स्पीकर से कनेक्ट किया जा सके। 8वें पिन को gnd और 16वें पिन में 3.3v बिजली की आपूर्ति प्रदान करें।

एम्पलीफायर ईव के आंतरिक स्पीकर को चलाने में मदद करेगा, जबकि ऑडियो जैक बाहरी एम्पलीफायर और बड़े स्पीकर से कनेक्ट करना है।

चरण 11: WTV020SD16p मॉड्यूल (वैकल्पिक)

Image
Image
WTV020SD16p मॉड्यूल (वैकल्पिक)
WTV020SD16p मॉड्यूल (वैकल्पिक)
WTV020SD16p मॉड्यूल (वैकल्पिक)
WTV020SD16p मॉड्यूल (वैकल्पिक)

नोट: यह चरण वैकल्पिक है। यह डब्ल्यूटीवी 020 एसडी 16पी मॉड्यूल के कामकाज और विवरण से संबंधित है।

आप इस लिंक में ध्वनि मॉड्यूल का डेमो देख सकते हैं:

[वीडियो चलाएं]

रोबोट का स्पीकिंग मोड WTV 020 SD मॉड्यूल द्वारा पूरा किया जाता है। मॉड्यूल का उपयोग रोबोट के लिए वॉयस फाइल चलाने के लिए किया जाता है। जब कोई प्रश्न पूछा जाता है, तो arduino एसडी कार्ड में मॉड्यूल को संबंधित वॉयस फाइल चलाएगा। Arduino, रीसेट, घड़ी, डेटा और व्यस्त पिन के साथ संचार करने के लिए मॉड्यूल पर चार सीरियल डेटा लाइनें हैं और हम आवश्यक फ़ाइल को चलाने के लिए.playVoice () कमांड का उपयोग करते हैं। उदाहरण के लिए:module.playVoice (9): // एसडी कार्ड पर संग्रहीत फ़ाइल 9 चलाएंयाद रखें कि फाइलों के नाम दशमलव (0001, 0002…) में होने चाहिए। और यह कि फाइलें या तो AD4 या WAV फॉर्मेट में होनी चाहिए। इसके अलावा मॉड्यूल केवल 1GB माइक्रो एसडी कार्ड पर काम करता है। कुछ मॉड्यूल 2GB कार्ड पर भी काम करते हैं और कार्ड में अधिकतम 504 वॉयस फाइलें हो सकती हैं। तो आप अच्छी संख्या में प्रश्नों को चलाने के लिए अच्छी संख्या में ध्वनि फ़ाइलें शामिल कर सकते हैं।

आप अपनी आवाज AD4 फाइलें भी बना सकते हैं। सबसे पहले, आपके पास दो सॉफ्टवेयर, एक साउंड एडिटिंग सॉफ्टवेयर और एक सॉफ्टवेयर होना चाहिए जिसे 4D SOMO TOOL कहा जाता है जो फाइलों को AD4 फॉर्मेट में बदल देगा। दूसरे, आपको रोबोट वॉयस तैयार करना है। आप या तो टेक्स्ट को स्पीच में बदल सकते हैं या यहां तक कि अपनी खुद की आवाज रिकॉर्ड कर सकते हैं और रोबोट की आवाज बना सकते हैं। इन दोनों को साउंड एडिटिंग सॉफ्टवेयर में किया जा सकता है। लेकिन निश्चित रूप से, रोबोट अच्छे नहीं लगते अगर वे इंसानों की आवाज बोलते हैं। इसलिए टेक्स्ट को स्पीच में बदलना बेहतर होगा। माइक्रोसॉफ्ट अन्ना और माइक्रोसॉफ्ट सैम योर कंप्यूटर जैसे विभिन्न इंजन हैं जो ऐसा करने में मदद करेंगे। मेरा माइक्रोसॉफ्ट ईवा पर आधारित है। इसकी आवाज काफी हद तक Cortana से मेल खाती है। वॉयस फाइल तैयार करने के बाद आपको इसे 32000 हर्ट्ज और डब्ल्यूएवी फॉर्मेट में सेव करना होगा। ऐसा इसलिए है क्योंकि मॉड्यूल 32000 हर्ट्ज तक वॉयस फाइल चला सकता है। फिर फ़ाइलों को AD4 प्रारूप में बदलने के लिए 4D SOMO टूल का उपयोग करें। ऐसा करने के लिए, बस SOMO TOOL खोलें, फाइलों का चयन करें, और AD4 एनकोड पर क्लिक करें और आपकी आवाज फाइलें तैयार हैं। आप संदर्भ के लिए ऊपर दी गई तस्वीर देख सकते हैं। यदि आप रोबोटिक आवाज बनाने में अधिक जानकारी चाहते हैं, तो आप यहां जा सकते हैं: [रोबोटिक आवाज बनाना]

चरण 12: सॉफ्टवेयर भाग

सॉफ्टवेयर भाग
सॉफ्टवेयर भाग
सॉफ्टवेयर भाग
सॉफ्टवेयर भाग
सॉफ्टवेयर भाग
सॉफ्टवेयर भाग

arduino Pro mini में प्रोग्राम करने में थोड़ी दिक्कत होती है। वास्तव में कोई समस्या नहीं है, बस एक अतिरिक्त कदम है। Arduino Pro मिनी में अन्य Arduino बोर्डों की तरह कोई इनबिल्ट प्रोग्रामर नहीं है। तो आपको या तो एक बाहरी या एक पुराना arduino UNO खरीदने की ज़रूरत है। यहां चरण वर्णन करता है कि Arduino UNO का उपयोग करके प्रोग्राम को कैसे अपलोड किया जाए। बस दुर्घटना से एक पुराने Arduino UNO बोर्ड को पकड़ें और Atmega 328p को बाहर निकालें। फिर निम्नलिखित के रूप में कनेक्ट करें: १। प्रो मिनी 2 पर यूएनओ पर TX पिन पर TX पिन। यूएनओ के आरएक्स पिन से प्रो मिनी 3 के आरएक्स पिन तक। UNO के पिन को Pro Mini4 के रीसेट पिन पर रीसेट करें। प्रो मिनी के वीसीसी और ग्राउंड को यूएनओ से कनेक्ट करें। Arduino प्रोग्राम, वॉयस रिकग्निशन सॉफ्टवेयर और नीचे दिए गए पुस्तकालयों को डाउनलोड करें। कार्यक्रम अभी भी विकसित किया जा रहा है। तो अगर आपको इसके बारे में कोई समस्या है, तो बेझिझक पूछें। फिर केबल को कंप्यूटर में प्लग करें। बोर्ड को Arduino Pro Mini के रूप में चुनें, और सही COM पोर्ट चुनें। फिर अपलोड बटन दबाएं और देखें कि प्रोग्राम आपके प्रो मिनी पर अपलोड हो गया है।

फिर वॉयस रिकग्निशन सॉफ्टवेयर और वॉयस फाइल डाउनलोड करें।

चरण 13: शरीर की तैयारी

शरीर की तैयारी
शरीर की तैयारी
शरीर की तैयारी
शरीर की तैयारी
शरीर की तैयारी
शरीर की तैयारी

मुझे फ्लॉस का एक छोटा सा बॉक्स मिला और मैंने पाया कि यह शरीर के लिए एकदम सही है। आप अपनी कार्यशाला में मिलने वाले किसी भी बॉक्स का उपयोग कर सकते हैं, या आप कार्डबोर्ड से एक बना सकते हैं। एलसीडी मॉड्यूल संलग्न करने के लिए बस एक छोटा आयताकार टुकड़ा काट लें। शीर्ष पर, मैंने वॉल्यूम संलग्न करने के लिए और स्विच और ऑडियो कनेक्टर को जोड़ने के लिए किनारों पर एक छोटा सा छेद काट दिया। मैंने पहियों के लिए बॉक्स के किनारों पर दो बोतल के ढक्कन लगाए। बस सुनिश्चित करें कि बॉक्स में सर्किट को अंदर रखने के लिए पर्याप्त जगह है। शरीर के साथ-साथ सर्किट में एक स्विच संलग्न करें, फिर बॉक्स के शीर्ष पर वॉल्यूम। फिर बस सर्किट को अंदर डालें और आपका रोबोट पूरा हो गया है।

चरण 14: अच्छा किया

बहुत बढ़िया!
बहुत बढ़िया!
बहुत बढ़िया!
बहुत बढ़िया!

अब आपने अपना प्यारा सा रोबोट प्रोजेक्ट पूरा कर लिया है जो आपसे बात कर सकता है, और आपको खुश कर सकता है। जब आपका प्रोजेक्ट पूरा हो जाता है और पूरी तरह से काम कर रहा होता है, तो DIYer होने का यह सबसे खुशी का बिंदु होता है। यदि आप एक प्रयास में सफल नहीं होते हैं, तो चिंता न करें, इसके लिए आपको कड़ी मेहनत करने की आवश्यकता है ताकि आप अपने रोबोट के प्रत्येक भाग को समझ सकें। और यहीं से DIYers इस दुनिया में आते हैं।लेकिन यह परियोजना का अंत नहीं है। ईव हमेशा मेरे द्वारा या आप जैसे DIYers द्वारा अधिक से अधिक विकसित किया जाएगा। मुझे यह सुनना अच्छा लगेगा कि आपने इस निर्देश को देखकर क्या बनाया है। सादर, RS3655

सिफारिश की: