这个问题已经在这里有了答案:
已关闭10年。
我正在寻找在C#中对线路输入或麦克风音频数据执行实时FFT(快速傅立叶变换)的示例。我的目标是实时确定音频数据中是否存在特定的音符。任何例子表示赞赏。
最佳答案
AForge.NET是一个具有快速傅立叶变换支持的开源库。
ExocortexDSP也是另一种选择。
ExocortexDSP示例将如下所示:
Exocortex.DSP.ComplexF[] complexData = new Exocortex.DSP.ComplexF[512];
for (int i = 0; i < 512; ++i)
{
// Fill the complex data
complexData[i].Re = 1; // Add your real part here
complexData[i].Im = 2; // Add your imaginary part here
}
// FFT the time domain data to get frequency domain data
Exocortex.DSP.Fourier.FFT(complexData, Exocortex.DSP.FourierDirection.Forward);
float[] mag_dat_buffer = new float[complexData.Length];
// Loop through FFT'ed data and do something with it
for (int i = 0; i < complexData.Length; ++i)
{
// Calculate magnitude or do something with the new complex data
mag_data_buffer[i] = ImaginaryNumberMagnitude(complexData[i].Im, complexData[i].Re);
}