@memef1f1y/dsh-plugin-tts 0.6.4 → 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug_report.yml +51 -51
- package/.github/ISSUE_TEMPLATE/config.yml +2 -2
- package/.github/ISSUE_TEMPLATE/feature_request.yml +28 -28
- package/.github/pull_request_template.md +7 -7
- package/.github/workflows/contrib-triage.yml +66 -66
- package/.github/workflows/linked-issue.yml +21 -21
- package/.github/workflows/publish.yml +63 -0
- package/.github/workflows/stale.yml +30 -30
- package/.github/workflows/test.yml +33 -33
- package/.github/workflows/welcome.yml +22 -22
- package/ANALYSIS.md +205 -205
- package/PR-REVIEW.md +74 -74
- package/README.md +335 -335
- package/TODO.md +34 -23
- package/docs/HOST-CONTRACT.md +36 -36
- package/docs/RVC-GUIDE.md +390 -390
- package/docs/USER-GUIDE.md +389 -389
- package/docs/acceptance-checklist.md +147 -147
- package/docs/adaptive-chunked-playback.md +194 -194
- package/docs/macos-test-prompt.md +230 -230
- package/docs/windows-gpu-verify-prompt.md +151 -151
- package/lib/client.js +7164 -7164
- package/lib/index.mjs +3374 -3371
- package/package.json +51 -52
- package/rvc-server.py +564 -564
- package/tests/README.md +45 -45
- package/tests/client-load.mjs +406 -406
- package/tests/e2e-compact-index.mjs +86 -86
- package/tests/e2e-index-ab.mjs +138 -138
- package/tests/e2e-real-rvc.mjs +122 -122
- package/tests/i18n-keys.mjs +82 -82
- package/tests/package-runtime-patch.mjs +88 -88
- package/tests/rvc-server-live.mjs +230 -230
- package/tests/smoke.mjs +1284 -1284
- package/tools/gen-ui-preview.mjs +174 -174
- package/tools/mac-verify.sh +158 -158
- package/tools/package-runtime.py +214 -214
|
@@ -1,148 +1,148 @@
|
|
|
1
|
-
# dsh-plugin-tts 功能验收基线(常驻)
|
|
2
|
-
|
|
3
|
-
> 验收对象:**toast 报错落地点(组 A)· RVC 降级(组 B)· 智能分句硬化(组 C)· 建议 #2 回归(组 D)· 审批语音提醒(组 E)**
|
|
4
|
-
> 基线:`npm run test:all` 全绿(实测:smoke 133 · client-load 73 · i18n 6;live / patch 以各自套件实际输出为准)
|
|
5
|
-
> 适用版本:本地 `lib/` 为最新代码(见 §0 代码同步)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 0. 前置条件
|
|
10
|
-
|
|
11
|
-
| 项 | 要求 |
|
|
12
|
-
|---|---|
|
|
13
|
-
| 环境 | Node ≥ 22;`dsh web` 已启动并加载本插件;浏览器打开 dsh 页面 |
|
|
14
|
-
| 代码同步 | 若用 `file:` 本地安装:Windows 先 `Copy-Item lib/* $env:USERPROFILE\.dsh\profiles\web\node_modules\@memef1f1y\dsh-plugin-tts\lib\ -Recurse -Force` 再刷新页面;改完 lib/ 后建议重启一次 `dsh web` |
|
|
15
|
-
| 快速确认新代码 | 设置 → 插件 → 语音 → RVC 配置 顶部出现「**RVC 失败时自动改用 Edge TTS**」勾选项 = 已是新版本 |
|
|
16
|
-
| 音频 | 系统有声、浏览器非静音;先与页面交互一次(自动播放解锁) |
|
|
17
|
-
| RVC(可选但建议) | 本地模型 .pth + `rvc-server.py`(默认 127.0.0.1:4892)——失败场景需要它「在场但可停止」 |
|
|
18
|
-
|
|
19
|
-
### 如何模拟「RVC 服务不可用」
|
|
20
|
-
- macOS 便携运行时:找到运行 `start-rvc-server.sh` 的终端窗口 → Ctrl+C 或关闭窗口。
|
|
21
|
-
- Windows:关闭「启动服务.bat」窗口;RVC WebUI 用户:停掉服务/退出 WebUI。
|
|
22
|
-
- 确认已停止:设置 → 语音 →「运行诊断」里 RVC 服务 ✗;或 `curl http://127.0.0.1:4892/health` 无响应。
|
|
23
|
-
- 测完恢复:重新启动服务 →「运行诊断」全绿。
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 1. 自动化验收(硬性门槛,先跑)
|
|
28
|
-
|
|
29
|
-
```sh
|
|
30
|
-
npm run test:all
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**期望:全部 PASS,exit 0**
|
|
34
|
-
|
|
35
|
-
| 脚本 | 期望 | 覆盖 |
|
|
36
|
-
|---|---|---|
|
|
37
|
-
| smoke | 68/68 | 路由/真实 Edge 合成/缓存复用/显式取消/分块队列/**RVC 不可达 i18n 错误/splitText 单测/审批事件火线→notify 队列(去重、游标、防护)** |
|
|
38
|
-
| live | 18/18 | 真实 RVC 服务边界(需 RVC 在线) |
|
|
39
|
-
| patch | 4/4 | make-pack 打包 |
|
|
40
|
-
| i18n | 6/6 | zh/en 键集对等、无死键(新增 toast/rvc.fallback/notify.* 键) |
|
|
41
|
-
| client-load | 43/43 | 前端渲染/**toast 渲染与关闭/rvcAutoFallback 与 notify 持久化 round-trip/设置面板提醒模块渲染** |
|
|
42
|
-
|
|
43
|
-
> 说明:live 需要 RVC 服务在线;若本机未装 RVC,可只跑 `npm run test && npm run test:client && npm run test:i18n`(smoke 内含 mock RVC,不依赖真机)。
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## 2. 功能验收(真机逐条)
|
|
48
|
-
|
|
49
|
-
### 组 A:toast 异常提示(建议 #3)
|
|
50
|
-
前置:TTS提供者 = 自定义音色(RVC);「RVC 失败时自动改用 Edge TTS」= 关;RVC 服务**已停止**。
|
|
51
|
-
|
|
52
|
-
| 编号 | 操作 | 预期 | 必/建议 |
|
|
53
|
-
|---|---|---|---|
|
|
54
|
-
| A1 | 点任意一条消息的「朗读」按钮 | 屏幕底部弹出红色 toast:`语音合成失败:无法连接本地 RVC 推理服务(http://127.0.0.1:4892)…`;朗读按钮动画复位 | 必 |
|
|
55
|
-
| A2 | A1 后等待 / 点 toast 的 ✕ | 约 6 秒自动消失;✕ 立即消失 | 必 |
|
|
56
|
-
| A3 | 开启自动朗读 → 给助手发一条带文字回复的消息 | 新回复尝试朗读后弹出同款错误 toast(自动朗读路径的 toast **无**动作按钮) | 必 |
|
|
57
|
-
| A4 | 设置 → 语音 → 试听测试 → 点播放(同为 RVC 停止态) | 预览面板内红字提示,**不**弹 toast(面板维持内联样式) | 必 |
|
|
58
|
-
| A5 | TTS提供者切回 Edge TTS → 正常朗读一条消息 | 正常出声,**无**任何 toast(不误报) | 必 |
|
|
59
|
-
|
|
60
|
-
### 组 B:RVC 降级(建议 #1)
|
|
61
|
-
前置:同上(RVC 服务停止)。
|
|
62
|
-
|
|
63
|
-
| 编号 | 操作 | 预期 | 必/建议 |
|
|
64
|
-
|---|---|---|---|
|
|
65
|
-
| B1 | 复现 A1 → toast 上有「改用 Edge TTS 朗读」按钮 → 点击 | 该条消息改用 Edge TTS 朗读;声音 = RVC「原声音色」(默认 **云扬·男声**,可在 RVC 配置里确认);无红色错误 toast | 必 |
|
|
66
|
-
| B2 | 选一条**长**消息(>44 字)在 RVC 下朗读失败 → 点 toast 动作按钮 | 全文改用 Edge **分块渐进**朗读,出现「第 x/y 段」计数,段落连续无卡顿 | 必 |
|
|
67
|
-
| B3 | 设置 → RVC 配置 勾选「RVC 失败时自动改用 Edge TTS」→ 再点消息朗读 | 自动改用 Edge 朗读(同样为本条消息音色=原声音色)+ 黄色 warn toast「RVC 不可用,已临时改用 Edge TTS 朗读」 | 必 |
|
|
68
|
-
| B4 | B3 勾选后刷新页面;再点「恢复默认设置」 | 刷新后开关仍勾选(持久化);恢复默认后回到**关闭** | 必 |
|
|
69
|
-
| B5 | 重启 rvc-server.py → 诊断全绿 → 再朗读同一条消息 | 恢复 RVC 音色朗读,不再出现任何降级 toast | 必 |
|
|
70
|
-
| B6 | (边界)RVC **分块朗读中途**停掉服务 | 已缓冲段播完即停止 + 错误 toast;**不会**自动续播(设计边界);点动作按钮可整篇用 Edge 重读 | 建议 |
|
|
71
|
-
|
|
72
|
-
### 组 C:智能分句(建议 #4)
|
|
73
|
-
前置:TTS提供者 = Edge TTS(无需 RVC);在「试听测试」粘贴以下文本(× 3 遍,约 150 字,必触发分块):
|
|
74
|
-
|
|
75
|
-
> 产品价格是3.14元,当前版本v2.0.1已经发布,完整文档请访问 https://example.com/path/to/guide.chm 查看,里面有详细的安装与配置说明、常见问题解答以及社区讨论入口。
|
|
76
|
-
|
|
77
|
-
| 编号 | 操作 | 预期 | 必/建议 |
|
|
78
|
-
|---|---|---|---|
|
|
79
|
-
| C1 | 试听播放并逐段听 | `3.14` 读作「三点一四」(连续),**不在小数点处断句**;`v2.0.1` 连续读 | 必 |
|
|
80
|
-
| C2 | 同上 | `https://example.com/…` 整段一次读完,中间无停顿(不切断 URL) | 必 |
|
|
81
|
-
| C3 | 同上 | 朗读中出现「第 x/y 段」且 1→y 递增,最后一段结束自然(无 1–2 字"结巴"尾句) | 必 |
|
|
82
|
-
| C4 | 自动化兜底(可跳过听测) | `npm run test` 中 6 条 splitText 单测全 PASS 即证明切分规则 | 建议 |
|
|
83
|
-
|
|
84
|
-
### 组 D:建议 #2 回归(已实现项不回归)
|
|
85
|
-
| 编号 | 操作 | 预期 | 必/建议 |
|
|
86
|
-
|---|---|---|---|
|
|
87
|
-
| D1 | 开启自动朗读,先让一条回复正在朗读,再发一条消息 | 旧音频立即停止、新回复开始朗读(无堆积、无双声) | 必 |
|
|
88
|
-
| D2 | 朗读中点另一条消息的「朗读」 | 当前停止、切到新消息 | 必 |
|
|
89
|
-
| D3 | 朗读中按 `Esc` / `S`(非输入框);用 mini 播放器 暂停/继续/倍速 | 停止 / 暂停续播与倍速 1x–1.5x 正常 | 必 |
|
|
90
|
-
|
|
91
|
-
### 组 E:审批语音提醒(Agent 事件播报,A1 新增)
|
|
92
|
-
前置:设置 → 插件 → 语音 → 「事件语音提醒」**开启**;TTS提供者任意(播报固定走 Edge TTS)。
|
|
93
|
-
> 触发审批事件的方式:与助手对话时触发一次需要批准的权限决策(如让助手执行一个会被
|
|
94
|
-
> 沙箱要求确认的命令/工具)。审批事件由 Host 订阅 `session/event` 火线摄入。
|
|
95
|
-
|
|
96
|
-
| 编号 | 操作 | 预期 | 必/建议 |
|
|
97
|
-
|---|---|---|---|
|
|
98
|
-
| E1 | 触发一个审批请求 | 以提醒音色(默认晓萱)播报「需要审批,…」,**打断**当前正在朗读的内容 | 必 |
|
|
99
|
-
| E2 | 同一审批请求再次出现(重放/去重) | 只播报一次(按审批 id 去重) | 必 |
|
|
100
|
-
| E3 | 空闲时收到审批结果(勾选「审批结果」) | 播报「审批结果:已批准/已拒绝」;**不打断**正在朗读的内容(空闲才播报) | 建议 |
|
|
101
|
-
| E4 | 不勾选「审批结果」仅勾「审批请求」 | 结果事件不播报、请求仍播报 | 建议 |
|
|
102
|
-
| E5 | 刷新页面后触发新审批 | 不重播刷新前的旧提醒(首次轮询基线同步);新审批正常播报 | 必 |
|
|
103
|
-
| E6 | 关闭总开关后触发审批 | 不播报任何提醒 | 必 |
|
|
104
|
-
| E7 | 播报时 RVC 服务停止/故障 | 播报仍正常(警示强制 Edge TTS,不依赖 RVC) | 建议 |
|
|
105
|
-
| 范围 | 任务完成播报 | **不在本期**(dsh-jobs 无插件可观察的会话事件通道,二期接线) | — |
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## 3. 验收记录表(复制填写)
|
|
110
|
-
|
|
111
|
-
| 编号 | 场景 | 预期 | 结果(通过/失败) | 备注 |
|
|
112
|
-
|---|---|---|---|---|
|
|
113
|
-
| A1 | 手动朗读失败 → 错误 toast | 红 toast + 图标复位 | | |
|
|
114
|
-
| A2 | toast 自动消失 / ✕ 关闭 | 6s / 立即 | | |
|
|
115
|
-
| A3 | 自动朗读失败 → 错误 toast | 红 toast(无动作钮) | | |
|
|
116
|
-
| A4 | 预览面板内联报错 | 面板红字,无 toast | | |
|
|
117
|
-
| A5 | Edge 正常朗读无 toast | 无弹窗 | | |
|
|
118
|
-
| B1 | 一键「改用 Edge TTS 朗读」 | Edge 出声(原声音色) | | |
|
|
119
|
-
| B2 | 长文一键降级 | Edge 分块渐进 + 段计数 | | |
|
|
120
|
-
| B3 | 自动降级开启 | warn toast + Edge 出声 | | |
|
|
121
|
-
| B4 | 开关持久化 / 恢复默认 | 刷新保留 / 复位关闭 | | |
|
|
122
|
-
| B5 | 服务恢复后回归 RVC | 无降级 toast | | |
|
|
123
|
-
| B6 | 分块中途断服务 | 停止 + toast,不自动续播 | | |
|
|
124
|
-
| C1 | 小数/版本不断裂 | 「三点一四」「v2.0.1」连续 | | |
|
|
125
|
-
| C2 | URL 不断裂 | URL 整段读完 | | |
|
|
126
|
-
| C3 | 段计数正常、尾句不突兀 | 1→y 递增、结尾自然 | | |
|
|
127
|
-
| D1 | 新消息打断自动朗读 | 立即切换、无堆积 | | |
|
|
128
|
-
| D2 | 手动切换消息朗读 | 当前停止切换 | | |
|
|
129
|
-
| D3 | Esc/S 停止 + mini 播放器 | 正常 | | |
|
|
130
|
-
| E1 | 审批请求播报并打断 | 提醒音色播报、打断当前朗读 | | |
|
|
131
|
-
| E2 | 审批去重 | 同 id 只播一次 | | |
|
|
132
|
-
| E3 | 审批结果空闲播报 | 结果播报、不打断 | | |
|
|
133
|
-
| E4 | 事件类型勾选生效 | 未勾选类型不播报 | | |
|
|
134
|
-
| E5 | 刷新不重播 | 基线同步、无旧提醒 | | |
|
|
135
|
-
| E6 | 总开关关闭无播报 | 静默 | | |
|
|
136
|
-
| E7 | RVC 故障下提醒仍可用 | Edge 播报正常 | | |
|
|
137
|
-
|
|
138
|
-
**综合判定**:A1–A5、B1–B5、C1–C3、D1–D3、E1–E7 全部通过 + §1 自动化全绿 = 本轮验收通过。
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## 4. 声明与限制
|
|
143
|
-
|
|
144
|
-
- **无独立 HTML**:插件 UI 由 dsh web 宿主注入,无法脱离宿主做 headless 截图对比;中英文布局仍按 README「Known limits」真机目测。
|
|
145
|
-
- **分块中途失败不自动重启整任务**(设计边界):自动降级只覆盖「发起朗读时」的失败;分块播放中途的失败 = 停止 + 报错 toast,用户可一键整篇改用 Edge 重读。
|
|
146
|
-
- **自动降级默认关闭**(隐私设计):RVC 宣传"全本地、音频不上传";自动降级会把文本发送给微软 Edge 在线端点,需用户显式开启。
|
|
147
|
-
- **审批播报走 Edge TTS**:提醒文本(含审批工具名/原因)会发送给微软 Edge 在线端点合成;与 RVC 隐私承诺分离,故默认关闭、开启时设置面板有说明。
|
|
1
|
+
# dsh-plugin-tts 功能验收基线(常驻)
|
|
2
|
+
|
|
3
|
+
> 验收对象:**toast 报错落地点(组 A)· RVC 降级(组 B)· 智能分句硬化(组 C)· 建议 #2 回归(组 D)· 审批语音提醒(组 E)**
|
|
4
|
+
> 基线:`npm run test:all` 全绿(实测:smoke 133 · client-load 73 · i18n 6;live / patch 以各自套件实际输出为准)
|
|
5
|
+
> 适用版本:本地 `lib/` 为最新代码(见 §0 代码同步)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 0. 前置条件
|
|
10
|
+
|
|
11
|
+
| 项 | 要求 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| 环境 | Node ≥ 22;`dsh web` 已启动并加载本插件;浏览器打开 dsh 页面 |
|
|
14
|
+
| 代码同步 | 若用 `file:` 本地安装:Windows 先 `Copy-Item lib/* $env:USERPROFILE\.dsh\profiles\web\node_modules\@memef1f1y\dsh-plugin-tts\lib\ -Recurse -Force` 再刷新页面;改完 lib/ 后建议重启一次 `dsh web` |
|
|
15
|
+
| 快速确认新代码 | 设置 → 插件 → 语音 → RVC 配置 顶部出现「**RVC 失败时自动改用 Edge TTS**」勾选项 = 已是新版本 |
|
|
16
|
+
| 音频 | 系统有声、浏览器非静音;先与页面交互一次(自动播放解锁) |
|
|
17
|
+
| RVC(可选但建议) | 本地模型 .pth + `rvc-server.py`(默认 127.0.0.1:4892)——失败场景需要它「在场但可停止」 |
|
|
18
|
+
|
|
19
|
+
### 如何模拟「RVC 服务不可用」
|
|
20
|
+
- macOS 便携运行时:找到运行 `start-rvc-server.sh` 的终端窗口 → Ctrl+C 或关闭窗口。
|
|
21
|
+
- Windows:关闭「启动服务.bat」窗口;RVC WebUI 用户:停掉服务/退出 WebUI。
|
|
22
|
+
- 确认已停止:设置 → 语音 →「运行诊断」里 RVC 服务 ✗;或 `curl http://127.0.0.1:4892/health` 无响应。
|
|
23
|
+
- 测完恢复:重新启动服务 →「运行诊断」全绿。
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 1. 自动化验收(硬性门槛,先跑)
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
npm run test:all
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**期望:全部 PASS,exit 0**
|
|
34
|
+
|
|
35
|
+
| 脚本 | 期望 | 覆盖 |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| smoke | 68/68 | 路由/真实 Edge 合成/缓存复用/显式取消/分块队列/**RVC 不可达 i18n 错误/splitText 单测/审批事件火线→notify 队列(去重、游标、防护)** |
|
|
38
|
+
| live | 18/18 | 真实 RVC 服务边界(需 RVC 在线) |
|
|
39
|
+
| patch | 4/4 | make-pack 打包 |
|
|
40
|
+
| i18n | 6/6 | zh/en 键集对等、无死键(新增 toast/rvc.fallback/notify.* 键) |
|
|
41
|
+
| client-load | 43/43 | 前端渲染/**toast 渲染与关闭/rvcAutoFallback 与 notify 持久化 round-trip/设置面板提醒模块渲染** |
|
|
42
|
+
|
|
43
|
+
> 说明:live 需要 RVC 服务在线;若本机未装 RVC,可只跑 `npm run test && npm run test:client && npm run test:i18n`(smoke 内含 mock RVC,不依赖真机)。
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 2. 功能验收(真机逐条)
|
|
48
|
+
|
|
49
|
+
### 组 A:toast 异常提示(建议 #3)
|
|
50
|
+
前置:TTS提供者 = 自定义音色(RVC);「RVC 失败时自动改用 Edge TTS」= 关;RVC 服务**已停止**。
|
|
51
|
+
|
|
52
|
+
| 编号 | 操作 | 预期 | 必/建议 |
|
|
53
|
+
|---|---|---|---|
|
|
54
|
+
| A1 | 点任意一条消息的「朗读」按钮 | 屏幕底部弹出红色 toast:`语音合成失败:无法连接本地 RVC 推理服务(http://127.0.0.1:4892)…`;朗读按钮动画复位 | 必 |
|
|
55
|
+
| A2 | A1 后等待 / 点 toast 的 ✕ | 约 6 秒自动消失;✕ 立即消失 | 必 |
|
|
56
|
+
| A3 | 开启自动朗读 → 给助手发一条带文字回复的消息 | 新回复尝试朗读后弹出同款错误 toast(自动朗读路径的 toast **无**动作按钮) | 必 |
|
|
57
|
+
| A4 | 设置 → 语音 → 试听测试 → 点播放(同为 RVC 停止态) | 预览面板内红字提示,**不**弹 toast(面板维持内联样式) | 必 |
|
|
58
|
+
| A5 | TTS提供者切回 Edge TTS → 正常朗读一条消息 | 正常出声,**无**任何 toast(不误报) | 必 |
|
|
59
|
+
|
|
60
|
+
### 组 B:RVC 降级(建议 #1)
|
|
61
|
+
前置:同上(RVC 服务停止)。
|
|
62
|
+
|
|
63
|
+
| 编号 | 操作 | 预期 | 必/建议 |
|
|
64
|
+
|---|---|---|---|
|
|
65
|
+
| B1 | 复现 A1 → toast 上有「改用 Edge TTS 朗读」按钮 → 点击 | 该条消息改用 Edge TTS 朗读;声音 = RVC「原声音色」(默认 **云扬·男声**,可在 RVC 配置里确认);无红色错误 toast | 必 |
|
|
66
|
+
| B2 | 选一条**长**消息(>44 字)在 RVC 下朗读失败 → 点 toast 动作按钮 | 全文改用 Edge **分块渐进**朗读,出现「第 x/y 段」计数,段落连续无卡顿 | 必 |
|
|
67
|
+
| B3 | 设置 → RVC 配置 勾选「RVC 失败时自动改用 Edge TTS」→ 再点消息朗读 | 自动改用 Edge 朗读(同样为本条消息音色=原声音色)+ 黄色 warn toast「RVC 不可用,已临时改用 Edge TTS 朗读」 | 必 |
|
|
68
|
+
| B4 | B3 勾选后刷新页面;再点「恢复默认设置」 | 刷新后开关仍勾选(持久化);恢复默认后回到**关闭** | 必 |
|
|
69
|
+
| B5 | 重启 rvc-server.py → 诊断全绿 → 再朗读同一条消息 | 恢复 RVC 音色朗读,不再出现任何降级 toast | 必 |
|
|
70
|
+
| B6 | (边界)RVC **分块朗读中途**停掉服务 | 已缓冲段播完即停止 + 错误 toast;**不会**自动续播(设计边界);点动作按钮可整篇用 Edge 重读 | 建议 |
|
|
71
|
+
|
|
72
|
+
### 组 C:智能分句(建议 #4)
|
|
73
|
+
前置:TTS提供者 = Edge TTS(无需 RVC);在「试听测试」粘贴以下文本(× 3 遍,约 150 字,必触发分块):
|
|
74
|
+
|
|
75
|
+
> 产品价格是3.14元,当前版本v2.0.1已经发布,完整文档请访问 https://example.com/path/to/guide.chm 查看,里面有详细的安装与配置说明、常见问题解答以及社区讨论入口。
|
|
76
|
+
|
|
77
|
+
| 编号 | 操作 | 预期 | 必/建议 |
|
|
78
|
+
|---|---|---|---|
|
|
79
|
+
| C1 | 试听播放并逐段听 | `3.14` 读作「三点一四」(连续),**不在小数点处断句**;`v2.0.1` 连续读 | 必 |
|
|
80
|
+
| C2 | 同上 | `https://example.com/…` 整段一次读完,中间无停顿(不切断 URL) | 必 |
|
|
81
|
+
| C3 | 同上 | 朗读中出现「第 x/y 段」且 1→y 递增,最后一段结束自然(无 1–2 字"结巴"尾句) | 必 |
|
|
82
|
+
| C4 | 自动化兜底(可跳过听测) | `npm run test` 中 6 条 splitText 单测全 PASS 即证明切分规则 | 建议 |
|
|
83
|
+
|
|
84
|
+
### 组 D:建议 #2 回归(已实现项不回归)
|
|
85
|
+
| 编号 | 操作 | 预期 | 必/建议 |
|
|
86
|
+
|---|---|---|---|
|
|
87
|
+
| D1 | 开启自动朗读,先让一条回复正在朗读,再发一条消息 | 旧音频立即停止、新回复开始朗读(无堆积、无双声) | 必 |
|
|
88
|
+
| D2 | 朗读中点另一条消息的「朗读」 | 当前停止、切到新消息 | 必 |
|
|
89
|
+
| D3 | 朗读中按 `Esc` / `S`(非输入框);用 mini 播放器 暂停/继续/倍速 | 停止 / 暂停续播与倍速 1x–1.5x 正常 | 必 |
|
|
90
|
+
|
|
91
|
+
### 组 E:审批语音提醒(Agent 事件播报,A1 新增)
|
|
92
|
+
前置:设置 → 插件 → 语音 → 「事件语音提醒」**开启**;TTS提供者任意(播报固定走 Edge TTS)。
|
|
93
|
+
> 触发审批事件的方式:与助手对话时触发一次需要批准的权限决策(如让助手执行一个会被
|
|
94
|
+
> 沙箱要求确认的命令/工具)。审批事件由 Host 订阅 `session/event` 火线摄入。
|
|
95
|
+
|
|
96
|
+
| 编号 | 操作 | 预期 | 必/建议 |
|
|
97
|
+
|---|---|---|---|
|
|
98
|
+
| E1 | 触发一个审批请求 | 以提醒音色(默认晓萱)播报「需要审批,…」,**打断**当前正在朗读的内容 | 必 |
|
|
99
|
+
| E2 | 同一审批请求再次出现(重放/去重) | 只播报一次(按审批 id 去重) | 必 |
|
|
100
|
+
| E3 | 空闲时收到审批结果(勾选「审批结果」) | 播报「审批结果:已批准/已拒绝」;**不打断**正在朗读的内容(空闲才播报) | 建议 |
|
|
101
|
+
| E4 | 不勾选「审批结果」仅勾「审批请求」 | 结果事件不播报、请求仍播报 | 建议 |
|
|
102
|
+
| E5 | 刷新页面后触发新审批 | 不重播刷新前的旧提醒(首次轮询基线同步);新审批正常播报 | 必 |
|
|
103
|
+
| E6 | 关闭总开关后触发审批 | 不播报任何提醒 | 必 |
|
|
104
|
+
| E7 | 播报时 RVC 服务停止/故障 | 播报仍正常(警示强制 Edge TTS,不依赖 RVC) | 建议 |
|
|
105
|
+
| 范围 | 任务完成播报 | **不在本期**(dsh-jobs 无插件可观察的会话事件通道,二期接线) | — |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 3. 验收记录表(复制填写)
|
|
110
|
+
|
|
111
|
+
| 编号 | 场景 | 预期 | 结果(通过/失败) | 备注 |
|
|
112
|
+
|---|---|---|---|---|
|
|
113
|
+
| A1 | 手动朗读失败 → 错误 toast | 红 toast + 图标复位 | | |
|
|
114
|
+
| A2 | toast 自动消失 / ✕ 关闭 | 6s / 立即 | | |
|
|
115
|
+
| A3 | 自动朗读失败 → 错误 toast | 红 toast(无动作钮) | | |
|
|
116
|
+
| A4 | 预览面板内联报错 | 面板红字,无 toast | | |
|
|
117
|
+
| A5 | Edge 正常朗读无 toast | 无弹窗 | | |
|
|
118
|
+
| B1 | 一键「改用 Edge TTS 朗读」 | Edge 出声(原声音色) | | |
|
|
119
|
+
| B2 | 长文一键降级 | Edge 分块渐进 + 段计数 | | |
|
|
120
|
+
| B3 | 自动降级开启 | warn toast + Edge 出声 | | |
|
|
121
|
+
| B4 | 开关持久化 / 恢复默认 | 刷新保留 / 复位关闭 | | |
|
|
122
|
+
| B5 | 服务恢复后回归 RVC | 无降级 toast | | |
|
|
123
|
+
| B6 | 分块中途断服务 | 停止 + toast,不自动续播 | | |
|
|
124
|
+
| C1 | 小数/版本不断裂 | 「三点一四」「v2.0.1」连续 | | |
|
|
125
|
+
| C2 | URL 不断裂 | URL 整段读完 | | |
|
|
126
|
+
| C3 | 段计数正常、尾句不突兀 | 1→y 递增、结尾自然 | | |
|
|
127
|
+
| D1 | 新消息打断自动朗读 | 立即切换、无堆积 | | |
|
|
128
|
+
| D2 | 手动切换消息朗读 | 当前停止切换 | | |
|
|
129
|
+
| D3 | Esc/S 停止 + mini 播放器 | 正常 | | |
|
|
130
|
+
| E1 | 审批请求播报并打断 | 提醒音色播报、打断当前朗读 | | |
|
|
131
|
+
| E2 | 审批去重 | 同 id 只播一次 | | |
|
|
132
|
+
| E3 | 审批结果空闲播报 | 结果播报、不打断 | | |
|
|
133
|
+
| E4 | 事件类型勾选生效 | 未勾选类型不播报 | | |
|
|
134
|
+
| E5 | 刷新不重播 | 基线同步、无旧提醒 | | |
|
|
135
|
+
| E6 | 总开关关闭无播报 | 静默 | | |
|
|
136
|
+
| E7 | RVC 故障下提醒仍可用 | Edge 播报正常 | | |
|
|
137
|
+
|
|
138
|
+
**综合判定**:A1–A5、B1–B5、C1–C3、D1–D3、E1–E7 全部通过 + §1 自动化全绿 = 本轮验收通过。
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 4. 声明与限制
|
|
143
|
+
|
|
144
|
+
- **无独立 HTML**:插件 UI 由 dsh web 宿主注入,无法脱离宿主做 headless 截图对比;中英文布局仍按 README「Known limits」真机目测。
|
|
145
|
+
- **分块中途失败不自动重启整任务**(设计边界):自动降级只覆盖「发起朗读时」的失败;分块播放中途的失败 = 停止 + 报错 toast,用户可一键整篇改用 Edge 重读。
|
|
146
|
+
- **自动降级默认关闭**(隐私设计):RVC 宣传"全本地、音频不上传";自动降级会把文本发送给微软 Edge 在线端点,需用户显式开启。
|
|
147
|
+
- **审批播报走 Edge TTS**:提醒文本(含审批工具名/原因)会发送给微软 Edge 在线端点合成;与 RVC 隐私承诺分离,故默认关闭、开启时设置面板有说明。
|
|
148
148
|
- **en 界面错误文案**:host 侧错误保留中文兜底文案 + i18n 标签,极端版本不匹配时 toast 内容可能显示中文兜底(既有行为,非本次回归)。
|