explaingit

cgzirim/seek-tune

5,585GoAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

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.

Mindmap

mindmap
  root((SeekTune))
    What it does
      Song identification
      Audio fingerprinting
    How it works
      Frequency patterns
      Local database match
      Confidence scoring
    Features
      Download via Spotify
      YouTube integration
      Browser frontend
    Tech
      Go backend
      SQLite or MongoDB
      FFmpeg audio
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Record a short audio clip and identify the song from a local music database through a web browser interface

USE CASE 2

Download songs via Spotify links or YouTube and store their audio fingerprints for later recognition

USE CASE 3

Build a self-hosted song identification service using the Go backend with SQLite or MongoDB storage

USE CASE 4

Study how the Shazam audio fingerprinting algorithm works through a fully implemented Go reference project

Tech stack

GoNode.jsSQLiteMongoDBFFmpegDocker

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires Go, FFmpeg, Node, and yt-dlp all installed before running, a Docker Compose option is available to skip manual dependency setup.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

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.

Copy-paste prompts

Prompt 1
I want to set up SeekTune locally to identify songs from my audio collection. Walk me through installing Go, FFmpeg, yt-dlp, and running the app.
Prompt 2
How do I add songs to SeekTune's database using Spotify links or YouTube URLs?
Prompt 3
Help me switch SeekTune from SQLite to MongoDB by setting the right environment variables.
Prompt 4
How does SeekTune's audio fingerprinting algorithm produce a confidence score to rank song matches?
Prompt 5
I want to deploy SeekTune with Docker Compose. Walk me through the setup without installing dependencies manually.
Open on GitHub → Explain another repo

← cgzirim on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.