# Info frame info_frame = tk.LabelFrame(root, text="Model Info") info_frame.pack(fill=tk.X, padx=10, pady=5) self.info_text = tk.Text(info_frame, height=5, wrap=tk.WORD) self.info_text.pack(fill=tk.BOTH, padx=5, pady=5)
def record_convert(self): if not self.selected_model: messagebox.showerror("Error", "No model selected") return # Record audio duration = 5 # seconds fs = 22050 self.status.config(text=f"Recording {duration}s... Speak now") recording = sd.rec(int(duration * fs), samplerate=fs, channels=1, dtype='float32') sd.wait() temp_in = tempfile.NamedTemporaryFile(suffix=".wav", delete=False).name sf.write(temp_in, recording, fs) out_file = tempfile.NamedTemporaryFile(suffix=".wav", delete=False).name self.status.config(text="Converting recorded audio...") threading.Thread(target=self._run_conversion, args=(temp_in, out_file), daemon=True).start() RVC-GUI Voice Models 2 1.2
def _play_result(self, audio_file): if os.path.exists(audio_file): data, fs = sf.read(audio_file) sd.play(data, fs) sd.wait() self.status.config(text="Playback finished") else: self.status.config(text="Conversion failed") # Info frame info_frame = tk
self.status = tk.Label(root, text="Ready", bd=1, relief=tk.SUNKEN, anchor=tk.W) self.status.pack(side=tk.BOTTOM, fill=tk.X) # Info frame info_frame = tk.LabelFrame(root