从波形文件中获取频率和幅度

时间:2012-05-31 12:22:31

标签: c# fft frequency wave amplitude

我想用c#从wave文件中获取频率和幅度。 我尝试了naudio和FFT,但结果一无所获。你可以帮帮我吗。

NAudio.Wave.WaveChannel32 wave = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(open.FileName));

        byte[] buffer = new byte[16384];
        int read = 0;
        double[] _fft;
        while (wave.Position < wave.Length)
        {
            read = wave.Read(buffer, 0, 16384); 
            _fft = FourierTransform.FFTDb(ref buffer);
        }
如果出错,请不要责骂。我是新手。

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

您可以使用Bass Audio Library。它有.NET包装器,你可以获得峰值幅度和采样率。

答案 2 :(得分:0)

最方便的语音:使用双fft,即倒谱,fft(logfft(样本)))来找到语音音高

但这不是我在这里提交的原因..谷歌似乎还在这里提到另一个问题:“如何获得.WAV文件的采样频率”。

这很容易。为了记录,与NAudio一起,Mark Heath在2014年回答了这个问题。这是我的版本,将字节速率除以样本大小(以字节为单位)以获得采样频率,

using (var reader = new WaveFileReader(fileName))
            {
               byterate = reader.WaveFormat.AverageBytesPerSecond;

            }

How to read Bit rate of .wav file in C#