chore: 环境迁移至本机(/home/ubuntu→/home/xsl 共28文件55处)+ tools/node、tools/bin 符号链接接入 + setup.md 补 torch cu128 钉版本踩坑(cu130 轮子驱动不兼容)+ tts_smoke_test 自建输出目录 + .gitignore 补 .venv-asr/tools-chrome
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""全项目音频资产终检(R5)。
|
||||
|
||||
检查 6 个游戏 web/<game>/audio/:
|
||||
检查 8 个游戏 web/<game>/audio/:
|
||||
1. 每个 .ogg 都有同名 .m4a(反之亦然)
|
||||
2. voice/male 与 voice/female 的 id 集合一致(storyline/rpg 的平铺 NPC/角色句除外)
|
||||
3. 无 0 字节文件;ogg/m4a 均可被 ffprobe 解码且时长 > 0
|
||||
@@ -12,10 +12,10 @@ import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
ROOT = "/home/ubuntu/SoundGame/web"
|
||||
GAMES = ["storyline", "escape", "simon", "rhythm", "space", "rpg"]
|
||||
ROOT = "/home/xsl/SoundGame/web"
|
||||
GAMES = ["storyline", "escape", "simon", "rhythm", "space", "rpg", "radio", "dungeon"]
|
||||
# 平铺 voice 文件(角色/NPC,单音色,不做性别集合一致性要求)
|
||||
FLAT_OK = {"storyline", "rpg"}
|
||||
FLAT_OK = {"storyline", "rpg", "radio"}
|
||||
|
||||
|
||||
def ids(d, ext):
|
||||
@@ -26,7 +26,7 @@ def ids(d, ext):
|
||||
|
||||
def main():
|
||||
problems = []
|
||||
print("# 全项目音频资产终检(R5,2026-08-29)\n")
|
||||
print("# 全项目音频资产终检(R5 建立,批次 1 起含 radio/dungeon,2026-09-01)\n")
|
||||
print("| 游戏 | ogg | m4a | 0字节 | 解码失败 | voice male/female id 一致 |")
|
||||
print("|---|---|---|---|---|---|")
|
||||
for g in GAMES:
|
||||
@@ -82,7 +82,7 @@ def main():
|
||||
for p in problems:
|
||||
print(f"- {p}")
|
||||
return 1
|
||||
print("## 结论\n\n全部通过:双格式配对完整、无 0 字节、全部可解码、voice 性别目录 id 集合一致(storyline/rpg 平铺角色句按约定豁免)。")
|
||||
print("## 结论\n\n全部通过:双格式配对完整、无 0 字节、全部可解码、voice 性别目录 id 集合一致(storyline/rpg/radio 平铺角色句按约定豁免)。")
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ import sys
|
||||
import numpy as np
|
||||
import soundfile as sf
|
||||
|
||||
ROOT = "/home/ubuntu/SoundGame"
|
||||
ROOT = "/home/xsl/SoundGame"
|
||||
WEB = os.path.join(ROOT, "web")
|
||||
BACKUP = os.path.join(ROOT, "tools", "asset_fix_backup")
|
||||
FADE_MS = 8
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
# R4 RPG《剑与声》SA3 音效批量生成(29 件,SYN 的 5 件不在此列)。
|
||||
# 用法: bash tools/gen_rpg_sfx.sh (内部 flock 串行 GPU;输出 tools/gen_rpg_sfx_wav/)
|
||||
set -u
|
||||
source /home/ubuntu/SoundGame/env.d/sfx.sh
|
||||
cd /home/ubuntu/SoundGame/tools/stable-audio-3
|
||||
OUT=/home/ubuntu/SoundGame/tools/gen_rpg_sfx_wav
|
||||
source /home/xsl/SoundGame/env.d/sfx.sh
|
||||
cd /home/xsl/SoundGame/tools/stable-audio-3
|
||||
OUT=/home/xsl/SoundGame/tools/gen_rpg_sfx_wav
|
||||
mkdir -p "$OUT"
|
||||
|
||||
declare -A P D
|
||||
@@ -45,7 +45,7 @@ P[amb_peak]="mountain peak ambience, strong cold wind, thin air, howling gusts,
|
||||
|
||||
ORDER="tel_wolf tel_bandit tel_spider tel_elite tel_boss1 tel_croc tel_shaman tel_puppet tel_boss2 atk_swing atk_hit parry skill_slash enemy_die potion chest drink_water rest door_heavy amb_village amb_path amb_fork amb_chest amb_stream amb_hunter amb_deepwood amb_gate amb_hall amb_swamp amb_peak"
|
||||
|
||||
flock /home/ubuntu/SoundGame/.gpu.lock bash -c '
|
||||
flock /home/xsl/SoundGame/.gpu.lock bash -c '
|
||||
'"$(declare -p P D OUT)"'
|
||||
for k in '"$ORDER"'; do
|
||||
if [ -s "$OUT/$k.wav" ]; then echo "skip $k"; continue; fi
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Ryan 音色中文发音冒烟测试:决定 simon/rhythm 男声旁白选型。"""
|
||||
import os
|
||||
os.environ.setdefault("HF_HOME", "/home/ubuntu/SoundGame/models/hf")
|
||||
os.environ.setdefault("HF_HOME", "/home/xsl/SoundGame/models/hf")
|
||||
os.environ.setdefault("HF_ENDPOINT", "https://hf-mirror.com")
|
||||
import numpy as np
|
||||
import soundfile as sf
|
||||
@@ -24,9 +24,9 @@ wavs, sr = model.generate_custom_voice(
|
||||
speaker=["Ryan"] * len(texts),
|
||||
instruct=["热情活力的中文游戏解说语气,吐字清晰"] * len(texts),
|
||||
)
|
||||
os.makedirs("/home/ubuntu/SoundGame/tools/samples", exist_ok=True)
|
||||
os.makedirs("/home/xsl/SoundGame/tools/samples", exist_ok=True)
|
||||
for i, wav in enumerate(wavs):
|
||||
wav = np.asarray(wav, dtype=np.float32)
|
||||
sf.write(f"/home/ubuntu/SoundGame/tools/samples/ryan_zh_{i}.wav", wav, sr)
|
||||
sf.write(f"/home/xsl/SoundGame/tools/samples/ryan_zh_{i}.wav", wav, sr)
|
||||
print(f"ryan_zh_{i}: {len(wav)/sr:.2f}s peak={np.max(np.abs(wav)):.3f}")
|
||||
print("done")
|
||||
|
||||
@@ -15,7 +15,7 @@ import sys
|
||||
import numpy as np
|
||||
import soundfile as sf
|
||||
|
||||
ROOT = "/home/ubuntu/SoundGame/web"
|
||||
ROOT = "/home/xsl/SoundGame/web"
|
||||
GAMES = ["storyline", "escape", "simon", "rhythm", "space", "rpg"]
|
||||
EDGE_MS = 5
|
||||
DC_THRESH = 0.001
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import os
|
||||
import time
|
||||
|
||||
os.environ.setdefault("HF_HOME", "/home/ubuntu/SoundGame/models/hf")
|
||||
os.environ.setdefault("HF_HOME", "/home/xsl/SoundGame/models/hf")
|
||||
os.environ.setdefault("HF_ENDPOINT", "https://hf-mirror.com")
|
||||
|
||||
import torch
|
||||
@@ -27,7 +27,8 @@ wavs, sr = model.generate_custom_voice(
|
||||
instruct="用惊恐、急促的语气大声喊出来",
|
||||
)
|
||||
|
||||
out = "/home/ubuntu/SoundGame/tools/samples/tts_test.wav"
|
||||
out = "/home/xsl/SoundGame/tools/samples/tts_test.wav"
|
||||
os.makedirs(os.path.dirname(out), exist_ok=True)
|
||||
sf.write(out, wavs[0], sr)
|
||||
dur = len(wavs[0]) / sr
|
||||
print(f"saved: {out} sr={sr} duration={dur:.2f}s samples={len(wavs[0])}")
|
||||
|
||||
Reference in New Issue
Block a user