我需要规范化8位音频.wav文件.
我使用NAudio将文件加载到byte [].我成功将其转换为sbyte []并恢复了正弦位.然后,我将该数组乘以(强制转换为浮点数),以得到归一化的值(0-255)硬限制.
现在,我需要将其另存为byte []以便NAudio对其进行写入.问题是,如果我刚投下,
source[i] = (byte)normalizedFloatArray[i];
结果保存的.wav看起来像这样!哎哟.
“高飞”
问题可能出在哪里?
解决方法:
我认为发生这种情况的原因是字节如何转换为字节.例:
sbyte b1 = 100;
sbyte b2 = -100;
Console.WriteLine("{0} = {1}", b1, (byte)b1);
Console.WriteLine("{0} = {1}", b2, (byte)b2);
输出以下内容:
100 = 100
-100 = 156
因此,如果您的wave以sbytes为单位显示以下内容:
{ 0, 50, 100, 50, 0, -50, -100, -50, 0 }
输出将是以下字节数:
{ 0, 50, 100, 50, 206, 156, 206, 0 }