def classify_speaker(htk_feats, labels, ubm_params): # For some bizzare reason this breaks...??? #means = adapt_UBM(ubm_params, htk_feats) gmm = GMM(M, D, means=np.array(ubm_params['means']), covars=np.array(ubm_params['covars']),\ weights=np.array(ubm_params['weights']), cvtype='diag') gmm.train(htk_feats, max_em_iters=1) means = gmm.components.means means = means.reshape(1, M*D) result = speaker_svm.classify(means, labels) return result
def classify_speaker(htk_feats, labels, ubm_params): # For some bizzare reason this breaks...??? #means = adapt_UBM(ubm_params, htk_feats) gmm = GMM(M, D, means=np.array(ubm_params['means']), covars=np.array(ubm_params['covars']),\ weights=np.array(ubm_params['weights']), cvtype='diag') gmm.train(htk_feats, max_em_iters=1) means = gmm.components.means means = means.reshape(1, M * D) result = speaker_svm.classify(means, labels) return result
def test_training_once(self): gmm0 = GMM(self.M, self.D, cvtype='diag') likelihood0 = gmm0.train(self.X) means0 = gmm0.components.means.flatten() covars0 = gmm0.components.covars.flatten() gmm1 = GMM(self.M, self.D, cvtype='diag') likelihood1 = gmm1.train(self.X) means1 = gmm1.components.means.flatten() covars1 = gmm1.components.covars.flatten() self.assertAlmostEqual(likelihood0, likelihood1, delta=1) for a,b in zip(means0, means1): self.assertAlmostEqual(a,b,places=2) for a,b in zip(covars0, covars1): self.assertAlmostEqual(a,b,places=2)
def test_prediction_full(self): print "test prediction full" gmm0 = GMM(self.M, self.D, cvtype='full') likelihood0 = gmm0.train(self.X) Y0 = gmm0.predict(self.X) gmm1 = GMM(self.M, self.D, cvtype='full') likelihood1 = gmm1.train(self.X) Y1 = gmm1.predict(self.X) for a,b in zip(Y0, Y1): self.assertAlmostEqual(a,b, places=3) self.assertTrue(len(set(Y0)) > 1)
def adapt_UBM(ubm_params, data): updated_means = np.array(ubm_params['means'], dtype=np.float32) for it in range(1): # adaptation loop gmm = GMM(M, D, means=updated_means, covars=np.array(ubm_params['covars']),\ weights=np.array(ubm_params['weights']), cvtype='diag') gmm.train(data, max_em_iters=1) # ==== Actual adaptation code ===== new_means = gmm.components.means new_weights = gmm.components.weights T = data.shape[0] updated_means = adapt_means(ubm_params['means'], ubm_params['covars'],\ ubm_params['weights'], new_means, new_weights, T).flatten('C') # ==== Demo adaptation code ===== #updated_means = gmm.components.means return updated_means
def train_UBM(M, D, all_feats, total_num_feats): ubm_feats = all_feats[0] for d in all_feats[1:]: ubm_feats = np.concatenate((ubm_feats, d)) print "total feats: ", total_num_feats ubm_feats = ubm_feats.reshape(total_num_feats, D) # === TRAIN UBM === ubm = GMM(M, D, cvtype='diag') ubm.train(ubm_feats, max_em_iters=5) ubm_params = {} ubm_params['means'] = ubm.components.means ubm_params['covars'] = ubm.components.covars ubm_params['weights'] = ubm.components.weights return ubm_params
def test_prediction_once(self): gmm0 = GMM(self.M, self.D, cvtype='diag') likelihood0 = gmm0.train(self.X) Y0 = gmm0.predict(self.X) gmm1 = GMM(self.M, self.D, cvtype='diag') likelihood1 = gmm1.train(self.X) Y1 = gmm1.predict(self.X) for a, b in zip(Y0, Y1): self.assertAlmostEqual(a, b) self.assertTrue(len(set(Y0)) > 1)
def test_training_repeat(self): gmm0 = GMM(self.M, self.D, cvtype='diag') likelihood0 = gmm0.train(self.X) likelihood0 = gmm0.train(self.X) likelihood0 = gmm0.train(self.X) likelihood0 = gmm0.train(self.X) likelihood0 = gmm0.train(self.X) means0 = gmm0.components.means.flatten() covars0 = gmm0.components.covars.flatten() gmm1 = GMM(self.M, self.D, cvtype='diag') likelihood1 = gmm1.train(self.X) likelihood1 = gmm1.train(self.X) likelihood1 = gmm1.train(self.X) likelihood1 = gmm1.train(self.X) likelihood1 = gmm1.train(self.X) means1 = gmm1.components.means.flatten() covars1 = gmm1.components.covars.flatten() self.assertAlmostEqual(likelihood0, likelihood1, delta=1) for a, b in zip(means0, means1): self.assertAlmostEqual(a, b, places=2) for a, b in zip(covars0, covars1): self.assertAlmostEqual(a, b, places=2)
def test_getter_methods(self): gmm0 = GMM(self.M, self.D, cvtype="diag") likelihood0 = gmm0.train(self.X) all_weights0 = gmm0.get_all_component_weights() all_means0 = gmm0.get_all_component_means() all_diag_covars0 = gmm0.get_all_component_diag_covariance() gmm1 = GMM(self.M, self.D, cvtype="diag") likelihood1 = gmm1.train(self.X) all_weights1 = gmm1.get_all_component_weights() all_means1 = gmm1.get_all_component_means() all_diag_covars1 = gmm1.get_all_component_diag_covariance() self.assertAlmostEqual(likelihood0, likelihood1, places=3) for (a, b) in zip(all_weights0, all_weights1): self.assertAlmostEqual(a, b, places=3) for m in range(gmm0.M): for a, b in zip(all_means0[m], all_means1[m]): self.assertAlmostEqual(a, b, places=3) for a, b in zip(all_diag_covars0, all_diag_covars1): self.assertAlmostEqual(a, b, places=3)
def test_prediction_full(self): gmm0 = GMM(self.M, self.D, cvtype='full') likelihood0 = gmm0.train(self.X) Y0 = gmm0.predict(self.X) gmm1 = GMM(self.M, self.D, cvtype='full') likelihood1 = gmm1.train(self.X) Y1 = gmm1.predict(self.X) for a,b in zip(Y0, Y1): self.assertAlmostEqual(a,b) self.assertTrue(len(set(Y0)) > 1)
def test_prediction_full(self): print "test prediction full" gmm0 = GMM(self.M, self.D, cvtype="full") likelihood0 = gmm0.train(self.X) Y0 = gmm0.predict(self.X) gmm1 = GMM(self.M, self.D, cvtype="full") likelihood1 = gmm1.train(self.X) Y1 = gmm1.predict(self.X) for a, b in zip(Y0, Y1): self.assertAlmostEqual(a, b, places=3) self.assertTrue(len(set(Y0)) > 1)
def test_training_once(self): print "test training once" gmm0 = GMM(self.M, self.D, cvtype='diag') likelihood0 = gmm0.train(self.X) means0 = gmm0.components.means.flatten() covars0 = gmm0.components.covars.flatten() gmm1 = GMM(self.M, self.D, cvtype='diag') likelihood1 = gmm1.train(self.X) means1 = gmm1.components.means.flatten() covars1 = gmm1.components.covars.flatten() self.assertAlmostEqual(likelihood0, likelihood1, places=3) for a,b in zip(means0, means1): self.assertAlmostEqual(a,b, places=3) for a,b in zip(covars0, covars1): self.assertAlmostEqual(a,b, places=3)
def test_training_repeat(self): print "test training repeat" gmm0 = GMM(self.M, self.D, cvtype="diag") likelihood0 = gmm0.train(self.X) likelihood0 = gmm0.train(self.X) likelihood0 = gmm0.train(self.X) means0 = gmm0.components.means.flatten() covars0 = gmm0.components.covars.flatten() gmm1 = GMM(self.M, self.D, cvtype="diag") likelihood1 = gmm1.train(self.X) likelihood1 = gmm1.train(self.X) likelihood1 = gmm1.train(self.X) means1 = gmm1.components.means.flatten() covars1 = gmm1.components.covars.flatten() self.assertAlmostEqual(likelihood0, likelihood1, places=3) for a, b in zip(means0, means1): self.assertAlmostEqual(a, b, places=3) for a, b in zip(covars0, covars1): self.assertAlmostEqual(a, b, places=3)
def test_init(self): gmm = GMM(3, 2, cvtype='diag') self.assertIsNotNone(gmm)
def test_pure_python(self): print "test pure python" gmm = GMM(self.M, self.D, cvtype='diag') means, covars = gmm.train_using_python(self.X) Y = gmm.predict_using_python(self.X) self.assertTrue(len(set(Y)) > 1)
def test_pure_python(self): print "test pure python" gmm = GMM(self.M, self.D, cvtype="diag") means, covars = gmm.train_using_python(self.X) Y = gmm.predict_using_python(self.X) self.assertTrue(len(set(Y)) > 1)
def test_getter_methods(self): gmm0 = GMM(self.M, self.D, cvtype='diag') likelihood0 = gmm0.train(self.X) all_weights0 = gmm0.get_all_component_weights() all_means0 = gmm0.get_all_component_means() all_diag_covars0 = gmm0.get_all_component_diag_covariance() gmm1 = GMM(self.M, self.D, cvtype='diag') likelihood1 = gmm1.train(self.X) all_weights1 = gmm1.get_all_component_weights() all_means1 = gmm1.get_all_component_means() all_diag_covars1 = gmm1.get_all_component_diag_covariance() self.assertAlmostEqual(likelihood0, likelihood1, places=3) for (a, b) in zip(all_weights0, all_weights1): self.assertAlmostEqual(a, b, places=3) for m in range(gmm0.M): for a, b in zip(all_means0[m], all_means1[m]): self.assertAlmostEqual(a, b, places=3) for a, b in zip(all_diag_covars0, all_diag_covars1): self.assertAlmostEqual(a, b, places=3)
def test_pure_python(self): gmm = GMM(self.M, self.D, cvtype='diag') means, covars = gmm.train_using_python(self.X) Y = gmm.predict_using_python(self.X) self.assertTrue(len(set(Y)) > 1)