예제 #1
0
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 
예제 #2
0
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
예제 #3
0
파일: gmm_test.py 프로젝트: StevenLOL/gmm
    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)
예제 #4
0
    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)
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
파일: gmm_test.py 프로젝트: Nganou/pycasp
    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)
예제 #12
0
파일: gmm_test.py 프로젝트: StevenLOL/gmm
    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)
예제 #13
0
파일: gmm_test.py 프로젝트: Nganou/pycasp
    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)
예제 #14
0
    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)
예제 #15
0
파일: gmm_test.py 프로젝트: Nganou/pycasp
    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)
예제 #16
0
 def test_init(self):
     gmm = GMM(3, 2, cvtype='diag')
     self.assertIsNotNone(gmm)
예제 #17
0
 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)
예제 #18
0
파일: gmm_test.py 프로젝트: Nganou/pycasp
 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)
예제 #19
0
    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)
예제 #20
0
파일: gmm_test.py 프로젝트: StevenLOL/gmm
 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)