Hogyan működik a Shazam

A Shazam lehetővé teszi, hogy elküldje a telefonjával készített felvételt szinte bármilyen dalról, és a Shazam megmondja a dal nevét, az előadó nevét és egyéb adatokat a dalról. Ezek az egyéb adatok gyakran tartalmaznak linkeket olyan helyekre, ahol meg lehet vásárolni a dalt, valamint az előadó közelgő turnéjának időpontjait. Az elmúlt években a Shazam kiterjesztette könyvtárát a reklámokra és a televízióra is. Például Shazamolhat egy reklámot, és további információkat kaphat a termékről, beleértve a termék megvásárlásához vezető linket is.

A Shazam 1999-ben alakult, és régebbi, mint az okostelefon. A Shazam korai időszakában a felhasználók egy olyan készülékkel hívták fel, amely így nézett ki

A Shazam keresés még zajos környezetben, például bárokban vagy szórakozóhelyeken is képes találni egyezést, amennyiben az adott dal már szerepel a Shazam adatbázisában. A legjobb eredményt egy legalább öt másodperces felvétel adja. A dal bármely pontján elkezdheti a felvételt, és a Shazam néhány másodperc alatt elküldi a találatot. Ahhoz, hogy ez a szolgáltatás jól működjön, a Shazam több mint 8 millió dalból/hangfájlból álló, egyre növekvő adatbázissal rendelkezik. Ha feltételezzük, hogy egy átlagos hangfájl három perc hosszú, akkor több mint 45 évbe telne, hogy mindegyiket visszamenőleg lejátsszuk!

Egy ekkora adatbázissal nagy lefedettséggel rendelkeznek, de hogyan talál a Shazam ilyen gyorsan egyezést egy ilyen nagy adatbázisban? Először is, nem a tényleges hangfájlokat keresik, amikor a Shazam egy dalt keres. Ehelyett a Shazam az adatbázisban található minden egyes hangfájlhoz rendelkezik egy audio-ujjlenyomattal. A Shazam-felhasználó által beküldött felvételből is készül egy audioujjlenyomat, amely lehetővé teszi a pontos és gyors összehasonlítást. Ezek a hangujjlenyomatok numerikus adatok gyűjteményeiből állnak. Ha kíváncsi vagy, hogyan alakul számokká ez a fülbemászó dallam, amit Shazam-ozol, a következő rész neked szól.

Hogyan működik a hang

A legalapvetőbb definíció szerint a hang rezgő részecskék. Minden hangot három elem tesz egyedivé: Amplitúdó, frekvencia és idő. Az amplitúdó a rezgés nagysága, amit mi a hang hangerősségként érzékelünk. A frekvencia az a sebesség, amellyel a rezgés történik. A hang frekvenciája az, amit hangmagasságként érzékelünk. A frekvenciát hertzben (Hz) mérik, ami azt jelenti, hogy egy hanghullám másodpercenként hányszor ismétlődik. Az emberi fül 20 Hz és 20 000 Hz közötti hangokat hall. Hogy némi perspektívát adjunk, a hagyományos 88 billentyűs zongora legalacsonyabb hangja, az A0 frekvenciája 27,5 Hz. A zenei hangmagasság frekvenciája minden oktávban logaritmikusan növekszik. Más szóval, minden egyes oktáv frekvenciája kétszer akkora, mint az alatta lévő oktávé. Például az A1 frekvenciája 55Hz, az A2 frekvenciája 110Hz, az A3 frekvenciája pedig 220Hz.

A fenti ábrán látható, hogy sok hangszer képes ugyanazokat a hangokat játszani, de egy hang a hegedűn és ugyanaz a hang a zongorán másképp hangzik. Ezt a hangszínbeli különbséget nevezzük hangszínnek. Egy hang hangszínét a hangon belüli olyan frekvenciák hozzák létre, amelyek magasabbak (gyorsabban ismétlődnek), mint a hang észlelt hangmagassága. Ezeket a frekvenciákat nevezzük felhangoknak. Nézze meg ezt a felvételt, amely egy hanggal (C4 261,23Hz) kezdődik egy zongorán, majd a hangon belüli minden egyes felhangot egyenként lejátszanak, és ugyanazzal a hanggal zárul, amivel kezdődött.

Ezek a felhangfrekvenciák adják a hangszer jellegzetes hangszínét.

Az idő azért fontos, mert nemcsak azt adja meg, hogy mennyi idő alatt történik, hanem azt is, hogy egy hang más hangokhoz képest milyen időben történik. Egy adott dal sok hangszerből állhat, amelyek frekvenciájukban és amplitúdójukban változnak, ahogyan az időben egymáshoz képest mozognak. Az amplitúdó, a frekvencia és az idő összetettsége, valamint a pontos mérésük lehetősége miatt ugyanannak a dalnak két különböző változata mégis egyedi audioujjlenyomatot fog generálni.

Hogyan készül az ujjlenyomat

Az audioujjlenyomat elkészítéséhez egy hangfájlt spektrogrammá alakítunk át, ahol az y tengely a frekvenciát, az x tengely az időt, az árnyékolás sűrűsége pedig az amplitúdót jelöli (1A ábra).

A hangfájl minden egyes szakaszára kiválasztjuk a legerősebb csúcsokat, és a spektrogramot szórásdiagrammá redukáljuk. Ekkor már nincs szükség az amplitúdóra (1B. ábra).

Most már minden alapadattal rendelkezünk két olyan fájl összevetéséhez, amelyek átmentek az ujjlenyomatkészítési folyamaton. Összehasonlításuk azonban csak akkor lehetséges, ha a Shazam-felhasználó pontosan abban az ezredmásodpercben kezdte a felvételt, amikor a dal elkezdődött. Mivel ez szinte sohasem fordul elő, a hang-ujjlenyomatvételnek további lépései is vannak. A kombinatorikus hashelésnek nevezett folyamat révén a szórásdiagramon olyan pontokat választanak ki horgonypontnak, amelyek a diagram más pontjaihoz kapcsolódnak, amelyek a horgonypont után, egy célzónának nevezett idő- és frekvenciaablakban fordulnak elő (1C. ábra).

Minden horgonypont-pont párt egy táblázatban tárolunk, amely tartalmazza a horgony frekvenciáját, a pont frekvenciáját, valamint a horgony és a pont közötti időt, amelyet hash-nek nevezünk. Ezek az adatok ezután egy olyan táblázattal vannak összekapcsolva, amely a horgony és a hangfájl kezdete közötti időt tartalmazza. Az adatbázisban szereplő fájlok egyedi azonosítókkal is rendelkeznek, amelyek segítségével további információk nyerhetők ki a fájlról, például a dal címe és az előadó neve.

Hogyan találjuk meg az egyezést

Most, miután mindkét hangfájlról ujjlenyomatot készítettünk, a Shazam-felhasználó felvételének minden egyes horgonypont-párját elküldjük a Shazam adatbázisába, hogy egyező horgonypont-párokat keressünk. Ez a keresés visszaadja az összes olyan dal audioujjlenyomatát, amely tartalmaz bármilyen hash egyezést. Miután megvan az összes lehetséges egyezés a Shazam felhasználó felvételéhez, meg kell találnunk a Shazam felhasználó felvételének kezdete és az adatbázisból származó lehetséges egyezések egyikének kezdete közötti időeltolódást. Ezt az időbeli eltolódást úgy lehet kiszámítani, hogy a Shazam-felhasználó felvételén a horgonypont-pár előfordulási idejét kivonjuk a Shazam-adatbázisból származó hangfájlban a megfelelő hash előfordulási idejéből. Ha az egyező hash-ek jelentős részének azonos az időeltolódása, akkor az a dal egyezőnek minősül!

Ha egy szórásdiagramra vetítjük, ahol az y-tengely azt az időt jelöli, amikor a hash előfordul a Shazam felhasználó felvételén, az x-tengely pedig azt az időt, amikor a hash előfordul a Shazam adatbázisából származó hangfájlban, az egyező hash-ek egy átlós vonalat fognak alkotni (3A. ábra). Ugyanezen adatok hisztogramján, ahol az y-tengely az eltolási időpontokat, az x-tengely pedig az egyezések mennyiségét jelöli, a helyes eltolási időpontban egy nagy tüske lesz (3B. ábra).

Ez a hangkeresési módszer elég pontos ahhoz, hogy a Shazam-felhasználó olyan zajokat tartalmazó felvételei ellenére is találjon egyezéseket, mint az emberek beszélgetése, az út zaja vagy akár más dalok. Mivel az audio-ujjlenyomat által létrehozott horgonypont-hashek száma sokkal nagyobb, mint a pozitív keresési eredmény visszaadásához szükséges horgonypont-illesztések száma, a külső zajok által elfedett horgonypont-hashek nem elegendőek ahhoz, hogy a Shazam ne találjon következetesen egyezést egy hangfájlra az adatbázisból. Mivel a keresési algoritmus úgy van felépítve, hogy a Shazam adatbázisában található felvett hangra találjon találatokat, ha egy koncerten van, és pozitív találatot kap egy dal shazamozásakor, akkor nagy valószínűséggel az előadó háttérsávokat és/vagy szájszinkronizálást használ. Egy másik mellékhatás, hogy a Shazam visszaadja az eredeti felvételt, amelyről a minta származik, ha az előadó nem kombinálta a mintát más hangokkal, és semmilyen módon nem változtatta meg a mintát.

Leave a Reply