dsh-siri-voice:语音输入流光可视化与转写清理

前言

DeepSeek Harness(DSH)的插件生态里,语音输入是一个高频场景。但现有的转写结果往往充满口语杂质——语气词、重复字词、停顿造成的碎句号——直接发给模型会降低指令质量。同时,录音时缺少视觉反馈,无法确认麦克风是否正在工作。

dsh-siri-voice 插件为 DSH 的语音输入流程增加两层功能:一是录音时的 Siri 风格流光带,二是转写后的本地规则清理。

插件定位

dsh-siri-voice 是一个纯客户端的 DSH 插件,由维护者 saul-dsh 提供。它只做两件事:

  1. 在语音输入时,在输入框上方绘制一个外圈旋转渐变光、中间三层声波随音量起伏的流光带。
  2. 在转写文本进入草稿后,用本地正则清理口语杂质,把停顿造成的碎句号改回逗号。

插件不调用任何大模型,不改变录音流程,也不自动发送消息。

核心功能

流光可视化

点开麦克风开始录音时,输入框上方会浮现一个 Siri 风格的流光带:

  • 外圈是一个旋转的渐变光带。
  • 中间有三层声波,高度随麦克风音量实时变化。
  • 录音结束后,光带瞬间消失,不占布局。

转写过程中,波形消失但光带保留,提示还在处理。

转写清理

语音转写会把口语原样落进草稿,插件在转写完成、文本进入草稿之后运行清理规则。所有规则都是本地正则,不调用模型,零延迟零成本。

清理规则

问题 处理方式 示例
语气词 删行首、标点后、汉字之间的「嗯、呃、额、唔」 「嗯,我觉得」→「我觉得」
口头填充「那个」 只删行首且后面紧跟逗号的 「那个,我想说」→「我想说」
重复字 同字三连以上合并 「我我我觉得」→「我觉得」
重复词 两三个字的词连续重复合并 「这个这个方案」→「这个方案」
停顿碎句 整段没有逗号且平均句长很短时,中间句号改逗号 「我今天。想去公园。」→「我今天,想去公园。」

不动的规则

  • 叠词:「看看」「刚刚」「试试」是合法用法,不动。
  • 指示代词:「那个文件」里的「那个」。
  • 语气助词:「好啊」里的「啊」、「对吧」里的「吧」。
  • 已经有逗号的正常句子。
  • 正常长度的完整句子。

保护机制

如果改动超过原长 40%,判定规则失控,直接放弃清理,保留原文。清理结果只写回草稿,不会自动发送,你可以继续修改或手动撤回。

安装与启用

插件安装命令如下:

# 本地路径
dsh plugin --profile web add /path/to/dsh-siri-voice

# 从 GitHub
dsh plugin --profile web add https://github.com/saul-dsh/dsh-siri-voice

安装后需要重启宿主(桌面端需完全退出再启动)。启动日志中出现 [siri-voice] 相关的层即可确认插件加载成功。

依赖要求

插件依赖 DSH 自带的语音输入 bundle(@deepseek-ai/dsh-experimental-voice-input-bundle)处于启用状态。麦克风按钮、录音与转写都由该 bundle 提供,插件只读取它在录音时挂在容器上的 data-voice-activity 属性,不打断、不接管任何流程。

如果语音输入 bundle 未启用,插件不会显示任何东西,也不影响其他功能。

兼容性

项目 要求
DSH ≥ 0.2.0(developer preview)
Node ≥ 18
客户端 web(桌面端与浏览器)
前置插件 @deepseek-ai/dsh-experimental-voice-input-bundle 需处于启用状态
运行时依赖 无

插件使用原生 canvas 与 Web Audio API,不引入第三方依赖,也不使用 WebGL。

故障排查

完全没有流光带

  1. 确认语音输入本身能用:点麦克风能录音、能转写。
  2. 确认前置 bundle 已启用:dsh --profile desktop --dump-config | grep voice-input。
  3. 装完没重启 dsh。客户端模块在启动时加载。

有流光带,但浪高不动

  • 麦克风权限被拒绝,或系统里有别的应用独占了麦克风。此时退化为缓慢呼吸动画,不报错。
  • 部分 Linux 发行版下 getUserMedia 拿不到音量,同样退化。

转写出来了,但语气词还在

  • 清理有 40% 改动上限保护,删太多会判定失控并保留原文。
  • 整段被判为「正常句子」(已经有逗号,或者平均句长超过 12 字)时,停顿句号不会合并。
  • 控制台有 [dsh-siri-voice] transcript cleaned X -> Y 记录,没有这行说明本次没触发清理。

流光带位置偏了

  • 它按「编辑器 + 语音栏」的最小公共祖先计算矩形,dsh 改动输入栏结构后可能算错。
  • 窗口缩放或分屏切换后如果错位,重新触发一次录音即可。

和别的输入框插件冲突

插件只读 data-voice-activity 属性,不接管录音流程。如果出现冲突,可以禁用其他插件逐个排查。

适用场景

适合需要频繁使用语音输入、希望减少口语杂质、又不想引入额外模型调用的 DSH 用户。插件对性能影响极小,适合在桌面端浏览器环境中使用。

生态背景

DSH 理念是「一切皆插件」,插件生态由社区维护。插件目录是独立站点,与 DeepSeek / 幻方无官方从属关系。

结语

dsh-siri-voice 为 DSH 的语音输入流程增加了可视反馈和文本清理能力,所有功能都在本地完成,不依赖外部模型。如果你正在用语音输入写提示词或与模型对话,这个插件可以让反馈更直观、文本更干净。

  • 插件目录页:https://www.skillhub.cn/plugins/saul-dsh/dsh-siri-voice
  • GitHub:https://github.com/saul-dsh/dsh-siri-voice
羽毛球分组比赛记分
小程序二维码

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

Xiaoye