ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

数字如何变声音?一文看懂DAC逆向魔法

数字如何变声音?一文看懂DAC逆向魔法 整个过程就是录音的逆操作:把一串数字,还原成一条连续变化的电压曲线,再推动喇叭振动。录音(ADC): 声波 → 采样 → 量化 → 数字 播放(DAC): 数字 → 还原电压 → 平滑 → 放大 → 声波 ← 本文总览① 数字音频流 [0x3F2A, 0x4B10, 0x3A88, ...] ↓ ② 解码 / 拆声道 还原成 PCM 样点,左右分开 ↓ ③ 过采样 数字滤波 把 48kHz 补插成 384kHz ↓ ④ 调制(现代 DAC) 转成高速 1-bit 流(ΔΣ) ↓ ⑤ 转换成电压 数字 → 实际的电压台阶 ↓ ⑥ 采样保持 形成阶梯波形 ↓ ⑦ 重建滤波 抹平阶梯,变成平滑曲线 ↓ ⑧ 输出级 / 放大 缓冲、音量、功放 ↓ ⑨ 喇叭 电 → 振动 → 声波下面逐步说。① 数字音频流进来播放器从文件或网络拿到数据,送给音频子系统。文件(mp3/aac/flac) → 解码器 → PCM 样点PCM 就是原始样点:每个数字代表某一瞬间的振幅。所有有损/无损格式最终都要先解成 PCM,DAC 只认 PCM。此时数据长这样(16-bit 立体声):时间 → 左: 1024 2048 3001 2500 ... 右: 1100 2010 2980 2600 ... 在文件里是交错存放的: [L][R][L][R][L][R]...② 拆声道、对齐格式交错 PCM → 拆成独立声道 → 统一采样率(需要时重采样) → 统一位深这一步常发生两件会影响音质的事:重采样:系统输出固定 48kHz,你放的是 44.1kHz 的 CD 音频 → 必须换算。44.1 和 48 不是整数倍,算法质量直接影响音质。位深转换:24-bit 降到 16-bit 时必须加抖动(Dither),否则低电平处会出现与信号相关的失真(听起来是颗粒感)。❌ 直接截断 24→16 低音量段落出现粗糙失真 ✅ 加微量随机噪声 失真被转化成听不见的本底噪声③ 过采样 数字插值滤波(关键步骤)这是现代 DAC 音质的核心,也是最容易被忽略的一步。为什么需要直接把 48kHz 的样点变成电压,会得到一个阶梯状波形:理想波形 直接输出的阶梯 ∿∿∿∿∿ ┌┐ ┌─┐ ╱ ╲ ┌┘└┐┌┘ └┐ ╱ ╲ ┌┘ └┘ └┐阶梯里含有大量高频杂讯,频谱上表现为镜像频率(Image):频谱 │ │ ██ 原始信号(0~24kHz) │ ██ 镜像 1 │ ██ 镜像 2 └────┬──────┬──────┬──────┬──── 频率 24k 48k 72k 96k这些镜像必须滤掉。但如果在 48kHz 直接滤,滤波器要在 24kHz 处陡降,这种极陡的模拟滤波器会引入相位失真和振铃。过采样怎么解决先在数字域把采样率抬高:48kHz → 插值 8 倍 → 384kHz 原始: ● ● ● ● 插值: ●∙∙∙∙∙●∙∙∙∙∙●∙∙∙∙∙● ∙ 算出来的中间点插值不是简单复制,而是用FIR 低通滤波器按 sinc 函数算出中间值。抬高后,镜像被推到很远:频谱 │ ██ 信号(0~24kHz) │ │ ██ 镜像(360kHz) └──┬────────────────────────────────┬──── 频率 24k 360k ↑ 中间全是空的 模拟滤波器可以很平缓,不伤及音频结论:过采样把陡峭滤波的任务从模拟域搬到数字域。数字滤波器可以做到极高精度且相位线性,模拟滤波器做不到。④ ΔΣ 调制(现代 DAC 的做法)传统 DAC 用很多精密电阻直接输出 16 或 24 个比特对应的电压。问题是电阻精度做不到那么高——24-bit 要求万分之一以下的匹配度,成本极高。现代做法反过来:用极少的位数 极高的速度。多比特低速 1-bit 高速 16-bit 48kHz → 1-bit 6MHz 需要 65536 个精确电平 只需要 2 个电平(高/低) 电阻精度要求极高 精度要求几乎为零原理:把误差推到高频1-bit 只能表示最大或最小,显然无法精确表示中间值。ΔΣ 调制的技巧是用密度表示数值:要表示 0.5 → ▀▄▀▄▀▄▀▄▀▄▀▄ 一半时间高,一半时间低 要表示 0.75 → ▀▀▀▄▀▀▀▄▀▀▀▄ 四分之三时间高 要表示 0.1 → ▄▄▄▄▄▄▄▄▄▀▄▄ 十分之一时间高每个瞬间都有巨大误差,但平均值是准的。而且通过反馈环路,量化误差被整形推到了人耳听不到的高频:噪声分布 │ │ ╱ │ ╱ │ ────────────────────╱ └──┬──────────────┬──────────── 频率 20kHz MHz 听得见的区域 噪声全被赶到这里 极度干净 后面滤掉这叫噪声整形(Noise Shaping),是 1-bit DAC 能达到 120dB 动态范围的原因。⑤ 实际转换成电压到这一步才真正发生数字变模拟。常见实现:方式原理用在哪开关电容按位连接不同电容,电荷求和主流集成 DAC电流舵(Current Steering)按位开关恒流源,电流求和高性能音频 DACR-2R 电阻网络二进制加权电阻分压老式、发烧友 DACPWM用脉宽占比表示幅值廉价芯片、D 类功放输出通常是电流,需要后级转成电压(I/V 转换)。时钟在这里决定一切每个样点必须在精确的时间输出。时间抖了,等于波形被扭曲。理想: │ │ │ │ │ 间隔完全相等 抖动(Jitter): │ │ │ │ │ 间隔忽长忽短 ↓ 波形在时间轴上被扭曲 → 产生与信号相关的失真所以 DAC 的时钟质量(晶振精度、是否有 PLL、异步重定时)是硬件设计的重点。这也是同样芯片不同实现听起来有差别的主要原因之一。⑥ 采样保持(Zero-Order Hold)DAC 输出的不是瞬间脉冲,而是保持到下一个样点为止的恒定电压。样点: ● ● ● ● ↓ ↓ ↓ ↓ 输出: ┌─────┐ ┌─────┐ │ └─────┘ └── 保持 保持这个保持动作本身相当于乘了一个 sinc 频响,会让高频略微衰减:频响 │━━━━━━━━──╲ │ ╲ 在 Nyquist 处约 -3.9dB └───────────────── 频率高端 DAC 会在数字滤波器里加一段反向补偿(sinc rolloff compensation)把这个斜坡抬平。⑦ 重建滤波(抗镜像滤波)阶梯波形 ──► 低通滤波器 ──► 平滑曲线 ┌┐ ┌─┐ ∿∿∿∿∿ ┘└┐┘ └┐ ──► ╱ ╲ └┘ └┐ ╱ ╲作用有两个:抹掉阶梯产生的高频毛刺滤掉 ΔΣ 调制推到高频的那一大堆噪声(这个量很大,必须滤干净)因为前面做了过采样,这个滤波器可以设计得很温和(典型二到三阶),对音频段几乎没有副作用。这就是过采样的回报:模拟滤波器越平缓,相位失真和振铃越小。⑧ 输出级与放大重建后的小信号 ↓ I/V 转换(电流→电压) ↓ 缓冲 / 运放(提供驱动能力,降低输出阻抗) ↓ 音量控制(模拟衰减,或在数字域做) ↓ 功率放大(耳放 / 功放,把电压推到能驱动喇叭) ↓ 输出一个常被忽略的点:音量最好在模拟域调,或在数字域用足够位深调。❌ 16-bit 音频在数字域降到 10% 音量 → 实际只剩约 13 bit 的有效精度,底噪相对变大 ✅ 数字满幅输出,音量由模拟级控制 或在 24/32-bit 内部精度下做数字衰减这就是把系统音量开到 100%、用功放旋钮调音量更干净的原因。⑨ 喇叭:电 → 声电流通过音圈 → 产生磁场 → 与永磁体作用 → 音圈前后运动 ↓ 推动振膜 → 空气压力变化 → 声波至此,一串数字重新变回了声音。整条链路的失真来源每一步都可能引入问题,排障时按这个顺序查:环节可能的问题听起来像② 重采样算法差高频毛躁、不自然② 位深转换没加 Dither小音量处颗粒感③ 数字滤波滤波器设计激进前后振铃、瞬态发硬④ ΔΣ 调制高电平时不稳定大动态处失真⑤ 转换时钟抖动声场模糊、细节糊⑤ 转换电平超过满幅削波,明显破音⑥ 保持没做 sinc 补偿高频轻微暗淡⑦ 重建滤波滤得不干净底噪、与功放互调⑧ 输出级数字音量压太低底噪抬高、细节丢失⑧ 放大功率不足大音量时失真对照:ADC 是完全镜像的过程录音 (ADC) 播放 (DAC) ───────────────────────────────────────────── 麦克风:声 → 电 喇叭:电 → 声 前置放大 功率放大 抗混叠滤波(防折返) 重建滤波(抹阶梯) 采样(时间离散化) 采样保持 量化(幅度离散化) 电压还原 编码成 PCM 解码成 PCM两边最对称的一对是抗混叠滤波 ↔ 重建滤波:录音前不滤 → 高于 Nyquist 的频率折返成低频(混叠),不可恢复 播放后不滤 → 镜像频率留在输出里,污染音频都是为了同一条定理:采样率必须高于信号最高频率的两倍。几条实用结论1. DAC 不只是查表输出电压,过采样 数字滤波才是音质核心 2. 现代 DAC 用「1-bit 极高速」而非「多bit 精密电阻」 因为前者对元件精度几乎没要求 3. 时钟精度(抖动)和芯片规格同等重要 4. 位深转换必须加 Dither 5. 音量尽量在模拟域调,数字衰减会损失有效精度 6. 采样率不是越高越好,但过采样(内部)确实有用 ——注意区分「文件采样率」和「DAC 内部过采样倍率」 7. 整条链最弱的一环决定结果 旗舰 DAC 接廉价功放,听到的是廉价功放
返回列表