shazam! - ida > home729g43/projekt/studentpapper-16/...shazam är en musiktjänst som genom en...
TRANSCRIPT
!
!
SHAZAM!En!smart!musiktjänst!
Linha108!Fördjupningsarbete!729G43!
Linnéa!Hanson! 729G43!
Linha108! ! !
Sammanfattning Shazam är en musiktjänst som genom en sökalgoritm kan känna igen ljud och returnera låt
och artist till användaren. Detta sker genom att användaren spelar in ett tio sekunder långt
ljudklipp i mobiltelefonen som sedan analyseras av tjänsten och jämförs med låtar i dess
databas. Denna text ämnar förklara i detalj hur detta går till.
!
Linnéa!Hanson! 729G43!
Linha108! ! !
Innehållsförteckning0
Sammanfattning) 2!
Inledning) 4!
Spektrogram)blir)konstellationskartor) 4!Djupt&neuralt&nätverk& 5!
Konstellationskartor)blir)hashdetaljer) 7!Fingeravtryck& 8!Spridningsdiagram& 10!Histogram& 10!
Diskussion) 12!
Referenser) 13!!
!
Linnéa!Hanson! 729G43!
Linha108! ! !
Inledning !Musiken är en av de äldsta och största konst- och underhållningsformerna vi har, och den
strömmar till oss från alla möjliga håll i vår vardag. Vi hör musik i bilen på väg till jobbet, i
vårt hem, när vi går i affärer och när vi ser på filmer eller serier. Ibland är det vi själva som
väljer musiken och ibland har någon annan valt den. Om vi själva spelar musik från någon
musiktjänst är det enkelt att ta reda på exakt vad det är vi lyssnar på, allt vi behöver göra är att
gå in i programmet och avläsa namn och artist. Men vad gör vi när vi inte kommer åt källan
till musiken, och vill ha reda på vad det är som spelas och av vem? Det är här smarta
musiktjänster som Shazam, utvecklat av Shazam Entertainment Ltd., kommer in i bilden. En
musikigenkännande tjänst som genom akustiska fingeravtryck kan avgöra vilken låt vi lyssnar
på och med vilken artist, genom att via nätverksanslutning koppla upp sig mot en stor databas
av musik och jämföra.
Spektrogram blir konstellationskartor !Akustiska fingeravtryck, eller innehållsbaserad ljudidentifiering (i.e. content-based audio
identification), kan skapas genom spektrografi som är en typ av akustisk analys (Wikipedia
2016). Resultatet av spektrografi är ett diagram med tre dimensioner, vilka uppmäter
frekvens, tid och intensitet (se Figur 1). Genom ett spektrogram kan ljudets
frekvenssammansättning göras om till visuell information som sedan fortsatt kan analyseras.
Ett ljud visas separat i diagrammet och det går även att urskilja hur starkt ljudet var, hur länge
det pågick samt vilken frekvens ljudet hade. Av dessa ljud väljer Shazam ut
spektrogramtoppar (i.e. spectogram peaks) vilka förblir robusta trots närvaro av brus i
ljudfilen, som till exempel röster eller trafik (Wang, 2003). En topp väljs ut genom att man
tittar på grannarna runt den potentiella toppen och avgör om den har ett högre energiinnehåll
än de andra. Det finns även ett krav på densitet och amplitud för att säkerställa enhetlig
täckning genom ljudfilen samt för att öka sannolikheten att toppen väljs framför någon typ av
brus. Topparna som väljs ut bildar något som ser ut som en karta av konstellationer och som
kallas därefter. Om man skulle placera en konstellationskarta av en låt i databasen på en
remsa och placera en konstellationskarta av ett okänt klipp ovanför, på ett transparant papper,
och skjuta den ovanpå remsan skulle prickarna förr eller senare stämma överens. Desto fler
prickar som stämmer överens, desto större chans att det faktiskt är samma låt.
Linnéa!Hanson! 729G43!
Linha108! ! !
Figur 1. Spektrogram Figur 2. Konstellationskarta av
spektrogramtoppar
Djupt neuralt nätverk Det är enkelt att som människa urskilja de punkter som kan användas som spektrogramtoppar,
men desto svårare för en dator. Här används bildigenkänning som är en typ av
maskininlärning. Bildigenkänning kan innebära att systemet givet en bild ska kunna tilldela
denna en kategori, men det kan också vara mer invecklat än så, som i detta fall. För att ett
spektrogram ska kunna bli en konstellationskarta av spektrogramtoppar krävs fler
outputvärden samt en förståelse för hela spektrogrammet. Brusreducering (i.e. denoising)
kallas en process man skulle kunna genomföra på ett spektrogram för att få fram
spektrogramtoppar (Goodfellow, Bengio & Courville, 2016). Givet en skadad eller inkorrekt
observerad bild kan maskininlärningssystemet returnera en uppskattning av originalet eller
den korrekta bilden. I det här fallet kan bilden ses som skadad då den innehåller onödigt
bakgrundsbrus, ljud som vi ej önskar använda oss utav. Ljudet vi i detta fall är intresserade av
är endast spektrogramtopparna, de punkter på vår bild som är mest tydliga, övrig information
kan sorteras bort.
Simpson, Roma och Plumbley (2015) genomförde en liknande studie där de försökte få ett
neuralt nätverk att urskilja röster i en brusig omgivning. Detta problem är även känt som
cocktailpartyeffekten, och är något som vi människor är väldigt bra på. När vi står i en
samling av människor där alla pratar kan vi ändå lyckas fokusera vår uppmärksamhet på den
Linnéa!Hanson! 729G43!
Linha108! ! !
vi talar med. Vi kan även skifta vårt fokus och fokusera på en annan röst istället, eller en helt
annan konversation. Något som för oss är så enkelt är däremot inte alls lika enkelt för ett
neuralt nätverk. I Simpson, Roma och Plumbleys studie är uppgiften för det neurala nätverket
att försöka urskilja en rösts unika spektrogram från de andra spektrogram som finns
närvarande i ljudbilden. De tränade nätverket genom att använda spektrogram för en hel låt,
samt spektrogram för enskilda instrument, exempelvis en viss röst, som facit och förväntade
sig att det neurala nätverket slutligen skulle kunna producera det enskilda instrumentets
spektrogram utifrån det hela spektrogrammet. För en uppgift som denna krävs miljarder
parametrar som behöver justeras på ett sätt som ger ett önskat outputvärde och detta sker
genom flera iterationer. När man funnit en inställning som presterar bra på träningsdata kan
man sedan testa systemet på några låtar man ej haft med då man testat nätverket. Simpson,
Roma och Plumbley (2015) fann att deras neurala nätverk presterade över förväntan på dessa
låtar, och att nätverket hade skaffat sig en generell förståelse för hur en mänsklig stämma ser
ut på ett spektrogram. När detta gjorts kunde det neurala nätverket sedan även lära sig urskilja
separata stämmor, olika röster från olika personer eller olika ljud från olika instrument. Detta
skulle kunna användas för att plocka bort en röst eller ett instrument från en redan befintlig
låt, exempelvis för att skapa karaokelåtar. I figur 3 nedan skulle Simpson, Roma och
Plumbleys input layer vara låten med alla instrument, medan output layer skulle vara en
enskild stämma.
Figur 3. Ett djupt neuralt nätverk (Deep neural network).
I ett neuralt närverk är varje lager en transformeringsfunktion vars output blir inputen till
nästa lager (Dai, 2016). Matematiskt,
Linnéa!Hanson! 729G43!
Linha108! ! !
där är det första och andra lagret och är vikternas parametrar som är
associerade med det första respektive det andra lagret. När vi genomför gradientsökningen
uppdateras .
I Shazam har det djupa neurala nätverket istället tränats att välja ut spektrogramtopparna,
exakt hur detta genomförs framgår ej från rapporten som skrivits av dess utvecklare (Wang,
2003). Utifrån hur Simpson, Roma och Plumbley genomförde sin studie bör även denna
träning först ha skett i mindre skala på ett antal låtar där man försöker minimera modellens
träningsfel, för att sedan kunna minimera felvärdet på okända data, modellens
generaliseringsfel. Här försöker man undvika underfitting och overfitting. Underfitting
innebär att man får ett högt felvärde redan på träningsmängden samt att modellen presterar
ännu sämre på testmängden, medan overfitting innebär att man överoptimerat modellen på
träningsdatat och får ett lågt felvärde på den men sedan ett mycket högre felvärde på
testmängden då modellen lärt sig särdrag hos testdatat. I Figur 3 blir spektrogrammet input
layer medan en färdig konstellationskarta blir output layer. När det neurala nätverket justerats
och tränats färdigt kan det framställa egna konstellationskartor där spektrogramtopparna är
tydligt utmärkta. När detta gjorts fortsätter man skapa individuella fingeravtryck, hashdetaljer.
Konstellationskartor blir hashdetaljer Det tar lång tid att hitta rätt tidpunkt i låtarna i databasen endast med hjälp av
konstellationskartor, detta då de har låg entropi. Entropi är ett mått på brus, eller störningar
som finns i materialet som ska analyseras. I databasen har låtarna ett rent ljud, utan
bakgrundsbrus och de är även mycket längre än det ljudklipp användaren spelat in. Då det inte
är helt säkert att samtliga spektrogramtoppar på konstellationskartan kommer från låten vi
söker behöver vi modifiera vår sökning något. Detta är anledningen till att man även använder
en hashfunktion som tar ut de specifika fingeravtrycken för låtarna. En hashfunktion är en
funktion som används för att göra om en godtycklig mängd data till en fixerad mängd data
(Yantao & Xiang, 2016). Två ljud och tidpunkten mellan dessa bildar en hashdetalj. De unika
hashdetaljerna, eller fingeravtrycken, som skapas för ljudfilen jämförs sedan mot filerna i
databasen och deras respektive fingeravtryck, för att avgöra om det finns några matchningar.
De eventuella matchningar som dyker upp utvärderas efter hur korrekta de är och algoritmen
returnerar sedan den korrekta matchningen. Wang (2003) beskriver att man börjar med att
välja ett ankare, som är ett visst ljud. Detta enskilda ljud paras sedan ihop med andra rent
tidsmässigt nära ljud och läggs till i databasen som hashdetaljer. Varje par ger två
Linnéa!Hanson! 729G43!
Linha108! ! !
frekvenskomponenter plus tidsskillnaden mellan punkterna och varje hashdetalj kan packas i
ett 32-bitars heltal. Till detta heltal läggs även information om vilken låt det gäller, vilket ger
ett 64-bitars heltal, varav 32 bitar är en hashdetalj och 32 bitar är när hashdetaljen startar och
vilken låt det gäller. Genom att söka efter par istället för enskilda toppar går sökningen
mycket snabbare. När man söker efter par blir det mindre chans att det blir en matchning om
detta par inte skulle vara korrekt utfärdat, men att söktiden minskar samt att det blir fler
hashdetaljer än det hade blivit spektrogramtoppar väger upp för detta.
Fingeravtryck För att något ska kunna användas som ett fingeravtryck bör det enligt Shazam vara temporärt
lokaliserat, ej påverkas av översättning, vara robust och ha tillräcklig men ej för hög entropi
(Wang, 2003). Att ett fingeravtryck är temporärt lokaliserat innebär att man plockar ut ett
visst ljud som ankare och sedan jämför detta med ljud som inträffar nära detta ankare, rent
tidsmässigt. Detta gör man för att inte avlägsna händelser i ljudfilen ska påverka den
hashdetalj man tagit ut. Fingeravtrycket får ej heller påverkas av översättning, i det här fallet
innebär det att fingeravtrycket inte får påverkas av var i låten fingeravtrycket befinner sig.
När man spelar in ett klipp från en okänd låt vet man ej heller exakt var i låten man befinner
sig, och en matchning måste kunna hittas trots detta. Därför söker algoritmen igenom hela
databasen och även hela låtar, för att försöka avgöra om fingeravtrycket finns någonstans i
någon av låtarna. Ljudfilen måste även kunna kännas igen trots brusig bakgrund och andra
ljud i omgivningen som kan störa, till exempel röster. Databasen och dess fingeravtryck bör
därför vara robusta, för att en ljudfil med brus ska kunna matcha med en ljudfil i databasen
som har rent ljud, utan brus. Fingeravtrycken som skapas bör vara tillräckligt exakta och ha
tillräckligt hög entropi för att inte ge falska matchningar mellan den okända ljudfilen och
ljudfiler i databasen, men de bör ej heller vara för exakta och ha en allt för hög entropi då
även detta leder till att inga matchningar kan göras vid närvaro av brus.
!
Linnéa!Hanson! 729G43!
Linha108! ! !
Figur 4. Kombinatorisk hashgeneration Figur 5. Hashdetalj
Sökning och matchning
När sökningen sker har fingeravtryck skapats på den okända ljudfilen och hashdetaljerna kan
matchas mot ljudfiler i databasen. Om ett par från den okända ljudfilen matchas mot ett annat
par i databasen från en viss låt placeras det i en mapp för just den låten. Om flera matchningar
hittas för olika låtar sorteras dessa per låt och sedan skannas mapparna igenom ytterligare en
gång efter en fullständig matchning. Ett exempel på hur mapparna kan se ut demonstreras av
Figur 6 nedan.
Figur 6. Mappar fyllda med hashdetaljer sorterade på låt och artist.
Linnéa!Hanson! 729G43!
Linha108! ! !
Spridningsdiagram Här skapas ett spridningsdiagram som visar sambandet mellan den okända ljudfilen och
ljudfilen i databasen. Om ljudfilerna matchar bör en sekvens av matchningar visas i form av
de hashdetaljer som matchats, från början till slutet av ljudfilen, med samma relativa tidsföljd.
Då bör man även kunna finna ett signifikant kluster av prickar som formar en diagonal linje i
spridningsdiagrammet. För att denna diagonala linje ska upptäckas antar vi att lutningen är
1.0 och då har de matchande filerna relationen
där är ett särdrag för den rena filen i databasens tidskoordinat och är tidskoordinaten
för ett särdrag i den okända ljudfilen. För varje koordinat i spridningsdiagrammet
räknar man ut skillnaden mellan koordinaterna enligt nedan:
Histogram Av denna skillnad skapar man sedan ett histogram och söker efter en topp. Detta kan man
enligt Wang (2003) göra genom att sortera alla skillnader och söka efter ett kluster av samma
värden. Sökningen tar endast mikrosekunder per mapp och resultatet av en matchning är
antalet matchande punkter i histogrammet. Om det finns ett signifikant kluster av matchningar
har man hittat en matchning. Nedan visas ett spridningsdiagram samt ett histogram som visar
hur det ser ut då ett klipp och en ljudfil i databasen ej matchar varandra, samt ett
spridningsdiagram och histogram som demonstrerar ett klipp och en ljudfil som matchar
varandra (se Figur 7 samt Figur 8). Anledningen till att även en låt som inte matchar ger
utslag på histogrammet är att vissa delar av låtar kan vara lika varandra. Vissa tonföljder eller
bastoner kan vara desamma då det är vanligt att musiker influeras av varandra. Därför sätter
man även en gräns för hur måna matchningar som måste finnas i ett visst klipp för att det ska
ge utslag som en matchning.
!
Linnéa!Hanson! 729G43!
Linha108! ! !
Figur 7. Ett spridningsdiagram samt ett histogram där två ljudfiler ej matchar
Figur 8. Ett spridningsdiagram samt ett histogram där två ljudfiler matchar
Linnéa!Hanson! 729G43!
Linha108! ! !
Diskussion Shazam hjälper sina användare att hitta den musik de söker, och musiktjänsten hjälper även
musiken och dess upphovsmän att nå ut till fler personer. I applikationen ges man möjlighet
att lyssna på låten direkt, se texten, videoklipp om sådana finns och man kan även se
information från artisten om eventuella konsertdatum och annat som kan intressera
användaren.
Algoritmen är så pass exakt att utvecklarna funnit flera exempel på plagiat. Detta blir
ytterligare ett användningsområde för tjänsten, då stulet material med copyright kan kännas
igen och även rapporteras. Tjänsten går ej att använda vid konserter eftersom den söker efter
fingeravtryck som överensstämmer exakt, vilket de ej gör vid ett liveframträdande,
åtminstone inte med millisekundprecision. Om tjänsten finner låten trots att inspelningen sker
live är det därför snarare troligt att artisten ej framträder live, vilket har upptäckts flertalet
gånger av tjänsten. Detta kan vara intressant vid recensioner av konserter, då det är ganska
stor skillnad på att framträda live och att spela upp ett ljudklipp från ett redan befintligt
album.
Det finns även gånger man får en låt i huvudet som man ej kommer på vad den heter, utan att
den spelas. Kanske kan framtiden erbjuda tjänster där man själv kan sjunga in den låt man
söker och som sedan söker i en databas efter korrekt låt. Självklart skulle inte en sådan tjänst
vara lika exakt eftersom det kan vara stora skillnader på materialet i databasen och det
material som användaren spelar in. Men då man kan se frekvens på ett spektrogram borde inte
detta vara helt omöjligt, så länge inte användaren är helt tondöv.
Det finns många ytterligare användningsområden för den här typen av tjänst, och jag är därför
övertygad om att ytterligare liknande tjänster kommer att dyka upp i framtiden. Det ska bli
spännande att se vad vi kommer kunna göra om några år med den här typen av algoritmer.
!
Linnéa!Hanson! 729G43!
Linha108! ! !
Referenser
Wang, A. L.-C. (2003). An Industrial Strength Audio Search Algorithm. Proceedings of the 4th International Society for Music Information Retrieval Conference (ISMIR 203), Baltimore, Maryland (USA), 26-30 October 2003, 7–13. http://doi.org/10.1109/IITAW.2009.110
Yantao, L., & Xiang, L. (2016). Chaotic hash function based on circular shifts with variable parameters. Elsevier, s. 1. http://dx.doi.org/10.1016/j.chaos.2016.08.014
Wikipedia.!(den!09!01!2017).!Wikipedia&Den&fria&encyklopedin.!Hämtat!från!
www.wikipedia.org:!https://sv.wikipedia.org/wiki/Spektrografi!
!
Goodfellow,!I.,!Bengio,!Y.,!&!Courville,!A.!(2016).!Deep&Learning.!Cambridge:!MIT!Press.!
!
Simpson, A. J. R., Roma, G., & Plumbley, M. D. (2015). Deep karaoke: Extracting vocals from musical mixtures using a convolutional deep neural network. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 9237, pp. 429–436). http://doi.org/10.1007/978-3-319-22482-4_50
Dai,!W.!(2016).!Acoustic&Scene&Recognition&with&Deep&Learning.!Carneige:!Machine!Learning!
Department!Carneige!Mellon!University.!