ASesYusuf1/SESA_Audio_Separation
14
1import os2import yaml3import json4import re5import shutil6from urllib.parse import quote, urlparse7from pathlib import Path8 9# Temel dizin ve checkpoint dizini sabit olarak tanımlanıyor10BASE_DIR = os.path.dirname(os.path.abspath(__file__))11CHECKPOINT_DIR = os.path.join(BASE_DIR, 'ckpts')12CUSTOM_MODELS_FILE = os.path.join(BASE_DIR, 'assets', 'custom_models.json')13 14 15def fix_huggingface_url(url):16 """Convert Hugging Face blob URLs to raw/resolve URLs.17 18 Hugging Face has two URL formats:19 - /blob/ URLs show the web page (HTML) - WRONG for downloading20 - /resolve/ URLs provide the raw file content - CORRECT for downloading21 22 This function converts blob URLs to resolve URLs automatically.23 24 Args:25 url: The URL to fix26 27 Returns:28 The corrected URL (or original if not a HF blob URL)29 """30 if not url:31 return url32 33 # Check if it's a Hugging Face URL with /blob/34 if 'huggingface.co' in url and '/blob/' in url:35 fixed_url = url.replace('/blob/', '/resolve/')36 return fixed_url37 38 return url39 40 41def validate_yaml_content(content, filepath=None):42 """Validate that content is YAML and not HTML.43 44 Args:45 content: The file content to validate46 filepath: Optional filepath for error messages47 48 Returns:49 tuple: (is_valid: bool, error_message: str or None)50 """51 # Check if content looks like HTML52 html_indicators = [53 '<!DOCTYPE',54 '<html',55 '<head>',56 '<body>',57 '<script>',58 '<link rel=',59 'text/html',60 ]61 62 content_lower = content.lower() if isinstance(content, str) else content.decode('utf-8', errors='ignore').lower()63 64 for indicator in html_indicators:65 if indicator.lower() in content_lower:66 error_msg = f"""67The downloaded file appears to be an HTML page, not a YAML config file.68{"File: " + filepath if filepath else ""}69 70This usually happens when using a Hugging Face '/blob/' URL instead of a '/resolve/' URL.71 72To fix this:731. Use the raw file URL with '/resolve/' instead of '/blob/'74 Example: https://huggingface.co/user/repo/resolve/main/file.yaml75 762. Or copy the raw URL from Hugging Face:77 - Go to the file on Hugging Face78 - Click "Download" or right-click and "Copy link address"79"""80 return False, error_msg81 82 return True, None83 84# Supported model types for auto-detection and manual selection85SUPPORTED_MODEL_TYPES = [86 'bs_roformer',87 'bs_roformer_custom',88 'mel_band_roformer',89 'mdx23c',90 'bandit_v2',91 'scnet',92 'htdemucs',93 'torchseg'94]95 96def detect_model_type_from_url(checkpoint_url, config_url=None):97 """Auto-detect model type from URL patterns."""98 urls_to_check = [checkpoint_url]99 if config_url:100 urls_to_check.append(config_url)101 102 combined_text = ' '.join(urls_to_check).lower()103 104 patterns = [105 (r'bs[-_]?roformer[-_]?custom|hyperace', 'bs_roformer_custom'),106 (r'bs[-_]?roformer|bsroformer', 'bs_roformer'),107 (r'mel[-_]?band[-_]?roformer|melbandroformer|mbr', 'mel_band_roformer'),108 (r'mdx23c', 'mdx23c'),109 (r'bandit[-_]?v?2?', 'bandit_v2'),110 (r'scnet', 'scnet'),111 (r'htdemucs|demucs', 'htdemucs'),112 (r'torchseg', 'torchseg'),113 ]114 115 for pattern, model_type in patterns:116 if re.search(pattern, combined_text):117 return model_type118 return None119 120def detect_model_type_from_config(config_url):121 """Try to detect model type by downloading and parsing config YAML."""122 try:123 import requests124 response = requests.get(config_url, timeout=10)125 if response.status_code == 200:126 config_data = yaml.safe_load(response.text)127 if 'model_type' in config_data:128 return config_data['model_type']129 if 'model' in config_data and 'model_type' in config_data['model']:130 return config_data['model']['model_type']131 except Exception:132 pass133 return None134 135def load_custom_models():136 """Load custom models from JSON file."""137 if not os.path.exists(CUSTOM_MODELS_FILE):138 return {}139 try:140 with open(CUSTOM_MODELS_FILE, 'r', encoding='utf-8') as f:141 return json.load(f)142 except (json.JSONDecodeError, IOError):143 return {}144 145def save_custom_models(models):146 """Save custom models to JSON file."""147 os.makedirs(os.path.dirname(CUSTOM_MODELS_FILE), exist_ok=True)148 with open(CUSTOM_MODELS_FILE, 'w', encoding='utf-8') as f:149 json.dump(models, f, indent=2, ensure_ascii=False)150 151def add_custom_model(model_name, model_type, checkpoint_url, config_url, custom_model_url=None, auto_detect=True):152 """Add a new custom model."""153 if not model_name or not model_name.strip():154 return False, "Model name is required"155 if not checkpoint_url or not checkpoint_url.strip():156 return False, "Checkpoint URL is required"157 if not config_url or not config_url.strip():158 return False, "Config URL is required"159 160 model_name = model_name.strip()161 checkpoint_url = checkpoint_url.strip()162 config_url = config_url.strip()163 custom_model_url = custom_model_url.strip() if custom_model_url else None164 165 # Auto-fix Hugging Face URLs166 checkpoint_url = fix_huggingface_url(checkpoint_url)167 config_url = fix_huggingface_url(config_url)168 if custom_model_url:169 custom_model_url = fix_huggingface_url(custom_model_url)170 171 if auto_detect and (not model_type or model_type == "auto"):172 detected_type = detect_model_type_from_url(checkpoint_url, config_url)173 if not detected_type:174 detected_type = detect_model_type_from_config(config_url)175 if detected_type:176 model_type = detected_type177 else:178 return False, "Could not auto-detect model type. Please select manually."179 180 if model_type not in SUPPORTED_MODEL_TYPES:181 return False, f"Unsupported model type: {model_type}"182 183 checkpoint_filename = os.path.basename(checkpoint_url.split('?')[0])184 config_filename = f"config_{model_name.replace(' ', '_').lower()}.yaml"185 186 models = load_custom_models()187 if model_name in models:188 return False, f"Model '{model_name}' already exists"189 190 models[model_name] = {191 'model_type': model_type,192 'checkpoint_url': checkpoint_url,193 'config_url': config_url,194 'custom_model_url': custom_model_url,195 'checkpoint_filename': checkpoint_filename,196 'config_filename': config_filename,197 'needs_conf_edit': True198 }199 save_custom_models(models)200 return True, f"Model '{model_name}' added successfully"201 202def delete_custom_model(model_name):203 """Delete a custom model."""204 models = load_custom_models()205 if model_name not in models:206 return False, f"Model '{model_name}' not found"207 208 model_config = models[model_name]209 checkpoint_path = os.path.join(CHECKPOINT_DIR, model_config.get('checkpoint_filename', ''))210 config_path = os.path.join(CHECKPOINT_DIR, model_config.get('config_filename', ''))211 212 try:213 if os.path.exists(checkpoint_path):214 os.remove(checkpoint_path)215 if os.path.exists(config_path):216 os.remove(config_path)217 except Exception:218 pass219 220 del models[model_name]221 save_custom_models(models)222 return True, f"Model '{model_name}' deleted successfully"223 224def get_custom_models_list():225 """Get list of custom model names with their types."""226 models = load_custom_models()227 return [(name, config.get('model_type', 'unknown')) for name, config in models.items()]228 229def preprocess_yaml_content(content):230 """Pre-process YAML content to fix common issues before parsing.231 232 Fixes:233 - Replaces tabs with spaces234 - Attempts to quote unquoted URLs and paths containing colons235 """236 # Replace tabs with spaces237 if '\t' in content:238 content = content.replace('\t', ' ')239 240 # Fix unquoted URLs/paths with colons in values (common issue)241 # This regex finds lines like "key: http://..." or "key: C:\path" and quotes the value242 lines = content.split('\n')243 fixed_lines = []244 245 for line in lines:246 # Skip comments and empty lines247 stripped = line.strip()248 if not stripped or stripped.startswith('#'):249 fixed_lines.append(line)250 continue251 252 # Check if line has a key-value pattern with potential problematic value253 # Match: " key: value_with_colon_or_backslash"254 match = re.match(r'^(\s*)([^:#]+?):\s+(.+)$', line)255 if match:256 indent, key, value = match.groups()257 # Check if value contains a colon (like URL) or backslash (like Windows path)258 # and is not already quoted259 if ((':' in value or '\\' in value) and 260 not (value.startswith('"') and value.endswith('"')) and261 not (value.startswith("'") and value.endswith("'"))):262 # Quote the value263 escaped_value = value.replace('"', '\\"')264 fixed_lines.append(f'{indent}{key}: "{escaped_value}"')265 continue266 267 fixed_lines.append(line)268 269 return '\n'.join(fixed_lines)270 271 272def get_yaml_error_context(content, line_num, column=None):273 """Get context around a YAML error for better debugging."""274 lines = content.split('\n')275 if line_num < 1 or line_num > len(lines):276 return "Could not extract error context"277 278 context_lines = []279 start = max(0, line_num - 3)280 end = min(len(lines), line_num + 2)281 282 for i in range(start, end):283 line_indicator = ">>> " if i == line_num - 1 else " "284 context_lines.append(f"{line_indicator}{i + 1}: {lines[i]}")285 286 # Add column indicator for the error line287 if i == line_num - 1 and column:288 pointer = " " * (len(str(i + 1)) + 6 + column - 1) + "^"289 context_lines.append(pointer)290 291 return '\n'.join(context_lines)292 293 294def conf_edit(config_path, chunk_size, overlap, model_name=None):295 """Edits the configuration file overlap and training flags.296 The model's native audio.chunk_size from the YAML is preserved unchanged.297 298 Args:299 config_path: Path to the config file300 chunk_size: Unused – kept for API compatibility (native YAML value is used instead)301 overlap: Overlap between chunks302 model_name: Optional model name for re-downloading config on error303 """304 full_config_path = os.path.join(CHECKPOINT_DIR, os.path.basename(config_path))305 if not os.path.exists(full_config_path):306 raise FileNotFoundError(f"Configuration file not found: {full_config_path}")307 308 # Create backup before modifying309 backup_path = full_config_path + '.backup'310 try:311 shutil.copy2(full_config_path, backup_path)312 except Exception:313 pass314 315 try:316 # Read and pre-process content317 with open(full_config_path, 'r', encoding='utf-8') as f:318 original_content = f.read()319 320 # Check if file is HTML (wrong URL was used)321 is_valid, html_error = validate_yaml_content(original_content, full_config_path)322 if not is_valid:323 # Restore backup and raise error324 if os.path.exists(backup_path):325 shutil.copy2(backup_path, full_config_path)326 raise ValueError(html_error)327 328 content = preprocess_yaml_content(original_content)329 330 # Write pre-processed content if changed331 if content != original_content:332 with open(full_config_path, 'w', encoding='utf-8') as f:333 f.write(content)334 335 # Try to parse YAML336 try:337 with open(full_config_path, 'r', encoding='utf-8') as f:338 data = yaml.load(f, Loader=yaml.SafeLoader)339 except yaml.YAMLError as e:340 # Extract error details341 error_msg = str(e)342 line_num = None343 column = None344 345 if hasattr(e, 'problem_mark') and e.problem_mark:346 line_num = e.problem_mark.line + 1347 column = e.problem_mark.column + 1348 349 # Get context around error350 context = ""351 if line_num:352 context = get_yaml_error_context(content, line_num, column)353 354 # Provide helpful error message355 error_details = f"""356YAML Parsing Error in config file: {full_config_path}357 358Error: {error_msg}359 360{"Error Context:" + chr(10) + context if context else ""}361 362Possible causes:3631. Unquoted string containing a colon (e.g., URLs like https://...)3642. Unquoted Windows path with backslashes (e.g., C:\\path\\to\\file)3653. Malformed YAML structure3664. File corruption from previous processing367 368Suggested fixes:3691. Delete the config file and let it re-download: {full_config_path}3702. Manually edit the file to quote problematic values3713. Check if the source config URL provides valid YAML372"""373 # Restore backup374 if os.path.exists(backup_path):375 try:376 shutil.copy2(backup_path, full_config_path)377 except Exception:378 pass379 380 raise yaml.YAMLError(error_details) from e381 382 # Validate required sections exist383 if not isinstance(data, dict):384 raise ValueError(f"Config file does not contain a valid YAML dictionary: {full_config_path}")385 386 # Apply modifications safely387 if 'use_amp' not in data:388 if 'training' not in data:389 data['training'] = {}390 data['training']['use_amp'] = True391 392 # Do NOT overwrite audio.chunk_size — keep the model's native value from the YAML.393 if 'audio' not in data:394 data['audio'] = {}395 396 if 'inference' not in data:397 data['inference'] = {}398 data['inference']['num_overlap'] = overlap399 if data['inference'].get('batch_size', 1) == 1:400 data['inference']['batch_size'] = 2401 402 # Write updated config403 with open(full_config_path, 'w', encoding='utf-8') as f:404 yaml.dump(data, f, default_flow_style=False, sort_keys=False, Dumper=yaml.Dumper)405 406 # Remove backup on success407 if os.path.exists(backup_path):408 try:409 os.remove(backup_path)410 except Exception:411 pass412 413 except Exception as e:414 # Restore backup on any error415 if os.path.exists(backup_path):416 try:417 shutil.copy2(backup_path, full_config_path)418 os.remove(backup_path)419 except Exception:420 pass421 raise422 423 424def redownload_config(model_name):425 """Re-download a corrupted config file for a custom model.426 427 Args:428 model_name: Name of the custom model429 430 Returns:431 tuple: (success: bool, message: str)432 """433 custom_models = load_custom_models()434 if model_name not in custom_models:435 return False, f"Model '{model_name}' not found in custom models"436 437 config = custom_models[model_name]438 config_url = config.get('config_url')439 config_filename = config.get('config_filename')440 441 if not config_url or not config_filename:442 return False, f"Config URL or filename not found for model '{model_name}'"443 444 config_path = os.path.join(CHECKPOINT_DIR, config_filename)445 446 # Auto-fix URL before re-downloading447 config_url = fix_huggingface_url(config_url)448 449 # Delete existing config450 if os.path.exists(config_path):451 try:452 os.remove(config_path)453 except Exception as e:454 return False, f"Could not delete config file: {e}"455 456 # Re-download with validation457 try:458 download_file(config_url, target_filename=config_filename, validate_yaml=True)459 return True, f"Config file re-downloaded successfully: {config_filename}"460 except Exception as e:461 return False, f"Failed to re-download config: {e}"462 463def download_file(url, path=None, target_filename=None, validate_yaml=True):464 """Downloads a file from a URL with progress reporting.465 466 Args:467 url: The URL to download from.468 path: The directory to save the file to. Defaults to CHECKPOINT_DIR.469 target_filename: Optional custom filename to save as. If None, uses filename from URL.470 validate_yaml: If True and file is .yaml/.yml, validate it's not HTML471 """472 import requests473 474 # Auto-fix Hugging Face URLs475 url = fix_huggingface_url(url)476 477 encoded_url = quote(url, safe=':/')478 if path is None:479 path = CHECKPOINT_DIR480 os.makedirs(path, exist_ok=True)481 # Use custom target filename if provided, otherwise extract from URL482 filename = target_filename if target_filename else os.path.basename(encoded_url)483 file_path = os.path.join(path, filename)484 if os.path.exists(file_path):485 print(f"File '{filename}' already exists at '{path}'.")486 return487 try:488 response = requests.get(url, stream=True)489 if response.status_code == 200:490 # Get total file size for progress reporting491 total_size = int(response.headers.get('content-length', 0))492 493 # For YAML files, download to memory first and validate494 is_yaml_file = filename.lower().endswith(('.yaml', '.yml'))495 496 if is_yaml_file and validate_yaml:497 content = response.content498 is_valid, error_msg = validate_yaml_content(content, file_path)499 if not is_valid:500 print(f"ERROR: Downloaded file is not valid YAML!")501 print(error_msg)502 raise ValueError(f"Downloaded file is HTML, not YAML. URL may be incorrect: {url}")503 504 with open(file_path, 'wb') as f:505 f.write(content)506 else:507 # Download with progress reporting508 downloaded_size = 0509 last_percent = -1510 print(f"[SESA_DOWNLOAD]START:{filename}", flush=True)511 512 with open(file_path, 'wb') as f:513 for chunk in response.iter_content(chunk_size=8192):514 f.write(chunk)515 downloaded_size += len(chunk)516 517 # Report download progress518 if total_size > 0:519 percent = int((downloaded_size / total_size) * 100)520 if percent != last_percent:521 last_percent = percent522 # Format: [SESA_DOWNLOAD]filename:percent523 print(f"[SESA_DOWNLOAD]{filename}:{percent}", flush=True)524 525 print(f"[SESA_DOWNLOAD]END:{filename}", flush=True)526 else:527 print(f"Error downloading '{filename}': Status code {response.status_code}")528 except Exception as e:529 print(f"Error downloading file '{filename}' from '{url}': {e}")530 raise531 532# Model konfigurasyonlarını kategorize bir sözlükte tut533MODEL_CONFIGS = {534 "Vocal Models": {535 # === NEW MODELS (en üstte) ===536 'bs_roformer_voc_hyperacev2 (by unwa)': {537 'model_type': 'bs_roformer_custom',538 'config_path': os.path.join(CHECKPOINT_DIR, 'config_hyperacev2_voc.yaml'),539 'start_check_point': os.path.join(CHECKPOINT_DIR, 'bs_roformer_voc_hyperacev2.ckpt'),540 'download_urls': [541 ('https://huggingface.co/pcunwa/BS-Roformer-HyperACE/resolve/main/v2_voc/config.yaml', 'config_hyperacev2_voc.yaml'),542 'https://huggingface.co/pcunwa/BS-Roformer-HyperACE/resolve/main/v2_voc/bs_roformer_voc_hyperacev2.ckpt'543 ],544 'custom_model_url': 'https://huggingface.co/pcunwa/BS-Roformer-HyperACE/resolve/main/v2_voc/bs_roformer.py',545 'needs_conf_edit': True546 },547 'BS-Roformer-Resurrection (by unwa)': {548 'model_type': 'bs_roformer',549 'config_path': os.path.join(CHECKPOINT_DIR, 'BS-Roformer-Resurrection-Config.yaml'),550 'start_check_point': os.path.join(CHECKPOINT_DIR, 'BS-Roformer-Resurrection.ckpt'),551 'download_urls': [552 'https://huggingface.co/pcunwa/BS-Roformer-Resurrection/resolve/main/BS-Roformer-Resurrection-Config.yaml',553 'https://huggingface.co/pcunwa/BS-Roformer-Resurrection/resolve/main/BS-Roformer-Resurrection.ckpt'554 ],555 'needs_conf_edit': True556 },557 'bs_roformer_revive3e (by unwa)': {558 'model_type': 'bs_roformer',559 'config_path': os.path.join(CHECKPOINT_DIR, 'config_revive.yaml'),560 'start_check_point': os.path.join(CHECKPOINT_DIR, 'bs_roformer_revive3e.ckpt'),561 'download_urls': [562 ('https://huggingface.co/pcunwa/BS-Roformer-Revive/resolve/main/config.yaml', 'config_revive.yaml'),563 'https://huggingface.co/pcunwa/BS-Roformer-Revive/resolve/main/bs_roformer_revive3e.ckpt'564 ],565 'needs_conf_edit': True566 },567 'bs_roformer_revive2 (by unwa)': {568 'model_type': 'bs_roformer',569 'config_path': os.path.join(CHECKPOINT_DIR, 'config_revive.yaml'),570 'start_check_point': os.path.join(CHECKPOINT_DIR, 'bs_roformer_revive2.ckpt'),571 'download_urls': [572 ('https://huggingface.co/pcunwa/BS-Roformer-Revive/resolve/main/config.yaml', 'config_revive.yaml'),573 'https://huggingface.co/pcunwa/BS-Roformer-Revive/resolve/main/bs_roformer_revive2.ckpt'574 ],575 'needs_conf_edit': True576 },577 'bs_roformer_revive (by unwa)': {578 'model_type': 'bs_roformer',579 'config_path': os.path.join(CHECKPOINT_DIR, 'config_revive.yaml'),580 'start_check_point': os.path.join(CHECKPOINT_DIR, 'bs_roformer_revive.ckpt'),581 'download_urls': [582 ('https://huggingface.co/pcunwa/BS-Roformer-Revive/resolve/main/config.yaml', 'config_revive.yaml'),583 'https://huggingface.co/pcunwa/BS-Roformer-Revive/resolve/main/bs_roformer_revive.ckpt'584 ],585 'needs_conf_edit': True586 },587 'karaoke_bs_roformer_anvuew (by anvuew)': {588 'model_type': 'bs_roformer',589 'config_path': os.path.join(CHECKPOINT_DIR, 'karaoke_bs_roformer_anvuew.yaml'),590 'start_check_point': os.path.join(CHECKPOINT_DIR, 'karaoke_bs_roformer_anvuew.ckpt'),591 'download_urls': [592 'https://huggingface.co/anvuew/karaoke_bs_roformer/resolve/main/karaoke_bs_roformer_anvuew.yaml',593 'https://huggingface.co/anvuew/karaoke_bs_roformer/resolve/main/karaoke_bs_roformer_anvuew.ckpt'594 ],595 'needs_conf_edit': True596 },597 # === EXISTING MODELS ===598 'VOCALS-big_beta6X (by Unwa)': {599 'model_type': 'mel_band_roformer',600 'config_path': os.path.join(CHECKPOINT_DIR, 'big_beta6x.yaml'),601 'start_check_point': os.path.join(CHECKPOINT_DIR, 'big_beta6x.ckpt'),602 'download_urls': [603 'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/big_beta6x.yaml',604 'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/big_beta6x.ckpt'605 ],606 'needs_conf_edit': False607 },608 'VOCALS-big_beta6 (by Unwa)': {609 'model_type': 'mel_band_roformer',610 'config_path': os.path.join(CHECKPOINT_DIR, 'big_beta6.yaml'),611 'start_check_point': os.path.join(CHECKPOINT_DIR, 'big_beta6.ckpt'),612 'download_urls': [613 'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/big_beta6.yaml',614 'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/big_beta6.ckpt'615 ],616 'needs_conf_edit': False617 },618 'VOCALS-Mel-Roformer FT 3 Preview (by unwa)': {619 'model_type': 'mel_band_roformer',620 'config_path': os.path.join(CHECKPOINT_DIR, 'config_kimmel_unwa_ft.yaml'),621 'start_check_point': os.path.join(CHECKPOINT_DIR, 'kimmel_unwa_ft3_prev.ckpt'),622 'download_urls': [623 'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/config_kimmel_unwa_ft.yaml',624 'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/kimmel_unwa_ft3_prev.ckpt'625 ],626 'needs_conf_edit': False627 },628 'VOCALS-InstVocHQ': {629 'model_type': 'mdx23c',630 'config_path': os.path.join(CHECKPOINT_DIR, 'config_vocals_mdx23c.yaml'),631 'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_vocals_mdx23c_sdr_10.17.ckpt'),632 'download_urls': [633 'https://raw.githubusercontent.com/ZFTurbo/Music-Source-Separation-Training/main/configs/config_vocals_mdx23c.yaml',634 'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.0/model_vocals_mdx23c_sdr_10.17.ckpt'635 ],636 'needs_conf_edit': False637 },638 'VOCALS-MelBand-Roformer (by KimberleyJSN)': {639 'model_type': 'mel_band_roformer',640 'config_path': os.path.join(CHECKPOINT_DIR, 'config_vocals_mel_band_roformer_kj.yaml'),641 'start_check_point': os.path.join(CHECKPOINT_DIR, 'MelBandRoformer.ckpt'),642 'download_urls': [643 'https://raw.githubusercontent.com/ZFTurbo/Music-Source-Separation-Training/main/configs/KimberleyJensen/config_vocals_mel_band_roformer_kj.yaml',644 'https://huggingface.co/KimberleyJSN/melbandroformer/resolve/main/MelBandRoformer.ckpt'645 ],646 'needs_conf_edit': True647 },648 'VOCALS-BS-Roformer_1297 (by viperx)': {649 'model_type': 'bs_roformer',650 'config_path': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_317_sdr_12.9755.yaml'),651 'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_317_sdr_12.9755.ckpt'),652 'download_urls': [653 'https://raw.githubusercontent.com/ZFTurbo/Music-Source-Separation-Training/main/configs/viperx/model_bs_roformer_ep_317_sdr_12.9755.yaml',654 'https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/model_bs_roformer_ep_317_sdr_12.9755.ckpt'655 ],656 'needs_conf_edit': True657 },658 'VOCALS-BS-Roformer_1296 (by viperx)': {659 'model_type': 'bs_roformer',660 'config_path': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_368_sdr_12.9628.yaml'),661 'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_368_sdr_12.9628.ckpt'),662 'download_urls': [663 'https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/model_bs_roformer_ep_368_sdr_12.9628.ckpt',664 'https://raw.githubusercontent.com/TRvlvr/application_data/main/mdx_model_data/mdx_c_configs/model_bs_roformer_ep_368_sdr_12.9628.yaml'665 ],666 'needs_conf_edit': True667 },668 'VOCALS-BS-RoformerLargev1 (by unwa)': {669 'model_type': 'bs_roformer',670 'config_path': os.path.join(CHECKPOINT_DIR, 'config_bsrofoL.yaml'),671 'start_check_point': os.path.join(CHECKPOINT_DIR, 'BS-Roformer_LargeV1.ckpt'),672 'download_urls': [673 'https://huggingface.co/jarredou/unwa_bs_roformer/resolve/main/BS-Roformer_LargeV1.ckpt',674 'https://huggingface.co/jarredou/unwa_bs_roformer/raw/main/config_bsrofoL.yaml'675 ],676 'needs_conf_edit': True677 },678 'VOCALS-Mel-Roformer big beta 4 (by unwa)': {679 'model_type': 'mel_band_roformer',680 'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_big_beta4.yaml'),681 'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_big_beta4.ckpt'),682 'download_urls': [683 'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/melband_roformer_big_beta4.ckpt',684 'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/raw/main/config_melbandroformer_big_beta4.yaml'685 ],686 'needs_conf_edit': True687 },688 'VOCALS-Melband-Roformer BigBeta5e (by unwa)': {689 'model_type': 'mel_band_roformer',690 'config_path': os.path.join(CHECKPOINT_DIR, 'big_beta5e.yaml'),691 'start_check_point': os.path.join(CHECKPOINT_DIR, 'big_beta5e.ckpt'),692 'download_urls': [693 'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/big_beta5e.ckpt',694 'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/big_beta5e.yaml'695 ],696 'needs_conf_edit': True697 },698 'VOCALS-VitLarge23 (by ZFTurbo)': {699 'model_type': 'segm_models',700 'config_path': os.path.join(CHECKPOINT_DIR, 'config_vocals_segm_models.yaml'),701 'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_vocals_segm_models_sdr_9.77.ckpt'),702 'download_urls': [703 'https://raw.githubusercontent.com/ZFTurbo/Music-Source-Separation-Training/refs/heads/main/configs/config_vocals_segm_models.yaml',704 'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.0/model_vocals_segm_models_sdr_9.77.ckpt'705 ],706 'needs_conf_edit': False707 },708 'VOCALS-MelBand-Roformer Kim FT (by Unwa)': {709 'model_type': 'mel_band_roformer',710 'config_path': os.path.join(CHECKPOINT_DIR, 'config_kimmel_unwa_ft.yaml'),711 'start_check_point': os.path.join(CHECKPOINT_DIR, 'kimmel_unwa_ft.ckpt'),712 'download_urls': [713 'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/kimmel_unwa_ft.ckpt',714 'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/config_kimmel_unwa_ft.yaml'715 ],716 'needs_conf_edit': True717 },718 'VOCALS-MelBand-Roformer (by Becruily)': {719 'model_type': 'mel_band_roformer',720 'config_path': os.path.join(CHECKPOINT_DIR, 'config_instrumental_becruily.yaml'),721 'start_check_point': os.path.join(CHECKPOINT_DIR, 'mel_band_roformer_vocals_becruily.ckpt'),722 'download_urls': [723 'https://huggingface.co/becruily/mel-band-roformer-vocals/resolve/main/config_vocals_becruily.yaml',724 'https://huggingface.co/becruily/mel-band-roformer-vocals/resolve/main/mel_band_roformer_vocals_becruily.ckpt'725 ],726 'needs_conf_edit': True727 },728 'VOCALS-Male Female-BS-RoFormer Male Female Beta 7_2889 (by aufr33)': {729 'model_type': 'bs_roformer',730 'config_path': os.path.join(CHECKPOINT_DIR, 'config_chorus_male_female_bs_roformer.yaml'),731 'start_check_point': os.path.join(CHECKPOINT_DIR, 'bs_roformer_male_female_by_aufr33_sdr_7.2889.ckpt'),732 'download_urls': [733 'https://huggingface.co/RareSirMix/AIModelRehosting/resolve/main/bs_roformer_male_female_by_aufr33_sdr_7.2889.ckpt',734 'https://huggingface.co/Sucial/Chorus_Male_Female_BS_Roformer/resolve/main/config_chorus_male_female_bs_roformer.yaml'735 ],736 'needs_conf_edit': True737 },738 'VOCALS-MelBand-Roformer Kim FT 2 (by Unwa)': {739 'model_type': 'mel_band_roformer',740 'config_path': os.path.join(CHECKPOINT_DIR, 'config_kimmel_unwa_ft.yaml'),741 'start_check_point': os.path.join(CHECKPOINT_DIR, 'kimmel_unwa_ft2.ckpt'),742 'download_urls': [743 'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/config_kimmel_unwa_ft.yaml',744 'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/kimmel_unwa_ft2.ckpt'745 ],746 'needs_conf_edit': True747 },748 'voc_gaboxBSroformer (by Gabox)': {749 'model_type': 'bs_roformer',750 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gaboxBSroformer.yaml'),751 'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_gaboxBSR.ckpt'),752 'download_urls': [753 'https://huggingface.co/GaboxR67/BSRoformerVocTest/resolve/main/voc_gaboxBSroformer.yaml',754 'https://huggingface.co/GaboxR67/BSRoformerVocTest/resolve/main/voc_gaboxBSR.ckpt'755 ],756 'needs_conf_edit': True757 },758 'voc_gaboxMelReformer (by Gabox)': {759 'model_type': 'mel_band_roformer',760 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),761 'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_gabox.ckpt'),762 'download_urls': [763 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',764 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.ckpt'765 ],766 'needs_conf_edit': True767 },768 'voc_gaboxMelReformerFV1 (by Gabox)': {769 'model_type': 'mel_band_roformer',770 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),771 'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_gaboxFv1.ckpt'),772 'download_urls': [773 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',774 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gaboxFv1.ckpt'775 ],776 'needs_conf_edit': True777 },778 'voc_gaboxMelReformerFV2 (by Gabox)': {779 'model_type': 'mel_band_roformer',780 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),781 'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_gaboxFv2.ckpt'),782 'download_urls': [783 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',784 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gaboxFv2.ckpt'785 ],786 'needs_conf_edit': True787 },788 'VOCALS-MelBand-Roformer Kim FT 2 Blendless (by unwa)': {789 'model_type': 'mel_band_roformer',790 'config_path': os.path.join(CHECKPOINT_DIR, 'config_kimmel_unwa_ft.yaml'),791 'start_check_point': os.path.join(CHECKPOINT_DIR, 'kimmel_unwa_ft2_bleedless.ckpt'),792 'download_urls': [793 'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/config_kimmel_unwa_ft.yaml',794 'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/kimmel_unwa_ft2_bleedless.ckpt'795 ],796 'needs_conf_edit': True797 },798 'Voc_Fv3 (by Gabox)': {799 'model_type': 'mel_band_roformer',800 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),801 'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_Fv3.ckpt'),802 'download_urls': [803 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',804 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_Fv3.ckpt'805 ],806 'needs_conf_edit': True807 },808 'FullnessVocalModel (by Amane)': {809 'model_type': 'mel_band_roformer',810 'config_path': os.path.join(CHECKPOINT_DIR, 'config.yaml'),811 'start_check_point': os.path.join(CHECKPOINT_DIR, 'FullnessVocalModel.ckpt'),812 'download_urls': [813 'https://huggingface.co/Aname-Tommy/MelBandRoformers/blob/main/config.yaml',814 'https://huggingface.co/Aname-Tommy/MelBandRoformers/blob/main/FullnessVocalModel.ckpt'815 ],816 'needs_conf_edit': True817 },818 'voc_fv4 (by Gabox)': {819 'model_type': 'mel_band_roformer',820 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),821 'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_fv4.ckpt'),822 'download_urls': [823 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',824 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_fv4.ckpt'825 ],826 'needs_conf_edit': True827 },828 'voc_fv5 (by Gabox)': {829 'model_type': 'mel_band_roformer',830 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),831 'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_fv5.ckpt'),832 'download_urls': [833 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',834 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_fv5.ckpt'835 ],836 'needs_conf_edit': True837 },838 'voc_fv6 (by Gabox)': {839 'model_type': 'mel_band_roformer',840 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),841 'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_fv6.ckpt'),842 'download_urls': [843 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',844 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_fv6.ckpt'845 ],846 'needs_conf_edit': True847 },848 'voc_fv7 (by Gabox)': {849 'model_type': 'mel_band_roformer',850 'config_path': os.path.join(CHECKPOINT_DIR, 'v7.yaml'),851 'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_fv7.ckpt'),852 'download_urls': [853 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/v7.yaml',854 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_fv7.ckpt'855 ],856 'needs_conf_edit': True857 },858 'vocfv7beta1 (by Gabox)': {859 'model_type': 'mel_band_roformer',860 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),861 'start_check_point': os.path.join(CHECKPOINT_DIR, 'vocfv7beta1.ckpt'),862 'download_urls': [863 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',864 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/experimental/vocfv7beta1.ckpt'865 ],866 'needs_conf_edit': True867 },868 'vocfv7beta2 (by Gabox)': {869 'model_type': 'mel_band_roformer',870 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),871 'start_check_point': os.path.join(CHECKPOINT_DIR, 'vocfv7beta2.ckpt'),872 'download_urls': [873 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',874 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/experimental/vocfv7beta2.ckpt'875 ],876 'needs_conf_edit': True877 },878 'vocfv7beta3 (by Gabox)': {879 'model_type': 'mel_band_roformer',880 'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),881 'start_check_point': os.path.join(CHECKPOINT_DIR, 'vocfv7beta3.ckpt'),882 'download_urls': [883 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',884 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/experimental/vocfv7beta3.ckpt'885 ],886 'needs_conf_edit': True887 },888 'MelBandRoformerSYHFTV3Epsilon (by SYH99999)': {889 'model_type': 'mel_band_roformer',890 'config_path': os.path.join(CHECKPOINT_DIR, 'config_vocals_mel_band_roformer_ft.yaml'),891 'start_check_point': os.path.join(CHECKPOINT_DIR, 'MelBandRoformerSYHFTV3Epsilon.ckpt'),892 'download_urls': [893 'https://huggingface.co/SYH99999/MelBandRoformerSYHFT/resolve/main/config_vocals_mel_band_roformer_ft.yaml',894 'https://huggingface.co/SYH99999/MelBandRoformerSYHFTV3Epsilon/resolve/main/MelBandRoformerSYHFTV3Epsilon.ckpt'895 ],896 'needs_conf_edit': True897 },898 'MelBandRoformerBigSYHFTV1 (by SYH99999)': {899 'model_type': 'mel_band_roformer',900 'config_path': os.path.join(CHECKPOINT_DIR, 'config_big_syhft.yaml'),901 'start_check_point': os.path.join(CHECKPOINT_DIR, 'MelBandRoformerBigSYHFTV1.ckpt'),902 'download_urls': [903 'https://huggingface.co/SYH99999/MelBandRoformerBigSYHFTV1Fast/resolve/main/config.yaml',904 'https://huggingface.co/SYH99999/MelBandRoformerBigSYHFTV1Fast/resolve/main/MelBandRoformerBigSYHFTV1.ckpt'905 ],906 'needs_conf_edit': True907 },908 'model_chorus_bs_roformer_ep_146 (by Sucial)': {909 'model_type': 'bs_roformer',910 'config_path': os.path.join(CHECKPOINT_DIR, 'config_chorus_male_female_bs_roformer.yaml'),911 'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_chorus_bs_roformer_ep_146_sdr_23.8613.ckpt'),912 'download_urls': [913 'https://huggingface.co/Sucial/Chorus_Male_Female_BS_Roformer/resolve/main/config_chorus_male_female_bs_roformer.yaml',914 'https://huggingface.co/Sucial/Chorus_Male_Female_BS_Roformer/resolve/main/model_chorus_bs_roformer_ep_146_sdr_23.8613.ckpt'915 ],916 'needs_conf_edit': True917 },918 'model_chorus_bs_roformer_ep_267 (by Sucial)': {919 'model_type': 'bs_roformer',920 'config_path': os.path.join(CHECKPOINT_DIR, 'config_chorus_male_female_bs_roformer.yaml'),921 'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_chorus_bs_roformer_ep_267_sdr_24.1275.ckpt'),922 'download_urls': [923 'https://huggingface.co/Sucial/Chorus_Male_Female_BS_Roformer/resolve/main/config_chorus_male_female_bs_roformer.yaml',924 'https://huggingface.co/Sucial/Chorus_Male_Female_BS_Roformer/resolve/main/model_chorus_bs_roformer_ep_267_sdr_24.1275.ckpt'925 ],926 'needs_conf_edit': True927 },928 'BS-Rofo-SW-Fixed (by jarredou)': {929 'model_type': 'bs_roformer',930 'config_path': os.path.join(CHECKPOINT_DIR, 'BS-Rofo-SW-Fixed.yaml'),931 'start_check_point': os.path.join(CHECKPOINT_DIR, 'BS-Rofo-SW-Fixed.ckpt'),932 'download_urls': [933 'https://huggingface.co/jarredou/BS-ROFO-SW-Fixed/resolve/main/BS-Rofo-SW-Fixed.yaml',934 'https://huggingface.co/jarredou/BS-ROFO-SW-Fixed/resolve/main/BS-Rofo-SW-Fixed.ckpt'935 ],936 'needs_conf_edit': True937 },938 'BS_ResurrectioN (by Gabox)': {939 'model_type': 'bs_roformer',940 'config_path': os.path.join(CHECKPOINT_DIR, 'BS-Roformer-Resurrection-Inst-Config.yaml'),941 'start_check_point': os.path.join(CHECKPOINT_DIR, 'BS_ResurrectioN.ckpt'),942 'download_urls': [943 'https://huggingface.co/pcunwa/BS-Roformer-Resurrection/resolve/main/BS-Roformer-Resurrection-Inst-Config.yaml',944 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/experimental/BS_ResurrectioN.ckpt'945 ],946 'needs_conf_edit': True947 }948 },949 "Instrumental Models": {950 # === NEW MODELS (en üstte) ===951 'Neo_InstVFX (by natanworkspace)': {952 'model_type': 'mel_band_roformer',953 'config_path': os.path.join(CHECKPOINT_DIR, 'config_neo_inst.yaml'),954 'start_check_point': os.path.join(CHECKPOINT_DIR, 'Neo_InstVFX.ckpt'),955 'download_urls': [956 'https://huggingface.co/natanworkspace/melband_roformer/resolve/main/config_neo_inst.yaml',957 'https://huggingface.co/natanworkspace/melband_roformer/resolve/main/Neo_InstVFX.ckpt'958 ],959 'needs_conf_edit': True960 },961 'BS-Roformer-Resurrection-Inst (by unwa)': {962 'model_type': 'bs_roformer',963 'config_path': os.path.join(CHECKPOINT_DIR, 'BS-Roformer-Resurrection-Inst-Config.yaml'),964 'start_check_point': os.path.join(CHECKPOINT_DIR, 'BS-Roformer-Resurrection-Inst.ckpt'),965 'download_urls': [966 'https://huggingface.co/pcunwa/BS-Roformer-Resurrection/resolve/main/BS-Roformer-Resurrection-Inst-Config.yaml',967 'https://huggingface.co/pcunwa/BS-Roformer-Resurrection/resolve/main/BS-Roformer-Resurrection-Inst.ckpt'968 ],969 'needs_conf_edit': True970 },971 'bs_roformer_inst_hyperacev2 (by unwa)': {972 'model_type': 'bs_roformer_custom',973 'config_path': os.path.join(CHECKPOINT_DIR, 'config_hyperacev2_inst.yaml'),974 'start_check_point': os.path.join(CHECKPOINT_DIR, 'bs_roformer_inst_hyperacev2.ckpt'),975 'download_urls': [976 ('https://huggingface.co/pcunwa/BS-Roformer-HyperACE/resolve/main/v2_inst/config.yaml', 'config_hyperacev2_inst.yaml'),977 'https://huggingface.co/pcunwa/BS-Roformer-HyperACE/resolve/main/v2_inst/bs_roformer_inst_hyperacev2.ckpt'978 ],979 'custom_model_url': 'https://huggingface.co/pcunwa/BS-Roformer-HyperACE/resolve/main/v2_inst/bs_roformer.py',980 'needs_conf_edit': True981 },982 'BS-Roformer-Large-Inst (by unwa)': {983 'model_type': 'bs_roformer_custom',984 'config_path': os.path.join(CHECKPOINT_DIR, 'config_bs_large_inst.yaml'),985 'start_check_point': os.path.join(CHECKPOINT_DIR, 'bs_large_v2_inst.ckpt'),986 'download_urls': [987 ('https://huggingface.co/pcunwa/BS-Roformer-Large-Inst/resolve/main/config.yaml', 'config_bs_large_inst.yaml'),988 'https://huggingface.co/pcunwa/BS-Roformer-Large-Inst/resolve/main/bs_large_v2_inst.ckpt'989 ],990 'custom_model_url': 'https://huggingface.co/pcunwa/BS-Roformer-Large-Inst/resolve/main/bs_roformer.py',991 'needs_conf_edit': True992 },993 'bs_roformer_fno (by unwa)': {994 'model_type': 'bs_roformer_custom',995 'config_path': os.path.join(CHECKPOINT_DIR, 'bsrofo_fno.yaml'),996 'start_check_point': os.path.join(CHECKPOINT_DIR, 'bs_roformer_fno.ckpt'),997 'download_urls': [998 'https://huggingface.co/pcunwa/BS-Roformer-Inst-FNO/resolve/main/bsrofo_fno.yaml',999 'https://huggingface.co/pcunwa/BS-Roformer-Inst-FNO/resolve/main/bs_roformer_fno.ckpt'1000 ],1001 'custom_model_url': 'https://huggingface.co/listra92/MyModels/resolve/main/misc/bs_roformer.py',1002 'needs_conf_edit': True1003 },1004 'Rifforge_final_sdr_14.24 (by meskvlla33)': {1005 'model_type': 'mel_band_roformer',1006 'config_path': os.path.join(CHECKPOINT_DIR, 'config_rifforge_full_mesk.yaml'),1007 'start_check_point': os.path.join(CHECKPOINT_DIR, 'rifforge_full_sdr_14.2436.ckpt'),1008 'download_urls': [1009 'https://huggingface.co/meskvlla33/rifforge/resolve/main/config_rifforge_full_mesk.yaml',1010 'https://huggingface.co/meskvlla33/rifforge/resolve/main/rifforge_full_sdr_14.2436.ckpt'1011 ],1012 'needs_conf_edit': True1013 },1014 # === EXISTING MODELS ===1015 'Inst_GaboxFv8 (by Gabox)': {1016 'model_type': 'mel_band_roformer',1017 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1018 'start_check_point': os.path.join(CHECKPOINT_DIR, 'Inst_GaboxFv8.ckpt'),1019 'download_urls': [1020 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/Inst_GaboxFv8.ckpt',1021 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml'1022 ],1023 'needs_conf_edit': True1024 }, 1025 'INST-Mel-Roformer v1 (by unwa)': {1026 'model_type': 'mel_band_roformer',1027 'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_inst.yaml'),1028 'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_inst_v1.ckpt'),1029 'download_urls': [1030 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/melband_roformer_inst_v1.ckpt',1031 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/raw/main/config_melbandroformer_inst.yaml'1032 ],1033 'needs_conf_edit': True1034 },1035 'INST-Mel-Roformer v1e+ (by unwa)': {1036 'model_type': 'mel_band_roformer',1037 'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_inst.yaml'),1038 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_v1e_plus.ckpt'),1039 'download_urls': [1040 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/inst_v1e_plus.ckpt',1041 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/raw/main/config_melbandroformer_inst.yaml'1042 ],1043 'needs_conf_edit': True1044 },1045 'INST-Mel-Roformer v1+ (by unwa)': {1046 'model_type': 'mel_band_roformer',1047 'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_inst.yaml'),1048 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_v1_plus_test.ckpt'),1049 'download_urls': [1050 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/inst_v1_plus_test.ckpt',1051 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/raw/main/config_melbandroformer_inst.yaml'1052 ],1053 'needs_conf_edit': True1054 },1055 'INST-Mel-Roformer v2 (by unwa)': {1056 'model_type': 'mel_band_roformer',1057 'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_inst_v2.yaml'),1058 'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_inst_v2.ckpt'),1059 'download_urls': [1060 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/melband_roformer_inst_v2.ckpt',1061 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/raw/main/config_melbandroformer_inst_v2.yaml'1062 ],1063 'needs_conf_edit': True1064 },1065 'INST-VOC-Mel-Roformer a.k.a. duality (by unwa)': {1066 'model_type': 'mel_band_roformer',1067 'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_instvoc_duality.yaml'),1068 'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_instvoc_duality_v1.ckpt'),1069 'download_urls': [1070 'https://huggingface.co/pcunwa/Mel-Band-Roformer-InstVoc-Duality/resolve/main/melband_roformer_instvoc_duality_v1.ckpt',1071 'https://huggingface.co/pcunwa/Mel-Band-Roformer-InstVoc-Duality/raw/main/config_melbandroformer_instvoc_duality.yaml'1072 ],1073 'needs_conf_edit': True1074 },1075 'INST-VOC-Mel-Roformer a.k.a. duality v2 (by unwa)': {1076 'model_type': 'mel_band_roformer',1077 'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_instvoc_duality.yaml'),1078 'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_instvox_duality_v2.ckpt'),1079 'download_urls': [1080 'https://huggingface.co/pcunwa/Mel-Band-Roformer-InstVoc-Duality/resolve/main/melband_roformer_instvox_duality_v2.ckpt',1081 'https://huggingface.co/pcunwa/Mel-Band-Roformer-InstVoc-Duality/raw/main/config_melbandroformer_instvoc_duality.yaml'1082 ],1083 'needs_conf_edit': True1084 },1085 'INST-MelBand-Roformer (by Becruily)': {1086 'model_type': 'mel_band_roformer',1087 'config_path': os.path.join(CHECKPOINT_DIR, 'config_instrumental_becruily.yaml'),1088 'start_check_point': os.path.join(CHECKPOINT_DIR, 'mel_band_roformer_instrumental_becruily.ckpt'),1089 'download_urls': [1090 'https://huggingface.co/becruily/mel-band-roformer-instrumental/resolve/main/config_instrumental_becruily.yaml',1091 'https://huggingface.co/becruily/mel-band-roformer-instrumental/resolve/main/mel_band_roformer_instrumental_becruily.ckpt'1092 ],1093 'needs_conf_edit': True1094 },1095 'inst_v1e (by unwa)': {1096 'model_type': 'mel_band_roformer',1097 'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_inst.yaml'),1098 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_v1e.ckpt'),1099 'download_urls': [1100 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/inst_v1e.ckpt',1101 'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/config_melbandroformer_inst.yaml'1102 ],1103 'needs_conf_edit': True1104 },1105 'inst_gabox (by Gabox)': {1106 'model_type': 'mel_band_roformer',1107 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1108 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gabox.ckpt'),1109 'download_urls': [1110 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',1111 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.ckpt'1112 ],1113 'needs_conf_edit': True1114 },1115 'inst_gaboxBV1 (by Gabox)': {1116 'model_type': 'mel_band_roformer',1117 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1118 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxBv1.ckpt'),1119 'download_urls': [1120 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',1121 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxBv1.ckpt'1122 ],1123 'needs_conf_edit': True1124 },1125 'inst_gaboxBV2 (by Gabox)': {1126 'model_type': 'mel_band_roformer',1127 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1128 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxBv2.ckpt'),1129 'download_urls': [1130 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',1131 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxBv2.ckpt'1132 ],1133 'needs_conf_edit': True1134 },1135 'inst_gaboxBFV1 (by Gabox)': {1136 'model_type': 'mel_band_roformer',1137 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1138 'start_check_point': os.path.join(CHECKPOINT_DIR, 'gaboxFv1.ckpt'),1139 'download_urls': [1140 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',1141 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxFv1.ckpt'1142 ],1143 'needs_conf_edit': True1144 },1145 'inst_gaboxFV2 (by Gabox)': {1146 'model_type': 'mel_band_roformer',1147 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1148 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxFv2.ckpt'),1149 'download_urls': [1150 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',1151 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxFv2.ckpt'1152 ],1153 'needs_conf_edit': True1154 },1155 'inst_Fv3 (by Gabox)': {1156 'model_type': 'mel_band_roformer',1157 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1158 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxFv3.ckpt'),1159 'download_urls': [1160 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',1161 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxFv3.ckpt'1162 ],1163 'needs_conf_edit': True1164 },1165 'Intrumental_Gabox (by Gabox)': {1166 'model_type': 'mel_band_roformer',1167 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1168 'start_check_point': os.path.join(CHECKPOINT_DIR, 'intrumental_gabox.ckpt'),1169 'download_urls': [1170 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',1171 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/intrumental_gabox.ckpt'1172 ],1173 'needs_conf_edit': True1174 },1175 'inst_Fv4Noise (by Gabox)': {1176 'model_type': 'mel_band_roformer',1177 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1178 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_Fv4Noise.ckpt'),1179 'download_urls': [1180 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',1181 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_Fv4Noise.ckpt'1182 ],1183 'needs_conf_edit': True1184 },1185 'INSTV5 (by Gabox)': {1186 'model_type': 'mel_band_roformer',1187 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1188 'start_check_point': os.path.join(CHECKPOINT_DIR, 'INSTV5.ckpt'),1189 'download_urls': [1190 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',1191 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/INSTV5.ckpt'1192 ],1193 'needs_conf_edit': True1194 },1195 'inst_gaboxFV1 (by Gabox)': {1196 'model_type': 'mel_band_roformer',1197 'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),1198 'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxFv1.ckpt'),1199 'download_urls': [1200 'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',