语音信号处理基础:从声波到频谱特征
人类与机器的语音交互,始于一个看似简单却蕴含复杂物理与信息科学的过程:将空气中振动的声波,转化为计算机能够理解和处理的数字序列。当我们对智能设备说出“打开灯光”时,设备麦克风捕捉到的首先是模拟的物理振动,随后通过一系列精密的信号处理步骤,最终提取出代表语音内容的特征向量。这一转化过程,便是语音识别与合成技术的基石——语音信号处理。若将语音技术系统比作一座大厦,那么本章所阐述的内容,便是其最深层次、最不可或缺的地基。本章将带领读者穿越从物理声学到数字表征的完整链条,深入每一个处理环节的数学原理与工程权衡,为后续理解更高级的声学模型与深度学习架构奠定坚实、可靠的基础。
语音产生的物理机制:源-滤波器模型
理解语音信号,首先需要理解它的产生机制。人类语音源于一套精密的生物物理系统,其核心可抽象为经典的源-滤波器模型。该模型将发声过程分解为两个独立的功能单元:声源 和 声学滤波器。
声源由肺部驱动的气流通过声带(喉部)产生。声带是一对具有弹性的肌肉组织,其张力和质量受喉部肌肉控制。当气流通过收紧的声带缝隙时,会引发声带的周期性开闭振动,产生一种具有鲜明周期性的声压波,称为准周期脉冲序列。这一声源的基频(Fundamental Frequency, $F_0$)决定了语音的音高,成年男性通常在85-180 Hz,女性在165-255 Hz,儿童则更高。声带振动的周期性并非绝对完美,存在微小的随机扰动,这赋予了语音信号天然的非平稳随机特性。
随后,这种声源振动产生的声波进入声道——从喉部到唇部的咽腔、口腔和鼻腔组成的复杂共振结构。声道本质上是一个形状可变的声学管,其横截面积沿长度方向连续变化。根据声学理论,这样的管道对声源信号具有滤波作用:它会对某些频率分量进行增强(共振),对另一些频率分量进行衰减(抗共振)。这些增强的频率点称为共振峰(Formants),是区分不同元音(如汉语的a、o、e)的关键声学线索。例如,元音/a/(啊)通常具有较低的第一共振峰($F_1$)和第二共振峰($F_2$),而元音/i/(衣)则具有较高的$F_1$和$F_2$。鼻音(如m、n)则因鼻腔的耦合引入额外的共振峰结构。
对于辅音,产生机制更为多样。塞音(如b、p、d、t)由声道某处完全闭合后突然释放产生,具有短暂的爆发能量;擦音(如s、sh)由气流通过狭窄通道产生湍流,能量谱呈宽带噪声特性;鼻音则伴随声道的鼻腔耦合。
源-滤波器模型的数学表达可简化为:语音信号 $s(t)$ 是声源信号 $e(t)$ 与声道冲激响应 $h(t)$ 的卷积,即 $s(t) = e(t) * h(t)$。这一卷积关系在频域转化为乘积 $S(\omega) = E(\omega) \cdot H(\omega)$,意味着语音的频谱是声源频谱与声道频率响应的乘积。理解此模型的关键在于:声源($E(\omega)$)主要携带音高信息,而声道($H(\omega)$)主要携带音色(音素)信息。后续所有特征提取的终极目标,便是从混合的 $S(\omega)$ 中,尽可能分离或抑制声源的影响,从而凸显出发音器官(声道)所决定的、与内容直接相关的声学特征。
从连续声波到离散序列:采样定理与数字表示
物理声波是连续时间、连续幅度的模拟信号。要让计算机处理,必须将其转换为离散时间、离散幅度的数字序列。这一转换过程包含两个核心步骤:采样 与 量化。
采样定理:重建的基石
采样定理(Nyquist-Shannon采样定理)是数字信号处理的基石。其核心表述为:若一个连续信号不包含高于 $f_{\text{max}}$ 赫兹的频率分量,则其完整信息可由采样率 $f_s > 2f_{\text{max}}$ 的离散采样点无失真地重建。这里的 $2f_{\text{max}}$ 称为奈奎斯特频率。
该定理的物理意义在于,采样过程相当于将连续信号与一系列脉冲相乘,在频域会产生以采样频率为间隔的频谱复制。若采样率不足($f_s \le 2f_{\text{max}}$),这些复制的频谱会发生重叠,称为混叠(Aliasing)。混叠导致高频分量被错误地映射为低频分量,造成不可逆的信息损失与失真。
在实际语音处理中,语音信号的有效带宽通常认为是4 kHz(电话语音)或8 kHz(宽带语音)。因此,遵循奈奎斯特准则,电话系统采用8 kHz采样率,CD音质采用44.1 kHz(覆盖20 Hz-20 kHz全频段)。值得注意的是,实际系统在采样前总会加入抗混叠滤波器(一个低通模拟滤波器),以严格限制输入信号带宽,防止高频成分混叠进入基带。
量化:幅度离散化的代价
采样解决了时间离散化,量化则解决幅度离散化。ADC(模数转换器)将每个采样点的连续幅度值,映射为有限个离散电平之一。常用位宽为16位,提供 $2^{16}=65536$ 个量化级。量化过程引入的误差称为量化噪声。理论上,信噪比(SNR)与位宽 $b$ 的关系为 $\text{SNR} \approx 6.02b + 1.76$ dB。16位量化可提供约98 dB的理论SNR,远超语音信号动态范围需求。但需注意,语音信号幅度分布不均匀(接近零的幅度概率高),均匀量化效率并非最优,这引出了$\mu$-律、A-律等非线性量化标准,它们在电话系统中用于用更少的位数(如8位)实现与16位线性量化相当的主观音质。
预处理流水线:为特征提取铺平道路
原始数字语音序列直接进行频谱分析并非最优。人耳听觉系统对相位不敏感,且语音信号能量常集中在低频段。因此,一系列预处理步骤被设计出来,旨在抑制不相关信息、突出语音本质特征、并适配后续特征提取算法的假设。标准预处理流水线依次为:预加重 → 分帧 → 加窗。
预加重:平衡频谱倾斜
语音信号的功率谱通常具有显著的频谱倾斜特性:随着频率增加,平均能量呈下降趋势(约每倍频程-6 dB)。这主要源于声源(声带)的谱特性与声道的辐射效应(嘴唇辐射相当于一个高通滤波器)。若不加以纠正,高频分量在后续分析(如频谱包络估计)中会因能量过低而被噪声淹没。
预加重是一个一阶高通滤波器,其时域实现为简单的一阶差分方程: $$y[n] = x[n] - \alpha x[n-1]$$ 其中 $\alpha$ 为预加重系数,通常取0.95或0.97。其频率响应为 $H(\omega) = 1 - \alpha e^{-j\omega}$,在低频处衰减,高频处接近 unity 增益,从而有效补偿频谱倾斜。在频域,预加重相当于将频谱乘以 $(1 - \alpha z^{-1})$,提升高频相对幅度。需注意,此操作在特征提取后(如MFCC计算完毕)需通过逆滤波去加重以恢复原始频谱形状,用于语音合成或重构。
分帧:处理非平稳信号的折中
语音信号是典型的非平稳过程,其统计特性(如频谱)随时间快速变化(约10-30 ms内相对稳定)。但经典的傅里叶变换基于信号平稳假设。折中方案是将长信号切割为短时段(帧),假设每帧内信号是短时平稳的。这就是分帧。
设采样率 $f_s = 16000$ Hz,帧长通常取25 ms,对应样本数 $N = f_s \times 0.025 = 400$ 点。帧与帧之间需要重叠,以确保帧间平滑过渡并避免信息丢失。典型帧移为10 ms(160点),即帧重叠率为60%-75%。重叠处理是后续窗函数应用的前提,也是保证时域连续性关键。
分帧操作本身是简单的缓冲区滑动,但其背后的权衡至关重要:帧长需在时间分辨率与频率分辨率间权衡。帧长越长,频谱泄漏越小,频率分辨率越高(频谱 bin 越窄),但时间分辨率越差,无法捕捉快速音变;帧长越短,时间分辨率越高,但频谱分辨率下降,且窗函数造成的频谱泄漏相对更严重。25 ms 是一个经验性平衡点,能较好地覆盖一个音节的稳定段。
加窗:抑制频谱泄漏
分帧相当于用矩形窗截断无限长信号。矩形窗在时域是有限支撑,在频域却是无限延伸的 sinc 函数($\sin(\pi f N)/(\pi f N)$)。截断操作在频域等效于将真实频谱与 sinc 函数卷积,导致能量从真实频率点“泄漏”到邻近频率,称为频谱泄漏。这会使频谱变得模糊,降低频率分辨率,并可能产生虚假峰值。
为抑制泄漏,需在帧上施加一个窗函数 $w[n]$,使帧两端渐近于零,从而减小截断带来的突变。窗函数在时域平滑过渡,在频域主瓣变宽(降低分辨率)但旁瓣显著衰减(减少泄漏)。常用窗函数包括:
- **矩形窗**:无加窗,频谱泄漏最严重,极少使用。
- **汉明窗**:$w[n] = 0.54 - 0.46 \cos\left(\frac{2\pi n}{N-1}\right)$,旁瓣衰减约42 dB,主瓣较宽,是语音处理中最常用的窗函数之一。
- **汉宁窗**:$w[n] = 0.5 \left(1 - \cos\left(\frac{2\pi n}{N-1}\right)\right)$,旁瓣衰减约31 dB,主瓣比汉明窗略宽。
- **布莱克曼窗**:旁瓣衰减更高(约58 dB),但主瓣更宽,时间分辨率损失更大。
选择窗函数是泄漏抑制与频率分辨率之间的权衡。汉明窗因其良好的旁瓣衰减与适中主瓣宽度,在语音特征提取中被广泛采用。下图展示了不同窗函数的时域波形与频谱(幅度谱)对比:
```mermaid graph TD A[原始语音帧<br/>(矩形窗截断)] --> B[加窗处理<br/>应用汉明/汉宁窗] B --> C[时域平滑帧<br/>两端渐近于零] C --> D[频谱分析<br/>FFT] D --> E[频谱特征<br/>(频谱泄漏显著降低)] ```
加窗后,帧的能量会因窗函数衰减而降低,因此通常需进行窗能量归一化,即除以窗函数的平方和,以保证能量一致性。
时频转换的核心:快速傅里叶变换(FFT)
完成分帧加窗后,我们得到一系列短时平稳的加权帧。下一步是将每个帧从时域表示转换到频域表示,以揭示其频率构成。这一转换由傅里叶变换完成,而其高效实现——快速傅里叶变换(FFT)——是现代语音处理的引擎。
离散傅里叶变换(DFT)的物理意义
对于长度为 $N$ 的离散序列 $x[n]$,其 $N$ 点离散傅里叶变换(DFT)定义为: $$X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j 2\pi k n / N}, \quad k = 0, 1, ..., N-1$$ $X[k]$ 是复数,其模 $|X[k]|$ 表示频率 $f_k = k \cdot f_s / N$ 处的幅度谱,其相位 $\angle X[k]$ 表示相位谱。
DFT 的物理意义在于:它将输入序列分解为 $N$ 个正交的复指数序列(频率分别为 $f_k$)的线性组合,$X[k]$ 即为各频率分量的复系数。因此,DFT 提供了信号在离散频率网格上的频谱表示。
FFT:算法效率的革命
直接计算 DFT 的复杂度为 $O(N^2)$。对于常见的 $N=512$ 或 $1024$,计算量尚可接受。但实时处理或长信号分析时,计算成本过高。FFT 算法(如 Cooley-Tukey 算法)利用 DFT 的对称性与周期性,将复杂度降至 $O(N \log N)$,实现了数量级的加速。其核心思想是分治:将长序列递归地分解为更短的子序列,利用“蝶形运算”合并结果。
FFT 的广泛可用性(如 NumPy 的 `np.fft.fft`)使其成为语音频谱分析的默认工具。需注意,FFT 输出是循环卷积相关,为得到线性卷积结果,通常需对输入进行零填充至至少 $2N-1$ 长度。
从复数频谱到功率谱
语音特征通常不依赖相位信息(相位对感知影响较小,且易受噪声干扰),因此我们关注功率谱,即 DFT 幅度的平方: $$P[k] = |X[k]|^2 = X[k] \cdot X^*[k]$$ 为减少方差,常对连续多帧(如3帧)的功率谱进行平均平滑。为进一步压缩动态范围并更接近人耳对强度的对数感知,常取对数: $$\log P[k]$$ 对数功率谱是后续滤波器组分析的基础输入。
特征提取的双生子:Filterbank 与 MFCC
从对数功率谱到最终用于识别/合成的紧凑特征向量,主要有两条路径:滤波器组能量(Filterbank Energies)与梅尔频率倒谱系数(MFCC)。两者源于相同的预处理流水线,仅在最后一步处理上分道扬镳。
梅尔频率刻度:仿生人耳的非线性感知
人耳对频率的感知并非线性,而是近似对数关系。在低频区(<1 kHz),频率分辨力高(能区分微小频率差);在高频区,分辨力降低。这一特性由梅尔刻度(Mel Scale)定量描述。频率 $f$(Hz)到梅尔频率 $m$ 的经典转换公式为: $$m = 2595 \log_{10}\left(1 + \frac{f}{700}\right)$$ 其逆变换为: $$f = 700 \left(10^{m/2595} - 1\right)$$ 梅尔刻度在低频段压缩程度小,高频段压缩大,模拟了人耳基底膜的行波共振特性。在语音特征提取中,将线性频率轴转换为梅尔频率轴,可使特征更符合人类听觉感知,提升特征对音素的区分能力。
滤波器组(Filterbank)特征:直接的能量分布
滤波器组特征提取流程如下: 1. 对一帧信号完成预加重、分帧、加窗、FFT,得到幅度谱或功率谱。 2. 在线性频率轴上,设计一组三角滤波器(通常20-40个),其中心频率均匀分布在梅尔刻度上(即低频滤波器密集,高频稀疏)。每个滤波器覆盖一定频率范围,相邻滤波器有重叠。 3. 将功率谱(或幅度谱)通过该滤波器组:每个滤波器的输出是其覆盖频率范围内功率谱的加权和(加权即滤波器幅度响应),代表该频带内的能量。 4. 通常对滤波器组输出取对数,得到对数滤波器组能量(Log Filterbank Energies),记为 $F_i, i=1,2,...,K$($K$为滤波器数量)。这是最直接的特征,保留了频谱的包络形状信息。
Filterbank 特征直观、物理意义明确(各频带能量),且计算量相对较小。它直接对应于声道的共振峰结构,是许多现代端到端语音识别系统(如基于CNN或Transformer的模型)的常用输入特征,甚至有时直接使用对数功率谱作为输入。
MFCC:倒谱分析与声道分离
MFCC 是语音识别领域历史上最经典、应用最广泛的特征。其核心思想源于倒谱分析(Cepstral Analysis),旨在从语音频谱中分离声源(激励)与滤波器(声道)的卷积效应。
回顾语音的频域模型:$S(\omega) = E(\omega) \cdot H(\omega)$。取对数得: $$\log S(\omega) = \log E(\omega) + \log H(\omega)$$ 在频域,$\log E(\omega)$(声源对数谱)主要体现为基频及其谐波的周期性峰值,变化缓慢;$\log H(\omega)$(声道对数谱)则相对平滑,由共振峰决定,变化较慢。两者在频率轴上是卷积关系(因为对数将乘积变和,但注意:$\log$ 是逐点操作,$\log (A \cdot B)$ 不等于 $\log A$ 与 $\log B$ 的卷积,但声源和声道在倒谱域有分离特性)。实际上,对 $\log |S(\omega)|$ 进行逆离散余弦变换(IDCT)或逆傅里叶变换(IFFT),可得到倒谱(Cepstrum): $$c[n] = \text{IDCT}\left( \log |S(\omega)| \right)$$ 倒谱的“频率”轴称为伪频率(Quefrency),其低伪频率分量对应声道特性(平滑变化),高伪频率分量对应声源特性(周期性,与基频相关)。因此,仅保留倒谱的低阶系数(如前12-13阶),即可提取主要表征声道形状的系数,而抑制基频等声源信息。这些低阶倒谱系数,即为梅尔频率倒谱系数(MFCC)。
MFCC 的完整计算流程为: 1. 完成预加重、分帧、加窗、FFT,得到功率谱 $P[k]$。 2. 将功率谱通过梅尔刻度上的三角滤波器组,计算每个滤波器的输出能量 $E_i = \sum_{k} P[k] \cdot W_i[k]$,其中 $W_i[k]$ 是第 $i$ 个滤波器的权重。 3. 对滤波器组能量取对数:$\log E_i$。 4. 对 $\log E_i$ 序列(在梅尔频率轴上)进行离散余弦变换(DCT): $$\text{MFCC}[m] = \sum_{i=1}^{K} \log E_i \cdot \cos\left( \frac{m \pi (i - 0.5)}{K} \right), \quad m = 0, 1, ..., M-1$$ 通常取 $M=12-13$。 5. (可选)加入动态特征:计算一阶差分($\Delta$)和二阶差分($\Delta\Delta$),以捕获语音的时序动态,最终特征维度为 $39$($13$ 静态 + $13$ 一阶 + $13$ 二阶)。
MFCC 与 Filterbank 的深度对比
| 特性 | 滤波器组特征(Filterbank) | 梅尔频率倒谱系数(MFCC) | | :--- | :--- | :--- | | 核心操作 | 三角滤波 + 对数 | 三角滤波 + 对数 + DCT | | 输出维度 | 等于滤波器数量 $K$(通常20-40) | 等于DCT阶数 $M$(通常12-13) | | 信息保留 | 保留完整的对数频谱包络形状 | 通过DCT正交变换,能量集中在低阶系数 | | 声道-声源分离 | 无显式分离,声源信息(基频)仍部分保留在对数谱中 | DCT的低阶系数主要表征声道,高阶系数包含声源信息 | | 计算复杂度 | 较低(仅滤波与对数) | 稍高(增加DCT) | | 相关性 | 滤波器组能量间存在较强相关性(因滤波器重叠) | DCT后系数间相关性显著降低,更接近白化特征 | | 历史地位 | 早期系统输入,现多作为神经网络中间表示 | 传统GMM-HMM系统的标准输入,历史最悠久 | | 现代趋势 | 在端到端系统中,常直接使用对数功率谱或Filterbank作为神经网络输入,由网络自行学习最优变换 | 在端到端系统中,MFCC使用减少,因其DCT变换可能丢失对网络有用的高阶信息;但在资源受限场景(如嵌入式)仍有价值 |
关键洞见:M