Example #1
0
 def setUp(self):
     self.vec1 = [0,0.2,0.8,0]
     self.vec2 = [0,0.4,0.6,0]
     self.lin = HMMInterpolation()
Example #2
0
class TestInterpolate(unittest.TestCase):
    def setUp(self):
        self.vec1 = [0,0.2,0.8,0]
        self.vec2 = [0,0.4,0.6,0]
        self.lin = HMMInterpolation()

    def test_interpolate_vector(self):
        v = self.lin._linear_interpolate_vectors( [self.vec1,self.vec2], [1,0] )
        self.assertEqual(v, self.vec1)
        v = self.lin._linear_interpolate_vectors( [self.vec1,self.vec2], [0,1] )
        self.assertEqual(v, self.vec2)
        v = self.lin._linear_interpolate_vectors( [self.vec1,self.vec2], [0.5,0.5] )
        v = [round(value,1) for value in v]
        self.assertEqual(v, [0,0.3,0.7,0])

    def test_interpolate_matrix(self):
        mat1 = [self.vec1,self.vec1]
        mat2 = [self.vec2,self.vec2]
        m = self.lin._linear_interpolate_matrix( [mat1,mat2], [1,0] )
        self.assertEqual(m, mat1)
        m = self.lin._linear_interpolate_matrix( [mat1,mat2], [0,1] )
        self.assertEqual(m, mat2)
        m = self.lin._linear_interpolate_matrix( [mat1,mat2], [0.5,0.5] )
        m[0] = [round(value,1) for value in m[0]]
        m[1] = [round(value,1) for value in m[1]]
        self.assertEqual(m, [[0,0.3,0.7,0],[0,0.3,0.7,0]])

    def test_interpolate_hmm(self):
        acmodel1 = AcModel()
        acmodel1.load_htk( os.path.join(HERE, "1-hmmdefs") )
        acmodel2 = AcModel()
        acmodel2.load_htk( os.path.join(HERE,"2-hmmdefs") )
        ahmm1=acmodel1.get_hmm('a')
        ahmm2=acmodel2.get_hmm('a')

        # transitions
        # (notice that the transition of 'a' in acmodel1 is in a macro.)
        a1transition = [macro["transition"] for macro in acmodel1.macros if macro.get('transition',None)][0]
        transitions = [ a1transition['definition'],ahmm2.definition['transition'] ]
        trs = self.lin.linear_transitions( transitions, [1,0])
        compare(trs,a1transition['definition'])
        self.assertTrue(compare(trs,a1transition['definition']))

        acmodel1.fill_hmms()

        transitions = [ ahmm1.definition['transition'],ahmm2.definition['transition'] ]
        trs = self.lin.linear_transitions( transitions, [1,0])
        self.assertTrue(compare(trs,ahmm1.definition['transition']))

        trs = self.lin.linear_transitions( transitions, [0,1])
        self.assertTrue(compare(trs,ahmm2.definition['transition']))

        # states
        # (notice that the state 2 of 'a' in acmodel1 is in a macro.)
        states = [ ahmm1.definition['states'],ahmm2.definition['states'] ]
        sts = self.lin.linear_states( states, [1,0])
        compare(sts,ahmm1.definition['states'],verbose=True)
        self.assertTrue(compare(sts,ahmm1.definition['states']))
        sts = self.lin.linear_states( states, [0,1])
        self.assertTrue(compare(sts,ahmm2.definition['states']))