Miten Shazam toimii

Shazamin avulla voit lähettää puhelimellasi tehdyn tallenteen lähes mistä tahansa kappaleesta, ja Shazam kertoo sinulle kappaleen nimen, esittäjän nimen ja muita tietoja kyseisestä kappaleesta. Nämä muut tiedot sisältävät usein linkkejä paikkoihin, joista voit ostaa kappaleen sekä kyseisen artistin tulevat kiertuepäivät. Viime vuosina Shazam on laajentanut kirjastoaan mainoksiin ja televisioon. Voit esimerkiksi shazamata mainoksen ja saada lisätietoa tuotteesta, mukaan lukien linkin tuotteen ostamiseen.

Vuonna 1999 perustettu Shazam on vanhempi kuin älypuhelin. Shazamin alkuaikoina käyttäjät soittivat laitteella, joka näytti tältä

Shazam-haku pystyy löytämään osuman jopa meluisissa ympäristöissä, kuten baareissa tai yökerhoissa, kunhan kyseinen kappale on jo Shazamin tietokannassa. Vähintään viiden sekunnin pituinen tallenne antaa parhaat tulokset. Voit aloittaa äänityksen mistä tahansa kappaleen kohdasta, ja Shazam lähettää sinulle osuman muutamassa sekunnissa. Jotta tämä palvelu toimisi hyvin, Shazamilla on kasvava tietokanta, jossa on yli 8 miljoonaa kappaletta/äänitiedostoa. Jos oletetaan, että keskimääräinen äänitiedosto on kolmen minuutin mittainen, kestäisi yli 45 vuotta soittaa jokaista kappaletta peräkkäin!

Tämän kokoisella tietokannalla heillä on suuri kattavuus, mutta miten Shazam löytää osuman niin nopeasti näin suuresta tietokannasta? Ensinnäkin, varsinaiset äänitiedostot eivät ole se, mitä etsitään, kun Shazam etsii kappaletta. Sen sijaan Shazamilla on äänisormenjälki jokaiselle tietokannassa olevalle äänitiedostolle. Shazam-käyttäjän lähettämästä äänitteestä tehdään myös äänisormenjälki, jonka avulla voidaan tehdä vertailuja tarkasti ja nopeasti. Nämä äänisormenjäljet koostuvat numeeristen tietojen kokoelmista. Jos ihmettelet, miten tämä tarttuva sävelmä, jota shazammaat, muutetaan numeroiksi, seuraava osio on sinua varten.

Miten ääni toimii

Yleisimmän määritelmänsä mukaan ääni on värähteleviä hiukkasia. On kolme elementtiä, jotka tekevät jokaisesta äänestä ainutlaatuisen: Amplitudi, taajuus ja aika. Amplitudi on värähtelyn koko, jonka havaitsemme äänen voimakkuutena. Taajuus on se nopeus, jolla värähtely tapahtuu. Äänen taajuus on se, minkä havaitsemme sävelkorkeudeksi. Taajuus mitataan hertseinä (Hz), jotka ilmaisevat, kuinka monta kertaa ääniaalto toistuu sekunnissa. Ihmiskorva kuulee ääniä 20 Hz:n ja 20 000 Hz:n välillä. Perinteisen 88-näppäimisen pianon alimman sävelen, A0:n, taajuus on 27,5 Hz. Musiikkisävelen taajuus kasvaa jokaisella oktaavilla logaritmisesti. Toisin sanoen jokaisen oktaavin taajuus on kaksi kertaa suurempi kuin sen alapuolella olevan oktaavin taajuus. Esimerkiksi A1:n taajuus on 55Hz, A2:n taajuus on 110Hz ja A3:n taajuus on 220Hz.

Yllä olevasta taulukosta näet, että monet soittimet pystyvät soittamaan samoja säveliä, mutta viululla soitettu nuotti ja pianolla soitettu sama nuotti kuulostavat erilaisilta. Tätä äänenlaadun eroa kutsutaan sointiväriksi. Äänen sointiväri syntyy äänen sisällä olevista taajuuksista, jotka ovat korkeampia (toistuvat nopeammin) kuin äänen havaittu sävelkorkeus. Näitä taajuuksia kutsutaan yläsäveliksi. Katso tämä nauhoitus, joka alkaa pianon äänellä (C4 261,23 Hz), jonka jälkeen jokainen äänen sisällä oleva yläsävel soitetaan yksi kerrallaan ja joka päättyy samaan säveleseen, jolla se alkoi.

Nämä yläsäveltaajuudet antavat soittimelle sen luonteenomaisen sointivärin.

Aika on tärkeä, koska se ei ainoastaan kerro meille ajan pituutta, jossa ääni syntyy, vaan myös sen, mihin aikaan ääni syntyy suhteessa muihin ääniin. Tietty laulu voi koostua monista soittimista, joiden taajuus ja amplitudi vaihtelevat, kun ne liikkuvat ajassa suhteessa toisiinsa. Koska amplitudi, taajuus ja aika ovat monimutkaisia ja niitä voidaan mitata tarkasti, kaksi eri versiota samasta kappaleesta tuottaa silti ainutlaatuisen äänisormenjäljen.

Miten sormenjälki tehdään

Äänisormenjäljen tekemiseksi äänitiedosto muunnetaan spektrogrammiksi, jossa y-akseli edustaa taajuutta, x-akseli aikaa ja varjostuksen tiheys amplitudia (kuva 1A).

Kustakin äänitiedoston jaksosta valitaan voimakkaimmat huiput ja spektrogrammi pelkistetään hajontakuvioksi. Tässä vaiheessa amplitudia ei enää tarvita (kuva 1B).

Nyt meillä on käytössämme kaikki perustiedot, joiden avulla voimme verrata kahta sormenjälkiprosessin läpikäynyttä tiedostoa. Niiden yhteensovittaminen on kuitenkin mahdollista vain, jos Shazam-käyttäjä aloitti nauhoituksen täsmälleen sillä millisekunnilla, kun kappale alkoi. Koska näin ei juuri koskaan tapahdu, äänen sormenjälkien määrityksessä on lisävaiheita. Yhdistelmähakkeroinniksi kutsutun prosessin avulla hajontakuvion pisteet valitaan ankkureiksi, jotka yhdistetään muihin pisteisiin, jotka esiintyvät ankkuripisteen jälkeen kohdealueeksi kutsutun aika- ja taajuusikkunan aikana (kuva 1C).

Jokainen ankkuripistepari tallennetaan taulukkoon, joka sisältää ankkurin taajuuden, pisteen taajuuden sekä ankkurin ja pisteen välisen ajan, jota kutsutaan hashiksi. Nämä tiedot yhdistetään sitten taulukkoon, joka sisältää ankkurin ja äänitiedoston alun välisen ajan. Tietokannassa olevilla tiedostoilla on myös yksilölliset tunnukset, joiden avulla haetaan lisätietoja tiedostosta, kuten kappaleen nimi ja artistin nimi.

Miten löydetään vastaavuus

Nyt kun olemme luoneet sormenjäljet molemmille äänitiedostoille, jokainen Shazam-käyttäjän äänitteestä löytyvä ankkuripistepari lähetetään Shazamin tietokantaan etsimään yhteensopivia ankkuripistepareja. Tämä haku palauttaa kaikkien sellaisten kappaleiden äänisormenjäljet, jotka sisältävät hash-tapauksia. Kun meillä on kaikki mahdolliset osumat Shazam-käyttäjän äänitteelle, meidän on löydettävä aikaero Shazam-käyttäjän äänitteen alun ja tietokannasta löytyvän mahdollisen osuman alun välillä. Tämä ajallinen siirtymä voidaan laskea vähentämällä ankkuripisteparin esiintymisajankohta Shazam-käyttäjän tallenteessa Shazamin tietokannasta löytyvän äänitiedoston vastaavan hashin esiintymisajankohdasta. Jos merkittävällä määrällä täsmääviä hasheja on sama aikaero, kyseinen kappale määritetään täsmääväksi!

Kun se kuvataan hajontakuvioon, jossa y-akseli edustaa aikaa, jolloin hash esiintyy Shazam-käyttäjän tallenteessa, ja x-akseli edustaa aikaa, jolloin hash esiintyy Shazamin tietokannan äänitiedostossa, täsmäävät hashit muodostavat diagonaalisen viivan (kuva 3A). Saman datan histogrammissa, jossa y-akseli edustaa offset-aikoja ja x-akseli vastaavuuksien määrää, oikean offset-ajan kohdalla on suuri piikki (kuva 3B).

Tämä äänihakumenetelmä on riittävän tarkka löytääkseen osumia huolimatta siitä, että Shazam-käyttäjän nauhoitus sisältää kohinaa, kuten ihmisten puhetta, tien kohinaa ja jopa muita lauluja. Koska äänisormenjäljen luomien ankkuripisteiden hashien määrä on paljon suurempi kuin positiivisen hakutuloksen palauttamiseen tarvittavien ankkuripisteiden osumien määrä, ulkoisen melun peittämät ankkuripisteiden hashit eivät riitä estämään Shazamia löytämästä johdonmukaisesti osumaa äänitiedostolle tietokannasta. Koska hakualgoritmi on rakennettu löytämään osumia Shazamin tietokannassa olevaan nauhoitettuun äänitallenteeseen, jos olet konsertissa ja saat positiivisen osuman, kun shazammaat kappaleen, on todennäköistä, että esiintyjä käyttää taustaraitoja ja/tai huulisynkronointia. Toinen sivuvaikutus on, että Shazam palauttaa alkuperäisen äänitteen, josta näyte on peräisin, jos artisti ei ole yhdistänyt näytettä muihin ääniin eikä muuttanut näytettä millään tavalla.

Leave a Reply