1
votes

Wrote a frequency domain pitch detection algorithm in C and now I'm trying to estimate the fundamental frequency. I have the maximum magnitude bin from the Fourier Transform, but that can also be an harmonic not necessary F0. I read somewhere that it is possible to estimate F0 using cepstral analysis. So, here are the steps I follow:

  1. Take time domain buffer x, make a windowed copy w.
  2. FTTw = FFT(w)
  3. a = Log of square magnitude of FTTw
  4. FTTa = FFT(a)
  5. b = square magnitude of FTTa
  6. Estimate fundamental using b

I'm having trouble with the last step (6). The magnitudes in b are pretty high and I'm not sure I fully understand what they represent (quefrencies?) and most of all how can I estimate the fundamental based on them.

Any advice is welcome! Thanks!

1
Since this is more DSP-related than programming-related you might want to try dsp.stackexchange.com instead of stackoverflow.com - Paul R
Done that, was there several hours, got no answer/comment. I guess the community is still small, so I tried my luck here :) - Valentin Radu
You probably need to be patient - give it 24 hours or so - different time zones etc. If you get an answer here it will probably be from someone who is active on dsp.stackexchange.com anyway... - Paul R

1 Answers

1
votes

The location of the peak in the cepstrum (on the quefrency axis) tells you the pitch period of your original signal. The magnitude of the peak is not particularly important.