Files
SoundGame/tools/gen_rpg_sfx.sh
T
SoundGame Dev cc0f8c008d HTML5 重写:6 款游戏 + 用户系统 + 全局设置 + 5 轮迭代重构
- 新增 web/ 纯音频 HTML5 平台:共享引擎(手势/WebAudio 三层/设置/震动)、
  Node 零依赖服务器(静态 + 注册登录 + 进度存档 API)
- 游戏:剑与声(RPG 新作)、声命线、暗室(重设计)、音序回响(重设计)、
  节拍行者(跟随领奏重构)、盲航(同向闪避重构);声东击西删除
- 全局功能:男声/女声双套 TTS 资产、三档语速、BGM 音量三档、
  震动反馈语言(10 种震型)、服务器进度同步
- 资产:899 ogg + 899 m4a(Qwen3-TTS 双性别语音、Stable Audio 3 音效、
  Mureka BGM 4+3 首),终检零缺失
- 文档:docs/design/ 13 篇设计审查文档、docs/audio/ 资产管线、
  web/server/README.md API 文档
2026-08-29 21:55:44 +08:00

55 lines
4.3 KiB
Bash
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.
#!/usr/bin/env bash
# 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
mkdir -p "$OUT"
declare -A P D
# ---- 敌方前摇(1.5s 生成,后裁 1.0s 格挡窗口) ----
P[tel_wolf]="wolf growl then lunge, short, dry, close mic"; D[tel_wolf]=1.5
P[tel_bandit]="footsteps on dirt then sword unsheathing shing, short, dry"; D[tel_bandit]=1.5
P[tel_spider]="insect legs skittering, high frequency chitin clicks, eerie, short"; D[tel_spider]=1.5
P[tel_elite]="heavy armor plates clanking, menacing, short"; D[tel_elite]=1.5
P[tel_boss1]="two metal blades striking each other twice, dramatic ring, short"; D[tel_boss1]=1.5
P[tel_croc]="water splash with low reptile growl, short"; D[tel_croc]=1.5
P[tel_shaman]="low guttural chant humming, ritualistic, dark, short"; D[tel_shaman]=1.5
P[tel_puppet]="wooden mechanism clicks and winding gears, short"; D[tel_puppet]=1.5
P[tel_boss2]="low human voice humming a dark ritual melody, ominous, short"; D[tel_boss2]=1.5
# ---- 战斗 ----
P[atk_swing]="sword whoosh through air, fast, clean, single swing"; D[atk_swing]=0.8
P[atk_hit]="sword hitting flesh, dull impact, not gory, single hit"; D[atk_hit]=0.8
P[parry]="metal parry clang, bright ring, short, single hit"; D[parry]=0.8
P[skill_slash]="powerful sword slash with air rip, dramatic, single strike"; D[skill_slash]=1.0
P[enemy_die]="body falling to ground with weapon clatter, short"; D[enemy_die]=1.2
P[potion]="drinking liquid gulps from glass bottle, short"; D[potion]=1.5
# ---- 探索/系统 ----
P[chest]="old wooden chest creaking open, short"; D[chest]=1.5
P[drink_water]="scooping and drinking stream water, gentle, short"; D[drink_water]=1.5
P[rest]="settling down by campfire, fabric rustle, calm, short"; D[rest]=2.0
P[door_heavy]="heavy wooden gate slowly opening, deep creak"; D[door_heavy]=3.0
# ---- 环境(6s 循环素材) ----
P[amb_village]="night village ambience, campfire crackle, distant chatter, crickets, loopable"; D[amb_village]=6
P[amb_path]="forest path ambience, wind through leaves, distant birds, loopable"; D[amb_path]=6
P[amb_fork]="forest crossroads ambience, gusty wind, crows cawing, loopable"; D[amb_fork]=6
P[amb_chest]="hollow tree hole ambience, water drips, muffled wind, loopable"; D[amb_chest]=6
P[amb_stream]="flowing stream over rocks, gentle water babbling, loopable"; D[amb_stream]=6
P[amb_hunter]="wood cabin ambience, firewood crackle, occasional knife sharpening, loopable"; D[amb_hunter]=6
P[amb_deepwood]="deep forest ambience at night, urgent insects, distant wolf howl, ominous, loopable"; D[amb_deepwood]=6
P[amb_gate]="bandit camp outside wooden gate ambience, torches burning, rowdy distant voices, loopable"; D[amb_gate]=6
P[amb_hall]="large empty hall ambience, fire brazier crackle, echoing space, tense, loopable"; D[amb_hall]=6
P[amb_swamp]="swamp ambience, bubbling mud, frogs, insects, murky, loopable"; D[amb_swamp]=6
P[amb_peak]="mountain peak ambience, strong cold wind, thin air, howling gusts, loopable"; D[amb_peak]=6
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 '
'"$(declare -p P D OUT)"'
for k in '"$ORDER"'; do
if [ -s "$OUT/$k.wav" ]; then echo "skip $k"; continue; fi
uv run stable-audio --model small-sfx -p "${P[$k]}" --duration "${D[$k]}" -o "$OUT/$k.wav" 2>&1 | grep -i "saved\|error"
done'
echo "SA3 batch done: $(ls "$OUT" | wc -l) files"