获取 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;
我一直在使用 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;