def super_vector(test_file_name, ubm_file): wav = mywave() waveData = wav.WaveRead(test_file_name) waveVadIdx = vad(waveData**2) waveData = waveData[waveVadIdx] MFCC_obj = MFCC(40, 12, 300, 3400, 0.97, 16000, 50, 0.0256, 256) MFCC_coef = MFCC_obj.sig2s2mfc(waveData) ubm = GMM(n_mix=128, n_dim=12) ubm.read(ubm_file) ubm.adapt(MFCC_coef) return ubm.means
def super_vector(test_file_name, ubm_file): wav = mywave() waveData = wav.WaveRead(test_file_name) waveVadIdx = vad(waveData ** 2) waveData = waveData[waveVadIdx] MFCC_obj = MFCC(40,12,300,3400,0.97,16000,50,0.0256,256) MFCC_coef = MFCC_obj.sig2s2mfc(waveData) ubm = GMM(n_mix = 128, n_dim = 12) ubm.read(ubm_file) ubm.adapt(MFCC_coef) return ubm.means
ubm_data_dirs = os.listdir(ubm_dir) dim = 12 sig = np.array([]) features_M = np.ndarray(shape = (0,dim), dtype = 'float64') features_F = np.ndarray(shape = (0,dim), dtype = 'float64') features = np.ndarray(shape = (0,dim), dtype = 'float64') wav = mywave() print 'hello' for ubm_data_dir in ubm_data_dirs: print 'hello' print ubm_data_dir if ubm_data_dir == '.DS_Store': continue sig = wav.WaveRead(ubm_dir+r'/'+ubm_data_dir) MFCC_obj = MFCC(40,12,300,3400,0.97,16000,50,0.0256,256) MFCC_coef = MFCC_obj.sig2s2mfc(sig) #energy = np.ndarray(shape = (MFCC_coef.shape[0],1),dtype = 'float64') #energy[:,0] = 10*numpy.log10((MFCC_coef**2).sum(axis=1)) #MFCC_coef = np.hstack((MFCC_coef,energy)) """ dtm1 = np.ndarray(shape = MFCC_coef.shape,dtype = 'float64' ) #初始化dtm1 dtm1[0:2,:] = 0 dtm1[MFCC_coef.shape[0]-2:MFCC_coef.shape[0],:] = 0; #计算dtm1 for loop2 in range(2,MFCC_coef.shape[0]-2): dtm1[loop2,:] = -2*MFCC_coef[loop2-2,:]-MFCC_coef[loop2-1,:]+MFCC_coef[loop2+1,:]+2*MFCC_coef[loop2+2,:] dtm1 = dtm1/3; dtm2 = np.ndarray(shape = MFCC_coef.shape,dtype = 'float64' ) #初始化dtm2 dtm2[0:4,:] = 0
ubm_data_dirs = os.listdir(ubm_dir) dim = 12 sig = np.array([]) features_M = np.ndarray(shape=(0, dim), dtype='float64') features_F = np.ndarray(shape=(0, dim), dtype='float64') features = np.ndarray(shape=(0, dim), dtype='float64') wav = mywave() print 'hello' for ubm_data_dir in ubm_data_dirs: print 'hello' print ubm_data_dir if ubm_data_dir == '.DS_Store': continue sig = wav.WaveRead(ubm_dir + r'/' + ubm_data_dir) MFCC_obj = MFCC(40, 12, 300, 3400, 0.97, 16000, 50, 0.0256, 256) MFCC_coef = MFCC_obj.sig2s2mfc(sig) #energy = np.ndarray(shape = (MFCC_coef.shape[0],1),dtype = 'float64') #energy[:,0] = 10*numpy.log10((MFCC_coef**2).sum(axis=1)) #MFCC_coef = np.hstack((MFCC_coef,energy)) """ dtm1 = np.ndarray(shape = MFCC_coef.shape,dtype = 'float64' ) #初始化dtm1 dtm1[0:2,:] = 0 dtm1[MFCC_coef.shape[0]-2:MFCC_coef.shape[0],:] = 0; #计算dtm1 for loop2 in range(2,MFCC_coef.shape[0]-2): dtm1[loop2,:] = -2*MFCC_coef[loop2-2,:]-MFCC_coef[loop2-1,:]+MFCC_coef[loop2+1,:]+2*MFCC_coef[loop2+2,:] dtm1 = dtm1/3; dtm2 = np.ndarray(shape = MFCC_coef.shape,dtype = 'float64' ) #初始化dtm2 dtm2[0:4,:] = 0
import mywave from gmm import * from MFCC import * if __name__ == '__main__': print __doc__ ubms_dir = 'ubms' speaker_model_dir = 'adaption' if not os.path.exists(speaker_model_dir): os.mkdir(speaker_model_dir) train_data_dir = 'train_data' train_data = os.listdir(train_data_dir) wav = mywave.mywave() for train_wav in train_data: print train_wav wave_data = wav.WaveRead(train_data_dir + r'/' + train_wav) MFCC_obj = MFCC(40, 12, 300, 3400, 0.97, 16000, 50, 0.0256, 256) MFCC_coef = MFCC_obj.sig2s2mfc(wave_data) adapted_gmm = GMM() if train_wav[-5] == 'M': adapted_gmm.read(ubms_dir + r'/ubm_M') elif train_wav[-5] == 'F': adapted_gmm.read(ubms_dir + r'/ubm_F') else: print 'train_wav name unexpected' adapted_gmm.adapt(MFCC_coef) adapted_gmm.write(speaker_model_dir + r'/' + train_wav)
if __name__ == '__main__': print __doc__ ubms_dir = 'ubms' speaker_model_dir = 'adaption' if not os.path.exists(speaker_model_dir): os.mkdir(speaker_model_dir) train_data_dir = 'train_data' train_data = os.listdir(train_data_dir) wav = mywave.mywave() for train_wav in train_data: print train_wav wave_data = wav.WaveRead(train_data_dir+r'/'+train_wav) MFCC_obj = MFCC(40,12,300,3400,0.97,16000,50,0.0256,256) MFCC_coef = MFCC_obj.sig2s2mfc(wave_data) adapted_gmm = GMM() if train_wav[-5] == 'M': adapted_gmm.read(ubms_dir+r'/ubm_M') elif train_wav[-5] == 'F': adapted_gmm.read(ubms_dir+r'/ubm_F') else: print 'train_wav name unexpected' adapted_gmm.adapt(MFCC_coef) adapted_gmm.write(speaker_model_dir+r'/'+train_wav)