Valós idejű akkordfelismerés Android platformon

OData támogatás
Konzulens:
Dr. Bank Balázs Lajos
Méréstechnika és Információs Rendszerek Tanszék

Az okostelefonok tömeges elterjedése olyan lehetőségeket adott a felhasználók kezébe, amilyeneket korábban el sem tudtak képzelni. A mai, modern készülékek kameráik, mikrofonjuk és számos különféle érzékelőjük segítségével képesek megmérni a minket körülvevő világ megannyi tulajdonságát, egyre növekvő számítási kapacitásuk segítségével pedig összetett módon képesek feldolgozni a kinyert információkat.

Szakdolgozatomban egy olyan alkalmazás fejlesztését tűztem ki célul, mely az okostelefonok eme képességét kezdő és hobbizenészek segítésére fordítja. A program digitális jelfeldolgozási módszereket felhasználva képes valós időben felismerni a nyugati zene két leggyakoribb akkordtípusát, a dúr és a moll hármashangzatokat. Az alkalmazás az egyik legelterjedtebb mobil operációs rendszerre, az Androidra készült, az akkordfelismeréshez pedig a készülék beépített mikrofonját használja.

Megvalósítás előtt utánajártam, hogy milyen módszereket alkalmaznak az automatikus akkordfelismerés témakörében, majd az alkalmasnak tűnő módszereket MATLAB segítségével tettem próbára. A tesztelt technikákból egy olyan eljárás összeállítására törekedtem, amely nagyobb késleltetés nélkül, megbízhatóan felismeri a hallott akkordot. Az eljárás az egyszerre egy hangszeren játszott akkordok felismerését teszi lehetővé, tesztelését klasszikus gitárral végeztem.

A választott eljárás az akkordot tartalmazó hangminta Pitch Class Profile (PCP) vektorának elemzésén alapul. Ezen vektor meghatározásához a hangmintát frekvenciatartományon ábrázolom, majd spektrumának segítségével meghatározom a kromatikus skála hangjainak intenzitását, azok frekvenciáinak ismeretében. A különböző oktávokon mért, azonos zenei hanghoz tartozó intenzitásokat ezután összesítem, ezzel egy 12 elemű vektort nyerve, melyet PCP vektornak neveznek. Ezután mintaillesztés segítségével meghatározom, hogy a PCP vektor melyik akkord ideális vektorára hasonlít leginkább.

Az eljárás Androidos megvalósítása előtt megvizsgáltam rendszer képességeit, és az általa nyújtott lehetőségeket egy ilyen jellegű program létrehozásához. Az implementáció során törekedtem az Android rendszerek különböző verzióinak széles körében kompatibilis szoftveres eszközök használatára, hogy az alkalmazás régebbi készülékeken is működjön.

Az elkészült alkalmazást felismerési gyorsaság és pontosság szempontjából összevetettem a MATLAB-ban összeállított programmal, illetve néhány, a Google Play-en megtalálható, ingyenes applikációval. Megállapítottam, hogy a saját alkalmazásom kevesebb funkciót tartalmaz ezeknél, ugyanakkor mind felismerési gyorsaság, mind pontosság szempontjából jobban teljesített a kipróbált programoknál.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.