相关疑难解决方法(0)

如何通过给定的分贝值衰减WAV文件?

如果我想将WAV文件的幅度降低25%,我会写这样的东西:

for (int i = 0; i < data.Length; i++)
{
    data[i] *= 0.75;
}
Run Code Online (Sandbox Code Playgroud)

然而,我读到的很多关于音频技术的文章都以分贝的形式讨论了振幅.我原则上理解分贝单元的对数性质,但在实际代码方面却没有那么多.

我的问题是:如果我想减少一个WAV文件的音量,比如20分贝,我会如何像上面的例子一样在代码中这样做?

更新:公式(基于Nils Pipenbrinck的答案)用于衰减给定数量的分贝(输入为正数,例如10,20等):

public void AttenuateAudio(float[] data, int decibels)
{
    float gain = (float)Math.Pow(10, (double)-decibels / 20.0);
    for (int i = 0; i < data.Length; i++)
    {
        data[i] *= gain;
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我想衰减20分贝,增益因子是.1.

audio wav

9
推荐指数
1
解决办法
6245
查看次数

标签 统计

audio ×1

wav ×1