关于 c#:如何使用 NAudio 重新采样内存中的音频流(字节 [])?

How do I resample an in-memory audio stream (byte[]) with NAudio?

我想将音频字节数组从 8Khz 重新采样到 48Khz。音频流作为 byte[] 从网络套接字获取。

阅读 Mark Heath 的关于使用 NAudio 重新采样的博客,我遇到了以下代码

1
2
3
4
5
6
7
8
int outRate = 16000;
var inFile = @"test.mp3";
var outFile = @"test resampled WDL.wav";
using (var reader = new AudioFileReader(inFile))
{
    var resampler = new WdlResamplingSampleProvider(reader, outRate);
    WaveFileWriter.CreateWaveFile16(outFile, resampler);
}

但此代码作用于文件流 (AudioFileReader) 而不是内存数据 (byte[])。如何修改此代码以对我的字节数组进行上采样?

编辑:基本上我想将从网络对等点获得的 8 KHz 数据上采样到 48 KHz 并使用 WASAPI 播放。


您对重采样器的输入可以是 BufferedWaveProviderRawSourceWaveStream。但是,您不能使用 CreateWaveFile16 实时重新采样。您只需要读取您期望可用的音频量并将其写入 WAV 文件。