def phoneme_rec_accuracy_hmm(acModelDir, trPhData, testPhData, debug=True): syspath = 'recsystem' train = [] trTarget = [] for ph in trPhData: train += trPhData[ph] trTarget += [ph] * len(trPhData[ph]) print len(train), len(trTarget) hmmcl = HMMClassifier(nStates=3, nMix=1) #hmmcl.train(train, trTarget) hmmcl.load(trPhData.keys(), pathToHmm=acModelDir) # hmmcl.refine_cov_matrix() print len(hmmcl.modelsDict) test = [] testTarget = [] for ph in testPhData: test += testPhData[ph] testTarget += [ph] * len(testPhData[ph]) print len(test), len(testTarget) predRes = hmmcl.predict(test) if debug: f = open('results', 'w') yaml.dump(zip(testTarget, predRes), f, default_flow_style=False) f.close() return sum([1 if t == p else 0 for t, p in zip(testTarget, predRes)]) / float(len(testTarget))
def check_particular_phoneme(phData): syspath = 'recsystem' somePh = phData.keys()[0] print somePh, len(phData[somePh][0]), len(phData[somePh][0][0]) for sample in phData[somePh][0]: p = plt.plot(sample) plt.grid(True) plt.show() hmm = init_hmm(nStates=3, nMix=1, dim=len(phData[somePh][0][0])) seq_set = ghmm.SequenceSet(ghmm.Float(), [sum(phSample, []) for phSample in phData[somePh]]) print 'Let us train it!' hmm.baumWelch(seq_set) # print os.path.join(syspath, 'hmm', somePh) # hmm = hmm_built_from(HmmFromGHMMBuilder, os.path.join(syspath, 'hmm', somePh)) hmmReloaded = HMMClassifier.reassigned_ghmm_object(hmm, 0.5) loglikel = [hmmReloaded.loglikelihood(seq) for seq in seq_set] pl = plt.plot(loglikel) plt.show()