diff --git a/tools/my_utils.py b/tools/my_utils.py index 776939d..abb2a44 100644 --- a/tools/my_utils.py +++ b/tools/my_utils.py @@ -1,3 +1,4 @@ +import platform import ffmpeg import numpy as np @@ -7,9 +8,7 @@ def load_audio(file, sr): # https://github.com/openai/whisper/blob/main/whisper/audio.py#L26 # This launches a subprocess to decode audio while down-mixing and resampling as necessary. # Requires the ffmpeg CLI and `ffmpeg-python` package to be installed. - file = ( - file.strip(" ").strip('"').strip("\n").strip('"').strip(" ") - ) # 防止小白拷路径头尾带了空格和"和回车 + file = clean_path(file) # 防止小白拷路径头尾带了空格和"和回车 out, _ = ( ffmpeg.input(file, threads=0) .output("-", format="f32le", acodec="pcm_f32le", ac=1, ar=sr) @@ -19,3 +18,9 @@ def load_audio(file, sr): raise RuntimeError(f"Failed to load audio: {e}") return np.frombuffer(out, np.float32).flatten() + + +def clean_path(path_str): + if platform.system() == 'Windows': + path_str = path_str.replace('/', '\\') + return path_str.strip(" ").strip('"').strip("\n").strip('"').strip(" ") diff --git a/tools/slice_audio.py b/tools/slice_audio.py index 79592de..4c0e270 100644 --- a/tools/slice_audio.py +++ b/tools/slice_audio.py @@ -11,7 +11,7 @@ def slice(inp,opt_root,threshold,min_length,min_interval,hop_size,max_sil_kept,_ if os.path.isfile(inp): input=[inp] elif os.path.isdir(inp): - input=["%s/%s"%(inp,name)for name in sorted(list(os.listdir(inp)))] + input=[os.path.join(inp, name) for name in sorted(list(os.listdir(inp)))] else: return "输入路径存在但既不是文件也不是文件夹" slicer = Slicer( diff --git a/webui.py b/webui.py index 9f35f03..e783094 100644 --- a/webui.py +++ b/webui.py @@ -3,6 +3,7 @@ import platform import psutil import os,shutil import signal +from tools import my_utils warnings.filterwarnings("ignore") torch.manual_seed(233333) @@ -274,6 +275,8 @@ def close1Bb(): ps_slice=[] def open_slice(inp,opt_root,threshold,min_length,min_interval,hop_size,max_sil_kept,_max,alpha,n_parts): global ps_slice + inp = my_utils.clean_path(inp) + opt_root = my_utils.clean_path(opt_root) if(os.path.exists(inp)==False): yield "输入路径不存在",{"__type__":"update","visible":True},{"__type__":"update","visible":False} return