views:

143

answers:

2

Recently I started to use the Shazam app on my iPhone. For those who don't know, this app identifies songs by listening to a small segment of the song playing. I was amazed by it's accuracy and speed so I decided to do a little digging.

I found a paper written by one of their developers here. In the paper the developer goes into a good amount of detail describing the fingerprintng algorithm used in Shazam.

As a pet project Id like to make my own song fingerprinting application so I can get some experience with audio programming.

What are some audio libraries that help you extract things like frequency, amplitude, and other characteristics of an audio clip or mp3 song over it's duration?

I'm using .NET but I'm open to other languages libraries. I'm also fine with both open source and paid libraries. As long as I can reliabably extract audio characteristics progmatically I'll be happy.

See also:
How Shazam Works
Shazam Journal Paper

A: 

The ffmpeg library supports a lot of audio codecs, but it's quite a pain to interface with, IMHO.

For extracting audio properties, you should consider a decent library suited for signal analysis. You will especially need the Fast Fourier Transformation (FTT), for example, to extract frequency data out of your audio samples. A search gives a lot of results on that topic.

/edit: For .NET, I am confident there is a ffmpeg interface. You will find signal analysis tools for .NET, too.

MrMage
+2  A: 

Try having a look at NAudio. It may not have all the audio analysis that your looking for upfront but it is quite extensible and would be a good place to start if your using .Net languages.

Sebastian Gray
Agreed. NAudio is a good place from which to start.
Noldorin