中文 | English
D3V / Genelec 等有源音箱高音单元(Tweeter)保活工具 —— 持续播放人耳听不到的高频信号(≥20kHz),防止音箱在静音时让高音单元休眠/断开。
部分有源音箱在检测不到高频信号时会让高音单元进入休眠,再次出声时有延迟或丢失开头的瞬态。解决办法就是让音箱始终收到一个人耳听不见的高频正弦波,保持高音单元常驻工作。
- 16–23 kHz 八档频率切换,实时波形动画确认输出状态
- 智能联动:随 Windows 主音量反向调节正弦波音量
- 阶梯 DC:跳变式档位调度
- 平滑 PWM:节点间线性插值,音量连续过渡
- 联动曲线图上直接拖动编辑(拖节点 / 双击加点 / 右键删点 / 拖红线改静音阈值)
- 中 / 英双语界面(设置齿轮中切换)
- Fluent 2 深色界面,无边框托盘 flyout,贴屏幕右下角弹出
- 托盘左键开关面板、右键原生菜单;开机自启;完全静默模式(热键
Ctrl+Alt+Shift+T唤回) - 单文件 exe,基于系统自带 WebView2,无需安装任何运行时
到 Releases 下载最新的 TweeterKeeper.exe,双击即可运行(首次运行会在托盘出现图标并弹出控制面板)。
依赖 Windows 自带的 WebView2 运行时(Win10/11 通常已内置;若缺失,从微软官网安装 Evergreen 版即可)。
pip install pillow sounddevice numpy pycaw comtypes pywin32 pywebview
python src\main.py前端可单独调试:直接用浏览器打开 src\ui\index.html,会自动进入 mock 模式(假数据 + 模拟系统音量滑条)。
build.bat # 或: pyinstaller --clean TweeterKeeper.spec产物在 dist\TweeterKeeper.exe。
src/
├── main.py # 入口:单实例、DPI、组装启动
├── constants.py # 常量与默认配置
├── config.py # 配置读写 + 旧版本迁移
├── audio.py # 正弦波引擎 + 系统音量读取
├── app.py # 核心状态机:DC/PWM 联动、监控、热键、静默
├── tray.py # Win32 托盘图标 + 原生右键菜单
├── winutil.py # DPI / 注册表自启 / 工作区 / 单实例
├── webui.py # pywebview 窗口 + JS↔Python 桥
└── ui/index.html # Fluent 2 前端(中/英双语)
vbs/ # 简易方案:VBS 循环播放高频音频
docs/ # 文档与截图
vbs/start_20khz.vbs 用 Windows Media Player 循环播放同目录的 20khz.wav,放进启动项即可,适合不想装 exe 的场景。
Python · sounddevice (WASAPI) · pycaw/comtypes · pywin32 · pywebview (WebView2) · PyInstaller
MIT
