前言¶
DeepSeek Harness 的 Web GUI 自帶語音輸入能力,但默認鏈路意味着音頻要經過遠端語音服務。要從錄音到文字都不出本機,就得自己找本地識別方案並接進語音管線——先找模型、再找命令行工具、再把輸出塞回 Harness,中間每一步都要自己搭。下面介紹的 linj1k/dsh-whisper-local(分類:模型推理,維護者 Linj1k)把這個流程做成一個插件:瀏覽器錄下 16 kHz 單聲道 WAV,Host 端用 whisper.cpp 轉寫,音頻不經過網絡,也不需要 OpenAI 賬號或 API Key。
需要說明的是,這是一個社區 bundle,不是 DeepSeek 官方插件。項目目錄頁放在 skillhub.cn,那是第三方社區站點,與 DeepSeek 沒有官方從屬關係。
這是什麼¶
一句話定位:給 DSH 的 Web GUI 提供一個 host-local 語音提供者(SpeechProvider),底層是 whisper.cpp 的 Windows x64 CPU 版本。瀏覽器只負責錄音並把音頻送到 Host,Host 上負責落盤、調 whisper-cli.exe、讀取文本、清理臨時文件。
它解決的三個具體問題:
- 零外部依賴的識別鏈路——不需要註冊外部語音服務、不需要 API Key。
- 運行時和模型的託管——whisper.cpp 運行時和 GGML 模型按需下載,帶大小和 SHA-256 校驗,下載後緩存並可離線複用。
- 模型切換有入口——Harness UI 裏有模型下拉框,改完立即生效並持久化。
核心功能¶
下面按 README 列出的能力逐條說明,全部爲本地執行:
- 完全本地聽寫:
whisper-cli.exe跑在 CPU 上,模型和音頻都留在本機。 - 默認自動語種檢測:
language: auto讓 Whisper 自行判斷每條錄音的語種;99 種 Whisper 語種也可以在語音設置裏手動指定。 - UI 內選模型:插件頁可選 tiny、base、small、medium、large-v3-turbo,改動即時生效並保存。
- 託管式安裝:Windows x64 whisper.cpp 運行時和 GGML 模型按需下載、校驗(大小 + SHA-256)、緩存,之後可離線使用。
- 不留存錄音:每條錄音寫成臨時 WAV,轉寫完即刪除。
- Agent 集成:助手可通過
whisper_model工具列出模型、後臺下載、或切換當前模型。
工作流程如下:
瀏覽器(Harness composer)
└─ 麥克風按鈕錄製 16 kHz 單聲道 PCM WAV
└─ speech Remote 把錄音發送到 Host
└─ whisper-local SpeechProvider
├─ 寫臨時 WAV
├─ 用選中的 GGML 模型啓動 whisper-cli.exe
├─ 讀取文本輸出
└─ 刪除臨時文件並返回轉寫結果
Provider 通過 ctx.speechToText.register() 註冊,並聲明 location: 'host-local'。這樣語音 UI 能顯示準備狀態,也能在需要時觸發模型下載。
安裝與啓用¶
環境要求¶
| 項 | 說明 |
|---|---|
| DeepSeek Harness | 桌面版/Web 版,且啓用實驗性的 Voice Input bundle |
| 系統 | Windows 10/11 x64(固定運行時是 Windows CPU 構建) |
| 運行時依賴 | tar.exe(Windows 10/11 自帶,用於解壓運行時歸檔) |
| 磁盤 | 解壓後的運行時約 90 MB,每個模型 31–547 MB |
| CPU | 任意 x64 CPU,核數和線程越多越快。不使用 GPU |
| 麥克風 | 需要操作系統和瀏覽器的麥克風授權 |
運行時不需要 Node.js、Python、編譯器或 CUDA。
從 GitHub 安裝(推薦)¶
- 先啓用官方 Voice Input bundle:Plugins → Voice Input。
- 打開 Plugins → Add plugin → Install a third-party plugin。
- 輸入倉庫 Git 地址:
git+https://github.com/Linj1k/dsh-whisper-local.git
要固定版本可用:
git+https://github.com/Linj1k/dsh-whisper-local.git#v1.3.0
- 確認 bundle 已啓用。它的 patch 會把語音模塊設爲
whisper-local+language: auto,並註冊whisper_model工具。 - 如果 Host 模塊是在 Harness 運行期間加入的,Provider 沒出現,就重啓一次 Harness。只改瀏覽器端的 UI 是熱重載的,不需要重啓。
其他安裝方式¶
- 發佈包:從 GitHub Releases 下載
dsh-whisper-local-1.3.0.tgz,在 Plugins → Add plugin 裏指向該文件。 - npm:包名
dsh-whisper-local,待維護者執行npm publish後即可通過 Plugins → Add plugin 填包名安裝(可加版本,如dsh-whisper-local@1.3.0)。 - 本地檢出:在 Plugins → Add plugin 裏填本目錄絕對路徑,適合開發調試。
典型用法¶
聽寫¶
- 點 composer 裏的麥克風按鈕(在模型選擇器和 Send 之間)。
- 首次使用會要求授權麥克風。
- 說話,然後按 Stop。
- 轉寫結果會插入草稿,按正常流程檢查併發送。
選模型¶
打開 Plugins → Whisper local,頁面提供模型下拉框(帶體積與速度/精度提示)、當前生效的模型、以及 Save model 按鈕。選擇會通過 Harness Settings 服務寫入 profile 配置,重啓後依然生效。如果所選模型尚未下載,準備流程會自動開始,進度顯示在 Voice Input bundle 詳情裏的 Download and prepare 區域。
選語種¶
Whisper local 提供 99 種語種加 auto。在 Plugins → Voice Input → bundle details → Language 裏改。官方選擇器對 auto、en、zh、ja、ko 顯示翻譯後的標籤,其他語種顯示 ISO 代碼(如 fr、de、es)。
默認值是 auto,不會強制法語或任何固定語種。混合用語場景適合自動檢測;錄音短或噪音大時,顯式指定語種更穩。
模型清單¶
模型均來自 ggerganov/whisper.cpp 託管的多語種 GGML 構建:
| Key | 文件 | 體積 | 說明 |
|---|---|---|---|
tiny-q5_1 |
ggml-tiny-q5_1.bin |
~31 MB | 最快,精度最低 |
base-q5_1 |
ggml-base-q5_1.bin |
~57 MB | 快,基礎精度 |
small-q5_1 |
ggml-small-q5_1.bin |
~181 MB | 默認,均衡 |
medium-q5_0 |
ggml-medium-q5_0.bin |
~514 MB | 更準,更慢 |
large-v3-turbo-q5_0 |
ggml-large-v3-turbo-q5_0.bin |
~547 MB | 多語種精度最好 |
官方給出的參考(AMD Ryzen 9 9950X3D,8 線程,約 10 秒語音):small-q5_1 處理法語約 1.3 s、日語約 1.2 s;large-v3-turbo-q5_0 法語約 3.3 s、日語約 4.0 s。
固定運行時是官方 nightly b5454 Windows x64 OpenBLAS 構建,校驗值爲其 release SHA-256。
配置項¶
bundle patch(cordis.patch.yml)給出的默認配置:
- insert:
- id: whisper-local
name: 'dsh-whisper-local'
config:
dataRoot: !!js dshHomePath('speech-to-text', 'whisper-local')
model: small-q5_1
threads: 8
timeoutMs: 180000
- id: speech-to-text
config:
defaultProvider: whisper-local
language: auto
| 字段 | 默認 | 含義 |
|---|---|---|
dataRoot |
%USERPROFILE%\.dsh\speech-to-text\whisper-local |
運行時、模型和診斷信息的託管目錄 |
model |
small-q5_1 |
上表中的模型 Key 之一,也可從 UI 修改 |
threads |
8 |
傳給 whisper-cli 的 CPU 線程數 |
timeoutMs |
180000 |
單次轉寫時限 |
modelPath |
未設置 | 使用已有的 GGML 模型文件,跳過託管下載 |
whisperCli |
未設置 | 使用已有的 whisper-cli.exe,跳過託管運行時 |
用戶覆蓋寫在 profile 的 patch 層,優先級高於 bundle 默認值;UI 裏選中的模型也寫在那裏。
Agent 工具¶
bundle 註冊了 whisper_model 工具,助手可以執行三類操作:列出模型目錄、後臺下載模型、切換當前模型。適合讓 Agent 在用戶一句「換成 small」時自行完成切換。
適用場景與注意事項¶
適合這些情況:
- 錄音內容涉及隱私或不宜出網,需要在本地完成轉寫。
- 環境裏沒有可用的外部語音 API Key,或不想爲聽寫單獨申請賬號。
- 已經有一臺 x64 Windows 機器,想用 CPU 換來一條約 10 秒的語音秒級出稿。
需要注意:
- 權限範圍。插件以當前 DSH 進程的權限運行,下載運行時和模型、執行
whisper-cli.exe、讀寫dataRoot目錄都發生在該進程權限下。安裝前應該先讀一遍源碼和許可證(MIT),確認目錄路徑和命令執行範圍符合預期,不要只看目錄頁描述就裝。 - 平臺與機型限制。只支持 Windows 10/11 x64,只用 CPU,不使用 GPU。在 macOS / Linux 或 ARM 機器上不適用。
- 磁盤與首次下載。運行時約 90 MB,模型 31–547 MB,首次啓用(尤其選 medium 以上)會有一段下載時間。運行時和模型帶大小與 SHA-256 校驗,儘量保持默認配置,不要手工替換。
- 默認語種是 auto。如果使用場景語種固定、錄音又短或噪聲大,建議顯式指定語種,避免自動檢測出錯。
- 音頻不落盤。只在臨時 WAV 上轉寫,轉寫後刪除——這條僅指插件自身的行爲,具體效果取決於你在 Harness 之外還有沒有其他錄音鏈路。
- 社區項目。這是第三方 bundle,非 DeepSeek 官方插件;star 數與版本信息以 GitHub 當前狀態爲準,升級前核對版本號。
結尾¶
這個插件的價值在於把「瀏覽器錄音 + 本機轉寫」這條鏈路收斂成一個可以安裝的 bundle:不用配外部服務、不用管運行時怎麼裝,模型選擇和語種選擇都在 UI 裏完成,並且音頻不出本機。如果本地聽寫已經是日常操作,值得一試;如果只是偶爾錄音,先估算一下模型下載的體積成本。
目錄頁:https://www.skillhub.cn/plugins/Linj1k/dsh-whisper-local
GitHub:https://github.com/Linj1k/dsh-whisper-local