У меня есть 16-битные монофонические данные в необработанном формате, сэмплированные на частоте 48 кГц. Я использую библиотеку Aquila C++, чтобы получить ее спектр, так как мне нужно выполнить EQ. Вот фрагмент кода:определение частот в спектре после FFT
Aquila::SampleType samples[512];
Aquila::SpectrumType spect;
std::shared_ptr<Aquila::Fft> fft;
('samples' is filled with audio)
fft = Aquila::FftFactory::getFft(512);
spect = fft->fft(samples);
Таким образом, звуковые данные разделены на 512 выборок, и каждый кусок преобразуется в частотной области (FFT). Я хочу изменить «величину», например. 2 кГц и установить величину всех частот за пределами, например. От 10 кГц до 0 (фильтр нижних частот).
Моя единственная проблема заключается в том, что я не знаю частотный диапазон спектра, генерируемого Aquila. Я имею в виду, я лично знаю, что частота дискретизации аудио составляла 48 кГц, но Aquila FFT не сообщается об этом значении, ему даже не нужно выполнять БПФ. Как я могу определить, к какой частоте используется каждая запись массива? Например. Спектр [0] = 1 Гц, спектр [10] = 126 Гц, спектр [511] = 22,13 кГц и т. д.
http://stackoverflow.com/questions/4364823/how-to-get-frequency-from-fft-result – NPE
Кроме http://dsp.stackexchange.com/questions/2818/extracting-frequencies-from-fft – NPE
См. http://stackoverflow.com/a/4371627/253056 –