dsh-cyberdog-speech-sherpa:DeepSeek Harness 本地离线语音插件

前言

DSH 的插件化思路,是把具体能力拆成可安装、可调用的插件,接入智能体工作流。语音输入和语音输出是其中比较常用的一类能力,但很多做法依赖在线语音服务,离线或内网环境下不方便使用。

dsh-cyberdog-speech-sherpa 是一个 DeepSeek Harness(DSH)本地离线语音插件,基于 Sherpa-ONNX,提供中文 STT 语音识别、中文 TTS 语音合成,以及 WebUI 按住说话。下面介绍它的能力、安装方式、工具接口和使用时需要留意的地方。

这是什么

一句话定位:DSH 本地离线语音插件,包含 STT、TTS 和 WebUI 录音按钮。

仓库路径显示为:

wuxinzhe/dsh-cyberdog-speech-sherpa

许可证为 MIT。

它主要解决三件事:

  • 本地完成中文语音识别,不依赖在线语音接口。
  • 本地完成中文语音合成,输出 WAV 文件。
  • 在 WebUI 聊天输入框中提供按住说话,录音后自动转写并填入输入框。

已核实资料中说明,该插件全本地离线,不联网、不收费、CPU 可运行。

核心功能

下面按能力分节介绍。

本地离线运行

插件能力集中在本地处理,运行依赖 sherpa-onnx-node,版本精确锁定为:

1.13.4

已核实资料中说明,该插件 CPU 可运行,不依赖在线服务。

STT 语音识别

STT 能力通过 stt_transcribe 提供,使用 Zipformer 中文流式识别。

输入可以是 WAV 文件路径,也可以是 data URL。输出为识别文本。

TTS 语音合成

TTS 能力通过 tts_speak 提供,使用 VITS 中文多音色。

输入为文本,并可选语速、音色等参数。输出包括音频文件路径、文本,以及可选的 data URL。

WebUI 按住说话

WebUI 在聊天输入框工具行提供录音按钮:

  1. 按住开始录音。
  2. 松开自动停止。
  3. 浏览器端编码 WAV。
  4. 调用 host 接口:
/speech-api/sttTranscribe
  1. 转写文本自动填入输入框并发送。

录音最长 120 秒,超过 120 秒会自动停止发送;按住状态移出按钮,也视为松手。

模型管理

插件提供模型管理能力,包括:

  • 模型状态查询。
  • 模型下载。
  • 断点续传。
  • 镜像回退。

模型缺失时,stt_transcribetts_speak 会报错,并提示调用 sherpa_models_download

WAV 编解码与重采样

插件包含 WAV 编解码能力,并支持 8kHz → 16kHz 重采样。

音频规格如下:

  • STT 输入 WAV 支持 16kHz / 8kHz
  • 8kHz 输入会自动上采样到 16kHz
  • TTS 输出 WAV 为 8kHz 16bit PCM 单声道。

模型下载工具

插件提供 sherpa_models_download 工具,用于下载模型。

输入参数为 kinds?,可取:

["stt", "tts"]

输出包括下载结果和模型目录:

{ "results": "...", "modelDir": "..." }

下载走国内镜像:

ghfast.top → gh-proxy → GitHub

并支持断点续传。

安装与启用

先准备插件源码目录,再使用本地路径安装。安装命令为:

dsh plugin --profile <name> add /path/to/dsh-speech-sherpa

其中 <name> 需要替换为实际使用的 DSH profile 名称。

安装前建议先检查源码、依赖和许可证。该插件以当前 DSH 进程权限运行,安装者应确认自己信任其代码行为和依赖范围。

如果修改了浏览器端源码,可以重建 client bundle:

node scripts/build-client.mjs

如果要做插件契约验证,可以运行:

node scripts/verify-dsh.mjs

典型用法

下面介绍三个工具接口的输入输出。

stt_transcribe

用于语音识别。

输入:

  • audioPath:WAV 文件路径。
  • audioBase64:data URL。

输出:

{ "text": "识别出的文本" }

tts_speak

用于语音合成。

输入:

  • text:要合成的文本。
  • speed?:语速,可选。
  • sid?:音色,可选。
  • inline?:可选。

输出:

{ "audioPath": "...", "text": "...", "dataUrl": "..." }

sherpa_models_download

用于下载模型。

输入:

  • kinds?:可选,取值为 ["stt", "tts"] 或其子集。

输出:

{ "results": "...", "modelDir": "..." }

如果模型缺失,stt_transcribetts_speak 会报错,并提示调用 sherpa_models_download

适用场景与注意

适合这些场景:

  • 需要在 DSH 中接入本地中文语音识别。
  • 需要在 DSH 中接入本地中文语音合成。
  • 需要在 WebUI 中快速按住说话,并把转写文本送入聊天输入框。
  • 希望运行在 CPU 上,并减少对外部语音服务的依赖。

需要注意:

  • 插件以当前 DSH 进程权限运行,安装前应检查源码、依赖和许可证。
  • 许可证为 MIT。
  • 模型首次使用时可能需要下载。
  • stt_transcribetts_speak 在模型缺失时会报错,并提示调用 sherpa_models_download
  • WebUI 录音最长 120 秒,超过后自动停止发送。
  • TTS 输出 WAV 为 8kHz 16bit PCM 单声道;STT 输入 WAV 支持 16kHz / 8kHz8kHz 会自动上采样到 16kHz
  • 社区目录页是独立站点,不应理解成 DeepSeek 或幻方官方应用商店。

结尾

dsh-cyberdog-speech-sherpa 的价值在于把中文 STT、TTS 和 WebUI 按住说话放在 DSH 插件体系里,并以本地离线方式运行。对需要在智能体工作流中加入本地语音输入输出的场景,它可以作为一个相对直接的基础能力插件。

目录页:

https://www.skillhub.cn/plugins/wuxinzhe/dsh-cyberdog-speech-sherpa

GitHub 仓库:

https://github.com/wuxinzhe/dsh-cyberdog-speech-sherpa
羽毛球分组比赛记分
小程序二维码

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

Xiaoye