summaryrefslogtreecommitdiff
path: root/content/article/got-flac.md
blob: c9c25c892bc96605ac86b56f519b56a3f4a4aaa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
+++
title = '去营地整点 FLAC'
subtitle = 'I don’t stream. I own.'
slug = 'got-flac'
tags = ['自由','隐私','音乐','技术','精选']
categories = '软件杂谈'
date = 2026-03-26 12:38:33
draft = false
toc = true
endnotes = [
    '本页面 slug 是在恶搞已经被玩烂的广告词「Got Milk?」',
    '可能的下一期《找安娜拿点 EPUB》'
]
toot = 'https://akk.eltr.ac/objects/179fa46b-3be9-4654-8311-959abbfb6562'
+++

可能是神秘的 [Bouba/Kiki 效应](/essays/jack-in-fitness/#波巴和奇奇杰克向你问好),FLAC 这个单词若是以 `/flæk/` 的读音读出来,我会觉得这是一种脆脆的食物,或者是…… 某种精致小巧的计算机设备,极有可能是存储介质。

抛掉我发散的想象力,本文要说的 FLAC 其实是一种音频格式,全称是自由无损压缩编码(Free Lossless Audio Codec)。<!--more-->

## 自由与开放

在软件领域,Free 一般不是免费的意思,而是与法语和西班牙语中的 Libre 同义,是「自由」的意思。自由软件的具体定义是,任何人都能够自由研究、修改、分发修改前和修改后副本的软件。是的,这类软件一般是开源的,但开源是另一个概念。

FLAC 作为自由的开源项目,不仅包含对 FLAC 音频格式的规格制定,还包含相关的软件库和工具(`libFLAC`、`metaflac` 等等)。仅对于这种格式而言,自由是指这个音频格式可以在不需事先许可的情况下使用。[^1]

什么音频格式是不自由的?亚马逊开发的用于播放有声书的 `.aa` 和 `.aax` 格式,苹果开发的用于 iTunes Store 的 `.m4p`(MPEG-4 Protected),以及微软开发的 `.wma`(Windows Media Audio)都是不自由的封闭格式。[^2]这些格式不仅没有开源编码和解码器(也就是说,除非有人能够逆向工程编写出该格式的编码和解码器,否则就只有它的创造者能够制作和播放这种格式的音频文件),还添加了 DRM 能力。DRM 的全称是数字版权管理(Digital Rights Management),一般是指用户保护版权内容的相关授权和加密技术。

其实 `.mp3` 一开始并不是开放和自由格式,开发它的公司曾经试图向使用者收费,后来才有替代的算法被研发,用于解码和编码 `.mp3` 文件。即便是这样,`.mp3` 在 2017 年 4 月 16 日之前是受到专利保护的,直到最近几年才进入公有领域,成为了自由格式。[^3]

开放格式(Open Format)和自由格式的概念不同,开放格式是指这个文件格式的标准和规格说明被定义在人人都可以访问的文档里,大家都能看到这个格式是如何制定的,并且能以此为依据编写编码和解码器。这个概念和开放标准(Open Standards)类似,其实前几天的[一篇文章](/article/webmention/)提到的 Webmention 也是开放标准,它的文档被 W3C 组织公开[于此](https://www.w3.org/TR/webmention/),任何人都能根据这篇文档,自己实现 Webmention 发送器和接收器。如果标准不开放,就只能求助于逆向工程了。

对于普通人而言,这些技术规格的差异意味着什么?

显而易见的是,如果使用不自由、不开放的音频格式,尤其是那些带 DRM 保护、由某个企业开发的音频格式,用户很容易被锁死在一个平台上。假设你在网易云音乐上购买了一张专辑,某天你想换到 Spotify,你会发现你没办法把你在网易云音乐上购买的专辑导入到 Spotify 中,因为网易云给音频文件加上了保护,只有网易云音乐播放器才能解码文件。

这当然很不公平,明明是我自己付了钱买的音乐,为什么没办法随心所欲地播放呢?实体产品可不是这样,如果你购买了一张黑胶,把它放进任何一家企业生产的黑胶唱片机里,都能够播放音乐。

可以理解的是,数字产品很容易被复制和传播,为了保护版权所有者的权益,应该对文件进行加密。如果未付费的用户能够随意地获取并播放文件,那谁还会给他们付钱呢?谁还来支持他们的创作者?看起来,DRM 技术是必要的。

真的是这样吗?

好吧,其实我没有自信讲清楚这个问题,所以就允许我引用小氯写的一篇文章吧。

> 这又是一个被小氯讲了许多次的问题。只有那些躺在你硬盘里的、能被任何一种播放器打开的比特才是你的,否则,那就只是短暂的、脆弱的、被 DRM 层层包裹的、依靠施舍的租赁物而已。
>
> 当然,流媒体和 DRM 的支持者们可能会争辩:如果没有这样的措施,盗版就会泛滥,创作就无以为继了。这话不能说完全没有道理,但这种把开放格式当成洪水猛兽的思维,在小氯眼里不免有些狭隘。我们先不谈开放格式的道德性,这件事小氯可以和您讲一年,我们只谈商业模式。
>
> 我们可以从历史上一个著名的实验出发,即所谓 Louis C.K. 实验。
>
> 简单来说,Louis C.K. 是一位美国喜剧演员。2011 年,他在自己的网站做了一次尝试:销售自己的喜剧录影带 Live at the Beacon Theatre,就是一个普通的 MP4 文件,价格是五美元——远低于当时的 DVD 价格。Louis C.K. 当然也知道这容易被盗版,他的防御方式是……没有防御,只有一条消息。
>
> 「我是个普通人。我希望你们不要把它上传到盗版网站,这样我就可以用这笔钱支持我和团队。」
>
> 那么这场质朴的实验结果如何呢?
>
> 答案是:在短短十二天内,总销售额达到了一百万美元。
>
> 为了回应指责这种「路易模式」只是个例、完全无法推广的反驳者们的嘴,我们再来一些更现代的例子。比如说,Bandcamp。如果您不熟悉 BC:它是一个独立音乐平台,核心商业模式就是你付钱,获得可以下载的高音质开放格式文件,比如 .flac 和 .wav 之类。小氯闲着没事也喜欢去 BC 上买点 .flac 专辑听。

{{< right "—— Garden of Outlier《[岁时录(二十三)](https://chlo.is/weekly-23/)》" >}}

实际上,在音乐流媒体占据现代人生活之前,盗版就已经泛滥了,比如盗版光碟。即便是有 DRM 技术,逆向工程在大多数时候也都算容易,至少对于音频而言,普通人花点时间就能找到已有的解码工具。Paul Graham 在《黑客与画家》里写道,对黑客而言,上锁的门是一种侮辱,他们会想尽办法把锁撬开。

这对普通消费者而言也是侮辱:为什么我自己买的音乐无法以开放格式下载,用我喜欢的播放器播放?这不仅仅发生在音乐领域,我之前在[第 51 期周刊](/weekly/51/#我逆向工程了-amazon-的-kindle-图书服务)里分享了一篇文章,作者逆向工程了 Kindle 的图书服务,因为亚马逊做的阅读器 App 实在是*太烂了*,而他发现他购买的图书竟然受到 DRM 保护,没办法导出为开放格式在别的阅读器里打开。

在我看来,DRM 技术不仅无法阻止盗版者,还是对消费者的不尊重。这就是像是有人在家周围建立起一堵高墙,为了防止盗贼,可小偷还是能用梯子爬进去,而邻居们却开始对这家人避而远之,总之是挺蠢的行为。

不过,如今愿意为音乐付费的人似乎在变少,但我认为主要原因是流媒体对大众消费习惯的影响,并非是人们不愿意为音乐付费。流媒体的话题会在稍后谈到。

## 音频格式和音质玄学

谈完了政治性极强的内容,这一小节来谈点轻松的话题。需要注意的是,我本人并非音乐相关的从业人士也绝非专业,所以我仅仅是从普通音乐爱好者的角度来谈这个问题。

我本人对音质其实并不敏感,至少在以前是这样,因为那时我听的大多是我称之为「天生适合跟唱」的歌曲,更关注歌词和旋律,而另一些注重节奏感的音乐则是「跟着摇就完事了」的态度。我之前并不明白一些人所说的「听个响」具体是指什么,只以为那是对低端音频播放设备的轻蔑,实际上并没有那么夸张。

是的,实际上这个描述非常准确。

### 播放设备之间的区别

本来《软件杂谈》这个系列里是不该出现硬件相关的描述的,不过音质这个话题的确离不开硬件。当然,再次强调,我仅仅是从自身体验的角度出发讨论这个问题,带有不可避免的主观性,还请读者注意甄别。

我自己购买过不少价格在 100~200 元左右的普通蓝牙耳机,我现在还在用的是三百左右的头戴式蓝牙耳机,而我目前主要使用的听歌设备是 AirPods 4(带主动降噪的版本)。头戴式耳机是为了保证沉浸感和降噪效果使用的,个人感觉物理隔绝比任何降噪技术都要好用,不过还是要将被动和主动降噪搭配使用才效果最好。

*它们之间的差别真的很大……*

首先,如果是听人声,那我的体验是:百元级和千元级的耳机几乎听不出区别。看视频、听播客和听那些「天生适合跟唱」的以人声为主的音乐,购买更贵的耳机不会有太多优势。

如果是有很多乐器和声效同时演奏的音频,千元级耳机的效果无疑是更优秀的。我只能将这种区别描述为:百元机耳机的声音是扁的,仿佛被拍成了一种声音;千元机耳机能够听出层次感,就像聆听现实中声音时,能在声音之间感受到发声位置、距离和质感的区别一样。在现实中,如果有多个声音同时发生,人可以选择将注意力集中在一种声音上倾听,选择音质好的设备也是类似的感受,而较差的耳机则不行,声音是糊成一团的,难以分辨。

当然,以上体验仍然与软件脱不了干系,使用了好的耳机,却仍然使用 MP3 播放音乐,仍然不能达到很好的效果。

由于我几乎不使用音响,所以这里就不谈了。

### MP3 vs. FLAC:什么是无损?

无压缩、原样录制的音频往往是 `.wav` 格式,由微软开发,苹果也有对应的 `.aiff` 格式[^4]。由于没有经过压缩,这类格式的文件体积也很大,储存成本很高。

于是就有了支持压缩的音频格式。谈到压缩,就要分出无损和有损两种压缩方式。听起来很像玄学的有损和无损两个词,其实是实打实的技术规格。

最典型的有损压缩格式是 `.mp3`,这类格式去除了人类不容易听到的声音,以压缩音频体积。大多数有损压缩格式都是这样,利用心理声学(Psychoacoustics),去掉对人类听觉不重要的声音。这些被去掉的声音就是「损」。自然地,无损压缩就是在不去掉任何声音的情况下减少音频体积。

这听起来还是很抽象,让我画个图。

![音频进入编码器,被编码器编码为音频文件;音频文件进入解码器,被解码为音频。](https://img.eltr.ac/geedeapro/article/got-flac/how-audio-is-made.png "音频 → 编码器 → 音频文件 → 解码器 → 音频")
{.dark:invert}

需要注意,这里的音频并非是物理世界的声波,而是经过**脉冲编码调制**(PCM)转化成的数字信号,是对模拟信号的编码。PCM 就是用比特(0 和 1)表示音频的方法,可以理解为声波在数字世界的一比一复刻(当然实际上不是 100% 精确的)。PCM 比特被输入到编码器中,得到了特定格式的音频文件,音频文件再作为解码器的输入被解码,解码的结果就是 PCM 比特。

对于无损压缩格式而言,编码器的输入和解码器的输出在比特层面是完全一致的。

对于有损压缩格式,比如 `.mp3`,编码后的音频文件无法通过解码器复原出一模一样的 PCM 比特,因此,音频的质量就被损坏了。

至于没有压缩的 `.wav` 和 `.aiff`,它们储存的是完整的 PCM 编码。由于无损压缩的音频最终也能解码成一模一样的 PCM 数据,无损压缩和未压缩的格式在音质上完全没有区别——不是人耳听不出来,而是真的没有区别。使用未压缩的音频格式就像是买袋装薯片,大部分体积都是氮气而不是食物。

### ALAC vs. FLAC:编码与容器

FLAC 并不是唯一的无损压缩格式,苹果有开发名为 Apple Lossless 的音频格式,也被称作 ALAC。~~FLAC 听起来更像美味的食物,而 ALAC 更像是化妆品、药品或者医美手术的名字,这就是 ALAC 的第一个缺陷。~~

这两种格式并不是完全相同的东西。

首先,FLAC 既是音频编码,也是容器格式(container format),所以有拓展名为 `.flac` 的音频文件。而 ALAC 只是音频编码,这种编码的音频需要被放在一个容器里,比如 `.m4a` 和 `.mp4`(是的 MP4 其实是容器格式)。所谓容器格式,就是说这个文件里不仅有音频数据本身,还有相关的元信息,用来告诉读取这个文件的软件容器里放的是什么编码类型的数据。

话都说到这了,就谈谈 MP4 吧。一个有趣的事实是:MP4 文件里可以放 FLAC 编码的音频,因为 MP4 是容器而不是编码,只不过 FLAC 有自己的容器格式 `.flac`,所以一般没人会在 MP4 里放 FLAC 音频。里面装着音频的 MP4 一般以 `.m4a` 为拓展名而非 `.mp4`(`a` 应该是指 audio),苹果的 ALAC 就是这样做的。

顺带一提,`.wav` 和 `.aiff` 也是容器,里面放的编码是完全未经压缩的 PCM 比特。前面我们提到,FLAC 等无损压缩格式解码后就能得到和编码前完全一致的 PCM 比特,所以 `.wav` 和 `.aiff` 对于听音频的人来说,在音质上和 `.flac` 没有任何区别。

这是 FLAC 的第一个优势(应该算吧):它不用放在 MP4 容器里。

其次,在 CPU 算力相同的情况下,ALAC 的解码时间是 FLAC 的四倍左右[^5],算法效率不如 FLAC。尽管播放 ALAC 音频时并不会出现明显的延迟,但消耗更多的时间解码意味着消耗更多的电力,对续航能力较差的设备来说不是好事。

其他方面,ALAC 和 FLAC 基本相同,但我们先前一直忽略了一个非常重要的指标,就是 PCM 音频本身的质量。如果 PCM 音频的质量本身就不太好,编码为 FLAC 或者 ALAC,最后在解码出来依然会得到一样质量的音频。有没有可能,ALAC 或者 FLAC 因为技术限制,无法编码某种高质量的音频,只能退而求其次去编码更低质量的音频,继而导致音质差异呢?

先前已经提过,几乎所有的音频格式都在处理 PCM,也就是对声波信号的数字化编码,而数字化不总是精确的。精度能够量化,最常见的两个数据就是采样率(sample rate)和比特深度(bit depth)。

现实中的声波是模拟信号,通常表示为光滑、不断变化的曲线。PCM 做的就是每隔一段时间取一次声波的振幅,并将这次测量结果表示为二进制数,连起来就得到了数字信号,如下图所示。

![A、B 是两个波形图,A 图上有非常频繁出现的点,B 图上的点则相对稀疏,每个点都表示一次采样。](https://img.eltr.ac/geedeapro/article/got-flac/sample-rate.jpg "A 的采样率要高于 B 的采样率。")
{.dark:invert}

采样的频率就是采样率,单位是 kHz(千赫兹),也就是每秒采样几千次。ALAC 支持的最高采样率为 384 kHz,如果采样率更高就无法承受了;而 FLAC 支持的最高采样率为 1.048 MHz[^6]。尽管大部分音乐播放器不一定支持这么高的采样率,音频本身的采样率也很少超过 100 kHz(我下载的音乐有不少采样率都只有 44.1kHz,听感依然很好),但…… 为什么不选一个更好的音频格式呢?又没有什么开销。

所谓比特深度,就是每次采样包含了多少比特的信息。深度其实就是字长(word length),是每次采样时,声波的振幅。比特深度不同的音频之间的区别,就像是 32 位操作系统和 64 位操作系统之间的区别,都能跑,但就是会有差别。

简单理解:采样率类似于帧率,比特深度类似于每帧的分辨率。

FLAC 支持 4~32 位的比特深度,而 ALAC 支持 16、20、24 和 32 位。[^7]尽管两者的上限是一样的,但无疑 FLAC 的兼容性更广。

尽管由苹果开发,但 ALAC 的编码器也在几年前开源了(一开始并不是开源的),也早就有人不借助文档逆向工程开发了 ALAC 的解码器。所以,实际上 ALAC 也可以像 FLAC 一样自由使用。不过整体而言,FLAC 是更好的选择。

关于 FLAC 和 ALAC 以外的无损压缩格式,可以参照 Hydrogenaudio Wiki 上的[这张表格](https://wiki.hydrogenaudio.org/index.php?title=Lossless_comparison#Comparison_Table)。

## 亵渎艺术的商业流媒体

把整个音频文件都下载到本地后再播放,明显的缺点是慢,等待的时间很长。流式传输就是一边传输数据,一边解析已经收到的数据,就可以做到在没有获得完整音频文件的情况下播放音频,视频和其他长数据也可以使用流式传输。

流式传输是很常见的编程实践,本身是中立的技术,但商业化流媒体平台的发展引发了不少问题。

不过在正式谈流媒体之前,还要回到更久之前。

{{< float-image "https://img.eltr.ac/geedeapro/article/got-flac/loudness-war-demo.png" "left" >}}

从上世纪 40 年代开始,人们就发现音乐的声音变得越来越响,这是发生在母带制作(mastering)时的事情。记住「母带」这个词,之后还会反复出现。随着数字信号处理技术的发展,音乐制作人开始利用计算机把音乐调得越来越响。

如图是一首名为《Super Trouper》的音乐,从 1980 年发布起,又有三个新的版本发布,每个版本都比上一个版本更响。[^8]

这完全是出于商业考虑,更响的音乐会让人觉得更好听。像是吉他这样的乐器,由于本身发出的声音比较小,也会被单独调得更响。

可是,在被调得更响之前,《Super Trouper》就已经是热单了,有了很好的成绩。让它变得更响不仅不能让音乐的艺术性和娱乐性有任何提升,还会损伤听众的听力健康,而且,把音乐变响不仅仅是让声音更大那么简单。

提高响度实际上是在对音频进行压缩,让音乐的采样不断接近(甚至超过)音频格式和存储媒介支持的最大振幅,在极端情况下会造成明显的扰动和失真。[^9]

好了,现在商业流媒体加入战局。由于不同时期的音乐响度不一致,不同的音乐制作人也会选择不同的调音策略,为了解决响度战争造成的听感问题(比如切换到下一首歌是音乐突然变响,或者突然变得难以听清),几乎所有的流媒体平台都开发了新的算法来均衡响度(loudness normalization)

![Amazon Music、Apple Music、Soundcloud、Spotify、Tidal、Youtube 和 YouTube Music 使用算法均衡后的响度。](https://img.eltr.ac/geedeapro/article/got-flac/loudness-normlization.png "图源:[Wikipedia](https://en.wikipedia.org/wiki/Loudness_war#2020s)")
{.dark:invert}

国内的情况我没有找到相关资料,但作为业界常见手段,应该可以推测国内流媒体也使用了类似的算法。值得一提的是,Bandcamp 是为数不多没有使用这种算法的音乐平台。

这看似是在给响度战争擦屁股,流媒体不是坏人,但恕我直言,这造就了更多的问题。首先,把已经提高响度的音频再降低响度,音频的质量相比原始音频肯定会有损失。其次,根据澳大利亚 Newcastle 大学的[一篇研究报告](https://www.researchgate.net/publication/326847098_Towards_Standardised_Loudness_Normalisation_in_Music_Streaming),音乐流媒体使用的响度均衡算法虽然是常见手段,但并**不标准化**,因为使用了不同的算法,不同平台使用的算法有完全不同的表现。这直接导致了在不同流媒体平台上播放相同的音乐,得到的可能是完全不同的效果。还有一些歌曲本身就比较安静,经过算法处理之后效果就完全不同了。

音乐制作人把音乐家的作品用技术手段提高响度,流媒体平台再插一脚进来用自己开发的算法调整响度,谁还在乎音乐家最初想要表达的东西?

比起允许平台亵渎音乐,直接对用户得到的音频数据做处理,*我还不如把系统权限放开给你,允许你动我音量设置呢*。许多流媒体有关闭响度均衡算法的设置,但再次恕我直言,这和「我们默认会收集你产生的数据训练 AI,但你可以在设置里关闭」是一样的。真的尊重用户的话,应该默认关闭,或者弹出显眼的提示框询问用户是否开启。

除了调整响度的算法,不同的流媒体平台可能还会有其他修改音频的算法,我印象中网易云音乐就有一些可选的类似音效滤镜的东西。不过这些算法是如何实现的,究竟对音频本身做了什么修改,我们不知道,毕竟它们不是开源的。

还有说法是,不同的流媒体平台可能会得到不同的母带(master recordings),得到什么版本的母带完全是由唱片公司决定的。这中间具体发生了什么交易,我们不知道,毕竟他们不会公开商业机密。不过,我个人倾向于相信,没有多少唱片公司会专门为不同的平台制作不同的母带,母带工程师的工资可不便宜。不过,据 [Lucida](https://lucida.to/faq#:~:text=Some%20artists%20and%20labels%20are%20known%20to%20post%20upscaled%20files%20onto%20streaming%20services.) 所言,一些艺术家和唱片会给流媒体提供增加过响度的音频文件,和 CD 里刻录的音频有所不同(至于黑胶,由于存储介质和原理完全不同,在制作母带时就会有差异)。

而且,流媒体究竟会不会给用户提供无损音频也是个问题。据说 Tidal 使用的是 FLAC 格式的音频,而 Apple Music 可以开启无损音频,提供的是 ALAC 格式。无损音频肯定比有损压缩的音频更占空间,消耗更多网络资源,大部分免费和部分付费(即 Freemium 模式)的平台可能都不会提供真正的无损音频格式。更何况,就算本身是无损格式,最终解码得到的 PCM 比特流真的和母带一模一样吗?中间有没有再做其他的处理?就算关掉了响度均衡也一样吗?我们不知道,再次强调,**它们不是开源的**。

无论怎么看,流媒体上的音乐都很混乱。简单来说,流媒体是在音乐家和粉丝之间再加了一层中间人,而这两者之间本来就已经有唱片公司、发行商干扰了。加了这么多中间人,我们就不难想象那些真正创造音乐的人能被分到多少钱了。当然,我不关心那些*钱多得能在里面游泳的*大明星,我关心的是小艺术家。我喜欢 Lady Gaga 和她的作品,但我绝对不会同情她。

## 抛弃流媒体

既然流媒体这么混乱,那就跑路吧。要求每个人都购买 CD 听音乐是不现实的,那么有没有地方,可以直接获取高质量的音乐,以自由且开放的音频格式提供下载,并且能够直接向艺术家付款呢?

*cartlE:你这个铺垫不是很到位,你前面都提了好几次 [Bandcamp](https://bandcamp.com/) 了。*

*Eltrac:你别管!*

### 去营地整点 FLAC

[Bandcamp](https://bandcamp.com/) 是一个音乐销售平台,也提供流媒体播放,但一般来说,用户都会直接以 FLAC 格式下载音乐,平台也提供 ALAC、WAV 和 AIFF 等高质量音频格式和 MP3、AAC 等有损压缩格式。Bandcamp 上几乎都是独立艺术家,在这里,你可以直接给艺术家或者他们的唱片公司付费,他们最终会收到粉丝支付金额的 82%[^10]。

购买之后,Bandcamp 会显示「You own this」,表示你拥有这张专辑,之后可以无限流媒体播放,或者以任意格式下载到本地,用任何支持该格式的播放器播放。没有 DRM 加密,你真的拥有这张专辑。下载时还会标注音频的采样率和比特深度,可以说足够透明了。

这里没有什么大明星的音乐,真的会有人买这些小众乐队和音乐家的音乐吗?有的,截至目前,Bandcamp 上的粉丝总共为艺术家们支付了接近 17 亿美元,每天都会售出上万张专辑,每两到三秒就有一张专辑被卖出。你可以在他们的首页看到实时数据。

不过,要在 Bandcamp 上找到喜欢的音乐,一开始会有点困难,毕竟这里没有什么推荐算法,你只能看到一些电台和编辑挑选的专辑。我想这对习惯了听别人制作的歌单和自己收集歌单的人会特别不习惯,在这里你没办法在那些名字起得很文艺的歌单里听到随机出现的音乐,你只能找到编辑挑选的来自某张专辑的音乐。用户可以单独购买专辑里的一首曲子,但整体而言这里更注重专辑。

在我个人的体验里,Bandcamp 上的风格以电子(electronic)、另类(alternative)、实验性(experimental)居多,还有不少独立流行(indie pop)和各种类型的摇滚,总体而言是非常多样的。可以在自己感兴趣的类型列表里翻一翻,说不定会发现喜欢的,或者看看首页的「New and Notable」这一栏。我就在这里发现并购买了我的第一张摇滚专辑,来自 Red Sun Atacama 的《Summerchild》,购买之后还收到了一封感谢邮件,大概是自动发送,但发信地址是 `@gmail.com`,看起来是个人邮箱,而且内容都是亲自编写的纯文本,总之很亲切。

如果想发现一些完全不同的音乐,就去 Bandcamp 看看吧。

### Let's Pirate

*可这样我还是不能离开主流的流媒体平台呀?我要去哪里听那些大歌手的音乐?*

我当然不会说用百度网盘或者夸克网盘,这种被严格监管的、中心化的平台我是不信任的。想必不需要我来骂百度网盘,读者应该也可以自己想象了。

我建议读者尝试 [Soulseek](https://www.slsknet.org/),这是一个跨平台的 P2P 文件分享网络,带有房间、搜索引擎和搜索相关系统能帮助用户方便地找到有相同兴趣的人。Soulseek 上常分享一些小众音乐,在上面很容易找到音乐资源,不过,加入 Soulseek 网络之前,自己也需要准备一些文件来分享,因为一些 Soulseek 用户只会分享文件给那些也开放分享的人。

Soulseek 还有一个更现代的客户端,叫作 [Nicotine+](https://nicotine-plus.org/)。

谈到 P2P,你应该还知道另一种文件分享协议,名为 BitTorrent。这两种类型的文件分享网络都出现在 2001 年左右,不过我印象中 BitTorrent 更多地是用来分享视频文件的,尤其是电视剧和电影资源。

无疑,找资源是麻烦的。如果你只是讨厌商业流媒体的收费机制,不想忍受被 DRM 严格保护的封闭格式,也不想被流媒体平台的算法侮辱,不想给好几个流媒体平台付费,只是因为你喜欢的歌手们不在同一个平台上,那么我的建议是:直接从质量较好的流媒体上*偷*音乐吧。

[Lucida](https://lucida.to/) 这个平台允许用户直接从 Qobuz、Tidal、Soundcloud、Deezer、Amazon Music 和 Yandex Music 下载较高质量的音乐。至于原理,就是使用他们在这些平台上的账号(或者用户捐赠的账号)接收音频流,转换成用户要求的格式,添加必要的元信息(专辑封面、艺术家信息和发行年份等),然后打包给用户下载。Lucida 还能直接下载一整张专辑,打包成 ZIP 文件下载。

顺带一提,Lucida 有提供开源的音乐下载库,用 TypeScript 编写,代码托管在 [Codeberg](https://codeberg.org/lucida/lucida) 上。库是开源的,但 Lucida 网站的前后端目前并不是开源的,[据说](https://lucida.to/faq#:~:text=Are%20you%20OSS%20/%20open%2Dsourced%3F)他们打算之后公开源代码。

这么做道德吗?不好说,但的确是违法的(摊手),所以 Soulseek 和 BitTorrent 等文件分享网络也仅在个人电脑之间建立,所以 Lucida 的开发者和维护者都是匿名的,用 Telegram 通信。你可能也听说了,前不久 [Anna’s Archive](https://annas-archive.gl/) 因为[备份了 Spotify 上的所有音乐](https://annas-archive.gl/blog/backing-up-spotify.html)被起诉,受到了很多关注,失去了 `.org` 域名,最近也失去了 `.li` 等域名。他们在看到掀起了这么大的反应之后撤掉了网站上有关 Spotify 的链接。[^11]

我对此的态度相当不专业,所以请谨慎对待:我更愿意把钱给 Bandcamp 上的小艺术家,那些头部音乐家不需要我的支持,更何况,我付给流媒体音乐的订阅费并不会被直接支付给他们。虽然我很愿意购买我喜欢的专辑,但他们只给我提供了流媒体和实体音乐(CD 或黑胶)这两个选项,那我只能找第三条路了。

### 本地音乐的魔力

我之前一直使用 Apple Music,开启了无损模式,照理来说,苹果会给我提供 ALAC 格式的音乐,照理来说,ALAC 解码之后得到的音乐和未压缩的音频是完全一致的。

令人意外,我能明显感受到我从 Lucida 上下载的专辑,听起来比 Apple Music 上播放的专辑,质量好太多,而我根本不是音乐发烧友,我使用的播放设备只是 AirPods 而已。我不认为这是安慰剂效应,因为我专门用同一首歌对比了本地播放的 FLAC 音乐和 Apple Music 上流式播放的音乐,真的有明显的不同。

但是,Lucida 不也是从流媒体上下载的音乐,转换成了 FLAC 格式而已吗?为什么会有音质差别?我想答案已经在上一节谈过了,流媒体很混乱,不同平台的播放效果不同。我们不清楚背后发生了什么,毕竟商业行为不是透明的,技术也不是开源的。我想要么是 Apple Music 拥有的母带质量比较差,要么悄悄地对源音频文件进行了有损压缩,要么加入了神秘的算法调整音频。

要提前说明的是,我能听出明显区别的音乐大多数都是摇滚乐、迪斯科和电子舞曲,或者是那些使用了大量乐器和电子合成的音乐,音频中包含很多细节。主要的不同是我从 Lucida 上下载的(准确来说是从 Amazon Music 或者 Tidal 上偷来的)音乐,音频中的细节更清晰,比如我使用 Apple Music 听音乐时,使用相同的设备,就从来没有听到 Lady Gaga 的《Venus》的背景里有一个空灵的声音在重复 *TO THE PLANET*,没有听到 Harry Styles 的《Dance No More》背景里一直有不同的人声在发出叫声。

顺带一提,我在本地播放《Artpop》这张专辑的时候感到非常意外,因为我突然听到了一首我从未听过的名为《Jewels N’ Drugs》的歌,打开 Apple Music 查看才发现 Track 5 的确从平台上被移除了,可能是审查机制。我印象中《Harry's House》这张专辑里有一首歌也在 Apple Music 上听不到,而 Lady Gaga 的《Judas》也曾因为涉及宗教被不少国内平台封杀。

在本地播放的音乐,乐器或合成音的重音会更清晰,甚至有种*砸地感*。我甚至觉得,一些歌曲的质感在本地播放的质感完全不同,一些乐器的声音更突出,我听到了好多我之前没有听过的细节。

上面这些感受有可能是流媒体平台之间音频质量差异导致的,可能不具有代表性。于是我又在 Steam 上购买了《To The Moon》这款游戏的原声带(Steam 也提供 FLAC 格式下载),听完的感受是:我这辈子所有的《For River》都白听了。*怎么回事?连钢琴的声音都有差别?*

就算不谈略有争议的音质问题,播放本地音乐而不依赖流媒体也有其他无法替代的优势。首先,即便离开了网络,你也能播放喜欢的音乐;其次,即便离开了某个平台,你也能播放喜欢的音乐(因为你一开始就不在任何一个平台上);再次,即便离开了某个播放器,你也能播放喜欢的音乐,只要使用开放格式和支持解码这种格式的播放器就好。

本地音乐还会有一种收集的仪式感,因为必须要自己找音乐、下载、导入播放器。人们习惯了使用流媒体,或许时常忘了音乐是需要自己去发现的东西。即便没有能力消费 CD 和黑胶等实体音乐媒介,也能通过下载音乐到本地来体验收集的乐趣。

而且,以开放格式存储在你的硬盘里的音乐,真的就是你的啊!

### 我没有那么多硬盘空间怎么办?

你有。

一首采样率为 44.1kHz,比特深度为 16-bit,时长在 2-4 分钟左右的歌,大小约为 30MB。老实说,这比很多人做的 PPT 还小。假设一张专辑包含 15~20 首歌,大小就是 450-600MB。我下载了 18 张时长不一的专辑,占用了大约 7GB 的存储空间。假设一共下载了 100 张专辑,占用的空间大约是 50-60 GB。我记得我用了一年多的 Apple Music,听过的专辑都会本地缓存,才占用 30 GB 左右的本地空间。

放在以前可能很多,但对于现在的大多数人而言,这些存储空间不足为奇,随便买一块 U 盘或者硬盘就能存下。如果设备本身的存储空间就比较大,也可以直接存放在设备上。

对我而言,手机的存储空间除了放照片、聊天记录,剩下的就是音频文件了,管理得当就没有问题。

### 分析统计和推荐怎么办?

我很想发表暴论说,年度回顾和音乐统计之类的东西是流媒体给用户创造的需求,没有人需要被提醒自己今年最喜欢的歌手是谁,最喜欢的专辑是什么,播放得最多的歌是哪首——如果你真的喜欢,那你自己会知道的。不过,唉,我其实没资格说这话,因为我的确也想要一些实在的数据。

推荐算法在社交媒体和视频平台上可能是令人成瘾的毒瘤,但对想要发现新音乐的人来说,可能是真的有用。如果离开了流媒体,是不是也没有办法享受这些服务了呢?当然不是。

[Last.fm](https://www.last.fm/) 提供音乐追踪服务,你可以使用支持 last.fm 的播放器或者相关插件,向这个服务发送 Scrobble,它就会记录你播放了什么音乐。所谓 Scrobble 就是对一次播放音乐的记录,只有一首歌播放时长超过一半的时候才会算作 Scrobble。有了记录之后你可以查看上周、上个月和去年的听歌报告,最近听了什么歌,听得最多的艺人和专辑是什么,last.fm 还会显示你当前正在播放什么歌。当然,last.fm 也会根据你的喜好为你推荐专辑和歌手。

他们有提供详细的 [API 文档](https://www.last.fm/api/scrobbling),只要向对应的 URL 发送 POST 请求即可。如果你的播放器不支持 last.fm,大概也能很容易地找到或者自己做一个插件。再者,媒体播放一般都受到操作系统控制,所以理论上可以在操作系统层面监听音乐播放情况,然后发送记录。

值得一提的是,last.fm 是 [Paramount](https://www.paramount.com/)(一家美国的大型娱乐集团)旗下的服务,大概率不兼容 GDPR 法案,注重隐私的用户需要谨慎考虑。不过我觉得,自己听了什么歌这种数据,并没有太敏感。

搜索之后我并没有找到 last.fm 的替代方案(倒是有个 [stats.fm](https://stats.fm/),但那是给 Spotify 用的),自由软件就别想了。或许可以做一个兼容 Scrobble 的开源自托管后端,把数据都掌握在自己手上。

### 歌词怎么办?

从我自己的体验来看,听歌时看歌词其实不是硬性需求,音乐播放器又不是全民 K 歌。对我而言,除非我在听华语和英语以外的语言,我基本都能听清歌手在唱什么,而且很多时候听清歌词并不重要,尤其是在听摇滚乐的时候。我回想起小学和初中时看 Minecraft 游戏实况的时候,所有的实况主几乎都没有做字幕,而我也看得很投入,一看就是四十分钟以上,很少出现听不懂的情况。反观现在,给视频加上 AI 识别的低质量字幕已经是惯用手段了。人们愿意用来阅读大段文字的时间变少了,对字幕和歌词的需求却与日俱增,真是令人唏嘘。

就跟写代码的时候其实不需要有一个文件目录树一直放在编辑器界面占位置一样(是的,不需要,只要熟悉项目结构就可以用模糊搜索跳转到文件,速度还更快,不熟悉的话才需要看目录树),听歌的时候也不需要有歌词一直在跑,等需要看歌词的时候再专门找歌词来看就好。

找歌词的平台,最全的应该是 [Genius](https://genius.com/)。如果不想被追踪、不想运行不自由的 JavaScript 代码,它还有两个替代前端 [Dumb](https://codeberg.org/rramiachraf/dumb) 和 [Intellectual](https://github.com/Insprill/intellectual)[^12],我只用过前者,体验还不错。

大部分时候只享受音乐就好,在需要的时候再找歌词。

至于歌词翻译,我又要发表暴论了,请做好准备:*我不明白为什么人们会执着于那些自以为是、文绉绉、沉溺在自我感动里亵渎艺术家原义、味儿能冲出屏幕的低质量歌词翻译,你都在听外文歌曲了,请欣赏原文!*

我无意指责志愿者无偿的翻译工作,我只是不赞赏这种文化,我也不认为因为做这些工作的人是志愿者就可以忍受低质量的成果。我在《[翻译的吃力不讨好](/essays/翻译的吃力不讨好/)》这篇文章里表达的观点如下:

> 在译文里加上原文没有的东西造成了意思传达的偏差,是不能容忍的;如果这种错误的改动是为了「呈现效果」而非纯粹的技艺不精,做出这种行为的译者是偷懒、不负责任且不尊重原作的。
>
> 翻译很难,甚至吃力不讨好,应该被理解,但这不代表坏的翻译应该被容忍。
>
> 再好的译者也无法把翻译做到完美,如果想要毫无偏差的呈现,比起对质量尚可的翻译吹毛求疵,不如直接去读原文。

前不久 Apple Music 也添加了歌词翻译[^13](据说这个平台常年被诟病没有歌词翻译),不过并不是像国内流媒体那样允许用户自己提交歌词和翻译,而是找了专业的人来做翻译,并且要求按照原义呈现。严格翻译标准导致的结果也不能让用户满意,不少人觉得那些直白的翻译很好笑。

我们或许可以同意:诗是没有办法被翻译成另一种语言的。歌词也同理,就算是那些被批评满是口水话的歌,也可能包含双关语等难以被翻译的元素。

综上所述,我的态度是:不需要翻译。

### 为什么不自建流媒体?

诚然,可以用 [Navidrome](https://www.navidrome.org/) 等开源软件自己搭建流媒体服务,对于有 NAS[^14] 设备的用户来说应该很方便,而且找到支持相关服务的播放器也不难。

可这么做的成本不低,需要一台 NAS 或者云服务器,需要运行软件占用网络带宽和内存资源,反观本地音乐,只需要一个播放器和音频文件本身就够了。在我看来,除非是要给家人和朋友也提供服务,或者托管数量很多的音乐,否则没必要自建流媒体服务。当然,如果是想折腾技术玩玩的话,也是很不错的。

前文已经讲过了,设备的本地存储在大多数时候够用,也可以购买廉价的外部存储作为拓展,存放不常听的音乐。

### 要怎么给朋友分享喜欢的歌?

“嘿,我刚听了 Harry Styles 的《Aperture》,感觉你会喜欢,也推荐你听听。”

~~此处应该有黑人摊手迷因图。~~

话说回来,就算没有离开流媒体,你和你的朋友真的在同一个平台上吗?你在 Spotify 上听的歌若是直接分享给使用网易云音乐的对方,恐怕也是不行的吧?如果是国内的流媒体,分享时还会生成链接卡片指向难用的微信小程序或者无法直接跳转的网页,这真的比直接分享歌名和歌手名字更好吗?

另外,我说过一首歌的大小比很多人做的 PPT 还小,所以…… 为什么不直接发音频文件给对方呢?

至于歌单(或者说播放列表),这的确是个问题,分享歌单没有那么容易。本地播放器大部分都是以专辑为单位管理音乐的,但有一些也支持创建歌单,只不过不能像流媒体那样方便地分享出去。所以…… 为什么不打包成 ZIP 文件发给…… 算了,还是不太现实。不过歌单这个东西,尽管有第三方的同步工具,但仍然是锁死在平台上的,留在流媒体上也没有让分享很方便,除非你和朋友在同一个平台上。

我想或许可以开发一套开放协议,用歌曲元信息组成歌曲列表,以开放格式(比如 JSON)存储歌单信息,让播放器读取。

很主观的建议:忘掉歌单,听一张完整的专辑吧。

## 最后

*我不是只想记录一下我抛弃流媒体,拥抱本地音乐的心路历程吗?怎么一路狂飙,从开放格式写到数字信号处理,又写到响度战争和 Piracy 了?*

事已至此,就这样吧。

希望你也能自由地听到自己喜欢的音乐。

[^1]: 参见:[FLAC - 维基百科](https://zh.wikipedia.org/zh-cn/FLAC#:~:text=%E8%87%AA%E7%94%B1%E6%8C%87%E7%9A%84%E6%98%AF%E8%BF%99%E4%B8%AA%E9%9F%B3%E9%A2%91%E6%A0%BC%E5%BC%8F%E5%8F%AF%E4%BB%A5%E5%9C%A8%E4%B8%8D%E9%9C%80%E4%BA%8B%E5%85%88%E8%AE%B8%E5%8F%AF%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E4%BD%BF%E7%94%A8%EF%BC%88xiph.org%E4%BF%9D%E7%95%99%E4%BA%86%E5%88%B6%E5%AE%9AFLAC%E8%A7%84%E6%A0%BC%E5%8F%8A%E8%AE%A4%E8%AF%81%E5%85%BC%E5%AE%B9%E8%A7%84%E6%A0%BC%E7%9A%84%E6%9D%83%E5%88%A9%EF%BC%89)

[^2]: 参见:[Audio file format - Wikipedia](https://en.wikipedia.org/wiki/Audio_file_format#List_of_formats)

[^3]: 参见:[MP3 - Wikipedia](https://en.wikipedia.org/wiki/MP3) 和 [音频文件格式 - 维基百科](https://zh.wikipedia.org/wiki/%E9%9F%B3%E9%A2%91%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F#:~:text=1996%E5%B9%B4%EF%BC%8CWinamp1.0%E7%89%88%E7%9A%84%E5%8F%91%E5%B8%83%E6%88%90%E4%B8%BAMP3%E6%A0%BC%E5%BC%8F%E6%B5%81%E8%A1%8C%E7%9A%84%E5%82%AC%E5%8C%96%E5%89%82%E3%80%82Fraunhofer%E5%BC%80%E5%A7%8B%E5%90%91%E9%87%87%E7%94%A8%E4%BB%96%E4%BB%AC%E7%9A%84%E7%AE%97%E6%B3%95%E7%9A%84%E5%85%AC%E5%8F%B8%E7%B4%A2%E8%A6%81%E8%AE%B8%E5%8F%AF%E8%AF%81%E8%B4%B9%E7%94%A8%EF%BC%8C%E5%9B%A0%E6%AD%A4%E5%85%B6%E4%BB%96%E6%9B%BF%E4%BB%A3%E7%9A%84%E5%85%8D%E8%B4%B9%E7%AE%97%E6%B3%95%E5%BC%80%E5%A7%8B%E8%A2%AB%E7%A0%94%E5%8F%91%E3%80%82)

[^4]: 参见:[WAV - Wikipedia](https://en.wikipedia.org/wiki/WAV) 和 [Audio Interchange File Format](https://en.wikipedia.org/wiki/Audio_Interchange_File_Format)

[^5]: 来源:[Apple Lossless Audio Codec - Wikipedia](https://en.wikipedia.org/wiki/Apple_Lossless_Audio_Codec#:~:text=ALAC%20has%20been%20measured%20to%20require%20around%20four%20times%20as%20much%20CPU%20power%20to%20decode%20than%20FLAC%20does%2C%5B5%5D%20with%20implications%20for%20battery%20life%20on%20limited%2Dpower%20devices.)

[^6]: 来源:[RFC 9639](https://datatracker.ietf.org/doc/rfc9639/#:~:text=sample%20rates%20from%201%0A%20%20%20to%201048575%20hertz)

[^7]: 来源:[RFC 9639](https://datatracker.ietf.org/doc/rfc9639/#:~:text=bit%20depths%20from%204%20to%2032%20bits) 和 [ALAC - Wikipedia](https://en.wikipedia.org/wiki/Apple_Lossless_Audio_Codec#:~:text=ALAC%20supports%20up%20to%208%20channels%20of%20audio%20at%2016%2C%2020%2C%2024%20and%2032%20bit%20depth%20with%20a%20maximum%20sample%20rate%20of%20384%C2%A0kHz.)

[^8]: 来源:[Loudness War - Wikipedia](https://en.wikipedia.org/wiki/Loudness_war)

[^9]: 参见:[Loudness War - Wikipedia](https://en.wikipedia.org/wiki/Loudness_war#Criticism:~:text=Engineers%20can%20apply%20an%20increasingly%20high%20ratio%20of%20compression%20to%20a%20recording%20until%20it%20peaks%20more%20frequently%20at%20the%20maximum%20amplitude%2C%20a%20technique%20colloquially%20known%20as%20brickwalling.%20In%20extreme%20cases%2C%20efforts%20to%20increase%20loudness%20can%20result%20in%20clipping%20and%20other%20audible%20distortion.)

[^10]: 这是平均数,数据来源于 Bandcamp 的[关于页面](https://bandcamp.com/about#:~:text=When%20a%20fan%20buys%20something%20on%20Bandcamp%2C%20an%20average%20of%2082%25%20of%20the%20money%20goes%20to%20the%20artist%20or%20their%20label)。

[^11]: 不过,如果你想的话,可以去他们的 [Matrix 群组](https://matrix.to/#/#annas:archivecommunication.org)上找人要 BitTorrent 链接。但那是一整个 Spotify 上的音乐,除非是想要帮忙备份,就算了。


[^12]: 这个命名方式也太 Genius 了……

[^13]: 参见:[iOS 26 中的 Apple Music 更新](https://artists.apple.com/zh-cn/support/5550-ios-26-whats-new)

[^14]: Network Attached Storage,网络附接存储,一般放在家里当作私人网盘。