dsh-plugin-local-voice:DSH 本地实时语音转写与 Qwen3-ASR 识别器

前言

在 DeepSeek Harness 里做会议记录或口述草稿时,常见做法是依赖云端语音识别,或只用内置 SenseVoice 做短句输入。若希望边说边出字、音频不出本机,并在 Apple Silicon 上换成本地 Qwen3-ASR 推理,需要额外能力。社区插件 dsh-plugin-local-voice(维护者 R0tten-Git)面向 DSH Desktop,提供右下角实时转写浮窗,并可选注册本地识别器 provider;分类为模型推理。

下面介绍插件定位、能力与安装用法;事实以 GitHub README 为准。

这是什么

dsh-plugin-local-voice 是 DeepSeek Harness 的本地语音转写插件:独立浮窗实时字幕、可复制或存成 Markdown 纪要;在 macOS Apple Silicon 上可用 Qwen3-ASR-1.7B-8bit(MLX) 做识别,默认推理过程不依赖外网(模型需自行下载)。同一包还为内置语音输入提供快捷键,并可将默认识别器切到 qwen3-asr-local。

当前包版本 1.6.1,许可证 MIT。目录页:SkillHub 插件页。

核心功能

独立实时转写浮窗

重启 DSH 后,界面右下角出现「实时转写」胶囊。点一下开始录音并展开浮窗(约 380px 宽、最高 72vh)。边说边出字:每句停顿约 0.95 秒出一行(开发说明里切句逻辑为静音约 0.7 秒);单段最长 9 秒强制切分。支持播放/暂停(暂停保留已转内容)、最小化后继续录音(仅显示计时标记)、结束本次转写(有内容时二次确认)。结束后可复制全文,或通过系统文件选择器存 md(默认文件名形如 live-stt-YYYY-MM-DD_HHMM.md)。

音频在浏览器内重采样为 16 kHz 单声道,按能量切句后编码为 WAV,经 ctx.remote.speech.transcribe 调用本包的识别 provider。

Qwen3 本地识别器(Apple Silicon)

除浮窗外,插件注册识别器 qwen3-asr-local,可将内置麦克风识别从 SenseVoice 换成本机 Qwen3。推理在常驻 Python 进程 qwen3_worker.py 中完成,模型只加载一次;首次转写约懒启动,空闲 5 分钟回收进程。语言下拉支持 auto / zh / en / yue / ja / ko。

启动时会探测 平台(darwin/arm64)+ Python 解释器 + 模型目录;任一不满足则不注册 Qwen3,也不破坏默认识别器,界面仍走官方 SenseVoice。

快捷键与内置语音输入

插件注册命令 voice.dictate,并与自带语音输入控件联动:空闲时触发相当于开始录音,录音中触发相当于停止并识别。默认键位在 Desktop 上为 macOS ⌘D、Windows/Linux Ctrl+D;可在 设置 → 编辑快捷键 中搜索「语音输入」修改。

可选:逐句 LLM 校对

默认关闭。设置环境变量 LIVE_STT_LLM_VERIFY=on 后,每句识别结果会经 DSH 已配置的模型做最小改动校对(同音错字、专有名词、标点)。这会使用 DSH 模型通道,不再是纯离线;默认不开启时零额外请求。

平台支持

平台 浮窗 UI Qwen3 引擎
macOS Apple Silicon 支持 支持(推荐)
Windows / Linux 支持 不支持,自动回落 SenseVoice
Web 客户端 支持 取决于 Host 侧能力

Qwen3 引擎依赖本机 mlx-audio 虚拟环境与模型目录;其他平台浮窗 UI 仍可用。

安装与启用

环境要求(README):DSH Desktop 0.2.0-rc.2 起;需启用官方语音输入 Bundle 并完成其「下载并准备」。插件以当前 DSH 进程权限运行,安装前建议阅读仓库源码与 MIT 许可。

方式一:npm(推荐)

dsh plugin --profile desktop add dsh-plugin-local-voice

方式二:从 GitHub 安装

dsh plugin --profile desktop add github:R0tten-Git/dsh-plugin-local-voice

方式三:插件页

侧栏 插件 → 添加插件 → 指向包目录或 .tgz → 安装 → 立即启用。

在 macOS Apple Silicon 上,装完插件后还需准备 MLX 引擎与模型:

uv venv ~/.local/venvs/mlx-audio --python 3.12
~/.local/venvs/mlx-audio/bin/pip install "mlx-audio==0.5.5" sounddevice numpy huggingface_hub

python3 scripts/prepare_model.py

prepare_model.py 默认从魔搭拉取 mlx-community/Qwen3-ASR-1.7B-8bit(约 2.47 GB)。海外或需换源时:

python3 scripts/prepare_model.py --source hf-mirror
python3 scripts/prepare_model.py --source hf

模型脚本来自插件包内的 scripts/prepare_model.py(安装后可在包目录执行)。完成后重启 DSH,右下角应出现实时转写入口。

典型用法

  1. 确认麦克风已在系统/浏览器层授权(沿用语音输入插件的首次请求流程)。
  2. 点右下角胶囊开始转写;开会时可 最小化 浮窗,仅保留计时标记。
  3. 需要纪要时点 存 md,或 复制 后粘贴到会话或笔记。
  4. 若要用 Qwen3 驱动内置麦克风:在识别器下拉选择本地 provider(或依赖包内 cordis.patch.yml 的默认指向);想恢复 SenseVoice 可在下拉中手动选择,或按 README 调整 patch。

浮窗控件速查:

控件 作用
右下角胶囊 开始录音并展开浮窗
播放 / 暂停 开始或暂停(暂停保留内容)
— 最小化,继续录音
× 结束本次转写并清空(有内容时二次确认)
复制 / 存 md 复制全文或保存 Markdown

配置与环境变量

环境变量 默认值 说明
LIVE_STT_MODEL ~/models/Qwen3-ASR-1.7B-8bit 模型目录
LIVE_STT_PYTHON ~/.local/venvs/mlx-audio/bin/python 带 mlx-audio 的解释器
LIVE_STT_MODEL_SOURCE modelscope 缺模型时提示使用的镜像源
LIVE_STT_LLM_VERIFY off 逐句 LLM 校对(走 DSH 模型通道)

识别器路径还可通过 QWEN3_ASR_PYTHON / QWEN3_ASR_MODEL 覆盖(见 README 开发笔记)。开启 LLM 校对时可设置 LIVE_STT_LLM_MODEL、LIVE_STT_LLM_PROVIDER、LIVE_STT_LLM_TIMEOUT_MS。

权限、网络与已知限制

  • 麦克风:录音在页面内进行,需系统/浏览器授权。
  • 本地进程:会拉起 Python 跑 Qwen3,只读模型目录;日志默认写在 ~/Library/Logs/dsh-qwen3-asr.log。
  • 网络:默认可零外网;模型仅在手动执行 prepare_model.py 时下载。LIVE_STT_LLM_VERIFY=on 时会走 DSH 模型通道。
  • 文件:仅在用户点击存 md / 存 wav 时经文件选择器写入;音频默认不落盘、不上传。

README 还说明:依赖官方实验性语音输入 Bundle,DSH 升级可能改 API;Qwen3 仅 Apple Silicon;模型不随 npm 包分发,需自行准备。

结尾

dsh-plugin-local-voice 把「本地实时字幕 + 可选 Qwen3 识别器 + 语音输入快捷键」收进一个 DSH 插件:Apple Silicon 上可完全离线转写,其他平台仍能用浮窗并回落 SenseVoice。社区插件目录与 DeepSeek / 幻方无官方从属关系,安装与启用以你本机 DSH 配置为准。

  • 目录页:https://www.skillhub.cn/plugins/R0tten-Git/dsh-plugin-local-voice
  • 源码与文档:https://github.com/R0tten-Git/dsh-plugin-local-voice
羽毛球分组比赛记分
小程序二维码

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

小夜