GoForum › 🌐 V2EX
🔊 SoundKeeper — 用一段听不到的声音,让蓝牙音箱永远保持连接
handsomejustin80 ·
2026-05-05 22:40 ·
0 次点赞 · 6 条回复
家里有个蓝牙音箱,平时用来听歌、看视频。但有个很烦的问题:只要一段时间没有音频输出,音箱就会自动断开连接。下次想用的时候,又得手动去打开音箱、重新配对,非常打断节奏。
一开始我试过用播放器循环播放一段静音音频,但实际体验不好——要么占用一个播放器,要么某些播放器检测到”静音”就暂停了。
后来想到一个思路:既然音箱是因为”没有音频活动”才断连,那我只需要持续发送人耳听不到的声音就行了。人耳可听频率范围是 20 Hz - 20,000 Hz ,如果我只播放 5-10 Hz 的超低频正弦波,音箱会认为有音频在播放,但我完全听不到任何声音。
基于这个原理,用 Go 写了一个小工具:
工作原理:
- 通过 Windows 的 winmm.dll ( waveOut API )直接向音频设备输出 5-10 Hz 的正弦波
- 频率每 8 秒在 5Hz 和 10Hz 之间随机切换,振幅也在微量波动,模拟更自然的音频活动
- 振幅控制在 0.3%-0.7%,配合超低频,完全不可感知
实现方式:
- 纯 Go 实现,通过 syscall 调用 winmm.dll 的 waveOut 系列函数,无需 CGO
- 使用 systray 库实现系统托盘图标,后台运行不干扰
- 开机双击运行后静默驻留在托盘,右键可查看运行状态(频率、振幅、已运行时长)
- 编译时加了 -H windowsgui 标志,运行时不会弹出控制台窗口
- 单文件可执行,无任何依赖,即开即用
项目地址: https://github.com/handsomejustin/ble_soundkeeper
有同样困扰的朋友可以直接去 Releases 下载 exe ,双击运行就行。代码也完全开放,随便用,随便改。
6 条回复
explorerproxy · 2026-05-05 22:45
我的 mac 连蓝牙经常会爆音,搞了个白噪声软件放后台静音播放着~~~
PrinceofInj · 2026-05-05 23:00
5~10Hz,这就是次声波吧?不知真假,但是早年间看到一些跟次声波很不好的科普文章,容我再去查查去……
XuHuan1025 · 2026-05-05 23:35
几年前用 ahk 写过用到现在
既然播静音音频就能保活,那你自己调 waveOut 也输出 0 波形就好了吧
@PrinceofInj 我觉得这个没必要担心,实际上次声波根本播不出去吧,在放大器里就被滤掉了
添加回复
你还需要 登录
后发表回复
前段时间也很烦这个。但后来一查音响功率。。还是省点电重要。哈哈哈