gitmyhub

seek-tune

Go ★ 5.6k updated 8mo ago

An implementation of Shazam's song recognition algorithm.

Go app that identifies songs from short audio recordings using audio fingerprinting similar to Shazam, with a browser-based interface and a local database of downloaded songs.

GoNode.jsSQLiteMongoDBFFmpegDockersetup: moderatecomplexity 3/5

SeekTune is a Go application that can identify songs from audio recordings, working on the same core idea as Shazam. You give it a short audio clip, and it searches a local database of songs to find the best match. The approach involves audio fingerprinting: each song is reduced to a compact set of patterns derived from its frequency content, and those patterns are stored so they can be matched quickly against new recordings even if the recording has background noise.

Beyond recognition, the app can download songs using Spotify links and YouTube, store them in the local database, and display matches through a browser-based frontend. You search for a song via the web interface or command line, and the app returns a ranked list of candidates with a confidence score. In the example the README includes, a recording of a single song scores millions of points while unrelated songs score only a few thousand, making the top match obvious.

The project is built as two parts: a Go backend server that handles fingerprinting and matching, and a small frontend client built with Node. Setup requires installing Go, FFmpeg (for audio processing), Node, and a command-line YouTube downloader called yt-dlp. A Docker Compose option is also provided if you prefer not to install dependencies manually. By default the app stores fingerprints in SQLite, but it can be switched to MongoDB by setting environment variables.

The README includes a demo video, a YouTube walkthrough of how the project was built, and links to the academic papers and blog posts the author used to understand the Shazam algorithm. The author is Chigozirim Igweamaka. The project is under the MIT License.

Where it fits