改变音频文件的分贝(音量)

本文关键字:音量 音频 文件 改变 | 更新日期: 2023-09-27 17:53:09

我在NAudio真的是新的,需要你的帮助。我正在使用NAudio,我需要更改音频文件中的音量并写入新文件。我想我必须得到音频文件的样本和其中增加的something。但我不知道怎么开始。有人能帮我吗?这是我的代码:

using (WaveFileReader reader = new WaveFileReader(inFile))
            {
                VolumeWaveProvider16 volumeProvider = new VolumeWaveProvider16(reader);
                using (WaveFileWriter writer = new WaveFileWriter(outFile, reader.WaveFormat))
                {
                    while (true)
                    {
                        var frame = reader.ReadNextSampleFrame();
                        if (frame == null)
                            break;
                        //var a = frame[0];
                        writer.WriteSample(frame[0] + 0.2f);
                    }
                }
            }

我做得好吗?

改变音频文件的分贝(音量)

如果您可以访问PCM数据,最简单的方法是将每个样本值增加一个常数。

你的例子看起来不错。你有没有试过通过听两种WAV来比较旧的和新的?

有几点需要注意:

  • ReadNextSampleFrame()返回数组,每个音频通道具有一个值。如果你有多通道音频,你应该用foreach迭代数组,并增加每帧的值。
  • 根据检索样本值的范围,添加0.2可能没有影响。您是否检查了ReadNextSampleFrame()返回的值类型?例如,当您调试应用程序时,您正在检索的实际值是什么?是否有一些(或很多)大于1的值?
  • 因为你不知道你的输入值的范围,你不能剪辑他们到那个范围。如果一个样本值在原始文件中相当大,增加它可能会超过有效范围,这反过来可能导致意外的输出。