音量基本概念
声学中的分贝
因为人耳的特性,我们对声音的大小感知呈对数关系。所以我们通常用分贝描述声音大小,分贝(decibel)是量度两个相同单位之数量比例的单位,主要用于度量声音强度,常用 dB 表示。声学中,声音的强度定义为声压。计算分贝值时采用 20 微帕斯卡为参考值(通常被认为是人类的最少听觉响应值,大约是 3 米以外飞行的蚊子声音)。这一参考值是人类对声音能够感知的 阈值 下限。声压是场量,因此使用声压计算分贝时使用下述版本的公式:
\[
L_p = 20log_{10}(\frac{p_{rms}}{p_{ref}})dB
\]
其中的 pref 是标准参考声压值 20 微帕。
分贝声音变化范围
在编程中,我们可以用以下公式计算两个声音之间的动态范围,单位为分贝:
\[
dB = 20 * log(A1 / A2)
\]
其中 A1 和 A2 是两个声音的振幅,在程序中表示每个声音样本的大小。声音采样大小(也就是量化深度)为 1bit 时,动态范围为 0,因为只可能有一个振幅。采样大小为 8bit 也就是一个字节时,最大振幅是最小振幅的 256 倍。因此,动态范围是 48 分贝,计算公式如下:
\[
dB = 20 * log(256)
\]
48 分贝的动态范围大约是一个安静房间和一台运行着电动割草机之间的区别。如果将声音采样大小增加一倍到 16bit,产生的动态范围则为 96 分贝,计算公式如下:
\[
dB = 20 * log(65536)
\]
这非常接近听力最低阈值和产生痛感之间的区别,这个范围被认为非常适合还原音乐。
音量滑块与声音增幅大小线性变化