pYIN (Probabilistic YIN) is a modification of the well-loved YIN algorithm for fundamental frequency (F0) estimation in monophonic audio. This plugin's main features are
- an implementation of pYIN for pitch tracking and
- a note-tracking algorithm based on the pYIN pitch track
The plugin is written in C++ and can be used by any Vamp host such as Sonic Visualiser and Sonic Annotator. It is also used in the melody annotation program Tony .
Compiled binaries for Mac, Windows and Linux as well as the source code are available on our Downloads page.
The pYIN method is a modification of the method known as YIN (De Cheveigné, Alain, and Hideki Kawahara. "YIN, a fundamental frequency estimator for speech and music." The Journal of the Acoustical Society of America 111 (2002)).
The original YIN has one threshold parameter. In pYIN this parameter is replaced by a parameter distribution, and for every frame several fundamental frequency candidates obtained, conditional on this prior parameter distribution. In the second phase, a hidden Markov model (HMM) is Viterbi-decoded to find a "smooth" path through the fundamental frequency candidates. Note that this smoothed path is not smudging or averaging pitch estimates: any pitch estimate contains only fundamental frequency estimates that are genuine estimates of the original YIN method for some threshold parameter. For details, see the ICASSP paper.
The note estimator is a post-processing step on the pYIN pitch track, also performed as Viterbi decoding of an HMM.
Citation, License and Use¶
If you make use of this software for any public or commercial purpose, we ask you to kindly mention the authors and Queen Mary, University of
London in your user-visible documentation. We're very happy to see this sort of use but would much appreciate being credited, separately from the requirements of the software license itself (see below).
If you make use of this software for academic purposes, please cite one of the publications indicated on the Publications page .
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A ARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
The pYIN method is designed to reliably extract the fundamental frequency of audio recordings of a monophonic, harmonic instrument such as the human voice. Being based on YIN means that pYIN exploits the periodicity of the signal. In some circumstances it will not be reliable. Such circumstances occur, e.g.
- ... if the source audio is not monophonic, e.g. a singer with accompanying instruments,
- ... if the recording has reverb/echo (this essentially makes it polyphonic)
- ... if in a stringed instrument such as the cello one string keeps ringing while the melody turns to a different pitch.
A short singing passage (Ffion Mair singing The Grey Cock): http://www.youtube.com/watch?v=vMU9VUlRGPs
- M. Mauch and S. Dixon, “pYIN: A Fundamental Frequency Estimator Using Probabilistic Threshold Distributions,” in Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP 2014), 2014.
- [More Details] [BIBTEX] [URL (ext.)]
- M. Mauch et al., “Computer-aided Melody Note Transcription Using the Tony Software: Accuracy and Efficiency,” in Proceedings of the First International Conference on Technologies for Music Notation and Representation, 2015.
- [More Details] [BIBTEX] [URL (ext.)]
- 2020-07-02 09:54 AM
- Bug #1997: Possible bug in probability normalization
Interesting discovery, thanks for reporting it!
This certainly doesn't *look* intentional, but perhaps Matthias ca...
- 2020-07-01 10:51 AM
- Bug #1997 (New): Possible bug in probability normalization
I noticed a possible bug at https://code.soundsoftware.ac.uk/projects/pyin/repository/entry/YinUtil.cpp#L310 w...