ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

技术解析|音频降噪后人声没了怎么办?谱减法与掩码估计的三个分歧

技术解析|音频降噪后人声没了怎么办?谱减法与掩码估计的三个分歧 一段会议室录音空调声和投影仪风扇声铺在底层。你把降噪强度拉高底噪确实干净了可发言人的声音也跟着发闷句尾的轻声字直接没了整句听起来像被掐掉了两端。换一款号称用深度学习的工具底噪是留下了人声却在某些字上「一闪一闪」地发虚像时有时无。同样是「降噪把人声削了」两个工具的坏法却完全不同——这不是调参没调好而是两套算法在根本判断上就走岔了。底层原理谱减法与掩码估计谱减法Spectral Subtraction是经典路线。它先找一段只有噪声的片段比如录音开头的空白算出噪声在每条频率上的功率谱然后在全程里把这条噪声谱减掉。它的判决是「逐频率的能量相减」一句话写出来就是|S(ω)| |X(ω)| − |N(ω)|。掩码估计mask estimation是近十年主流的路线深度学习模型走的正是这条。它不直接减能量而是在时频平面上给每一格算一个 0 到 1 之间的掩码值表示这一格有多大比例归人声掩码乘以原信号就得到估计的人声。它的判决是「逐格的归属比例」。两条路线解的是同一个问题但一个做减法、一个做乘法一个在频率轴上判断、一个在时频格上判断。这个底层差异直接导出下面三个具体分歧。三个分歧分歧一噪声是一整条谱还是一格格概率谱减法的前提是「噪声平稳」——它的功率谱在整段里基本不变一条谱就能代表全程。空调、风扇、电流这类稳态噪声确实如此所以谱减法处理得干净利落。但真实噪声常常不平稳翻页声、椅子挪动、远处的说话声功率谱每一秒都不同。拿一条固定的谱去减变化中的噪声减多了削人声、减少了留残响两头不讨好。掩码估计不依赖「一条谱」它逐格重新判断理论上能跟上非平稳噪声。代价是它需要训练数据见过类似噪声遇到训练分布之外的噪声比如某种没见过的乐器串音它会按「最像什么」硬分同样误伤。底层分歧在于谱减法假设噪声是一个可以整体描述的「对象」掩码估计把噪声看成每一格待表决的「概率」。前者简洁但不灵活后者灵活但依赖先验。分歧二边界是硬切还是 0.5 附近的摇摆这是听感差异最大的一处。谱减法在能量相减后界线附近的频率会出现「这次减成负的、下次减成正的」抖动减成负值再截断为零就留下随机分布的短促音调——行话叫音乐噪声musical noise听起来像一串水滴声比原噪声还烦人。掩码估计输出的是连续值本该更平滑。但在人声和噪声能量接近的过渡频段模型没把握掩码值会在 0.5 上下反复横跳这一帧判 0.6留下一帧判 0.4压再下一帧又跳回来。映射到听感上就是某些音节「一闪一闪」地发虚、时有时无——这正是深度降噪有时带「电子味」的来源。它和音乐噪声是两种不同的听感根源却是同一个边界判定不稳。缓解手段是让掩码输出更平滑或对连续多帧做判决平均。代价是会牺牲一点瞬态响应快速变化的辅音可能被抹平。分歧三幅度和相位到底丢了谁两代方法有一个共同的短板都只处理幅度谱相位直接沿用原始带噪信号的相位。这不是偷懒是无奈。人耳对相位不敏感工程上默认「相位估计不准不如直接用原始的」。但相位并不是完全无关当幅度被大幅改动之后原有的相位和新幅度拼在一起会形成一个两边都不像的短时信号重建回来就有细微的时域失真表现就是人声「发虚、发飘」少了该有的实体感——尤其在被人为压过的频段上。掩码估计在这点上也没好到哪去掩码越接近 0.5对幅度的改动越「半吊子」相位与幅度越不匹配发虚越明显。所以你会观察到被压得最狠的那些频段往往正是听感最「空」的地方。落地方案音频降噪对症下药把上面的分歧落到操作上路径其实很清楚。第一步判断噪声类型稳态还是非平稳。稳态噪声用一次谱减式处理就够非平稳的沿时间轴分段处理比在频率轴上一刀切更有效最好一段一段调。第二步分档来别一把梭。先用小压制量跑一遍听人声是否完好不行再加一档。如果素材需要保留语音细节网页版音频处理工具把本地文件拖进去处理即可。第三步A/B 验证。导出前后各听一遍并做增益对齐重点核对轻声字和齿音。这一遍能拦住绝大多数「压过头」。浏览器里直接打开就能用不用注册、不用装软件处理完的文件 24 小时后自动删除。收尾降噪的每一次调整本质上都是在「留噪声」和「削人声」之间挪一条界线。搞清楚你用的算法在哪一处判断比反复试着拉强度更能对症。看清分歧落在哪里就知道该往哪个方向调。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进