dsh-voice-input:DSH 桌面端输入框语音转文字

前言

在 DSH 里和智能体对话,多数时候仍靠键盘输入。若希望「说几句就进输入框、改一改再发」,常见做法是切到系统听写或第三方工具,再复制粘贴回 DSH,步骤多且容易打断上下文。DeepSeek Harness 采用「一切皆插件」的扩展方式;社区目录 SkillHub 上的 dsh-voice-input(维护者 yfy12306)面向 DSH 桌面端:在输入框右下角增加麦克风按钮,浏览器侧录音,经 DSH 内置 webserver 的同源路由把音频交给 host 侧 ASR,识别结果先写入草稿,可编辑后再发送。

下面介绍它的定位、能力与安装配置要点。

这是什么

dsh-voice-input 是 DSH 的客户端类插件(分类:客户端)。一句话:输入框麦克风按钮 → 录音 → 同源路由转发 ASR → 文本插入草稿,可编辑后发送。

与「整段音频在外部工具里转写再粘贴」相比,录音在页面内完成(getUserMedia),API key 只在 host 侧解析,不进入浏览器进程;识别文本直接进入当前输入框草稿,而不是立刻发送。

核心功能

以下能力均来自仓库 README 与 package.json 说明,版本 0.1.0,许可证 MIT。

  1. 输入框 UI:在输入框右下角提供麦克风按钮(依赖 @deepseek-ai/dsh-client-ui-slots,客户端平台为 web)。
  2. 浏览器侧录音:使用 getUserMedia 采集音频;插件在主进程通过 Electron 原生 API 重设各窗口 session 的 permission handler,放行 media(DSH 桌面端默认主要放行剪贴板,不设 handler 时浏览器侧会 NotAllowedError),并保留原有剪贴板规则。
  3. 同源 ASR 路由:注册 POST /voice-asr/transcribe(默认路径,可配置),请求体为 { audioBase64, mime };host 侧读取环境变量中的 key,以 OpenAI 兼容的 chat/completions 方式调用 ASR(input_audio base64 Data URL),返回 { text }。路由仅接受回环来源请求。
  4. 草稿再发送:识别文本先插入输入框草稿,可手动修改后再发送。

默认 ASR 相关配置指向 OpenAI 兼容网关与模型名 qwen3-asr-flash(见下表),具体网关地址需自行填写。

安装与启用

官方 README 未提供 dsh plugin add github:... 一类命令;安装方式为把仓库放到固定目录并在 desktop profile 里 link 依赖。下面按 README 步骤说明。

  1. 将本插件仓库放到固定位置,例如:
~/.dsh/profiles/desktop/voice-input
  1. 编辑 ~/.dsh/profiles/desktop/package.json:
  • 在 dependencies 中增加(路径改为你机器上的绝对路径,使用正斜杠):
"dsh-voice-input": "link:/home/you/.dsh/profiles/desktop/voice-input"
  • 在 dsh.profile.bundles 中增加 bundle 名 "dsh-voice-input"。
  1. 将仓库中的 cordis.patch.yml 内容追加到 ~/.dsh/profiles/desktop/cordis.patch.yml,并把其中的 baseURL 改成你的 OpenAI 兼容 ASR 网关地址(必填项,默认可为空字符串)。

  2. 在 profile 目录执行安装并重启 DSH:

cd ~/.dsh/profiles/desktop
pnpm install

然后重启 DSH 桌面端,使 bundle 与 patch 生效。

配置(cordis.patch.yml)

插件通过 bundle patch 注入配置项,常用字段如下(摘自 README):

键 默认 说明
baseURL "" OpenAI 兼容 ASR 网关地址(必填)
model qwen3-asr-flash ASR 模型名
apiKeyEnv ALIYUNBAILIAN_API_KEY API key 对应的环境变量名(仅在 host 侧解析)
language zh 识别语言
routePath /voice-asr/transcribe 同源路由路径
maxBodyBytes 15728640 音频 body 大小上限(15 MB)

安装前应在 host 环境中设置 apiKeyEnv 所指向的变量;key 不会下发到浏览器。

典型用法与自测

日常使用:在 DSH 桌面端打开带输入框的对话界面,点击输入框右下角麦克风,完成录音后等待识别;文本出现在输入框草稿中,编辑满意后再发送。

ASR 连通性自测(README 提供脚本,需替换网关地址):

ASR_BASE_URL=<你的网关> node scripts/test-asr.mjs

脚本位于插件仓库内,用于在 host 侧验证网关与模型是否可用,不替代 DSH 内的完整 UI 流程。

适用场景与注意

适合:已在 DSH 桌面端日常对话、希望少切换窗口、用语音快速起草消息再精修的用户;已有或可部署 OpenAI 兼容 ASR 网关(默认文档示例为百炼相关环境变量名 ALIYUNBAILIAN_API_KEY)。

注意:

  • 插件以当前 DSH 进程权限运行,并修改 Electron 窗口的媒体权限与 host 路由;安装前应阅读 GitHub 源码 与 MIT 许可证,确认网关与 key 管理方式符合你的安全策略。
  • 仅适用于 README 描述的 desktop profile + link 安装方式;peer 依赖 @deepseek-ai/cordis ^4.0.1、@deepseek-ai/dsh-client-ui-slots ^0.2.0-rc.1,需与当前 DSH 版本匹配。
  • SkillHub 目录页与 GitHub 由社区维护,与 DeepSeek / 幻方无官方从属关系;星标等元数据以目录页为准(当前为 0)。

结尾

dsh-voice-input 把「点麦克风 → 同源 ASR → 草稿编辑 → 发送」收拢在 DSH 桌面输入框内,并保证 API key 留在 host。若你需要在 Harness 里少打字、多口述再改稿,可按上文 link 安装并配置 baseURL 与 key 环境变量。

羽毛球分组比赛记分
小程序二维码

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

小夜