2013-05-06 227 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。