def hmm_train(features): gmmhmm = GMMHMM(n_components=30, n_mix=8) gmmhmm.startprob_ = np.array([ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]) l = np.identity(30) * 0.95 for i in range(l.shape[0] - 1): l[i, i + 1] = 0.05 l[-1, -1] = 1 gmmhmm.transmat_ = l gmmhmm.fit(features) preds = gmmhmm.predict(features) print(preds)
def initialize(phones): models = {} start_prob = np.array([1.0, 0.0, 0.0]) transmat = np.zeros((3, 3)) for i in range(3): for j in range(i, 3): trans = 1 / (3 - i) transmat[i][j] = trans for i in phones.keys(): new_hmm = GMMHMM(n_components=3, n_mix=5, params='tmc', init_params='mc') new_hmm.startprob_ = start_prob new_hmm.transmat_ = transmat models[i] = new_hmm return models
def newtrain(speakers, name): #folder="C:/Anaconda codes/speaker reco/something new/for hack/add new people/" folder = "C:/Anaconda codes/Hackverse/servermodel/clientfiles/" s = list(speakers) l = len(speakers) #name= input("enter your name") speakers.append(name) new_person = speakers[l] #rint(new_person) try: os.makedirs("clientfiles/dataset/" + name) except: print("already exists") return (s) #os.mkdir(folder+"dataset/"+ name) x = "clientfiles/dataset/" + name + "/" samples(x) training_speaker_name = name file_path = x file_names = os.listdir(file_path) #print((len(file_names))) lengths = np.empty(len(file_names)) #print(np.shape(lengths)) feature_vectors = np.empty([20, 0]) for i in range(len(file_names)): x, rate = librosa.load(file_path + file_names[i]) #loads the file #rate, x = wavfile.read(file_names[i]) x = librosa.feature.mfcc(y=x[0:int(len(x) / 1.25)], sr=rate) #extracts mfcc #x = mfcc(x[0:len(x)/1.25], samplerate=rate) lengths[i] = int(len(x.transpose())) #print(np.shape(x)) feature_vectors = np.concatenate((feature_vectors, x), axis=1) #feature_vectors = np.vstack((feature_vectors, x.transpose())) #print(((lengths))) #print(np.shape(feature_vectors)) #TRAINING A MODEL N = 3 # Number of States of HMM Mixtures = 64 # Number of Gaussian Mixtures. model = GMMHMM(n_components=N, n_mix=Mixtures, covariance_type='diag') startprob = np.ones(N) * (10**(-30)) # Left to Right Model startprob[0] = 1.0 - (N - 1) * (10**(-30)) transmat = np.zeros([N, N]) # Initial Transmat for Left to Right Model #print(startprob,'\n',transmat) for i in range(N): for j in range(N): transmat[i, j] = 1 / (N - i) transmat = np.triu(transmat, k=0) transmat[transmat == 0] = (10**(-30)) model = GMMHMM(n_components=N, n_mix=Mixtures, covariance_type='diag', init_params="mcw", n_iter=100) model.startprob_ = startprob model.transmat_ = transmat #print(startprob,'\n',transmat) feature = feature_vectors.transpose() #print(np.shape(feature)) lengths = [int(x) for x in lengths] #print(type(lengths[0])) model.fit(feature, lengths) joblib.dump(model, folder + "/models/" + name + ".pkl") return (speakers)
startprob[0] = 1.0 - (N - 1) * (10**(-30)) transmat = np.zeros([N, N]) # Initial Transmat for Left to Right Model print(startprob, '\n', transmat) for i in range(N): for j in range(N): transmat[i, j] = 1 / (N - i) transmat = np.triu(transmat, k=0) transmat[transmat == 0] = (10**(-30)) model = GMMHMM(n_components=N, n_mix=Mixtures, covariance_type='diag', init_params="mcw", n_iter=100) model.startprob_ = startprob model.transmat_ = transmat print(startprob, '\n', transmat) feature = feature_vectors.transpose() print(np.shape(feature)) lengths = [int(x) for x in lengths] print(type(lengths[0])) model.fit(feature, lengths) joblib.dump( model, "C:/Anaconda codes/speaker reco/something new/for hack/models/" + training_speaker_name + ".pkl")