https://blog.csdn.net/cabbage2008/article/details/52043646
https://www.jianshu.com/p/d3745dd23056
很多场合我们需要动态显示实时声音分贝,下面列举三种计算分贝的算法。(以双声道为例,也就是一个short类型,最大能量值为32767)
1:计算分贝 音频数据与大小首先我们分别累加每个采样点的数值,除以采样个数,得到声音平均能量值。
然后再将其做100与32767之间的等比量化。得到1-100的量化值。
通常情况下,人声分布在较低的能量范围,这样就会使量化后的数据大致分布在1-20的较小区间,不能够很敏感的感知变化。
所以我们将其做了5倍的放大,当然计算后大于100的值,我们将其赋值100.
3:获取音频数据最大的振幅(即绝对值最大)(0-32767),除以1000,得到(0-32)。从数组中获取相应索引所对应的分贝值。(提取自webrtc)
作者:今忆Zoe
链接:https://www.jianshu.com/p/d3745dd23056
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
db的定义首先,DB(Decibel,分贝)1是一个表征相对值的大小的单位,即两种电或声功率之比或两种电压或电流值或类似声量之比。它还是一种测量声音相对响度的单位。
(1)表示两种电或声功率之比的一种单位,它等于功率比的常用对数的10倍。dB = 10lgX,常用于按功率来计算的带宽;-3db是指功率变为原来的1/2,10lg0.5= -3,-3dB在10进制中等同于0.5;下降3dB也就是功率下降一半,-3dB点指的是半功率点。此参数多用于二维图形解析。
(2)表示两种电压或电流值或类似声量(如声压或质点速度)之比的一种单位,等于电压或电流比的常用对数的20倍,如果两种电压或电流是在相同电阻上测得的话。dB = 20lgX,常用于电压/电流增益;-3db是指幅度变为原来的(根号2)/2,就是0.707倍,20lg((根号2)/2)= -3。 db的意义其实再简单不过了,就是把一个很大(后面跟一长串0的)或者很小(前面有一长串0的)的数比较简短地表示出来[2]。dB的引入是为了将乘除关系变为加减关系,更便于工程运算。如:
X = 1000000000000000= 10lgX = 150 dB
X = 0.000000000000001 = 10lgX = -150 dB
[例1] 甲功率比乙功率大一倍,那么10lg(甲功率/乙功率)=10lg2=3dB。也就是说,甲的功率比乙的功率大3 dB。
[例2] 7/8英寸GSM900馈线的100米传输损耗约为3.9dB。
[例3] 如果甲的功率为46dBm,乙的功率为40dBm,则可以说,甲比乙大6 dB。
[例4] 如果甲天线为12dBd,乙天线为14dBd,可以说甲比乙小2 dB。 lg的计算lg就是以10为底的log。
(1)10lg2 = lg2^10 = lg1024,又因为lg1000 = 3,所以10lg2≠3,但非常接近[3]。
(2)lg4=lg(2×2)=lg2+lg2=2lg2≈0.6
(3)lg4=lg(2^2) =2lg2≈0.6
(4)10lg0.5=10 lg(2^(-1))=-10lg2≈-3 分贝毫瓦dBmdBm[4]全写为 decibel relative to one milliwatt , 为功率的绝对值,而不同于dB只是一个相对值。
任意功率P(mW)与x(dBm)换算的公式如下:
例如,1毫瓦(1 mW)换算成分贝毫瓦为0dBm;1瓦(1 Watt)换算成分贝毫瓦则为30dBm。
|