CCockrum commited on
Commit
7535b38
·
verified ·
1 Parent(s): 6587414

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +89 -35
utils.py CHANGED
@@ -1,48 +1,102 @@
1
- # utils.py
2
 
3
  import os
4
- import logging
5
- import requests
 
 
 
6
 
 
 
 
 
 
 
 
7
 
8
- # Basic logger setup
9
- logger = logging.getLogger("audio_splitter")
10
- logger.setLevel(logging.INFO)
11
- ch = logging.StreamHandler()
12
- ch.setFormatter(logging.Formatter("[%(levelname)s] %(message)s"))
13
- logger.addHandler(ch)
14
 
 
 
 
 
15
 
16
- def create_directories(path):
17
- os.makedirs(path, exist_ok=True)
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
- def remove_directory_contents(path):
21
- if not os.path.exists(path):
22
- return
23
- for filename in os.listdir(path):
24
- file_path = os.path.join(path, filename)
25
- if os.path.isfile(file_path):
26
- os.remove(file_path)
27
- elif os.path.isdir(file_path):
28
- import shutil
29
- shutil.rmtree(file_path)
30
 
 
 
 
31
 
32
- def download_manager(url, output_dir):
33
- filename = os.path.basename(url)
34
- output_path = os.path.join(output_dir, filename)
35
- if os.path.exists(output_path):
36
- return output_path
37
 
38
- logger.info(f"Downloading: {filename}")
39
- os.makedirs(os.path.dirname(output_path), exist_ok=True) # Ensure directory exists
 
 
 
40
 
41
- with requests.get(url, stream=True) as r:
42
- r.raise_for_status()
43
- with open(output_path, 'wb') as f:
44
- for chunk in r.iter_content(chunk_size=8192):
45
- f.write(chunk)
46
 
47
- logger.info(f"Downloaded: {filename}")
48
- return output_path
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # main.py
2
 
3
  import os
4
+ from pathlib import Path
5
+ from gui import get_gui
6
+ from utils import download_manager
7
+ from mdx_core import MDX
8
+ import json
9
 
10
+ MDX_DOWNLOAD_LINK = "https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/"
11
+ UVR_MODELS = [
12
+ "UVR-MDX-NET-Voc_FT.onnx",
13
+ "UVR_MDXNET_KARA_2.onnx",
14
+ "Reverb_HQ_By_FoxJoy.onnx",
15
+ "UVR-MDX-NET-Inst_HQ_4.onnx",
16
+ ]
17
 
18
+ BASE_DIR = Path(__file__).resolve().parent
19
+ mdxnet_models_dir = BASE_DIR / "mdx_models"
 
 
 
 
20
 
21
+ # Ensure mdx_models is a directory
22
+ if mdxnet_models_dir.exists() and not mdxnet_models_dir.is_dir():
23
+ mdxnet_models_dir.unlink()
24
+ mdxnet_models_dir.mkdir(parents=True, exist_ok=True)
25
 
 
 
26
 
27
+ # 🔧 Auto-generate fallback data.json if needed
28
+ def generate_data_json(mdxnet_models_dir):
29
+ presets = {
30
+ "UVR-MDX-NET-Voc_FT.onnx": {
31
+ "mdx_dim_f_set": 2048,
32
+ "mdx_dim_t_set": 3,
33
+ "mdx_n_fft_scale_set": 6144,
34
+ "primary_stem": "Vocals",
35
+ "compensate": 1.035
36
+ },
37
+ "UVR_MDXNET_KARA_2.onnx": {
38
+ "mdx_dim_f_set": 1024,
39
+ "mdx_dim_t_set": 3,
40
+ "mdx_n_fft_scale_set": 4096,
41
+ "primary_stem": "Main",
42
+ "compensate": 1.035
43
+ },
44
+ "UVR-MDX-NET-Inst_HQ_4.onnx": {
45
+ "mdx_dim_f_set": 2048,
46
+ "mdx_dim_t_set": 3,
47
+ "mdx_n_fft_scale_set": 6144,
48
+ "primary_stem": "Instrumental",
49
+ "compensate": 1.0
50
+ },
51
+ "Reverb_HQ_By_FoxJoy.onnx": {
52
+ "mdx_dim_f_set": 2048,
53
+ "mdx_dim_t_set": 3,
54
+ "mdx_n_fft_scale_set": 6144,
55
+ "primary_stem": "Vocals",
56
+ "compensate": 1.035
57
+ },
58
+ }
59
 
60
+ data = {}
61
+ for filename, params in presets.items():
62
+ path = mdxnet_models_dir / filename
63
+ if path.exists():
64
+ model_hash = MDX.get_hash(str(path))
65
+ data[model_hash] = params
 
 
 
 
66
 
67
+ with open(mdxnet_models_dir / "data.json", "w") as f:
68
+ json.dump(data, f, indent=2)
69
+ print("✅ Auto-generated data.json with", len(data), "entries.")
70
 
 
 
 
 
 
71
 
72
+ # Check for data.json and create if missing
73
+ json_path = mdxnet_models_dir / "data.json"
74
+ print("🔍 Checking for data.json at:", json_path)
75
+ print("📁 mdx_models contents:", list(mdxnet_models_dir.iterdir()))
76
+ print("📂 Current working directory:", os.getcwd())
77
 
78
+ if not json_path.exists():
79
+ print("⚠️ data.json missing, generating fallback.")
80
+ generate_data_json(mdxnet_models_dir)
81
+ else:
82
+ print("✅ data.json found.")
83
 
84
+
85
+ def download_models():
86
+ for model in UVR_MODELS:
87
+ url = os.path.join(MDX_DOWNLOAD_LINK, model)
88
+ download_manager(url, str(mdxnet_models_dir))
89
+
90
+
91
+ if __name__ == "__main__":
92
+ download_models()
93
+ theme = "NoCrypt/miku"
94
+ app = get_gui(theme)
95
+ app.queue(default_concurrency_limit=40)
96
+ app.launch(
97
+ max_threads=40,
98
+ share=False,
99
+ show_error=True,
100
+ quiet=False,
101
+ debug=False,
102
+ )