0

我玩过 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”演示中,但它被忽略了——这意味着我将值放在 Volume 中,但没有任何变化。

是否可以放大来自麦克风的音频?如果是这样,有人可以显示示例代码片段吗?我在网上查过,但似乎找不到。

4

1 回答 1

1

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

于 2013-05-07T15:29:38.810 回答