C++ audio fingerprinting library. Spectral peak pairing over short-time FFT, time coherent hash voting for identification with pluggable storage backend and gRPC service extension.
About this project
waveiden Audio fingerprinting library and CLI — identify songs from short audio clips. What it does waveiden builds a compact acoustic fingerprint database from full-length audio files, then matches query clips against it in milliseconds. The approach is the same one powering services like Shazam: Load audio and compute a short-time Fourier transform (spectrogram) Detect spectral peaks and pair them into hashed landmarks Store (hash, timeoffset, songname) triples in a database At query time, look up hashes and vote on the song with the most time-consistent hits A 30-second clip is enough for a reliable match against a database of thousands of songs. The library works against noisy or pitch-shifted recordings because the fingerprints are based on relative peak relationships rather than raw waveform content. Architecture The library is structured around two abstract interfaces: IDatabase — defines connect, disconnect, indexSong, match, listSongs, removeSong, and clear. Swap in any storage backend by subclassing it. IAudioReader — defines read(path) and readFromMemory(data, size). Swap in any audio format or source.
From the project README on
GitHub
- Stars
- 11
- Forks
- 0
- Last push
- 18 May 2026
Add this badge to your README
Show that your project is listed on Made in Algeria.
[](https://www.madeinalgeria.dev/projects/waveiden)