Files
SoundGame/docs/design/05-rpg-ch1-voice-ids.md
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

269 lines
18 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 05b · 《剑与声》第一章语音台词表(voice ids,R4 录音依据)
> **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` 在游戏正文设计单里点名,补进本表后再进生成脚本。
> **给音频总监的录制说明**
> - **旁白**(A/S/D/O/E/B/SH 组,104 句):双性别。**female = Serena,male = Uncle_Fu**(新游戏,沿用 R1 分配惯例)。落 `web/rpg/audio/voice/female|male/<id>.{ogg,m4a}`。
> - female instruct 常量:`平静清晰的年轻女声,像在讲武侠故事`
> - male instruct 常量:`低沉醇厚的男声,像说书人,平静有韵味`
> - **NPC**(N 组,16 句):单音色、不做双性别,平铺落 `web/rpg/audio/voice/<id>.{ogg,m4a}`(引擎平铺回退命中,同 storyline 角色台词模式)。同一角色 speaker+instruct 恒定:
> - 村长:`Uncle_Fu` + `慈祥和缓的老者`
> - 老猎人:`Eric` + `沙哑粗犷,豪爽中带着暖意`
> - 寨丁头目:`Dylan` + `凶狠粗鲁,大声喝骂`
> - 黑风寨主:`Uncle_Fu` + `低沉阴狠,慢条斯理`(与村长同 speaker 不同 instruct,参照 storyline 先例;两者从不在同场景出现,请试听确认区分度)
> - 主角沈听澜**无台词**:旁白第二人称("你")叙述,省一套主角音色。
> - 数字规避:等级/血量/金币全部分档整句;价格写死在商店句里;无运行时拼接。
> - 管线:`tools/gen_voice_dual.py` 照录;多音字已规避("重听"写作"重新听")。
## A 组 · 序章(旁白 ×3)
| id | 台词全文 |
|---|---|
| `intro_1` | 你的眼睛看不见了。但你的耳朵,比谁都灵。 |
| `intro_2` | 黑风寨掳走了你唯一的徒弟。追进迷雾林,把他们连根拔起。 |
| ~~`intro_3`~~ | ~~先记住,怎么用耳朵走路。~~(**停用**:26 号 §4.10 砍开场规则念白,开场第一句改为 `sys_first_tap`) |
## S 组 · 系统/菜单/状态(旁白 ×28)
| id | 台词全文 | 触发 |
|---|---|---|
| `sys_continue_ask` | 检测到你的旅程记录。单击继续,右滑开始新的旅程。 | 有存档进游戏 |
| `sys_new_game` | 新的旅程,开始了。 | 新游戏 |
| `sys_saved` | 进度已保存。 | 存档写入后 |
| `sys_rest` | 你在篝火边睡了一觉,状态全满。 | village 休息 |
| `sys_drink` | 溪水清冽,你喝了个饱,伤势尽消。 | stream 饮水 |
| `sys_menu` | 菜单。左右滑选择,单击确认。 | 下滑呼出 |
| `sys_menu_resume` | 继续旅程。 | 菜单项 |
| `sys_menu_save` | 保存并回大厅。 | 菜单项 |
| `sys_menu_help` | 重新听帮助。 | 菜单项 |
| `help_explore` | 左右滑选,单击确认。上滑看状态,下滑开菜单。**(26 号修改稿:删「双击重新听」)** | 帮助 |
| `help_battle` | 战斗中,左右滑选招,单击出手。前摇一响,点一下挡住。**(26 号修改稿:格挡=窗口内再单击)** | 帮助 |
| `settings_hint` | 音色、语速、背景音乐,请回大厅修改。 | 菜单内 |
| `st_hp_high` | 你状态很好。 | 血量 >70% |
| `st_hp_mid` | 你受了伤。 | 30~70% |
| `st_hp_low` | 你伤势很重,命悬一线。 | <30%(附带 warning 震动) |
| `st_gold_poor` | 口袋空空。 | 金币 <30 |
| `st_gold_some` | 有些积蓄。 | 30~150 |
| `st_gold_rich` | 腰包鼓鼓。 | >150 |
| `st_lv_low` | 你初出茅庐。 | lv 1-2 |
| `st_lv_mid` | 你小有名气。 | lv 3-5 |
| `st_lv_high` | 你已是高手。 | lv 6+ |
| `st_weapon_none` | 你赤手空拳。 | 无武器 |
| `st_weapon_iron` | 你手持铁剑。 | iron_sword |
| `st_weapon_steel` | 你手持青钢剑。 | steel_sword |
| `st_weapon_wind` | 你手持听风剑。 | wind_sword |
| `st_armor_none` | 你身无片甲。 | 无护甲 |
| `st_armor_leather` | 你身着皮甲。 | leather |
| `st_armor_iron` | 你身着铁鳞甲。 | iron_scale |
| `sys_first_tap` | 点一下屏幕。 | **新增**(critical 开场指令,与 storyline 通用句一致) |
| `sys_first_tap_short` | 点一下。 | **新增**(开场等待点短句/首次无效解释) |
| `sys_turn_teach` | 听到这个声音,就是轮到你了。 | **新增**(「轮到你」状态课,链尾) |
| `sys_say_again` | 再说一遍: | **新增**(主动重听前缀,阶段 3) |
| `sys_unlock_up` | 想知道自己在哪,就向上滑。 | **新增**(阶梯阶段 1,教学战胜利挂链尾) |
| `sys_unlock_down` | 向下滑,可以打开菜单。 | **新增**(阶梯阶段 2,第一章通关挂链尾) |
| `sys_unlock_dt` | 没听清,就双击,再听一遍。 | **新增**(阶梯阶段 3) |
| `sys_demo_continue` | 听我做一次。 | **新增**(迷茫 L3 演示引导) |
| `hint_explore_short` | 滑一下。 | **新增**(探索等待点 `_short`) |
| `only_explore` | 现在,只要左右滑。 | **新增**(迷茫 L2 缩小说明) |
| `hint_shop_full` | 单击,买下。 | **新增**(商店等待点 `_full`) |
| `hint_shop_short` | 单击。 | **新增**(商店等待点 `_short`) |
| `hint_cmd_short` | 单击出手。 | **新增**(玩家回合 `_short`) |
| `hint_swipe_short` | 滑一下。 | **新增**(教学 T0 `_short`) |
| `tut_def_short` | 选防御。 | **新增**(教学 T3 `_short`) |
| `inv_up_locked` | 上滑还没解锁。先去战斗。 | **新增**(无效解释一次) |
| `inv_down_locked` | 菜单,通关第一章解锁。 | **新增**(无效解释一次) |
| `st_where_1` | 村外小路。去黑风寨。左右滑。 | **新增**(断点复述 zone1:village/path) |
| `st_where_2` | 林子深处。去黑风寨。左右滑。 | **新增**(断点复述 zone2:fork/chest/stream/hunter) |
| `st_where_3` | 黑风寨。救徒弟。左右滑。 | **新增**(断点复述 zone3:deepwood/gate/boss1) |
## D 组 · 场景描述(旁白 ×16)
| id | 台词全文 |
|---|---|
| `desc_village` | 雾口村。篝火噼啪作响,村民低声议论着林子里的土匪。 |
| `desc_village_re` | 你回到了雾口村。 |
| `desc_path` | 林间小路。风穿过树叶,脚下的落叶沙沙作响。 |
| `desc_path_re` | 你回到林间小路。 |
| `desc_fork` | 岔路口。风声在左右两边,听起来不太一样。 |
| `desc_fork_re` | 你回到岔路口。 |
| `desc_chest` | 一个枯树洞。洞里似乎藏着什么。 |
| `desc_chest_re` | 你回到枯树洞前。 |
| `desc_stream` | 溪流。水声潺潺,是个歇脚的好地方。 |
| `desc_stream_re` | 你回到溪流边。 |
| `desc_hunter` | 猎人小屋。柴火正旺,还有磨刀的声音。 |
| `desc_hunter_re` | 你回到猎人小屋。 |
| `desc_deepwood` | 密林深处。虫鸣急促,远处有狼嚎,杀气很重。 |
| `desc_deepwood_re` | 你回到密林深处。 |
| `desc_gate` | 黑风寨门前。火把熊熊,人声嘈杂。 |
| `desc_hall` | 聚义厅。火盆熊熊,大厅空旷,回声冰冷。 |
## O 组 · 选项名(旁白 ×18)
| id | 台词全文 |
|---|---|
| `opt_go_path` | 前进,去林间小路。 |
| `opt_go_fork` | 前进,去岔路口。 |
| `opt_go_chest` | 往左,看看树洞。 |
| `opt_go_stream` | 往右,去溪流。 |
| `opt_go_hunter` | 前进,去猎人小屋。 |
| `opt_go_deepwood` | 前进,进密林深处。 |
| `opt_go_gate` | 前进,去寨门。 |
| `opt_back` | 返回。 |
| `opt_shop` | 去商店。 |
| `opt_rest` | 休息一晚。 |
| `opt_status` | 查看状态。 |
| `opt_investigate` | 调查四周。 |
| `opt_open_chest` | 打开树洞。 |
| `opt_drink` | 饮水休息。 |
| `opt_talk_hunter` | 和老猎人谈谈。 |
| `opt_assault` | 强攻寨门。 |
| `opt_sneak` | 绕行潜入。 |
| `opt_leave` | 离开。 |
## E 组 · 事件(旁白 ×6)
| id | 台词全文 |
|---|---|
| `evt_gold15` | 你在落叶下摸到十五枚金币。 |
| `evt_nothing` | 这里什么都没有了。 |
| `evt_chest` | 树洞里有两瓶金疮药,你收好了。 |
| `evt_hunter_gift` | 老猎人塞给你一瓶金疮药,还说商店会给你算便宜些。 |
| `evt_gate_open` | 寨门缓缓打开。 |
| `evt_ch1_end` | 寨主倒了,但徒弟不在这里。一张字条,指向南方的腐沼。 |
## B 组 · 战斗(旁白 ×26)
| id | 台词全文 | 触发 |
|---|---|---|
| `btl_start_wolf` | 野狼拦路! | 遭遇狼 |
| `btl_start_bandit` | 山贼围上来了! | 遭遇山贼 |
| `btl_start_spider` | 毒蛛从树上垂了下来! | 遭遇毒蛛 |
| `btl_start_elite` | 寨丁头目挡住了去路! | 遭遇头目 |
| `btl_start_boss1` | 黑风寨主,就在你面前。 | Boss 战 |
| `cmd_attack` | 攻击。 | 指令 |
| `cmd_skill` | 破空斩。 | 指令 |
| `cmd_defend` | 防御。 | 指令 |
| `cmd_item` | 金疮药。 | 指令 |
| `btl_nomp` | 内劲不足。 | mp<3 选技能 |
| `btl_noitem` | 没有金疮药了。 | 无药选道具 |
| `btl_flee` | 你抽身退出了战斗。 | 逃跑成功 |
| `btl_noflee` | 避无可避! | Boss/剧情战逃跑 |
| `btl_enemy_die` | 敌人倒下了。 | 击杀 |
| `btl_win` | 战斗胜利。 | 胜利 |
| `btl_loot_small` | 小有收获。 | 战利 exp+gold <15 |
| `btl_loot_mid` | 收获不少。 | 15~40 |
| `btl_loot_big` | 大获全胜,收获颇丰。 | >40 |
| `btl_levelup` | 你的修为精进了。 | 升级(success 震动) |
| `btl_lose` | 你倒下了,黑暗吞没了一切。 | 战败 |
| `btl_lose_hint` | 记住,听清前摇,点一下格挡。**(26 号修改稿:格挡=窗口内再单击)** | 战败提示 |
| `tut_b1` | 它要扑了,听前摇! | 教学战 |
| `tut_b2` | 就是现在,点一下挡住。**(26 号修改稿,critical ≤3s)** | 教学战 |
| `tut_b3` | 选攻击,单击出剑。**(26 号修改稿:T1 攻击课)** | 教学战 |
| `tut_b4` | 没挡住也没关系,再来一次。 | 教学战格挡失败 |
| `tut_b5` | 好剑法!接下来,靠你自己了。 | 教学战结束 |
## SH 组 · 商店(旁白 ×7)
| id | 台词全文 |
|---|---|
| `shop_open` | 商店。左右滑看看货,单击购买。 |
| `shop_price_sword` | 铁剑,一百金。 |
| `shop_price_armor` | 皮甲,八十金。 |
| `shop_price_potion` | 金疮药,三十金。 |
| `shop_owned` | 这件你已经有了。 |
| `shop_poor` | 钱不够。 |
| `shop_buy` | 买下了。 |
## N 组 · NPC(单音色平铺 ×16)
| id | 角色 | 台词全文 |
|---|---|---|
| `npc_headman_1` | 村长 | 外乡人,林子里不太平。这五十金,拿着防身。 |
| `npc_headman_2` | 村长 | 商店就在村里,缺什么就去看看。 |
| `npc_headman_3` | 村长 | 听说你是用耳朵走路的剑客?保重啊。 |
| `npc_headman_4` | 村长 | 救救那些被掳走的孩子吧。 |
| `npc_hunter_1` | 老猎人 | 站住。……哦,是个用耳朵的。 |
| `npc_hunter_2` | 老猎人 | 寨子里有我旧识。带上这个,别死在路上。 |
| `npc_hunter_3` | 老猎人 | 黑风寨主的双刀很快,听清他出刀前的动静。 |
| `npc_hunter_4` | 老猎人 | 去吧。让我听听,你的传说。 |
| `npc_elite_1` | 寨丁头目 | 哪儿来的瞎子,敢闯黑风寨! |
| `npc_elite_half` | 寨丁头目 | 你……你到底是什么人! |
| `npc_elite_die` | 寨丁头目 | 寨主……会替我报仇…… |
| `npc_boss1_1` | 黑风寨主 | 盲剑客?正好,省得挖你的眼睛。 |
| `npc_boss1_2` | 黑风寨主 | 有两下子。可惜,你听不懂死期的声音。 |
| `npc_boss1_die` | 黑风寨主 | 白无瞳……会找到你…… |
---
**合计:旁白 104 句 × 2 性别 + NPC 16 句 = 224 条音频**(×2 格式 = 448 文件)。对话功能与语气大纲对照见 [05-rpg.md](05-rpg.md) §5.3,场景/战斗触发逻辑见 [05-rpg-chapter1.md](05-rpg-chapter1.md)。
---
## 键盘变体(key,P1 输入平权路线 a,16 句)
「生效输入模式=键盘」(settings.input=key,或 auto 且键盘在跟/纯桌面初始判定,
web/engine/gesture.js inputMode())时,引擎 voice 候选链前置加载
`web/rpg/audio/voice/<gender>/key/<id>.{ogg,m4a}`,变体缺失回退主资产——触屏措辞零改动。
>
> 措辞规范(02-input-parity.md §4.3 路线 a + P1 裁定):向左滑→按左方向键(四向同理,
> WASD 不进台词);单击/轻触屏幕→按空格;双击→按回车;按住/长按→按住空格;
> 复合短语(左右滑→左右方向键、滑动→方向键)按语义等价展开;只改操作词,其余
> 内容一字不动,不新增「重」类多音字。本表与 `tools/gen_voice_dual.py` 的
> `KEY_LINES` 逐字一致(两表一致铁律:改一处必改另一处)。
> 资产:×2 性别 = 16×2 条、×2 格式 = 16×4 文件;管线 `gen_voice_dual.py --only-variants`
> 生成 → `--convert` 落盘,终检 `tools/check_all_assets.py`(key 两性别一致且 ⊆ 主集)。
| id | 键盘台词全文(触屏原句见本表上方对应 id) |
|---|---|
| `sys_continue_ask` | 检测到你的旅程记录。按空格继续,按右方向键开始新的旅程。 |
| `sys_menu` | 菜单。左右方向键选择,按空格确认。 |
| `help_explore` | 左右方向键选,按空格确认。上方向键看状态,下方向键开菜单。**(26 号修改稿)** |
| `help_battle` | 战斗中,左右方向键选招,按空格出手。前摇一响,按空格挡住。**(26 号修改稿)** |
| `btl_lose_hint` | 记住,听清前摇,按空格挡住。**(26 号修改稿)** |
| `tut_b2` | 就是现在,按空格挡住!**(26 号修改稿)** |
| `tut_b3` | 选攻击,按空格出剑。**(26 号修改稿)** |
| `shop_open` | 商店。左右方向键看看货,按空格购买。 |
| `skip_hint` | 按空格可跳过旁白。 |
| ~~`tut_battle_2`~~ | ~~左右方向键切换招式,攻击、破空斩、防御、金疮药。按空格,出手。~~(**停用**) |
| ~~`tut_battle_3`~~ | ~~敌人出手前有一声前摇。听到前摇,马上按回车,就能格挡。~~(**停用**) |
| ~~`tut_battle_5`~~ | ~~记住:听清前摇,按回车格挡。开始吧!~~(**停用**) |
| `tut_b0` | 战斗里,左右方向键选招式,按空格出手。听到这个声音,就是你的回合。先按一按方向键,试试。 |
| `tut_b6` | 来不及挡,就选防御。左右方向键,选防御,按空格。 |
| `gd_parry_miss` | 前摇响着呢。按空格,挡住。**(26 号修改稿)** |
| ~~`gd_stall`~~ | ~~想好了吗?左右方向键选择,按空格出手。~~(**停用**) |
| `sys_first_tap` / `sys_first_tap_short` | 按一下空格。**(新增)** |
| `sys_unlock_up` | 想知道自己在哪,就按上方向键。**(新增)** |
| `sys_unlock_down` | 按下方向键,可以打开菜单。**(新增)** |
| `sys_unlock_dt` | 没听清,就按回车,再听一遍。**(新增)** |
| `hint_explore_short` / `hint_swipe_short` | 按方向键。**(新增)** |
| `only_explore` | 现在,只要左右方向键。**(新增)** |
| `hint_shop_full` | 按空格,买下。**(新增)** |
| `hint_shop_short` | 按空格。**(新增)** |
| `hint_cmd_short` | 按空格出手。**(新增)** |
| `tut_def_short` | 选防御。**(新增,无操作词不变体)** |
| `st_where_1` | 村外小路。去黑风寨。按方向键。**(新增)** |
| `st_where_2` | 林子深处。去黑风寨。按方向键。**(新增)** |
| `st_where_3` | 黑风寨。救徒弟。按方向键。**(新增)** |
| `inv_up_locked` | 上方向键还没解锁。先去战斗。**(新增)** |
| `inv_down_locked` | 菜单,通关第一章解锁。**(新增,无操作词不变体)** |
---
## 26 号重构变更登记(2026-10,docs/design/26-apply-rpg.md)
完整清单(含全部文案与类别)见 `tools/voice_lines_26/rpg.md`;生成仍以
`tools/gen_voice_dual.py` `RPG_LINES` 为准(**本表与 KEY_LINES 两表一致铁律**)。
NPC 平铺台词(N 组)不改。
| 变更 | id | 说明 |
|---|---|---|
| **新增 ×20** | `sys_first_tap` / `sys_first_tap_short` / `sys_turn_teach` / `sys_say_again` / `sys_unlock_up` / `sys_unlock_down` / `sys_unlock_dt` / `sys_demo_continue` / `hint_explore_short` / `only_explore` / `hint_shop_full` / `hint_shop_short` / `hint_cmd_short` / `hint_swipe_short` / `tut_def_short` / `inv_up_locked` / `inv_down_locked` / `st_where_1..3` | 已并入上文 S 组与键盘变体表;通用系统句与 storyline 逐字一致 |
| **修改 ×6** | `help_explore` / `help_battle` / `btl_lose_hint` / `tut_b2` / `tut_b3` / `gd_parry_miss` | 全部消除「双击格挡 / 双击重听」旧口径:格挡 = 前摇窗口内**再单击**(05 系列明令) |
| **停用 ×7** | `intro_3` / `tut_battle_1..5` / `gd_stall` | 开场规则念白砍掉(26 号 §4.10);R6 长教学链改一句一教(原则 11);旧看门狗插播句由三档提示 + 迷茫接管取代 |
| **保留在用** | `gd_wrap_first` / `gd_wrap_last` / `tut_b0` / `tut_b1` / `tut_b2b` / `tut_b4` / `tut_b5` / `tut_b6` / `skip_hint` / `foe_hp_*` / `boss1_warn` / `btl_flee_fail` | 探索回绕/末位提示、教学四步、跳句提示、敌方血量档照旧引用 |