前言
我们平时经常会说到声音是多少分贝,那么这个分贝是什么概念呢?如何计算音频文件的分贝呢?
1. 什么是分贝?
先看百度百科介绍:分贝(decibel )是一个计量单位, 量度两个相同单位之数量比例的计量单位, 主要用于度量声音强度,常用dB表示。
在工程应用中,通常有很多的定义方式,但是主要分为以下两类:
1.1 功率类
定义:两个同类功率量或可与功率类比的量之比值的常用对数乘以10等于1时的级差
公式:
N
d
B
=
10
lg
p
i
p
0
N
d
B
−
表
示
信
号
p
i
对
信
号
p
0
的
分
贝
值
p
i
、
p
0
−
对
应
为
功
率
量
的
单
位
,
如
电
流
平
方
、
电
压
平
方
、
质
点
速
度
平
方
、
声
压
平
方
N_{dB}=10\lg\frac{pi}{p0}\\ N_{dB}-表示信号{pi}对信号{p0}的分贝值\\ {pi}、{p0}-对应为功率量的单位,如电流平方、电压平方、质点速度平方、声压平方
NdB=10lgp0piNdB−表示信号pi对信号p0的分贝值pi、p0−对应为功率量的单位,如电流平方、电压平方、质点速度平方、声压平方
举个例子:
假
设
A
的
电
功
率
为
20
瓦
,
B
的
电
功
率
为
10
瓦
p
A
=
20
w
p
B
=
10
w
N
d
B
=
10
lg
p
A
p
B
=
10
lg
2
=
3
d
B
也
就
是
说
,
A
的
电
功
率
比
B
的
电
功
率
大
3
d
B
假设A的电功率为20瓦,B的电功率为10瓦\\ {p_A}=20w\\ {p_B}=10w\\ N_{dB}=10\lg\frac{p_A}{p_B}=10\lg2=3dB\\ 也就是说,A的电功率比B的电功率大3dB
假设A的电功率为20瓦,B的电功率为10瓦pA=20wpB=10wNdB=10lgpBpA=10lg2=3dB也就是说,A的电功率比B的电功率大3dB
1.2 电压类
定义:两个同类功率量或可与功率类比的量之比值的常用对数乘以10等于1时的级差
公式:
N
d
B
=
20
lg
p
i
p
0
N
d
B
−
表
示
信
号
p
i
对
信
号
p
0
的
分
贝
值
p
i
、
p
0
−
对
应
为
电
压
类
的
单
位
,
如
电
流
、
电
压
、
质
点
速
度
、
声
压
N_{dB}=20\lg\frac{pi}{p0}\\ N_{dB}-表示信号{pi}对信号{p0}的分贝值\\ {pi}、{p0}-对应为电压类的单位,如电流、电压、质点速度、声压
NdB=20lgp0piNdB−表示信号pi对信号p0的分贝值pi、p0−对应为电压类的单位,如电流、电压、质点速度、声压
举个例子:
假
设
A
的
电
压
为
20
伏
特
,
B
的
电
压
为
10
伏
特
p
A
=
20
V
p
B
=
10
V
N
d
B
=
10
lg
p
A
p
B
=
10
lg
2
=
3
d
B
也
就
是
说
,
A
的
电
压
比
B
的
电
压
大
3
d
B
假设A的电压为20伏特,B的电压为10伏特\\ {p_A}=20V\\ {p_B}=10V\\ N_{dB}=10\lg\frac{p_A}{p_B}=10\lg2=3dB\\ 也就是说,A的电压比B的电压大3dB
假设A的电压为20伏特,B的电压为10伏特pA=20VpB=10VNdB=10lgpBpA=10lg2=3dB也就是说,A的电压比B的电压大3dB
2. 什么是声音的分贝?
我们通常说话都会说大概是多少多少分贝的,比如经常会说,安静的轻声絮语为20-40dB左右,正常室内说话为40-60dB左右,那么声音的分贝是如何度量的呢?
这里就要提到一个概念,叫做声压级
声压定义为声波在某一点产生的逾量瞬时压强的均方根值
公式:
S
P
L
=
20
lg
p
e
p
r
e
f
S
P
−
声
压
级
p
e
−
待
测
声
压
有
效
值
p
r
e
f
−
参
考
声
压
的
有
效
值
在
空
气
中
,
参
考
声
压
的
有
效
值
为
2
×
1
0
−
5
P
a
SPL=20\lg\frac{p_e}{p_{ref}}\\ SP-声压级\\ {p_e}-待测声压有效值\\ {p_{ref}}-参考声压的有效值\\ 在空气中,参考声压的有效值为2\times10^{-5} Pa
SPL=20lgprefpeSP−声压级pe−待测声压有效值pref−参考声压的有效值在空气中,参考声压的有效值为2×10−5Pa
所以,如果我们知道说话声音对应的声压,然后基于以上公式就可以计算出它对应的声压级,也就是平常我们常说的这个声音对应的分贝数了。
3. 如何计算音频文件的分贝数或者声压级
在网上找到这样一个公式:
L
p
=
20
lg
p
r
m
s
p
r
e
f
p
r
m
s
−
声
音
采
样
点
振
幅
R
M
S
数
值
p
r
e
f
−
声
音
振
幅
最
大
值
Lp=20\lg\frac{p_{rms}}{p_{ref}}\\ {p_{rms}}-声音采样点振幅RMS数值\\ {p_{ref}}-声音振幅最大值\\
Lp=20lgprefprmsprms−声音采样点振幅RMS数值pref−声音振幅最大值
举个例子来说明以下,如果我们的声音是16bits有符号数,那么每个采样点的数值大小应该在-32768-32767之间,也就是说振幅数值为65535,这个时候最大振幅对应的分贝是:20lg65535=96.32dB,也就是说,这个格式的动态范围为96dB。
考虑到我们平时的声音范围,所以16bits的位数基本上能够记录大部分音频的声音,实体唱片的CD格式也都是采用16bit的采样精度的。
从Audition的这个振幅统计,可知,振幅最大约为24117,如果带入上面公式计算的是20lg24117=87.68dB才对,但是它显示的确是-2.66dB,难道是公式错了吗?
音频在经过采样、量化后以数字信号的形式展现出来,那么根据采样值的大小就可以计算出实际的分贝数。
所以按照这个理论去分析,上图中显示的这段音频的分贝数或者声压级(振幅最大值)应该是87.68dB左右的。
那-2.66dB是什么意思呢?
按
照
这
个
音
频
文
件
,
暂
时
不
考
虑
r
m
s
,
单
独
考
虑
峰
值
点
的
情
况
那
么
p
r
m
s
=
24117
,
p
r
e
f
=
1
则
L
p
=
20
lg
p
r
m
s
p
r
e
f
=
87.68
d
B
如
果
将
p
r
e
f
=
2
16
=
32768
则
L
p
=
20
lg
p
r
m
s
p
r
e
f
=
−
2.66
d
B
按照这个音频文件,暂时不考虑rms,单独考虑峰值点的情况\\ 那么{p_{rms}}=24117,{p_{ref}}=1\\ 则Lp=20\lg\frac{p_{rms}}{p_{ref}}=87.68dB\\ 如果将{p_{ref}}=2^{16}=32768\\ 则Lp=20\lg\frac{p_{rms}}{p_{ref}}=-2.66dB
按照这个音频文件,暂时不考虑rms,单独考虑峰值点的情况那么prms=24117,pref=1则Lp=20lgprefprms=87.68dB如果将pref=216=32768则Lp=20lgprefprms=−2.66dB
所以也就是说,当采用16bits的量化精度时,最大振幅需要设置为32768,同样的道理,当你采用32bits时,最大振幅需要设置为65536。
同样的道理,RMS振幅也可以计算出来。
4. Demo验证
写了一个小的demo,并计算了它的RMS值,计算结果如下:
Audition的计算结果如下:
关于具体计算的代码已经上传,如果有需要验证的话,可以直接下载即可。download配套代码
你们是怎么计算声音的分贝的呢?欢迎在评论区留言