پروژه الکترونیکپروژه خانه هوشمندپروژه های آردوینوپروژه های صدا

کنترل وسایل با تشخیص صدا آردوینو (خانه هوشمند با گفتار)

سلام. کنترل وسایل با تشخیص صدا آردوینو (خانه هوشمند با گفتار) را آماده کردیم.

پروژه خانه هوشمند با تشخیص صدا Arduino

فن آوری تشخیص گفتار در هوشمند سازی بسیار مفید است که نه تنها به شما امکان کنترل دستگاه ها را می دهد بلکه امنیت بیشتری به پروژه شما میده. جدا از کنترل کردن وسایل با صدا، این فناوری برای افراد دارای محدودیت بسیار مفید است. در این پروژه ما قصد داریم با استفاده از استودیوی Edge Impulse، از سه دستور NOISE، LIGHT ON، LIGHT OFF استفاده کنیم. این پروژه به عنوان پروژه خانه هوشمند بسیار جذاب محسوب میشود.

فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

پروژه های دیگر ما مربوط به صدا و آردوینو :

شماتیک مدار پروژه

شماتیک مدار برای تشخیص صدا با استفاده از آردوینو در زیر آورده شده است. در Fritzing برای Arduino 33 BLE کتابخانه ای در دسترس نبود ، بنابراین من از آردوینو نانو استفاده کردم زیرا هر دو دارای ظاهری یکسان هستند.

پروژه خانه هوشمند با تشخیص صدا Arduino

پایه مثبت LED به پین ​​دیجیتال 5 از Arduino 33 BLE متصل شده است و پایه منفی به پین ​​GND آردوینو متصل شده است.

قطعات مورد نیاز

  1. برد آردوینو 33 BLE Sense
  2. LED

ایجاد مجموعه داده برای تشخیص گفتار Arduino

در اینجا استودیوی Edge Impulse برای آموزش پروژه تشخیص گفتار استفاده می شود. از آنجا که هدف ما کنترل یک LED با دستور صوتی است، ما نیاز به جمع آوری نمونه های صوتی برای همه دستورات و نویزها داریم تا بتواند بین فرامین صوتی و سایر صداها تمایز قایل شود.

ما یک مجموعه داده با سه کلاس “LED ON” ، “LED OFF” و “NOISE” ایجاد خواهیم کرد. برای ایجاد یک مجموعه داده ، یک حساب Edge Impulse ایجاد کنید (ورود به سایت Edge Impulse) ، حساب خود را تأیید کنید و سپس یک پروژه جدید شروع کنید. می توانید نمونه ها را با استفاده از موبایل ، برد Arduino یا وارد کردن داده ها وارد کنید. آسانترین راه بارگیری نمونه ها به حساب کاربری شما استفاده از تلفن همراه شما است. برای این کار موبایل خود را به Edge Impulse وصل کنید.

برای اتصال تلفن همراه روی “Devices” کلیک کرده و سپس روی “Connect a New Device” کلیک کنید.

ایجاد مجموعه داده برای تشخیص گفتار Arduino

اکنون در پنجره بعدی روی “Use your Mobile Phone” کلیک کرده و یک کد QR ظاهر می شود. کد QR را با تلفن همراه خود اسکن کرده یا URL داده شده را وارد کنید.

حتما ببینید :  ساخت فاصله سنج التراسونیک بی سیم با STM32 و آردوینو

تشخیص صوت با آردوینو برای کنترل خانه

این کار تلفن شما را به استودیوی Edge Impulse متصل می کند.

استودیوی Edge Impulse

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.

با اتصال تلفن خود به استودیوی Edge Impulse ، اکنون می توانید نمونه های خود را بارگیری کنید. برای بارگیری نمونه ها روی “Data acquisition” کلیک کنید. اکنون در صفحه Data acquisition نام برچسب را وارد کنید ، میکروفون را به عنوان یک سنسور انتخاب کرده و طول نمونه را وارد کنید. روی “Start sampling” کلیک کنید ، دستگاه شما یک نمونه 2 ثانیه ای را ضبط می کند. در شرایط مختلف میتوانید 10 تا 12 نمونه صوتی را ضبط کنید.

آموزش کنترل وسایل خانه با دستور صوتی

پس از بارگذاری نمونه ها، برچسب تغییر را تنظیم کرده و نمونه ها را برای کلاس “light off” و “light off” تنظیم کنید.

کار با دستورات صوتی آردوینو

در مراحل بعدی ، داده های تست را جمع آوری خواهیم کرد. داده های آزمون باید حداقل 30٪ از داده های آموزش باشد ، بنابراین 4 نمونه از “Noise” و 4 تا 5 نمونه را برای “LIGHT ON” و “LIGHT OFF” وارد کنید.

مدل آموزش فرمان های صوتی

به صفحه “Create impulse” بروید. تنظیمات پیش فرض اندازه ویندوز 1000 ms را به 1200 ms و 500 ms را به 50ms افزایش یابد.

اکنون در صفحه “Create impulse” روی “Add a processing block” کلیک کنید. در پنجره بعدی بلوک Audio MFCC را انتخاب کنید. پس از آن بر روی “Add a learning block” کلیک کنید و بلوک Neural Network Keras را انتخاب کنید. سپس بر روی “Save Impulse” کلیک کنید.

مدل آموزش فرمان های صوتی

در مرحله بعد به صفحه MFCC بروید و سپس روی “Generate Features” کلیک کنید. این بلوک MFCC را برای همه پنجره های صوتی ما تولید می کند.

صفحه MFCC

پس از آن به صفحه NN Classifier بروید و بر روی سه نقطه در گوشه سمت راست بالای «Neural Network settings» کلیک کنید و « Switch to Keras (expert) mode» را انتخاب کنید.

Switch to Keras (expert) mode

کد زیر را جایگزین کنید و “Minimum confidence rating” را به 0.70 تغییر دهید. سپس بر روی دکمه “Start training” کلیک کنید. این کار آموزش مدل شما را آغاز می کند.

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.constraints import MaxNorm
# model architecture
model = Sequential()
model.add(InputLayer(input_shape=(X_train.shape[1], ), name='x_input'))
model.add(Reshape((int(X_train.shape[1] / 13), 13, 1), input_shape=(X_train.shape[1], )))
model.add(Conv2D(10, kernel_size=5, activation='relu', padding='same', kernel_constraint=MaxNorm(3)))
model.add(AveragePooling2D(pool_size=2, padding='same'))
model.add(Conv2D(5, kernel_size=5, activation='relu', padding='same', kernel_constraint=MaxNorm(3)))
model.add(AveragePooling2D(pool_size=2, padding='same'))
model.add(Flatten())
model.add(Dense(classes, activation='softmax', name='y_pred', kernel_constraint=MaxNorm(3)))
# this controls the learning rate
opt = Adam(lr=0.005, beta_1=0.9, beta_2=0.999)
# train the neural network
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
model.fit(X_train, Y_train, batch_size=32, epochs=9, validation_data=(X_test, Y_test), verbose=2)

پس از آموزش مدل ، عملکرد آموزش (مطابقت صدای شما) را نشان می دهد. برای من، دقت 81.1٪ بود که عملکرد ایده آل نیست اما می توانیم با آن پیش برویم. با ایجاد یک مجموعه داده گسترده می توانید عملکرد مدل خود را افزایش دهید.

حتما ببینید :  ارتباط سریال بین آردوینو و رزبری پای با Rs-485

راه اندازی سیستم تشخیص صوت با Arduino

سپس پس از آماده کردن دستورات خود، باید فایل کتابخانه آردوینو صداهای خود را دریافت کنیم. قبل از آن میتوانید به صفحه Live Classification بروید و عملکرد خود را تست کنید. این ویژگی به شما کمک میکند تا مدت را با داده های آزمایشی تست کنید.

Live Classification

برای آزمایش داده ها با تلفن خود ، “Switch to Classification Mode” را از طریق تلفن خود انتخاب کنید.

کنترل وسایل AC با صدا

حال برای بارگیری مدل به عنوان کتابخانه Arduino، به صفحه “Deployment” بروید و “Arduino Library” را انتخاب کنید. اکنون به پایین بروید و بر روی “Build” کلیک کنید تا مراحل شروع شود. این کار یک کتابخانه Arduino برای پروژه شما ایجاد می کند.

ایجاد فرمان های صوتی برای کنترل وسایل

اکنون کتابخانه را در Arduino IDE خود اضافه کنید. برای نصب کتابخانه، Arduino IDE را باز کرده و Sketch > Include Library > Add.ZIP library بروید.

سپس با رفتن به File > Examples > Your project name – Edge Impulse > nano_ble33_sense_microphone یک نمونه بارگیری کنید.

کد برای تشخیص صدای آردوینو

کد کامل پروژه در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را توضیح میدهیم. برای کنترل LED باید تمام احتمالات فرمان را در سه متغیر مختلف ذخیره کنیم تا بتوانیم عبارات شرطی را بر روی آنها قرار دهیم. بنابراین با توجه به کد جدید اگر احتمال “Light On” بیشتر از 0.50 باشد ، LED را روشن می کند و اگر احتمال فرمان “Light Off” بیشتر از 0.50 باشد ، چراغ را خاموش می کند.

for (size_t ix = 2; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
    noise = result.classification[ix].value;
    Serial.println("Noise: ");
    Serial.println(noise);
    } 
    for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix--) {
    lightoff = result.classification[ix].value;
    Serial.println("Light Off: ");
    Serial.print(lightoff);
    }
    lighton = 1- (noise +lightoff);
    Serial.println("Light ON: ");
    Serial.print(lighton);
    if (lighton > 0.50){
      digitalWrite(led, HIGH);
    }
    if (lightoff > 0.50){
      digitalWrite(led, LOW);
    }

پس از ایجاد تغییرات ، کد را در Arduino خود بارگذاری کنید. مانیتور سریال را با نرخ 115200 baud باز کنید.

کد برای تشخیص صدای آردوینو

فیلم عملکرد پروژه

اینگونه است که می توانید با استفاده از آردوینو سیستم تشخیص گفتار را بسازید و دستوراتی را برای کنترل دستگاهها بدهید. فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

دانلود فیلم عملکرد پروژه کنترل وسایل با فرمان صوتی آردوینو

موارد موجود در فایل : شماتیک کامل مدار ، سورس کامل

برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن