/Mozart

An optical music recognition (OMR) system. Converts sheet music to a machine-readable version.

Primary LanguageJupyter NotebookApache License 2.0Apache-2.0

Mozart logo

🎶 Convert sheet music to a machine-readable version.


📝 Table of Contents

🧐 About

The aim of this project is to develop a sheet music reader. This is called Optical Music Recognition (OMR). Its objective is to convert sheet music to a machine-readable version. We take a simplified version where we convert an image of sheet music to a textual representation that can be further processed to produce midi files or audio files like wav or mp3.

About

💻 Methodology

1. Noise Filtering and Binarization

Binary Image

2. Segmentation

Segment 1

Segment 2

Segment 3

3. Staff Line Detection and Removal

No Staff Image 1

No Staff Image 2

No Staff Image 3

4. Construct The New Staff Lines

New Staff Image 1

New Staff Image 2

New Staff Image 3

5. Symbol Detection and Recognition

Result 1

Result 2

Result 3

🏁 Install

  1. You can use the attached notebook for quick testing and visualization.
  2. You can setup an environment on your local machine to run the project:
    1. Install Conda
    2. conda env create -f requirements.yml
    3. conda activate mozart
    4. python3 main.py <input directory path> <output directory path>

You can find the dataset on Google Drive.

Please check the following issue for another requirements.yml file.

⛏️ Built Using