コード例 #1
0
ファイル: rul_pred.py プロジェクト: VenkateshMohan3434/hmm
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)
コード例 #2
0
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
コード例 #3
0
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)
コード例 #4
0
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")
コード例 #5
0
            n_mix=1,
            random_state=42,
            n_iter=1000,
            verbose=True,
            params='mctw',
            init_params='mc',
            #         startprob_prior = np.array([1.0,0.0,0.0,0.0,0.0]),
            #         transmat_prior = np.array([
            #             [0.7,0.3,0.0,0.0,0.0],
            #             [0.0,0.7,0.3,0.0,0.0],
            #             [0.0,0.0,0.7,0.3,0.0],
            #             [0.0,0.0,0.0,0.7,0.3],
            #             [0.0,0.0,0.0,0.0,1.0],
            #         ])
        )
        hmm.startprob_ = np.array([1.0, 0.0, 0.0, 0.0, 0.0])
        #     hmm.transmat_ = np.array([
        #         [0.7,0.3,0.0,0.0,0.0],
        #         [0.0,0.7,0.3,0.0,0.0],
        #         [0.0,0.0,0.7,0.3,0.0],
        #         [0.0,0.0,0.0,0.7,0.3],
        #         [0.0,0.0,0.0,0.0,1.0],
        #     ])

        #     uncomment below line to train with full dataset
        #     X = np.concatenate(dataset[cname])
        #     lengths = list([len(x) for x in dataset[cname]])
        #     hmm.fit(X, lengths=lengths)

        X = np.concatenate(dataset_train[cname])
        lengths = list([len(x) for x in dataset_train[cname]])