11import os
22import traceback ,gradio as gr
33import logging
4- from i18n .i18n import I18nAuto
4+ from tools . i18n .i18n import I18nAuto
55i18n = I18nAuto ()
66
77logger = logging .getLogger (__name__ )
8- import ffmpeg
8+ import librosa
9+ import soundfile as sf
910import torch
1011import sys
1112from mdxnet import MDXNetDereverb
1920
2021device = sys .argv [1 ]
2122is_half = sys .argv [2 ]
22-
23+ webui_port_uvr5 = int (sys .argv [3 ])
24+ is_share = eval (sys .argv [4 ])
2325
2426def uvr (model_name , inp_root , save_root_vocal , paths , save_root_ins , agg , format0 ):
2527 infos = []
@@ -50,40 +52,32 @@ def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins, agg, format
5052 paths = [path .name for path in paths ]
5153 for path in paths :
5254 inp_path = os .path .join (inp_root , path )
53- need_reformat = 1
54- done = 0
55+ if (os .path .isfile (inp_path )== False ):continue
5556 try :
56- info = ffmpeg .probe (inp_path , cmd = "ffprobe" )
57- if (
58- info ["streams" ][0 ]["channels" ] == 2
59- and info ["streams" ][0 ]["sample_rate" ] == "44100"
60- ):
61- need_reformat = 0
62- pre_fun ._path_audio_ (
63- inp_path , save_root_ins , save_root_vocal , format0 , is_hp3 = is_hp3
64- )
65- done = 1
66- except :
67- need_reformat = 1
68- traceback .print_exc ()
69- if need_reformat == 1 :
70- tmp_path = "%s/%s.reformatted.wav" % (
71- os .path .join (os .environ ["TEMP" ]),
72- os .path .basename (inp_path ),
73- )
74- os .system (
75- "ffmpeg -i %s -vn -acodec pcm_s16le -ac 2 -ar 44100 %s -y"
76- % (inp_path , tmp_path )
77- )
78- inp_path = tmp_path
79- try :
80- if done == 0 :
81- pre_fun ._path_audio_ (
82- inp_path , save_root_ins , save_root_vocal , format0
57+ done = 0
58+ try :
59+ y , sr = librosa .load (inp_path , sr = None )
60+ info = sf .info (inp_path )
61+ channels = info .channels
62+ if channels == 2 and sr == 44100 :
63+ need_reformat = 0
64+ pre_fun ._path_audio_ (
65+ inp_path , save_root_ins , save_root_vocal , format0 , is_hp3 = is_hp3
66+ )
67+ done = 1
68+ else :
69+ need_reformat = 1
70+ except :
71+ need_reformat = 1
72+ traceback .print_exc ()
73+ if need_reformat == 1 :
74+ tmp_path = "%s/%s.reformatted.wav" % (
75+ os .path .join (os .environ ["TEMP" ]),
76+ os .path .basename (inp_path ),
8377 )
84- infos . append ( "%s->Success" % ( os . path . basename ( inp_path )) )
85- yield " \n " . join ( infos )
86- except :
78+ y_resampled = librosa . resample ( y , sr , 44100 )
79+ sf . write ( tmp_path , y_resampled , 44100 , "PCM_16" )
80+ inp_path = tmp_path
8781 try :
8882 if done == 0 :
8983 pre_fun ._path_audio_ (
@@ -92,10 +86,21 @@ def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins, agg, format
9286 infos .append ("%s->Success" % (os .path .basename (inp_path )))
9387 yield "\n " .join (infos )
9488 except :
95- infos .append (
96- "%s->%s" % (os .path .basename (inp_path ), traceback .format_exc ())
97- )
98- yield "\n " .join (infos )
89+ try :
90+ if done == 0 :
91+ pre_fun ._path_audio_ (
92+ inp_path , save_root_ins , save_root_vocal , format0
93+ )
94+ infos .append ("%s->Success" % (os .path .basename (inp_path )))
95+ yield "\n " .join (infos )
96+ except :
97+ infos .append (
98+ "%s->%s" % (os .path .basename (inp_path ), traceback .format_exc ())
99+ )
100+ yield "\n " .join (infos )
101+ except :
102+ infos .append ("Oh my god. %s->%s" % (os .path .basename (inp_path ), traceback .format_exc ()))
103+ yield "\n " .join (infos )
99104 except :
100105 infos .append (traceback .format_exc ())
101106 yield "\n " .join (infos )
@@ -115,10 +120,10 @@ def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins, agg, format
115120 yield "\n " .join (infos )
116121
117122
118- with gr .Blocks (title = "UVR5 WebUI" ) as app :
123+ with gr .Blocks (title = "RVC WebUI" ) as app :
119124 gr .Markdown (
120125 value =
121- "MIT license. https://github.com/Anjok07/ultimatevocalremovergui"
126+ i18n ( "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>." )
122127 )
123128 with gr .Tabs ():
124129 with gr .TabItem (i18n ("伴奏人声分离&去混响&去回声" )):
@@ -143,7 +148,7 @@ def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins, agg, format
143148 minimum = 0 ,
144149 maximum = 20 ,
145150 step = 1 ,
146- label = "人声提取激进程度" ,
151+ label = i18n ( "人声提取激进程度" ) ,
147152 value = 10 ,
148153 interactive = True ,
149154 visible = False , # 先不开放调整
@@ -179,6 +184,7 @@ def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins, agg, format
179184app .queue (concurrency_count = 511 , max_size = 1022 ).launch (
180185 server_name = "0.0.0.0" ,
181186 inbrowser = True ,
182- server_port = 9873 ,
187+ share = is_share ,
188+ server_port = webui_port_uvr5 ,
183189 quiet = True ,
184- )
190+ )
0 commit comments