Skip to content

A shazam like app to search for music based on the features exported from the music spectrograms

Notifications You must be signed in to change notification settings

Sprectrum-code/Azzam-Shazam-like-desktop-app-for-music-matching

Repository files navigation

3AZZAM : A Shazam-Like Music Fingerprint Desktop App

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.

Image Placeholder

Table of Contents

Introduction

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.

Features

  • 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.

Program UI Preview

Image Placeholder

Program Demo

Program Demo

Installation

  1. Clone the repository
  2. Install required dependencies:
    pip install -r requirements.txt

Usage

  1. Download Repository Song Data:

  2. Run the Application:

    python main.py
  3. 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.

GUI Features

  • Similarity Results: Tabular view with sortable similarity scores.
  • Weighted Mixing: Mixing with adjustable slider.
  • File Explorer Integration: Browse and upload songs conveniently.

Workflow

Hashing and Preparing Data

  1. Spectrogram Generation:

    • Extract spectrograms for the first 30 seconds of each song.
  2. Feature Extraction and Hashing:

    • Identify key features from each spectrogram.
    • Use perceptual hashing to create compact fingerprints.

Actual Program Usage

  1. Music Matching:

    • Compute similarity scores using fingerprints.
    • Rank and display matches in a GUI table.
  2. File Combination:

    • Use a slider to set weight percentages for mixing two files.
    • Treat the combination as a new query for matching.

Dependencies

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.

Contributors

Mostafa Ali
Mostafa Ali
Youssef Aboelela
Youssef Aboelela
Kareem Abdel Nabi
Kareem Abdel Nabi
Ahmed Al-Deeb
Ahmed Al-Deeb

Acknowledgments

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.

About

A shazam like app to search for music based on the features exported from the music spectrograms

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages