HEL-879 final closure: integrate preserved HEL-898 rework (b0dcb17->18aef2a ff, zero backend diff), one-pass review of the three fixes passes offline (agent-left teardown via existing fail path incl. DELETE debt; closed set per-call unbounded, seq gate unchanged; speaking-state sentence-granularity display with in-place grow), web 118/118 + typecheck/build/lint(0err/1known) green, req checks 3/3; deliver D1 zero-synthesis audition package (11 reference recordings fetched read-only, sha256 matched per file, offline index.html + manifest; repo keeps manifest/provenance only) and update r5-test-package section 4/8 into the delivered-audition + consolidated request form; zero real calls/downloads/installs/deploy/merge, caps stay 0

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
zonggong
2026-10-27 07:24:27 +08:00
co-authored by multica-agent
parent 18aef2a459
commit 8dc84f88e9
5 changed files with 256 additions and 11 deletions
File diff suppressed because one or more lines are too long
+39
View File
@@ -0,0 +1,39 @@
# HEL-879 · D1 参考试听包(零合成,已交付)
> 交付时间 2026-10-27。性质:把服务器既有 11 支音色的 zero-shot 参考录音整理成
> 可离线播放的 HTML 试听页 + 音频包,作为主卡 D1 拍板材料。**零 TTS 合成、零
> 克隆、零共享音色切换、零下载安装**;对 .12 只做 SSH 只读复制,未改服务器任何
> 文件与状态。
## 包内容(随本卡评论附件交付,不入仓库大媒体)
`HEL-879-D1-参考试听包.zip`(4.4MB,sha256
`e20764f9f98cbfac5ef966227540a75c5061cf16d151e5d0c9d86b620e3972f9`):
- `index.html` —— 离线试听页(自包含,无外部依赖;解压后直接用浏览器打开),
逐支列出音色 ID、时长/采样率、参考录音原文、播放器、文件哈希前缀;
页首明确注明「参考录音 ≠ 实际合成效果」。
- `manifest.json` —— 机器可读清单:11 支音色的 id / 文件 / prompt_text /
服务器源路径 / sha256 / 字节数 / 秒数 / 采样率 / 声道(本目录留有同内容副本)。
- `voice_samples/*.wav` —— 11 段参考录音原文件。
## 来源与取回方式(可复核)
- 音色登记:`192.168.200.12:/opt/voice-agent/cosyvoice/voices.json`(实读,
11 个 ID:bailu、bajie、default、female_soft、haimianbaobao、jiaojiao、
male_warm、nezha、rain、sunwukong、xiaoyun;每项 `prompt_wav` + `prompt_text`)。
- 音频文件:`prompt_wav` 所指 wav(`voice_samples/<id>.wav` 10 支 +
default 用 `CosyVoice/asset/zero_shot_prompt.wav`),`scp` 只读取回。
- 完整性:每文件本地 sha256 与服务器 `sha256sum` 输出逐一相符(见
manifest.json;default 为 IEEE float32/24kHz/3.5s,bailu 为 44.1kHz 立体声
10s,其余 16k/32k 单声道 2.4–16.8s)。
## 边界(如实)
- 参考录音是各音色**来源说话人的真实录音**(zero-shot 克隆依据),不是
CosyVoice 实际合成产物;实际合成效果与参考录音不同,需在获批测试窗口内
真实合成复核(计入 TTS 预算)。
- 参考录音原文为各来源录音本身的内容,按原样保留,仅作试听对照;其中数支
为影视/角色向来源,是否适合「她」由白栖知试听后判断,工程不代选、不预筛。
- 通用演示当前 `voice_state.json` = rain 是共享演示状态,不是本用户的选择依据。
- 克隆新音色需写共享 `voices.json` 并触发共享 TTS 热加载,**需单独授权**,本包未做。
@@ -0,0 +1,135 @@
{
"package": "HEL-879 D1 参考试听包(零合成)",
"generated": "2026-10-27",
"source_server": "192.168.200.12 (SSH 只读取回,未改服务器任何文件)",
"source_registry": "/opt/voice-agent/cosyvoice/voices.json",
"count": 11,
"notes": [
"参考录音 = 该音色 zero-shot 克隆的来源录音(音色来源说话人的真实录音),不是 CosyVoice 实际合成产物;实际合成效果与参考录音不同,需在获批测试窗口内真实合成复核(计入 TTS 预算)。",
"通用演示当前使用 rain,是共享演示状态,不是本用户的选择依据。",
"本包只读取得,未切换/修改任何共享音色状态;克隆需另行单独授权。"
],
"voices": [
{
"id": "default",
"file": "voice_samples/zero_shot_prompt.wav",
"prompt_text": "希望你以后能够做的比我还好呦。",
"server_prompt_wav": "/opt/voice-agent/cosyvoice/CosyVoice/asset/zero_shot_prompt.wav",
"sha256": "c7b31d6dbe7cc6a716dded00550db5b50940bf209e424e4ad207b12e657c8ff6",
"bytes": 334138,
"seconds": 3.5,
"sample_rate": 24000,
"channels": 1
},
{
"id": "sunwukong",
"file": "voice_samples/sunwukong.wav",
"prompt_text": "俺老孙来也,俺乃500年前大闹天宫的齐天大圣孙悟空,这里山势险峻,只怕藏有妖精妖怪,哪里逃吃?俺老孙吧。",
"server_prompt_wav": "/opt/voice-agent/cosyvoice/voice_samples/sunwukong.wav",
"sha256": "a0cf44a8ab659ebddb8bc4faffe88f717d14d2c66c09bc5ea657212826806e68",
"bytes": 429746,
"seconds": 13.4,
"sample_rate": 16000,
"channels": 1
},
{
"id": "nezha",
"file": "voice_samples/nezha.wav",
"prompt_text": "天雷滚滚,我好怕怕劈的我浑身掉渣渣,突破天劫,我笑,哈哈逆天改命。我吹喇叭滴答滴答,滴滴答。",
"server_prompt_wav": "/opt/voice-agent/cosyvoice/voice_samples/nezha.wav",
"sha256": "9911a73e3f54c235dedb05c18f29356f41ba3b1e1b58811c4f766897f0fe1d10",
"bytes": 305196,
"seconds": 9.5,
"sample_rate": 16000,
"channels": 1
},
{
"id": "bajie",
"file": "voice_samples/bajie.wav",
"prompt_text": "师傅,哎,这取经路比高,老庄种地还苦,俺老猪饿的能吞下石龙素包子,猴哥,你筋斗云块,要不先去画个圆。",
"server_prompt_wav": "/opt/voice-agent/cosyvoice/voice_samples/bajie.wav",
"sha256": "1f9c84ce8c10145ace5f615a428a08e2482f322363f037245878068aa95ed98a",
"bytes": 424320,
"seconds": 13.3,
"sample_rate": 16000,
"channels": 1
},
{
"id": "haimianbaobao",
"file": "voice_samples/haimianbaobao.wav",
"prompt_text": "没错,我就是个笨蛋派大星,我们一起去抓水母吧,我们一起度过快乐的一天。",
"server_prompt_wav": "/opt/voice-agent/cosyvoice/voice_samples/haimianbaobao.wav",
"sha256": "c60912dfccd76390baa921d4c99b0120f528837608964290e96cad1221da9c9d",
"bytes": 228726,
"seconds": 7.1,
"sample_rate": 16000,
"channels": 1
},
{
"id": "female_soft",
"file": "voice_samples/female_soft.wav",
"prompt_text": "这点我说一下,就是因为那个就是摩根豪泽尔这本儿金钱心理学。其实在我们这行业里也算一本很有名名的书了。就我之前也读过。然后你说到这点啊,让我想起来他这本书里还挺。",
"server_prompt_wav": "/opt/voice-agent/cosyvoice/voice_samples/female_soft.wav",
"sha256": "4a65d17099239711601cb17e28b7aa7b6149acd153b92fd0366c23902bd4f687",
"bytes": 341192,
"seconds": 10.7,
"sample_rate": 16000,
"channels": 1
},
{
"id": "male_warm",
"file": "voice_samples/male_warm.wav",
"prompt_text": "um a while we built eight hype looe test track adjacent to space acts just for a student competition。 um to encourage intiative ideas in transport and actually ends up being the the biggest um vacuum chamber in the world after the launch。 haveringcollider。",
"server_prompt_wav": "/opt/voice-agent/cosyvoice/voice_samples/male_warm.wav",
"sha256": "2c4109b2d685e1923ed66433eb08c92047a1f67510629a27edf49af4e5c606dd",
"bytes": 539032,
"seconds": 16.8,
"sample_rate": 16000,
"channels": 1
},
{
"id": "xiaoyun",
"file": "voice_samples/xiaoyun.wav",
"prompt_text": "盯着你看怎么啦,难得看你这么有意思的样子嘛",
"server_prompt_wav": "/opt/voice-agent/web/../cosyvoice/voice_samples/xiaoyun.wav",
"sha256": "6ad3ca7a6f1d9ddd10c5647338200fc9913f7adc71d8495a61b6b8e18eadc87e",
"bytes": 297004,
"seconds": 4.6,
"sample_rate": 32000,
"channels": 1
},
{
"id": "rain",
"file": "voice_samples/rain.wav",
"prompt_text": "你是不是早就想睡我了呀",
"server_prompt_wav": "/opt/voice-agent/web/../cosyvoice/voice_samples/rain.wav",
"sha256": "37db24611b999f2f2328fa19c5c6e26117b5ec5d3d2037068af2fc12c6ad25ba",
"bytes": 152364,
"seconds": 2.4,
"sample_rate": 32000,
"channels": 1
},
{
"id": "jiaojiao",
"file": "voice_samples/jiaojiao.wav",
"prompt_text": "怎么还有没射的啊,是我不够努力吗",
"server_prompt_wav": "/opt/voice-agent/web/../cosyvoice/voice_samples/jiaojiao.wav",
"sha256": "6db2b2de2d59e22bb0badbb1a6325d68885eda409ad63f5941e5ccad6486fc9f",
"bytes": 301484,
"seconds": 4.7,
"sample_rate": 32000,
"channels": 1
},
{
"id": "bailu",
"file": "voice_samples/bailu.wav",
"prompt_text": "烈火军校啊,招摇啊这种类型,我都是那种比较……呃……豪爽,比较开朗的那种类型,阳光大女孩儿,那种感觉",
"server_prompt_wav": "/opt/voice-agent/web/../cosyvoice/voice_samples/bailu.wav",
"sha256": "3fbc0aff09118a9bc10bae87a837e6a3de6a30268c6ee01c727b56c49aecd26d",
"bytes": 1769550,
"seconds": 10.0,
"sample_rate": 44100,
"channels": 2
}
]
}
@@ -0,0 +1,60 @@
# HEL-879 · 统一候选一次复审收口(总工,2026-10-27)
> 范围:按总管 2026-10-27 交接,把 HEL-898 三项返修的隔离保全候选
> (`origin/hel-898-preserved` @ `18aef2a`:9254c17 = 作者 12 文件逐字节保全,
> 父 b0dcb17;18aef2a = 仅记录/证据)**正常快进纳入** `hel-879-assembly`,
> 对这三项做最后一次复审收口。不开新审核串、不重审已过后台/预算/备份/receipt
> 时机内核、不替原作者改视觉。零真实调用、零下载/安装/部署/合并,真实 cap 仍 0。
## 一、整合事实
- 快进前远端:`hel-879-assembly` @ `b0dcb17`(11fd0e2/9756db3/b0dcb17 材料成果
全保留,未退回 f92a86f)。快进后 head **`18aef2a`**,无冲突、无强推;
PR#11 与 `hel-870-assembly`(c121c42)未动。
- 9254c17 恰为 12 文件(`web/src` 6 + `web/tests` 5 + `handoff-HEL-898.json`),
与总管 preservation-review.md 记录的作者交付逐字节保全一致;18aef2a 仅新增
`docs/rework/hel898/f92a86f-rework/` 记录与证据(31 文件)。
- **b0dcb17→18aef2a 对 `src/`、`tests/`、`tools/`、`deploy/` 零 diff**
(实跑 `git diff --stat` 为空)——后端/协议/预算/备份/receipt 时机零改动成立。
## 二、三项返修复审(源码级 + 测试级,均通过)
1. **agent 离场僵尸界面/麦克风不停**(`web/src/voice/livekit.ts` +
`session.ts`):transport 按 identity 记录已见 agent(连接事件与初始
remoteParticipants 扫描都入 Set);`ParticipantDisconnected` 仅当离场者是
该 agent 且房内再无其它 agent 时触发 `agentLeft`;控制器走**既有** `fail()`
路径(mic 先停 → room 关闭 → 服务器 DELETE,离线欠账照常补发)。普通参与者
离场、旧房间迟到事件、自己挂断、重复第二 worker 均不误触发——
`web/tests/hel898_agent_left.test.ts` 7 例(含 DELETE 欠账重发与 stale 负例)。
2. **closed 64 挤出复活**(`session.ts`):退休 speech 集合由 64 上限环形数组
改为**每通话 `Set<string>` 全程保留、随代次整体释放**;seq 高水位门不变,
未以放宽乱序保护换修复。f92a86f 审核所记 DOCUMENTED GAP 就此关闭。
3. **播放中短回复被压到 final**(`reading.ts` + `lineStage.ts` +
`ChatPanel.tsx` + `voiceLine`):语音打开的她的行改 `live: 'speaking'`,
末块只显示**已成句**部分(`said()` 截到句末标点+引号括号),文字 generating
原持有规则不变;同键行 `grow()` 原位增长(保留 DOM/已演字,非续写才整段
置换),签名纳入语音行文本驱动重呈现;阅读时钟对增长行只增不减时长。
落库接替沿用同键(turn:mi:index),不重播、不重复演字。
## 三、独立检查(针对本次真实变更,均实跑)
- `web` vitest **118/118**(10 文件,含 hel898_agent_left 7 例、hel879_frames
10 例、voice 45 例);typecheck 0 错;lint 0 错/1 既有 fullButton ref 警告;
build 通过(CSS 哈希 `index-BpZaybfD.css` 与既认可视觉一致,JS 因本次修复
变更为 `index-C23OdPgW.js`,属预期)。
- 需求结构检查 3/3 通过:`--base-ref origin/main`、`--base-ref b0dcb17`、
`--base-ref b0dcb17 --handoff docs/requirements/handoff-HEL-898.json`;
本轮结束后再以 origin/main ± 本卡 handoff 复跑(见提交说明)。
- 浏览器统一回放(两主题电脑/手机、减少动态、worker 实际录制帧、8 段 WebM)
**不重复复跑**:总管已在 18aef2a 记录 53/53 与媒体证据
(manager-checks/browser.log),本轮零安装策略下不重开。
## 四、结论与边界
- 三项返修**离线通过**,与后台 v2 契约无冲突;统一候选当前准确 head
`18aef2a`(本轮复审与 D1 试听材料另追加提交,见分支历史)。
- 仍不冒充的部分:以上全部是假 LiveKit/假媒体的离线回放与单测;真实
WebRTC/麦克风/ASR/TTS、三轮/1 秒打断停声停麦、可信 HTTPS+WSS 设备路径、
iOS/Android、API 重启真实释放**均未测**,待主卡批准后 R5 真机窗口执行。
完整 CG-011 会话中主动表达、完整 mem0 统一体验/R6/R7 继续承接。
- v1.11/60 项无变更;冻结账/权威账未写;既有五实例与共享服务零接触。
@@ -122,9 +122,11 @@ GPU RTX 5090D 空闲 30520MiB(ComfyUI 仍处已授权暂停);内存 94GB/
- **已证**:8090 面板**没有既有音色试听播放**(只有列表/切换/克隆上传/删除),
且切换/上传写**共享** `voices.json`/`voice_state.json`、影响通用演示——v1
「试听入口=8090 面板」勘误删除,未经授权不用它给本用户做试听。
- **拟议试听方案(零合成、零 GPU、零下载)**:部署时把 11 段参考 wav 以只读静态
目录提供(随 8361 静态路径或离线打包随材料交付),白栖知听参考音频初选;
音色效果以参考音频为准 + 获批测试窗口内真实合成复核(计入 §6 TTS 计数)。
- **试听已交付(2026-10-27,零合成、零 GPU、零下载)**:`HEL-879-D1-参考试听包.zip`
随 HEL-879 评论附件交付——自包含离线 `index.html` + 11 段参考 wav + `manifest.json`
(逐文件 sha256 与服务器一致;来源与边界见 `docs/rework/hel879/d1-audition/`)。
白栖知解压后用浏览器直接打开试听初选;音色效果以参考音频为初感 + 获批测试窗口内
真实合成复核(计入 §6 TTS 计数)。参考录音原文按来源原样保留,不预筛。
- 可选:克隆(录 5–20s 中文参考)需写共享 `voices.json`(新增条目为增量,但会触
共享 TTS 热加载)→ **需单独授权**,默认不启。
- worker 缺省回落 `default`(代码已证);专属 worker 用独立
@@ -184,11 +186,17 @@ TTS 分段、φ 播报、打断重合成、主动 say、闲置通话都**不等
## 8. 真正待白栖知拍板的项(工程项已移出,见 §10)
1. D1 音色(§4 参考试听后选,或另行授权克隆)。
1. D1 音色:听 `HEL-879-D1-参考试听包.zip` 后选 1 支(或另行授权克隆)。
2. 有限真实用量与新增费用上限确认/调整(§6 各值;R5 专项嵌入 0)。
3. 测试窗口与共享 TTS 重启授权(占 GPU ~5.6GB;ComfyUI 保持暂停到测试后与否)。
4. 1b 完整统一体验的当前 37 项待准备依赖下载授权(目标 cp311 解析后核定实际
产物清单,可与 R5 专项分开批;已有成品/缓存不重复下载)。
产物清单,可与 R5 专项分开批;已有成品/缓存不重复下载;hatchling 已解决
不再申请)。
> 集中请求口径(总管在主卡一次发出):试听包 + §6 逐类上限/费用 + §5 部署与
> 回滚 + §1b 下载授权,四项一次说清,批准后按 §5 顺序执行;R5 语音专项
> (stub、嵌入 0)与完整统一体验分开批、分开验,ASR/TTS/建房只有操作停机
> 无代码硬闸,均如实表述。
## 9. 本包不做