3、信号处理预备:短时傅里叶变换(STFT)、频谱特征、功率谱密度、信混比(SRR)等核心概念

混响抑制算法的本质,是在时频域中对“直达声”与“反射声”进行区分与衰减。因此,在进入任何具体算法之前,必须建立一套统一的“语言体系”——即如何将一段连续的声音信号切分为可分析的时频单元,如何从这些单元中提取有物理意义的特征,以及如何量化混响与直达声之间的相对强度。本章将围绕短时傅里叶变换(STFT)、频谱特征、功率谱密度(PSD)与信混比(SRR)四个核心概念展开,为后续的混响尾音估计、去混响滤波与深度学习特征工程奠定数学与物理基础。

混响抑制核心信号处理概念关系图 时域信号 x(t) 含直达声+混响尾音 短时傅里叶变换 (STFT) 窗函数 + 分帧 + FFT 输出: X(k,n) 复数谱 频谱特征提取 幅度谱 |X(k,n)| 功率谱 |X(k,n)|² 对数谱 / 谱包络 功率谱密度 (PSD) Φ_xx(k,n) = E[|X|²] 平滑估计 / 递归平均 信混比 (SRR) SRR = 直达声功率 / 混响功率 频带相关 / 时变指标 应用:混响尾音估计 → 去混响滤波 → 语音增强/识别前端 SRR 用于控制去混响强度与自适应参数调节

上图展示了本章四个核心概念之间的逻辑关系:时域信号首先通过 STFT 变换为时频域复数谱,进而衍生出幅度谱、功率谱等频谱特征;功率谱密度(PSD)是对功率谱的统计平滑,用于描述信号能量在频域上的稳定分布;信混比(SRR)则是在 PSD 基础上定义的直达声与混响能量的比值,是衡量混响强度、控制去混响算法参数的关键指标。下面逐一展开。

3.1 短时傅里叶变换(STFT):从一维时间到二维时频平面

3.1.1 核心原理:为什么需要 STFT

语音和音频信号是典型的非平稳信号,其频谱特性随时间快速变化。传统傅里叶变换只能给出信号在整个时间长度内的平均频谱,无法反映频率成分随时间的变化。STFT 的基本思想是:用一个有限长度的窗函数在时间轴上滑动,对每个窗内的信号片段做傅里叶变换,从而得到“时间-频率”二维表示。数学上,对离散信号 x[m],STFT 定义为:

X(k, n) = Σ_{m=0}^{L-1} x[n·H + m] · w[m] · e^{-j2πkm/L}

其中,n 为帧索引,H 为帧移(hop size),w[m] 为窗函数(如汉宁窗、汉明窗),L 为窗长(FFT 点数)。每一帧对应一个频谱向量,所有帧拼接起来即构成时频矩阵 X(k,n),k 为频率索引。

3.1.2 参数选择与操作流程

STFT 的参数选择直接影响时频分辨率与算法性能,实际工程中需遵循以下流程:

  1. 确定窗长 L:语音信号通常取 20-30ms(例如 16kHz 采样率下取 512 点,即 32ms)。窗长越长,频率分辨率越高,但时间分辨率越低,瞬态响应变差。
  2. 选择窗函数:汉宁窗(Hann)和汉明窗(Hamming)最常用,主瓣宽度适中、旁瓣衰减较好,可减少频谱泄漏。
  3. 设定帧移 H:通常取窗长的 25%-50%(如 128-256 点),保证相邻帧之间有 50%-75% 的重叠,避免信息丢失。
  4. 执行 FFT:对加窗后的每一帧做 L 点 FFT,得到复数谱 X(k,n)。
  5. 存储与索引:保留复数谱用于后续相位处理,或仅保留幅度谱用于特征提取。
经验提醒:在混响抑制场景中,建议窗长取 32ms(512 点 @16kHz),帧移 16ms(256 点)。过短的窗长会导致低频分辨率不足,混响尾音的频谱结构难以分辨;过长的窗长则会使混响与直达声在时间上更难以区分。

3.1.3 案例拆解:一段带混响语音的 STFT 可视化

假设有一段 2 秒的语音信号,采样率 16kHz,混响时间 RT60=0.8s。使用 512 点汉宁窗、256 点帧移进行 STFT 后,得到 257 个频率点(单边谱)× 125 帧的时频矩阵。观察其幅度谱热力图,可以明显看到:在语音活动段(如元音)出现水平亮条纹(对应谐波结构),而在语音结束后,高频成分迅速衰减,低频段仍有持续的能量拖尾——这就是混响尾音在时频图上的典型表现。这一观察为后续基于时频掩码的去混响算法提供了直观依据。

3.1.4 常见误区与复盘

  • 误区一:窗长越大越好。实际上,过大的窗长会模糊语音的瞬态变化,导致辅音(如爆破音)被平滑掉,影响可懂度。
  • 误区二:忽略相位信息。虽然幅度谱常用于特征提取,但相位在信号重建中至关重要。去混响算法若只修改幅度谱,需配合原始相位或估计相位进行 ISTFT 重建。
  • 误区三:帧移过大。帧移过大会导致帧间不连续,重建信号出现“咔哒”声。一般要求重叠率不低于 50%。

3.2 频谱特征:从复数谱到可用的声学描述

3.2.1 核心原理:幅度谱、功率谱与对数谱

STFT 输出为复数谱 X(k,n),包含幅度与相位。在实际特征提取中,通常使用以下派生形式:

  • 幅度谱:|X(k,n)|,反映各频率成分的强度,是语音增强中最常用的特征。
  • 功率谱:|X(k,n)|²,与信号能量成正比,便于后续统计建模。
  • 对数功率谱:10·log₁₀(|X(k,n)|²),压缩动态范围,更符合人耳听觉特性,常用于深度学习特征。
  • 梅尔频谱:将线性频率映射到梅尔刻度,模拟人耳对频率的非线性感知,是语音识别前端的主流特征。

3.2.2 判断方法:如何从频谱特征识别混响

混响在频谱上具有以下可辨识特征,可作为算法设计的依据:

  1. 时间拖尾:在语音停止后,频谱能量并非立即降为零,而是呈指数衰减,衰减速率与 RT60 相关。
  2. 频谱平滑化:混响会填充频谱谷点,使频谱包络变得平坦,谐波结构对比度下降。
  3. 早期反射与晚期混响:早期反射(50ms 内)增强语音,晚期混响(50ms 后)则产生掩蔽效应,降低清晰度。

3.2.3 实战场景:特征选择对去混响效果的影响

在基于深度学习的去混响系统中,输入特征的选择直接影响模型性能。实验表明,使用对数功率谱(而非线性幅度谱)作为输入,模型收敛速度更快,且对低能量频段的混响尾音估计更准确。若进一步拼接相邻帧的频谱(如前后各 5 帧),模型能够利用时间上下文更好地预测混响尾音。下表对比了不同特征组合的效果:

特征类型维度混响尾音估计误差语音失真适用场景
幅度谱257中等较低传统信号处理
对数功率谱257较低低深度学习模型
梅尔谱80低(但分辨率不足)中等语音识别前端
对数功率谱+Δ+ΔΔ771最低低需要动态信息的场景

3.2.4 常见误区与总结

风险提示:不要直接使用原始复数谱作为特征输入到神经网络。复数谱的实部和虚部数值范围大且分布复杂,不利于模型训练。建议先转换为幅度谱或功率谱,并进行归一化(如均值方差归一化)后再输入模型。

3.3 功率谱密度(PSD):统计稳定的能量分布

3.3.1 核心原理:从单帧功率谱到统计平均

单帧的功率谱 |X(k,n)|² 具有较大的随机波动,直接使用会引入噪声。功率谱密度(PSD)通过对多帧或长时间窗内的功率谱进行统计平均,得到更稳定的能量分布估计。对于平稳随机过程,PSD 定义为自相关函数的傅里叶变换(维纳-辛钦定理)。在工程实现中,常用递归平滑估计:

Φ_xx(k,n) = α · Φ_xx(k,n-1) + (1-α) · |X(k,n)|²

其中,α 为平滑因子(通常取 0.7-0.95),控制估计的响应速度与稳定性。α 越大,估计越平滑,但对混响变化的跟踪越慢。

3.3.2 操作流程:PSD 估计的工程步骤

  1. 分帧与加窗:与 STFT 相同,使用汉宁窗。
  2. 计算功率谱:对每帧 FFT 后取模平方。
  3. 递归平滑:按上式更新 PSD 估计。
  4. 频带聚合:可选地将相邻频点合并为子带(如 1/3 倍频程),降低维度。
  5. 噪声底限:设置最小 PSD 值(如 -80dB),避免除零或数值不稳定。

3.3.3 案例拆解:混响场景下的 PSD 估计

考虑一个会议室场景,麦克风接收到的信号包含直达声、早期反射和晚期混响。使用 α=0.9 的递归平滑估计 PSD,在语音活动期间,PSD 会快速上升;在语音结束后,PSD 不会立即下降,而是以指数衰减——这正是混响尾音在 PSD 上的体现。通过对比语音段与静音段的 PSD,可以估计混响尾音的衰减速率,进而推算 RT60。具体操作:在语音结束后取 500ms 的 PSD 序列,拟合指数衰减曲线,衰减到 -60dB 所需时间即为 RT60 估计值。

3.3.4 常见误区与复盘

  • 误区一:α 取值固定不变。实际中,语音活动期间应使用较小的 α(快速跟踪),静音期间使用较大的 α(平滑估计噪声底)。自适应 α 可显著提升性能。
  • 误区二:忽略频带差异。不同频段的混响强度不同,低频混响衰减慢,高频衰减快。建议分频带估计 PSD 和 SRR。
  • 误区三:直接使用 PSD 作为特征而不做对数压缩。PSD 动态范围可达 60dB 以上,线性值不利于阈值判断和模型训练。

3.4 信混比(SRR):量化直达声与混响的对抗

3.4.1 核心原理:SRR 的定义与物理意义

信混比(Signal-to-Reverberation Ratio, SRR)是衡量混响强度的核心指标,定义为直达声功率与混响功率之比。在时频域中,第 k 个频带、第 n 帧的 SRR 可表示为:

SRR(k,n) = Φ_d(k,n) / Φ_r(k,n)

其中,Φ_d 为直达声 PSD,Φ_r 为混响 PSD。实际中,直达声与混响在麦克风处混合,无法直接分离,因此 SRR 通常通过估计方法获得。一种常用方法是基于混响尾音模型:假设混响 PSD 可由前一帧的 PSD 乘以衰减因子得到:

Φ_r(k,n) = γ(k) · Φ_x(k,n-D)

其中,γ(k) 为频带相关的衰减系数,D 为延迟帧数(对应混响尾音起始点)。SRR 越高,说明直达声占主导,混响影响越小;SRR 越低,说明混响严重,需要更强的去混响处理。

3.4.2 判断方法与操作流程

在实际系统中,SRR 的估计与使用遵循以下流程:

  1. 估计混响 PSD:利用延迟帧的 PSD 乘以衰减系数,或使用混响尾音模型(如 Polack 模型)。
  2. 计算 SRR:将当前帧 PSD 减去混响 PSD 估计值,得到直达声 PSD 估计,再求比值。
  3. 频带聚合:将 SRR 聚合为子带值或全局值(如加权平均),用于控制去混响强度。
  4. 阈值判断:当 SRR 低于阈值(如 0dB)时,启动强去混响;当 SRR 高于阈值时,减少处理强度以保护语音。

3.4.3 实战案例:基于 SRR 的自适应去混响系统

设计一个数字助听器中的去混响模块,要求在不同混响环境下自适应调节处理强度。系统参数:采样率 16kHz,STFT 窗长 512 点,帧移 256 点。初始现象:在 RT60=1.2s 的教室中,用户反映语音“发闷”,可懂度下降。分析过程:计算各频带 SRR,发现 500Hz 以下频带 SRR 平均为 -3dB,而 2kHz 以上频带 SRR 为 +6dB,说明低频混响严重。操作步骤:

  1. 对低频带(<1kHz)设置 SRR 阈值 0dB,当 SRR 低于阈值时,启用谱减法去混响,衰减系数设为 0.3。
  2. 对高频带(>1kHz)设置 SRR 阈值 5dB,仅当 SRR 低于 5dB 时进行轻度去混响(衰减系数 0.1)。
  3. 使用递归平滑 PSD 估计,α=0.85,避免快速波动。

结果对比:处理后语音的 SRR 在低频带提升至 +2dB,主观可懂度评分从 2.8 提升至 4.1(5 分制)。风险与代价:过度去混响导致语音轻微“金属声”,因此设置了最大衰减限制(-12dB)。复盘经验:SRR 阈值需根据听感实验调整,且频带分组不宜过细(避免计算量过大)。

3.4.4 常见误区与总结

核心要点:SRR 不是固定不变的物理量,而是依赖于估计方法的工程指标。不同算法对 SRR 的定义略有差异(如基于 PSD 比值或基于能量比值),在对比不同系统时需注意定义一致性。此外,SRR 与信噪比(SNR)是正交的两个维度——一个房间可以同时具有高 SNR(无噪声)和低 SRR(强混响),去混响算法不应被噪声干扰。

本章建立的 STFT、频谱特征、PSD 与 SRR 概念体系,是后续所有混响抑制算法的共同基础。STFT 提供了时频分析框架,频谱特征决定了信息提取的粒度,PSD 给出了统计稳定的能量描述,而 SRR 则直接量化了混响的严重程度并指导算法参数的自适应调节。在实际工程中,这四个概念往往需要联合使用:例如,在基于深度学习的去混响系统中,输入特征通常是对数功率谱(由 STFT 和 PSD 派生),训练标签则基于 SRR 或混响尾音能量生成。掌握这些预备知识,是理解后续混响尾音估计、维纳滤波、谱减法以及神经网络去混响方法的必要前提。