使用NAudio将采样率设置为16 kHz



我目前正在进行一个附带项目,该项目将使用NAudio录制原声音乐。

下面的代码完成了这项工作,并且运行良好。然而,默认的采样率并不是我所需要的。我需要16千赫的采样率。那么,在给定以下代码的情况下,如何设置采样率呢?

var outputFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "NAudio");
Directory.CreateDirectory(outputFolder);
var outputFilePath = Path.Combine(outputFolder, "recorded.wav");
var capture = new WasapiLoopbackCapture();
var writer = new WaveFileWriter(outputFilePath, capture.WaveFormat);
capture.DataAvailable += (s, a) =>
{
writer.Write(a.Buffer, 0, a.BytesRecorded);
if (writer.Position > capture.WaveFormat.AverageBytesPerSecond * 20)
{
capture.StopRecording();
}
};

如果您从未找到答案,这是可能的。NAudio演示应用程序中包含了一个如何做到这一点的示例,该应用程序可以从NAudio GitHub页面下载。

您只需创建一个WaveFormat对象,将所需的采样率和通道数作为参数传递,并将其分配给WasapiLoopbackCapture对象的WaveFormat属性。

例如,以下将采样率设置为16000 kHz,将通道数设置为1(单声道(:

capture.WaveFormat = new WaveFormat(16000, 1);

最新更新