This is the semester project for LA course at UCU with signal processing as the general topic. MiniShazam(change later) is a simplified version of a query-by-humming (QBH) system. The developed framework takes in a piece of a hummed or whistled song as an input parameter for a search system and outputs the matching song in its full version.
The user can hum a piece of tune into a microphone of his computer or laptop for arbitrary number of seconds (we recommend 8). The program will perform necessary evaluation and search a database of tunes to find a list of melodies that are most similar to the user’s “query”. Then he/she will be able to listen to this result to see if it is actually the tune that he/she had in mind. If the recording has drastically different tempo, the user will be asked to hum again, this time more accurately.
The database of tunes can be extended by manually adding new songs. If the user hums or whistles a piece that is not yet in the database, the system, apparently, will not be able to return the exact match.
The JavaScript code for recording through Google Colab was taken from this repository.
- essentia
pip install essentia
- mir_eval
pip install mir_eval
- pydub
pip install pydub
- Open Google Colab by clicking here
- Make a copy of this notebook
- Upload the desired songs, form a lists of path to them, form a database by using
create_database
function - Record your input and test the program in the
Testing -> Real-time
section of the notebook!
Record, process and match here:
- Implement pitch detection algorithm
- Implement real-time recording
- Implement matching algorithm
- Test the program
- Test on different music genres
- Test on the bad quality input
- Test on the input that is absent in the database