Есть немало подобных/вопросы, связанные на SO уже, которые стоит прочитать, как ответы содержат много полезной информации и советов, но по сути вам нужно сделать это:
- конвертировать аудио данные формат, требуемый FFT (например, Int -> поплавок, отдельный L/R каналов)
- применение соответствующей window function (например Hann aka Hanning window)
- применять FFT (Примечание: при использовании типичных комплексно-к сложному БПФ затем задать мнимую части от входного массива до нуля)
- вычислить величину первых N/2 выходных БПФ бункеров (
sqrt(re*re + im*im)
)
- необязательно преобразовывать величины в дБ (вход) масштабировать (
20 * log10(magnitude)
)
- участок N/2 (лог) величины значения
Обратите внимание, что в то время FFTW - очень хороший и очень быстрый FFT, он может быть немного подавляющим для новичка - это тоже очень дорого, если вы хотите включить его в состав коммерческого продукта. Вместо этого я рекомендую начать с KissFFT.
Вы уже знаете C или C++? Если нет, лучше всего начать с чего-то более простого ... –
Отъезд http://stackoverflow.com/questions/604453/analyze-audio-using-fast-fourier-transform –
Вы знаете что-нибудь о DSP? FFTW - фантастический инструмент, но если вы ничего не знаете о преобразованиях Фурье/окна/разрешении/etc. будет очень сложно что-либо сделать. – cmannett85