前言¶
DeepSeek Harness(DSH)在输入框里提供本地语音转写,底层一般是 SenseVoiceSmall(int8,约 239 MB),日常口语够用。做技术口述时,同音字、近音字和专业名词经常被写错,调 VAD 或锁语言往往也拉不回来字错率。社区里不少语音插件会另起麦克风管线或换云端 ASR;若你仍想用内置识别、又不想录音出本机,可以在转写结果进输入框前加一层术语感知的文字纠错。下面介绍维护者 KeinsteinNUS 的 dsh-speech-polish(分类:模型推理)。
这是什么¶
dsh-speech-polish 是 DSH 插件,英文简介为:Terminology-aware correction layer for DeepSeek Harness’s built-in local speech-to-text——在 Harness 内置本地语音转写之上,用一次 LLM 调用修正同音/近音和专业名词,不新增按钮、不换引擎;音频仍在本地识别,只有已转好的文字可能发往 OpenAI 兼容接口。
仓库:https://github.com/KeinsteinNUS/dsh-speech-polish
社区目录:https://www.skillhub.cn/plugins/KeinsteinNUS/dsh-speech-polish(独立站点,与 DeepSeek / 幻方无官方从属关系)
它解决什么问题¶
README 用 4 句中文技术句(103 字,本地 SenseVoice,锁中文)对比过字错率(CER):原始识别约 14.6%~16.5%,调 VAD 无收益;加上本插件后,术语命中由 10/13 提升到 13/13。另有一例真实口述(2026-10-27,文档记宿主 Node v24.21):底层 raw 为「把悬图的转速改成三天转,退火温度120度」,纠错后为「把旋涂的转速改成3000转,退火温度120度」,额外耗时约 1.0 秒。
接入方式¶
DSH 语音输入是「服务 + 多个识别器(provider)」。本插件注册新 provider,链路为:
麦克风 → 内置 SenseVoice(本地)
→ 原始文本 → temperature=0 的 LLM 纠错(带术语表)
→ 修正文本 → 输入框
界面仍是输入框麦克风;在设置里会多一项识别器(默认显示名 SenseVoice + glossary fix)。
安装与启用¶
插件以当前 DSH 进程权限运行,安装前建议浏览仓库源码与 MIT 许可证。engines 要求 Node >=20、DSH >=0.2.0-0 <0.3.0-0;依赖 @deepseek-ai/dsh-experimental-speech-to-text 的 ctx.speechToText(DSH 0.2.x)。文档写明主要在 Windows 桌面端实测(DSH 0.2.1-rc.3)。
方式一:预构建包(推荐)
dsh plugin --profile <你的 profile> add https://github.com/KeinsteinNUS/dsh-speech-polish/releases/download/v0.1.0/dsh-speech-polish-0.1.0.tgz
方式二:从仓库(需本机可直连 GitHub)
dsh plugin --profile <你的 profile> add git+https://github.com/KeinsteinNUS/dsh-speech-polish.git
不要用 github:KeinsteinNUS/dsh-speech-polish 简写——npm/pnpm 可能解析成 SSH,未配 key 时会 Permission denied (publickey)。
方式三:npm(发布到 npm 后)
dsh plugin add dsh-speech-polish
启用步骤:
- 打开 插件管理页 → 语音输入 Bundle 详情,识别器选 SenseVoice + glossary fix,语言选中文;或
- 在 profile 的
cordis.patch.yml写入:
- id: speech-to-text
config:
defaultProvider: sensevoice-polish
language: zh
重启桌面端,或修改 cordis.patch.yml 触发宿主重新加载插件。
纠错用的 API 密钥¶
纠错需要 OpenAI 兼容 chat 接口,默认 DeepSeek。密钥按顺序尝试:插件配置 apiKey → 环境变量 DEEPSEEK_API_KEY → DSH 凭据库 ~/.dsh/.credentials.yaml 的 refs.DEEPSEEK_API_KEY(依次 DSH_HOME、<用户目录>/.dsh、HOME/.dsh)。三者皆无则不报错,直接返回原始识别结果。
配置要点¶
配置写在 bundle patch 里 speech-polish 的 config 下。常用项:
| 键 | 默认 | 说明 |
|---|---|---|
baseProviderId |
sensevoice-local |
底层识别器 id |
providerId |
sensevoice-polish |
本插件注册的 id |
model |
deepseek-chat |
纠错模型 |
baseURL |
https://api.deepseek.com |
可换其它兼容端点 |
timeoutMs |
8000 |
单次纠错超时 |
minChars |
4 |
更短文本不纠错 |
maxGrowthRatio |
0.6 |
输出膨胀超限则丢弃该次纠错 |
glossary |
内置通用技术词 | 数组,可替换为你的领域术语 |
enabled |
true |
false 时透传 |
traceFile |
关闭 | 打开则 JSONL 逐步诊断 |
领域术语示例(材料、医疗、法务等需自备):
- id: speech-polish
config:
glossary: [液晶盒, 取向层, 旋涂, 退火, 相位延迟, 氧化铟锡, 偏振响应, 双折射]
术语表只用于同音错写时的候选修正;输出长度相对原文偏离过大(文档说明约 40%~160% 外)会判不可信并丢弃。
诊断与失败策略¶
打开 traceFile 后,每阶段一行 JSON:apply(加载注册)、enter(当前 provider 收到转写)、raw / polished / skip / error。无 apply 即未加载;有 apply 无 enter 即未选中该识别器。
- 音频不出本机;仅文本可能发往模型端点。
- 网络、超时、输出离谱、无密钥等任何失败都回退原文,听写不会因此中断。
- 默认不写日志;
traceFile默认关闭。
与其它语音插件的对比¶
dsh-ears、dsh-voice-scribe、dsh-voice-mic 等多半另起麦克风与管线,或用云端 ASR 替换内置方案。本插件保留内置识别器,只外包一层纠错,适合:接受本地小模型识别率、但专业词常被写成同音字;不想多一个麦克风入口、也不希望上传录音。
结尾¶
DSH 生态强调「一切皆插件」;dsh-speech-polish 在不动内置 SenseVoice 的前提下,用术语表和一次低温 LLM 调用把口述里的专业词尽量修对。安装与配置以 README 为准,可从目录页或 GitHub 跟进版本与 issue。