dsh-voice-mic:为 DSH Web GUI 增加语音输入

前言

在 DSH Web GUI 里输入长提示、代码片段或中文描述时,键盘输入有时不如说话快,但把外部语音转写结果再复制回输入框,流程又会变得零碎。dsh-voice-mic 是一个 DeepSeek Harness Web GUI 语音输入插件:在输入框旁提供麦克风按钮,录音后实时转写并写入输入框,不自动发送。

下面介绍它的定位、核心能力、安装方式、典型用法和需要注意的限制。

这是什么

dsh-voice-mic 是面向 DSH Web GUI 的语音输入插件,由 Zachary7456 维护,许可证为 MIT。

它解决的是 Web GUI 输入框的语音输入问题:用户在输入框左侧点击麦克风按钮或使用快捷键开始录音,插件将识别结果写入输入框草稿;停止录音后提交转写结果,但不会自动发送消息。

核心功能

  • 输入框左侧提供麦克风按钮,默认快捷键是 Alt+V
  • 录音期间部分识别结果实时上屏,停止时进行全量转写并写入输入框。
  • 不自动发送消息,用户仍需要在输入框中确认内容。
  • 支持三种识别引擎:浏览器内置、本地离线后端、云端 API。
  • 浏览器识别使用 Web Speech API。
  • 本地离线后端支持 SenseVoiceSmall int8Paraformer,可在设置页一键部署。
  • 本地后端默认绑定 127.0.0.1:7860,转写期间音频不出本机。
  • 云端 API 使用 OpenAI 兼容的 ASR 接口,可配置 base URL、API key 和模型名。
  • 实时写入采用追尾替换,不覆盖手动输入;无结果或出错时自动回滚。
  • 设置页可修改识别引擎、快捷键、端口、autoStart 等配置。
  • 支持服务端 cordis.patch.yml 配置与环境变量覆盖。

安装与启用

运行要求如下:

  • DSH:dsh >=0.1.0-rc.6
  • Node.js:>=18
  • 浏览器识别:需要 Chrome 或 Edge
  • 本地离线后端:额外需要 Python 3.9+

安装命令如下:

dsh plugin --profile web add github:Zachary7456/dsh-voice-mic

安装后重启 dsh web

可以用下面的命令检查插件配置是否出现在 web profile 中:

dsh --profile web --dump-config | grep dsh-voice-mic

典型用法

1、在设置页选择识别引擎

打开 DSH Web GUI,进入:

设置 → 语音输入 → 识别引擎

这里提供三选一:

  1. 浏览器内置
  2. 本地离线后端
  3. 云端 API

2、使用浏览器内置识别

浏览器内置识别使用 Web Speech API,适合快速试用。

使用方式:

  1. 点击输入框左侧麦克风按钮,或按默认快捷键 Alt+V
  2. 开始说话,识别结果会实时写入输入框草稿。
  3. 再次点击麦克风按钮或停止录音。
  4. 插件提交转写结果,但不会自动发送。

快捷键仅在页面获得焦点时生效。

3、部署本地离线后端

如果不想让音频离开本机,可以在设置页使用本地离线后端一键部署。

设置页会执行部署流程,包括检测 Python、安装依赖、下载模型、启动本地服务并轮询就绪。模型目录默认为:

~/.dsh/voice/models/<model>

本地服务默认端口为:

7860

本地后端默认只绑定:

127.0.0.1:7860

也就是说,转写期间音频不出本机。

本地后端进程由 DSH 托管。如果重启 DSH,可能需要重新点部署,也可以在配置中启用:

autoStart: true

4、配置云端 API

云端 API 使用 OpenAI 兼容的转写接口。需要在设置页配置:

  • base URL
  • API key
  • 模型名

配置完成后,可以使用设置页中的“测试 API 连接”检查配置是否正确。

使用云端 API 实时上屏时,录音期间约每秒调用一次 API,会产生相应费用。

API key 存于浏览器 localStorage,由浏览器直连服务商,不经过 DSH。

5、服务端配置示例

除了设置页,也可以在服务端 profile 中配置插件。示例位置:

~/.dsh/profiles/web/cordis.patch.yml

可以插入类似下面的配置:

- insert:
    - id: dsh-voice-mic
      name: dsh-voice-mic
      config:
        hotkey: alt+v
        port: 7860
        autoStart: false

配置优先级

插件配置优先级为:

设置页(localStorage) > 环境变量 > cordis 配置 > 默认值

因此,如果你在设置页修改了快捷键、端口或引擎,设置页的值会优先生效。

离线验证

仓库提供了 mock API,用于离线验证完整链路:

python server/mock_api.py

适合在本地先跑通插件调用链,再切换到真实本地后端或云端 API。

适用场景与注意

适合以下场景:

  • 在 DSH Web GUI 中快速输入中文提示、代码或长文本。
  • 希望语音转写结果进入输入框,而不是直接发送。
  • 希望使用浏览器识别、本地离线后端或云端 API 三种方式之一。
  • 希望本地转写时音频不离开本机。

使用前需要注意:

  • 插件会以当前 DSH 进程权限运行,安装前应检查源码和许可证。
  • 浏览器识别依赖 Chrome 或 Edge 的 Web Speech API。
  • 本地离线后端需要额外安装 Python 3.9+ 依赖。
  • DSH 重启后,本地后端可能需要重新部署,或配置 autoStart: true
  • 云端 API 实时转写会产生调用费用。
  • 快捷键仅在页面获得焦点时生效。

链接

GitHub:

https://github.com/Zachary7456/dsh-voice-mic
羽毛球分组比赛记分
小程序二维码

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

小夜