File size: 2,948 Bytes
7535b38
2ae1a70
a58ab35
7535b38
 
 
 
 
2ae1a70
7535b38
 
 
 
 
 
 
2ae1a70
7535b38
 
a58ab35
7535b38
 
 
 
a58ab35
 
7535b38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a58ab35
7535b38
 
 
 
 
 
a58ab35
7535b38
 
 
a58ab35
d57239f
7535b38
 
 
 
 
d57239f
7535b38
 
 
 
 
d57239f
7535b38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# main.py

import os
from pathlib import Path
from gui import get_gui
from utils import download_manager
from mdx_core import MDX
import json

MDX_DOWNLOAD_LINK = "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/"
UVR_MODELS = [
    "UVR-MDX-NET-Voc_FT.onnx",
    "UVR_MDXNET_KARA_2.onnx",
    "Reverb_HQ_By_FoxJoy.onnx",
    "UVR-MDX-NET-Inst_HQ_4.onnx",
]

BASE_DIR = Path(__file__).resolve().parent
mdxnet_models_dir = BASE_DIR / "mdx_models"

# Ensure mdx_models is a directory
if mdxnet_models_dir.exists() and not mdxnet_models_dir.is_dir():
    mdxnet_models_dir.unlink()
mdxnet_models_dir.mkdir(parents=True, exist_ok=True)


# 🔧 Auto-generate fallback data.json if needed
def generate_data_json(mdxnet_models_dir):
    presets = {
        "UVR-MDX-NET-Voc_FT.onnx": {
            "mdx_dim_f_set": 2048,
            "mdx_dim_t_set": 3,
            "mdx_n_fft_scale_set": 6144,
            "primary_stem": "Vocals",
            "compensate": 1.035
        },
        "UVR_MDXNET_KARA_2.onnx": {
            "mdx_dim_f_set": 1024,
            "mdx_dim_t_set": 3,
            "mdx_n_fft_scale_set": 4096,
            "primary_stem": "Main",
            "compensate": 1.035
        },
        "UVR-MDX-NET-Inst_HQ_4.onnx": {
            "mdx_dim_f_set": 2048,
            "mdx_dim_t_set": 3,
            "mdx_n_fft_scale_set": 6144,
            "primary_stem": "Instrumental",
            "compensate": 1.0
        },
        "Reverb_HQ_By_FoxJoy.onnx": {
            "mdx_dim_f_set": 2048,
            "mdx_dim_t_set": 3,
            "mdx_n_fft_scale_set": 6144,
            "primary_stem": "Vocals",
            "compensate": 1.035
        },
    }

    data = {}
    for filename, params in presets.items():
        path = mdxnet_models_dir / filename
        if path.exists():
            model_hash = MDX.get_hash(str(path))
            data[model_hash] = params

    with open(mdxnet_models_dir / "data.json", "w") as f:
        json.dump(data, f, indent=2)
    print("✅ Auto-generated data.json with", len(data), "entries.")


# Check for data.json and create if missing
json_path = mdxnet_models_dir / "data.json"
print("🔍 Checking for data.json at:", json_path)
print("📁 mdx_models contents:", list(mdxnet_models_dir.iterdir()))
print("📂 Current working directory:", os.getcwd())

if not json_path.exists():
    print("⚠️ data.json missing, generating fallback.")
    generate_data_json(mdxnet_models_dir)
else:
    print("✅ data.json found.")


def download_models():
    for model in UVR_MODELS:
        url = os.path.join(MDX_DOWNLOAD_LINK, model)
        download_manager(url, str(mdxnet_models_dir))


if __name__ == "__main__":
    download_models()
    theme = "NoCrypt/miku"
    app = get_gui(theme)
    app.queue(default_concurrency_limit=40)
    app.launch(
        max_threads=40,
        share=False,
        show_error=True,
        quiet=False,
        debug=False,
    )