File size: 2,029 Bytes
c1f7300
d491e94
 
c1f7300
 
d491e94
 
 
c1f7300
d491e94
 
 
c1f7300
 
 
d491e94
c1f7300
d491e94
 
 
 
c1f7300
d491e94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import os
import sys
import subprocess
from huggingface_hub import snapshot_download

MODEL_BASE = "./weights"
MODEL_DIR = os.path.join(MODEL_BASE, "ckpts/hunyuan-video-t2v-720p")
CHECKPOINT_FILE = os.path.join(MODEL_DIR, "transformers/mp_rank_00_model_states.pt")

def download_model():
    print("⬇️  Model not found. Downloading from Hugging Face...")
    os.makedirs(MODEL_DIR, exist_ok=True)
    snapshot_download(
        repo_id="tencent/HunyuanVideo-Avatar",
        local_dir=MODEL_DIR,
        local_dir_use_symlinks=False,
    )
    if not os.path.isfile(CHECKPOINT_FILE):
        print("❌ Failed to download model checkpoint. Exiting.")
        sys.exit(1)
    print("βœ… Model downloaded successfully.")

def run_flask_audio():
    print("πŸš€ Starting flask_audio.py...")
    cmd = [
        "torchrun",
        "--nnodes=1",
        "--nproc_per_node=8",
        "--master_port=29605",
        "hymm_gradio/flask_audio.py",
        "--input", "assets/test.csv",
        "--ckpt", CHECKPOINT_FILE,
        "--sample-n-frames", "129",
        "--seed", "128",
        "--image-size", "704",
        "--cfg-scale", "7.5",
        "--infer-steps", "50",
        "--use-deepcache", "1",
        "--flow-shift-eval-video", "5.0"
    ]
    # Start process in background
    proc = subprocess.Popen(cmd)
    return proc

def run_gradio_ui():
    print("🟒 Starting gradio_audio.py UI...")
    cmd = ["python3", "hymm_gradio/gradio_audio.py"]
    proc = subprocess.Popen(cmd)
    return proc

def main():
    if os.path.isfile(CHECKPOINT_FILE):
        print("βœ… Model checkpoint already exists. Skipping download.")
    else:
        download_model()

    flask_proc = run_flask_audio()
    # Optionally wait a few seconds for flask_audio.py to start before starting Gradio UI
    import time
    time.sleep(5)

    gradio_proc = run_gradio_ui()

    # Wait for both processes to exit if you want to block here, or just exit
    # flask_proc.wait()
    # gradio_proc.wait()

if __name__ == "__main__":
    main()