v2收尾:手势升级 + 暂停退出 + 结局语音化 + 分支补全 + 12条新音频

gestures.js: 新增长按(1s)、两指长按(暂停)、三指点击(退出),支持多指检测
engine.js: REPLY_COUNT变量、长按重播/状态广播、暂停恢复退出机制、
  选择提示音、结局台词预录音频替换TTS、内容预警+心理热线
story.js: MSG-10/11 follow-up补全down(沉默)选项
index.html: 操作指南添加长按/安全手势、内容预警文字
batch_tts_voxcpm.py: 新增12条台词(结局旁白+系统提示+分支NPC反应)
audio/mp3/tts: 12个VoxCPM2生成的林夏声线MP3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
xsl
2026-05-19 23:22:04 +08:00
co-authored by Claude Opus 4.6
parent e4d1141b4f
commit d03bcb14e4
21 changed files with 929 additions and 326 deletions
+24
View File
@@ -421,6 +421,30 @@ LINES = [
("v2_linxia_generic_cold_fine", "linxia", "行吧。"),
("v2_linxia_generic_curious", "linxia", "嗯?"),
("v2_linxia_generic_then", "linxia", "然后呢?"),
# ══════════════════════════════════════════════════════════
# v2 收尾:结局旁白 + 系统提示 + 分支补全
# ══════════════════════════════════════════════════════════
# ── 结局旁白(林夏轻声自语) ──
("v2_ending_a_linxia", "linxia", "明天再说。"),
("v2_ending_b_linxia", "linxia", "寄出去了。"),
("v2_ending_c_linxia", "linxia", "今晚就这样。"),
("v2_ending_d_linxia", "linxia", "早上好。"),
("v2_ending_e_linxia", "linxia", "好。"),
# ── 系统语音提示(林夏声线) ──
("v2_sys_wait_reply", "linxia", "等待回复。"),
("v2_sys_paused", "linxia", "游戏已暂停。单击继续,三指点击退出。"),
("v2_sys_content_warning", "linxia",
"本游戏涉及孤独、家庭关系等情感话题,请在舒适的状态下体验。"),
("v2_sys_hotline", "linxia",
"如需倾诉,全国心理援助热线,400-161-9995。"),
# ── 分支补全:MSG-10/11 沉默路径 NPC 反应 ──
("v2_msg10_rw_react_silent", "mom", "那早点睡啊。"),
("v2_msg10_call_react_down", "mom", "没事就好。早点睡。"),
("v2_msg11_r3_react_silent", "azhe", "行吧,那我不来了。"),
]
+54
View File
@@ -0,0 +1,54 @@
#!/bin/bash
# 将新生成的 WAV 文件转为 MP3 并复制到游戏 tts 目录
set -e
RAW_DIR="/home/xsl/blind/audio/00_raw/tts"
OUT_DIR="/home/xsl/blind/audio/mp3/tts"
NEW_FILES=(
"v2_ending_a_linxia_wav_v1"
"v2_ending_b_linxia_wav_v1"
"v2_ending_c_linxia_wav_v1"
"v2_ending_d_linxia_wav_v1"
"v2_ending_e_linxia_wav_v1"
"v2_sys_wait_reply_wav_v1"
"v2_sys_paused_wav_v1"
"v2_sys_content_warning_wav_v1"
"v2_sys_hotline_wav_v1"
"v2_msg10_rw_react_silent_wav_v1"
"v2_msg10_call_react_down_wav_v1"
"v2_msg11_r3_react_silent_wav_v1"
)
ok=0
fail=0
for name in "${NEW_FILES[@]}"; do
src="${RAW_DIR}/${name}.wav"
dst="${OUT_DIR}/${name}.mp3"
if [ ! -f "$src" ]; then
echo "[SKIP] $name.wav not found"
((fail++))
continue
fi
if [ -f "$dst" ]; then
echo "[EXISTS] $name.mp3"
((ok++))
continue
fi
echo -n "[CONVERT] $name ... "
ffmpeg -y -i "$src" -codec:a libmp3lame -b:a 128k -ar 24000 -ac 1 "$dst" 2>/dev/null
if [ $? -eq 0 ]; then
echo "ok ($(du -h "$dst" | cut -f1))"
((ok++))
else
echo "FAILED"
((fail++))
fi
done
echo ""
echo "Done: $ok ok, $fail failed"
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.