一段素材的旅程往往是这样手机里存成 M4A剪辑软件要求 WAV为了发微信群压成 MP3上传平台前又被转了一次 AAC。每一步看起来都只是「换个格式」代码跑完还显示成功。可等你在耳机里把最终文件和最初的录音对比一遍会发现高频像被蒙了一层纱——不是哪一步明显出错而是每转一次声音就离原版远一点。放大器一量化噪声只加不减第一个放大器最直接每做一次解码再编码就叠进一层新的量化噪声quantization noise。第一次压缩时编码器按掩蔽模型丢掉一部分细节同时也把量化误差藏在被丢掉的频段附近第二次编码面对的已经不是原始信号而是「原始信号 第一代误差」。它会把这团误差当成有用信号的一部分重新建模于是误差被二次分配、叠加。转三到四轮之后安静段里的颗粒感会明显上来底噪比原文件高出一截。放大器二砖墙截断的上限被逐代压下来第二个放大器作用在频带顶端。低码率有损编码会在高频画一条「砖墙」超过某个频率的细节直接归零。128kbps 的 MP3 大致把砖墙立在 16kHz 附近之上基本不存东西。问题在于第二代编码器看到的频谱高段已经是「秃的」。它在做掩蔽判断时不会去还原不存在的细节只会在现有能量分布上继续做取舍——可丢的范围只会更大。也就是说第一代丢掉的高频不仅不会回来还会让后续每代「更没什么可保」的。MP3→AAC→MP3 走三轮高频发闷几乎是必然而非巧合。放大器三帧与窗的决策被反复放大第三个放大器藏在编码器内部。有损编码是按帧、按窗逐段分析的遇到瞬态鼓点、辅音起音时用短窗压低预回声pre-echo遇到平稳段用长窗保频率分辨率。这套决策依赖对输入信号的判断。当输入本身就是上一代编码的产物时前代留下的误差会干扰瞬态检测——该判为瞬态的段落可能被当成平稳段短窗没开预回声被放大而已经存在于信号里的振铃又会在这一代被当作真实瞬态再处理一次。误差不在同一步累加却会互相喂大。省事版方法真正省事的做法是把「压一次」当成硬约束写进流程。第一步确定母版所有编辑都在无损文件上做导出也先留一份无损。第二步分清「工作格式」和「分发格式」工作阶段用 WAV 转封装过渡只有最终交付那一步才做有损编码。第三步必须级联时选链路里最高的那个码率不让任何一代掉到低码率档避免高频砖墙被逐代压低。第四步批量转码时把参数固定下来保证同一批文件走的是同一条链路。收尾把「第几代」当成一个指标级联转码的损耗不是某一环的锅而是「代」这个维度在悄悄累积。以后再看到格式转换先问一句这是第几次有损编码把代际数压到 1比事后用均衡器救高频省事得多。