song-recognition
song-recognition copied to clipboard
Full-stack song recognition application with audio fingerprinting and hum to search (QbSH) modules
Pre Requirements
- ffmpeg (required by librosa to load mp3)
- nodejs (frontend)
- MongoDB
Environment Setup
Inside backend/.env:
Edit the default MONGO_URI to your mongodb connection key
MONGO_URI=mongodb://localhost:27017/?readPreference=primary&serverSelectionTimeoutMS=2000&appname=MongoDB%20Compass&directConnection=true&ssl=false
FLASK_ENV=development
Backend
- Create conda env (optional)
conda create --name kishikan python=3.8
conda activate kishikan
- Install python dependencies (in
backend)
Please navigate to backend folder, then
pip install -r requirements.txt
- Configure flask (in
backend)
export FLASK_APP=app
start the flask using flask run
Frontend
Please navigate to frontend folder, then
yarn install to install dependencies
yarn start to open client
Important Folders Structure
.github
-- postman collection for API testing
backend
-- app/: all code to implement RESTful Flask Server
-- kishikan/: audio fingerprinting module
-- nazo/: query by humming module
frontend: react frontend code in typescript
Demo
Please open backend/audio_fingerprinting.ipynb for audio fingerprinting, and backend/query_by_singing.ipynb for query by humming.
Experiments
If you want to perform experiments, please download the datasets and place them into datasets/:
GTZAN and it's query: https://www.music-ir.org/mirex/wiki/2021:Audio_Fingerprinting
QBSH midi and query: https://www.music-ir.org/mirex/wiki/2021:Query_by_Singing/Humming
Benchmark usage can be found inside jupyter notebooks in backend/