人耳听觉特性:听阈与痛阈、等响曲线、掩蔽效应、临界频带

做音频Codec的人,如果不懂人耳,就像做显示器的人不懂眼睛。我常说一句话:耳朵才是最终的Codec。你算法写得再漂亮,指标测出来再好看,人听着不舒服,那就是废的。

这一章我们聊几个核心概念。它们不是枯燥的生理学,而是你调Codec、写算法时天天要打交道的“潜规则”。

2.1 听阈与痛阈:耳朵的动态范围

先说两个极端值。

  • 听阈:人耳能感知到的最小声压。大概在0 dB SPL附近。注意,这是针对1kHz纯音测出来的。不同频率差异很大。
  • 痛阈:耳朵开始感到疼痛的声压级。大约120-130 dB SPL。再往上,就是物理损伤了。

这两个值之间,就是人耳的动态范围——大约120 dB。你想想看,一个优秀的24位ADC动态范围也就120多dB。巧了不是?

关键点:Codec设计里,本底噪声和最大输出能力,就是围绕这个范围来的。噪声做太低没意义,因为人听不到;做太高,小信号就被淹了。

我个人习惯在设计Codec的模拟前端时,把输入级的等效输入噪声控制在-120 dBV以下。为什么?因为再低,人耳在安静环境下也听不出来了,徒增功耗和成本。

2.2 等响曲线:为什么你的Codec在低音量下“缺低音”?

你有没有遇到过这种情况:一首歌开大声听,低音很足;调小音量,低音好像消失了?

这不是你的音响坏了。是人耳的等响特性在作怪。

人耳对不同频率的敏感度不一样。对1kHz-4kHz最敏感,对低频和高频相对迟钝。而且这种差异会随着音量变化而变化。这就是等响曲线(Fletcher-Munson曲线,后来被ISO 226标准更新)。

简单说:

  • 大音量下,各频率的响度感知相对平坦。
  • 小音量下,低频和高频的感知响度会“掉得特别快”。

实战技巧:很多高端Codec或播放器里有个“等响度开关”(Loudness)。它的原理就是在小音量时,主动提升低频和高频的增益,补偿人耳的感知缺陷。我曾经在一个便携音箱项目里用过这个功能,用户反馈“小音量下低音比竞品好很多”。其实就是加了个简单的等响度滤波器。

等响曲线对Codec的EQ设计有直接影响。你调EQ时,不能只看频响曲线平不平,还得考虑用户实际听音的音量。

2.3 掩蔽效应:音频压缩的“物理基础”

这个太重要了。现代有损音频压缩(MP3、AAC、Opus)的根基,就是掩蔽效应。

什么叫掩蔽?就是一个声音的存在,导致你对另一个声音的感知阈值提高了。说白了,就是“听不见了”。

分两种:

  • 频域掩蔽:一个强音(比如1kHz的纯音)会掩蔽掉它附近频率的弱音。频率越近,掩蔽效果越强。
  • 时域掩蔽:强音出现之前和之后的一小段时间内,弱音也会被掩蔽。之前叫“前掩蔽”,之后叫“后掩蔽”。后掩蔽持续时间更长,大约50-200ms。

我记得有一次调试一个语音Codec的量化噪声问题。频谱上看,噪声明明在-80 dB以下,但用户就是觉得“有嘶嘶声”。后来发现,那个噪声刚好落在某个语音共振峰的掩蔽阈值之上。调整了一下量化器的噪声整形,把噪声推到掩蔽阈值以下,问题就解决了。

避坑指南:我曾经在一个ANC(主动降噪)项目里,把降噪目标定得太高,想把所有频段都压到听阈以下。结果功耗爆炸,而且低频段根本没必要。后来改用基于掩蔽效应的降噪策略——只把噪声压到被音乐信号掩蔽的程度,功耗降了40%,主观听感几乎没有区别。

2.4 临界频带:人耳的“分辨率”

人耳不是一台精密的频谱分析仪。它对频率的分辨率是有限的,而且是非线性的。

临界频带(Critical Band)就是描述这种分辨率的概念。简单说,人耳的内耳基底膜上,不同频率对应不同的位置。每个位置对应一个“频带宽度”。在这个带宽内,两个频率的声音会互相干扰、互相掩蔽;超出这个带宽,它们就相对独立了。

临界频带的宽度随中心频率变化:

  • 低频段(<500 Hz):带宽约100 Hz。
  • 中高频段(>500 Hz):带宽约为中心频率的20%。

这个特性直接催生了Bark尺度(一种心理声学频率尺度)。整个可听频率范围被划分为24个Bark带。每个Bark带对应一个临界频带。

为什么这对Codec重要?

  • 感知音频编码(如MP3)的量化噪声分配,就是按临界频带来的。在每个临界频带内,把噪声推到掩蔽阈值以下,而不是在整个频谱上均匀分配。
  • Codec的EQ滤波器设计,如果按Bark尺度来布置频点,往往比线性频点更“符合人耳听感”。

一句话总结:临界频带是人耳的“频率分辨率单元”。音频算法里,按Bark尺度做事,往往比按线性尺度做事更聪明。

2.5 知识体系图:人耳听觉特性与Codec应用

下面这张图,把这一章的核心逻辑串起来了。你看一眼就明白:这些听觉特性是怎么一步步影响到Codec设计的。

人耳听觉特性与Codec应用关系图 听阈与痛阈 等响曲线 掩蔽效应 临界频带 动态范围设计 等响度补偿EQ 感知噪声整形 Bark尺度滤波 ADC/DAC动态范围 数字音量+EQ 量化器/噪声整形 滤波器组设计 核心逻辑 人耳听觉特性 → 确定感知边界 → 指导Codec参数设计 最终目标:在“人听不出来”的前提下,做到最低功耗、最低码率

2.6 小结:这些特性怎么用?

讲完了理论,说点实际的。你在Codec开发中,这几个概念怎么落地?

听觉特性 Codec设计中的直接应用 我踩过的坑
听阈与痛阈 确定ADC/DAC的动态范围目标(通常100-120 dB) 曾经把DAC动态范围做到130 dB,功耗翻倍,听感无提升
等响曲线 小音量下自动EQ补偿(Loudness功能) 补偿曲线没对准ISO 226,用户觉得“声音怪怪的”
掩蔽效应 感知音频编码、ANC降噪策略、噪声整形 噪声整形没推到掩蔽阈值以下,用户投诉“有底噪”
临界频带 Bark尺度滤波器组、心理声学模型 用线性频点做EQ,调了半天听感不如按Bark尺度随便拉两下

个人建议:如果你刚开始接触音频Codec,先把掩蔽效应和临界频带吃透。这两个是“性价比”最高的知识点——理解它们,你就能看懂大部分音频Codec的datasheet和算法文档了。