विषयसूची:
- आपूर्ति
- चरण 1: रसोई ध्वनि के नमूने एकत्र करना
- चरण 2: Arduino/Matrix डिस्प्ले तैयार करना
- चरण 3: क्लासिफायरियर चलाना और ध्वनि की पहचान करना
- चरण 4: लेगो हाउसिंग बनाना
वीडियो: कस्टम किचन साउंड आइडेंटिफ़ायर: 4 चरण
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:20
इस वसंत में एक इंटरैक्टिव सिस्टम कोर्स में हमारी अंतिम परियोजना के लिए, हमने सपोर्ट-वेक्टर मशीन वर्गीकरण का उपयोग करके रसोई में सामान्य ध्वनियों को पहचानने और देखने के लिए एक वास्तविक समय प्रणाली बनाई। सिस्टम में ऑडियो सैंपलिंग/वर्गीकरण के लिए एक लैपटॉप और विज़ुअलाइज़ेशन के लिए एक Arduino/dot मैट्रिक्स डिस्प्ले शामिल है। आपकी अपनी रसोई से आने वाली ध्वनियों के लिए इस प्रणाली का अपना संस्करण बनाने के लिए निम्नलिखित मार्गदर्शिका है।
हमारा मूल उपयोग मामला एक बधिर और सुनने में कठिन व्यक्ति की रसोई के लिए एक उपकरण के रूप में था, लेकिन इस प्रणाली को सैद्धांतिक रूप से विभिन्न संदर्भों में ध्वनियों के एक सेट की पहचान करने के लिए अनुकूलित किया जा सकता है। रसोई शुरू करने के लिए एक आदर्श स्थान था, क्योंकि यह अपेक्षाकृत शांत होता है और इसमें उचित मात्रा में सरल, विशिष्ट ध्वनियाँ होती हैं।
इस परियोजना के लिए एक गिटहब भंडार यहां पाया जा सकता है।
आपूर्ति
- हेडर के साथ Arduino लियोनार्डो माइक्रोकंट्रोलर
- Arduino के लिए KEYESTUDIO 16x16 डॉट मैट्रिक्स एलईडी डिस्प्ले
- ब्रेडबोर्ड जम्पर तार
- माइक्रो-यूएसबी से यूएसबी 2.0 केबल
-
जुपिटर नोटबुक वाला एक लैपटॉप (एनाकोंडा इंस्टॉलेशन)
जुपिटर नोटबुक के लिए एक शुरुआती गाइड यहां पाया जा सकता है।
-
सिस्टम के आवास के लिए बेमेल लेगो ईंटों की पर्याप्त मात्रा
(लेकिन वास्तव में आप इन्हें किसी भी DIY निर्माण सामग्री के साथ स्थानापन्न कर सकते हैं जो आप चाहते हैं!)
चरण 1: रसोई ध्वनि के नमूने एकत्र करना
चित्राबॉव: इस संग्रह प्रक्रिया का उपयोग करके एक कांटा और चाकू को एक साथ क्लिक करने की रिकॉर्डिंग से लिया गया ऑडियो डेटा।
रीयल-टाइम ध्वनियों की पहचान करने के लिए, हमें तुलना के लिए गुणवत्ता वाले उदाहरणों के साथ अपने मशीन लर्निंग मॉडल की आपूर्ति करने की आवश्यकता है। हमने इस प्रक्रिया के लिए एक ज्यूपिटर नोटबुक बनाई, जिसे यहां या हमारे प्रोजेक्ट के GitHub रिपॉजिटरी के माध्यम से एक्सेस किया जा सकता है। भंडार में परीक्षण उद्देश्यों के लिए दो अलग-अलग रसोई से नमूना संग्रह भी शामिल है।
चरण १.१: अपनी कार्यशील ज्यूपिटर नोटबुक निर्देशिका में कलेक्टसैंपल्स.आईपीएनबी नोटबुक की प्रतिलिपि बनाएँ और इसे खोलें।
चरण १.२: प्रत्येक सेल को एक-एक करके चलाएँ, हमारे द्वारा शीर्षकों में दिए गए किसी भी नोट पर ध्यान दें। जब आप "नमूना रिकॉर्डिंग" शीर्षक वाले एक तक पहुँच जाएँ तो रुक जाएँ।
नोट: इस नोटबुक में कई पायथन लाइब्रेरी का उपयोग किया गया है, और प्रत्येक को प्रोजेक्ट में सफलतापूर्वक आयात करने से पहले इंस्टॉलेशन की आवश्यकता होती है। इसे मैन्युअल रूप से करने के लिए आपका स्वागत है, हालांकि ज्यूपिटर नोटबुक के भीतर पुस्तकालय की स्थापना के लिए एक गाइड यहां पाया जा सकता है।
चरण १.३: इस परियोजना के लिए अपनी कार्यशील निर्देशिका में अपने नमूनों को संग्रहीत करने के लिए एक खाली निर्देशिका बनाएँ।
चरण 1.4: अपनी खाली निर्देशिका के स्थान से मिलान करने के लिए "नमूना रिकॉर्डिंग" सेल में SAMPLES_LOCATION चर संपादित करें।
चरण १.५: SOUND_LABELS चर में जितनी चाहें उतनी ध्वनियाँ जोड़ें या निकालें।
नमूना रिकॉर्डिंग कोड काम करने के लिए, इस चर की प्रत्येक पंक्ति को अल्पविराम और निम्न रूप से अलग किया जाना चाहिए:
'टीएस': ध्वनि ("लक्षित ध्वनि", "टीएस")
चरण १.६: जब सभी लेबल जोड़े गए हों, तो नमूना संग्रह प्रक्रिया शुरू करने के साथ "नमूना रिकॉर्डिंग" सेल का मूल्यांकन करें। सेल के आउटपुट में, आपको लेबल में प्रत्येक ध्वनि के साथ जुड़े संक्षिप्त कोड को इनपुट करने के लिए कहा जाएगा (यानी, टारगेटेडसाउंड के लिए "ts")। अभी ऐसा मत करो।
चरण 1.7: अपने लैपटॉप को रसोई में ले जाएं और इसे उस क्षेत्र में रखें जहां आप तैयार सिस्टम को रखने की सबसे अधिक संभावना रखते हैं। यह स्थान अच्छे ऑडियो संग्रह के लिए केंद्रीय होना चाहिए, और आपके इलेक्ट्रॉनिक्स की सुरक्षा के लिए सूखा और किसी भी संभावित फैल से दूर होना चाहिए।
चरण १.८: अपनी पहली लक्षित ध्वनि तैयार करें। यदि यह एक ओवन टाइमर बीप है, तो आप टाइमर को एक मिनट पर सेट कर सकते हैं और अगले चरण को जारी रखने से पहले इसे २० सेकंड तक गिनने के लिए प्रतीक्षा कर सकते हैं।
चरण 1.9: प्रॉम्प्ट में लेबल कोड टाइप करें (यानी, "ts"), और एंटर/रिटर्न दबाएं।
सिस्टम कमरे के परिवेशी शोर से अलग ध्वनि घटना को सुनना शुरू कर देगा। इस ध्वनि घटना को महसूस करने पर, यह तब तक रिकॉर्ड करना शुरू कर देगा जब तक कि यह महसूस न हो जाए कि कमरे में ध्वनि परिवेश के स्तर पर वापस आ गई है। यह तब प्रारूप में SAMPLES_LOCATION में पहचानी गई निर्देशिका में ऑडियो को 16-बिट WAV फ़ाइल के रूप में सहेजेगा:
टारगेटेडसाउंड_#_कैप्चर्ड.वाव
इस फ़ाइल नाम का # भाग आपके द्वारा एकत्रित लक्षित ध्वनि के नमूनों की संख्या से मेल खाता है। WAV फ़ाइल सहेजे जाने के बाद, प्रॉम्प्ट दोहराएगा, जिससे आप सेल के एकल निष्पादन में एक ही ध्वनि के कई नमूने एकत्र कर सकते हैं।
इस फ़ाइल नाम को न बदलें। यह अगले चरण के लिए महत्वपूर्ण है।
चरण १.१०: चरण १.८ और १.९ को तब तक दोहराएं जब तक आप प्रत्येक ध्वनि के ५-१० नमूने एकत्र नहीं कर लेते।
चरण १.११: निष्पादन से बाहर निकलने के लिए समाप्त होने पर "x" इनपुट करें।
चेतावनी: इस तरह से सेल से बाहर निकलने में विफलता के कारण नोटबुक क्रैश हो सकता है। इस स्थिति में, नोटबुक कर्नेल को रीसेट किया जाना चाहिए और प्रत्येक सेल ऊपर से फिर से चलना चाहिए।
चरण 1.11 (वैकल्पिक): "क्विक साउंड विज़ुअलाइज़ेशन" सेल में अलग-अलग फ़ाइलों के WAV डेटा की जाँच करें ताकि यह सुनिश्चित हो सके कि आपने सभी वांछित जानकारी कैप्चर की है।
कुछ सुझाव:
- रिकॉर्ड करें जब आपकी रसोई शांत हो।
- एक बार में केवल एक ध्वनि रिकॉर्ड करें। सिस्टम ध्वनियों में ओवरलैप को अलग नहीं कर सकता।
- प्रत्येक ध्वनि परीक्षण को यथासंभव सुसंगत बनाने का प्रयास करें। इससे पहचान की सटीकता में मदद मिलेगी।
- रिकॉर्डिंग सेल का पुनर्मूल्यांकन करने से फ़ाइल नाम में # मान रीसेट हो जाएगा और उस # से मेल खाने वाली किसी भी मौजूदा फ़ाइल को अधिलेखित कर देगा। हमने एक बार में एक ध्वनि के सभी नमूनों को रिकॉर्ड करना सबसे आसान पाया, फिर रिकॉर्डिंग सेल को रोक दिया।
- यदि सिस्टम आपकी लक्षित ध्वनि नहीं उठा रहा है, तो थ्रेशोल्ड मान को कम करने का प्रयास करें (शुरू करने के लिए 30 पर सेट करें) और सेल का पुनर्मूल्यांकन करें।
- यदि रिकॉर्डिंग लक्षित ध्वनि के बाहर अन्य ध्वनियों द्वारा ट्रिगर की जाती है, तो थ्रेशोल्ड मान (शुरू करने के लिए 30 पर सेट) को बढ़ाने का प्रयास करें और सेल का पुनर्मूल्यांकन करें।
चरण 2: Arduino/Matrix डिस्प्ले तैयार करना
इसके बाद, हम एक Arduino लियोनार्डो और KEYESTUDIO 16x16 LED डॉट मैट्रिक्स डिस्प्ले का उपयोग करके विज़ुअलाइज़ेशन सिस्टम स्थापित करने जा रहे हैं। यह पता लगाए गए ध्वनियों के वर्गीकरण मॉडल की भविष्यवाणी को आउटपुट करने के लिए है। पहले की तरह, हमने यहां और प्रोजेक्ट के GitHub रिपॉजिटरी में सभी आवश्यक फ़ाइलें प्रदान की हैं।
चरण २.१: ऊपर दिए गए आरेख के अनुसार Arduino और LED मैट्रिक्स को तार दें। KEYESTUDIO में उनके डॉट मैट्रिक्स से जुड़ने के लिए तार शामिल हैं, लेकिन इन तारों को Arduino से जोड़ने के लिए ब्रेडबोर्ड जम्पर तारों की आवश्यकता होगी
चरण २.२: Arduino IDE का उपयोग करके "arduino_listener.ino" खोलें और इसे लियोनार्डो पर अपलोड करें। यदि सही ढंग से वायर्ड किया गया है, तो आपको "सुनना" आइकन (वाई-फाई जैसा दिखता है) दिखाई देना चाहिए जैसा कि ऊपर की छवि में दिखाया गया है।
चरण २.३: उन चिह्नों को तैयार करें जिन्हें आप अपनी प्रत्येक लक्षित ध्वनि के लिए प्रदर्शित करना चाहते हैं। यह जानने के लिए कि कौन से एल ई डी को प्रकाश में लाना है, आइकन को Arduino से मैट्रिक्स में बाइट सरणी के रूप में भेजा जाना चाहिए। उदाहरण के लिए, हमारा कॉफी कप आइकन (ऊपर की छवि में) इस प्रारूप में मैट्रिक्स को भेजा जाता है:
{
0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf, 0xf, 0xf, 0xf, 0xf7, 0xf7, 0xf7 0xfb, 0xf7, 0x0f, 0xdf, 0x1f, 0xff, 0xff};
हमने ड्रॉपडाउन मेनू से चयनित 16 कॉलम, 16 पंक्तियों और "मोनोक्रोमैटिक, 8 पिक्सल प्रति बाइट, वर्टिकल सेटिंग" के साथ डॉट 2 पिक ऑनलाइन टूल का उपयोग करके अपने आइकनों को आकर्षित किया। हमारा "sample_icon_bytes.txt" सरणी में पाया जा सकता है।
नोट: ऐसे ऑनलाइन टूल भी हो सकते हैं जो अपलोड की गई फ़ाइलों के साथ स्वचालित रूप से ऐसा कर सकते हैं।
चरण २.४: प्रत्येक चिह्न को ड्रा करें। ड्राइंग समाप्त होने पर, "सरणी में कनवर्ट करें" चुनें।
चरण २.५: "arduino_listening.ino" कोड के शीर्ष पर परिभाषित अनावश्यक चिह्नों को इच्छानुसार बदलें। आइकन का वर्णन करते हुए एक टिप्पणी जोड़ना सुनिश्चित करें ताकि आपको याद रहे कि कौन सा है!
चरण 2.6: नया कोड Arduino पर अपलोड करें। फ़ाइल को अभी बंद न करें, हमें अगले चरण के लिए इसकी आवश्यकता होगी।
चरण 3: क्लासिफायरियर चलाना और ध्वनि की पहचान करना
अब सिस्टम को एक साथ रखने का समय आ गया है। वर्गीकरण पाइपलाइन, Arduino संचार, और लाइव ऑडियो कैप्चर सभी एक एकल Arduino नोटबुक के माध्यम से किया जाता है, जिसे यहां प्रदान किया गया है या हमारे प्रोजेक्ट के GitHub रिपॉजिटरी के माध्यम से पहुँचा जा सकता है।
चरण ३.१: FullPipeline.ipynb नोटबुक को अपनी कार्यशील Jupyter नोटबुक निर्देशिका में कॉपी करें और इसे खोलें।
चरण ३.२: प्रत्येक सेल को एक-एक करके चलाएँ, हमारे द्वारा शीर्षकों में दिए गए किसी भी नोट पर ध्यान दें। कोई आउटपुट अपेक्षित नहीं है। जब आप "प्रशिक्षण डेटा लोड करें" शीर्षक वाले सेल में पहुँचें तो रुक जाएँ।
चरण 3.3: अपनी पिछली नमूना निर्देशिका के स्थान की मूल निर्देशिका में "प्रशिक्षण डेटा लोड करें" सेल में SAMPLES_LOCATION_ROOT चर संपादित करें। फिर, SAMPLES_DIR_NAME चर को अपनी निर्देशिका के नाम में बदलें। इसलिए यदि आपने कलेक्टसैंपल्स.ipynb में स्थान निर्धारित किया है:
SAMPLES_LOCATION = "/ उपयोगकर्ता/xxxx/दस्तावेज़/किचनसाउंडक्लासिफ़ायर/माईसैंपल्स/न्यूडिर"
अब आप इन चरों को इस पर सेट करेंगे:
SAMPLES_LOCATION_ROOT = "/उपयोगकर्ता/xxxx/दस्तावेज़/किचनसाउंडक्लासिफ़ायर/माई सैंपल/"SAMPLES_DIR_NAME = "NewDir"
हमने गलत होने के मामलों में क्लासिफायरियर में तेजी से बदलाव की अनुमति दी। आप अपने डेटा को ट्यून करने के लिए विभिन्न नमूना संग्रहों के बीच स्विच कर सकते हैं।
चरण ३.४: सेल का मूल्यांकन करें । आपको प्रत्येक संग्रह को सफलतापूर्वक लोड होते देखना चाहिए।
चरण ३.५: प्रत्येक सेल को एक-एक करके चलाना जारी रखें, हमारे द्वारा शीर्षकों में दिए गए किसी भी नोट पर ध्यान दें।
चरण ३.६: जब आप "मैसेजिंग अरुडिनो" सेल पर पहुंचें तो रुक जाएं। उस सीरियल पोर्ट को परिभाषित करें जिसका उपयोग आपका कंप्यूटर PORT_DEF चर में Arduino के साथ संचार के लिए करेगा। यह Arduino IDE में और टूल्स> पोर्ट पर जाकर पाया जा सकता है।
अधिक जानकारी यहां पाई जा सकती है।
चरण 3.8: अपने Arduino IDE को फिर से खोलें। उन जगहों पर जहां आपने आइकॉन में बदलाव किए हैं, ऐरे वैल्यू के आगे के अक्षर को नोट कर लें, लेकिन इसे न बदलें। नीचे दिए गए उदाहरण में, यह "जी" है।
// कचरा निपटान अहस्ताक्षरित चार जी [1] [32] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf7, 0xf7, 0xfb, 0xff, 0xfe, 0xfd, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x27, 0xc3, 0x03, 0xc3, 0x27, 0x2f, 0xff, 0xef, 0xdf, 0xbf, 0xff, 0xff,};
चरण ३.७: (नोटबुक के "मैसेजिंग अरुडिनो" सेल पर लौटते हुए) अपने नमूनों को रिकॉर्ड करने में आपके द्वारा उपयोग किए गए लेबल से मिलान करने के लिए सेल्फ.साउंड डिक्शनरी में लेबल बदलें, सुनिश्चित करें कि प्रत्येक लेबल आपके द्वारा पिछले में नोट किए गए एकल अक्षर से मेल खाता है कदम। "रिकॉर्डिंग" और "सुनना" दोनों कोर सिस्टम कार्यक्षमता का हिस्सा हैं और इन्हें बदला नहीं जाना चाहिए। दूसरे अक्षर को तब तक न बदलें जब तक कि आप Arduino कोड में कुछ अतिरिक्त बदलाव करने में आत्मविश्वास महसूस न करें, क्योंकि यह Arduino/matrix के साथ संचार को गड़बड़ कर देगा।
चरण ३.८: मुख्य कार्य चलाएँ! कोड प्रशिक्षण डेटा को पकड़ लेगा, इसकी प्रमुख विशेषताओं को निकालेगा, उन्हें पाइपलाइन में फीड करेगा, एक वर्गीकरण मॉडल का निर्माण करेगा, फिर ध्वनि घटनाओं को सुनना शुरू करेगा। जब यह एक होश में आता है, तो आप मैट्रिक्स को एक रिकॉर्डिंग प्रतीक (अंदर वृत्त के साथ वर्ग) में बदलते हुए देखेंगे और यह इस डेटा को खंडित करेगा और इसे मॉडल में फीड करेगा। मॉडल जो कुछ भी भविष्यवाणी करता है वह कुछ सेकंड बाद मैट्रिक्स डिस्प्ले पर दिखाई देगा।
आप नीचे सेल के आउटपुट में साथ चल सकते हैं। देखें कि आप इसे कितना सटीक पाते हैं!
चरण 4: लेगो हाउसिंग बनाना
यह मौजमस्ती वाला भाग है! आपने मशीन सीखने के सभी गंभीर कदम उठाए हैं और पूरे एंड-टू-एंड सिस्टम को चालू और चालू किया है, और अब आपको लेगो के साथ एक पुरस्कार के रूप में खेलने को मिलता है। यहां विस्तार करने के लिए बहुत अधिक प्रक्रिया नहीं है। हमने समग्र डिज़ाइन के बारे में बहुत अधिक चिंता किए बिना यहां और वहां पसंद किए गए ब्लॉक जोड़े, और जिस तरह से यह निकला उससे हम खुश हुए।
हमारे चित्रों को आपकी रसोई के लिए अद्वितीय अपने स्वयं के रचनात्मक आवास के लिए एक प्रेरणा के रूप में काम करने दें। हमने Arduino और अधिकांश वायरिंग को एक खोखले मामले में रखा, फिर मैट्रिक्स डिस्प्ले को ओवरहैंग्स के साथ सुरक्षित किया। हमने प्रकाश को थोड़ा फैलाने के लिए डिस्प्ले पर थोड़ा सा पेपर जोड़ा, जिससे हमें लगा कि आइकन स्पष्ट हो गए हैं।
सिफारिश की:
किचन टाइमर: 4 कदम
किचन टाइमर: इसमें gen4-uLCD-35DT की सुविधा है जिसका उपयोग रास्पबेरी पाई प्रोजेक्ट, किचन टाइमर के लिए सेकेंडरी डिस्प्ले के रूप में किया जाएगा। यह अधिकांश माताओं और खाना पकाने के प्रति उत्साही लोगों के लिए एक उपयोगी अनुप्रयोग है। इसका उपयोग खाना बनाते समय समय की निगरानी के लिए किया जा सकता है
किचन स्टिरिंग क्रेन: 4 कदम
किचन स्टिरिंग क्रेन: सभी को नमस्कार, मैं एक खाने का शौकीन हूं और गर्म सूप, ग्रेवी, कस्टर्ड और बहुत कुछ पसंद करता हूं, लेकिन इसके लिए या तो मेरी पत्नी या मैं घंटों तक हलचल या फुसफुसाते हुए बहुत समय बिता रहा हूं। मैं इसे एक लागत प्रभावी डिजाइन बनाने के लिए एक चुनौती के रूप में लेना चाहता था, जो कि स्केल है
Arduino Uno के साथ ध्वनिक उत्तोलन चरण-दर-चरण (8-चरण): 8 चरण
Arduino Uno के साथ ध्वनिक उत्तोलन चरण-दर-चरण (8-चरण): अल्ट्रासोनिक ध्वनि ट्रांसड्यूसर L298N डीसी महिला एडाप्टर बिजली की आपूर्ति एक पुरुष डीसी पिन के साथ Arduino UNOBreadboardयह कैसे काम करता है: सबसे पहले, आप Arduino Uno पर कोड अपलोड करते हैं (यह डिजिटल से लैस एक माइक्रोकंट्रोलर है और कोड (C++) कन्वर्ट करने के लिए एनालॉग पोर्ट
एली मेंट द एलिमेंट आइडेंटिफ़ायर: 4 स्टेप्स
एली मेंट द एलिमेंट आइडेंटिफ़ायर: ऐली एक रूमबा है जिसे अपने कैमरे का उपयोग करके विभिन्न रंगों का पता लगाने में सक्षम होने के लिए प्रोग्राम किया गया है, समझ में आता है कि वह एक चट्टान पर जा रही है ताकि वह खुद को ऊपर गिरने से रोक सके, और रास्ते से हट जाएगी बाधाएं जब उसके बंपर ने कुछ मारा
Arduino का उपयोग करके किचन काउंटर लाइट्स: 3 चरण
Arduino का उपयोग करते हुए किचन काउंटर लाइट्स: पिछले कुछ समय से मैं अपने पैर की उंगलियों को होम ऑटोमेशन में डुबाना चाहता हूं। मैंने एक साधारण परियोजना के साथ शुरुआत करने का फैसला किया। दुर्भाग्य से मैंने इस प्रक्रिया के दौरान कोई फ़ोटो नहीं लिया, लेकिन मैंने पहले अपने विचारों का परीक्षण करने के लिए एक प्रोटोबार्ड का उपयोग किया, और केवल इसे एक साथ मिला दिया