前言¶
在本地运行智能体时,如果每次回复都要手动点击朗读按钮,或者依赖浏览器端的朗读桥插件,体验会比较割裂。本地朗读插件可以绕过网页,直接从本机扬声器播放语音。
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¶
- 建一个 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
-
确认有 ffmpeg(
ffmpeg -version;Windows 可用winget install Gyan.FFmpeg) -
在
~/.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"
}
/voice-on试试。可选音色:zh-CN-XiaoxiaoNeural(晓晓,女)、zh-CN-YunxiNeural(云希,男)、zh-CN-XiaoyiNeural(晓伊)等。
本地 + 自己克隆音色:Style-Bert-VITS2¶
- 本机跑起 SBV2 的 API 服务(默认 5000 端口):
cd Style-Bert-VITS2
.\env\python.exe server_fastapi.py
-
模型放进
model_assets/<模型名>/,服务会把它们列在GET /models/info -
在配置里写
"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