Files
SoundGame/tools/stable-audio-3/run_gradio.py
T
SoundGame Dev f0f0a9b50e 初始提交:3 款纯音频游戏 + 共享引擎 + 完整文档与资产管线
- 共享引擎(app/src/main):GestureEngine 6 手势识别、AudioEngine 三层音频
  (ExoPlayer BGM 交叉淡入 / 对白 ducking / SoundPool 低延迟)、Game/GameEngine
  状态机接口、MainActivity 全屏封面 + TalkBack
- 《声命线》storyline:末世互动广播剧,3 幕 8 抉择点 4 结局
- 《声东击西》reflex:听声辨位反应,12 波战斗 + BGM 三档 BPM 变速
- 《暗室》escape:3x3 网格密室逃脱,钥匙→铁柜→保险丝→电箱→大门谜题链
- 文档:setup(从零搭建)/ architecture(架构)/ engine-api(引擎 API)/
  asset-pipeline(资产流水线)/ games/*(三款游戏设计文档)
- 资产管线:Qwen3-TTS 对白 + 程序合成音效/BGM + Mureka BGM 的 gen 脚本与台账,
  全部 ogg 资产入库可复现
- env.d 环境脚本:android/tts 入库;sfx/mureka 含密钥不入库,仅提交 .example.sh 模板
2026-08-29 13:00:34 +08:00

91 lines
2.8 KiB
Python

import torch
from stable_audio_3.interface.diffusion_cond import create_diffusion_cond_ui
from stable_audio_3 import StableAudioModel
from stable_audio_3.verbose import set_verbose
import sys
# Silence Python warnings (FutureWarning, DeprecationWarning, etc.) unless --verbose.
# Must run before any ML library imports since most warnings fire at import time.
# We keep Gradio chatter, HF/torch progress bars, and generation tqdm intact.
if "--verbose" not in sys.argv:
import os as _os
_os.environ.setdefault("PYTHONWARNINGS", "ignore")
import warnings as _warnings
_warnings.filterwarnings("ignore")
def main(args):
set_verbose(getattr(args, "verbose", False))
torch.manual_seed(42)
model_half = args.model_half
model = StableAudioModel.from_pretrained(args.model, model_half=model_half)
if args.lora_ckpt_path:
model.load_lora(args.lora_ckpt_path)
interface = create_diffusion_cond_ui(
model,
gradio_title=args.title if args.title is not None else "Stable Audio 3",
default_prompt=args.default_prompt,
)
interface.queue()
interface.launch(
share=True,
js=getattr(interface, "_sao_js", None),
theme=getattr(interface, "_sao_theme", None),
)
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Run gradio interface")
parser.add_argument(
"--model", type=str, help="Name of pretrained model", required=True
)
parser.add_argument(
"--model-config", type=str, help="Path to model config", required=False
)
parser.add_argument(
"--ckpt-path", type=str, help="Path to model checkpoint", required=False
)
parser.add_argument(
"--pretransform-ckpt-path",
type=str,
help="Optional to model pretransform checkpoint",
required=False,
)
parser.add_argument("--username", type=str, help="Gradio username", required=False)
parser.add_argument("--password", type=str, help="Gradio password", required=False)
parser.add_argument(
"--model-half",
action="store_true",
help="Whether to use half precision",
required=False,
default=True,
)
parser.add_argument(
"--title", type=str, help="Display Title top of Gradio", required=False
)
parser.add_argument(
"--lora-ckpt-path",
type=str,
nargs="*",
help="Path(s) for LoRA(s) to apply. Can specify multiple.",
required=False,
)
parser.add_argument(
"--default-prompt",
type=str,
default=None,
help="Default prompt to pre-fill in the textbox",
)
parser.add_argument(
"--verbose",
action="store_true",
default=False,
help="Print detailed load/generation progress",
)
args = parser.parse_args()
main(args)