语音信号基础:采样率、量化、时域与频域表示、短时傅里叶变换(STFT)、频谱图的基本概念

语音信号是VAD(语音活动检测)与人声分离系统的输入源头。无论是判断一段音频中是否存在人声,还是将人声从背景音乐中剥离,所有算法的起点都是对原始声波进行数字化表示。理解采样率、量化精度、时域/频域特性以及短时傅里叶变换(STFT)与频谱图,是后续设计特征工程、训练神经网络模型、调优阈值参数的根基。本章将从数字化的物理约束出发,逐步建立从波形到频谱的完整认知框架。

语音信号数字化与频谱分析链路 模拟声波 连续时间/幅度 采样 离散时间序列 x[n],n=0,1,2... 量化 数字信号 16bit / 24bit 分帧 + 加窗 帧长25ms,帧移10ms STFT FFT → 频谱序列 频谱图 时间×频率×能量 VAD/分离 关键参数与典型值 • 采样率:8kHz(电话)、16kHz(语音识别)、44.1kHz(音乐) • 量化位数:16bit(动态范围96dB)、24bit(144dB) • STFT:窗长512/1024点,50%重叠,Hamming/Hann窗 • 频谱图:横轴时间、纵轴频率、颜色表示能量(dB)

2.1 采样率与量化:数字化的物理边界

核心原理:模拟语音信号是连续变化的声压波形,必须通过模数转换(ADC)变为离散序列。采样率(Sampling Rate)决定每秒采集的样本点数,量化位数(Bit Depth)决定每个样本的幅度精度。根据奈奎斯特采样定理,采样率必须大于信号最高频率的两倍,否则会产生混叠(Aliasing)现象。语音信号的能量主要集中在300Hz-3.4kHz(电话带宽),因此8kHz采样率即可满足电话通信;而音乐或高质量语音处理通常使用44.1kHz或48kHz采样率。

量化与信噪比:量化是将连续幅度映射到有限离散电平的过程。16bit量化提供65536个电平,理论信噪比约为96dB(6.02×16+1.76)。量化误差表现为背景噪声,在静音段尤为明显。对于VAD系统,量化噪声会直接影响静音检测的灵敏度——如果噪声底过高,低音量语音可能被误判为静音。

采样率适用场景最高频率帧长(25ms)样本数
8 kHz电话语音、传统VAD4 kHz200
16 kHz语音识别、深度学习VAD8 kHz400
44.1 kHz音乐分离、高保真处理22.05 kHz1102
48 kHz影视音频、专业制作24 kHz1200
经验提醒:在VAD与人声分离任务中,16kHz采样率是性价比最高的选择。它覆盖了语音的主要频带(4kHz以上多为齿音和摩擦音的高频分量,对VAD决策影响有限),同时计算量仅为44.1kHz的约1/3。若处理音乐中人声分离,建议使用44.1kHz以保留乐器高频细节。

2.2 时域表示:波形、能量与过零率

时域特征:时域波形直接展示幅度随时间的变化。对于VAD,最基础的时域特征是短时能量(Short-time Energy)和短时过零率(Zero Crossing Rate, ZCR)。短时能量反映帧内样本的平方和,语音段能量通常高于静音段;过零率反映信号穿越零轴的频率,清音(如/s/、/f/)的过零率较高,浊音(如/a/、/i/)的过零率较低。

判断方法:实际应用中,VAD系统常采用双门限法——先计算每帧能量,设置高门限和低门限。当能量超过高门限时判定为语音起始;当能量低于低门限且持续超过一定帧数(如10帧)时判定为语音结束。过零率作为辅助特征,用于区分清音和静音(静音的过零率通常较低且稳定)。

小型场景说明:假设一段16kHz采样的录音,帧长25ms(400个样本),帧移10ms。计算第50帧(对应时间0.5s处)的短时能量:
import numpy as np
frame = audio[50*160 : 50*160 + 400]  # 第50帧
energy = np.sum(frame ** 2) / len(frame)  # 归一化能量
zcr = np.sum(np.abs(np.diff(np.sign(frame)))) / (2 * len(frame))
若能量为0.85(归一化后),ZCR为0.12,可初步判定为浊音语音段;若能量为0.02,ZCR为0.05,则更可能是静音或背景噪声。

2.3 频域表示:从傅里叶变换到短时傅里叶变换

核心原理:傅里叶变换将时域信号分解为不同频率的正弦波分量,得到全局频谱。但语音信号是非平稳的——发音器官在几十毫秒内就会变化,因此需要短时傅里叶变换(STFT)。STFT的基本思想是:用固定长度的窗函数(如Hamming窗)截取信号片段,假设窗内信号近似平稳,然后对该片段做FFT。窗函数沿时间轴滑动,得到一系列频谱,组合成二维时频表示。

STFT参数选择:窗长决定频率分辨率和时间分辨率的权衡。窗越长,频率分辨率越高(频谱更精细),但时间分辨率越低(无法捕捉快速变化);窗越短则相反。常用配置为:窗长25ms(400点@16kHz)、帧移10ms(160点)、FFT点数512(补零至2的幂次)。频率分辨率 = 采样率/FFT点数 = 16000/512 ≈ 31.25Hz。

常见误区:初学者常混淆“帧长”和“FFT点数”。帧长是实际参与加窗的样本数(400点),FFT点数可以更大(512点),多出的部分补零。补零不会增加真实频率分辨率,只是让频谱曲线更平滑。真正的频率分辨率由窗长决定:Δf = fs / N_window。

2.4 频谱图:VAD与分离的“视觉语言”

频谱图(Spectrogram)是STFT结果的可视化:横轴为时间,纵轴为频率,颜色或亮度表示该时频点的能量幅度(通常取对数坐标,单位dB)。频谱图是VAD和人声分离模型最常用的输入特征——深度学习模型(如CNN、Transformer)可以直接将频谱图作为图像处理,或将其展平为特征序列。

案例拆解:噪声环境下的VAD特征对比

场景时域波形特征频谱图特征VAD判断
安静办公室能量低、波动小低频均匀分布,无谐波结构静音
人声说话能量中等、有包络起伏基频(100-300Hz)及谐波清晰可见语音
空调噪声能量稳定、无起伏低频(50-200Hz)持续存在非语音
键盘敲击短促脉冲、能量突增宽带瞬态,持续时间短(<50ms)非语音(需结合时长)

操作流程:从音频到频谱图的完整链路

  1. 预加重:对时域信号通过一阶高通滤波器(y[n]=x[n]-0.97x[n-1]),提升高频分量,补偿语音信号高频能量衰减。
  2. 分帧:按帧长25ms、帧移10ms切分信号,相邻帧有50%重叠,保证帧间平滑过渡。
  3. 加窗:每帧乘以Hamming窗(w[n]=0.54-0.46cos(2πn/(N-1))),减少频谱泄漏。
  4. FFT:对加窗后的帧做512点FFT,取幅度谱或功率谱(幅度平方)。
  5. 对数压缩:将幅度谱转换为dB刻度:20log10(|X|+ε),ε为小常数防止log(0)。
  6. 拼接:将所有帧的频谱按时间顺序排列,形成二维矩阵,即频谱图。
实战场景:电话语音VAD中的频谱图应用
某呼叫中心需要对8kHz电话录音进行VAD,以统计客服与客户的说话时长。初始方案仅使用短时能量,但误报率高达23%——原因是电话线路中的背景噪声(约-35dBm)在静音段能量波动较大。改进方案:
  • 输入:8kHz/16bit单声道录音,每帧200样本(25ms),帧移80样本(10ms)
  • 特征:计算每帧的频谱图(256点FFT),提取子带能量(0-1kHz、1-2kHz、2-3kHz、3-4kHz)
  • 判断:语音段在1-3kHz频带能量显著高于静音段,且谐波结构明显(相邻频带能量比稳定)
  • 结果:误报率降至4.2%,召回率从88%提升至96%
  • 代价:计算量增加约3倍(FFT+子带滤波),但单核CPU仍可实时处理
复盘发现,单纯时域能量无法区分“平稳噪声”和“低音量语音”,而频谱图的子带分布能有效捕捉语音的谐波特性。

2.5 常见误区与总结复盘

误区一:采样率越高越好。高采样率带来更大数据量和计算开销,但对VAD而言,8kHz已覆盖电话语音主要频带,16kHz足够捕捉所有语音特征。盲目使用44.1kHz只会增加延迟和功耗。

误区二:忽略预加重。语音信号的高频分量(2-4kHz)能量较低,若不预加重,频谱图中高频细节会被压缩,影响清音检测和声纹特征提取。

误区三:窗函数选择随意。矩形窗频谱泄漏严重,会导致相邻频率分量相互干扰;Hamming窗和Hann窗是语音处理的标准选择,能有效抑制旁瓣。

误区四:将频谱图直接输入全连接网络。频谱图具有局部相关性(相邻时频点高度相关),应使用卷积或注意力机制提取局部模式,否则模型参数量巨大且泛化能力差。

总结复盘:本章的核心是建立“模拟→数字→时频”的完整链路。采样率和量化决定了信号保真度的物理上限;时域特征(能量、过零率)适合快速粗判;STFT和频谱图提供了更丰富的频域信息,是深度学习VAD和人声分离的标准输入。实际工程中,建议先使用16kHz采样、16bit量化、25ms窗长/10ms帧移的默认配置,再根据具体场景(噪声类型、实时性要求、计算资源)微调参数。频谱图的动态范围压缩(对数刻度)和归一化处理,对模型训练的稳定性至关重要。