台湾国语音乐联盟

充个绿钻值不值?关于无损压缩的音乐

给产品经理讲技术2020-11-24 07:05:22


一个朋友,趁着前几天某电商搞活动,买了个2000块的耳机,拿来给我欣(xuan)赏(yao)。我自己并不是什么音乐发烧友,用的是几十块钱的耳机,听的也是那些老掉牙的歌曲。但是戴上他的耳机,打开一首无损音质的音乐,还是着实被震惊了一把。一般来说,好的耳机音质好,低音高音处理都非常自然,但是如果没有无损音乐的配合,也无法发挥全部功力。无损音乐为什么能做到音质无损,而体积又不至于太大,作为一名充满好奇心的程序员,还是忍不住Google了一把。

我们先从什么是数字音频说起。我们听到的声音,在自然界以声波的形式传播,归根到底可以用一些曲线来描述。

这样的声波到达人耳的骨膜,被识别成不同程度的压力,然后转化成神经信号,大脑就听到了声音。然而电脑无法复制这个过程,它只认识0101的数字。要想让电脑也能「听到」声音,就必须要进行从自然界的模拟信号信号到数字信号的转换。

这个转换其实很简单,声波上的每个点,都可以量化成一个值,存储在磁盘上。唯一的难点是声波曲线是连续不间断的,而电脑只能存储一个一个零散的数值。怎么办呢?有点类似拍电影。演员的动作是连续的,但是摄像机拍的却是一张一张独立的照片。当每张照片的间隔足够小的时候(24幅每秒),人就分辨不出来了。一段连续的声音,同样可以切割成很多很多的瞬间,我们只需要记录下每一个瞬间的声音强度,量化成数值,然后就能存在电脑里了。这个过程叫做采样。

很显然,每秒采样的次数越多,声音也就越连贯,「失真」也就越小,单位时间里的采样次数叫做采样频率,单位是赫兹Hz。

另一方面,采样的时候,我们能识别和记录的声音范围越大,「失真」也越小。想象一下,如果你的录音机连男声女声都分不清的话,该有多糟糕。我们说一部视频是标清的还是高清的,其实就是每一副画面的细腻程度。越高清的电影,分辨率越高,能看清更多的细节,但是要占更多的存储空间。同样的道理,我们对声音的采样越精细,范围越大,声音「失真」越小,但是音频文件越大。

现在大家在采样的时候大多采用CD标准。它的采样频率是44100Hz,用16bit来存储每一个采样到的声音。16bit最多能存储65536个值,就是说它能识别到的最大声音强度有这么多,再多了就没有意义了,人也分辨不出来。所以说CD是非常接近无损的音乐格式。

提到CD,不得不说下wav,它是微软开发的PC上的音频格式,也用44100Hz的采样频率和16bit的存储位数,所以它的质量和CD差不多。无损的音乐都有一个缺点,就是音频文件太大。有多大呢?我们来算一下,假如说一首歌5分钟,也就是300秒。每秒采样44100次,也就是一共会采样13230000次。每次要占16bit的空间,那一共是211680000bit,根据8bit是1Byte,1024Byte是1K,1024K是1M,算过来是25M左右。哦对了,还有左右声道,也就是左耳录一遍,右耳录一遍,所以乘以2就是50M。这样的大小是不适合在网络上传输的,起码如果你在线听歌的话,大多数人的带宽都跟不上。

于是就有了各种各样的压缩格式, 分为有损压缩和无损压缩两个阵营。顺便说一下,wav是无损的,但是没有压缩过的哦,不要混了。

有损压缩的代表是MP3。它的原理和大多数有损压缩算法是一样的,那就是抛弃一些不重要的信息。比如人耳听觉频率范围是20Hz到20KHz,再高的就听不到了,MP3先把这部分数据砍掉。还有,它会根据心理声学模型进行精简。比如一个很高的声音后面紧跟一个低音,一般人是觉察不到的,可以忽略。最后再用霍夫曼编码压缩一遍,就可以把一首歌压缩到4、5M了。霍夫曼编码是一个很有名的无损压缩算法,我们后面再讲(也有可能不讲,估计没人感兴趣~)。

有损压缩通过牺牲音质换取存储体积和传输速度,是一种典型的妥协手段。压缩过后的音乐,再也无法还原成原来的音乐数据,整个压缩过程是不可逆的。无损压缩就要好一点,它可以完全还原,同时还有一定的压缩能力。无损压缩音频的原理其实就是zip、rar的压缩原理。我们用zip、rar来压缩一个文件,会对文件的数据结构进行分析,然后对它的数据进行重新排列、组合,达到节约空间的目的。举个不太恰当的例子,如果你的文件里有abcdefg...xyz一共26个字母,你也可以简单的用a-z来代替,只要解码的人知道是什么意思就能还原。虽然远原理相同,音频的无损压缩算法还可以专门针对音频特点进行优化,一般可以达到50%左右的压缩率。

有几种常见的无损压缩音频格式

  • APE:压缩率高,支持浮点运算,但是容错性能不大好。

  • FLAC:完全开源的无损压缩格式,速度飞快,只支持整数运算,非常适合在移动设备上使用,但是压缩率比较差。

最后,回答一下题目的问题。充个绿钻,享受无损音乐值不值?值。但前提是你要有个好耳机,那就不是10块钱能解决的事情了,呵呵。