Можно взять пакет numpy, загрузить в массив результат развёртки сигнала, прогнать преобразование Фурье (numpy.fft.fft() и numpy.fft.fftfreq() в помощь).
Если сигнал именно с амплитудной модуляцией, то на полученном спектре амплитуд должен выделяться пик несущей частоты и её гармоники. Его можно определить либо поиском максимума, либо поиском такой частоты, сумма гармоник (т.е. x2, x3, x4 и т.д.) которой максимальна.
Затем сглаживаешь эти гармоники (например, заменяешь на среднее), и в идеале получаешь форму огибающей, т.е. самого сигнала (+ шум).
Я делал нечто похожее, когда нужно было убрать из сигнала тензодатчика 50Гц наводки от осветительной сети.
Вот сигнал (серый - до частотного фильтра, черный - после, синий - после доп. сглаживания).
![614a4ecbc2152580856422.png](https://habrastorage.org/webt/61/4a/4e/614a4ecbc2152580856422.png)
Вот спектр (серый - до, черный - после), на нём видны "убранные" пики.
![614a4eec01b14169796442.png](https://habrastorage.org/webt/61/4a/4e/614a4eec01b14169796442.png)
Реализация у меня была колхозная, но свою задачу выполнила.