语音增强与降噪
语音增强(Speech Enhancement)的目标是从含噪录音中恢复干净语音,是 hearing aid(助听器)、视频会议、手机通话等场景的核心前处理环节。它也是 语音识别 ASR 的关键前置步骤——噪声严重时 ASR 词错率会急剧上升。前置阅读:语音与音频技术概览。
语音增强 = 给 AI 装一个”降噪耳机”。 想象你在嘈杂的咖啡厅打电话:人耳会自动”聚焦”对方的声音、屏蔽背景杂音。语音增强算法就是让机器完成同样的事——从混合信号中把目标人声提取出来。
理解语音增强,首先需要理解为什么降噪很难。一段含噪录音是”干净人声”和”噪声”在时域上的简单叠加(加法混音),数学上表示为 。知道 要反推 本质上是一个欠定问题——只有一个方程,两个未知数。因此降噪不可能”完美”,只能基于统计规律做”最优估计”。
传统方法和深度学习方法走的是两条路线:
- 谱减法(Spectral Subtraction)= 照镜子减背景。 先在”没人说话”的间隙采样噪声频谱,再从含噪频谱中把它减掉——像用橡皮擦擦掉背景。简单粗暴,但会在残留中留下”音乐噪声”(musical noise),即零散的”叮叮”声。
- 维纳滤波(Wiener Filter)= 最优比例混合。 不直接减,而是根据信噪比估算一个增益系数:信号强的地方多保留,噪声强的地方多压制。数学上是最小均方误差(MMSE)意义下的最优线性滤波器。
- MMSE 统计模型 = 概率版维纳滤波。 对语音和噪声分别建模为概率分布(如高斯分布),用最小均方误差准则估计干净频谱的每个分量——比维纳滤波更精细,是经典方法的性能天花板。
- 深度学习方法 = 端到端学习映射。 把”含噪 → 干净”当作一个映射问题,用神经网络直接学——不再依赖噪声平稳性假设,在非平稳噪声(键盘声、警笛声等突发噪声)下优势巨大。
为什么语音处理需要 STFT?
Section titled “为什么语音处理需要 STFT?”人发出的语音信号是连续变化的——你说话时,嘴唇和舌头的位置不断移动,产生不同的声音。但如果把时间窗口缩小到 20-40 毫秒,口腔的形状在这么短的时间内几乎不变,声音可以近似为稳态信号。这就是语音处理的基本假设:语音是短时平稳的(short-time stationary)。
STFT(Short-Time Fourier Transform,短时傅里叶变换) 就是利用这一特性的核心工具:
- 把连续音频切成 20-40ms 的短帧(通常有 50% 重叠)
- 对每帧施加窗函数(如汉明窗),减少边缘效应
- 对每帧做 FFT(快速傅里叶变换),得到该时刻的频域表示
- 拼接所有帧的频谱,得到时频图(Spectrogram)——横轴是时间,纵轴是频率,颜色深浅表示能量大小
STFT 的结果是一个复数:包含幅度(magnitude,该频率分量的强度)和相位(phase,该频率分量的起始角度)。传统方法只用幅度谱做处理、丢弃相位(因为相位难以估计),但深度学习的复数域方法同时处理两者——后面会详细解释。
频域方法 vs 深度学习方法
Section titled “频域方法 vs 深度学习方法”传统频域方法依赖噪声估计和增益函数,深度学习方法则直接从含噪频谱(或波形)学习到干净语音的映射:
深度学习增强模型谱系
Section titled “深度学习增强模型谱系”从最朴素的映射网络到实时因果模型,每一步都在解决前一代的实际约束:
为什么相位重要?
Section titled “为什么相位重要?”STFT 输出的是复数:,其中 是幅度, 是相位。传统方法(谱减、维纳)只修改幅度 ,保留原始相位 。问题在于:含噪信号的相位本身就受噪声污染。如果只修正幅度而用脏相位做逆变换,合成出来的声音会有”模糊感”(phaselss reconstruction artifact)——就像一幅分辨率不够的照片被强行放大。
复数域方法(如 DCCRN)同时处理实部和虚部,相当于同时修正幅度和相位,能更好地重建干净语音的精细结构。
经典频域方法
Section titled “经典频域方法”谱减法(Spectral Subtraction) 的数学表达:
其中 是含噪幅度谱, 是估计的噪声功率谱(从静音段平均得到), 防止出现负值。输出 使用含噪信号的原始相位做逆 STFT。
问题在于:噪声是随机波动的,某些频率上实际噪声值可能远大于估计值 ,导致减不干净——残留的频率尖峰听起来像随机音符,即”音乐噪声”。
维纳滤波(Wiener Filter)从统计最优角度出发:
其中 是语音功率谱密度, 是噪声功率谱密度。直觉上:信噪比高的频段(语音远强于噪声)(几乎不衰减),信噪比低的频段 (大幅压制)。维纳滤波在最小均方误差意义下是最优的线性滤波器。
因果 vs 非因果模型
Section titled “因果 vs 非因果模型”这是语音增强中一个核心工程约束:
- 因果模型(Causal):在时刻 做决策时,只能用 及之前的信息(当前帧和过去帧),不能”偷看”未来。适用于实时场景(手机通话、视频会议),延迟可低至 10ms。DCCRN、RNNoise 等就是因果模型。
- 非因果模型(Non-causal):可以使用未来信息。例如处理时刻 的帧时,还可以利用 的帧。效果更好,但引入了延迟(通常几百毫秒)。适用于离线场景(音频后期处理、录音修复)。
实时通话的典型延迟预算:端到端总延迟需低于 20ms(人耳不感知),其中算法本身的延迟只能占一小部分,因此实时增强模型几乎都是因果模型。
深度学习增强模型
Section titled “深度学习增强模型”DCCRN(Deep Complex Convolution Recurrent Network) 的关键创新是复数域处理:
- 传统方法只处理 STFT 的幅度谱,丢弃相位信息。但相位对语音质量至关重要。
- DCCRN 用复数卷积(complex-valued convolution)同时处理实部和虚部,保留完整的复频域信息。复数卷积的定义:如果输入是 ,权重是 ,则复数卷积输出 。
- 编码器-解码器结构:编码器逐层下采样提取深层特征,CRN(卷积循环网络)在中间做时序建模,解码器逐层上采样恢复频域掩码。
- 输出一个复数掩码,与输入复频谱逐元素相乘后做逆 STFT 得到增强后的波形。
FullSubNet 融合了全频带(full-band)和子频带(sub-band)信息:全频带网络看整个频谱捕捉全局噪声特征,子频带网络分别处理每个频率子带,捕捉精细的频率结构。这种融合在 DNS Challenge 上取得了优异表现。
2024-2026 前沿进展
Section titled “2024-2026 前沿进展”DeepFilterNet 3:CPU 实时降噪的工业标杆
Section titled “DeepFilterNet 3:CPU 实时降噪的工业标杆”DeepFilterNet 3(2023-2024)是一个轻量级实时降噪模型,核心创新是使用**深度滤波器(Deep Filter, DF)**替代传统的掩蔽(masking)方法:
- 传统方法预测一个频域掩码与含噪频谱相乘;DeepFilterNet 预测一组滤波器系数,直接对含噪信号做滤波操作。
- 这种方式计算量更小、更适合 CPU 实时运行,且在 DNS Challenge 上表现优异。
- 支持 48kHz 采样率,适合高质量语音通信场景。
MP-SENet:幅度与相位联合预测
Section titled “MP-SENet:幅度与相位联合预测”MP-SENet(ICASSP 2024)是语音增强的新 SOTA:
- 同时预测幅度(Magnitude)和相位(Phase),而非仅预测幅度掩码。
- 使用两路网络分别建模幅度的幅频特性和相位的相频特性。
- 在 VoiceBank+DEMAND 和 DNS Challenge 等多个基准上取得最优 PESQ 和 STOI 分数。
TF-GridNet:时频网格建模
Section titled “TF-GridNet:时频网格建模”TF-GridNet(2024)将语音增强建模为三维张量(时间 × 频率 × 通道)的处理:
- 在时间维度和频率维度上交替使用自注意力,捕捉时频联合模式。
- 每一层的处理包含三个子模块:沿时间做注意力、沿频率做注意力、跨通道混合。
- 在语音分离和语音增强两大任务上均取得 SOTA。
浏览器原生 AI 降噪
Section titled “浏览器原生 AI 降噪”2024 年起,WebRTC 和主流浏览器开始集成基于深度学习的 AI 降噪:
- NVIDIA Broadcast / RTX Voice:利用 GPU Tensor Core 实时执行深度降噪,广泛用于直播(OBS)、视频会议和录音。
- WebRTC AI Noise Suppression:Chrome 等浏览器内置实时 AI 降噪,无需安装插件,直接在
getUserMedia层处理。
谱减法降噪(librosa + numpy)
Section titled “谱减法降噪(librosa + numpy)”import numpy as np # 数值计算import librosa, librosa.display # 音频处理与可视化
# 加载含噪音频noisy, sr = librosa.load("noisy.wav", sr=16000)
# 计算 STFT 幅度谱(n_fft 越大频率分辨率越高)S = np.abs(librosa.stft(noisy, n_fft=512))
# 取前 6 帧作为噪声参考(无人说话的起始段)noise_profile = np.mean(S[:, :6], axis=1, keepdims=True)
# 谱减法:从含噪幅度中减去噪声估计(不小于 0)S_clean = np.maximum(S - noise_profile, 0)
# 逆 STFT 恢复时域波形(相位沿用含噪信号的相位)y_clean = librosa.istft(S_clean * np.exp(1j * np.angle( librosa.stft(noisy, n_fft=512))))librosa.write_audio("enhanced.wav", y_clean, sr=16000)print("降噪完成,输出 enhanced.wav")💡 实际工程中很少直接用谱减法(会留下音乐噪声),更多使用深度学习模型。上面代码展示了频域降噪的核心思路:估计噪声 → 计算增益 → 修正频谱。
用 DeepFilterNet 深度学习实时降噪
Section titled “用 DeepFilterNet 深度学习实时降噪”# DeepFilterNet 3:官方预训练权重,CPU 上即可实时运行# pip install deepfilternet soundfilefrom df.audio import load_audio, save_audiofrom df import init_df, enhance
# 初始化模型(首次运行自动下载 DeepFilterNet3 权重)model, df_state, _ = init_df()
# 加载含噪音频(自动重采样到模型要求的分辨率)audio, sr = load_audio("noisy.wav", sr=48000)
# 执行流式降噪,返回干净语音波形enhanced = enhance(model, df_state, audio)
# 保存增强结果save_audio("enhanced_dl.wav", enhanced, sr)print("深度降噪完成,输出 enhanced_dl.wav")💡 深度学习方案的优点:对非平稳噪声(键盘声、警笛、多人说话)效果远好于谱减法,且不会引入音乐噪声。训练时把干净语音与各类噪声按不同信噪比混合(DNS Challenge 数据集),模型就学会了泛化。
用 noisereduce 做快速非平稳降噪
Section titled “用 noisereduce 做快速非平稳降噪”# pip install noisereduce librosa soundfileimport noisereduce as nrimport librosa, soundfile as sf
audio, sr = librosa.load("noisy.wav", sr=16000)
# 非平稳模式:自适应频谱门限,不假设噪声稳定(效果通常更好)clean = nr.reduce_noise(y=audio, sr=sr, stationary=False, prop_decrease=0.8)sf.write("clean.wav", clean, sr)print("降噪完成")- 实时性是关键约束:手机通话和视频会议要求算法延迟低于 20ms(人耳不感知),因此必须使用因果(causal)模型——只看当前和过去帧,不能”偷看”未来。DCCRN、DeepFilterNet、RNNoise 等就是专为实时场景设计的。
- 离线场景可用双向模型:录音后处理(podcast 后期、音频修复)不要求实时性,可用双向 RNN 或 Transformer(如 TF-GridNet)获得更好效果。
- 噪声估计的难点:传统方法的性能高度依赖噪声估计的准确性。平稳噪声(空调嗡嗡声)相对容易估计;非平稳噪声(突发的关门声、警笛)则需要深度学习方法来应对。
- 复数频谱优于幅度频谱:早期深度学习方法只用幅度谱、丢弃相位;DCCRN、MP-SENet 等模型同时处理实部和虚部(复数域),能更好地重建语音的精细结构。
- 数据增强至关重要:训练数据通常通过将干净语音与各种噪声按不同信噪比混合来生成(如 DNS Challenge 的数据集)。噪声种类越丰富,泛化能力越强。
- 评估指标:客观指标用 PESQ(Perceptual Evaluation of Speech Quality,语音感知质量,模拟人耳对语音质量的主观感受,范围 -0.5 到 4.5,越高越好)和 STOI(Short-Time Objective Intelligibility,短时客观可懂度,衡量语音能否被听懂,范围 0 到 1,越高越好);主观评估用 MOS(Mean Opinion Score,5 分制人耳评分)。
- 与 ASR 的联合优化:语音增强不是 ASR 的万能药——过度增强会引入失真反而降低识别率。联合训练(joint training)让增强模块直接为 ASR 性能优化,效果优于两阶段串联。
- 视频会议降噪:Zoom 的”原始声音”模式、Microsoft Teams 的 AI 降噪(基于深度学习模型)、腾讯会议的 AI 降噪——在居家办公场景中过滤键盘声、婴儿哭声、街道车流声。NVIDIA Broadcast 利用 GPU 实现实时 AI 降噪,广泛用于直播场景。
- 助听器(Hearing Aid):现代数字助听器内置多麦克风阵列和实时语音增强算法,帮助听障人士在嘈杂环境中听清对话。延迟要求极严(小于 10ms),否则用户会感到嘴唇动作和声音不同步。
- 手机通话降噪:iPhone 和 Android 手机的”通话降噪”功能,利用双麦克风波束成形(Beamforming,利用多麦克风的空间信息增强目标方向的声音)+ 单通道增强,在嘈杂街头也能让对方听清你的声音。
- ASR 前处理:会议室远场拾音场景(如智能音箱、会议机器人)中,声学回声消除(AEC)+ 波束成形 + 语音增强构成标准前处理链路,显著降低 ASR 词错率。详见 语音识别 ASR。
- 音频修复:老唱片去噪、犯罪现场录音增强、影视后期对白清洁——这些离线场景可使用 TF-GridNet、MP-SENet 等最先进的大模型获得最佳效果。
- Cochlear implant(人工耳蜗)信号处理:将增强后的语音信号转换为电刺激信号,帮助重度听障患者理解语音。
典型类库与工具
Section titled “典型类库与工具”| 类库 | 语言 | 说明 |
|---|---|---|
| DeepFilterNet 3 | Python/Rust | 开源深度学习实时降噪模型,低复杂度,可在 CPU 上实时运行(48kHz) |
| RNNoise | C | Mozilla 开发的基于 RNN(GRU)的实时降噪库,延迟约 10ms,广泛用于 WebRTC 通话 |
| SpeechBrain | Python | 开源语音工具包,提供语音增强、分离、ASR 等完整模块 |
| Asteroid | Python | 基于 PyTorch 的语音分离与增强库,支持 ConvTasNet、SepFormer 等 |
| librosa | Python | 音频分析经典库,可用于实现传统谱减法、维纳滤波等基线方法 |
| torchaudio | Python | PyTorch 官方音频库,提供 STFT/ISTFT 和多种数据增强操作 |
| noisereduce | Python | 轻量级频谱降噪库,支持平稳和非平稳噪声模式 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 语音增强 | Speech Enhancement | 从含噪信号中恢复干净语音的处理过程 |
| 短时傅里叶变换 | STFT (Short-Time Fourier Transform) | 将信号分帧做 FFT,得到时频域二维表示的核心工具 |
| 谱减法 | Spectral Subtraction | 从含噪幅度谱中减去噪声谱估计的经典降噪方法 |
| 维纳滤波 | Wiener Filter | 最小均方误差意义下的最优线性滤波器,按信噪比计算增益 |
| MMSE 估计 | Minimum Mean Square Error | 用统计模型在均方误差最小准则下估计干净频谱的方法 |
| 音乐噪声 | Musical Noise | 谱减法残留的随机频率尖峰,听感上像零散的”叮叮”声 |
| 复数域卷积循环网络 | DCCRN | 在复数域(实部+虚部)同时操作的深度卷积循环网络,实时增强的主流架构 |
| 波束成形 | Beamforming | 利用多麦克风阵列空间信息增强目标方向声音、抑制其他方向噪声 |
| 声学回声消除 | AEC (Acoustic Echo Cancellation) | 消除扬声器回传到麦克风的回声,双工通话的基础 |
| 因果模型 | Causal Model | 只使用当前和过去信息的模型,延迟低,适合实时场景 |
| 短时客观可懂度 | STOI (Short-Time Objective Intelligibility) | 客观评估语音可懂度的指标,范围 0 到 1 |
| 语音感知质量 | PESQ (Perceptual Evaluation of Speech Quality) | ITU 标准的语音质量客观评估指标,范围 -0.5 到 4.5 |
| DNS Challenge | Deep Noise Suppression Challenge | Microsoft 主办的年度语音降噪比赛,推动该领域发展 |
- Boll, “Suppression of Acoustic Noise in Speech Using Spectral Subtraction” (IEEE TASSP 1979):谱减法的开创性论文,至今仍是理解频域降噪的基础。
- Ephraim & Malah, “Speech Enhancement Using a Minimum Mean-Square Error Short-Time Spectral Amplitude Estimator” (IEEE TASSP 1984):MMSE 经典论文,统计模型方法的奠基之作,引用超 8000 次。
- Hu et al., “DCCRN: Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement” (Interspeech 2020):在复数域同时建模幅度和相位的深度学习增强网络,DNS Challenge 冠军方案之一。
- Chen et al., “FullSubNet: A Full-Band and Sub-Band Fusion Model for Real-Time Speech Enhancement” (ICASSP 2022):融合全频带和子频带信息的实时增强模型,在 DNS Challenge 中取得 SOTA。
- Wang et al., “TF-GridNet: Integrating Full- and Sub-Band Information for Multi-Speech Separation and Enhancement” (2024):时频网格网络,在增强和分离基准上取得多项 SOTA。
- Subakan et al., “Attention Is All You Need In Speech Separation” (ICASSP 2021):SepFormer,将 Transformer 注意力机制引入语音分离,取得当时最优性能。详见 语音分离与降噪。
- 延伸路线:增强后的语音如何转成文字,见 语音识别 ASR;如何合成新的语音,见 语音合成 TTS;多说话人分离的深入讨论见 语音分离与降噪。