MP3格式早已成为过去时。但这个记忆中最常见的音频格式,虽然大小只有别人的几分之一,音质却并不差,不免让人好奇它到底使用了哪些黑科技。从爱迪生发明留声机开始,人类保存和传播声音的历史已经有140多年。但在最近的20年里,一种音频格式的诞生却改变了人们的音乐体验。那就是MP3。作为世界上应用最为广泛的音频格式,MP3的诞生第一次让音乐成为一种人人可以触及的大众消费品。
如果我们想减少一个文件的体积,最直接的方法就是压缩。通常我们理解的压缩,都是重复压缩。比如你去超市买5瓶可口可乐,小票上不会写5次可乐,只用写“可口可乐*5”就行了。这个过程就相当于把文件里重复的部分用更短的字节编码。文件本身不会丢失数据,解码后也不会损耗任何信息,只是让文件体积变小了。这是一种无损压缩,实际上MP3的最后一步就是这么干的,它用一种叫Huffman Coding的算法来完成。
但如果只用这种算法,MP3的体积并不会显著缩小。因为声音本身是一种极其混乱,信息熵非常高的数据。所以这种方式不可能让它缩小到CD体积的10%。
那既然无损压缩这条路走不通了,干脆就丢掉一些信息好了。那MP3到底丢了哪些声音呢?我们要想知道答案,最简单的方式就是对比。
我们把同一段声音的MP3和它的无损版本并列在两条轨道上,把其中一轨反相,那如果它俩的声音是一样的,就会互相抵消,我们就应该得到一个静音效果。这也是降噪耳机的工作原理。但因为MP3是有损压缩,所以实际听起来会是这样:但只有这样我们还说不出MP3和无损的区别。如果一段音乐就是在MP3和无损之间不断切换的,你真的能区分的出来吗?我相信你是听不出来的。
这就是MP3算法的神奇之处,它的压缩并不是简单的丢掉声音数据,而是在丢掉数据的同时,你却察觉不到。
MP3的算法就是利用了人耳的这种特性,将歌曲中不同频率里被淹没的声音瞬间,给丢掉了。这样就可以在减少文件体积的条件下,最小程度的损失音质。时间掩蔽temporal masking但这还不够。当我们听到一个噪音戛然而止的之后,实际上会有一个100-200ms的逐渐减弱的掩蔽效果。
在噪音完全停止后的这段时间里,比他更小的声音会被掩蔽,我们是完全听不见的,就像我们的耳朵需要200ms的时间回复知觉一样。不光如此,噪音还会掩蔽在它之前的声音,虽然只有50ms,但对于感官来说已经是相当长的一段时间了,这意味着我们的大脑需要50ms的缓冲才能报告到意识里。而这个前后过程,就叫作时间掩蔽。
MP3压缩算法的核心,就是利用一个精心迭代了许多年的人体听觉心理学模型,把音乐里的每一个瞬间对应在MP3文件格式里的每一帧(FRAME),检查这个帧内,上述两种掩蔽作用所发生的频率和时间段,把那些被掩盖的,我们听不到的音频信息统统丢掉。
1995年7月14日是MP3的生日,Karlheinz Brandenburg和他在弗劳恩霍夫研究所的同事们(Fraunhofer)决定把这个压缩算法的文件扩展名,根据行业标准的全称MPEG-2 Audio Layer III,命名为.MP3。到了90年代后期,“MP3”取代“SEX”成为搜索引擎上查询最多的词。
某次Brandenburg在香港出差时,看到橱窗里摆着30种不同品牌的MP3播放器,他心想,“好吧,我们终于赢了。”MP3的诞生比我想象的要复杂的多,它是一个耗时多年,经历了无数迭代才得到的科研成果。这个成果可以说是重塑了人类音乐产业。也正是由MP3开始,音乐,成了一种人人可以触及的大众消费品。