Мазмұны:

Ас үйге арналған дыбыстық идентификатор: 4 қадам
Ас үйге арналған дыбыстық идентификатор: 4 қадам

Бейне: Ас үйге арналған дыбыстық идентификатор: 4 қадам

Бейне: Ас үйге арналған дыбыстық идентификатор: 4 қадам
Бейне: Өлді деп жерлемек болған еді. Бірақ Алланың қалауымен тірілген Бала 2024, Қараша
Anonim
Image
Image
Ас үйге арналған дыбыстық сәйкестендіргіш
Ас үйге арналған дыбыстық сәйкестендіргіш

Осы көктемде интерактивті жүйелер курсының соңғы жобасы үшін біз Support-Vector Machine классификациясын қолдана отырып, ас үйдегі жалпы дыбыстарды анықтауға және бейнелеуге арналған нақты уақыттағы жүйе құрдық. Жүйе аудиожазбаны алуға/жіктеуге арналған ноутбуктен және визуализацияға арналған Arduino/нүктелік матрицадан тұрады. Төменде сіздің ас үйден шығатын дыбыстар үшін осы жүйенің жеке нұсқасын құруға арналған нұсқаулық берілген.

Біздің бастапқы қолдану саңырау және нашар еститін адамның асханасына арналған құрылғы болды, бірақ бұл жүйені әр түрлі контексте дыбыстар жиынтығын анықтауға теориялық түрде бейімдеуге болады. Ас үй бастау үшін тамаша орын болды, өйткені ол салыстырмалы түрде тыныш болады және қарапайым, айқын дыбыстардың жеткілікті мөлшерін қамтиды.

Бұл жобаның GitHub репозиторийін мына жерден табуға болады.

Жабдықтар

  • Ардуино Леонардо микроконтроллер тақырыптары бар
  • Arduino үшін KEYESTUDIO 16x16 нүктелік матрицалық жарықдиодты дисплей
  • Нанға арналған секіргіш сым
  • Micro-USB-USB 2.0 кабелі
  • Jupyter ноутбукі бар ноутбук (Anaconda қондырғысы)

    Jupyter блокнотына жаңадан бастаушыларға арналған нұсқаулықты мына жерден табуға болады

  • Жүйенің корпусы үшін сәйкес келмейтін LEGO кірпішінің едәуір мөлшері

    (Бірақ сіз оларды өзіңіз қалаған DIY құрылыс материалына ауыстыра аласыз!)

1 -қадам: Ас үйден дыбыс үлгілерін жинау

Ас үйдегі дыбыс үлгілерін жинау
Ас үйдегі дыбыс үлгілерін жинау

Жоғарыдағы сурет: осы жинау процесінің көмегімен шанышқы мен пышақтың бір -бірімен сықырлауын жазудан алынған дыбыстық деректер

Нақты уақыттағы дыбыстарды анықтау үшін біз машиналық оқыту моделін салыстыру үшін сапалы мысалдармен қамтамасыз етуіміз керек. Біз бұл процесс үшін Jupyter жазу кітапшасын жасадық, оған осы жерден немесе біздің жобаның GitHub репозиторийі арқылы кіруге болады. Репозиторийде тестілеу мақсатында екі түрлі асханадан жиналған үлгілер бар.

1.1 -қадам: CollectSamples.ipynb жазу кітапшасын жұмыс істейтін Jupyter Notebook каталогына көшіріп, оны ашыңыз.

1.2 -қадам: Тақырыптарда берілген кез келген ескертулерге назар аудара отырып, әрбір ұяшықты бір -бірлеп іске қосыңыз. «Үлгі жазу» деген тақырыпқа жеткенде тоқтаңыз.

ЕСКЕРТПЕ: Бұл ноутбукте бірнеше Python кітапханалары пайдаланылады және олардың әрқайсысы жобаға сәтті импортталмас бұрын орнатуды қажет етеді. Сіз мұны қолмен жасай аласыз, бірақ Jupyter блокнотында кітапхананы орнатуға арналған нұсқаулықты мына жерден табуға болады.

1.3 -қадам: Үлгілеріңізді осы жобаның жұмыс каталогында сақтау үшін бос каталог жасаңыз.

1.4 -қадам: «Sample Recording» ұяшығындағы бос каталогтың орналасуына сәйкес келетін SAMPLES_LOCATION айнымалысын өңдеңіз.

1.5 -қадам: SOUND_LABELS айнымалысына қалағаныңызша дыбысты қосыңыз немесе алып тастаңыз.

Жазу кодының үлгісі жұмыс істеуі үшін бұл айнымалының әр жолы үтірмен және келесі формада бөлінуі керек:

'ts': дыбыс («TargetedSound», «ts»)

1.6 -қадам: Барлық белгілер қосылғаннан кейін, «Үлгіні жазу» ұяшығын бағалау, үлгіні жинау процесін бастайды. Ұяшықтың шығуында сізге белгілердегі әр дыбыспен байланысты қысқа кодты енгізу сұралады (яғни TargetedSound үшін «ts»). Мұны әлі жасамаңыз.

1.7 -қадам: Ноутбукті ас үйге апарып, дайын жүйені орналастыратын жерге қойыңыз. Бұл орын жақсы дыбыс жинау үшін орталық болуы керек және электрониканы қорғау үшін құрғақ және ықтимал төгілуден алыс болуы керек.

1.8 -қадам: Бірінші мақсатты дыбысты дайындаңыз. Егер бұл пеш таймерінің дыбыстық сигналы болса, келесі қадамға өтпес бұрын таймерді бір минутқа қойып, 20 секундқа дейін санауды күте аласыз.

1.9 -қадам: Белгі кодын шақыруға енгізіңіз (яғни, «ts») және Enter/Return түймесін басыңыз.

Жүйе бөлменің шуынан ерекшеленетін дыбыстық оқиғаны тыңдай бастайды. Бұл дыбыстық оқиғаны сезгеннен кейін, ол бөлмедегі дыбыс қоршаған орта деңгейіне оралғанша, ол жазуды бастайды. Ол аудионы 16 биттік WAV файлы ретінде SAMPLES_LOCATION анықталған каталогқа келесі форматта сақтайды:

TargetedSound _#_ capture.wav

Бұл файл атауының # бөлігі сіз жинаған мақсатты дыбыстың үлгілерінің санына сәйкес келеді. WAV файлы сақталғаннан кейін шақыру қайталанады, бұл ұяшықтың бір орындалуында бір дыбыстың бірнеше үлгісін жинауға мүмкіндік береді.

Бұл файл атауын өзгертпеңіз. Бұл келесі қадам үшін маңызды.

1.10 қадам: Әр дыбыстың 5-10 үлгісін жинамайынша, 1.8 және 1.9 қадамдарын қайталаңыз.

1.11 -қадам: Орындаудан шығу үшін аяқталған кезде «x» енгізіңіз.

ЕСКЕРТУ: Ұяшықтан осылай шықпау ноутбуктің істен шығуына әкелуі мүмкін. Бұл жағдайда Ноутбук ядросын қалпына келтіру керек және әр ұяшық қайтадан жоғарыдан іске қосылады.

1.11 -қадам (міндетті емес): барлық қажетті ақпаратты түсіргеніңізге көз жеткізу үшін «Жылдам дыбыстық визуализация» ұяшығындағы жеке файлдардың WAV деректерін тексеріңіз.

Кейбір кеңестер:

  • Сіздің ас үй тыныш болған кезде жазыңыз.
  • Бір уақытта бір ғана дыбысты жазыңыз. Жүйе дыбыстардың қабаттасуын ажырата алмайды.
  • Әрбір дыбыстық сынақты мүмкіндігінше бірізді етуге тырысыңыз. Бұл сәйкестендірудің дәлдігіне көмектеседі.
  • Жазу ұяшығын қайта бағалау файл атауындағы # мәнін қалпына келтіреді және осы # сәйкес келетін файлдарды қайта жазады. Біз бір дыбыстың барлық үлгілерін бірден жазуды, содан кейін Жазу ұяшығын тоқтатуды оңай деп таптық.
  • Егер жүйе сіздің мақсатты дыбысты қабылдамаса, THRESHOLD мәнін төмендетіп көріңіз (бастау үшін 30 -ға орнатыңыз) және ұяшықты қайта бағалаңыз.
  • Егер жазба мақсатты дыбыстан басқа дыбыстармен туындаса, THRESHOLD мәнін жоғарылатып көріңіз (бастау үшін 30 -ға орнатыңыз) және ұяшықты қайта бағалаңыз.

2 -қадам: Arduino/Matrix дисплейін дайындау

Arduino/Matrix дисплейін дайындау
Arduino/Matrix дисплейін дайындау
Arduino/Matrix дисплейін дайындау
Arduino/Matrix дисплейін дайындау
Arduino/Matrix дисплейін дайындау
Arduino/Matrix дисплейін дайындау

Әрі қарай, біз Arduino Leonardo және KEYESTUDIO 16x16 жарықдиодты матрицалық дисплей көмегімен визуализация жүйесін орнатамыз. Бұл жіктеу моделінің анықталған дыбыстарға болжамын шығару үшін. Бұрынғыдай, біз барлық қажетті файлдарды осында да, жобаның GitHub репозиторийінде де бердік.

2.1 -қадам: Arduino мен жарықдиодты матрицаны жоғарыдағы диаграммаға сәйкес қосыңыз. KEYESTUDIO олардың нүктелік матрицасына қосылатын сымдарды қамтиды, бірақ бұл сымдарды Arduino -ға қосу үшін тақтаның қосқыш сымдары қажет болады.

2.2 -қадам: Ardunio IDE көмегімен «arduino_listener.ino» ашыңыз және оны Леонардоға жүктеңіз. Егер сым дұрыс қосылған болса, жоғарыдағы суретте көрсетілгендей «тыңдау» белгісін (Wi-Fi сияқты) көру керек.

2.3 -қадам: Мақсатты дыбыстардың әрқайсысы үшін көрсеткіңіз келетін белгішелерді дайындаңыз. Қандай светодиодтар жанатынын білу үшін белгіше Arduino матрицасына байт массиві ретінде жіберілуі керек. Мысалы, біздің кофе шыныаяқ белгішеміз (жоғарыдағы суретте) матрицаға мына форматта жіберіледі:

{

0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7 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 байланысы және тікелей аудиожазбалар осында берілген немесе біздің жобаның GitHub репозиторийі арқылы кіруге болатын бір Arduino жазу кітапшасы арқылы жасалады.

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 -мен байланысу үшін сіздің компьютер пайдаланатын сериялық портты анықтаңыз. Мұны Arduino IDE -де табуға болады және Құралдар> Портқа өтуге болады.

Қосымша ақпаратты мына жерден табуға болады.

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/матрицасымен байланысты бұзады.

3.8 -қадам: Негізгі функцияны іске қосыңыз! Код жаттығу деректерін алады, оның негізгі мүмкіндіктерін шығарады, оларды құбырға жібереді, жіктеу моделін құрады, содан кейін дыбыстық оқиғаларды тыңдай бастайды. Ол сезген кезде, сіз матрицаның жазу белгісіне өзгергенін көресіз (ішінде шеңбері бар шаршы) және ол бұл деректерді сегменттейді және оны модельге береді. Модель болжағанның бәрі матрицалық дисплейде бірнеше секундтан кейін пайда болады.

Сіз төмендегі ұяшықтың шығуын қадағалай аласыз. Оны қаншалықты дәл алуға болатынын қараңыз!

4 -қадам: LEGO корпусын құру

LEGO корпусын құру
LEGO корпусын құру
LEGO корпусын құру
LEGO корпусын құру
LEGO корпусын құру
LEGO корпусын құру

Бұл көңілді бөлік! Сіз машинаны үйренудің барлық маңызды қадамдарын жасадыңыз және жүйені біртіндеп іске қостыңыз, енді сіз марапат ретінде LEGO-мен ойнай аласыз. Мұнда егжей -тегжейлі айтылатын процесс көп емес. Біз жалпы дизайн туралы көп уайымдамай -ақ, бізге ұнаған блоктарды қостық, және біз оның нәтижесіне риза болдық.

Біздің суреттер сіздің жеке ас үйіңізге арналған жеке шығармашылық үйге шабыт ретінде қызмет етуге рұқсат етіңіз. Біз Arduino мен сымдардың көпшілігін қуыс корпусқа қойдық, содан кейін матрицаның дисплейін ілмектермен бекітіп қойдық. Біз дисплейге кішкене қағаз қостық, ол жарықтың таралуын жеңілдетіп, белгішелерді түсінікті етті.

Ұсынылған: