Мне нужно написать скрипт, который должен определять частоты и находить определенный c, если он содержится в сигнале. Проблема в том, что я получаю большое количество разных частот после использования БПФ, и никакой частоты не должно быть. Например, если я просто посылаю простые 440 Гц, нахожу пик и печатаю соответствующую частоту, это работает хорошо. Но если я посылаю высокочастотный сигнал с другим шумом, он не работает. Этот случай мне интереснее.
Что я делаю:
from scipy.io import wavfile
import numpy as np
from numpy import fft
fs, data = wavfile.read('./signal.wav')
frs = np.fft.fftfreq(len(data))
res = abs(frs*fs)
В Res я вижу много «лишних» частот. Основная задача - определить, есть ли заданная частота c. 21487 Гц, например. Я также нашел реализацию алгоритма Гертцеля, но это занимает много времени. Есть ли быстрый и простой способ решить мою проблему?
Заранее спасибо