Metadata-Version: 2.4
Name: omnizart
Version: 0.6.3
Summary: Omniscient Mozart, being able to transcribe everything in the music.
Home-page: https://sites.google.com/view/mctl/home
Author: BreezeWhite
Author-email: BreezeWhite <miyashita2010@tuta.io>, yjlolo <yjlolo125@gmail.com>
License: MIT
Project-URL: repository, https://github.com/Music-and-Culture-Technology-Lab/omnizart
Project-URL: documentation, https://music-and-culture-technology-lab.github.io/omnizart-doc/
Project-URL: homepage, https://sites.google.com/view/mctl/home
Keywords: automatic music transcription,drum transcription,vocal transcription,beat tracking
Classifier: Topic :: Multimedia :: Sound/Audio :: MIDI
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Documentation :: Sphinx
Classifier: Topic :: Software Development :: Version Control :: Git
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=7.1.2
Requires-Dist: jsonschema>=3.2.0
Requires-Dist: librosa>=0.8.0
Requires-Dist: madmom>=0.16.1
Requires-Dist: mir_eval>=0.6
Requires-Dist: pillow>=8.3.2
Requires-Dist: pretty_midi>=0.2.9
Requires-Dist: pyfluidsynth>=1.2.5
Requires-Dist: pyyaml>=5.3.1
Requires-Dist: sherpa-onnx>=1.10.0
Requires-Dist: soundfile>=0.12.1
Requires-Dist: tensorflow>=2.5.0; python_version < "3.14"
Requires-Dist: tf-nightly; python_version >= "3.14"
Requires-Dist: tf-keras; python_version >= "3.9" and python_version < "3.14"
Requires-Dist: tf-keras-nightly; python_version >= "3.14"
Requires-Dist: setuptools<82
Requires-Dist: urllib3>=1.26.4
Requires-Dist: vamp>=1.1.0
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python

# OMNIZART

[![build](https://github.com/Music-and-Culture-Technology-Lab/omnizart/workflows/general-check/badge.svg)](https://github.com/Music-and-Culture-Technology-Lab/omnizart/actions?query=workflow%3Ageneral-check)
[![docs](https://github.com/Music-and-Culture-Technology-Lab/omnizart/workflows/docs/badge.svg?branch=build_doc)](https://music-and-culture-technology-lab.github.io/omnizart-doc/)
[![PyPI version](https://badge.fury.io/py/omnizart.svg)](https://pypi.org/project/omnizart/)
![PyPI - License](https://img.shields.io/pypi/l/omnizart)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/omnizart)](https://pypistats.org/packages/omnizart)
[![Docker Pulls](https://img.shields.io/docker/pulls/mctlab/omnizart)](https://hub.docker.com/r/mctlab/omnizart)

[![DOI](https://joss.theoj.org/papers/10.21105/joss.03391/status.svg)](https://doi.org/10.21105/joss.03391)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5769022.svg)](https://doi.org/10.5281/zenodo.5769022)


Omnizart is a Python library that aims for democratizing automatic music transcription.
Given polyphonic music, it is able to transcribe pitched instruments, vocal melody, chords, drum events, and beat.
This is powered by the research outcomes from [Music and Culture Technology (MCT) Lab](https://sites.google.com/view/mctl/home). The paper has been published to [Journal of Open Source Software (JOSS)](https://doi.org/10.21105/joss.03391).

### Transcribe your favorite songs now in Colab [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Music-and-Culture-Technology-Lab/omnizart/blob/master/colab.ipynb) or [![Replicate](https://replicate.com/breezewhite/omnizart/badge)](https://replicate.ai/breezewhite/omnizart)

# Quick start

Visit the [complete document](https://music-and-culture-technology-lab.github.io/omnizart-doc/) for detailed guidance.

## Pip
``` bash
# Install omnizart
pip install omnizart

# Download the checkpoints
omnizart download-checkpoints

# Transcribe your songs
omnizart drum transcribe <path/to/audio.wav>
omnizart chord transcribe <path/to/audio.wav>
omnizart music transcribe <path/to/audio.wav>
```

## Docker
``` bash
docker pull mctlab/omnizart:latest
docker run -it mctlab/omnizart:latest bash
```

## Conda (install from source)
``` bash
git clone https://github.com/Music-and-Culture-Technology-Lab/omnizart
cd omnizart
# Create a new conda environment
conda env create -f environment.yml
conda activate omnizart
# Install omnizart
pip install .
omnizart download-checkpoints
```

# Supported applications
| Application      | Transcription      | Training           | Evaluation | Description                                      |
|------------------|--------------------|--------------------|------------|--------------------------------------------------|
| music            | :heavy_check_mark: | :heavy_check_mark: |            | Transcribe musical notes of pitched instruments. |
| drum             | :heavy_check_mark: | :interrobang:      |            | Transcribe events of percussive instruments.     |
| vocal            | :heavy_check_mark: | :heavy_check_mark: |            | Transcribe note-level vocal melody.              |
| vocal-contour    | :heavy_check_mark: | :heavy_check_mark: |            | Transcribe frame-level vocal melody (F0).        |
| chord            | :heavy_check_mark: | :heavy_check_mark: |            | Transcribe chord progressions.                   |
| beat             | :heavy_check_mark: | :heavy_check_mark: |            | Transcribe beat position.                        |

**NOTES**
The current implementation for the drum model has unknown bugs, preventing loss convergence when training from scratch.
Fortunately, you can still enjoy drum transcription with the provided checkpoints.

## Compatibility Issue
Currently, Omnizart is **incompatible for ARM-based MacOS** system due to the underlying dependencies.
More details can be found in the [issue #38](https://github.com/Music-and-Culture-Technology-Lab/omnizart/issues/38).

## Citation
If you use this software in your work, please cite:

```
@article{Wu2021,
  doi = {10.21105/joss.03391},
  url = {https://doi.org/10.21105/joss.03391},
  year = {2021},
  publisher = {The Open Journal},
  volume = {6},
  number = {68},
  pages = {3391},
  author = {Yu-Te Wu and Yin-Jyun Luo and Tsung-Ping Chen and I-Chieh Wei and Jui-Yang Hsu and Yi-Chin Chuang and Li Su},
  title = {Omnizart: A General Toolbox for Automatic Music Transcription},
  journal = {Journal of Open Source Software}
}
```
