1. Отфильтруйте сигнал. (варианты: фурье-преобразование, вейвлет-преобразование)
2. Выделите особые точки (например пики)
Это можно сделать например так:
i. Находим максимальное значение амплитуды
ii. Находим все точки, которые > 0.5 от максимального. ( 0.5 взято наобум, можно взять больше/меньше в зависимости от возможной разницы)
iii. У нас получится набор интервалов точек, для каждого интервала выбираем максимальное значение. Это и есть наш пик.
Для улучшения работы алгоритма можно искать точки не на самом сигнале, а на Вейвлет-разложении этого сигнала ( то есть для каждого уровня разложения выполняем описанную выше операцию, затем сопоставляем данные).
Делал нечто похожее на matlab, для питона библиотека с Вейвлет/фурье-преобразованиями точно имеется.