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_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
羽毛球分组比赛记分
小程序二维码

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

小夜