I am struggling with implementing FM demodulation for IQ samples that has 0 center frequency from RTL-SDR ... I have found the following algorithm for FM demodulation, see FM demodulation:
analytic_signal = scipy.signal.hilbert(vfo_channel_fm.real)
baseband = analytic_signal
demod_channel = np.angle(baseband[1::1] * np.conjugate(baseband[0:-1:1]))
demod_channel = (demod_channel * (sampling_freq/decimation_factor)) / (2 * np.pi)
where vfo_channel is just IQ signal shifted by SDR receiver to 0 frequency
This algorithms works, but it has some issue with base sinusoidal signal (I see my voice decoded on sinusoidal signal), see image bellow:
As you can see, my voice has a base sinusoidal signal and also some big signal changed in the middle of the signal
Is there anything that I missed implementing FM demodulation ? Maybe there are a better algorithm ?
vfo_channel
implies the output of a local oscillator; this would not contain any information unless you have done something with it -- in which case, you should say what that is. I.e., "vfo_channel
is a test signal that I made that contains ...". $\endgroup$