Files
SoundGame/docs/design/21-keeper-voice-ids.md
T
xsl cd4c5ec65a docs(new8): 批次 4 策划落地(21-keeper/22-bridge)——8 款设计文档全部齐备
- keeper:时空双线(风暴/老唱片签名+锚句)、回忆插叙固定时序、trust×truth 双标量、148 句
- bridge:四象限系统状态音(2.0s±50ms 逐毫秒可断言)、告警仲裁 R1-R8+双危机 7 场景穷举、危机事件卡、忠诚账本、154 句
- 13 号文档 §23 六款断言指针;README new8 索引补齐;章程进度账 8 款设计 ☑(批次 2 资产/开发 ▶ 进行中)
2026-09-10 01:02:49 +08:00

251 lines
28 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.
# 21b · 《守塔人》(keeper) 语音台词表(voice ids,录音依据)
> **给音频总监的录制说明**
> - **双性别组**(守塔人 KEEPER + 岸台/系统 SHORE,121 句):落 `web/keeper/audio/voice/female|male/<id>.{ogg,m4a}`,两性别 id 集合完全一致(含全部 `_k` 变体)。
> - **KEEPER(守塔人=玩家)**:female = `Serena`,instruct 常量 `沉静克制的年轻女声,孤岛守塔人,低而稳,藏着心事`;male = `Uncle_Fu`,instruct 常量 `沉静克制的男声,孤岛守塔人,低而稳,藏着心事`。
> - **SHORE(岸台值班员/系统音/向导 gd_*)**:female = `Vivian`,instruct 常量 `清晰平稳的女声,海岸电台值班员,隔着无线电的温和干练`;male = `Dylan`,instruct 常量 `清晰平稳的男声,海岸电台值班员,隔着无线电的温和干练`。
> - 区分度设计:守塔人(塔内近讲,不滤波)与岸台(无线电清晰人声,不滤波)共用 speaker 池但**不同 speaker 配对**——female 侧守塔人 Serena / 岸台 Vivian、male 侧守塔人 Uncle_Fu / 岸台 Dylan,同场景高频对话的两者永不同 speaker。
> - **NPC 平铺组**(27 句):单音色、**不做双性别**,平铺落 `web/keeper/audio/voice/<id>.{ogg,m4a}`(引擎平铺回退命中),转码时按 §滤波表 加带通。NPC 共 3 人(≤5 约束),同一角色 speaker+instruct 恒定,区分度风险逐个标注:
> | 角色 | speaker | instruct 常量 | 滤波 | 区分度风险 |
> |---|---|---|---|---|
> | 阿澈(22 岁渔民,现在线·电台) | `Dylan` | `年轻男声,二十二岁渔民,海风养出的嗓子,风暴里喊话,慌而不乱` | 电台 350-3200Hz | **中**:与 male 岸台同 speaker——靠电台滤波(岸台不滤波)+ 年龄感 instruct 区分,二者相邻句出现(c1_holdo→c1_holde),请试听确认 |
> | 父亲(回忆·十二年前) | `Uncle_Fu` | `温和低沉的男声,四十岁守塔人,隔着老唱片,疲惫而坚定` | 唱片 300-2800Hz | **中**:与 male 守塔人同 speaker——插叙内锚句(不滤波)与父亲(唱片滤波)相邻,靠音质差+年代感 instruct 区分,请试听确认 |
> | 祖父(回忆·四十年前) | `Eric` | `苍老缓慢的男声,七十岁老守塔人,隔着更老的唱片,字字压秤` | 唱片 250-2600Hz | **低**:三代人里唯一 Eric,频带最窄最「远」 |
> - **三代人音色分配总账**:你(玩家,双性别随 settings.voice)+ 父亲(Uncle_Fu,仅插叙)+ 祖父(Eric,仅插叙)+ 阿澈(Dylan,仅现在线电台)。**任何时刻同场景说话的人声 ≤3 种质感**(近讲/电台/唱片),音质即身份。
> - **时空音质规则(本作命门)**:现在线=近讲(KEEPER/SHORE 不滤波)+电台(阿澈滤波);回忆线=唱片滤波(父/祖父)+**锚句恒为守塔人不滤波**(「现在的你」在回忆里旁白——干净人声 vs 唱片人声,强化时空感);唱片噪底由 `sfx/amb_vinyl` 常驻承担,人声滤波只做带通+轻压缩(`acompressor threshold=-20dB ratio=3`),不做失真(宁窄勿脏)。试听不可读的句子回退未滤波原声。
> - **称呼规则**:阿澈对玩家一律称「塔 / 守塔人」,**全表禁用**「姑娘/小哥/大哥/大姐/叔叔」类性别化称呼(玩家性别随用户设置变化);父亲在插叙中只对塔台/家人说话,无性别指向称谓。
> - **键盘变体(PC 键盘通道,P1 机制)**:带 `_k` 后缀的 id 为键盘措辞版(「按空格」「回车」「左右方向键/上箭头/下箭头」),与触屏版**成对生成、成对落盘**(`check_all_assets` 校验 `_k` 配对);运行时由 `gesture.inputMode()` 选择:`key` → `<id>_k`,`touch` → `<id>`,`auto` 跟随最近使用通道,`_k` 缺失回退无后缀版。变体共 **8 对**(7 对在下方 §G0.a 操作提示句区 + 首个抉择 p1),以粗体标注。
> - **数字规避**:幕次/信任/真相全部分档整句(prog_m1..3、tr_*、tru_*);句内数字(四十年前/十二年前/第七级台阶/十级/两百米/一刻钟/半个时辰/七个人/两艘/第三级/三遍/半里/三个浪头/三刻)写死在整句里,禁止运行时拼接。
> - **禁语速词**:instruct 不含任何语速描述(引擎 SoundTouch 变速);NPC 句靠短句+逗号停顿实现「风暴里喊/老唱片里缓」听感。
> - 管线:`tools/gen_voice_dual.py` 照录(SPEAKERS 表需新增 keeper 行);多音字自查见文末注记。
## G0 组 · 系统/向导/状态(SHORE 双性别 ×34)
### G0.a 操作提示句(含键盘变体,7 对 14 句——键盘玩家听这一区就够)
| 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) |
| `sys_help` | 单击继续,双击重新听。上滑听状态,下滑开菜单。选择时,左右滑。 | 上滑帮助 / 菜单内上滑 |
| **`sys_help_k`** | 空格继续,回车重新听。上箭头听状态,下箭头开菜单。选择时,左右箭头。 | 同上(key) |
| `sys_menu` | 菜单。单击切换选项,双击确认。 | 下滑呼出模态菜单 |
| **`sys_menu_k`** | 菜单。空格切换选项,回车确认。 | 同上(key) |
| `sys_skip` | 想跳过这句,单击就行。 | 开场每局一次(skip_hint 先例) |
| **`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_night` | 新的风暴夜,开始了。 | 新夜开始 / 菜单重开 |
| `prog_m1` | 风暴起来了。今晚第一程。 | 上滑状态链首段·时位句(now,按当前幕选播) |
| `prog_m2` | 风暴到顶。第二程。 | 同上 |
| `prog_m3` | 风在退。最后一程。 | 同上 |
| `prog_mem_g` | 这是回忆:祖父的年代,四十年前。 | 上滑状态链首段·时位句(memory=插叙1/3 期间) |
| `prog_mem_f` | 这是回忆:父亲的最后一晚,十二年前。 | 上滑状态链首段·时位句(memory=插叙2 期间)+ 恢复链时位句先行 |
| `tr_deep` | 他把命,交给了你的声音。 | 信任 3-4(跨档时挂 CALM 链尾;上滑状态链) |
| `tr_half` | 他信一半,疑一半。 | 信任 1-2 |
| `tr_thin` | 今晚,他只信自己的手。 | 信任 0(各播报位附 warning 震) |
| `tru_zero` | 旧账压在灯底,你一页没翻。 | 真相度 0(上滑状态链,逐值为真) |
| `tru_one` | 灯下的旧账,你翻开了一角。 | 真相度 1(仅插叙1) |
| `tru_two` | 祖父和父亲的事,你都翻到了。 | 真相度 2(插叙1+2,缺页未读) |
| `tru_full` | 三代人的账,今夜见底了。 | 真相度 3(插叙1+2+3) |
## G1 组 · 开场(双性别 ×4)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `b_open` | 守塔人 | 白角灯塔,风暴夜。我是今晚的守塔人。 | INTRO(配 sfx/amb_storm+amb_room) |
| `b_rain` | 守塔人 | 浪拍到第七级台阶。雾角两长一短——塔在,我也在。 | INTRO(**教「雾角=塔报平安」,配 sfx/foghorn**) |
| `b_rule` | 岸台 | 岸台的规矩就一条:风暴夜,灯不能灭。 | INTRO(一句规矩,P4;与灯三态兑现一致) |
| `b_goal` | 岸台 | 今夜两艘货轮过境。守住灯,也守住频道。 | INTRO(货轮/频道双目标承诺),随后 C1 |
## C1 组 · 幕一·风暴起(双性别 16〔含 p1_k〕+ 阿澈平铺 5 + 祖父平铺 2 = 23)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `c1_tune` | 岸台 | 频道里有动静。很轻,像隔着整片海。 | C1 起始(配 sfx/radio_tune) |
| `amo_a` | 阿澈 | ……有人吗……顺发号……船进水了…… | 呼救渐近(垫 sfx/static_burst+amb_engine) |
| `amo_b` | 阿澈 | 白角塔!是你吗?求你,回个话! | 通话主干(配 sfx/radio_beep 接通) |
| `p1` | 岸台 | 他的声音在抖。向左滑,先接住这个人。向右滑,先要他的船位。 | 抉择提示(播完即可选) |
| **`p1_k`** | 岸台 | 他的声音在抖。左箭头,先接住这个人。右箭头,先要他的船位。 | 同上(key;首个抉择的键位绑定) |
| `c1_hold` | 守塔人 | 别慌。我在白角,哪儿也不去。慢慢说。 | p1 左 |
| `c1_holdo` | 阿澈 | ……好,好。你在。我听见了。 | p1 左·反应(正反馈:声音稳住) |
| `c1_holde` | 岸台 | 他喘匀了。先接人,再办事。 | p1 左·收(trust+1) |
| `c1_ask` | 守塔人 | 顺发号,报你的方位,报进水的速度。 | p1 右 |
| `c1_asko` | 阿澈 | 方位……仪表进水了,我,我看不清…… | p1 右·反应(慌) |
| `c1_aske` | 岸台 | 他更慌了。人没接住,数字也乱。 | p1 右·收(即时纠偏,非惩罚,不扣分) |
| `amo_c` | 阿澈 | 我爷爷,四十年前也是在这片海没的。他说,白角的灯灭过一下。 | 通话主干(**回澜号伏笔,p9 回环**) |
| `p2` | 岸台 | 他提到四十年前。向左滑,去翻灯座下的暗格。向右滑,先专心守灯。 | 抉择提示 |
| `c1_open` | 守塔人 | 父亲的钥匙,就在抽屉里。灯座第三级,开了。 | p2 左(配 sfx/hatch_open;随后 rev_teach+插叙1) |
| `rev_teach` | 守塔人 | 听到唱针落下、风声退后,是回忆。风声回来,就是现在。 | **时空签名教学句**(首插叙前,全局一次) |
| `rev_g1` | 守塔人 | 唱针落下。四十年前,也是这盏灯下。 | 插叙1·锚入(**配 sfx/memory_in + bgm/memory + amb_vinyl**;首播不可跳) |
| `rev_g2` | 祖父 | 手稳住。灯罩擦到第三遍,才算干净。 | 插叙1(少年父亲为无台词角色——沉默擦灯声由底噪承载) |
| `rev_g3` | 祖父 | 记住,灯下压着的东西,比灯重。守塔人,替它守一辈子。 | 插叙1(层1 秘密:灯下有东西) |
| `rev_g4` | 守塔人 | 风声回来了。爷爷,我听见了。 | 插叙1·锚出(**配 sfx/memory_out + bgm/storm 回切**;首播不可跳) |
| `c1_diary` | 守塔人 | 暗格里是祖父的日志。缺了最后一页。 | 回返后 now 句(truth+1;缺页悬念) |
| `c1_focus` | 守塔人 | 先守住这盏灯。旧账,天亮再算。 | p2 右 |
| `c1_focuse` | 岸台 | 灯转得稳。可那句「灭过一下」,留在了你耳朵里。 | p2 右·收(错过的重量,不扣分) |
| `lull_1` | 岸台 | 岸台通报:风加到十级。第一程,过去了。 | CALM(1) 幕间(配 sfx/foghorn;跨档 tr_* 挂链尾) |
## C2 组 · 幕二·风暴顶(双性别 16 + 阿澈平铺 8 + 父亲平铺 3 = 27)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `c2_back` | 岸台 | 频道又响了。顺发号的引擎,时断时续。 | C2 起始(信号重连,配 sfx/radio_tune+static_burst) |
| `amo_d` | 阿澈 | 塔……听得到吗?水,到膝盖了。 | 通话主干(垫 amb_engine) |
| `p3` | 岸台 | 他快撑不住了。向左滑,用守塔人的口诀带他稳船。向右滑,把船位报给岸台。 | 抉择提示 |
| `c2_song` | 守塔人 | 跟我念:浪头过,船头抬。浪头退,船头落。 | p3 左(家传口诀;随后插叙2) |
| `c2_songo` | 阿澈 | 浪头过,船头抬……真的稳了些!这口诀,谁教你的? | p3 左·反应(trust 铺垫;问父) |
| `rev_f1` | 守塔人 | 唱针又落下了。十二年前,也是这样的风。 | 插叙2·锚入(memory_in+bgm/memory;首播不可跳) |
| `rev_f2` | 父亲 | 白角塔,我是老陈。接驳艇上两个人,都活着。 | 插叙2(父亲最后一次值守·电台腔) |
| `rev_f3` | 父亲 | 守塔人听见了求救,就不能装没听见。等我回来。 | 插叙2(家训,与家规相抵的主题句) |
| `rev_f4` | 父亲 | 塔上的机械上满发条,能自己转一夜。给我留着门。 | 插叙2(**发条知识=rev_teach 型承诺,p7 差分兑现**) |
| `rev_f5` | 守塔人 | 风声回来了。那扇门,留到今天。 | 插叙2·锚出(memory_out+storm 回切;首播不可跳) |
| `c2_key` | 守塔人 | 父亲桌上那支手电,尾盖里卷着一页纸。 | 插叙2 后 now 句(truth+1;缺页线索,p6 钥匙) |
| `c2_shore` | 守塔人 | 岸台,记下他的船位。请渔政天亮前到。 | p3 右 |
| `c2_shoreo` | 岸台 | 船位落在图上了。渔政的船,最快也要天亮。 | p3 右·收(留白:那一夜要他自己撑) |
| `amo_e` | 阿澈 | 守塔人……塔里就你一个人?家里人不拦着你干这行? | 通话主干(问父铺垫) |
| `p4` | 岸台 | 他问起你的人。向左滑,告诉他真话。向右滑,轻轻带过。 | 抉择提示 |
| `c4_true` | 守塔人 | 我父亲也是守塔人。十二年前风暴夜,他出海救人,没有回来。 | p4 左(〔插叙2 未触发 ? 先播插叙2+c2_key : 直进〕) |
| `c4_trueo` | 阿澈 | ……对不起。难怪今晚,你一直都在。 | p4 左·反应(trust+1) |
| `c4_pass` | 守塔人 | 家里人?都在大陆。这行当,习惯了。 | p4 右 |
| `c4_passo` | 阿澈 | 哦……你也是一个人守夜。我们俩,隔着一道海。 | p4 右·反应 |
| `c2_crack` | 岸台 | 听!他那边,船板裂了! | **危机拍1**(sfx/hull_crack 前置 2s 渐强+danger 签名/震同窗) |
| `amo_f` | 阿澈 | 裂了!水进得更快了。塔,告诉我怎么办! | 危机后通话主干 |
| `p5` | 岸台 | 船在漏。向左滑,让他回舱堵漏,守住电台。向右滑,让他穿救生衣,上甲板。 | 抉择提示(双活路) |
| `c5_patch` | 守塔人 | 拿堵漏垫顶住裂缝。人守在电台边,我一直在。 | p5 左 |
| `c5_patcho` | 阿澈 | 顶住了!水慢下来了。我不走,守着电台。 | p5 左·反应(trust+1) |
| `c5_suit` | 守塔人 | 穿上救生衣,带上信号灯,站到甲板上去。 | p5 右 |
| `c5_suito` | 阿澈 | 穿好了。要是船散了,我就抱着它漂。 | p5 右·反应 |
| `lull_2` | 岸台 | 风眼凌晨过境。第二程,到顶了。 | CALM(2) 幕间(配 sfx/foghorn;跨档 tr_* 挂链尾) |
## C3 组 · 幕三·风歇前(双性别 23 + 祖父平铺 3 + 阿澈平铺 4 = 30)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `c3_eye` | 岸台 | 风眼过了。最后的浪墙,就跟在后面。 | C3 起始(amb_storm gain 降至 0.7 档) |
| `c3_page` | 守塔人 | 手电的尾盖旋开了。那页纸,在灯下摊平。 | **条件 rev2=true**(配 sfx/flash_click;随后 p6) |
| `m6_seal` | 岸台 | 那些旧东西,你今晚没碰过。缺页的事,你一无所知。 | **p6 封锁句**(rev2=false:播出后自动走右,不摆假选项) |
| `p6` | 岸台 | 祖父的最后一页。向左滑,今晚就读完它。向右滑,合上,塞回灯底。 | 抉择提示(仅 rev2=true 时播) |
| `rev_c1` | 守塔人 | 唱针落下。缺的那一页,自己开了口。 | 插叙3·锚入(memory_in;首播不可跳) |
| `rev_c2` | 祖父 | 我写下这些,等一个敢看的人。那晚,我的儿子,偷了接驳艇。 | 插叙3(层3 秘密·上) |
| `rev_c3` | 祖父 | 我去追他。灯,离了人。半个时辰,回澜号,七个人。 | 插叙3(层3 秘密·中:**祖父之夜真相**) |
| `rev_c4` | 祖父 | 儿子回来了。这页我撕下来,压进灯底。守塔人,不能离灯。 | 插叙3(层3 秘密·下:家规由来) |
| `rev_c5` | 守塔人 | 风声回来了。原来那道家规,是这么来的。 | 插叙3·锚出(memory_out;首播不可跳) |
| `c6_reade` | 岸台 | 四十年,两代人,一条规矩。今晚,轮到你选了。 | p6 左·收(truth+1,随后 p7) |
| `c6_shut` | 守塔人 | 合上。守塔人的事,守塔人自己扛。 | p6 右 |
| `p7` | 岸台 | 浪墙压过来了。向左滑,给灯上满发条,驾接驳艇去接他。向右滑,守着灯,用声音引他过礁。 | 抉择提示(**核心宿命抉择**;35 字全表最长) |
| `c7_go` | 守塔人 | 机械上满发条,灯能自己转到天亮。等着我。 | p7 左·**rev2=true**(配 sfx/lamp_mech;发条知识兑现) |
| `c7_go2` | 守塔人 | 发条……我只上了半卷。快去,快回。 | p7 左·**rev2=false**(无插叙2 知识,灯灭伏笔) |
| `c7_hold` | 守塔人 | 顺发号,听我的。灯照着的那条道,跟我念,一步一步来。 | p7 右(守灯引渡) |
| `c3_wall` | 岸台 | 浪墙起来了!就是现在! | **危机拍2**(sfx/wave_wall 前置 2s 渐强+danger 签名/震同窗;p7 两路共用) |
| `p8_boat` | 岸台 | 海上没有灯。向左滑,循着他哼的渔歌找他。向右滑,按推算的坐标,直线搜。 | 抉择提示(**p7=左 形态**) |
| `p8_reef` | 岸台 | 礁缝两道口。向左滑,走老航道,稳但绕远。向右滑,钻新缝,近但冒险。 | 抉择提示(**p7=右 形态**) |
| `c8_song` | 守塔人 | 他爷爷传下的渔歌……在哪?再唱一遍! | p8_boat 左 |
| `c8_songo` | 阿澈 | 海风那个吹呀——塔!是你吗?我在这儿! | p8_boat 左·反应(循歌找到) |
| `c8_math` | 守塔人 | 坐标向东两百米。灯光扫过去,看见救生衣了! | p8_boat 右 |
| `c8_matho` | 阿澈 | 塔!你的灯扫到我啦!我在这边! | p8_boat 右·反应 |
| `c8_old` | 守塔人 | 走老航道。多绕半里,绕开所有的暗礁。 | p8_reef 左 |
| `c8_oldo` | 阿澈 | 老航道……我爷爷念叨过这条道!稳了! | p8_reef 左·反应 |
| `c8_new` | 守塔人 | 数三个浪头,借着风的角度,钻新缝! | p8_reef 右 |
| `c8_newo` | 阿澈 | 一个,两个,三——过去了!塔,我过来了! | p8_reef 右·反应 |
| `c9_return` | 岸台 | 接驳艇回来了。两个人,一身水,一盏灯。 | p7 左·汇合 |
| `c3_dark` | 岸台 | 你离塔的时候,发条走到了头。灯,灭过一刻钟。过境的货轮,平安。 | **p7 左 + rev2=false** 插播(复刻祖父之夜;归因真话;800ms 死窗) |
| `c9_land` | 岸台 | 顺发号过了礁缝,搁上背风湾的滩。人,站上了岸。 | p7 右 + trust≥3(自渡成功) |
| `c9_found` | 岸台 | 他在半路改了主意。天亮时,渔队找到了他。活着,湿透了。 | p7 右 + trust<3(克制措辞,零死亡) |
## D9 组 · 签收抉择(心结)(双性别 9 + 阿澈平铺 2 = 11)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `g9_in` | 岸台 | 风,一层一层退下去。天边,有点灰了。 | 签收引入(bgm 淡向 dawn 前的静默拍) |
| `g9_knot` | 守塔人 | 十二年了。这一晚,我总算替父亲,站完了他的班。 | 心结自述(玩家背景) |
| `p9a` | 岸台 | 他问起四十年前的灯。向左滑,把缺页的事,连根说给他。向右滑,就说,那晚风太大。 | 抉择提示(**truth=3 全真相版**) |
| `p9b` | 岸台 | 他问起四十年前的灯。你知道的,只有碎片。向左滑,把碎片给他。向右滑,说风太大。 | 抉择提示(**truth<3 碎片版**,cipher p9_known/blind 先例) |
| `d9_tell_a` | 守塔人 | 四十年前守塔的,是我爷爷。他离灯去救自己的儿子。灯灭那刻,回澜号……对不住。 | p9 左·truth=3 |
| `d9_tell_b` | 守塔人 | 我只知道,那晚守塔的是我爷爷,灯灭过一下。剩下的,我也不敢说全。 | p9 左·truth<3(句句为真:家族常识+阿澈原话回声) |
| `d9_keep` | 守塔人 | 那晚风太大,灯出了点故障。别再问了,孩子,回家吧。 | p9 右 |
| `amo_g` | 阿澈 | ……我爷爷,就在那七个人里。难怪他到死,都念着白角的灯。 | p9 左·反应(**回环闭合:amo_c 伏笔兑现**) |
| `amo_h` | 阿澈 | 风太大……嗯。那晚的风,一定很大。 | p9 右·反应 |
| `d9_telle` | 岸台 | 他听完,沉默了很久。天,亮了。 | p9 左·收(措辞 truth 无关:全真相/碎片两版通用) |
| `d9_keepe` | 岸台 | 这个话题,沉回了海里。天,亮了。 | p9 右·收 |
## EP 组 · 结局与尾声回响(双性别 19;结局 8 + 回响 11)
| id | 声部 | 台词全文 | 触发 |
|---|---|---|---|
| `e1_a` | 守塔人 | 天亮了。他在门厅睡熟,那页纸攥在手里。灯,亮到了最后一刻。 | 结局 e1(trust≥3 且 p9=左)主句 |
| `e1_b` | 守塔人 | 回澜号的账,翻开了第一页。这座塔,等了四十年。 | e1 收(钩子) |
| `e2_a` | 守塔人 | 他走的时候,天刚亮。我送到码头,什么也没说。 | 结局 e2(trust≥3 且 p9=右)主句 |
| `e2_b` | 守塔人 | 缺页放回灯底。有些东西,再压一代人。灯,还转着。 | e2 收(钩子) |
| `e3_a` | 守塔人 | 我把知道的,都说了。他望着海,半信半疑地点头。 | 结局 e3(trust<3 且 p9=左)主句 |
| `e3_b` | 守塔人 | 碎片也是真话。剩下的,让海自己讲吧。 | e3 收(钩子) |
| `e4_a` | 守塔人 | 天亮,各自归位。他回他的港,我守我的灯。 | 结局 e4(trust<3 且 p9=右)主句 |
| `e4_b` | 守塔人 | 隔着一道海,两座塔,谁也没再提那晚。 | e4 收(钩子) |
| `ep_lead` | 岸台 | 风停了。岸台给你记一笔——这一晚,后来怎样了。 | 结局链后尾声引入 |
| `ep_amo_home` | 岸台 | 阿澈:那晚之后改跑日班。他说,夜里的海,有守塔人听着。 | 尾声(p7=左:被你接进塔) |
| `ep_amo_solo` | 岸台 | 阿澈:自己把船开上了背风湾。船主骂了船,没骂人。 | 尾声(p7=右 且 trust≥3:自渡) |
| `ep_amo_dawn` | 岸台 | 阿澈:抱着冷藏柜漂到天亮。打那以后,出海带两台电台。 | 尾声(p7=右 且 trust<3:渔队找到) |
| `ep_lamp_full` | 岸台 | 灯塔记录簿:你离塔三刻,灯自己转着。父亲的发条,说中了。 | 尾声(p7=左 且 rev2=true;rev_f4 兑现) |
| `ep_lamp_dark` | 岸台 | 灯塔记录簿:凌晨两点,灯灭一刻钟。那一行,你写得格外用力。 | 尾声(p7=左 且 rev2=false;复刻祖父之夜回响) |
| `ep_lamp_hold` | 岸台 | 灯塔记录簿:转灯整夜未停。你一步,也没离开过它。 | 尾声(p7=右) |
| `ep_log_told` | 岸台 | 灯下的旧账,今夜见了光。 | 尾声(p9=左 且 truth≥1) |
| `ep_log_kept` | 岸台 | 灯下的旧账,又压回了黑暗里。 | 尾声(p9=右 且 truth≥1;truth=0 两句皆不播——日志未出场) |
| `ep_dad` | 岸台 | 值班表上,你替十二年前那个班次签了字。老陈,收工了。 | 尾声(rev2=true 选播) |
| `ep_shore` | 岸台 | 岸台晨报:风暴过境,航道平安。白角灯,正常。 | 尾声恒播收尾(**b_goal 货轮承诺闭环**,配 sfx/foghorn) |
---
**合计:148 句**(GPU 预算 ≤160 ✓)
- 双性别 121 句(KEEPER 守塔人 42 + SHORE 岸台/系统 79,含 `_k` 键盘变体 8 对)×2 性别 = 242 文件;
- NPC 平铺 27 句(阿澈 19 / 父亲 3 / 祖父 5)= 27 文件;
- 合计 269 条音频 ×2 格式(ogg+m4a)= **538 文件**。
- 键盘变体 8 对:gd_brief / gd_continue / gd_again / sys_help / sys_menu / sys_skip / sys_continue_ask / p1(成对生成,`check_all_assets` 校验 `_k` 配对与双性别集合一致)。
- 每结局专属台词齐备:e1/e2/e3/e4 各 2 句 + 尾声回响 11 句(p7×trust / p7×rev2 / p9×truth / rev2 条件选播)。
- 每局到达全部 9 个抉择点(p1..p9 及 p8 双形态变体 p8_boat/p8_reef、p9 双变体 p9a/p9b),实选 8-9 个(p6 在 rev2=false 时被 m6_seal 自动走右)。
## 多音字 / 发音风险自查注记
| 风险词 | 处理 |
|---|---|
| 重听 | 全表写「重新听」(sys_help / sys_help_k),无「重听」字样;「比灯重」zhòng 为唯一「重」,正确读法保留 |
| 落(luò/là/lào) | 「唱针落下 / 浪头落 / 那扇门留到今天」均为 luò 常用读法,保留,试听确认 |
| 数(shǔ/shù) | 「数三个浪头」(c8_new)为 shǔ 动词正确读法,保留,试听确认 |
| 缝(féng/fèng) | 名词「裂缝 / 礁缝 / 钻新缝」恒 fèng;全表无动词「缝」用法 |
| 卷(juǎn/juàn) | 「尾盖里卷着一页纸」(c2_key)为 juǎn 正确读法,保留 |
| 转(zhuǎn/zhuàn) | 「灯转得稳 / 自己转一夜 / 转灯整夜未停」恒 zhuàn 旋转义,正确;全表无 zhuǎn 用法(「转告/转述」未使用) |
| 塞(sāi/sè) | 「塞回灯底」(p6)为 sāi 口语正确读法,保留,试听确认 |
| 钻(zuān/zuàn) | 「钻新缝」(p8_reef)为 zuān 动词正确读法,保留 |
| 发(fā/fà) | 「发条」fà、「天边发灰」fā,均为固定词正确读法 |
| 长(cháng/zhǎng) | 「两长一短」(b_rain)为 cháng 正确读法;全表无 zhǎng 用法 |
| 教(jiāo/jiào) | 「谁教你的」(c2_songo)为 jiāo 口语正确读法,保留 |
| 壳 / 巷 / 挣 / 血 / 露 / 降(jiàng 外义)/ 率 / 传(zhuàn 义)/ 曾 / 宿 / 泊 | 全表未使用 |
| 了(le/liǎo)、还(hái/huán)、得(de/děi)、着(zhe) | 常规句式常见读法,逐句人工试听项(「我听见了」「风声回来了」未用还 huan 义;「撑不住」「稳但绕远」为常用读法) |
| 数字 | 句内数字全部写死(四十年前/十二年前/第七级/十级/两艘/三个/两百米/一刻钟/半个时辰/七个人/三遍/半里/三刻),幕次/信任/真相用分档整句(prog_m1..3、tr_*、tru_*) |
## 台词侧自查
- 单句 ≤40 字:全表最长 = p7(35 字),次长 p9a/p9b(各 32 字)、d9_tell_a(31 字)、p3(30 字)✓;NPC 句最长 amo_c(25 字)、rev_c2(23 字),平均 ≤20 字(P4 靠短句+逗号停顿,不用 instruct 语速词)✓。
- NPC ≤5 人(3 人)、speaker+instruct 恒定、区分度风险逐个标注(阿澈/父 亲两处「中」均有滤波+语境缓解方案)✓。
- 称呼合规:阿澈对玩家只用「塔 / 守塔人 / 你」,性别化称呼零出现;父亲插叙只对塔台/家人说话 ✓。
- 每个结局(e1..e4)专属主句+钩子各 2 句齐备;尾声按 p7×trust(阿澈三态)/p7×rev2(灯三态)/p9×truth(日志两句+truth=0 不播)/rev2(父亲签字)选播,双线齐备 ✓。
- 归因真话律:负向收尾句(c1_aske / c3_dark / c9_found / d9_tell_b / ep_lamp_dark / ep_amo_dawn / e4_b)全部指向玩家实际选择或真实处境,无「运气不好」类假归因、无惩罚性措辞 ✓。
- 时空签名:插叙锚入/锚出六句(rev_g1/g4、rev_f1/f5、rev_c1/c5)措辞固定成对(「唱针(又)落下……」/「风声回来了……」),教学句 rev_teach 的四要素(唱针落下/风声退后/风声回来/就是现在)逐句兑现 ✓。
- 向导 gd_* 6 句(gd_brief/gd_continue/gd_again 各带 _k 变体,gd_invalid/gd_prog1/gd_prog2 无变体)符合 14 号 §6 台词规范(一句一义、无重复句式、单句 ≤18 字)✓。
- 信任档位句与数值一一对应(tr_deep≥3 / tr_half=1-2 / tr_thin=0);真相度四句逐值为真(tru_zero=0 / tru_one=1 / tru_two=2 / tru_full=3),账目真实 ✓。