1. 从零搭建NAudio开发环境
第一次接触NAudio时,我对着官方文档折腾了半天才把环境配好。现在回想起来,其实用NuGet安装就三秒钟的事。打开Visual Studio,在解决方案资源管理器里右键项目,选择"管理NuGet程序包",搜索框输入"NAudio"直接安装最新稳定版。安装完成后,你会发现在工具箱里自动多了个NAudio.WinForms分组,里面都是可以直接拖拽使用的音频控件。
这里有个新手容易踩的坑:NAudio对.NET版本有要求。我去年在.NET Framework 4.5的项目里装最新版NAudio就报错了,后来发现要装1.10.0这个特定版本才兼容。建议用.NET Core 3.1或以上版本开发,能避免很多奇怪的兼容性问题。安装完成后,记得在代码文件顶部添加using语句:
csharp复制using NAudio.Wave;
using NAudio.FileFormats;
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 音频录制功能实战
2.1 麦克风录音实现
用WaveIn类实现麦克风录音比想象中简单。我在项目里封装了个Recorder类,核心代码就二十来行。初始化时需要设置采样率(44100Hz是CD音质标准)和声道数,然后挂载DataAvailable事件:
csharp复制public class AudioRecorder
{
private WaveInEvent waveSource;
private WaveFileWriter waveFile;
public void StartRecording(string outputPath)
{
waveSource = new WaveInEvent {
WaveFormat = new WaveFormat(44100, 1)
};
waveSource.DataAvailable += (s, e) => {
waveFile.Write(e.Buffer, 0, e.BytesRecorded);
};
waveFile = new WaveFileWriter(outputPath, waveSource.WaveFormat);
waveSource.StartRecording();
}
}
实际测试发现,笔记本内置麦克风的录音质量很一般。后来我加了个设备选择功能,通过WaveIn.GetCapabilities获取所有输入设备,让用户自己选外接麦克风:
csharp复制for (int i = 0; i < WaveIn.DeviceCount; i++)
{
var caps = WaveIn.GetCapabilities(i);
deviceComboBox.Items.Add($"{i}. {caps.ProductName}");
}
2.2 系统声音录制技巧
录制电脑播放的声音要用WasapiLoopbackCapture类。这个功能我调试时遇到个坑:如果系统音量开得太小,录出来的文件几乎是静音的。解决方法是在初始化时设置AudioClientShareMode为S
