配对码与认领(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 在途)
148 lines
9.1 KiB
Markdown
148 lines
9.1 KiB
Markdown
# 04a · 《盲航》重构版语音台词表(voice ids,R4 录音依据)
|
||
|
||
> **给音频总监的录制说明**
|
||
> - 设计依据:[04-space-rebuild.md](04-space-rebuild.md)。闪避为**同向**(左来左滑),台词已全部按此写死,不存在反向表述。
|
||
> - 旁白双性别:**female = Serena,male = Uncle_Fu**(R1 音色分配表)。落 `web/space/audio/voice/female|male/<id>.{ogg,m4a}`。
|
||
> - instruct 全表统一(同游戏同 instruct,00 文档 §3.2):
|
||
> - female(Serena):`平静清晰的女声,像飞船领航员,沉稳可信`
|
||
> - male(Uncle_Fu):`低沉醇厚的男声,像飞船领航员,沉稳有力`
|
||
> - 演练的紧迫感靠台词文案表达,instruct 不变。
|
||
> - 全部整句、无数字拼接:方位/次数/存活时间/躲避数全部按句写死或分档。
|
||
> - 多音字已规避("重新听"不写"重听";无"撞着/着陆"类风险)。
|
||
> - 管线:`tools/gen_voice_dual.py` 照录本表。**本表全量替换 R1 生成的 space 语音**(旧 id 见表末映射)。
|
||
|
||
## D 组 · 交互式演练(14 句)
|
||
|
||
| id | 台词全文 | 触发 |
|
||
|---|---|---|
|
||
| `drill_welcome` | 欢迎登上盲航。你只有一双耳朵。 | D0 |
|
||
| `drill_rule` | 陨石来了,会有声音告诉你方位。 | D0 |
|
||
| `drill_left` | 听,左边有陨石。向左滑,把它拨开! | D1 |
|
||
| `drill_right` | 这次在右边。向右滑! | D2 |
|
||
| `drill_up` | 上面有东西,声音又尖又高。向上滑! | D3 |
|
||
| `drill_down` | 下面是低沉的轰隆。向下滑! | D4 |
|
||
| `drill_good` | 漂亮。 | 演练做对(D1/D3 播) |
|
||
| `drill_retry_left` | 那是左边来的,向左滑。 | D1 做错重教 |
|
||
| `drill_retry_right` | 那是右边来的,向右滑。 | D2 做错重教 |
|
||
| `drill_retry_up` | 声音又高又尖,是上面,向上滑。 | D3 做错重教 |
|
||
| `drill_retry_down` | 轰隆声在下面,向下滑。 | D4 做错重教 |
|
||
| `drill_moveon` | 没关系,跟着我,我们继续。 | 同一步失败 2 次自动带过 |
|
||
| `drill_done` | 四个方向你都会了。引擎点火,出发! | D5 |
|
||
| `drill_skip` | 跳过演练,直接出发。 | 下滑跳过 |
|
||
|
||
## P 组 · 保护期(5 句)
|
||
|
||
| id | 台词全文 | 触发 |
|
||
|---|---|---|
|
||
| `protect_left` | 训练护盾接住了。那颗在左边,听到左边的呼啸,向左滑。 | 保护期被撞(左) |
|
||
| `protect_right` | 训练护盾接住了。那颗在右边,听到右边的呼啸,向右滑。 | 保护期被撞(右) |
|
||
| `protect_up` | 训练护盾接住了。那颗在上面,听到高高的呼啸,向上滑。 | 保护期被撞(上) |
|
||
| `protect_down` | 训练护盾接住了。那颗在下面,听到低沉的轰隆,向下滑。 | 保护期被撞(下) |
|
||
| `protect_end` | 训练护盾关闭。接下来,靠你自己了。 | 第 60 秒 |
|
||
|
||
## F 组 · 单击/双击分批引入(6 句)
|
||
|
||
| id | 台词全文 | 触发 |
|
||
|---|---|---|
|
||
| `feat_boost` | 试试单击,引擎会短促加速,直接冲过空隙。 | 第 20 秒引入 |
|
||
| `feat_boost_done` | 感觉到了吗?加速的时候,陨石撞不上你。 | 单击后确认 |
|
||
| `feat_shield` | 双击展开护盾,能挡下一次撞击。 | 第 45 秒引入 |
|
||
| `feat_shield_done` | 护盾展开后会自动充能,好了我会告诉你。 | 双击后确认 |
|
||
| `shield_ready` | 护盾充能完毕。 | 30 秒冷却结束(沿用 R1 id,重录) |
|
||
| `shield_block` | 护盾挡下了撞击。 | 护盾生效(沿用 R1 id,重录) |
|
||
|
||
## H 组 · 被撞归因(5 句,保护期后)
|
||
|
||
| id | 台词全文 | 触发 |
|
||
|---|---|---|
|
||
| `hit_left` | 左边撞上的。听到左边的呼啸,向左滑。 | 第 1/2 次被撞(左) |
|
||
| `hit_right` | 右边撞上的。听到右边的呼啸,向右滑。 | 右 |
|
||
| `hit_up` | 上面撞上的。听到高高的呼啸,向上滑。 | 上 |
|
||
| `hit_down` | 下面撞上的。听到低沉的轰隆,向下滑。 | 下 |
|
||
| `hit_last` | 船体只剩最后一次了,小心! | 第 2 次被撞后接在方位句后 |
|
||
|
||
## M 组 · 里程碑(4 句)
|
||
|
||
| id | 台词全文 | 触发(躲过数) |
|
||
|---|---|---|
|
||
| `ms_10` | 十颗了,稳。 | 10 |
|
||
| `ms_25` | 二十五颗,老练的飞行员。 | 25 |
|
||
| `ms_50` | 五十颗,传奇。 | 50 |
|
||
| `ms_100` | 一百颗!天空属于你。 | 100 |
|
||
|
||
## R 组 · 结算(10 句)
|
||
|
||
| id | 台词全文 | 触发 |
|
||
|---|---|---|
|
||
| `time_1` | 不到三十秒,再试一次。 | 存活 <30s |
|
||
| `time_2` | 超过三十秒,有进步。 | 30~60s |
|
||
| `time_3` | 超过一分钟,合格的飞行员。 | 60~120s |
|
||
| `time_4` | 超过两分钟,王牌飞行员。 | ≥120s |
|
||
| `dodge_1` | 只拨开几颗。 | 躲过 <5 |
|
||
| `dodge_2` | 拨开了十来颗。 | 5~14 |
|
||
| `dodge_3` | 拨开了几十颗。 | 15~49 |
|
||
| `dodge_4` | 拨开了一大群,漂亮。 | ≥50 |
|
||
| `new_record` | 新纪录! | 破纪录(插在 time_* 后) |
|
||
| `restart_hint` | 单击再飞一次,下滑回大厅。 | 结算尾 |
|
||
|
||
## Y 组 · 菜单与系统(8 句)
|
||
|
||
| id | 台词全文 | 触发 |
|
||
|---|---|---|
|
||
| `second_run_ask` | 上滑重新听演练,单击直接出发。 | 二周目开场 |
|
||
| `menu_main` | ~~菜单。左右滑选择,单击确认。~~ → **勘误(R 终审)**:菜单约定已改(00 §5.2),以音频重录版"菜单。单击切换,双击确认。"为准。 | 下滑呼出 |
|
||
| `menu_resume` | 继续飞行。 | 菜单项 |
|
||
| `menu_lobby` | 回大厅。 | 菜单项 |
|
||
| `menu_help` | 重新听教学要点。 | 菜单项 |
|
||
| `help_recap` | 左边来向左滑,右边来向右滑,上面来向上滑,下面来向下滑。单击加速,双击护盾。 | 帮助重听(>25 字,生成期拆两句拼接:句 1 四方位,句 2 单击双击) |
|
||
| `settings_hint` | 音色、语速、背景音乐,请回大厅修改。 | 菜单内 |
|
||
| `paused` | 已暂停。 | 菜单打开时 |
|
||
|
||
---
|
||
|
||
**合计 52 句 × 2 性别 = 104 条**(×2 格式 = 208 文件)。
|
||
|
||
旧 id 处置:R1 生成的 `num*/n_*/intro1-4/hit1/hit2/gameover/restart` 全部弃用(数字拼接与旧教学);`shield_ready`/`shield_block` 沿用 id 重录。平铺旧文件按 R1 约定在切换验证后统一清理。
|
||
---
|
||
|
||
## 键盘变体(key,P1 输入平权路线 a,24 句)
|
||
|
||
「生效输入模式=键盘」(settings.input=key,或 auto 且键盘在跟/纯桌面初始判定,
|
||
web/engine/gesture.js inputMode())时,引擎 voice 候选链前置加载
|
||
`web/space/audio/voice/<gender>/key/<id>.{ogg,m4a}`,变体缺失回退主资产——触屏措辞零改动。
|
||
>
|
||
> 措辞规范(02-input-parity.md §4.3 路线 a + P1 裁定):向左滑→按左方向键(四向同理,
|
||
> WASD 不进台词);单击/轻触屏幕→按空格;双击→按回车;按住/长按→按住空格;
|
||
> 复合短语(左右滑→左右方向键、滑动→方向键)按语义等价展开;只改操作词,其余
|
||
> 内容一字不动,不新增「重」类多音字。本表与 `tools/gen_voice_dual.py` 的
|
||
> `KEY_LINES` 逐字一致(两表一致铁律:改一处必改另一处)。
|
||
> 资产:×2 性别 = 24×2 条、×2 格式 = 24×4 文件;管线 `gen_voice_dual.py --only-variants`
|
||
> 生成 → `--convert` 落盘,终检 `tools/check_all_assets.py`(key 两性别一致且 ⊆ 主集)。
|
||
|
||
| id | 键盘台词全文(触屏原句见本表上方对应 id) |
|
||
|---|---|
|
||
| `drill_left` | 听,左边有陨石。按左方向键,把它拨开! |
|
||
| `drill_right` | 这次在右边。按右方向键! |
|
||
| `drill_up` | 上面有东西,声音又尖又高。按上方向键! |
|
||
| `drill_down` | 下面是低沉的轰隆。按下方向键! |
|
||
| `drill_retry_left` | 那是左边来的,按左方向键。 |
|
||
| `drill_retry_right` | 那是右边来的,按右方向键。 |
|
||
| `drill_retry_up` | 声音又高又尖,是上面,按上方向键。 |
|
||
| `drill_retry_down` | 轰隆声在下面,按下方向键。 |
|
||
| `protect_left` | 训练护盾接住了。那颗在左边,听到左边的呼啸,按左方向键。 |
|
||
| `protect_right` | 训练护盾接住了。那颗在右边,听到右边的呼啸,按右方向键。 |
|
||
| `protect_up` | 训练护盾接住了。那颗在上面,听到高高的呼啸,按上方向键。 |
|
||
| `protect_down` | 训练护盾接住了。那颗在下面,听到低沉的轰隆,按下方向键。 |
|
||
| `feat_boost` | 试试按空格,引擎会短促加速,直接冲过空隙。 |
|
||
| `feat_shield` | 按回车展开护盾,能挡下一次撞击。 |
|
||
| `hit_left` | 左边撞上的。听到左边的呼啸,按左方向键。 |
|
||
| `hit_right` | 右边撞上的。听到右边的呼啸,按右方向键。 |
|
||
| `hit_up` | 上面撞上的。听到高高的呼啸,按上方向键。 |
|
||
| `hit_down` | 下面撞上的。听到低沉的轰隆,按下方向键。 |
|
||
| `restart_hint` | 按空格再飞一次,按下方向键回大厅。 |
|
||
| `second_run_ask` | 按上方向键重新听演练,按空格直接出发。 |
|
||
| `menu_main` | 菜单。按空格切换选项,按回车确认。 |
|
||
| `help_recap` | 左边来按左方向键,右边来按右方向键,上面来按上方向键,下面来按下方向键。按空格加速,按回车护盾。 |
|
||
| `skip_hint` | 按空格可跳过旁白。 |
|
||
| `gd_hit_hint` | 被撞了。听方位,按对应方向键就能拨开。 |
|