Fundamental Frequency Estimation from Spectral Peaks

Spectral peak measurement was discussed in Chapter 5.
Given a set of peak frequencies
,
, it is usually
straightforward to form a *fundamental frequency* estimate
``
''. This task is also called *pitch detection*, where the
perceived ``pitch'' of the audio signal is assumed to coincide well
enough with its fundamental frequency. We assume here that the signal
is *periodic*, so that all of its sinusoidal components are
*harmonics* of a fundamental component having frequency
.
(For inharmonic sounds, the perceived pitch, if any, can be complex to
predict [54].)

An approximate maximum-likelihood
-detection
algorithm^{11.1} consists
of the following steps:

- Find the peak of the
*histogram*of the peak-frequency-differences in order to find the most common harmonic spacing. This is the nominal estimate. The matlab`hist`function can be used to form a histogram from the measured peak-spacings. - Refine the nominal
estimate using
*linear regression*. A linear regression is a least-squares straight-line fit. Our straight line is , , where are the measured harmonic peak frequencies. (The histogram estimate can be used to reject peaks too far from the expected harmonic frequencies.) Thus, is the*slope*of the fitted line. In matlab, the function`polyfit(x,y,1)`can be used. As an ideal example,`p = polyfit([1,2,3],[440,2*440,3*440],1)`returns`p = [440,0]`, where`p(1)`is the slope, and`p(2)`is the offset.

[How to cite this work] [Order a printed hardcopy] [Comment on this page via email]

Copyright ©

Center for Computer Research in Music and Acoustics (CCRMA), Stanford University