音频基础与数字信号处理:采样率、位深、时域/频域表示、短时傅里叶变换(STFT)与梅尔频谱的基本概念
在TinyML音频异常检测中,我们面对的核心问题是如何将连续的声波转化为机器可以理解和学习的数值特征。设备异响(如轴承磨损、电机堵转、风扇叶片刮擦)往往表现为特定频段上的能量突变或周期性脉冲,而这些信息隐藏在原始波形之中。要从原始音频中提取出可用于无监督模型训练的特征,必须理解音频数字化的两个基本参数——采样率与位深,以及从时域到频域的三种核心变换工具:傅里叶变换(FT)、短时傅里叶变换(STFT)和梅尔频谱。本章将系统梳理这些概念,并重点说明它们在TinyML设备上的工程约束与实现路径。
上图展示了从模拟声波到可用于TinyML模型的特征向量的完整链路。下面我们将逐一拆解每个环节的数学含义、物理意义以及在实际嵌入式系统中的应用要点。
2.1 采样率与位深:数字音频的基石
2.1.1 核心原理:奈奎斯特定理与量化噪声
采样率(Sampling Rate, fs)决定了每秒从连续信号中抽取的样本点数,单位是Hz。根据奈奎斯特采样定理,要无失真地恢复原始信号,采样率必须至少为信号最高频率成分的两倍。对于设备异响检测,常见的机械故障频率范围通常在100Hz到8kHz之间(例如轴承故障特征频率可能在1kHz-5kHz),因此TinyML设备常选用16kHz采样率,这可以覆盖8kHz以内的频率成分,同时将数据量控制在合理范围。位深(Bit Depth)则决定了每个采样点的幅度量化精度。16位位深提供65536个量化等级,动态范围约为96dB,足以捕捉设备从正常运转到异常冲击的宽动态范围信号。若位深过低(如8位),量化噪声会掩盖微弱的早期故障特征。
2.1.2 判断方法:如何确定合适的采样率与位深
- 确定目标频率上限:查阅设备手册或通过振动测试确定可能出现的最高故障频率f_max,采样率fs ≥ 2.56 × f_max(工程上留10%余量)。
- 评估动态范围需求:若设备正常运转与异常状态声压级差异超过60dB,建议使用16位位深;若环境噪声较大且目标信号较弱,可考虑24位,但MCU处理成本会显著增加。
- 考虑存储与传输带宽:对于无线传输的TinyML节点,采样率越高,功耗越大。例如,16kHz/16bit单声道音频,若持续传输,需要约256kbps带宽,远超BLE的可用吞吐量,因此通常采用板载特征提取而非原始音频传输。
2.1.3 案例拆解:电机轴承异响检测的参数选择
某工厂需要在电机轴承上部署TinyML异常检测节点。初始目标是识别轴承外圈故障,其故障特征频率(BPFO)约为3.2kHz,同时考虑到可能存在的高次谐波,最高关注频率设为8kHz。根据奈奎斯特定理,采样率选择16kHz。位深方面,电机正常运转时声压约70dB,故障初期冲击信号约85dB,但环境背景噪声约55dB,动态范围约30dB,16位位深完全满足需求。实际部署时,采用16kHz/16bit配置,每帧取512点(32ms),帧移160点(10ms),在Cortex-M4内核的MCU上,FFT计算耗时约3.2ms,满足实时处理要求。
2.1.4 常见误区与总结
误区2:位深越大越好。在MCU上,24位音频处理需要32位数据类型模拟,计算量成倍增加,且传感器本身的信噪比可能只有80dB,过高位深并无实际收益。
总结:采样率和位深的选择应基于故障频率范围、动态范围需求和MCU算力三者平衡,建议先做离线数据采集分析,再确定最终参数。
2.2 时域与频域表示:从波形到频谱
2.2.1 核心原理:两种视角的互补性
时域表示直接展示信号幅度随时间的变化,对于检测冲击性异响(如金属碰撞、齿轮断裂)非常直观,表现为波形上的瞬态尖峰。但时域波形难以区分多个频率成分的叠加。频域表示通过傅里叶变换将信号分解为不同频率分量的幅度和相位,能清晰显示设备在哪些频率上存在能量异常。例如,一个正常的电机频谱在50Hz(工频)和100Hz(二倍频)处有稳定峰值,而轴承磨损后会在BPFO频率处出现新的峰值并伴随边带。对于TinyML应用,频域特征通常比原始波形更具判别力,且数据维度可控。
2.2.2 判断方法:何时使用时域,何时使用频域
| 特征类型 | 适用场景 | 典型特征 | 计算复杂度 |
|---|---|---|---|
| 时域特征 | 冲击、瞬态、周期性脉冲 | 峰值、峰峰值、峭度、过零率 | 低(O(N)) |
| 频域特征 | 稳态运行、周期性振动 | 频谱峰值、谐波能量比、边带 | 中(FFT O(N log N)) |
| 时频域特征 | 非平稳信号、变频设备 | STFT能量分布、Mel频谱 | 高(多帧FFT) |
在TinyML异常检测中,通常先计算FFT得到频谱,再提取频带能量、谱质心、谱平坦度等特征。对于变频设备(如变频空调压缩机),单纯频域分析会因基频漂移而失效,此时需要STFT或Mel频谱来捕捉频率随时间的变化。
2.2.3 案例拆解:风扇叶片刮擦的时频特征
一台服务器风扇在运行中出现周期性刮擦声。时域波形显示每0.1秒出现一次窄脉冲,但无法确定刮擦的物理位置。对信号做4096点FFT(频率分辨率约3.9Hz),发现频谱在1.2kHz处出现峰值,且周围有间隔为10Hz的边带。结合风扇转速(6000rpm=100Hz),判断刮擦频率为1.2kHz,边带间隔等于转频,说明刮擦与转子位置相关。进一步用STFT观察,发现1.2kHz能量随时间呈周期性增强,确认是叶片每转一圈与外壳摩擦一次。这一案例说明,频域分析能定位故障频率,而时频分析能揭示故障与旋转周期的关系。
2.2.4 常见误区与总结
2.3 短时傅里叶变换(STFT):非平稳信号的时频分析工具
2.3.1 核心原理:加窗与分帧
STFT的基本思想是将长时信号切分为短时帧(通常20-40ms),对每一帧加窗(如汉宁窗)后做FFT,从而得到随时间变化的频谱。数学上,STFT定义为:X(m,k) = Σ x[n]·w[n-mH]·e^(-j2πkn/N),其中m为帧索引,H为帧移,w为窗函数。窗函数的选择至关重要:矩形窗频率分辨率高但旁瓣泄漏大;汉宁窗旁瓣衰减快,但主瓣稍宽。对于设备异响检测,汉宁窗是常用选择,因为它能有效抑制频谱泄漏,避免强频率成分掩盖弱故障特征。
2.3.2 操作流程:在MCU上实现STFT
- 确定帧长与帧移:帧长N=512(32ms@16kHz),帧移H=160(10ms),重叠率约68%。
- 加窗:预计算汉宁窗系数w[n]=0.5(1-cos(2πn/(N-1))),与帧数据逐点相乘。
- FFT计算:使用定点FFT库(如CMSIS-DSP的arm_cfft_q15),输出为复数频谱。
- 取幅度谱:计算每个频点的幅度|X[k]| = sqrt(Re²+Im²),或使用近似算法避免开方。
- 特征压缩:将512点频谱压缩为若干频带能量(如8-16个频带),降低后续模型输入维度。
2.3.3 案例拆解:泵气蚀的STFT频谱图分析
某水泵在运行中出现气蚀现象,表现为流量下降和噪声增大。采集音频信号(fs=16kHz),做STFT(帧长1024点,帧移512点,汉宁窗)。频谱图上观察到在2kHz-4kHz频段出现宽带能量上升,且随时间呈随机波动,这是气蚀气泡破裂产生的典型宽带噪声。同时,在50Hz工频及其谐波处能量稳定,说明电机本身正常。通过计算2-4kHz频带的总能量作为特征,设定阈值进行异常报警,成功在气蚀初期发出预警。该案例表明,STFT不仅能定位故障频段,还能通过时频分布形态区分故障类型(气蚀为宽带随机,轴承磨损为窄带周期)。
2.3.4 常见误区与总结
误区:忽略窗函数的影响。矩形窗在频谱泄漏严重时可能产生虚假峰值,导致误判。建议至少使用汉宁窗或汉明窗。
总结:STFT是TinyML音频特征提取的核心工具,但需根据设备运行特性调整帧长、帧移和窗函数,并通过离线数据验证参数有效性。
2.4 梅尔频谱:模拟人耳感知的压缩表示
2.4.1 核心原理:梅尔刻度与滤波器组
梅尔刻度(Mel Scale)是一种基于人耳听觉感知的非线性频率刻度,公式为:mel = 2595 × log10(1 + f/700)。在低频区域(<1kHz),梅尔刻度与线性频率近似成正比;在高频区域,对数关系使得频率分辨率降低。梅尔频谱的计算流程为:先对STFT幅度谱取平方得到功率谱,再通过一组三角滤波器(通常26-40个)进行加权求和,每个滤波器覆盖一个梅尔频带,最后取对数得到对数梅尔频谱。对数操作模拟了人耳对声音强度的对数感知,同时压缩了动态范围,使特征对幅度变化更鲁棒。
2.4.2 判断方法:梅尔频谱 vs 线性频谱
| 对比维度 | 线性频谱 | 梅尔频谱 |
|---|---|---|
| 频率分辨率 | 均匀分布 | 低频高分辨率,高频低分辨率 |
| 数据维度 | 通常256-512维 | 通常26-40维 |
| 物理意义 | 直接对应FFT频点 | 模拟人耳感知,符合听觉特性 |
| TinyML适用性 | 维度高,需额外降维 | 维度低,可直接作为模型输入 |
| 抗噪能力 | 对噪声敏感 | 对数压缩后对噪声鲁棒性更好 |
在TinyML异常检测中,梅尔频谱的优势在于:维度低(26-40维),适合作为轻量级神经网络(如自编码器)的输入;对数压缩使得特征对设备运行状态变化更敏感,而对环境噪声变化相对不敏感。但需注意,梅尔滤波器组的设计需要预先确定频率范围(如0-8kHz)和滤波器数量,这需要根据目标设备的频率特性进行调优。
2.4.3 案例拆解:空调压缩机异响的梅尔特征
某空调压缩机在制冷模式下出现间歇性异响。采集音频(fs=16kHz),计算梅尔频谱(40个滤波器,频率范围0-8kHz)。正常运行时,梅尔频谱能量集中在低频段(mel 0-10,对应0-1kHz),且随时间平稳。异常时,在mel 20-30(对应3-5kHz)出现能量突增,且呈周期性波动。通过提取每帧梅尔频谱的均值、方差和峰值位置作为特征,使用孤立森林算法进行无监督训练,成功检测出异响。该案例说明,梅尔频谱能有效压缩信息,同时保留故障相关的频带特征,适合作为无监督模型的输入。
2.4.4 常见误区与总结
总结:梅尔频谱是STFT的感知化压缩,在保持故障判别信息的同时大幅降低维度,是TinyML音频异常检测的首选特征之一。但需注意,梅尔频谱对频率分辨率做了非均匀处理,对于需要精确频率定位的故障(如轴承特征频率),可能需要结合线性频谱特征。
2.5 本章总结与工程实践要点
本章从音频数字化的基础参数出发,系统介绍了采样率、位深、时域/频域表示、STFT和梅尔频谱的核心概念。在TinyML音频异常检测项目中,建议遵循以下工程实践路径:首先,根据设备故障频率范围确定采样率(通常16kHz),根据动态范围确定位深(通常16bit);其次,采用分帧加窗的STFT将时域信号转换为时频表示;然后,通过梅尔滤波器组压缩为低维特征;最后,将特征输入无监督模型(如自编码器、孤立森林)进行异常检测。整个流程需在MCU上实时完成,因此每一步的参数选择都要考虑计算复杂度和内存占用。建议在开发初期使用PC端Python工具(如librosa)进行离线特征分析和参数验证,再移植到嵌入式平台。