dsh-push-to-talk:按住一個鍵說話,鬆開即轉寫

前言

在 DSH 裏做多輪對話時,最打斷節奏的動作不是想不出答案,而是騰出手去點麥克風。官方語音輸入插件要按一下「開始錄音」、說完再按一下「結束」,這個「點兩次」的動作在連續改稿、反覆追問的場景裏會積少成多。

dsh-push-to-talk 做的事很簡單:按住一個鍵說話,鬆開自動停止並轉寫成草稿。默認 macOS 用 Option ⌥,Windows 用 Alt。插件不自己錄音、不自己識別,只是把按住和鬆開翻譯成官方語音輸入插件的兩次點擊,錄音界面、模型、語言全部沿用官方那套。

插件由 wengyingjian 維護,發佈在社區目錄(SkillHub),包名 dsh-push-to-talk,當前版本 0.6.0,許可證 MIT。

它解決什麼問題

  • 去掉手離開鍵盤的步驟:錄音的開始和結束都在一個鍵上完成。
  • 不另起一套語音鏈路:識別走官方語音輸入插件 @deepseek-ai/dsh-experimental-voice-input-bundle,本地識別模型、語言設置、錄音界面都沒有變化。
  • 按鍵可按平臺選:默認值適配 macOS 和 Windows,macOS 上想用 Command 或功能鍵也可以換。

核心功能

  1. 按住說話、鬆開轉寫。按住期間錄音,鬆開後停止並把結果作爲草稿寫回輸入框。
  2. 鍵位可在插件設置頁裏選,保存後立即生效,重啓 DSH 後保留。
  3. 自動聚焦輸入框:當前視圖有輸入框時,按住鍵會自己聚焦再錄音,不用先把光標點進去。
  4. 按鍵判定用物理鍵位 KeyboardEvent.code,不受輸入法和大小寫影響。

安裝與啓用

前言裏提到它依賴官方棧,所以先確認兩件事:官方語音輸入插件已啓用,本地識別模型已就緒(點一次官方麥克風按鈕,按提示下載一次)。

接下來裝插件,兩條命令選一條:

# 從 npm 安裝
dsh plugin --profile desktop add dsh-push-to-talk

# 想跟倉庫主幹走
dsh plugin --profile desktop add github:wengyingjian/dsh-push-to-talk

裝完重啓 DSH,入口在 設置 → 插件 → 按鍵語音輸入。如果只是改了 client.js,按 ⌘R 刷新頁面即可,不必重啓。

升級同理:

dsh plugin --profile desktop add dsh-push-to-talk@latest

按鍵設置

插件頁那張卡片本身就是選擇器,點一下即保存。可選鍵如下:

平臺 可選鍵
macOS ⌥ Option · ⇧ Shift · ⌃ Ctrl · ⌘ Command · F2
Windows / Linux Alt · Shift · Ctrl · F2

細節上有幾處值得留意:

  • 左右修飾鍵等效,存的是 Alt/Shift/Control/Meta,不是 AltLeft/AltRight。
  • 不放 Win / Super,會被系統截獲;Windows 上的 AltGr 會被過濾。
  • 想跟倉庫主幹走就用上例第二條命令。

典型用法

姿勢就是「裝好、選鍵、按住說」:

  1. 在輸入框裏按住設定的鍵(默認 macOS 爲 Option ⌥,Windows 爲 Alt)。
  2. 開始說話,此時進入錄音狀態。
  3. 鬆開鍵,錄音停止,轉寫結果作爲草稿進入輸入框,可直接繼續改。

不需要把光標先點進輸入框:當前視圖有輸入框時,按住鍵會自動聚焦再錄音。

注意與邊界

  • 設置頁、彈窗、菜單打開時插件會讓出按鍵;DSH 窗口在後臺時收不到按鍵,因爲它不做系統級全局熱鍵。
  • Windows 上單獨按 Alt 可能先激活窗口菜單,不行就換成 F2 或 Ctrl。
  • 錄音太短會提示「未識別到語音」,再按住一次即重錄;首次使用需授權麥克風。
  • 國內鏡像同步有延遲:報 ERR_PNPM_TARBALL_EXTRACT 或解析到 0.0.0-stage 時,加 --registry=https://registry.npmjs.org 重裝。0.0.0-stage 是 npm 新包首發的佔位版本,不是 latest,正常安裝拿不到。

適用場景

適合兩類人:一是用 DSH 做長時間、多輪對話的用戶,按住說話能明顯減少打斷;二是想自己改鍵位或照着源碼調整行爲再發布的開發者。插件只依賴宿主自帶的 @deepseek-ai/schemastery,@deepseek-ai/cordis 是 peer,不會分裂宿主實例。

兼容性方面,engines.dsh = ">=0.2.1-rc.5 <0.4.0",作者實際覈對於 dsh 0.2.1-rc.5;engines.node = ">=20"。

需要說明的是,插件以當前 DSH 進程的權限運行,讀取的是你在 DSH 裏的輸入內容。從第三方倉庫安裝前,建議先讀一遍源碼(尤其是 src/index.js 和 client.js)與許可證。該插件發佈在獨立社區目錄上,與 DeepSeek / 幻方無官方從屬關係,也不是官方應用商店條目。

開發

改了 Host 半側(src/index.js)需要重啓 DSH;只改 client.js 刷新頁面即可。按鍵狀態機、安全邊界、設置同步有配套測試:

node --test test/hotkey.test.mjs    # 15 個用例

小結

push-to-talk 的價值不在新能力,而在把已有的語音輸入從「點兩次」變成「按住說」。它接的是官方語音輸入插件,錄音和識別能力沒有變化,鍵位和平臺適配由它負責。如果你已經在用官方語音輸入,這算是一個低成本的輸入流程改進。

目錄頁:https://www.skillhub.cn/plugins/wengyingjian/dsh-push-to-talk
源碼:https://github.com/wengyingjian/dsh-push-to-talk

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

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

小夜