少即是多:为什么 SoundCloud 上的音频看起来不同
去年,SoundCloud 在十多年内首次升级了其 AAC 编码器。新的编码器(Fraunhofer 的 libfdk_aac)在我们追踪的每个指标上提供了更高的感知音频质量。但如果你查看声谱图,你可能会注意到一些意外的情况。场景是这样的:你上传一个无损母带。你从 SoundCloud 下载你的曲目并在频谱分析仪中打开。你会发现原本到 20 kHz 的能量在 17 kHz 处有一个明显的截断。旧编码器保留了这些频率,而新的编码器则去掉了它们。这看起来像是降级,但实际上恰恰相反。原因如下。无损与有损无损文件(WAV,FLAC)保留每个样本的完整性。输入什么就输出什么,逐比特无损,无决策,也无妥协。有损压缩(AAC,MP3,Ogg)则是另一回事。编码器必须丢弃某些东西以达到目标文件大小。问题不在于它是否失去信息——它确实会。问题在于它选择丢弃什么。让每比特都值得当 SoundCloud 将你的上传压缩为 AAC 时,编码器在每块音频上获得固定数目的比特。它将这些比特分配到频带中。每个频带的比特越多,重现的保真度就越高;比特越少,失真就越多。没有足够的比特用于所有内容。编码器必须决定在哪里花费这些比特。玩玩滑块。随着比特率的下降,量化信号与原来的频率分布越来越远。但如果你将低通滤波器向左移动,会发生一些有趣的事情:编码器放弃了高频率,而其他部分的信号变得更清晰。这就是权衡:舍弃你几乎听不到的部分,以换取你能够听到的更清晰的信号。为什么是高频?人的听觉并不均匀。我们在 2 到 5 kHz 之间最敏感。在更高频率下,敏感度显著降低,大多数成年人在理想的聆听条件下也无法可靠地感知 17 kHz 以上的音调。因此,最高的频率为比特率优化提供了最有效的机会。在频谱的最高处的小幅降低使编码器能够在更广泛的可听内容范围内提高准确性。虽然声谱图将每个频率平等对待,但我们的耳朵并不是。编码器是围绕人们的听觉设计的,而不是围绕图表的外观。编码器在成本最低的地方进行削减。你可能会问,为什么不削减低频率呢?低频编码所需的比特很少,而你能感受到它们的震动。频谱的顶部是最便宜的牺牲。真实音频的表现这是通过旧编码器和新编码器处理的流行混音。这张图显示了编码音频与原始音频之间的差异。红色表示能量被去除,蓝色表示编码器添加了不存在的东西(伪影)。新编码器(右侧)明显做出了一个牺牲:在顶部的红色区域故意进行了削减。在其下几乎没有变化。旧编码器(左侧)的情况则不同:在上中频(你听得最清楚的信号丢失的范围)中有红色斑点,而低频中有蓝色斑块(编码器产生的伪影)。它在各个地方都在努力。这里是相同故事的柱状图,比较了同一编码器在打开和关闭低通滤波器情况下的表现:滤波器关闭时(红色),中频范围的错误率更高,恰好在你耳朵最敏锐的地方。滤波器开启时(蓝色),这些频带获得了更多比特,错误率下降。滤波器正做着它应该做的工作:以更清晰的中频取代不易觉察的高频。但是 256 kbps 呢?这是一个合理的问题。在 256 kbps 的情况下,几乎有足够的比特用于所有内容。你会期待全频带可以正常工作。它几乎可以。但“几乎”仍然让编码器在复杂段落的中频范围内做出艰难选择。我们使用的编码器(libfdk_aac,Fraunhofer 的实现)是保守的:即使在 256 kbps 时,它也会在 17 kHz 附近施加适度的削减。改善虽然比在较低比特率时小,但仍然可以测量。这个在 256 kbps 时的选择是正确的吗?确实存在争论。但这并不是任意的。Fraunhofer 通过数十年的广泛听力测试验证了这些截止点。这个阈值之所以存在,是因为训练有素的听众无法可靠地区分,而被释放的比特使信号的其余部分在可测量的程度上得到了改善。聆听并决定我们可以整天给你展示图表。这里有一个盲测。三段相同音频的剪辑。原始音频和两段以 256 kbps 编码的音频:一段带有低通滤波器,一段没有。你能分辨出哪一段是哪一段吗?哪一段应用了低通滤波器?结论是:你的曲目并没有被损坏。它听起来只是比看起来更好。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡