我使用过Naudio示例,并且能够放大使用“WaveFileStream”功能打开的WAV文件。 (代码示例:AudioPlaybackPanel)这很好用:
我添加了一个变量声明,因此我可以稍后访问该频道:
SampleChannel waveFromFile;
在现有的功能中,我设置了它:
private ISampleProvider CreateInputStream(string fileName)
{
...
this.fileWaveStream = plugin.CreateWaveStream(fileName);
var waveChannel = new SampleChannel(this.fileWaveStream, true);
waveFromFile = waveChannel;
...
}
然后我添加了一个AMPLIFY按钮,这就像我期望的那样工作:
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”演示中,并且它被忽略 - 这意味着我将值放入卷中,但没有任何更改。
是否可以放大麦克风输入的音频?如果是这样,有人可以显示示例代码段吗?我在网上看过,但我似乎无法找到它。
答案 0 :(得分:1)
要利用SampleChannel修改样本的能力,您实际上需要通过SampleChannel提取音频。为此,您可以将录制的音频放入BufferedWaveProvider,然后将其放入SampleChannel。然后你需要确保从SampleChannel中取出足够的音频并进入WaveFileWriter,这样它就不会填满。如果你想要一个16位的WAV文件,你可能还想使用SampleToWaveProvider16。