因为发现自己听 Apple Music 的环境「设置好像不太对」,就借这个机会把 数字音频到底经过哪些环节、又在哪里被改写,整理成了这篇笔记。
0. 前提:我的环境
先确认一下自己的配置。后面所有说明都以此为基础。
| 位置 | 器材 | 作用 |
|---|---|---|
| 音源 | Apple Music(Windows 版) | 流媒体・播放软件 |
| PC | Windows | 由操作系统中转音频 |
| 转换 | Steinberg UR22mk2 | 音频接口 |
| 输出① | Yamaha HS5 | 有源监听音箱 |
| 输出② | Sony MDR-900ST | 监听耳机 |
各器材的定位
Steinberg UR22mk2 —— 音频接口 Steinberg 是雅马哈旗下的音频设备与软件厂商(Cubase 的开发商)。 UR22mk2 是他家入门级的 USB 音频接口, 本来是录音用的器材,但拆开来看,其实就是把
- DAC(数模转换器)
- 耳放
- 线路输出
塞进一个盒子里而已。它的底子比 PC 内置声卡好, 所以只拿来播放也有意义。最高支持 24bit/192kHz。
在 Windows 上使用需要专用驱动 Yamaha Steinberg USB Driver, 后面要讲的两个设置,其中一个就握在它手里。
Yamaha HS5 —— 监听音箱 内置功放(有源监听)。直接从 UR22mk2 的 MAIN OUT 接过来。 偏平直,低频克制。设计目标不是「让你听得舒服」,而是「让毛病暴露出来」。
Sony MDR-900ST —— 监听耳机 日本录音棚的事实标准。63Ω。 4〜8kHz 有明显凸起,同样是挑毛病取向的声音。
→ HS5 和 900ST 都属于「监听系」。 也就是说,这套环境从一开始就是「精度优先、愉悦性靠后」的性格。 觉得声音硬、听着累,那既不是坏了也不是设置错了,本来就是这么设计的。
1. 数字音频基础
声音是空气压力的变化(连续的模拟波形)。 为了让计算机处理它,就按固定间隔测量波形的高度,变成一串数值。
- 采样率 —— 每秒测量多少次。单位 Hz
- 44,100Hz(CD 规格)/48,000Hz(影视)/96kHz/192kHz
- 位深 —— 一次测量值能分成多少级
- 16bit = 65,536 级/24bit = 约 1,677 万级
用数组来比喻,采样率是元素个数,位深是单个元素类型的精度。
为什么是 44.1kHz
采样定理(奈奎斯特–香农): 只能准确记录低于采样率一半的频率。
人耳可听上限约 20kHz → 乘以 2 需要 40kHz → 再加上抗混叠滤波器的余量 → 44.1kHz。
也就是说,44.1kHz 不是妥协值,而是理论上足以记录可听频段的数值。 这点很重要,因为在这个领域,「数字越大越好」的直觉并不成立。
2. 我这里的信号路径
Apple Music
│ ← 音源本身的采样率(例:44.1kHz)
▼
Windows 音频混音器
│ ← 强制转换为「默认格式」的采样率
▼
Yamaha Steinberg USB Driver
│ ← 可能再次被转换为驱动设置的采样率
▼
UR22mk2 内部的 DAC
│ ← 数字 → 模拟
▼
HS5 / 900ST
有两处彼此独立的设置
问题就出在这里。同一个叫「采样率」的设置项,存在于两个不同的地方。
| 位置 | 设置处 |
|---|---|
| Windows 侧 | 声音设置 → 设备属性 → 高级 → 默认格式 |
| 驱动侧 | Yamaha Steinberg USB Driver 控制面板 → Sample Rate |
这两个值不一致时,就会发生多余的采样率转换(SRC)。
3. 为什么要避免转换
SRC 是从已有的采样点出发,用插值造出本来不存在的中间点的处理。
44.1kHz → 48kHz 不是整数比(147:160), 所以原有的采样点无法原样保留,全部会被重新计算。
如果 44.1 → 48 → 44.1 来回走一趟,这个处理就要跑两次。 劣化本身极其轻微。问题在于这么做什么好处都得不到。
在数字域里,「什么都不做」才是最高音质。 我们要追求的状态叫 bit-perfect(原始字节流原封不动地送到 DAC)。
4. 独占模式,以及 Apple Music 的限制
有一些机制可以绕开操作系统的混音器,让应用直接输出到设备。
| 方式 | 说明 |
|---|---|
| ASIO | Steinberg 制定的规格。低延迟。DAW 用途的标准 |
| WASAPI 独占 | Windows 自带。绕过混音器 |
| WASAPI 共享 | 普通模式。经由混音器,强制重采样 |
※ ASIO 是 Steinberg 的规格并非巧合,UR22mk2 的驱动当然支持 ASIO。 但支持的是驱动这一侧,用不用则取决于应用。
这次的关键就在这里
Apple Music(Windows 版)既不能用 ASIO,也不能用 WASAPI 独占。
→ 永远是共享模式。经由混音器无法避免。
→ 因此对策不是「绕过去」,而是 把各级的采样率统一,做出实际上不发生转换的状态。
参考:其他环境的行为
- foobar2000 / JRiver → 支持 ASIO 和 WASAPI 独占,逐曲自动跟随
- Apple Music(macOS)→ 需要手动改 Audio MIDI 设置
- iOS → 系统自动跟随曲目的采样率(最省心)
5. Apple Music 的音质层级
这次首先查出来的,是 Lossless audio 处于 Off 状态。 也就是说我一直在听 AAC 256kbps。
| 设置 | 格式 | 最高规格 |
|---|---|---|
| High Quality | AAC 256kbps | 有损压缩 |
| Lossless | ALAC | 24bit / 48kHz |
| Hi-Res Lossless | ALAC | 24bit / 192kHz |
- ALAC = Apple Lossless Audio Codec。无损压缩(和 ZIP 是一个思路)。 解压后的数据与原始数据逐比特完全一致
- 曲库大部分是 16bit/44.1kHz。Hi-Res 音源只是一部分
- 「Hi-Res 需要外置 DAC」这个提示 → UR22mk2 就是那个外置 DAC。 那是给用蓝牙或内置扬声器的人看的套话,直接往下走就行
6. 实际做的设置
方针:固定 44.1kHz
曲库大部分是 44.1kHz,对齐到这里,绝大多数曲子就是零转换。
如果固定成 96kHz,44.1kHz 的曲子就全部会被升采样。 升采样不会增加信息(只是插值造出不存在的点), 理论上没有任何好处。
步骤
- Yamaha Steinberg USB Driver 控制面板 → Sample Rate = 44.1kHz
- Windows 声音设置 → UR22mk2 属性 → 高级 → 默认格式 = 24bit, 44100Hz
- 把「音频增强」「空间音效」关掉
- 把 Apple Music 的均衡器和音量校验(Sound Check)关掉
- Windows 音量固定 100%。音量用 UR22mk2 的旋钮调
第 5 条的理由
数字音量调节会削掉位深。 调到 50% ≒ 丢掉约 1bit 的信息。 UR22mk2 的旋钮在模拟级,所以数字数据毫发无损。
UR22mk2 特有的注意点
- 把 MIX 旋钮打到 DAW 一侧到底。偏向 INPUT 的话,输入端子的静音噪声会混进来
- GAIN 关小(只做播放的话用不到输入)
- 接 HS5 用 MAIN OUT(TRS 平衡)。HS5 那边的 LEVEL 设在 -10dB 前后, 音量调节统一交给 UR22mk2 的 OUTPUT 旋钮
7. 效果的优先级(自省)
把这套环境里对音质的贡献度排个序,实际上是这样的。
- HS5 的摆位 —— 离墙 20〜30cm、高音单元与耳朵齐高、垫脚
- 房间声学 —— 反射、驻波
- 900ST 耳罩的状态 —— 塌了之后高频扎耳、低频泄漏。换一副 2 千日元左右
- 音源的品质 —— AAC 256k 还是 Lossless ← 这次发现是 Off,已修正
- 采样率设置 ← 这次调查的内容
- DAC・功放的品牌差异
越靠前越具支配性,差距是数量级的。
把第 5 条弄对,是为了「不把不正确的状态放着不管」, 而不是指望它带来戏剧性的变化。 连 AAC 256kbps 和 Lossless 的差别,能在这套环境里分辨出来就算不错了。
在添置器材之前,先把 1〜3 做好。 这就是结论。
8. 术语表
| 术语 | 含义 |
|---|---|
| 音频接口 | 把 DAC、放大器、输入输出端子整合在一起的外置设备 |
| Steinberg | 雅马哈旗下的厂商。Cubase / ASIO / UR 系列 |
| Sample Rate | 每秒的采样次数 |
| Bit Depth | 每个采样的量化比特数 |
| SRC | Sample Rate Conversion。采样率转换 |
| DAC | Digital-to-Analog Converter |
| 奈奎斯特频率 | 采样率的 1/2。可记录的上限频率 |
| ALAC | Apple Lossless。无损压缩 |
| AAC | 有损压缩。用心理声学模型抽掉信息 |
| WASAPI | Windows Audio Session API |
| ASIO | Steinberg 制定的低延迟音频 API |
| bit-perfect | 原始数据原封不动送达 DAC 的状态 |
| 有源监听 | 内置功放的监听音箱(HS5 就是) |
补充:用工程师的说法重述
理一理,做的事情其实是这样。
- 解压 ALAC 文件 → PCM 采样序列(字节流)
- 让它不经任何修改地抵达 UR22mk2 的 DAC,这个状态就是「bit-perfect」
- SRC、数字音量调节、EQ、效果器,都是改写这段字节流的处理
- 目标是「读出来的字节流,原样递过去」
这和透传(pass-through)一条流时, 不要中间夹一层多余的编码转换是同一回事。 Windows 的混音器是只要不显式绕开就一定会介入的中间层, 而从 Apple Music 又没法绕开它。 所以这次的对策就是「统一输入输出的格式,让它无从介入」。