def create_presentation(self, root): self.disp = Display(self.frame_record) self.disp.pack() print "==================INSTRUCTIONS===================" print "1. Load Convolution2D Neural Network weights model..." print "2. Hit *Record* button and wait 1 sec after Beep signal, then start whistling..." print "3. Hit *Recognize* button and check the results..." print "================================================\n"
class Gui: timer = None def __init__(self, root): self.l_selected_file_name_var = StringVar() # variable for label dynamic text self.l_timer_var = StringVar() self.t_result_str_var = StringVar() self.selected_file_name = "" # variable for storaging global selected file name self.counter = 0 # clock counter self.b_waveform = [] # declaring plot buttons self.b_fft = [] self.l_status = [] self.full_file_path = [] self.radioIntVar = [] # 2D or more dimensions plot self.menu_bar = Menu(root) self.file_menu = Menu(self.menu_bar, tearoff=0) self.ds_menu = Menu(self.menu_bar, tearoff=0) self.nn_menu = Menu(self.menu_bar, tearoff=0) self.frame_record = "" self.frame_record1 = "" self.frame_record2 = "" self.frame_record3 = "" self.root = root self.create_window(root) self.create_record(root) self.create_result(root) self.create_menu_bar(root) self.create_presentation(root) #izbacen preview iz gui-a self.disp = "" self.root.config(menu=self.menu_bar) self.root.mainloop() def handleRadioSel(self): if(self.radioIntVar.get() == 1): self.b_spectrogram['state'] = 'active' elif(self.radioIntVar.get() == 2): self.b_spectrogram['state'] = 'disabled' def open_audio_file(self): sys.stdout.write("Searching for file...") options = {} options['filetypes'] = [('WAV audio files', '.wav')] self.full_file_path = tkFileDialog.askopenfilename(**options) splitted_path = self.full_file_path.split('/') file_name = splitted_path[len(splitted_path)-1] self.selected_file_name = file_name #global var, selected file_name self.l_selected_file_name_var.set("[Selected file name]: " + self.selected_file_name) self.b_fft['state'] = 'active' # enable plot buttons self.b_waveform['state'] = 'active' self.b_spectrogram['state'] = 'active' print "\n[Selected file name:] " + file_name def create_menu_bar(self, root): self.file_menu.add_command(label = "Open audio file", command = self.open_audio_file) self.menu_bar.add_cascade(label="File", menu=self.file_menu) self.ds_menu.add_command(label = "Generate graphics", command = lambda: spectogram.create_data_set_graphs()) self.ds_menu.add_command(label = "Graphics augmentation", command = lambda: ImageTransform.gen_dataset_augmens()) self.menu_bar.add_cascade(label = "Data-Set", menu=self.ds_menu) self.nn_menu.add_command(label = "Train", command = lambda: NeuralNetwork.create_and_train_nn()) self.nn_menu.add_command(label = "Load last model weights", command=lambda : NeuralNetwork.load_model_weights()) self.menu_bar.add_cascade(label = "Neural Network", menu=self.nn_menu) def create_window(self, root): root.title("Sound Recognition - Soft Computing") root.geometry("550x580") root.resizable(height=FALSE, width=FALSE) def create_record(self, root): self.frame_record = Frame(root) self.frame_record.pack(side=TOP, fill=BOTH, pady=(0,5)) self.frame_record1 = Frame(self.frame_record) self.frame_record1.pack(side=TOP, fill=BOTH, pady=(0,10)) self.frame_record2 = Frame(self.frame_record) #12 between 1 and 2 self.frame_record2.pack(side=TOP, fill=BOTH, pady=(0,10)) self.frame_record3 = Frame(self.frame_record) self.frame_record3.pack(side=BOTTOM, fill=NONE) l_caption = Label(self.frame_record1, text="Record sound:") l_caption.pack(side=LEFT) b_help = Button(self.frame_record1, text="info", width=3, height=1) b_help.pack(side=RIGHT) self.l_selected_file_name_var = StringVar() self.l_selected_file_name_var.set("[Selected file name:] none") l_selected_file_name = Label(self.frame_record2, textvariable = self.l_selected_file_name_var, width = 30, height = 1, anchor = 'w') l_selected_file_name.pack(side = LEFT) self.b_waveform = Button(self.frame_record2, text = "WaveForm", width = 8, height = 1, command = lambda : Plot.plot_audio(self.full_file_path, "raw", self.radioIntVar)) self.b_waveform.pack(side = RIGHT) self.b_waveform['state'] = 'disabled' self.b_fft = Button(self.frame_record2, text = "FFT", width = 8, height = 1, command = lambda : Plot.plot_audio(self.full_file_path, "fft", self.radioIntVar)) self.b_fft.pack(side = RIGHT, padx = 3) self.b_fft['state'] = 'disabled' self.b_spectrogram = Button(self.frame_record2, text = "Spectrogram", width = 10, height = 1, command = lambda : Plot.plot_audio(self.full_file_path, "spectrogram", self.radioIntVar)) self.b_spectrogram.pack(side = RIGHT, padx = 3) self.b_spectrogram['state'] = 'disabled' self.radioIntVar = IntVar() R1 = Radiobutton(self.frame_record2, text="2D", variable=self.radioIntVar, value=1, command= lambda: self.handleRadioSel()) R1.pack( side = RIGHT) self.radioIntVar.set(1) # init 2D as default R2 = Radiobutton(self.frame_record2, text="3D", variable=self.radioIntVar, value=2, command= lambda: self.handleRadioSel()) R2.pack( side = RIGHT) global b_start global l_time b_start = Button(self.frame_record3, text='Record', width=12, height=2, command=lambda: self.main_button_click()) b_start.pack(pady=10, padx=15, side=LEFT) self.l_timer_var.set('00:00') l_time = Label(self.frame_record3, height=1, width=5, state='disabled', bg='white', textvariable=self.l_timer_var, foreground='black') l_time.pack(pady=10, padx=(10,0), side=LEFT) l_status = Label(self.frame_record3, text="...recording", foreground='red') l_status.pack(pady=10, padx=(5,10), side=LEFT) b_reset = Button(self.frame_record3, text='Reset', padx=2, command=self.reset_button_click()) b_reset.pack(pady=10, padx=20, side=LEFT) def create_presentation(self, root): self.disp = Display(self.frame_record) self.disp.pack() print "==================INSTRUCTIONS===================" print "1. Load Convolution2D Neural Network weights model..." print "2. Hit *Record* button and wait 1 sec after Beep signal, then start whistling..." print "3. Hit *Recognize* button and check the results..." print "================================================\n" def create_result(self, root): frame_result = Frame(root) frame_result.pack(fill=BOTH) l_result = Label(frame_result, text="Recognized sound:") l_result.pack(pady=10, padx=5, side=LEFT) self.t_result_str_var.set("Output is in console..") t_result = Label(frame_result, height=1, width=20, textvariable=self.t_result_str_var, bg="white") t_result.pack(pady=10, padx=5, side=LEFT) b_predict = Button(frame_result, text='Recognize', command= lambda: NeuralNetwork.predict_results()) b_predict.pack(pady=10, padx=5, side=LEFT) b_details = Button(frame_result, text='Details') b_details.pack(pady=10, padx=5, side=RIGHT) def tick_timer(self): timer = threading.Timer(1, self.tick_timer) timer.start() self.counter += 1 if self.counter > 9: self.l_timer_var.set('00:' + str(self.counter)) else: self.l_timer_var.set('00:0' + str(self.counter)) if self.counter > 3: # 3 secs for duration of recording timer.cancel() self.play_beep() self.counter = 0 self.l_timer_var.set('00:00') return print "tick..." + str(self.counter) def main_button_click(self): self.play_beep() self.tick_timer() Recorder.start_recording() self.full_file_path = "test.wav" self.l_selected_file_name_var.set("[Selected file name]: " + "test.wav") self.b_spectrogram['state'] = 'active' def reset_button_click(self): b_start["text"] = "Record" def play_beep(self): winsound.PlaySound("beep.wav", winsound.SND_ALIAS)
class Gui: timer = None def __init__(self, root): self.l_selected_file_name_var = StringVar( ) # variable for label dynamic text self.l_timer_var = StringVar() self.t_result_str_var = StringVar() self.selected_file_name = "" # variable for storaging global selected file name self.counter = 0 # clock counter self.b_waveform = [] # declaring plot buttons self.b_fft = [] self.l_status = [] self.full_file_path = [] self.radioIntVar = [] # 2D or more dimensions plot self.menu_bar = Menu(root) self.file_menu = Menu(self.menu_bar, tearoff=0) self.ds_menu = Menu(self.menu_bar, tearoff=0) self.nn_menu = Menu(self.menu_bar, tearoff=0) self.frame_record = "" self.frame_record1 = "" self.frame_record2 = "" self.frame_record3 = "" self.root = root self.create_window(root) self.create_record(root) self.create_result(root) self.create_menu_bar(root) self.create_presentation(root) #izbacen preview iz gui-a self.disp = "" self.root.config(menu=self.menu_bar) self.root.mainloop() def handleRadioSel(self): if (self.radioIntVar.get() == 1): self.b_spectrogram['state'] = 'active' elif (self.radioIntVar.get() == 2): self.b_spectrogram['state'] = 'disabled' def open_audio_file(self): sys.stdout.write("Searching for file...") options = {} options['filetypes'] = [('WAV audio files', '.wav')] self.full_file_path = tkFileDialog.askopenfilename(**options) splitted_path = self.full_file_path.split('/') file_name = splitted_path[len(splitted_path) - 1] self.selected_file_name = file_name #global var, selected file_name self.l_selected_file_name_var.set("[Selected file name]: " + self.selected_file_name) self.b_fft['state'] = 'active' # enable plot buttons self.b_waveform['state'] = 'active' self.b_spectrogram['state'] = 'active' print "\n[Selected file name:] " + file_name def create_menu_bar(self, root): self.file_menu.add_command(label="Open audio file", command=self.open_audio_file) self.menu_bar.add_cascade(label="File", menu=self.file_menu) self.ds_menu.add_command( label="Generate graphics", command=lambda: spectogram.create_data_set_graphs()) self.ds_menu.add_command( label="Graphics augmentation", command=lambda: ImageTransform.gen_dataset_augmens()) self.menu_bar.add_cascade(label="Data-Set", menu=self.ds_menu) self.nn_menu.add_command( label="Train", command=lambda: NeuralNetwork.create_and_train_nn()) self.nn_menu.add_command( label="Load last model weights", command=lambda: NeuralNetwork.load_model_weights()) self.menu_bar.add_cascade(label="Neural Network", menu=self.nn_menu) def create_window(self, root): root.title("Sound Recognition - Soft Computing") root.geometry("550x580") root.resizable(height=FALSE, width=FALSE) def create_record(self, root): self.frame_record = Frame(root) self.frame_record.pack(side=TOP, fill=BOTH, pady=(0, 5)) self.frame_record1 = Frame(self.frame_record) self.frame_record1.pack(side=TOP, fill=BOTH, pady=(0, 10)) self.frame_record2 = Frame(self.frame_record) #12 between 1 and 2 self.frame_record2.pack(side=TOP, fill=BOTH, pady=(0, 10)) self.frame_record3 = Frame(self.frame_record) self.frame_record3.pack(side=BOTTOM, fill=NONE) l_caption = Label(self.frame_record1, text="Record sound:") l_caption.pack(side=LEFT) b_help = Button(self.frame_record1, text="info", width=3, height=1) b_help.pack(side=RIGHT) self.l_selected_file_name_var = StringVar() self.l_selected_file_name_var.set("[Selected file name:] none") l_selected_file_name = Label( self.frame_record2, textvariable=self.l_selected_file_name_var, width=30, height=1, anchor='w') l_selected_file_name.pack(side=LEFT) self.b_waveform = Button( self.frame_record2, text="WaveForm", width=8, height=1, command=lambda: Plot.plot_audio(self.full_file_path, "raw", self. radioIntVar)) self.b_waveform.pack(side=RIGHT) self.b_waveform['state'] = 'disabled' self.b_fft = Button(self.frame_record2, text="FFT", width=8, height=1, command=lambda: Plot.plot_audio( self.full_file_path, "fft", self.radioIntVar)) self.b_fft.pack(side=RIGHT, padx=3) self.b_fft['state'] = 'disabled' self.b_spectrogram = Button( self.frame_record2, text="Spectrogram", width=10, height=1, command=lambda: Plot.plot_audio(self.full_file_path, "spectrogram", self.radioIntVar)) self.b_spectrogram.pack(side=RIGHT, padx=3) self.b_spectrogram['state'] = 'disabled' self.radioIntVar = IntVar() R1 = Radiobutton(self.frame_record2, text="2D", variable=self.radioIntVar, value=1, command=lambda: self.handleRadioSel()) R1.pack(side=RIGHT) self.radioIntVar.set(1) # init 2D as default R2 = Radiobutton(self.frame_record2, text="3D", variable=self.radioIntVar, value=2, command=lambda: self.handleRadioSel()) R2.pack(side=RIGHT) global b_start global l_time b_start = Button(self.frame_record3, text='Record', width=12, height=2, command=lambda: self.main_button_click()) b_start.pack(pady=10, padx=15, side=LEFT) self.l_timer_var.set('00:00') l_time = Label(self.frame_record3, height=1, width=5, state='disabled', bg='white', textvariable=self.l_timer_var, foreground='black') l_time.pack(pady=10, padx=(10, 0), side=LEFT) l_status = Label(self.frame_record3, text="...recording", foreground='red') l_status.pack(pady=10, padx=(5, 10), side=LEFT) b_reset = Button(self.frame_record3, text='Reset', padx=2, command=self.reset_button_click()) b_reset.pack(pady=10, padx=20, side=LEFT) def create_presentation(self, root): self.disp = Display(self.frame_record) self.disp.pack() print "==================INSTRUCTIONS===================" print "1. Load Convolution2D Neural Network weights model..." print "2. Hit *Record* button and wait 1 sec after Beep signal, then start whistling..." print "3. Hit *Recognize* button and check the results..." print "================================================\n" def create_result(self, root): frame_result = Frame(root) frame_result.pack(fill=BOTH) l_result = Label(frame_result, text="Recognized sound:") l_result.pack(pady=10, padx=5, side=LEFT) self.t_result_str_var.set("Output is in console..") t_result = Label(frame_result, height=1, width=20, textvariable=self.t_result_str_var, bg="white") t_result.pack(pady=10, padx=5, side=LEFT) b_predict = Button(frame_result, text='Recognize', command=lambda: NeuralNetwork.predict_results()) b_predict.pack(pady=10, padx=5, side=LEFT) b_details = Button(frame_result, text='Details') b_details.pack(pady=10, padx=5, side=RIGHT) def tick_timer(self): timer = threading.Timer(1, self.tick_timer) timer.start() self.counter += 1 if self.counter > 9: self.l_timer_var.set('00:' + str(self.counter)) else: self.l_timer_var.set('00:0' + str(self.counter)) if self.counter > 3: # 3 secs for duration of recording timer.cancel() self.play_beep() self.counter = 0 self.l_timer_var.set('00:00') return print "tick..." + str(self.counter) def main_button_click(self): self.play_beep() self.tick_timer() Recorder.start_recording() self.full_file_path = "test.wav" self.l_selected_file_name_var.set("[Selected file name]: " + "test.wav") self.b_spectrogram['state'] = 'active' def reset_button_click(self): b_start["text"] = "Record" def play_beep(self): winsound.PlaySound("beep.wav", winsound.SND_ALIAS)