Точный метод для наиболее заметных частот звукового сигнала?
В конце концов я пытаюсь получить программу для сохранения последовательности тонов с аудиовхода в последовательном порядке. Чтобы проверить, я скачал файл WAV для сигнала 440 Гц отсюда https://www.mediacollege.com/audio/tone/download/ и написал следующий код:
from scipy.io import wavfile as wav
from scipy.fftpack import rfft
rate, data = wav.read('440Hz.wav')
rawFTData = rfft(data)
intFTData = [int(i) for i in rawFTData]
Я ожидал, что для сигнала 440 Гц наиболее распространенная частота, извлеченная после преобразования, будет около 440, но вместо этого:
from statistics import mode
mode(intFTData)
>> 0
from collections import Counter
count = Counter(intFTData)
count.most_common()
>> [(0, 1055), (-7, 588), (-15, 573), (43, 567), (-2, 563), (-6, 561), (-9, 557), (14, 555), (8, 554), (12, 551), (-11, 551), (26, 551), (11, 549), (19, 549), (-48, 549), (-26, 549), (-5, 545), (13, 545), (34, 544), (45, 541), (56, 541), (-17, 540), (-12, 538), (33, 538), (-47, 538), (-13, 536), (-14, 536), (-34, 534), (39, 534), (-16, 534), (7, 534), (-19, 533), (-10, 533), (2, 532), (25, 532), (64, 532), (20, 530), (30, 530), (29, 530)...
Практически идентичные результаты были возвращены, когда я подготовил данные со сложным FT. Есть ли физическое объяснение, почему приведенные выше данные не дают режим (или даже относительно высокий уровень) 440?