2013-05-06 176 views
0

我玩过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”演示中,并且它被忽略 - 这意味着我将该值放入音量中,但没有变化。

是否可以放大从麦克风进来的音频?如果是这样,有人可以展示示例代码片段吗?我在网上查找,但我似乎无法找到它。

回答

1

要利用SampleChannel修改样本的功能,您实际上需要通过SampleChannel提取音频。为此,您可以将录制的音频放入BufferedWaveProvider中,然后将其放入SampleChannel中。然后,您需要确保将足够的音频从SampleChannel中拉出并放入WaveFileWriter中,以便它不会填满。如果你想要一个16位的WAV文件,你也可以使用SampleToWaveProvider16。