views:

1006

answers:

4

My large (120gb) music collection contains many duplicate songs, and I've been trying to fingerprint tracks in the hopes of detecting duplicates. And since I'm a CS Major I'm very curious as to what is done out there? Nothing I do has nearly the accuracy of something like Shazam or Lala.com. How do they "hash" tracks? I have run a standard MD5 hash on all my files (26,000 files) and I found hundreds of equal hashes on different tracks, so that doesn't work.

I'm more interested in Lala.com since they work with full files, unlike Shazam, but I'm assuming both use a similar technique. Can anyone explain how to generate unique identifiers for music?

+1  A: 

Take a look at he Acoustic Fingerprint page on Wikipedia. It has references for some papers as well as links to implementations (including the open source fdmf).

ars
+2  A: 

There are a lot of algorithms for acoustic fingerprinting. Some of the more popular ones are:

  1. AMG LASSO
  2. AudioID
  3. LibFooID

In fact libfooId is opensource , so you can check out its code in google-code!!

Suraj Chandran
Those were good, although the wikipedia references and musicbrainz references gave good theoretical info which I appreciate very much too!!
Niels Joubert
Unfortunately it looks like LibFooID is pretty much dead, and consists of the leftovers of a research project.
Niels Joubert
A: 

After some more research (although this is not conclusive at all!), I happened across the wiki at MusicBrainz.org which details some of the approaches they use:

http://musicbrainz.org/doc/Audio_Fingerprint

http://musicbrainz.org/doc/How_PUIDs_Work

Niels Joubert
hmm....i just read them...its good enough...
Suraj Chandran
+3  A: 

The seminal paper on audio fingerprinting is the work by Haitsma and Kalker in 2002-03. For each frame of audio, it preprocesses (differences across time frames and frequency bands) and then stores a binarized version of the frame's spectrum.

This procedure adds robustness. If the entire signal is shifted in time, it still works (at least, one can derive a lower bound on performance degradation). It is pretty robust to environmental noise. Since its inception, there have been many papers on low-level music similarity, so there is no single answer.

Do you have absolutely identical files, i.e., the signals are time aligned, bit depth is the same, sampling rate is the same? Then I would think a hash like MD5 should work. But if any of those parameters are changed, so will the hashes. In such an event, a procedure like the one mentioned earlier would work better.

Take a look at the ISMIR proceedings available free online. Fun stuff. http://www.ismir.net/

Steve
Steve - thanks, that's exactly what I was looking for. I'll read the Haitsma and Kalker paper. The ISMIR proceesings looks like an awesome source. Yes, in my case, I have duplicate songs but they are at different bitrates, or in some cases I have a partial song and another full track, etc.
Niels Joubert