@audio/pitch-pyin
v1.0.1
Published
pYIN — probabilistic YIN (Mauch & Dixon, 2014)
Readme
@audio/pitch-pyin

pYIN — probabilistic YIN (Mauch & Dixon, 2014)
npm install @audio/pitch-pyinimport pyin from '@audio/pitch-pyin'Mauch & Dixon, 2014. Probabilistic YIN — runs YIN at multiple thresholds weighted by a Beta(2, 18) prior, producing a distribution over candidate pitches instead of a single hard pick. More robust than YIN on ambiguous frames.
let result = pyin(samples, { fs: 44100 })
// → { freq: 440.1, clarity: 0.92, candidates: [{ freq: 440.1, prob: 0.85 }, ...] }| Param | Default | |
|---|---|---|
| fs | 44100 | Sample rate (Hz) |
| minFreq | 50 | Minimum detectable frequency (Hz) |
| maxFreq | 2000 | Maximum detectable frequency (Hz) |
Unlike the other atoms, the single-frame result also carries candidates — the full posterior over detected periods, sorted by probability, each { freq, prob } with prob normalized to sum to 1 across candidates. clarity is the (clamped) total probability mass captured by the candidate set, not a single-peak confidence. Full pYIN additionally runs Viterbi smoothing over a sequence of frames with a pitch-transition prior — not implemented in this single-frame kernel.
Use when: Ambiguous pitched content — breathy vocals, noisy recordings, or when you need a pitch posterior for downstream HMM tracking. Not for: Clean signals where YIN already works well (pYIN is ~10× slower due to multi-threshold sweep). Ref: Mauch & Dixon, "pYIN: A Fundamental Frequency Estimator Using Probabilistic Threshold Distributions", ICASSP 2014.
Part of @audio/pitch — the pitch family umbrella. This README is generated from the umbrella docs.
MIT © audiojs
