我们平时经常会说到声音是多少分贝,那么这个分贝是什么概念呢?如何计算音频文件的分贝呢?
先看百度百科介绍:分贝(decibel )是一个计量单位, 量度两个相同单位之数量比例的计量单位, 主要用于度量声音强度,常用dB表示。
在工程应用中,通常有很多的定义方式,但是主要分为以下两类:
定义:两个同类功率量或可与功率类比的量之比值的常用对数乘以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
定义:两个同类功率量或可与功率类比的量之比值的常用对数乘以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
我们通常说话都会说大概是多少多少分贝的,比如经常会说,安静的轻声絮语为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
所以,如果我们知道说话声音对应的声压,然后基于以上公式就可以计算出它对应的声压级,也就是平常我们常说的这个声音对应的分贝数了。
在网上找到这样一个公式:
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振幅也可以计算出来。
Audition的计算结果如下:
关于具体计算的代码已经上传,如果有需要验证的话,可以直接下载即可。download配套代码
你们是怎么计算声音的分贝的呢?欢迎在评论区留言