From c7b232362e48bf9b4d3bc6101ffc939ef9417740 Mon Sep 17 00:00:00 2001 From: Dilan Boskan Date: Thu, 14 Jan 2021 15:35:24 +0100 Subject: [PATCH] Implemented Resolution Type option --- VocalRemover.py | 35 ++++++++++++++++++++++++++--------- inference_v2.py | 4 +++- inference_v4.py | 4 +++- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/VocalRemover.py b/VocalRemover.py index 678d89e..6cd36bc 100644 --- a/VocalRemover.py +++ b/VocalRemover.py @@ -61,6 +61,7 @@ DEFAULT_DATA = { 'modelInstrumentalLabel': '', 'modelStackedLabel': '', 'aiModel': 'v4', + 'resType': 'Kaiser Fast', 'useModel': 'instrumental', 'lastDir': None, @@ -240,15 +241,15 @@ class MainWindow(TkinterDnD.Tk): # Layout IMAGE_HEIGHT = 140 FILEPATHS_HEIGHT = 90 - OPTIONS_HEIGHT = 240 + OPTIONS_HEIGHT = 285 CONVERSIONBUTTON_HEIGHT = 35 COMMAND_HEIGHT = 200 PROGRESS_HEIGHT = 26 PADDING = 10 - COL1_ROWS = 8 - COL2_ROWS = 7 - COL3_ROWS = 5 + COL1_ROWS = 9 + COL2_ROWS = 8.1 + COL3_ROWS = 5.5 def __init__(self): # Run the __init__ method on the tk.Tk class @@ -307,6 +308,7 @@ class MainWindow(TkinterDnD.Tk): self.nfft_var = tk.StringVar(value=data['n_fft']) # AI model self.aiModel_var = tk.StringVar(value=data['aiModel']) + self.resType_var = tk.StringVar(value=data['resType']) self.last_aiModel = self.aiModel_var.get() # Other self.inputPathsEntry_var = tk.StringVar(value='') @@ -398,7 +400,6 @@ class MainWindow(TkinterDnD.Tk): text='Save to', command=self.open_export_filedialog) self.filePaths_saveTo_Entry = ttk.Entry(master=self.filePaths_Frame, - textvariable=self.exportPath_var, state=tk.DISABLED ) @@ -492,6 +493,13 @@ class MainWindow(TkinterDnD.Tk): self.options_nfft_Label = tk.Label(master=self.options_Frame, text='N_FFT', anchor=tk.W, background='#63605f', font=self.font, foreground='white', relief="sunken") + # Resolution Type + self.options_resType_Label = tk.Label(master=self.options_Frame, + text='Resolution Type', anchor=tk.CENTER, + background='#63605f', font=self.font, foreground='white', relief="sunken") + self.options_resType_Optionmenu = ttk.OptionMenu(self.options_Frame, + self.resType_var, + None, 'Kaiser Fast', 'Kaiser Best', 'Scipy') # AI model self.options_aiModel_Label = tk.Label(master=self.options_Frame, text='Choose AI Engine', anchor=tk.CENTER, @@ -563,11 +571,16 @@ class MainWindow(TkinterDnD.Tk): relx=1/3, rely=3/self.COL2_ROWS, relwidth=1/3/2, relheight=1/self.COL2_ROWS) self.options_nfft_Entry.place(x=15, y=4, width=5, height=-8, relx=1/3 + 1/3/2, rely=3/self.COL2_ROWS, relwidth=1/3/4, relheight=1/self.COL2_ROWS) + # Resolution Type + self.options_resType_Label.place(x=5, y=8, width=-30, height=-8, + relx=1/3, rely=4/self.COL2_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) + self.options_resType_Optionmenu.place(x=5, y=8, width=-30, height=-8, + relx=1/3, rely=5/self.COL2_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) # AI model - self.options_aiModel_Label.place(x=5, y=-5, width=-30, height=-8, - relx=1/3, rely=5/self.COL2_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) - self.options_aiModel_Optionmenu.place(x=5, y=-5, width=-30, height=-8, - relx=1/3, rely=6/self.COL2_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) + self.options_aiModel_Label.place(x=5, y=8, width=-30, height=-8, + relx=1/3, rely=6/self.COL2_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) + self.options_aiModel_Optionmenu.place(x=5, y=8, width=-30, height=-8, + relx=1/3, rely=7/self.COL2_ROWS, relwidth=1/3, relheight=1/self.COL2_ROWS) # -Column 3- # Choose Model @@ -641,6 +654,7 @@ class MainWindow(TkinterDnD.Tk): input_paths = self.inputPaths instrumentalModel_path = self.instrumentalLabel_to_path[self.instrumentalModel_var.get()] # nopep8 stackedModel_path = self.stackedLabel_to_path[self.stackedModel_var.get()] # nopep8 + resType = self.resType_var.get().lower().replace(' ', '_') # Get constants instrumental = get_model_values(self.instrumentalModel_var.get()) stacked = get_model_values(self.stackedModel_var.get()) @@ -728,6 +742,8 @@ class MainWindow(TkinterDnD.Tk): 'hop_length': hop_length, 'window_size': window_size, 'n_fft': n_fft, # not needed for v2 + # Resolution Type + 'resType': resType, # Other Variables (Tkinter) 'window': self, 'text_widget': self.command_Text, @@ -976,6 +992,7 @@ class MainWindow(TkinterDnD.Tk): 'modelInstrumentalLabel': self.instrumentalModel_var.get(), 'modelStackedLabel': self.stackedModel_var.get(), 'aiModel': self.aiModel_var.get(), + 'resType': self.resType_var.get(), }) self.destroy() diff --git a/inference_v2.py b/inference_v2.py index 224af8a..cc072b9 100644 --- a/inference_v2.py +++ b/inference_v2.py @@ -53,6 +53,8 @@ data = { 'hop_length': 1_024, 'window_size': 320, 'n_fft': 2_048, + # Resolution Type + 'resType': 'kaiser_fast' } default_sr = data['sr'] default_hop_length = data['hop_length'] @@ -206,7 +208,7 @@ def main(window: tk.Wm, text_widget: tk.Text, button_widget: tk.Button, progress data['sr'], False, dtype=np.float32, - res_type='kaiser_fast') + res_type=data['resType']) return X, sr diff --git a/inference_v4.py b/inference_v4.py index 7f1fc3f..2629386 100644 --- a/inference_v4.py +++ b/inference_v4.py @@ -175,6 +175,8 @@ data = { 'hop_length': 1_024, 'window_size': 320, 'n_fft': 2_048, + # Resolution Type + 'resType': 'kaiser_fast' } default_sr = data['sr'] default_hop_length = data['hop_length'] @@ -428,7 +430,7 @@ def main(window: tk.Wm, text_widget: tk.Text, button_widget: tk.Button, progress # Wave source text_widget.write(base_text + 'Loading wave source...\n') X, sr = librosa.load(music_file, data['sr'], False, - dtype=np.float32, res_type='kaiser_fast') + dtype=np.float32, res_type=data['resType']) if X.ndim == 1: X = np.asarray([X, X]) text_widget.write(base_text + 'Done!\n')