Mycroft, what's this song?

I’d really like to see Mycroft be able to identify songs by listening to a snippet, as with SoundHound or Shazam or Google Now or Siri. Firstly because then the home Mycroft can identify songs on TV programmes, but secondly because it’d be ideal (almost required) for Mycroft on phones such as the Ubuntu phone.

I can think of two ways of achieving this. Way number 1 is obviously to work with an existing provider (Shazam, whoever) to deliver it. This is bad in basically all ways (doesn’t improve the open source world, costs money, can’t be made available to everyone, requires legal hassle) except the important one: it’d work. The other way is to use the Echo Nest’s echoprint, which is great in all ways (the fingerprinter is open, one can build one’s own back end database, EN are worthy of support) except the important one: it doesn’t have most songs in it. It might be worth talking to the Echo Nest anyway in case it’s about to become much larger, but alternatively maybe some way to crowdsource a larger echoprint database can be evolved. It’s pretty logical that if everyone interested in Mycroft fed their music collection to it then it’d materially increase the size of the database… but there are privacy concerns here. It is nonetheless a subject worth thinking about; an open song fingerprinting database not only materially improves the universe but gives Mycroft a way to provide that feature, especially on phones.

4 Likes

I love the idea of a crowdsourcing echoprint.

But how it works legaly with copyright ? Could we do that ?

1 Like

It would be awesome if we could team up with Gracenote. They have a simple API via HTTP if we struck up a deal or had a lot of molah.

API: https://developer.gracenote.com/web-api

Edit:

Our APIs are free for non-commercial use. If your app is commercial, please use this form to contact our Sales department http://www.gracenote.com/company/sales/

Gracenote do, but that API doesn’t do audio fingerprinting. “Additional modes of lookup such as CD or audio recognition require the use of one of Gracenote’s other platforms such as GNSDK or Mobile Client.” And GNSDK is not an open documented API; they provide downloads for specific existing platforms (iOS, Android, Windows phone) which are therefore not suitable for Mycroft.

Ah, I guess it’s not a web API. Is this it? I’m fairly sure that they do music fingerprinting.

MusicID®
Gracenote MusicID® is the industry standard for music recognition. Originally created to identify CDs and deliver artist, album and song information to the desktop, Gracenote MusicID now touches hundreds of millions of music fans everyday through the world’s top music services and automakers. From identifying and unlocking a fan’s collection in the Cloud to making it possible for music Apps to recognize songs by waving a phone in the air, Gracenote MusicID is at the heart of great music experiences.

https://developer.gracenote.com/gnsdk

They do do music fingerprinting, but they don’t publish an API for people to use. They do downloadable libraries for the platforms they choose to support (“Please visit the GNSDK Platform Page to download the latest build for your mobile platform (iOS, Android, Windows Phone 8).”) and we aren’t on that list.

I see:

Downloads
Title Version Platform
GNSDK 3.07.7.3701o Windows, Mac, Linux

That should work, right?

Oh! Nice. Should do, I assume; someone should try that out…! (Although I assume it’s proprietary and needs license payments…)

1 Like

You always have to be careful with these kinds of things. Its more of a grey area. Some instances you can be held liable and others are probably okay to use commercially.

1 Like

Siri doesn’t identify songs by listening to them–she only knows what she’s playing. You can’t hold your iPhone up to a radio and expect a useful result to “Siri, what song is this?”.

I wonder if this could use musicbrainz’s song lookup api: http://acoustid.org

4 Likes

@Autonomouse nice share. Making a note of that.

1 Like

It could, but it should not. AcoustID does not recognise random parts of songs; you have to fingerprint the whole song. It’s not made for having Mycroft listen to a bit on the television in your living room; it’s for adding good ID3 tags to your music library via MusicBrainz Picard. So it’s not suitable for this use case.

I don’t think that’s correct. Apple partnered with Shazam to do exactly this: http://www.wired.com/2014/10/rate-songs-with-siri/

Shazam is good for recognizing, but I’ve heard shazam layers are not really into open-source: http://www.royvanrijn.com/blog/2010/07/patent-infringement/

About the EchoNest: I do like the echonest guys, but (correct me if I’m wrong) there is no public web server with echonest fingerprints anymore. Echonest partnered with Spotify and closed the public server – as I understood at least.
So, yes there are opensource https://github.com/echonest/ --> echoprint-codegen and echoprint-server but there is no central public echonest echoprint server with the data anymore. And other note: open-source echonest fingerprints recognizer is far from shazam: I’ve tried few years ago (when the server was available), it’s possible but pretty hard to recognize a song (fingerprint is stored in database) with laptop embedded mic in silent room (and we need at least 20-seconds examples at current implementation (as far as I remember), not talking about 2-5 sec examples).

We also could try a luck with the SoundHound. They do have services for not only the music, but also a voice recognition. Probably they could be more open than Shazam, not sure. I’ve wrote a letter to soundhound that I’m interested in open-source music recognition clients for linux-based platforms – no answer yet. Soundhound is also hosting a midomi.com with web-browser flashplugin which is sending recorded sound data to soundhound rtmp red5 server and getting the recognized song info answer.

@aa13q I reached out to SoundHound in regards to this as well, we’ll see if they get back to me. :smile:

1 Like

Does anyone in here use Tasker? Joaoapps.com had created a plug in called AutoSpotify. Basically, he uses the Spotify API to access the music library. You do not even need the actual Spotify app running to access this music either.

In this video below is kind of a bad example, they are using an extra plugin called AutoRemote but still, usually you can just tell the phone by voice what you want to listen to and it plays. For some reason the developers AutoSpotify videos have been taken down.

To launch a song playing by artist name and title is not so hard as music recognizing.

For example, we could setup a https://www.mopidy.com/ for that (or, even more, which is really interesting for me – provide http://linkedbrainz.org/ support for musing server similar to mopidy).

Recognizing a song metadata by recorded sample is a different hard task.

Is there an update on this topic?

I think it would be very useful e.g. while driving being able to ask Mycroft what song is playing on the radio right now. Further more it would be great having him to check if that song was availble on spotify or something like that and add it to your favorit songs or a specific playlist if you want.

1 Like