# 21b · 《守塔人》(keeper) 语音台词表(voice ids,录音依据) > **给音频总监的录制说明** > - **双性别组**(守塔人 KEEPER + 岸台/系统 SHORE,121 句):落 `web/keeper/audio/voice/female|male/.{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/.{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` → `_k`,`touch` → ``,`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),账目真实 ✓。