前言¶
DeepSeek Harness(DSH)的插件生態裏,語音輸入是一個高頻場景。但現有的轉寫結果往往充滿口語雜質——語氣詞、重複字詞、停頓造成的碎句號——直接發給模型會降低指令質量。同時,錄音時缺少視覺反饋,無法確認麥克風是否正在工作。
dsh-siri-voice 插件爲 DSH 的語音輸入流程增加兩層功能:一是錄音時的 Siri 風格流光帶,二是轉寫後的本地規則清理。
插件定位¶
dsh-siri-voice 是一個純客戶端的 DSH 插件,由維護者 saul-dsh 提供。它只做兩件事:
- 在語音輸入時,在輸入框上方繪製一個外圈旋轉漸變光、中間三層聲波隨音量起伏的流光帶。
- 在轉寫文本進入草稿後,用本地正則清理口語雜質,把停頓造成的碎句號改回逗號。
插件不調用任何大模型,不改變錄音流程,也不自動發送消息。
核心功能¶
流光可視化¶
點開麥克風開始錄音時,輸入框上方會浮現一個 Siri 風格的流光帶:
- 外圈是一個旋轉的漸變光帶。
- 中間有三層聲波,高度隨麥克風音量實時變化。
- 錄音結束後,光帶瞬間消失,不佔佈局。
轉寫過程中,波形消失但光帶保留,提示還在處理。
轉寫清理¶
語音轉寫會把口語原樣落進草稿,插件在轉寫完成、文本進入草稿之後運行清理規則。所有規則都是本地正則,不調用模型,零延遲零成本。
清理規則¶
| 問題 | 處理方式 | 示例 |
|---|---|---|
| 語氣詞 | 刪行首、標點後、漢字之間的「嗯、呃、額、唔」 | 「嗯,我覺得」→「我覺得」 |
| 口頭填充「那個」 | 只刪行首且後面緊跟逗號的 | 「那個,我想說」→「我想說」 |
| 重複字 | 同字三連以上合併 | 「我我我覺得」→「我覺得」 |
| 重複詞 | 兩三個字的詞連續重複合併 | 「這個這個方案」→「這個方案」 |
| 停頓碎句 | 整段沒有逗號且平均句長很短時,中間句號改逗號 | 「我今天。想去公園。」→「我今天,想去公園。」 |
不動的規則¶
- 疊詞:「看看」「剛剛」「試試」是合法用法,不動。
- 指示代詞:「那個文件」裏的「那個」。
- 語氣助詞:「好啊」裏的「啊」、「對吧」裏的「吧」。
- 已經有逗號的正常句子。
- 正常長度的完整句子。
保護機制¶
如果改動超過原長 40%,判定規則失控,直接放棄清理,保留原文。清理結果只寫回草稿,不會自動發送,你可以繼續修改或手動撤回。
安裝與啓用¶
插件安裝命令如下:
# 本地路徑
dsh plugin --profile web add /path/to/dsh-siri-voice
# 從 GitHub
dsh plugin --profile web add https://github.com/saul-dsh/dsh-siri-voice
安裝後需要重啓宿主(桌面端需完全退出再啓動)。啓動日誌中出現 [siri-voice] 相關的層即可確認插件加載成功。
依賴要求¶
插件依賴 DSH 自帶的語音輸入 bundle(@deepseek-ai/dsh-experimental-voice-input-bundle)處於啓用狀態。麥克風按鈕、錄音與轉寫都由該 bundle 提供,插件只讀取它在錄音時掛在容器上的 data-voice-activity 屬性,不打斷、不接管任何流程。
如果語音輸入 bundle 未啓用,插件不會顯示任何東西,也不影響其他功能。
兼容性¶
| 項目 | 要求 |
|---|---|
| DSH | ≥ 0.2.0(developer preview) |
| Node | ≥ 18 |
| 客戶端 | web(桌面端與瀏覽器) |
| 前置插件 | @deepseek-ai/dsh-experimental-voice-input-bundle 需處於啓用狀態 |
| 運行時依賴 | 無 |
插件使用原生 canvas 與 Web Audio API,不引入第三方依賴,也不使用 WebGL。
故障排查¶
完全沒有流光帶¶
- 確認語音輸入本身能用:點麥克風能錄音、能轉寫。
- 確認前置 bundle 已啓用:
dsh --profile desktop --dump-config | grep voice-input。 - 裝完沒重啓 dsh。客戶端模塊在啓動時加載。
有流光帶,但浪高不動¶
- 麥克風權限被拒絕,或系統裏有別的應用獨佔了麥克風。此時退化爲緩慢呼吸動畫,不報錯。
- 部分 Linux 發行版下
getUserMedia拿不到音量,同樣退化。
轉寫出來了,但語氣詞還在¶
- 清理有 40% 改動上限保護,刪太多會判定失控並保留原文。
- 整段被判爲「正常句子」(已經有逗號,或者平均句長超過 12 字)時,停頓句號不會合並。
- 控制台有
[dsh-siri-voice] transcript cleaned X -> Y記錄,沒有這行說明本次沒觸發清理。
流光帶位置偏了¶
- 它按「編輯器 + 語音欄」的最小公共祖先計算矩形,dsh 改動輸入欄結構後可能算錯。
- 窗口縮放或分屏切換後如果錯位,重新觸發一次錄音即可。
和別的輸入框插件衝突¶
插件只讀 data-voice-activity 屬性,不接管錄音流程。如果出現衝突,可以禁用其他插件逐個排查。
適用場景¶
適合需要頻繁使用語音輸入、希望減少口語雜質、又不想引入額外模型調用的 DSH 用戶。插件對性能影響極小,適合在桌面端瀏覽器環境中使用。
生態背景¶
DSH 理念是「一切皆插件」,插件生態由社區維護。插件目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結語¶
dsh-siri-voice 爲 DSH 的語音輸入流程增加了可視反饋和文本清理能力,所有功能都在本地完成,不依賴外部模型。如果你正在用語音輸入寫提示詞或與模型對話,這個插件可以讓反饋更直觀、文本更乾淨。
- 插件目錄頁:https://www.skillhub.cn/plugins/saul-dsh/dsh-siri-voice
- GitHub:https://github.com/saul-dsh/dsh-siri-voice