v2完整版:VoxCPM2语音 + 多轮对话 + 文档重写
- 用VoxCPM2生成128条v2语音(林夏回应+NPC反应+Round3对话) - story.js全部切换到VoxCPM2音频路径 - engine.js: BGM音量减半(0.2→0.1)、MSG-14前导语支持、结局E用周南新语音 - 林夏.md完整重写:6手势交互、主角有声音、VoxCPM2本地TTS方案 - batch_tts_voxcpm.py: 新增linxia角色、修复self_3y音色、添加全部v2台词 - 新增voice/linxia/参考音色 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+203
-1
@@ -46,6 +46,10 @@ BASE_URL = f"http://{HOST}:{PORT}"
|
||||
# speed: 语速倍率(通过 ffmpeg atempo 后处理)
|
||||
# ──────────────────────────────────────────────────────────────
|
||||
ROLES = {
|
||||
"linxia": {
|
||||
"dir": "linxia",
|
||||
"speed": 1.00,
|
||||
},
|
||||
"mom": {
|
||||
"dir": "mom",
|
||||
"speed": 0.92,
|
||||
@@ -91,7 +95,7 @@ ROLES = {
|
||||
"speed": 1.20,
|
||||
},
|
||||
"self_3y": {
|
||||
"dir": "xiaomei",
|
||||
"dir": "linxia",
|
||||
"speed": 1.15,
|
||||
},
|
||||
}
|
||||
@@ -219,6 +223,204 @@ LINES = [
|
||||
# ("lv11_0030_self-3y_voice_01", "self_3y", "(明朗版台词)"),
|
||||
# ("lv11_0030_self-3y_voice_02", "self_3y", "(迷茫版台词)"),
|
||||
# ("lv11_0030_self-3y_voice_03", "self_3y", "(温柔版台词)"),
|
||||
|
||||
# ══════════════════════════════════════════════════════════
|
||||
# v2: 林夏回应 + NPC 反应(Round 2 & 3)
|
||||
# ══════════════════════════════════════════════════════════
|
||||
|
||||
# ── 01 · 林夏自动回应 ──
|
||||
("v2_msg01_linxia_auto", "linxia", "嗯……好。"),
|
||||
|
||||
# ── 02 · 小美 ──
|
||||
# 林夏回应
|
||||
("v2_msg02_linxia_warm", "linxia", "好啊,明天不见不散。"),
|
||||
("v2_msg02_linxia_cold", "linxia", "再说吧。"),
|
||||
("v2_msg02_linxia_curious", "linxia", "你怎么知道的啊?"),
|
||||
("v2_msg02_linxia_tap", "linxia", "嗯。"),
|
||||
# 小美反应
|
||||
("v2_msg02_react_warm", "xiaomei", "行!那我叫上安安!老地方见!别放鸽子啊!"),
|
||||
("v2_msg02_react_cold", "xiaomei", "……好吧。你要是改主意了随时说。"),
|
||||
("v2_msg02_react_curious", "xiaomei",
|
||||
"还不是阿哲自己发朋友圈!你不知道吗?他发了又秒删……"),
|
||||
("v2_msg02_react_silent", "xiaomei", "??你还活着吗哈哈。好了不烦你了,有事找我。"),
|
||||
("v2_msg02_react_tap", "xiaomei", "嗯是什么意思啊哈哈!行吧你休息。"),
|
||||
# Round 3 (追问路径)
|
||||
("v2_msg02_r3_linxia_curious", "linxia", "他……发了什么?"),
|
||||
("v2_msg02_r3_react", "xiaomei",
|
||||
"就发了一张你们以前的照片,配了一句'值得'。两分钟就删了。"),
|
||||
|
||||
# ── 03 · 外卖 · 林夏自动回应 ──
|
||||
("v2_msg03_linxia_auto", "linxia", "好,我下来拿。"),
|
||||
|
||||
# ── 04 · 阿哲 ──
|
||||
# 林夏回应
|
||||
("v2_msg04_linxia_warm", "linxia", "你那边……还好吗。"),
|
||||
("v2_msg04_linxia_cold", "linxia", "知道了。明天寄。"),
|
||||
("v2_msg04_linxia_curious", "linxia", "你怎么不自己来拿。"),
|
||||
("v2_msg04_linxia_tap", "linxia", "好。"),
|
||||
# 阿哲反应
|
||||
("v2_msg04_react_warm", "azhe", "我……挺好的。你呢?"),
|
||||
("v2_msg04_react_cold", "azhe", "嗯……谢了。"),
|
||||
("v2_msg04_react_curious", "azhe", "我……不太方便过去。"),
|
||||
("v2_msg04_react_silent", "azhe", "那……我晚点再说吧。"),
|
||||
("v2_msg04_react_tap", "azhe", "谢谢。"),
|
||||
# Round 3 温暖路径 (阿哲问"你呢?"后)
|
||||
("v2_msg04_r3w_linxia_warm", "linxia", "不太好。"),
|
||||
("v2_msg04_r3w_linxia_cold", "linxia", "挺好的。"),
|
||||
("v2_msg04_r3w_react_warm", "azhe", "……对不起。"),
|
||||
("v2_msg04_r3w_react_cold", "azhe", "那就好。"),
|
||||
("v2_msg04_r3w_react_silent", "azhe", "……那,晚安。"),
|
||||
# Round 3 追问路径 (阿哲说"不太方便"后)
|
||||
("v2_msg04_r3c_linxia_curious", "linxia", "为什么。"),
|
||||
("v2_msg04_r3c_linxia_warm", "linxia", "算了,不问了。"),
|
||||
("v2_msg04_r3c_react_curious", "azhe", "我……没什么。你寄吧。"),
|
||||
|
||||
# ── 05 · HR 王姐 ──
|
||||
# 林夏回应
|
||||
("v2_msg05_linxia_warm", "linxia", "谢谢王姐。"),
|
||||
("v2_msg05_linxia_cold", "linxia", "好的,知道了。"),
|
||||
("v2_msg05_linxia_curious", "linxia", "王姐……有什么建议吗?"),
|
||||
("v2_msg05_linxia_tap", "linxia", "好。"),
|
||||
# 王姐反应
|
||||
("v2_msg05_react_warm", "hr", "别客气。你还年轻,出去看看也好。这行业你知道的。"),
|
||||
("v2_msg05_react_curious", "hr", "你想听真话?别在这行耗了。你有本事,去试试别的。"),
|
||||
|
||||
# ── 06 · 安安 ──
|
||||
# 林夏回应
|
||||
("v2_msg06_linxia_warm", "linxia", "在哪儿啊?我看看吧。"),
|
||||
("v2_msg06_linxia_cold", "linxia", "不了,你们玩好。"),
|
||||
("v2_msg06_linxia_curious", "linxia", "你喝了多少了?"),
|
||||
("v2_msg06_linxia_tap", "linxia", "嗯。"),
|
||||
# 安安反应
|
||||
("v2_msg06_react_warm", "anan", "对面那个!我给你留了位置!赶紧赶紧!"),
|
||||
("v2_msg06_react_cold", "anan", "好吧!那我给你寄一杯!"),
|
||||
("v2_msg06_react_curious", "anan", "才两杯!我清醒得很!……好吧三杯。快来!"),
|
||||
("v2_msg06_react_silent", "anan", "喂?信号不好吗?好吧以后再约!"),
|
||||
("v2_msg06_react_tap", "anan", "嗯是来还是不来啊!算了回头聊!"),
|
||||
|
||||
# ── 07 · 寝室群 ──
|
||||
# 林夏回应
|
||||
("v2_msg07_linxia_warm", "linxia", "恭喜恭喜!太厉害了!"),
|
||||
("v2_msg07_linxia_cold", "linxia", "恭喜。"),
|
||||
("v2_msg07_linxia_curious", "linxia", "怎么升的啊?讲讲!"),
|
||||
# 群反应
|
||||
("v2_msg07_react_warm", "dorm_a", "哈哈谢谢!我请客!你最近怎么样啊?"),
|
||||
("v2_msg07_react_curious", "dorm_a", "说来话长!我们老板走了我就顶上了哈哈"),
|
||||
("v2_msg07_react_tap", "dorm_b", "林夏发表情了哈哈"),
|
||||
# Round 3 温暖路径 (室友A问"你最近怎么样"后)
|
||||
("v2_msg07_r3_linxia_warm", "linxia", "挺好的~你请客我去!"),
|
||||
("v2_msg07_r3_linxia_cold", "linxia", "还行。"),
|
||||
("v2_msg07_r3_react_cold", "dorm_b", "你是不是有事啊?没事可以跟我们说"),
|
||||
|
||||
# ── 09 · 小美(醉)──
|
||||
# 林夏回应
|
||||
("v2_msg09_linxia_warm", "linxia", "小美……你没事吧。"),
|
||||
("v2_msg09_linxia_cold", "linxia", "我知道了。"),
|
||||
("v2_msg09_linxia_curious", "linxia", "你……为什么现在才说。"),
|
||||
("v2_msg09_linxia_tap", "linxia", "嗯。"),
|
||||
# 小美反应
|
||||
("v2_msg09_react_warm", "xiaomei_drunk",
|
||||
"我没事……我就是喝多了想告诉你……你别怪我。"),
|
||||
("v2_msg09_react_curious", "xiaomei_drunk",
|
||||
"因为你今天……我怕你以后恨我……"),
|
||||
("v2_msg09_react_tap", "xiaomei_drunk",
|
||||
"你不生气吗?算了……当我没说。"),
|
||||
# Round 3 追问路径 (小美说"怕你恨我"后)
|
||||
("v2_msg09_r3_linxia_warm", "linxia", "我不恨你。"),
|
||||
("v2_msg09_r3_linxia_cold", "linxia", "我得想想。"),
|
||||
("v2_msg09_r3_react_warm", "xiaomei_drunk", "谢谢你……谢谢你林夏。"),
|
||||
("v2_msg09_r3_react_cold", "xiaomei_drunk", "好……对不起。"),
|
||||
("v2_msg09_r3_react_silent_q", "xiaomei_drunk", "你还在吗?"),
|
||||
|
||||
# ── 10 · 妈妈文字 ──
|
||||
# 林夏回应
|
||||
("v2_msg10_linxia_warm", "linxia", "没有,怎么了?"),
|
||||
("v2_msg10_linxia_cold", "linxia", "嗯,要睡了。"),
|
||||
("v2_msg10_linxia_curious", "linxia", "妈……你能打电话给我吗?"),
|
||||
("v2_msg10_linxia_tap", "linxia", "嗯。"),
|
||||
# 妈妈反应
|
||||
("v2_msg10_react_warm", "mom", "没事,就是想起来问一下。今天怎么样?"),
|
||||
("v2_msg10_react_cold", "mom", "好,早点睡。"),
|
||||
("v2_msg10_react_silent", "mom", "看到了回一下。"),
|
||||
("v2_msg10_react_tap", "mom", "嗯就是睡了?晚安。"),
|
||||
# 追问路径:妈妈打来电话
|
||||
("v2_msg10_call_mom", "mom", "怎么了夏夏?你声音不对。"),
|
||||
("v2_msg10_call_linxia_warm", "linxia", "没什么……就是有点累。"),
|
||||
("v2_msg10_call_linxia_curious", "linxia", "妈,我辞职了。"),
|
||||
("v2_msg10_call_react_warm", "mom", "累了就回家歇几天。妈煮了排骨。"),
|
||||
("v2_msg10_call_react_curious", "mom", "辞了就辞了。回来再说。"),
|
||||
("v2_msg10_call_react_silent", "mom", "不想说就不说。妈在这呢。"),
|
||||
# 温暖路径 Round 3 (妈妈问"今天怎么样"后)
|
||||
("v2_msg10_rw_linxia_warm", "linxia", "还好。"),
|
||||
("v2_msg10_rw_linxia_curious", "linxia", "不太好。"),
|
||||
("v2_msg10_rw_react_warm", "mom", "那就好。别太晚了。"),
|
||||
("v2_msg10_rw_react_curious", "mom", "怎么了?"),
|
||||
|
||||
# ── 11 · 阿哲电话 ──
|
||||
# 林夏回应
|
||||
("v2_msg11_linxia_warm", "linxia", "可以。但只有5分钟。"),
|
||||
("v2_msg11_linxia_cold", "linxia", "不方便。我明天寄给你。"),
|
||||
("v2_msg11_linxia_curious", "linxia", "为什么非要今天来?"),
|
||||
("v2_msg11_linxia_tap", "linxia", "不了。"),
|
||||
# 阿哲反应
|
||||
("v2_msg11_react_warm", "azhe", "好,我马上过来。谢谢。"),
|
||||
("v2_msg11_react_cold", "azhe", "好吧……那谢了。"),
|
||||
("v2_msg11_react_curious", "azhe", "我……明天要出差。就5分钟。"),
|
||||
("v2_msg11_react_tap", "azhe", "好。"),
|
||||
|
||||
# ── 12 · 周南 ──
|
||||
# 林夏回应
|
||||
("v2_msg12_linxia_warm", "linxia", "周南!你还记得我啊!"),
|
||||
("v2_msg12_linxia_cold", "linxia", "嗯,你好。"),
|
||||
("v2_msg12_linxia_curious", "linxia", "你怎么有我微信的?"),
|
||||
("v2_msg12_linxia_tap", "linxia", "嗯……好久不见。"),
|
||||
# 周南反应
|
||||
("v2_msg12_react_warm", "zhounan", "当然记得。你是我们班最安静的那个。"),
|
||||
("v2_msg12_react_cold", "zhounan", "嗯……好久不见。你现在在哪呢?"),
|
||||
("v2_msg12_react_curious", "zhounan",
|
||||
"你忘了吗?毕业那天你加的我。不过你可能早忘了哈哈。"),
|
||||
("v2_msg12_react_silent", "zhounan",
|
||||
"你是不是不记得我了?没关系的。就是突然想说声嗨。"),
|
||||
("v2_msg12_react_tap", "zhounan", "是啊,好久不见。"),
|
||||
|
||||
# ── 13 · 周南长语音 ──
|
||||
# 林夏回应
|
||||
("v2_msg13_linxia_warm", "linxia", "一个人在北京,还好吗?"),
|
||||
("v2_msg13_linxia_cold", "linxia", "你讲了好多。"),
|
||||
("v2_msg13_linxia_curious", "linxia", "……生日快乐。"),
|
||||
("v2_msg13_linxia_tap", "linxia", "嗯,我都听到了。"),
|
||||
# 周南反应
|
||||
("v2_msg13_react_warm", "zhounan", "还行吧。习惯了。你呢?你在北京过得好吗?"),
|
||||
("v2_msg13_react_cold", "zhounan", "是吗?不好意思,话太多了。"),
|
||||
("v2_msg13_react_curious", "zhounan", "谢谢你。你是今天第一个跟我说的。"),
|
||||
("v2_msg13_react_silent", "zhounan", "不好意思突然说这么多……那,晚安。"),
|
||||
("v2_msg13_react_tap", "zhounan", "嗯。谢谢你听我说。"),
|
||||
# Round 3 温暖路径 (周南问"你在北京过得好吗"后)
|
||||
("v2_msg13_r3_linxia_warm", "linxia", "不太好。今天也是我的坏日子。"),
|
||||
("v2_msg13_r3_linxia_cold", "linxia", "还行吧。"),
|
||||
("v2_msg13_r3_linxia_curious", "linxia", "你为什么突然联系我?"),
|
||||
("v2_msg13_r3_react_warm", "zhounan", "那我们算是难兄难妹了。"),
|
||||
("v2_msg13_r3_react_cold", "zhounan", "那就好。"),
|
||||
("v2_msg13_r3_react_curious", "zhounan",
|
||||
"因为……今天生日嘛,想起以前的事。想起你。"),
|
||||
|
||||
# ── 14 · 妈妈第二次电话 ──
|
||||
("v2_msg14_linxia_auto", "linxia", "嗯,我没事。"),
|
||||
("v2_msg14_mom_ask", "mom", "真的没事?"),
|
||||
("v2_msg14_react_linked", "mom", "好。那早点睡。妈爱你。"),
|
||||
("v2_msg14_react_unlinked", "mom", "你今天怎么都不理妈妈?出什么事了吗?"),
|
||||
|
||||
# ── 结局 E · 周南秒回 ──
|
||||
("v2_ending_e_zhounan", "zhounan", "那我下次出差来北京,请你吃饭好不好。"),
|
||||
|
||||
# ── 通用林夏短句(备用) ──
|
||||
("v2_linxia_generic_hmm", "linxia", "嗯。"),
|
||||
("v2_linxia_generic_ok", "linxia", "好。"),
|
||||
("v2_linxia_generic_warm_ok", "linxia", "嗯~好啊。"),
|
||||
("v2_linxia_generic_cold_know", "linxia", "知道了。"),
|
||||
("v2_linxia_generic_cold_fine", "linxia", "行吧。"),
|
||||
("v2_linxia_generic_curious", "linxia", "嗯?"),
|
||||
("v2_linxia_generic_then", "linxia", "然后呢?"),
|
||||
]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user