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 置完成。
330 lines
30 KiB
Markdown
330 lines
30 KiB
Markdown
# 15b · 《不眠频率》(radio) 语音台词表(voice ids,录音依据)
|
||
|
||
> **26 号对齐(资产清单,不是交互宪法)**
|
||
> - 交互与新手手势以 [26-audio-interaction-playbook.md](26-audio-interaction-playbook.md) 和对应游戏正文为准。
|
||
> - 本表仍是 TTS id 事实源的**登记副本**(生成以 `tools/gen_voice_dual.py` 为准)。含「双击重听 / 双击使用 / 双击格挡 / 单击循环菜单」的句子 **停用或按游戏正文重录**。
|
||
> - 写作:指令 ≤12 字,短句档 ≤6 字,叙事 ≤25 字;每句标 `critical` / `content` / `hint` / `feedback`。游戏主动提示不得原样重复;重听前加「再说一遍:」。
|
||
> - 键盘变体:新手期回车当空格(单击)。删除「按回车=重听」类旧口径,或仅在阶段 3 解锁双击后启用。
|
||
> - 共用新句见 [14-guide-layer.md](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` 变体随主句停用。多音字口径维持全表无「重听」
|
||
(一律「重新听」/「再听一遍」)。
|