DeepSeek Harness(DSH)採用插件架構,旨在通過社區貢獻擴展基礎能力。開發者在構建智能體或交互式應用時,往往需要流式語音輸入能力,而原生 DSH 尚未提供此功能。dsh-doubao-voice 插件解決了這個問題。它接入火山引擎流式大模型語音識別(豆包 Seed ASR),通過瀏覽器採集麥克風音頻,經宿主 WebSocket 中繼至豆包服務,最終將識別文本流式回填到輸入框。
核心功能¶
- 接入豆包 Seed ASR:使用火山引擎流式大模型語音識別服務。
- 交互入口:在輸入框左側提供麥克風按鈕,支持全局快捷鍵(默認
Alt+V)喚起。 - 狀態指示:提供四態指示,包括“正在準備中”(轉圈)、“正在聽寫”(音量動態條)、“收尾中”(轉圈)。
- 真流式處理:音頻格式爲 16kHz/16bit/單聲道 PCM,按 200ms 分塊上傳,識別文本邊說邊上屏。
- 編輯與回滾:識別結果不自動發送,支持在輸入框內編輯確認。中途取消錄音會自動回滾,支持中途修正原位替換,多停頓長錄音不堆疊(LCP 合併算法)。
- 配置管理:在設置頁管理憑據、熱詞(逗號/分號分隔)、語言(BCP-47,如
zh-CN)、快捷鍵及最長錄音時長(默認 300s)。 - 輸出與兜底:輸出方式跟隨光標(默認)或輸入框;若寫入失敗,自動兜底複製到剪貼板並提示。
- 本地存儲:憑據存儲在
~/.dsh/dsh-doubao-voice.json,ACL 收緊到當前用戶,僅本機可讀。
安裝與啓用¶
在終端中執行以下命令安裝插件:
dsh plugin --profile web add dsh-doubao-voice
安裝完成後,重啓 dsh web 進程並刷新瀏覽器頁面即可啓用。
配置方式¶
安裝後需要在設置頁或通過環境變量配置火山引擎憑據。
方法一:設置頁¶
進入 DSH 設置頁,找到“語音輸入(豆包)”配置項:
- App ID / Access Token:從火山引擎控制台獲取。
- Resource ID:默認值爲 volc.seedasr.sauc.duration。
- 熱詞:輸入逗號或分號分隔的詞彙,最多 100 個。
- 語言:設置識別語言,如 zh-CN、en-US、ja-JP 等。
方法二:環境變量¶
環境變量優先級高於文件配置。在 PowerShell 中設置如下:
$env:ARK_APP_ID="你的AppID"
$env:ARK_ACCESS_TOKEN="你的Token"
$env:ARK_RESOURCE_ID="volc.seedasr.sauc.duration"
$env:ARK_LANGUAGE="zh-CN"
$env:ARK_HOTWORDS="芯片,Buck電路"
技術實現¶
該插件依賴 ws(WebSocket)庫。協議層實現基於 Proma 桌面端 doubao-asr-service.ts 的調研復刻,包含二進制幀協議、參數解析邏輯及確定性測試。
架構流程¶
瀏覽器 (lib/client.js) 宿主 (lib/index.js) 火山引擎
麥克風 → 16kHz PCM ──WS 二進制──► registerUpgrade 中繼 ──sauc 協議──► 豆包流式 ASR
▲ ◄── transcript 流 ──JSON──◄ DoubaoAsrClient ◄────────────┘
流式回填輸入框(基線 + 累計文本,冪等寫入)
測試¶
項目包含針對合併算法和寫入保險的測試腳本:
node test/merge-test.mjs
node test/writer-guard-test.mjs
node test/relay-test.mjs
適用場景與注意事項¶
- 適用場景:需要流式語音轉文本能力的 DSH WebUI 用戶,適合長文本錄入或實時對話場景。
- 權限與安全:插件以當前
dsh進程權限運行。安裝前建議檢查源碼與許可證。 - 免責聲明:此爲社區項目,非 DeepSeek 或火山引擎官方出品。使用火山引擎服務需遵守其服務條款,Access Token 請妥善保管。該插件收錄於 awesome-dsh-plugin 目錄,不構成安全背書。
總結¶
dsh-doubao-voice 爲 DeepSeek Harness 提供了完整的流式語音識別解決方案,從採集、傳輸到回填均有明確的實現。通過簡單的安裝和配置,開發者可以在 DSH 環境中直接使用豆包 Seed ASR 的能力。