音频的压缩
上次讲到【如何让声音罐头更美味?——浅谈音频压缩和编码(上)】,音频压缩算法主要做的工作是压缩掉超出人耳听力范围之内频率的部分和对于人类感知系统来说“无效”的部分,针对这些内容,我们需要知道:听觉掩蔽效应[1]
听觉掩蔽效应
1894年,美国物理学家Alfred M. Mayer报告说,一个音调可以被另一个较低频率的音调掩蔽。1959年,Richard Ehmer描述了关于这种现象的一套完整的听觉曲线。在1967年和1974年之间,Eberhard Zwicker在关键频段的调谐和掩蔽领域开展了工作。听觉的掩蔽效应可以分为“同时掩蔽”和“时间掩蔽”。
“同时掩蔽”指的是:同时播放两种不同频率的声音,由于人感知声音的特性,导致一个较微弱的信号被另一个信号掩蔽掉的现象。简言之,纯音的掩蔽有以下几个特点:低音容易掩蔽高音,高音较难掩蔽低音;频率相近的纯音容易互相掩蔽;提高掩蔽声的声压级时,掩蔽阈会提高,而且被掩蔽的频率范围会扩展。这里有示意图来描述这种现象[2]
图一:如上图所示,掩蔽效应将大约在0.7kHz,1.6kHz和2.3kHz的信号遮蔽了,其中0.7kHz信号的SPL在听阈之下,不被遮蔽也无法听到。
在此基础上引入三个重要的概念SMR、SNR和MNR。相互关系如图
SMR(signal-to-maskratio):指在一个临界频带内,从掩蔽曲线到掩蔽产生的阈值的距离。
SNR(signal-to-noiseratio):指信号经过m位元量化后的信噪比,等于量化前信号方差和量化噪声的方差之比。
MNR(mask-to-noise):指经过处理后,人耳可以感知到的失真大小。数值等于为SNR与SMR的差值。
图二:灰色区域Critial Band指临界频带,Masking Threshold就是掩蔽门槛曲线,图中的SMR指在临界频带内最大的SMR值。
值得注意的是:我们上面讨论的SMR、SNR和NMR三者都是基于临界频带的,但掩蔽效应不仅对自己的临界频带有影响,同时对附近的临界频带也有影响,称为延展性;上图所显示的是一个临界频带内的一条掩蔽曲线;而至于实际情况,则往往存在多条掩蔽曲线,即复音的掩蔽曲线,这种掩蔽曲线可以看做是其中各个基音对应的掩蔽曲线的叠加。该部分更加具体的内容可以参考心理声学相关书籍。
“时间掩蔽”指的是:在一个弱音的之前或者之后出现一个强音,这时候比较强的声音会掩蔽掉。产生时域掩蔽的主要原因是人的大脑处理信息需要花费一定的时间。该现象的具体效果可以用此图片展示。
图三:时间掩蔽的示意图,可以看到声音发出时间不同而产生的不同掩蔽效果
对于压缩算法还有一个重要的概念是掩蔽的“临界带宽”:Harvey Fletcher进行了一项实验[3],以发现噪声带对音调掩蔽的作用。在实验中,固定音调信号具有以它为中心的各种带宽的噪声。他的研究表明,噪声的临界带宽会带来最大的掩蔽效应,并且该频带外的能量不会影响掩蔽。这可以通过具有以音调频率为中心的听觉滤波器的听觉系统来解释。该听觉滤波器内的屏蔽器带宽有效地屏蔽了音调,但滤波器外的部分屏蔽器没有影响。
该效应可用于一些压缩算法,通过降低精度来表示临界带宽之外的部分信号,来减少总的数据量(注意一般的算法如MP3并非全部丢弃被掩蔽的声音,而是降低精度被掩蔽的声音的精度以避免听感过于不自然)。
图四:掩蔽效应示意图,可见临界带宽(Critical Bandwidth)和频率(Signal Tone)的关系
听阈
在规定条件下,受试者对测试中给予的多次刺激信号,能察觉一半以上的最小听音强度被称为听阈[4]。如图所示的“听觉域限”就是人类在对应频率里面能感知的最小声音强度。一些压缩编码格式正是去除了听阈以下的频点来实现对音频数据的压缩。
图五:听阈和等响曲线以及痛阈
一些例子
音频压缩的具体算法不胜枚举,这里仅仅举出两个代表性的例子:MP3与AAC。MP3作为MPEG1的官方编码格式,早先被广泛运用于各个国家的广播电视,在随身听兴起的时代又广泛用于音频的分发和传播的过程中;而AAC则经常作为视频音轨的文件格式,大多数的视频网站都是使用的AAC格式的音轨。
MP3编码器采用快速傅里叶变换(FFT)和改良的离散余弦变换(MDCT)进行时频域变换。我们不需要讨论这些算法实际上是如何工作的,只需要讨论它们对传入音频的影响:即,将音频每个部分分成32个“子带”。这些子带代表原始信号频谱的不同部分。这是因为一段声音往往包含着大量不同频段的部分,通过将音频分成子带,MP3编码器可以根据其频率内容对不同类型的声音进行分类,根据心理声学模型的要求将某些优先于其他声音的部分分析出来(判据正是上文提到的掩蔽效应)。在之后,子带部分被组合成“帧”。编码器检查这些帧的内容,并尝试确定频域和时域中的掩蔽将发生的位置,判断哪些部分可以“失真”(即之前掩蔽效应中讲到的降低精度)。编码器计算每个帧的“屏蔽噪声”比,并在过程的最后阶段使用此信息,给不同的帧分配不同的采样精度。
在位分配期间,编码器决定应该使用多少位数据来编码每一帧。编码器需要为掩蔽效应发生的少的帧分配更多位,为掩蔽效应发生地更多的帧分配更少的位,这是因为掩蔽效应的发生可以带来数据量的精简。可用的总比特数根据所需的传输比特率而变化,这是在编码开始之前根据用户的需要选择的,常见的如128kbps、256kbps和320kbps。
编码完成后,所有帧都会被保存,在保存的时候可以使用霍夫曼编码对文件进行进一步的精简。保存的每个帧都有一些字节的标题数据来指示该帧情况,此处具体内容可以参考MP3的文件结构。
AAC可以视作是在MP3基础上改进后得到的一种更优的压缩算法,其总的流程与MP3类似,但是引入了更多的模块。比起MP3,它的优点有[5]:更多的采样率选择范围、更多的通道数、更高的编码效率和精度、任意比特率和可变帧长度;AAC采用了更高效的滤波器组,使用纯MDCT编码,而不是MP3的MDCT和FFT混合的编码方式;另外AAC引入了MP3没有的模块以改善效果,如噪声整形(TNS)、反向预测、线性感知替代(PNS)、Luhn mod N检验位等等。这些模块都涉及到不同的知识点,有兴趣的读者可参照这些名称自行学习。此处不再赘述。
总结
编码作为信号处理中的基础环节,现已较为成熟,音频中常见的编码规范都于数十年前提出,但至今编码方式仍在推陈出新,如本文未涉及到的蓝牙音频传输编码也是近几年热点问题。这个话题涉及的知识较为庞杂,难以在一篇文章中讲完,需要根据不同的使用场景量体裁衣,选择合适的编码。回到文章的引言部分,对于短视频平台,需要的是更高的压缩比率、更清晰的语音质量和某些特定频段的突出以增加听觉上的刺激;而对于音乐播放,则需要更小的失真和更自然均衡的听感。这些取舍上的区别也导致了选取的编码方式的不同,所以选择时候应因地制宜。在此仅以此文抛砖引玉,希望能给读者一些启发。
参考文献:
[1]. 林福宗 清华大学计算机科学与技术系. 多媒体技术 12.1.3 掩蔽效应. [2017-03-31]. (原始内容存档于2020-06-30).
[2]. https://blog.csdn.net/xiahouzuoxin/article/details/7849249 MP3编码分析
[3]. Fletcher, Harvey (1995). Speech and Hearing in Communication. Acoustical Society of America. ISBN 978-1-56396-393-3.
[4]. 王永华.诊断听力学.杭州:浙江大学出版社,2013:5-6
[5]. Gelfand, SA (2004)Hearing – An Introduction to Psychological and Physiological Acoustics Wikipedia,Bibliographic details for "Advanced Audio Coding"
,