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
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 ?