A Python desktop application that identifies songs and enables users to mix songs with weighted averages. It provides advanced analysis and matching features using mel-spectrogram, MFCC, and chroma-STFT, with perceptual hashing for efficient comparison.
- Song Visualization:
- Double-click on a graph to load a song.
- Song Mixing:
- Use a slider to add a weighted average between two songs.
- Song Matching:
- A table on the left displays top matches for the uploaded or mixed song.
- Media Player:
- Small players for each song with play, pause, reset, and seek functionalities.
- Custom Database:
- Users can build a custom database by running
FeatureExtraction.py
after adding their folder of music.
- Users can build a custom database by running
- Clone the repository:
https://github.com/Ahmed-Hajhamed/Shazam-like-Song-Identifier.git
- Install dependencies:
pip install -r requirements.txt
-Run the application:
bash python app.py
- Load songs by double-clicking the graphs.
- Mix songs using the slider to adjust the weighted average.
- View matching results in the table.
- Use the media players to listen to and seek through the songs.
- To create a custom database of music:
- Add your folder of music to
bash process_folder("path_to_folder")
function in FeatureExtraction.py. Make sure all audio files are in the subfolder. - Run
bash FeatureExtraction.py
to create the database and you are ready to go!
- Add your folder of music to
Requirements Python: Version 3.8 or higher Libraries: librosa PyQt5 numpy pyqtgraph qt_material ImageHash pandas
Load Songs By Double-Clicking on Graphs
Adjust The Weight of Each Song
Contributions are welcome! Please open an issue or submit a pull request if you have suggestions or bug fixes.
For questions or support, please reach out via the GitHub issues page or email: [email protected].