Files
SoundGame/docs/design/05-rpg-ch1-voice-ids.md
T
xsl 566241e05d feat(platform/P1): 配对码跨设备 + 认领打磨 + 键盘语音双套资产(两 agent 并行 + 集成收口)
配对码与认领(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 在途)
2026-09-10 00:43:23 +08:00

12 KiB
Raw Blame History

05b · 《剑与声》第一章语音台词表(voice ids,R4 录音依据)

给音频总监的录制说明

  • 旁白(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 先记住,怎么用耳朵走路。

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 左右滑切换选项,单击确认。双击重新听场景,上滑查看状态,下滑打开菜单。 帮助
help_battle 战斗中,左右滑选招式,单击出手。听到敌人的前摇,双击格挡。 帮助
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

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 记住,听清前摇,双击格挡。 战败提示
tut_b1 它要扑了,听前摇! 教学战
tut_b2 就是现在,双击格挡! 教学战
tut_b3 挡住了!轮到你了。左右滑选攻击,单击出剑。 教学战
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 §5.3,场景/战斗触发逻辑见 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 左右方向键切换选项,按空格确认。按回车重新听场景,按上方向键查看状态,按下方向键打开菜单。
help_battle 战斗中,左右方向键选招式,按空格出手。听到敌人的前摇,按回车格挡。
btl_lose_hint 记住,听清前摇,按回车格挡。
tut_b2 就是现在,按回车格挡!
tut_b3 挡住了!轮到你了。左右方向键选攻击,按空格出剑。
shop_open 商店。左右方向键看看货,按空格购买。
skip_hint 按空格可跳过旁白。
tut_battle_2 左右方向键切换招式,攻击、破空斩、防御、金疮药。按空格,出手。
tut_battle_3 敌人出手前有一声前摇。听到前摇,马上按回车,就能格挡。
tut_battle_5 记住:听清前摇,按回车格挡。开始吧!
tut_b0 战斗里,左右方向键选招式,按空格出手。听到这个声音,就是你的回合。先按一按方向键,试试。
tut_b6 来不及格挡,就选防御。左右方向键,选防御,按空格。
gd_parry_miss 前摇声起的时候按回车,才能格挡。
gd_stall 想好了吗?左右方向键选择,按空格出手。