| |
|
|
| import unittest |
| import os |
| from pocketsphinx import Decoder, Jsgf |
|
|
| DATADIR = os.path.join(os.path.dirname(__file__), "../../test/data") |
|
|
|
|
| class TestJsgf(unittest.TestCase): |
| def test_create_jsgf(self): |
| jsgf = Jsgf(os.path.join(DATADIR, "goforward.gram")) |
| del jsgf |
|
|
| def test_jsgf(self): |
| |
| decoder = Decoder(lm=os.path.join(DATADIR, "turtle.lm.bin"), |
| dict=os.path.join(DATADIR, "turtle.dic")) |
|
|
| |
| decoder.start_utt() |
| with open(os.path.join(DATADIR, "goforward.raw"), "rb") as stream: |
| while True: |
| buf = stream.read(1024) |
| if buf: |
| decoder.process_raw(buf, False, False) |
| else: |
| break |
| decoder.end_utt() |
| print('Decoding with "turtle" language:', decoder.hyp().hypstr) |
| self.assertEqual("go forward ten meters", decoder.hyp().hypstr) |
|
|
| |
| jsgf = Jsgf(os.path.join(DATADIR, "goforward.gram")) |
| rule = jsgf.get_rule("goforward.move2") |
| fsg = jsgf.build_fsg(rule, decoder.logmath, 7.5) |
| fsg.writefile("goforward.fsg") |
| self.assertTrue(os.path.exists("goforward.fsg")) |
| os.remove("goforward.fsg") |
|
|
| decoder.add_fsg("goforward", fsg) |
| self.assertNotEqual(decoder.current_search(), "goforward") |
| decoder.activate_search("goforward") |
| self.assertEqual(decoder.current_search(), "goforward") |
| self.assertTrue(decoder.get_fsg()) |
| self.assertTrue(decoder.get_fsg("goforward")) |
| self.assertIsNone(decoder.get_lm("foobiebletch")) |
|
|
| decoder.start_utt() |
| with open(os.path.join(DATADIR, "goforward.raw"), "rb") as stream: |
| while True: |
| buf = stream.read(1024) |
| if buf: |
| decoder.process_raw(buf, False, False) |
| else: |
| break |
| decoder.end_utt() |
| print('Decoding with "goforward" grammar:', decoder.hyp().hypstr) |
| self.assertEqual("go forward ten meters", decoder.hyp().hypstr) |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|