异步采样率转换 ASRC:重采样、Farrow 与跨时钟域音频
更新时间:2026-09-19。前置:ADC 过采样/抽取/混叠、S/PDIF 时钟恢复、I2S 数字音频。系统里同时有 44.1kHz(CD)和 48kHz(USB/蓝牙/HDMI)音频域时,需要把数据从一个采样率搬到另一个;当两侧时钟还是异步独立晶振时,就是 ASRC。
一、为什么不能简单填零或丢点
- 直接在相邻样本间插 0 或线性插值,等于用很烂的滤波器,产生镜像频率/混叠和高频折叠,听感发刺、有混叠噪声(混叠原理见 ADC 过采样)。
- 44.1k↔48k 比率 = 147/160,不是整数,要先上采样 160 倍再下采样 147 倍,直接做倍率巨大不现实。
- 两侧若是独立晶振(如 S/PDIF 恢复时钟和本地 codec 时钟,见 S/PDIF),实际频率有 ±几十 ppm 漂移,比率不是精确 147/160 而是缓慢变化的——固定比率转换会周期性补/丢样本造成咔嗒声(slip)。
二、采样率转换的数字原理
整数插值(L 倍):每两个样本间插 L−1 个零,再经截止频率 π/L 的低通(插值滤波)消除镜像并平滑。 整数抽取(M 倍):先低通到 π/M 防混叠,再每 M 个取一个(先滤波后抽取,顺序不能反,见 ADC 抽取)。 有理分数 L/M:上采样 L、共享低通(截止 π/max(L,M))、下采样 M,可一次合并。
多相 FIR(polyphase):把插值后的长 FIR 拆成 L 个相位子滤波器,只在每个输出点计算需要的那一支,避免对插零后的海量零做无用乘加,是高效实现。L、M 较大或任意比率时用多级(半带 FIR 级联)降低运算量。
Farrow 结构(任意/时变比率):用分段多项式(如三次立方插值)拟合连续波形,每个输出点给定一个分数相位 μ∈[0,1),用固定系数多项式网络直接算出该时刻样本。μ 可逐点变化,天然支持任意、甚至缓慢变化的重采样比,是 ASRC 常用结构。
输入样本域 Fsin ─► 重采样引擎(polyphase/Farrow),由「相位累加器」驱动
相位累加器每输出步进退 Δμ(∝ Fsin/Fsout,可实时微调) ─► 输出域 Fsout三、同步 SRC 与异步 ASRC
- 同步 SRC(synchronous):输入/输出时钟由同一主时钟分频派生(比率精确固定,如同一晶振出 44.1 和 88.2),相位关系已知,固定 polyphase 系数即可,不产生滑动。
- 异步 ASRC(asynchronous):两侧时钟独立、无共同频率基准。需要一个比率估计/自适应机制:
- 用一个跨时钟域缓冲(异步 FIFO)承接输入;
- 测量 FIFO 水位(fill level):输入快则水位涨、慢则降;
- 用数控振荡器(NCO/相位累加)把估计的瞬时比率喂给 Farrow/polyphase 的步长 Δμ,水位高就略增步长(读快些)、水位低就减小,形成慢控制环;
- 或用硬件频率测量(数输入/输出周期数)直接估比率。
- 这样输出时钟完全由本地域决定、不把外部抖动传进来(这正是 ASRC 的一大价值:隔离时钟域、抑制输入 jitter),同时永不溢出/抽空,避免周期性补丢点的爆音。本质是把 CDC FIFO 的水位反馈变成连续的比率微调,而不是硬补/丢整样本。
四、性能指标
- 通带平坦度/波纹:重采样滤波器在通带内的幅度起伏,过大会染色。
- 阻带衰减/镜像与混叠抑制:插值要压镜像、抽取前要压会折叠的高频,音频要求 80~120dB。
- 瞬态/混叠(pre/post echo):高阶 FIR 预振铃;Farrow 阶数低会有谐波失真。
- 群延迟:长 FIR 延迟大,实时通话要短。
- 比率跟踪带宽:ASRC 控制环要足够快跟上输入频率变化(如 varispeed、wowie),又不能太快把抖动当比率变化传进输出(jitter/THD 折中)。
五、应用与典型坑位
- 音频 hub/SoC:蓝牙(常 8/16k)、USB、HDMI、SPDIF、本地 codec 多域混音前统一到一个域;混音器要求所有流同采样率,必须先转换(混音见多通道 TDM 音频)。
- 数字分频/主动降噪、AVB/TSN 网络音频时钟恢复(见 TSN)。
六、常见的坑
- 线性/零阶插值当 SRC:镜像/混叠严重,高频发刺。
- 抽取前不滤波:高频折叠进带内(顺序反了)。
- 异步当同步用固定 147/160:独立晶振有 ppm 漂移,必然周期性补/丢点出咔嗒。
- 硬补/丢整样本:跨时钟域直接靠 FIFO 满丢帧,产生可闻爆音;要用连续比率 ASRC。
- FIFO 水位环调太激进:把输入短期抖动当频率漂移,输出被频率调制(wow/抖动失真)。
- 比率估计太慢:输入采样率快速变化时 FIFO 溢出/抽空。
- 系数阻带衰减不足:镜像残留、底噪高。
- 通带波纹/相位非线性:染色、立体声像偏移。
- 位宽/中间量化:重采样运算截位损失动态范围,要足够内部精度 + dither。
- 延迟被忽视:直播/回采场景长 FIR 延迟超标。
- 多声道不同步:各声道用独立相位/水位导致相位错位,要共用比率。
- 比率边界 μ 处理错:μ 越界未进位到下一个输入样本索引,产生重复/跳点。
相关与延伸
混叠/抽取基础见 ADC 过采样、ΣΔ 抽取;异步输入时钟见 S/PDIF;跨域水位思想见 CDC FIFO;网络音频时钟见 TSN。
总结
采样率转换的正解是「先抗镜像/抗混叠滤波再改采样密度」:整数比率用插值/抽取、有理比率用共享低通、高效实现靠多相 FIR,任意或时变比率用可逐点给分数相位 μ 的 Farrow 结构;当两侧时钟同源时只需固定系数的同步 SRC,而两侧独立晶振的异步 ASRC 必须用跨时钟域 FIFO 的水位或频率测量实时估计瞬时比率、连续微调重采样步长,从而既不溢出抽空也不做可闻的整样本补丢,并顺带隔离外部时钟抖动——线性插值、抽取前不滤波、把异步当同步写死比率和水位控制环带宽调错,是四类最常见的错误。