A Desktop program for identifying music by analyzing fingerprints generated from song spectrograms. This tool mimics the functionality of Shazam, enabling efficient and accurate song recognition.
This project implements a music identification system using Digital Signal Processing (DSP) techniques. It fingerprints songs by extracting and hashing key features from their spectrograms. The program allows users to query music / vocal files and find the closest matches based on similarity scores.
- Generate spectrograms for music, vocals, and combined files.
- Extract and hash key spectrogram features into fingerprints.
- Efficiently search for and rank the closest matching songs in a repository.
- Generate similarity scores and display results in a sortable table.
- Mix two sound files with adjustable weights and treat the combination as a new file.
- Clone the repository
- Install required dependencies:
pip install -r requirements.txt
-
Download Repository Song Data:
-
Run the Application:
python main.py
-
Steps in the GUI:
- Upload a single music file or two files from the data folder to start mixing them.
- Adjust weights for combining two files.
- Click the search button to find the closest top 5 matching songs.
- Similarity Results: Tabular view with sortable similarity scores.
- Weighted Mixing: Mixing with adjustable slider.
- File Explorer Integration: Browse and upload songs conveniently.
-
Spectrogram Generation:
- Extract spectrograms for the first 30 seconds of each song.
-
Feature Extraction and Hashing:
- Identify key features from each spectrogram.
- Use perceptual hashing to create compact fingerprints.
-
Music Matching:
- Compute similarity scores using fingerprints.
- Rank and display matches in a GUI table.
-
File Combination:
- Use a slider to set weight percentages for mixing two files.
- Treat the combination as a new query for matching.
Dependency | Description |
---|---|
Python 3.x | Core programming language. |
NumPy | Numerical computations for signal processing. |
SciPy | Advanced scientific computing and interpolation. |
PyQt5 | GUI framework for building desktop applications. |
sounddevice | Audio I/O library for recording and playback. |
librosa | Python library for audio and music analysis. |
opencv-python | OpenCV library for real-time computer vision. |
opencv-contrib-python | OpenCV with additional modules for extended functionality. |
pillow | Python Imaging Library for image processing tasks. |
ImageHash | Library for computing perceptual image hashes. |
Mostafa Ali |
Youssef Aboelela |
Kareem Abdel Nabi |
Ahmed Al-Deeb |
These projects was supervised by Dr. Tamer Basha as part of the Digital Signal Processing course at Cairo University Faculty of Engineering.
Thank you for using 3AZZAM! If you encounter any issues, feel free to open an issue on GitHub.