dsh-siri-voice:語音輸入流光可視化與轉寫清理

前言

DeepSeek Harness(DSH)的插件生態裏,語音輸入是一個高頻場景。但現有的轉寫結果往往充滿口語雜質——語氣詞、重複字詞、停頓造成的碎句號——直接發給模型會降低指令質量。同時,錄音時缺少視覺反饋,無法確認麥克風是否正在工作。

dsh-siri-voice 插件爲 DSH 的語音輸入流程增加兩層功能:一是錄音時的 Siri 風格流光帶,二是轉寫後的本地規則清理。

插件定位

dsh-siri-voice 是一個純客戶端的 DSH 插件,由維護者 saul-dsh 提供。它只做兩件事:

  1. 在語音輸入時,在輸入框上方繪製一個外圈旋轉漸變光、中間三層聲波隨音量起伏的流光帶。
  2. 在轉寫文本進入草稿後,用本地正則清理口語雜質,把停頓造成的碎句號改回逗號。

插件不調用任何大模型,不改變錄音流程,也不自動發送消息。

核心功能

流光可視化

點開麥克風開始錄音時,輸入框上方會浮現一個 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。

故障排查

完全沒有流光帶

  1. 確認語音輸入本身能用:點麥克風能錄音、能轉寫。
  2. 確認前置 bundle 已啓用:dsh --profile desktop --dump-config | grep voice-input。
  3. 裝完沒重啓 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
羽毛球分组比赛记分
小程序二维码

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

小夜