# music-recognition

Published articles for music-recognition.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Shazam finds songs by voting on time offsets, not by comparing audio

DevFeed: [Shazam finds songs by voting on time offsets, not by comparing audio](<https://devfeed.tech/articles/shazam-finds-songs-by-voting-on-time-offsets-not-by-comparing-audio-39556.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/04-shazam-music-recognition/>)

Author: hello@ankit-rana.com

Published: 2026-03-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [hash](<https://devfeed.tech/topics/hash.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [audio-fingerprinting](<https://devfeed.tech/tags/audio-fingerprinting.md>), [databases](<https://devfeed.tech/tags/databases.md>), [hash](<https://devfeed.tech/tags/hash.md>), [indexing](<https://devfeed.tech/tags/indexing.md>), [lookup](<https://devfeed.tech/tags/lookup.md>), [music-recognition](<https://devfeed.tech/tags/music-recognition.md>), [query](<https://devfeed.tech/tags/query.md>), [system-design](<https://devfeed.tech/tags/system-design.md>)

### AI overview

The article explains how Shazam recognizes songs from short, noisy recordings. Instead of comparing audio similarity, it extracts spectrogram peaks, combines nearby peaks into hashes, and uses an inverted index to find tracks whose hash matches share a common time offset. The production system beyond the public 2003 paper is noted as unavailable.

### Source excerpt

Shazam does not compare audio. It reduces each track to spectrogram peaks, pairs nearby peaks into ~32-bit hashes, and looks those up in an inverted index. A match is declared when many hashes from the sample agree on a single time offset into one track. The offset histogram is the whole trick: noise scatters offsets randomly, a real match stacks them into a spike.