gpt4 book ai didi

javascript - 如何从 getByteFrequencyData 正确确定以 dB 为单位的音量

转载 作者:行者123 更新时间:2023-11-29 15:26:11 24 4
gpt4 key购买 nike

我知道 getByteFrequencyData 返回每个频段的音量(以 dB 为单位)。如何确定 VU 表中显示的信号的音量(以 dB 为单位)?

大多数时候,我看到的代码只是将每个频段的音量相加,然后将总和除以频段数,但这肯定是不正确的。这意味着每个频段都需要处于 6 dB 才能使整个信号具有 6 dB。当然,事实并非如此。

我的问题:

  1. 如何正确确定信号的总音量?

  2. 如果 minDecibels 设置为 -96 且 maxDecibels 设置为 0,我假设值 0 转换为 -96 dB,值 255 转换为0 分贝。但是:128 的值意味着什么? -48 分贝?

最佳答案

  1. 我认为这取决于您所说的“音量”是什么意思。如果它是信号的能量,那么您可以只取 getFloatFrequencyData 输出的平均值,但平均值不应该是 dB 值的平均值。在进行平均之前,您需要转换为线性。这很昂贵;您可以只获取时域数据并计算平均平方和并得到相同的答案(几乎)。
  2. 是的,FFT 数据被转换为 dB,然后在最小值和最大值之间线性映射。参见 https://webaudio.github.io/web-audio-api/#widl-AnalyserNode-getByteFrequencyData-void-Uint8Array-array .

关于javascript - 如何从 getByteFrequencyData 正确确定以 dB 为单位的音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38971884/

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