首页 > 解决方案 > NAudio WaveFileReader.ReadNextSampleFrame() 返回无效幅度

问题描述

我将音符 D 记录到 wav 文件中,并希望获得它的振幅数组。我在开始录音之前就开始播放这个音符,所以没有空的间隔。然后我使用 NAudio.WaveFileReader.ReadNextSampleFrame() 来获取它的幅度,但输出有很多零并且很少遇到非零值,例如:

0 
0 
0.1312 
0 
0 
... a lot of zeros
0.12312 
0.123123 
0 
0 
..a lot of zeros 
0 
0.12312

这是不正确的,因为 Ableton 表明声音是波浪状的: 在此处输入图像描述

这是我的代码:

using (var reader = new WaveFileReader("record.wav"))
{

    var leftAmplitudes = new List<float>();
    var rightAmplitudes = new List<float>();
    for (int i = 0; i < reader.SampleCount; i++)
    {
        var sampleFrame = reader.ReadNextSampleFrame();
        leftAmplitudes.Add(sampleFrame[0]);
        rightAmplitudes.Add(sampleFrame[1]);
    }
}

你知道我怎样才能得到实际的幅度吗?

标签: c#.netnaudio

解决方案


推荐阅读