Я пытаюсь провести некоторую очистку звука, чего раньше никогда не делал python или другим способом, и мне пришла в голову мысль, что я мог бы использовать FFT, чтобы найти частоты, составляющие мое аудио, и устранить частоты, которые не принадлежат я сделал это на обычном аудио, но я не мог понять результаты, поэтому я попробовал это на простой синусоиде. и это выглядело и звучало как волна нормального размера.
fig, ax = plt.subplots(figsize=(20,3))
ax.plot(sine_wave[:500])
IPython.display.Audio(data=sine_wave, rate=44100)
Но когда я сделал fft и посмотрел на частоты на графике, это не имело смысла
def do_fft(data_samples):
data_fft = np.fft.fft(data_samples)
freq = (np.abs(data_fft[:len(data_fft)]))
plt.subplots(figsize=(20,10))
plt.plot(freq)
print("The frequency is {} Hz".format(np.argmax(freq)))
return freq
sine_freq = do_fft(sine_wave)
sine_freq[47000]
Для одного Я не совсем понимаю, что должен означать мой частотный массив. Я знаю, что большое число при определенном индексе K означает, что K Гц часто появляется в звуке. Это имело бы смысл, поскольку я получил значение, равное 23 999,9999,9 при 1000 Гц, то есть частоту моей волны. Что не имеет смысла, так это то, что я получил 24 000 за 47 000 Гц. Это не имеет никакого смысла для меня. Я сделал что-то неправильно? FFT не работает должным образом?