获取 16 位和 32 位录音流的音频电平

Get Audio levels for 16 and 32 bit recording streams

我一直在使用 this

我已经尝试使用浮动缓冲区的第二个示例,但无法按原样工作。我确实尝试了 short buffer 并除以 max short 并且有效。所以我尝试用浮点缓冲区除以最大浮点数,但没有用。是我的麦克风功能吗?我的除法也正确吗(示例中没有)?

如您发布的 link 中所示,您无需对浮动缓冲区执行任何操作:

void OnDataAvailable(object sender, WaveInEventArgs args)
{
    ...
    var buffer = new WaveBuffer(args.Buffer);
    // interpret as 32 bit floating point audio
    for (int index = 0; index < args.BytesRecorded / 4; index++)
    {
        var sample = buffer.FloatBuffer[index];
        ...
    }
}

如果您需要的是 32 位整数样本,则需要访问 IntBuffer 字段并除以最大整数。

var sample = buffer.IntBuffer[index] / 4294967296f;