Tartalomjegyzék:
- Kellékek
- 1. lépés: Konyhai hangminták gyűjtése
- 2. lépés: Az Arduino/Matrix kijelző előkészítése
- 3. lépés: Az osztályozó futtatása és a hangok azonosítása
- 4. lépés: LEGO ház létrehozása
Videó: Egyéni konyhai hang -azonosító: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Az idei tavaszi interaktív rendszer tanfolyamunk utolsó projektjéhez létrehoztunk egy valós idejű rendszert a konyhában gyakori hangok azonosítására és megjelenítésére a Support-Vector Machine besorolás segítségével. A rendszer egy laptopból áll audio mintavételezéshez/osztályozáshoz, és egy Arduino/pontmátrix kijelzőből a vizualizációhoz. Az alábbiakban útmutatást adunk a rendszer saját verziójának létrehozásához a saját konyhából származó hangokhoz.
Eredeti használati esetünk a süketek és nagyothallók egyéniségének konyhája volt, de ez a rendszer elméletileg adaptálható a hangok halmazának azonosítására különféle kontextusokban. A konyha ideális kiindulópont volt, mivel viszonylag csendes és ésszerű mennyiségű egyszerű, megkülönböztető hangot tartalmaz.
A projekthez tartozó GitHub adattár itt található.
Kellékek
- Arduino Leonardo mikrovezérlő fejlécekkel
- KEYESTUDIO 16x16 Dot Matrix LED kijelző Arduino -hoz
- Kenyérsütő jumper huzal
- Micro-USB-USB 2.0 kábel
-
Laptop Jupyter notebook -tal (Anaconda telepítés)
A Jupyter Notebook kezdő útmutatója itt található
- Jelentős mennyiségű nem megfelelő LEGO kockák a rendszer háza számára
(De ezeket bármikor helyettesítheti bármilyen DIY építőanyaggal!)
1. lépés: Konyhai hangminták gyűjtése
Fentebb látható ábra: A villa és a kés összecsörömpölésének rögzítésével vett audio adatok ezzel a gyűjtési eljárással
A valós idejű hangok azonosításához a gépi tanulási modellünket minőségi példákkal kell ellátnunk összehasonlítás céljából. Ehhez a folyamathoz létrehoztunk egy Jupyter notebookot, amely itt vagy a projektünk GitHub adattárán keresztül érhető el. A tároló két különböző konyhából származó mintagyűjteményeket is tartalmaz tesztelés céljából.
1. lépés: Másolja a CollectSamples.ipynb jegyzetfüzetet a működő Jupyter Notebook könyvtárba, és nyissa meg.
1.2. Lépés: Futtassa az egyes cellákat egyenként, ügyelve a fejlécekben megadott megjegyzésekre. Hagyja abba, amikor eléri a "Mintafelvétel" címet.
MEGJEGYZÉS: Ebben a notebookban több Python -könyvtárat használnak, és mindegyik telepítést igényel, mielőtt sikeresen importálhatók a projektbe. Ezt szívesen elvégezheti manuálisan, bár a Jupyter Notebook könyvtár telepítési útmutatója itt található.
1.3. Lépés: Hozzon létre egy üres könyvtárat a minták tárolására a projekt munkakönyvtárában.
1.4. Lépés: Szerkessze a SAMPLES_LOCATION változót a "Mintafelvétel" cellában, hogy megfeleljen az üres könyvtár helyének.
1.5 lépés: Add hozzá vagy távolíts el annyi hangot, amennyit csak akarsz a SOUND_LABELS változóhoz.
Annak érdekében, hogy a minta rögzítési kódja működjön, ennek a változónak minden sorát vesszővel kell elválasztani, és a következő alakúnak kell lennie:
'ts': Hang ("TargetedSound", "ts")
1.6. Lépés: Amikor az összes címkét hozzáadta, a "Mintafelvétel" cella kiértékelésével indítsa el a mintagyűjtési folyamatot. A cella kimenetén a rendszer kéri, hogy írja be a címkék minden hangjához társított rövid kódot (azaz „ts” a TargetedSound esetében). Ezt még ne tedd.
1.7. Lépés: Vigye a laptopját a konyhába, és helyezze el arra a helyre, ahol a legnagyobb valószínűséggel elhelyezi a kész rendszert. Ennek a helynek központi helyen kell lennie a jó hanggyűjtéshez, száraznak kell lennie, és távol kell lennie az esetleges kiömléstől, hogy megvédje elektronikáját.
1.8. Lépés: Készítse elő az első célzott hangot. Ha ez egy sütő időzítő sípoló hangja, akkor állítsa az időzítőt egy percre, és várja meg, amíg visszaszámol 20 másodpercig, mielőtt folytatná a következő lépést.
1.9 lépés: Írja be a címkekódot a parancssorba (azaz "ts"), majd nyomja meg az Enter/Return billentyűt.
A rendszer elkezd hallgatni egy olyan hangos eseményt, amely különbözik a helyiség környezeti zajától. A hang esemény észlelésekor addig kezdi a felvételt, amíg meg nem érzékeli a helyiségben lévő hangot a környezeti szintre. Ezután a hangot 16 bites WAV fájlként menti a SAMPLES_LOCATION könyvtárba a következő formátumban:
TargetedSound _#_ rögzítve.wav
Ennek a fájlnévnek a # része megfelel az összegyűjtött célzott hangminták számának. A WAV fájl mentése után a felszólítás megismétlődik, lehetővé téve, hogy ugyanazon hang több mintáját összegyűjtse a cella egyetlen végrehajtásával.
NE módosítsa ezt a fájlnevet. Fontos a következő lépéshez.
1.10. Lépés: Ismételje meg az 1.8. És 1.9. Lépést, amíg minden egyes hangból 5-10 mintát össze nem gyűjtött.
1.11 lépés: Ha befejezte, írja be az "x" -t a végrehajtásból való kilépéshez.
FIGYELMEZTETÉS: Ha ilyen módon nem lép ki a cellából, a Notebook összeomolhat. Ebben az esetben a Notebook kernelt vissza kell állítani, és minden cellát felülről kell futtatni.
1.11. Lépés (opcionális): Ellenőrizze az egyes fájlok WAV -adatait a "Gyors hangvizualizálás" cellában, és győződjön meg arról, hogy minden kívánt információt rögzített.
Néhány tipp:
- Rögzítse, ha csendes a konyhája.
- Egyszerre csak egy hangot rögzítsen. A rendszer nem tudja megkülönböztetni a hangok átfedését.
- Próbáljon minden hangpróbát a lehető legkövetkezetesebbé tenni. Ez elősegíti az azonosítás pontosságát.
- A Felvétel cella újbóli kiértékelése visszaállítja a # értéket a fájlnévben, és felülírja a # meglévő fájlokat. Úgy találtuk, hogy a legegyszerűbb egy hang összes mintáját egyszerre rögzíteni, majd leállítani a Rögzítő cellát.
- Ha a rendszer nem veszi fel a célzott hangot, próbálja meg csökkenteni a THRESHOLD értéket (kezdéskor 30 -ra állítva), és értékelje újra a cellát.
- Ha a felvételt a megcélzott hangon kívül más hangok is kiváltják, próbálja meg megemelni a THRESHOLD értéket (kezdéskor 30 -ra állítva), és értékelje újra a cellát.
2. lépés: Az Arduino/Matrix kijelző előkészítése
Ezután beállítjuk a vizualizációs rendszert Arduino Leonardo és KEYESTUDIO 16x16 LED pontmátrix kijelző segítségével. Ez az osztályozási modell előrejelzett hangjait adja ki. A korábbiakhoz hasonlóan itt és a projekt GitHub adattárában is megadtuk az összes szükséges fájlt.
2.1 lépés: Csatlakoztassa az Arduino és a LED mátrixot a fenti ábra szerint. A KEYESTUDIO vezetékeket tartalmaz a pontmátrixukhoz való csatlakozáshoz, de a kenyértábla jumper vezetékeire szükség lesz ezeknek a vezetékeknek az Arduino -hoz való csatlakoztatásához
2.2. Lépés: Nyissa meg az "arduino_listener.ino" fájlt az Ardunio IDE használatával, és töltse fel a Leonardo -ba. Ha helyesen van bekötve, látnia kell a "hallgatás" ikont (úgy néz ki, mint a Wi-Fi), amint a fenti képen látható.
2.3. Lépés: Készítse elő az egyes célhangokhoz megjeleníteni kívánt ikonokat. Ahhoz, hogy megtudja, mely LED -ek világítanak, az ikont el kell küldeni az Arduino -ból a mátrixba bájt tömbként. Például a kávéscsésze ikonunk (a fenti képen) ebben a formátumban kerül elküldésre a mátrixba:
{
0xff, 0xff, 0xff, 0xff, 0xfc, 0xfb, 0xbb, 0x5b, 0xeb, 0xfb, 0xfb, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfff, 0xff, 0xff, 0xff, 0xff, 0xff 0xfb, 0xf7, 0x0f, 0xdf, 0x1f, 0xff, 0xff};
Az ikonjainkat a Dot2Pic online eszköz segítségével rajzoltuk meg, 16 oszlopot, 16 sort és a "monokromatikus, 8 pixel byte -onként, függőleges beállítás" lehetőséget választva a legördülő menüből. A mieink megtalálhatók a "sample_icon_bytes.txt" tömbben.
MEGJEGYZÉS: Lehetnek olyan online eszközök is, amelyek ezt automatikusan meg tudják tenni a feltöltött fájlokkal.
2.4. Lépés: Rajzolja le az egyes ikonokat. A rajz befejezése után válassza a "Konvertálás tömbbe" lehetőséget.
Lépés: Cserélje ki szükségtelenül az "arduino_listening.ino" kód tetején megadott szükségtelen ikonokat. Feltétlenül írjon megjegyzést, amely leírja az ikont, hogy emlékezzen arra, melyik melyik!
2.6. Lépés: Töltse fel az új kódot az Arduino -ba. Még ne zárja be a fájlt, szükségünk lesz rá a következő lépésben.
3. lépés: Az osztályozó futtatása és a hangok azonosítása
Most itt az ideje összerakni a rendszert. Az osztályozási folyamat, az Arduino kommunikáció és az élő hangfelvétel egyetlen Arduino notebookon keresztül történik, amely itt található, vagy elérhető a projektünk GitHub tárházán keresztül.
3.1 lépés: Másolja a FullPipeline.ipynb jegyzetfüzetet a működő Jupyter Notebook könyvtárba, és nyissa meg.
3.2. Lépés: Futtassa az egyes cellákat egyenként, ügyelve a fejlécekben megadott megjegyzésekre. Kimenet nem várható. Hagyja abba, amikor eléri az "Edzési adatok betöltése" cellát.
3.3. Lépés: Szerkessze a SAMPLES_LOCATION_ROOT változót az "Oktatási adatok betöltése" cellában a korábbi mintakönyvtárának szülőkönyvtárába. Ezután módosítsa a SAMPLES_DIR_NAME változót a könyvtár nevére. Tehát ha a CollectSamples.ipynb fájlban beállította a helyét:
SAMPLES_LOCATION = "/Users/xxxx/Documents/KitchenSoundClassifier/MySamples/NewDir"
Most ezeket a változókat állítsa be:
SAMPLES_LOCATION_ROOT = "/Users/xxxx/Documents/KitchenSoundClassifier/MySamples/" SAMPLES_DIR_NAME = "NewDir"
Ez lehetővé tette az osztályozó gyors megváltoztatását pontatlanság esetén. Az adatok hangolásához válthat a különböző mintagyűjtemények között.
3.4. Lépés: Értékelje a cellát. Látnia kell minden gyűjtemény sikeres betöltését.
3.5. Lépés: Folytassa az egyes cellák egyenként történő futtatását, ügyelve a címsorokban megadott megjegyzésekre.
3.6. Lépés: Állítsa le, amikor eléri az "Messaging Arduino" cellát. A PORT_DEF változóban határozza meg azt a soros portot, amelyet a számítógép használni fog az Arduino -val való kommunikációhoz. Ez megtalálható az Arduino IDE -ben, és válassza az Eszközök> Port lehetőséget.
További információ itt található.
3.8. Lépés: Nyissa meg újra Arduino IDE -jét. Azokon a helyeken, ahol módosította az ikonokat, jegyezze fel a tömb értéke melletti betűt, de NE módosítsa. Az alábbi példában ez a "g".
// szemétlerakásconst unsigned char g [1] [32] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf7, 0xf7, 0xfb, 0xff, 0xfe, 0xfd, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x27, 0xc3, 0x03, 0xc3, 0x27, 0x2f, 0xff, 0xef, 0xdf, 0xbf, 0xff, 0xff,};
3.7. Lépés: (Visszatérés a Notebook "Messaging Arduino" cellájához) Változtassa meg a self.sounds szótárban található címkéket, hogy illeszkedjenek a minták rögzítésekor használt címkékhez, és győződjön meg arról, hogy minden címke megegyezik az előző betűvel lépés. A "felvétel" és a "hallgatás" egyaránt a rendszer alapvető funkcióinak részét képezik, és nem szabad megváltoztatni. NE változtassa meg a második betűt, hacsak nem érzi magabiztosnak, hogy néhány további változtatást is végrehajt az Arduino kódon, mert különben megzavarja a kommunikációt az Arduino/mátrixszal.
3.8. Lépés: Futtassa a fő funkciót! A kód megragadja az edzésadatokat, kivonja a legfontosabb jellemzőit, betáplálja őket a folyamatba, felépít egy osztályozási modellt, majd elkezdi hallgatni a hangos eseményeket. Amikor érzékel egyet, látni fogja, hogy a mátrix rögzítési szimbólummá változik (négyzet, körrel), és szegmentálja ezeket az adatokat, és betölti a modellbe. Bármit is jósol a modell, néhány másodperccel később megjelenik a mátrix kijelzőjén.
Az alábbi cella kimenetén követheti. Nézze meg, milyen pontos lehet!
4. lépés: LEGO ház létrehozása
Ez a szórakoztató rész! Az összes komoly gépi tanulási lépést elvégezte, és az egész végpontok közötti rendszert üzembe helyezte, és most jutalomként játszhat a LEGO-kkal. Itt nincs sok részletezési folyamat. Itt -ott csak olyan blokkokat adtunk hozzá, amelyek tetszettek, anélkül, hogy túlságosan aggódnánk az általános kialakítás miatt, és végül elégedettek voltunk azzal, ahogy kiderült.
Engedje meg, hogy képeink inspirációt szolgáljanak a konyhájára jellemző kreatív házhoz. Az Arduino -t és a vezetékek többségét üreges tokba helyeztük, majd a fenti mátrix kijelzőt túlnyúlásokkal rögzítettük. Egy kis papírt tettünk a kijelző fölé, hogy kissé eloszlassa a fényt, amelyről úgy éreztük, hogy az ikonok világosabbak.
Ajánlott:
Konyhai időzítő: 4 lépés
Konyhai időzítő: Ez a gen4-uLCD-35DT funkciót tartalmazza, amelyet másodlagos kijelzőként használnak a Raspberry Pi projektben, a Kitchen Timerben. Ez egy hasznos alkalmazás a legtöbb anyának és főzési rajongónak. Ez használható a főzés idejének nyomon követésére
KONYHAI STRRING CRANE: 4 lépés
KONYHAI STRRING CRANE: Üdvözlök mindenkit, ínyenc vagyok, és szeretem a forró leveseket, a mártást, a pudingkrémet és még sok mást, de ehhez vagy a feleségem, vagy én sok időt töltünk órákon át kavarással vagy habveréssel. Kihívásként akartam felfogni, hogy költséghatékony tervezést készítsek, ami borzasztó
Halvány konyhai páraelszívó LED -ek cseréje: 4 lépés
A homályos konyhai páraelszívó LED -ek cseréje: Amikor átalakítottuk a házunkat, a konyhát a középpontunknak terveztük. Élvezzük a társaságot, és a konyhánk mindig az lett, ahol mindenki lógott. Biztos vagyok benne, hogy sokan tudnak beszélni. Mivel én vagyok a család szakácsa
Arduino konyhai skála: 6 lépés (képekkel)
Arduino konyhai mérleg: Ebben a projektben megmutatom, hogyan lehet felépíteni egy egyszerű konyhai súlymérőt egyedi 3D nyomtatott burkolattal
Maradjon meg egy áramköri lapot konyhai kellékekkel: 6 lépés (képekkel)
Vágjon áramköri lapot konyhai kellékekkel: Miközben elektronikai projektekkel foglalkozik, gyorsan rájön, hogy minél összetettebbek, annál nehezebb együtt forrasztani. Ez általában azt jelenti, hogy patkányfészket kell létrehozni az egyes vezetékekből, amelyek terjedelmesek és nehezen orvosolhatók