Files
SoundGame/docs/design/15-radio-voice-ids.md
T
xsl ee5d4d2544 feat(playbook): 26 号交互手册全量落地——剩余 12 款深度重构 + 语音全量重制
storyline/escape/simon 首批之后的推广收官:15 款全部按 26 号模式运行
(发言权/回执/三档提示/迷茫接管/手势阶梯/断点复述),旧「双击重听/格挡/
菜单确认」等反模式口径全线废除,开场零规则念白(首句即动手)。

游戏层(12 款):rpg(格挡=前摇窗口内再单击)/ rhythm / space / radio /
dungeon / abyss / detective / cipher / teahouse / keeper / bridge /
hunt(联机切片):
- 每款 game.js 接引擎六模块 + makeInputPipeline(doubleTapWindow:0);
  四向玩法类 swipeCore + 长按帮助;双击是玩法的(space 护盾 / hunt
  旋风斩)按手势阶梯阶段 3 分档恢复双击窗口(doubletapCore)
- 每款 playtest 重写:玩法断言 + §6.2 乱点机器人(无声操作 / 被动
  原句重复 / 打断失败 = 0);15 款 3900+ 断言全绿
- 12 份 docs/design/26-apply-*.md 施工单 + tools/voice_lines_26/
  台词清单 + voice-ids 文档同步 + 转写会话剧本按新口径重写

引擎层(web/engine/,6 处修复):pipeline 增 doubletapCore;novice
teachLine 带 voice/ 前缀(此前教学句被静默丢弃);confusion.record
前置到新手门(锁定手势的乱点也计信号);InvalidHints 播完恢复解释前
状态(根治孤儿 BUSY);WaitPoint takeover(2) 台账去重;台账只在
speak 真正播出时登记。遗留引擎债登记 roadmap §3.1。

语音资产:台词表合并(新增 ~250 系统句 / 改 ~50 旧口径 / 删 ~110
废止句;合并器 tools/merge_voice_lines_26.py + 引用校验器
tools/validate_voice_refs.py),GPU 重录 1536 wav → 4204 ogg/m4a
落地,check_all_assets + validate_voice_refs 双绿;键盘变体同步扩表。

大厅/文档:15 款统一新交互口径(「新交互」徽标退役);README /
HANDOVER / rpg README 旧口径修正;roadmap P0-P3 置完成。
2026-10-02 12:33:20 +08:00

30 KiB
Raw Blame History

15b · 《不眠频率》(radio) 语音台词表(voice ids,录音依据)

26 号对齐(资产清单,不是交互宪法)

  • 交互与新手手势以 26-audio-interaction-playbook.md 和对应游戏正文为准。
  • 本表仍是 TTS id 事实源的登记副本(生成以 tools/gen_voice_dual.py 为准)。含「双击重听 / 双击使用 / 双击格挡 / 单击循环菜单」的句子 停用或按游戏正文重录。
  • 写作:指令 ≤12 字,短句档 ≤6 字,叙事 ≤25 字;每句标 critical / content / hint / feedback。游戏主动提示不得原样重复;重听前加「再说一遍:」。
  • 键盘变体:新手期回车当空格(单击)。删除「按回车=重听」类旧口径,或仅在阶段 3 解锁双击后启用。
  • 共用新句见 14-guide-layer.md §7(sys_first_tap 等)。各游戏 _full / _short 在游戏正文设计单里点名,补进本表后再进生成脚本。

给音频总监的录制说明

  • 双性别组(主播 HOST + 导播/系统 PROD,103 句):落 web/radio/audio/voice/female|male/<id>.{ogg,m4a},两性别 id 集合完全一致。
    • HOST(主播=玩家):female = Serena,instruct 常量 温暖清晰的年轻女声,深夜电台主播,沉稳亲切,不甜腻;male = Uncle_Fu,instruct 常量 低沉温和的中年男声,深夜电台主播,沉稳亲切,有磁性。
    • PROD(导播/系统音/向导 gd_*):female = Vivian,instruct 常量 贴近耳机的低语女声,年轻电台导播,冷静克制;male = Dylan,instruct 常量 贴近耳机的低语男声,年轻电台导播,冷静克制。
    • 区分度设计:主播(播音腔,对外广播)与导播(贴耳低语,只进你耳机)共用 speaker 池但不同 speaker 配对——female 侧主播 Serena / 导播 Vivian、male 侧主播 Uncle_Fu / 导播 Dylan,同场景高频对话的两者永不同 speaker。
  • NPC 平铺组(29 句):单音色、不做双性别,平铺落 web/radio/audio/voice/<id>.{ogg,m4a}(引擎平铺回退命中),转码时按 §通话滤波 加带通。NPC 共 5 人(≤5 约束),同一角色 speaker+instruct 恒定,区分度风险逐个标注:
    角色 speaker instruct 常量 区分度风险
    老周(75 岁走丢老人) Uncle_Fu 苍老沙哑的男声,七十五岁,疲惫害怕,带着雨夜的颤抖 中:与 male 主播同 speaker,靠年龄感 instruct + 电话滤波(500-2800Hz)区分,请试听确认
    小鹿(想退票的年轻人) Serena 年轻女声,倔强,带着哭腔,疲惫 中:与 female 主播同 speaker,靠哭腔 instruct + 电话滤波区分,请试听确认
    糖糖(失眠的孩子) Vivian 稚嫩童声,八岁小女孩,困倦,胆怯 低:与 female 导播同 speaker,童声 vs 成年低语,且从不同场
    陈姐(争吵的夫妻·妻) Vivian 疲惫沙哑的中年女声,四十五岁,强撑着平静 低:与糖糖/导播同 speaker 不同 instruct,三者从不同场,请试听确认
    老韩(雨夜司机) Eric 沙哑粗犷的中年男声,货车司机,困倦强撑 低:male 侧唯一 Eric
  • 通话滤波(转码侧):NPC 全部走带通(参数见 15-radio.md §6.2:老周 500-2800 / 小鹿 400-3400 / 糖糖 450-3000 / 陈姐 420-3100 / 老韩 300-3400,均 + 轻压缩);HOST/PROD 不滤波。试听不可读的句子回退未滤波原声(宁窄勿脏)。
  • 称呼规则:来电者对主播的称呼一律中性(「主播」「您」),全表禁用「闺女/小哥/叔叔/阿姨/大姐头」类性别化称呼(主播性别随用户设置变化);「大姐/姑娘」仅可作来电者的自称或被导播描述。
  • 数字规避:序号/口碑全部分档整句(prog_c1..c5、rep_*);句内数字(十一点半、三公里、四十分钟前)写死在整句里,禁止运行时拼接。
  • 禁语速词:instruct 不含任何语速描述(引擎 SoundTouch 变速);NPC 句靠短句+逗号停顿实现「语速放缓」听感。
  • 管线:tools/gen_voice_dual.py 照录(SPEAKERS 表需新增 radio 行);多音字自查见文末注记。

G0 组 · 系统/向导/状态(PROD 双性别 ×24)

id 台词全文 触发
gd_brief 单击继续节目。请选择的时候,向左或向右滑。 开场链最前(full 档,F8 先例)
gd_continue 单击屏幕,继续。 叙事链末静默看门狗第 1 级(full 25s / standard 13s)
gd_again 还在吗?单击继续。 看门狗第 2 级(50s / 30s),新句不逐字重播
gd_invalid 这个手势,直播间里用不上。 无效手势(error 震,idle-only,同局限次)
gd_ring1 热线在闪。单击,接听。 RING 静默 10s(第 1 级)
gd_ring2 灯还亮着,听众在等。单击,接听。 RING 静默 25s(第 2 级,必须与第 1 级不同句)
sys_help 单击继续,双击重新听。上滑听状态,下滑开菜单。请选择时,左右滑。 上滑帮助 / 菜单内上滑
sys_menu 菜单。单击切换选项,双击确认。 下滑呼出模态菜单
sys_menu_resume 回到直播。 菜单项
sys_menu_restart 重新开始今晚。 菜单项
sys_menu_lobby 保存并回大厅。 菜单项(确认后跳转前播)
sys_settings 音色、语速、背景音乐,请回大厅修改。 菜单内设置提示
sys_skip 想跳过这句,单击就行。 开场每局一次(skip_hint 先例)
sys_continue_ask 检测到你的夜班记录。单击继续上次,右滑开始新的夜晚。 有存档进游戏
sys_new_night 新的夜晚,开始了。 新夜班开始 / 菜单重开
sys_saved 进度已保存。 存档写入后
prog_c1 现在是今晚第一通电话。 上滑状态链(按当前通号选播)
prog_c2 现在是今晚第二通电话。 同上
prog_c3 现在是今晚第三通电话。 同上
prog_c4 现在是今晚第四通电话。 同上
prog_c5 现在是今晚第五通电话。 同上
rep_high 今晚的口碑,在听众里立住了。 口碑跨入 ≥5 档(BRIDGE 被动播报)
rep_mid 今晚的口碑,不好不坏。 口碑回落 1-4 档
rep_low 今晚的口碑,还没立起来。 口碑 ≤0 档(零起步语义,R2 F2 改词:rep=0 开播前不再读成「砸了」;附 warning 震动)

G1 组 · 开场(双性别 ×4)

id 声部 台词全文 触发
b_open 主播 午夜零点,红灯亮起。欢迎回到《今夜不眠》。 INTRO(配 sfx/onair_sting)
b_rain 主播 雨下了一整晚。热线灯,马上就要亮了。 INTRO
b_rule 导播 台里的规矩就一条:先接住人,再接电话。 INTRO(一句规矩,P4)
b_goal 导播 今晚五通电话。说什么话,由你决定。 INTRO,随后第一声铃

C1 组 · 第一通·老周(走丢的老人)(双性别 13 + 老周平铺 7 = 20)

id 声部 台词全文 触发
z1_ring_in 导播 一线来电。七十多岁,雨夜,走丢了。 接听后线路引入(配 line_connect)
z1_a 老周 主播……我,我找不到回家的路了。 通话主干
z1_b 老周 雨太大了。我本来,只想买副老花镜。 通话主干(垫 amb_rain_city)
p1 导播 老人在发抖。向左滑,陪他哼那首老歌。向右滑,冷静问他路口的路牌。 抉择提示(播完即可选)
z1_song 主播 大爷别急,这首歌我也会。咱们一句一句来。 p1 左(称呼「大爷」指对方,中性合规)
z1_songo 老周 对,对!路口修车铺,天天放这首! p1 左·反应(正反馈:声音稳住)
z1_sdone 导播 他稳住了。老歌,比路牌管用。 p1 左·收
z1_ask 主播 大爷,路口有什么招牌?念一个给我听听。 p1 右
z1_asko 老周 招牌……雨糊住了,我眼花,看不清啊…… p1 右·反应(慌)
z1_adone 导播 他慌了。先接住情绪,再走流程。 p1 右·收(即时纠偏,非归因)
p2 导播 雨声更密了。向左滑,留在原地陪他等巡逻队。向右滑,转接派出所。 抉择提示
z1_stay 主播 哪儿也不去。我陪你,这首歌还长着呢。 p2 左
z1_stayo 老周 好,好。有人说话,我就不怕了。 p2 左·反应
z1_staye 导播 十五分钟后,巡逻灯停在路口。全城听见老人笑了。 p2 左·收(数字整句内嵌)
z1_pol 主播 大爷,我把您转给派出所,他们马上就到。 p2 右(p1=左 时)
z1_polo 老周 好,好。谢谢你啊,谢谢。 p2 右·反应
z1_pole 导播 转接完成,地址报得清。干净利落。 p2 右·收(p1=左 时)
z1_bad 老周 说不清……我真是,说不清了…… p2 右(仅 p1=右 时,替代 z1_polo/z1_pole 前段)
z1_bade 导播 地址没报清就转接,雨又大。这通砸了。先稳人,再办事。 归因句(真话律:指向玩家实际两连选)
z1_ok1 导播 就这么接。记住这个手感。 首通成功收尾确认(全局一次,成功后无其他教学)

C2 组 · 第二通·小鹿(想退票的年轻人)(双性别 6 + 小鹿平铺 4 = 10)

id 声部 台词全文 触发
l1_in 导播 二线来电。姑娘,声音很轻,像怕吵到谁。 接听引入(「姑娘」描述来电者,合规)
l1_a 小鹿 主播,退票窗口十一点半就关了。我站这儿半小时了。 通话主干(垫 amb_station)
l1_b 小鹿 票是回去看我妈的。可我试镜又黄了,两手空空…… 通话主干
p3 导播 向左滑,告诉她这趟车值得上。向右滑,把选择还给她。 抉择提示
l1_go 主播 你妈等的不是奖杯,是你进门喊的那声妈。 p3 左
l1_goo 小鹿 呜……嗯。不退了,我现在就去检票。谢谢您。 p3 左·反应
l1_goe 导播 二线收工。这句话,值一个头条。 p3 左·收
l1_free 主播 退不退,都是你的自由。夜还长,慢慢想。 p3 右
l1_freeo 小鹿 嗯……我再想想。窗口要关了,我先过去了。 p3 右·反应
l1_freee 导播 她走了。没上车,也没退票。年轻人的夜,长了点。 p3 右·收

C3 组 · 第三通·糖糖(失眠的孩子)(双性别 10 + 糖糖平铺 6 = 16)

id 声部 台词全文 触发
k1_in 导播 三线来电。听呼吸,是个小孩。 接听引入
k1_a 糖糖 喂……有人吗?我睡不着。 通话主干(垫 amb_kid_room)
k1_b 糖糖 家里灯关了。可是楼下,一直有声音。 通话主干(配 sfx/arg_muffled 线索音)
p4 导播 向左滑,唱一段摇篮曲哄她睡。向右滑,轻轻问她怎么了。 抉择提示
k1_lull 主播 闭上眼睛。风把云朵盖在被子上,月亮替你值夜班。 p4 左(错过线索路线)
k1_lullo 糖糖 月亮也睡了……那我也睡。 p4 左·反应
k1_lulle 导播 睡着了。可你没听见,她在怕什么。 p4 左·收(诚实复盘,非惩罚)
k1_ask 主播 睡不着的时候,心里是不是装着事?说给我听听。 p4 右(置 heardArgument=true)
k1_asko 糖糖 爸爸妈妈摔门了。是不是……我做错了什么呀。 p4 右·反应
p5 导播 孩子的声音在抖。向左滑,告诉她这不是她的错。向右滑,答应她明天都会好。 抉择提示(仅 p4=右 可达)
k1_truth 主播 糖糖,记住,大人的事,不是小孩的错。一个字都不是。 p5 左
k1_trutho 糖糖 嗯……那我睡了。他们明天,会一起给我切蛋糕吗? p5 左·反应
k1_truthe 导播 蛋糕。记下来——四线的来电,可能跟这个家有关。 p5 左·收(flag 预告)
k1_lie 主播 睡吧。明天一睁眼,什么都会好起来的。 p5 右(善意谎言)
k1_lieo 糖糖 真的吗?拉钩。晚安…… p5 右·反应
k1_liee 导播 你许了个兑不了的现。孩子睡了,谎留下了。 p5 右·收(诚实复盘)

C4 组 · 第四通·陈姐(争吵的夫妻)(双性别 13 + 陈姐平铺 7 = 20)

id 声部 台词全文 触发
w1_in 导播 四线来电。户外风声大,是位大姐。 接听引入(垫 amb_street_rain)
w1_a 陈姐 主播,我就想找个人说说。我家那口子,今晚要出远门的活儿。 通话主干
w1_b 陈姐 明天孩子生日!蛋糕都订好了,他人要今晚走! 通话主干
p6 导播 摔门声你听见了。向左滑,替孩子给她带句话。向右滑,劝她回家把话说开。 抉择提示(固定文本,两条件路线共用)
w1_say 主播 四十分钟前,有个孩子问我们:爸妈摔门,是不是她的错。 p6 左·条件 heardArgument=true
w1_sayo 陈姐 什么?她还没睡?这么晚了,她还醒着? w1_say·反应
w1_saye 导播 她攥着电话,很久没出声。风都停了。 w1_say·收
w1_say2 主播 今天有位小朋友,还在等爸妈回家切蛋糕。 p6 左·条件 heardArgument=false
w1_say2o 陈姐 蛋糕……是他订的。他嘴上不说,心里都记着。 w1_say2·反应
w1_say2e 导播 话递到了。就差最后一脚。 w1_say2·收
p7 导播 她的呼吸平了。向左滑,留在直播里,让全城等这个门铃。向右滑,换垫乐,私下陪她说完。 抉择提示(仅 p6=左 可达)
w1_air 主播 陈姐,别挂。让他接电话——全城都在听。 p7 左(留在直播)
w1_airo 陈姐 喂!回来吧!蛋糕要化了,孩子等着呢! p7 左·反应(对电话那头喊)
w1_aire 导播 电话那头,传来跑步声。今晚的高光时刻。 p7 左·收
w1_priv 主播 这里只有我们俩了。想说就说,想哭就哭。 p7 右(换垫乐私聊)
w1_privq 陈姐 呜……其实他订完蛋糕就跟我道歉了。是我,把门摔得太响。 p7 右·反应
w1_prive 导播 灯牌是你亲手关的,故事还是完整的。稳。 p7 右·收
w1_home 主播 吵架隔着电话吵不赢。回家吧,蛋糕别放到坏了。 p6 右(本通结束,无 p7)
w1_homeo 陈姐 嗯……我这就往回走。谢谢你,听我瞎嚷嚷。 p6 右·反应
w1_homee 导播 她往回走了。成不成,看他们自己的了。 p6 右·收

C5 组 · 第五通·老韩(雨夜司机·高潮)(双性别 8 + 老韩平铺 5 = 13)

id 声部 台词全文 触发
h1_in 导播 五线来电。引擎声没停过——他在开车! 接听引入(垫 amb_cab)
h1_a 老韩 主播,别挂。陪我说话,我的眼皮,沉得很。 通话主干
h1_b 老韩 跑完这趟,闺女的学费就齐了。雨刷都快刮不动了。 通话主干(「闺女」指其女儿,合规)
p8 导播 方向盘比话筒危险。向左滑,陪他聊聊闺女。向右滑,让他立刻进服务区。 抉择提示
h1_talk 主播 说说她。开学第一天,她跟你说的头一句话,是什么? p8 左
h1_talko 老韩 她说,爸,我在学校给你赚了朵小红花。哈哈,哈哈…… p8 左·反应
h1_danger 导播 车道偏了——听! 危机拍(前 2s 起 brake_screech 渐强 + danger 签名同窗)
h1_dango 老韩 嘶——好险!前车急刹,我擦着护栏过去了。彻底醒了! 危机拍·化解
h1_talke 导播 吓醒的,也算醒。这一趟,聊到家。 p8 左·收
h1_stop 主播 听我的,前面三公里有服务区。学费急,命更急。 p8 右
h1_stopo 老韩 行,听你的。进了服务区,我给你们放首歌听。 p8 右·反应
h1_stope 导播 他下了高速。单子黄了,人齐了。 p8 右·收
h1_echo 导播 对了。头通电话那位大爷,就是这片被巡逻队找到的。这城市的夜,是接着的。 插播回响(条件 bond_zhou=true,queue)

D9 组 · 签收抉择(心结)(双性别 6)

id 声部 台词全文 触发
g9_in 导播 五线收工。垫乐起——零点档,还剩最后一段。 C5 后 BRIDGE→签收(配 bgm/bridge)
p9 导播 留言机红灯在闪,是老主播三年前没播完的那句晚安。向左滑,替他播出去。向右滑,照常收播。 抉择提示(39 字,全表最长句)
d9_face 主播 师父,三年了。这句晚安,我替您播。各位,晚安。 p9 左(knot=解;配 tape_static)
d9_facee 导播 带子里其实只有电流声。但空着的那一秒,你说满了。 p9 左·收(老主播不配音,电流声留白)
d9_avoid 主播 各位,今晚到这里。明晚零点,今夜不眠,不见不散。 p9 右
d9_avoide 导播 留言机的红灯,又多亮了一夜。 p9 右·收(开环钩子)

EP 组 · 结局与尾声回响(双性别 19;结局 8 + 回响 11)

id 声部 台词全文 触发
e1_a 主播 天亮了,热线灯还亮着。你们的晚安,是这座城市的心跳。 结局 e1(rep≥5 且直面)主句
e1_b 主播 这把话筒,我总算接得住了。明晚零点,接着不眠。 e1 收(钩子)
e2_a 主播 今晚的热线烧得发烫。全城的失眠者,都被接住了。 结局 e2(rep≥5 且回避)主句
e2_b 主播 只是路过留言机的时候,你还是没敢看它。红灯灭得很慢。 e2 收(钩子)
e3_a 主播 口碑掉了一夜。可那句迟到三年的晚安,今晚说出去了。 结局 e3(rep<5 且直面)主句
e3_b 主播 一个人的频道,也是频道。师父,收到了吗? e3 收(钩子)
e4_a 主播 今夜不眠,静音收播。有的夜班,谁也接不住谁。 结局 e4(rep<5 且回避)主句
e4_b 主播 留言机还在闪。你没看它,它也没怪你。明晚再说吧。 e4 收(钩子;含 e4 复盘,不另配归因句)
ep_lead 导播 收播了。导播间替你记了一笔账——今晚的人都怎样了。 结局链后尾声引入
ep_zhou_ok 导播 老周:孙子替他买了老花镜。回信说,谢谢那首歌。 尾声(bond_zhou=1)
ep_zhou_no 导播 老周在便利店屋檐下坐到天亮。没出事,也没人听见他的歌。 尾声(bond_zhou=0)
ep_deer_ok 导播 小鹿上车了。她妈后来打电话说,那声妈,比奖杯值钱。 尾声(bond_deer=1)
ep_deer_no 导播 小鹿退了票。检票口的灯,记得那趟没上成的车。 尾声(bond_deer=0)
ep_kid_ok 导播 糖糖家的门,这个月没再摔过。她说这是主播魔法。 尾声(bond_kid=1)
ep_kid_no 导播 糖糖后来又打来过一次。还是那句:楼下在吵。 尾声(bond_kid=0)
ep_wife_ok 导播 陈姐家切了蛋糕。那句「回来吧」,是我这晚听过最好的声音。 尾声(bond_wife=1)
ep_wife_no 导播 陈姐在公车站坐到了末班车。那通电话,成了没寄出的信。 尾声(bond_wife=0)
ep_han_ok 导播 老韩到家了。后视镜上,多了朵小红花。 尾声(bond_han=1)
ep_han_no 导播 老韩在服务区睡了一觉。学费齐了,那首歌没放成。 尾声(bond_han=0)

合计:132 句(GPU 预算 ≤170 ✓)

  • 双性别 103 句(HOST 21 + PROD 82)×2 性别 = 206 文件;
  • NPC 平铺 29 句(老周 7 / 小鹿 4 / 糖糖 6 / 陈姐 7 / 老韩 5)= 29 文件;
  • 合计 235 条音频 ×2 格式(ogg+m4a)= 470 文件。
  • 每结局专属台词齐备:e1/e2/e3/e4 各 2 句(ep 组前 8 行)+ 尾声回响 11 句共用。
  • 每局实走抉择 8-9 个(p5 仅 p4=右、p7 仅 p6=左 可达),抉择提示 p1..p9 共 9 个。

多音字 / 发音风险自查注记

风险词 处理
重听 全表写「重新听」(sys_help),无「重听」字样
切(qiē/qiè) 「切垫乐」写「换垫乐」(p7);「切蛋糕」「切了蛋糕」为正确常用读法,保留
挣(zhēng/zhèng) 「挣钱」写「赚了朵小红花」(h1_talko)
巷(xiàng/hàng) 全表不用「巷」,写「路口」
答录机(dā lù jī) 全表用「留言机」,规避
颤(chàn) 台词侧用「发抖」(z1_a 触发/语境、instruct 描述不受影响,instruct 不进语音)
哄(hōng/hǒng) 「哄她睡」为 hǒng 常用读法,保留,试听确认
宿/血/露/降/率/传(zhuàn 义) 全表未使用
了(le/liǎo)、还(hái/huán)、得(de/děi) 常规句式常见读法,逐句人工试听项(z1_staye「听见了」、l1_goe 等)
数字 句内数字全部写死(十一点半/十五分钟/三公里/四十分钟前/零点),序号用分档整句(prog_c1..c5)

台词侧自查

  • 单句 ≤40 字:全表最长 = p9(37 字),次长 sys_help(26 字)✓;NPC 句平均 ≤18 字(P4 语速感靠短句+逗号,不用 instruct 语速词)✓。
  • NPC ≤5 人、speaker+instruct 恒定、区分度风险逐个标注 ✓。
  • 称呼合规:来电者对主播只用「主播/您/谢谢你」,性别化称呼仅指向来电者自身或第三方 ✓。
  • 每个结局(e1..e4)专属主句+钩子各 2 句齐备,尾声救/错过双线齐备 ✓。
  • 归因真话律:负向收尾句(z1_bade/k1_lulle/k1_liee/ep_*_no/e4_b)全部指向玩家实际选择,无假归因句 ✓。
  • 向导 gd_* 6 句(gd_brief/gd_continue/gd_again/gd_invalid/gd_ring1/gd_ring2)符合 14 号 §6 台词规范(一句一义、无重复句式、单句 ≤15 字)✓。

键盘变体(key,P1 输入平权路线 a,18 句)

「生效输入模式=键盘」(settings.input=key,或 auto 且键盘在跟/纯桌面初始判定, web/engine/gesture.js inputMode())时,引擎 voice 候选链前置加载 web/radio/audio/voice/<gender>/key/<id>.{ogg,m4a},变体缺失回退主资产——触屏措辞零改动。

措辞规范(02-input-parity.md §4.3 路线 a + P1 裁定):向左滑→按左方向键(四向同理, WASD 不进台词);单击/轻触屏幕→按空格;双击→按回车;按住/长按→按住空格; 复合短语(左右滑→左右方向键、滑动→方向键)按语义等价展开;只改操作词,其余 内容一字不动,不新增「重」类多音字。本表与 tools/gen_voice_dual.py 的 KEY_LINES 逐字一致(两表一致铁律:改一处必改另一处)。 资产:×2 性别 = 18×2 条、×2 格式 = 18×4 文件;管线 gen_voice_dual.py --only-variants 生成 → --convert 落盘,终检 tools/check_all_assets.py(key 两性别一致且 ⊆ 主集)。

id 键盘台词全文(触屏原句见本表上方对应 id)
gd_brief 按空格继续节目。请选择的时候,按左或右方向键。
gd_continue 按空格,继续。
gd_again 还在吗?按空格继续。
gd_ring1 热线在闪。按空格,接听。
gd_ring2 灯还亮着,听众在等。按空格,接听。
sys_help 按空格继续,按回车重新听。按上方向键听状态,按下方向键开菜单。请选择时,左右方向键。
sys_menu 菜单。按空格切换选项,按回车确认。
sys_skip 想跳过这句,按空格就行。
sys_continue_ask 检测到你的夜班记录。按空格继续上次,按右方向键开始新的夜晚。
p1 老人在发抖。按左方向键,陪他哼那首老歌。按右方向键,冷静问他路口的路牌。
p2 雨声更密了。按左方向键,留在原地陪他等巡逻队。按右方向键,转接派出所。
p3 按左方向键,告诉她这趟车值得上。按右方向键,把选择还给她。
p4 按左方向键,唱一段摇篮曲哄她睡。按右方向键,轻轻问她怎么了。
p5 孩子的声音在抖。按左方向键,告诉她这不是她的错。按右方向键,答应她明天都会好。
p6 摔门声你听见了。按左方向键,替孩子给她带句话。按右方向键,劝她回家把话说开。
p7 她的呼吸平了。按左方向键,留在直播里,让全城等这个门铃。按右方向键,换垫乐,私下陪她说完。
p8 方向盘比话筒危险。按左方向键,陪他聊聊闺女。按右方向键,让他立刻进服务区。
p9 留言机红灯在闪,是老主播三年前没播完的那句晚安。按左方向键,替他播出去。按右方向键,照常收播。

R4 · 26 号深度重构(设计单 26-apply-radio.md;施工台词清单 tools/voice_lines_26/radio.md)

交互权威 26 号手册。本轮开场第一句改 critical 指令「点一下屏幕。」(b_rule/gd_brief 规矩念白废除)、等待点三档提示统一 sys_hint_* / 主动重听「再说一遍:」前缀、 手势阶梯三阶段教学句、菜单改左右滑换项 + 单击确认(00 §5.4)、旧「双击重听 / 单击循环菜单」口径全部废止。增量清单原文 = tools/voice_lines_26/radio.md (生成并表时逐字并入 tools/gen_voice_dual.py RADIO_PROD_LINES,两表一致铁律; web/harness/voice_text.json radio 主表已同步,149 条)。类别:critical / content / hint / feedback。系统/交互层句子全部走 PROD 导播组(与既有 sys_skip 一致)。

新增(25 句 × 双性别,PROD 组;其中 4 条由引擎播出但资产照落本目录):

id 台词全文 类别 触发
sys_first_tap 点一下屏幕。 critical 冷启动第一句(≤3s,不可打断)
sys_first_tap_short 点一下。 hint intro 等待点 _short 档
sys_ring_teach 热线灯亮了。点一下,接听。 content RING 状态声首现教学(全局一次)
sys_turn_teach 听到这个声音,就是轮到你了。 content 「轮到你」状态声首现教学(挂 z1_a 链尾,全局一次;与 storyline 同文案)
sys_praise 对。 feedback 首抉择链头肯定句(原则 11,≤4 字)
sys_hint_continue_full 单击,继续。 hint continue 等待点 full 档
sys_hint_continue_short 单击。 hint continue/settle 等待点 _short 档
sys_hint_choice_short 左右滑,选。 hint choice 等待点 _short 档
sys_hint_ring_short 点一下,接听。 hint ring 等待点 _short 档(18s)
sys_hint_again_full 单击,重新开始。 hint settle 等待点 full 档 / 结算滑动解释句
sys_hint_menu_short 左右滑,点一下。 hint menu 等待点 _short 档
sys_only_choice 现在,只要左右滑。 hint 迷茫 L2 抉择点缩小选择
sys_demo_continue 听我做一次。 hint 迷茫 L3 演示前缀(intro/ring/continue)
sys_demo_choice 左右滑,都可以。现在你来。 hint 迷茫 L3 抉择点演示(不替玩家选)
sys_say_again 再说一遍: hint 主动重听前缀(engine/hints.js 播出,全项目一句)
sys_unlock_up 想知道自己在哪,就向上滑。 content 手势阶梯阶段 1 教学句(挂首抉择后链尾;engine/novice.js teachLine 播出)
sys_unlock_down 向下滑,可以打开菜单。 content 阶段 2 教学句(挂首局结局链尾;engine/novice.js)
sys_unlock_dt 没听清,就双击,再听一遍。 content 阶段 3 教学句(engine/novice.js)
menu_help 左右滑换项,点一下确认。 content 菜单说明(menu 等待点 full 档 + 菜单内上滑重听)
status_choice 正在抉择。左右滑。 hint 抉择等待点上滑「我在哪」
inv_nosel 现在不用选。单击继续。 feedback 非抉择点滑动首次解释(原则 7)
inv_ring 现在不用选。点一下,接听。 feedback RING 滑动首次解释
inv_generic 这个操作用不上。单击继续。 feedback 其余无效格子 / 新手期长按首次解释
inv_up_locked 上滑还没解锁。先单击继续。 feedback up 未解锁首次解释
inv_down_locked 菜单,玩完一局解锁。单击继续。 feedback down 未解锁首次解释

修改(2 句,id 不变重录):gd_ring1「热线在闪。点一下,接听。」(原「单击,接听」, 动作词与 sys_ring_teach 统一);sys_menu「菜单。左右滑换项,点一下确认。」(原 「单击切换选项,双击确认」= 旧菜单口径,00 §5.4 废止)。

删除(8 句):gd_brief / gd_continue / gd_again / gd_invalid / gd_ring2 (向导层让位三档提示 + inv_* 首次解释,原则 7/9)、sys_help(全局帮助溢出废止, 「双击重新听」旧口径)、b_rule(开场规矩念白,§4.10 零规则念白)、sys_saved (「保存并回大厅」由 sys_menu_lobby 一句承担)。上方 G0 / G1 组表中对应行按本节 口径废止;合计 132 − 8 + 25 = 149 句(双性别 120 ×2 + NPC 29)。

键盘变体:新增 21 条 + sys_menu 重录(「菜单。左右方向键换项,按空格确认。」); gd_ring1 变体沿用不重录(现变体不含「单击」字样);gd_brief / gd_continue / gd_again / gd_ring2 / sys_help 变体随主句停用。多音字口径维持全表无「重听」 (一律「重新听」/「再听一遍」)。