обычно вызов API fft возвращает массив мнимых чисел, где каждый элемент массива содержит комплексное число в форме (Areal, AImaginary), где каждый элемент массива представляет частоту (значение частоты равно подразумевается индексом массива [найти формулу для вычисления частоты на основе индекса массива])
в элементе комплексного массива 0 представляет частоту 0, которая является вашим смещением постоянного тока, тогда частота каждого последующего значения частоты вычисляется с использованием
incr_freq := sample_rate / number_of_samples
так, чтобы это было значимым, вы должны предварительно знать частоту дискретизации входного временного ряда вашего источника (аудио или что-либо еще), а количество выборок - это только длина необработанного массива звуковых кривых с плавающей запятой, который вы подали в свой FFT. звоните
... при выполнении итерации по этому массиву комплексных чисел рассчитайте амплитуду, используя Areal и AImaginary комплексного числа каждого частотного бина, используя формулу
curr_mag = 2.0 * math.Sqrt(curr_real*curr_real+curr_imag*curr_imag) / number_of_samples
при выполнении итерации по сложному массиву, возвращенному из вызова fft, помните о понятии Предел Найквиста , что означает, что вы потребляете только первую половину числа элементов этого сложного массива (и удваиваете величину каждой частоты - см. формулу выше)
... см. Полный псевдокод в Получить частоту с наибольшей амплитудой из FFT
... я запустил твой код и ничего не случилось ... в чем смысл твоего питона
* * Тысяча двадцать-один [диапазон (п // 2)]