فهرست مطالب:

شناسه صدای آشپزخانه سفارشی: 4 مرحله
شناسه صدای آشپزخانه سفارشی: 4 مرحله

تصویری: شناسه صدای آشپزخانه سفارشی: 4 مرحله

تصویری: شناسه صدای آشپزخانه سفارشی: 4 مرحله
تصویری: Tutorial Autocad Civil 3D part 13 - Cara Membuat Cross Section Pada Software Autodesk Civil 3D 2021 2024, نوامبر
Anonim
Image
Image
شناسه صدای آشپزخانه سفارشی
شناسه صدای آشپزخانه سفارشی

برای آخرین پروژه خود در یک دوره سیستم های تعاملی در بهار امسال ، ما یک سیستم زمان واقعی برای شناسایی و تجسم صداهای رایج در آشپزخانه با استفاده از طبقه بندی Support-Vector Machine ایجاد کردیم. این سیستم شامل یک لپ تاپ برای نمونه برداری/طبقه بندی صوتی و یک صفحه نمایش ماتریس Arduino/dot برای تجسم است. موارد زیر راهنمای ایجاد نسخه شخصی شما از این سیستم برای صداهای آشپزخانه شما است.

مورد استفاده اصلی ما به عنوان وسیله ای برای آشپزخانه افراد ناشنوا و کم شنوا بود ، اما از نظر نظری این سیستم می تواند مجموعه ای از صداها را در زمینه های مختلف شناسایی کند. آشپزخانه یک مکان ایده آل برای شروع بود ، زیرا نسبتاً آرام است و حاوی مقدار معقولی از صداهای ساده و مجزا است.

مخزن GitHub برای این پروژه را می توانید در اینجا پیدا کنید.

تدارکات

  • میکروکنترلر آردوینو لئوناردو با سربرگ
  • صفحه نمایش LED KEYESTUDIO 16x16 Dot Matrix برای آردوینو
  • سیم جامپر تخته نان
  • کابل میکرو USB به USB 2.0
  • یک لپ تاپ با Jupyter Notebook (نصب Anaconda)

    راهنمای مبتدی Jupyter Notebook را می توانید در اینجا پیدا کنید

  • مقدار قابل توجهی آجر LEGO برای محفظه سیستم ناهماهنگ است

    (اما واقعاً می توانید اینها را با هر مصالح ساختمانی DIY که می خواهید جایگزین کنید!)

مرحله 1: جمع آوری نمونه های صدای آشپزخانه

جمع آوری نمونه های صدای آشپزخانه
جمع آوری نمونه های صدای آشپزخانه

شکل بالا: داده های صوتی گرفته شده از ضبط چنگال و چاقو که به هم چسبیده اند با استفاده از این فرایند جمع آوری

به منظور شناسایی صداهای زمان واقعی ، ما باید مدل یادگیری ماشین خود را با نمونه های با کیفیت برای مقایسه ارائه دهیم. ما یک نوت بوک Jupyter برای این فرآیند ایجاد کردیم ، که می توان در اینجا یا از طریق مخزن GitHub پروژه ما به آن دسترسی پیدا کرد. مخزن همچنین شامل مجموعه ای از نمونه از دو آشپزخانه مختلف برای آزمایش است.

مرحله 1.1: نوت بوک CollectSamples.ipynb را در فهرست کارکرد Jupyter Notebook کپی کرده و آن را باز کنید.

مرحله 1.2: هر سلول را یک به یک اجرا کنید ، به نکاتی که در سرفصل ها آورده ایم توجه کنید. وقتی به یکی از مواردی با عنوان "نمونه ضبط" می رسید متوقف شوید.

توجه: چندین کتابخانه پایتون در این نوت بوک استفاده می شود و قبل از اینکه با موفقیت وارد پروژه شوند ، هر یک نیاز به نصب دارند. خوش آمدید این کار را به صورت دستی انجام دهید ، اگرچه راهنمای نصب کتابخانه در 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 فایل های منفرد را در سلول "مشاهده سریع صدا" بررسی کنید تا مطمئن شوید همه اطلاعات مورد نظر را گرفته اید.

تعدادی نکته:

  • زمانی که آشپزخانه شما آرام است ضبط کنید.
  • فقط یک صدا را به طور همزمان ضبط کنید. سیستم نمی تواند همپوشانی صداها را تشخیص دهد.
  • سعی کنید هر آزمایش صدا را تا آنجا که ممکن است سازگار کنید. این به دقت شناسایی کمک می کند.
  • ارزیابی مجدد سلول ضبط ، مقدار # را در نام فایل بازنشانی می کند و فایلهای موجود را که با آن # مطابقت دارند بازنویسی می کند. ما به راحتی می توانستیم همه نمونه های یک صدا را به طور همزمان ضبط کنیم ، سپس سلول ضبط را متوقف کنیم.
  • اگر سیستم صدای موردنظر شما را دریافت نمی کند ، سعی کنید مقدار THRESHOLD (برای شروع روی 30 تنظیم کنید) را کاهش دهید و سلول را دوباره ارزیابی کنید.
  • اگر ضبط توسط صداهای دیگری خارج از صدای هدف ایجاد شده است ، سعی کنید مقدار THRESHOLD (برای شروع روی 30 تنظیم شده) را بالا ببرید و سلول را مجددا ارزیابی کنید.

مرحله 2: آماده سازی صفحه نمایش Arduino/Matrix

آماده سازی صفحه نمایش آردوینو/ماتریس
آماده سازی صفحه نمایش آردوینو/ماتریس
آماده سازی صفحه نمایش آردوینو/ماتریس
آماده سازی صفحه نمایش آردوینو/ماتریس
آماده سازی صفحه نمایش آردوینو/ماتریس
آماده سازی صفحه نمایش آردوینو/ماتریس

در مرحله بعد ، ما قصد داریم سیستم تجسم را با استفاده از یک صفحه نمایش ماتریس LED Arduino Leonardo و KEYESTUDIO 16x16 LED راه اندازی کنیم. این برای پیش بینی مدل طبقه بندی از صداهای تشخیص داده شده است. مانند گذشته ، ما همه فایلهای مورد نیاز را هم در اینجا و هم در مخزن پروژه GitHub ارائه کرده ایم.

مرحله 2.1: ماتریس آردوینو و LED را مطابق نمودار بالا سیم کشی کنید. KEYESTUDIO شامل سیم هایی برای اتصال به ماتریس نقطه آنها می شود ، اما برای اتصال این سیم ها به آردوینو به سیم های بلوز بردپورد نیاز است.

مرحله 2.2: "arduino_listener.ino" را با استفاده از Ardunio IDE باز کرده و آن را در Leonardo بارگذاری کنید. اگر سیم کشی به درستی انجام شود ، باید همانطور که در تصویر بالا نشان داده شده ، نماد "گوش دادن" (شبیه Wi-Fi) را ببینید.

مرحله 2.3: نمادهایی را که می خواهید برای هر یک از صداهای مورد نظر خود نمایش دهید ، آماده کنید. برای اینکه بدانید کدام LED ها باید روشن شوند ، نماد باید از آردوینو به عنوان یک آرایه بایت به ماتریس ارسال شود. به عنوان مثال ، نماد فنجان قهوه (در تصویر بالا) با این فرمت به ماتریس ارسال می شود:

{

از 0xFF، از 0xFF، از 0xFF، از 0xFF، 0xfc، 0xfb، 0xbb، 0x5b، 0xeb، 0xfb، 0xfb، 0xfc، 0xfe، 0xfe، از 0xFF، از 0xFF، از 0xFF، از 0xFF، از 0xFF، از 0xFF، 0x0f، 0xf7، 0xfb، 0xfb، 0xfb، 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: اجرای طبقه بندی کننده و شناسایی صداها

اجرای طبقه بندی کننده و تشخیص صداها
اجرای طبقه بندی کننده و تشخیص صداها
اجرای طبقه بندی کننده و تشخیص صداها
اجرای طبقه بندی کننده و تشخیص صداها

اکنون وقت آن است که سیستم را کنار هم قرار دهیم. خط لوله طبقه بندی ، ارتباطات آردوینو و ضبط صوتی زنده همه از طریق یک نوت بوک آردوینو انجام می شود ، که در اینجا ارائه شده است یا از طریق مخزن 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" متوقف شوید. پورت سریال را که رایانه شما برای ارتباط با آردوینو در متغیر PORT_DEF استفاده می کند ، مشخص کنید. این را می توان در Arduino IDE پیدا کرد و به مسیر Tools> Port رفت.

اطلاعات بیشتر را می توان در اینجا یافت.

مرحله 3.8: IDE آردوینو خود را دوباره باز کنید. در مکانهایی که در نمادها تغییراتی ایجاد کرده اید ، حرف را در کنار مقدار آرایه یادداشت کنید ، اما آن را تغییر ندهید. در مثال زیر ، این عبارت "g" است.

// دفع زباله </ b> بدون علامت بدون علامت ، 0xff ، 0x2f ، 0x27 ، 0xc3 ، 0x03 ، 0xc3 ، 0x27 ، 0x2f ، 0xff ، 0xef ، 0xdf ، 0xbf ، 0xff ، 0xff ،} ؛

مرحله 3.7: (بازگشت به سلول "Messaging Arduino" نوت بوک) برچسب ها را در فرهنگ لغت self.sounds تغییر دهید تا با برچسب هایی که در ضبط نمونه های خود استفاده کرده اید مطابقت داشته باشد و مطمئن شوید که هر برچسب با حرف واحدی که در قبل اشاره کرده اید مطابقت دارد. گام. "ضبط" و "گوش دادن" هر دو بخشی از عملکرد اصلی سیستم هستند و نباید تغییر داده شوند. حرف دوم را تغییر ندهید مگر اینکه در ایجاد تغییرات اضافی در کد Arduino نیز اطمینان داشته باشید ، زیرا در غیر این صورت ارتباط با Arduino/ماتریس را مختل می کند.

مرحله 3.8: عملکرد اصلی را اجرا کنید! کد داده های آموزشی را دریافت می کند ، ویژگی های کلیدی آن را استخراج می کند ، آنها را وارد خط لوله می کند ، یک مدل طبقه بندی ایجاد می کند ، سپس شروع به گوش دادن به رویدادهای صوتی می کند. هنگامی که یکی را حس کرد ، ماتریس را به نماد ضبط (مربع با دایره در داخل) تغییر می دهید و این داده ها را قطعه بندی می کند و به مدل وارد می کند. هر چه مدل پیش بینی کند چند ثانیه بعد در صفحه ماتریس نشان داده می شود.

می توانید خروجی سلول را در زیر دنبال کنید. ببینید چقدر دقیق می توانید آن را بدست آورید!

مرحله 4: ایجاد یک LEGO Housing

ایجاد مسکن LEGO
ایجاد مسکن LEGO
ایجاد مسکن LEGO
ایجاد مسکن LEGO
ایجاد مسکن LEGO
ایجاد مسکن LEGO

این قسمت جالبشه! شما تمام مراحل جدی یادگیری ماشین را انجام داده اید و کل سیستم را به صورت کامل راه اندازی کرده اید و اکنون می توانید به عنوان پاداش با LEGO بازی کنید. در اینجا فرآیند زیادی برای توضیح جزئیات وجود ندارد. ما فقط بلوک هایی را که دوست داشتیم اینجا و آنجا اضافه کردیم بدون اینکه نگران طراحی کلی باشیم ، و در نهایت از نحوه ظاهر آن راضی بودیم.

اجازه دهید تصاویر ما به عنوان الهام بخش برای خانه های خلاقانه شما منحصر به فرد در آشپزخانه شما عمل کنند. ما آردوینو و بیشتر سیم کشی را در یک محفظه توخالی قرار دادیم ، سپس صفحه ماتریس بالا را با برجستگی ها محکم کردیم. ما مقداری کاغذ به صفحه نمایش اضافه کردیم تا نور را کمی پخش کند که احساس می کردیم نمادها واضح تر هستند.

توصیه شده: