Hoe muziekidentificatie-apps werken
Sinds de start in 1999 is Shazam gebruikt om nummers meer dan vijftig miljard keer te identificeren, en dat is nog niet eens de ID's van Soundhound, MusicID en andere geluidsherkennings-apps.
Vanuit het perspectief van de gebruiker is het eenvoudig: Start de app, druk op een knop en laat je telefoon naar het nummer luisteren. Na een paar seconden, zelfs met achtergrondruis en vervorming, zal de app je vertellen wat de song is. Het werkt zo snel en zo goed dat het bijna magie lijkt - maar, zoals met de meeste magische dingen tegenwoordig, wordt het meestal beheerd door algoritmen.
Wat is het idee achter deze apps?
Shazam, Soundhound en andere muziekidentificatiediensten werken allemaal op dezelfde manier: ze hebben een grote database met nummerinformatie, een algoritme dat snel informatie uit je songvoorbeeld kan extraheren en een app waarmee je met die dingen kunt communiceren. Technisch gezien heb je zelfs geen smartphone nodig.
Shazam was oorspronkelijk bruikbaar op ouderwetse flip-telefoons door gewoon een nummer op te nemen en naar de service te sms'en. Soundhound is eigenlijk een paar stappen verder gegaan door je ook in staat te stellen om te zingen of gebrom in hun app die ze vergelijken met een door de gebruiker aangeleverde database van andere zang / zoemende opnames.
Hoe werken ze?
In eenvoudige bewoordingen ziet het proces er als volgt uit:
- De database van de app heeft een enorme verzameling song-'vingerafdrukken' of kleine stukjes gegevens over de unieke geluidspatronen van de song.
- Wanneer een gebruiker op de knop "Record" drukt, luistert de app naar de muziek en creëert hij een vingerafdruk op basis van de paar seconden audio die hij hoort.
- Deze vingerafdruk wordt vergeleken met de database met bestaande vingerafdrukken. Als je vingerafdruk van tien seconden overeenkomt met een deel van een nummer, krijg je je (hopelijk correcte) songresultaat. Als dit niet het geval is, krijgt u een foutmelding terug.
Als je alleen op zoek bent naar een uitleg op level-niveau, dat is alles wat je moet weten. Het meest interessante deel is hoe je die vingerafdruk krijgt.
Song vingerafdrukken
Het begint allemaal met een spectrogram, zoals in de bovenstaande grafiek, genomen van een paper geschreven door een van de oprichters van Shazam, Avery Wang. Dit is in wezen een grafiek met de tijd op de x-as (horizontaal), de frequentie op de y-as (verticaal) en de amplitude voorgesteld door verschillende niveaus van kleurintensiteit. Elke reeks geluiden kan dus worden omgezet in een spectrogram en elk punt op het spectrogram kan een set coördinaten worden toegewezen. Net zoals dat, kunnen bankbiljetten getallen zijn.
Als je alleen wat geluiden aan elkaar zou hoeven koppelen, zou je hier kunnen stoppen. Als je echter door een database met miljoenen nummers wilt kijken, heeft een volledig gedetailleerd spectrogram veel te veel datapunten om op elke snelheid door te kunnen kijken.
De grote doorbraak in muziekherkenning was het besef dat je geluiden kunt identificeren met slechts een paar stukjes data: de pieken of de meest intense delen. Niet alleen het verminderen van de lagere energiedelen van een nummer vermindert de omvang van het spectrogram, maar het maakt de apps minder vatbaar voor het identificeren van saaie, consistente achtergrondruis als onderdeel van de doelgeluiden. Stel je een skyline van de stad voor: de meest herkenbare delen zijn de toppen van gebouwen, niet de middelste verdiepingen, en dat zie je het verste weg.
Dus elke seconde van elk nummer wordt uitgekleed tot slechts enkele van de meest intense gegevenspunten; alles aan de skyline van de stad is verwijderd, behalve de top. Maar dat is nog steeds niet helemaal efficiënt genoeg om onmiddellijk doorzoekbaar te zijn, dus de volgende stap is om deze reeks pieken "te hashen". Hashing neemt eenvoudigweg een set ingangen, voert ze door een algoritme en kent ze een geheel getal-uitvoer toe. In dit geval wordt de hash gegenereerd door twee van de hoge intensiteitspieken te nemen, de tijd daartussen te meten en hun twee frequenties bij elkaar op te tellen.
Het resultaat is een cijferreeks, gemakkelijk op te slaan en doorzoekbaar. Wanneer een computer deze hash leest, herkent deze deze als representatief voor de frequentie en de tijdsafstand. Nadat alle pieken in de song zijn geïdentificeerd en gehasht, is de transformatie voltooid: het nummer heeft nu een uniek 32-bits nummer dat als ID in de database fungeert. Nog belangrijker is dat elke seconde van het nummer wordt weergegeven door de cijfers.
Wanneer je telefoon muziek hoort, doorloopt dit het exacte proces: het filtert alles behalve de hoogste punten weg, hashes ze en maakt een vingerafdruk voor de paar seconden die het heeft opgenomen. Zodra dit is voltooid, moet je telefoon alleen zien waar de overeenkomstige getallenreeksen in de database worden weergegeven, zodat deze de gedetecteerde frequenties en timing aan de juiste song kan koppelen en binnen enkele seconden aan je kan retourneren.
Muziek en meer
Deze technologie is het meest gebruikt voor muziekherkenning, maar apps voor geluidherkenning kunnen ook werken met films, commercials, tv-shows, vogelzang en meer. Shazam en Soundhound zijn het meest bekend, maar je kunt nu ook aan Google vragen welk nummer wordt afgespeeld en krijg een accuraat antwoord.
En als je je afvraagt: "houden deze bedrijven bij welke nummers gevraagd worden?" Is het antwoord "ja". Muziekidentificatiestatistieken hebben het succes van nummers en artiesten met een tamelijk hoge nauwkeurigheid kunnen voorspellen en grote platenlabels zoals Warner hebben contracten afgesloten met apps zoals Shazam om aanstormende artiesten te helpen vinden. Dus als je een artiest wilt ondersteunen, kun je net zo goed je steentje bijdragen en hun liedje opzoeken! Je kunt ze misschien helpen opstijgen.