使用Naudio放大麦克风输入

本文关键字:输入 麦克风 放大 Naudio 使用 | 更新日期: 2023-09-27 18:12:17

我已经使用了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中,但没有变化。

有可能放大麦克风传来的音频吗?如果有,谁能提供一个示例代码片段?我在网上找过了,但是好像找不到。

使用Naudio放大麦克风输入

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