dsh-voice-funasr:DSH Web UI 的本地离线语音输入插件

前言

DSH 强调“一切皆插件”。在 DSH Web UI 中,如果需要在输入框中增加语音输入,一种常见方式是直接依赖浏览器识别能力。dsh-voice-funasr 提供另一条路径:先使用本地 FunASR int8 ONNX 引擎完成转写,本地引擎不可用时再回退浏览器 Web Speech API,并可选调用用户自己的 LLM 端点做两段式润色。

这是什么

dsh-voice-funasr 是 DSH Web UI 的本地离线语音输入插件,维护者为 @Zacklinkk,许可证为 MIT,package.jsonversion0.1.2privatetrue

它解决的问题是:在 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
羽毛球分组比赛记分
小程序二维码

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

小夜