用旧手机的麦克风"听"出水泵停转:底噪检测的原理

水泵、过滤器、气泵是鱼缸的“心肺”。它们一旦停转,几个小时内水里的氧气就会明显下降,夏天更快。可这类故障往往悄无声息:停电了还有人发现,水泵卡住、气泵老化罢工,屋里只是安静了那么一点点,人很难注意到。

闲置的旧手机正好有一个一直开着也不费事的传感器——麦克风。这篇文章讲讲 Keepova 看缸是怎么用它“听”出设备停转的。

难点:屋里本来就很吵

最直接的想法是“声音变小了就报警”。但家里的声音一直在变:电视、说话、做饭、窗外的车、空调和冰箱时开时停。如果只看音量,电视一关就会误报;电视开着的时候,水泵停了也听不出来。

所以关键是找到一个只跟水泵、气泵有关、不容易被其他声音干扰的指标。

思路:看“底噪”,不看音量

水泵、气泵有一个特点:它们是 24 小时不停、持续发出的声音。电视、说话、关门这些声音则是一阵一阵的,有高有低、有停顿。

想象把一分钟里每一小段时间的声音能量从小到大排一排:

  • 一阵阵的声音只会让排在前面那些最响的时刻变得更响;
  • 持续运转的设备则把最安静的那些时刻也一起垫高了。

这个“一分钟里最安静的那部分声音”,就是底噪。看缸取的是 60 秒窗口里的 10 分位数:就算这一分钟里有人说话、电视在响,只要不是一刻不停地响,底噪基本不受影响。

于是就有了一个很有用的规律:

底噪下降,才是设备停转的信号。 其他声音只会把底噪“盖住”(让它变高),不会凭空让它变低。

不只看一个数:按频率分开看

不同设备的声音“长相”不一样:气泵是带振动的嗡嗡声,水泵和过滤器偏流水声,冰箱压缩机又是另一种低频声。只看总的底噪,冰箱停了也可能被误认为是水泵停了。

所以看缸把声音按频率拆成 40 个频带(覆盖 50 到 6000Hz,按人耳对音高的感受划分),每个频带各自算底噪。这样每一刻得到的不是一个数,而是一组数,描述的是“现在屋里持续存在的声音长什么样”。

具体来说,手机以 16kHz 采样单声道声音,每 32 毫秒做一次频谱分析,算出这 40 个频带的能量。这些计算都在看缸手机本机完成。

校准:先认识你家的设备

每个鱼缸、每个房间都不一样,所以第一次使用时有一步可以跳过的声音校准:

  1. 先保持安静,让手机录一段正常运行时的声音,作为基线;
  2. 按提示分别关掉气泵、过滤器各一小会儿;
  3. 每关掉一台设备,底噪在各个频带上会下降多少,就是这台设备的声音签名。

有了签名,看缸以后不只知道“有东西停了”,还能告诉你”气泵停了“还是”过滤器停了“。

校准时还会算一个“可分离度”:设备关掉前后的变化,和平时底噪自然的波动比起来够不够明显。如果这台设备本来就很安静(比如放在柜子里的外置过滤桶、静音潜水泵),变化淹没在波动里,看缸会直接告诉你这台设备声音太小、暂不支持声音检测,而不是假装能检测、然后漏报或乱报。

判定:要像、要够、要持续

平时,看缸持续把当前的底噪和基线比较。只有同时满足下面几条,才会认定某台设备停转:

  • 要像:底噪下降的“形状”和这台设备的签名足够相似(两组数的余弦相似度在 0.8 以上),冰箱、风扇停了因为形状不同,不会被当成水泵;
  • 要够:下降幅度超过阈值(默认 3dB);
  • 要持续:这种状态持续 2 分半钟左右,排除短暂的波动。

确认后就会推送“水泵停转”报警,通常在设备停下后几分钟内就能收到。设备恢复运转、底噪回到正常并保持 30 秒,事件自动关闭。

吸尘器、空调怎么办

吸尘器、空调、风扇这类持续的强噪声会把整体底噪一起抬高,这时候水泵停不停确实听不出来。看缸会识别出这种“被盖住”的状态:这段时间不报警,并在 App 里显示“声音检测暂不可用”,等噪声过去再恢复。宁可明确告诉你“现在听不到”,也不在听不清的时候瞎报。

另外,水泵和气泵老化、滤材慢慢堵塞,声音也会慢慢变化。基线会在一切正常的时段以“天”为单位缓慢更新,开灯和关灯两种状态各存一份,换手机或重装后也能从云端备份恢复。

隐私:原始声音不离开手机

麦克风对着家里,隐私是第一位的。在看缸里:

  • 原始音频只在看缸手机本机处理,不录音、不存储、不上传;
  • 上传到云端的只有底噪这类统计数值和“正常 / 停转 / 暂不可用”这样的状态;
  • 只有你在控制端主动打开实时画面的声音时,才会传输现场声音。

摆放小建议

  • 离设备近一点:手机放在离气泵、水泵出水口近一些的地方,听得更清楚;
  • 别贴着缸体或气泵:直接贴着会被振动“嗡”住,反而影响判断;
  • 避开出风口和电器:不要放在空调出风口、路由器风扇旁边;
  • 摆好之后别常挪:位置变了,声音特征就变了,挪动后建议在设置里重新校准一次。

小结

一台闲置的旧手机,靠“底噪”这个简单又稳的指标,就能 24 小时替你听着鱼缸的“心跳”。它不完美——太安静的设备听不出来,强噪声时会暂停——但它清楚自己什么时候听得见、什么时候听不见,并且会如实告诉你。对鱼缸来说,几分钟内知道“水泵停了”,往往就是一缸鱼的差别。

本文仅供参考,不构成兽医诊断或专业建议。鱼只出现严重症状时,请咨询有经验的水族店或水生动物兽医。

返回博客