def setUp(self): self.vec1 = [0,0.2,0.8,0] self.vec2 = [0,0.4,0.6,0] self.lin = HMMInterpolation()
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']))