前言¶
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