2、语音信号基础:采样、量化、频谱、时域与频域表示,以及语音特性(短时平稳性、基音周期等)
语音前处理算法的核心任务是从麦克风采集到的原始信号中提取出纯净、连续的语音内容。无论是嵌入式设备上的回声消除(AEC)、噪声抑制(NS),还是自动增益控制(AGC),其底层都建立在对语音信号本质属性的深刻理解之上。本章将系统梳理语音信号的数字化过程(采样与量化)、两种基本分析视角(时域与频域),以及语音区别于普通噪声的关键特性(短时平稳性与基音周期)。这些概念不仅是后续算法设计的理论基石,也直接决定了嵌入式平台上滤波器阶数选择、帧长设置、FFT点数分配等工程参数。
上图展示了语音信号从模拟到数字、从时域到频域、再到语音特性提取的完整链路。在嵌入式语音处理中,我们通常以帧(Frame)为单位处理信号,每帧时长取 10~30ms,这与语音的短时平稳性直接相关。下面逐一展开核心概念。
2.1 采样与量化:模拟到数字的桥梁
核心原理
采样是将连续时间信号变为离散时间信号的过程,其数学表示为 x[n] = x(n·Ts),其中 Ts 为采样周期,fs = 1/Ts 为采样率。根据奈奎斯特采样定理,要无失真地重建原始信号,采样率必须满足 fs ≥ 2·fmax,其中 fmax 是信号中的最高频率分量。语音信号的能量主要集中在 300Hz~3.4kHz(电话带宽),因此传统电话系统采用 8kHz 采样率;而嵌入式语音处理(如智能音箱、会议系统)通常使用 16kHz 或 48kHz 采样率,以保留更多高频细节(如齿音、气声),提升语音识别和音质表现。
量化是将连续幅度值映射为有限个离散电平的过程。以 16-bit 量化为例,共有 65536 个量化电平,其信噪比(SNR)约为 6.02×16 + 1.76 ≈ 98dB。量化位数越高,动态范围越大,但数据量也线性增长。在嵌入式系统中,需要根据存储带宽和算法精度要求权衡选择。
| 采样率 (fs) | 适用场景 | 最高频率 (fmax) | 每帧样本数 (20ms) |
|---|---|---|---|
| 8 kHz | 电话语音、窄带语音 | 4 kHz | 160 |
| 16 kHz | 智能音箱、语音识别 | 8 kHz | 320 |
| 48 kHz | 高保真音频、会议系统 | 24 kHz | 960 |
判断方法或操作流程
在实际嵌入式项目中,选择采样率需遵循以下流程:
- 确定信号带宽需求:若仅处理语音(300~3400Hz),8kHz 足够;若需保留音乐或环境声,则需 16kHz 以上。
- 评估硬件 ADC 能力:检查编解码器(Codec)支持的采样率范围及时钟配置。
- 计算内存与带宽:例如 16kHz/16-bit/双声道,每秒数据量为 16k×2×2 = 64KB/s,需确保 I2S 或 TDM 接口带宽充足。
- 验证抗混叠滤波器:ADC 前端的模拟低通滤波器截止频率应略低于 fs/2,防止高频混叠。
案例拆解:智能音箱采样率选型
某智能音箱产品需实现远场语音唤醒(3米距离),麦克风阵列为 4 麦环形。初始方案采用 48kHz/24-bit 采样,实测发现:AEC 自适应滤波器长度需 4096 阶(对应 85ms 回声尾长),导致 MIPS 占用过高,且唤醒率仅提升 0.5%。经分析,语音唤醒特征(如 MFCC)主要依赖 0~8kHz 频段,而 8~24kHz 多为环境噪声。最终将采样率降至 16kHz/16-bit,滤波器长度减至 2048 阶,MIPS 降低 40%,唤醒率保持 96% 不变,同时节省了 50% 的音频数据存储带宽。
常见误区或总结复盘
- 误区一:认为采样率越高算法效果越好。实际上,AEC 和 NS 的性能更多取决于算法结构和参考信号质量,而非采样率。
- 误区二:忽略量化噪声对低音量语音的影响。当语音信号幅度较小时,16-bit 量化噪声可能掩盖微弱语音,需结合 AGC 或噪声门限处理。
- 复盘:在项目初期应建立采样率-性能-功耗的权衡矩阵,通过客观测试(如 PESQ、WER)而非主观听感来决策。
2.2 时域与频域表示:语音分析的两种视角
核心原理
时域表示直接反映语音波形随时间的变化,常用特征包括短时能量、短时过零率、自相关函数等。短时能量 E = Σ(x[n]·w[n])² 可区分清音与浊音(浊音能量高);短时过零率 ZCR 则反映信号穿越零轴的频率,清音(如/s/、/f/)的 ZCR 明显高于浊音。频域表示则通过傅里叶变换(FFT)将信号分解为不同频率分量的幅度和相位,得到频谱 X(k) = Σ x[n]·e^(-j2πkn/N)。语音的频谱具有明显的谐波结构:基频(F0)及其整数倍处出现峰值,这些峰值称为共振峰(Formant),反映了声道形状。
在嵌入式实现中,通常使用 FFT 算法将时域帧转换为频域。例如,对 16kHz 采样、20ms 帧长(320 点)的信号,做 512 点 FFT(补零至 512),得到 257 个有效频点(0~8kHz),频率分辨率为 16000/512 ≈ 31.25Hz。这一分辨率足以分辨语音的基频和谐波。
判断方法或操作流程
选择时域还是频域分析,取决于具体任务:
- 回声消除(AEC):通常在频域进行,利用 FFT 快速卷积和自适应滤波,降低计算复杂度。
- 噪声抑制(NS):频域处理更直观,可针对不同频段设置增益(如维纳滤波、谱减法)。
- 语音活动检测(VAD):时域特征(能量、ZCR)计算简单,适合低功耗场景;频域特征(频谱平坦度)更鲁棒。
- 基音检测:时域自相关法或频域倒谱法均可,需根据实时性要求选择。
案例拆解:噪声抑制中的频域增益计算
某车载免提系统需抑制风噪(低频 100~500Hz)和胎噪(宽带)。采用频域维纳滤波:每帧 20ms,512 点 FFT。先估计噪声功率谱 Pn(k)(通过语音间隙更新),再计算后验 SNR = |X(k)|²/Pn(k),增益 G(k) = ξ(k)/(1+ξ(k)),其中 ξ(k) 为先验 SNR(通过决策导向法平滑)。实测发现,直接应用增益会导致“音乐噪声”(频谱随机起伏)。改进方案:对增益做时间平滑(α=0.8)和频率平滑(3 点平均),音乐噪声明显降低,主观 MOS 分从 2.1 提升至 3.4。
常见误区或总结复盘
- 误区一:FFT 点数越大越好。点数增加虽提高频率分辨率,但时间分辨率下降,且计算量呈 O(N·logN) 增长。对语音信号,20~40ms 帧长对应的 FFT 点数(512/1024)已足够。
- 误区二:忽略窗函数的影响。矩形窗频谱泄漏严重,应使用汉宁窗或汉明窗,但需注意窗函数带来的幅度修正(如汉宁窗恢复系数为 2)。
- 复盘:时域与频域并非对立,现代算法(如子带 AEC)常结合两者优势:子带分解后,每个子带内用较短的时域滤波器,兼顾收敛速度和计算效率。
2.3 语音特性:短时平稳性与基音周期
核心原理
语音信号是非平稳的,但在 10~30ms 的短时间内,声道形状和激励源可视为近似不变,这称为短时平稳性。这一特性是所有基于帧处理的语音算法(如 LPC、MFCC、AEC)的前提。帧长选择需权衡:帧过长则平稳性假设失效,帧过短则频率分辨率不足。标准做法是帧长 20~30ms,帧移 10ms(即 50% 重叠),以保证相邻帧平滑过渡。
基音周期是声带振动的周期,其倒数即基频 F0。成年男性 F0 约 80~200Hz,女性约 150~350Hz,儿童可达 500Hz。基音周期在时域表现为波形的周期性重复,在频域表现为谐波间隔等于 F0。基音检测在语音编码(如 LPC 中的长时预测)、语音合成和情感识别中至关重要。在嵌入式降噪中,基音信息可用于区分语音与周期性噪声(如发动机轰鸣声)。
| 语音类型 | 激励源 | 时域特征 | 频域特征 | 典型时长 |
|---|---|---|---|---|
| 浊音(元音) | 声带周期振动 | 波形周期性明显,能量高 | 谐波结构清晰,共振峰突出 | 50~250ms |
| 清音(辅音) | 气流湍流 | 波形随机,过零率高 | 频谱平坦,无谐波 | 20~100ms |
| 静音/噪声 | 无 | 低能量,随机 | 频谱平坦或特定频段 | 不定 |
判断方法或操作流程
在嵌入式系统中利用语音特性进行算法设计时,可遵循以下步骤:
- 帧划分:将连续信号按 20ms 帧长、10ms 帧移切分,每帧加窗(汉宁窗)。
- 短时平稳性验证:计算相邻帧的频谱距离(如 Itakura-Saito 距离),若距离过大,说明帧长需缩短或信号变化剧烈。
- 基音检测:对浊音帧,使用自相关法(计算 R(τ) = Σ x[n]·x[n+τ]),在 τ 范围内(对应 50~500Hz)寻找峰值;或使用倒谱法(对频谱取对数再 IFFT),在倒谱域寻找峰值。
- 特征融合:将基音周期、短时能量、ZCR 等特征输入 VAD 或噪声分类器,提升鲁棒性。
案例拆解:利用基音周期区分语音与周期性噪声
某工业对讲机需在 90dB 噪声环境(含 120Hz 电机噪声)下保持清晰通话。初始噪声抑制算法将 120Hz 及其谐波(240、360Hz)全部衰减,导致语音基频(男性约 120Hz)也被误删,语音严重失真。分析发现:电机噪声的谐波间隔恒定(120Hz),且各谐波幅度比稳定;而语音的基频在 80~300Hz 间动态变化,谐波幅度包络随共振峰起伏。改进方案:在频域检测谐波间隔的稳定性,若连续 5 帧谐波间隔不变且幅度比固定,则判定为周期性噪声,仅对该频段做陷波滤波;若谐波间隔变化,则保留语音。实测语音可懂度(STI)从 0.35 提升至 0.72,电机噪声衰减 25dB。
常见误区或总结复盘
- 误区一:认为所有语音帧都是短时平稳的。实际上,语音的起始段(爆破音如/p/、/t/)和结束段变化剧烈,需采用自适应帧长或变长帧处理。
- 误区二:基音检测只适用于浊音。清音段无基音,若强行检测会产生随机错误,应结合 VAD 先判断浊音/清音。
- 复盘:语音特性是算法设计的“先验知识”。在嵌入式资源受限时,应优先利用这些先验简化算法,例如利用基音周期辅助 AEC 的滤波器更新步长控制,在语音段减小步长避免发散,在噪声段增大步长加速收敛。