语音信号基础:采样与量化、时域与频域表示、短时傅里叶变换(STFT)、频谱图、相位与幅度、人耳听觉特性
语音降噪与声源分离任务的核心,是对语音信号进行精确的数学建模与变换。无论是传统谱减法、维纳滤波,还是基于深度学习的掩码估计与频谱映射,其输入输出几乎都建立在“短时傅里叶变换(STFT)”得到的复数频谱之上。因此,理解语音信号从连续物理声波到离散数字矩阵的完整链路,掌握时域、频域、时频域三种视角的转换逻辑,以及相位与幅度在感知中的不对称重要性,是后续设计神经网络结构、选择损失函数、评估降噪效果的前提。本章将系统梳理这些基础概念,并重点剖析工程实践中常见的理解误区。
2.1 采样与量化:从连续声波到离散数字
核心原理
语音信号本质上是空气压力随时间变化的连续函数 \( p(t) \)。计算机无法直接处理连续信号,必须通过采样(Sampling)和量化(Quantization)将其转换为有限长度的二进制序列。采样是在时间轴上以固定间隔 \( T_s \) 取值,采样率 \( f_s = 1/T_s \);量化则是在幅度轴上将连续取值映射到有限个离散电平。根据奈奎斯特采样定理,当采样率高于信号最高频率的两倍时,理论上可以从离散样本无失真地重建原始连续信号。语音信号的能量主要集中在 300Hz–3.4kHz,因此电话通信采用 8kHz 采样率;而高质量语音处理(如深度学习降噪)通常使用 16kHz 或 48kHz 采样率,以保留更多高频细节(如齿音、气声)。
量化精度决定了信号的动态范围和信噪比。16-bit 量化提供 65536 个电平,理论动态范围约为 \( 6.02 \times 16 + 1.76 \approx 98\text{dB} \)。对于语音降噪任务,16-bit 是工程底线;若使用 8-bit 量化,量化噪声本身就会淹没低幅度语音成分,导致后续处理无从谈起。
操作流程与工程参数选择
- 确定采样率:根据任务带宽需求选择。降噪模型输入通常为 16kHz 单声道,兼顾频率分辨率与计算量。
- 选择量化位数:深度学习训练数据一般使用 16-bit PCM WAV 格式,避免有损压缩(如 MP3)引入的编码噪声。
- 抗混叠滤波:采样前必须经过低通滤波器(截止频率 ≤ \( f_s/2 \)),否则高频成分会折叠到低频段,产生不可逆的混叠失真。
- 归一化处理:将整数 PCM 值映射到 [-1, 1] 浮点范围,便于神经网络计算。
rate 参数),避免简单线性插值带来的频谱混叠。
案例拆解:采样率不匹配导致的降噪失效
某智能音箱项目在部署深度学习降噪模型时,发现模型在测试集上表现优异,但实际设备上降噪后语音出现明显的“金属声”和频谱断裂。排查后发现:模型训练数据采样率为 16kHz,而设备麦克风阵列的音频链路实际输出为 48kHz,但代码中未做重采样,直接将 48kHz 数据送入模型。模型内部 STFT 的帧长和帧移参数是按 16kHz 设计的,导致频率轴刻度偏移,噪声抑制掩码错误地作用于语音频段。修复方案是在前端增加 48kHz→16kHz 的重采样模块,并重新校准 STFT 参数。这一案例说明,采样率是贯穿整个信号链路的“隐含约束”,任何环节的不一致都会导致系统性能断崖式下降。
常见误区与总结
- 误区一:采样率越高越好。高采样率带来更大的计算开销和存储需求,且对语音降噪而言,16kHz 已覆盖语音主要能量频段,盲目提升采样率并不会带来感知质量的线性提升。
- 误区二:忽略量化噪声。在低信噪比场景下,量化噪声与背景噪声叠加,会改变噪声的统计特性,影响基于噪声估计的降噪算法。
- 误区三:重采样引入的混叠。降采样前必须经过低通滤波,否则高频噪声折叠到语音频带内,后续降噪算法难以区分。
2.2 时域与频域表示:两种互补的观察视角
核心原理
时域表示直接描述信号幅度随时间的变化,直观但难以分离语音和噪声的统计特征。频域表示通过傅里叶变换将信号分解为不同频率分量的叠加,使得语音的谐波结构、共振峰位置以及噪声的频谱形状得以显现。对于平稳信号,傅里叶变换是理想的工具;但语音信号具有明显的非平稳性——音素在几十毫秒内发生变化,清音/浊音交替,因此需要引入短时分析的概念。
时域与频域通过傅里叶变换对相互转换:
X(f) = ∫ x(t) · e^(-j2πft) dt (连续时间傅里叶变换)
x[n] → FFT → X[k] (离散傅里叶变换,N点)
在工程中,FFT 的长度 N 决定了频率分辨率 \( \Delta f = f_s / N \)。例如,16kHz 采样率下,512 点 FFT 的频率分辨率为 31.25Hz,而 1024 点 FFT 的分辨率为 15.625Hz。更长的 FFT 窗口能更好地区分相邻频率分量,但时间分辨率会下降——这是时频分析中不可调和的矛盾。
判断方法:何时使用时域、何时使用频域
| 任务场景 | 推荐域 | 原因 |
|---|---|---|
| 语音活动检测(VAD) | 时域(短时能量) | 计算简单,实时性高 |
| 基频(F0)估计 | 时域(自相关)或频域 | 自相关对谐波结构更鲁棒 |
| 噪声谱估计 | 频域 | 噪声通常为平稳随机过程,频域统计特性稳定 |
| 深度学习降噪 | 时频域(STFT) | 同时保留时间动态和频率结构 |
| 回声消除 | 频域(自适应滤波) | 频域分块处理收敛更快 |
实战场景:噪声类型与频域特征
不同类型的噪声在频域中呈现截然不同的特征:
- 平稳噪声(如风扇、空调):频谱能量分布稳定,可通过长时间平均估计噪声谱。
- 瞬态噪声(如关门声、键盘敲击):时域短促、频域宽带,需要时域检测或时频域联合处理。
- 窄带干扰(如 50Hz 工频):频域表现为离散谱线,可用陷波滤波器或频谱插值去除。
总结复盘
时域和频域不是互斥的,而是互补的。时域适合捕捉信号的起始、结束、瞬态事件;频域适合分析信号的周期性和频谱包络。在深度学习语音处理中,几乎总是将两者结合——通过 STFT 获得时频表示,既保留了时间动态,又提供了频率结构。
2.3 短时傅里叶变换(STFT)与频谱图
核心原理
STFT 的基本思想是:将长时信号分成若干短时帧(通常 20-40ms),对每一帧加窗后做 FFT,得到该时刻的频谱。将所有帧的频谱按时间顺序排列,就构成了一个二维复数矩阵 \( X(t, f) \),其中 \( t \) 为帧索引,\( f \) 为频率索引。STFT 的数学定义为:
X(m, k) = Σ_{n=0}^{N-1} x(n + m·H) · w(n) · e^(-j2πkn/N)
其中 \( w(n) \) 为窗函数(如汉宁窗、海明窗),\( N \) 为 FFT 长度,\( H \) 为帧移(hop length)。帧移通常取 N/4 或 N/2,以保证相邻帧之间有足够重叠,避免因加窗导致的边缘信息丢失。
频谱图(Spectrogram)是 STFT 幅度谱的可视化:横轴为时间,纵轴为频率,颜色深浅表示能量强度。频谱图是深度学习降噪模型最常用的输入特征,其质量直接取决于 STFT 参数的选择。
操作流程:STFT 参数配置与实现
- 选择窗函数:汉宁窗(Hann)旁瓣衰减快,适合语音处理;矩形窗频率泄漏严重,不推荐。
- 确定帧长:帧长 \( N \) 对应时间长度 \( T = N / f_s \)。16kHz 采样率下,512 点帧长 = 32ms,1024 点 = 64ms。语音信号在 20-40ms 内近似平稳,因此 512 或 640 点(40ms)是常用选择。
- 设置帧移:帧移 \( H \) 决定时间分辨率。H = N/4(75% 重叠)可提供更平滑的时频表示,但计算量增大;H = N/2(50% 重叠)是效率与质量的折中。
- 计算幅度谱和相位谱:对每帧 FFT 结果取模得到幅度 \( |X(m,k)| \),取辐角得到相位 \( \angle X(m,k) \)。
- 对数压缩:将幅度谱转换为对数幅度谱(或梅尔谱),更符合人耳听觉特性,也便于神经网络学习。
案例拆解:帧长与帧移对降噪效果的影响
在一个语音增强实验中,使用相同的 DNN 模型,仅改变 STFT 参数,观察降噪后的 PESQ 得分和 STOI 得分:
| 帧长 (N) | 帧移 (H) | 频率分辨率 | 时间分辨率 | PESQ | STOI |
|---|---|---|---|---|---|
| 256 (16ms) | 64 (4ms) | 62.5 Hz | 高 | 2.81 | 0.92 |
| 512 (32ms) | 128 (8ms) | 31.25 Hz | 中 | 3.05 | 0.94 |
| 1024 (64ms) | 256 (16ms) | 15.6 Hz | 低 | 2.93 | 0.91 |
实验表明,帧长 512 点(32ms)在频率分辨率和时间分辨率之间取得了最佳平衡。帧长过短(256 点)导致低频频率分辨率不足,无法准确估计噪声谱;帧长过长(1024 点)则使语音的瞬态变化被平滑,影响清音和辅音的清晰度。此外,帧移的选择影响帧间连续性,过大的帧移会导致频谱图出现“块状”伪影。
torch.stft 或 TensorFlow 的 tf.signal.stft 实现。注意设置 return_complex=True 以保留相位信息,因为后续的掩码估计和波形重建需要复数频谱。
常见误区与总结
- 误区一:忽略相位信息。许多初学者只使用幅度谱作为模型输入,而丢弃相位。但相位对语音可懂度至关重要,尤其在低信噪比场景下,相位误差会导致语音“空洞”和金属感。
- 误区二:窗函数选择不当。矩形窗虽然主瓣窄,但旁瓣泄漏严重,会掩盖低幅度谐波;汉宁窗是语音处理的首选。
- 误区三:帧移过大导致时间分辨率不足。帧移超过帧长的 50% 时,频谱图的时间连续性变差,影响基于时序的模型(如 LSTM、Transformer)的性能。
2.4 相位与幅度:感知中的不对称重要性
核心原理
STFT 产生的复数频谱包含幅度和相位两部分。幅度谱 \( |X(f)| \) 表示各频率分量的能量大小,相位谱 \( \angle X(f) \) 表示各频率分量的时间偏移。从信息论角度看,相位包含了信号的时间结构信息——它决定了波形在时域中的具体形状。然而,人耳对相位不敏感,但对幅度谱的短时变化非常敏感。这一特性被称为“相位感知的不对称性”。
在语音降噪中,这种不对称性带来了一个实用策略:幅度估计优先,相位修正次之。大多数传统降噪算法(如谱减法、维纳滤波)只修改幅度谱,而保留原始带噪语音的相位。这是因为在低信噪比条件下,带噪语音的相位与干净语音的相位差异较小,直接使用带噪相位不会造成严重的感知退化。但在极低信噪比(< 0dB)或需要高保真重建的场景下,相位误差会成为主要瓶颈。
判断方法:何时需要估计相位
- 仅做增强(降噪):保留带噪相位,只估计幅度掩码(如 IRM、IBM),计算量小,效果可接受。
- 语音分离(多说话人):必须估计每个说话人的相位,否则重建波形会严重失真。此时常用 Griffin-Lim 算法迭代重建相位,或使用复数掩码(CRM)直接估计实部和虚部。
- 语音编码/压缩:相位信息可以粗略量化,因为人耳对相位不敏感,但完全丢弃会导致波形严重变形。
案例拆解:相位估计对声源分离的影响
在双说话人分离任务中(如 WSJ0-2mix 数据集),分别使用三种策略:① 幅度掩码 + 带噪相位;② 幅度掩码 + Griffin-Lim 相位重建;③ 复数掩码(同时估计实部和虚部)。结果如下:
| 方法 | SDR (dB) | PESQ | 说明 |
|---|---|---|---|
| 幅度掩码 + 带噪相位 | 8.2 | 2.51 | 语音有“水声”伪影 |
| 幅度掩码 + Griffin-Lim | 9.8 | 2.87 | 迭代 50 次,耗时高 |
| 复数掩码(CRM) | 11.3 | 3.24 | 端到端训练,效果最佳 |
实验表明,在分离任务中,相位误差是限制性能的主要因素。复数掩码通过同时估计幅度和相位,实现了更精确的频谱重建。但在纯降噪任务中(单说话人 + 噪声),幅度掩码 + 带噪相位的方案仍然具有竞争力,因为噪声对相位的扰动相对较小。
总结复盘
相位与幅度的处理策略取决于任务类型和信噪比条件。理解人耳对相位不敏感的特性,可以帮助我们在工程中做出合理的取舍:在降噪任务中优先优化幅度估计,在分离任务中引入相位重建或复数掩码。
2.5 人耳听觉特性:感知驱动的信号处理
核心原理
人耳对声音的感知并非线性。两个关键特性深刻影响了语音处理算法的设计:频率选择性和响度感知的非线性。内耳基底膜对不同频率的响应具有对数频率分辨率——低频段分辨率高,高频段分辨率低。这启发了梅尔频率倒谱系数(MFCC)和梅尔滤波器组的设计。此外,人耳对响度的感知遵循幂函数规律(史蒂文斯定律),且存在“掩蔽效应”:强信号会掩盖邻近频率的弱信号。
在深度学习降噪中,这些听觉特性被用于:
- 特征提取:使用梅尔谱代替线性谱,减少特征维度,突出语音相关频段。
- 损失函数设计:使用感知加权损失(如 PESQ 相关损失)或基于掩蔽效应的损失,使模型优化方向更符合主观听感。
- 评估指标:PESQ、STOI 等指标模拟人耳感知,比简单的 SNR 更能反映实际听感。
操作流程:从线性谱到梅尔谱
- 计算 STFT 幅度谱:得到 \( |X(m,k)| \),频率范围为 0 到 \( f_s/2 \)。
- 设计梅尔滤波器组:将频率轴映射到梅尔刻度 \( Mel(f) = 2595 \cdot \log_{10}(1 + f/700) \),在梅尔轴上均匀分布三角滤波器。
- 滤波与对数压缩:将幅度谱与滤波器组相乘,得到各频带能量,取对数得到对数梅尔谱。
- (可选)DCT 变换:得到 MFCC,但深度学习模型通常直接使用对数梅尔谱作为输入,保留更多信息。
实战场景:梅尔谱在降噪模型中的应用
在基于 U-Net 的降噪模型中,输入通常为 80 维对数梅尔谱(帧长 32ms,帧移 8ms),输出为对应的幅度掩码。梅尔谱的优势在于:
- 维度低(80 vs 257),计算量小,适合实时推理。
- 低频分辨率高,符合语音主要能量分布。
- 对高频噪声有一定的平滑作用,减少模型过拟合。
但梅尔谱也有局限:它丢失了高频细节,且不可逆(无法直接重建波形)。因此,需要波形重建时,通常使用线性谱或复数谱作为中间表示。
常见误区与总结
- 误区一:认为梅尔谱是万能的。梅尔谱适合作为分类或回归的特征,但不适合直接用于波形重建。若任务需要输出时域波形,应使用 STFT 域表示。
- 误区二:忽略掩蔽效应。在低信噪比场景下,噪声可能完全掩蔽语音的某些频段,模型需要学会“猜测”被掩蔽的信息,而不是简单地抑制噪声。
- 误区三:评估指标与主观听感脱节。SNR 提升并不等于听感改善,应同时使用 PESQ、STOI 和主观 MOS 评分进行综合评估。