Open Shazam: doable?

I wonder how hard it’d be to build a library for an open Shazam music recogniser? The hard part - fingerprinting - already exists courtesy of The Echo Nest’s echoprint. What’s then needed is a one click script which understands iTunes, rhythmbox, windows media player, etc, and which someone can download and run to fingerprint their whole library and upload the fingerprints. And then loads of people to run it. I would be sceptical, but I was sceptical about open street map too.

Theoretically it could be doable, I like your approach with the user generated fingerprints to get a comprehensive database.

The biggest problem I see is the needed calculation power to generate these fingerprints.
As far as I understand the fingerprints are generated using unsupervised learning. To do this in an effective way big arrays of GPU’s are needed. A PC would need several minutes to generate the fingerprint for a few seconds of music.
Please correct me if I’m wrong.

What’s the point?

Reminds me that Shazam doesn’t like when people explain how their technology works: http://www.royvanrijn.com/blog/2010/07/patent-infringement/

(the original article is here)

The thing which prompted me here was discovering that Siri on the iPhone does Shazam recognition. I don’t Shazam (or SoundHound) songs enough to have the icon anywhere very accessible, but adding it to Siri makes it much easier to Shazam a song when I want to (which is obviously why Apple did it). And I thought to myself: hey, it’d be very cool if we could have this integration into Ubuntu phones. But that’s very unlikely to happen; Canonical can’t do it because they don’t have Shazam (and Shazam don’t offer an open API or open source fingerprinting), and Shazam likely won’t do it because Ubuntu isn’t important enough to them and probably can’t bake their app that closely into the OS anyway. But we could do it… and the hard part, the fingerprinting technology, is done. The laborious part, of making a big database of songs, is not done, but it’s eminently suitable to be crowdsourced, don’t you think?

THen maybe it would be meaningful to add this fingerprinting to an already popular open database such as MusicBrainz?

Google does the same thing. If you say “OK Google identify song.” it will listen to whatever you’re listening and helpfully offer a link to Google Play store to buy it :wink:

BTW, you should check out http://echoprint.me/

Yep, that’s why I said “already exists courtesy of The Echo Nest’s echoprint” in the initial post. :slight_smile:

Sure thing. I don’t care where the back end lives. It could be a new server, or could be added to MusicBrainz; either would work.

I managed to miss that one somehow :smiley:
Anyway, is this something you are looking for: https://github.com/echonest/echoprint-ios-sample ?

Absolutely. I think you are right: what could be neat is to have a small tool that people run on their music collections that generates the fingerprints and then automatically uploads them to a service.

Another thing that could be cool is to write something that listens to Pandora, pulls out the metadata and updates the database.

That isn’t what I’m proposing; I’m sure it’d work, but I think it might be a bit of a legal minefield, surely?

Possibly, but if you have a tool that reads in the audio stream from your soundcard, I am not sure legally if there is a position they could have a problem with. The music is not being recorded or redistributed, it is merely being processed…it would be the same as if you ran it through an EQ.

I agree that that sounds logical, indeed. However, the music industry is well-resourced and highly litigious and we are neither. Chilling effects ftl.

1 Like

Have thought of a problem with this plan. The problem is this. You calculate the fingerprint for an mp3, but… how do we know which song it’s a fingerprint of? We can’t trust the id3 tags; firstly they’re not standardised, secondly they are likely to have minor spelling differences, and thirdly trusting them means that anybody can arbitrarily pollute the database by uploading the fingerprint from the latest One Direction song but saying it’s for some Cannibal Corpse track, thus rather surprising anybody who open-shazam’s that One Direction song in a pub somewhere. Not sure how to resolve that.

First, sanitize the $ARTIST / $ALBUM / $TRACKNAME.
Then, only start validating a song when at least x similar fingerprints have been provided.

It’s not an easy job, though, especially the sanitizing part… I’m very anal about my music collection and I often find myself in contradiction with… myself about naming things, especially classical music or Jazz bands (e.g. do you name it after the leader, or after the trio’s name? Or simply “leader name trio”?)

MusicBrainz already have accoustic fingerprint in the database (although, like most user generated database, it’l fairly incomplete…)

Although the main database uses Chromaprint/AcoustID, they also have a test database with fingerprints from Echoprint.

As for fingerprinting your collection to enrich the database, I think the official client, Picard has a function that allows you to do exactly that.

There is also a plugin for beets that allows you to do that for a large collection (Picard is GUI based, beets is a command line music organizer)

(Sorry, I had more links but it seems that I cannot put more that 2)

Huh. Beets sounds interesting as an approach here. My thought was to have a little downloadable thing which fingerprints your collection and doesn’t do anything else, rather than having instructions for Picard which are way harder to follow than “download this; press the big red button on it; that’s it”.

Ah! Thanks for all these inputs, it’s very interesting.

I tried Beets, but gave up when it started fucking up my whole library of anually, carefully crafted tags :slight_smile: However, as a tool to process a whole library and extract information from it, it can be very useful.