使用Naudio放大麦克风输入
问题描述:
我玩过Naudio的例子,并且能够放大使用“WaveFileStream”功能打开的WAV文件。 (代码示例:AudioPlaybackPanel)能正常工作:使用Naudio放大麦克风输入
我添加一个变量声明,所以后来我可以访问信道:
SampleChannel waveFromFile;
而在现有功能,我将它设置:
private ISampleProvider CreateInputStream(string fileName)
{
...
this.fileWaveStream = plugin.CreateWaveStream(fileName);
var waveChannel = new SampleChannel(this.fileWaveStream, true);
waveFromFile = waveChannel;
...
}
然后,添加一放大按钮,这个工程就像我期望:
float ampFactor = 1.0f;
private void ampButton_Click(object sender, EventArgs e)
{
ampFactor += 2;
if (ampFactor >= 9.0f)
ampFactor = 1.0f;
waveFromFile.Volume = ampFactor;
}
却怎么也当输入不是WAV文件,而是麦克风时,我这样做?
如果我正在查看NAudio示例,并尝试将此代码添加到“RecordingPanel”演示中,并且它被忽略 - 这意味着我将该值放入音量中,但没有变化。
是否可以放大从麦克风进来的音频?如果是这样,有人可以展示示例代码片段吗?我在网上查找,但我似乎无法找到它。
答
要利用SampleChannel修改样本的功能,您实际上需要通过SampleChannel提取音频。为此,您可以将录制的音频放入BufferedWaveProvider中,然后将其放入SampleChannel中。然后,您需要确保将足够的音频从SampleChannel中拉出并放入WaveFileWriter中,以便它不会填满。如果你想要一个16位的WAV文件,你也可以使用SampleToWaveProvider16。