为什么这个分贝计算/ 10而不是/ 20?

时间:2017-10-12 02:30:45

标签: decibel audiokit

AudioKit支持将音频文件规范化为给定的最大级别,单位为分贝(dB)。

我的理解是这些是场量而不是电量。

因此,这不应该是var X, i=0, lastmove = 100; //Randomly initialize function function A(){ console.log('A'); } function B(){ console.log('B'); } function C(){ console.log('C'); } function pickFunc(){ var temp = Math.floor(Math.random() * 3) + 1; if(temp==lastmove) temp = pickFunc() else lastStr = temp; if(temp == 1) return A(); else if(temp == 2) return B(); else return C(); } function startGame(){ X = pickFunc(); for(i; i<10; i++) X() } 而不是/ 20.0

/ 10.0

并且不应该是let gainFactor = Float( pow(10.0, newMaxLevel / 10.0) / pow(10.0, level / 10.0)) 而不是20 *

10 *

有问题的代码:

https://github.com/AudioKit/AudioKit/blob/9ae8641551bc5f7b4c9b4c887aa327155fac83b5/AudioKit/Common/Internals/Audio%20File/AKAudioFile%2BProcessing.swift#L42

https://github.com/AudioKit/AudioKit/blob/9ae8641551bc5f7b4c9b4c887aa327155fac83b5/AudioKit/Common/Internals/Audio%20File/AKAudioFile.swift#L294

参考:

http://www.sengpielaudio.com/calculator-db.htm

https://en.wikipedia.org/wiki/Field,_power,_and_root-power_quantities

谢谢!

1 个答案:

答案 0 :(得分:2)

这是电气工程专业学生在以对数尺度了解功率增益和电压/电流增益时常见的误解,我很惊讶你在这里遇到过它。

在我的领域中,对数比例图最常用于表示系统在给定频率范围内的功率增益。在这种情况下,10分贝的功率上升对应于功率增加10倍。然而,对于电压和电流来说,情况并非如此;如果信号的电压或电流增加10倍,那么信号的功率增加为10倍,则为sqrt(10)〜= 3.16。这是因为功率与电压和电流的平方成比例增加。

因此,当我们用一个等式的对数来记录信号的频率时,我们会发现这样的事情; (对于电阻器)

log(P(ω)) = log(V(ω)^2 / R) = 2log(V(ω)) - log(R)

将两边乘以10可将Bels转换为分贝;

10log(P(ω)) = 20log(V(ω)) - 10log(R)

声波的振幅和功率之间的关系类似于电信号AFAIK的振幅和功率之间的关系。这就是为什么幅度增加20 dB对应幅度增加10倍,功率增加10 dB相当于功率增加10倍。

P.S。要回答您的问题,您需要确定水平是功率单位还是幅度单位。你对这个功能使用的单位比我更了解,因为我对音频文件的体验非常有限,但我的直觉是音频文件是幅度的表示,在这种情况下你会是正确的;转换因子需要为20,而不是10。