Я использую NAudio с C# для преобразования волновых файлов в 48 000, 8 бит, моно. Я храню преобразованные данные в массиве байтов. Мой код ниже. Он работает нормально, но данные файла новой волны не подписаны, а мне нужно, чтобы они были подписаны.
WaveFormat target = new WaveFormat(48000, 8, 1);
WaveStream stream = new WaveFileReader(this.FilePath);
WaveFormatConversionStream conv = new WaveFormatConversionStream(target, stream);
this.ConvertedData = new byte[conv.Length];
conv.Position = 0;
conv.Read(this.ConvertedData, 0, Convert.ToInt32(conv.Length));
stream.Dispose();
conv.Dispose();
Я попытался перебрать массив байтов после преобразования данных и вычесть 128 из каждого байта, что является решением, которое я нашел на этом сайте.
for (int i = 0; i < end; i++)
{
signed = (int)this.ConvertedData[i] - 128;
this.Data[i] = (byte)signed;
}
Этот вид работает, но не является надежным, и я уверен, что должен быть лучший способ. Любые предложения будут ценны. Спасибо.