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:
@@ -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", "行吧,那我不来了。"),
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -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.
Reference in New Issue
Block a user