2010-10-06 273 views
4

可能重复:
Fast fourier transform in c#快速傅立叶变换的C#

我要寻找或麦克风的音频数据线进行实时FFT(快速傅立叶变换)的例子在C#中。我的目标是实时确定音频数据中是否存在特定音符。任何例子赞赏。

+0

重复:http://stackoverflow.com/questions/170394/fast-fourier-transform-in-c – 2010-10-06 14:48:02

+3

其实,这个问题并没有确切地覆盖与确定音频数据中存在的音符是否涉及FFT结果的显着后处理,甚至是使用完全不同的音符音高估计方法(自相关,小波等)相同的基础。注释音高!= FFT峰频率bin – hotpaw2 2010-10-07 18:35:32

回答

7

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); 
    } 
+0

感谢您的图书馆链接。我后面的例子:) – Phil 2010-10-06 15:24:39

+0

更新了一个ExocortexDSP的例子。 AForge看起来很相似。 – SwDevMan81 2010-10-06 15:49:03

+0

谢谢你,正如在原始问题中,我是从麦克风或线路拉数据的例子之后。我需要第二个库吗?谢谢。 – Phil 2010-10-06 16:40:38