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 条回复
afkool · 2026-05-05 22:45
#1

前段时间也很烦这个。但后来一查音响功率。。还是省点电重要。哈哈哈

explorerproxy · 2026-05-05 22:45
#2

我的 mac 连蓝牙经常会爆音,搞了个白噪声软件放后台静音播放着~~~

PrinceofInj · 2026-05-05 23:00
#3

5~10Hz,这就是次声波吧?不知真假,但是早年间看到一些跟次声波很不好的科普文章,容我再去查查去……

XuHuan1025 · 2026-05-05 23:35
#4

几年前用 ahk 写过用到现在

edong07 · 2026-05-05 23:35
#5

次声波对人体的影响要考虑一下

billlee · 2026-05-05 23:35
#6

既然播静音音频就能保活,那你自己调 waveOut 也输出 0 波形就好了吧

@PrinceofInj 我觉得这个没必要担心,实际上次声波根本播不出去吧,在放大器里就被滤掉了

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: handsomejustin80
发布: 2026-05-05
点赞: 0
回复: 0