前言¶
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 在聊天输入框工具行提供录音按钮:
- 按住开始录音。
- 松开自动停止。
- 浏览器端编码 WAV。
- 调用 host 接口:
/speech-api/sttTranscribe
- 转写文本自动填入输入框并发送。
录音最长 120 秒,超过 120 秒会自动停止发送;按住状态移出按钮,也视为松手。
模型管理¶
插件提供模型管理能力,包括:
- 模型状态查询。
- 模型下载。
- 断点续传。
- 镜像回退。
模型缺失时,stt_transcribe 或 tts_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_transcribe 和 tts_speak 会报错,并提示调用 sherpa_models_download。
适用场景与注意¶
适合这些场景:
- 需要在 DSH 中接入本地中文语音识别。
- 需要在 DSH 中接入本地中文语音合成。
- 需要在 WebUI 中快速按住说话,并把转写文本送入聊天输入框。
- 希望运行在 CPU 上,并减少对外部语音服务的依赖。
需要注意:
- 插件以当前 DSH 进程权限运行,安装前应检查源码、依赖和许可证。
- 许可证为 MIT。
- 模型首次使用时可能需要下载。
stt_transcribe和tts_speak在模型缺失时会报错,并提示调用sherpa_models_download。- WebUI 录音最长 120 秒,超过后自动停止发送。
- TTS 输出 WAV 为
8kHz 16bit PCM单声道;STT 输入 WAV 支持16kHz/8kHz,8kHz会自动上采样到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