Tune-Splitter / utils.py
CCockrum's picture
Update utils.py
7535b38 verified
raw
history blame
2.95 kB
# 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,
)