dsh-doubao-voice

DeepSeek Harness(DSH)採用插件架構,旨在通過社區貢獻擴展基礎能力。開發者在構建智能體或交互式應用時,往往需要流式語音輸入能力,而原生 DSH 尚未提供此功能。dsh-doubao-voice 插件解決了這個問題。它接入火山引擎流式大模型語音識別(豆包 Seed ASR),通過瀏覽器採集麥克風音頻,經宿主 WebSocket 中繼至豆包服務,最終將識別文本流式回填到輸入框。

核心功能

  1. 接入豆包 Seed ASR:使用火山引擎流式大模型語音識別服務。
  2. 交互入口:在輸入框左側提供麥克風按鈕,支持全局快捷鍵(默認 Alt+V)喚起。
  3. 狀態指示:提供四態指示,包括“正在準備中”(轉圈)、“正在聽寫”(音量動態條)、“收尾中”(轉圈)。
  4. 真流式處理:音頻格式爲 16kHz/16bit/單聲道 PCM,按 200ms 分塊上傳,識別文本邊說邊上屏。
  5. 編輯與回滾:識別結果不自動發送,支持在輸入框內編輯確認。中途取消錄音會自動回滾,支持中途修正原位替換,多停頓長錄音不堆疊(LCP 合併算法)。
  6. 配置管理:在設置頁管理憑據、熱詞(逗號/分號分隔)、語言(BCP-47,如 zh-CN)、快捷鍵及最長錄音時長(默認 300s)。
  7. 輸出與兜底:輸出方式跟隨光標(默認)或輸入框;若寫入失敗,自動兜底複製到剪貼板並提示。
  8. 本地存儲:憑據存儲在 ~/.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 的能力。

羽毛球分组比赛记分
小程序二维码

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

小夜