{"id":14958275,"url":"https://github.com/aashrafh/mozart","last_synced_at":"2025-04-04T15:09:55.196Z","repository":{"id":47304968,"uuid":"321331966","full_name":"aashrafh/Mozart","owner":"aashrafh","description":"An optical music recognition (OMR) system. Converts sheet music to a machine-readable version.","archived":false,"fork":false,"pushed_at":"2022-08-24T18:18:43.000Z","size":366751,"stargazers_count":653,"open_issues_count":4,"forks_count":93,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-04-04T15:09:45.553Z","etag":null,"topics":["mozart","music","music-sheet","music-sheet-reading","neural-network","omr","opencv","optical-character-recognition","optical-music-recognition","reader","skimage","sklearn"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aashrafh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["aashrafh"]}},"created_at":"2020-12-14T11:49:14.000Z","updated_at":"2025-04-02T21:41:39.000Z","dependencies_parsed_at":"2022-07-25T23:17:05.694Z","dependency_job_id":null,"html_url":"https://github.com/aashrafh/Mozart","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aashrafh%2FMozart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aashrafh%2FMozart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aashrafh%2FMozart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aashrafh%2FMozart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aashrafh","download_url":"https://codeload.github.com/aashrafh/Mozart/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198463,"owners_count":20900080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mozart","music","music-sheet","music-sheet-reading","neural-network","omr","opencv","optical-character-recognition","optical-music-recognition","reader","skimage","sklearn"],"created_at":"2024-09-24T13:16:39.664Z","updated_at":"2025-04-04T15:09:55.169Z","avatar_url":"https://github.com/aashrafh.png","language":"Jupyter Notebook","funding_links":["https://github.com/sponsors/aashrafh"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n \u003cimg width=400px height=210px src=\"https://github.com/aashrafh/mozart/blob/main/logo.svg\" alt=\"Mozart logo\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e :notes: Convert sheet music to a machine-readable version.\n    \u003cbr\u003e \n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/aashrafh/mozart/graphs/contributors\" alt=\"Contributors\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/contributors/aashrafh/mozart\" /\u003e\u003c/a\u003e\n  \n   \u003ca href=\"https://github.com/aashrafh/mozart/issues\" alt=\"Issues\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/issues/aashrafh/mozart\" /\u003e\u003c/a\u003e\n  \n  \u003ca href=\"https://github.com/aashrafh/mozart/network\" alt=\"Forks\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/forks/aashrafh/mozart\" /\u003e\u003c/a\u003e\n        \n  \u003ca href=\"https://github.com/aashrafh/mozart/stargazers\" alt=\"Stars\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/stars/aashrafh/mozart\" /\u003e\u003c/a\u003e\n        \n  \u003ca href=\"https://github.com/aashrafh/mozart/blob/master/LICENSE\" alt=\"License\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/license/aashrafh/mozart\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n---\n\n## 📝 Table of Contents\n- [About](#about)\n- [Methodology](#methodology)\n- [Install](#Install)\n- [Technology](#tech)\n\n## 🧐 About \u003ca name = \"about\"\u003e\u003c/a\u003e\nThe 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. \n\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/about.png\" alt=\"About\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## :computer: Methodology \u003ca name = \"methodology\"\u003e\u003c/a\u003e\n\n### 1. Noise Filtering and Binarization\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_binary.png\" alt=\"Binary Image\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n### 2. Segmentation\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_seg_0.png\" alt=\"Segment 1\"\u003e\u003c/a\u003e\u003cbr\u003e \u003cbr\u003e \n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_seg_1.png\" alt=\"Segment 2\"\u003e\u003c/a\u003e\u003cbr\u003e \u003cbr\u003e \n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_seg_2.png\" alt=\"Segment 3\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n### 3. Staff Line Detection and Removal\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_without_staff_0.png\" alt=\"No Staff Image 1\"\u003e\u003c/a\u003e\u003cbr\u003e \u003cbr\u003e \n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_without_staff_1.png\" alt=\"No Staff Image 2\"\u003e\u003c/a\u003e\u003cbr\u003e \u003cbr\u003e \n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_without_staff_2.png\" alt=\"No Staff Image 3\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n### 4. Construct The New Staff Lines\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_with_new_staff_0.png\" alt=\"New Staff Image 1\"\u003e\u003c/a\u003e\u003cbr\u003e \u003cbr\u003e \n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_with_new_staff_1.png\" alt=\"New Staff Image 2\"\u003e\u003c/a\u003e\u003cbr\u003e \u003cbr\u003e \n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_with_new_staff_2.png\" alt=\"New Staff Image 3\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n### 5. Symbol Detection and Recognition\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_detected_0.png\" alt=\"Result 1\"\u003e\u003c/a\u003e\u003cbr\u003e \u003cbr\u003e \n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_detected_1.png\" alt=\"Result 2\"\u003e\u003c/a\u003e\u003cbr\u003e \u003cbr\u003e \n  \u003cimg src=\"https://github.com/aashrafh/Mozart/blob/main/output/imgs/02/02_detected_2.png\" alt=\"Result 3\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n## 🏁 Install \u003ca name = \"Install\"\u003e\u003c/a\u003e\n1. You can use the attached notebook for quick testing and visualization.\n2. You can setup an environment on your local machine to run the project:\n    1. Install [Conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/)\n    2. ```conda env create -f requirements.yml```\n    3. ```conda activate mozart```\n    4. ```python3 main.py \u003cinput directory path\u003e \u003coutput directory path\u003e```\n\n\u003e You can find the dataset on [Google Drive](https://drive.google.com/drive/u/0/folders/1OVGA3CGnEKjyg_k_L8MP2RO5R3oDIbHE).\n\n\u003e Please check the following [issue](https://github.com/aashrafh/Mozart/issues/8) for another ```requirements.yml``` file. \n\n\n## ⛏️ Built Using \u003ca name = \"tech\"\u003e\u003c/a\u003e\n- [Python 3.8.3](https://www.python.org/)\n- [NumPy](https://numpy.org/doc/stable/index.html)\n- [OpenCV](https://opencv.org/)\n- [scikit-learn](https://scikit-learn.org/stable/)\n- [scikit-image](https://scikit-image.org/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faashrafh%2Fmozart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faashrafh%2Fmozart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faashrafh%2Fmozart/lists"}