配对码与认领(B): - POST /api/pair/start|join:6 位码 10 分钟单次有效、仅存内存零泄露面、5 连错 per-IP 封锁 10 分钟;join=新设备档案按桶 LWW 并入老档案+token 改绑(复用 claim-merge);日志脱敏 - 大厅:生成配对码(speechSynthesis 逐位朗读+aria-live+重听)/从其他设备转入(one-time-code 输入框)/从本机移除/401 过期自愈引导/aria 补全/玩家名可听化 - api-smoke 12/12(配对全流程/频控/封锁/过期自愈/移除/digitsToCn)+ CDP 真浏览器 E2E 22/22 键盘语音双套资产(A,路线 a): - 164 变体句(8 游戏 grep 实测,超出调研预估 153:含轻触/点两下/按住变体)×2 性别=328 生成 656 文件 36.9 分钟;触屏主资产零字节改动(PCM 逐样本比对后还原) - 引擎 _candidates 三跳路由 key→gender→平铺(inputMode 跟随);缓存键 mode|gender|id;engine-input 新增 K9 路由断言(72 条) - check_all_assets 增 key 列(两性别一致且 ⊆ 主集)8 游戏全绿;voice_text.json 增 __key__ 表;live control.mjs key 会话对照键盘措辞验收(集成) - voice-ids 文档:8 游戏键盘变体小节由 KEY_LINES 程序化生成(与台词表逐字断言一致);补齐 storyline/escape/simon 三个历史缺失文档;design README 增 new8 索引 - mock 适配:playtest persona 加 maxTouchPoints=1 保持触屏链断言语义零改动 回归:12 套件全绿(8 playtest + guide 122 + engine-voice 19 + engine-input 72 + api-smoke 12/12) 同批入库:批次 2/3 已完稿设计文档(17-abyss/18-detective/19-cipher 全套,20-22 在途)
5.6 KiB
storyline-voice-ids · 《声命线》语音台词表(voice ids)
主台词表(41 句旁白/系统音,双性别)的唯一事实源是
tools/gen_voice_dual.py的STORYLINE_LINES(角色台词为平铺单音色,沿用web/storyline/audio/voice/原文件,不在双性别管线内;主表史源 app/src/storyline/gen/gen_voice.py)。 本文档登记 P1 键盘变体(输入平权路线 a)——变体只覆盖含操作词的句子, id 集合 ⊆ 主表,复用主表同 id 的 instruct/speaker。
键盘变体(key,P1 输入平权路线 a,19 句)
「生效输入模式=键盘」(settings.input=key,或 auto 且键盘在跟/纯桌面初始判定,
web/engine/gesture.js inputMode())时,引擎 voice 候选链前置加载
web/storyline/audio/voice/<gender>/key/<id>.{ogg,m4a},变体缺失回退主资产——触屏措辞零改动。
措辞规范(02-input-parity.md §4.3 路线 a + P1 裁定):向左滑→按左方向键(四向同理, WASD 不进台词);单击/轻触屏幕→按空格;双击→按回车;按住/长按→按住空格; 复合短语(左右滑→左右方向键、滑动→方向键)按语义等价展开;只改操作词,其余 内容一字不动,不新增「重」类多音字。本表与
tools/gen_voice_dual.py的KEY_LINES逐字一致(两表一致铁律:改一处必改另一处)。 资产:×2 性别 = 19×2 条、×2 格式 = 19×4 文件;管线gen_voice_dual.py --only-variants生成 →--convert落盘,终检tools/check_all_assets.py(key 两性别一致且 ⊆ 主集)。
| id | 键盘台词全文(触屏原句见本表上方对应 id) |
|---|---|
help |
操作说明。按空格:继续剧情。按回车:重听刚才的台词。按上方向键:听这段说明和当前进度。按下方向键:呼出菜单,菜单里可以重新开始。当旁白说“请选择”的时候,按左方向键或者按右方向键,做出你的决定。选择无法撤销。 |
menu |
菜单。按左方向键:重新开始整个故事。按右方向键,或者按空格:回到故事。按上方向键:听操作说明。 |
p1 |
请选择。按左方向键:先检查背包里的收音机。按右方向键:先摸黑寻找出口。 |
p2 |
请选择。按左方向键:钻进旁边的通风管道。按右方向键:躺进路边的尸体堆里装死。 |
p3 |
请选择。按左方向键:循着哭声过去看看。按右方向键:不去管它,直接去北区。 |
p4 |
请选择。按左方向键:带上小满一起走。按右方向键:留下食物,独自上路。 |
p5 |
请选择。按左方向键:走桥下的污水涵洞。按右方向键:爬桥上悬着的钢索。 |
p6 |
请选择。按左方向键:交出坐标,保命要紧。按右方向键:拒绝他,想办法周旋。 |
p7 |
请选择。按左方向键:追上去,警告避难所。按右方向键:自己逃命,越远越好。 |
p8 |
请选择。按左方向键:用公开频道广播,让全城都听见。按右方向键:用加密频段,只发给避难所。 |
n00_intro |
大停电后的第三十天,城市陷入彻底的黑暗。没有电,没有网络,只有收音机里偶尔闪过的沙沙声,像垂死者的呼吸。你是林晚,一名前急救员。在这个故事里,你用声音活下去。请记住:按空格,继续剧情;按回车,重听上一句;按上方向键,听你的状态和帮助;按下方向键,呼出菜单。当我说“请选择”的时候,按左方向键,或者按右方向键,做出你的决定。选择一旦做出,就无法回头。现在,按空格,睁开眼睛。 |
e1_dawn |
加密频道那头沉默了三秒。然后,一个你等了三十天的声音响了起来:“姐?姐!是你吗?”天亮之前,避难所的救援队打开了大门。猎狗的人,在北区的高墙下溃散了。你抱着晨晨,听见广播塔里,重新响起了音乐。后来人们说,这座城市,是从一个女人的声音开始,重新活过来的。——好结局:黎明。感谢你,陪林晚走完了这条路。按空格,可以回到故事开始的地方。 |
e2_price |
你赶在车队前面,撞进了避难所的大门。“关掉广播!关灯!猎狗来了——!”那一夜,北区守住了。探照灯熄灭的时候,晨晨从人群里扑出来抱住你,才发现你胳膊上的血,已经把半边袖子浸透了。坐标是你交出去的,命,是你抢回来的。你赢了,用一条胳膊的代价。——结局:代价。按空格,重新开始。 |
e3_alone |
你逃了。一路向南,没有回头。三天后,收音机里关于北区的广播,停了。又过了七天,你在一个废弃的加油站里,听见最后一个频段,也变成了沙沙声。你活下来了。只是从此以后的每一个夜里,你都会想起那声口哨,和你报出坐标时,自己发抖的声音。——坏结局:孤声。按空格,重新开始。 |
e4_static |
公开频道,把所有人都引来了——幸存者,还有猎狗。塔顶的风很大,你看见山下火把连成的长龙,也看见避难所方向亮起的防御火光。猎狗的刀抵上来的时候,你对着麦克风笑了:“听见了吗,晨晨?姐姐的声音,全城都听见了。”信号中断了。但那晚之后,北区,再没有人投降。——结局:静默。按空格,重新开始。 |
skip_hint |
按空格可跳过旁白。 |
gd_continue |
按空格,继续。 |
gd_brief |
按空格继续剧情。请选择的时候,按左右方向键。 |
gd_again |
还在吗?按空格继续。 |