Zenei ujjlenyomat előállítása felügyelt környezetben

OData támogatás
Konzulens:
Simon Gábor
Automatizálási és Alkalmazott Informatikai Tanszék

A zenehallgatás mindennapjaink szerves részét képezi. Ha kíváncsiak vagyunk audiofájljaink metaadataira – úgy, mint előadó, cím, album, stb. –, azokat általában a hozzájuk tartozó ID3 tagekben tárolt információk, illetve a fájlnév alapján ismerhetjük meg. Azonban ha olyan fájl akad a kezünkbe, amelynél hiányoznak e támpontul szolgáló adatok, akkor azok megszerzéséhez – hacsak a dalszövegre rá nem tudunk keresni – az audió elemzésére van szükség. Mivel az audiofájlok bináris reprezentációja az alkalmazott bitrátától, tömörítéstől és formátumtól nagymértékben függ, ezért olyan módszert kell alkalmaznunk, ami magát az audiotartalmat veszi figyelembe és veti össze ismert számokkal. Ehhez az audión alapuló tömör kivonat készítésére van szükség – ezt hívjuk zenei ujjlenyomatnak –, hogy ilyenekből adatbázist építve a fent vázolt feladat megvalósítható legyen. E mellett zenei ujjlenyomatok használatával meghatározható például az is, hogy adathordozóinkon mely számok pazarolják el a helyet többszöri előfordulásukkal (akár különböző formátumokban is).

Diplomatervem elsődleges célja egy .NET platformon alapuló zenei ujjlenyomat készítő könyvtár létrehozása volt. Mindenképp egy már meglévő nyílt kódú megoldás algoritmusát szerettem volna átültetni, hogy a végeredmény kompatibilis legyen valamely létező ujjlenyomat adatbázissal. Választásom a Chromaprintre esett, ugyanis ez tűnt a leginkább kiforrott implementációnak, és egy jól kiépített infrastruktúra részét képezi. Bonyolult algoritmusával a bemenetként kapott audiót az abban fellelhető hangjegy-erősségek időbeli változásában talált sajátosságokkal jellemzi. Ezzel az algoritmussal ismerkedtem meg behatóan, és ezt portoltam – a kódot C# megfelelőjére átalakítva, és külső .NET-es osztálykönyvtárakat használva ott, ahol az eredeti megoldás is más könyvtárakat hívott segítségül. Sok fellépő nehézség dacára, még úgy is, hogy a kimenet az egyik használt könyvtár miatt némileg eltér az eredetitől, egy teljes értékű zenei ujjlenyomat készítő könyvtár született meg, ami a .NET platform létjogosultságát bizonyítja a számításigényes feladatok terén is. Ezután egy saját algoritmust implementáltam az ujjlenyomatok összehasonlítására, ami már nem csak a tárolás módjából fakadó különbségeket, hanem az audióban lévő konstans eltolás hatását is képes kiküszöbölni. Hozzá grafikus felhasználói felületet is készítettem, amelyen audiofájlokat kiválasztva az azok közötti hasonlóság mértéke megállapítható.

Letölthető fájlok

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