File Exchange

image thumbnail

Robust Landmark-Based Audio Fingerprinting

version (154 KB) by Dan Ellis
A landmark-based Shazam-like audio fingerprinting system.


Updated 05 Nov 2009

View License

This landmark-based audio fingerprinting system is able to match short, noisy snippets to a reference database in near-constant time.

This is my implementation of the music audio matching algorithm developed by Avery Wang for the Shazam service. Shazam can identify apparently any commercial music track from a short snippet recorded via your cell phone in a noisy bar. I don't have the database to check if my version is quite that good, but it is able to rapidly match and locate a poor-quality excerpt from within a database of (at least) hundreds of tracks.

See for the "published" output of the demo script.

Notes for running under Windows (from Rob Macrae) are at .

Cite As

Dan Ellis (2020). Robust Landmark-Based Audio Fingerprinting (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (6)



I tried to change the query in the demo_fingerprint.It added all the tracks and did find landmarks in the query and displayed the spectrogram of the query(only).however th following error :

??? Error using ==> exist
The first input to exist must be a string.

Error in ==> audioread at 19
if exist(FN, 'file') == 0

Error in ==> illustrate_match at 37
[d,SRO] = audioread(FL{matchtrk});

Error in ==> demo_fingerprint at 92

Help would be appreciated.

Karthik Raj

How to make it work offline?


Nice application


Fixed a problem where problems would occur if query contained audio before matching reference item (i.e. negative match time offset). Improved robustness (at cost of matching speed) by dithering time framing of query.

No change to code, but added link to notes for running on Windows.

MATLAB Release Compatibility
Created with R2009a
Compatible with any release
Platform Compatibility
Windows macOS Linux