def calc_NMF(self): if ( self.spectrogram == [] or self.length != int(self.length_t.text()) or self.offset != int(self.offset_t.text()) or self.wsize != int(self.stftw_t.text()) or self.step != int(self.stfts_t.text()) ): self.length = int(self.length_t.text()) self.offset = int(self.offset_t.text()) self.wsize = int(self.stftw_t.text()) self.step = int(self.stfts_t.text()) global stft_wsize stft_wsize = self.wsize # global stft_step = self.step self.spectrogram = stft(SD.data[self.offset : self.length + 1], self.wsize, self.step) global Ymean Ymean = np.mean(np.abs(self.spectrogram)) self.K = int(self.K_t.text()) self.envs = int(self.envs_t.text()) self.iter = int(self.iter_t.text()) self.mfw = MusicFactorWindow(self.K) Y = np.abs(self.spectrogram) phase = np.angle(self.spectrogram) # H, U = music_factorize.nmf_euc(Y, self.K, self.iter) H, U, fai, F = music_factorize.comp_nmf(Y, self.K, self.iter) # H,U,G,O = music_factorize.m_fact_euc(Y, self.K, self.envs, self.iter, H, U) self.mfw.disp_musicfactor(H, U, phase, fai, F) self.mfw.show() self.mfw.reconst_music()
def make_spectrogram(self): if (SD.orig_spectrogram == [] or SD.length != int(self.length_t.text()) or SD.offset != int(self.offset_t.text()) or SD.stft_wsize != int(self.stftw_t.text()) or SD.stft_step != int(self.stfts_t.text())): SD.length = int(self.length_t.text()) SD.offset = int(self.offset_t.text()) SD.stft_wsize = int(self.stftw_t.text()) SD.stft_step = int(self.stfts_t.text()) SD.orig_spectrogram = stft(SD.orig_data[SD.offset:SD.length + 1], SD.stft_wsize, SD.stft_step) SD.Ymean = np.mean(np.abs(SD.orig_spectrogram))
def make_spectrogram(self): wsize # global stft_step = self.step Org_spectrogram = stft(SD.data[self.offset:self.length + 1], self.wsize, self.step) global Ymean Ymean = np.mean(np.abs(self.spectrogram)) self.spw.disp_spectrogram(self.spectrogram) self.spw.show()
def lsee_mstftm(self, X): V = X * self.phase eps = np.finfo(float).eps for i in range(10): v_aud = istft(V * np.exp((0 + 1j)), stft_wsize, stft_step) V = stft(v_aud, stft_wsize, stft_step) while V.shape[1] < X.shape[1]: V = np.c_[V, [eps for i in range(V.shape[0])]] while X.shape[1] < V.shape[1]: X = np.c_[V, [eps for i in range(X.shape[0])]] V = X * V / np.abs(V) return V
def make_spectrogram(self): if ( self.spectrogram == [] or self.length != int(self.length_t.text()) or self.offset != int(self.offset_t.text()) or self.wsize != int(self.stftw_t.text()) or self.step != int(self.stfts_t.text()) ): self.length = int(self.length_t.text()) self.offset = int(self.offset_t.text()) self.wsize = int(self.stftw_t.text()) self.step = int(self.stfts_t.text()) global stft_wsize stft_wsize = self.wsize # global stft_step = self.step self.spectrogram = stft(SD.data[self.offset : self.length + 1], self.wsize, self.step) global Ymean Ymean = np.mean(np.abs(self.spectrogram)) self.spw.disp_spectrogram(self.spectrogram) self.spw.show()
if (not os.path.exists(filepath)) or (not os.path.isdir(filepath)): os.mkdir(filepath) wsize = 2048 step = 1024 input_fname = sys.argv[1] # input_fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file') wf = wave.open(input_fname, "rb") printWaveInfo(wf) paras = wf.getparams() buffer = wf.readframes(wf.getnframes()) mdata = np.frombuffer(buffer, dtype="int16") Org_spectr = stft(mdata, wsize, step) phase = np.angle(Org_spectr) print("median1") Ht = medianfilter(abs(Org_spectr),0,l) recon1 = istft( Ht * np.exp(0 + 1j) * phase, wsize, step) save_as_wave(filepath+"/"+fname+"median1.wav",paras,recon1) print("median2") Hf = medianfilter(abs(Org_spectr),1,l) recon2 = istft( Hf * np.exp(0 + 1j) * phase, wsize, step) save_as_wave(filepath+"/"+fname+"median2.wav",paras,recon2) print("wener")