supersyh-sss/dsh-voice-assistant ↗★ 1
dsh-voice-assistant
Voice assistant plugin for dsh web: hands-free wake phrase, dictation, voice edit commands, and Chinese TTS.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:supersyh-sss/dsh-voice-assistant说明文档
阅读完整 README ↗🎙️ dsh-voice-assistant
dsh web 免手语音助手 —— 关键词唤醒 · 语音听写 · 口述编辑 · 中文朗读
在 dsh web 输入框旁提供麦克风按钮与科幻风状态条,让你彻底解放双手:说「小鲸」唤醒,口述指令自动入框,回复自动朗读——全程不离键盘,不碰鼠标。
识别引擎默认使用 sherpa-onnx WASM 在浏览器本地运行:模型跑在浏览器里,离线可用、不依赖 Google 服务,国内网络无需任何代理。仅在本地资源加载失败时自动回退浏览器 Web Speech API。
✨ 功能特性
| 能力 | 说明 |
|---|---|
| 🎤 关键词唤醒 | 说「小鲸」(含同音容错:小金 / 小静 / 小晶…)唤醒,播报时段问候语 |
| 🗣️ 语音听写 | 唤醒后连续口述,逐句自动填入输入框,30s 无语音自动回待命 |
| ✏️ 口述编辑命令 | 「删除上一句」「清空」「发送」「换行」等语音命令,直接操作草稿 |
| 📖 中文朗读 | 模型回复自动以中文女声朗读,可随时语音打断(barge-in) |
| 🤖 本地离线识别 | sherpa-onnx WASM + 流式 Zipformer 模型,浏览器本地推理,隐私不上云 |
| 🧩 一键安装更新 | 设置页内置「检查更新」,跟随 GitHub 最新版一键升级 |
| ⚙️ 热配置 | 唤醒词 / 前置 skill / 问候语 / 识别引擎等全部即时生效 |
🚀 快速开始
# 安装(需已安装 dsh web)
dsh plugin --profile web add github:supersyh-sss/dsh-voice-assistant
# 重启
dsh web
打开 dsh web(默认 http://127.0.0.1:3080),插件加载后自动进入待命监听,说「小鲸」即可开始使用。
更新插件(设置页 → 语音助手 → 检查更新,或终端执行):
dsh plugin --profile web update dsh-voice-assistant
🧠 识别引擎
插件内置两种识别引擎,可在设置页热切换:
| 引擎 | 说明 |
|---|---|
auto(默认) | 优先本地 sherpa 识别,加载失败自动回退浏览器识别 |
sherpa | 强制本地识别,离线可用、不依赖 Google;加载失败则明确报错 |
web-speech | 始终使用浏览器自带识别 |
本地识别资源托管在 GitHub(assets/),启动时自动按顺序探测可用源:
- jsDelivr CDN(默认主源,国内可达)
- Gitee 镜像(可选,导入后自动优先)
- ghproxy 代理
- GitHub raw(兜底)
手动指定资源地址:设置页「资源服务器地址」直接填写,或在控制台执行
window.DSH_VOICE_BASE = "https://…"后刷新页面,优先级高于自动探测。
⚙️ 设置页
在 dsh web「设置 → 语音助手」中调整(即时生效):
- 唤醒词:逗号分隔多个,热切换
- 前置 skill:作为系统提示注入模型上下文,不显示在输入框、不随语音发出
- 唤醒问候 / 问候语模板:支持
{时段}占位符 - 自动朗读回复:回复完成后自动朗读
- 空闲超时:唤醒后无语音自动回待命
- 识别引擎:auto / sherpa / web-speech
- 资源服务器地址:本地识别资源下载源,留空自动探测
- 版本与更新:显示当前版本,一键「检查更新」,发现新版本可直达 GitHub 发布页 / 复制更新命令
🎛️ 口述命令
唤醒后说出以下命令即可执行,命令本身不会进入输入框:
| 命令 | 别名 |
|---|---|
| 删除上一句 | 删掉上一句 / 删除最后一句 / 删掉 |
| 清空草稿 | 清空 / 清空草稿 |
| 换行 | 另起一行 |
| 发送 | 发送消息 |
| 停止朗读 | 别读了 |
| 朗读回复 | 读一下 / 念一遍 |
| 停止监听 | 关闭监听 |
⌨️ 快捷键
| 快捷键 | 作用 |
|---|---|
Ctrl+Shift+Space | 切换常开监听 |
| 状态条「按住说话」 | 手动听写(按住说话,松开入框;朗读中可打断) |
🧰 开发
# 单元测试(核心逻辑:唤醒词 / 命令解析 / 草稿编辑)
node test/logic.test.mjs
# 修改源码后同步到 dsh profile(Windows)
sync-plugin.cmd
dsh-voice-assistant/
├── lib/
│ ├── index.js # 插件宿主端:设置注册 + 前置 skill 注入
│ └── client.js # 浏览器端:识别引擎、状态机、UI、设置页
├── assets/ # 本地识别资源(CDN 分发)
│ ├── sherpa-onnx-asr.js # sherpa-onnx C API 封装
│ ├── sherpa-onnx-wasm-main-asr.patched.js # wasm 胶水(pthread 适配)
│ ├── sherpa-onnx-wasm-main-asr.wasm # wasm 运行时(12.5 MB)
│ └── models/ # 流式 Zipformer 模型(encoder 走 gzip 分发)
├── cordis.patch.yml # dsh bundle 补丁清单
├── sync-plugin.cmd # Windows 开发同步脚本
└── test/logic.test.mjs # 核心逻辑单元测试
❓ 常见问题
识别没反应? 确认麦克风权限已允许;首次使用本地识别需下载约 38 MB 资源(之后走浏览器缓存),弱网下首启较慢。
本地识别加载失败? 检查网络能否访问 jsDelivr / Gitee;也可在设置页手动指定「资源服务器地址」,或查看浏览器控制台 [dsh-voice] 日志中的具体原因。
中文朗读音色不满意? 朗读使用系统 speechSynthesis 音色库,Windows 上通常为「Microsoft Huihui」/「Microsoft Yaoyao」,可在系统设置中调整。
🗺️ 路线图
- 手动听写(按住说话 + 追加式草稿)
- 常开监听 + 关键词唤醒 + 状态机
- 问候 + 口述编辑命令 + 多轮免手输入
- sherpa-onnx WASM 本地识别(离线、国内可用)+ 多源资源自动探测
- 设置页聚合(唤醒词 / 前置 skill / 问候 / 自动朗读 / 识别引擎 / 资源地址 / 检查更新)
- Edge TTS 服务端合成 + barge-in 精细化
- 多轮免手对话(自动分段提交 + 对话衔接)