响度感知与声压不成线性关系,音量控件的感知步长应按响度而非声压划分
别名: 响度非线性 · Stevens幂律 · sone scale
概念解释
物理上的声压级每升高固定的量(比如每加 10 分贝),人主观感受到的响度(loudness)并不会跟着等比例增大——分贝本身已经是声压的对数刻度,而响度相对分贝还要再叠加一层压缩关系。这意味着"声压级"和"响度"是两套不同的量:前者是物理测量值,后者是主观知觉量,两者之间是非线性映射,不能互相替代。
这条容易被简化成"分贝是对数刻度所以已经匹配人耳",其实分贝的对数变换只解决了声压跨越巨大物理范围的问题,响度感知在分贝的基础上还有自己独立的一层非线性,这层非线性正是这条要讲的内容。
机制
响度的非线性来源于听觉系统的压缩式响应:耳蜗基底膜对声音强度的力学响应本身是压缩性的,神经纤维的放电率也会在强度升高后趋于饱和,这两层机制共同把巨大的物理声压范围压缩进一个窄得多的可用神经反应范围内,才换来人耳能同时应付极安静和极响亮声音的巨大动态范围。压缩的代价就是感知量和物理量不再是简单的线性或对数对应,而是一种介于两者之间、经验上常用幂函数近似描述的关系——响度大致随声压的某个不到 1 的幂次增长,比声压本身增长得慢。
这也解释了为什么用响度而非分贝作为单位时,响度每翻一倍,需要的声压级提升幅度是一个大致固定的量(约十几分贝),而不是简单的"响度和分贝一一对应"。
怎么研究
主要方法是量值估计(magnitude estimation)与量值生产(magnitude production):让被试直接给不同声压级的声音打分(比如"这个声音的响度是那个参照声音的几倍"),或者反过来让被试调节声音直到达到指定的响度倍数,通过大量声压级—响度评分的数据点拟合出响度随声压变化的经验曲线,由此定义出以"宋"(sone)为单位的响度标度(1 宋通常定义为某个参照声压级、参照频率下的响度)。
常见自变量:物理声压级、测试频率与带宽。 常见因变量:主观响度评分或调节结果。
在界面与产品声音设计里,这套方法用来检验一个音量控制方案里相邻档位之间的感知步长是否均匀——如果只是让声压级本身均匀递增,档位在感知上不会显得均匀。
边界
- 这条描述的响度—声压关系是在特定参照频率和中等声级范围下测得的,压缩程度会随频率与绝对声级区间变化,不存在一个对所有频率、所有声级都通用的固定幂指数。
- 个体之间的响度增长曲线存在差异,尤其是某些类型的听力损失会让响度在越过一定声级后异常快速地增长(响度重振现象),这类人群的响度—声压关系明显偏离一般人群的平均曲线,不能直接套用。
- 这条只处理响度与声压的关系本身,声音频率导致的响度差异(同样声压级下低频和高频听起来响度不同)是另一层独立的机制,属于本组另一条要讲的内容。
怎么落地
- 音量控件(滑杆、加减按钮)如果按声压级或线性振幅均匀分级,用户会明显感觉"前几档几乎没变化,后几档一下子变得很响"——这正是响度对声压的压缩关系导致的,不是控件本身的缺陷。
- 正确的做法是让每一档音量之间的感知响度增量大致相等,而不是物理声压增量相等;实践中这通常意味着音量映射曲线本身不是线性的,需要按响度标度反推出对应的声压级分档,而不是想当然地把百分比刻度直接映射到声压或振幅上。
- 验证办法:让用户在盲测中对音量控件相邻档位之间的响度差异做主观评分(比如判断"这一档比上一档响多少"),确认各档位之间的主观差值是否大致均匀,而不是只检查声压级数值本身是否均匀递增。