0

我想使用 c# 从波形文件中获取频率和幅度。我尝试了 NAudio 和 FFT,但结果一无所获。你能帮我吗。

WaveChannel32 wave = new WaveChannel32(new 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);
}

如果哪里不对,不要责骂。我是新手。

4

3 回答 3

0

您可以使用低音音频库。它具有 .NET 包装器,您可以获得峰值幅度和采样率。

于 2012-05-31T12:48:53.117 回答
0

我过去使用 MathNET.Numerics 成功编写了一个 GUI。

在此处输入图像描述

于 2022-02-17T23:05:15.907 回答
0

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

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

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

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

如何在 C# 中读取 .wav 文件的比特率

于 2017-07-10T09:47:09.410 回答