2010-10-06 274 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