Sound and music

EchoPrint is an open source of music identification system

imageMany of you have heard and known about music identification systems such as TrackID, Shazam, MusicBrainz or that allow recognizing a name of song by its recorded fragment. All of them are sufficiently good, but they have a common disadvantage – the closed code, therefore, their field of use is limited. TrackID you can only use on the phones of Sony Ericsson, Shazam - also can be used on the phones, although at a more extensive list of platforms, and Music Brainz may not work at all.

The guys from a company Echo Nest, decided that music recognition should be accessible to the world, such as e-mail or DNS:), so they released their program for MIT License. This program is very good, because the founders are Doctors of Science from the MIT Media Lab.

The program that they released is not just limited to recognition of recorded music, but it also lets you do things like search for duplicate music, mass recognition and tag filling in the music collections, verification of the audio / video content of any material, synchronization of collections from the various musical spaces (for example: iTunes <-> <-> Spotify) and much more.

How does it work?

In short, it runs the code generator on the client’s side that generates a unique fingerprint of a recorded song, and sends it to the server for identification.


The client, echoprint-codegen comes in the form of a cross-platform library and binary. Here is a typical example of the use - check out 20 seconds of mp3 file, start from the 10th second:
echoprint-codegen ./recorded.mp3 October 20 | \
curl-F "query = @ -"
{"Response": {"status": {"version": "4.2", "code": 0, "message": "Success"},
"Songs": [{"tag": 0, "score": 66, "title": "Creep", "message": "OK (match type 6)",
"Artist_id": "ARH6W4X1187B99274F", "artist_name": "Radiohead", "id": "SOPQLBY12A6310E992 "}]}}

If you want to use it in your program, it is easy:
Codegen * pCodegen = new Codegen (const float * pcm, uint numSamples, int start_offset);
string code = pCodegen-> getCodeString ();

As it becomes clear to tie it to your favorite language / project is a snap - just use your imagination. By the way, for the most active guys even made a contest with a prize of $ 10,000 for the most interesting and innovative music application that uses the capabilities of EchoNest API in full. They have vast API, which ties up the musical songs to all imaginable connections starting from the main geographical location and year of birth of performer to the level of composition.

In order to get a digital fingerprint of a songs using your own algorithm The Echo Nest Musical Fingerprint aka ENMFP, which the company has been successfully used for their other services, such as finding similar songs, counting BPM and more.
More details about API can be found on the portal for developers.


Server-side code is also publicly available on github, so if you wish, you can pick up your own server - Echo Nest even laid out in public sharing a few gigabytes of data already processed. Server engine is based on a search engine Apache Solr, as the database is used Tokyo Tyrant.

So far, data is relatively small on their server - about 150 000 songs, but the company says, that they are importing multimillion collection on 7digital, they actively cooperate with MusicBrainz (which even raised its echoprint-server to integrate with their data), also they offer functional to download new songs for the users.



Of course, one of the main functions of usage is recognition of heard music. If you heard a good song, got the phone, pressed a button and found out who was singing. Here is echoprint-client for Maemo / Meego. Here are some test results:

• Some performers are recognized with very high probability, and some are time after time
• 20 seconds is the minimum period of recording and increase of the recording time raises the chance of recognition
• Audio volume has almost no influence on the result - the algorithm normalizes the sound well enough
• Metallica recognizes better than Beethoven:-D
• Sometimes it makes mistakes: (

Moreover, they even claim that the algorithm can find a similar version – like Live performances or similar covers.
So far, it is too early to call echoprint as a “killer” for Shazam, but it is only a matter of time.


Company actually creates something important. It is not just “another music-processing algorithm”, this is an encyclopedia of music, which lets to find, describe and unite all ever released songs. In contrast to Shazam a database of Echo Nest may have information about unpopular groups. In addition, one of projects under the code-named Rosetta Stone is intended to unite the various space identifiers, for example: MusicBrainz ID or Napster Artist ID.

In general, it is a musical Wikipedia, which due to the openness promises outgrowths into something truly great.
BumBum 7 november 2011, 19:22
Vote for this post
Bring it to the Main Page


0 Steve Wang June 29, 2016, 1:53
For business use, ACRCloud Music Identification Service is much better than EchoPrint. Musixmatch and XiaoMi Music is using ACRCloud too.

Leave a Reply

Avaible tags
  • <b>...</b>highlighting important text on the page in bold
  • <i>..</i>highlighting important text on the page in italic
  • <u>...</u>allocated with tag <u> text shownas underlined
  • <s>...</s>allocated with tag <s> text shown as strikethrough
  • <sup>...</sup>, <sub>...</sub>text in the tag <sup> appears as a superscript, <sub> - subscript
  • <blockquote>...</blockquote>For  highlight citation, use the tag <blockquote>
  • <code lang="lang">...</code>highlighting the program code (supported by bash, cpp, cs, css, xml, html, java, javascript, lisp, lua, php, perl, python, ruby, sql, scala, text)
  • <a href="http://...">...</a>link, specify the desired Internet address in the href attribute
  • <img src="http://..." alt="text" />specify the full path of image in the src attribute