初始提交: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 模板
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user