جدول المحتويات:
- اللوازم
- الخطوة 1: جمع عينات صوت المطبخ
- الخطوة 2: تجهيز Arduino / Matrix Display
- الخطوة 3: تشغيل المصنف وتحديد الأصوات
- الخطوة 4: إنشاء إسكان LEGO
فيديو: معرف صوت المطبخ المخصص: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
بالنسبة لمشروعنا الأخير في دورة الأنظمة التفاعلية هذا الربيع ، أنشأنا نظامًا في الوقت الفعلي لتحديد وتصور الأصوات الشائعة في المطبخ باستخدام تصنيف Support-Vector Machine. يتكون النظام من جهاز كمبيوتر محمول لأخذ العينات / التصنيف الصوتي ، وشاشة Arduino / مصفوفة نقطية للتصور. فيما يلي دليل لإنشاء نسختك الخاصة من هذا النظام للأصوات الصادرة من مطبخك.
كانت حالة الاستخدام الأصلية الخاصة بنا بمثابة جهاز لمطبخ شخص أصم وضعاف السمع ، ولكن يمكن من الناحية النظرية تكييف هذا النظام لتحديد مجموعة من الأصوات في مجموعة متنوعة من السياقات. كان المطبخ مكانًا مثاليًا للبدء ، حيث يميل إلى الهدوء نسبيًا ويحتوي على قدر معقول من الأصوات البسيطة والمميزة.
يمكن العثور على مستودع GitHub لهذا المشروع هنا.
اللوازم
- Arduino Leonardo Microcontroller مع رؤوس
- KEYESTUDIO شاشة عرض LED مصفوفة نقطية مقاس 16 × 16 لـ Arduino
- سلك الطائر اللوح
- كابل Micro-USB إلى USB 2.0
-
جهاز كمبيوتر محمول مع دفتر Jupyter (تركيب أناكوندا)
يمكن العثور على دليل المبتدئين إلى 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': الصوت ("TargetedSound"، "ts")
الخطوة 1.6: عند إضافة جميع الملصقات ، يتم تقييم خلية "تسجيل العينة" مع بدء عملية جمع العينات. في إخراج الخلية ، ستتم مطالبتك بإدخال الرمز القصير الذي قمت بربطه بكل صوت في الملصقات (على سبيل المثال ، "ts" لـ TargetedSound). لا تفعل هذا بعد.
الخطوة 1.7: اصطحب الكمبيوتر المحمول إلى المطبخ وضعه في المنطقة التي من المرجح أن تضع فيها النظام النهائي. يجب أن يكون هذا الموقع مركزيًا لجمع الصوت بشكل جيد وأن يكون جافًا وبعيدًا عن أي انسكابات محتملة لحماية الأجهزة الإلكترونية الخاصة بك.
الخطوة 1.8: قم بإعداد أول صوت مستهدف. إذا كانت هذه إشارة صوتية خاصة بمؤقت الفرن ، فيمكنك ضبط المؤقت على دقيقة واحدة وانتظار العد التنازلي حتى 20 ثانية أو نحو ذلك قبل المتابعة إلى الخطوة التالية.
الخطوة 1.9: اكتب رمز التسمية في الموجه (على سبيل المثال ، "ts") ، واضغط على Enter / Return.
سيبدأ النظام في الاستماع لحدث صوتي متميز عن الضوضاء المحيطة بالغرفة. عند استشعار هذا الحدث الصوتي ، سيبدأ التسجيل حتى يستشعر الصوت في الغرفة قد عاد إلى المستويات المحيطة. سيقوم بعد ذلك بحفظ الصوت كملف WAV 16 بت في الدليل المحدد في SAMPLES_LOCATION بالتنسيق:
TargetedSound _ # _ capture.wav
يتوافق الجزء # من اسم الملف هذا مع عدد عينات الصوت المستهدف الذي جمعته. بعد حفظ ملف WAV ، ستتكرر المطالبة ، مما يسمح لك بجمع عدة عينات من الصوت نفسه في تنفيذ واحد للخلية.
لا تغير اسم الملف هذا. من المهم للخطوة التالية.
الخطوة 1.10: كرر الخطوتين 1.8 و 1.9 حتى تجمع 5-10 عينات من كل صوت.
الخطوة 1.11: أدخل "x" عند الانتهاء للخروج من التنفيذ.
تحذير: قد يؤدي الفشل في إنهاء الخلية بهذه الطريقة إلى تعطل دفتر الملاحظات. في هذه الحالة ، يجب إعادة تعيين نواة الكمبيوتر الدفتري وتشغيل كل خلية مرة أخرى من الأعلى.
الخطوة 1.11 (اختياري): تحقق من بيانات WAV للملفات الفردية في خلية "Quick Sound Visualization" للتأكد من أنك التقطت جميع المعلومات المطلوبة.
بعض النصائح:
- سجل عندما يكون مطبخك هادئًا.
- سجل صوت واحد فقط مرة واحدة. لا يستطيع النظام تمييز التداخل في الأصوات.
- حاول أن تجعل كل تجربة سليمة متسقة قدر الإمكان. سيساعد هذا في دقة تحديد الهوية.
- ستؤدي إعادة تقييم خلية التسجيل إلى إعادة تعيين القيمة # في اسم الملف والكتابة فوق أي ملفات موجودة تطابق ذلك #. وجدنا أنه من الأسهل تسجيل جميع عينات صوت واحد مرة واحدة ، ثم إيقاف خلية التسجيل.
- إذا كان النظام لا يلتقط الصوت المستهدف ، فحاول خفض قيمة THRESHOLD (اضبطها على 30 للبدء) وأعد تقييم الخلية.
- إذا تم تشغيل التسجيل بأصوات أخرى خارج الصوت المستهدف ، فحاول رفع قيمة THRESHOLD (اضبط على 30 للبدء) وأعد تقييم الخلية.
الخطوة 2: تجهيز Arduino / Matrix Display
بعد ذلك ، سنقوم بإعداد نظام التصور باستخدام 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 إلى المصفوفة كمصفوفة بايت. على سبيل المثال ، يتم إرسال رمز فنجان القهوة الخاص بنا (في الصورة أعلاه) إلى المصفوفة بهذا التنسيق:
{
: 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 = "/ Users / xxxx / Documents / KitchenSoundClassifier / MySamples /" SAMPLES_DIR_NAME = "NewDir"
لقد سمحنا بإجراء تغييرات سريعة على المصنف في حالات عدم الدقة. يمكنك التبديل بين مجموعات العينات المختلفة لضبط بياناتك.
الخطوة 3.4: قم بتقييم الخلية. يجب أن ترى كل مجموعة تم تحميلها بنجاح.
الخطوة 3.5: استمر في تشغيل كل خلية واحدة تلو الأخرى ، مع الانتباه إلى أي ملاحظات قدمناها في العناوين.
الخطوة 3.6: توقف عندما تصل إلى خلية "Messaging Arduino". حدد المنفذ التسلسلي الذي سيستخدمه جهاز الكمبيوتر الخاص بك للاتصال بـ Arduino في متغير PORT_DEF. يمكن العثور على هذا في Arduino IDE والانتقال إلى Tools> Port.
ويمكن الاطلاع على مزيد من المعلومات هنا.
الخطوة 3.8: أعد فتح Arduino IDE. في الأماكن التي أجريت فيها تغييرات على الرموز ، قم بتدوين الحرف بجوار قيمة الصفيف ، لكن لا تقم بتغييره. في المثال أدناه ، هذا هو "g".
// التخلص من النفايات ، 0xff ، 0x2f ، 0x27 ، 0xc3 ، 0x03 ، 0xc3 ، 0x27 ، 0x2f ، 0xff ، 0xef ، 0xdf ، 0xbf ، 0xff ، 0xff ،} ؛
الخطوة 3.7: (العودة إلى خلية "Messaging Arduino" في دفتر الملاحظات) قم بتغيير الملصقات في قاموس self.sounds لمطابقة التسميات التي استخدمتها في تسجيل العينات ، مع التأكد من أن كل ملصق يتوافق مع الحرف الفردي الذي سجلته في السابق خطوة. "التسجيل" و "الاستماع" كلاهما جزء من وظائف النظام الأساسية ولا ينبغي تغييرهما. لا تقم بتغيير الحرف الثاني إلا إذا كنت واثقًا من إجراء بعض التغييرات الإضافية على كود Arduino أيضًا ، حيث سيؤدي ذلك إلى إفساد التواصل مع Arduino / matrix.
الخطوة 3.8: قم بتشغيل الوظيفة الرئيسية! سوف يلتقط الكود بيانات التدريب ، ويستخرج ميزاته الرئيسية ، ويغذيها في خط الأنابيب ، ويبني نموذج تصنيف ، ثم يبدأ في الاستماع للأحداث الصوتية. عندما تستشعر أحدها ، سترى تغيير المصفوفة إلى رمز تسجيل (مربع به دائرة بداخله) وستقوم بتقسيم هذه البيانات وإدخالها في النموذج. كل ما يتوقعه النموذج سيظهر بعد بضع ثوانٍ على شاشة المصفوفة.
يمكنك متابعة إخراج الخلية أدناه. انظر إلى أي مدى يمكنك الحصول عليها بدقة!
الخطوة 4: إنشاء إسكان LEGO
هذا هو الجزء الممتع! لقد قمت بكل خطوات التعلم الآلي الجادة وقمت بتشغيل النظام الشامل بالكامل ، والآن يمكنك اللعب مع LEGO كمكافأة. ليس هناك الكثير من التفاصيل هنا. لقد أضفنا للتو الكتل التي أحببناها هنا وهناك دون أن نقلق كثيرًا بشأن التصميم العام ، وانتهى بنا الأمر بالسعادة بالطريقة التي ظهر بها.
اسمح لصورنا أن تكون مصدر إلهام لمساكنك الإبداعية الفريدة لمطبخك. لقد وضعنا Arduino وأغلبية الأسلاك في علبة مجوفة ، ثم قمنا بتأمين شاشة المصفوفة أعلاه بأجزاء معلقة. أضفنا القليل من الورق على الشاشة لتشتيت الضوء قليلاً مما جعلنا نشعر بأن الرموز أكثر وضوحًا.
موصى به:
مؤقت المطبخ: 4 خطوات
مؤقت المطبخ: يتميز هذا الجيل 4-uLCD-35DT والذي سيتم استخدامه كشاشة ثانوية لمشروع Raspberry Pi ، مؤقت المطبخ. إنه تطبيق مفيد لمعظم الأمهات وعشاق الطهي هناك ويمكن استخدامه لمراقبة الوقت عند الطهي
راديو معرف بالبرمجيات على صغر الحجم: 9 خطوات (بالصور)
راديو معرف بالبرمجيات على نطاق ضيق: في البداية كانت المجموعة البلورية - أول جهاز استقبال راديو عملي. لكنها كانت بحاجة إلى هوائي طويل ويمكنها فقط استقبال المحطات المحلية. عندما جاءت الصمامات (الأنابيب ، لأصدقائنا الأمريكيين) جعلوا من الممكن بناء المزيد
رافعة تحريك المطبخ: 4 خطوات
رافعة كهربائية للمطبخ: تحياتي للجميع ، أنا من عشاق الطعام وأحب الحساء الساخن والمرق والكاسترد وأكثر من ذلك ، ولكن من أجل ذلك أقضي أنا أو زوجتي الكثير من الوقت في التحريك أو الخفق لساعات. أردت أن أعتبره تحديًا ، لعمل تصميم فعال من حيث التكلفة ، وهو نطاق
استبدال مصابيح LED الخاصة بشفاط المطبخ الخافت: 4 خطوات
استبدال مصابيح LED الخاصة بشفاط المطبخ الخافت: عندما قمنا بإعادة تصميم منزلنا ، تم تصميم المطبخ كقطعة مركزية لدينا. نحن نتمتع برفقة الأصدقاء ، وينتهي الأمر دائمًا بمطبخنا حيث يتسكع الجميع. أنا متأكد من أن الكثير من الناس يمكنهم التواصل. بما أنني طباخ العائلة ،
معرف EZ: 5 خطوات
معرف EZ: المشكلة: يستغرق الحضور الكثير من الوقت خارج الفصل وأحيانًا ينسى المعلم القيام بذلك. الحل: معرّف EZ هو طريقة سهلة لأخذ الحضور. سيسمح هذا الجهاز للطلاب بفحص العلامات الزرقاء الخاصة بهم على معرف EZ و