想象一个周末下午,你坐在星巴克和朋友聊天。研磨机轰鸣、瓷杯碰撞、旁桌人的笑声、背景里循环播放的爵士乐……可神奇的是,你依然能听清朋友说的每一句话——你的大脑在自动“降噪”。AI 音频降噪增强技术,就是把这种大脑能力移植到电脑里:让机器学会从杂乱声音中分离人声,把底噪、电流声、环境声统统“调低音量”,甚至反过来增强人声的清晰度。这篇文章会用“在咖啡馆里听朋友说话”这个场景,为你拆开降噪技术的里子:噪音长什么样、AI 如何识别、RNNoise 与 Adobe 等工具如何操作、参数怎么调才能既干净又不失真。读完你不仅听得懂,还能上手把一段嘈杂录音修成干净通透的作品。
对 AI 从业者而言,降噪是内容创作、语音交互、智能会议等场景的基础能力。掌握降噪原理与工具实操,意味着你既能在创作中保质保量,又能在产品落地时设计出更可靠的声音链路。
目录
可视化演示
展示音频降噪核心技术:STFT频域分析流程、传统与AI降噪方法对比、降噪前后波形频谱效果。
本节配有交互动效(进入视口后自动加载,约 3KB)。
STFT:时域到频域转换 分帧加窗将信号分段处理 FFT变换得到时频表示 X(t,f) = STFT(x(t)) 频谱图是降噪的基础
噪音来源探秘:认识你讨厌的“声音客人”
在咖啡馆里,想听清朋友说话,先得知道周围有哪些噪音在捣乱——研磨机的持续轰鸣、隔壁桌的突然大笑、窗外偶尔驶过的车辆。录音里的“声音客人”同样分为几类,长相不同,应对方法也完全不同。
在数字音频中,每一类噪音都会在频谱上留下独特的“指纹”:电流声是低频处一条又细又亮的线,持续不断;环境底噪则像一块铺满灰尘的地毯,覆盖整个中低频;突发声响是偶尔出现的巨大脉冲,一瞬间占满所有频率。底噪可以用“噪声轮廓”法估计后压制;电流声更适合用窄带滤波器切除;突发声则要依赖“门限”或人工剪辑。
一个合格的降噪工程师要做的第一件事,不是动手,而是用耳朵和频谱图判断对手是谁。只有先判断噪音类型,才能选择合适的清除策略,否则就像在嘈杂大厅里漫无目的地大喊“安静”——所有噪音一起被压,人声也跟着遭殃。
1. 信号功率:\(P_{\text{信号}}\) 表示有用的人声信号平均功率,值越大说明朋友说话越响亮。
2. 噪音功率:\(P_{\text{噪音}}\) 表示背景噪音的平均功率,代表咖啡馆里的嘈杂程度。
3. 比值:让信号功率除以噪音功率,超过 1 说明人声占优,低于 1 则噪音盖过人声。
4. 取对数放大:乘 10 再取以 10 为底的对数,得到以“分贝”为单位的信噪比,让巨大差异更直观。
掌握了噪音的“性格”,你就知道在咖啡馆里,哪些客人只需礼貌忽略,哪些客人必须直接请走。
降噪核心原理:AI 如何“听出”人声
你坐在咖啡馆里,大脑其实在做一件极其复杂的事:接收全部声音,却只把注意力锁在朋友的面孔和嗓音上。AI 降噪就是在模仿这种“选择性关注”——它不把声音全部抹掉,而是精确计算“哪些部分是噪音”。
RNNoise 这样的模型使用循环神经网络(GRU)分析每一帧频谱,输出一个 0 到 1 的“增益值”:像是大脑里的音量推子,噪音大的频段被压低,人声集中的频段推子几乎不动。同时,模型会估计一个“噪音轮廓”,即安静片段中噪音的平均模样。
在实际实现中,系统把含噪信号频谱乘以一个增益函数。若某个频点噪音占比高,增益趋近于底线;若人声占比高,增益接近 1。这样一来,噪音被压暗、人声被保留,剩下的信号再通过反变换重建为时域波形。
1. 带噪频谱:\(X(f,t)\) 来自短时傅里叶变换,表示带噪信号在频率 \(f\)、时刻 \(t\) 的强度。
2. 噪音轮廓估计:\(\hat{N}(f)\) 是在录音安静段平均得到的噪音频谱,相当于拍下咖啡馆无人说话时的本底噪音。
3. 噪音占比:用噪音轮廓除以当前带噪频点强度,比值越大,说明该频点越可能被噪音污染。
4. 计算增益并加底线:从 1 中减去 \(\alpha\) 倍噪音占比,再与 \(\beta\) 取最大值,保证每个频点至少有 \(\beta\) 的增益残留。
AI 并不会把噪音物理上“删除”,而是像大脑一样把噪音分量“调成了极低音量”。人声稳稳保留,信号干净通透。
频谱分析基础:给声音拍一张 X 光片
咖啡馆里声音混杂,时间一长你就分不清磨豆机、空调和说话声各占多少。但如果把声音“拍成照片”,每一层的声音成分就会原形毕露。这张“照片”就是频谱图。
声音通常有两个观察维度:时域是“音量随时间怎么变化”,适合看节奏和爆点;频域是“不同频率的能量各有多少”,适合看音色和噪音来源。把二者结合,就是频谱图——横轴是时间,纵轴是频率,颜色深浅代表能量强弱。你一眼就能看出:哪条频带长期亮着(底噪),哪个位置突然爆闪(突发声)。
要把波形变成频谱图,电脑用“短时傅里叶变换”(STFT)逐帧处理信号。就像给一整段录音打上网格,每一小格都做一次频率分析,最终拼成完整的地图。
1. 分帧(取段):把连续音频切成固定长度的小片段,第 \(m\) 帧从 \(n+mH\) 开始取 \(N\) 个样本。
2. 加窗:每帧乘以窗函数 \(w(n)\),压平两端,防止截断带来的频谱泄漏。
3. 离散傅里叶变换:用旋转因子 \(e^{-j2\pi kn/N}\) 在频域上“扫描”,把每一帧拆成不同频率分量。
有了频谱图这张“X 光片”,你就能看清咖啡馆里每一层声音的真实模样,降噪自然不再是瞎猜。
RNNoise工具详解:轻巧的“专属耳朵”
朋友带你去了咖啡馆里的一个僻静角落,虽然仍有底噪,但对话轻松了许多。RNNoise 就是这样一个“专属耳朵”——它专为语音降噪设计,体量小、速度快,甚至能在手机上实时运行。
RNNoise 的核心算法基于深度学习:它不仅做频谱减法,还利用 GRU 网络判断当前声音像不像人说话,从而输出更聪明的增益掩蔽。传统频谱减法容易把乐音残留变成“音乐噪声”,而 RNNoise 因为有人声模型,对这种伪影有天然抑制。
工具操作上,RNNoise 采用命令行和插件两种主要方式。在 Audacity 中安装 RNNoise 插件后,可以选中整段音频直接处理;在命令行中,它支持对大批量文件做批处理,非常适合处理播客或采访素材。很多剪辑软件也内置了类似算法,如 Adobe Audition 的“自适应降噪”和“噪声消除”面板,同样可以用“捕捉噪声样本”的方式精准移除底噪。
RNNoise 的最大价值在于“轻巧可靠”:你不必为一段口播搭建重型服务器,一个低配 CPU 就能完成实时处理。这也决定了它的适用边界:适合持续、平稳的底噪,不适合去除突然的关门声、掌声等瞬态噪音。
在咖啡馆里,RNNoise 就像一位只帮你过滤背景噪音的“专业服务生”,把环境声抹得干干净净,却不会打扰你与朋友的对话。
降噪参数调节:找到“力度”与“温柔”的平衡
在咖啡馆里听朋友说话,如果你把耳朵堵得严严实实,反而连朋友的声音都听不清。降噪参数调节正是这个道理——力度太弱,底噪依旧嗡嗡作响;力度太强,人声发闷、像隔着一层水。真正的高手,会找到那个“恰好能听清”的平衡点。
最重要的参数是 \(\alpha\)(降噪强度)。它相当于增益公式里的激进程度:\(\alpha\) 越大,噪音被压得越狠,但也越容易误伤人声。适合的做法是从较低强度开始,逐级上调,直到底噪听不见、人声依然自然为止。
第二个关键是 \(\beta\)(底线参数)。它设置了“再怎么压也不能低于这个值”的底线,避免某些频点被减到零后产生刺耳的音乐噪声。\(\beta\) 越高,声音越暖,但留的底噪也多。根据“噪声采样”得到的频谱轮廓,通常把 \(\beta\) 设在 0.02 到 0.1 之间比较稳妥。
还有灵敏阈值和动态调整。灵敏阈值决定算法在什么音量下开始动手,太低会把细微人声也误伤;动态调整则是指分阶段降噪——先降大底噪,再处理剩余残响,比一刀切自然得多。Adobe Audition 的“降噪/恢复”面板把这些参数做成了可视化曲线,你可以边听边拖拽,非常直观。
降噪参数就像咖啡馆的“环境音量控制”:你要做的是把背景音乐调小,而不是把朋友的话筒也拉低。温和而精准,才是最佳状态。
伪影与失真规避:不要用力过猛
想象一下,你急着让朋友听见你的话,于是用双手死死捂住耳朵周围的空气——结果朋友的声音反而闷成了一团。过度降噪就是这样:它把你讨厌的底噪带走了,也把你珍惜的人声质感一起碾碎。
最常见的问题是“声音发闷”。当 \(\alpha\) 过高、\(\beta\) 太低时,高频人声细节被当成噪音压掉,整个人听起来像躲在被子里说话。解决方法是减小强度、提高底线,并配合高频 EQ 做轻微补偿。
更棘手的是“音乐噪声”。当某些频点被过度减去,原本连续的噪音底被拆成随机残留的“齿轮声”,就像收音机搜索频道时的沙沙声。要抑制它,可以对增益曲线做时间平滑,或者在频域上加“地板”限制,让增益不能突变。
“爆音伪影”则多由突发噪声处理不当引起:门限不精确时,算法会在噪声边缘制造“咔哒”声。处理突发声最好先在波形上手动定位,再局部修复,而不是全局套用一个强参数。
质量的最高原则是“可逆”:宁可留下一点底噪,也不要用一次暴力降噪毁掉整段人声。因为底噪可以后续补,但人声细节一旦被压掉,就再也找不回来了。
在咖啡馆里,最舒服的状态不是完全安静,而是“朋友的声音清晰、环境音自然存在”。追求“全静音”反而会毁掉一段有声有色的对话录音。
多场景实战应用:不同咖啡馆,不同点单方式
不同咖啡馆有不同的背景音:有的滋滋响着蒸汽机,有的放着爵士乐,有的安静得像图书馆。降噪也一样,播客、采访、会议、配音各有各的“噪音性格”,策略自然不同。
播客后期通常处理的是口播底噪。流程是:先用频谱图找底噪频段,再取一段无人声的“空气声”作为噪声采样,然后用 RNNoise 或 Audition 的噪声消除功能降噪。最后再配合压缩器和 EQ,让人声更稳更亮。
采访录音修复更复杂,现场经常是空调、交通、人声混在一起。正确做法是动态调整:先用 RNNoise 清掉平稳底噪,再用频谱手动修复脚步声或纸张翻动声这类瞬态噪声,最后用动态处理器控制音量波动。
会议录音清理追求效率。线上会议通常只需一键式降噪,RNNoise 插件可以直接嵌入 OBS 或录屏软件,实时压制键盘声、风扇声。配音降噪则对音质要求最高,通常要采用 IIR 滤波配合多阶段降噪,同时保留气息感和唇齿音。
这些场景的共通点是:先诊断,再用药。没有一个万能参数能对付所有噪音,但一套“识别—采样—分档处理”的流程,可以保证每次都不出错。
找到适合自己的“咖啡馆座位”,比盲目追求最强算法更重要。场景不同,平衡点不同,结果自然天差地别。
工作流与技巧:黄金流程与导出心法
在咖啡馆里点单,最顺畅的流程是:先看菜单,再下单,最后等出餐。降噪同样有“黄金流程”:听音识别 → 静音采样 → 分档处理 → 响度匹配 → 导出。
第一步,通听全片,标注哪些段落噪音最严重。第二步,找到一段纯净的环境底噪(通常 2 到 3 秒),作为算法采样的“噪音照片”。第三步,分档处理:先全局降底噪,再局部修突发声,最后调整人声。
降噪结束后,别忘了“人声增强”这个收尾动作——用轻压缩、EQ 提亮和去齿音,把人声从“干净”推向“好听”。然后做响度匹配:把峰值和均方根响度调整到适合平台的规格。例如播客常用 -16 LUFS,短视频常用 -14 LUFS,不要盲目把整体音量拉满。
最后是导出格式。播客通常导出 MP3 320kbps 或 AAC;需要继续精修时用 WAV 或 FLAC 保留全部动态。导出前再听一遍耳机,确认没有人声发闷、爆音和背景底噪反复“呼吸”的现象。
这套流程最大的好处是可复制:无论是口播、采访还是会议录音,都可以套用。你不需要成为音频专家,只要按流程走,就能稳定产出一段干净通透的人声。
下次再遇到嘈杂的录音,就像走进一家熟悉的咖啡馆:你知道该坐哪、怎么点单、什么时候该起身离开。流程在手,降噪不再靠运气。
AI 应用场景
播客后期降噪
阶段:音频后期处理
解决的问题:播客录制时常混入空调声、电流声、轻微键盘声。传统手动剪辑需要逐段听、逐段删,效率极低。AI 降噪能一次性识别并压制持续底噪,保留人声质感,让后期只需处理少数瞬态问题。
具体案例:一位UP主录制了 40 分钟口播,底噪明显。他在 Audacity 中安装 RNNoise 插件,先选中 3 秒“空气声”采样,再用默认参数运行降噪,最后手动修掉两处关门声。成片人声通透、底噪几乎不可闻,上传后评论区纷纷夸奖“录音质感提升很大”。
采访录音修复
阶段:语音增强与修复
解决的问题:外景采访中环境嘈杂、麦克风距离不固定,导致人声大小不均、底噪明显。AI 降噪配合分段动态增强,可以同时解决“听不清”和“太吵”两个难题。
具体案例:媒体人在展会现场采访,背景人声嗡嗡作响。回到工作室后,他先用 RNNoise 清除平稳底噪,再用 Adobe Audition 的“捕捉噪声样本”修复空调低频,最后通过压缩器平衡音量,采访人声与提问声都清晰可辨。
会议录音清理
阶段:实时语音处理
解决的问题:远程会议的痛点不是音量小,而是键盘声、风扇声、邻居噪音混在一起。实时 RNNoise 插件可以嵌入直播软件或会议软件中,在传输前就完成降噪。
具体案例:某公司在 OBS 中挂载 RNNoise 降噪插件后,主播即便在开放式工位直播,观众也听不到机械键盘的敲击声。配合阈值设定,说话者本人几乎感觉不到处理痕迹。
Python 演示
import numpy as np SR = 16000N_FFT = 512HOP = 128 def stft(x, n_fft=N_FFT, hop=HOP): """把时域音频切成带窗短帧,并做 FFT。返回频谱矩阵。""" frames = [] for start in range(0, len(x) - n_fft, hop): frame = x[start:start + n_fft] * np.hamming(n_fft) frames.append(np.fft.rfft(frame)) return np.array(frames) def istft(spec, n_fft=N_FFT, hop=HOP, total_len=None): """把频谱矩阵还原为时域波形,使用重叠相加。""" if total_len is None: total_len = max(0, (len(spec) - 1) * hop) + n_fft out = np.zeros(total_len) for i, frame_spec in enumerate(spec): frame = np.fft.irfft(frame_spec) * np.hamming(n_fft) start = i * hop out[start:start + n_fft] += frame return out / 2.0 def spectral_subtract(audio, alpha=2.5, beta=0.05): """基于噪音轮廓做频谱减法降噪。""" spec = stft(audio) mag = np.abs(spec) phase = np.angle(spec) noise_profile = mag[:20].mean(axis=0) gain = np.maximum(1 - alpha * noise_profile[None, :] / (mag + 1e-8), beta) clean_spec = mag * gain * np.exp(1j * phase) return istft(clean_spec, total_len=len(audio)) def snr_db(voice, noise): """计算信噪比(分贝)。""" ps = np.mean(voice ** 2) + 1e-12 pn = np.mean(noise ** 2) + 1e-12 return 10 * np.log10(ps / pn) # 合成测试音频:220Hz 人声 + 白噪音,前 0.3 秒为纯噪音段t = np.arange(0, 2.0, 1.0 / SR)voice = np.where( t > 0.3, 0.5 * np.sin(2 * np.pi * 220 * t) * (1 + 0.3 * np.sin(2 * np.pi * 3 * t)), 0.0)noise = 0.4 * np.random.randn(len(t))noisy = voice + noise print("SNR before: {:.1f} dB".format(snr_db(voice, noisy)))cleaned = spectral_subtract(noisy, alpha=2.5, beta=0.05)print("SNR after: {:.1f} dB".format(snr_db(voice, cleaned)))
np.hamming(n_fft)生成汉明窗,给每帧信号两端“涂上润滑剂”,避免切帧时产生频谱泄漏。np.fft.rfft(frame)对单帧做快速傅里叶变换,把时域波形拆成不同频率成分。mag[:20].mean(axis=0)拿纯噪音段的前 20 帧求平均,得到“咖啡馆无人说话时的本底噪音照片”。1 - alpha * noise_profile[None, :] / (mag + 1e-8)逐频点计算增益:噪音占比越高,增益越小。np.maximum(..., beta)给增益设置底线,防止某些频点被削减成零导致音乐噪声。np.exp(1j * phase)保留原始相位信息,这是人声听起来依然自然的重要前提。
常见误区
误区总担心底噪没除干净,一上来就把降噪强度拉到最大。结果声音是“干净”了,但整个人声像泡在水里,还被压成了机器人腔。
正解降噪的目标不是“绝对安静”,而是“听得清且自然”。就像在咖啡馆听朋友说话,你要做的是把背景音乐调小,而不是把朋友的声音也一起调小。过强的 \(\alpha\) 会连高频人声细节一起误杀,导致发闷、失真、音乐噪声。正确做法是:从低强度开始,逐级上推,直到底噪消失而人声依然透亮。
为何常见:人脑容易把“噪音没有了”和“处理成功了”画等号,忽略了听感上的自然度。尤其用耳机反复对比时,人会更偏爱“安静的版本”,哪怕那个人声已经不太像自己。
误区拿到音频后立刻套模板、套参数,听到一半发现人声被削弱了,才意识到噪音比想象中复杂。
正解正确顺序永远是“先听、再采样、再处理”。先用频谱图看噪音分布:如果是持续底噪,适合采样降噪;如果是电流声,应该用窄带滤波;如果是突发声,则需要手动剪辑。想象在咖啡馆里,你会先扫一眼环境,再决定坐哪、多大音量说话,而不是捂着耳朵直接开喊。
为何常见:降噪工具往往提供“一键处理”的按钮,让使用者误以为参数是全能的。实际上,没有“万能参数”,只有“匹配噪音类型的参数”。
误区上次用一套参数成功降掉了空调声,这次遇到键盘声也直接用同一套参数,结果人声破碎、键盘声却还在。
正解不同类型的噪音在频谱上分布完全不同。空调声是中低频持续平稳,键盘声是高频瞬态尖峰,电流声则是固定频率的窄带。RNNoise 这类模型擅长处理平稳底噪,对瞬态噪声无能为力。正确流程是:先分类,再为每一类选择合适工具和参数。
为何常见:工具界面给人“设定一次、到处可复制”的印象,用户在成功一次后容易形成路径依赖,忽视了噪音的多样性。
误区降噪处理后波形明显更“高”、声音更响,于是满心欢喜地以为效果很棒。
正解这种“变响”往往是错觉。降噪会压低底噪,人声相应对比变强,但平均响度不一定真的提高;而且盲目拉大音量反而会暴露压缩器和EQ处理缺陷。专业流程是:降噪后先做响度匹配,比如播客调到 -16 LUFS,再对比成品是否自然。
为何常见:人耳对响度的感知偏好会产生“更响=更好”的错觉,很多入门者因此误判降噪效果,忽略了响度归一化这一关键步骤。
面试题
Q1. 录音里的嗡嗡电流声在频谱图上通常表现为?
- A.低频处一条狭窄亮线← 正确答案
- B.高频处均匀杂乱暗带
- C.偶尔出现的短促脉冲
- D.画面中完全空白区域
答案:A。电流声通常是 50/60Hz 电力干扰,能量集中在单一频点,所以频谱图上表现为低频处一条又细又亮的线。环境底噪更像均匀铺开的暗带,突发声则是瞬间亮起的脉冲,因此其他选项都不符合。
Q2. AI 降噪前,最推荐的准备动作是?
- A.先试听文件并识别噪音类型← 正确答案
- B.直接拉满降噪强度
- C.把音频音量放大三倍
- D.删除原始文件释放空间
答案:A。就像进咖啡馆先观察环境一样,降噪前必须通听全片、识别噪音类型和分布。盲目拉强参数、放大音量或删除原文件都会毁掉后续工作。先诊断、再用药,是降噪工作流的铁律。
Q3. 在幅度频谱图中,横坐标通常表示?
- A.频率(Hz)← 正确答案
- B.时间(秒)
- C.音量(dB)
- D.相位(rad)
答案:A。幅度频谱图显示“每个频率上有多少能量”,横轴是频率,纵轴是幅度或能量。时间轴属于波形图和频谱图(Spectrogram)的横轴,因此 B 不对。音量、相位也不是幅度频谱图的横轴。
Q4. RNNoise 使用的深度学习模型最擅长什么?
- A.实时抑制平稳语音底噪← 正确答案
- B.生成新的背景音乐伴奏
- C.将文本内容自动转为语音
- D.提升视频画面的清晰度
答案:A。RNNoise 用 GRU 网络估计“语音存在概率”,并据此生成频谱掩蔽,优势是低延迟、实时处理平稳底噪。它不做音乐生成、文本转语音,也不处理视频。记住它是“语音降噪器”,不是全能音频工具。
Q5. 将降噪强度 \(\alpha\) 调得过高,最常见的问题是?
- A.人声发闷、出现水底感← 正确答案
- B.文件体积突然变小
- C.导出时间明显缩短
- D.响度自动提高一倍
答案:A。\(\alpha\) 过大时,高频人声细节被当成噪音压掉,听感上像“捂住话筒说话”,也就是发闷。文件体积、导出速度与降噪强度没有直接关系,响度也不会因降噪自动翻倍。过猛降噪的代价永远是音质损耗。
Q6. 频谱减法中 β(底线)参数的主要作用是什么?
- A.防止增益降为零导致音乐噪声← 正确答案
- B.决定降噪后人声的音调高低
- C.控制降噪算法的执行速度
- D.调整录音的采样频率
答案:A。β 给增益设置了最低值,避免某些频点被减去 100% 后产生刺耳的音乐噪声,相当于给“音量推子”装了个保险丝。它与音调、速度、采样率都没关系,是保护音质的关键旋钮。
Q7. 下列哪一项不是“降噪伪影”的表现?
- A.类似水泡破裂的咕噜声
- B.机器人腔般的不自然感
- C.刺耳的金属摩擦声
- D.更圆润自然的混响感← 正确答案
答案:D。过度降噪常见的伪影有音乐噪声(齿轮/金属声)、声音发闷、爆音咔哒声和“机器人化”。而“圆润自然的混响感”是好的处理结果,不属于伪影。做题时记住“伪影 = 不该出现的加工痕迹”。
Q8. 哪些操作可以有效避免降噪后出现“音乐噪声”?
- A.使用足够大的 β 底线参数← 正确答案
- B.对增益曲线做时间平滑← 正确答案
- C.把降噪强度 \(\alpha\) 调到最大
- D.先分离安静段提取噪声轮廓← 正确答案
答案:ABD。音乐噪声源于某些频点被过度削减、增益突变。设置合理 β、平滑增益曲线、准确提取噪声轮廓都能减轻伪影。把 \(\alpha\) 调到最大只会加剧频点被削没的风险,所以 C 是错误做法。
Q9. 采访录音中空调声、键盘声并存,正确的降噪策略有哪些?
- A.先用 RNNoise 压制平稳底噪← 正确答案
- B.用频谱手动修瞬态噪声← 正确答案
- C.对所有噪音一次强力清除
- D.分阶段处理并保留人声质感← 正确答案
答案:ABD。空调声是平稳底噪,适合 RNNoise 类算法;键盘声是瞬态噪声,应结合频谱手动修复。一次强力清除必然伤害人声。正确做法是分阶段、多工具配合,始终以保留人声质感为首要目标。
Q10. 关于 STFT 分帧时使用窗函数,正确的说法有哪些?
- A.减少频谱泄漏现象← 正确答案
- B.避免帧边界信号突变← 正确答案
- C.让噪声被完全消除
- D.保证相邻帧平滑过渡← 正确答案
答案:ABD。窗函数让每帧两端平滑渐入渐出,既减少频谱泄漏,也避免帧边界产生非自然突变,并能提高重叠相加的稳定性。但它只是预处理步骤,无法“完全消除噪声”,C 夸大了窗函数的作用。