2、基础知识:语音信号处理基础、MFCC特征提取、关键词识别任务定义与常见数据集

在进入Edge AI语音模型压缩之前,必须先建立对语音信号处理链路的基本认知。关键词识别(Keyword Spotting, KWS)是典型的资源受限场景下的语音任务,其输入并非原始波形,而是经过一系列信号处理与特征提取后得到的低维表示。本章将围绕“语音信号如何变成模型输入”这一主线,依次讲解语音信号数字化基础、MFCC特征提取的完整流程、KWS任务的形式化定义,以及最常用的Speech Commands数据集。理解这些内容,是后续进行模型剪枝、量化和知识蒸馏的前提——因为特征维度和分布直接决定了模型压缩策略的选择空间。

语音信号 → MFCC特征 → KWS模型输入 链路图 语音信号数字化 采样率 16kHz 量化 16bit PCM 预加重 0.97 分帧 30ms/帧移20ms 加窗 Hamming 频谱与Mel滤波 FFT 512点 功率谱计算 Mel滤波器组 40个 频率→Mel映射 对数压缩 log() DCT与特征输出 DCT-II 变换 取前13维系数 一阶/二阶差分 均值方差归一化 输出: 39维/帧 KWS模型输入 时间帧数 T 特征维度 F 张量形状 [1, T, F] 或 [1, 1, T, F] 关键参数与压缩影响 • 采样率16kHz:覆盖0-8kHz频带,满足语音主要能量分布;降低采样率会损失高频辅音信息。 • 帧长30ms/帧移20ms:1秒语音约产生49帧;帧移增大可减少计算量但会降低时间分辨率。 • Mel滤波器组数量:40个是标准配置;减少到20个可降低特征维度,但会损失频率分辨率。 • DCT保留维数:13维是基础配置;可尝试10维或8维以减小模型输入尺寸,但需评估准确率损失。 • 差分特征:一阶/二阶差分增加上下文信息,但会扩大特征维度;在压缩场景可考虑仅使用静态特征。 • 归一化:全局均值方差归一化对模型收敛至关重要;在量化部署时需将归一化参数融合到前层。

2.1 语音信号数字化与预处理

语音信号本质上是模拟信号,必须经过采样、量化和编码才能被计算机处理。在Edge AI场景中,最常见的配置是16kHz采样率、16bit量化、单声道PCM格式。16kHz采样率意味着奈奎斯特频率为8kHz,覆盖了语音信号绝大部分能量所在的频段(300Hz-3.4kHz为电话语音主要频带,而宽带语音扩展到7kHz)。选择16kHz而非44.1kHz,是因为人耳对语音的感知上限约为8kHz,更高的采样率只会增加数据量而对识别准确率几乎没有贡献。

预处理阶段包含三个关键步骤:预加重、分帧和加窗。预加重使用一阶高通滤波器(系数通常为0.97),目的是提升高频分量——因为语音信号的高频段能量衰减较快,预加重可以平衡频谱,使后续的频谱分析更加稳定。分帧是将连续语音切分为短时片段,通常帧长为25-30ms,帧移为10-20ms。帧移小于帧长意味着相邻帧有重叠,这可以避免帧边界处的信息丢失。加窗则使用Hamming窗或Hann窗,目的是减少帧边缘的频谱泄漏。

核心原理:语音信号具有短时平稳性——在10-30ms的时间尺度内,语音的频谱特性可以认为是近似不变的。因此,分帧加窗后对每一帧进行频谱分析,就能捕捉到语音的动态变化特征。这一假设是整个语音特征提取的基础。

2.2 MFCC特征提取完整流程

梅尔频率倒谱系数(Mel-Frequency Cepstral Coefficients, MFCC)是语音识别领域最经典的特征表示。其核心思想是模拟人耳对频率的非线性感知——人耳对低频信号的分辨能力远高于高频,因此使用Mel刻度对频率进行非线性映射。Mel频率与线性频率的转换公式为:

Mel(f) = 2595 * log10(1 + f / 700)

MFCC提取的完整流程如下:

  1. 预加重与分帧加窗:如前所述,得到每帧约480个采样点(30ms × 16kHz)。
  2. FFT变换:对每帧信号做512点FFT,得到频谱幅度。512点FFT的频率分辨率为16000/512 = 31.25Hz。
  3. 功率谱计算:取频谱幅度的平方,得到功率谱。
  4. Mel滤波器组:设计一组三角滤波器(通常40个),在Mel刻度上等间距排列,将功率谱映射到Mel域。每个滤波器的输出是该频带内能量的加权和。
  5. 对数压缩:对每个滤波器输出取自然对数,模拟人耳对声音强度的对数感知。
  6. DCT变换:对对数能量向量做离散余弦变换(DCT-II),取前13个系数作为静态MFCC特征。DCT的作用是去相关,使各维特征之间尽可能独立。
  7. 差分特征:计算一阶差分(Δ)和二阶差分(ΔΔ),分别捕捉特征的动态变化和加速度信息。最终每帧特征维度为13×3=39维。
步骤 输入 输出 关键参数 对压缩的影响
预加重 原始波形 高频增强波形 系数α=0.97 无直接影响
分帧 连续波形 帧序列 帧长30ms,帧移20ms 帧移增大→帧数减少→计算量降低
FFT 每帧480点 256点频谱 512点FFT FFT点数减少→频率分辨率降低
Mel滤波 256点功率谱 40维Mel能量 滤波器组数量40 滤波器减少→特征维度降低
DCT 40维对数能量 13维静态特征 保留系数13 保留系数减少→输入维度降低
差分 13维静态特征 39维完整特征 一阶+二阶差分 省略差分→维度降至13维

2.3 关键词识别任务定义

关键词识别(KWS)的任务定义可以形式化为:给定一段连续的音频流,系统需要检测其中是否包含预设的关键词(如“Hey Siri”、“OK Google”、“小爱同学”),并在检测到关键词时触发后续操作。与大规模语音识别(ASR)不同,KWS通常只识别少量固定词汇(10-30个),且运行在低功耗设备上,需要满足实时性和低延迟要求。

KWS的典型任务模式有两种:分类模式和检测模式。分类模式将音频切分为固定长度的片段(如1秒),判断该片段属于哪个关键词类别或背景噪声类别。检测模式则处理连续音频流,需要在时间轴上定位关键词的起止位置。在模型压缩场景中,分类模式更为常见,因为其输入输出结构固定,便于优化。

KWS模型的输入通常是MFCC特征矩阵,形状为[T, F],其中T为时间帧数,F为特征维度。以1秒音频为例,帧移20ms会产生约49帧,加上上下文扩展后通常取64帧。特征维度为39维(含差分)或13维(仅静态)。因此,模型输入张量形状为[1, 64, 39]或[1, 64, 13],这直接决定了模型第一层的参数量。

经验提醒:在模型压缩项目中,特征维度的选择往往被忽视。实际上,将MFCC特征从39维降至13维(省略差分),可以使第一层卷积的参数量减少约67%。对于参数量本来就小的KWS模型,这一优化效果非常显著。

2.4 Speech Commands数据集详解

Speech Commands数据集是Google于2018年发布的开源关键词识别数据集,目前已成为KWS领域的事实标准。该数据集包含超过10万条音频,每条时长约1秒,采样率为16kHz,格式为WAV。数据集中包含30个类别,其中20个核心词汇(如“yes”、“no”、“up”、“down”、“left”、“right”等),加上“silence”(静音)和“unknown”(未知词)两个特殊类别,以及若干背景噪声样本。

数据集的官方划分方式为:训练集约80%、验证集约10%、测试集约10%。划分时确保同一说话人的音频不会同时出现在训练集和测试集中,以评估模型的泛化能力。在模型压缩实验中,通常使用Speech Commands的v2版本,其类别数为35(包含更多词汇和噪声类型)。

使用Speech Commands数据集时,需要注意以下几点:

  • 类别不平衡:不同词汇的样本数量略有差异,但整体分布较为均匀。在压缩模型中,类别不平衡可能导致量化误差对少数类影响更大。
  • 背景噪声:数据集中包含“silence”类别,通常通过从背景噪声样本中随机截取1秒音频生成。在压缩场景中,噪声鲁棒性是一个重要考量。
  • 数据增强:常见增强方式包括时间偏移、速度扰动、添加背景噪声等。增强后的数据分布变化会影响模型压缩后的表现,因此压缩前后应使用相同的增强策略。
数据集版本 类别数 总样本数 采样率 音频时长 适用场景
Speech Commands v1 30 ~65,000 16kHz 1秒 基础KWS实验
Speech Commands v2 35 ~105,000 16kHz 1秒 标准KWS基准测试
Google Speech Commands 35 ~105,000 16kHz 1秒 模型压缩与量化实验

2.5 特征提取对模型压缩的影响分析

特征提取环节的选择直接决定了模型压缩的可行性和效果。从模型压缩的角度,特征维度、特征分布和特征计算复杂度是三个关键考量因素。

特征维度影响模型输入层的大小。以典型的KWS模型(如DS-CNN)为例,第一层卷积的输入通道数等于特征维度。当特征维度从39降至13时,第一层参数量减少约67%,整体模型参数量减少约20-30%。但需要注意的是,特征维度降低会损失信息,可能导致准确率下降。实验表明,在Speech Commands数据集上,使用13维静态特征相比39维完整特征,准确率下降约1-2个百分点。

特征分布影响量化压缩的效果。MFCC特征经过对数压缩和DCT后,各维度的数值范围差异较大——低维系数(如第0维)通常能量较大,而高维系数能量较小。在INT8量化时,这种分布不均匀会导致量化误差增大。解决方案包括:对特征进行逐维归一化、使用per-channel量化、或在量化前对特征做额外的缩放。

特征计算复杂度影响端到端的延迟。MFCC提取本身需要FFT、滤波、DCT等操作,在低功耗MCU上可能消耗数毫秒时间。对于实时KWS系统,特征提取的延迟与模型推理的延迟同等重要。在模型压缩项目中,应同时优化特征提取代码(如使用定点FFT、查表法计算Mel滤波器)和模型推理代码。

风险提示:在模型压缩过程中,不要只关注模型本身的参数量和计算量,而忽略了特征提取环节的优化。如果特征提取耗时占端到端延迟的30%以上,即使模型压缩得再小,整体延迟也无法满足实时性要求。建议在项目初期就对特征提取和模型推理进行联合性能分析。

2.6 案例拆解:从39维到13维的压缩实验

假设我们有一个基于DS-CNN的KWS模型,输入为1秒音频的39维MFCC特征(64帧×39维),模型参数量约为80K,在Cortex-M4上推理延迟为45ms。现在需要将模型部署到资源更紧张的Cortex-M0+平台上,目标延迟为30ms以内。

初始分析:模型参数量80K中,第一层卷积(输入39通道,输出48通道,3×3卷积核)的参数量为39×48×3×3=16,848,占总参数量的21%。如果将输入特征从39维降至13维,第一层参数量降至13×48×3×3=5,616,减少约67%。整体参数量降至约68K,减少15%。

实施步骤:

  1. 修改特征提取代码,仅输出13维静态MFCC特征,省略差分计算。
  2. 调整模型输入层,将输入通道数从39改为13。
  3. 使用Speech Commands v2数据集重新训练模型,保持其他超参数不变。
  4. 在验证集上评估准确率,记录与39维基线模型的差异。

实验结果:39维基线模型准确率为94.2%,13维模型准确率为92.8%,下降1.4个百分点。模型参数量从80K降至68K,推理延迟从45ms降至32ms(其中特征提取节省约8ms,模型推理节省约5ms)。虽然延迟仍未达到30ms目标,但结合后续的INT8量化(预计再节省30%推理时间),可以满足要求。

复盘经验:特征维度压缩带来的准确率损失在可接受范围内,但需要配合其他压缩手段才能达到目标。此外,13维特征对噪声的鲁棒性略差,在信噪比较低的场景下准确率下降更明显。因此,在实际部署中需要根据目标场景的噪声水平权衡特征维度的选择。

总结:语音信号处理与MFCC特征提取是KWS模型压缩的基础。理解特征维度的选择、特征分布的特点以及特征提取的计算开销,能够帮助我们在模型压缩时做出更合理的决策。在后续章节中,我们将基于本章的特征基础,深入探讨剪枝、量化和知识蒸馏等具体压缩技术。