Monday, October 26, 2009

How Shazam identifies music

Shazam uses a mobile phone's built-in microphone to gather a brief sample of music being played. An acoustic fingerprint is created based on the sample, and is compared against a central database for a match. If a match is found, information such as the artist, song title, and album are relayed back to the user (Wikipedia).

First, a short explanation of how Shazam works. The company has a library of more than 8 million songs, and it has devised a technique to break down each track into a simple numeric signature—a code that is unique to each track. "The main thing here is creating a 'fingerprint' of each performance," says Andrew Fisher, Shazam's CEO. When you hold your phone up to a song you'd like to ID, Shazam turns your clip into a signature using the same method. Then it's just a matter of pattern-matching—Shazam searches its library for the code it created from your clip; when it finds that bit, it knows it's found your song.


Thus Shazam creates a spectrogram for each song in its database—a graph that plots three dimensions of music: frequency vs. amplitude vs. time. The algorithm then picks out just those points that represent the peaks of the graph—notes that contain "higher energy content" than all the other notes around it, as Wang explained in an academic paper he published to describe how Shazam works (PDF). In practice, this seems to work out to about three data points per second per song.

No comments:

Post a Comment