使用Naudio放大麦克风输入

时间:2013-05-06 18:40:38

标签: c# audio-recording naudio

我使用过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”演示中,并且它被忽略 - 这意味着我将值放入卷中,但没有任何更改。

是否可以放大麦克风输入的音频?如果是这样,有人可以显示示例代码段吗?我在网上看过,但我似乎无法找到它。

1 个答案:

答案 0 :(得分:1)

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