前言¶
在 DSH Web 界面裏寫提示、配置或長文時,打字不是唯一方式。如果希望把口述內容直接落到輸入框,又不想依賴外部語音接口,可以把本地 ASR 接進來。dsh-funasr-voice 面向這個場景:瀏覽器採集麥克風,host 側拉起本地 FunASR + SenseVoiceSmall 做識別,再把文字填入 DSH 輸入框。
這是什麼¶
dsh-funasr-voice 是 DSH Web 的本地離線語音輸入插件,由 fenglin-ai 維護,許可證爲 MIT。它把語音輸入拆成兩部分:瀏覽器端負責採集麥克風和顯示按鈕狀態,host 端負責半自動拉起本地 FunASR + SenseVoiceSmall 識別服務,並將識別結果填入輸入框。
核心能力¶
下面這些能力都圍繞“少切窗口、邊說邊出字”:
- 點一下開始、再點一下停止,點按切換連續聽寫;VAD 自動斷句,邊說邊出字。
- 錄音時按鈕旁即時顯示已錄時長。
- 識別文字自動填入草稿;可選識別後自動發送。
- 句首/句尾的 SenseVoice 事件/情緒 emoji 會被自動剝掉。
- 設置頁可一鍵安裝:自動創建 venv、安裝 funasr + torch、下載 SenseVoiceSmall 模型。
- 支持自動檢測 Python 與模型,也可手動填路徑。
- ASR 在本地 CPU 上跑,SenseVoice RTF 約 0.07,約 10x 即時。
- 支持 GUI 或 YAML 配置
python、model、enabled、basePath、port、language、useItn、autoSend。
安裝與啓用¶
先安裝插件。根據官方命令,把插件目錄或倉庫地址交給 DSH 插件管理器:
dsh plugin --profile <你的profile> add <本插件目錄或倉庫地址>
安裝後重啓 DSH,再進入:
DSH 設置 → 通用 → 語音輸入
點擊「安裝」,插件會自動創建 venv、安裝 funasr + torch,並下載 SenseVoiceSmall 模型。完成後再點輸入框右側的話筒圖標開始聽寫;首次會請求麥克風權限,允許即可。
手動準備 FunASR 環境¶
如果已有 FunASR 環境,或者想自己控制安裝位置,可以先準備獨立 venv 和模型目錄,再把 python 與 model 填回插件配置。以下以 macOS 爲例:
# 1. 創建獨立 venv
python3 -m venv ~/Documents/ASR/funasr/.venv
source ~/Documents/ASR/funasr/.venv/bin/activate
# 2. 安裝 FunASR
pip install --upgrade pip
pip install funasr
# 3. 準備模型目錄
mkdir -p ~/Documents/ASR/funasr/models
cd ~/Documents/ASR/funasr/models
模型下載可使用 ModelScope 或 HuggingFace:
# ModelScope
python -c "from modelscope import snapshot_download; snapshot_download('iic/SenseVoiceSmall', local_dir='SenseVoiceSmall')"
# HuggingFace
pip install huggingface_hub
python -c "from huggingface_hub import snapshot_download; snapshot_download('FunAudioLLM/SenseVoiceSmall', local_dir='SenseVoiceSmall')"
準備完成後,需要記錄兩個路徑:
python: ~/Documents/ASR/funasr/.venv/bin/python
model: ~/Documents/ASR/funasr/models/SenseVoiceSmall
把這兩個路徑填入插件的 python 與 model 配置即可。也可以使用設置中的「自動檢測 Python 與模型」。
配置¶
python 與 model 是必配項:分別是 FunASR venv 的 python 解釋器和 SenseVoiceSmall 模型目錄。插件源碼默認不帶個人路徑,通常默認爲 python: python3、model 爲空。
推薦用 GUI 配置:進入 DSH 設置 → 通用 → 語音輸入,點「安裝」後會自動寫入可用路徑。配置會持久化到:
~/.dsh/dsh-funasr-voice.json
該文件優先級高於 YAML 配置。
也可以在自己的 profile 的 cordis.patch.yml 中覆蓋:
# ~/.dsh/profiles/<你的profile>/cordis.patch.yml
- id: dsh-funasr-voice
config:
python: /你的/FunASR/.venv/bin/python
model: /你的/SenseVoiceSmall/模型目錄
可配置字段如下:
| 字段 | 默認 | 說明 |
|---|---|---|
enabled |
true |
總開關 |
basePath |
/funasr-voice |
HTTP 路由前綴(一般別改) |
python |
python3 |
FunASR venv 的 python 解釋器(必配) |
model |
空 | SenseVoiceSmall 模型目錄(必配) |
port |
18765 |
本地 ASR 服務端口 |
language |
auto |
auto / zh / en / ja / ko / yue |
useItn |
true |
逆文本正則化 |
autoSend |
false |
識別後自動發送 |
運行環境¶
使用插件前,建議確認本機滿足以下要求:
- DSH Desktop
2.0.2,這是本插件的開發/測試版本。 Node ≥ 20。- Python venv + FunASR
1.4.x+ torch。 - SenseVoiceSmall 模型本地離線加載。
首次識別約需要 2~3 秒加載模型,之後服務常駐複用。
macOS 已知問題¶
macOS 用戶注意:DSH Desktop 2.0.2 存在麥克風權限 Bug,會拿到靜音流,表現爲“錄音了但識別不出、輸入框沒反應”。使用前需先給 DSH Desktop 打補丁;倉庫 README 中有“已知 Bug 與修復”章節,可按其處理。
適用場景與注意¶
這個插件適合以下場景:
- 在 DSH Web 輸入框裏用語音代替鍵盤輸入。
- 希望 ASR 在本地 CPU 上運行。
- 需要把識別文字直接填入草稿,並可選擇自動發送。
- 已有或願意手動準備 FunASR + SenseVoiceSmall 本地環境。
注意:插件以當前 dsh 進程權限運行,安裝前建議檢查源碼和 MIT 許可證;安裝過程會下載模型,請預留磁盤空間。若用於正式使用,建議在自己的 profile 中明確填寫 python 與 model,避免依賴自動檢測結果。
鏈接¶
- GitHub:https://github.com/fenglin-ai/dsh-funasr-voice
- 社區目錄頁(插件線索):https://www.skillhub.cn/plugins/fenglin-ai/dsh-funasr-voice