Using SDR#, I saved the baseband I+jQ signal centered about a commercial FM station to a *.wav file. I want to write python code to demodulate this signal. I know that SDR# can read in that file and demodulate it, but I want to do it on my own. And no, this is not for a class ...
I assume that the I and Q signals correspond to the left and right (or right and left) stereo channels, although if I'm wrong this is a secondary issue. I also know that there are likely subcarriers that carry other information, but again I think that's a secondary issue.
I thought that demodulating would be easy, but for some reason I can't get it to work. I applied these steps to the real part of the signal:
- Ran it through a Hilbert transform
- Calculated the phase versus time
- Unwrapped the phase
- Diffed (discrete derivative) on phase
- Converted to 16 bit PCM and saved to *.wav file
- Played the *.wav file with the playsound python package
I did this w/ and w/o low pass filtering, fc ~ 100 kHz. All I hear is hissing. At first, I used all frequencies up to ~ 1.25 MHz to reconstruct the AF signal. I also tried using only frequencies up to 100 kHz to reconstruct the AF signal, which changed the time sampling (still should be high enough).
Any help would be appreciated.