TheStinger Eddycrack864 commited on
Commit
6c3badd
1 Parent(s): e1cc51c

UVR5 UI update (#9)

Browse files

- UVR5 UI update (b99a69160f96aa2268d8cbdd869d5808d175cfa2)


Co-authored-by: Eddycrack 864 <[email protected]>

README.md CHANGED
@@ -6,7 +6,7 @@ colorTo: pink
6
  sdk: gradio
7
  app_file: app.py
8
  pinned: true
9
- sdk_version: 4.37.2
10
  ---
11
 
12
  ![Ilaria AI Suite](./ilariaaisuite.png)
 
6
  sdk: gradio
7
  app_file: app.py
8
  pinned: true
9
+ sdk_version: 5.10.0
10
  ---
11
 
12
  ![Ilaria AI Suite](./ilariaaisuite.png)
app.py CHANGED
@@ -1,683 +1,1500 @@
1
- import os
2
- import re
3
- import random
4
- from scipy.io.wavfile import write
5
- from scipy.io.wavfile import read
6
- import numpy as np
7
- import gradio as gr
8
- import yt_dlp
9
- import spaces
10
-
11
- roformer_models = {
12
- 'BS-Roformer-Viperx-1297.ckpt': 'model_bs_roformer_ep_317_sdr_12.9755.ckpt',
13
- 'BS-Roformer-Viperx-1296.ckpt': 'model_bs_roformer_ep_368_sdr_12.9628.ckpt',
14
- 'BS-Roformer-Viperx-1053.ckpt': 'model_bs_roformer_ep_937_sdr_10.5309.ckpt',
15
- 'Mel-Roformer-Viperx-1143.ckpt': 'model_mel_band_roformer_ep_3005_sdr_11.4360.ckpt'
16
- }
17
-
18
- mdx23c_models = [
19
- 'MDX23C_D1581.ckpt',
20
- 'MDX23C-8KFFT-InstVoc_HQ.ckpt',
21
- 'MDX23C-8KFFT-InstVoc_HQ_2.ckpt',
22
- ]
23
-
24
- mdxnet_models = [
25
- 'UVR-MDX-NET-Inst_full_292.onnx',
26
- 'UVR-MDX-NET_Inst_187_beta.onnx',
27
- 'UVR-MDX-NET_Inst_82_beta.onnx',
28
- 'UVR-MDX-NET_Inst_90_beta.onnx',
29
- 'UVR-MDX-NET_Main_340.onnx',
30
- 'UVR-MDX-NET_Main_390.onnx',
31
- 'UVR-MDX-NET_Main_406.onnx',
32
- 'UVR-MDX-NET_Main_427.onnx',
33
- 'UVR-MDX-NET_Main_438.onnx',
34
- 'UVR-MDX-NET-Inst_HQ_1.onnx',
35
- 'UVR-MDX-NET-Inst_HQ_2.onnx',
36
- 'UVR-MDX-NET-Inst_HQ_3.onnx',
37
- 'UVR-MDX-NET-Inst_HQ_4.onnx',
38
- 'UVR_MDXNET_Main.onnx',
39
- 'UVR-MDX-NET-Inst_Main.onnx',
40
- 'UVR_MDXNET_1_9703.onnx',
41
- 'UVR_MDXNET_2_9682.onnx',
42
- 'UVR_MDXNET_3_9662.onnx',
43
- 'UVR-MDX-NET-Inst_1.onnx',
44
- 'UVR-MDX-NET-Inst_2.onnx',
45
- 'UVR-MDX-NET-Inst_3.onnx',
46
- 'UVR_MDXNET_KARA.onnx',
47
- 'UVR_MDXNET_KARA_2.onnx',
48
- 'UVR_MDXNET_9482.onnx',
49
- 'UVR-MDX-NET-Voc_FT.onnx',
50
- 'Kim_Vocal_1.onnx',
51
- 'Kim_Vocal_2.onnx',
52
- 'Kim_Inst.onnx',
53
- 'Reverb_HQ_By_FoxJoy.onnx',
54
- 'UVR-MDX-NET_Crowd_HQ_1.onnx',
55
- 'kuielab_a_vocals.onnx',
56
- 'kuielab_a_other.onnx',
57
- 'kuielab_a_bass.onnx',
58
- 'kuielab_a_drums.onnx',
59
- 'kuielab_b_vocals.onnx',
60
- 'kuielab_b_other.onnx',
61
- 'kuielab_b_bass.onnx',
62
- 'kuielab_b_drums.onnx',
63
- ]
64
-
65
- vrarch_models = [
66
- '1_HP-UVR.pth',
67
- '2_HP-UVR.pth',
68
- '3_HP-Vocal-UVR.pth',
69
- '4_HP-Vocal-UVR.pth',
70
- '5_HP-Karaoke-UVR.pth',
71
- '6_HP-Karaoke-UVR.pth',
72
- '7_HP2-UVR.pth',
73
- '8_HP2-UVR.pth',
74
- '9_HP2-UVR.pth',
75
- '10_SP-UVR-2B-32000-1.pth',
76
- '11_SP-UVR-2B-32000-2.pth',
77
- '12_SP-UVR-3B-44100.pth',
78
- '13_SP-UVR-4B-44100-1.pth',
79
- '14_SP-UVR-4B-44100-2.pth',
80
- '15_SP-UVR-MID-44100-1.pth',
81
- '16_SP-UVR-MID-44100-2.pth',
82
- '17_HP-Wind_Inst-UVR.pth',
83
- 'UVR-De-Echo-Aggressive.pth',
84
- 'UVR-De-Echo-Normal.pth',
85
- 'UVR-DeEcho-DeReverb.pth',
86
- 'UVR-DeNoise-Lite.pth',
87
- 'UVR-DeNoise.pth',
88
- 'UVR-BVE-4B_SN-44100-1.pth',
89
- 'MGM_HIGHEND_v4.pth',
90
- 'MGM_LOWEND_A_v4.pth',
91
- 'MGM_LOWEND_B_v4.pth',
92
- 'MGM_MAIN_v4.pth',
93
- ]
94
-
95
- demucs_models = [
96
- 'htdemucs_ft.yaml',
97
- 'htdemucs.yaml',
98
- 'hdemucs_mmi.yaml',
99
- ]
100
-
101
- output_format = [
102
- 'wav',
103
- 'flac',
104
- 'mp3',
105
- ]
106
-
107
- mdxnet_overlap_values = [
108
- '0.25',
109
- '0.5',
110
- '0.75',
111
- '0.99',
112
- ]
113
-
114
- vrarch_window_size_values = [
115
- '320',
116
- '512',
117
- '1024',
118
- ]
119
-
120
- demucs_overlap_values = [
121
- '0.25',
122
- '0.50',
123
- '0.75',
124
- '0.99',
125
- ]
126
-
127
- @spaces.GPU(duration=300)
128
- def download_audio(url):
129
- ydl_opts = {
130
- 'format': 'bestaudio/best',
131
- 'outtmpl': 'ytdl/%(title)s.%(ext)s',
132
- 'postprocessors': [{
133
- 'key': 'FFmpegExtractAudio',
134
- 'preferredcodec': 'wav',
135
- 'preferredquality': '192',
136
- }],
137
- }
138
-
139
- with yt_dlp.YoutubeDL(ydl_opts) as ydl:
140
- info_dict = ydl.extract_info(url, download=True)
141
- file_path = ydl.prepare_filename(info_dict).rsplit('.', 1)[0] + '.wav'
142
- sample_rate, audio_data = read(file_path)
143
- audio_array = np.asarray(audio_data, dtype=np.int16)
144
-
145
- return sample_rate, audio_array
146
-
147
- @spaces.GPU(duration=300)
148
- def roformer_separator(roformer_audio, roformer_model, roformer_output_format, roformer_overlap, roformer_segment_size):
149
- files_list = []
150
- files_list.clear()
151
- directory = "./outputs"
152
- random_id = str(random.randint(10000, 99999))
153
- pattern = f"{random_id}"
154
- os.makedirs("outputs", exist_ok=True)
155
- write(f'{random_id}.wav', roformer_audio[0], roformer_audio[1])
156
- full_roformer_model = roformer_models[roformer_model]
157
- prompt = f"audio-separator {random_id}.wav --model_filename {full_roformer_model} --output_dir=./outputs --output_format={roformer_output_format} --normalization=0.9 --mdxc_overlap={roformer_overlap} --mdxc_segment_size={roformer_segment_size}"
158
- os.system(prompt)
159
-
160
- for file in os.listdir(directory):
161
- if re.search(pattern, file):
162
- files_list.append(os.path.join(directory, file))
163
-
164
- stem1_file = files_list[0]
165
- stem2_file = files_list[1]
166
-
167
- return stem1_file, stem2_file
168
-
169
- @spaces.GPU(duration=300)
170
- def mdxc_separator(mdx23c_audio, mdx23c_model, mdx23c_output_format, mdx23c_segment_size, mdx23c_overlap, mdx23c_denoise):
171
- files_list = []
172
- files_list.clear()
173
- directory = "./outputs"
174
- random_id = str(random.randint(10000, 99999))
175
- pattern = f"{random_id}"
176
- os.makedirs("outputs", exist_ok=True)
177
- write(f'{random_id}.wav', mdx23c_audio[0], mdx23c_audio[1])
178
- prompt = f"audio-separator {random_id}.wav --model_filename {mdx23c_model} --output_dir=./outputs --output_format={mdx23c_output_format} --normalization=0.9 --mdxc_segment_size={mdx23c_segment_size} --mdxc_overlap={mdx23c_overlap}"
179
-
180
- if mdx23c_denoise:
181
- prompt += " --mdx_enable_denoise"
182
-
183
- os.system(prompt)
184
-
185
- for file in os.listdir(directory):
186
- if re.search(pattern, file):
187
- files_list.append(os.path.join(directory, file))
188
-
189
- stem1_file = files_list[0]
190
- stem2_file = files_list[1]
191
-
192
- return stem1_file, stem2_file
193
-
194
- @spaces.GPU(duration=300)
195
- def mdxnet_separator(mdxnet_audio, mdxnet_model, mdxnet_output_format, mdxnet_segment_size, mdxnet_overlap, mdxnet_denoise):
196
- files_list = []
197
- files_list.clear()
198
- directory = "./outputs"
199
- random_id = str(random.randint(10000, 99999))
200
- pattern = f"{random_id}"
201
- os.makedirs("outputs", exist_ok=True)
202
- write(f'{random_id}.wav', mdxnet_audio[0], mdxnet_audio[1])
203
- prompt = f"audio-separator {random_id}.wav --model_filename {mdxnet_model} --output_dir=./outputs --output_format={mdxnet_output_format} --normalization=0.9 --mdx_segment_size={mdxnet_segment_size} --mdx_overlap={mdxnet_overlap}"
204
-
205
- if mdxnet_denoise:
206
- prompt += " --mdx_enable_denoise"
207
-
208
- os.system(prompt)
209
-
210
- for file in os.listdir(directory):
211
- if re.search(pattern, file):
212
- files_list.append(os.path.join(directory, file))
213
-
214
- stem1_file = files_list[0]
215
- stem2_file = files_list[1]
216
-
217
- return stem1_file, stem2_file
218
-
219
- @spaces.GPU(duration=300)
220
- def vrarch_separator(vrarch_audio, vrarch_model, vrarch_output_format, vrarch_window_size, vrarch_agression, vrarch_tta, vrarch_high_end_process):
221
- files_list = []
222
- files_list.clear()
223
- directory = "./outputs"
224
- random_id = str(random.randint(10000, 99999))
225
- pattern = f"{random_id}"
226
- os.makedirs("outputs", exist_ok=True)
227
- write(f'{random_id}.wav', vrarch_audio[0], vrarch_audio[1])
228
- prompt = f"audio-separator {random_id}.wav --model_filename {vrarch_model} --output_dir=./outputs --output_format={vrarch_output_format} --normalization=0.9 --vr_window_size={vrarch_window_size} --vr_aggression={vrarch_agression}"
229
-
230
- if vrarch_tta:
231
- prompt += " --vr_enable_tta"
232
- if vrarch_high_end_process:
233
- prompt += " --vr_high_end_process"
234
-
235
- os.system(prompt)
236
-
237
- for file in os.listdir(directory):
238
- if re.search(pattern, file):
239
- files_list.append(os.path.join(directory, file))
240
-
241
- stem1_file = files_list[0]
242
- stem2_file = files_list[1]
243
-
244
- return stem1_file, stem2_file
245
-
246
- @spaces.GPU(duration=300)
247
- def demucs_separator(demucs_audio, demucs_model, demucs_output_format, demucs_shifts, demucs_overlap):
248
- files_list = []
249
- files_list.clear()
250
- directory = "./outputs"
251
- random_id = str(random.randint(10000, 99999))
252
- pattern = f"{random_id}"
253
- os.makedirs("outputs", exist_ok=True)
254
- write(f'{random_id}.wav', demucs_audio[0], demucs_audio[1])
255
- prompt = f"audio-separator {random_id}.wav --model_filename {demucs_model} --output_dir=./outputs --output_format={demucs_output_format} --normalization=0.9 --demucs_shifts={demucs_shifts} --demucs_overlap={demucs_overlap}"
256
-
257
- os.system(prompt)
258
-
259
- for file in os.listdir(directory):
260
- if re.search(pattern, file):
261
- files_list.append(os.path.join(directory, file))
262
-
263
- stem1_file = files_list[0]
264
- stem2_file = files_list[1]
265
- stem3_file = files_list[2]
266
- stem4_file = files_list[3]
267
-
268
- return stem1_file, stem2_file, stem3_file, stem4_file
269
-
270
- with gr.Blocks(theme="NoCrypt/[email protected]", title="🎵 UVR5 UI 🎵") as app:
271
- gr.Markdown("<h1> 🎵 UVR5 UI 🎵 </h1>")
272
- gr.Markdown("If you liked this HF Space you can give me a ❤️")
273
- gr.Markdown("Try UVR5 UI using Colab [here](https://colab.research.google.com/github/Eddycrack864/UVR5-UI/blob/main/UVR_UI.ipynb)")
274
- with gr.Tabs():
275
- with gr.TabItem("BS/Mel Roformer"):
276
- with gr.Row():
277
- roformer_model = gr.Dropdown(
278
- label = "Select the Model",
279
- choices=list(roformer_models.keys()),
280
- interactive = True
281
- )
282
- roformer_output_format = gr.Dropdown(
283
- label = "Select the Output Format",
284
- choices = output_format,
285
- interactive = True
286
- )
287
- with gr.Row():
288
- roformer_overlap = gr.Slider(
289
- minimum = 2,
290
- maximum = 4,
291
- step = 1,
292
- label = "Overlap",
293
- info = "Amount of overlap between prediction windows.",
294
- value = 4,
295
- interactive = True
296
- )
297
- roformer_segment_size = gr.Slider(
298
- minimum = 32,
299
- maximum = 4000,
300
- step = 32,
301
- label = "Segment Size",
302
- info = "Larger consumes more resources, but may give better results.",
303
- value = 256,
304
- interactive = True
305
- )
306
- with gr.Row():
307
- roformer_audio = gr.Audio(
308
- label = "Input Audio",
309
- type = "numpy",
310
- interactive = True
311
- )
312
- with gr.Accordion("Separation by Link", open = False):
313
- with gr.Row():
314
- roformer_link = gr.Textbox(
315
- label = "Link",
316
- placeholder = "Paste the link here",
317
- interactive = True
318
- )
319
- with gr.Row():
320
- gr.Markdown("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)")
321
- with gr.Row():
322
- roformer_download_button = gr.Button(
323
- "Download!",
324
- variant = "primary"
325
- )
326
-
327
- roformer_download_button.click(download_audio, [roformer_link], [roformer_audio])
328
-
329
- with gr.Row():
330
- roformer_button = gr.Button("Separate!", variant = "primary")
331
- with gr.Row():
332
- roformer_stem1 = gr.Audio(
333
- show_download_button = True,
334
- interactive = False,
335
- label = "Stem 1",
336
- type = "filepath"
337
- )
338
- roformer_stem2 = gr.Audio(
339
- show_download_button = True,
340
- interactive = False,
341
- label = "Stem 2",
342
- type = "filepath"
343
- )
344
-
345
- roformer_button.click(roformer_separator, [roformer_audio, roformer_model, roformer_output_format, roformer_overlap, roformer_segment_size], [roformer_stem1, roformer_stem2])
346
-
347
- with gr.TabItem("MDX23C"):
348
- with gr.Row():
349
- mdx23c_model = gr.Dropdown(
350
- label = "Select the Model",
351
- choices = mdx23c_models,
352
- interactive = True
353
- )
354
- mdx23c_output_format = gr.Dropdown(
355
- label = "Select the Output Format",
356
- choices = output_format,
357
- interactive = True
358
- )
359
- with gr.Row():
360
- mdx23c_segment_size = gr.Slider(
361
- minimum = 32,
362
- maximum = 4000,
363
- step = 32,
364
- label = "Segment Size",
365
- info = "Larger consumes more resources, but may give better results.",
366
- value = 256,
367
- interactive = True
368
- )
369
- mdx23c_overlap = gr.Slider(
370
- minimum = 2,
371
- maximum = 50,
372
- step = 1,
373
- label = "Overlap",
374
- info = "Amount of overlap between prediction windows.",
375
- value = 8,
376
- interactive = True
377
- )
378
- mdx23c_denoise = gr.Checkbox(
379
- label = "Denoise",
380
- info = "Enable denoising during separation.",
381
- value = False,
382
- interactive = True
383
- )
384
- with gr.Row():
385
- mdx23c_audio = gr.Audio(
386
- label = "Input Audio",
387
- type = "numpy",
388
- interactive = True
389
- )
390
- with gr.Accordion("Separation by Link", open = False):
391
- with gr.Row():
392
- mdx23c_link = gr.Textbox(
393
- label = "Link",
394
- placeholder = "Paste the link here",
395
- interactive = True
396
- )
397
- with gr.Row():
398
- gr.Markdown("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)")
399
- with gr.Row():
400
- mdx23c_download_button = gr.Button(
401
- "Download!",
402
- variant = "primary"
403
- )
404
-
405
- mdx23c_download_button.click(download_audio, [mdx23c_link], [mdx23c_audio])
406
-
407
- with gr.Row():
408
- mdx23c_button = gr.Button("Separate!", variant = "primary")
409
- with gr.Row():
410
- mdx23c_stem1 = gr.Audio(
411
- show_download_button = True,
412
- interactive = False,
413
- label = "Stem 1",
414
- type = "filepath"
415
- )
416
- mdx23c_stem2 = gr.Audio(
417
- show_download_button = True,
418
- interactive = False,
419
- label = "Stem 2",
420
- type = "filepath"
421
- )
422
-
423
- mdx23c_button.click(mdxc_separator, [mdx23c_audio, mdx23c_model, mdx23c_output_format, mdx23c_segment_size, mdx23c_overlap, mdx23c_denoise], [mdx23c_stem1, mdx23c_stem2])
424
-
425
- with gr.TabItem("MDX-NET"):
426
- with gr.Row():
427
- mdxnet_model = gr.Dropdown(
428
- label = "Select the Model",
429
- choices = mdxnet_models,
430
- interactive = True
431
- )
432
- mdxnet_output_format = gr.Dropdown(
433
- label = "Select the Output Format",
434
- choices = output_format,
435
- interactive = True
436
- )
437
- with gr.Row():
438
- mdxnet_segment_size = gr.Slider(
439
- minimum = 32,
440
- maximum = 4000,
441
- step = 32,
442
- label = "Segment Size",
443
- info = "Larger consumes more resources, but may give better results.",
444
- value = 256,
445
- interactive = True
446
- )
447
- mdxnet_overlap = gr.Dropdown(
448
- label = "Overlap",
449
- choices = mdxnet_overlap_values,
450
- value = mdxnet_overlap_values[0],
451
- interactive = True
452
- )
453
- mdxnet_denoise = gr.Checkbox(
454
- label = "Denoise",
455
- info = "Enable denoising during separation.",
456
- value = True,
457
- interactive = True
458
- )
459
- with gr.Row():
460
- mdxnet_audio = gr.Audio(
461
- label = "Input Audio",
462
- type = "numpy",
463
- interactive = True
464
- )
465
- with gr.Accordion("Separation by Link", open = False):
466
- with gr.Row():
467
- mdxnet_link = gr.Textbox(
468
- label = "Link",
469
- placeholder = "Paste the link here",
470
- interactive = True
471
- )
472
- with gr.Row():
473
- gr.Markdown("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)")
474
- with gr.Row():
475
- mdxnet_download_button = gr.Button(
476
- "Download!",
477
- variant = "primary"
478
- )
479
-
480
- mdxnet_download_button.click(download_audio, [mdxnet_link], [mdxnet_audio])
481
-
482
- with gr.Row():
483
- mdxnet_button = gr.Button("Separate!", variant = "primary")
484
- with gr.Row():
485
- mdxnet_stem1 = gr.Audio(
486
- show_download_button = True,
487
- interactive = False,
488
- label = "Stem 1",
489
- type = "filepath"
490
- )
491
- mdxnet_stem2 = gr.Audio(
492
- show_download_button = True,
493
- interactive = False,
494
- label = "Stem 2",
495
- type = "filepath"
496
- )
497
-
498
- mdxnet_button.click(mdxnet_separator, [mdxnet_audio, mdxnet_model, mdxnet_output_format, mdxnet_segment_size, mdxnet_overlap, mdxnet_denoise], [mdxnet_stem1, mdxnet_stem2])
499
-
500
- with gr.TabItem("VR ARCH"):
501
- with gr.Row():
502
- vrarch_model = gr.Dropdown(
503
- label = "Select the Model",
504
- choices = vrarch_models,
505
- interactive = True
506
- )
507
- vrarch_output_format = gr.Dropdown(
508
- label = "Select the Output Format",
509
- choices = output_format,
510
- interactive = True
511
- )
512
- with gr.Row():
513
- vrarch_window_size = gr.Dropdown(
514
- label = "Window Size",
515
- choices = vrarch_window_size_values,
516
- value = vrarch_window_size_values[0],
517
- interactive = True
518
- )
519
- vrarch_agression = gr.Slider(
520
- minimum = 1,
521
- maximum = 50,
522
- step = 1,
523
- label = "Agression",
524
- info = "Intensity of primary stem extraction.",
525
- value = 5,
526
- interactive = True
527
- )
528
- vrarch_tta = gr.Checkbox(
529
- label = "TTA",
530
- info = "Enable Test-Time-Augmentation; slow but improves quality.",
531
- value = True,
532
- visible = True,
533
- interactive = True,
534
- )
535
- vrarch_high_end_process = gr.Checkbox(
536
- label = "High End Process",
537
- info = "Mirror the missing frequency range of the output.",
538
- value = False,
539
- visible = True,
540
- interactive = True,
541
- )
542
- with gr.Row():
543
- vrarch_audio = gr.Audio(
544
- label = "Input Audio",
545
- type = "numpy",
546
- interactive = True
547
- )
548
- with gr.Accordion("Separation by Link", open = False):
549
- with gr.Row():
550
- vrarch_link = gr.Textbox(
551
- label = "Link",
552
- placeholder = "Paste the link here",
553
- interactive = True
554
- )
555
- with gr.Row():
556
- gr.Markdown("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)")
557
- with gr.Row():
558
- vrarch_download_button = gr.Button(
559
- "Download!",
560
- variant = "primary"
561
- )
562
-
563
- vrarch_download_button.click(download_audio, [vrarch_link], [vrarch_audio])
564
-
565
- with gr.Row():
566
- vrarch_button = gr.Button("Separate!", variant = "primary")
567
- with gr.Row():
568
- vrarch_stem1 = gr.Audio(
569
- show_download_button = True,
570
- interactive = False,
571
- type = "filepath",
572
- label = "Stem 1"
573
- )
574
- vrarch_stem2 = gr.Audio(
575
- show_download_button = True,
576
- interactive = False,
577
- type = "filepath",
578
- label = "Stem 2"
579
- )
580
-
581
- vrarch_button.click(vrarch_separator, [vrarch_audio, vrarch_model, vrarch_output_format, vrarch_window_size, vrarch_agression, vrarch_tta, vrarch_high_end_process], [vrarch_stem1, vrarch_stem2])
582
-
583
- with gr.TabItem("Demucs"):
584
- with gr.Row():
585
- demucs_model = gr.Dropdown(
586
- label = "Select the Model",
587
- choices = demucs_models,
588
- interactive = True
589
- )
590
- demucs_output_format = gr.Dropdown(
591
- label = "Select the Output Format",
592
- choices = output_format,
593
- interactive = True
594
- )
595
- with gr.Row():
596
- demucs_shifts = gr.Slider(
597
- minimum = 1,
598
- maximum = 20,
599
- step = 1,
600
- label = "Shifts",
601
- info = "Number of predictions with random shifts, higher = slower but better quality.",
602
- value = 2,
603
- interactive = True
604
- )
605
- demucs_overlap = gr.Dropdown(
606
- label = "Overlap",
607
- choices = demucs_overlap_values,
608
- value = demucs_overlap_values[0],
609
- interactive = True
610
- )
611
- with gr.Row():
612
- demucs_audio = gr.Audio(
613
- label = "Input Audio",
614
- type = "numpy",
615
- interactive = True
616
- )
617
- with gr.Accordion("Separation by Link", open = False):
618
- with gr.Row():
619
- demucs_link = gr.Textbox(
620
- label = "Link",
621
- placeholder = "Paste the link here",
622
- interactive = True
623
- )
624
- with gr.Row():
625
- gr.Markdown("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)")
626
- with gr.Row():
627
- demucs_download_button = gr.Button(
628
- "Download!",
629
- variant = "primary"
630
- )
631
-
632
- demucs_download_button.click(download_audio, [demucs_link], [demucs_audio])
633
-
634
- with gr.Row():
635
- demucs_button = gr.Button("Separate!", variant = "primary")
636
- with gr.Row():
637
- demucs_stem1 = gr.Audio(
638
- show_download_button = True,
639
- interactive = False,
640
- type = "filepath",
641
- label = "Stem 1"
642
- )
643
- demucs_stem2 = gr.Audio(
644
- show_download_button = True,
645
- interactive = False,
646
- type = "filepath",
647
- label = "Stem 2"
648
- )
649
- with gr.Row():
650
- demucs_stem3 = gr.Audio(
651
- show_download_button = True,
652
- interactive = False,
653
- type = "filepath",
654
- label = "Stem 3"
655
- )
656
- demucs_stem4 = gr.Audio(
657
- show_download_button = True,
658
- interactive = False,
659
- type = "filepath",
660
- label = "Stem 4"
661
- )
662
-
663
- demucs_button.click(demucs_separator, [demucs_audio, demucs_model, demucs_output_format, demucs_shifts, demucs_overlap], [demucs_stem1, demucs_stem2, demucs_stem3, demucs_stem4])
664
-
665
- with gr.TabItem("Credits"):
666
- gr.Markdown(
667
- """
668
- UVR5 UI created by **[Eddycrack 864](https://github.com/Eddycrack864).** Join **[AI HUB](https://discord.gg/aihub)** community.
669
-
670
- * python-audio-separator by [beveradb](https://github.com/beveradb).
671
- * Special thanks to [Ilaria](https://github.com/TheStingerX) for hosting this space and help.
672
- * Thanks to [Mikus](https://github.com/cappuch) for the help with the code.
673
- * Thanks to [Nick088](https://huggingface.co/Nick088) for the help to fix roformers.
674
- * Thanks to [yt_dlp](https://github.com/yt-dlp/yt-dlp) devs.
675
- * Separation by link source code and improvements by [Blane187](https://huggingface.co/Blane187).
676
-
677
- You can donate to the original UVR5 project here:
678
- [!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/uvr5)
679
- """
680
- )
681
-
682
- app.queue()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
683
  app.launch()
 
1
+ import os
2
+ import subprocess
3
+ import re
4
+ import platform
5
+ import torch
6
+ import logging
7
+ import yt_dlp
8
+ import spaces
9
+ import gradio as gr
10
+ import assets.themes.loadThemes as loadThemes
11
+ from audio_separator.separator import Separator
12
+ from assets.i18n.i18n import I18nAuto
13
+
14
+ i18n = I18nAuto()
15
+
16
+ device = "cuda" if torch.cuda.is_available() else "cpu"
17
+ use_autocast = device == "cuda"
18
+
19
+ if os.path.isdir("env"):
20
+ if platform.system() == "Windows":
21
+ separator_location = ".\\env\\Scripts\\audio-separator.exe"
22
+ elif platform.system() == "Linux":
23
+ separator_location = "env/bin/audio-separator"
24
+ else:
25
+ separator_location = "audio-separator"
26
+
27
+ #=========================#
28
+ # Roformer Models #
29
+ #=========================#
30
+ roformer_models = {
31
+ 'BS-Roformer-Viperx-1297': 'model_bs_roformer_ep_317_sdr_12.9755.ckpt',
32
+ 'BS-Roformer-Viperx-1296': 'model_bs_roformer_ep_368_sdr_12.9628.ckpt',
33
+ 'BS-Roformer-Viperx-1053': 'model_bs_roformer_ep_937_sdr_10.5309.ckpt',
34
+ 'Mel-Roformer-Viperx-1143': 'model_mel_band_roformer_ep_3005_sdr_11.4360.ckpt',
35
+ 'BS-Roformer-De-Reverb': 'deverb_bs_roformer_8_384dim_10depth.ckpt',
36
+ 'Mel-Roformer-Crowd-Aufr33-Viperx': 'mel_band_roformer_crowd_aufr33_viperx_sdr_8.7144.ckpt',
37
+ 'Mel-Roformer-Denoise-Aufr33': 'denoise_mel_band_roformer_aufr33_sdr_27.9959.ckpt',
38
+ 'Mel-Roformer-Denoise-Aufr33-Aggr' : 'denoise_mel_band_roformer_aufr33_aggr_sdr_27.9768.ckpt',
39
+ 'Mel-Roformer-Karaoke-Aufr33-Viperx': 'mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt',
40
+ 'MelBand Roformer | Vocals by Kimberley Jensen' : 'vocals_mel_band_roformer.ckpt',
41
+ 'MelBand Roformer Kim | FT by unwa' : 'mel_band_roformer_kim_ft_unwa.ckpt',
42
+ 'MelBand Roformer Kim | Inst V1 by Unwa' : 'melband_roformer_inst_v1.ckpt',
43
+ 'MelBand Roformer Kim | Inst V1 (E) by Unwa' : 'melband_roformer_inst_v1e.ckpt',
44
+ 'MelBand Roformer Kim | Inst V2 by Unwa' : 'melband_roformer_inst_v2.ckpt',
45
+ 'MelBand Roformer Kim | InstVoc Duality V1 by Unwa' : 'melband_roformer_instvoc_duality_v1.ckpt',
46
+ 'MelBand Roformer Kim | InstVoc Duality V2 by Unwa' : 'melband_roformer_instvox_duality_v2.ckpt',
47
+ 'MelBand Roformer | De-Reverb by anvuew' : 'dereverb_mel_band_roformer_anvuew_sdr_19.1729.ckpt',
48
+ 'MelBand Roformer | De-Reverb Less Aggressive by anvuew' : 'dereverb_mel_band_roformer_less_aggressive_anvuew_sdr_18.8050.ckpt',
49
+ 'MelBand Roformer | De-Reverb-Echo by Sucial' : 'dereverb-echo_mel_band_roformer_sdr_10.0169.ckpt',
50
+ 'MelBand Roformer | De-Reverb-Echo V2 by Sucial' : 'dereverb-echo_mel_band_roformer_sdr_13.4843_v2.ckpt',
51
+ 'MelBand Roformer Kim | SYHFT by SYH99999' : 'MelBandRoformerSYHFT.ckpt',
52
+ 'MelBand Roformer Kim | SYHFT V2 by SYH99999' : 'MelBandRoformerSYHFTV2.ckpt',
53
+ 'MelBand Roformer Kim | SYHFT V2.5 by SYH99999' : 'MelBandRoformerSYHFTV2.5.ckpt',
54
+ 'MelBand Roformer Kim | SYHFT V3 by SYH99999' : 'MelBandRoformerSYHFTV3Epsilon.ckpt',
55
+ 'MelBand Roformer Kim | Big SYHFT V1 by SYH99999' : 'MelBandRoformerBigSYHFTV1.ckpt',
56
+ 'MelBand Roformer Kim | Big Beta 4 FT by unwa' : 'melband_roformer_big_beta4.ckpt',
57
+ 'MelBand Roformer Kim | Big Beta 5e FT by unwa' : 'melband_roformer_big_beta5e.ckpt',
58
+ 'BS Roformer | Chorus Male-Female by Sucial' : 'model_chorus_bs_roformer_ep_267_sdr_24.1275.ckpt',
59
+ 'MelBand Roformer | Aspiration by Sucial' : 'aspiration_mel_band_roformer_sdr_18.9845.ckpt',
60
+ 'MelBand Roformer | Aspiration Less Aggressive by Sucial' : 'aspiration_mel_band_roformer_less_aggr_sdr_18.1201.ckpt',
61
+ 'MelBand Roformer | Bleed Suppressor V1 by unwa-97chris' : 'mel_band_roformer_bleed_suppressor_v1.ckpt'
62
+ }
63
+
64
+ #=========================#
65
+ # MDX23C Models #
66
+ #=========================#
67
+ mdx23c_models = [
68
+ 'MDX23C_D1581.ckpt',
69
+ 'MDX23C-8KFFT-InstVoc_HQ.ckpt',
70
+ 'MDX23C-8KFFT-InstVoc_HQ_2.ckpt',
71
+ 'MDX23C-De-Reverb-aufr33-jarredou.ckpt',
72
+ 'MDX23C-DrumSep-aufr33-jarredou.ckpt'
73
+ ]
74
+
75
+ #=========================#
76
+ # MDXN-NET Models #
77
+ #=========================#
78
+ mdxnet_models = [
79
+ 'UVR-MDX-NET-Inst_full_292.onnx',
80
+ 'UVR-MDX-NET_Inst_187_beta.onnx',
81
+ 'UVR-MDX-NET_Inst_82_beta.onnx',
82
+ 'UVR-MDX-NET_Inst_90_beta.onnx',
83
+ 'UVR-MDX-NET_Main_340.onnx',
84
+ 'UVR-MDX-NET_Main_390.onnx',
85
+ 'UVR-MDX-NET_Main_406.onnx',
86
+ 'UVR-MDX-NET_Main_427.onnx',
87
+ 'UVR-MDX-NET_Main_438.onnx',
88
+ 'UVR-MDX-NET-Inst_HQ_1.onnx',
89
+ 'UVR-MDX-NET-Inst_HQ_2.onnx',
90
+ 'UVR-MDX-NET-Inst_HQ_3.onnx',
91
+ 'UVR-MDX-NET-Inst_HQ_4.onnx',
92
+ 'UVR-MDX-NET-Inst_HQ_5.onnx',
93
+ 'UVR_MDXNET_Main.onnx',
94
+ 'UVR-MDX-NET-Inst_Main.onnx',
95
+ 'UVR_MDXNET_1_9703.onnx',
96
+ 'UVR_MDXNET_2_9682.onnx',
97
+ 'UVR_MDXNET_3_9662.onnx',
98
+ 'UVR-MDX-NET-Inst_1.onnx',
99
+ 'UVR-MDX-NET-Inst_2.onnx',
100
+ 'UVR-MDX-NET-Inst_3.onnx',
101
+ 'UVR_MDXNET_KARA.onnx',
102
+ 'UVR_MDXNET_KARA_2.onnx',
103
+ 'UVR_MDXNET_9482.onnx',
104
+ 'UVR-MDX-NET-Voc_FT.onnx',
105
+ 'Kim_Vocal_1.onnx',
106
+ 'Kim_Vocal_2.onnx',
107
+ 'Kim_Inst.onnx',
108
+ 'Reverb_HQ_By_FoxJoy.onnx',
109
+ 'UVR-MDX-NET_Crowd_HQ_1.onnx',
110
+ 'kuielab_a_vocals.onnx',
111
+ 'kuielab_a_other.onnx',
112
+ 'kuielab_a_bass.onnx',
113
+ 'kuielab_a_drums.onnx',
114
+ 'kuielab_b_vocals.onnx',
115
+ 'kuielab_b_other.onnx',
116
+ 'kuielab_b_bass.onnx',
117
+ 'kuielab_b_drums.onnx',
118
+ ]
119
+
120
+ #========================#
121
+ # VR-ARCH Models #
122
+ #========================#
123
+ vrarch_models = [
124
+ '1_HP-UVR.pth',
125
+ '2_HP-UVR.pth',
126
+ '3_HP-Vocal-UVR.pth',
127
+ '4_HP-Vocal-UVR.pth',
128
+ '5_HP-Karaoke-UVR.pth',
129
+ '6_HP-Karaoke-UVR.pth',
130
+ '7_HP2-UVR.pth',
131
+ '8_HP2-UVR.pth',
132
+ '9_HP2-UVR.pth',
133
+ '10_SP-UVR-2B-32000-1.pth',
134
+ '11_SP-UVR-2B-32000-2.pth',
135
+ '12_SP-UVR-3B-44100.pth',
136
+ '13_SP-UVR-4B-44100-1.pth',
137
+ '14_SP-UVR-4B-44100-2.pth',
138
+ '15_SP-UVR-MID-44100-1.pth',
139
+ '16_SP-UVR-MID-44100-2.pth',
140
+ '17_HP-Wind_Inst-UVR.pth',
141
+ 'UVR-De-Echo-Aggressive.pth',
142
+ 'UVR-De-Echo-Normal.pth',
143
+ 'UVR-DeEcho-DeReverb.pth',
144
+ 'UVR-De-Reverb-aufr33-jarredou.pth',
145
+ 'UVR-DeNoise-Lite.pth',
146
+ 'UVR-DeNoise.pth',
147
+ 'UVR-BVE-4B_SN-44100-1.pth',
148
+ 'MGM_HIGHEND_v4.pth',
149
+ 'MGM_LOWEND_A_v4.pth',
150
+ 'MGM_LOWEND_B_v4.pth',
151
+ 'MGM_MAIN_v4.pth',
152
+ ]
153
+
154
+ #=======================#
155
+ # DEMUCS Models #
156
+ #=======================#
157
+ demucs_models = [
158
+ 'htdemucs_ft.yaml',
159
+ 'htdemucs_6s.yaml',
160
+ 'htdemucs.yaml',
161
+ 'hdemucs_mmi.yaml',
162
+ ]
163
+
164
+ output_format = [
165
+ 'wav',
166
+ 'flac',
167
+ 'mp3',
168
+ 'ogg',
169
+ 'opus',
170
+ 'm4a',
171
+ 'aiff',
172
+ 'ac3'
173
+ ]
174
+
175
+ found_files = []
176
+ logs = []
177
+ out_dir = "./outputs"
178
+ models_dir = "./models"
179
+ extensions = (".wav", ".flac", ".mp3", ".ogg", ".opus", ".m4a", ".aiff", ".ac3")
180
+
181
+ def download_audio(url, output_dir="ytdl"):
182
+
183
+ os.makedirs(output_dir, exist_ok=True)
184
+
185
+ ydl_opts = {
186
+ 'format': 'bestaudio/best',
187
+ 'postprocessors': [{
188
+ 'key': 'FFmpegExtractAudio',
189
+ 'preferredcodec': 'wav',
190
+ 'preferredquality': '32',
191
+ }],
192
+ 'outtmpl': os.path.join(output_dir, '%(title)s.%(ext)s'),
193
+ 'postprocessor_args': [
194
+ '-acodec', 'pcm_f32le'
195
+ ],
196
+ }
197
+
198
+ try:
199
+ with yt_dlp.YoutubeDL(ydl_opts) as ydl:
200
+ info = ydl.extract_info(url, download=False)
201
+ video_title = info['title']
202
+
203
+ ydl.download([url])
204
+
205
+ file_path = os.path.join(output_dir, f"{video_title}.wav")
206
+
207
+ if os.path.exists(file_path):
208
+ return os.path.abspath(file_path)
209
+ else:
210
+ raise Exception("Something went wrong")
211
+
212
+ except Exception as e:
213
+ raise Exception(f"Error extracting audio with yt-dlp: {str(e)}")
214
+
215
+ def leaderboard(list_filter):
216
+ try:
217
+ result = subprocess.run(
218
+ [separator_location, "-l", f"--list_filter={list_filter}"],
219
+ capture_output=True,
220
+ text=True,
221
+ )
222
+ if result.returncode != 0:
223
+ return f"Error: {result.stderr}"
224
+
225
+ return "<table border='1'>" + "".join(
226
+ f"<tr style='{'font-weight: bold; font-size: 1.2em;' if i == 0 else ''}'>" +
227
+ "".join(f"<td>{cell}</td>" for cell in re.split(r"\s{2,}", line.strip())) +
228
+ "</tr>"
229
+ for i, line in enumerate(re.findall(r"^(?!-+)(.+)$", result.stdout.strip(), re.MULTILINE))
230
+ ) + "</table>"
231
+
232
+ except Exception as e:
233
+ return f"Error: {e}"
234
+
235
+ @spaces.GPU(duration=60)
236
+ def roformer_separator(audio, model_key, out_format, segment_size, override_seg_size, overlap, batch_size, norm_thresh, amp_thresh, single_stem, progress=gr.Progress(track_tqdm=True)):
237
+ base_name = os.path.splitext(os.path.basename(audio))[0]
238
+ roformer_model = roformer_models[model_key]
239
+ try:
240
+ separator = Separator(
241
+ log_level=logging.WARNING,
242
+ model_file_dir=models_dir,
243
+ output_dir=out_dir,
244
+ output_format=out_format,
245
+ use_autocast=use_autocast,
246
+ normalization_threshold=norm_thresh,
247
+ amplification_threshold=amp_thresh,
248
+ output_single_stem=single_stem,
249
+ mdxc_params={
250
+ "segment_size": segment_size,
251
+ "override_model_segment_size": override_seg_size,
252
+ "batch_size": batch_size,
253
+ "overlap": overlap,
254
+ }
255
+ )
256
+
257
+ progress(0.2, desc="Loading model...")
258
+ separator.load_model(model_filename=roformer_model)
259
+
260
+ progress(0.7, desc="Separating audio...")
261
+ separation = separator.separate(audio)
262
+
263
+ stems = [os.path.join(out_dir, file_name) for file_name in separation]
264
+
265
+ if single_stem.strip():
266
+ return stems[0], None
267
+
268
+ return stems[0], stems[1]
269
+
270
+ except Exception as e:
271
+ raise RuntimeError(f"Roformer separation failed: {e}") from e
272
+
273
+ @spaces.GPU(duration=60)
274
+ def mdxc_separator(audio, model, out_format, segment_size, override_seg_size, overlap, batch_size, norm_thresh, amp_thresh, single_stem, progress=gr.Progress(track_tqdm=True)):
275
+ base_name = os.path.splitext(os.path.basename(audio))[0]
276
+ try:
277
+ separator = Separator(
278
+ log_level=logging.WARNING,
279
+ model_file_dir=models_dir,
280
+ output_dir=out_dir,
281
+ output_format=out_format,
282
+ use_autocast=use_autocast,
283
+ normalization_threshold=norm_thresh,
284
+ amplification_threshold=amp_thresh,
285
+ output_single_stem=single_stem,
286
+ mdxc_params={
287
+ "segment_size": segment_size,
288
+ "override_model_segment_size": override_seg_size,
289
+ "batch_size": batch_size,
290
+ "overlap": overlap,
291
+ }
292
+ )
293
+
294
+ progress(0.2, desc="Loading model...")
295
+ separator.load_model(model_filename=model)
296
+
297
+ progress(0.7, desc="Separating audio...")
298
+ separation = separator.separate(audio)
299
+
300
+ stems = [os.path.join(out_dir, file_name) for file_name in separation]
301
+
302
+ if single_stem.strip():
303
+ return stems[0], None
304
+
305
+ return stems[0], stems[1]
306
+
307
+ except Exception as e:
308
+ raise RuntimeError(f"MDX23C separation failed: {e}") from e
309
+
310
+ @spaces.GPU(duration=60)
311
+ def mdxnet_separator(audio, model, out_format, hop_length, segment_size, denoise, overlap, batch_size, norm_thresh, amp_thresh, single_stem, progress=gr.Progress(track_tqdm=True)):
312
+ base_name = os.path.splitext(os.path.basename(audio))[0]
313
+ try:
314
+ separator = Separator(
315
+ log_level=logging.WARNING,
316
+ model_file_dir=models_dir,
317
+ output_dir=out_dir,
318
+ output_format=out_format,
319
+ use_autocast=use_autocast,
320
+ normalization_threshold=norm_thresh,
321
+ amplification_threshold=amp_thresh,
322
+ output_single_stem=single_stem,
323
+ mdx_params={
324
+ "hop_length": hop_length,
325
+ "segment_size": segment_size,
326
+ "overlap": overlap,
327
+ "batch_size": batch_size,
328
+ "enable_denoise": denoise,
329
+ }
330
+ )
331
+
332
+ progress(0.2, desc="Loading model...")
333
+ separator.load_model(model_filename=model)
334
+
335
+ progress(0.7, desc="Separating audio...")
336
+ separation = separator.separate(audio)
337
+
338
+ stems = [os.path.join(out_dir, file_name) for file_name in separation]
339
+
340
+ if single_stem.strip():
341
+ return stems[0], None
342
+
343
+ return stems[0], stems[1]
344
+
345
+ except Exception as e:
346
+ raise RuntimeError(f"MDX-NET separation failed: {e}") from e
347
+
348
+ @spaces.GPU(duration=60)
349
+ def vrarch_separator(audio, model, out_format, window_size, aggression, tta, post_process, post_process_threshold, high_end_process, batch_size, norm_thresh, amp_thresh, single_stem, progress=gr.Progress(track_tqdm=True)):
350
+ base_name = os.path.splitext(os.path.basename(audio))[0]
351
+ try:
352
+ separator = Separator(
353
+ log_level=logging.WARNING,
354
+ model_file_dir=models_dir,
355
+ output_dir=out_dir,
356
+ output_format=out_format,
357
+ use_autocast=use_autocast,
358
+ normalization_threshold=norm_thresh,
359
+ amplification_threshold=amp_thresh,
360
+ output_single_stem=single_stem,
361
+ vr_params={
362
+ "batch_size": batch_size,
363
+ "window_size": window_size,
364
+ "aggression": aggression,
365
+ "enable_tta": tta,
366
+ "enable_post_process": post_process,
367
+ "post_process_threshold": post_process_threshold,
368
+ "high_end_process": high_end_process,
369
+ }
370
+ )
371
+
372
+ progress(0.2, desc="Loading model...")
373
+ separator.load_model(model_filename=model)
374
+
375
+ progress(0.7, desc="Separating audio...")
376
+ separation = separator.separate(audio)
377
+
378
+ stems = [os.path.join(out_dir, file_name) for file_name in separation]
379
+
380
+ if single_stem.strip():
381
+ return stems[0], None
382
+
383
+ return stems[0], stems[1]
384
+
385
+ except Exception as e:
386
+ raise RuntimeError(f"VR ARCH separation failed: {e}") from e
387
+
388
+ @spaces.GPU(duration=60)
389
+ def demucs_separator(audio, model, out_format, shifts, segment_size, segments_enabled, overlap, batch_size, norm_thresh, amp_thresh, progress=gr.Progress(track_tqdm=True)):
390
+ base_name = os.path.splitext(os.path.basename(audio))[0]
391
+ try:
392
+ separator = Separator(
393
+ log_level=logging.WARNING,
394
+ model_file_dir=models_dir,
395
+ output_dir=out_dir,
396
+ output_format=out_format,
397
+ use_autocast=use_autocast,
398
+ normalization_threshold=norm_thresh,
399
+ amplification_threshold=amp_thresh,
400
+ demucs_params={
401
+ "batch_size": batch_size,
402
+ "segment_size": segment_size,
403
+ "shifts": shifts,
404
+ "overlap": overlap,
405
+ "segments_enabled": segments_enabled,
406
+ }
407
+ )
408
+
409
+ progress(0.2, desc="Loading model...")
410
+ separator.load_model(model_filename=model)
411
+
412
+ progress(0.7, desc="Separating audio...")
413
+ separation = separator.separate(audio)
414
+
415
+ stems = [os.path.join(out_dir, file_name) for file_name in separation]
416
+
417
+ if model == "htdemucs_6s.yaml":
418
+ return stems[0], stems[1], stems[2], stems[3], stems[4], stems[5]
419
+ else:
420
+ return stems[0], stems[1], stems[2], stems[3], None, None
421
+
422
+ except Exception as e:
423
+ raise RuntimeError(f"Demucs separation failed: {e}") from e
424
+
425
+ def update_stems(model):
426
+ if model == "htdemucs_6s.yaml":
427
+ return gr.update(visible=True)
428
+ else:
429
+ return gr.update(visible=False)
430
+
431
+ @spaces.GPU(duration=60)
432
+ def roformer_batch(path_input, path_output, model_key, out_format, segment_size, override_seg_size, overlap, batch_size, norm_thresh, amp_thresh, single_stem):
433
+ found_files.clear()
434
+ logs.clear()
435
+ roformer_model = roformer_models[model_key]
436
+
437
+ for audio_files in os.listdir(path_input):
438
+ if audio_files.endswith(extensions):
439
+ found_files.append(audio_files)
440
+ total_files = len(found_files)
441
+
442
+ if total_files == 0:
443
+ logs.append("No valid audio files.")
444
+ yield "\n".join(logs)
445
+ else:
446
+ logs.append(f"{total_files} audio files found")
447
+ found_files.sort()
448
+
449
+ for audio_files in found_files:
450
+ file_path = os.path.join(path_input, audio_files)
451
+ base_name = os.path.splitext(os.path.basename(file_path))[0]
452
+ try:
453
+ separator = Separator(
454
+ log_level=logging.WARNING,
455
+ model_file_dir=models_dir,
456
+ output_dir=path_output,
457
+ output_format=out_format,
458
+ use_autocast=use_autocast,
459
+ normalization_threshold=norm_thresh,
460
+ amplification_threshold=amp_thresh,
461
+ output_single_stem=single_stem,
462
+ mdxc_params={
463
+ "segment_size": segment_size,
464
+ "override_model_segment_size": override_seg_size,
465
+ "batch_size": batch_size,
466
+ "overlap": overlap,
467
+ }
468
+ )
469
+
470
+ logs.append("Loading model...")
471
+ yield "\n".join(logs)
472
+ separator.load_model(model_filename=roformer_model)
473
+
474
+ logs.append(f"Separating file: {audio_files}")
475
+ yield "\n".join(logs)
476
+ separator.separate(file_path)
477
+ logs.append(f"File: {audio_files} separated!")
478
+ yield "\n".join(logs)
479
+ except Exception as e:
480
+ raise RuntimeError(f"Roformer batch separation failed: {e}") from e
481
+
482
+ @spaces.GPU(duration=60)
483
+ def mdx23c_batch(path_input, path_output, model, out_format, segment_size, override_seg_size, overlap, batch_size, norm_thresh, amp_thresh, single_stem):
484
+ found_files.clear()
485
+ logs.clear()
486
+
487
+ for audio_files in os.listdir(path_input):
488
+ if audio_files.endswith(extensions):
489
+ found_files.append(audio_files)
490
+ total_files = len(found_files)
491
+
492
+ if total_files == 0:
493
+ logs.append("No valid audio files.")
494
+ yield "\n".join(logs)
495
+ else:
496
+ logs.append(f"{total_files} audio files found")
497
+ found_files.sort()
498
+
499
+ for audio_files in found_files:
500
+ file_path = os.path.join(path_input, audio_files)
501
+ base_name = os.path.splitext(os.path.basename(file_path))[0]
502
+ try:
503
+ separator = Separator(
504
+ log_level=logging.WARNING,
505
+ model_file_dir=models_dir,
506
+ output_dir=path_output,
507
+ output_format=out_format,
508
+ use_autocast=use_autocast,
509
+ normalization_threshold=norm_thresh,
510
+ amplification_threshold=amp_thresh,
511
+ output_single_stem=single_stem,
512
+ mdxc_params={
513
+ "segment_size": segment_size,
514
+ "override_model_segment_size": override_seg_size,
515
+ "batch_size": batch_size,
516
+ "overlap": overlap,
517
+ }
518
+ )
519
+
520
+ logs.append("Loading model...")
521
+ yield "\n".join(logs)
522
+ separator.load_model(model_filename=model)
523
+
524
+ logs.append(f"Separating file: {audio_files}")
525
+ yield "\n".join(logs)
526
+ separator.separate(file_path)
527
+ logs.append(f"File: {audio_files} separated!")
528
+ yield "\n".join(logs)
529
+ except Exception as e:
530
+ raise RuntimeError(f"Roformer batch separation failed: {e}") from e
531
+
532
+ @spaces.GPU(duration=60)
533
+ def mdxnet_batch(path_input, path_output, model, out_format, hop_length, segment_size, denoise, overlap, batch_size, norm_thresh, amp_thresh, single_stem):
534
+ found_files.clear()
535
+ logs.clear()
536
+
537
+ for audio_files in os.listdir(path_input):
538
+ if audio_files.endswith(extensions):
539
+ found_files.append(audio_files)
540
+ total_files = len(found_files)
541
+
542
+ if total_files == 0:
543
+ logs.append("No valid audio files.")
544
+ yield "\n".join(logs)
545
+ else:
546
+ logs.append(f"{total_files} audio files found")
547
+ found_files.sort()
548
+
549
+ for audio_files in found_files:
550
+ file_path = os.path.join(path_input, audio_files)
551
+ base_name = os.path.splitext(os.path.basename(file_path))[0]
552
+ try:
553
+ separator = Separator(
554
+ log_level=logging.WARNING,
555
+ model_file_dir=models_dir,
556
+ output_dir=path_output,
557
+ output_format=out_format,
558
+ use_autocast=use_autocast,
559
+ normalization_threshold=norm_thresh,
560
+ amplification_threshold=amp_thresh,
561
+ output_single_stem=single_stem,
562
+ mdx_params={
563
+ "hop_length": hop_length,
564
+ "segment_size": segment_size,
565
+ "overlap": overlap,
566
+ "batch_size": batch_size,
567
+ "enable_denoise": denoise,
568
+ }
569
+ )
570
+
571
+ logs.append("Loading model...")
572
+ yield "\n".join(logs)
573
+ separator.load_model(model_filename=model)
574
+
575
+ logs.append(f"Separating file: {audio_files}")
576
+ yield "\n".join(logs)
577
+ separator.separate(file_path)
578
+ logs.append(f"File: {audio_files} separated!")
579
+ yield "\n".join(logs)
580
+ except Exception as e:
581
+ raise RuntimeError(f"Roformer batch separation failed: {e}") from e
582
+
583
+ @spaces.GPU(duration=60)
584
+ def vrarch_batch(path_input, path_output, model, out_format, window_size, aggression, tta, post_process, post_process_threshold, high_end_process, batch_size, norm_thresh, amp_thresh, single_stem):
585
+ found_files.clear()
586
+ logs.clear()
587
+
588
+ for audio_files in os.listdir(path_input):
589
+ if audio_files.endswith(extensions):
590
+ found_files.append(audio_files)
591
+ total_files = len(found_files)
592
+
593
+ if total_files == 0:
594
+ logs.append("No valid audio files.")
595
+ yield "\n".join(logs)
596
+ else:
597
+ logs.append(f"{total_files} audio files found")
598
+ found_files.sort()
599
+
600
+ for audio_files in found_files:
601
+ file_path = os.path.join(path_input, audio_files)
602
+ base_name = os.path.splitext(os.path.basename(file_path))[0]
603
+ try:
604
+ separator = Separator(
605
+ log_level=logging.WARNING,
606
+ model_file_dir=models_dir,
607
+ output_dir=path_output,
608
+ output_format=out_format,
609
+ use_autocast=use_autocast,
610
+ normalization_threshold=norm_thresh,
611
+ amplification_threshold=amp_thresh,
612
+ output_single_stem=single_stem,
613
+ vr_params={
614
+ "batch_size": batch_size,
615
+ "window_size": window_size,
616
+ "aggression": aggression,
617
+ "enable_tta": tta,
618
+ "enable_post_process": post_process,
619
+ "post_process_threshold": post_process_threshold,
620
+ "high_end_process": high_end_process,
621
+ }
622
+ )
623
+
624
+ logs.append("Loading model...")
625
+ yield "\n".join(logs)
626
+ separator.load_model(model_filename=model)
627
+
628
+ logs.append(f"Separating file: {audio_files}")
629
+ yield "\n".join(logs)
630
+ separator.separate(file_path)
631
+ logs.append(f"File: {audio_files} separated!")
632
+ yield "\n".join(logs)
633
+ except Exception as e:
634
+ raise RuntimeError(f"Roformer batch separation failed: {e}") from e
635
+
636
+ @spaces.GPU(duration=60)
637
+ def demucs_batch(path_input, path_output, model, out_format, shifts, segment_size, segments_enabled, overlap, batch_size, norm_thresh, amp_thresh):
638
+ found_files.clear()
639
+ logs.clear()
640
+
641
+ for audio_files in os.listdir(path_input):
642
+ if audio_files.endswith(extensions):
643
+ found_files.append(audio_files)
644
+ total_files = len(found_files)
645
+
646
+ if total_files == 0:
647
+ logs.append("No valid audio files.")
648
+ yield "\n".join(logs)
649
+ else:
650
+ logs.append(f"{total_files} audio files found")
651
+ found_files.sort()
652
+
653
+ for audio_files in found_files:
654
+ file_path = os.path.join(path_input, audio_files)
655
+ try:
656
+ separator = Separator(
657
+ log_level=logging.WARNING,
658
+ model_file_dir=models_dir,
659
+ output_dir=path_output,
660
+ output_format=out_format,
661
+ use_autocast=use_autocast,
662
+ normalization_threshold=norm_thresh,
663
+ amplification_threshold=amp_thresh,
664
+ demucs_params={
665
+ "batch_size": batch_size,
666
+ "segment_size": segment_size,
667
+ "shifts": shifts,
668
+ "overlap": overlap,
669
+ "segments_enabled": segments_enabled,
670
+ }
671
+ )
672
+
673
+ logs.append("Loading model...")
674
+ yield "\n".join(logs)
675
+ separator.load_model(model_filename=model)
676
+
677
+ logs.append(f"Separating file: {audio_files}")
678
+ yield "\n".join(logs)
679
+ separator.separate(file_path)
680
+ logs.append(f"File: {audio_files} separated!")
681
+ yield "\n".join(logs)
682
+ except Exception as e:
683
+ raise RuntimeError(f"Roformer batch separation failed: {e}") from e
684
+
685
+ with gr.Blocks(theme = loadThemes.load_json() or "NoCrypt/miku", title = "🎵 UVR5 UI 🎵") as app:
686
+ gr.Markdown("<h1> 🎵 UVR5 UI 🎵 </h1>")
687
+ gr.Markdown(i18n("If you liked this HF Space you can give me a ❤️"))
688
+ gr.Markdown(i18n("Try UVR5 UI using Colab [here](https://colab.research.google.com/github/Eddycrack864/UVR5-UI/blob/main/UVR_UI.ipynb)"))
689
+ with gr.Tabs():
690
+ with gr.TabItem("BS/Mel Roformer"):
691
+ with gr.Row():
692
+ roformer_model = gr.Dropdown(
693
+ label = i18n("Select the model"),
694
+ choices = list(roformer_models.keys()),
695
+ value = lambda : None,
696
+ interactive = True
697
+ )
698
+ roformer_output_format = gr.Dropdown(
699
+ label = i18n("Select the output format"),
700
+ choices = output_format,
701
+ value = lambda : None,
702
+ interactive = True
703
+ )
704
+ with gr.Accordion(i18n("Advanced settings"), open = False):
705
+ with gr.Group():
706
+ with gr.Row():
707
+ roformer_segment_size = gr.Slider(
708
+ label = i18n("Segment size"),
709
+ info = i18n("Larger consumes more resources, but may give better results"),
710
+ minimum = 32,
711
+ maximum = 4000,
712
+ step = 32,
713
+ value = 256,
714
+ interactive = True
715
+ )
716
+ roformer_override_segment_size = gr.Checkbox(
717
+ label = i18n("Override segment size"),
718
+ info = i18n("Override model default segment size instead of using the model default value"),
719
+ value = False,
720
+ interactive = True
721
+ )
722
+ with gr.Row():
723
+ roformer_overlap = gr.Slider(
724
+ label = i18n("Overlap"),
725
+ info = i18n("Amount of overlap between prediction windows"),
726
+ minimum = 2,
727
+ maximum = 10,
728
+ step = 1,
729
+ value = 8,
730
+ interactive = True
731
+ )
732
+ roformer_batch_size = gr.Slider(
733
+ label = i18n("Batch size"),
734
+ info = i18n("Larger consumes more RAM but may process slightly faster"),
735
+ minimum = 1,
736
+ maximum = 16,
737
+ step = 1,
738
+ value = 1,
739
+ interactive = True
740
+ )
741
+ with gr.Row():
742
+ roformer_normalization_threshold = gr.Slider(
743
+ label = i18n("Normalization threshold"),
744
+ info = i18n("The threshold for audio normalization"),
745
+ minimum = 0.1,
746
+ maximum = 1,
747
+ step = 0.1,
748
+ value = 0.9,
749
+ interactive = True
750
+ )
751
+ roformer_amplification_threshold = gr.Slider(
752
+ label = i18n("Amplification threshold"),
753
+ info = i18n("The threshold for audio amplification"),
754
+ minimum = 0.1,
755
+ maximum = 1,
756
+ step = 0.1,
757
+ value = 0.7,
758
+ interactive = True
759
+ )
760
+ with gr.Row():
761
+ roformer_single_stem = gr.Textbox(
762
+ label = i18n("Output only single stem"),
763
+ placeholder = i18n("Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental"),
764
+ interactive = True
765
+ )
766
+ with gr.Row():
767
+ roformer_audio = gr.Audio(
768
+ label = i18n("Input audio"),
769
+ type = "filepath",
770
+ interactive = True
771
+ )
772
+ with gr.Accordion(i18n("Separation by link"), open = False):
773
+ with gr.Row():
774
+ roformer_link = gr.Textbox(
775
+ label = i18n("Link"),
776
+ placeholder = i18n("Paste the link here"),
777
+ interactive = True
778
+ )
779
+ with gr.Row():
780
+ gr.Markdown(i18n("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)"))
781
+ with gr.Row():
782
+ roformer_download_button = gr.Button(
783
+ i18n("Download!"),
784
+ variant = "primary"
785
+ )
786
+
787
+ roformer_download_button.click(download_audio, [roformer_link], [roformer_audio])
788
+
789
+ with gr.Accordion(i18n("Batch separation"), open = False):
790
+ with gr.Row():
791
+ roformer_input_path = gr.Textbox(
792
+ label = i18n("Input path"),
793
+ placeholder = i18n("Place the input path here"),
794
+ interactive = True
795
+ )
796
+ roformer_output_path = gr.Textbox(
797
+ label = i18n("Output path"),
798
+ placeholder = i18n("Place the output path here"),
799
+ interactive = True
800
+ )
801
+ with gr.Row():
802
+ roformer_bath_button = gr.Button(i18n("Separate!"), variant = "primary")
803
+ with gr.Row():
804
+ roformer_info = gr.Textbox(
805
+ label = i18n("Output information"),
806
+ interactive = False
807
+ )
808
+
809
+ roformer_bath_button.click(roformer_batch, [roformer_input_path, roformer_output_path, roformer_model, roformer_output_format, roformer_segment_size, roformer_override_segment_size, roformer_overlap, roformer_batch_size, roformer_normalization_threshold, roformer_amplification_threshold, roformer_single_stem], [roformer_info])
810
+
811
+ with gr.Row():
812
+ roformer_button = gr.Button(i18n("Separate!"), variant = "primary")
813
+ with gr.Row():
814
+ roformer_stem1 = gr.Audio(
815
+ show_download_button = True,
816
+ interactive = False,
817
+ label = i18n("Stem 1"),
818
+ type = "filepath"
819
+ )
820
+ roformer_stem2 = gr.Audio(
821
+ show_download_button = True,
822
+ interactive = False,
823
+ label = i18n("Stem 2"),
824
+ type = "filepath"
825
+ )
826
+
827
+ roformer_button.click(roformer_separator, [roformer_audio, roformer_model, roformer_output_format, roformer_segment_size, roformer_override_segment_size, roformer_overlap, roformer_batch_size, roformer_normalization_threshold, roformer_amplification_threshold, roformer_single_stem], [roformer_stem1, roformer_stem2])
828
+
829
+ with gr.TabItem("MDX23C"):
830
+ with gr.Row():
831
+ mdx23c_model = gr.Dropdown(
832
+ label = i18n("Select the model"),
833
+ choices = mdx23c_models,
834
+ value = lambda : None,
835
+ interactive = True
836
+ )
837
+ mdx23c_output_format = gr.Dropdown(
838
+ label = i18n("Select the output format"),
839
+ choices = output_format,
840
+ value = lambda : None,
841
+ interactive = True
842
+ )
843
+ with gr.Accordion(i18n("Advanced settings"), open = False):
844
+ with gr.Group():
845
+ with gr.Row():
846
+ mdx23c_segment_size = gr.Slider(
847
+ minimum = 32,
848
+ maximum = 4000,
849
+ step = 32,
850
+ label = i18n("Segment size"),
851
+ info = i18n("Larger consumes more resources, but may give better results"),
852
+ value = 256,
853
+ interactive = True
854
+ )
855
+ mdx23c_override_segment_size = gr.Checkbox(
856
+ label = i18n("Override segment size"),
857
+ info = i18n("Override model default segment size instead of using the model default value"),
858
+ value = False,
859
+ interactive = True
860
+ )
861
+ with gr.Row():
862
+ mdx23c_overlap = gr.Slider(
863
+ minimum = 2,
864
+ maximum = 50,
865
+ step = 1,
866
+ label = i18n("Overlap"),
867
+ info = i18n("Amount of overlap between prediction windows"),
868
+ value = 8,
869
+ interactive = True
870
+ )
871
+ mdx23c_batch_size = gr.Slider(
872
+ label = i18n("Batch size"),
873
+ info = i18n("Larger consumes more RAM but may process slightly faster"),
874
+ minimum = 1,
875
+ maximum = 16,
876
+ step = 1,
877
+ value = 1,
878
+ interactive = True
879
+ )
880
+ with gr.Row():
881
+ mdx23c_normalization_threshold = gr.Slider(
882
+ label = i18n("Normalization threshold"),
883
+ info = i18n("The threshold for audio normalization"),
884
+ minimum = 0.1,
885
+ maximum = 1,
886
+ step = 0.1,
887
+ value = 0.9,
888
+ interactive = True
889
+ )
890
+ mdx23c_amplification_threshold = gr.Slider(
891
+ label = i18n("Amplification threshold"),
892
+ info = i18n("The threshold for audio amplification"),
893
+ minimum = 0.1,
894
+ maximum = 1,
895
+ step = 0.1,
896
+ value = 0.7,
897
+ interactive = True
898
+ )
899
+ with gr.Row():
900
+ mdx23c_single_stem = gr.Textbox(
901
+ label = i18n("Output only single stem"),
902
+ placeholder = i18n("Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental"),
903
+ interactive = True
904
+ )
905
+ with gr.Row():
906
+ mdx23c_audio = gr.Audio(
907
+ label = i18n("Input audio"),
908
+ type = "filepath",
909
+ interactive = True
910
+ )
911
+ with gr.Accordion(i18n("Separation by link"), open = False):
912
+ with gr.Row():
913
+ mdx23c_link = gr.Textbox(
914
+ label = i18n("Link"),
915
+ placeholder = i18n("Paste the link here"),
916
+ interactive = True
917
+ )
918
+ with gr.Row():
919
+ gr.Markdown(i18n("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)"))
920
+ with gr.Row():
921
+ mdx23c_download_button = gr.Button(
922
+ i18n("Download!"),
923
+ variant = "primary"
924
+ )
925
+
926
+ mdx23c_download_button.click(download_audio, [mdx23c_link], [mdx23c_audio])
927
+
928
+ with gr.Accordion(i18n("Batch separation"), open = False):
929
+ with gr.Row():
930
+ mdx23c_input_path = gr.Textbox(
931
+ label = i18n("Input path"),
932
+ placeholder = i18n("Place the input path here"),
933
+ interactive = True
934
+ )
935
+ mdx23c_output_path = gr.Textbox(
936
+ label = i18n("Output path"),
937
+ placeholder = i18n("Place the output path here"),
938
+ interactive = True
939
+ )
940
+ with gr.Row():
941
+ mdx23c_bath_button = gr.Button(i18n("Separate!"), variant = "primary")
942
+ with gr.Row():
943
+ mdx23c_info = gr.Textbox(
944
+ label = i18n("Output information"),
945
+ interactive = False
946
+ )
947
+
948
+ mdx23c_bath_button.click(mdx23c_batch, [mdx23c_input_path, mdx23c_output_path, mdx23c_model, mdx23c_output_format, mdx23c_segment_size, mdx23c_override_segment_size, mdx23c_overlap, mdx23c_batch_size, mdx23c_normalization_threshold, mdx23c_amplification_threshold, mdx23c_single_stem], [mdx23c_info])
949
+
950
+ with gr.Row():
951
+ mdx23c_button = gr.Button(i18n("Separate!"), variant = "primary")
952
+ with gr.Row():
953
+ mdx23c_stem1 = gr.Audio(
954
+ show_download_button = True,
955
+ interactive = False,
956
+ label = i18n("Stem 1"),
957
+ type = "filepath"
958
+ )
959
+ mdx23c_stem2 = gr.Audio(
960
+ show_download_button = True,
961
+ interactive = False,
962
+ label = i18n("Stem 2"),
963
+ type = "filepath"
964
+ )
965
+
966
+ mdx23c_button.click(mdxc_separator, [mdx23c_audio, mdx23c_model, mdx23c_output_format, mdx23c_segment_size, mdx23c_override_segment_size, mdx23c_overlap, mdx23c_batch_size, mdx23c_normalization_threshold, mdx23c_amplification_threshold, mdx23c_single_stem], [mdx23c_stem1, mdx23c_stem2])
967
+
968
+ with gr.TabItem("MDX-NET"):
969
+ with gr.Row():
970
+ mdxnet_model = gr.Dropdown(
971
+ label = i18n("Select the model"),
972
+ choices = mdxnet_models,
973
+ value = lambda : None,
974
+ interactive = True
975
+ )
976
+ mdxnet_output_format = gr.Dropdown(
977
+ label = i18n("Select the output format"),
978
+ choices = output_format,
979
+ value = lambda : None,
980
+ interactive = True
981
+ )
982
+ with gr.Accordion(i18n("Advanced settings"), open = False):
983
+ with gr.Group():
984
+ with gr.Row():
985
+ mdxnet_hop_length = gr.Slider(
986
+ label = i18n("Hop length"),
987
+ info = i18n("Usually called stride in neural networks; only change if you know what you're doing"),
988
+ minimum = 32,
989
+ maximum = 2048,
990
+ step = 32,
991
+ value = 1024,
992
+ interactive = True
993
+ )
994
+ mdxnet_segment_size = gr.Slider(
995
+ minimum = 32,
996
+ maximum = 4000,
997
+ step = 32,
998
+ label = i18n("Segment size"),
999
+ info = i18n("Larger consumes more resources, but may give better results"),
1000
+ value = 256,
1001
+ interactive = True
1002
+ )
1003
+ mdxnet_denoise = gr.Checkbox(
1004
+ label = i18n("Denoise"),
1005
+ info = i18n("Enable denoising during separation"),
1006
+ value = True,
1007
+ interactive = True
1008
+ )
1009
+ with gr.Row():
1010
+ mdxnet_overlap = gr.Slider(
1011
+ label = i18n("Overlap"),
1012
+ info = i18n("Amount of overlap between prediction windows"),
1013
+ minimum = 0.001,
1014
+ maximum = 0.999,
1015
+ step = 0.001,
1016
+ value = 0.25,
1017
+ interactive = True
1018
+ )
1019
+ mdxnet_batch_size = gr.Slider(
1020
+ label = i18n("Batch size"),
1021
+ info = i18n("Larger consumes more RAM but may process slightly faster"),
1022
+ minimum = 1,
1023
+ maximum = 16,
1024
+ step = 1,
1025
+ value = 1,
1026
+ interactive = True
1027
+ )
1028
+ with gr.Row():
1029
+ mdxnet_normalization_threshold = gr.Slider(
1030
+ label = i18n("Normalization threshold"),
1031
+ info = i18n("The threshold for audio normalization"),
1032
+ minimum = 0.1,
1033
+ maximum = 1,
1034
+ step = 0.1,
1035
+ value = 0.9,
1036
+ interactive = True
1037
+ )
1038
+ mdxnet_amplification_threshold = gr.Slider(
1039
+ label = i18n("Amplification threshold"),
1040
+ info = i18n("The threshold for audio amplification"),
1041
+ minimum = 0.1,
1042
+ maximum = 1,
1043
+ step = 0.1,
1044
+ value = 0.7,
1045
+ interactive = True
1046
+ )
1047
+ with gr.Row():
1048
+ mdxnet_single_stem = gr.Textbox(
1049
+ label = i18n("Output only single stem"),
1050
+ placeholder = i18n("Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental"),
1051
+ interactive = True
1052
+ )
1053
+ with gr.Row():
1054
+ mdxnet_audio = gr.Audio(
1055
+ label = i18n("Input audio"),
1056
+ type = "filepath",
1057
+ interactive = True
1058
+ )
1059
+ with gr.Accordion(i18n("Separation by link"), open = False):
1060
+ with gr.Row():
1061
+ mdxnet_link = gr.Textbox(
1062
+ label = i18n("Link"),
1063
+ placeholder = i18n("Paste the link here"),
1064
+ interactive = True
1065
+ )
1066
+ with gr.Row():
1067
+ gr.Markdown(i18n("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)"))
1068
+ with gr.Row():
1069
+ mdxnet_download_button = gr.Button(
1070
+ i18n("Download!"),
1071
+ variant = "primary"
1072
+ )
1073
+
1074
+ mdxnet_download_button.click(download_audio, [mdxnet_link], [mdxnet_audio])
1075
+
1076
+ with gr.Accordion(i18n("Batch separation"), open = False):
1077
+ with gr.Row():
1078
+ mdxnet_input_path = gr.Textbox(
1079
+ label = i18n("Input path"),
1080
+ placeholder = i18n("Place the input path here"),
1081
+ interactive = True
1082
+ )
1083
+ mdxnet_output_path = gr.Textbox(
1084
+ label = i18n("Output path"),
1085
+ placeholder = i18n("Place the output path here"),
1086
+ interactive = True
1087
+ )
1088
+ with gr.Row():
1089
+ mdxnet_bath_button = gr.Button(i18n("Separate!"), variant = "primary")
1090
+ with gr.Row():
1091
+ mdxnet_info = gr.Textbox(
1092
+ label = i18n("Output information"),
1093
+ interactive = False
1094
+ )
1095
+
1096
+ mdxnet_bath_button.click(mdxnet_batch, [mdxnet_input_path, mdxnet_output_path, mdxnet_model, mdxnet_output_format, mdxnet_hop_length, mdxnet_segment_size, mdxnet_denoise, mdxnet_overlap, mdxnet_batch_size, mdxnet_normalization_threshold, mdxnet_amplification_threshold, mdxnet_single_stem], [mdxnet_info])
1097
+
1098
+ with gr.Row():
1099
+ mdxnet_button = gr.Button(i18n("Separate!"), variant = "primary")
1100
+ with gr.Row():
1101
+ mdxnet_stem1 = gr.Audio(
1102
+ show_download_button = True,
1103
+ interactive = False,
1104
+ label = i18n("Stem 1"),
1105
+ type = "filepath"
1106
+ )
1107
+ mdxnet_stem2 = gr.Audio(
1108
+ show_download_button = True,
1109
+ interactive = False,
1110
+ label = i18n("Stem 2"),
1111
+ type = "filepath"
1112
+ )
1113
+
1114
+ mdxnet_button.click(mdxnet_separator, [mdxnet_audio, mdxnet_model, mdxnet_output_format, mdxnet_hop_length, mdxnet_segment_size, mdxnet_denoise, mdxnet_overlap, mdxnet_batch_size, mdxnet_normalization_threshold, mdxnet_amplification_threshold, mdxnet_single_stem], [mdxnet_stem1, mdxnet_stem2])
1115
+
1116
+ with gr.TabItem("VR ARCH"):
1117
+ with gr.Row():
1118
+ vrarch_model = gr.Dropdown(
1119
+ label = i18n("Select the model"),
1120
+ choices = vrarch_models,
1121
+ value = lambda : None,
1122
+ interactive = True
1123
+ )
1124
+ vrarch_output_format = gr.Dropdown(
1125
+ label = i18n("Select the output format"),
1126
+ choices = output_format,
1127
+ value = lambda : None,
1128
+ interactive = True
1129
+ )
1130
+ with gr.Accordion(i18n("Advanced settings"), open = False):
1131
+ with gr.Group():
1132
+ with gr.Row():
1133
+ vrarch_window_size = gr.Slider(
1134
+ label = i18n("Window size"),
1135
+ info = i18n("Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality"),
1136
+ minimum=320,
1137
+ maximum=1024,
1138
+ step=32,
1139
+ value = 512,
1140
+ interactive = True
1141
+ )
1142
+ vrarch_agression = gr.Slider(
1143
+ minimum = 1,
1144
+ maximum = 50,
1145
+ step = 1,
1146
+ label = i18n("Agression"),
1147
+ info = i18n("Intensity of primary stem extraction"),
1148
+ value = 5,
1149
+ interactive = True
1150
+ )
1151
+ vrarch_tta = gr.Checkbox(
1152
+ label = i18n("TTA"),
1153
+ info = i18n("Enable Test-Time-Augmentation; slow but improves quality"),
1154
+ value = True,
1155
+ visible = True,
1156
+ interactive = True
1157
+ )
1158
+ with gr.Row():
1159
+ vrarch_post_process = gr.Checkbox(
1160
+ label = i18n("Post process"),
1161
+ info = i18n("Identify leftover artifacts within vocal output; may improve separation for some songs"),
1162
+ value = False,
1163
+ visible = True,
1164
+ interactive = True
1165
+ )
1166
+ vrarch_post_process_threshold = gr.Slider(
1167
+ label = i18n("Post process threshold"),
1168
+ info = i18n("Threshold for post-processing"),
1169
+ minimum = 0.1,
1170
+ maximum = 0.3,
1171
+ step = 0.1,
1172
+ value = 0.2,
1173
+ interactive = True
1174
+ )
1175
+ with gr.Row():
1176
+ vrarch_high_end_process = gr.Checkbox(
1177
+ label = i18n("High end process"),
1178
+ info = i18n("Mirror the missing frequency range of the output"),
1179
+ value = False,
1180
+ visible = True,
1181
+ interactive = True,
1182
+ )
1183
+ vrarch_batch_size = gr.Slider(
1184
+ label = i18n("Batch size"),
1185
+ info = i18n("Larger consumes more RAM but may process slightly faster"),
1186
+ minimum = 1,
1187
+ maximum = 16,
1188
+ step = 1,
1189
+ value = 1,
1190
+ interactive = True
1191
+ )
1192
+ with gr.Row():
1193
+ vrarch_normalization_threshold = gr.Slider(
1194
+ label = i18n("Normalization threshold"),
1195
+ info = i18n("The threshold for audio normalization"),
1196
+ minimum = 0.1,
1197
+ maximum = 1,
1198
+ step = 0.1,
1199
+ value = 0.9,
1200
+ interactive = True
1201
+ )
1202
+ vrarch_amplification_threshold = gr.Slider(
1203
+ label = i18n("Amplification threshold"),
1204
+ info = i18n("The threshold for audio amplification"),
1205
+ minimum = 0.1,
1206
+ maximum = 1,
1207
+ step = 0.1,
1208
+ value = 0.7,
1209
+ interactive = True
1210
+ )
1211
+ with gr.Row():
1212
+ vrarch_single_stem = gr.Textbox(
1213
+ label = i18n("Output only single stem"),
1214
+ placeholder = i18n("Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental"),
1215
+ interactive = True
1216
+ )
1217
+ with gr.Row():
1218
+ vrarch_audio = gr.Audio(
1219
+ label = i18n("Input audio"),
1220
+ type = "filepath",
1221
+ interactive = True
1222
+ )
1223
+ with gr.Accordion(i18n("Separation by link"), open = False):
1224
+ with gr.Row():
1225
+ vrarch_link = gr.Textbox(
1226
+ label = i18n("Link"),
1227
+ placeholder = i18n("Paste the link here"),
1228
+ interactive = True
1229
+ )
1230
+ with gr.Row():
1231
+ gr.Markdown(i18n("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)"))
1232
+ with gr.Row():
1233
+ vrarch_download_button = gr.Button(
1234
+ i18n("Download!"),
1235
+ variant = "primary"
1236
+ )
1237
+
1238
+ vrarch_download_button.click(download_audio, [vrarch_link], [vrarch_audio])
1239
+
1240
+ with gr.Accordion(i18n("Batch separation"), open = False):
1241
+ with gr.Row():
1242
+ vrarch_input_path = gr.Textbox(
1243
+ label = i18n("Input path"),
1244
+ placeholder = i18n("Place the input path here"),
1245
+ interactive = True
1246
+ )
1247
+ vrarch_output_path = gr.Textbox(
1248
+ label = i18n("Output path"),
1249
+ placeholder = i18n("Place the output path here"),
1250
+ interactive = True
1251
+ )
1252
+ with gr.Row():
1253
+ vrarch_bath_button = gr.Button(i18n("Separate!"), variant = "primary")
1254
+ with gr.Row():
1255
+ vrarch_info = gr.Textbox(
1256
+ label = i18n("Output information"),
1257
+ interactive = False
1258
+ )
1259
+
1260
+ vrarch_bath_button.click(vrarch_batch, [vrarch_input_path, vrarch_output_path, vrarch_model, vrarch_output_format, vrarch_window_size, vrarch_agression, vrarch_tta, vrarch_post_process, vrarch_post_process_threshold, vrarch_high_end_process, vrarch_batch_size, vrarch_normalization_threshold, vrarch_amplification_threshold, vrarch_single_stem], [vrarch_info])
1261
+
1262
+ with gr.Row():
1263
+ vrarch_button = gr.Button(i18n("Separate!"), variant = "primary")
1264
+ with gr.Row():
1265
+ vrarch_stem1 = gr.Audio(
1266
+ show_download_button = True,
1267
+ interactive = False,
1268
+ type = "filepath",
1269
+ label = i18n("Stem 1")
1270
+ )
1271
+ vrarch_stem2 = gr.Audio(
1272
+ show_download_button = True,
1273
+ interactive = False,
1274
+ type = "filepath",
1275
+ label = i18n("Stem 2")
1276
+ )
1277
+
1278
+ vrarch_button.click(vrarch_separator, [vrarch_audio, vrarch_model, vrarch_output_format, vrarch_window_size, vrarch_agression, vrarch_tta, vrarch_post_process, vrarch_post_process_threshold, vrarch_high_end_process, vrarch_batch_size, vrarch_normalization_threshold, vrarch_amplification_threshold, vrarch_single_stem], [vrarch_stem1, vrarch_stem2])
1279
+
1280
+ with gr.TabItem("Demucs"):
1281
+ with gr.Row():
1282
+ demucs_model = gr.Dropdown(
1283
+ label = i18n("Select the model"),
1284
+ choices = demucs_models,
1285
+ value = lambda : None,
1286
+ interactive = True
1287
+ )
1288
+ demucs_output_format = gr.Dropdown(
1289
+ label = i18n("Select the output format"),
1290
+ choices = output_format,
1291
+ value = lambda : None,
1292
+ interactive = True
1293
+ )
1294
+ with gr.Accordion(i18n("Advanced settings"), open = False):
1295
+ with gr.Group():
1296
+ with gr.Row():
1297
+ demucs_shifts = gr.Slider(
1298
+ label = i18n("Shifts"),
1299
+ info = i18n("Number of predictions with random shifts, higher = slower but better quality"),
1300
+ minimum = 1,
1301
+ maximum = 20,
1302
+ step = 1,
1303
+ value = 2,
1304
+ interactive = True
1305
+ )
1306
+ demucs_segment_size = gr.Slider(
1307
+ label = i18n("Segment size"),
1308
+ info = i18n("Size of segments into which the audio is split. Higher = slower but better quality"),
1309
+ minimum = 1,
1310
+ maximum = 100,
1311
+ step = 1,
1312
+ value = 40,
1313
+ interactive = True
1314
+ )
1315
+ demucs_segments_enabled = gr.Checkbox(
1316
+ label = i18n("Segment-wise processing"),
1317
+ info = i18n("Enable segment-wise processing"),
1318
+ value = True,
1319
+ interactive = True
1320
+ )
1321
+ with gr.Row():
1322
+ demucs_overlap = gr.Slider(
1323
+ label = i18n("Overlap"),
1324
+ info = i18n("Overlap between prediction windows. Higher = slower but better quality"),
1325
+ minimum=0.001,
1326
+ maximum=0.999,
1327
+ step=0.001,
1328
+ value = 0.25,
1329
+ interactive = True
1330
+ )
1331
+ demucs_batch_size = gr.Slider(
1332
+ label = i18n("Batch size"),
1333
+ info = i18n("Larger consumes more RAM but may process slightly faster"),
1334
+ minimum = 1,
1335
+ maximum = 16,
1336
+ step = 1,
1337
+ value = 1,
1338
+ interactive = True
1339
+ )
1340
+ with gr.Row():
1341
+ demucs_normalization_threshold = gr.Slider(
1342
+ label = i18n("Normalization threshold"),
1343
+ info = i18n("The threshold for audio normalization"),
1344
+ minimum = 0.1,
1345
+ maximum = 1,
1346
+ step = 0.1,
1347
+ value = 0.9,
1348
+ interactive = True
1349
+ )
1350
+ demucs_amplification_threshold = gr.Slider(
1351
+ label = i18n("Amplification threshold"),
1352
+ info = i18n("The threshold for audio amplification"),
1353
+ minimum = 0.1,
1354
+ maximum = 1,
1355
+ step = 0.1,
1356
+ value = 0.7,
1357
+ interactive = True
1358
+ )
1359
+ with gr.Row():
1360
+ demucs_audio = gr.Audio(
1361
+ label = i18n("Input audio"),
1362
+ type = "filepath",
1363
+ interactive = True
1364
+ )
1365
+ with gr.Accordion(i18n("Separation by link"), open = False):
1366
+ with gr.Row():
1367
+ demucs_link = gr.Textbox(
1368
+ label = i18n("Link"),
1369
+ placeholder = i18n("Paste the link here"),
1370
+ interactive = True
1371
+ )
1372
+ with gr.Row():
1373
+ gr.Markdown(i18n("You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)"))
1374
+ with gr.Row():
1375
+ demucs_download_button = gr.Button(
1376
+ i18n("Download!"),
1377
+ variant = "primary"
1378
+ )
1379
+
1380
+ demucs_download_button.click(download_audio, [demucs_link], [demucs_audio])
1381
+
1382
+ with gr.Accordion(i18n("Batch separation"), open = False):
1383
+ with gr.Row():
1384
+ demucs_input_path = gr.Textbox(
1385
+ label = i18n("Input path"),
1386
+ placeholder = i18n("Place the input path here"),
1387
+ interactive = True
1388
+ )
1389
+ demucs_output_path = gr.Textbox(
1390
+ label = i18n("Output path"),
1391
+ placeholder = i18n("Place the output path here"),
1392
+ interactive = True
1393
+ )
1394
+ with gr.Row():
1395
+ demucs_bath_button = gr.Button(i18n("Separate!"), variant = "primary")
1396
+ with gr.Row():
1397
+ demucs_info = gr.Textbox(
1398
+ label = i18n("Output information"),
1399
+ interactive = False
1400
+ )
1401
+
1402
+ demucs_bath_button.click(demucs_batch, [demucs_input_path, demucs_output_path, demucs_model, demucs_output_format, demucs_shifts, demucs_segment_size, demucs_segments_enabled, demucs_overlap, demucs_batch_size, demucs_normalization_threshold, demucs_amplification_threshold], [demucs_info])
1403
+
1404
+ with gr.Row():
1405
+ demucs_button = gr.Button(i18n("Separate!"), variant = "primary")
1406
+ with gr.Row():
1407
+ demucs_stem1 = gr.Audio(
1408
+ show_download_button = True,
1409
+ interactive = False,
1410
+ type = "filepath",
1411
+ label = i18n("Stem 1")
1412
+ )
1413
+ demucs_stem2 = gr.Audio(
1414
+ show_download_button = True,
1415
+ interactive = False,
1416
+ type = "filepath",
1417
+ label = i18n("Stem 2")
1418
+ )
1419
+ with gr.Row():
1420
+ demucs_stem3 = gr.Audio(
1421
+ show_download_button = True,
1422
+ interactive = False,
1423
+ type = "filepath",
1424
+ label = i18n("Stem 3")
1425
+ )
1426
+ demucs_stem4 = gr.Audio(
1427
+ show_download_button = True,
1428
+ interactive = False,
1429
+ type = "filepath",
1430
+ label = i18n("Stem 4")
1431
+ )
1432
+ with gr.Row(visible=False) as stem6:
1433
+ demucs_stem5 = gr.Audio(
1434
+ show_download_button = True,
1435
+ interactive = False,
1436
+ type = "filepath",
1437
+ label = i18n("Stem 5")
1438
+ )
1439
+ demucs_stem6 = gr.Audio(
1440
+ show_download_button = True,
1441
+ interactive = False,
1442
+ type = "filepath",
1443
+ label = i18n("Stem 6")
1444
+ )
1445
+
1446
+ demucs_model.change(update_stems, inputs=[demucs_model], outputs=stem6)
1447
+
1448
+ demucs_button.click(demucs_separator, [demucs_audio, demucs_model, demucs_output_format, demucs_shifts, demucs_segment_size, demucs_segments_enabled, demucs_overlap, demucs_batch_size, demucs_normalization_threshold, demucs_amplification_threshold], [demucs_stem1, demucs_stem2, demucs_stem3, demucs_stem4, demucs_stem5, demucs_stem6])
1449
+
1450
+ with gr.TabItem(i18n("Leaderboard")):
1451
+ with gr.Group():
1452
+ with gr.Row(equal_height=True):
1453
+ list_filter = gr.Dropdown(
1454
+ label = i18n("List filter"),
1455
+ info = i18n("Filter and sort the model list by stem"),
1456
+ choices = ["vocals", "instrumental", "reverb", "echo", "noise", "crowd", "dry", "aspiration", "male", "woodwinds", "kick", "drums", "bass", "guitar", "piano", "other"],
1457
+ value = lambda : None
1458
+ )
1459
+ list_button = gr.Button(i18n("Show list!"), variant = "primary")
1460
+ output_list = gr.HTML(label = i18n("Leaderboard"))
1461
+
1462
+ list_button.click(leaderboard, inputs=list_filter, outputs=output_list)
1463
+
1464
+ with gr.TabItem(i18n("Themes")):
1465
+ themes_select = gr.Dropdown(
1466
+ label = i18n("Theme"),
1467
+ info = i18n("Select the theme you want to use. (Requires restarting the App)"),
1468
+ choices = loadThemes.get_list(),
1469
+ value = loadThemes.read_json(),
1470
+ visible = True
1471
+ )
1472
+ dummy_output = gr.Textbox(visible = False)
1473
+
1474
+ themes_select.change(
1475
+ fn = loadThemes.select_theme,
1476
+ inputs = themes_select,
1477
+ outputs = [dummy_output]
1478
+ )
1479
+
1480
+ with gr.TabItem(i18n("Credits")):
1481
+ gr.Markdown(
1482
+ """
1483
+ UVR5 UI created by **[Eddycrack 864](https://github.com/Eddycrack864).** Join **[AI HUB](https://discord.gg/aihub)** community.
1484
+ * python-audio-separator by [beveradb](https://github.com/beveradb).
1485
+ * Special thanks to [Ilaria](https://github.com/TheStingerX) for hosting this space and help.
1486
+ * Thanks to [Mikus](https://github.com/cappuch) for the help with the code.
1487
+ * Thanks to [Nick088](https://huggingface.co/Nick088) for the help to fix roformers.
1488
+ * Thanks to [yt_dlp](https://github.com/yt-dlp/yt-dlp) devs.
1489
+ * Separation by link source code and improvements by [Blane187](https://huggingface.co/Blane187).
1490
+ * Thanks to [ArisDev](https://github.com/aris-py) for porting UVR5 UI to Kaggle and improvements.
1491
+ * Thanks to [Bebra777228](https://github.com/Bebra777228)'s code for guiding me to improve my code.
1492
+ * Thanks to Nick088, MrM0dZ, Ryouko-Yamanda65777, lucinamari, perariroswe and Enes for helping translate UVR5 UI.
1493
+
1494
+ You can donate to the original UVR5 project here:
1495
+ [!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/uvr5)
1496
+ """
1497
+ )
1498
+
1499
+ app.queue()
1500
  app.launch()
assets/config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "theme": {
3
+ "file": null,
4
+ "class": "NoCrypt/miku"
5
+ },
6
+ "lang": {
7
+ "override": false,
8
+ "selected_lang": "en_US"
9
+ }
10
+ }
assets/i18n/i18n.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os, sys
2
+ import json
3
+ from pathlib import Path
4
+ from locale import getdefaultlocale
5
+
6
+ now_dir = os.getcwd()
7
+ sys.path.append(now_dir)
8
+
9
+
10
+ class I18nAuto:
11
+ LANGUAGE_PATH = os.path.join(now_dir, "assets", "i18n", "languages")
12
+
13
+ def __init__(self, language=None):
14
+ with open(
15
+ os.path.join(now_dir, "assets", "config.json"), "r", encoding="utf8"
16
+ ) as file:
17
+ config = json.load(file)
18
+ override = config["lang"]["override"]
19
+ lang_prefix = config["lang"]["selected_lang"]
20
+
21
+ self.language = lang_prefix
22
+
23
+ if override == False:
24
+ language = language or getdefaultlocale()[0]
25
+ lang_prefix = language[:2] if language is not None else "en"
26
+ available_languages = self._get_available_languages()
27
+ matching_languages = [
28
+ lang for lang in available_languages if lang.startswith(lang_prefix)
29
+ ]
30
+ self.language = matching_languages[0] if matching_languages else "en_US"
31
+
32
+ self.language_map = self._load_language_list()
33
+
34
+ def _load_language_list(self):
35
+ try:
36
+ file_path = Path(self.LANGUAGE_PATH) / f"{self.language}.json"
37
+ with open(file_path, "r", encoding="utf-8") as file:
38
+ return json.load(file)
39
+ except FileNotFoundError:
40
+ raise FileNotFoundError(
41
+ f"Failed to load language file for {self.language}. Check if the correct .json file exists."
42
+ )
43
+
44
+ def _get_available_languages(self):
45
+ language_files = [path.stem for path in Path(self.LANGUAGE_PATH).glob("*.json")]
46
+ return language_files
47
+
48
+ def _language_exists(self, language):
49
+ return (Path(self.LANGUAGE_PATH) / f"{language}.json").exists()
50
+
51
+ def __call__(self, key):
52
+ return self.language_map.get(key, key)
assets/i18n/languages/en_US.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "Select the model",
5
+ "Select the output format": "Select the output format",
6
+ "Overlap": "Overlap",
7
+ "Amount of overlap between prediction windows": "Amount of overlap between prediction windows",
8
+ "Segment size": "Segment size",
9
+ "Larger consumes more resources, but may give better results": "Larger consumes more resources, but may give better results",
10
+ "Input audio": "Input audio",
11
+ "Separation by link": "Separation by link",
12
+ "Link": "Link",
13
+ "Paste the link here": "Paste the link here",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "Download!",
16
+ "Batch separation": "Batch separation",
17
+ "Input path": "Input path",
18
+ "Place the input path here": "Place the input path here",
19
+ "Output path": "Output path",
20
+ "Place the output path here": "Place the output path here",
21
+ "Separate!": "Separate!",
22
+ "Output information": "Output information",
23
+ "Stem 1": "Stem 1",
24
+ "Stem 2": "Stem 2",
25
+ "Denoise": "Denoise",
26
+ "Enable denoising during separation": "Enable denoising during separation",
27
+ "Window size": "Window size",
28
+ "Agression": "Agression",
29
+ "Intensity of primary stem extraction": "Intensity of primary stem extraction",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "Enable Test-Time-Augmentation; slow but improves quality",
32
+ "High end process": "High end process",
33
+ "Mirror the missing frequency range of the output": "Mirror the missing frequency range of the output",
34
+ "Shifts": "Shifts",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "Number of predictions with random shifts, higher = slower but better quality",
36
+ "Stem 3": "Stem 3",
37
+ "Stem 4": "Stem 4",
38
+ "Themes": "Themes",
39
+ "Theme": "Theme",
40
+ "Select the theme you want to use. (Requires restarting the App)": "Select the theme you want to use. (Requires restarting the App)",
41
+ "Credits": "Credits",
42
+ "Language": "Language",
43
+ "Advanced settings": "Advanced settings",
44
+ "Override model default segment size instead of using the model default value": "Override model default segment size instead of using the model default value",
45
+ "Override segment size": "Override segment size",
46
+ "Batch size": "Batch size",
47
+ "Larger consumes more RAM but may process slightly faster": "Larger consumes more RAM but may process slightly faster",
48
+ "Normalization threshold": "Normalization threshold",
49
+ "The threshold for audio normalization": "The threshold for audio normalization",
50
+ "Amplification threshold": "Amplification threshold",
51
+ "The threshold for audio amplification": "The threshold for audio amplification",
52
+ "Hop length": "Hop length",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "Usually called stride in neural networks; only change if you know what you're doing",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "Identify leftover artifacts within vocal output; may improve separation for some songs",
56
+ "Post process": "Post process",
57
+ "Post process threshold": "Post process threshold",
58
+ "Threshold for post-processing": "Threshold for post-processing",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "Size of segments into which the audio is split. Higher = slower but better quality",
60
+ "Enable segment-wise processing": "Enable segment-wise processing",
61
+ "Segment-wise processing": "Segment-wise processing",
62
+ "Stem 5": "Stem 5",
63
+ "Stem 6": "Stem 6",
64
+ "Output only single stem": "Output only single stem",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental",
66
+ "Leaderboard": "Leaderboard",
67
+ "List filter": "List filter",
68
+ "Filter and sort the model list by stem": "Filter and sort the model list by stem",
69
+ "Show list!": "Show list!"
70
+ }
assets/i18n/languages/es_ES.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "Si te gusta UVR5 UI puedes darle una estrella a mi repo en [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "Prueba UVR5 UI en Hugging Face con una A100 [aquí](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "Selecciona el modelo",
5
+ "Select the output format": "Selecciona el formato de salida",
6
+ "Overlap": "Superposición",
7
+ "Amount of overlap between prediction windows": "Cantidad de superposición entre ventanas de predicción",
8
+ "Segment size": "Tamaño del segmento",
9
+ "Larger consumes more resources, but may give better results": "Un tamaño más grande consume más recursos, pero puede dar mejores resultados",
10
+ "Input audio": "Audio de entrada",
11
+ "Separation by link": "Separación por link",
12
+ "Link": "Link",
13
+ "Paste the link here": "Pega el link aquí",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "Puedes pegar el enlace al video/audio desde muchos sitios, revisa la lista completa [aquí](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "Descargar!",
16
+ "Batch separation": "Separación por lotes",
17
+ "Input path": "Ruta de entrada",
18
+ "Place the input path here": "Coloca la ruta de entrada aquí",
19
+ "Output path": "Ruta de salida",
20
+ "Place the output path here": "Coloca la ruta de salida aquí",
21
+ "Separate!": "Separar!",
22
+ "Output information": "Información de la salida",
23
+ "Stem 1": "Pista 1",
24
+ "Stem 2": "Pista 2",
25
+ "Denoise": "Eliminación de ruido",
26
+ "Enable denoising during separation": "Habilitar la eliminación de ruido durante la separación",
27
+ "Window size": "Tamaño de la ventana",
28
+ "Agression": "Agresión",
29
+ "Intensity of primary stem extraction": "Intensidad de extracción de la pista primaria",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "Habilitar Aumento del Tiempo de Prueba; lento pero mejora la calidad",
32
+ "High end process": "Procesamiento de alto rendimiento",
33
+ "Mirror the missing frequency range of the output": "Reflejar el rango de frecuencia faltante de la salida",
34
+ "Shifts": "Desplazamientos temporales",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "Número de predicciones con desplazamientos temporales, mayor = más lento pero mejor calidad",
36
+ "Stem 3": "Pista 3",
37
+ "Stem 4": "Pista 4",
38
+ "Themes": "Temas",
39
+ "Theme": "Tema",
40
+ "Select the theme you want to use. (Requires restarting the App)": "Selecciona el tema que deseas utilizar. (Requiere reiniciar la aplicación)",
41
+ "Credits": "Créditos",
42
+ "Language": "Idioma",
43
+ "Advanced settings": "Configuración avanzada",
44
+ "Override model default segment size instead of using the model default value": "Anular el tamaño del segmento predeterminado del modelo en lugar de usar el valor predeterminado del modelo",
45
+ "Override segment size": "Anular tamaño del segmento",
46
+ "Batch size": "Tamaño del lote",
47
+ "Larger consumes more RAM but may process slightly faster": "Más grande consume más RAM pero puede procesar un poco más rápido",
48
+ "Normalization threshold": "Umbral de normalización",
49
+ "The threshold for audio normalization": "El umbral para la normalización del audio",
50
+ "Amplification threshold": "Umbral de amplificación",
51
+ "The threshold for audio amplification": "El umbral para la amplificación de audio",
52
+ "Hop length": "Longitud del salto",
53
+ "Usually called stride in neural networks; only change if you know what you're doing" : "Generalmente llamado paso en redes neuronales; solo cambialo si sabes lo que estás haciendo",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "Equilibra la calidad y la velocidad. 1024 = más rápido pero de menor calidad, 320 = más lento pero de mejor calidad",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "Identifica artefactos sobrantes en la salida vocal; puede mejorar la separación de algunas canciones",
56
+ "Post process": "Posproceso",
57
+ "Post process threshold": "Umbral de posproceso",
58
+ "Threshold for post-processing": "Umbral para el posprocesamiento",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "Tamaño de los segmentos en los que se divide el audio. Más alto = más lento pero de mejor calidad",
60
+ "Enable segment-wise processing": "Habilitar el procesamiento por segmentos",
61
+ "Segment-wise processing": "Procesamiento por segmentos",
62
+ "Stem 5": "Pista 5",
63
+ "Stem 6": "Pista 6",
64
+ "Output only single stem": "Salida de única pista",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "Escribe la pista que quieres, consulta las pistas de cada modelo en la tabla de clasificación. Por ejemplo, Instrumental",
66
+ "Leaderboard": "Tabla de clasificación",
67
+ "List filter": "Lista de filtros",
68
+ "Filter and sort the model list by stem": "Filtra y ordena la lista de modelos por pista",
69
+ "Show list!": "Mostrar lista!"
70
+ }
assets/i18n/languages/hi_IN.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "यदि आपको UVR5 UI पसंद है तो आप मेरे GitHub रेपो को स्टार कर सकते हैं [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "UVR5 UI को A100 के साथ Hugging Face पर [यहाँ](https://huggingface.co/spaces/TheStinger/UVR5_UI) आज़माएं",
4
+ "Select the model": "मॉडल चुनें",
5
+ "Select the output format": "आउटपुट फॉर्मेट चुनें",
6
+ "Overlap": "ओवरलैप",
7
+ "Amount of overlap between prediction windows": "पूर्वानुमान विंडोज़ के बीच ओवरलैप की मात्रा",
8
+ "Segment size": "सेगमेंट साइज़",
9
+ "Larger consumes more resources, but may give better results": "बड़ा साइज़ अधिक संसाधन खपत करता है, लेकिन बेहतर परिणाम दे सकता है",
10
+ "Input audio": "इनपुट ऑडियो",
11
+ "Separation by link": "लिंक द्वारा अलगाव",
12
+ "Link": "लिंक",
13
+ "Paste the link here": "लिंक यहाँ पेस्ट करें",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "आप कई साइटों से वीडियो/ऑडियो का लिंक पेस्ट कर सकते हैं, पूरी सूची [यहाँ](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) देखें",
15
+ "Download!": "डाउनलोड करें!",
16
+ "Batch separation": "बैच अलगाव",
17
+ "Input path": "इनपुट पाथ",
18
+ "Place the input path here": "इनपुट पाथ यहाँ डालें",
19
+ "Output path": "आउटपुट पाथ",
20
+ "Place the output path here": "आउटपुट पाथ यहाँ डालें",
21
+ "Separate!": "अलग करें!",
22
+ "Output information": "आउटपुट जानकारी",
23
+ "Stem 1": "स्टेम 1",
24
+ "Stem 2": "स्टेम 2",
25
+ "Denoise": "डीनॉइज़",
26
+ "Enable denoising during separation": "अलगाव के दौरान डीनॉइज़िंग सक्षम करें",
27
+ "Window size": "विंडो साइज़",
28
+ "Agression": "आक्रामकता",
29
+ "Intensity of primary stem extraction": "प्राथमिक स्टेम निष्कर्षण की तीव्रता",
30
+ "TTA": "टीटीए",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "टेस्ट-टाइम-ऑगमेंटेशन सक्षम करें; धीमा लेकिन गुणवत्ता में सुधार करता है",
32
+ "High end process": "उच्च स्तरीय प्रक्रिया",
33
+ "Mirror the missing frequency range of the output": "आउटपुट की गायब फ्रीक्वेंसी रेंज को मिरर करें",
34
+ "Shifts": "शिफ्ट्स",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "रैंडम शिफ्ट्स के साथ पूर्वानुमानों की संख्या, अधिक = धीमा लेकिन बेहतर गुणवत्ता",
36
+ "Stem 3": "स्टेम 3",
37
+ "Stem 4": "स्टेम 4",
38
+ "Themes": "थीम्स",
39
+ "Theme": "थीम",
40
+ "Select the theme you want to use. (Requires restarting the App)": "वह थीम चुनें जिसका आप उपयोग करना चाहते हैं। (ऐप को पुनः प्रारंभ करना आवश्यक है)",
41
+ "Credits": "क्रेडिट्स",
42
+ "Language": "भाषा",
43
+ "Advanced settings": "उन्नत सेटिंग्स",
44
+ "Override model default segment size instead of using the model default value": "मॉडल के डिफ़ॉल्ट सेगमेंट आकार का उपयोग करने के बजाय उसे ओवरराइड करें",
45
+ "Override segment size": "सेगमेंट आकार ओवरराइड करें",
46
+ "Batch size": "बैच आकार",
47
+ "Larger consumes more RAM but may process slightly faster": "बड़ा आकार अधिक RAM का उपयोग करता है लेकिन थोड़ी तेज़ी से प्रोसेस कर सकता है",
48
+ "Normalization threshold": "नॉर्मलाइज़ेशन थ्रेशोल्ड",
49
+ "The threshold for audio normalization": "ऑडियो नॉर्मलाइज़ेशन के लिए थ्रेशोल्ड",
50
+ "Amplification threshold": "एम्पलीफिकेशन थ्रेशोल्ड",
51
+ "The threshold for audio amplification": "ऑडियो एम्पलीफिकेशन के लिए थ्रेशोल्ड",
52
+ "Hop length": "हॉप लंबाई",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "आमतौर पर तंत्रिका नेटवर्क में स्ट्राइड कहा जाता है; केवल तभी बदलें जब आप जानते हों कि आप क्या कर रहे हैं",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "गुणवत्ता और गति को संतुलित करें। 1024 = तेज़ लेकिन कम, 320 = धीमा लेकिन बेहतर गुणवत्ता",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "वोकल आउटपुट के भीतर बचे हुए कलाकृतियों की पहचान करें; कुछ गानों के लिए पृथक्करण में सुधार हो सकता है",
56
+ "Post process": "पोस्ट प्रोसेस",
57
+ "Post process threshold": "पोस्ट प्रोसेस थ्रेशोल्ड",
58
+ "Threshold for post-processing": "पोस्ट-प्रोसेसिंग के लिए थ्रेशोल्ड",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "सेगमेंट का आकार जिसमें ऑडियो विभाजित है। उच्च = धीमा लेकिन बेहतर गुणवत्ता",
60
+ "Enable segment-wise processing": "सेगमेंट-वार प्रोसेसिंग सक्षम करें",
61
+ "Segment-wise processing": "सेगमेंट-वार प्रोसेसिंग",
62
+ "Stem 5": "स्टेम ५",
63
+ "Stem 6": "स्टेम ६",
64
+ "Output only single stem": "केवल एकल स्टेम आउटपुट करें",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "आप जो स्टेम चाहते हैं उसे लिखें, लीडरबोर्ड पर प्रत्येक मॉडल के स्टेम की जांच करें। उदाहरण के लिए Instrumental",
66
+ "Leaderboard": "लीडरबोर्ड",
67
+ "List filter": "सूची फ़िल्टर",
68
+ "Filter and sort the model list by stem": "स्टेम द्वारा मॉडल सूची को फ़िल्टर और सॉर्ट करें",
69
+ "Show list!": "सूची दिखाएं!"
70
+ }
assets/i18n/languages/id_ID.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "Jika Anda suka UI UVR5, Anda dapat memberikan bintang pada repo saya di [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "Coba UVR5 UI di Hugging Face dengan A100 [di sini](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "Pilih model",
5
+ "Select the output format": "Pilih format output",
6
+ "Overlap": "Tumpang tindih",
7
+ "Amount of overlap between prediction windows": "Jumlah tumpang tindih antara jendela prediksi",
8
+ "Segment size": "Ukuran segmen",
9
+ "Larger consumes more resources, but may give better results": "Lebih besar menggunakan lebih banyak sumber daya, tetapi dapat memberikan hasil yang lebih baik",
10
+ "Input audio": "Input audio",
11
+ "Separation by link": "Pemisahan berdasarkan tautan",
12
+ "Link": "Tautan",
13
+ "Paste the link here": "Tempel tautan di sini",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "Anda dapat menempelkan tautan ke video/audio dari banyak situs, lihat daftar lengkap [di sini](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "Unduh!",
16
+ "Batch separation": "Pemisahan batch",
17
+ "Input path": "Jalur input",
18
+ "Place the input path here": "Letakkan jalur input di sini",
19
+ "Output path": "Jalur output",
20
+ "Place the output path here": "Tempatkan jalur output di sini",
21
+ "Separate!": "Pisahkan!",
22
+ "Output information": "Informasi output",
23
+ "Stem 1": "Stem 1",
24
+ "Stem 2": "Stem 2",
25
+ "Denoise": "Mengurangi kebisingan",
26
+ "Enable denoising during separation": "Aktifkan pengurangan kebisingan selama pemisahan",
27
+ "Window size": "Ukuran jendela",
28
+ "Agression": "Agresi",
29
+ "Intensity of primary stem extraction": "Intensitas ekstraksi batang primer",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "Aktifkan Augmentasi Saat Uji; lambat tetapi meningkatkan kualitas",
32
+ "High end process": "Proses Kelas Atas",
33
+ "Mirror the missing frequency range of the output": "Cerminkan rentang frekuensi yang hilang dari output",
34
+ "Shifts": "Pergeseran",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "Jumlah prediksi dengan pergeseran acak, lebih tinggi = lebih lambat tetapi kualitas lebih baik",
36
+ "Stem 3": "Stem 3",
37
+ "Stem 4": "Stem 4",
38
+ "Themes": "Tema",
39
+ "Theme": "Tema",
40
+ "Select the theme you want to use. (Requires restarting the App)": "Pilih tema yang ingin Anda gunakan. (Membutuhkan restart Aplikasi)",
41
+ "Credits": "Kredits",
42
+ "Language": "Bahasa",
43
+ "Advanced settings": "Pengaturan lanjutan",
44
+ "Override model default segment size instead of using the model default value": "Ganti ukuran segmen default model alih-alih menggunakan nilai default model",
45
+ "Override segment size": "Ganti ukuran segmen",
46
+ "Batch size": "Ukuran batch",
47
+ "Larger consumes more RAM but may process slightly faster": "Lebih besar mengkonsumsi lebih banyak RAM tetapi mungkin memproses sedikit lebih cepat",
48
+ "Normalization threshold": "Ambang normalisasi",
49
+ "The threshold for audio normalization": "Ambang batas untuk normalisasi audio",
50
+ "Amplification threshold": "Ambang amplifikasi",
51
+ "The threshold for audio amplification": "Ambang batas untuk amplifikasi audio",
52
+ "Hop length": "Panjang hop",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "Biasanya disebut langkah dalam jaringan saraf; hanya berubah jika anda tahu apa yang Anda lakukan",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "Seimbangkan kualitas dan kecepatan. 1024 = cepat tapi lebih rendah, 320 = lebih lambat tapi kualitasnya lebih baik",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "Identifikasi artefak sisa dalam keluaran vokal; dapat meningkatkan pemisahan untuk beberapa lagu",
56
+ "Post process": "Proses pasca",
57
+ "Post process threshold": "Ambang batas pasca proses",
58
+ "Threshold for post-processing": "Ambang batas untuk pasca-pemrosesan",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "Ukuran segmen tempat audio dibagi. Lebih tinggi = lebih lambat tetapi kualitasnya lebih baik",
60
+ "Enable segment-wise processing": "Aktifkan pemrosesan berdasarkan segmen",
61
+ "Segment-wise processing": "Pemrosesan berdasarkan segmen",
62
+ "Stem 5": "Stem 5",
63
+ "Stem 6": "Stem 6",
64
+ "Output only single stem": "Output hanya satu stem",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "Tulis stem yang Anda inginkan, periksa stem dari setiap model di Papan Peringkat. misalnya. Instrumental",
66
+ "Leaderboard": "Papan Peringkat",
67
+ "List filter": "Filter daftar",
68
+ "Filter and sort the model list by stem": "Filter dan urutkan daftar model berdasarkan stem",
69
+ "Show list!": "Tampilkan daftar!"
70
+ }
assets/i18n/languages/it_IT.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "Se ti piace UVR5 UI puoi aggiungere una stella al mio repository su [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "Prova UVR5 UI su Hugging Face con A100 [qui](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "Seleziona il modello",
5
+ "Select the output format": "Seleziona il formato di output",
6
+ "Overlap": "Sovrapposizione",
7
+ "Amount of overlap between prediction windows": "Quantità di sovrapposizione tra le finestre di predizione",
8
+ "Segment size": "Dimensione del segmento",
9
+ "Larger consumes more resources, but may give better results": "Dimensioni maggiori consumano più risorse, ma potrebbero dare risultati migliori",
10
+ "Input audio": "Audio di input",
11
+ "Separation by link": "Separazione tramite link",
12
+ "Link": "Link",
13
+ "Paste the link here": "Incolla il link qui",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "Puoi incollare il link al video/audio da molti siti, controlla la lista completa [qui](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "Scarica!",
16
+ "Batch separation": "Separazione in batch",
17
+ "Input path": "Percorso di input",
18
+ "Place the input path here": "Inserisci il percorso di input qui",
19
+ "Output path": "Percorso di output",
20
+ "Place the output path here": "Inserisci il percorso di output qui",
21
+ "Separate!": "Separa!",
22
+ "Output information": "Informazioni di output",
23
+ "Stem 1": "Traccia 1",
24
+ "Stem 2": "Traccia 2",
25
+ "Denoise": "Riduzione del rumore",
26
+ "Enable denoising during separation": "Abilita la riduzione del rumore durante la separazione",
27
+ "Window size": "Dimensione della finestra",
28
+ "Agression": "Aggressività",
29
+ "Intensity of primary stem extraction": "Intensità dell'estrazione della traccia primaria",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "Abilita l'Aumento del Tempo di Prova; lento ma migliora la qualità",
32
+ "High end process": "Elaborazione ad alte prestazion",
33
+ "Mirror the missing frequency range of the output": "Rifletti l'intervallo di frequenze mancante dell'output",
34
+ "Shifts": "Spostamenti",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "Numero di predizioni con spostamenti casuali, maggiore = più lento ma qualità migliore",
36
+ "Stem 3": "Traccia 3",
37
+ "Stem 4": "Traccia 4",
38
+ "Themes": "Temi",
39
+ "Theme": "Tema",
40
+ "Select the theme you want to use. (Requires restarting the App)": "Seleziona il tema che desideri utilizzare. (Richiede il riavvio dell'app)",
41
+ "Credits": "Crediti",
42
+ "Language": "Lingua",
43
+ "Advanced settings": "Impostazioni avanzate",
44
+ "Override model default segment size instead of using the model default value": "Sovrascrivi la dimensione di segmento predefinita del modello invece di utilizzare il valore predefinito del modello",
45
+ "Override segment size": "Ignora dimensione segmento",
46
+ "Batch size": "Dimensione del batch",
47
+ "Larger consumes more RAM but may process slightly faster": "Più grande consuma più RAM ma potrebbe elaborare leggermente più velocemente",
48
+ "Normalization threshold": "Soglia di normalizzazione",
49
+ "The threshold for audio normalization": "La soglia per la normalizzazione dell'audio",
50
+ "Amplification threshold": "Soglia di amplificazione",
51
+ "The threshold for audio amplification": "La soglia per l'amplificazione dell'audio",
52
+ "Hop length": "Lunghezza del salto",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "Solitamente chiamato passo nelle reti neurali; cambialo solo se sai cosa stai facendo",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "Bilancia la qualità e la velocità. 1024 = veloce ma inferiore, 320 = più lento ma migliore qualità",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "Identifica gli artefatti residui nell'output vocale; potrebbe migliorare la separazione per alcune canzoni",
56
+ "Post process": "Post-elaborazione",
57
+ "Post process threshold": "Soglia di post-elaborazione",
58
+ "Threshold for post-processing": "Soglia per la post-elaborazione",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "Dimensione dei segmenti in cui l'audio è diviso. Più alto = più lento ma migliore qualità",
60
+ "Enable segment-wise processing": "Abilita l'elaborazione per segmenti",
61
+ "Segment-wise processing": "Elaborazione per segmenti",
62
+ "Stem 5": "Traccia 5",
63
+ "Stem 6": "Traccia 6",
64
+ "Output only single stem": "Visualizza solo la traccia singola",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "Scrivi la traccia che desideri, controlla le tracce di ciascun modello nella classifica. Ad esempio, Instrumental",
66
+ "Leaderboard": "Classifica",
67
+ "List filter": "Elenco filtri",
68
+ "Filter and sort the model list by stem": "Filtra e ordina l'elenco dei modelli per traccia",
69
+ "Show list!": "Mostra elenco!"
70
+ }
assets/i18n/languages/ja_JP.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "UVR5 UIが気に入ったら、私の[GitHub](https://github.com/Eddycrack864/UVR5-UI)リポジトリにスターを付けてください",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "A100搭載の Hugging Face で UVR5 UI を試してみる [ここ](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "モデルを選択",
5
+ "Select the output format": "出力形式を選択",
6
+ "Overlap": "重複",
7
+ "Amount of overlap between prediction windows": "予測ウィンドウ間の重複量",
8
+ "Segment size": "セグメントサイズ",
9
+ "Larger consumes more resources, but may give better results": "大きいほどリソースを消費しますが、より良い結果が得られる可能性がある",
10
+ "Input audio": "入力オーディオ",
11
+ "Separation by link": "リンクによる分離",
12
+ "Link": "リンク",
13
+ "Paste the link here": "ここにリンクを貼り付け",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "ビデオ/オーディオへのリンクをさまざまなサイトから貼り付けることができる。完全なリストは [ここ](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) で確認して",
15
+ "Download!": "ダウンロード!",
16
+ "Batch separation": "バッチ分離",
17
+ "Input path": "入力パス",
18
+ "Place the input path here": "入力パスをここに配置する",
19
+ "Output path": "出力パス",
20
+ "Place the output path here": "出力パスをここに配置する",
21
+ "Separate!": "分離!",
22
+ "Output information": "出力情報",
23
+ "Stem 1": "ステム 1",
24
+ "Stem 2": "ステム 2",
25
+ "Denoise": "ノイズ除去",
26
+ "Enable denoising during separation": "分離中にノイズ除去を有効にする",
27
+ "Window size": "ウィンドウサイズ",
28
+ "Agression": "アグレッシブネス",
29
+ "Intensity of primary stem extraction": "プライマリステム抽出の強度",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "テスト時データ拡張を有効にする; 遅いですが品質が向上する",
32
+ "High end process": "ハイエンドプロセス",
33
+ "Mirror the missing frequency range of the output": "出力の欠落した周波数範囲をミラーリングする",
34
+ "Shifts": "シフト",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "ランダムシフトによる予測の数、高いほど遅いが品質が向上する",
36
+ "Stem 3": "ステム 3",
37
+ "Stem 4": "ステム 4",
38
+ "Themes": "テーマ",
39
+ "Theme": "テーマ",
40
+ "Select the theme you want to use. (Requires restarting the App)": "使用したいテーマを選択して。(アプリの再起動が必要です)",
41
+ "Credits": "クレジット",
42
+ "Language": "言語",
43
+ "Advanced settings": "詳細設定",
44
+ "Override model default segment size instead of using the model default value": "モデルのデフォルト値を使用する代わりに、モデルのデフォルトのセグメント サイズを上書きする",
45
+ "Override segment size": "セグメントサイズを上書きする",
46
+ "Batch size": "バッチサイズ",
47
+ "Larger consumes more RAM but may process slightly faster": "大きいほどRAMの消費量は多くなりますが、処理速度が若干速くなる",
48
+ "Normalization threshold": "正規化しきい値",
49
+ "The threshold for audio normalization": "オーディオ正規化の閾値",
50
+ "Amplification threshold": "増幅閾値",
51
+ "The threshold for audio amplification": "オーディオ増幅の閾値",
52
+ "Hop length": "ホップ長",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "ニューラル ネットワークでは通常、ストライドと呼ばれます。何をしているのかわかっている場合にのみ変更してください",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "品質と速度のバランスをとる。1024 = 高速だが低速、320 = 低速だが高品質",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "ボーカル出力内の残留アーティファクトを識別します。一部の曲では分離が改善される可能性がある",
56
+ "Post process": "ポストプロセス",
57
+ "Post process threshold": "ポストプロセスしきい値",
58
+ "Threshold for post-processing": "後処理のしきい値",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "オーディオを分割するセグメントのサイズ。大きいほど遅くなりますが、品質は向上する",
60
+ "Enable segment-wise processing": "セグメントごとの処理を有効にする",
61
+ "Segment-wise processing": "セグメントごとの処理",
62
+ "Stem 5": "ステム 5",
63
+ "Stem 6": "ステム 6",
64
+ "Output only single stem": "1つのステムのみを出力",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "望むステムを書き込み、リーダーボードの各モデルのステムを確認してください。例 Instrumental",
66
+ "Leaderboard": "リーダーボード",
67
+ "List filter": "リストフィルタ",
68
+ "Filter and sort the model list by stem": "ステムでモデルリストをフィルタおよびソート",
69
+ "Show list!": "リストを表示!"
70
+ }
assets/i18n/languages/ko_KR.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "UVR5 UI가 마음에 드신다면 [GitHub](https://github.com/Eddycrack864/UVR5-UI)에서 제 리포지토리에 별을 추가해 주세요",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "Hugging Face에서 A100으로 구동되는 UVR5 UI를 사용해 보세요 [이곳](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "모델 선택",
5
+ "Select the output format": "출력 형식 선택",
6
+ "Overlap": "오버랩",
7
+ "Amount of overlap between prediction windows": "예측 기간 간의 오버랩 정도",
8
+ "Segment size": "세그먼트 크기",
9
+ "Larger consumes more resources, but may give better results": "크기가 클수록 더 많은 리소스가 소모되지만, 더 나은 결과를 얻을 수 있습니다",
10
+ "Input audio": "오디오 입력",
11
+ "Separation by link": "링크로 분리하기",
12
+ "Link": "링크",
13
+ "Paste the link here": "링크를 여기에 붙여 넣으세요",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "여러 사이트의 비디오/오디오 링크를 붙여 넣을 수 있습니다. 지원되는 사이트 목록은 [이곳](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)에서 확인하세요",
15
+ "Download!": "다운로드!",
16
+ "Batch separation": "일괄 분리",
17
+ "Input path": "입력 경로",
18
+ "Place the input path here": "입력 경로를 여기에 입력하세요",
19
+ "Output path": "출력 경로",
20
+ "Place the output path here": "출력 경로를 여기에 입력하세요",
21
+ "Separate!": "분리하기!",
22
+ "Output information": "출력 정보",
23
+ "Stem 1": "스템 1",
24
+ "Stem 2": "스템 2",
25
+ "Denoise": "디노이즈",
26
+ "Enable denoising during separation": "분리 중 노이즈 제거 활성화",
27
+ "Window size": "윈도우 크기",
28
+ "Agression": "추출 강도",
29
+ "Intensity of primary stem extraction": "주요 스템 추출 강도",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "테스트 시간 증강 활성화; 느리지만 품질이 향상됩니다",
32
+ "High end process": "고급 처리",
33
+ "Mirror the missing frequency range of the output": "출력의 누락된 주파수 범위를 보정합니다",
34
+ "Shifts": "시프트",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "랜덤 시프트 사용 예측 횟수; 높을수록 느리지만 품질 향상",
36
+ "Stem 3": "스템 3",
37
+ "Stem 4": "스템 4",
38
+ "Themes": "테마 목록",
39
+ "Theme": "테마 선택",
40
+ "Select the theme you want to use. (Requires restarting the App)": "사용할 테마를 선택하세요. (앱 재시작 필요)",
41
+ "Credits": "크레딧",
42
+ "Language": "언어",
43
+ "Advanced settings": "고급 설정",
44
+ "Override model default segment size instead of using the model default value": "모델 기본값 대신 세그먼트 크기를 재정의합니다.",
45
+ "Override segment size": "세그먼트 크기 재정의",
46
+ "Batch size": "배치 크기",
47
+ "Larger consumes more RAM but may process slightly faster": "값이 클수록 RAM 사용량이 증가하지만 처리 속도가 빨라질 수 있습니다.",
48
+ "Normalization threshold": "정규화 임계값",
49
+ "The threshold for audio normalization": "오디오 정규화의 기준 값입니다.",
50
+ "Amplification threshold": "증폭 임계값",
51
+ "The threshold for audio amplification": "오디오 증폭의 기준 값입니다.",
52
+ "Hop length": "홉 길이",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "신경망에서는 보통 보폭(stride)이라고 하며, 이 설정을 정확히 이해한 경우에만 변경하세요.",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "품질과 속도의 균형을 조정합니다. 1024는 빠르지만 품질이 낮고, 320은 느리지만 품질이 더 우수합니다.",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "보컬 출력에 남은 아티팩트를 식별하여 일부 곡에서 분리 품질을 향상시킬 수 있습니다.",
56
+ "Post process": "후처리",
57
+ "Post process threshold": "후처리 임계값",
58
+ "Threshold for post-processing": "후처리의 기준 값입니다.",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "오디오를 분할하는 세그먼트 크기입니다. 값이 클수록 처리 속도는 느려지지만 품질이 향상됩니다.",
60
+ "Enable segment-wise processing": "세그먼트별 처리 활성화",
61
+ "Segment-wise processing": "세그먼트별 처리",
62
+ "Stem 5": "스템 5",
63
+ "Stem 6": "스��� 6",
64
+ "Output only single stem": "단일 스템만 출력",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "원하는 스템을 작성하고 리더보드에서 각 모델의 스템을 확인하세요. 예 Instrumental",
66
+ "Leaderboard": "리더보드",
67
+ "List filter": "목록 필터",
68
+ "Filter and sort the model list by stem": "스템 으로 모델 목록을 필터링하고 정렬합니다",
69
+ "Show list!": "목록 표시!"
70
+ }
assets/i18n/languages/ms_MY.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "Jika anda suka UI UVR5, anda boleh bintang repositori saya di [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "Cuba UI UVR5 pada Memeluk Wajah dengan A100 [di sini](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "Pilih model",
5
+ "Select the output format": "Pilih format output",
6
+ "Overlap": "Pertindihan",
7
+ "Amount of overlap between prediction windows": "Jumlah pertindihan antara tetingkap ramalan",
8
+ "Segment size": "Saiz segmen",
9
+ "Larger consumes more resources, but may give better results": "Saiz besar menggunakan lebih banyak sumber, tetapi mungkin memberikan hasil yang lebih baik",
10
+ "Input audio": "Input audio",
11
+ "Separation by link": "Pemisahan mengikut pautan",
12
+ "Link": "Pautan",
13
+ "Paste the link here": "Tampal pautan di sini",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "Anda boleh tampal pautan ke video/audio dari banyak laman, semak senarai lengkap [di sini](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "Muat turun!",
16
+ "Batch separation": "Pemisahan kelompok",
17
+ "Input path": "Laluan input",
18
+ "Place the input path here": "Letakkan laluan input di sini",
19
+ "Output path": "Laluan output",
20
+ "Place the output path here": "Letakkan laluan output di sini",
21
+ "Separate!": "Pisahkan!",
22
+ "Output information": "Maklumat output",
23
+ "Stem 1": "Lapis 1",
24
+ "Stem 2": "Lapis 2",
25
+ "Denoise": "Nyahbunyi",
26
+ "Enable denoising during separation": "Aktifkan nyahbunyi semasa pemisahan",
27
+ "Window size": "Saiz tetingkap",
28
+ "Agression": "Kekasaran",
29
+ "Intensity of primary stem extraction": "Intensiti pengekstrakan lapis utama",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "Aktifkan Augmentasi Ujian Masa; perlahan tetapi meningkatkan kualiti",
32
+ "High end process": "Proses hujung tinggi",
33
+ "Mirror the missing frequency range of the output": "Cerminkan julat frekuensi yang hilang pada output",
34
+ "Shifts": "Peralihan",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "Bilangan ramalan dengan peralihan rawak, lebih tinggi = lebih perlahan tetapi kualiti lebih baik",
36
+ "Stem 3": "Lapis 3",
37
+ "Stem 4": "Lapis 4",
38
+ "Themes": "Tema",
39
+ "Theme": "Tema",
40
+ "Select the theme you want to use. (Requires restarting the App)": "Pilih tema yang anda mahu gunakan. (Perlu mulakan semula Aplikasi)",
41
+ "Credits": "Kredit",
42
+ "Language": "Bahasa",
43
+ "Advanced settings": "Tetapan lanjutan",
44
+ "Override model default segment size instead of using the model default value": "Gantikan saiz segmen lalai model daripada menggunakan nilai lalai model",
45
+ "Override segment size": "Gantikan saiz segmen",
46
+ "Batch size": "Saiz Batch",
47
+ "Larger consumes more RAM but may process slightly faster": "Saiz lebih besar menggunakan lebih banyak RAM tetapi mungkin memproses dengan lebih cepat",
48
+ "Normalization threshold": "Ambang normalisasi",
49
+ "The threshold for audio normalization": "Ambang untuk normalisasi audio",
50
+ "Amplification threshold": "Ambang amplifikasi",
51
+ "The threshold for audio amplification": "Ambang untuk amplifikasi audio",
52
+ "Hop length": "Panjang Hop",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "Biasanya dipanggil langkah dalam rangkaian neural; hanya ubah jika anda tahu apa yang anda lakukan",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "Imbangkan kualiti dan kelajuan. 1024 = cepat tetapi lebih rendah, 320 = lebih perlahan tetapi kualiti lebih baik",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "Kenalpasti artifak sisa dalam keluaran vokal; boleh meningkatkan pemisahan untuk sesetengah lagu",
56
+ "Post process": "Proses pasca",
57
+ "Post process threshold": "Ambang proses pasca",
58
+ "Threshold for post-processing": "Ambang untuk pemprosesan pasca",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "Saiz segmen di mana audio dipecahkan. Lebih besar = lebih perlahan tetapi kualiti lebih baik",
60
+ "Enable segment-wise processing": "Aktifkan pemprosesan mengikut segmen",
61
+ "Segment-wise processing": "Pemprosesan mengikut segmen",
62
+ "Stem 5": "Lapis 5",
63
+ "Stem 6": "Lapis 6",
64
+ "Output only single stem": "Output hanya satu lapis",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "Tulis lapis yang anda mahu, semak lapis setiap model pada Papan pendahulu. contoh. Instrumental",
66
+ "Leaderboard": "Papan pendahulu",
67
+ "List filter": "Penapis senarai",
68
+ "Filter and sort the model list by stem": "Penapis dan susun senarai model mengikut lapis",
69
+ "Show list!": "Tunjukkan senarai!"
70
+ }
assets/i18n/languages/pt_BR.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "Se você gosta do UVR5 UI, você pode favoritar meu repo em [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "Tente UVR5 UI no Hugging Face com A100 [aqui](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "Selecione o modelo",
5
+ "Select the output format": "Selecione o formato de saída",
6
+ "Overlap": "Sobreposição",
7
+ "Amount of overlap between prediction windows": "Quantidade de sobreposição entre janelas de previsão",
8
+ "Segment size": "Tamanho de segmento",
9
+ "Larger consumes more resources, but may give better results": "Maior consume mais recursos, mas retorna melhores resultados",
10
+ "Input audio": "Áudio de entrada",
11
+ "Separation by link": "Separação por link",
12
+ "Link": "Link",
13
+ "Paste the link here": "Cole o link aqui",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "Você pode colar o link de um vídeo/áudio de vários sites, confira a lista [aqui](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "Download!",
16
+ "Batch separation": "Separação de lote",
17
+ "Input path": "Caminho de entrada",
18
+ "Place the input path here": "Coloque o caminho de entrada aqui",
19
+ "Output path": "Caminho de saída",
20
+ "Place the output path here": "Coloque o caminho de saída aqui",
21
+ "Separate!": "Separar!",
22
+ "Output information": "Informação de saída",
23
+ "Stem 1": "Stem 1",
24
+ "Stem 2": "Stem 2",
25
+ "Denoise": "Reduçao de ruído",
26
+ "Enable denoising during separation": "Ativar redução de ruído durante separação",
27
+ "Window size": "Tamanho da janela",
28
+ "Agression": "Agressividade",
29
+ "Intensity of primary stem extraction": "Intensidade da extração de stem primaria",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "Aumentar tempo de teste; lento mas melhora qualidade",
32
+ "High end process": "Processo de alta qualidade",
33
+ "Mirror the missing frequency range of the output": "Espelhar a frequência faltante de saida",
34
+ "Shifts": "Turnos",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "Numero de previsões com turnos aleatorios, maior = mais lento porem mais qualidade",
36
+ "Stem 3": "Stem 3",
37
+ "Stem 4": "Stem 4",
38
+ "Themes": "Temas",
39
+ "Theme": "Tema",
40
+ "Select the theme you want to use. (Requires restarting the App)": "Selecione o tema que deseja utilizar. (Requer reiniciar o App)",
41
+ "Credits": "Créditos",
42
+ "Language": "Idioma",
43
+ "Advanced settings": "Opções Avançadas",
44
+ "Override model default segment size instead of using the model default value": "Substituir tamanho de segmento padrão ao invés de usar valor padrão do modelo",
45
+ "Override segment size": "Substituir tamanho de segmento",
46
+ "Batch size": "Tamanho do lote",
47
+ "Larger consumes more RAM but may process slightly faster": "Maior consome mais RAM, mas processa mais rapido",
48
+ "Normalization threshold": "Limite de normalização",
49
+ "The threshold for audio normalization": "Limite de normalização para áudio",
50
+ "Amplification threshold": "Limite para amplicação",
51
+ "The threshold for audio amplification": "Limite para amplicação para áudio",
52
+ "Hop length": "Tamanho do pulo",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "Normalmente chamado stride em redes neurais; Somente altere se souber o que está fazendo",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "Balancear qualidade e velocidade. 1024 = Rápido porem lento, 320 = Lento porem melhor qualidade",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "Identificar artefatos restantes na saída de vocal; Pode melhorar isolamento para algumas músicas",
56
+ "Post process": "Pós-processamento",
57
+ "Post process threshold": "Limite de pós-processamento",
58
+ "Threshold for post-processing": "Limite para pós-processamento",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "Tamanho de segmentos para cortar o áudio. Maior = Lento porem melhor qualidade",
60
+ "Enable segment-wise processing": "Ativar Processamento por segmento",
61
+ "Segment-wise processing": "Processamento por segmento",
62
+ "Stem 5": "Stem 5",
63
+ "Stem 6": "Stem 6",
64
+ "Output only single stem": "Saída apenas de uma stem",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "Escreva a stem que deseja, verifique as stems de cada modelo no Tabela de classificação. Ex. Instrumental",
66
+ "Leaderboard": "Tabela de classificação",
67
+ "List filter": "Filtro de lista",
68
+ "Filter and sort the model list by stem": "Filtrar e classificar a lista de modelos por stem",
69
+ "Show list!": "Mostrar lista!"
70
+ }
assets/i18n/languages/ru_RU.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "Если вам нравится UVR5 UI, вы можете посмотреть мое репо на [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "Попробуйте UVR5 UI на Hugging Face с A100 [здесь](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "Выбор модели",
5
+ "Select the output format": "Выброр выходного формата",
6
+ "Overlap": "Пересечение",
7
+ "Amount of overlap between prediction windows": "Величина пересечения между окнами прогнозов",
8
+ "Segment size": "Размер сегмента",
9
+ "Larger consumes more resources, but may give better results": "Больший размер потребляет больше ресурсов, но может дать лучшие результаты",
10
+ "Input audio": "Входной аудиосигнал",
11
+ "Separation by link": "Разделение по ссылке",
12
+ "Link": "Ссылка",
13
+ "Paste the link here": "Вставьте ссылку здесь",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "Вы можете вставить ссылку на видео/аудио с многих сайтов, посмотрите полный список [здесь](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "Скачать!",
16
+ "Batch separation": "Пакетное разделение",
17
+ "Input path": "Входной путь",
18
+ "Place the input path here": "Вставьте путь входного аудио здесь",
19
+ "Output path": "Выходной путь",
20
+ "Place the output path here": "Вставьте путь выходного аудио здесь",
21
+ "Separate!": "Разделить!",
22
+ "Output information": "Выходная информация",
23
+ "Stem 1": "Трек 1",
24
+ "Stem 2": "Трек 2",
25
+ "Denoise": "Шумоподавление",
26
+ "Enable denoising during separation": "Включить подавление шума при разделении",
27
+ "Window size": "Размер окна",
28
+ "Agression": "Агрессия",
29
+ "Intensity of primary stem extraction": "Интенсивность извлечения первичной дорожки",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "Включение функции Test-Time-Augmentation; работает медленно, но улучшает качество",
32
+ "High end process": "Высокопроизводительная обработка",
33
+ "Mirror the missing frequency range of the output": "Зеркальное отображение недостающего диапазона частот на выходе",
34
+ "Shifts": "Сдвиги",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "Количество прогнозов со случайными сдвигами, больше = медленнее, но качественнее",
36
+ "Stem 3": "Трек 3",
37
+ "Stem 4": "Трек 4",
38
+ "Themes": "Темы",
39
+ "Theme": "Тема",
40
+ "Select the theme you want to use. (Requires restarting the App)": "Выберите тему, которую вы хотите использовать. (Требуется перезапуск приложения)",
41
+ "Credits": "Благодарность",
42
+ "Language": "Язык",
43
+ "Advanced settings": "Продвинутая настройка",
44
+ "Override model default segment size instead of using the model default value": "Переопределение размера сегмента по умолчанию вместо использования значения по умолчанию для модели",
45
+ "Override segment size": "Переопределение размера сегмента",
46
+ "Batch size": "Размер сегмента",
47
+ "Larger consumes more RAM but may process slightly faster": "Большие размеры используют больше оперативной памяти, но обработка данных может происходить немного быстрее",
48
+ "Normalization threshold": "Порог нормализации",
49
+ "The threshold for audio normalization": "Порог нормализации звука",
50
+ "Amplification threshold": "Порог усиления",
51
+ "The threshold for audio amplification": "Порог усиления звука",
52
+ "Hop length": "Длина шага",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "В ИИ обычно ��азывается шагом; меняйте его, только если знаете, что делаете",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "Балансировка качества и скорости. 1024 = быстро, но качество ниже, 320 = медленнее, но качество выше",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "Выявление остаточных артефактов в вокальном потоке; может улучшить разделение для некоторых песен",
56
+ "Post process": "Постобработка",
57
+ "Post process threshold": "Порог постобработки",
58
+ "Threshold for post-processing": "Порог для постобработки",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "Размер сегментов, на которые разбивается аудио. Больше = медленнее, но качественнее",
60
+ "Enable segment-wise processing": "Включить сегментную обработку",
61
+ "Segment-wise processing": "Сегментная обработка",
62
+ "Stem 5": "Трек 5",
63
+ "Stem 6": "Трек 6",
64
+ "Output only single stem": "Вывод только одного трека",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "Напишите трек, который вы хотите, проверьте треки каждой модели в таблице лидеров. например. Instrumental",
66
+ "Leaderboard": "Таблица лидеров",
67
+ "List filter": "Фильтр списка",
68
+ "Filter and sort the model list by stem": "Фильтровать и сортировать список моделей по трек",
69
+ "Show list!": "Показать список!"
70
+ }
assets/i18n/languages/th_TH.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "ถ้าคุณชอบ UVR5 UI คุณสามารถให้ดาว repo ของผมได้ที่ [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "ลอง UVR5 UI ผ่าน Hugging Face กับ A100 ได้ [ที่นี่](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "เลือกโมเดล",
5
+ "Select the output format": "เลือกรูปแบบของเอาท์พุต",
6
+ "Overlap": "ความทับซ้อน",
7
+ "Amount of overlap between prediction windows": "ปริมาณความทับซ้อนระหว่างช่วงเวลาของหน้าต่าง",
8
+ "Segment size": "ขนาดส่วน",
9
+ "Larger consumes more resources, but may give better results": "ยิ่งมีขนาดใหญ่ยิ่งใช้ทรัพยากรมากขึ้น แต่ก็อาจจะให้ผลลัพธ์ที่ดีกว่า",
10
+ "Input audio": "อินพุตเสียง",
11
+ "Separation by link": "แยกด้วยลิงค์",
12
+ "Link": "ลิงค์",
13
+ "Paste the link here": "วางลิ้งค์ที่นี้",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "คุณสามารถวางลิงก์ไปยังวิดีโอหรือเสียงจากหลากหลายเว็บไซต์ได้ ตรวจสอบรายการทั้งหมดได้ [ที่นี่](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "ดาวน์โหลด!",
16
+ "Batch separation": "การแยกเป็นชุด",
17
+ "Input path": "ที่อยู่ของอินพุต",
18
+ "Place the input path here": "วางที่อยู่ของอินพุตที่นี่",
19
+ "Output path": "ที่อยู่ของเอาท์พุต",
20
+ "Place the output path here": "วางที่อยู่ของเอาท์พุตที่นี่",
21
+ "Separate!": "เริ่มการแยก!",
22
+ "Output information": "ข้อมูลเอาท์พุต",
23
+ "Stem 1": "สเต็มที่ 1",
24
+ "Stem 2": "สเต็มที่ 2",
25
+ "Denoise": "ลดเสียงรบกวน",
26
+ "Enable denoising during separation": "เปิดการลดเสียงรบกวนระหว่างการแยก",
27
+ "Window size": "ขนาดหน้าต่าง",
28
+ "Agression": "ความก้าวร้าว",
29
+ "Intensity of primary stem extraction": "ความเข้มข้นของการคัดแยกสเต็มหลัก",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "เปิดการปรับปรุงข้อมูลในช่วงเวลาทดสอบ; ช้าแต่ปรับปรุงคุณภาพได้",
32
+ "High end process": "กระบวนการระดับชั้นสูง",
33
+ "Mirror the missing frequency range of the output": "สะท้อนช่วงความถี่ที่หายไปของเอาต์พุต",
34
+ "Shifts": "การกะระยะ",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "จำนวนการทำนายที่มีการกะระยะแบบสุ่ม, สูงมาก = ช้าแต่มีคุณภาพที่ดีกว่า",
36
+ "Stem 3": "สเต็มที่ 3",
37
+ "Stem 4": "สเต็มที่ 4",
38
+ "Themes": "ธีม",
39
+ "Theme": "ธีม",
40
+ "Select the theme you want to use. (Requires restarting the App)": "เลือกธีมที่คุณต้องการจะใช้ (จำเป็นต้องเริ่มแอปใหม่)",
41
+ "Credits": "เครดิตผู้มีส่วนร่วม",
42
+ "Language": "ภาษา",
43
+ "Advanced settings": "การตั้งค่าขั้นสูง",
44
+ "Override model default segment size instead of using the model default value": "แทนที่ขนาดส่วนค่าเริ่มต้นของโมเดลแทนการใช้ค่าเริ่มต้นของโมเดล",
45
+ "Override segment size": "ขนาดของส่วนที่จะแทนที่",
46
+ "Batch size": "ขนาดชุดข้อมูล",
47
+ "Larger consumes more RAM but may process slightly faster": "ส่วนที่ใหญ่ใช้หน่วยความจำมากขึ้น แต่การประมวลผลนั้นค่อนข้างเร็วกว่า",
48
+ "Normalization threshold": "เกณฑ์การปรับเสียงสมดุล",
49
+ "The threshold for audio normalization": "เกณฑ์การปรับเสียงสมดุลของเสียง",
50
+ "Amplification threshold": "เกณฑ์การขยายเสียง",
51
+ "The threshold for audio amplification": "เกณฑ์การขยายของเสียง",
52
+ "Hop length": "ความยาวการข้าม",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "โดยทั่วไปเรียกว่าก้าวย่างในเครือข่ายประสาท เปลี่ยนแปลงก็ต่อเมื่อคุณรู้ว่าคุณกำลังทำอะไรอยู่",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "ความสมดุลของคุณภาพและความเร็ว. 1024 = เร็วแต่ให้คุณภาพที่ต่ำกว่า, 320 = ช้าแต่ให้คุณภาพที่ดีกว่า",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "ระบุส่วนที่เทียมที่เหลืออยู่ในเอาต์พุตเสียง อาจช่วยให้แยกเพลงบางเพลงไก้ดีขึ้น",
56
+ "Post process": "หลังกระบวนการ",
57
+ "Post process threshold": "เกณฑ์หลังกระบวนการ",
58
+ "Threshold for post-processing": "เกณฑ์สำหรับหลังกระบวนการ",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "ขนาดของส่วนของเสียงใดเสียงหนึ่งที่แยกออก ค่าที่สูงขึ้น = ช้าแต่ให้คุณภาพที่ดีกว่า",
60
+ "Enable segment-wise processing": "เปิดการประมวลผลแบบเป็นส่วนๆ",
61
+ "Segment-wise processing": "การประมวลผลแบบเป็นส่วนๆ",
62
+ "Stem 5": "สเต็มที่ 5",
63
+ "Stem 6": "สเต็มที่ 6",
64
+ "Output only single stem": "ผลลัพธ์เฉพาะสเต็มเดียว",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "เขียนสเต็มที่คุณต้องการ, ตรวจสอบสเต็มของแต่ละโมเดลใน ลีดเดอร์บอร์ด ตัวอย่างเช่น Instrumental",
66
+ "Leaderboard": "ลีดเดอร์บอร์ด",
67
+ "List filter": "ตัวกรองรายการ",
68
+ "Filter and sort the model list by stem": "กรองและเรียงลำดับรายการโมเดลตาม สเต็มที่",
69
+ "Show list!": "แสดงรายการ!"
70
+ }
assets/i18n/languages/tr_TR.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "UVR5 UI'ı beğendiyseniz GitHub'daki repoma yıldız verebilirsiniz [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "UVR5 UI'ı A100 ile Hugging Face'de deneyin [buradan](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "Modeli seçin",
5
+ "Select the output format": "Çıktı formatını seçin",
6
+ "Overlap": "Örtüşme",
7
+ "Amount of overlap between prediction windows": "Tahmin pencereleri arasındaki örtüşme miktarı",
8
+ "Segment size": "Segment boyutu",
9
+ "Larger consumes more resources, but may give better results": "Daha büyük boyut daha fazla kaynak tüketir ancak daha iyi sonuçlar verebilir",
10
+ "Input audio": "Ses girişi",
11
+ "Separation by link": "Bağlantı ile ayırma",
12
+ "Link": "Bağlantı",
13
+ "Paste the link here": "Bağlantıyı buraya yapıştırın",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "Birçok siteden video/ses bağlantısını yapıştırabilirsiniz, tam listeyi [buradan](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) kontrol edin",
15
+ "Download!": "İndir!",
16
+ "Batch separation": "Toplu ayırma",
17
+ "Input path": "Giriş yolu",
18
+ "Place the input path here": "Giriş yolunu buraya yerleştirin",
19
+ "Output path": "Çıkış yolu",
20
+ "Place the output path here": "Çıkış yolunu buraya yerleştirin",
21
+ "Separate!": "Ayır!",
22
+ "Output information": "Çıktı bilgisi",
23
+ "Stem 1": "Kanal 1",
24
+ "Stem 2": "Kanal 2",
25
+ "Denoise": "Gürültü giderme",
26
+ "Enable denoising during separation": "Ayırma sırasında gürültü gidermeyi etkinleştir",
27
+ "Window size": "Pencere boyutu",
28
+ "Agression": "Saldırganlık",
29
+ "Intensity of primary stem extraction": "Birincil kanal çıkarma yoğunluğu",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "Test-Zamanı-Artırımını etkinleştir; yavaş ama kaliteyi artırır",
32
+ "High end process": "Yüksek kalite işleme",
33
+ "Mirror the missing frequency range of the output": "Eksik frekans aralığını çıktıda yansıt",
34
+ "Shifts": "Kaymalar",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "Rastgele kaymalarla tahmin sayısı, yüksek = daha yavaş ama daha iyi kalite",
36
+ "Stem 3": "Kanal 3",
37
+ "Stem 4": "Kanal 4",
38
+ "Themes": "Temalar",
39
+ "Theme": "Tema",
40
+ "Select the theme you want to use. (Requires restarting the App)": "Kullanmak istediğiniz temayı seçin. (Uygulamayı yeniden başlatmayı gerektirir)",
41
+ "Credits": "Katkıda Bulunanlar",
42
+ "Language": "Dil",
43
+ "Advanced settings": "Gelişmiş Ayarlar",
44
+ "Override model default segment size instead of using the model default value": "Modelin varsayılan segment boyutunu kullanmak yerine geçersiz kıl",
45
+ "Override segment size": "Segment boyutunu geçersiz kıl",
46
+ "Batch size": "Toplu iş boyutu",
47
+ "Larger consumes more RAM but may process slightly faster": "Daha büyük boyut daha fazla RAM tüketir ancak biraz daha hızlı işleyebilir",
48
+ "Normalization threshold": "Normalleştirme eşiği",
49
+ "The threshold for audio normalization": "Ses normalleştirme eşiği",
50
+ "Amplification threshold": "Yükseltme eşiği",
51
+ "The threshold for audio amplification": "Ses yükseltme eşiği",
52
+ "Hop length": "Atlama uzunluğu",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "Genellikle sinir ağlarında adım olarak adlandırılır; yalnızca ne yaptığınızı biliyorsanız değiştirin",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "Kalite ve hızı dengeleyin. 1024 = hızlı ancak düşük kalite, 320 = yavaş ancak daha iyi kalite",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "Vokal çıktısındaki kalan yapaylıkları belirleyin; bazı şarkılar için ayrımı iyileştirebilir",
56
+ "Post process": "Son işlem",
57
+ "Post process threshold": "Son işlem eşiği",
58
+ "Threshold for post-processing": "Son işlem için eşik",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "Sesin bölündüğü segmentlerin boyutu. Daha yüksek = daha yavaş ancak daha iyi kalite",
60
+ "Enable segment-wise processing": "Segment bazında işlemeyi etkinleştir",
61
+ "Segment-wise processing": "Segment bazında işleme",
62
+ "Stem 5": "Kanal 5",
63
+ "Stem 6": "Kanal 6",
64
+ "Output only single stem": "Sadece tek kanal çıkışı",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "İstediğiniz kanalı yazın, her modelin gövdelerini Lider Tablosunda kontrol edin. Örn. Instrumental",
66
+ "Leaderboard": "Liderlik tablosu",
67
+ "List filter": "Liste filtresi",
68
+ "Filter and sort the model list by stem": "Model listesini kanala göre filtreleyin ve sıralayın",
69
+ "Show list!": "Listeyi göster!"
70
+ }
assets/i18n/languages/uk_UA.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "Якщо вам подобається UVR5 UI, ви можете подивитися моє репо на [GitHub](https://github.com/Eddycrack864/UVR5-UI)",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "Спробуйте UVR5 UI на Hugging Face з A100 [тут](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "Вибір моделі",
5
+ "Select the output format": "Вибір вихідного формату",
6
+ "Overlap": "Перетин",
7
+ "Amount of overlap between prediction windows": "Величина перетину між вікнами прогнозів",
8
+ "Segment size": "Розмір сегмента",
9
+ "Larger consumes more resources, but may give better results": "Більший розмір споживає більше ресурсів, але може дати кращі результати",
10
+ "Input audio": "Вхідний аудіосигнал",
11
+ "Separation by link": "Поділ за посиланням",
12
+ "Link": "Посилання",
13
+ "Paste the link here": "Вставте посилання тут",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "Ви можете вставити посилання на відео/аудіо з багатьох сайтів, подивіться повний список [тут](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "Скачати!",
16
+ "Batch separation": "Пакетний поділ",
17
+ "Input path": "Вхідний шлях",
18
+ "Place the input path here": "Вставте шлях вхідного аудіо тут",
19
+ "Output path": "Вихідний шлях",
20
+ "Place the output path here": "Вставте шлях вихідного аудіо тут",
21
+ "Separate!": "Розділити!",
22
+ "Output information": "Вихідна інформація",
23
+ "Stem 1": "Трек 1",
24
+ "Stem 2": "Трек 2",
25
+ "Denoise": "Шумозаглушення",
26
+ "Enable denoising during separation": "Увімкнути придушення шуму під час поділу",
27
+ "Window size": "Розмір вікна",
28
+ "Agression": "Агресія",
29
+ "Intensity of primary stem extraction": "Інтенсивність вилучення первинної доріжки",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "Увімкнення функції Test-Time-Augmentation; працює повільно, але покращує якість",
32
+ "High end process": "Високопродуктивне оброблення",
33
+ "Mirror the missing frequency range of the output": "Дзеркальне відображення відсутнього діапазону частот на виході",
34
+ "Shifts": "Здвиги",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "Кількість прогнозів із випадковими зсувами, більше = повільніше, але якісніше",
36
+ "Stem 3": "Трек 3",
37
+ "Stem 4": "Трек 4",
38
+ "Themes": "Теми",
39
+ "Theme": "Тема",
40
+ "Select the theme you want to use. (Requires restarting the App)": "Виберіть тему, яку ви хочете використовувати. (Потрібен перезапуск програми)",
41
+ "Credits": "Вдячність",
42
+ "Language": "Мова",
43
+ "Advanced settings": "Просунута налаштування",
44
+ "Override model default segment size instead of using the model default value": "Перевизначення розміру сегмента за замовчуванням замість використання значення за замовчуванням для моделі",
45
+ "Override segment size": "Перевизначення розміру сегмента",
46
+ "Batch size": "Розмір сегмента",
47
+ "Larger consumes more RAM but may process slightly faster": "Великі розміри використовують більше оперативної пам'яті, але обробка даних може відбуватися трохи швидше",
48
+ "Normalization threshold": "Поріг нормалізації",
49
+ "The threshold for audio normalization": "Поріг нормалізації звуку",
50
+ "Amplification threshold": "Поріг підсилення",
51
+ "The threshold for audio amplification": "Поріг підсилення звуку",
52
+ "Hop length": "Довжина кроку",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "У ШІ зазвичай називається кроком; змінюйте його, тільки якщо знаєте, що робите",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "Балансування якості та швидкості. 1024 = швидко, але якість нижча, 320 = повільніше, але якість вища",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "Виявлення залишкових артефактів у вокальному потоці; може поліпшити поділ для деяких пісень",
56
+ "Post process": "Постобробка",
57
+ "Post process threshold": "Поріг постоброблення",
58
+ "Threshold for post-processing": "Поріг для постоброблення",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "Розмір сегментів, на які розбивається аудіо. Більше = повільніше, але якісніше",
60
+ "Enable segment-wise processing": "Увімкнути сегментне оброблення",
61
+ "Segment-wise processing": "Сегментне оброблення",
62
+ "Stem 5": "Трек 5",
63
+ "Stem 6": "Трек 6",
64
+ "Output only single stem": "Вихід тільки одного треку",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "Напишіть трек, який ви хочете, перевірте треки кожної моделі на дошці лідерів. наприклад. Instrumental",
66
+ "Leaderboard": "Дошка лідерів",
67
+ "List filter": "Фільтр списку",
68
+ "Filter and sort the model list by stem": "Фільтрувати та сортувати список моделей за трек",
69
+ "Show list!": "Показати список!"
70
+ }
assets/i18n/languages/zh_CN.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "If you like UVR5 UI you can star my repo on [GitHub](https://github.com/Eddycrack864/UVR5-UI)": "喜欢 UVR5 UI 的话,可以在 [GitHub](https://github.com/Eddycrack864/UVR5-UI) 上标星我的仓库",
3
+ "Try UVR5 UI on Hugging Face with A100 [here](https://huggingface.co/spaces/TheStinger/UVR5_UI)": "在 Huggingface 上尝试 A100 的 UVR5 UI [这里](https://huggingface.co/spaces/TheStinger/UVR5_UI)",
4
+ "Select the model": "选择模型",
5
+ "Select the output format": "选择输出格式",
6
+ "Overlap": "重叠",
7
+ "Amount of overlap between prediction windows": "预测窗口之间的重叠量",
8
+ "Segment size": "段大小",
9
+ "Larger consumes more resources, but may give better results": "更大的模型消耗更多资源,但可能产生更好的结果",
10
+ "Input audio": "输入音频",
11
+ "Separation by link": "按链接分离",
12
+ "Link": "链接",
13
+ "Paste the link here": "请在此粘贴链接",
14
+ "You can paste the link to the video/audio from many sites, check the complete list [here](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)": "您可以从许多站点粘贴视频/音频的链接,完整列表请参见 [这里](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)",
15
+ "Download!": "下载!",
16
+ "Batch separation": "批量分离",
17
+ "Input path": "输入路径",
18
+ "Place the input path here": "在此处放置输入路径",
19
+ "Output path": "输出路径",
20
+ "Place the output path here": "将输出路径放在这里",
21
+ "Separate!": "分离!",
22
+ "Output information": "输出信息",
23
+ "Stem 1": "干声 1",
24
+ "Stem 2": "干声 2",
25
+ "Denoise": "去噪",
26
+ "Enable denoising during separation": "分离过程中启用降噪",
27
+ "Window size": "窗口大小",
28
+ "Agression": "攻击性",
29
+ "Intensity of primary stem extraction": "初生茎提取强度",
30
+ "TTA": "TTA",
31
+ "Enable Test-Time-Augmentation; slow but improves quality": "启用测试时间增强;速度较慢但提高质量",
32
+ "High end process": "高频处理",
33
+ "Mirror the missing frequency range of the output": "镜像输出中缺失的频率范围",
34
+ "Shifts": "偏移",
35
+ "Number of predictions with random shifts, higher = slower but better quality": "随机偏移预测次数,越高越慢但质量越好",
36
+ "Stem 3": "干声 3",
37
+ "Stem 4": "干声 4",
38
+ "Themes": "主题",
39
+ "Theme": "主题",
40
+ "Select the theme you want to use. (Requires restarting the App)": "选择您要使用的主题。(需要重新启动应用程序)",
41
+ "Credits": "鸣谢",
42
+ "Language": "语言",
43
+ "Advanced settings": "高级设置",
44
+ "Override model default segment size instead of using the model default value": "覆盖模型默认段大小,而不是使用模型默认值",
45
+ "Override segment size": "覆盖段大小",
46
+ "Batch size": "批大小",
47
+ "Larger consumes more RAM but may process slightly faster": "更大的批次消耗更多的内存,但可能处理速度稍快",
48
+ "Normalization threshold": "归一化阈值",
49
+ "The threshold for audio normalization": "音频归一化的阈值",
50
+ "Amplification threshold": "放大量阈值",
51
+ "The threshold for audio amplification": "音频放大量阈值",
52
+ "Hop length": "跳跃长度",
53
+ "Usually called stride in neural networks; only change if you know what you're doing": "通常称为神经网络中的步幅;仅在你知道自己在做什么的情况下更改",
54
+ "Balance quality and speed. 1024 = fast but lower, 320 = slower but better quality": "平衡质量和速度。1024 = 快但质量较低,320 = 慢但质量更好",
55
+ "Identify leftover artifacts within vocal output; may improve separation for some songs": "识别声乐输出中的残留人工制品;可能改善某些歌曲的分离",
56
+ "Post process": "后处理",
57
+ "Post process threshold": "后处理阈值",
58
+ "Threshold for post-processing": "后处理阈值",
59
+ "Size of segments into which the audio is split. Higher = slower but better quality": "音频分割成的片段的大小。越大 = 速度越慢但质量越好",
60
+ "Enable segment-wise processing": "启用分段处理",
61
+ "Segment-wise processing": "分段处理",
62
+ "Stem 5": "干声 5",
63
+ "Stem 6": "干声 6",
64
+ "Output only single stem": "仅输出单个干声",
65
+ "Write the stem you want, check the stems of each model on Leaderboard. e.g. Instrumental": "写下你想要的干声,检查排行榜上每个模型的干声。例如 Instrumental",
66
+ "Leaderboard": "排行榜",
67
+ "List filter": "列表过滤器",
68
+ "Filter and sort the model list by stem": "通过干声筛选和排序模型列表",
69
+ "Show list!": "显示列表!"
70
+ }
assets/i18n/scan.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import ast
2
+ import json
3
+ from pathlib import Path
4
+ from collections import OrderedDict
5
+
6
+ def extract_i18n_strings(node):
7
+ i18n_strings = []
8
+
9
+ if (
10
+ isinstance(node, ast.Call)
11
+ and isinstance(node.func, ast.Name)
12
+ and node.func.id == "i18n"
13
+ ):
14
+ for arg in node.args:
15
+ if isinstance(arg, ast.Str):
16
+ i18n_strings.append(arg.s)
17
+
18
+ for child_node in ast.iter_child_nodes(node):
19
+ i18n_strings.extend(extract_i18n_strings(child_node))
20
+
21
+ return i18n_strings
22
+
23
+ def process_file(file_path):
24
+ with open(file_path, "r", encoding="utf8") as file:
25
+ code = file.read()
26
+ if "I18nAuto" in code:
27
+ tree = ast.parse(code)
28
+ i18n_strings = extract_i18n_strings(tree)
29
+ print(file_path, len(i18n_strings))
30
+ return i18n_strings
31
+ return []
32
+
33
+ py_files = Path(".").rglob("*.py")
34
+
35
+ code_keys = set()
36
+
37
+ for py_file in py_files:
38
+ strings = process_file(py_file)
39
+ code_keys.update(strings)
40
+
41
+ print()
42
+ print("Total unique:", len(code_keys))
43
+
44
+ standard_file = "languages/en_US.json"
45
+ with open(standard_file, "r", encoding="utf-8") as file:
46
+ standard_data = json.load(file, object_pairs_hook=OrderedDict)
47
+ standard_keys = set(standard_data.keys())
48
+
49
+ unused_keys = standard_keys - code_keys
50
+ missing_keys = code_keys - standard_keys
51
+
52
+ print("Unused keys:", len(unused_keys))
53
+ for unused_key in unused_keys:
54
+ print("\t", unused_key)
55
+
56
+ print("Missing keys:", len(missing_keys))
57
+ for missing_key in missing_keys:
58
+ print("\t", missing_key)
59
+
60
+ code_keys_dict = OrderedDict((s, s) for s in code_keys)
61
+
62
+ with open(standard_file, "w", encoding="utf-8") as file:
63
+ json.dump(code_keys_dict, file, ensure_ascii=False, indent=4, sort_keys=True)
64
+ file.write("\n")
assets/themes/loadThemes.py ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ import os
3
+ import importlib
4
+ import gradio as gr
5
+
6
+ now_dir = os.getcwd()
7
+
8
+ folder = os.path.join(now_dir, "assets", "themes")
9
+ config_file = os.path.join(now_dir, "assets", "config.json")
10
+
11
+ import sys
12
+
13
+ sys.path.append(folder)
14
+
15
+
16
+ def get_class(filename):
17
+ with open(filename, "r", encoding="utf8") as file:
18
+ for line_number, line in enumerate(file, start=1):
19
+ if "class " in line:
20
+ found = line.split("class ")[1].split(":")[0].split("(")[0].strip()
21
+ return found
22
+ break
23
+ return None
24
+
25
+
26
+ def get_list():
27
+
28
+ themes_from_files = [
29
+ os.path.splitext(name)[0]
30
+ for root, _, files in os.walk(folder, topdown=False)
31
+ for name in files
32
+ if name.endswith(".py") and root == folder and name != "loadThemes.py"
33
+ ]
34
+
35
+ json_file_path = os.path.join(folder, "themes_list.json")
36
+
37
+ try:
38
+ with open(json_file_path, "r", encoding="utf8") as json_file:
39
+ themes_from_url = [item["id"] for item in json.load(json_file)]
40
+ except FileNotFoundError:
41
+ themes_from_url = []
42
+
43
+ combined_themes = set(themes_from_files + themes_from_url)
44
+
45
+ return list(combined_themes)
46
+
47
+
48
+ def select_theme(name):
49
+ selected_file = name + ".py"
50
+ full_path = os.path.join(folder, selected_file)
51
+
52
+ if not os.path.exists(full_path):
53
+ with open(config_file, "r", encoding="utf8") as json_file:
54
+ config_data = json.load(json_file)
55
+
56
+ config_data["theme"]["file"] = None
57
+ config_data["theme"]["class"] = name
58
+
59
+ with open(config_file, "w", encoding="utf8") as json_file:
60
+ json.dump(config_data, json_file, indent=2)
61
+ print(f"Theme {name} successfully selected, restart the App.")
62
+ gr.Info(f"Theme {name} successfully selected, restart the App.")
63
+ return
64
+
65
+ class_found = get_class(full_path)
66
+ if class_found:
67
+ with open(config_file, "r", encoding="utf8") as json_file:
68
+ config_data = json.load(json_file)
69
+
70
+ config_data["theme"]["file"] = selected_file
71
+ config_data["theme"]["class"] = class_found
72
+
73
+ with open(config_file, "w", encoding="utf8") as json_file:
74
+ json.dump(config_data, json_file, indent=2)
75
+ print(f"Theme {name} successfully selected, restart the App.")
76
+ gr.Info(f"Theme {name} successfully selected, restart the App.")
77
+ else:
78
+ print(f"Theme {name} was not found.")
79
+
80
+
81
+ def read_json():
82
+ try:
83
+ with open(config_file, "r", encoding="utf8") as json_file:
84
+ data = json.load(json_file)
85
+ selected_file = data["theme"]["file"]
86
+ class_name = data["theme"]["class"]
87
+
88
+ if selected_file is not None and class_name:
89
+ return class_name
90
+ elif selected_file == None and class_name:
91
+ return class_name
92
+ else:
93
+ return "NoCrypt/miku"
94
+ except Exception as error:
95
+ print(f"An error occurred loading the theme: {error}")
96
+ return "NoCrypt/miku"
97
+
98
+
99
+ def load_json():
100
+ try:
101
+ with open(config_file, "r", encoding="utf8") as json_file:
102
+ data = json.load(json_file)
103
+ selected_file = data["theme"]["file"]
104
+ class_name = data["theme"]["class"]
105
+
106
+ if selected_file is not None and class_name:
107
+ module = importlib.import_module(selected_file[:-3])
108
+ obtained_class = getattr(module, class_name)
109
+ instance = obtained_class()
110
+ print(f"Theme {class_name} successfully loaded.")
111
+ return instance
112
+ elif selected_file == None and class_name:
113
+ return class_name
114
+ else:
115
+ print("The theme is incorrect.")
116
+ return None
117
+ except Exception as error:
118
+ print(f"An error occurred loading the theme: {error}")
119
+ return None
assets/themes/themes_list.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {"id": "freddyaboulton/dracula_revamped"},
3
+ {"id": "freddyaboulton/bad-theme-space"},
4
+ {"id": "gradio/dracula_revamped"},
5
+ {"id": "abidlabs/dracula_revamped"},
6
+ {"id": "gradio/seafoam"},
7
+ {"id": "gradio/monochrome"},
8
+ {"id": "gradio/soft"},
9
+ {"id": "gradio/default"},
10
+ {"id": "dawood/microsoft_windows"},
11
+ {"id": "ysharma/steampunk"},
12
+ {"id": "ysharma/huggingface"},
13
+ {"id": "gstaff/xkcd"},
14
+ {"id": "JohnSmith9982/small_and_pretty"},
15
+ {"id": "abidlabs/Lime"},
16
+ {"id": "bethecloud/storj_theme"},
17
+ {"id": "sudeepshouche/minimalist"},
18
+ {"id": "knotdgaf/gradiotest"},
19
+ {"id": "ParityError/Interstellar"},
20
+ {"id": "ParityError/Anime"},
21
+ {"id": "Ajaxon6255/Emerald_Isle"},
22
+ {"id": "NoCrypt/miku"},
23
+ {"id": "Hev832/Applio"}
24
+ ]
requirements.txt CHANGED
@@ -1,4 +1,4 @@
1
- numpy==1.25.2
2
- audio-separator[gpu]==0.17.5
3
- scipy
4
  yt_dlp
 
1
+ audio-separator[gpu]==0.28.5
2
+ scipy
3
+ gradio==5.9.1
4
  yt_dlp