使用 NAudio 转换 Wav

Wav converting with NAudio

我在将常规 wav 转换为 a-law 声音时遇到问题。这样做时我的质量很差:

WaveStream stream = new WaveFileReader(in.wav);
var s = new RawSourceWaveStream(new WaveFormatConversionStream(new WaveFormat(8000, 16, 1), stream), new WaveFormat(8000, 16, 1));
var c = new WaveFormatConversionStream(WaveFormat.CreateALawFormat(8000, 1), s);
WaveFileWriter.CreateWaveFile(AppDomain.CurrentDomain.BaseDirectory + "\out.alaw", c);

或者两次放慢声音:

WaveStream stream = new WaveFileReader(in.wav);
 var s = new RawSourceWaveStream(stream, new WaveFormat(8000, 16, 1));
 var c = new WaveFormatConversionStream(WaveFormat.CreateALawFormat(8000, 1), s);
WaveFileWriter.CreateWaveFile(AppDomain.CurrentDomain.BaseDirectory + "\out.alaw", c);

如何将wav转成质量好的a-law?

在这两个示例中都不需要 RawSourceStream,第二个示例将不起作用,除非 in.wav 恰好具有正确的格式。

试试这个:

var stream = new WaveFileReader(in.wav);
var s = new WaveFormatConversionStream(new WaveFormat(8000, 16, 1), stream);
var c = new WaveFormatConversionStream(WaveFormat.CreateALawFormat(8000, 1), s);
WaveFileWriter.CreateWaveFile(AppDomain.CurrentDomain.BaseDirectory + "\out.alaw", c);