Mundarija:

Nutqni aniqlash vositasi: 12 qadam
Nutqni aniqlash vositasi: 12 qadam

Video: Nutqni aniqlash vositasi: 12 qadam

Video: Nutqni aniqlash vositasi: 12 qadam
Video: Tug’ilgan sanangizning oxirgi raqami Hayotingiz sirini ochishi mumkin! 2024, Iyul
Anonim
Nutqni aniqlash vositasi
Nutqni aniqlash vositasi

Hammaga salom………

Bu men yozayotgan ikkinchi ko'rsatma

Shunday ekan hammaga xush kelibsiz …

Bu yo'riqnomada men sizga arduino taxtasi yordamida ovoz tanuvchini qanday yasashni o'rgatmoqchiman.

Menimcha, bundan oldin sizda arduino platalari bilan tajribangiz bor, agar bo'lmasa, bu katta muammo emas, lekin men sizga ko'nikishni tavsiya qilaman, chunki u bilan o'ynash va ajoyib loyihalar yaratish juda qiziq. bu sizning ijodingiz va bu boradagi bilimingizga ko'ra.

Arduino -dan oldingi tajribaga ega bo'lmagan odamlar uchun:

Arduino - bu ochiq manbali kompyuter uskunasi, uni dizaynerlar va ishlab chiqaruvchilar keng jamoasiga ega bo'lgan kompaniya ishlab chiqaradi, uni boshqa elektron sxemalarni boshqarish uchun ishlatilishi mumkin bo'lgan kichik kompyuter kabi hisoblash mumkin

Arduino o'zlari ishlab chiqqan muhitda dasturlashtirilgan bo'lib, ularni o'z veb -saytidan osongina yuklab olish mumkin

1-qadam: Atrof-muhitni qanday sozlash kerak?

Atrof-muhitni qanday sozlash kerak?
Atrof-muhitni qanday sozlash kerak?
Atrof-muhitni qanday sozlash kerak?
Atrof-muhitni qanday sozlash kerak?
Atrof-muhitni qanday sozlash kerak?
Atrof-muhitni qanday sozlash kerak?
Atrof-muhitni qanday sozlash kerak?
Atrof-muhitni qanday sozlash kerak?

Google -da "arduino -ni yuklab olish" ni qidiring

"Arduino - dasturiy ta'minot" ni bosing

Siz "Arduino IDE -ni yuklab oling" ni ko'rasiz

Operatsion tizimingizga qarab tanlang

Yuklab oling va o'rnating

Shunday qilib, siz dasturiy ta'minotni muvaffaqiyatli o'rnatdingiz va siz o'z kodingizni arduino uchun yozishingiz mumkin va kabel yordamida siz arduino kartasini kompyuterga ulashingiz va kodni kiritishingiz mumkin.

2 -qadam: Nega Arduinoga talab oshmoqda?

Arzon

Arduino platalari boshqa mikrokontrolderlar bilan taqqoslaganda arzon. Bu taxminan 50 dollar turadi.

O'zaro platforma

Arduino uchun dasturiy ta'minot Windows, Macintosh OS va Linux operatsion tizimlarida ishlaydi. Agar biz boshqa mikro-nazorat tizimlari haqida o'ylayotgan bo'lsak, u faqat Windows-da ishlaydi yoki boshqacha aytganda faqat oynalar bilan chegaralanadi.

Ochiq kodli va kengaytiriladigan dasturiy ta'minot

Dastur ochiq manba bo'lib, shuning uchun odamlar bu haqda chuqur o'rgana boshladilar va boshqa dasturlash tillarining kutubxonalarini (uning ishlashi uchun funktsiyalar to'plamini o'z ichiga oladi) qo'sha boshladilar.

Oddiy va oson dasturlash muhiti

Yangi boshlanuvchilar, shu jumladan yangi boshlanuvchilar uchun Arduino IDE -dan foydalanish juda oson, chunki Arduino -ning ko'p manbalari Internetda bepul mavjud, shuning uchun ko'proq bilishni xohlaysiz. bu haqida.

Ochiq manba va kengaytiriladigan apparat

Arduino taxtalarining rejalari Creative Commons litsenziyasi ostida nashr etiladi, shuning uchun sxemalarni loyihalash tajribasiga ega bo'lganlar modulning o'z versiyasini yaratishi mumkin, ular texnologiyani kengaytirish huquqiga ega va unga xususiyatlarni qo'shish orqali yaxshilanishi mumkin.

3 -qadam: Boshlaylik !!!!!

Men allaqachon aytganmanki, bu loyiha asosan Arduino yordamida ovozni aniqlash va unga ba'zi vazifalarni bajarishga ruxsat berish bilan bog'liq.

Aniqroq gapiring ……

U sintezlangan nutqqa aylantirilgandan so'ng, LED tomonidan yonib-o'chib turishi bilan aniqlanishi mumkin bo'lgan, foydalanuvchi tomonidan berilgan tovush signallarini qabul qiladi.

4 -qadam: zarur komponentlar

Majburiy komponentlar
Majburiy komponentlar
Majburiy komponentlar
Majburiy komponentlar
Majburiy komponentlar
Majburiy komponentlar

Loyiha uchun zarur bo'lgan asosiy komponentlar:

Arduino tufayli x 1

Spark Fun Electret mikrofonining uzilishi x 1

Spark Fun Mono Audio Amp Breakout x 1

Karnay: 0,25 Vt, 8 ohm x 1

Non paneli x 1

5 mm LED: qizil x 3

Rezistor 330 ohm x 3

Jumper simlari x 1

Lehimlash temir x 1

BitVoicer server

Bu nutqni avtomatlashtirish uchun nutqni aniqlash va sintez qilish serveri.

5 -qadam: Bu aslida qanday ishlaydi?

1. Ovoz to'lqinlari aniqlanmoqda, keyin u bu to'lqinlarni ushlaydi va Sparkfun Electret Breakout taxtasi orqali kuchaytiriladi.

2. Yuqoridagi jarayondan olingan kuchaytirilgan signal raqamli bo'ladi va uning analog-raqamli konvertori (ADC) yordamida Arduino platasida saqlanadi.

3. Audio namunalar BitVoicer serveriga Arduino ketma -ket porti yordamida taqdim etiladi.

4. BitVoicer Server ovozli oqimni qayta ishlaydi va u o'z ichiga olgan nutqni taniydi.

5. Tanilgan nutq oldindan aniqlangan buyruqlar bilan taqqoslanadi, so'ngra Arduino -ga qaytariladi. Agar buyruqlardan biri nutqni sintez qilishdan iborat bo'lsa, BitVoicer Server audio oqimini tayyorlab, Arduino -ga yuboradi.

6. Arduino berilgan buyruqlarni aniqlab beradi va tegishli tegishli harakatni bajaradi. Agar audio oqim qabul qilinsa, u BVS Speaker sinfiga navbatga qo'yiladi va DUE DAC va DMA yordamida ijro etiladi.

7. SparkFun Mono Audio Kuchaytirgich DAC signalini kuchaytiradi, shuning uchun u 8 Ohmli dinamikni boshqarishi va u orqali eshitilishi mumkin.

6 -qadam: Komponentlarni ulash

Komponentlarni ulash
Komponentlarni ulash
Komponentlarni ulash
Komponentlarni ulash

Birinchi qadam - rasmda ko'rsatilgandek, arduino taxtasi bilan turli xil komponentlarni simga ulash

Esda tutingki, bu erda ishlatiladigan arduino taxtasi DUE, Arduino tomonidan ishlab chiqarilgan boshqa modellar mavjud, ularning har biri har xil kuchlanish darajasida ishlaydi

Arduino platalarining ko'pchiligi 5 V da ishlaydi, lekin DUE 3,3 V da ishlaydi

DUE allaqachon 3,3 V analog ma'lumotnomasidan foydalanadi, shuning uchun sizga AREF piniga o'tish moslamasi kerak emas

Kechirasiz, men AREF pinini "ANALOG REFERENS PIN -kodi" deb aytishni unutganman, u keyingi rasmda ko'rsatilgandek arduino taxtasida mavjud (bu arduino UNO, lekin shunga o'xshash sayt DUE holatida ham shunga o'xshash)

DUE-dagi AREF pimi rezistorli ko'prik orqali mikro-boshqaruvchiga ulanadi

AREF pinidan foydalanish uchun R1 rezistorini PCB [Chop etilgan elektron karta] dan lehimlash kerak

7 -qadam: Arduino kengashiga kodni taqdim etish

Arduino boshqaruv kengashiga kodni taqdim etish
Arduino boshqaruv kengashiga kodni taqdim etish

Shunday qilib, biz kodni Arduino Board -ga yuklashimiz kerak, shunda u kodda ko'rsatilgan ko'rsatmalarga muvofiq ishlaydi.

Buni amalga oshirish juda oson, men ularning har biriga nima qilishlari va qanday ishlashlari haqida batafsil aytib beraman.

Kutubxonani qanday o'rnatish kerak?

Shunday qilib, bundan oldin biz BitVoicer Server kutubxonalarini Arduino IDE -ga, ya'ni arduino dasturiga qanday o'rnatishni bilishimiz kerak.

Buning uchun Arduino IDE -ni oching

Yuqori panelda "Eskiz" ni bosing

Keyin "Kutubxonani qo'shish" ni bosing

Buning uchun "Kutubxonani boshqarish" ni bosing

Keyin kutubxona menejeri ochiladi va biz o'rnatishga tayyor yoki oldindan o'rnatilgan kutubxonalar ro'yxatini ko'rishimiz mumkin

O'rnatish uchun kutubxonani qidiring va versiya raqamini tanlang

Bu erda biz BitVoicer Server kutubxonalarini o'rnatamiz, bu loyiha uchun zarur

. Zip kutubxonasini qanday import qilish mumkin?

Kutubxonalar ZIP fayl yoki papka sifatida ham tarqatilishi mumkin

Jildning nomi - kutubxonaning nomi

Jildning ichida.cpp fayli,.h fayli va ko'pincha kalit so'zlar.txt fayli, misollar papkasi va kutubxona talab qiladigan boshqa fayllar bo'ladi

Arduino IDE 1.0.5 versiyasidan siz uning ichiga uchinchi tomon kutubxonalarini o'rnatishingiz mumkin

Yuklab olingan kutubxonani ochmang, xuddi shunday qoldiring

Buning uchun eskiz> Kutubxonani qo'shish>.zip kutubxonasini qo'shish -ga o'ting

. Zip faylining manzilini tanlang va uni oching.

Sketch> Import Library Library menyusiga qayting.

Agar u to'g'ri import qilingan bo'lsa, u holda siz kutubxonani ochilganda menyuning pastki qismida ko'rishingiz kerak.

8 -qadam: Dastur/eskiz

Bu Arduino -ga yuklanishi kerak bo'lgan dastur.

Buni Arduino platasini kompyuterga ulab, taxtaga yuklash orqali amalga oshirish mumkin.

9 -qadam: Yozilgan kodlar haqida nima deyish mumkin?

Keling, kodda yozilgan har bir funktsiya aslida nima bilan shug'ullanishini ko'rib chiqaylik ……………

Kutubxona ma'lumotnomalari va o'zgaruvchilar deklaratsiyasi

Bu haqda gapirishdan oldin, biz ba'zi asosiy terminlarni bilishimiz va tushunishimiz kerak.

  • BVSP

    Bu bizga BitVoicer Server bilan ma'lumot almashish uchun zarur bo'lgan deyarli barcha manbalarni beradigan kutubxona

    BitVoicer server protokoli BVSP klassi orqali amalga oshiriladigan protokol mavjud. Bu server bilan ishlash uchun kerak

  • BVSMic

    Bu Arduino analog-raqamli konvertori (ADC) yordamida ovoz yozish uchun zarur bo'lgan hamma narsani bajaradigan kutubxona

    Bu audio sinf ichki buferida saqlanadi va ularni qaytarib olish mumkin, keyin BitVoicer Serverda mavjud bo'lgan nutqni aniqlash dvigatellariga yuborish mumkin

  • BVSSpeaker

    Bu BitVoicer serveridan yuborilgan audio oqimlarni qayta ishlab chiqarish uchun zarur bo'lgan barcha asosiy manbalarni o'z ichiga olgan kutubxona

    Buning uchun Arduino platasida o'rnatilgan raqamli-analogli konvertor (DAC) bo'lishi kerak

    Arduino DUE - bu DAC o'rnatilgan yagona Arduino platasi

BVSP, BVSMic, BVSSpeaker va DAC kutubxonalari, ularga havola birinchi to'rtta satrda yozilgan bo'lib, ular dasturni kuzatib turadi

BitVoicer Server -ni o'rnatganingizda, bu to'rtta kutubxonani ta'minlaydigan BitSophia -ni topishingiz mumkin

Foydalanuvchi BVSSpeaker kutubxonasiga havola qo'shganda, yuqorida aytib o'tilgan DAC kutubxonasi avtomatik ravishda chaqiriladi

BVSP klassi BitVoicer Server bilan aloqa qilish uchun ishlatiladi

BVSMic klassi ovoz yozish va saqlash uchun ishlatiladi

BVSSpeaker klassi Arduino DUE DAC yordamida ovozni qayta tiklash uchun ishlatiladi

2. sozlash funktsiyasi

O'rnatish funktsiyasi ba'zi harakatlarni bajarish uchun ishlatiladi, masalan:

Pin rejimlarini va ularning dastlabki holatlarini o'rnatish

Seriya aloqasini boshlash uchun

BVSP sinfini ishga tushirish uchun

BVSMic sinfini ishga tushirish uchun

BVSSpeaker sinfini ishga tushirish uchun

Shuningdek, u BVSP sinfidagi "Qabul qilingan", "Qabul qilingan", "O'zgartirilgan" va "O'tkazib yuborilgan" hodisalar uchun "voqea ishlovchilarini" (funktsiya ko'rsatgichlari) o'rnatadi

10 -qadam: Loop funktsiyasi

U beshta asosiy operatsiyani bajaradi:

1. keepAlive () funktsiyasi

Bu funksiya serverdan holati haqida ma'lumot so'rash.

2. qabul () funktsiyasi

Bu funksiya serverga ma'lumot yuborilganmi yoki yo'qligini tekshirish, agar server biron bir ma'lumot yuborsa, uni qayta ishlaydi.

3. isSREAvailable (), startRecording (), stopRecording () va sendStream () funktsiyalari

Bu funksiyalar audio yozib olishning turli xil sozlamalarini boshqarish uchun ishlatiladi va u ovozga kirgandan keyin BitVoicer serveriga yuboriladi.

4. play () funktsiyasi

Bu funksiya BVSSpeaker sinfida navbatga qo'yilgan ovozni ijro etish uchun ishlatiladi.

5. playNextLEDNote ()

Bu funksiya Led qanday miltillashi kerakligini boshqarish uchun ishlatiladi.

6. BVSP_frameReceived funktsiyasi

Bu funktsiya har safar qabul qilish () funktsiyasi bitta to'liq ramka olinganligini aniqlay boshlaganda chaqiriladi, bu erda biz BitVoicer Serverdan olingan buyruqlarni bajaramiz. LEDlarning miltillashini boshqaruvchi buyruqlar 2 baytdan iborat. U birinchi baytda pinni, ikkinchi baytda esa pin qiymatini bildiradi. Bu erda biz pinga mos keladigan qiymatni o'rnatish uchun analogWrite () funktsiyasidan foydalanmoqdamiz. O'sha paytda biz ham bayt tipidagi playLEDNotes buyrug'i qabul qilinganligini tekshirishimiz kerak. Agar u qabul qilingan bo'lsa, men playLEDNotes -ni rost qilib qo'ydim va u joriy vaqtni kuzatadi va belgilaydi. Bu vaqt playNextLEDNote funktsiyasi tomonidan LEDlarni qo'shiq bilan sinxronlashtirish uchun ishlatiladi.

7. BVSP_modeChanged funksiyasi

Bu funksiya har safar qabul qilish () funktsiyasi chiqish yo'nalishidagi (Server Arduino) rejim o'zgarishini aniqlaganida chaqiriladi. BitVoicer Server Arduino -ga ramkali ma'lumot yoki audio yuborishi mumkin. Aloqa bir rejimdan boshqasiga o'tishdan oldin BitVoicer Server signal yuboradi. BVSP klassi bu signalni aniqlaydi va modeChanged hodisasini ko'taradi yoki belgilaydi. BVSP_modeChanged funktsiyasida, agar foydalanuvchi aloqa rejimidan ramkali rejimga o'tayotganini aniqlasa, u ovoz tugaganini biladi, shuning uchun foydalanuvchi BVSSpeaker sinfiga ovozni ijro etishni to'xtatishni aytishi mumkin.

8. BVSP_streamReceived funktsiyasi

Bu funksiya har safar qabul qilish () funksiyasi audio namunalar qabul qilinganligini aniqlaganida chaqiriladi. Bu shunchaki ovozni oladi va ularni BVSSpeaker sinfiga navbatga qo'yadi, shunda play () funktsiyasi ularni qayta yaratishi mumkin.

9. playNextLEDNote funktsiyasi

Bu funksiya faqat BVSP_frameReceived funksiyasi playLEDNotes buyrug'ini aniqlasa ishlaydi. U BitVoicer Serverdan yuborilgan audio bilan LEDlarni boshqaradi va sinxronlashtiradi. LEDlarni audio bilan sinxronlashtirish va to'g'ri vaqtni bilish uchun Sonic Visualizer bepul dasturidan foydalanish mumkin. Bu bizga ovoz to'lqinlarini ko'rishga imkon beradi, shuning uchun odam pianino tugmachasi qachon bosilganligini aniqlay oladi.

11 -qadam: BitVoicer server echimlarini qanday import qilish mumkin?

Endi biz BitVoicer serverini Arduino bilan ishlash uchun o'rnatdik.

BitVoicer Server uchun to'rtta asosiy echim ob'ektlari mavjud: Joylashuvlar, Qurilmalar, BinaryData va Ovozli sxemalar.

Keling, ularni batafsil ko'rib chiqaylik:

Joylar

Bu qurilma o'rnatiladigan jismoniy joyni ko'rsatadi.

Biz "Uy" deb nomlangan joyni yaratishimiz mumkin.

Qurilmalar

Ular BitVoicer Server mijozlari hisoblanadi.

Joylashuvni yaratish singari, biz ham aralash qurilmani yaratishimiz mumkin, shuning uchun uni ArduinoDUE deb nomlaymiz.

Ba'zida ba'zi buferlar to'lib toshishi mumkin, shuning uchun uni yo'q qilish uchun aloqa sozlamalarida Ma'lumot uzatish tezligini sekundiga 8000 ta namuna bilan cheklashim kerak edi.

BinaryData - BitVoicer Server mijoz qurilmalariga yuboradigan buyruq turi. Ular aslida buyruqlar bilan bog'lanishingiz mumkin bo'lgan bayt massivlari.

BitVoicer Server bu buyruq bilan bog'liq nutqni taniganida, u bayt massivini maqsadli qurilmaga yuboradi.

Shuning uchun men har bir pin qiymatiga bitta BinaryData ob'ektini yaratdim va ularni ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff va boshqalar deb nomladim.

Men 18 ta BinaryData ob'ektini yaratishim kerak edi, shuning uchun men sizga quyida keltirilgan VoiceSchema.sof faylidan ob'ektlarni yuklab olishni va import qilishni taklif qilaman.

Xo'sh, ovoz sxemasi nima?

Ovozli sxemalar bu erda hamma narsa birlashadi. Ularning asosiy vazifasi jumlalarni qanday tan olish kerakligini va barcha buyruqlarni bajarish kerakligini aniqlashdir.

Har bir jumla uchun siz kerakli buyruqlar sonini va bajarilish tartibini belgilashingiz mumkin.

Siz har bir berilgan buyruqlar orasidagi kechikishlarni belgilashingiz mumkin.

BitVoicer Server faqat 8-bitli mono PCM ovozini qo'llab-quvvatlaydi (sekundiga 8000 ta namuna), shuning uchun audio faylni ushbu formatga o'tkazish kerak bo'ladi, bugungi kunda juda ko'p onlayn konvertatsiya to'lovlari mavjud va men tavsiya qilaman https://audio.online -convert.com/convert-to-wav.

Siz ushbu loyihada ishlatgan barcha hal qilish moslamalarini quyidagi fayllardan import qilishingiz mumkin.

Ulardan birida DUE qurilmasi, ikkinchisida Ovoz sxemasi va uning buyruqlari mavjud.

12 -qadam: Xulosa

Mana, kelding !!!!

Siz ajoyib loyiha qildingiz va u bilan gaplashishingiz mumkin

Shunday qilib, gaplashishni boshlang …………………

Siz LEDlarni o'chirib qo'yishingiz mumkin va shu bilan birga, agar kerak bo'lsa, qo'shiq kuylaydi deb ayta olasiz, uning kodi allaqachon berilgan

Shunday qilib, men ikkinchi yo'riqnomani tugatdim !!!!!!!!!

Ha ……

Menimcha, hamma buni tushundi …

Agar kimdirda biron bir savol bo'lsa, iltimos, mendan so'rang

Keyingi safar men ajoyib ko'rsatma beraman

Xayr…

Ko'rishguncha……………

Tavsiya: