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()
Beispiel #2
0
 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")