Skip to main content

A Python Library for Fundamental Frequency Estimation in Music Recordings

Project description

Python Package using Conda Python package

libf0

This repository contains a Python package called libf0 which provides open-source implementations for four popular model-based F0-estimation approaches, YIN (Cheveigné & Kawahara, 2002), pYIN (Mauch & Dixon, 2014), an approach inspired by Melodia (Salamon & Gómez, 2012), and SWIPE (Camacho & Harris, 2008).

If you use the libf0 in your research, please consider the following references.

References

Sebastian Rosenzweig, Simon Schwär, and Meinard Müller. libf0: A Python Library for Fundamental Frequency Estimation. In Late Breaking Demos of the International Society for Music Information Retrieval Conference (ISMIR), Bengaluru, India, 2022.

Alain de Cheveigné and Hideki Kawahara. YIN, a fundamental frequency estimator for speech and music. Journal of the Acoustical Society of America (JASA), 111(4):1917–1930, 2002.

Matthias Mauch and Simon Dixon. pYIN: A fundamental frequency estimator using probabilistic threshold distributions. In IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), pages 659–663, Florence, Italy, 2014.

Justin Salamon and Emilia Gómez. Melody extraction from polyphonic music signals using pitch contour characteristics. IEEE Transactions on Audio, Speech, and Language Processing, 20(6): 1759–1770, 2012.

Arturo Camacho and John G. Harris. A sawtooth waveform inspired pitch estimator for speech and music. The Journal of the Acoustical Society of America, 124(3):1638–1652, 2008.

Meinard Müller. Fundamentals of Music Processing – Using Python and Jupyter Notebooks. Springer Verlag, 2nd edition, 2021. ISBN 978-3-030-69807-2. doi: 10.1007/978-3-030-69808-9.

Installing

If you just want to try our example notebook, you can run it using Binder directly in your browser: Binder

To install the libf0 locally, you can use the Python package manager pip:

pip install libf0

We recommend to do this inside a conda or virtual environment (requiring at least Python 3.7). If you want to run the example notebook locally, you must first install libf0 to resolve all dependencies. Then, you can clone this repository using

git clone https://github.com/groupmm/libf0.git

install Jupyter using

pip install jupyter

and then start the notebook server via

jupyter notebook

Documentation

There is also an API documentation for libf0:

https://groupmm.github.io/libf0

Contributing

We are happy for suggestions and contributions. We would be grateful for either directly contacting us via email (meinard.mueller@audiolabs-erlangen.de) or for creating an issue in our Github repository. Please do not submit a pull request without prior consultation with us.

Tests

We provide automated tests for each algorithm. To execute the test script, you will need to install extra requirements for testing:

pip install 'libf0[tests]'
pytest tests

Licence

The code for this toolbox is published under an MIT licence.

Acknowledgements

This work was supported by the German Research Foundation (MU 2686/13-1, SCHE 280/20-1). We thank Edgar Suárez and Vojtěch Pešek for helping with the implementations. Furthermore, we thank Fatemeh Eftekhar and Maryam Pirmoradi for testing the toolbox. The International Audio Laboratories Erlangen are a joint institution of the Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU) and Fraunhofer Institute for Integrated Circuits IIS.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libf0-1.0.2.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

libf0-1.0.2-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file libf0-1.0.2.tar.gz.

File metadata

  • Download URL: libf0-1.0.2.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.10

File hashes

Hashes for libf0-1.0.2.tar.gz
Algorithm Hash digest
SHA256 a679788d6604db60621ac28979f4024b81bae0752d9bf7d3205e15f37718f800
MD5 4145635d6385e2244905bcbc8ab8868a
BLAKE2b-256 47188867ff287ab6d4259179f3af4bb5afc4612690c7e3f256e4315a7558f7d4

See more details on using hashes here.

File details

Details for the file libf0-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: libf0-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.10

File hashes

Hashes for libf0-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8b2f4fc234eb6f1af5061b01613fcf477976604b865a236a4ac98e966bfd4587
MD5 c701cc2d9286c63cd488c97ba0be8cec
BLAKE2b-256 83098ffc3cf235e9981615eeffddabc872ce601975eb522877bf9bad2065ca6c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page