前言¶
DSH 强调“一切皆插件”。在 DSH Web UI 中,如果需要在输入框中增加语音输入,一种常见方式是直接依赖浏览器识别能力。dsh-voice-funasr 提供另一条路径:先使用本地 FunASR int8 ONNX 引擎完成转写,本地引擎不可用时再回退浏览器 Web Speech API,并可选调用用户自己的 LLM 端点做两段式润色。
这是什么¶
dsh-voice-funasr 是 DSH Web UI 的本地离线语音输入插件,维护者为 @Zacklinkk,许可证为 MIT,package.json 中 version 为 0.1.2,private 为 true。
它解决的问题是:在 DSH Web UI 中通过麦克风按钮“按住说话、松手发送”,并尽量让语音转写留在本地完成;如果本地引擎不可用,再回退到浏览器识别。
兼容性与运行环境:
- DSH:
>=0.1.0-rc.3 <0.2.0 - Node.js:
^22.19.0 || >=24.0.0 - Web profile
- 浏览器需要
MediaDevices/AudioWorklet,或可用的Web Speech API回退
核心功能¶
本地转写¶
插件使用本地 FunASR 引擎,模型组合为 paraformer-large + FSMN-VAD + ct-punc,采用官方 int8 ONNX 权重。
默认模型目录为:
~/.dsh/voice-funasr/models
该目录包含 paraformer/、vad/、punc/ 三个子目录,模型约 520MB。
回退浏览器识别¶
本地引擎不可用时,插件自动回退浏览器 Web Speech API。设置面板中可处理识别后端、语言、润色开关与模式、引擎状态、重新检测和加载模型。
可选 LLM 润色¶
插件支持可选的两段式 LLM 润色,用于修正口头禅或口误。
唯一可能出网的是可选润色,走用户自己的 LLM 端点。
输入与音频流转¶
- 输入框左侧麦克风按钮:按住说话,松手自动发送。
- 润色开启时,先润色再发送。
- 音频仅在内存流转。
- 临时 WAV 用后即删,默认不落盘。
- 插件由
package.json#dsh.bundle.patch自动加入 profile。
安装与启用¶
先安装 Python 依赖:
python3 -m pip install -U funasr-onnx modelscope
这一步用于准备本地推理所需的 Python 包。
接着下载模型:
python3 python/download_models.py --model-root ~/.dsh/voice-funasr/models
这一步将模型放到默认模型目录。
在插件 checkout 内安装开发链接:
dsh plugin --profile web add .
如果要安装发布包:
dsh plugin --profile web add ./dsh-voice-funasr-0.1.2.tgz
然后重启 dsh web。首次说话前可在 设置 → 本地语音(FunASR)→「加载模型」预热。
典型用法¶
1、打开 DSH Web UI 的会话输入框。
2、按住输入框左侧的麦克风按钮说话。
3、松开按钮后自动发送;如果开启润色,会先调用用户配置的 LLM 端点做润色,再发送。
4、在 设置 → 本地语音(FunASR) 中查看引擎状态,执行重新检测或加载模型,并调整识别后端、语言、润色开关与模式。
配置项¶
插件支持以下配置项,默认值如下:
| 键 | 默认值 |
|---|---|
pythonCommands |
[python3, python] |
modelRoot |
~/.dsh/voice-funasr/models |
threads |
4 |
channelAuthority |
loopback |
maxAudioSeconds |
120 |
适用场景与注意¶
适合需要在 DSH Web UI 中使用本地语音输入、希望转写尽量离线完成、并愿意使用自己 LLM 端点做可选润色的用户。
使用前注意:
- 插件由
package.json#dsh.bundle.patch自动加入 profile,不要手工把dsh-voice-funasr插入 profile 的cordis.patch.yml,否则同一 loader id 会重复。 - 与
dsh-voice-chat都注册conversation.input.left槽位,请勿同时启用。 - 唯一可能出网的是可选润色,走用户自己的 LLM 端点。
- 插件以当前
dsh进程权限运行;安装前应检查源码与许可证。该插件许可证为 MIT。
卸载¶
执行:
dsh plugin --profile web remove dsh-voice-funasr
然后删除 ~/.dsh/voice-funasr/ 目录。如果不再需要本地推理,可以卸载相关 Python 包(可选)。
链接¶
- 仓库:https://github.com/omdsh-dev/dsh-voice-funasr
- 资料给出的目录页:https://www.skillhub.cn/plugins/omdsh-dev/dsh-voice-funasr