File size: 42,466 Bytes
c3eda24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
import os
import yaml
from urllib.parse import quote
from pathlib import Path

# Temel dizin ve checkpoint dizini sabit olarak tanımlanıyor
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
CHECKPOINT_DIR = os.path.join(BASE_DIR, 'ckpts')

def conf_edit(config_path, chunk_size, overlap):
    """Edits the configuration file with chunk size and overlap."""
    full_config_path = os.path.join(CHECKPOINT_DIR, os.path.basename(config_path))
    if not os.path.exists(full_config_path):
        raise FileNotFoundError(f"Configuration file not found: {full_config_path}")
    
    with open(full_config_path, 'r') as f:
        data = yaml.load(f, Loader=yaml.SafeLoader)

    if 'use_amp' not in data.keys():
        data['training']['use_amp'] = True

    data['audio']['chunk_size'] = chunk_size
    data['inference']['num_overlap'] = overlap
    if data['inference']['batch_size'] == 1:
        data['inference']['batch_size'] = 2

    print(f"Using custom overlap and chunk_size: overlap={overlap}, chunk_size={chunk_size}")
    with open(full_config_path, 'w') as f:
        yaml.dump(data, f, default_flow_style=False, sort_keys=False, Dumper=yaml.Dumper)

def download_file(url):
    """Downloads a file from a URL."""
    import requests
    encoded_url = quote(url, safe=':/')
    path = CHECKPOINT_DIR
    os.makedirs(path, exist_ok=True)
    filename = os.path.basename(encoded_url)
    file_path = os.path.join(path, filename)
    if os.path.exists(file_path):
        print(f"File '{filename}' already exists at '{path}'.")
        return
    try:
        response = requests.get(url)
        if response.status_code == 200:
            with open(file_path, 'wb') as f:
                f.write(response.content)
            print(f"File '{filename}' downloaded successfully")
        else:
            print(f"Error downloading '{filename}': Status code {response.status_code}")
    except Exception as e:
        print(f"Error downloading file '{filename}' from '{url}': {e}")

# Model konfigurasyonlarını kategorize bir sözlükte tut
MODEL_CONFIGS = {
    "Vocal Models": {
        'VOCALS-InstVocHQ': {
            'model_type': 'mdx23c',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_vocals_mdx23c.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_vocals_mdx23c_sdr_10.17.ckpt'),
            'download_urls': [
                'https://raw.githubusercontent.com/ZFTurbo/Music-Source-Separation-Training/main/configs/config_vocals_mdx23c.yaml',
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.0/model_vocals_mdx23c_sdr_10.17.ckpt'
            ],
            'needs_conf_edit': False
        },
        'VOCALS-MelBand-Roformer (by KimberleyJSN)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_vocals_mel_band_roformer_kj.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'MelBandRoformer.ckpt'),
            'download_urls': [
                'https://raw.githubusercontent.com/ZFTurbo/Music-Source-Separation-Training/main/configs/KimberleyJensen/config_vocals_mel_band_roformer_kj.yaml',
                'https://huggingface.co/KimberleyJSN/melbandroformer/resolve/main/MelBandRoformer.ckpt'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-BS-Roformer_1297 (by viperx)': {
            'model_type': 'bs_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_317_sdr_12.9755.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_317_sdr_12.9755.ckpt'),
            'download_urls': [
                'https://raw.githubusercontent.com/ZFTurbo/Music-Source-Separation-Training/main/configs/viperx/model_bs_roformer_ep_317_sdr_12.9755.yaml',
                'https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/model_bs_roformer_ep_317_sdr_12.9755.ckpt'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-BS-Roformer_1296 (by viperx)': {
            'model_type': 'bs_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_368_sdr_12.9628.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_368_sdr_12.9628.ckpt'),
            'download_urls': [
                'https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/model_bs_roformer_ep_368_sdr_12.9628.ckpt',
                'https://raw.githubusercontent.com/TRvlvr/application_data/main/mdx_model_data/mdx_c_configs/model_bs_roformer_ep_368_sdr_12.9628.yaml'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-BS-RoformerLargev1 (by unwa)': {
            'model_type': 'bs_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_bsrofoL.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'BS-Roformer_LargeV1.ckpt'),
            'download_urls': [
                'https://huggingface.co/jarredou/unwa_bs_roformer/resolve/main/BS-Roformer_LargeV1.ckpt',
                'https://huggingface.co/jarredou/unwa_bs_roformer/raw/main/config_bsrofoL.yaml'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-Mel-Roformer big beta 4 (by unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_big_beta4.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_big_beta4.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/melband_roformer_big_beta4.ckpt',
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/raw/main/config_melbandroformer_big_beta4.yaml'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-Melband-Roformer BigBeta5e (by unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'big_beta5e.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'big_beta5e.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/big_beta5e.ckpt',
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-big/resolve/main/big_beta5e.yaml'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-VitLarge23 (by ZFTurbo)': {
            'model_type': 'segm_models',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_vocals_segm_models.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_vocals_segm_models_sdr_9.77.ckpt'),
            'download_urls': [
                'https://raw.githubusercontent.com/ZFTurbo/Music-Source-Separation-Training/refs/heads/main/configs/config_vocals_segm_models.yaml',
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.0/model_vocals_segm_models_sdr_9.77.ckpt'
            ],
            'needs_conf_edit': False
        },
        'VOCALS-MelBand-Roformer Kim FT (by Unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_kimmel_unwa_ft.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'kimmel_unwa_ft.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/kimmel_unwa_ft.ckpt',
                'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/config_kimmel_unwa_ft.yaml'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-MelBand-Roformer (by Becruily)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_instrumental_becruily.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'mel_band_roformer_vocals_becruily.ckpt'),
            'download_urls': [
                'https://huggingface.co/becruily/mel-band-roformer-vocals/resolve/main/config_vocals_becruily.yaml',
                'https://huggingface.co/becruily/mel-band-roformer-vocals/resolve/main/mel_band_roformer_vocals_becruily.ckpt'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-Male Female-BS-RoFormer Male Female Beta 7_2889 (by aufr33)': {
            'model_type': 'bs_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_chorus_male_female_bs_roformer.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'bs_roformer_male_female_by_aufr33_sdr_7.2889.ckpt'),
            'download_urls': [
                'https://huggingface.co/RareSirMix/AIModelRehosting/resolve/main/bs_roformer_male_female_by_aufr33_sdr_7.2889.ckpt',
                'https://huggingface.co/Sucial/Chorus_Male_Female_BS_Roformer/resolve/main/config_chorus_male_female_bs_roformer.yaml'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-MelBand-Roformer Kim FT 2 (by Unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_kimmel_unwa_ft.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'kimmel_unwa_ft2.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/config_kimmel_unwa_ft.yaml',
                'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/kimmel_unwa_ft2.ckpt'
            ],
            'needs_conf_edit': True
        },
        'voc_gaboxBSroformer (by Gabox)': {
            'model_type': 'bs_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gaboxBSroformer.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_gaboxBSR.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/BSRoformerVocTest/resolve/main/voc_gaboxBSroformer.yaml',
                'https://huggingface.co/GaboxR67/BSRoformerVocTest/resolve/main/voc_gaboxBSR.ckpt'
            ],
            'needs_conf_edit': True
        },
        'voc_gaboxMelReformer (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_gabox.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.ckpt'
            ],
            'needs_conf_edit': True
        },
        'voc_gaboxMelReformerFV1 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_gaboxFv1.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gaboxFv1.ckpt'
            ],
            'needs_conf_edit': True
        },
        'voc_gaboxMelReformerFV2 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_gaboxFv2.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gaboxFv2.ckpt'
            ],
            'needs_conf_edit': True
        },
        'VOCALS-MelBand-Roformer Kim FT 2 Blendless (by unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_kimmel_unwa_ft.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'kimmel_unwa_ft2_bleedless.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/config_kimmel_unwa_ft.yaml',
                'https://huggingface.co/pcunwa/Kim-Mel-Band-Roformer-FT/resolve/main/kimmel_unwa_ft2_bleedless.ckpt'
            ],
            'needs_conf_edit': True
        },
        'Voc_Fv3 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'voc_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'voc_Fv3.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/vocals/voc_Fv3.ckpt'
            ],
            'needs_conf_edit': True
        },
        'FullnessVocalModel (by Amane)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'FullnessVocalModel.ckpt'),
            'download_urls': [
                'https://huggingface.co/Aname-Tommy/MelBandRoformers/blob/main/config.yaml',
                'https://huggingface.co/Aname-Tommy/MelBandRoformers/blob/main/FullnessVocalModel.ckpt'
            ],
            'needs_conf_edit': True
        }
    },
    "Instrumental Models": {
        'INST-Mel-Roformer v1 (by unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_inst.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_inst_v1.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/melband_roformer_inst_v1.ckpt',
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/raw/main/config_melbandroformer_inst.yaml'
            ],
            'needs_conf_edit': True
        },
        'INST-Mel-Roformer v2 (by unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_inst_v2.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_inst_v2.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/melband_roformer_inst_v2.ckpt',
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/raw/main/config_melbandroformer_inst_v2.yaml'
            ],
            'needs_conf_edit': True
        },
        'INST-VOC-Mel-Roformer a.k.a. duality (by unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_instvoc_duality.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_instvoc_duality_v1.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-InstVoc-Duality/resolve/main/melband_roformer_instvoc_duality_v1.ckpt',
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-InstVoc-Duality/raw/main/config_melbandroformer_instvoc_duality.yaml'
            ],
            'needs_conf_edit': True
        },
        'INST-VOC-Mel-Roformer a.k.a. duality v2 (by unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_instvoc_duality.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'melband_roformer_instvox_duality_v2.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-InstVoc-Duality/resolve/main/melband_roformer_instvox_duality_v2.ckpt',
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-InstVoc-Duality/raw/main/config_melbandroformer_instvoc_duality.yaml'
            ],
            'needs_conf_edit': True
        },
        'INST-MelBand-Roformer (by Becruily)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_instrumental_becruily.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'mel_band_roformer_instrumental_becruily.ckpt'),
            'download_urls': [
                'https://huggingface.co/becruily/mel-band-roformer-instrumental/resolve/main/config_instrumental_becruily.yaml',
                'https://huggingface.co/becruily/mel-band-roformer-instrumental/resolve/main/mel_band_roformer_instrumental_becruily.ckpt'
            ],
            'needs_conf_edit': True
        },
        'inst_v1e (by unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_melbandroformer_inst.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_v1e.ckpt'),
            'download_urls': [
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/inst_v1e.ckpt',
                'https://huggingface.co/pcunwa/Mel-Band-Roformer-Inst/resolve/main/config_melbandroformer_inst.yaml'
            ],
            'needs_conf_edit': True
        },
        'inst_gabox (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gabox.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.ckpt'
            ],
            'needs_conf_edit': True
        },
        'inst_gaboxBV1 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxBv1.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxBv1.ckpt'
            ],
            'needs_conf_edit': True
        },
        'inst_gaboxBV2 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxBv2.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxBv2.ckpt'
            ],
            'needs_conf_edit': True
        },
        'inst_gaboxBFV1 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'gaboxFv1.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxFv1.ckpt'
            ],
            'needs_conf_edit': True
        },
        'inst_gaboxFV2 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxFv2.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxFv2.ckpt'
            ],
            'needs_conf_edit': True
        },
        'inst_Fv3 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxFv3.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxFv3.ckpt'
            ],
            'needs_conf_edit': True
        },
        'Intrumental_Gabox (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'intrumental_gabox.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/intrumental_gabox.ckpt'
            ],
            'needs_conf_edit': True
        },
        'inst_Fv4Noise (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_Fv4Noise.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_Fv4Noise.ckpt'
            ],
            'needs_conf_edit': True
        },
        'INSTV5 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'INSTV5.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/INSTV5.ckpt'
            ],
            'needs_conf_edit': True
        },
        'inst_gaboxFV1 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'inst_gaboxFv1.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gaboxFv1.ckpt'
            ],
            'needs_conf_edit': True
        },
        'inst_gaboxFV6 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'INSTV6.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/INSTV6.ckpt'
            ],
            'needs_conf_edit': True
        },
        'INSTV5N (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'INSTV5N.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/INSTV5N.ckpt'
            ],
            'needs_conf_edit': True
        },
        'INSTV6N (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'INSTV6N.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/INSTV6N.ckpt'
            ],
            'needs_conf_edit': True
        },
        'Inst_GaboxV7 (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'inst_gabox.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'Inst_GaboxV7.ckpt'),
            'download_urls': [
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/inst_gabox.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/Inst_GaboxV7.ckpt'
            ],
            'needs_conf_edit': True
        }
    },
    "4-Stem Models": {
        '4STEMS-SCNet_MUSDB18 (by starrytong)': {
            'model_type': 'scnet',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_musdb18_scnet.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'scnet_checkpoint_musdb18.ckpt'),
            'download_urls': [
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v.1.0.6/config_musdb18_scnet.yaml',
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v.1.0.6/scnet_checkpoint_musdb18.ckpt'
            ],
            'needs_conf_edit': False
        },
        '4STEMS-SCNet_XL_MUSDB18 (by ZFTurbo)': {
            'model_type': 'scnet',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_musdb18_scnet_xl.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_scnet_ep_54_sdr_9.8051.ckpt'),
            'download_urls': [
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.13/config_musdb18_scnet_xl.yaml',
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.13/model_scnet_ep_54_sdr_9.8051.ckpt'
            ],
            'needs_conf_edit': True
        },
        '4STEMS-SCNet_Large (by starrytong)': {
            'model_type': 'scnet',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_musdb18_scnet_large_starrytong.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'SCNet-large_starrytong_fixed.ckpt'),
            'download_urls': [
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.9/config_musdb18_scnet_large_starrytong.yaml',
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.9/SCNet-large_starrytong_fixed.ckpt'
            ],
            'needs_conf_edit': True
        },
        '4STEMS-BS-Roformer_MUSDB18 (by ZFTurbo)': {
            'model_type': 'bs_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_bs_roformer_384_8_2_485100.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_17_sdr_9.6568.ckpt'),
            'download_urls': [
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.12/config_bs_roformer_384_8_2_485100.yaml',
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v1.0.12/model_bs_roformer_ep_17_sdr_9.6568.ckpt'
            ],
            'needs_conf_edit': True
        },
        'MelBandRoformer4StemFTLarge (SYH99999)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'MelBandRoformer4StemFTLarge.ckpt'),
            'download_urls': [
                'https://huggingface.co/SYH99999/MelBandRoformer4StemFTLarge/resolve/main/config.yaml',
                'https://huggingface.co/SYH99999/MelBandRoformer4StemFTLarge/resolve/main/MelBandRoformer4StemFTLarge.ckpt'
            ],
            'needs_conf_edit': True
        }
    },
    "Denoise Models": {
        'DENOISE-MelBand-Roformer-1 (by aufr33)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'model_mel_band_roformer_denoise.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'denoise_mel_band_roformer_aufr33_sdr_27.9959.ckpt'),
            'download_urls': [
                'https://huggingface.co/jarredou/aufr33_MelBand_Denoise/resolve/main/denoise_mel_band_roformer_aufr33_sdr_27.9959.ckpt',
                'https://huggingface.co/jarredou/aufr33_MelBand_Denoise/resolve/main/model_mel_band_roformer_denoise.yaml'
            ],
            'needs_conf_edit': True
        },
        'DENOISE-MelBand-Roformer-2 (by aufr33)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'model_mel_band_roformer_denoise.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'denoise_mel_band_roformer_aufr33_aggr_sdr_27.9768.ckpt'),
            'download_urls': [
                'https://huggingface.co/jarredou/aufr33_MelBand_Denoise/resolve/main/denoise_mel_band_roformer_aufr33_aggr_sdr_27.9768.ckpt',
                'https://huggingface.co/jarredou/aufr33_MelBand_Denoise/resolve/main/model_mel_band_roformer_denoise.yaml'
            ],
            'needs_conf_edit': True
        },
        'denoisedebleed (by Gabox)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'model_mel_band_roformer_denoise.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'denoisedebleed.ckpt'),
            'download_urls': [
                'https://huggingface.co/poiqazwsx/melband-roformer-denoise/resolve/main/model_mel_band_roformer_denoise.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/resolve/main/melbandroformers/instrumental/denoisedebleed.ckpt'
            ],
            'needs_conf_edit': True
        }
    },
    "Dereverb Models": {
        'DE-REVERB-MDX23C (by aufr33 & jarredou)': {
            'model_type': 'mdx23c',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_dereverb_mdx23c.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'dereverb_mdx23c_sdr_6.9096.ckpt'),
            'download_urls': [
                'https://huggingface.co/jarredou/aufr33_jarredou_MDXv3_DeReverb/resolve/main/dereverb_mdx23c_sdr_6.9096.ckpt',
                'https://huggingface.co/jarredou/aufr33_jarredou_MDXv3_DeReverb/resolve/main/config_dereverb_mdx23c.yaml'
            ],
            'needs_conf_edit': False
        },
        'DE-REVERB-MelBand-Roformer aggr./v2/19.1729 (by anvuew)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'dereverb_mel_band_roformer_anvuew.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'dereverb_mel_band_roformer_anvuew_sdr_19.1729.ckpt'),
            'download_urls': [
                'https://huggingface.co/anvuew/dereverb_mel_band_roformer/resolve/main/dereverb_mel_band_roformer_anvuew_sdr_19.1729.ckpt',
                'https://huggingface.co/anvuew/dereverb_mel_band_roformer/resolve/main/dereverb_mel_band_roformer_anvuew.yaml'
            ],
            'needs_conf_edit': True
        },
        'DE-REVERB-Echo-MelBand-Roformer (by Sucial)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_dereverb-echo_mel_band_roformer.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'dereverb-echo_mel_band_roformer_sdr_10.0169.ckpt'),
            'download_urls': [
                'https://huggingface.co/Sucial/Dereverb-Echo_Mel_Band_Roformer/resolve/main/dereverb-echo_mel_band_roformer_sdr_10.0169.ckpt',
                'https://huggingface.co/Sucial/Dereverb-Echo_Mel_Band_Roformer/resolve/main/config_dereverb-echo_mel_band_roformer.yaml'
            ],
            'needs_conf_edit': True
        },
        'dereverb_mel_band_roformer_less_aggressive_anvuew': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'dereverb_mel_band_roformer_anvuew.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'dereverb_mel_band_roformer_less_aggressive_anvuew_sdr_18.8050.ckpt'),
            'download_urls': [
                'https://huggingface.co/anvuew/dereverb_mel_band_roformer/resolve/main/dereverb_mel_band_roformer_anvuew.yaml',
                'https://huggingface.co/anvuew/dereverb_mel_band_roformer/resolve/main/dereverb_mel_band_roformer_less_aggressive_anvuew_sdr_18.8050.ckpt'
            ],
            'needs_conf_edit': True
        },
        'dereverb_mel_band_roformer_anvuew': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'dereverb_mel_band_roformer_anvuew.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'dereverb_mel_band_roformer_anvuew_sdr_19.1729.ckpt'),
            'download_urls': [
                'https://huggingface.co/anvuew/dereverb_mel_band_roformer/resolve/main/dereverb_mel_band_roformer_anvuew.yaml',
                'https://huggingface.co/anvuew/dereverb_mel_band_roformer/resolve/main/dereverb_mel_band_roformer_anvuew_sdr_19.1729.ckpt'
            ],
            'needs_conf_edit': True
        },
        'dereverb_mel_band_roformer_mono (by anvuew)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'dereverb_mel_band_roformer_anvuew.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'dereverb_mel_band_roformer_mono_anvuew_sdr_20.4029.ckpt'),
            'download_urls': [
                'https://huggingface.co/anvuew/dereverb_mel_band_roformer/resolve/main/dereverb_mel_band_roformer_anvuew.yaml',
                'https://huggingface.co/anvuew/dereverb_mel_band_roformer/resolve/main/dereverb_mel_band_roformer_mono_anvuew_sdr_20.4029.ckpt'
            ],
            'needs_conf_edit': True
        }
    },
    "Other Models": {
        'KARAOKE-MelBand-Roformer (by aufr33 & viperx)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_mel_band_roformer_karaoke.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt'),
            'download_urls': [
                'https://huggingface.co/jarredou/aufr33-viperx-karaoke-melroformer-model/resolve/main/mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt',
                'https://huggingface.co/jarredou/aufr33-viperx-karaoke-melroformer-model/resolve/main/config_mel_band_roformer_karaoke.yaml'
            ],
            'needs_conf_edit': True
        },
        'OTHER-BS-Roformer_1053 (by viperx)': {
            'model_type': 'bs_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_937_sdr_10.5309.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_bs_roformer_ep_937_sdr_10.5309.ckpt'),
            'download_urls': [
                'https://github.com/TRvlvr/model_repo/releases/download/all_public_uvr_models/model_bs_roformer_ep_937_sdr_10.5309.ckpt',
                'https://raw.githubusercontent.com/TRvlvr/application_data/main/mdx_model_data/mdx_c_configs/model_bs_roformer_ep_937_sdr_10.5309.yaml'
            ],
            'needs_conf_edit': True
        },
        'CROWD-REMOVAL-MelBand-Roformer (by aufr33)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'model_mel_band_roformer_crowd.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'mel_band_roformer_crowd_aufr33_viperx_sdr_8.7144.ckpt'),
            'download_urls': [
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v.1.0.4/mel_band_roformer_crowd_aufr33_viperx_sdr_8.7144.ckpt',
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v.1.0.4/model_mel_band_roformer_crowd.yaml'
            ],
            'needs_conf_edit': True
        },
        'CINEMATIC-BandIt_Plus (by kwatcharasupat)': {
            'model_type': 'bandit',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_dnr_bandit_bsrnn_multi_mus64.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model_bandit_plus_dnr_sdr_11.47.chpt'),
            'download_urls': [
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v.1.0.3/config_dnr_bandit_bsrnn_multi_mus64.yaml',
                'https://github.com/ZFTurbo/Music-Source-Separation-Training/releases/download/v.1.0.3/model_bandit_plus_dnr_sdr_11.47.chpt'
            ],
            'needs_conf_edit': False
        },
        'DRUMSEP-MDX23C_DrumSep_6stem (by aufr33 & jarredou)': {
            'model_type': 'mdx23c',
            'config_path': os.path.join(CHECKPOINT_DIR, 'aufr33-jarredou_DrumSep_model_mdx23c_ep_141_sdr_10.8059.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'aufr33-jarredou_DrumSep_model_mdx23c_ep_141_sdr_10.8059.ckpt'),
            'download_urls': [
                'https://github.com/jarredou/models/releases/download/aufr33-jarredou_MDX23C_DrumSep_model_v0.1/aufr33-jarredou_DrumSep_model_mdx23c_ep_141_sdr_10.8059.ckpt',
                'https://github.com/jarredou/models/releases/download/aufr33-jarredou_MDX23C_DrumSep_model_v0.1/aufr33-jarredou_DrumSep_model_mdx23c_ep_141_sdr_10.8059.yaml'
            ],
            'needs_conf_edit': False
        },
        'bleed_suppressor_v1 (by unwa)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_bleed_suppressor_v1.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'bleed_suppressor_v1.ckpt'),
            'download_urls': [
                'https://huggingface.co/ASesYusuf1/MODELS/resolve/main/bleed_suppressor_v1.ckpt',
                'https://huggingface.co/ASesYusuf1/MODELS/resolve/main/config_bleed_suppressor_v1.yaml'
            ],
            'needs_conf_edit': True
        },
        'SYH99999/MelBandRoformerSYHFTB1_Model1 (by Amane)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model.ckpt'),
            'download_urls': [
                'https://huggingface.co/SYH99999/MelBandRoformerSYHFTB1/resolve/main/config.yaml',
                'https://huggingface.co/SYH99999/MelBandRoformerSYHFTB1/resolve/main/model.ckpt'
            ],
            'needs_conf_edit': True
        },
        'SYH99999/MelBandRoformerSYHFTB1_Model2 (by Amane)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model2.ckpt'),
            'download_urls': [
                'https://huggingface.co/SYH99999/MelBandRoformerSYHFTB1/resolve/main/config.yaml',
                'https://huggingface.co/SYH99999/MelBandRoformerSYHFTB1/resolve/main/model2.ckpt'
            ],
            'needs_conf_edit': True
        },
        'SYH99999/MelBandRoformerSYHFTB1_Model3 (by Amane)': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'model3.ckpt'),
            'download_urls': [
                'https://huggingface.co/SYH99999/MelBandRoformerSYHFTB1/resolve/main/config.yaml',
                'https://huggingface.co/SYH99999/MelBandRoformerSYHFTB1/resolve/main/model3.ckpt'
            ],
            'needs_conf_edit': True
        },
        'KaraokeGabox': {
            'model_type': 'mel_band_roformer',
            'config_path': os.path.join(CHECKPOINT_DIR, 'config_mel_band_roformer_karaoke.yaml'),
            'start_check_point': os.path.join(CHECKPOINT_DIR, 'KaraokeGabox.ckpt'),
            'download_urls': [
                'https://github.com/deton24/Colab-for-new-MDX_UVR_models/releases/download/v1.0.0/config_mel_band_roformer_karaoke.yaml',
                'https://huggingface.co/GaboxR67/MelBandRoformers/blob/main/melbandroformers/experimental/KaraokeGabox.ckpt'
            ],
            'needs_conf_edit': True
        }
    }
}

def get_model_config(clean_model=None, chunk_size=None, overlap=None):
    """Returns model type, config path, and checkpoint path for a given model name, downloading files if needed."""
    if clean_model is None:
        return {model_name for category in MODEL_CONFIGS.values() for model_name in category.keys()}
    
    for category in MODEL_CONFIGS.values():
        if clean_model in category:
            config = category[clean_model]
            for url in config['download_urls']:
                download_file(url)
            if config['needs_conf_edit'] and chunk_size is not None and overlap is not None:
                conf_edit(config['config_path'], chunk_size, overlap)
            return config['model_type'], config['config_path'], config['start_check_point']
    return "", "", ""

get_model_config.keys = lambda: {model_name for category in MODEL_CONFIGS.values() for model_name in category.keys()}