WAV 文件真的比 FLAC 更好吗?

使用命令行工具来测试 FLAC 音频文件不如 WAV 的观点。
291 位读者喜欢这个。
4 manilla folders, yellow, green, purple, blue

Open Clip Art Library (公共领域)。由 Jen Wike Huger 修改。

如果你经常在发烧友相关的网站上浏览,你可能会偶然发现一些作者声称,以 FLAC 或 WAV 格式播放同一首音乐,声音有所不同。这篇 The Well-Tempered Computer 上的文章很好地探讨了这个概念,既从那些不相信这种事情可能发生的人的角度,也从那些认为存在差异的人的角度。

在不重复整篇文章的情况下,关于这种观点似乎有两个部分

  1. FLAC 在保留原始信号方面不如 WAV。
  2. FLAC 比 WAV 需要播放设备付出更多的处理努力,因此会在数模转换中引入“缺陷”。

过去,我大多忽略了这场辩论,但最近我发现自己与一位我非常尊敬的人讨论,他认为 FLAC 在音乐内容方面不如 WAV。具体来说,他认为从 WAV 转换为 FLAC 的过程中会丢失一些东西,并且从转换 WAV (第一代) → FLAC → WAV (第二代) 产生的“第二代” WAV 将不如原始文件。此外,他认为这种质量损失意味着当 WAV 文件可用时,您永远不应该购买 FLAC 文件,因为将 FLAC 转换回 WAV 将是原始文件的劣质副本。

我确信你们中一些阅读本文的人会对这种观点感到困惑,因为 FLAC 的全部意义在于无损压缩。我的意思是,嘿,我们会担心将我们的文档放入 ZIP 格式可能会导致我们句子中丢失一些字符吗?但我真的很尊重这个人,他在音乐录音和工程方面有丰富的经验。那么,我该如何说服某人 FLAC 是存储珍贵音乐比特的安全格式呢?

使用命令行来证明我的观点

The Well-Tempered Computer 文章建议将这两个文件加载到音频编辑器中,然后将两个音轨相减。我思考了一会儿;我可以加载 Audacity,进行一些调整以对齐起始点,将两者相减,然后瞧,零比特流将表明文件是等效的。但我预见到这种方法需要相当多的工作,而且我不知道如何最好地将零比特流作为证据呈现出来。因此,手头有 Linux,我启动了一个终端会话,并按如下步骤进行。

首先,我使用命令行 flac 实用程序将第一代 24 位、44.1kHz WAV 文件转换为 FLAC,然后创建了一个测试目录,我可以在其中保存 FLAC 和后续的第二代 WAV 文件。

flac --keep-foreign-metadata 'Immunity-008-Jon Hopkins-Immunity.wav'
mkdir test
mv 'Immunity-008-Jon Hopkins-Immunity.flac' test

然后,我再次使用命令行 flac 实用程序将 FLAC 文件转换为 WAV。

cd test
flac --keep-foreign-metadata -d 'Immunity-008-Jon Hopkins-Immunity.flac'

最后,我想使用 diff 命令来显示两代文件之间的最小差异,但 diff 对于二进制文件来说信息量不大。因此,我使用 hexdump 将两个二进制文件转换为 ASCII 文件,以便更好地适用于 diff

hexdump -v -e '/1 "%02x\n"' ../'Immunity-008-Jon Hopkins-Immunity.wav' >  008_before.hex
hexdump -v -e '/1 "%02x\n"' 'Immunity-008-Jon Hopkins-Immunity.wav' > 008_after.hex
diff 008_before.hex 008_after.hex

果然,diff 的输出显示唯一的差异在元数据标头中

5,6c5,6
< 00
< 63
---
> fe
> 62
57c57
< 12
---
> 10
76,77d75
< 00
< 00

解释以上内容,字节 5 和 6,最初是 00 63,被更改为 fe 62;字节 57 从 12 更改为 10;并且删除了 76 和 77 处的两个空字节。

就我个人而言,我可以接受这种程度的元数据更改。并且为了确认这不是一个幸运的来源选择,我也在分辨率高达 24 位 / 96kHz 的其他几个文件上尝试了这一点,并且没有看到对音乐内容的任何更改。

使用 ffmpeg 转换的风险

因此,如果 flac 实用程序在 WAV → FLAC → WAV 转换过程中在保留信号内容方面做得不错,那么其他实用程序呢?

我使用 ffmpeg 将 24 位、44.1kHz FLAC 文件转换回 WAV,没有使用任何命令行选项,并且惊讶地发现 ffmpeg 将我的信号降采样到 16 位!以下是输出

Input #0, flac, from 'Immunity-008-Jon Hopkins-Immunity.flac':
  Duration: 00:09:56.76, start: 0.000000, bitrate: 1397 kb/s
    Stream #0:0: Audio: flac, 44100 Hz, stereo, s32 (24 bit)
Stream mapping:
  Stream #0:0 -> #0:0 (flac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'ffmpegged.wav':
  Metadata:
    ISFT            : Lavf57.83.100
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      encoder         : Lavc57.107.100 pcm_s16le
[NULL @ 0x55f3b6f51a20] sample/frame number mismatch in adjacent frames
size=  102801kB time=00:09:56.75 bitrate=1411.2kbits/s speed=1.35e+03x

此外,我对“sample/frame number mismatch”错误消息感到不舒服。嗯。我想我更喜欢在我要它降采样时才降采样的实用程序,而不是默认情况下就降采样。

那么 sox 呢?

我决定我应该尝试 sox 来看看结果会怎样。在这种情况下,没有输出(必须赞扬 *nix 命令的传统,只有在出现问题时才发出消息)。

基于对转换后的文件使用 hexdumpdiff,似乎 soxflac 更难处理元数据,至少在默认情况下是这样。前 70 多个字节中存在许多差异(此处无法一一列出),但音乐有效负载似乎没有更改。

这是我第一次使用 sox;我浏览了它的手册页,看看是否有某种方法可以告诉它对元数据温和一些,我不得不说我对 sox 可以做的所有酷炫的事情感到震惊。哇,干得漂亮,开发者们!

我目前的结论…

如果您购买了 FLAC 格式的音乐并想将其转换为 WAV,请使用 flac 命令行工具。如果您购买了 WAV 格式的音乐并想将其转换为 FLAC,情况也是如此。准备好编辑您的 FLAC 标签。在任何一种情况下,都不要担心转换过程会更改数字音乐流本身——它不会。

如果您决心使用 ffmpeg,请确保指定您的输出格式,这样您的文件就不会被降采样。或者使用 sox,但请考虑花时间阅读文档并了解有关这个出色工具的更多信息。

至于为什么我的联系人认为 WAV → FLAC → WAV 转换过程会产生更改,也许是因为他熟悉在制作模拟原件副本或将 DSD 转换为 PCM 时发生的真实降级。

那么上面的第二个问题呢?WAV 文件听起来比 FLAC 更好吗?嗯,我不打算踏入那个雷区,除非将感兴趣的各方转回 The Well-Tempered Computer 上的文章。

以及更多音乐

最近,我们很幸运地参加了 Gli Angeli Genève 的音乐会,他们在那里表演了几首 巴赫康塔塔,来自《Actus Tragicus》,以及一些泰勒曼和布克斯特胡德。我们被这次演出的高质量所感动,我很快就开始寻找《Actus Tragicus》的下载。在 Linux 友好的下载商店 7digital 上,我购买了 Vox Luminis 的高分辨率 FLAC 格式的表演,从那时起我们就一直在欣赏它。您可以在 YouTube 上听到一些这种音乐。

最近的另一个发现,来自那个精彩的开源媒介,黑胶唱片,是 Orchestra Baobab 的《Tribute to Ndiouga Dieng 多么精彩的专辑!更棒的是:它附带了一张下载券,可以下载优秀的高分辨率 FLAC 文件。这个乐队已经存在了 30 多年,哇!他们仍然充满活力。 在 YouTube 上查看官方视频

最后但并非最不重要,我终于为 The Allman Brothers 的《At Fillmore East的高分辨率下载付费了,还是来自 7digital。我一直对 The Allman Brothers 情有独钟,但我倾向于忽略现场专辑,因为根据我的经验,它们的质量参差不齐。然而,这张现场专辑非常精彩。音质很好,乐队处于早期最佳状态。如果您喜欢他们但因为认为这张专辑是录音很差的垃圾而避开它,您可能需要重新考虑一下!

Chris Hermansen portrait Temuco Chile
自从 1978 年毕业于不列颠哥伦比亚大学以来,我很少没有电脑,自 2005 年以来一直是全职 Linux 用户,从 1986 年到 2005 年一直是全职 Solaris 和 SunOS 用户,在此之前是 UNIX System V 用户。

8 条评论

有压缩数据的必要吗?据我所知,在双盲测试中,没有人能够识别出比 CD 质量的未压缩音频更好的东西。Mpeg 添加了可以通过练习识别的功能。理论上 flac 没有,但仅仅是解压缩的行为就可能导致抖动,而且在这个时代,没有必要压缩 CD 质量,那么为什么要麻烦呢?
在音频录制/处理方面,更高的比特率和深度可能值得拥有,但对于聆听目的而言,CD 已经足够好,或者实际上是你能获得的最好的。

感谢您的评论,madtom 1999。关于您关于识别比 CD 质量更好的东西的观点,我提供这个元分析 http://www.aes.org/e-lib/browse.cfm?elib=18296,它表明人们可以区分高分辨率音乐(即比 CD 质量更好)。

在我看来,关于盲测/双盲测试的问题有点转移话题,原因有四。第一个原因是测试环境本身不是一个轻松和沉思的环境,可能会降低听众注意到细节中细微差别的能力。第二个原因是许多听众(我也会将自己归入这个群体)没有花时间真正努力去听出这些类型的差异。第三个原因是,在双盲测试中提供的音乐是否真的在其 16/44.1 和(例如)24/96 形式之间表现出任何可能被检测到的差异,这没有特别的保证。最后,第四个原因是,不能特别保证用于测试的设备能够以合理准确的方式呈现给定乐曲的 16/44.1 和 24/96 版本之间的差异(如果存在差异)。

关于 16/44.1 和 24/96 之间可能检测到的差异,我发现使用 Spek 开源频谱分析仪来查看音乐文件并查看那些高分辨率文件中 18-20kHz 以上的内容很有启发意义。随机挑选两个,The Allman Brothers Live at the Fillmore East 显示了一些在 20kHz 以上的泛音,水平非常低;Orchestra Baobab Tribute to Ndiouga Dieng 显示了更强的泛音,高达 25kHz 区域,以及高达 40kHz 的较低泛音。有趣的是,后者表明,高频泛音在大约 35kHz 到 42 kHz 之间以看似自然的方式逐渐消失,远低于采样的奈奎斯特频率。因此,没有“砖墙”滤波器,这在某些显然以 44.1 kHz 录制并后来以 96 kHz 重新发行的音乐中非常明显(Emily Barker 和 Red Clay Halo Despite the Snow 就是一个“好”例子)。

再次感谢您提出这一点;我想我可能会写一篇关于这个主题的未来文章。

至于问题“FLAC 的压缩是否值得”,至少对我而言,目前是值得的:我的音乐库目前几乎全是 FLAC(只有少数 MP3,因为那是我的唯一选择),我猜大约 75% 是 CD 质量,其余的是 24 位,通常是 88.2 或 96 kHz。目前这需要大约 250GB。这可以很好地放在价格合理的 500GB SSD 上,以及我笔记本电脑上的其他东西,让我拥有一个很棒的旅行音乐收藏。它也几乎可以放在我数字音频播放器中的 256GB MicroHD 卡上……

至于解压缩 FLAC 所需的努力会在数字输出流中引入抖动,我不相信我们可以做出这些先验的论证。同样容易声称 WAV 文件所需的额外 I/O 会在数字输出流中引入抖动。需要对这些假设进行一些非常仔细的测试。

回复 作者 madtom1999

非常感谢这篇文章和研究!一篇非常有趣的读物。

非常有趣
至少它指出了非常重要的内容:良好的录音、良好的原始文件、良好的转换器,以及为了避免抖动,转换器需要一个良好的时钟。

我正在使用 Linux 和 Jack 在各种声卡(消费级(集成音频芯片组)、准专业级 (Presonus) 或专业级 (RME, Echo))上听音乐。我一直对音乐在 Linux 上听起来比在 Windows 上更好感到惊讶:更多细节,更好的动态。从历史上看,这是我和一些朋友永久迁移到 Linux 的首要原因之一,为了听音乐、制作音乐和录制音乐。

也许这只是一种感觉。但是,我真的很想看看是否有可能衡量操作系统和播放音乐的软件的影响。

感谢您深思熟虑的评论,Antoine Thomas。

我最初开始购买 24/96 重新发行版,声称是对以前音乐的重新母带处理。我想要的是一些我最喜欢的曲调的音质更好的版本,母带处理工程师稍微降低了音量以留出一些动态余量,去除了部分压缩,并且(我希望)重新均衡了低频,这些低频通常会被降低,以制作可以在 60 年代和 70 年代的玩具唱机上播放的唱片。而且,我一直在尽可能地购买高分辨率音乐,不是因为我确定我可以听到 16/44.1 和 24/96 之间的区别,而是因为在我看来,我的最初想法——制作高分辨率版本的工程师会更关心音质——或多或少是正确的。

所以,至少在我看来,从最好的素材开始是关键步骤。

我也觉得您关于 Linux 与 Windows 的评论很有趣。我读到,真正关心音质的 Windows 用户会下载某种驱动程序(?),以绕过 Windows 中发生的音频混音。我想当我在 Pulse 中禁用我的外部 DAC 并仅通过 ALSA 使用它时,我正在做类似的事情。我必须承认,我没有像您那样对不同的设置进行大量比较。我认为您应该在 opensource.com 上写一篇关于此的文章!

至于衡量不同音乐再现链之间的差异,这听起来是个好主意。我不一定相信“哇,这听起来比那好多了”的说法,也不一定相信精心设计的盲测或双盲测试的结果。当然,弄清楚某种方法来明确确定链 A 提供比链 B 更高的保真度会很酷。但也要记住西格弗里德·林克维茨(Siegfried Linkwitz)(安息吧)的明智之言,正如迈克尔·弗雷默 (Michael Fremer) 在这里引用的那样

他说:“对眼睛重要的东西不一定对耳朵重要。”“为什么要重要呢?大自然确保每个器官都做好自己的工作,并且完美地完成自己的工作。你从眼睛获得线索,但频率响应中看起来很糟糕的某些东西,耳朵会说,‘我不在乎’。”

(https://www.stereophile.com/content/siegfried-linkwitz-rip#sfSBoup5oLcd…)

回复 作者 ttoine

关于为什么 WAV 可能比 FLAC 更好的选择,可能存在一些关于论点 2 的真相,其中在 DAC 期间引入了“缺陷”。我已决定开始以 WAV 而不是 FLAC 翻录我的 CD 库,这就是原因。在我的旧 Macbook 坏了之后,我组装了一台新的 PC 笔记本电脑,我想借此机会开始尝试不同的播放器和文件类型。我在 MusicBee 中以 FLAC 格式翻录了 Arcade Fire 的专辑《Suburbs》。在我最喜欢的歌曲《Sprawl II》的结尾附近,歌曲结尾附近出现了可听见的伪影。我直接从 CD 听,没有出现这样的伪影。我对尝试的内容做了一些研究,以 WAV 格式翻录了它,瞧!没有伪影。我能听到音质的差异吗?谁知道呢,我可能无法从好的 A/B 测试中分辨出哪个是哪个。但是我想翻录我的库,而不必担心在此过程中是否会引入伪影。所以,WAV 就是答案,尤其是在翻录时。

感谢您非常有趣的评论,Jud。很高兴听到更多关于您注意到的这些可听见的伪影的信息。它们在曲目“Sprawl”中的哪个时刻出现?它们听起来像什么?您是否尝试过其他翻录器 - 我不熟悉 MusicBee,但一种可能性一定是该过程产生了在 MusicBee 翻录中可听见的错误。您的 DAC 是什么?我不认为我有这张 CD,但如果我有,我很乐意尝试一下(特别是自从我使用与您不同的平台以来)。

回复 作者 Jud (未验证)

© . All rights reserved.