gpt4 book ai didi

c# - Naudio - 将 32 位 wav 转换为 16 位 wav

转载 作者:行者123 更新时间:2023-11-30 15:36:09 25 4
gpt4 key购买 nike

我一直在尝试将 32 位立体声 wav 转换为 16 位单声道 wav。我使用 naudio 来捕捉声音,我认为只使用四个更重要的字节中的两个就可以了。

这是 DataAvailable 的实现:

void _waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
byte[] newArray = new byte[e.BytesRecorded / 2];
short two;
for (int i = 0, j = 0; i < e.BytesRecorded; i = i + 4, j = j + 2)
{
two = (short)BitConverter.ToInt16(e.Buffer, i + 2);


newArray[j] = (byte)(two & 0xFF);
newArray[j + 1] = (byte)((two >> 8) & 0xFF);
}
//do something with the new array:
}

如有任何帮助,我们将不胜感激!

最佳答案

我终于找到了解决方案。我只需要将转换后的值乘以 32767 并将其转换为 short:

void _waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
byte[] newArray16Bit = new byte[e.BytesRecorded / 2];
short two;
float value;
for (int i = 0, j = 0; i < e.BytesRecorded; i += 4, j += 2)
{
value = (BitConverter.ToSingle(e.Buffer, i));
two = (short)(value * short.MaxValue);

newArray16Bit[j] = (byte)(two & 0xFF);
newArray16Bit[j + 1] = (byte)((two >> 8) & 0xFF);
}
}

关于c# - Naudio - 将 32 位 wav 转换为 16 位 wav,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com