feat(new8/batch3-4): cipher/teahouse/keeper/bridge 全套交付——new8 八款全部可交付收官
四泳道并行全流水线(资产→开发→测试→玩家迭代闭环),双双 R1-R2 连续达标裁定可交付: - cipher《暗码》223 断言:摩尔斯解码嵌叙事/四结局矩阵/暴露度逐NIGHT验算/三层兜底;R2 三修(链首标记音/预警震/结局计数句+4句补录)4/4 全满分档 - teahouse《深夜茶馆》205 断言:泡茶时机窗/经济逐晚对账/多晚弧线;连续 2 轮 4/4 愿意玩 P0=0 - keeper《守塔人》257 断言:时空签名教学-兑现/插叙触发回返/trust×truth 档位/4结局;R2 F1/F2 坐实(震型豁免/首播跳句锁)4/4 - bridge《星环舰长》336 断言:巡检节奏逐毫秒/危机×系统态矩阵/仲裁7场景/忠诚差分/评级验算;R1 当场修F1-F4、R2 F5 菜单顺延保护 4/4 上行 公共:index.html 四卡片+profiles.js 四桶+check_all_assets 登记(预接线)、00-program 八款进度账收账、 gen_voice_dual 四游戏段、README/HANDOVER 阵容更新(11 款)、voice_text.json 四游戏键、mureka 台账(累计$1.26/$2.00) 验证:四游戏 playtest 223/205/257/336 全绿 + guide 122/122 + 全项目 15 游戏资产终检绿 遗留:keeper 三代人声滤波人耳试听(最高优先,ASR 对滤波句失明)、bridge 音频 32MB 超软指引 2MB(压缩候选)
This commit is contained in:
+801
-1
@@ -62,8 +62,16 @@ SPEAKERS = {
|
||||
# abyss 默认=DECK 调度(多数行);DIVER 行按 VOICE_SPK["abyss"] 逐句覆盖(radio 同型)
|
||||
"abyss": {"male": "Dylan", "female": "Vivian"},
|
||||
"detective": {"male": "Uncle_Fu", "female": "Serena"},
|
||||
# cipher 默认=WIND 北风/系统(多数行);OP 报务员行按 VOICE_SPK["cipher"] 逐句覆盖
|
||||
"cipher": {"male": "Dylan", "female": "Vivian"},
|
||||
# hunt 旁白双性别(23-hunt-voice-ids.md 头注);bot 喊话固定音色在 HUNT_NPC
|
||||
"hunt": {"male": "Uncle_Fu", "female": "Serena"},
|
||||
# teahouse 旁白双性别(20-teahouse-voice-ids.md 头注:male=Uncle_Fu/female=Serena)
|
||||
"teahouse": {"male": "Uncle_Fu", "female": "Serena"},
|
||||
# keeper 默认=SHORE 岸台/系统(多数行);KEEPER 守塔人行按 VOICE_SPK["keeper"] 逐句覆盖
|
||||
"keeper": {"male": "Dylan", "female": "Vivian"},
|
||||
# bridge 旁白双性别(22-bridge-voice-ids.md 头注:舰载系统音);NPC 恒定音色在 BRIDGE_NPC
|
||||
"bridge": {"male": "Uncle_Fu", "female": "Serena"},
|
||||
}
|
||||
|
||||
# instruct 对:(male, female)。None 表示两性别共用同一 instruct。
|
||||
@@ -1403,8 +1411,721 @@ HUNT_NPC = [
|
||||
("npc_zhou_wave", "Eric", "沙哑沉稳的老年男声,老猎手,带点调侃", "听,又来了。"),
|
||||
]
|
||||
|
||||
# ---------------------------------------------------------------- cipher
|
||||
# 《暗码》批次 3(docs/design/19-cipher-voice-ids.md,139 句:双性别 134 = OP 报务员 20
|
||||
# + WIND 北风/系统 114(含 _k 键盘变体 11 对)+ 平铺 NPC 5(处长 Eric))。
|
||||
# OP/WIND 两 speaker 配对(同性别双音色,VOICE_SPK["cipher"] 逐句覆盖,radio 同型:
|
||||
# female 侧你 Serena / 北风 Vivian、male 侧你 Uncle_Fu / 北风 Dylan,同场景永不同 speaker)。
|
||||
# 不加滤波(19b 头注:区分度靠 speaker+instruct+语境,detective 先例);摩尔斯滴答为
|
||||
# 运行时程序合成(web/cipher/morse.js),零文件资产勿排产;数字全分档整句无拼接。
|
||||
_CIPHER_OP = _pair("压低而冷静的男声,报务员,值夜班,克制的紧张",
|
||||
"压低而冷静的年轻女声,报务员,值夜班,克制的紧张")
|
||||
_CIPHER_WIND = _pair("清晰平稳的男声,电台联络声,隔着电流,字字清楚",
|
||||
"清晰平稳的女声,电台联络声,隔着电流,字字清楚")
|
||||
CIPHER_OP_LINES = [
|
||||
("b_open", _CIPHER_OP, "民国二十九年,江城。电讯处的夜班,从零点的电波声开始。"),
|
||||
("r1a_send", _CIPHER_OP, "北风,北风。货船,丑时过江,接住。"),
|
||||
("r1b_hold", _CIPHER_OP, "先压一压。这一船的事,得看清楚再说。"),
|
||||
("r2a_act", _CIPHER_OP, "有的字,不能落进卷宗。"),
|
||||
("r2b_act", _CIPHER_OP, "通报誊清,呈处长。"),
|
||||
("r3a_go", _CIPHER_OP, "口令我背得出。今夜,我亲自去。"),
|
||||
("r3b_act", _CIPHER_OP, "暗号夹进交接簿,让雨替我跑这一趟。"),
|
||||
("r4a_feed", _CIPHER_OP, "戴上手键。这一封,借快手七的手法。"),
|
||||
("r4b_act", _CIPHER_OP, "手,离开放键器。我只是个值机的。"),
|
||||
("g9_knot", _CIPHER_OP, "三年前,我译错了一封电。那之后,我再没见过我的上线。"),
|
||||
("d9_send", _CIPHER_OP, "北风,北风。处置令,今夜三时。撤。"),
|
||||
("d9_sleep", _CIPHER_OP, "机关上了。雨声里,只剩挂钟。"),
|
||||
("e1_a", _CIPHER_OP, "电波追不上我了。码头的灯,一盏一盏地灭。"),
|
||||
("e1_b", _CIPHER_OP, "新的密码本,在城外渡口等我。黎明,比想象中安静。"),
|
||||
("e2_a", _CIPHER_OP, "交了班,一切照旧。没人知道今晚频道里发生过什么。"),
|
||||
("e2_b", _CIPHER_OP, "只是北风的呼叫,到天亮也没人接。下一次,我会接吗。"),
|
||||
("e3_a", _CIPHER_OP, "我把警报拍了三遍。门开的时候,挂钟正好敲三点。"),
|
||||
("e3_b", _CIPHER_OP, "审讯室的灯,也很亮。可码头那边,一个人都没少。"),
|
||||
("e4_a", _CIPHER_OP, "两点五十九分,脚步停在门口。我把最后一页密码,塞进了炉子。"),
|
||||
("e4_b", _CIPHER_OP, "耳机还挂着。里面有一封电文,永远译不完了。"),
|
||||
]
|
||||
CIPHER_WIND_LINES = [
|
||||
# ---- G0.a 操作提示句(_k 变体见 KEY_LINES["cipher"]) ----
|
||||
("gd_brief", _CIPHER_WIND, "单击继续值机。要选词时,向左或向右滑。"),
|
||||
("gd_continue", _CIPHER_WIND, "单击屏幕,继续。"),
|
||||
("gd_again", _CIPHER_WIND, "还在吗?单击继续。"),
|
||||
("gd_tune1", _CIPHER_WIND, "电文在等。左右滑,听候选词。"),
|
||||
("gd_tune2", _CIPHER_WIND, "双击,把电文再听一遍。再双击,会放慢。"),
|
||||
("sys_help", _CIPHER_WIND, "单击选定,双击重新听电文。上滑听状态,下滑开菜单。选择时,左右滑。"),
|
||||
("sys_menu", _CIPHER_WIND, "菜单。单击切换选项,双击确认。"),
|
||||
("sys_skip", _CIPHER_WIND, "想跳过这句,单击就行。"),
|
||||
("sys_continue_ask", _CIPHER_WIND, "检测到你的值机记录。单击继续上次,右滑开始新的夜班。"),
|
||||
# ---- G0.b 状态/系统句 ----
|
||||
("gd_invalid", _CIPHER_WIND, "这个手势,值机室里用不上。"),
|
||||
("gd_prog1", _CIPHER_WIND, "光切词没有用。双击,先听电文。"),
|
||||
("gd_prog2", _CIPHER_WIND, "别急。停下来,把电文听完整。"),
|
||||
("sys_menu_resume", _CIPHER_WIND, "回到电波里。"),
|
||||
("sys_menu_book", _CIPHER_WIND, "翻密码本,换一个字母。"),
|
||||
("sys_menu_restart", _CIPHER_WIND, "重新开始今晚。"),
|
||||
("sys_menu_lobby", _CIPHER_WIND, "保存并回大厅。"),
|
||||
("sys_settings", _CIPHER_WIND, "音色、语速、背景音乐,请回大厅修改。"),
|
||||
("sys_new_night", _CIPHER_WIND, "新的夜班,开始了。"),
|
||||
# ---- G0.c 分档状态句(整句账目,逐值为真) ----
|
||||
("prog_t1", _CIPHER_WIND, "现在是今晚第一封电文。"),
|
||||
("prog_t2", _CIPHER_WIND, "现在是第二封,内部通报。"),
|
||||
("prog_t3", _CIPHER_WIND, "现在是第三封,交接电文。"),
|
||||
("prog_t4", _CIPHER_WIND, "第四封,最后一封。"),
|
||||
("book_3", _CIPHER_WIND, "密码本,还剩三页。"),
|
||||
("book_2", _CIPHER_WIND, "密码本,还剩两页。"),
|
||||
("book_1", _CIPHER_WIND, "密码本,只剩最后一页。"),
|
||||
("book_0", _CIPHER_WIND, "密码本,一页都不剩了。"),
|
||||
("exp_calm", _CIPHER_WIND, "这一晚,还没人看你第二眼。"),
|
||||
("exp_low", _CIPHER_WIND, "处长端着茶,多看了你一眼。"),
|
||||
("exp_mid", _CIPHER_WIND, "走廊里的脚步声,慢了下来。"),
|
||||
("exp_hot", _CIPHER_WIND, "门外,好像有人换了岗。"),
|
||||
# ---- G1 开场(b_rule/b_goal;b_open 在 OP 组,b_chief 在 NPC 组) ----
|
||||
("b_rule", _CIPHER_WIND, "北风问候你。规矩就一条:听不清,就再听一遍。"),
|
||||
("b_goal", _CIPHER_WIND, "今晚频道里有四封密电。每一个字,都要过你的耳朵。"),
|
||||
# ---- M1 第一封·船期·教学 ----
|
||||
("rx1_in", _CIPHER_WIND, "第一封。江上船队的调度,拍得很稳。"),
|
||||
("dv1_teach", _CIPHER_WIND, "电文进来了。先双击,把它重新听一遍。"),
|
||||
("dv1_teach2", _CIPHER_WIND, "左右滑,听密码本上的候选词。单击,选定一个。"),
|
||||
("dv1_ask", _CIPHER_WIND, "密码本第一页。三个词,哪个是它?"),
|
||||
("cand_bay", _CIPHER_WIND, "货船。"),
|
||||
("cand_day", _CIPHER_WIND, "客车。"),
|
||||
("cand_ray", _CIPHER_WIND, "巡逻艇。"),
|
||||
("dv1_right", _CIPHER_WIND, "货船,译对了。药品,装在货船的底舱。"),
|
||||
("dv1_wrong", _CIPHER_WIND, "不对。听清楚:B,一长,三短。"),
|
||||
("hint_t1", _CIPHER_WIND, "我教你一页:第一个字母,是 B。一长,三短。"),
|
||||
("cf_confirm", _CIPHER_WIND, "就这个词?再单击,定下来。"),
|
||||
("p2", _CIPHER_WIND, "药品船,丑时过江。向左滑,把船期报给北风。向右滑,压进值机日志。"),
|
||||
("r1a_e", _CIPHER_WIND, "收到。江上有人等你。第一封,做得稳。"),
|
||||
("r1b_e", _CIPHER_WIND, "日志下面压着的,是三箱药。船,不会等你。"),
|
||||
("n1", _CIPHER_WIND, "零点半。挂钟走了半圈,雨没有停。"),
|
||||
# ---- M2 第二封·名单 ----
|
||||
("rx2_in", _CIPHER_WIND, "第二封。手法很急,是内部通报。"),
|
||||
("dv2_ask", _CIPHER_WIND, "密码本第二页。三个词,选一个。"),
|
||||
("cand_top", _CIPHER_WIND, "黑名单。"),
|
||||
("cand_tap", _CIPHER_WIND, "窃听令。"),
|
||||
("cand_tip", _CIPHER_WIND, "线人费。"),
|
||||
("rev_top", _CIPHER_WIND, "黑名单。头一个代号,叫码头。"),
|
||||
("rev_tap", _CIPHER_WIND, "窃听令。今夜,有人要装耳朵。"),
|
||||
("rev_tip", _CIPHER_WIND, "线人费。月底之前,有人要收钱。"),
|
||||
("p4_known", _CIPHER_WIND, "名单上有码头。向左滑,暗号示警,让他连夜搬家。向右滑,按流程呈报处长。"),
|
||||
("p4_blind", _CIPHER_WIND, "一封通报。向左滑,压进抽屉,谁的耳朵也别装。向右滑,按流程呈报处长。"),
|
||||
("r2a_e", _CIPHER_WIND, "这一页,从今天起,不存在了。"),
|
||||
("r2b_e", _CIPHER_WIND, "名单进了卷宗。码头,自己多保重。"),
|
||||
("hint_t2", _CIPHER_WIND, "翻到这页:第二个字母,是 O。三长。"),
|
||||
("n2", _CIPHER_WIND, "一点整。处长的灯,还亮着。"),
|
||||
# ---- M3 第三封·交接 ----
|
||||
("rx3_in", _CIPHER_WIND, "第三封。很短,手法有点抖。"),
|
||||
("dv3_ask", _CIPHER_WIND, "密码本第三页。三个词,选一个。"),
|
||||
("cand_hand", _CIPHER_WIND, "今夜交接。"),
|
||||
("cand_sand", _CIPHER_WIND, "明晨交接。"),
|
||||
("cand_land", _CIPHER_WIND, "地点变更。"),
|
||||
("rev_hand", _CIPHER_WIND, "今夜交接。丑时,老码头。"),
|
||||
("rev_sand", _CIPHER_WIND, "明晨交接。天亮再说。"),
|
||||
("rev_land", _CIPHER_WIND, "地点变更。等下一封。"),
|
||||
("p6", _CIPHER_WIND, "交接在你手里。向左滑,亲自去码头跑一趟。向右滑,留书暗号,托给下一班。"),
|
||||
("r3a_e", _CIPHER_WIND, "值班室空了一刻钟。值机日志,停了一行。"),
|
||||
("r3b_e_ok", _CIPHER_WIND, "交接赶上了。袋子,连夜上了船。"),
|
||||
("r3b_e_no", _CIPHER_WIND, "交接的袋子,在码头放到了天亮。"),
|
||||
("hint_t3", _CIPHER_WIND, "翻到这页:第一个字母,是 H。四短。"),
|
||||
("n3", _CIPHER_WIND, "一点三刻。雨小了,频道里很静。"),
|
||||
# ---- M4 第四封·处置令·高潮 ----
|
||||
("rx4_in", _CIPHER_WIND, "第四封。最后一个手法,你听过——快手七。"),
|
||||
("dv4_ask", _CIPHER_WIND, "密码本第四页。三个词,选一个。"),
|
||||
("cand_spy", _CIPHER_WIND, "内线确认。"),
|
||||
("cand_say", _CIPHER_WIND, "约谈。"),
|
||||
("cand_sly", _CIPHER_WIND, "内部排查。"),
|
||||
("rev_spy", _CIPHER_WIND, "内线确认,今夜三时收网。代号,耳机。"),
|
||||
("rev_say", _CIPHER_WIND, "明早九时,约谈相关人员。"),
|
||||
("rev_sly", _CIPHER_WIND, "即日起,排查站内三人。"),
|
||||
("p8_known", _CIPHER_WIND, "三点之前。向左滑,拍一封假电,说北风昨夜已撤。向右滑,手离开放键器,装傻。"),
|
||||
("p8_blind", _CIPHER_WIND, "收台之前。向左滑,回一封例行电文,搅一搅水。向右滑,什么都不做。"),
|
||||
("r4a_e", _CIPHER_WIND, "假电出了门。对家的耳朵,听得出换人了吗。"),
|
||||
("r4b_e", _CIPHER_WIND, "有时,什么都不做,就是做了。"),
|
||||
("hint_t4", _CIPHER_WIND, "翻到这页:第二个字母,是 P。短,两长,短。"),
|
||||
# ---- F9 签收(g9_knot/d9_send/d9_sleep 在 OP 组) ----
|
||||
("g9_in", _CIPHER_WIND, "频道要收了。最后一件事,是你自己。"),
|
||||
("p9_known", _CIPHER_WIND, "收网之前。向左滑,开机,发最后一电。向右滑,关机,装睡到天亮。"),
|
||||
("p9_blind", _CIPHER_WIND, "北风在等答复。向左滑,开机,把今晚发出去。向右滑,例行收台。"),
|
||||
("d9_send_e", _CIPHER_WIND, "收到了。你的手法,我听了一整晚。快走。"),
|
||||
("d9_caught_e", _CIPHER_WIND, "信号被咬住了。别回头,走水路。快。"),
|
||||
("d9_sleepe", _CIPHER_WIND, "天亮之前,还有两个钟头。守住。"),
|
||||
# ---- EP 结局与尾声回响(e*_a/e*_b 在 OP 组) ----
|
||||
("ep_lead", _CIPHER_WIND, "天亮了。北风给你记了最后一笔账——今晚的事,都有了去向。"),
|
||||
("ep_med_ok", _CIPHER_WIND, "药品:货船丑时靠岸,三箱药,一箱不少。"),
|
||||
("ep_med_no", _CIPHER_WIND, "药品:没人接住那三箱药。船,白白过了江。"),
|
||||
("ep_list_ok", _CIPHER_WIND, "名单:码头连夜搬了家。卷宗里,少了一个人。"),
|
||||
("ep_list_no", _CIPHER_WIND, "名单:天亮时,多了一个红圈。"),
|
||||
("ep_hand_ok", _CIPHER_WIND, "交接:胶卷上了船,手很稳。"),
|
||||
("ep_hand_no", _CIPHER_WIND, "交接:码头的灯,白亮了一夜。"),
|
||||
("ep_spy_ok", _CIPHER_WIND, "处置令:你译对了它。北风,撤在你前头。"),
|
||||
("ep_spy_no", _CIPHER_WIND, "处置令:差的那三个字母,差了一整条命。"),
|
||||
# ---- EP.b 结局计数(R2 F3:数字规避分档整句;结算链尾播报,存档 endings 账同源) ----
|
||||
("end_c1", _CIPHER_WIND, "这是你在电波里挣下的第一个结局。"),
|
||||
("end_c2", _CIPHER_WIND, "这是你在电波里挣下的第二个结局。"),
|
||||
("end_c3", _CIPHER_WIND, "这是你在电波里挣下的第三个结局。"),
|
||||
("end_c4", _CIPHER_WIND, "四个结局,都收进你的密码本了。"),
|
||||
]
|
||||
CIPHER_LINES = CIPHER_OP_LINES + CIPHER_WIND_LINES
|
||||
|
||||
# 处长 NPC 单音色平铺(id, speaker, instruct, 台词)→ web/cipher/audio/voice/<id>.*
|
||||
# 有台词人物 2 人(北风=WIND 双性别组、处长=平铺 Eric);不加滤波(19b 头注,detective 先例)。
|
||||
CIPHER_NPC = [
|
||||
("b_chief", "Eric", "威严冷淡的中年男声,电讯处长,官腔,话里有话", "四封电文,一封都不许漏。你的耳朵,是处里最值钱的东西。"),
|
||||
("m2_chief", "Eric", "威严冷淡的中年男声,电讯处长,官腔,话里有话", "嗯,译得很全。去吧。"),
|
||||
("m4_chief_a", "Eric", "威严冷淡的中年男声,电讯处长,官腔,话里有话", "值机员,今晚的频道,很热闹啊。"),
|
||||
("m4_chief_b", "Eric", "威严冷淡的中年男声,电讯处长,官腔,话里有话", "你的耳朵最好。听见什么,记得……要报。"),
|
||||
("m4_chief_c", "Eric", "威严冷淡的中年男声,电讯处长,官腔,话里有话", "行。去睡吧,明天还有明天的事。"),
|
||||
]
|
||||
|
||||
# ---------------------------------------------------------------- bridge
|
||||
# 《星环舰长》批次 4(docs/design/22-bridge-voice-ids.md,154 句:旁白 132 基表 ×2 性别
|
||||
# + V 组 10 对(KEY_LINES["bridge"],base id 落 key/ 子目录)+ 平铺 NPC 12(BRIDGE_NPC)。
|
||||
# 旁白=舰载系统音,全表同一 instruct 常量/性别,禁句级变体、禁语速词;数字全分档整句。
|
||||
# NPC 与旁白零 speaker 重叠(大副 Dylan / 工程师 Eric / 医师 Vivian),不加滤波(22b 头注)。
|
||||
_BRIDGE = _pair("低沉沉稳的男声,舰载系统音,冷静克制",
|
||||
"清晰沉稳的女声,舰载系统音,冷静克制,句读干净")
|
||||
BRIDGE_LINES = [
|
||||
# ---- G0 组 · 系统/菜单/帮助 ----
|
||||
("sys_menu", _BRIDGE, "菜单。单击切换,双击确认。"),
|
||||
("sys_menu_resume", _BRIDGE, "回到舰桥。"),
|
||||
("sys_menu_save", _BRIDGE, "保存并回大厅。"),
|
||||
("sys_menu_help", _BRIDGE, "重新听帮助。"),
|
||||
("sys_menu_restart", _BRIDGE, "放弃本次巡逻。"),
|
||||
("sys_saved", _BRIDGE, "进度已保存。"),
|
||||
("settings_hint", _BRIDGE, "音色、语速、背景音乐,请回大厅修改。"),
|
||||
("sys_help", _BRIDGE, "巡航中,上滑巡检全舰;危机中,左右滑听选项,单击下令。下滑菜单,双击重新听。"),
|
||||
("sys_continue_ask", _BRIDGE, "检测到未完成的巡逻。单击继续,右滑进星港。"),
|
||||
("sys_new_patrol", _BRIDGE, "新巡逻,星环号启航。"),
|
||||
# ---- G1 组 · 开场/教学 ----
|
||||
("intro_1", _BRIDGE, "你是巡逻舰星环号的舰长。在这条航线上,耳朵就是雷达。"),
|
||||
("intro_2", _BRIDGE, "全舰四个系统:引擎、护盾、扫描、武器,各守一方。"),
|
||||
("intro_3", _BRIDGE, "引擎在舰尾低鸣,护盾在舰首嗡响。"),
|
||||
("intro_4", _BRIDGE, "扫描在左舷扫掠,武器在右舷充能。"),
|
||||
("intro_5", _BRIDGE, "危机从哪边来,哪边先遭殃。"),
|
||||
("tut_d0", _BRIDGE, "先试巡检。向上滑,听全舰状态。"),
|
||||
("tut_all_ok", _BRIDGE, "四个音都稳,全舰正常。"),
|
||||
("tut_crisis", _BRIDGE, "有情况。听签名音,辨认类型。"),
|
||||
("tut_decide", _BRIDGE, "左右滑听选项,单击下令。"),
|
||||
("tut_aid", _BRIDGE, "驰援靠扫描。我们的扫描,稳得很。"),
|
||||
("tut_after", _BRIDGE, "就是这样:听声,辨型,下令。"),
|
||||
("tut_loyal", _BRIDGE, "船员的心分三档:离心、平常、信赖。上滑巡检听得到。"),
|
||||
("tut_done", _BRIDGE, "教学完了。舰长,航线交给你。"),
|
||||
("tut_skip", _BRIDGE, "已跳过教学。上滑巡检,危机时左右滑听选项。"),
|
||||
# ---- G2 组 · 巡检/状态 ----
|
||||
("sys_engine_dmg", _BRIDGE, "引擎,受损。"),
|
||||
("sys_engine_off", _BRIDGE, "引擎,离线。"),
|
||||
("sys_shield_dmg", _BRIDGE, "护盾,受损。"),
|
||||
("sys_shield_off", _BRIDGE, "护盾,离线。"),
|
||||
("sys_scan_dmg", _BRIDGE, "扫描,受损。"),
|
||||
("sys_scan_off", _BRIDGE, "扫描,离线。"),
|
||||
("sys_weapon_dmg", _BRIDGE, "武器,受损。"),
|
||||
("sys_weapon_off", _BRIDGE, "武器,离线。"),
|
||||
("st_hull_1", _BRIDGE, "舰体,稳固。"),
|
||||
("st_hull_2", _BRIDGE, "舰体,带伤。"),
|
||||
("st_hull_3", _BRIDGE, "舰体,危急。"),
|
||||
("st_seg_1", _BRIDGE, "第一巡航段。"),
|
||||
("st_seg_2", _BRIDGE, "第二巡航段。"),
|
||||
("st_seg_3", _BRIDGE, "第三巡航段。"),
|
||||
("st_seg_4", _BRIDGE, "第四巡航段,末段。"),
|
||||
("st_rp_1", _BRIDGE, "资源紧张。"),
|
||||
("st_rp_2", _BRIDGE, "资源够用。"),
|
||||
("st_rp_3", _BRIDGE, "资源充足。"),
|
||||
("st_xo_1", _BRIDGE, "大副,离心。"),
|
||||
("st_xo_2", _BRIDGE, "大副,平常。"),
|
||||
("st_xo_3", _BRIDGE, "大副,信赖。"),
|
||||
("st_eng_1", _BRIDGE, "工程师,离心。"),
|
||||
("st_eng_2", _BRIDGE, "工程师,平常。"),
|
||||
("st_eng_3", _BRIDGE, "工程师,信赖。"),
|
||||
("st_doc_1", _BRIDGE, "医师,离心。"),
|
||||
("st_doc_2", _BRIDGE, "医师,平常。"),
|
||||
("st_doc_3", _BRIDGE, "医师,信赖。"),
|
||||
("recap_go", _BRIDGE, "继续航行。"),
|
||||
("evt_dock", _BRIDGE, "本段结束,靠港整备。"),
|
||||
("evt_resume", _BRIDGE, "启航,下一段巡航。"),
|
||||
# ---- G3 组 · 危机 ----
|
||||
("evt_meteor", _BRIDGE, "碎石呼啸,陨石群。"),
|
||||
("evt_pirate", _BRIDGE, "敌船引擎,海盗。"),
|
||||
("evt_distress", _BRIDGE, "断续三短,求救信号。"),
|
||||
("evt_radiation", _BRIDGE, "计数急响,辐射云。"),
|
||||
("dir_port", _BRIDGE, "方位,左舷。"),
|
||||
("dir_star", _BRIDGE, "方位,右舷。"),
|
||||
("dir_bow", _BRIDGE, "方位,舰首。"),
|
||||
("dir_stern", _BRIDGE, "方位,舰尾。"),
|
||||
("cr_decide", _BRIDGE, "听选项,下令。"),
|
||||
("opt_evade", _BRIDGE, "规避机动,靠引擎。"),
|
||||
("opt_fight", _BRIDGE, "迎战,靠武器。"),
|
||||
("opt_breach", _BRIDGE, "硬闯,靠护盾。"),
|
||||
("opt_aid", _BRIDGE, "驰援,靠扫描。"),
|
||||
("opt_ignore", _BRIDGE, "按兵不动,不理会。"),
|
||||
("cr_timeout", _BRIDGE, "没来得及下令。"),
|
||||
("res_clean", _BRIDGE, "干净利落,有惊无险。"),
|
||||
("res_hurt", _BRIDGE, "舰体受创。"),
|
||||
("res_bad", _BRIDGE, "损失惨重。"),
|
||||
("res_mine", _BRIDGE, "轰开碎石,采到矿材,资源加一。"),
|
||||
("res_plunder", _BRIDGE, "海盗击退,缴获物资,资源加二。"),
|
||||
("res_reward", _BRIDGE, "救援成功,对方致谢,资源加二。"),
|
||||
("res_ambush", _BRIDGE, "遭了伏击,舰体受创。"),
|
||||
("res_rad", _BRIDGE, "全船受照。"),
|
||||
("trap_hint", _BRIDGE, "求救码后面,有引擎声,多留心。"),
|
||||
# ---- G4 组 · 忠诚/支援 ----
|
||||
("loy_aid", _BRIDGE, "医师与大副,记下了这次驰援。"),
|
||||
("loy_ignore", _BRIDGE, "求救没了下文,医师很失望。"),
|
||||
("loy_fight_win", _BRIDGE, "大副打得尽兴,士气高涨。"),
|
||||
("loy_evade_pirate", _BRIDGE, "大副觉得,这一躲有些窝囊。"),
|
||||
("loy_breach", _BRIDGE, "工程师心疼过载的护盾。"),
|
||||
("loy_rad", _BRIDGE, "医师在处理伤员。"),
|
||||
("sup_xo", _BRIDGE, "大副坐上炮位,火力压制!"),
|
||||
("sup_eng", _BRIDGE, "工程师出手,系统复航了。"),
|
||||
("sup_doc", _BRIDGE, "医师带人抢修,舰体补回一点。"),
|
||||
("sup_none", _BRIDGE, "这个岗位,眼下没人顶上。"),
|
||||
# ---- G5 组 · 靠港整备 ----
|
||||
("dock_open", _BRIDGE, "靠港整备。左右滑看项目,单击执行。"),
|
||||
("rep_engine", _BRIDGE, "修理引擎,升一级,两资源。"),
|
||||
("rep_shield", _BRIDGE, "修理护盾,升一级,两资源。"),
|
||||
("rep_scan", _BRIDGE, "修理扫描,升一级,两资源。"),
|
||||
("rep_weapon", _BRIDGE, "修理武器,升一级,两资源。"),
|
||||
("rep_ok", _BRIDGE, "修理完成。"),
|
||||
("rep_poor", _BRIDGE, "资源不够。"),
|
||||
("dock_go", _BRIDGE, "启航,继续巡逻。"),
|
||||
("dock_empty", _BRIDGE, "全舰状态良好,无需整备。"),
|
||||
# ---- G6 组 · 结算/死亡 ----
|
||||
("die_intro", _BRIDGE, "舰体解体在即,全员撤离。"),
|
||||
("die_meteor", _BRIDGE, "陨石撕开了船身。"),
|
||||
("die_pirate", _BRIDGE, "海盗的炮火击穿了舰体。"),
|
||||
("die_rad", _BRIDGE, "辐射熔穿了舱壁。"),
|
||||
("die_adv_to", _BRIDGE, "早下令,勤靠港,别硬扛。"),
|
||||
("die_adv_sys", _BRIDGE, "系统离线时,别把宝押在它身上。"),
|
||||
("rep_open", _BRIDGE, "巡逻归来,全舰记功。剩余资源已折算功勋。"),
|
||||
("rate_s", _BRIDGE, "教科书巡逻,功勋卓著。"),
|
||||
("rate_a", _BRIDGE, "出色完成巡逻。"),
|
||||
("rate_b", _BRIDGE, "巡逻结束,有惊无险。"),
|
||||
("rate_c", _BRIDGE, "巡逻结束,遍体鳞伤。"),
|
||||
("rate_d", _BRIDGE, "巡逻失败,弃舰撤离。"),
|
||||
("merit_1", _BRIDGE, "功勋,寥寥。"),
|
||||
("merit_2", _BRIDGE, "功勋,可观。"),
|
||||
("merit_3", _BRIDGE, "功勋,丰厚。"),
|
||||
("settle_hook", _BRIDGE, "星港期待你的下一次巡逻。单击,返航。"),
|
||||
# ---- G7 组 · 看门狗/纠错 ----
|
||||
("gd_cruise", _BRIDGE, "还在巡航。上滑,巡检全舰。"),
|
||||
("gd_decide", _BRIDGE, "还在等命令。左右滑,听选项。"),
|
||||
("gd_dock", _BRIDGE, "还在整备。左右滑,单击执行。"),
|
||||
("gd_invalid", _BRIDGE, "这个操作,这里用不上。"),
|
||||
("hint_dock3", _BRIDGE, "整备完毕,就启航。"),
|
||||
# ---- G8 组 · 星港 ----
|
||||
("port_open", _BRIDGE, "星港整备,功勋兑换。左右滑看,单击定。"),
|
||||
("upg_spare", _BRIDGE, "备用零件,出发自带一批物资。功勋二十。"),
|
||||
("upg_harvest", _BRIDGE, "采集协议,每段多一份资源。功勋三十。"),
|
||||
("upg_armor1", _BRIDGE, "加装装甲,舰体上限加一。功勋四十。"),
|
||||
("upg_vet", _BRIDGE, "老兵船组,开局全员忠诚加一。功勋五十。"),
|
||||
("upg_armor2", _BRIDGE, "重型装甲,舰体上限再加一。功勋六十。"),
|
||||
("upg_aegis", _BRIDGE, "应急护盾,每段首次受创减一。功勋七十。"),
|
||||
("upg_done", _BRIDGE, "这项已改装到位。"),
|
||||
("upg_buy", _BRIDGE, "改装完成。"),
|
||||
("port_poor", _BRIDGE, "功勋不够。"),
|
||||
("port_back", _BRIDGE, "返回。"),
|
||||
# ---- GR 组 · 航线选择 ----
|
||||
("route_ask", _BRIDGE, "选择巡航航线。"),
|
||||
("opt_route_safe", _BRIDGE, "稳妥航线,采集平平,太平。"),
|
||||
("opt_route_rich", _BRIDGE, "矿富航线,采得多,磨损也多。"),
|
||||
]
|
||||
|
||||
# 船员 NPC 单音色平铺(id, speaker, instruct, 台词)→ web/bridge/audio/voice/<id>.*
|
||||
# 与旁白零 speaker 重叠(22b 头注);不加滤波;同一角色 speaker+instruct 恒定。
|
||||
BRIDGE_NPC = [
|
||||
# 大副(XO 34,Dylan)
|
||||
("xo_fight", "Dylan", "干脆利落的年轻男声,星舰大副,令出必行,敬重舰长", "舰长,交给我,炮位就绪!"),
|
||||
("xo_win", "Dylan", "干脆利落的年轻男声,星舰大副,令出必行,敬重舰长", "打得漂亮,这条航线够他们传一阵子。"),
|
||||
("xo_uneasy", "Dylan", "干脆利落的年轻男声,星舰大副,令出必行,敬重舰长", "又是一路躲。舰长,弟兄们想打。"),
|
||||
("xo_aid", "Dylan", "干脆利落的年轻男声,星舰大副,令出必行,敬重舰长", "驰援是应该的,星环号不是过路人。"),
|
||||
# 工程师(ENG 52,Eric)
|
||||
("eng_wear", "Eric", "沙哑厚重的中年男声,轮机工程师,惜船如命,慢条斯理", "老伙计累出毛病了,让我来。"),
|
||||
("eng_fix", "Eric", "沙哑厚重的中年男声,轮机工程师,惜船如命,慢条斯理", "修好了,再听它稳稳地转。"),
|
||||
("eng_sup", "Eric", "沙哑厚重的中年男声,轮机工程师,惜船如命,慢条斯理", "交给我,三分钟,给它救活。"),
|
||||
("eng_gripe", "Eric", "沙哑厚重的中年男声,轮机工程师,惜船如命,慢条斯理", "护盾不是这么用的,舰长……"),
|
||||
# 医师(DOC 38,Vivian)
|
||||
("doc_aid", "Vivian", "温和坚定的女声,舰载医师,轻声但不容置疑", "幸好停了船,他们撑不了多久了。"),
|
||||
("doc_ignore", "Vivian", "温和坚定的女声,舰载医师,轻声但不容置疑", "……我没有什么要说的。"),
|
||||
("doc_care", "Vivian", "温和坚定的女声,舰载医师,轻声但不容置疑", "有伤员的地方,就有我。"),
|
||||
("doc_trap", "Vivian", "温和坚定的女声,舰载医师,轻声但不容置疑", "有人拿求救当诱饵,小心。"),
|
||||
]
|
||||
|
||||
# ---------------------------------------------------------------- teahouse
|
||||
# 《深夜茶馆》批次 3(docs/design/20-teahouse-voice-ids.md,163 句:旁白 98 ×2 性别
|
||||
# + NPC 平铺 65;键盘变体 V 组 10 对在 KEY_LINES["teahouse"])。
|
||||
# 台词全文逐字照抄 voice-ids 文档;旁白只做系统/教学/状态/账目/氛围客转述(不念客人
|
||||
# 台词);数字全分档整句无拼接;不加滤波(detective 先例:区分度靠 sig_* 前缀+
|
||||
# speaker+instruct 三层冗余)。
|
||||
_TEA = _pair("低沉温润的男声,深夜茶馆掌柜,从容安稳,像守着一炉将开的水",
|
||||
"温润平和的女声,深夜茶馆掌柜,从容安稳,像守着一炉将开的水")
|
||||
TEAHOUSE_LINES = [
|
||||
# ---- G0 系统/菜单/帮助(10) ----
|
||||
("sys_menu", _TEA, "菜单。单击切换,双击确认。"),
|
||||
("sys_menu_resume", _TEA, "回到堂前。"),
|
||||
("sys_menu_upg", _TEA, "打烊置办。"),
|
||||
("sys_menu_save", _TEA, "保存并回大厅。"),
|
||||
("sys_menu_help", _TEA, "重新听帮助。"),
|
||||
("sys_saved", _TEA, "进度已保存。"),
|
||||
("settings_hint", _TEA, "音色、语速、背景音乐,请回大厅修改。"),
|
||||
("sys_help", _TEA, "左右滑选茶,单击定下。听水声,双击提壶;滴答密,双击出汤。上滑状态,下滑菜单。"),
|
||||
("sys_continue_ask", _TEA, "检测到没打烊的茶馆。单击继续,右滑两次重开新店。"),
|
||||
("sys_reset_ask", _TEA, "重开新店?口碑和存款都从头来。再右滑一次,确认。"),
|
||||
# ---- G1 开场/教学(17) ----
|
||||
("intro_1", _TEA, "巷子最深处,有一盏亮到后半夜的灯。"),
|
||||
("intro_2", _TEA, "你接手了这家茶馆。今晚,是它易主后的头一晚。"),
|
||||
("intro_3", _TEA, "泡茶三步:选茶、候汤、出汤。手上的事,耳朵说了算。"),
|
||||
("tut_d0", _TEA, "先看茶柜。左右滑,一罐一罐听。"),
|
||||
("tut_tea", _TEA, "单击,选定这罐茶。"),
|
||||
("tut_water", _TEA, "灶上坐水。泡泡细密是将沸,咕嘟连片是滚透——听到细密,双击提壶。"),
|
||||
("tut_steep", _TEA, "注水,闷泡。滴答由稀到密,密起来就是将好——双击,出汤。"),
|
||||
("tut_serve", _TEA, "茶好了。单击,端出去。"),
|
||||
("tut_status", _TEA, "上滑,听今晚的局面:第几位客人,口碑如何;客人要的茶,上滑灶上随时再听。"),
|
||||
("tut_done", _TEA, "都会了。往后每一晚,都这么泡。"),
|
||||
("tut_skip", _TEA, "已跳过教学。左右滑选茶,单击选定,双击动手。"),
|
||||
("water_early", _TEA, "急了,水还没醒透。这一步,偏了。"),
|
||||
("water_ok", _TEA, "正是时候。"),
|
||||
("water_late", _TEA, "水滚老了。这一步,偏了。"),
|
||||
("steep_early", _TEA, "出急了,茶还睡着。这一步,偏了。"),
|
||||
("steep_ok", _TEA, "出汤,正好。"),
|
||||
("steep_late", _TEA, "闷过了,汤要发苦。这一步,偏了。"),
|
||||
# ---- G2 状态/茶名(18) ----
|
||||
("st_guest_1", _TEA, "今晚第一位客人。"),
|
||||
("st_guest_2", _TEA, "今晚第二位客人。"),
|
||||
("st_guest_3", _TEA, "今晚第三位客人。"),
|
||||
("st_guest_4", _TEA, "今晚第四位客人。"),
|
||||
("st_guest_5", _TEA, "今晚第五位客人。"),
|
||||
("st_rep_1", _TEA, "口碑还没立起来,街坊不知道巷子里有这家茶馆。"),
|
||||
("st_rep_2", _TEA, "有了回头客,口碑立住脚了。"),
|
||||
("st_rep_3", _TEA, "巷子口都在传你的茶,小有名气。"),
|
||||
("st_rep_4", _TEA, "一盏难求,茶客口耳相传。"),
|
||||
("st_purse_1", _TEA, "钱箱见底,不到十文。"),
|
||||
("st_purse_2", _TEA, "钱箱周转得开,不愁明日开销。"),
|
||||
("st_purse_3", _TEA, "手头宽裕,二十五文往上。"),
|
||||
("tea_longjing", _TEA, "龙井。绿茶性鲜:水将沸就提壶,出汤要快。"),
|
||||
("tea_moli", _TEA, "茉莉花茶。香靠滚水激:水滚透再冲,出汤要快。"),
|
||||
("tea_tieguanyin", _TEA, "铁观音。乌龙要滚水才醒,闷到滴答密了再出汤。"),
|
||||
("tea_dianhong", _TEA, "滇红。红茶性暖,滚水冲,经得住闷,越闷越醇。"),
|
||||
("tea_puer", _TEA, "普洱。老茶经泡:滚水才泡得开,多闷一会儿更醇。"),
|
||||
("tea_yinzhen", _TEA, "白毫银针。嫩芽金贵:水将沸就提,闷到滴答密。"),
|
||||
# ---- G3 泡茶衔接(5) ----
|
||||
("brew_start", _TEA, "回到灶前。"),
|
||||
("res_good", _TEA, "这一盏,泡得地道。"),
|
||||
("res_plain", _TEA, "这一盏,泡得中平。"),
|
||||
("res_wrong", _TEA, "这一盏,泡岔了——不是客人今晚要的那口。"),
|
||||
("serve_link", _TEA, "你把茶端了过去。"),
|
||||
# ---- G4 反应过场/氛围客人(9) ----
|
||||
("bridge_good", _TEA, "客人把这盏茶喝得很慢,像是就着茶,把心事也喝顺了。"),
|
||||
("bridge_plain", _TEA, "茶喝完了,客人点点头,起身。"),
|
||||
("bridge_wrong", _TEA, "那盏茶凉在桌上,客人走的时候,没回头。"),
|
||||
("amb_1", _TEA, "车铃一响,晚班的邮差探进头来。老规矩:茉莉花茶,要滚烫的。"),
|
||||
("amb_2", _TEA, "门帘一挑,绣坊的阿姐收了工,想喝一盏清火的龙井。"),
|
||||
("amb_3", _TEA, "巷口的醉汉扶着门框,含含糊糊,只嚷嚷要最浓的滇红。"),
|
||||
("amb_react_good", _TEA, "他喝得很慢,末了多搁下两文。"),
|
||||
("amb_react_plain", _TEA, "他喝完,点点头,搁下茶钱。"),
|
||||
("amb_react_wrong", _TEA, "他抿了一口,搁下半盏,晃出去了。"),
|
||||
# ---- G5 打烊/经济/置办(16) ----
|
||||
("close_open", _TEA, "客人走尽了。收壶,打烊。"),
|
||||
("close_coin_1", _TEA, "今晚进账,不到十五文。"),
|
||||
("close_coin_2", _TEA, "今晚进账,十五到二十四文。"),
|
||||
("close_coin_3", _TEA, "今晚进账,二十五文往上。"),
|
||||
("rent_due", _TEA, "今天是房钱的日子,这一回,二十文。"),
|
||||
("rent_ok", _TEA, "房钱交清,秦婶没多话。"),
|
||||
("rent_short", _TEA, "房钱不够,差的那几文先记在账上。秦婶撂下一句:下回一起算。"),
|
||||
("debt_clear", _TEA, "旧账清了,秦婶把那一页翻了过去。"),
|
||||
("st_debt_1", _TEA, "账上,还欠着秦婶的钱。"),
|
||||
("settle_night", _TEA, "熄了灯,这一晚就过去了。单击,睡下。"),
|
||||
("upg_open", _TEA, "要添置点什么?左右滑看,单击买定。"),
|
||||
("upg_cabinet", _TEA, "茶柜扩容,十五文。往后普洱、白毫银针,都上柜。"),
|
||||
("upg_teaware", _TEA, "添一副新茶具,十二文。手上更准,火候窗更宽。"),
|
||||
("upg_sign", _TEA, "立一块招牌,二十文。要口碑立得住——十二分往上才挂。"),
|
||||
("upg_none", _TEA, "眼下的钱和账,还置办不起。改日再说。"),
|
||||
("upg_lock", _TEA, "招牌还挂不得:口碑得十二分往上,欠账也得清。"),
|
||||
# ---- G6 看门狗/纠错/复述(6) ----
|
||||
("gd_serve", _TEA, "客人还在堂前。上滑,再听一遍他要的茶。"),
|
||||
("gd_brew", _TEA, "还在灶上,听声动手,双击。"),
|
||||
("gd_close", _TEA, "账报完了。单击,熄灯睡下。"),
|
||||
("gd_invalid", _TEA, "这个操作,这里用不上。"),
|
||||
("hint_water", _TEA, "水听两遍:泡泡细密是将沸,咕嘟连片是滚透。"),
|
||||
("recap_go", _TEA, "接着张罗。"),
|
||||
# ---- G7 晚数/章节(7) ----
|
||||
("night_1", _TEA, "头一晚。灯亮了,水坐上,茶馆开门。"),
|
||||
("night_2", _TEA, "第二晚。老客们,已经认得这条巷子。"),
|
||||
("night_3", _TEA, "第三晚。今天,是收房钱的日子。"),
|
||||
("night_4", _TEA, "第四晚。熟客进门,都不用问位子了。"),
|
||||
("night_5", _TEA, "第五晚。这一章的夜,快要听全了。"),
|
||||
("night_more", _TEA, "又一夜。灯还亮着,茶还热着。"),
|
||||
("chapter_end", _TEA, "第一章完。这条巷子的夜,你都听过了。茶馆的故事,还长。"),
|
||||
]
|
||||
|
||||
# NPC 单音色平铺(id, speaker, instruct, 台词)→ web/teahouse/audio/voice/<id>.*
|
||||
# 5 位弧线客人(20-teahouse-voice-ids.md 头注区分度表):speaker+instruct 恒定,不滤波。
|
||||
_ZHOU = ("Eric", "沙哑洪亮的男声,修车铺老师傅,大嗓门,直爽热乎")
|
||||
_SU = ("Vivian", "轻柔平稳的女声,夜班护士,温和疲惫,吐字干净")
|
||||
_SHI = ("Dylan", "年轻清亮的男声,高三学生,紧张,语速快,有点怯")
|
||||
_BAI = ("Uncle_Fu", "苍老缓慢的男声,独居老先生,慢条斯理,带茶韵")
|
||||
_HE = ("Serena", "低哑爽利的女声,夜班出租车司机,利落,带笑带倦")
|
||||
TEAHOUSE_NPC = [
|
||||
# 老周(13)
|
||||
("zhou_enter", *_ZHOU, "小掌柜!老位置,还给我留着呢吧?"),
|
||||
("zhou_o1", *_ZHOU, "修了一天车,嗓子眼里全是机油味。就你那龙井,给我去去火。"),
|
||||
("zhou_r1_good", *_ZHOU, "嚯!就是这个味儿!多谢啦,小掌柜。"),
|
||||
("zhou_r1_plain", *_ZHOU, "嗯……还行。今天手底下,差了点意思。"),
|
||||
("zhou_r1_wrong", *_ZHOU, "这是我要的龙井吗?……算了算了,凑合喝。"),
|
||||
("zhou_o2", *_ZHOU, "今天冷。来盏顶饱的、浓的,扛饿又扛冻。"),
|
||||
("zhou_r2_good", *_ZHOU, "对喽,暖到脚后跟了!跟你说——我儿子今天来电话了。"),
|
||||
("zhou_r2_plain", *_ZHOU, "茶是茶,水是水,差点火候。儿子的事,改天再说吧。"),
|
||||
("zhou_r2_wrong", *_ZHOU, "……今晚这盏不对。儿子的事,不说也罢。"),
|
||||
("zhou_o3", *_ZHOU, "今晚就想要头一回那盏。一样的,再来一份。"),
|
||||
("zhou_e_a", *_ZHOU, "明天铺子歇一天,儿子回来帮我盘货。这盏茶,记你头上了!"),
|
||||
("zhou_e_b", *_ZHOU, "电话里跟儿子拌了两句嘴。没事——茶还热着,日子还长。"),
|
||||
("zhou_e_c", *_ZHOU, "铺子我想关了,儿子叫我过去帮工。茶馆的灯,替我多亮会儿。"),
|
||||
# 苏晚(13)
|
||||
("su_enter", *_SU, "请问……还营业吗?我刚下夜班。"),
|
||||
("su_o1", *_SU, "胃里发凉,人空荡荡的。想要一盏暖的,别太冲,喝完好睡。"),
|
||||
("su_r1_good", *_SU, "好暖……像被窝里塞了个汤婆子。谢谢你。"),
|
||||
("su_r1_plain", *_SU, "嗯,是热乎的。今晚,凑合能睡。"),
|
||||
("su_r1_wrong", *_SU, "这盏……有点寒。没关系,是我没说清。"),
|
||||
("su_o2", *_SU, "今晚换个口味,想要香的。可我还得眯一会儿才接班。"),
|
||||
("su_r2_good", *_SU, "真香啊……今夜走了位老人,家属拉着我的手道谢。这盏茶,敬他们。"),
|
||||
("su_r2_plain", *_SU, "茶还行。今夜病房平静,平静得累人。"),
|
||||
("su_r2_wrong", *_SU, "香气没出来……像我今晚的运气。算了。"),
|
||||
("su_o3", *_SU, "最后一晚了,明天起不用值夜班。还是头一回那种,暖的。"),
|
||||
("su_e_a", *_SU, "我调去白天班啦,还能常来。给你带我们科的喜糖。"),
|
||||
("su_e_b", *_SU, "还在犹豫,夜班再值一季。好在这盏茶,够我撑到天亮。"),
|
||||
("su_e_c", *_SU, "我递了辞呈,往后去哪还没想好。但今晚茶馆的灯,我记住了。"),
|
||||
# 陈拾(13)
|
||||
("shi_enter", *_SHI, "老板……还有位子吗?我背单词,背得头疼。"),
|
||||
("shi_o1", *_SHI, "想喝点香的提提神,但别太浓——喝完回家还得睡,明天早读。"),
|
||||
("shi_r1_good", *_SHI, "好香!脑子清醒了。这是我攒的早饭钱……值了。"),
|
||||
("shi_r1_plain", *_SHI, "还行吧。单词它还是不进脑子。"),
|
||||
("shi_r1_wrong", *_SHI, "有点苦……没事,我泡的方便面更苦。"),
|
||||
("shi_o2", *_SHI, "模拟考砸了,心里烧得慌。想喝口最清火的。"),
|
||||
("shi_r2_good", *_SHI, "凉丝丝的,火气下去一半。老板,你说我还能考上吗?……算了,当我没问。"),
|
||||
("shi_r2_plain", *_SHI, "茶一般,我也一般,挺配的。"),
|
||||
("shi_r2_wrong", *_SHI, "不是这个味儿……回家还得接着刷题。"),
|
||||
("shi_o3", *_SHI, "考完了!今晚想喝口金贵的,犒劳自己。"),
|
||||
("shi_e_a", *_SHI, "成绩出来了,比模拟考高了四十多分!这盏茶,算我请全茶馆的!"),
|
||||
("shi_e_b", *_SHI, "考完了,心里反倒空荡荡的。去哪读书,听爸妈安排吧。"),
|
||||
("shi_e_c", *_SHI, "考砸了,茶也不对味……但至少,这儿的灯一直亮着。"),
|
||||
# 白老先生(13)
|
||||
("bai_enter", *_BAI, "小掌柜,给我的紫砂壶,留个座。"),
|
||||
("bai_o1", *_BAI, "晚饭积了食。要一盏刮油的、经得住泡的,我喝得慢。"),
|
||||
("bai_r1_good", *_BAI, "好茶,有回甘。像我家老婆子腌的萝卜干,越嚼越有味。"),
|
||||
("bai_r1_plain", *_BAI, "嗯,茶汤尚可。人老了,舌头也钝了。"),
|
||||
("bai_r1_wrong", *_BAI, "这不是我要的那口。不怪你——是我话没说全。"),
|
||||
("bai_o2", *_BAI, "昨儿那盏不错。今晚想喝口陈的,越陈越好。"),
|
||||
("bai_r2_good", *_BAI, "陈味出来了。四十年前,我跟老婆子初见,就是一盏普洱。"),
|
||||
("bai_r2_plain", *_BAI, "茶汤淡了些。故事嘛,等茶好了再说。"),
|
||||
("bai_r2_wrong", *_BAI, "……不是我惦记的那口。罢了,回家睡了。"),
|
||||
("bai_o3", *_BAI, "就馋那口陈味。老伙计,看你的手艺了。"),
|
||||
("bai_e_a", *_BAI, "明儿我把棋盘搬来,你这儿灯亮,我天天来摆谱——就当,她还在看着。"),
|
||||
("bai_e_b", *_BAI, "回去还是那间空屋子。不过睡前有盏茶垫着,梦能沉一点。"),
|
||||
("bai_e_c", *_BAI, "下个月,我搬去养老院了。这把紫砂壶,留给茶馆吧。"),
|
||||
# 何雨眠(13)
|
||||
("he_enter", *_HE, "师傅,门口能停车不?——哦,我是说,喝茶。"),
|
||||
("he_o1", *_HE, "跑了一宿,眼睛发涩,脑子发木。要一盏清口的,不要浓的。"),
|
||||
("he_r1_good", *_HE, "清亮,像拿凉水洗了把脸。今晚最后一单,稳了。"),
|
||||
("he_r1_plain", *_HE, "一般吧,能开就行。"),
|
||||
("he_r1_wrong", *_HE, "不是这口……算了,我还得赶路。"),
|
||||
("he_o2", *_HE, "今晚不打算睡了,还要跑单。要最浓的,越浓越好。"),
|
||||
("he_r2_good", *_HE, "得劲儿!闺女的照片就贴在方向盘上——再跑俩月,学费就齐了。"),
|
||||
("he_r2_plain", *_HE, "不够劲,今晚里程表怕是要难看。"),
|
||||
("he_r2_wrong", *_HE, "淡了。算了,我赶时间。"),
|
||||
("he_o3", *_HE, "最后一趟车收工。想要一盏柔的,收收心。"),
|
||||
("he_e_a", *_HE, "学费攒齐了,明天去看闺女。老师说她考了年级前十——这盏,我慢慢喝。"),
|
||||
("he_e_b", *_HE, "钱还差一点,再跑一个月。茶馆这盏灯,是我每晚的路标。"),
|
||||
("he_e_c", *_HE, "我把夜班退了。闺女在电话里说:妈,钱够用。这盏茶,我喝得最慢。"),
|
||||
]
|
||||
|
||||
# ---------------------------------------------------------------- keeper
|
||||
# 《守塔人》批次 4(docs/design/21-keeper-voice-ids.md,148 句:双性别 121 = KEEPER 守塔人 42
|
||||
# + SHORE 岸台/系统 79,含 `_k` 键盘变体 8 对 + 平铺 NPC 27 = 阿澈 19 / 父亲 3 / 祖父 5)。
|
||||
# 台词全文逐字照抄 voice-ids 文档;双性别组分 KEEPER(玩家)/ SHORE(岸台值班员=向导人设)
|
||||
# 两个 speaker 配对(同性别双音色,VOICE_SPK["keeper"] 逐句覆盖,radio HOST/PROD 同型:
|
||||
# female 侧守塔人 Serena / 岸台 Vivian、male 侧守塔人 Uncle_Fu / 岸台 Dylan,同场景永不同 speaker);
|
||||
# `_k` 变体 8 对在 KEY_LINES["keeper"](措辞「方向键/空格/回车」,abyss §G0.a 同型)。
|
||||
# NPC 平铺 27 句,转码时按 21b 头注 §滤波表 带通(NPC_BANDPASS["keeper"]):
|
||||
# 阿澈=电台 350-3200 / 父亲=唱片 300-2800 / 祖父=唱片 250-2600(+轻压缩,宁窄勿脏);
|
||||
# 锚句(rev_g1/g4、rev_f1/f5、rev_c1/c5)是 KEEPER 双性别行、不滤波(「现在的你」在回忆里旁白)。
|
||||
_KEEPER = _pair("沉静克制的男声,孤岛守塔人,低而稳,藏着心事",
|
||||
"沉静克制的年轻女声,孤岛守塔人,低而稳,藏着心事")
|
||||
_SHORE = _pair("清晰平稳的男声,海岸电台值班员,隔着无线电的温和干练",
|
||||
"清晰平稳的女声,海岸电台值班员,隔着无线电的温和干练")
|
||||
|
||||
KEEPER_K_LINES = [
|
||||
# ---- G1 开场(2) ----
|
||||
("b_open", _KEEPER, "白角灯塔,风暴夜。我是今晚的守塔人。"),
|
||||
("b_rain", _KEEPER, "浪拍到第七级台阶。雾角两长一短——塔在,我也在。"),
|
||||
# ---- C1 幕一(8) ----
|
||||
("c1_hold", _KEEPER, "别慌。我在白角,哪儿也不去。慢慢说。"),
|
||||
("c1_ask", _KEEPER, "顺发号,报你的方位,报进水的速度。"),
|
||||
("c1_open", _KEEPER, "父亲的钥匙,就在抽屉里。灯座第三级,开了。"),
|
||||
("rev_teach", _KEEPER, "听到唱针落下、风声退后,是回忆。风声回来,就是现在。"),
|
||||
("rev_g1", _KEEPER, "唱针落下。四十年前,也是这盏灯下。"),
|
||||
("rev_g4", _KEEPER, "风声回来了。爷爷,我听见了。"),
|
||||
("c1_diary", _KEEPER, "暗格里是祖父的日志。缺了最后一页。"),
|
||||
("c1_focus", _KEEPER, "先守住这盏灯。旧账,天亮再算。"),
|
||||
# ---- C2 幕二(9) ----
|
||||
("c2_song", _KEEPER, "跟我念:浪头过,船头抬。浪头退,船头落。"),
|
||||
("rev_f1", _KEEPER, "唱针又落下了。十二年前,也是这样的风。"),
|
||||
("rev_f5", _KEEPER, "风声回来了。那扇门,留到今天。"),
|
||||
("c2_key", _KEEPER, "父亲桌上那支手电,尾盖里卷着一页纸。"),
|
||||
("c2_shore", _KEEPER, "岸台,记下他的船位。请渔政天亮前到。"),
|
||||
("c4_true", _KEEPER, "我父亲也是守塔人。十二年前风暴夜,他出海救人,没有回来。"),
|
||||
("c4_pass", _KEEPER, "家里人?都在大陆。这行当,习惯了。"),
|
||||
("c5_patch", _KEEPER, "拿堵漏垫顶住裂缝。人守在电台边,我一直在。"),
|
||||
("c5_suit", _KEEPER, "穿上救生衣,带上信号灯,站到甲板上去。"),
|
||||
# ---- C3 幕三(11) ----
|
||||
("c3_page", _KEEPER, "手电的尾盖旋开了。那页纸,在灯下摊平。"),
|
||||
("rev_c1", _KEEPER, "唱针落下。缺的那一页,自己开了口。"),
|
||||
("rev_c5", _KEEPER, "风声回来了。原来那道家规,是这么来的。"),
|
||||
("c6_shut", _KEEPER, "合上。守塔人的事,守塔人自己扛。"),
|
||||
("c7_go", _KEEPER, "机械上满发条,灯能自己转到天亮。等着我。"),
|
||||
("c7_go2", _KEEPER, "发条……我只上了半卷。快去,快回。"),
|
||||
("c7_hold", _KEEPER, "顺发号,听我的。灯照着的那条道,跟我念,一步一步来。"),
|
||||
("c8_song", _KEEPER, "他爷爷传下的渔歌……在哪?再唱一遍!"),
|
||||
("c8_math", _KEEPER, "坐标向东两百米。灯光扫过去,看见救生衣了!"),
|
||||
("c8_old", _KEEPER, "走老航道。多绕半里,绕开所有的暗礁。"),
|
||||
("c8_new", _KEEPER, "数三个浪头,借着风的角度,钻新缝!"),
|
||||
# ---- D9 签收(4) ----
|
||||
("g9_knot", _KEEPER, "十二年了。这一晚,我总算替父亲,站完了他的班。"),
|
||||
("d9_tell_a", _KEEPER, "四十年前守塔的,是我爷爷。他离灯去救自己的儿子。灯灭那刻,回澜号……对不住。"),
|
||||
("d9_tell_b", _KEEPER, "我只知道,那晚守塔的是我爷爷,灯灭过一下。剩下的,我也不敢说全。"),
|
||||
("d9_keep", _KEEPER, "那晚风太大,灯出了点故障。别再问了,孩子,回家吧。"),
|
||||
# ---- EP 结局主句+钩子(8) ----
|
||||
("e1_a", _KEEPER, "天亮了。他在门厅睡熟,那页纸攥在手里。灯,亮到了最后一刻。"),
|
||||
("e1_b", _KEEPER, "回澜号的账,翻开了第一页。这座塔,等了四十年。"),
|
||||
("e2_a", _KEEPER, "他走的时候,天刚亮。我送到码头,什么也没说。"),
|
||||
("e2_b", _KEEPER, "缺页放回灯底。有些东西,再压一代人。灯,还转着。"),
|
||||
("e3_a", _KEEPER, "我把知道的,都说了。他望着海,半信半疑地点头。"),
|
||||
("e3_b", _KEEPER, "碎片也是真话。剩下的,让海自己讲吧。"),
|
||||
("e4_a", _KEEPER, "天亮,各自归位。他回他的港,我守我的灯。"),
|
||||
("e4_b", _KEEPER, "隔着一道海,两座塔,谁也没再提那晚。"),
|
||||
]
|
||||
|
||||
KEEPER_S_LINES = [
|
||||
# ---- G0.a 操作提示句(7,_k 变体在 KEY_LINES) ----
|
||||
("gd_brief", _SHORE, "单击,继续值守。要选择时,向左或向右滑。"),
|
||||
("gd_continue", _SHORE, "单击屏幕,继续。"),
|
||||
("gd_again", _SHORE, "还在吗?单击继续。"),
|
||||
("sys_help", _SHORE, "单击继续,双击重新听。上滑听状态,下滑开菜单。选择时,左右滑。"),
|
||||
("sys_menu", _SHORE, "菜单。单击切换选项,双击确认。"),
|
||||
("sys_skip", _SHORE, "想跳过这句,单击就行。"),
|
||||
("sys_continue_ask", _SHORE, "检测到你的值守记录。单击继续上次,右滑开始新的风暴夜。"),
|
||||
# ---- G0.b 状态/系统句(20) ----
|
||||
("gd_invalid", _SHORE, "这个手势,塔里用不上。"),
|
||||
("gd_prog1", _SHORE, "滑动这里用不上。想想岸台刚说的话。"),
|
||||
("gd_prog2", _SHORE, "别乱。停一停,再听一遍。"),
|
||||
("sys_menu_resume", _SHORE, "回到值守。"),
|
||||
("sys_menu_restart", _SHORE, "重新开始今夜。"),
|
||||
("sys_menu_lobby", _SHORE, "保存并回大厅。"),
|
||||
("sys_settings", _SHORE, "音色、语速、背景音乐,请回大厅修改。"),
|
||||
("sys_new_night", _SHORE, "新的风暴夜,开始了。"),
|
||||
("prog_m1", _SHORE, "风暴起来了。今晚第一程。"),
|
||||
("prog_m2", _SHORE, "风暴到顶。第二程。"),
|
||||
("prog_m3", _SHORE, "风在退。最后一程。"),
|
||||
("prog_mem_g", _SHORE, "这是回忆:祖父的年代,四十年前。"),
|
||||
("prog_mem_f", _SHORE, "这是回忆:父亲的最后一晚,十二年前。"),
|
||||
("tr_deep", _SHORE, "他把命,交给了你的声音。"),
|
||||
("tr_half", _SHORE, "他信一半,疑一半。"),
|
||||
("tr_thin", _SHORE, "今晚,他只信自己的手。"),
|
||||
("tru_zero", _SHORE, "旧账压在灯底,你一页没翻。"),
|
||||
("tru_one", _SHORE, "灯下的旧账,你翻开了一角。"),
|
||||
("tru_two", _SHORE, "祖父和父亲的事,你都翻到了。"),
|
||||
("tru_full", _SHORE, "三代人的账,今夜见底了。"),
|
||||
# ---- G1 开场(2) ----
|
||||
("b_rule", _SHORE, "岸台的规矩就一条:风暴夜,灯不能灭。"),
|
||||
("b_goal", _SHORE, "今夜两艘货轮过境。守住灯,也守住频道。"),
|
||||
# ---- C1 幕一(8,含 p1) ----
|
||||
("c1_tune", _SHORE, "频道里有动静。很轻,像隔着整片海。"),
|
||||
("p1", _SHORE, "他的声音在抖。向左滑,先接住这个人。向右滑,先要他的船位。"),
|
||||
("c1_holde", _SHORE, "他喘匀了。先接人,再办事。"),
|
||||
("c1_aske", _SHORE, "他更慌了。人没接住,数字也乱。"),
|
||||
("p2", _SHORE, "他提到四十年前。向左滑,去翻灯座下的暗格。向右滑,先专心守灯。"),
|
||||
("c1_focuse", _SHORE, "灯转得稳。可那句「灭过一下」,留在了你耳朵里。"),
|
||||
("lull_1", _SHORE, "岸台通报:风加到十级。第一程,过去了。"),
|
||||
# ---- C2 幕二(7) ----
|
||||
("c2_back", _SHORE, "频道又响了。顺发号的引擎,时断时续。"),
|
||||
("p3", _SHORE, "他快撑不住了。向左滑,用守塔人的口诀带他稳船。向右滑,把船位报给岸台。"),
|
||||
("c2_shoreo", _SHORE, "船位落在图上了。渔政的船,最快也要天亮。"),
|
||||
("p4", _SHORE, "他问起你的人。向左滑,告诉他真话。向右滑,轻轻带过。"),
|
||||
("c2_crack", _SHORE, "听!他那边,船板裂了!"),
|
||||
("p5", _SHORE, "船在漏。向左滑,让他回舱堵漏,守住电台。向右滑,让他穿救生衣,上甲板。"),
|
||||
("lull_2", _SHORE, "风眼凌晨过境。第二程,到顶了。"),
|
||||
# ---- C3 幕三(12) ----
|
||||
("c3_eye", _SHORE, "风眼过了。最后的浪墙,就跟在后面。"),
|
||||
("m6_seal", _SHORE, "那些旧东西,你今晚没碰过。缺页的事,你一无所知。"),
|
||||
("p6", _SHORE, "祖父的最后一页。向左滑,今晚就读完它。向右滑,合上,塞回灯底。"),
|
||||
("c6_reade", _SHORE, "四十年,两代人,一条规矩。今晚,轮到你选了。"),
|
||||
("p7", _SHORE, "浪墙压过来了。向左滑,给灯上满发条,驾接驳艇去接他。向右滑,守着灯,用声音引他过礁。"),
|
||||
("c3_wall", _SHORE, "浪墙起来了!就是现在!"),
|
||||
("p8_boat", _SHORE, "海上没有灯。向左滑,循着他哼的渔歌找他。向右滑,按推算的坐标,直线搜。"),
|
||||
("p8_reef", _SHORE, "礁缝两道口。向左滑,走老航道,稳但绕远。向右滑,钻新缝,近但冒险。"),
|
||||
("c9_return", _SHORE, "接驳艇回来了。两个人,一身水,一盏灯。"),
|
||||
("c3_dark", _SHORE, "你离塔的时候,发条走到了头。灯,灭过一刻钟。过境的货轮,平安。"),
|
||||
("c9_land", _SHORE, "顺发号过了礁缝,搁上背风湾的滩。人,站上了岸。"),
|
||||
("c9_found", _SHORE, "他在半路改了主意。天亮时,渔队找到了他。活着,湿透了。"),
|
||||
# ---- D9 签收(5) ----
|
||||
("g9_in", _SHORE, "风,一层一层退下去。天边,有点灰了。"),
|
||||
("p9a", _SHORE, "他问起四十年前的灯。向左滑,把缺页的事,连根说给他。向右滑,就说,那晚风太大。"),
|
||||
("p9b", _SHORE, "他问起四十年前的灯。你知道的,只有碎片。向左滑,把碎片给他。向右滑,说风太大。"),
|
||||
("d9_telle", _SHORE, "他听完,沉默了很久。天,亮了。"),
|
||||
("d9_keepe", _SHORE, "这个话题,沉回了海里。天,亮了。"),
|
||||
# ---- EP 尾声回响(11) ----
|
||||
("ep_lead", _SHORE, "风停了。岸台给你记一笔——这一晚,后来怎样了。"),
|
||||
("ep_amo_home", _SHORE, "阿澈:那晚之后改跑日班。他说,夜里的海,有守塔人听着。"),
|
||||
("ep_amo_solo", _SHORE, "阿澈:自己把船开上了背风湾。船主骂了船,没骂人。"),
|
||||
("ep_amo_dawn", _SHORE, "阿澈:抱着冷藏柜漂到天亮。打那以后,出海带两台电台。"),
|
||||
("ep_lamp_full", _SHORE, "灯塔记录簿:你离塔三刻,灯自己转着。父亲的发条,说中了。"),
|
||||
("ep_lamp_dark", _SHORE, "灯塔记录簿:凌晨两点,灯灭一刻钟。那一行,你写得格外用力。"),
|
||||
("ep_lamp_hold", _SHORE, "灯塔记录簿:转灯整夜未停。你一步,也没离开过它。"),
|
||||
("ep_log_told", _SHORE, "灯下的旧账,今夜见了光。"),
|
||||
("ep_log_kept", _SHORE, "灯下的旧账,又压回了黑暗里。"),
|
||||
("ep_dad", _SHORE, "值班表上,你替十二年前那个班次签了字。老陈,收工了。"),
|
||||
("ep_shore", _SHORE, "岸台晨报:风暴过境,航道平安。白角灯,正常。"),
|
||||
]
|
||||
|
||||
KEEPER_LINES = KEEPER_K_LINES + KEEPER_S_LINES
|
||||
|
||||
# NPC 单音色平铺(id, speaker, instruct, 台词)→ web/keeper/audio/voice/<id>.*
|
||||
#(转码时按 21b 头注滤波表带通,见 NPC_BANDPASS["keeper"];staging 保留未滤波原声)。
|
||||
_AMO = "年轻男声,二十二岁渔民,海风养出的嗓子,风暴里喊话,慌而不乱"
|
||||
_DAD = "温和低沉的男声,四十岁守塔人,隔着老唱片,疲惫而坚定"
|
||||
_GRAND = "苍老缓慢的男声,七十岁老守塔人,隔着更老的唱片,字字压秤"
|
||||
KEEPER_NPC = [
|
||||
# 阿澈(22 岁渔民,现在线·电台,Dylan,19 句)
|
||||
("amo_a", "Dylan", _AMO, "……有人吗……顺发号……船进水了……"),
|
||||
("amo_b", "Dylan", _AMO, "白角塔!是你吗?求你,回个话!"),
|
||||
("c1_holdo", "Dylan", _AMO, "……好,好。你在。我听见了。"),
|
||||
("c1_asko", "Dylan", _AMO, "方位……仪表进水了,我,我看不清……"),
|
||||
("amo_c", "Dylan", _AMO, "我爷爷,四十年前也是在这片海没的。他说,白角的灯灭过一下。"),
|
||||
("amo_d", "Dylan", _AMO, "塔……听得到吗?水,到膝盖了。"),
|
||||
("c2_songo", "Dylan", _AMO, "浪头过,船头抬……真的稳了些!这口诀,谁教你的?"),
|
||||
("amo_e", "Dylan", _AMO, "守塔人……塔里就你一个人?家里人不拦着你干这行?"),
|
||||
("c4_trueo", "Dylan", _AMO, "……对不起。难怪今晚,你一直都在。"),
|
||||
("c4_passo", "Dylan", _AMO, "哦……你也是一个人守夜。我们俩,隔着一道海。"),
|
||||
("amo_f", "Dylan", _AMO, "裂了!水进得更快了。塔,告诉我怎么办!"),
|
||||
("c5_patcho", "Dylan", _AMO, "顶住了!水慢下来了。我不走,守着电台。"),
|
||||
("c5_suito", "Dylan", _AMO, "穿好了。要是船散了,我就抱着它漂。"),
|
||||
("c8_songo", "Dylan", _AMO, "海风那个吹呀——塔!是你吗?我在这儿!"),
|
||||
("c8_matho", "Dylan", _AMO, "塔!你的灯扫到我啦!我在这边!"),
|
||||
("c8_oldo", "Dylan", _AMO, "老航道……我爷爷念叨过这条道!稳了!"),
|
||||
("c8_newo", "Dylan", _AMO, "一个,两个,三——过去了!塔,我过来了!"),
|
||||
("amo_g", "Dylan", _AMO, "……我爷爷,就在那七个人里。难怪他到死,都念着白角的灯。"),
|
||||
("amo_h", "Dylan", _AMO, "风太大……嗯。那晚的风,一定很大。"),
|
||||
# 父亲(回忆·十二年前,Uncle_Fu,3 句)
|
||||
("rev_f2", "Uncle_Fu", _DAD, "白角塔,我是老陈。接驳艇上两个人,都活着。"),
|
||||
("rev_f3", "Uncle_Fu", _DAD, "守塔人听见了求救,就不能装没听见。等我回来。"),
|
||||
("rev_f4", "Uncle_Fu", _DAD, "塔上的机械上满发条,能自己转一夜。给我留着门。"),
|
||||
# 祖父(回忆·四十年前,Eric,5 句)
|
||||
("rev_g2", "Eric", _GRAND, "手稳住。灯罩擦到第三遍,才算干净。"),
|
||||
("rev_g3", "Eric", _GRAND, "记住,灯下压着的东西,比灯重。守塔人,替它守一辈子。"),
|
||||
("rev_c2", "Eric", _GRAND, "我写下这些,等一个敢看的人。那晚,我的儿子,偷了接驳艇。"),
|
||||
("rev_c3", "Eric", _GRAND, "我去追他。灯,离了人。半个时辰,回澜号,七个人。"),
|
||||
("rev_c4", "Eric", _GRAND, "儿子回来了。这页我撕下来,压进灯底。守塔人,不能离灯。"),
|
||||
]
|
||||
|
||||
NPCS = {"rpg": RPG_NPC, "radio": RADIO_NPC, "abyss": ABYSS_NPC, "detective": DETECTIVE_NPC,
|
||||
"hunt": HUNT_NPC}
|
||||
"hunt": HUNT_NPC, "cipher": CIPHER_NPC, "bridge": BRIDGE_NPC, "teahouse": TEAHOUSE_NPC,
|
||||
"keeper": KEEPER_NPC}
|
||||
|
||||
# ---------------------------------------------------------------- 键盘变体(P1 路线 a)
|
||||
# 「生效输入模式=键盘」的玩家听按键措辞:向左滑→按左方向键(四向同理,WASD 不进
|
||||
@@ -1641,6 +2362,59 @@ KEY_LINES = {
|
||||
("end_again", "按空格,再猎一局。"),
|
||||
("gd_idle", "听声音的方向,按方向键。"),
|
||||
],
|
||||
# cipher:11 对(19-cipher-voice-ids.md §G0.a 9 对 + §M1 dv1_teach2/p2;措辞
|
||||
# 「左右方向键/上箭头/下箭头/左箭头/右箭头」为文档原文,与 hunt「方向键」系各文档定稿措辞)。
|
||||
"cipher": [
|
||||
("gd_brief", "按空格继续值机。要选词时,用左右方向键。"),
|
||||
("gd_continue", "按空格,继续。"),
|
||||
("gd_again", "还在吗?按空格继续。"),
|
||||
("gd_tune1", "电文在等。左右方向键,听候选词。"),
|
||||
("gd_tune2", "按回车,把电文再听一遍。再按一次,会放慢。"),
|
||||
("sys_help", "空格选定,回车重新听电文。上箭头听状态,下箭头开菜单。选择时,左右箭头。"),
|
||||
("sys_menu", "菜单。空格切换选项,回车确认。"),
|
||||
("sys_skip", "想跳过这句,按空格。"),
|
||||
("sys_continue_ask", "检测到你的值机记录。空格继续上次,右箭头开始新的夜班。"),
|
||||
("dv1_teach2", "左右方向键,听密码本上的候选词。空格,选定一个。"),
|
||||
("p2", "药品船,丑时过江。左箭头,把船期报给北风。右箭头,压进值机日志。"),
|
||||
],
|
||||
# bridge:V 组 10 对(22-bridge-voice-ids.md §V 组;措辞「方向键/空格/回车」同 hunt 规范)。
|
||||
"bridge": [
|
||||
("sys_help", "巡航中,上键巡检全舰;危机中,方向键听选项,空格下令。下键菜单,回车重新听。"),
|
||||
("tut_d0", "先试巡检。按上键,听全舰状态。"),
|
||||
("tut_decide", "方向键听选项,空格下令。"),
|
||||
("cr_decide", "听选项,空格下令。"),
|
||||
("dock_open", "靠港整备。方向键看项目,空格执行。"),
|
||||
("gd_cruise", "还在巡航。上键,巡检全舰。"),
|
||||
("gd_decide", "还在等命令。方向键,听选项。"),
|
||||
("gd_dock", "还在整备。方向键看,空格执行。"),
|
||||
("sys_continue_ask", "检测到未完成的巡逻。空格继续,右方向键进星港。"),
|
||||
("settle_hook", "星港期待你的下一次巡逻。按空格,返航。"),
|
||||
],
|
||||
# teahouse:V 组 10 对(20-teahouse-voice-ids.md §V 组;措辞「方向键/空格/回车」同 hunt 规范)。
|
||||
"teahouse": [
|
||||
("sys_help", "方向键选茶,空格定下。听水声,回车提壶;滴答密,回车出汤。上键状态,下键菜单。"),
|
||||
("tut_d0", "先看茶柜。左右方向键,一罐一罐听。"),
|
||||
("tut_tea", "空格,选定这罐茶。"),
|
||||
("tut_water", "灶上坐水。泡泡细密是将沸,咕嘟连片是滚透——听到细密,回车提壶。"),
|
||||
("tut_steep", "注水,闷泡。滴答由稀到密,密起来就是将好——回车,出汤。"),
|
||||
("tut_serve", "茶好了。空格,端出去。"),
|
||||
("gd_serve", "客人还在堂前。上键,再听一遍他要的茶。"),
|
||||
("gd_brew", "还在灶上,听声动手,回车。"),
|
||||
("settle_night", "熄了灯,这一晚就过去了。按空格,睡下。"),
|
||||
("upg_open", "要添置点什么?左右方向键看,空格买定。"),
|
||||
],
|
||||
# keeper:8 对(21-keeper-voice-ids.md §G0.a 7 对 + 首个抉择 p1;措辞「方向键/空格/
|
||||
# 回车/左右箭头」为 21b 文档原文,与 abyss §G0.a 同型,逐字照录不改写)。
|
||||
"keeper": [
|
||||
("gd_brief", "按空格,继续值守。要选择时,用左右方向键。"),
|
||||
("gd_continue", "按空格,继续。"),
|
||||
("gd_again", "还在吗?按空格继续。"),
|
||||
("sys_help", "空格继续,回车重新听。上箭头听状态,下箭头开菜单。选择时,左右箭头。"),
|
||||
("sys_menu", "菜单。空格切换选项,回车确认。"),
|
||||
("sys_skip", "想跳过这句,按空格。"),
|
||||
("sys_continue_ask", "检测到你的值守记录。空格继续上次,右箭头开始新的风暴夜。"),
|
||||
("p1", "他的声音在抖。左箭头,先接住这个人。右箭头,先要他的船位。"),
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
@@ -1676,6 +2450,19 @@ VOICE_SPK["abyss"] = {}
|
||||
VOICE_SPK["abyss"].update({fid: ("Uncle_Fu", "Serena") for fid, _i, _t in ABYSS_DIVER_LINES})
|
||||
VOICE_SPK["abyss"].update({fid: ("Dylan", "Vivian") for fid, _i, _t in ABYSS_DECK_LINES})
|
||||
|
||||
# cipher 双性别行的逐句 speaker 覆盖(OP=报务员玩家 / WIND=北风电台+系统音,19b 录制说明:
|
||||
# female 侧你 Serena / 北风 Vivian、male 侧你 Uncle_Fu / 北风 Dylan,同场景永不同 speaker)。
|
||||
VOICE_SPK["cipher"] = {}
|
||||
VOICE_SPK["cipher"].update({fid: ("Uncle_Fu", "Serena") for fid, _i, _t in CIPHER_OP_LINES})
|
||||
VOICE_SPK["cipher"].update({fid: ("Dylan", "Vivian") for fid, _i, _t in CIPHER_WIND_LINES})
|
||||
|
||||
# keeper 双性别行的逐句 speaker 覆盖(KEEPER=守塔人玩家 / SHORE=岸台值班员+系统音,
|
||||
# 21b 录制说明:female 侧守塔人 Serena/岸台 Vivian、male 侧守塔人 Uncle_Fu/岸台 Dylan,
|
||||
# 同场景高频对话的两者永不同 speaker,radio HOST/PROD / abyss DIVER/DECK 同型)。
|
||||
VOICE_SPK["keeper"] = {}
|
||||
VOICE_SPK["keeper"].update({fid: ("Uncle_Fu", "Serena") for fid, _i, _t in KEEPER_K_LINES})
|
||||
VOICE_SPK["keeper"].update({fid: ("Dylan", "Vivian") for fid, _i, _t in KEEPER_S_LINES})
|
||||
|
||||
# radio 来电者电话滤波(15-radio.md §6.2,全部 + 轻压缩):按 NPC id 前缀分档,
|
||||
# convert 转码时应用;staging wav 保留未滤波原声以便重滤/回退(宁窄勿脏)。
|
||||
NPC_BANDPASS = {
|
||||
@@ -1695,6 +2482,15 @@ NPC_BANDPASS = {
|
||||
("chen_", "highpass=f=400,lowpass=f=3100"), # 陈医官:平静女声
|
||||
("gao_", "highpass=f=300,lowpass=f=2800"), # 高船长:苍老男声,最低最窄
|
||||
],
|
||||
# keeper NPC 滤波(21-keeper-voice-ids.md 头注 §滤波表,全部 + 轻压缩):阿澈=电台
|
||||
# 350-3200;父亲=唱片 300-2800;祖父=唱片 250-2600(三代人频带逐人递减,最老者最窄最「远」)。
|
||||
# 前缀只命中 NPC 平铺表内的 id(锚句 rev_f1/f5、rev_g1/g4、rev_c1/c5 是 KEEPER 双性别行不滤波)。
|
||||
"keeper": [
|
||||
("amo_", "highpass=f=350,lowpass=f=3200"), # 阿澈:年轻渔民电台嗓
|
||||
("rev_f", "highpass=f=300,lowpass=f=2800"), # 父亲:中年男声,老唱片
|
||||
("rev_g", "highpass=f=250,lowpass=f=2600"), # 祖父(插叙1):苍老男声,更老唱片
|
||||
("rev_c", "highpass=f=250,lowpass=f=2600"), # 祖父(插叙3):同档
|
||||
],
|
||||
}
|
||||
_NPC_ACOMP = "acompressor=threshold=-20dB:ratio=3:attack=10:release=150" # 轻压缩(全档)
|
||||
|
||||
@@ -1719,6 +2515,10 @@ GAMES = {
|
||||
"abyss": ABYSS_LINES,
|
||||
"detective": DETECTIVE_LINES,
|
||||
"hunt": HUNT_LINES,
|
||||
"cipher": CIPHER_LINES,
|
||||
"bridge": BRIDGE_LINES,
|
||||
"teahouse": TEAHOUSE_LINES,
|
||||
"keeper": KEEPER_LINES,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user