Skip to main content

A Python Library for Fundamental Frequency Estimation in Music Recordings

Project description

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

To install libf0, please run

pip install libf0[dev,tests,docs]

with the following optional dependencies:

  • dev: for development and running the demo notebook.
  • tests: for running the unittests.
  • docs: to build the API docs.

Documentation

You can find the API documentation for libf0 here:

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 or pull request in our Github repository.

Tests

We provide automated tests for each algorithm. To execute the test script, run

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.1.1.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

libf0-1.1.1-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: libf0-1.1.1.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for libf0-1.1.1.tar.gz
Algorithm Hash digest
SHA256 e21a41474831d035410a809e4a6c282f7bb57048bfac146bb23a9b3544585e51
MD5 6980947ceb7ae462de5d2ae2a64ae5d0
BLAKE2b-256 1f7b5ebbff5636aefefba7d3fd988877f973bc1c0fbb01787f80c5211b3c1e06

See more details on using hashes here.

Provenance

The following attestation bundles were made for libf0-1.1.1.tar.gz:

Publisher: publish_pypi.yml on groupmm/libf0

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: libf0-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 23.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for libf0-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 97c02b5a275e3319ab02213e9834bc87061803779f9b58ba63321ddf7a4bfa10
MD5 d5f73304dee6b59851da39a8fc82bc94
BLAKE2b-256 a71339d21ae28fe15d3fe8dc2a3d03f208151516e360d6742a0e7f5a8f3ccbaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for libf0-1.1.1-py3-none-any.whl:

Publisher: publish_pypi.yml on groupmm/libf0

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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