Hotdry.

Article

被动超声波标签的信号解码算法:SoundOff 的频谱分析与分类实现

从软件信号处理角度深入剖析 SoundOff 系统的频谱特征提取、频率分箱策略、匹配阈值与惩罚机制,为被动式超声波传感的算法设计提供可落地的工程参数。

2026-05-06systems

在智能家居与普适计算领域,被动式超声波标签因其无需电池、无需电子元件的特性,正成为非侵入式传感的重要技术路径。与主动发射信号的 RFID 或蓝牙标签不同,被动超声波标签通过物理结构(如金属薄片、塑料振膜)在受力时产生独特的超声频谱指纹,识别系统需要从噪声环境中准确提取并分类这些特征信号。本文聚焦 SoundOff 系统的软件信号处理 pipeline,从算法角度详细解析其频谱分析、特征提取与匹配分类的核心实现。

信号采集与预处理_pipeline

SoundOff 系统的信号采集阶段采用超采样策略,以 384 kHz 的采样率捕获麦克风输入信号。该采样率的设计考量主要来自两方面:其一,超声波频率范围通常在 20 kHz 至 100 kHz 之间,根据奈奎斯特采样定理,采样率至少需要达到最高频率的两倍,384 kHz 为 100 kHz 的 3.84 倍,提供了充足的频谱分析裕量;其二,高采样率能够获得更高的时间分辨率,有助于捕捉标签产生的瞬态脉冲响应。

采集到的原始信号首先经过数字带通滤波器,限定处理频段为 20 kHz 至 100 kHz。这一带通滤波步骤至关重要,因为它不仅消除了人类可听范围内的环境噪声(如空调运行声、语音对话),还抑制了低频机械振动干扰。滤波器设计通常采用有限冲击响应(FIR)或无限冲击响应(IIR)形式,考虑到实时性要求,SoundOff 可能采用了多级级联的二阶巴特沃斯滤波器,在通带纹波与过渡带宽度之间取得平衡。

脉冲检测与时域分割

带通滤波后的信号进入脉冲检测阶段。系统的核心假设是:被动标签在受到机械触发(如门把手转动、马桶盖掀开)时会产牛一个近似冲激响应的高频脉冲。这个脉冲在时域上表现为幅度的快速上升与衰减,SoundOff 通过寻找幅度局部最大值来定位脉冲起始点。

检测到脉冲峰值后,系统将其分割为 0.15 秒的数据窗口进行后续分析。选择 0.15 秒作为窗口长度的依据在于:被动标签的超声发射通常持续数十至数百毫秒,过短的窗口可能捕获不完整的频谱特征,过长的窗口则可能引入过多环境噪声。实验中 0.15 秒的窗口长度能够覆盖典型触发事件的完整超声发射,同时保持足够的信噪比。

频谱计算与垂直噪声滤除

每个 0.15 秒的窗口通过短时傅里叶变换(STFT)转换为时频表示。SoundOff 采用 Librosa 库进行频谱计算,具体参数配置为:FFT 窗口大小 1024 采样点,跳跃长度(hop length)为 512 采样点。以 384 kHz 采样率计算,FFT 窗口对应约 2.67 毫秒的时间分辨率和约 375 Hz 的频率分辨率;跳跃长度 512 意味着相邻帧之间有约 1.33 毫秒的重叠,这对于捕捉快速变化的脉冲响应是必要的。

在计算得到的频谱图(spectrogram)中,一个常见的噪声来源是垂直尖峰(vertical spikes),即某些瞬时时刻在宽频范围内出现的高幅度虚假峰值。这些尖峰可能源于麦克风本身的瞬态噪声、电源干扰或环境中的突发声源。SoundOff 采用中值滤波器进行垂直去噪,滤波器窗口大小设为 6,对应约 0.008 秒的时间跨度。中值滤波器的非线性特性使其能够有效抑制脉冲噪声同时保留频谱的边缘特征,这是相比线性低通滤波器的重要优势。

频率分箱与局部最大值提取

滤除垂直噪声后,系统需要在频谱图中提取代表标签身份的峰值频率。与简单的全局最大值搜索不同,SoundOff 采用了频率分箱策略来确保提取的峰值在超声频谱上均匀分布。

具体而言,系统从每个处理后的频谱段中提取 10 个局部最大值,分布规则为:4 个峰值来自 35 kHz 以下的低频段,3 个峰值来自 35 kHz 至 65 kHz 的中频段,3 个峰值来自 65 kHz 以上的高频段。这一分箱策略的设计动机在于:超声波在空气中传播时存在频率依赖的衰减特性,高频成分的衰减速度远快于低频成分。如果不加限制地进行全局峰值搜索,低频峰值会主导匹配结果,导致高频信息被忽视,进而降低具有丰富高频特征的标签的识别率。通过强制分箱提取,系统能够保留各频段的代表性特征,提高区分度。

局部最大值的搜索在频谱的时间 - 频率矩阵上沿频率轴进行,而非沿时间轴。这种方法确保每个提取的峰值代表某个特定频率点的局部能量最大值,而非某个时刻的瞬时响应。

频率匹配与容忍度设计

提取的峰值频率需要与预先标注的标签特征频率进行匹配。SoundOff 设定匹配容忍度为 ±400 Hz,即当提取的峰值频率位于标注频率的 ±400 Hz 范围内时,判定为匹配成功。

400 Hz 的容忍度选择需要权衡两个因素:容忍度过小会降低匹配的鲁棒性,因为即使是同一标签在不同触发事件下产生的频率也存在微小抖动;容忍度过大则可能导致不同标签的特征频率发生误匹配。考虑到系统采样率为 384 kHz、FFT 频率分辨率约为 375 Hz,±400 Hz 的容忍度略大于一个频率分辨率单元,既能容纳标签制造公差和触发力度差异导致的频率漂移,又不会过度宽松导致误判。

匹配过程中采用 binning 方式:将 20 kHz 至 100 kHz 的整个频段划分为多个子区间,在每个子区间内独立寻找局部最大值,而非全局搜索。这种方法的优势在于:它确保了提取的峰值分布在不同频段,即使某个频段的峰值幅度较弱,只要存在可辨识的局部极大值,就能被捕获。

惩罚机制与分类阈值

单纯的频率匹配数量并不能保证分类准确性,因为环境噪声可能在错误频率位置产生虚假峰值,或者标签的某些特征频率可能因衰减而不可辨识。为此,SoundOff 引入了惩罚分数机制。

惩罚分数的计算逻辑如下:当多个标注频率都未能匹配(缺失匹配),或者匹配的频率与标注频率存在较大偏差时,系统对这些不匹配情况施加惩罚权重。惩罚分数越高,表示当前信号与目标标签的差异越大。

最终的分类决策采用双阈值策略:至少有 40% 的标注频率成功匹配,且惩罚分数小于 0.2。以一个拥有 9 个标注频率的标签为例,40% 的阈值意味着至少需要 4 个频率匹配成功。0.2 的惩罚分数上限则确保匹配的准确性足够高,防止通过大量模糊匹配来满足数量要求。

这两个阈值的配合体现了精确率与召回率的平衡:较高的匹配比例要求(40%)确保信号确实来自目标标签而非噪声,较低的惩罚分数上限(0.2)则防止因局部频率偏差导致的误判。如果信号不满足任何已注册标签的分类条件,系统将其标记为 “未分类”(Uncategorized)。

分类结果输出与后端集成

通过上述信号处理 pipeline 产生的分类结果(标签名称或 “未分类”)需要传递至应用层。SoundOff 提供了两种输出通道:蓝牙低功耗(BLE)广播和 HTTP POST 请求。

蓝牙输出适用于可穿戴设备场景 —— 用户佩戴的超声波接收器在检测到标签信号后,通过 BLE 将标签 ID 发送至配对的智能手机或网关设备。这种方式功耗低、延迟小,适合实时交互场景。HTTP 输出则适用于固定部署的网关设备,分类结果通过 Wi-Fi 或以太网推送至智能家居中控系统(如 Home Assistant),触发相应的自动化流程。

两种输出方式的共同设计目标是保持系统的低功耗特性。信号处理算法运行在边缘设备上,仅在检测到有效触发时才唤醒通信模块,避免了持续数据传输带来的能耗。

算法参数速查清单

对于希望复现或改进 SoundOff 系统的开发者,以下是关键工程参数的总结:采样率设定为 384 kHz,带通滤波范围为 20 kHz 至 100 kHz;时域窗口长度为 0.15 秒;STFT 采用 FFT 大小 1024、跳跃长度 512;垂直去噪采用窗口大小 6 的中值滤波器;频率分箱策略为 4:3:3 分布(低 / 中 / 高频段);匹配容忍度为 ±400 Hz;分类阈值要求至少 40% 标注频率匹配且惩罚分数小于 0.2。

这些参数并非一成不变,而是可以根据具体应用场景进行调整。例如,在噪声较强的工业环境中,可以适当放宽惩罚分数阈值以提高召回率;在需要更精细区分度的场景中,可以减小容忍度或增加标注频率数量。

小结

SoundOff 系统的信号解码算法展示了被动式超声波传感的完整软件处理流程:从高采样率信号采集、数字带通滤波、脉冲检测与分割,到频谱计算、噪声抑制、特征提取与频率匹配,最终通过双阈值分类器输出标签识别结果。其频率分箱策略和中值滤波去噪的设计体现了对超声波信号特性的深入理解,匹配容忍度与惩罚机制的参数选择则为工程实现提供了可参考的阈值基准。随着低成本麦克风阵列和边缘计算芯片的普及,这类纯软件实现的信号处理方案有望在更多无源传感场景中得到应用。

资料来源:SoundOff 项目主页(https://yibo-fu.com/SoundOff-Low-cost-Passive-Ultrasound-Tags-for-Non-invasive-and-Non)

systems