dsh-push-to-talk:按住一个键说话,松开即转写

前言

在 DSH 里做多轮对话时,最打断节奏的动作不是想不出答案,而是腾出手去点麦克风。官方语音输入插件要按一下「开始录音」、说完再按一下「结束」,这个「点两次」的动作在连续改稿、反复追问的场景里会积少成多。

dsh-push-to-talk 做的事很简单:按住一个键说话,松开自动停止并转写成草稿。默认 macOS 用 Option ⌥,Windows 用 Alt。插件不自己录音、不自己识别,只是把按住和松开翻译成官方语音输入插件的两次点击,录音界面、模型、语言全部沿用官方那套。

插件由 wengyingjian 维护,发布在社区目录(SkillHub),包名 dsh-push-to-talk,当前版本 0.6.0,许可证 MIT。

它解决什么问题

  • 去掉手离开键盘的步骤:录音的开始和结束都在一个键上完成。
  • 不另起一套语音链路:识别走官方语音输入插件 @deepseek-ai/dsh-experimental-voice-input-bundle,本地识别模型、语言设置、录音界面都没有变化。
  • 按键可按平台选:默认值适配 macOS 和 Windows,macOS 上想用 Command 或功能键也可以换。

核心功能

  1. 按住说话、松开转写。按住期间录音,松开后停止并把结果作为草稿写回输入框。
  2. 键位可在插件设置页里选,保存后立即生效,重启 DSH 后保留。
  3. 自动聚焦输入框:当前视图有输入框时,按住键会自己聚焦再录音,不用先把光标点进去。
  4. 按键判定用物理键位 KeyboardEvent.code,不受输入法和大小写影响。

安装与启用

前言里提到它依赖官方栈,所以先确认两件事:官方语音输入插件已启用,本地识别模型已就绪(点一次官方麦克风按钮,按提示下载一次)。

接下来装插件,两条命令选一条:

# 从 npm 安装
dsh plugin --profile desktop add dsh-push-to-talk

# 想跟仓库主干走
dsh plugin --profile desktop add github:wengyingjian/dsh-push-to-talk

装完重启 DSH,入口在 设置 → 插件 → 按键语音输入。如果只是改了 client.js,按 ⌘R 刷新页面即可,不必重启。

升级同理:

dsh plugin --profile desktop add dsh-push-to-talk@latest

按键设置

插件页那张卡片本身就是选择器,点一下即保存。可选键如下:

平台 可选键
macOS ⌥ Option · ⇧ Shift · ⌃ Ctrl · ⌘ Command · F2
Windows / Linux Alt · Shift · Ctrl · F2

细节上有几处值得留意:

  • 左右修饰键等效,存的是 Alt/Shift/Control/Meta,不是 AltLeft/AltRight。
  • 不放 Win / Super,会被系统截获;Windows 上的 AltGr 会被过滤。
  • 想跟仓库主干走就用上例第二条命令。

典型用法

姿势就是「装好、选键、按住说」:

  1. 在输入框里按住设定的键(默认 macOS 为 Option ⌥,Windows 为 Alt)。
  2. 开始说话,此时进入录音状态。
  3. 松开键,录音停止,转写结果作为草稿进入输入框,可直接继续改。

不需要把光标先点进输入框:当前视图有输入框时,按住键会自动聚焦再录音。

注意与边界

  • 设置页、弹窗、菜单打开时插件会让出按键;DSH 窗口在后台时收不到按键,因为它不做系统级全局热键。
  • Windows 上单独按 Alt 可能先激活窗口菜单,不行就换成 F2 或 Ctrl。
  • 录音太短会提示「未识别到语音」,再按住一次即重录;首次使用需授权麦克风。
  • 国内镜像同步有延迟:报 ERR_PNPM_TARBALL_EXTRACT 或解析到 0.0.0-stage 时,加 --registry=https://registry.npmjs.org 重装。0.0.0-stage 是 npm 新包首发的占位版本,不是 latest,正常安装拿不到。

适用场景

适合两类人:一是用 DSH 做长时间、多轮对话的用户,按住说话能明显减少打断;二是想自己改键位或照着源码调整行为再发布的开发者。插件只依赖宿主自带的 @deepseek-ai/schemastery,@deepseek-ai/cordis 是 peer,不会分裂宿主实例。

兼容性方面,engines.dsh = ">=0.2.1-rc.5 <0.4.0",作者实际核对于 dsh 0.2.1-rc.5;engines.node = ">=20"。

需要说明的是,插件以当前 DSH 进程的权限运行,读取的是你在 DSH 里的输入内容。从第三方仓库安装前,建议先读一遍源码(尤其是 src/index.js 和 client.js)与许可证。该插件发布在独立社区目录上,与 DeepSeek / 幻方无官方从属关系,也不是官方应用商店条目。

开发

改了 Host 半侧(src/index.js)需要重启 DSH;只改 client.js 刷新页面即可。按键状态机、安全边界、设置同步有配套测试:

node --test test/hotkey.test.mjs    # 15 个用例

小结

push-to-talk 的价值不在新能力,而在把已有的语音输入从「点两次」变成「按住说」。它接的是官方语音输入插件,录音和识别能力没有变化,键位和平台适配由它负责。如果你已经在用官方语音输入,这算是一个低成本的输入流程改进。

目录页:https://www.skillhub.cn/plugins/wengyingjian/dsh-push-to-talk
源码:https://github.com/wengyingjian/dsh-push-to-talk

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

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

Xiaoye