Можно сделать двухпороговую функцию. Пусть сигнал меняется от нуля до единицы. Возьмем два порога один на 0.1, другой на 0.9. Возьмем переменную x, которая принимает два состояния: высоко и низко. Если значение сигнала падает ниже 0.1 и x = "высоко", меняем на x на "низко". Поднимается с x = "низко" до 0.9, меняем на "высоко".
Каждый раз, когда переменная меняет свое значение на высоко, считаем пульс. Единственное, надо понаблюдать, как амплитуда себя ведет. Может делить на максимум за последние секунд 10, ну и параметры понаблюдать. Лучше всего, если есть приличная размеченная история с пульсом и можно сразу запустить тестирование на обучающей, кросс и контрольной выборках.