gpt4 book ai didi

javascript - AudioContext:将音量增加 x 分贝

转载 作者:行者123 更新时间:2023-11-28 12:27:01 30 4
gpt4 key购买 nike

我正在使用 AudioContext() 进行听力测试,我想知道如何将音量提高/降低 x dB。这可能吗?

目前,我有一个增益节点连接到我的 AudioContext,它看起来(简而言之)如下所示:

var context = new AudioContext(), gainNode;
context.decodeAudioData(req.target.response, function(buffer) {
gainNode = context.createGain();
...
}

要更改音量,我这样做:

gainNode.gain.value = {-1 to 1}

在这里,我没有机会准确定义 dB 值。还有其他方法吗?

我认为问题是,浏览器永远不知道扬声器发出的声音的确切音量,因此没有基础来计算新的 dB 音量。

确定当前 dB 值的方法是通过 2 个声音的差异,例如测试声音(白噪声)和口头数字。为了计算差异,我找到了公式:

20 * Math.log10(gainNoise / gainSpeech);

然后我有一个基础,例如-6 dB,当语音为 -0.6,噪声为 -0.3 时。但如何将该值提高一定的 dB 值呢?

示例:我将 -6 dB 提高 5 dB 至 -1 dB。如何重新计算语音/噪音?

最佳答案

增益通常是指信号幅度的线性增加或减少。例如,您可以通过乘以 2 将信号幅度加倍,而无需考虑原始信号电平。同样,您可以通过乘以 0.5 将信号减半。在数字中,增益是通过将输入信号的每个样本乘以所需的比率来应用的。增益同样应用于信号和噪声。

您的问题意味着增益的范围是 -1 到 1。我已阅读文档,但找不到任何证据表明这种情况。我怀疑它更像是 0 到 N。-1 的增益是无意义的,因为它只会产生反转信号的效果。 0 到 1 的增益范围只能让您降低增益。

通常的做法是用 dB 来讨论增益。比率增益和 dB 增益之间有一个简单的转换。

dB = 20 * log10(ratio)
ratio = 10^(dB/20)

要设置以 dB 为单位的增益,您只需将转换应用到比率即可。

dBgain = 20;
gainNode.gain.value = 10^(dBgain/20);

关于javascript - AudioContext:将音量增加 x 分贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27270459/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com