dsh-voice-bridge
DiscoveredClick on your desktop pet to make it speak, and the voice output automatically switches to DeepSeek tasks (works with dsh-pet).
dsh-voice-bridge · 大肥鱼语音桥
点一下桌面上的 大肥鱼 说话,再点一下,语音就变成 DeepSeek 里的一条任务。
适用于 DeepSeek Harness + 桌宠插件 dsh-pet(那只圆滚滚的蓝色大肥鱼)。
点击桌宠 ─→ 录音 ─→ 宿主 SenseVoice 识别 ─┬─→ 「打开某某网站/文件夹」→ 直接打开
└─→ 其他 → 提交给 DeepSeek,桌宠跟着进入工作状态
不用额外装模型,也不用 API Key —— 语音转文字用的是 DSH 自带的能力。
运行原理与分流优先级
一次点击发生了什么
① 全局鼠标钩子看到「左键抬起」
↓ 只把坐标丢进队列,立刻返回(绝不阻塞鼠标)
② 工作线程判断:落点距桌宠中心 < 120px,且窗口属于桌宠进程?
↓
③ waveIn 开始录音(16kHz / 单声道 / PCM16),气泡「🎤 听着呢…」
↓ 再点一次(或满 20 秒自动结束)
④ POST /dsh-pet-7340/voice/hear —— 转文字走宿主自带的 SenseVoice
↓
⑤ 按下面的优先级分流
↓ 需要交给 DeepSeek 时
⑥ 切前台 → 点输入框 → Ctrl+V → 回车 → 等回合事件确认送达
桌宠插件(dsh-pet)一行代码都不用改,它只暴露本地 HTTP 接口给本项目调用。
分流:优先桥,办不到才交给 DeepSeek
一句话进来,按顺序判断,任何一步成功就结束:
| 优先级 | 触发条件 | 处理者 |
|---|---|---|
| 1 | 说了「交给模型 / 转交 / 通过 deepseek」 | 🤖 DeepSeek |
| 2 | 「通过浏览器 / 用浏览器」+ 站点名,或直接说站点名 | 🌉 桥打开浏览器网页 |
| 3 | 「打开 XX 文件夹 / 目录」「打开 X 盘」 | 🌉 桥打开电脑文件夹 |
| 4 | 「打开 XX 客户端 / 软件」 | 🌉 桥启动已装程序 |
| 5 | 前面全不命中,或者命中但办失败 | 🤖 原样交给 DeepSeek |
「办失败」也算:目录找不到、文件夹打不开、站点认不出来、客户端起不来、 一句话里除了"打开 X"还有别的要求(不能只做一半)。
设计原则一句话:桥只做确定能办到的事,做不成就把整句话原封不动交出去。
当前桥的两项主要能力就是:打开浏览器网页、打开电脑文件夹。
特性
| 类别 | 说明 |
|---|---|
| 🎙️ 点击说话 | 点一次开始录音,再点一次结束并自动提交;20 秒自动收尾 |
| 🧠 用现成识别 | 调 DSH 的 /voice/hear(SenseVoice,本地跑),零额外依赖 |
| 🌐 打开网站 | 「打开哔哩哔哩 / steamDB / 知乎…」直接开浏览器 |
| 📁 打开文件夹 | 「打开视频文件夹 / addons 文件夹」直接开资源管理器;打开过的名字会记成别名 |
| 🚀 启动客户端 | 「打开网易云音乐客户端 / 打开 QQ」按注册表找到真实 exe 启动 |
| 🗣️ 复杂任务转交 | 一句话里除了"打开X"还有别的(并、然后、下载…)就原样交给 DeepSeek |
| 🎈 气泡播报 | 识别中、已打开、已发送,都会出现在桌宠气泡里 |
| 🖥️ 全屏自动挂起 | 检测到全屏程序 → 卸载鼠标钩子 + 隐藏桌宠,退出全屏自动恢复 |
| 🛡️ 反作弊保护 | 检测到 SGuard / EasyAntiCheat / Riot 等在跑 → 不注入键鼠(否则可能被杀) |
零第三方依赖:只用 Python 标准库 + ctypes。
环境要求
- Windows 10 / 11
- Python 3.9+(或用 DSH 自带的运行时,脚本会自动找)
- 已安装 DeepSeek Harness 并启用桌宠插件
dsh-pet - DSH 里启用了语音输入能力(
/voice/hear可用;DSH 自带的dsh-experimental-voice-input-bundle即可)
安装
-
把整个文件夹放到任意位置(不要放在受限制的目录,例如某些沙箱/同步目录)
-
双击
start.cmd会打印一段状态,看到这样就成功了:
---- bridge status ---- version=v3.8 pid=12345 hook=installed ----------------------- -
点一下桌宠,说话,再点一下。
⚠️ 必须从资源管理器双击。在沙箱化终端里运行会拿不到键鼠注入权限。
用法
| 动作 | 结果 |
|---|---|
| 点桌宠 | 气泡 🎤 听着呢…,开始录音 |
| 再点一次 | 结束录音 → 识别 → 提交(或直接打开目标) |
双击 stop.cmd | 停止 |
双击 restart.cmd | 重启(改代码后必须,Python 不会热加载) |
双击 doctor.cmd | 体检,逐项打印能力 |
分流规则见前面的「运行原理与分流优先级」一节。
语音识别走样
英文专有名词容易被听错,下面这些变体都已容错:
| 你说的 | 可能被识别成 | 是否可用 |
|---|---|---|
| DeepSeek | deep sick / 地铺seek / 迪普seek | ✅ |
| SteamDB | teamDB / steam db | ✅ |
| 语音桥 | 语音条 | ✅ |
| NVIDIA | 音伟达 | ✅ |
实在听不准就说中文口令:「交给模型」、「打开脚本文件夹」。
配置
别名表 aliases.json
打开成功一次会自动记住"名字 → 路径"。也可以手写:
{
"视频": "D:\\Videos",
"addons": "E:\\SteamLibrary\\steamapps\\common\\Left 4 Dead 2\\left4dead2\\addons",
"语音桥": "D:\\tools\\dsh-voice-bridge"
}
匹配规则:后缀优先(说「求生之路2的补丁」时,结尾的"补丁"优先于前面的"求生之路2")。
环境变量
| 变量 | 默认 | 用途 |
|---|---|---|
VOICE_BRIDGE_RADIUS | 120 | 点击判定半径(像素) |
VOICE_BRIDGE_COMPOSER_X | 0.55 | 输入框水平位置(窗口宽度比例) |
VOICE_BRIDGE_COMPOSER_Y | 130 | 输入框距窗口底边像素 |
VOICE_BRIDGE_PET_WAIT | 120 | 启动时等桌宠出现的上限(秒) |
VOICE_BRIDGE_PET_MISS | 3 | 连续几次看不到桌宠就退出 |
VOICE_BRIDGE_SEARCH_FALLBACK | 0 | 设 1 时,认不出的站点改用 Bing 搜索 |
VOICE_BRIDGE_OPEN_SITES | 1 | 设 0 关闭"打开网站/文件夹"直连 |
已知限制
- 录音上限 20 秒(接口硬限制 768 KiB ≈ 24 秒)
- 点击判定是圆形区域,不是像素级贴合鱼身
- 提交靠键鼠自动化:会切前台、点输入框、粘贴、回车
- 反作弊会在跑时不注入:SGuard / EasyAntiCheat / Vanguard 等检测到模拟输入会杀进程
- 全屏时不工作:钩子和桌宠都会被挂起(这是设计,不是 bug)
低级鼠标钩子的性能铁律(踩过的坑)
WH_MOUSE_LL 的回调跑在所有鼠标事件的必经路径上:回调慢 1ms,全系统鼠标慢 1ms;超过系统超时还会被 Windows 静默卸载,表现是"点了没反应"。
所以回调里只能把坐标塞进队列然后立刻返回。命中判定(含 HTTP)、日志、触发会话全部放在后台线程。
曾经把一次 HTTP 查询(83ms)放在回调里,导致全系统鼠标卡顿,还被 Windows 卸钩子。
排查
日志在本目录 bridge.log,异常在 crash.log。
| 现象 | 原因 |
|---|---|
| 点了没反应 | 钩子没装上(看 [钩子] 安装失败),或点在判定圈外 |
| 鼠标整体变卡 | 回调里有阻塞操作(见上面的铁律) |
| 气泡"没听清" | 录音太短/太轻,或宿主识别器没启用 |
| 气泡"已发送但未确认" | 消息可能已送达但没等到回合事件;文字会自动进剪贴板 |
| 进程无声消失 | 大概率被反作弊杀掉;看 status.txt 是否停止更新 |
| 桥连不上桌宠 | DSH 重启换了端口 —— 正常情况会自动重新发现 |
体检:python voice_bridge.py --doctor
自测:python selftest.py --with-open
与 dsh-pet 的关系
本项目不修改 dsh-pet,只调用它暴露的本地 HTTP 接口:
GET /dsh-pet-7340/state、/pose—— 读状态与宠物坐标POST /dsh-pet-7340/voice/hear—— 语音转文字(走 DSH 的识别能力)POST /dsh-pet-7340/broadcast—— 往气泡里说话POST /dsh-pet-7340/sleep—— 全屏时让它睡觉
所以升级或重装桌宠插件不会影响本项目。
许可
MIT。详见 LICENSE。
第三方声明:本项目仅通过 HTTP 与 dsh-pet(MIT)交互,不包含其代码或素材。
Comments
Loading…
Similar plugins
by txlznbzsdj-collab
DeepSeek 小蓝鲸桌宠 DSH 插件:模型可调用 pet_say 命令桌宠说话,桌宠同步对话开始/结束(思考/庆祝)
★ 3
MIT
JavaScript
Aug 18, 2026
dsh plugin --profile web add dsh-deepseek-petby alybg
DeepSeek Harness 部署级桌宠:右下角随 Agent 工作状态切换 GIF 动画,气泡实时显示 DeepSeek 余额与语音台词,可拖动、可点击互动,任务完成随机播放语音。
★ 4
↓ 135.8k/wk
JavaScript
Aug 17, 2026
dsh plugin --profile web add dsh-petby dytom18
说话即任务:给 DSH Web GUI 加语音听写,说完自动发送给 Agent(纯前端,无需 API Key)
★ 0
MIT
JavaScript
Sep 18, 2026
dsh plugin --profile web add dsh-plugin-voice-dictationby bbfang2025-cyber
大肥鱼语音:让 DSH 桌宠的气泡开口说话(在线 Breeze + 离线 Kokoro 中文女声)。
★ 6
MIT
JavaScript
Nov 6, 2026
dsh plugin --profile web add dsh-pet-voice-fishyby amaji61
仅配合 dsh-pet 桌宠使用:给宠物加上定时整屏截图、看图播报、与宿主智能体串行对话、窗口锁屏。不提供桌宠本身,需先安装 dsh-pet。
★ 0
MIT
JavaScript
Oct 26, 2026
dsh plugin --profile web add dsh-pet-extrasby chaowei08
大肥鱼语音播报(桌宠音色版):模型一有输出,就让 dsh-pet 用它自己配置的音色念出来
★ 2
MIT
JavaScript
Nov 9, 2026
dsh plugin --profile web add dsh-big-fish-speak