Python implementation of the "Shazam" algorithm

lukemcraig lukemcraig Last update: May 19, 2022

AudioSearch

Python implementation of "An Industrial-Strength Audio Search Algorithm"

Created for my term paper in CS 5110 - Design and Analysis of Algorithms, Fall 2018.

One of the things I look for most in a term paper is its simplicity in explaining complex ideas. This year, the Best Term Paper Award goes to Luke Craig for his paper titled "Robust Audio Fingerprinting Using Combinatorial Hashing and Temporal Offsets". Many congratulations to him.

-- Dr. Raghuveer Mohan


Some neat figures in my paper:

figure 7-2figure 6-2figure 8-3


Usage:

positional arguments:

  • d the root directory of the library of mp3s to insert or test

optional arguments:

  • --insert to insert into the database instead of testing
  • --plot whether to plot the algorithm
  • -processes p the number of processes to use during insertion
  • -noise n noise type (White or Pub)

Dependencies:

  • numpy
  • scipy
  • pandas
  • matplotlib (only for plotting)
  • librosa (only for loading audio)
  • mutagen (for parsing mp3 metadata)
  • pymongo (only if MongoDB is used for the database)

A conda environment with these packages can be built automatically from audiosearchminenv.yml

conda env create -f audiosearchminenv.yml

Subscribe to our newsletter