我想用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);
}
如果出错,请不要责骂。我是新手。
答案 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;
}