Skip to content

Releases: junarch/voice_for_dsh

0.5.2 — 元数据修正

Choose a tag to compare

@junarch junarch released this 31 Oct 15:49

本次没有功能变化,只是把包的两处元数据改对。已经装过的人不用动。

  • 声明支持的 DSH 版本:0.2.1-rc.3 到 0.3.0 之前(写在 engines.dsh)。插件市场按这一项判断能否安装,版本不在范围内的会被拒绝。
  • react 改为可选的 peer 依赖——客户端半用的 react 由 DSH 自己的加载器提供。安装时少一个依赖,运行行为不变。

CI 在发版提交上绿。

0.5.1 — 从 npm 安装

Choose a tag to compare

@junarch junarch released this 31 Oct 15:24

本次没有功能变化。已经装过的人不用动,行为完全一样——只有新装或重装时才需要下面这条命令:

$dsh = "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"
& $dsh plugin --profile desktop add voice-for-dsh

重启桌面端,设置页里的「语音播报」照旧。

  • 包里只有 13 个文件、131KB:代码、配置、README、许可证与 package.json。本地引擎的原生库在安装时按平台下载(Windows 约 22MB),模型仍从 GitHub Releases 下载。
  • 读数:host 452 条、设置页 53 条、提示音 38 与 55 条断言全过;发布体检 9 项全过;CI 在发版提交上绿。

包页面:https://www.npmjs.com/package/voice-for-dsh

0.5.0 — 包名改为 voice-for-dsh

Choose a tag to compare

@junarch junarch released this 31 Oct 04:31

包名从 dsh-plugin-voice 改为 voice-for-dsh。已安装的用户需要重装一次;配置、本地模型与缓存不受影响。

升级(必须做一次)

& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop remove dsh-plugin-voice
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "link:<仓库路径>/packages/voice-for-dsh"

两条命令连着执行,中间不要启动应用;完成后重启桌面端。

变更明细

  • 目录、包名、模块名、客户端模块 id、脚本与文档中的路径、安装命令,统一为 voice-for-dsh。
  • 配置命名空间仍是 voice;数据目录仍是 $DSH_HOME/voice/,模型、提示音素材、转写缓存位置不变。
  • 插件市场的条目文件名随目录变化,条目页地址随之改变,此前分享的旧链接会失效。

读数

  • test-host 452 passed / 0 failed;test-client 合约通过;test-settings-ui 53/0;test-chime-ui 38/0;test-chime-playback 55/0;9 个 lib 文件 node --check 通过;audit-release 9/0。
  • CI 在 19ed591 上绿;重启后 POST /voice/api/ping 返回 200,设置页与语音播报正常。

0.4.2 — 重挂不再撞路由,本地模型跨重挂复用

Choose a tag to compare

@junarch junarch released this 30 Oct 14:19

0.4.2

装法不变:GitHub Release 源码 / profile 里 link 安装;模型不用重下。

修复

  • 插件被宿主重挂时语音整项激活失败(webserver: duplicate prefix route "/voice/api"):Host 半三处 HTTP 路由改走 ctx.effect,随插件 fiber 一起撤销。表现为在设置里拨任意插件开关后语音被标成「启用失败」、整项不可用;冷启动不受影响。

优化

  • 本地 TTS 运行时进程内共享:插件重挂后不再重新加载 407MB 模型。实测「加载 → 重挂 → 再朗读」RSS 512 → 512MB(不共享时 515 → 949MB,首声还要多等 2–3 秒)。插件彻底停用后空闲 10 分钟释放;删除模型时连共享池一起摘掉,下一代实例拿到全新运行时。

更正

  • 「原生模块持有 model.onnx 句柄、带句柄删会半删」的说法不成立(实测加载后直接删模型目录成功);相关注释、docs/pipeline.md 不变式与 CHANGELOG 已按实测改写。

读数

  • test-host 452 passed / 0 failed(含真模型套件 448 条 + 运行时共享 10 条);test-client contract OK;test-settings-ui 53/0;test-chime-ui 38/0;test-chime-playback 55/0;9 个 lib 文件 node --check 全过;audit-release 9/0;CI 在 f90b152 上绿。

0.4.1

Choose a tag to compare

@junarch junarch released this 30 Oct 04:14

0.4.1

代码健康度体检的第二批修复 + 适配声明更新。无破坏性变更,配置无需迁移。

适配声明

  • 已在 DSH 0.2.1-rc.5 上全量验证(rc.3→rc.5 的上游变更不涉及插件接口,五套件 + 发版审计全绿)。设置页版本行显示"适配 DSH 0.2.1-rc.5"。
  • peerDependencies 维持 ^0.2.1-rc.3:语义范围(>=0.2.1-rc.3 <0.3.0)已覆盖 rc.5;抬高门槛会拦掉 rc.3/rc.4 用户的安装,故不动。
  • 插件包新增 engines.node >=22 声明(只影响从源码装包时的提示;桌面端运行不受影响,插件跑桌面端自带运行时)。

修复与改进

  • 自动播报待播队列溢出(超过 8 条丢最旧一条)时补一条 [voice] 告警日志,不再静默丢弃;test-host 新增 3 条对应断言(426 项全过)。
  • 删除一段不可达的"自愈写回路由"死代码(无行为变化;真实回退路径在转写失败处理里,注释已指明)。
  • 依赖路径单一化:移除仓库根的 pnpm-workspace.yaml 与根 build 脚本(无调用方);依赖一律装在插件包内(npm 口径,package-lock.json 已入库勿删)。
  • 12 处注释与实现对齐(清除事故复盘、旧版对比这类过程叙事),行为零变化。
  • 文档:发版手册 §1 补记 CI 的 Client 半 XSS 静态守卫;两处 README 注明依赖安装口径。

升级指引

无配置变更,直接更新即可:

dsh plugin --profile desktop add link:<仓库路径>/packages/dsh-plugin-voice

已在用 link: 安装的用户重启桌面端后生效。

0.4.0 — 让 dsh 开口说话

Choose a tag to compare

@junarch junarch released this 28 Oct 14:29

0.4.0 — 让 dsh 开口说话

每轮 DeepSeek 输出结束后,先把内容改写成口语稿,再朗读出来。开着自动播报就是"每轮自己念";关掉也不影响用每条消息上的「朗读」按钮。

从 Python 版升级的先看这一条:本地引擎已经从"独立的 Python 服务"改成 dsh 进程内合成,模型要重下一份(Kokoro v1.1,中英混读)。旧的 local/ 目录可以整个删掉——不需要 Python、不需要起服务、不需要管端口。逐条步骤见 CHANGELOG.md 的「升级指引(Python 版 → 0.4.0)」。

这一版能做什么

  • 三种播报引擎:系统语音(默认,免费、离线兜底)/豆包语音合成 2.0(情感演绎、多音色,8 种方言限 4 个音色)/本地 Kokoro(免费、离线、内容不出本机、中英混读)。
  • 本地模型一键装:设置页点下载,固定版本 + 逐个文件 SHA-256 校验、断点续传、可取消可删除,装完即用、不用重启。
  • 转写提示词按引擎各一份,篇幅三档:详细不超过原文 0.9 倍 / 简单约一半 / 极简约三成。
  • 提示音:工作音五选一(雨滴、滴答、仪表盘、木鱼、轻叩)、完成音、提问音,也可以上传自己的音频;与朗读互不干扰。
  • 设置页五层渐进展开(豆包/系统 TTS 四层,本地多一层「高级」),改动即时保存。
  • 省钱:同一消息重复朗读命中转写缓存,零新增模型调用;豆包 1 小时内重播命中服务端缓存,不重复计费。

安装

克隆仓库后按 README.md 的步骤装进 desktop profile:

git clone https://github.com/junarch/voice_for_dsh.git
cd voice_for_dsh
cd packages/dsh-plugin-voice; npm install; cd ../..
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add link:packages/dsh-plugin-voice

重启桌面端,在设置页找到「语音播报」。

已知限制

  • macOS / Linux 未实测(CI 只跑零成本测试)。
  • 本地合成跑在 Host 进程里,原生模块崩溃会带走整个 Host。
  • 多窗口共用一份待播队列。

完整改动列表见 CHANGELOG.md。

v0.3.1 — local 引擎降级回退可见性修复

Choose a tag to compare

@junarch junarch released this 06 Sep 14:27

转写关闭时,local(英文)引擎会回退系统 TTS 朗读中文原文——此回退此前只写 console,用户无从得知。现于界面 toast 与设置页警告中明示。详见 CHANGELOG。

v0.3.0 — 本地英文 TTS(Kokoro-82M v1.0)

Choose a tag to compare

@junarch junarch released this 06 Sep 13:55

v0.3.0 — 本地英文 TTS(Kokoro-82M v1.0)

新增本地 TTS 引擎 local:免费、离线、数据不出本机,专为"英文播报"设计——中文回复先由转写 LLM 改写为地道英文口语,再交本地 Kokoro-82M 朗读,长文工作后靠听缓解阅读疲劳。豆包云 TTS 保持原样,设置页"播报引擎"三选一(系统 / 豆包付费 / 本地免费)。

新增

  • 本地英文 TTS provider local
    • 英文播报不变式:tts.provider=local 时转写稿固定用英文口语输出(中文内容也转写为英文朗读)
    • 零额外 LLM:local 无 context_texts 情感通道,跳过语音演绎指令生成;无服务端缓存语义、不走双向流
    • 免费引擎不受 autoSpeakCloudTts 成本门控;降级直读稿(可能是中文)不送 local,客户端回退系统 TTS
    • 音频 WAV(PCM 16bit @24kHz),复用一次性音频路由
  • 新配置 voice.tts.local(全带默认值,向后兼容):baseUrl / voice(默认 af_heart)/ speed / timeoutMs
  • 设置页"云TTS"复选框升级为播报引擎三选一;切豆包仍自动写入成本门控开关(语义不变)
  • scripts/local-tts-server.py(OpenAI 兼容 /v1/audio/speech 子集)+ scripts/setup-local-tts.ps1(一键部署,模型落 local/ 不入库);同协议现成服务(如 remsky/Kokoro-FastAPI)可直接替换

升级说明

  • 无破坏性变更:默认引擎仍为 browser,老配置零迁移
  • 使用本地 TTS:pwsh scripts/setup-local-tts.ps1 后启动服务,详见 docs/local-tts.md(模型约 350MB,仅本机)

Full Changelog: https://github.com/junarch/voice_for_dsh/blob/main/CHANGELOG.md

v0.2.1 — 适配 DSH 0.1.2-rc.1

Choose a tag to compare

@junarch junarch released this 03 Sep 14:31

DSH 0.1.2-rc.1 兼容修复

  • 修复 Web Client 因依赖已移除的 conversationEvents 服务而无法启动的问题。
  • Client 会话 Definition 注册迁移至 uiConversation.events。
  • Host 历史消息读取迁移至 session.snapshotEvents(),恢复手动与自动朗读。
  • 插件 peer dependencies 已更新至 DSH 0.1.2-rc.1。

验证

  • Host 测试:175 passed
  • Client 合约测试通过
  • 手写 JS 语法检查通过

v0.2.0

Choose a tag to compare

@junarch junarch released this 22 Aug 15:33

v0.2.0

新增:火山网关可配(支持标准付费 API 与自定义端点)

新增 voice.tts.volcengine.gateway(设置页"鉴权"组的"网关"下拉,默认 plan,向后兼容零迁移):

gateway 含义 HTTP 端点 WS 端点
plan(默认) 智能体套餐 /api/v3/plan/tts/unidirectional /api/v3/plan/tts/bidirection
standard 标准付费(新版控制台 API Key) /api/v3/tts/unidirectional /api/v3/tts/bidirection
custom 自定义端点 httpUrl wsUrl
  • standard:走豆包标准付费端点(非 plan),协议与鉴权头与 plan 完全一致(新版控制台 X-Api-Key),仅 URL 路径不同。旧版控制台(App-Id/Access-Key)鉴权暂未实现。
  • custom:可指向原样转发火山协议的自定义端点(把端点填进 httpUrl/wsUrl 即可);OpenAI 兼容格式(/v1/audio/speech)暂不支持。
  • 详细接入契约见 docs/providers.md。

其它

  • 探针脚本新增 --gateway plan|standard,可用真实 key 验证标准付费端点(scripts/tts-probe.mjs / tts-ws-probe.mjs)。
  • 测试新增 7 条网关断言,172 passed / 0 failed,CI(ubuntu / Node 22)自动运行。
  • 文档同步:docs/pipeline.md(§4.2 网关 + schema)、docs/providers.md(网关一节)。