NAudio - 如何记录扬声器的初始静音

Posted

技术标签:

【中文标题】NAudio - 如何记录扬声器的初始静音【英文标题】:NAudio - How to record the initial silence of the speaker 【发布时间】:2020-05-19 22:55:02 【问题描述】:

我正在尝试使用 WasapiLoopbackCapture 类将扬声器录制到 WAV 文件中。 我注意到,如果扬声器最初是静音的,WAV 文件会在扬声器发出第一个声音时开始录制,例如在录制开始后 5 或 10 秒后。

有没有办法在 WAV 文件中也记录初始静音?

这是我写的代码:

WasapiLoopbackCapture _speakerWave;
protected WaveFileWriter _speakerWriter;

_speakerWave = new WasapiLoopbackCapture();

_speakerWave.DataAvailable += (s, a) =>

    _speakerWriter.Write(a.Buffer, 0, a.BytesRecorded);
;

_speakerWriter = new WaveFileWriter("test.wav", _speakerWave.WaveFormat);
_speakerWave.StartRecording();

谢谢

【问题讨论】:

【参考方案1】:

来自 NAudio WasapiLoopbackCapture documentation:

现在,WasapiLoopbackCapture 有一个问题。如果没有播放任何音频,则不会触发 DataAvailable 事件。因此,如果您想录制“静音”,一个简单的技巧是简单地使用 NAudio 播放设备在录制期间通过该设备播放静音。或者,您可以在检测到传入音频中的间隙时自己插入静音。

【讨论】:

以上是关于NAudio - 如何记录扬声器的初始静音的主要内容,如果未能解决你的问题,请参考以下文章

NAudio 记录和保存麦克风输入和扬声器输出

NAudio 通过我的代码设置左右扬声器电平(平衡控制)

如何在 Python 中调用静音/扬声器控制键。戴尔纬度 E7440

如何同时使用 NAudio 生成信号和录音?

NAudio 选择扬声器/耳机(Realtek 高保真音频)

NAudio 与 MultiplexingSampleProvider 和 WasapiOut