每条回复旁的朗读按钮与输入框自动朗读开关,设置页可选服务商与音色:MiniMax 或任意 OpenAI 兼容的 /audio/speech 端点,可调音色、情绪、语速与模型。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/WYR-233/dsh-multi-tts/releases/latest/download/dsh-multi-tts.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:WYR-233/dsh-multi-tts
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
Read assistant replies aloud in DeepSeek Harness — pick your own TTS provider and voice.
English | 中文
A multi-provider text-to-speech plugin for DSH: a 🔊 button next to every assistant reply, an auto-read toggle in the composer, and a settings page where you choose the provider, the voice, the emotion and the speed. No build step — plain ESM + hand-written React.
Features
- 🔊 Per-reply read-aloud — a button on every assistant message; click again to stop.
- 🔇 Auto-read toggle — sits in the composer's left slot; new replies are spoken automatically.
- ⚙️ Multi-provider settings page — provider dropdown, voice dropdown, manual voice ID, emotion, speed, model, base URL, API key, and a one-click test button.
- 🧹 TTS-friendly text cleanup — code blocks, inline code, URLs, file paths, markdown emphasis and list bullets are stripped before speaking.
- 🔑 Flexible key resolution — plugin config → environment variable →
$DSH_HOME/.env→ common key names in.env. - 📦 Zero build — the client bundle is hand-written
React.createElementshipped as-is inlib/.
Providers
| Provider | Endpoint | Built-in voices | Emotion |
|---|---|---|---|
minimax |
MiniMax (Hailuo) /v1/t2a_v2 |
12 Chinese voices (e.g. female-shaonv, qiaopi_mengmei, lovely_girl) |
✅ |
openai |
any OpenAI-compatible /audio/speech |
6 voices (alloy, echo, fable, onyx, nova, shimmer) |
— |
Any OpenAI-compatible endpoint works through the openai provider — just set the base URL (OpenAI, DashScope, SiliconFlow, local servers, …).
Install
dsh plugin --profile web add dsh-multi-tts
Then add the package to the profile's bundle list (dsh plugin add only writes the dependency — dsh.profile.bundles is what actually mounts the plugin):
{
"dsh": {
"profile": {
"bundles": ["dsh-multi-tts"]
}
}
}
Restart DSH, then open Settings → Multi TTS / 语音朗读.
Configure
- Open the plugin's settings section.
- Pick a provider, then a voice (or paste any voice ID).
- Paste an API key, or put one in
$DSH_HOME/.env:
MINIMAX_API_KEY=sk-...
OPENAI_API_KEY=sk-...
- Click 🔊 测试朗读 / Test to verify. The key status label shows
(from env/.env)when the key comes from the environment.
Config is stored in $DSH_HOME/multi-tts/config.json (override the directory with the stateDir option).
Routes
The host half registers four routes on the DSH web server:
| Method | Path | Purpose |
|---|---|---|
POST |
/multi-tts/synthesize |
{ text, voice?, provider?, speed? } → audio bytes (char count in x-tts-chars) |
GET |
/multi-tts/status |
active provider / voice / key presence |
GET POST |
/multi-tts/config |
read / patch the stored config |
GET |
/multi-tts/voices |
voice list of the active provider |
Notes
- Peer dependency:
@deepseek-ai/cordis ^4.0.1, provided by the DSH host. - Text is capped at 4000 characters per request.
- Requires Node.js ≥ 22 (uses the global
fetch).
License
MIT
中文说明
在 DeepSeek Harness 里把助手的回复念出来——服务商与音色都由你自己挑。
DSH 的多服务商语音朗读插件:每条回复旁有 🔊 朗读按钮,输入框有自动朗读开关,设置页里可选服务商、音色、情绪与语速。零构建,纯 ESM + 手写 React。
功能
- 🔊 每条回复旁朗读——点一下开口,再点一下停止。
- 🔇 自动朗读开关——输入框左侧,新回复自动念。
- ⚙️ 多服务商设置页——服务商下拉、音色下拉、手填音色 ID、情绪、语速、模型、Base URL、API Key,外加一键测试朗读。
- 🧹 朗读前文本清洗——代码块、行内代码、网址、文件路径、Markdown 强调与列表符号都不会念出来。
- 🔑 Key 多路兜底——插件配置 → 环境变量 →
$DSH_HOME/.env→.env常见键名。 - 📦 零构建——client 端是手写
React.createElement,直接以lib/里的源文件形式分发。
服务商
| 服务商 | 接口 | 内置音色 | 情绪 |
|---|---|---|---|
minimax |
MiniMax(海螺)/v1/t2a_v2 |
12 个中文音色(female-shaonv 少女音、qiaopi_mengmei 俏皮萌妹、lovely_girl 萌萌女童……) |
✅ |
openai |
任意 OpenAI 兼容 /audio/speech |
6 个音色(alloy、echo、fable、onyx、nova、shimmer) |
— |
凡是 OpenAI 兼容的语音端点都能用 openai 这条通道接进来——改 Base URL 即可(OpenAI、DashScope、SiliconFlow、本地服务……)。
安装
dsh plugin --profile web add dsh-multi-tts
再把包名加进 profile 的 bundles 清单(dsh plugin add 只写依赖,bundles 才是挂载清单):
{
"dsh": {
"profile": {
"bundles": ["dsh-multi-tts"]
}
}
}
重启 DSH,打开设置 → 语音朗读。
配置
- 打开插件设置页;
- 选服务商、再选音色(也可直接手填音色 ID);
- 粘贴 API Key,或写进
$DSH_HOME/.env:
MINIMAX_API_KEY=sk-...
OPENAI_API_KEY=sk-...
- 点 🔊 测试朗读 验证。Key 来自环境变量时,状态会显示「(来自环境/.env)」。
配置存在 $DSH_HOME/multi-tts/config.json(可用 stateDir 选项改目录)。
路由
host 端在 DSH web 服务器上挂 4 条路由:
| 方法 | 路径 | 用途 |
|---|---|---|
POST |
/multi-tts/synthesize |
{ text, voice?, provider?, speed? } → 音频字节(字符数在 x-tts-chars) |
GET |
/multi-tts/status |
当前服务商 / 音色 / 是否已配 Key |
GET POST |
/multi-tts/config |
读 / 改配置 |
GET |
/multi-tts/voices |
当前服务商的音色表 |
说明
- peer 依赖:
@deepseek-ai/cordis ^4.0.1,由 DSH 本体提供。 - 单次合成文本上限 4000 字符。
- 需要 Node.js ≥ 22(用到全局
fetch)。
许可
MIT
链接
同类插件
PolinniZhong/dsh-omi-voice★ 73
DeepSeek Harness 对话内朗读:点一下即可朗读、暂停、继续 AI 回复,豆包 TTS 自然音色(BYOK),只读最终回答并过滤代码、表格与图形,本地引擎,插件零 Key。
PensiveFei/dsh-voice-scribe★ 32
面向 Web UI 的语音输入插件:点按 Alt(或 Alt+空格)开始/停止听写,支持浏览器内置 Web Speech(零配置)或 OpenAI 兼容云端 ASR,可选经 DSH 已配置模型润色,带设置页。
WizisCool/dsh-ears★ 20
面向 DeepSeek Harness (dsh) 的语音输入插件:输入框的麦克风按钮把语音转成草稿文本,支持多种语音识别后端,可选经 dsh 自有 LLM 路由润色,并带原生设置页。
1624318455/dsh-plugin-tts★ 18
用免费 Edge TTS 或你自己的 RVC 音色朗读 AI 回复:消息朗读与自动朗读、长文自适应分块渐进播放(无缝衔接)、音色包仓库一键安装、便携 RVC 运行时。
qishuilalala/dsh-voice-mode#dsh-voice-mode★ 12
DeepSeek Harness Web UI 全双工语音对话:按钮或 Ctrl+Shift+V 进入,持续聆听(停顿自动发送)或按住说话,zipformer2 流式识别入可编辑草稿、可选唤醒词;回复按句 Edge TTS 朗读并显示实时字幕,开口即打断播放与回合(真 barge-in);识别模型本地推理、Edge TTS 在线合成,无需 API Key。
Alan2Z/dsh-speak★ 11
零外部依赖、事件驱动、无需额外模型、不消耗任何 token的语音播报插件。使用系统自带自然语音进行播报,支持win/mac双平台;最终回复、审批与提问提醒、可选事件播报(回合结束/命令完成/目标变更/工具出错/待办更新)、最终回复可重播、双语言可视化设置。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。