pocketsphinx / cython /test /fsg_test.py
camenduru's picture
pocketsphinx
5610573
#!/usr/bin/python
import unittest
from pocketsphinx import LogMath, FsgModel, Decoder
class FsgTest(unittest.TestCase):
def testfsg(self):
lmath = LogMath()
fsg = FsgModel("simple_grammar", lmath, 1.0, 10)
fsg.word_add("hello")
fsg.word_add("world")
print(fsg.word_id("world"))
self.assertEqual(fsg.word_id("world"), 1)
self.assertEqual(fsg.word_add("world"), 1)
fsg.add_silence("<sil>", 1, 0.5)
decoder = Decoder()
fsg = decoder.create_fsg("mygrammar",
start_state=0, final_state=3,
transitions=[(0, 1, 0.75, "hello"),
(0, 1, 0.25, "goodbye"),
(1, 2, 0.75, "beautiful"),
(1, 2, 0.25, "cruel"),
(2, 3, 1.0, "world")])
self.assertTrue(fsg.accept("hello beautiful world"))
self.assertTrue(fsg.accept("hello cruel world"))
self.assertTrue(fsg.accept("goodbye beautiful world"))
self.assertTrue(fsg.accept("goodbye cruel world"))
self.assertFalse(fsg.accept("goodbye world"))
self.assertFalse(fsg.accept("hello world"))
self.assertFalse(fsg.accept("hello dead parrot"))
if __name__ == "__main__":
unittest.main()