dsh-local-tts:讓 DSH 會話自動朗讀

前言

在本地運行智能體時,如果每次回覆都要手動點擊朗讀按鈕,或者依賴瀏覽器端的朗讀橋插件,體驗會比較割裂。本地朗讀插件可以繞過網頁,直接從本機揚聲器播放語音。

dsh-local-tts 是爲 DeepSeek Harness(DSH)提供的本地朗讀插件,支持兩種語音合成引擎:Style-Bert-VITS2(本地)和 edge-tts(微軟在線語音)。

功能概覽

  • 兩種引擎:本地 SBV2 / 在線 edge,可按配置切換或按語言自動分流
  • 多音色:SBV2 每個音色對應一個模型 + 說話人,可自己訓練/克隆
  • 按語言自動切換:中文 / 日文 / 英文自動判斷,沒有對應音色時跳過
  • 只念正文:只讀助手回覆裏的文字塊,工具調用、思考過程、代碼塊都跳過
  • 防話癆:Markdown 剝掉、每輪最多念 maxChars 字
  • 熱重載:配置文件改動 1.5 秒內生效

安裝與啓用

# 從 GitHub 裝
dsh plugin --profile desktop add github:lihaiyang616/dsh-local-tts

安裝完成後重啓 DSH。首次啓動會生成配置 ~/.dsh/local-tts.json(沒設 DSH_HOME 時)。

在 DSH 輸入框發送命令即可控制:

命令 作用
/voice-on 打開自動朗讀
/voice-off 關閉自動朗讀(正在唸的也會停)
/voice-status 查看開關、引擎、服務器、最近錯誤

也可以直接讓助手調用 local_tts_set_autospeak,或者手動改 ~/.dsh/local-tts.json 裏的 autoSpeak——改完 1.5 秒內生效。

配置速查

字段 說明
provider sbv2 / edge / auto
autoSpeak 是否自動朗讀
sessions 要朗讀的會話 id;[] = 所有加載中的會話
maxChars 每輪最多念多少字,默認 300
language auto / zh / jp / en
languageVoices 語言 → 音色名
voices SBV2 音色列表:modelName 必填,languages 填它會的語言
edge edge-tts 的 python 路徑、voice、rate、volume、pitch
ffmpegPath mp3 轉 wav 用;留空則用 PATH 裏的 ffmpeg

使用示例

中文:edge-tts

  1. 建一個 Python 環境並安裝 edge-tts:
python -m venv $env:USERPROFILE\.dsh\venvs\edge-tts
$env:USERPROFILE\.dsh\venvs\edge-tts\Scripts\python.exe -m pip install edge-tts
  1. 確認有 ffmpeg(ffmpeg -version;Windows 可用 winget install Gyan.FFmpeg)

  2. 在 ~/.dsh/local-tts.json 裏設置:

{
  "provider": "edge",
  "edge": {
    "pythonPath": "C:/Users/你/.dsh/venvs/edge-tts/Scripts/python.exe",
    "voice": "zh-CN-XiaoxiaoNeural",
    "rate": "+0%",
    "volume": "+0%",
    "pitch": "+0Hz"
  },
  "ffmpegPath": "C:/path/to/ffmpeg.exe"
}
  1. /voice-on 試試。可選音色:zh-CN-XiaoxiaoNeural(曉曉,女)、zh-CN-YunxiNeural(雲希,男)、zh-CN-XiaoyiNeural(曉伊)等。

本地 + 自己克隆音色:Style-Bert-VITS2

  1. 本機跑起 SBV2 的 API 服務(默認 5000 端口):
cd Style-Bert-VITS2
.\env\python.exe server_fastapi.py
  1. 模型放進 model_assets/<模型名>/,服務會把它們列在 GET /models/info

  2. 在配置裏寫 "provider": "sbv2" 和 voices:

{
  "provider": "sbv2",
  "serverUrl": "http://127.0.0.1:5000",
  "defaultVoice": "ling",
  "languageVoices": { "jp": "ling" },
  "voices": [
    { "name": "ling", "modelName": "Ling-v2", "speakerName": "Ling v2", "languages": ["jp"] }
  ]
}

一個 SBV2 模型只擅長它訓練時的語言。日文模型念中文會出怪聲或直接失敗——中文請用中文模型,或直接用 edge 方案。auto 模式會按文字語言分流:日文走 SBV2、其它走 edge。

工具

工具 作用
local_tts_say 立刻朗讀一段文字(可指定 voice / language 試聽)
local_tts_status 查看引擎、服務器、音色、隊列、最近錯誤
local_tts_stop 停止當前朗讀並清空隊列
local_tts_set_autospeak 打開/關閉自動朗讀

注意事項

  • 自動朗讀時,SBV2 音色和語言對不上會跳過,原因在 local_tts_status 裏
  • 播放只支持 wav;Windows 用 PowerShell SoundPlayer,Linux 需要 aplay,macOS 用 afplay
  • 沒有圖形設置頁,配置就是 ~/.dsh/local-tts.json
  • edge-tts 需要聯網;SBV2 需要你自己把服務跑起來

隱私

  • 用 SBV2 時:只發到 serverUrl(默認本機 127.0.0.1),不聯網
  • 用 edge 時:文字會發給微軟的語音服務(要念的內容會離開本機)
  • 臨時 wav 放系統臨時目錄,播放完即刪

生態背景

DSH 理念是「一切皆插件」,社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。


  • 插件目錄:https://www.skillhub.cn/plugins/lihaiyang616/dsh-local-tts
  • GitHub:https://github.com/lihaiyang616/dsh-local-tts
羽毛球分组比赛记分
小程序二维码

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

小夜