Files
2022-07-05 22:25:50 -04:00

34 lines
1.2 KiB
Python

#!/usr/bin/env python
import unittest
from cmusphinx import s3model
from cmusphinx import s2mfc
from cmusphinx.feat import _1s_c_d_dd
import os
class TestS3Model(unittest.TestCase):
def setUp(self):
thisdir = os.path.dirname(__file__)
self.testdir = os.path.join(thisdir, 'data', 'tidigits')
self.acmod = s3model.S3Model(self.testdir)
def test_created(self):
self.assertTrue(abs(self.acmod.tmat[0][0,1] - 0.3326) < 0.01)
self.assertTrue(abs(sum(self.acmod.mixw[0,0]) - 1.0) < 0.01)
self.assertTrue(abs(self.acmod.var[0][0][0][0] - 0.2583) < 0.01)
self.assertTrue(abs(self.acmod.var[35][0][0][38] - 16.9266) < 0.01)
def test_compute(self):
mfcc = s2mfc.open(os.path.join(self.testdir, 'man.ah.111a.mfc')).getall()
mfcc -= mfcc.mean(0)
feat = _1s_c_d_dd.compute(mfcc)
senones = [0, 69, 135, 525]
expected = [3.03518949e-36, 1.00000000e+00, 4.47046728e-16, 1.07179724e-01]
senscr = self.acmod.senone_compute(senones, feat[0])
for i,s in enumerate(senones):
self.assertTrue(abs(senscr[s] - expected[i]) < 0.01)
if __name__ == '__main__':
unittest.main()