dsh-hold-to-talk-plus:DSH 编辑器按住说话,本地或云端 ASR 转写入框

前言

在 DeepSeek Harness(DSH)里写提示词、改草稿时,键盘输入往往打断思路。原版 dsh-hold-to-talk 已经在 Web composer 上提供「按住鼠标说话、松手写入」的手势,并可用本机 SenseVoice(sherpa-onnx)离线识别。若你希望改用百炼、SiliconFlow 或自建 OpenAI 兼容转写接口,同时维护术语表与错词纠正规则,并把输入框已有草稿一并交给识别侧作上下文,就需要在现有手势之上扩展 ASR 提供方与配置方式。lcx19970714/dsh-hold-to-talk-plus 即在此基础上的 fork,包名与 bundle id 仍与上游一致(dsh-hold-to-talk),可作为 profile 插件替换安装。

这是什么

维护者为 GitHub 用户 lcx19970714,社区目录分类为「模型推理」。插件面向 DSH Web 对话 composer:按住说话、松手后把转写文本插入草稿;浮动层、「上滑取消」与 60 秒自动结束等行为与上游一致。相对 dsh-hold-to-talk@0.1.4,本 fork 增加第三方云端 ASR、用户词库、草稿作上下文提示、设置页与云端说话时的实时预览等能力。许可证为 MIT(fork 自 wangzhanchao883/dsh-hold-to-talk)。当前资料中的版本号为 0.1.4-cloud.6,运行时要求 Node ^22.0.0 || >=24。

核心功能

下面按 README 功能对比表归纳已核实能力。

识别引擎

  1. 本机离线:SenseVoice(sherpa-onnx),与上游相同。
  2. 云端 ASR:支持 OpenAI 兼容的 /v1/audio/transcriptions,以及阿里云百炼兼容端点上的 chat/completions + input_audio(chat-audio 协议)。
  3. 端点协议:根据 URL 自动判断协议,避免协议与端点不匹配导致的 400。
  4. 失败回退:云端调用失败时自动回退到本机 ASR。

词库与上下文

  • 用户词库(wordbank):术语表,以及 correct=wrong1|wrong2 形式的纠正规则;识别结果在本地与云端路径上均可做后处理。
  • 草稿作上下文:composer 中已有草稿会作为 context prompt 参与组装(云端侧见 cloud-asr.mjs 中的 system prompt 逻辑)。
  • 百炼说明:在百炼兼容端点上,ASR 任务会忽略 instruction 式提示;术语表接受但效果有限,可靠纠错仍依赖 wordbank 的 correct=wrong 规则。

设置与联调

  • 路径 Settings → Voice input:选择提供方预设、填写 API Key,可先 Test connection 再保存(未保存亦可测);401/403/404/429/超时等会译为可读说明。
  • 云端实时预览:按住说话时使用云端 ASR 时,对尾部窗口约每 2 秒重新解码一次,便于边说边看。

代码结构(便于对照源码)

lib/
├─ index.js           # 路由、引擎管理、提示组装、云端分支、/settings
├─ client.js          # 按住手势、浮层、设置页
├─ asr-worker.mjs     # 本机 sherpa-onnx
├─ cloud-asr.mjs      # WAV 编码与两种第三方协议
├─ wordbank.mjs       # 词库解析与后处理
└─ settings-store.mjs # ~/.dsh/hold-to-talk/settings.json

预设提供方(资料原文)

Provider Endpoint Model Protocol
Alibaba Cloud Model Studio (BaiLian) https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions qwen3-asr-flash chat-audio
SiliconFlow (free tier) https://api.siliconflow.cn/v1/audio/transcriptions TeleAI/TeleSpeechASR transcriptions
Self-hosted (faster-whisper / whisper.cpp / FunASR gateway) http://127.0.0.1:8000/v1/audio/transcriptions whisper-large-v3 transcriptions
Local offline (no key) — SenseVoiceSmall int8 local

安装与启用

本仓库作为 DSH profile 插件安装,是 dsh-hold-to-talk 的直接替换,步骤以仓库 README 为准。安装前请自行阅读源码与 MIT 许可证;插件在 DSH 进程权限下运行,API Key 与词库会写入本机配置(如 ~/.dsh/hold-to-talk/settings.json)。

1、获取源码并安装依赖(含 sherpa-onnx 原生运行时)

git clone https://github.com/lcx19970714/dsh-hold-to-talk-plus.git "H:\DSH-鼠标语音输入"
cd "H:\DSH-鼠标语音输入"
pnpm install

2、将 desktop profile 指向本地副本

编辑 %USERPROFILE%\.dsh\profiles\desktop\package.json,增加或改为:

"dsh-hold-to-talk": "link:H:/DSH-鼠标语音输入"

随后在 profile 目录执行依赖安装(README 给出的 PowerShell 示例):

$node = "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\node\bin\node.exe"
$pnpm = "$env:USERPROFILE\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\pnpm\bin\pnpm.cjs"
& $node $pnpm install --dir "$env:USERPROFILE\.dsh\profiles\desktop"

3、在 cordis.patch 中注册插件

编辑 %USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml,按仓库内 cordis.patch.yml 与 README.zh.md 填写 id、name 与 config。

4、重启 DSH

完全退出 DSH(托盘 → Quit)后重新打开。

5、配置识别提供方

打开 Settings → Voice input,选择提供方、粘贴 API Key,点击 Test connection,确认通过后保存。若仅使用本机 local 提供方,则无需 Key。

典型用法

  1. 在 DSH Web composer 输入区域按住鼠标左键,开始说话;需要取消时按上游交互上滑取消。
  2. 松手后,转写文本插入当前草稿;若已配置 wordbank,错词规则会在结果上生效。
  3. 使用云端提供方时,按住期间可观察 live preview 的阶段性转写;超过 60 秒会自动结束一轮。
  4. 在设置页切换 Provider 或自建 http://127.0.0.1:8000/v1/audio/transcriptions 时,先用 Test connection 确认可达,再保存,避免把错误配置写入 settings.json。

更细的 config 字段与中文说明见仓库 README.zh.md。

适用场景与注意

  • 适合:长期在 DSH 里写提示词、希望「按住即说」且要在本机离线与多家云端 ASR 之间切换的开发者;对专有名词、易混谐音有 wordbank 纠正需求;希望把输入框已有内容作为识别上下文的场景。
  • 与上游关系:手势与 60 秒等行为未改,差异集中在 ASR 提供方、词库、设置页与云端预览;安装时仍使用包名 dsh-hold-to-talk,勿与未增强的上游包混用 link 目标。
  • 安全与合规:云端模式会向所选 Endpoint 发送音频(及 README 描述的 prompt 组装内容);自建网关时需自行保证网络与密钥管理。安装前审阅 lib/cloud-asr.mjs、lib/wordbank.mjs 等是否符合你的数据策略。
  • 生态说明:DSH 采用「一切皆插件」思路;SkillHub 插件目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-hold-to-talk-plus 在保留 DSH 按住说话体验的前提下,把识别扩展到 OpenAI 兼容与百炼协议、词库纠正、设置页联调与云端预览,并在云端失败时回退本机 SenseVoice。查阅参数与中文文档请以 GitHub 仓库为准。

  • 目录页:https://www.skillhub.cn/plugins/lcx19970714/dsh-hold-to-talk-plus
  • 源码:https://github.com/lcx19970714/dsh-hold-to-talk-plus
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜