Hur Shazam fungerar

Med Shazam kan du skicka en inspelning av nästan vilken låt som helst från din telefon och Shazam kommer att ge dig namnet på låten, artistens namn och andra uppgifter om låten. Dessa andra uppgifter omfattar ofta länkar till ställen där du kan köpa låten samt kommande turnédatum för den artisten. På senare år har Shazam utökat sitt bibliotek till att även omfatta annonser och tv. Du kan till exempel Shazamma en reklamfilm och få ytterligare information om produkten, inklusive en länk för att köpa produkten.

Shazam grundades 1999 och är äldre än smarttelefonen. I Shazams tidiga dagar ringde användarna in på en enhet som såg ut så här

En Shazam-sökning kan hitta en träff till och med i bullriga miljöer som barer eller nattklubbar så länge låten redan finns i Shazams databas. En inspelning på minst fem sekunder ger bäst resultat. Du kan börja spela in när som helst i låten och Shazam skickar dig en träff på några sekunder. För att tjänsten ska fungera bra har Shazam en växande databas med över 8 miljoner låtar/ljudfiler. Om man antar att den genomsnittliga ljudfilen är tre minuter lång, skulle det ta över 45 år att spela upp varje ljudfil baklänges!

Med en databas av den här storleken har de stor täckning, men hur hittar Shazam en matchning så snabbt i en så stor databas? För det första är det inte de faktiska ljudfilerna som söks när du Shazam en låt. Istället har Shazam ett ljudfingeravtryck för varje ljudfil i databasen. Den inspelning som en Shazam-användare skickar in görs också till ett ljudfingeravtryck, vilket gör att de kan göra jämförelser exakt och snabbt. Dessa ljudfingeravtryck består av samlingar av numeriska data. Om du undrar hur denna catchy melodi som du Shazammar förvandlas till siffror är nästa avsnitt för dig.

Hur ljud fungerar

I sin mest grundläggande definition är ljud partiklar som vibrerar. Det finns tre element som gör varje ljud unikt: Amplitud, frekvens och tid. Amplituden är vibrationens storlek, som vi uppfattar som ljudets ljudstyrka. Frekvens är den hastighet med vilken vibrationen uppstår. Ett ljuds frekvens är det som vi uppfattar som tonhöjd. Frekvensen mäts i hertz (Hz) som anger hur många gånger en ljudvåg upprepas per sekund. Det mänskliga örat kan höra ljud som sträcker sig från 20 Hz till 20 000 Hz. För att ge lite perspektiv har den lägsta tonen på ett traditionellt piano med 88 tangenter, A0, en frekvens på 27,5 Hz. Frekvensen för en musikalisk tonhöjd i varje oktav ökar logaritmiskt. Med andra ord är frekvensen i varje oktav dubbelt så hög som i oktaven under den. Till exempel är frekvensen för A1 55Hz, frekvensen för A2 är 110Hz och frekvensen för A3 är 220Hz.

I diagrammet ovan kan du se att många instrument kan spela samma toner, men en ton på en fiol och samma ton på ett piano kommer att låta olika. Denna skillnad i tonkvalitet kallas timbre. Ett ljuds klangfärg skapas av frekvenser i ljudet som är högre (upprepas i snabbare takt) än den uppfattade tonhöjden i ljudet. Dessa frekvenser kallas övertoner. Kolla in den här inspelningen som börjar med en ton (C4 261,23Hz) på ett piano följt av var och en av övertonerna inom ljudet som spelas en efter en och avslutas med samma ton som den började med.

Dessa övertonfrekvenser är det som ger ett instrument dess karakteristiska klangfärg.

Tiden är viktig eftersom den inte bara ger oss den tidsperiod under vilken inträffar, utan också vid vilken tidpunkt ett ljud inträffar i förhållande till andra ljud. En viss sång kan bestå av många instrument som varierar i frekvens och amplitud när de rör sig genom tiden i förhållande till varandra. På grund av komplexiteten hos amplitud, frekvens och tid, och möjligheten att mäta dem exakt, kommer två olika versioner av samma låt ändå att generera ett unikt ljudfingeravtryck.

Hur ett fingeravtryck görs

För att göra ett ljudfingeravtryck omvandlas en ljudfil till ett spektrogram där y-axeln representerar frekvensen, x-axeln representerar tiden och skuggans täthet representerar amplituden (fig 1A).

För varje avsnitt av en ljudfil väljs de starkaste topparna ut och spektrogrammet reduceras till en scatter plot. Vid denna tidpunkt är amplituden inte längre nödvändig (Fig 1B).

Nu har vi alla grunddata för att matcha två filer som har genomgått fingeravtrycksprocessen. Det är dock bara möjligt att matcha dem om en Shazam-användare började spela in exakt samma millisekund som låten började. Eftersom detta nästan aldrig är fallet finns det ytterligare steg för att ta ljudfingeravtryck. Genom en process som kallas kombinatorisk hashning väljs punkter på spridningsdiagrammet ut som ankare som kopplas till andra punkter på diagrammet som inträffar efter ankarpunkten under ett tids- och frekvensfönster som kallas målzon (fig. 1C).

Varje par av ankarpunkter lagras i en tabell som innehåller frekvensen för ankaret, frekvensen för punkten och tiden mellan ankaret och punkten som kallas en hash. Dessa data kopplas sedan till en tabell som innehåller tiden mellan ankaret och ljudfilens början. Filerna i databasen har också unika ID:n som används för att hämta mer information om filen, t.ex. låtens titel och artistens namn.

Hur man hittar en matchning

Nu när vi har skapat fingeravtryck för båda ljudfilerna skickas vart och ett av ankarpunktsparen från Shazam-användarens inspelning till Shazams databas för att leta efter matchande ankarpunktspar. Denna sökning returnerar ljudfingeravtrycken för alla låtar som innehåller hashmatchningar. När vi har alla möjliga matchningar för Shazam-användarens inspelning måste vi hitta tidsförskjutningen mellan början av Shazam-användarens inspelning och början av en av dessa möjliga matchningar från databasen. Denna tidsförskjutning kan beräknas genom att subtrahera tiden för ankarpunktsparets förekomst i Shazam-användarens inspelning från tiden för den matchande hashens förekomst i ljudfilen från Shazams databas. Om ett betydande antal matchande hash-koder har samma tidsförskjutning, bestäms att låten är en matchning!

När de matchande hash-koderna kartläggs i ett spridningsdiagram där y-axeln representerar den tid då hash-koden uppträder i Shazam-användarens inspelning och x-axeln representerar den tid då hash-koden uppträder i ljudfilen från Shazams databas, kommer de matchande hash-koderna att bilda en diagonal linje (fig. 3A). I ett histogram av samma data där y-axeln representerar förskjutningstiderna och x-axeln mängden matchningar kommer det att finnas en stor spik vid den korrekta förskjutningstiden (fig. 3B).

Denna ljudsökningsmetod är tillräckligt noggrann för att hitta matchningar trots att Shazam-användarens inspelning innehåller buller, som t.ex. människor som pratar, vägbuller och även andra låtar. Eftersom antalet ankarpunktshashes som skapas av ett ljudfingeravtryck är mycket högre än det antal ankarpunktsmatchningar som krävs för att ge ett positivt sökresultat, är de ankarpunktshashes som maskeras av externt buller inte tillräckliga för att hindra Shazam från att konsekvent hitta en matchning för en ljudfil från databasen. Eftersom sökalgoritmen är uppbyggd för att hitta matchningar med inspelat ljud i Shazams databas är det mest troligt att artisten använder bakgrundsspår och/eller läppsynkronisering om du är på en konsert och får en positiv matchning när du shazammar en låt. En annan bieffekt är att Shazam returnerar originalinspelningen som ett prov kommer från om artisten inte har kombinerat provet med andra ljud och inte har ändrat provet på något sätt.

Leave a Reply