Агуулгын хүснэгт:

Гаалийн гал тогооны дууны тодорхойлогч: 4 алхам
Гаалийн гал тогооны дууны тодорхойлогч: 4 алхам

Видео: Гаалийн гал тогооны дууны тодорхойлогч: 4 алхам

Видео: Гаалийн гал тогооны дууны тодорхойлогч: 4 алхам
Видео: Дагаж дуулбал ялагдана!!! 2024, Арваннэгдүгээр
Anonim
Image
Image
Гал тогооны тусгай дууны таних төхөөрөмж
Гал тогооны тусгай дууны таних төхөөрөмж

Энэ хаврын интерактив системийн курсын эцсийн төслийн хувьд бид Support-Vector Machine ангиллыг ашиглан гал тогооны өрөөний нийтлэг дуу чимээг тодорхойлох, дүрслэх бодит цагийн системийг бий болгосон. Энэхүү систем нь аудио дээж авах/ангилах зориулалттай зөөврийн компьютер, дүрслэх зориулалттай Arduino/цэг матрицын дэлгэцээс бүрдэнэ. Дараахь зүйл бол өөрийн гал тогооны өрөөнөөс гарах дууны системийн өөрийн хувилбарыг бий болгох гарын авлага юм.

Бидний анхны хэрэглээний тохиолдол нь дүлий, сонсгол муутай хүмүүсийн гал тогоонд зориулагдсан төхөөрөмж байсан боловч энэ системийг онолын хувьд янз бүрийн нөхцөлд дууны багцыг тодорхойлоход тохируулан өөрчилж болно. Гал тогоо бол харьцангуй нам гүмхэн бөгөөд боломжийн хэмжээний энгийн, тодорхой дуу чимээ агуулсан тул эхлэхэд хамгийн тохиромжтой газар байв.

Энэ төслийн GitHub репозиторыг эндээс олж болно.

Хангамж

  • Толгойтой Arduino Leonardo Microcontroller
  • Arduino -д зориулсан KEYESTUDIO 16x16 цэг матрицын LED дэлгэц
  • Талхны самбарын холбогч утас
  • Микро USB-USB 2.0 кабель
  • Jupyter дэвтэртэй зөөврийн компьютер (Анаконда суулгалт)

    Jupyter Notebook -ийн анхан шатны гарын авлагыг эндээс олж болно

  • Системийн орон сууцанд үл нийцэх LEGO тоосго нэлээд их хэмжээгээр орсон байна

    (Гэхдээ та эдгээрийг хүссэн DIY барилгын материалаар орлуулж болно!)

Алхам 1: Гал тогооны өрөөний дууны дээжийг цуглуулах

Гал тогооны өрөөний дууны дээжийг цуглуулах
Гал тогооны өрөөний дууны дээжийг цуглуулах

Дээрх зураг: Энэхүү цуглуулах процессыг ашиглан сэрээ, хутга хоорондоо наалдсан бичлэгийг хийснээс авсан аудио өгөгдөл

Бодит цагийн дуу чимээг тодорхойлохын тулд бид харьцуулахын тулд чанарын жишээг ашиглан машин сурах загвараа нийлүүлэх ёстой. Бид энэ процесст зориулж Jupyter тэмдэглэлийн дэвтэр бүтээсэн бөгөөд үүнийг эндээс эсвэл манай төслийн GitHub репозитороор дамжуулан үзэх боломжтой. Мөн репозиторид туршилтын зорилгоор хоёр өөр гал тогооны дээжийн цуглуулга багтсан болно.

Алхам 1.1: CollectSamples.ipynb дэвтэрийг ажиллаж байгаа Jupyter Notebook лавлах руу хуулж нээнэ үү.

Алхам 1.2: Нүд бүрийг нэг нэгээр нь ажиллуулж, гарчигт оруулсан тэмдэглэлдээ анхаарлаа хандуулаарай. "Sample Recording" гэсэн гарчигтай нэгэнд хүрэх үедээ зогсоо.

ТАЙЛБАР: Энэхүү дэвтэрт хэд хэдэн Python номын сан ашиглагддаг бөгөөд төсөлд амжилттай оруулахын тулд тус бүр нь суулгах шаардлагатай байдаг. Та үүнийг гараар хийхийг хүсч байна, гэхдээ Jupyter Notebook дотор номын сан суулгах гарын авлагыг эндээс олж болно.

Алхам 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 _#_ баригдсан.wav

Энэ файлын нэрний # хэсэг нь таны цуглуулсан зорилтот дууны дээжийн тоотой тохирч байна. WAV файлыг хадгалсны дараа хүлээх мөр дахин давтагдах бөгөөд нүдний нэг гүйцэтгэлд ижил дууны хэд хэдэн дээж цуглуулах боломжийг танд олгоно.

Энэ файлын нэрийг бүү өөрчил. Дараагийн алхамд энэ нь чухал юм.

Алхам 1.10: Дуу бүрийн 5-10 дээжийг цуглуулах хүртэл 1.8, 1.9 алхамуудыг давтана.

Алхам 1.11: Гүйцэтгэлээс гарахын тулд "x" гэж оруулна уу.

СЭРЭМЖЛҮҮЛЭГ: Ийм байдлаар үүрнээс гарахгүй байх нь Notebook -ийн эвдрэлд хүргэж болзошгүй юм. Энэ тохиолдолд Notebook -ийн цөмийг дахин тохируулж, нүд бүрийг дээрээс нь дахин ажиллуулах ёстой.

Алхам 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 LED цэг матрицын дэлгэц ашиглан дүрслэх системийг тохируулах болно. Энэ нь ангиллын загварын таамагласан дууны таамаглалыг гаргах явдал юм. Өмнөх шиг бид шаардлагатай бүх файлыг энд болон төслийн GitHub репозиторид өгсөн.

Алхам 2.1: Дээрх диаграммын дагуу Arduino болон LED матрицыг утсаар холбоно уу. KEYESTUDIO нь цэг матрицтай холбогдох утаснуудыг агуулдаг боловч эдгээр утсыг Arduino -тэй холбохын тулд талхны самбарын холбогч утас шаардлагатай болно.

Алхам 2.2: Ardunio IDE ашиглан "arduino_listener.ino" -ыг нээгээд Леонардо руу байршуулна уу. Хэрэв утсыг зөв холбосон бол дээрх зураг дээр үзүүлсэн шиг "сонсох" дүрс (Wi-Fi шиг харагдаж байна) харагдах ёстой.

Алхам 2.3: Зорилтот дуу бүрийн хувьд харуулахыг хүсч буй дүрсийг бэлтгэ. Аль LED -ийг асаахыг мэдэхийн тулд дүрсийг Arduino -аас матриц руу байтын массиваар илгээх ёстой. Жишээлбэл, манай кофены аяганы дүрс (дээрх зураг дээр) матриц руу ийм форматаар илгээгддэг.

{

0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf, 0xf, 0xf 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" байна.

// гарын үсэг зураагүй char х [1] [32] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf7, 0xf7, 0xfb, 0xff, 0xfe, 0xfd, 0xfb, 0xff, 0xff, 0xff, 0xff, 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 болон утаснуудын ихэнх хэсгийг хөндий хайрцагт хийж, дараа нь матрицын дэлгэцийг дээгүүр нь бэхлэв. Гэрлийг бага зэрэг сарниулахын тулд дэлгэц дээр бага зэрэг цаас нэмсэн нь дүрсийг илүү тодорхой болгосон.

Зөвлөмж болгож буй: