Files
SoundGame/docs/design/17-abyss-voice-ids.md
T
xsl c8843233b0 research(new8/batch2): abyss + detective 迭代闭环收口——双双 R1-R2 连续达标裁定可交付
abyss《深海回音》:
- R1 补 synthesis(5/5 愿意玩 P0=0)+ 补录 R1 缺失裁决材料
- R2 十修全部现场坐实:F1 ping迟到/尾句保护首播制/链末看门狗不拆/回波静默一拍/dv4_dual扣账口播/crit水面变体/看门狗13s/震循环1.1s/震去重/状态链人数句
- 补录语音18段(flock串行,QC无离群);playtest 242→278
- 终裁:4/4 人设满分档,连续 2 轮达标 → 可交付 ✅

detective《雨夜专案》:
- R1 取证轮:补跑 live 两会话(认真新手33分钟全弧线/乱按200s三级保底抢救),5/5 愿意玩 P0=0
- R2 十一修全部坐实:intro完整落声/tut不被掐/按轴取句/人名指认/结案确认闸/指路句/选句记忆位/hint轻震/st_wrong当场记账/tut_skip补动词/L2疑点齐分支
- 补录+改词33条(29新增+4重录);playtest 265→279
- 终裁:6/6 愿意玩,连续 2 轮达标 → 可交付 ✅

公共:00-program 批次2进度账收账、13号文档 R2 断言关键词、gen_voice_dual 两游戏段、voice_text.json
验证:abyss 278/278 + detective 279/279 + guide 122/122 + check_all_assets 全项目全绿
2026-09-14 00:05:42 +08:00

270 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 17b · 《深海回音》(abyss) 语音台词表(voice ids,录音依据)
> **给音频总监的录制说明**
> - **双性别组**(潜航员 DIVER + 调度/系统 DECK,126 句):落 `web/abyss/audio/voice/female|male/<id>.{ogg,m4a}`,两性别 id 集合完全一致(含全部 `_k` 变体)。
> - **DIVER(潜航员=玩家)**:female = `Serena`,instruct 常量 `低沉冷静的年轻女声,深潜救援员,干练沉着,水下通讯的轻微气声`;male = `Uncle_Fu`,instruct 常量 `低沉冷静的男声,深潜救援员,干练沉着,水下通讯的轻微气声`。
> - **DECK(母船调度/系统音/向导 gd_*)**:female = `Vivian`,instruct 常量 `清晰稳定的女声,母船潜水调度员,专业干脆,隔着耳机下达指令`;male = `Dylan`,instruct 常量 `清晰稳定的男声,母船潜水调度员,专业干脆,隔着耳机下达指令`。
> - 区分度设计:玩家(头戴耳机的自语音)与调度(母船通讯声)共用 speaker 池但**不同 speaker 配对**——female 侧玩家 Serena / 调度 Vivian、male 侧玩家 Uncle_Fu / 调度 Dylan,同场景高频对话的两者永不同 speaker。
> - **NPC 平铺组**(21 句):单音色、**不做双性别**,平铺落 `web/abyss/audio/voice/<id>.{ogg,m4a}`(引擎平铺回退命中),转码时按 §电台滤波 加带通。船员共 4 人(≤5 约束),同一角色 speaker+instruct 恒定,区分度风险逐个标注:
> | 角色 | speaker | instruct 常量 | 区分度风险 |
> |---|---|---|---|
> | 小舟(23 岁声呐兵,女) | `Serena` | `年轻女声,二十三岁声呐兵,缺氧后发虚,强撑着干脆` | **中**:与 female 玩家同 speaker,靠年龄感 instruct + 电台滤波(420-3200Hz)区分,请试听确认 |
> | 老白(50 岁轮机长,男) | `Uncle_Fu` | `沙哑爽朗的中年男声,五十岁轮机长,忍着伤痛开玩笑` | **中**:与 male 玩家同 speaker,靠沙哑 instruct + 滤波(350-3000Hz)区分,请试听确认 |
> | 陈医官(45 岁船医,女) | `Vivian` | `平静沙哑的中年女声,四十五岁船医,专业镇定,语气温和` | **低**:与 female 调度同 speaker 不同 instruct + 滤波(400-3100Hz),且从不同场 |
> | 高船长(58 岁船长,男) | `Eric` | `低沉苍老的男声,五十八岁船长,疲惫克制,有老舵手的威严` | **低**:male 侧唯一 Eric + 滤波(300-2800Hz) |
> - **电台滤波(转码侧)**:NPC 全部走带通+轻压缩(参数见上表,详表见 17-abyss.md §5.3/§6.1);DIVER/DECK 不滤波(母船级音质)——「电台里的人」与「耳机里的人」靠音质差立住。试听不可读的句子回退未滤波原声(宁窄勿脏)。
> - **称呼规则**:船员对玩家一律称「救援员/你」,**全表禁用**「姑娘/小哥/大哥/大姐/叔叔」类性别化称呼(玩家性别随用户设置变化)。
> - **键盘变体(PC 键盘通道,P1 机制)**:带 `_k` 后缀的 id 为键盘措辞版(「按空格」「回车」「左箭头/右箭头/上箭头/下箭头」),与触屏版**成对生成、成对落盘**(`check_all_assets` 校验 `_k` 配对);运行时由 `gesture.inputMode()` 选择:`key` → `<id>_k`,`touch` → `<id>`,`auto` 跟随最近使用通道,`_k` 缺失回退无后缀版。变体共 **11 对**,全部集中在下方 §G0 操作提示句区与 §D1 首个抉择(dv1_teach / p1),以粗体标注。
> - **数字规避**:潜次/氧气全部分档整句(prog_d1..d4、oxy_full/ok/low/crit、oxy_gain);句内数字(三千米/三格/四潜/十二小时/四小时/一小时/三页)写死在整句里,禁止运行时拼接。
> - **禁语速词**:instruct 不含任何语速描述(引擎 SoundTouch 变速);NPC 句靠短句+逗号停顿实现「水下慢半拍」听感。
> - 管线:`tools/gen_voice_dual.py` 照录(SPEAKERS 表需新增 abyss 行);多音字自查见文末注记。
## G0 组 · 系统/向导/状态(DECK 双性别 ×37)
### G0.a 操作提示句(含键盘变体,9 对 18 句——键盘玩家听这一区就够)
| id | 台词全文 | 触发 |
|---|---|---|
| `gd_brief` | 单击继续简报。要选择时,向左或向右滑。 | 开场链最前(full 档,F8 先例) |
| **`gd_brief_k`** | 按空格继续简报。要选择时,用左右方向键。 | 同上(inputMode=key) |
| `gd_continue` | 单击屏幕,继续。 | 叙事链末看门狗第 1 级(full 25s / standard 13s) |
| **`gd_continue_k`** | 按空格,继续。 | 同上(key) |
| `gd_again` | 还在吗?单击继续。 | 看门狗第 2 级(50s / 30s),新句不逐字重播 |
| **`gd_again_k`** | 还在吗?按空格继续。 | 同上(key) |
| `gd_ping1` | 声呐待命。单击,发脉冲。 | 搜索等待静默 10s(第 1 级) |
| **`gd_ping1_k`** | 声呐待命。按空格,发脉冲。 | 同上(key) |
| `gd_ping2` | 回波不会自己来。单击。 | 搜索等待静默 25s(第 2 级,**必须与第 1 级不同句**) |
| **`gd_ping2_k`** | 回波不会自己来。按空格。 | 同上(key) |
| `sys_help` | 单击继续,双击重新听。上滑听状态,下滑开菜单。选择时,左右滑。 | 上滑帮助 / 菜单内上滑 |
| **`sys_help_k`** | 空格继续,回车重新听。上箭头听状态,下箭头开菜单。选择时,左右箭头。 | 同上(key) |
| `sys_menu` | 菜单。单击切换选项,双击确认。 | 下滑呼出模态菜单 |
| **`sys_menu_k`** | 菜单。空格切换选项,回车确认。 | 同上(key) |
| `sys_skip` | 听过的句子再播时,单击就能跳过。 | 开场每局一次(skip_hint 先例;R2-F6 改词,见文末修订记录) |
| **`sys_skip_k`** | 听过的句子再播时,按空格跳过。 | 同上(key) |
| `sys_continue_ask` | 检测到你的下潜记录。单击继续上次,右滑开始新救援。 | 有存档进游戏 |
| **`sys_continue_ask_k`** | 检测到你的下潜记录。空格继续上次,右箭头开始新救援。 | 同上(key) |
### G0.b 状态/系统句(无手势词,无变体)
| id | 台词全文 | 触发 |
|---|---|---|
| `gd_invalid` | 这个手势,水里用不上。 | 无效手势(error 震,idle-only,同局限次) |
| `gd_prog1` | 滑动在这里用不上。想想调度刚说的话。 | 无进展轨 60s(第 1 级,乱按抢救) |
| `gd_prog2` | 别乱。停一下,想想下一步。 | 无进展轨 120s(第 2 级) |
| `sys_menu_resume` | 回到水下。 | 菜单项 |
| `sys_menu_restart` | 重新开始这次救援。 | 菜单项 |
| `sys_menu_lobby` | 保存并回大厅。 | 菜单项(确认后跳转前播) |
| `sys_settings` | 音色、语速、背景音乐,请回大厅修改。 | 菜单内设置提示 |
| `sys_new_dive` | 新的一次下潜,开始了。 | 新救援开始 / 菜单重开 |
| `prog_d1` | 现在是第一次下潜。 | 上滑状态链(按当前潜次选播) |
| `prog_d2` | 现在是第二次下潜。 | 同上 |
| `prog_d3` | 现在是第三次下潜。 | 同上 |
| `prog_d4` | 现在是最后一次下潜。 | 同上 |
| `prog_saved1` | 已经救上一个人。 | 上滑状态链·已救人数(R2-F10,saved=1) |
| `prog_saved2` | 已经救上两个人。 | 同上(saved=2) |
| `prog_saved3` | 已经救上三个人。 | 同上(saved=3) |
| `prog_saved4` | 已经救上四个人。 | 同上(saved=4) |
| `prog_saved5` | 五个人都在甲板上了。 | 同上(saved=5;saved=0 不播人数句) |
| `oxy_full` | 气瓶还足,救得动。 | 氧气 ≥9(跨档时挂上浮结算链;上滑状态链) |
| `oxy_ok` | 氧气还够两潜。 | 氧气 6-8(floor(oxy/3)=2,句义逐格为真) |
| `oxy_low` | 氧气告急,只够最后一潜。 | 氧气 3-5;此后垫 sfx/breath_loop |
| `oxy_crit` | 氧气见底,必须上浮。 | 氧气 0-2·**水下**(DIVE/COMMS);各播报位附 warning 震 |
| `oxy_crit_deck` | 氧气见底,一潜都下不去了。 | 氧气 0-2·**水面**(SURFACE/ENDING;R2-F5,句义=floor(0..2/3)=0 潜,逐格为真) |
| `oxy_gain` | 应急瓶接上了,多三格。 | D2 上浮后补给(全局唯一一次) |
| `dry_a` | 气瓶用干了。立刻上浮。 | mid-dive 氧气 floor 至 0,干涸链首句 |
| `dry_b` | 气花在了人身上。人,都上来了。 | 干涸链归因句(真话:气耗在走心选择上) |
## G1 组 · 开场(双性别 ×4)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `b_open` | 潜航员 | 风停了。我站在问海号甲板上,下面三千米,是海燕号。 | INTRO(配 sfx/amb_deck) |
| `b_rule` | 调度 | 规矩就一条:气不够一潜,人就必须上浮。 | INTRO(一句规矩,P4;与取消门一致) |
| `b_goal` | 调度 | 海燕号,五个人。你的双瓶,够下四潜。 | INTRO(氧气预算承诺) |
| `b_go` | 调度 | 第一潜,找船。耳朵交给声呐。 | INTRO,随后自动下潜 |
## D1 组 · 第一潜·找船·小舟(教学潜)(双性别 13 + 小舟平铺 5 = 18)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `dv1_down` | 调度 | 下潜开始。水会越来越黑,声音会越来越多。 | 下潜链(垫 sfx/amb_deep) |
| `dv1_teach` | 调度 | 到深度了。声呐静了。单击,发一枚脉冲。 | 搜索等待武装(教「单击=脉冲」,配 turn cue) |
| **`dv1_teach_k`** | 调度 | 到深度了。声呐静了。按空格,发一枚脉冲。 | 同上(key) |
| `dv1_metal` | 调度 | 金属回波,钢板。听见这个,就是海燕号的船身。 | 首枚回波解读(**教「金属回波=钢板」,配 echo_metal_l**) |
| `dv1_link` | 调度 | 回波后面有杂音,是电台!接通了。 | 通讯接通(配 link_beep) |
| `z1_a` | 小舟 | ……有人吗?声呐兵,小舟。我们还活着,全艇五个人。 | 通话主干(垫 sfx/static_burst) |
| `z1_b` | 小舟 | 轮机长老白困在机舱,陈医官和小郑在病舱,船长在指挥舱。 | 通话主干 |
| `z1_knock` | 小舟 | 等等,你听。管子里,有人在敲。 | 线索音引入(**配 sfx/pipe_knock 两遍**) |
| `p1` | 调度 | 管路在响。向左滑,停下来听敲管的暗号。向右滑,先带小舟上浮。 | 抉择提示(播完即可选) |
| **`p1_k`** | 调度 | 管路在响。左箭头,停下来听敲管的暗号。右箭头,先带小舟上浮。 | 同上(key;首个抉择的键位绑定) |
| `d1_listen` | 潜航员 | 都别出声。管子那头,敲得很稳。 | p1 左(knowsPipe=true,-1 气) |
| `d1_code` | 调度 | 是老白的暗号:腿被压住,先泄压,再撬。记住这个敲法。 | p1 左·收(情报句,D2 兑现) |
| `d1_up` | 潜航员 | 小舟,抓住我的肩锁。我们上。 | p1 右 |
| `z1_bye` | 小舟 | 好。上面……是不是天亮了? | p1 右·反应 |
| `p2` | 调度 | 小舟想回去拿声呐日志。向左滑,等她。向右滑,直接上浮。 | 抉择提示 |
| `d1_log` | 小舟 | 日志里有失事前,最后一段录音。给你,替我们收好。 | p2 左(hasLog=true,-1 气) |
| `d1_nolog` | 潜航员 | 日志可以补,人不能等。走了。 | p2 右 |
| `d1_surf` | 调度 | 小舟出水,第一潜收工。往返,扣三格气。 | 上浮结算(配 surf_splash+ascent_chime;教「每潜扣 3」) |
## D2 组 · 第二潜·机舱·老白(双性别 14 + 老白平铺 4 = 18)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `dv2_down` | 调度 | 第二潜,机舱。顺着敲管的声音走。 | 下潜链 |
| `dv2_found` | 调度 | 碎石回波后面,敲管声密了。机舱到了。 | 搜索解读(配 echo_debris+pipe_knock) |
| `bai_a` | 老白 | 哈哈,救援的?我这腿,跟冷却管缠上了。 | 通话主干 |
| `bai_b` | 老白 | 艇上的药板烧了。病舱那两个,比我悬。 | 通话主干(埋 D3 险) |
| `p3` | 调度 | 钢梁压着腿。向左滑,泄压后慢慢撬。向右滑,切割枪,快切。 | 抉择提示 |
| `d2_pry` | 潜航员 | 老白,忍住。先泄压,再撬。 | p3 左 |
| `d2_pry_ok` | 调度 | 暗号没白听。管子一松,钢梁抬起来了。 | p3 左·收(**条件 knowsPipe=true,-0 气**) |
| `d2_pry_slow` | 调度 | 摸着找泄压阀,多费了一格气。腿,出来了。 | p3 左·收(条件 knowsPipe=false,-1 气) |
| `d2_cut` | 潜航员 | 切割枪。老白,闭眼,憋气。 | p3 右 |
| `d2_flash` | 调度 | 火花炸了一下,虚惊。老白咳着,腿抽出来了。 | p3 右·收(**危机拍:danger 签名+spark_flash 前置 2s**) |
| `bai_out` | 老白 | 腿还在!我的腿还在!走,我给你带路。 | 两路汇合(正反馈) |
| `p4` | 调度 | 老白要去关电池舱阀门。向左滑,陪他去。向右滑,直接上浮。 | 抉择提示 |
| `d2_valve` | 潜航员 | 电池舱我陪你去。这片海不能脏。 | p4 左(valve=true,-2 气;配 valve_close) |
| `d2_valve_e` | 调度 | 阀门关死了。两格气,换一片干净海。 | p4 左·收(账目真实:明说两格) |
| `bai_thanks` | 老白 | 这片海养着一村人。这份情,我记一辈子。 | p4 左·反应 |
| `d2_leave` | 潜航员 | 阀门交给母船。你先上,腿要紧。 | p4 右 |
| `d2_surf` | 调度 | 老白出水。他一直扒着舱门,往水里看。 | 上浮结算 |
| `d2_supply` | 调度 | 潜友阿凯捎来应急瓶。甲板上,粥给你温着。 | 补给剧情(随后 oxy_gain +3,全局唯一) |
## D3 组 · 第三潜·病舱·陈医官/小郑(双性别 12 + 陈医官平铺 4 = 16)
> 小郑为无台词角色(重伤固定于吊床,radio 老主播「带子里只有电流声」先例);其状态由调度句 d3_chen_e/d3_stay_lost 承载。
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `dv3_down` | 调度 | 第三潜,病舱。海燕号在倾斜,别恋战。 | 下潜链 |
| `dv3_groan` | 调度 | 回波发闷。船体在呻吟,它撑不久了。 | 搜索解读(**配 echo_groan,D4 险预告**) |
| `chen_a` | 陈医官 | 你来了。小郑股骨断了,我给他固定好了。 | 通话主干 |
| `chen_b` | 陈医官 | 救援钟一次带一个。我是医生,我最后走。 | 通话主干(抉择铺垫) |
| `p5` | 调度 | 病舱一次只能走一个。向左滑,先带陈医官。向右滑,先带小郑。 | 抉择提示(无气差的双义抉择) |
| `d3_chen` | 潜航员 | 陈医官,你的手在抖。这次,听我的。 | p5 左(陈医官上,stayer=zheng) |
| `chen_up` | 陈医官 | ……好。小郑,等我,上面给你热粥。 | p5 左·反应 |
| `d3_chen_e` | 调度 | 陈医官出水。小郑固定在吊床上,呼吸平稳。 | p5 左·收 |
| `d3_zheng` | 潜航员 | 小郑先走。陈医官,下一潜,就是你的。 | p5 右(小郑上,stayer=chen) |
| `d3_zheng_e` | 调度 | 小郑吊上去了。他一路,都没敢出声。 | p5 右·收 |
| `chen_stay` | 陈医官 | 去吧。我守着灯,灯不灭,人就不散。 | p5 右·留守宣言 |
| `p6` | 调度 | 留守的人要空气。向左滑,留下你的备用瓶。向右滑,约定下一潜来接。 | 抉择提示 |
| `d3_spare` | 潜航员 | 备用瓶留下。灯,给我亮着。 | p6 左(spareGift=true,-2 气,可触发干涸链) |
| `d3_spare_e` | 调度 | 备用瓶挂上了,能多撑十二小时。 | p6 左·收(账目:时间量而非气格) |
| `d3_promise` | 潜航员 | 四小时内,我下来。等我。 | p6 右 |
| `d3_surf` | 调度 | 病舱的人出水。海燕号的呻吟,隔着水都听得见。 | 上浮结算(随后走氧气门) |
## D4 组 · 第四潜·指挥舱·高船长(高潮)(双性别 18 + 高船长 7 + 陈医官 1 = 26)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `dv4_none` | 调度 | 气不够一潜了。第四潜,取消。 | **氧气门·取消形态**(oxy≤2;800ms 手势死窗) |
| `gao_final` | 高船长 | 别下来。带他们回家,就算救完了。海燕号,通话结束。 | 取消链·船长的最后通讯(随后直达 ◆p9) |
| `dv4_down` | 调度 | 最后一潜,指挥舱。海燕号,撑不住了。 | 下潜链(双载/单载共用) |
| `dv4_dual` | 调度 | 两个人下同一潜。这趟往返,扣四格气。 | 下潜链·**仅双载形态**追加(R2-F4:D4 双载 3+1 扣账口播,不再无声扣款) |
| `dv4_slide` | 调度 | 它滑了!抓稳索缆,指挥舱里还有人! | 搜索危机拍(**danger 签名+landslide 前置 2s 渐强+danger 震**) |
| `gao_a` | 高船长 | 救援员。我船上,还剩两个活人。 | 通话主干 |
| `gao_b` | 高船长 | 都带走,我最后上。这是船长的规矩。 | 通话主干 |
| `p7` | 调度 | 双人上浮。向左滑,逐站减压慢慢浮。向右滑,违规直浮,搏一把。 | 抉择提示(**双载形态**:oxy≥4) |
| `p7_chen` | 调度 | 气只够带一个。向左滑,带船长。向右滑,带陈医官。 | 抉择提示(**单载形态·留守=陈医官**:oxy=3) |
| `p7_zheng` | 调度 | 气只够带一个。向左滑,带船长。向右滑,带小郑。 | 抉择提示(单载形态·留守=小郑) |
| `d4_slow` | 潜航员 | 逐站停,慢慢浮。规矩不能破。 | p7 左·双载(-2 气) |
| `d4_slow_e` | 调度 | 减压站一个个过。气瓶在跳,人稳着。 | p7 左·双载·收 |
| `d4_fast` | 潜航员 | 来不及了。直浮! | p7 右·双载 |
| `d4_fast_e` | 调度 | 违规快浮。医疗舱的灯,先给你们开好。 | p7 右·双载·收(回响伏笔) |
| `d4_pick_gao` | 潜航员 | 船长,抓住我。海燕号的事,上面再说。 | p7 左·单载(带船长) |
| `d4_pick_chen` | 潜航员 | 陈医官,轮到你了。抓住,上浮。 | p7 右·单载·留守=陈医官 |
| `d4_pick_zheng` | 潜航员 | 小郑,吊床连人一起。走了。 | p7 右·单载·留守=小郑 |
| `chen_last` | 陈医官 | 去吧。灯我留着,人齐了就熄。 | 单载·带走船长时留守者=陈医官的留别 |
| `d4_stay_lost` | 调度 | 另一位,留在了倾斜的船舱。航标灯,替所有人亮着。 | 单载·带走船长时留守者=小郑的留别(克制措辞) |
| `gao_last` | 高船长 | 航标灯替我留着。就说,船长睡了。 | 单载·带走留守者时船长的留别(p8 跳过,直达上浮) |
| `gao_c` | 高船长 | 三年前……没什么。走吧,别耽误。 | 心结引入(**条件 hasLog=false**) |
| `gao_confess` | 高船长 | 日志你拿了?里面写着。是我下令,多采了一小时。 | 心结引入(**条件 hasLog=true**,替代 gao_c) |
| `p8` | 调度 | 船长的话没说完。向左滑,把你听到的说出来。向右滑,什么都不问,拉他上浮。 | 抉择提示(船长在乘时可 达,30 字全表最长句) |
| `d4_talk` | 潜航员 | 日志我听完了。海燕号为什么沉,我会带上去。走吧。 | p8 左(gaoPeace=true) |
| `gao_peace` | 高船长 | ……好。这一次,听救援员的。 | p8 左·反应 |
| `d4_silent` | 潜航员 | 纪律就是纪律。抓住,上浮。 | p8 右 |
| `d4_surf` | 调度 | 最后一潜收工。问海号的甲板,从没这么亮过。 | 上浮结算 |
## F9 组 · 签收抉择(心结)(双性别 ×7)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `g9_in` | 调度 | 医疗舱躺满了。你的气瓶剩多少,你比我清楚。 | 收队签收引入(SURFACE(4)/取消链之后) |
| `g9_knot` | 潜航员 | 三年前,也是这条沟。我按时上浮了,搭档没有。 | 心结自述(玩家背景) |
| `p9` | 调度 | 海燕号的船钟,还挂在沉船上。向左滑,用最后的气,下去取。向右滑,进医疗舱。 | 抉择提示(左路需 oxy≥1) |
| `g9_dry` | 调度 | 一格气都不剩了。能带的,你都带回来了。 | **p9 左路封锁句**(oxy<1:播出后自动走右,不摆假选项) |
| `d9_bell` | 潜航员 | 最后一潜。不为救人,为个交代。 | p9 左(bell=true;配 bell_toll 后接 d9_bello) |
| `d9_bello` | 调度 | 船钟出水。海燕号的声音,回家了。 | p9 左·收 |
| `d9_rest` | 潜航员 | 交代,留给明天的人。我去医疗舱。 | p9 右 |
## EP 组 · 结局与尾声回响(双性别 22;结局 8 + 回响 14)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `e1_a` | 潜航员 | 五个人都在甲板上。船钟的第一声,是替这条沟敲的。 | 结局 e1(saved=5 且 p9=左)主句 |
| `e1_b` | 潜航员 | 三年了,我终于敢往下看。明天,想再潜一次。 | e1 收(钩子) |
| `e2_a` | 潜航员 | 五个人都救上来了。船钟,留在了沟底。 | 结局 e2(saved=5 且 p9=右)主句 |
| `e2_b` | 潜航员 | 没人怪我。可半夜醒来,总听见钟在响。 | e2 收(钩子) |
| `e3_a` | 潜航员 | 没能都带回来。可我到底下去了,敲响了那口钟。 | 结局 e3(saved<5 且 p9=左)主句 |
| `e3_b` | 潜航员 | 钟声替他们,在沟底响了一声。这样,也好。 | e3 收(钩子) |
| `e4_a` | 潜航员 | 我按规矩上浮了。规矩里,没写怎么难过。 | 结局 e4(saved<5 且 p9=右)主句 |
| `e4_b` | 潜航员 | 沟底很安静。安静得,像三年前那天。 | e4 收(钩子;心结回环) |
| `ep_lead` | 调度 | 收队了。调度台给你记一笔——他们,后来怎样了。 | 结局链后尾声引入 |
| `ep_zhou_ok` | 调度 | 小舟:归队报告打了三页。她说,声音都记得。 | 尾声(bond_zhou=1:p1 左或 p2 左) |
| `ep_zhou_no` | 调度 | 小舟:声呐日志没了。她凭记忆,重新描了一遍海图。 | 尾声(bond_zhou=0) |
| `ep_bai_ok` | 调度 | 老白:腿保住了。阀门那夜之后,见人就夸你。 | 尾声(bond_bai=1:p3 左或 p4 左) |
| `ep_bai_no` | 调度 | 老白:腿打了钢钉。他说,瘸着也值。 | 尾声(bond_bai=0) |
| `ep_chen_ok` | 调度 | 陈医官:回了医院。诊室里,挂着一盏海底的灯。 | 尾声(陈医官生还) |
| `ep_chen_lost` | 调度 | 陈医官:她守着灯,到最后一小时。灯,还亮着。 | 尾声(陈医官留守未归) |
| `ep_zheng_ok` | 调度 | 小郑:拆了石膏,第一件事,去看海。 | 尾声(小郑生还) |
| `ep_zheng_lost` | 调度 | 小郑:吊床随船,滑进了沟底。他没来得及看日出。 | 尾声(小郑留守未归) |
| `ep_gao_peace` | 调度 | 高船长:退役申请自己写的。第一行写着:数据不如人。 | 尾声(船长生还且 p8 左) |
| `ep_gao_up` | 调度 | 高船长:上了岸,一直没说话。听说,他在学敲管语。 | 尾声(船长生还且 p8 右) |
| `ep_gao_lost` | 调度 | 高船长:随海燕号留在沟底。航标灯,还亮着。 | 尾声(船长未归) |
| `ep_trench_bell` | 调度 | 沟底:船钟挂在问海号桅杆上。风一过,就响一声。 | 尾声(bell=true) |
| `ep_trench_deep` | 调度 | 沟底:很深,很静。海燕号睡在里面,像睡着了。 | 尾声(bell=false) |
---
**合计:155 句**(GPU 预算 ≤170 ✓;R2 修订后)
- 双性别 134 句(DIVER 潜航员 30 + DECK 调度/系统 104,含 `_k` 键盘变体 11)×2 性别 = 268 文件;
- NPC 平铺 21 句(小舟 5 / 老白 4 / 陈医官 5 / 高船长 7)= 21 文件;
- 合计 289 条音频 ×2 格式(ogg+m4a)= **578 文件**。
- 键盘变体 11 对:gd_brief / gd_continue / gd_again / gd_ping1 / gd_ping2 / sys_help / sys_menu / sys_skip / sys_continue_ask / dv1_teach / p1(成对生成,`check_all_assets` 校验 `_k` 配对与双性别集合一致)。
- 每结局专属台词齐备:e1/e2/e3/e4 各 2 句 + 尾声回响 14 句(好感/存活/flag 选播)。
- 每局实走抉择 7-9 个(p7 单载右路跳过 p8;D4 取消路径跳过 p7/p8),抉择提示 p1..p9 共 9 个。
## 多音字 / 发音风险自查注记
| 风险词 | 处理 |
|---|---|
| 重听 | 全表写「重新听」(sys_help / sys_help_k),无「重听」字样;「重写」规避为「日志可以补」(d1_nolog) |
| 壳(ké/qiào) | 全表不用「壳」,写「钢板 / 船身」(dv1_metal) |
| 脏(zāng/zàng) | 「这片海不能脏」(d2_valve)为 zāng 正确常用读法,保留,试听确认 |
| 闷(mēn/mèn) | 「回波发闷」(dv3_groan)为 mèn 常用读法,保留,试听确认 |
| 颤(chàn/zhàn) | 台词侧用「发抖」(d3_chen);instruct 描述不进语音,不受影响 |
| 塞 / 巷 / 挣 / 血 / 露 / 降(jiàng 外义)/ 率 / 传(zhuàn 义) | 全表未使用(「撑住」「股骨断了」替代;下潜 qián 恒用) |
| 教(jiāo/jiào) | 未使用;「船长」zhǎng、「数据」shùjù、「调度」diàodù 为固定词 |
| 了 / 还 / 得 | 常规句式常见读法,逐句人工试听项(d3_zheng_e「都没敢出声」、d1_surf「扣三格气」等) |
| 数字 | 句内数字全部写死(三千米 / 三格 / 四潜 / 两格 / 十二小时 / 四小时 / 一小时 / 三页 / 一盏),序号与档位用分档整句(prog_d1..d4、oxy_*) |
## 台词侧自查
- 单句 ≤40 字:全表最长 = p8 与 p9(各 30 字),次长 sys_help_k(28 字)、p6(27 字)✓;NPC 句平均 ≤20 字(P4 语速感靠短句+逗号,不用 instruct 语速词)✓。
- 船员 ≤4 人、speaker+instruct 恒定、区分度风险逐个标注 ✓(小舟 Serena / 老白 Uncle_Fu / 陈医官 Vivian / 高船长 Eric)。
- 称呼合规:船员对玩家只用「救援员 / 你」,性别化称呼零出现 ✓。
- 每个结局(e1..e4)专属主句+钩子各 2 句齐备,尾声救/未救双线齐备 ✓。
- 归因真话律:负向收尾句(dry_b / gao_final / chen_last / d4_stay_lost / gao_last / ep_*_lost / e4_b)全部指向玩家实际选择或真实处境,无「运气不好」类假归因、无惩罚性措辞 ✓。
- 向导 gd_* 13 句(gd_brief/gd_continue/gd_again/gd_ping1/gd_ping2 各带 _k 变体,gd_invalid/gd_prog1/gd_prog2 无变体)符合 14 号 §6 台词规范(一句一义、无重复句式、单句 ≤18 字)✓。
- 氧气档位句与数值一一对应(oxy_full≥9 / ok=6-8 / low=3-5 / crit=0-2,均按 floor(oxy/3) 可下潜次数措辞),账目真实 ✓。
## R2 修订记录(2026-09-13,依据 research/new8/abyss/round1/synthesis.md)
| # | 改动 | 依据 |
|---|---|---|
| R2-F4 | 新增 `dv4_dual`(双性别,仅双载形态下潜链追加):D4 双载起播 3+1=4 格扣账口播化 | R1 P1 心算账对不上耳朵(无声扣款) |
| R2-F5 | 新增 `oxy_crit_deck` 水面变体;`oxy_crit` 限水下场景 | R1 crit「必须上浮」在甲板播出=错场景措辞(档位表原注「水面=一潜都下不去」义落地) |
| R2-F6 | `sys_skip`/`sys_skip_k` 改词:「听过的句子再播时,单击/按空格就能跳过」——与 G5 复播可即掐(首播保护)机制对齐 | R1 live P1-2:旧词「想跳过这句,单击就行」在 F5 首播保护下名存实亡 |
| R2-F10 | 新增 `prog_saved1..5`(双性别):上滑状态链 G6 顺序改为 潜次→已救人数→氧档→帮助;saved=0 不播 | R1 P3:被打断后要捡回「船上躺着谁」 |
以上四组为新增/改词;其余裁定(148 句中未改词的 146 句原文、触发条件、滤波参数)不变。