我完成了从 WAV 文件中获取行数据。所以现在,我知道了有关 WAV 文件的信息,例如 DataRate 和 SamplingPerBits 等。
而且我在读取WAV文件后有几种数据类型:16位-[]Int16,8位-[]byte。
现在我正在尝试将 []Int16 转换为 []float!
我找到了 NAudio.wave 函数 Wave16ToFloatProvider()。
我见过Converting 16 bit to 32-nit floating point。但我无法理解它,因为我不需要编写 WaveFileWriter。所以我试着不用 WaveFileWriter。这是我的代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using NAudio;
using NAudio.Wave;
namespace WaveREader
{
class WaveReader
{
WaveFileReader reader = new WaveFileReader("wavetest.wav");
IWaveProvider stream32 = new Wave16ToFloatProvider(reader);
byte[] buffer = new byte[8192];
float[] DATASIXTEEN;
for (int i = 0; i < buffer.Length; i++)
{
DATASIXTEEN = new float[buffer.Length];
DATASIXTEEN[i] = stream32.Read(buffer, 0, buffer.Length);
}
}
}
我认为这部分是错误的DATASIXTEEN[i] = stream32.Read(buffer, 0, buffer.Length);
,但我不知道如何纠正它。
您会给我一些建议或使用 Wave16ToFloatProvider 的代码吗?
或者我会问你如何在没有 Wave16ToFloatProvider 的情况下进行转换?