This library is heavily based on Numenorean's work.
Usage:
import{Shazam,s16LEToSamplesArray}from'shazam-api';importfsfrom'fs';constshazam=newShazam();constfileContents=fs.readFileSync("test.pcm");constsamples=s16LEToSamplesArray(fileContents);constsongData=awaitshazam.recognizeSong(samples);console.log(songData);The data passed to s16LEToSamplesArray needs to be raw PCM with:
- Sample rate set to 16000Hz
- Bit depth set to 16 bits
- 1 channel of audio
Such a file can be generated with ffmpeg using the command:
ffmpeg -i <source file> -ar 16000 -ac 1 -f s16le test.pcm
Or within node or the browser thanks to ffmpeg.wasm
To use this project within a browser, you need to deploy a userscript which will let you bypass CORS while accessing the Shazam servers.