It sounds like you already understand how to get the FFT spectrum, right?
http://flic.kr/p/7notw6
But if you are looking for a fundamental (green dot), you cannot just use the highest peak. This is not necessarily fundamental. In my example, the actual fundamental level is 100 Hz, but the highest peak is 300 Hz.
, . comp.dsp "FFT, , /-, AMDF/ASDF".
100 , , , , , - , (1f, 3f, 5f). , , . , , .
. , ( ). FFT, .
* . Python, :
correlation = fftconvolve(sig, sig[::-1], mode='full')
fftconvolve() : https://github.com/scipy/scipy/blob/master/scipy/signal/signaltools.py#L133