Files
SoundGame/docs/design/22-bridge-voice-ids.md
T
xsl cd4c5ec65a docs(new8): 批次 4 策划落地(21-keeper/22-bridge)——8 款设计文档全部齐备
- keeper:时空双线(风暴/老唱片签名+锚句)、回忆插叙固定时序、trust×truth 双标量、148 句
- bridge:四象限系统状态音(2.0s±50ms 逐毫秒可断言)、告警仲裁 R1-R8+双危机 7 场景穷举、危机事件卡、忠诚账本、154 句
- 13 号文档 §23 六款断言指针;README new8 索引补齐;章程进度账 8 款设计 ☑(批次 2 资产/开发 ▶ 进行中)
2026-09-10 01:02:49 +08:00

254 lines
18 KiB
Markdown
Raw 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.
# 22b · 《星环舰长》语音台词表(voice ids,录音依据)
> **给音频总监的录制说明**
> - **旁白双性别组**(142 句):旁白=舰载系统音(系统/教学/状态/账目/结算宣读),不念船员台词。落 `web/bridge/audio/voice/female|male/<id>.{ogg,m4a}`,两性别 id 集合完全一致。
> - female = `Serena`,instruct 常量:`清晰沉稳的女声,舰载系统音,冷静克制,句读干净`
> - male = `Uncle_Fu`,instruct 常量:`低沉沉稳的男声,舰载系统音,冷静克制`
> - 两常量全表统一(含教学/危机/结算),禁止句级变体、禁语速词(引擎 SoundTouch 变速)。
> - **NPC 平铺组**(12 句):船员台词=3 位 NPC 平铺单音色、**不做双性别**,落 `web/bridge/audio/voice/<id>.{ogg,m4a}`(引擎平铺回退命中)。NPC ≤3;同一角色 speaker+instruct 恒定;不加电台/电话滤波。区分度风险逐个标注:
> | 角色 | speaker | instruct 常量 | 区分度风险 |
> |---|---|---|---|
> | 大副(34 岁) | `Dylan` | `干脆利落的年轻男声,星舰大副,令出必行,敬重舰长` | **低:与两侧旁白(Serena/Uncle_Fu)均不同 speaker** |
> | 工程师(52 岁) | `Eric` | `沙哑厚重的中年男声,轮机工程师,惜船如命,慢条斯理` | 低:同上 |
> | 医师(38 岁) | `Vivian` | `温和坚定的女声,舰载医师,轻声但不容置疑` | 低:female 旁白=Serena,不重叠 |
> 本作 NPC 与旁白**零 speaker 重叠**(detective/teahouse 各有 2 处「中」风险,本作 0)。
> - **声音演技**:eng_gripe/xo_uneasy/doc_ignore 的失望、xo_fight/sup_xo 的战斗令——情绪全写在句内文本(省略号/叹号引导),instruct 恒定。
> - **数字规避**:全部量词/数字写死在整句内(「两资源」「资源加一」),无运行时拼接;档位全分档整句(hull 3 档/段 4 档/rp 3 档/忠诚 3×3/功勋 3 档/评级 5 档);**资源与功勋价格句只在价格恒真时使用**(修理每级恒 2 资源;改装价写死在各 upg 句内)。
> - **称呼中性**:旁白称玩家「舰长/你」,无性别化称呼(旁白性别随设置变化不影响内容)。
> - **多音字自查**:全表无「血」「爪」「挨」「壳」「重(chóng)」「弹」「泊」「处」;「重新听」统一写法。低风险 5 处标注:「撑不了多久」的「了」(liǎo)、「折算」的「折」(zhé)、「应急」的「应」(yìng)、「采得多/稳得很/打得尽兴」的「得」(de,助词)、「遭了伏击」的「了」(le)——试听异常再改写。
> - **键盘变体(V 组)**:操作提示句在 `gesture.inputMode()==='key'` 时改播 `_k` 变体(touch 回基础句);变体与基础句 id 一一对应、集中登记见文末 V 组。
> - 管线:`tools/gen_voice_dual.py` 照录(SPEAKERS 需新增 bridge 行 + BRIDGE_NPC 平铺表);生成后 `--convert` 落盘 + `tools/check_all_assets.py` 终检(双格式配对、双性别集合一致)。
## G0 组 · 系统/菜单/帮助(旁白 ×10)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `sys_menu` | 菜单。单击切换,双击确认。 | 下滑呼出模态菜单 |
| `sys_menu_resume` | 回到舰桥。 | 菜单项 |
| `sys_menu_save` | 保存并回大厅。 | 菜单项 |
| `sys_menu_help` | 重新听帮助。 | 菜单项 |
| `sys_menu_restart` | 放弃本次巡逻。 | 菜单项(run 清空保 meta) |
| `sys_saved` | 进度已保存。 | 存档写入后 |
| `settings_hint` | 音色、语速、背景音乐,请回大厅修改。 | 菜单内设置提示 |
| `sys_help` | 巡航中,上滑巡检全舰;危机中,左右滑听选项,单击下令。下滑菜单,双击重新听。 | 菜单内上滑 / 帮助项 |
| `sys_continue_ask` | 检测到未完成的巡逻。单击继续,右滑进星港。 | 有存档进游戏(TITLE) |
| `sys_new_patrol` | 新巡逻,星环号启航。 | 新巡逻开始 |
## G1 组 · 开场/教学(旁白 ×14)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `intro_1` | 你是巡逻舰星环号的舰长。在这条航线上,耳朵就是雷达。 | 开场链 1(TITLE 上滑重听时可复用) |
| `intro_2` | 全舰四个系统:引擎、护盾、扫描、武器,各守一方。 | 开场链 2 |
| `intro_3` | 引擎在舰尾低鸣,护盾在舰首嗡响。 | 开场链 3(方位教学 a) |
| `intro_4` | 扫描在左舷扫掠,武器在右舷充能。 | 开场链 4(方位教学 b) |
| `intro_5` | 危机从哪边来,哪边先遭殃。 | 开场链 5(受殃规则承诺,playtest 锁定) |
| `tut_d0` | 先试巡检。向上滑,听全舰状态。 | D0 前 |
| `tut_all_ok` | 四个音都稳,全舰正常。 | D0 完成;**正片巡检全 ok 时复用为链尾句**(一句两用,登记) |
| `tut_crisis` | 有情况。听签名音,辨认类型。 | D1 求救检测链前 |
| `tut_decide` | 左右滑听选项,单击下令。 | D2 决策窗前(豁免/导航教学) |
| `tut_aid` | 驰援靠扫描。我们的扫描,稳得很。 | D2 选项引导(首局 S1 无磨损=承诺必兑现) |
| `tut_after` | 就是这样:听声,辨型,下令。 | D2 结算链尾(教学要诀收束) |
| `tut_loyal` | 船员的心分三档:离心、平常、信赖。上滑巡检听得到。 | D3 前 |
| `tut_done` | 教学完了。舰长,航线交给你。 | D4(进自由巡航) |
| `tut_skip` | 已跳过教学。上滑巡检,危机时左右滑听选项。 | 下滑跳过教学 |
## G2 组 · 巡检/状态(旁白 ×30)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `sys_engine_dmg` | 引擎,受损。 | 巡检链异常段(引擎 tone 后)/磨损事件 |
| `sys_engine_off` | 引擎,离线。 | 巡检链(平线签名后);选项判定不满足时先播(真话归因) |
| `sys_shield_dmg` | 护盾,受损。 | 同上(护盾) |
| `sys_shield_off` | 护盾,离线。 | 同上 |
| `sys_scan_dmg` | 扫描,受损。 | 同上(扫描) |
| `sys_scan_off` | 扫描,离线。 | 同上 |
| `sys_weapon_dmg` | 武器,受损。 | 同上(武器) |
| `sys_weapon_off` | 武器,离线。 | 同上 |
| `st_hull_1` | 舰体,稳固。 | 巡检链(hull ≥75% 上限) |
| `st_hull_2` | 舰体,带伤。 | 巡检链(40-74%) |
| `st_hull_3` | 舰体,危急。 | 巡检链(<40%);跌至危急当刻加 danger 签名(每段 1 次) |
| `st_seg_1` | 第一巡航段。 | 巡检链段位段(S1) |
| `st_seg_2` | 第二巡航段。 | S2 |
| `st_seg_3` | 第三巡航段。 | S3 |
| `st_seg_4` | 第四巡航段,末段。 | S4 |
| `st_rp_1` | 资源紧张。 | 巡检链(0-2;跨档才即时播,双向) |
| `st_rp_2` | 资源够用。 | 3-6 |
| `st_rp_3` | 资源充足。 | ≥7 |
| `st_xo_1` | 大副,离心。 | 巡检链船员段(≤−2) |
| `st_xo_2` | 大副,平常。 | −1..+1 |
| `st_xo_3` | 大副,信赖。 | ≥2 |
| `st_eng_1` | 工程师,离心。 | 同上(工程师) |
| `st_eng_2` | 工程师,平常。 | |
| `st_eng_3` | 工程师,信赖。 | |
| `st_doc_1` | 医师,离心。 | 同上(医师) |
| `st_doc_2` | 医师,平常。 | |
| `st_doc_3` | 医师,信赖。 | |
| `recap_go` | 继续航行。 | 中断复述链尾 |
| `evt_dock` | 本段结束,靠港整备。 | 段计时到(危机结算后)进 DOCK |
| `evt_resume` | 启航,下一段巡航。 | DOCK 启航 → 下段 ROUTE |
## G3 组 · 危机(旁白 ×24)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `evt_meteor` | 碎石呼啸,陨石群。 | 检测链类型句(签名音后) |
| `evt_pirate` | 敌船引擎,海盗。 | 同上 |
| `evt_distress` | 断续三短,求救信号。 | 同上 |
| `evt_radiation` | 计数急响,辐射云。 | 同上 |
| `dir_port` | 方位,左舷。 | 检测链方位句(固定模板,四选一) |
| `dir_star` | 方位,右舷。 | 同上 |
| `dir_bow` | 方位,舰首。 | 同上(签名后带 dir_bow 上行尾音) |
| `dir_stern` | 方位,舰尾。 | 同上(下行尾音) |
| `cr_decide` | 听选项,下令。 | 决策窗开(倒计时自此起算) |
| `opt_evade` | 规避机动,靠引擎。 | 选项预览(陨石/海盗/辐射) |
| `opt_fight` | 迎战,靠武器。 | 选项预览(陨石/海盗) |
| `opt_breach` | 硬闯,靠护盾。 | 选项预览(陨石/辐射) |
| `opt_aid` | 驰援,靠扫描。 | 选项预览(求救) |
| `opt_ignore` | 按兵不动,不理会。 | 选项预览(海盗/求救) |
| `cr_timeout` | 没来得及下令。 | 决策窗超时(后接默认结局句,真话) |
| `res_clean` | 干净利落,有惊无险。 | 结局:无伤化解 |
| `res_hurt` | 舰体受创。 | 结局:轻伤(hit_hull 音) |
| `res_bad` | 损失惨重。 | 结局:重伤 |
| `res_mine` | 轰开碎石,采到矿材,资源加一。 | 陨石·迎战成功(res_pick 同点) |
| `res_plunder` | 海盗击退,缴获物资,资源加二。 | 海盗·迎战胜 / 求救陷阱反杀 |
| `res_reward` | 救援成功,对方致谢,资源加二。 | 求救·驰援成功 |
| `res_ambush` | 遭了伏击,舰体受创。 | 求救陷阱·驰援且武器不可用(hull−2) |
| `res_rad` | 全船受照。 | 辐射·超时/规避不动(hull−1+受殃系统受损) |
| `trap_hint` | 求救码后面,有引擎声,多留心。 | 求救陷阱变体检测链尾(先线索后抉择) |
## G4 组 · 忠诚/支援(旁白 ×10)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `loy_aid` | 医师与大副,记下了这次驰援。 | 求救·驰援成功(医师+1 大副+1) |
| `loy_ignore` | 求救没了下文,医师很失望。 | 求救·忽略/超时(医师−1) |
| `loy_fight_win` | 大副打得尽兴,士气高涨。 | 海盗·迎战胜 / 陨石·迎战轰开(大副+1) |
| `loy_evade_pirate` | 大副觉得,这一躲有些窝囊。 | 海盗·规避成功(大副−1) |
| `loy_breach` | 工程师心疼过载的护盾。 | 陨石/辐射·硬闯硬穿且护盾承接(工程师−1) |
| `loy_rad` | 医师在处理伤员。 | 伤员类结局:受照/伏击受创/海盗先手(医师−1) |
| `sup_xo` | 大副坐上炮位,火力压制! | 海盗·迎战下令瞬间 band≥2(战果升一级) |
| `sup_eng` | 工程师出手,系统复航了。 | 段末 band≥2 且有受损系统(自动修 1 级) |
| `sup_doc` | 医师带人抢修,舰体补回一点。 | 段末 band≥2 且本段掉血(hull+1) |
| `sup_none` | 这个岗位,眼下没人顶上。 | 支援条件不满足(每局限 1 次,之后静默) |
## G5 组 · 靠港整备(旁白 ×9)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `dock_open` | 靠港整备。左右滑看项目,单击执行。 | 进 DOCK(choice 签名同点) |
| `rep_engine` | 修理引擎,升一级,两资源。 | 修理项预览(仅受损/离线时出现;价恒真) |
| `rep_shield` | 修理护盾,升一级,两资源。 | 同上 |
| `rep_scan` | 修理扫描,升一级,两资源。 | 同上 |
| `rep_weapon` | 修理武器,升一级,两资源。 | 同上 |
| `rep_ok` | 修理完成。 | 修理执行成功(wrench 音+告警即止 R7) |
| `rep_poor` | 资源不够。 | 资源 <2 时执行修理(error 震) |
| `dock_go` | 启航,继续巡逻。 | 启航项(恒为末项) |
| `dock_empty` | 全舰状态良好,无需整备。 | 进 DOCK 且全系统 ok(仅启航一项) |
## G6 组 · 结算/死亡(旁白 ×16)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `die_intro` | 舰体解体在即,全员撤离。 | hull≤0 死亡链首(死窗+链锁) |
| `die_meteor` | 陨石撕开了船身。 | 死因=陨石(lastHit 真实来源) |
| `die_pirate` | 海盗的炮火击穿了舰体。 | 死因=海盗(含伏击——伏击者即海盗) |
| `die_rad` | 辐射熔穿了舱壁。 | 死因=辐射 |
| `die_adv_to` | 早下令,勤靠港,别硬扛。 | 建议:超时≥2 或泛化兜底(真话选句) |
| `die_adv_sys` | 系统离线时,别把宝押在它身上。 | 建议:本局存在因离线失败的抉择 |
| `rep_open` | 巡逻归来,全舰记功。剩余资源已折算功勋。 | REPORT 结算链首(gavel 位=seg_warp 音) |
| `rate_s` | 教科书巡逻,功勋卓著。 | score ≥18(措辞=账目 §8.2) |
| `rate_a` | 出色完成巡逻。 | ≥14 |
| `rate_b` | 巡逻结束,有惊无险。 | ≥10 |
| `rate_c` | 巡逻结束,遍体鳞伤。 | ≥6(完成保底) |
| `rate_d` | 巡逻失败,弃舰撤离。 | hull≤0(失败即 D) |
| `merit_1` | 功勋,寥寥。 | 本局功勋 ≤5 |
| `merit_2` | 功勋,可观。 | 6-10 |
| `merit_3` | 功勋,丰厚。 | ≥11 |
| `settle_hook` | 星港期待你的下一次巡逻。单击,返航。 | 结算链尾(链锁解除后单击生效;键盘态播 settle_hook_k) |
## G7 组 · 看门狗/纠错(旁白 ×5)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `gd_cruise` | 还在巡航。上滑,巡检全舰。 | CRUISE 无操作轨第 1 级(10s,full,idle-only) |
| `gd_decide` | 还在等命令。左右滑,听选项。 | ROUTE 12s / CRISIS 决策窗半程单级 |
| `gd_dock` | 还在整备。左右滑,单击执行。 | DOCK 无操作轨第 1 级(15s) |
| `gd_invalid` | 这个操作,这里用不上。 | 无效手势纠错(onceKey 同局 1 次) |
| `hint_dock3` | 整备完毕,就启航。 | DOCK 无进展轨 L3(150s;同时自动预览启航项,不替玩家花资源) |
## G8 组 · 星港(旁白 ×11)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `port_open` | 星港整备,功勋兑换。左右滑看,单击定。 | 进 PORT(TITLE 右滑) |
| `upg_spare` | 备用零件,出发自带一批物资。功勋二十。 | 改装项预览(20 功勋) |
| `upg_harvest` | 采集协议,每段多一份资源。功勋三十。 | 30 |
| `upg_armor1` | 加装装甲,舰体上限加一。功勋四十。 | 40 |
| `upg_vet` | 老兵船组,开局全员忠诚加一。功勋五十。 | 50 |
| `upg_armor2` | 重型装甲,舰体上限再加一。功勋六十。 | 60(需 armor1 已购才出现) |
| `upg_aegis` | 应急护盾,每段首次受创减一。功勋七十。 | 70 |
| `upg_done` | 这项已改装到位。 | PORT 预览已购项时替代价格句播报 |
| `upg_buy` | 改装完成。 | 购买成功 |
| `port_poor` | 功勋不够。 | 功勋不足时执行购买(error 震) |
| `port_back` | 返回。 | 返回项(末项,回 TITLE) |
## GR 组 · 航线选择(旁白 ×3)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `route_ask` | 选择巡航航线。 | 段 ROUTE 入口(S2 起;首局 S1 固定稳妥线不播) |
| `opt_route_safe` | 稳妥航线,采集平平,太平。 | 路线预览(采集 2/段,磨损 1 次;句内无数字=改装后恒真) |
| `opt_route_rich` | 矿富航线,采得多,磨损也多。 | 路线预览(采集 4/段,磨损 2 次) |
## V 组 · 键盘变体(旁白 ×10;`gesture.inputMode()==='key'` 时替代同名基础句)
| id | 替代基础句 | 台词全文 |
|---|---|---|
| `sys_help_k` | sys_help | 巡航中,上键巡检全舰;危机中,方向键听选项,空格下令。下键菜单,回车重新听。 |
| `tut_d0_k` | tut_d0 | 先试巡检。按上键,听全舰状态。 |
| `tut_decide_k` | tut_decide | 方向键听选项,空格下令。 |
| `cr_decide_k` | cr_decide | 听选项,空格下令。 |
| `dock_open_k` | dock_open | 靠港整备。方向键看项目,空格执行。 |
| `gd_cruise_k` | gd_cruise | 还在巡航。上键,巡检全舰。 |
| `gd_decide_k` | gd_decide | 还在等命令。方向键,听选项。 |
| `gd_dock_k` | gd_dock | 还在整备。方向键看,空格执行。 |
| `sys_continue_ask_k` | sys_continue_ask | 检测到未完成的巡逻。空格继续,右方向键进星港。 |
| `settle_hook_k` | settle_hook | 星港期待你的下一次巡逻。按空格,返航。 |
## N1 组 · 大副(NPC Dylan 平铺 ×4)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `xo_fight` | 舰长,交给我,炮位就绪! | sup_xo 同点(信赖支援进场) |
| `xo_win` | 打得漂亮,这条航线够他们传一阵子。 | 海盗·迎战胜(res_plunder 后接播) |
| `xo_uneasy` | 又是一路躲。舰长,弟兄们想打。 | 大副 band≤−2 首次巡检播报后(每局 1 次) |
| `xo_aid` | 驰援是应该的,星环号不是过路人。 | 求救陷阱反杀后(站得住的驰援) |
## N2 组 · 工程师(NPC Eric 平铺 ×4)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `eng_wear` | 老伙计累出毛病了,让我来。 | 磨损事件(sys_*_dmg 后接播) |
| `eng_fix` | 修好了,再听它稳稳地转。 | DOCK 修理 rep_ok 后接播 |
| `eng_sup` | 交给我,三分钟,给它救活。 | sup_eng 同点(段末自动抢修) |
| `eng_gripe` | 护盾不是这么用的,舰长…… | 工程师 band≤−2 首次(每局 1 次) |
## N3 组 · 医师(NPC Vivian 平铺 ×4)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `doc_aid` | 幸好停了船,他们撑不了多久了。 | 求救·驰援成功(res_reward 后接播) |
| `doc_ignore` | ……我没有什么要说的。 | 求救·忽略且医师在场首次(每局 1 次) |
| `doc_care` | 有伤员的地方,就有我。 | sup_doc 同点(段末舰体+1) |
| `doc_trap` | 有人拿求救当诱饵,小心。 | 陷阱变体检测链(trap_hint 后接播) |
---
**合计:154 句 ≤160 上限**(旁白 142 ×2 性别 = 284 条 + NPC 平铺 12 条 = **296 条音频** ×2 格式 = 592 文件)。
分组账:G0 10 + G1 14 + G2 30 + G3 24 + G4 10 + G5 9 + G6 16 + G7 5 + G8 11 + GR 3 + V 10 = 142(旁白);N1-N3 12(NPC)。
检测链 = `sig_*(sfx,pan/尾音按方位)→ evt_* → dir_* →(陷阱加 trap_hint)→ cr_decide`;下令链 = `pa_chime(sfx)→ 执行音 →(不满足先 sys_*_off)→ 结果句 → 账目/忠诚句 →(NPC 接播)`;
结算链 = `rep_open → rate_X → merit_档 → settle_hook`;死亡链 = `die_intro → die_cause → die_adv → rep_open → rate_d → merit_档 → settle_hook`;
巡检全链 = `4×状态音(引擎→护盾→扫描→武器) →(tut_all_ok | sys_*_dmg/off…)→ st_hull → st_seg → st_rp → st_xo/st_eng/st_doc`;巡检简链 = `4×状态音 → st_hull → 最紧要异常句`;中断复述链 = `st_hull → 最紧要异常句 → st_seg → recap_go`。
判定矩阵/忠诚账/仲裁规则对照 [22-bridge.md](22-bridge.md) §3-§8;资产规模核对见其 §9。