I recreated Shazam’s algorithm with Go

An open-source Go project that recreates Shazam’s audio fingerprinting algorithm is drawing interest both as a learning tool and as a basis for custom audio search systems. Commenters dive into how fingerprinting from spectrograms works, how it compares in practice to services like Shazam, SoundHound, and Google’s “hum to search,” and what data scale is needed for reliable recognition. At the same time, many raise concerns about software patents, use of Spotify and YouTube as data sources, naming and trademark issues, and suggest technical refinements such as using SQLite, Dockerized setup, and support for local audio files.

Overall reaction & project scope

  • Many commenters find the Go implementation impressive, especially as a first substantial Go project.
  • The repo is seen as a demo of the Shazam-style fingerprinting algorithm, not a production app or hosted service.
  • Some note that similar reconstructions have existed for years; this is viewed as a fun/new iteration rather than novel research.

Data sources, coverage & “useless without all songs” debate

  • The system currently uses Spotify links only to fetch metadata, then locates and downloads matching audio from YouTube for fingerprinting.
  • Several people raise legal and ToS concerns around YouTube/Spotify ripping.
  • One view: the algorithm is “useless unless you have all songs on earth”; the counterpoint is that the open-source algorithm is valuable for anyone who has or can build their own dataset, including non-music uses.
  • Suggestions include: using local files or WAVs, and community or shared fingerprint databases. MusicBrainz/AcoustID is mentioned as an existing open fingerprint ecosystem.

Algorithm & technical discussion

  • Summary of the approach: FFT → derive sparse audio fingerprints → index → similarity search.
  • Links and references surface short-time Fourier transform, spectrograms, and the time vs frequency resolution tradeoff.
  • Discussion touches on whether fingerprints are closer to hash-like features or something that could support clustering (e.g., artist identification); the author says current fingerprints are not designed as clusterable vectors, and ML would likely be needed for that.

Shazam vs SoundHound vs others

  • Mixed reports on accuracy: some say SoundHound has long been better, especially with humming or noisy input; others find Shazam more reliable in specific tests.
  • A SoundHound employee notes that failures are often due to the song not being in the database, and that all services have coverage gaps.
  • One user reports mic conflicts between Shazam and SoundHound on iOS.
  • Google’s “Now Playing” / “hum to search” and Pixel’s low-power always-listening feature are cited as strong alternatives.

Patents, IP, and naming concerns

  • Multiple comments highlight that Shazam’s core algorithm is patented (at least in the US) through ~2025, with worldwide filings.
  • Patent vs copyright is clarified: patents cover methods/algorithms, not just copied code; open source is not exempt from patents, and even personal use can infringe in the US.
  • There’s debate over prior publication vs patent filing dates, but a provisional patent from 2002 appears to cover the core work.
  • Questions are raised about liability for open-source authors outside the US when US users download or run infringing code; consensus is that large-pocket defendants are most at risk, but the law is complex and unclear in detail.
  • Several people urge an urgent name change away from “Shazam”-derived branding to reduce trademark and legal risk; alternative names are proposed and “SoundScout” is popular.

Implementation feedback & polish requests

  • Setup is seen as rough: confusing cd instructions, MongoDB requirement without clear configuration guidance, and a vulnerable npm dependency tree.
  • Suggestions include:
    • Replace or optionally swap MongoDB with SQLite or another embedded DB.
    • Provide Docker/Docker Compose for easy startup.
    • Add direct support for fingerprinting local/WAV files (the author commits to doing this).
    • Improve rate-limiting logic instead of hardcoded sleeps, though some defend sleeps as a simple way to avoid third‑party bans.
  • A leaked Google/YouTube API key is spotted; the author disables it.

Miscellaneous points

  • Commenters share references to earlier Shazam-related papers, talks, and prior HN threads.
  • Some note the broader historical role of audio as an early driver for computing and electronics applications.