为什么16bit 可以表示96分贝

今天看 《编码》 时看到这么一句

如果每次采样大小为16bit, 这样就能表示96分贝的动态范围。

于是愣是没看懂为什么 16bit 只能表示96分贝?

于是网上搜了下,找到了下面的解释以及公式

$$ 20 * log(2^{16}) = 96 $$

人对声音强弱的感觉并不是与声强成正比,而是与其对数成正比的。这正是人们使用声强级来表示声强的原因。分贝既是声强级单位。

进而发现了这篇文章, 我把原文转过来格式化一下。。

我们用电脑做音乐的时候,经常会接触到各种各样的表,无论是测量什么的表,它们都离不开一个单位——分贝(dB),我的问题就和它有关,听好了:

  1. 20dB和60dB究竟差多少?(不要回答我60-20=40(dB),我抽你呀!你告诉我40dB究竟是多响,难道用手指在峰值表上测量距离吗?)
  2. 72dB和66dB的声音合在一起有多响?(停!看你的口型我就知道——138dB,对不对?拜托~这可相当于一架喷气式战斗机从你身边一米处远的距离飞过啊!Are you nuts?而我说的两个数值相当于一个鼓手和一个吉他手在一起演奏而已,你认为一个乐队演出就像空军基地里飞战斗机那么吵么?)
  3. 经常听人说一些设备的各种指标,-10dBV和+4dBu,这个很熟悉吧?他们说,+4dBu的设备属于“专业级”,-10dBV属于“民用级”,你知道这是为什么吗?
  4. 为什么有些文章说数字设备不会超过0dB,而模拟设备就可以超过呢?
  5. 16bit数字音频的动态范围是多少?24bit呢?如果让你说出21bit的,你能说出来吗?
  6. 100瓦的吉他音箱能比50瓦的吉他音箱响多少?
  7. 以上的问题如果你觉得对你来说是小事一桩,那你可以不用看这篇文章了,你是真正的高人!如果你使劲抠头皮……拜托,抠头皮解决不了问题的,你至少需要一个科学计算器呢!怎样,还觉得简单吗?

我知道,大家都能用电脑做出歌来,但这要归功于先进的技术和傻瓜式的操作,如果把你放在上个世纪30年代,你觉得就凭你懂的这些可以做今天做的事情吗?我见过有很多“高手”就是这样,他们或许根本就不知道分贝究竟是怎么一回事情!

当然,有人也持反对态度,认为重要的是结果,而不是过程。道理不懂没关系,能做出来就可以了。我想说的是,那些真正的录音工程师们是绝对不会这样想的,因为他们真正懂得录音的艺术——不仅仅是扳动一堆按钮就完事了——你要想创造出前所未有的声音,你就必须了解所有的奥秘。所以我说,那些仅仅满足于模仿,甚至连模仿都不伦不类的“高手”其实是没有什么了不起的。

我很高兴你能坚持看到这里,这说明你绝对不是一个能够轻易满足的家伙,你的脑袋充满了无穷的求知欲望。也许你会把你能找到的所有器材的说明书和帮助文档都看一遍,你也经常会看到诸如:dBSPL、dBu、dBV、dBm、dBVU、dBFS等等和分贝有关的名词。但遗憾的是,几乎没有这方面的详细说明,搞得你经常一头雾水:它们是谁?它们究竟是什么关系?不要责怪那些厂商不在说明书里对这些家伙们做出解释,因为他们只想让你当我刚才说的那种“高手”,这样你才会一代接一代的购买他们的产品/软件,如果你慢慢的都懂了,也许你就不用了。^^

当然,这些的确不是很容易就明白的,因为他们牵扯到数学、物理等相关的专业知识。(我也就这么一说,其实没那么夸张,只要你高中会考能及格,你就能看得懂)下面就让我们来看看分贝究竟是个什么东西?

Quote: "Decibel: A unit used to express relative difference in power or intensity, usually between two acoustic or electric signals, equal to ten times the common logarithm of the ratio of the two levels.

分贝:通常表示两个声音信号或电力信号在功率或强度方面的相对差别的单位,相当于两个水平的比率的常用对数的十倍。"

这是我在一本专业词典上找到的关于分贝的科学的概括的定义。分贝就是这么回事!“可是……等等!‘相对差别……两个水平的比率……常用对数……’这……这都是什么跟什么啊?我看不懂!”呵呵,别急嘛,我当然不会让你看了半天就得到这么一个结论,请你听我慢慢说。

Logarithmic Scales – the Kind You Can’t Play on a Piano

首先我们根据上面的定义,找出主语、谓语和宾语,把其他的部分先省略掉,我们可以得到“分贝是一种单位”,这个结论很明确吧?我们的常识告诉我们,单位都是用来度量的,用某一种仪器或是一个算式,我们可以得到这个单位的具体数值。那么分贝用什么测量呢?

实践告诉我们峰值表等等可以测量它,只是我们不清楚测量的数据对我们来说具有什么样的意义,哪怕是一个抽象的意义也可以啊!所以这个问题我们需要数学来帮助我们。科学家们选择了用对数。 为什么要用对数?因为他们懒……我没有开玩笑哦!当你深入到分贝的奥秘当中去,你会发现你需要对付一大堆令人头疼的数字,科学家们——有点像器乐演奏家——的特点就是用尽一切可能的办法让问题变得简单点。我们来看看分贝究竟怎样复杂和怎样简单(拜托,已经看到这里了,再给点耐心和支持吧,马上就到正题了):

声音的响度是指在单位时间内通过指定大小的面积内的能量的总和(这个你知道吧?不过不知道也没关系,嘿嘿):

$$ 响度 = 能量 / (时间*面积)$$

我们知道能量和时间的比就是功率(这个总该知道了吧?还不知道?我*……真的都还给亲爱的老师了),so:

$$ 响度 = 功率 / 面积 $$

功率的单位是瓦特咯,面积我们用平方米,那么响度的单位就是:

$$ 瓦 / 米^2 $$

现在我们假设你知道普通人能听见的最小的声音响度是 $$.000000000001 瓦 / 米^2 $$,而让人开始感到痛苦的声音响度是$$ 1 瓦 / 米^2 $$,那么在这两个数字之间,我们会得到一大堆值,比如 $$.000792710162 瓦 / 米^2$$ ,还有$$ .000006288415 瓦 / 米^2$$ 等等,试试迅速比较这两个数字,算出它们的差!

怎么样,开始头晕了吧?你能想象我们的峰值表用这种单位做表示吗?天啊…… 我们可爱的科学家们可不会做这种愚蠢的事情,于是他们写下了这样的公式:

$$ log (.000792710162) = -3.1 $$
$$ log (.000006288415) = -5.2 $$

这个差好算多了吧?是2.1嘛……啊?你说什么?这个2.1是什么?就是音量的差啊,聪明的你可能一下子想起来它叫什么了——对,就是贝尔!

不过呢,这还不是分贝,因为贝尔之后的科学家继承了他的传统,并且又将之发扬光大(什么传统?懒呗!)……这一次,他们连小数点都不想看见,所以他们又乘了10,变成了这样:

$$ 10 log (.000792710162) = -31$$
$$ 10
log (.000006288415) = -52$$

答案从2.1变成了21,这个”21”就是我们今天的主角——分贝。

怎么样,科学家们聪明吧?同学们,大家要学习他们胡乱使用各类公式的好办法……呃呃,我的意思是:勇于探索!他们也真够懒的,是不是?还有更懒的呢!对数有一个特性,它可以把减法变成除法,所以,我们可以再简单一点:

$$ 10 log (x) - 10 log (y) = 10 * log (x / y) $$

这样,对于刚才的问题,我们就不用分开来算了,用一条公式就可以解决问题:

$$ 10 * log (.000792710162 / .000006288415) = 21 dB $$

这就是为什么要用对数的原因,有了这个简便的方法,我们终于可以对分贝进行更深入的研究了。

The Decibel Difference – Nothing Else Compares!

还有一个小问题,如果我们得到的测量数据不全是以声音响度为单位的,那该怎么办?如果两个数据的单位不一样,我们得到的公式不就毁了吗?

想想看,我们通常用什么方法来让不同单位的数值进行计算,并且得到同样单位的结果的?其实我们只需要找一个固定的常数带入这个公式就可以解决这问题了,我们把这个常数叫做“参照数”。用什么来作参照数呢?刚才我们好像提到过普通人能听见的最小的声音响度是 $$.000000000001 瓦 / 米^2$$,我们就用这个吧!(别的数也一样,我们只是为了统一单位)

我们用字母”N”来表示这个常数,所以:

$$ 10 log_{10} (x / N) - 10 log_{10} (y / N)$$

$$ = 10 * log_{10} [(x / N) / ( y / N)] $$

$$ = 10 * log_{10} (x / y) $$

$$ = difference \phantom{2} in \phantom{2} dB $$

保险起见我们来检查一下这个公式有没有问题,还是用刚才的那个例子:

$$ 10 * log_{10} ( .000792710162 / 0.000000000001) = 89 dB $$

$$ 10 * log_{10} ( .000006288415 / 0.000000000001) = 68 dB $$

$$ 89 dB - 68 dB = 21 dB $$

OK,大功告成!这个方法可以让我们比较不同单位的数值。(这个例子的两个数据单位是相同的,所以看起来“参照数”没什么作用)

Do You Have the “Power” to Take the “Pressure?”

经常使用的测量单位有声音的功率(瓦特),声音的响度($$瓦 / 米^2$$),声音的压强是(帕斯卡)——嘿!你可要注意我接下来说的话了,这是最容易让人对分贝产生混淆的地方。 以功率或响度为单位测量的数据,我们用上面的公式都可以很好的计算。然而,通常情况下,当人们说到“分贝”的时候,却指的是压强。毕竟是声波的压力压迫我们的耳鼓膜来让我们分辨出声音究竟有多“响”的。所以,我们通常所谈到的分贝应该是dBSPL(Sound Pressure Levels)。

压强是作用于单位面积的力,力的单位是牛顿(看见你猛力的点头,我真得很无奈……),所以压强的单位是 $$ 牛 / 米^2$$ 。另一种常用的单位是帕斯卡,1 帕等于 $$ 1 牛 / 米^2 $$。 声响(I)和声压(P)之间的关系我们可以用下面的公式来表示:

$$ I = P^ / ρ $$

ρ是希腊字母,读作:“肉”,它代表空气的阻力,是一个常量。这个值取决于大气压强、空气温度等等因素。通常情况下,在室温中,空气阻力的值大约是400。因此,普通人能听见的最小的声音响度换算成声压就是:

$$ .000000000001 W/m2 = (.00002 Pa)^2 / 400 $$

不过呢,刚才的公式里P的后面还有一个平方,也就是说声压翻两倍,声响就翻了四倍;声压翻四倍,声响就翻了十六倍……这样的话,我们把声压作为测量单位的时候,之前得到的公式不就出现问题了吗?

不妨,我们来稍微计算一下:

$$ dB = 10 * log_{10} (x / y) $$ — 此时的X,Y是用声响作测量单位的,我们将 $$P^2 / ρ$$ 带入公式,则:  

$$ dBspl = 10 * log_{10} [ (P_x^2 / ρ) / (P_y^2 / ρ) ] $$

$$ = 10 * log_{10} (Px^2 / Py^2)$$

$$ = 10 * log_{10} (Px / Py)^2$$

$$ = 20 * log_{10} (Px / Py)$$

就这样,问题解决了,和前面的公式不同之处,就是乘了20。

这就是dBSPL的公式,当我们谈论“分贝”的时候,99%说的都是它;我们在各种测量表上看见的dB,其实就是dBSPL,只不过没人说这个的时候总是带上SPL三个字母。(有的可能是怕麻烦,但多数恐怕是不知道,嘿嘿……不过你现在知道了)

那么当我们使用声压作为测量单位的时候,我们选用的“参照数”就是.00002帕斯卡了,接近于我们所说的普通人能听见的最小的声音响度,带入刚才得到的公式,我们来看看:

$$ dBSPL = 20 * (P / .00002 Pa) $$

因为 $$log_{10}1 = 0$$,所以:

$$20 * log (.00002 Pa / .00002 Pa) = 0 dB SPL$$

请注意,你应该注意到了,如果我们取一个和参照数相同的值,那么我们总会得到“0dB”,无论是什么类型——dBm, dBu, dBV, dBFS…都是如此!

还有,你可能会有疑问,.00002帕不是几乎听不到么?怎么是0dB呢?对呀!0不就是等于没有么?哦,我明白你的意思了,你在计算机里经常看见0dB代表的是峰值表的最高值吧?嗬嗬,那是因为数字电路和我们现在所说的情况是有区别的,别着急,我等一下会讲到。

我们能忍受的最强的声压大约是20帕,你试试用分贝表示一下看看?应该如下:

$$20 * log_{10} (20 Pa / .00002 Pa) = 120 dB$$

怎样,还记得物理课说过的吧?超过120分贝的声音,我们就无法忍受了,这个值就是这么算的。

The Secret’s in the Recipe… uh, I mean, Reference

讲到这里,我们应该复习一下,我相信一大堆的公式和计算已经让你头昏昏了吧?没办法,为了说清楚,我只能这样做,然而你只需要看明白就可以了,你需要记住的也就是下面这两个:

$$ dB = 10 * log_{10} (x / y) $$ —- 以声响作度量单位时计算分贝的公式,单位应该是 $$ W / m^2 $$

$$ dB = 20 * log_{10} (x / y) $$ —- 以声压作度量单位时计算分贝的公式,单位应该是 Pa

太棒了,到此为止,你已经知道分贝到底是个什么东西了,然而我们今天的这一课却还没有结束,因为我们还不知道dBu, dBv, dbV, dBm, dbVU, dBFS这些东东的意思。不过有了以上的基础,你明白这些小东西只是时间的问题,

让我们先从原理开始: 我们已经明白了分贝的含义,应当特别注意的是:分贝表示的是两个相同类型的数据之间的比(类型要相同,这一点很重要,你不能拿瓦特和伏特直接进行比较)。在这两个数据里,其中的一个我们把它叫做“参照数”,我们即是通过把测量到的数值和参照数代入公式进行计算来得到相应的分贝值的。比如之前我们已经使用过声压作为测量单位,那是我们选取的参照数是.00002帕斯卡。我们最后得到的分贝值,我们称之为”dBSPL”。

也就是说,dB后面不同的字母指示的就是我们用什么作为测量单位来得到这个分贝值的。用声压,那么就是SPL(Sound Pressure Levels)。这样解释应该非常明确吧?如果你看懂了,那么我就来一个一个地解释其他和dB有关的单位。

dBm 和 dBVU

我们已经讨论过用功率测量得到分贝值的方法,那时我们说的是声音的功率,单位是瓦特。不过我们知道,除了声音之外,还有很多现象可以产生功率的,比如说电。

很久以前,在发光二极管和液晶显示屏尚未诞生的“古代”,工程师们依赖一种叫做VU表的设备来完成他们的工作。VU表看起来就像一个驾驶室里的速度表,用一个指针以顺时针方向指示通过此题的电流增量。VU是”Volume Unit”的简写,意即:音量计量单位。

VU表的问题是每一个VU表都不一样!直到上世纪30年代末,一群工程师们坐在一起决定统一一下VU表的计量规范,这个问题才得以解决。他们确定的标准是:当电流的功率为1毫瓦(1 mW),VU表指示0dB。换句话说:0dBm = 0dBVU

dB后面的m就代表毫瓦。dBm也是以功率为单位测量的,参照数是1mW。

$$ dBm = 10 * log_{10} (功率 / 1mW) $$

这样,我们就可以很容易得用dBm来表示电流功率的变化了。还记得么?当测量值和参照物相等的时候,dB值总是为0吗?

所以:

$$ 10 log_{10} (1mW / 1mW) = 10 log_{10} (1) = 0 dBm $$

当VU表的指针指向+3dBm的时候,功率增加了一倍,怎么算的?这样:

$$ 10 log_{10} (2mW / 1mW) = 10 log_{10} (2) = 3 dBm $$

—- 我说过了,至少你要准备一个科学计算器,对数是不好心算的。 那要是指向-6dBm呢?

$$10 log_{10} (.25mW / 1mW) = 10 log_{10} (.25) = -6 dBm $$

dBu(也叫做dBv)

再回忆一下高中物理吧。功率(P)还可以用电压(V)和电阻(R)之间的关系来表示:

$$ P = V^2 / R$$ —- 电阻的单位是欧姆(Ω)

刚才讨论dBm的时候,参照数是1mW。这个标准是在上个世纪三十年代设立的。在那个时候,所有音频设备的输入阻抗都是600欧姆,磁带录音机,调音台,前置功率放大器……只要有插头,那么从火线到接地之间的电阻就是600欧姆。

那么,当电阻为600欧姆的时候,需要多大的电压才能产生1mW的功率呢?用刚才的公式计算一下:

$$ P = V^2 / R $$

$$ .001 W = V^2 / 600 Ω$$

$$ V^2 = .001 W * 600 Ω $$

$$ V = \sqrt{ .001 W * 600 Ω } $$

$$ V = .775 V $$

答案是0.775伏特。那么,当所有的设备的输入阻抗还是600欧姆的那个年代,计算dBu时所用到的参照数就是.775 V,也就是说,dBu就是以电压为测量单位是计算出的分贝值。

不过我们又注意到,刚才的公式里电压是平方数的哦。根据前面的经验,我们知道怎么处理这个问题:

$$ dBu = 20 * log_{10} (被测电压 / .775 V) $$

如果你很仔细的话,大概你会觉得奇怪:为什么是dBu而不是dBv呢?其实呀,很早以前人们是直接用dBv来表示的,只不过后来人们发现dBv和dBV太容易让人混淆了,于是就用小写字母”u”来代替小写字母”v”了。如果你还能看到dbv,那么它的意思就是我们今天讲到的dBu——除非写dBv的人搞不清楚他到底想说什么! 那么,和dBv混淆的dBV又是怎么回事呢?

dBV

很长一段时间以来,人们所用到的音频设备都是输入阻抗为600欧姆的,到了今天我们才会遇见一些更高阻抗的设备,比如说10000Ω。电阻越高,电路耗费的功率就越低。(根据上面的公式,我们知道功率和电阻成反比)

还记得dBu使用的参照数是.775V吧?很多工程师认为这个数字实在是太麻烦了,但因为那时候所有的设备都是固定的输入阻抗,因此使用.775V作为参照数也就顺理成章了。设备不改进,这个参照数也就不能变,但是为了使用方便,一个新的参照数还是很快发展了出来——顺带产生了新的分贝单位dBV。这个参照数是1V:

$$dBV = 20 * log (被测电压 / 1V) $$

其实dBV和dBu非常相似,只是参照数不同罢了。

A side trip – “Professional” vs. “Consumer” Levels

现在顺便说说所谓“专业级”和“用户级”设备之间的差别。

你可能早就知道了,专业级设备是+4dBu而用户级设备是-10dBV,当然这其实是很荒谬的,哈哈。我们刚才已经看到了dBu和dBV都是通过比较电压来计算分贝值的,除了参照数不同,它们没有任何区别。所谓专业级,是指这些设备的使用者多是一些“大叔”(因为标准早嘛,使用的人当然大多数“资格”也都比较老)。事实上,仅凭这两个参数就断定设备的“级别”未免太过武断了,在任何场合这两种规格的设备都可以很好地完成工作要求。我觉得吧,在这方面我们应当多多发挥人的主观能动性。设备之间的硬性差别我们心中有数就可以了,但如何使用我们掌握的知识让你手中的设备发挥最大的潜能才是我们应该追求的境界。设备不好是个钱的问题,有了好设备做不好音乐那就是人的问题了,钱的问题可以解决,人的问题不好解决呀!在我们海峡对面有个小岛,上面的人虽然不多,但是搞音乐的却不少,我们承认他们的音乐发展得不错,但并不代表他们搞音乐的人水平就都很高,在他们那里有个鸟论坛,上面就有些鸟人大言不惭的就“专业”和“用户”设备的差别大放狗——那个什么气!让我这个海峡另外一边的菜鸟(顺便说一句,那里有很多人都认为海峡这边的人比他们差的远了)都有些看不下去了……本是同根生啊~但谁让现在是这么个形势呢?为了让海峡这边的同志不要也像他们一样看起来“专业”,其实很“操蛋”,所以我才写下这一段话——应该说,促成我写这篇文章,有很大的原因也是为了这个! 好了好了.

话题扯远了,我们来看看+4dBu和-10dBV到底有什么区别吧:

$$ + 4 dBu = 20 * log (被测电压 / .775 V) $$

$$被测电压 = 1.228 V $$

$$- 10 dBV = 20 * log (被测电压 / 1 V) $$

$$被测电压 = 0.3162 V $$

$$20 * log (1.228 V / 0.3162 V) = 11.79 dB $$

如果你有这两种设备,你可以做一个检测:连接-10dBV的输出到+4dBu的输入,然后读一下+4dBU的VU表,是不是11.79dBVU?

dBFS

最后我们来看看和我们联系最密切的dBFS。dBFS的全称是”Decibels Full Scale”(全分贝刻度)——是一种为数字音频设备创立的分贝值表示方法。

这个家伙和其他几个弟兄不太一样了,它的参照数不是最小的一个,也不是中间的某一个,而是最大的一个!也就是说”0 dBFS”是数字设备能够到达的最高响度水平。此外所有的值都会小于这个数值——都是负数。这就是为什么我们在电脑上看到的峰值表的最高刻度都是”0”,并且指针永远不会读出更高的数字。

但是,为什么会这样呢?要解释这个问题,我们要简单说一下数字音频的存储原理。我们用16bit的数字音频为例:”16bit”的意思是,采样信号以16位二进制数字来存储。二进制数字就两个:”0”和”1”。所以,最大的值就是1111 1111 1111 1111(二进制,换算成十进制是65536),因此,计算dBFS的公式就是:

$$ dBFS = 20 * log (采样信号 / 1111 1111 1111 1111) $$

这样就很容易解释为什么不能超过”0”了,因为dBFS的参照数是最大值,所以:

$$ 20 * log (1111 1111 1111 1111 / 1111 1111 1111 1111) = 0 dBFS $$

那么最小的呢?除了0之外,16位二进制最小的数字是:0000 0000 0000 0001,那么:

$$ 20 * log (0000 0000 0000 0001 / 1111 1111 1111 1111) = -96 dBFS $$

知道为什么你看见的峰值表都是从0 dB到-96 dB了吧?接下来,你可以自己算出24bit,32bit数字音频的动态范围了,我告诉你一个,24bit数字音频的动态范围是144dB。还是你自己试试吧?(别忘了要先把二进制转换成十进制,我可不会用二进制算对数!^^)

最后有一张好用的分贝小抄

db designation compares reference level formula
dBsp1 sound pressure .00002 Pa 20 * log(sp1/ .00002)
dBm electrical power 1mW 10 * log(power/ 1mW)
dBu voltage .775V 20 * log(voltage/.775)
dBV voltage 1V 20 * log(voltage/1)
dBFS sample level 65536* 20 log(sample level/65536)

part2 分贝的比较和总结

TODO http://faculty.mccneb.edu/ccarlson/VACA1010/VACA1010_CD/dB%20part%202.pdf

reference

原文

http://www.blogbus.com/nightire-logs/6711355.html

原文翻译的原文 part1

http://faculty.mccneb.edu/ccarlson/VACA1010/VACA1010_CD/dB%20part%201.pdf

原文未翻译的原文 part2

http://faculty.mccneb.edu/ccarlson/VACA1010/VACA1010_CD/dB%20part%202.pdf

https://www.douban.com/note/202908987/

http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference

avatar

lelouchcr's blog