diff options
Diffstat (limited to 'boot/vocabcompiler.py')
| -rw-r--r-- | boot/vocabcompiler.py | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/boot/vocabcompiler.py b/boot/vocabcompiler.py index d5455d3..1d2a51d 100644 --- a/boot/vocabcompiler.py +++ b/boot/vocabcompiler.py @@ -1,52 +1,70 @@ """ - This iterates over all the WORDS variables in the modules and creates a dictionary that the client program will use + Iterates over all the WORDS variables in the modules and creates a dictionary for the client. """ import os import sys -import pkgutil +import glob lib_path = os.path.abspath('../client') +mod_path = os.path.abspath('../client/modules/') + sys.path.append(lib_path) -import modules +sys.path.append(mod_path) + import g2p -def compile(): +def text2lm(in_filename, out_filename): + """Wrapper around the language model compilation tools""" + def text2idngram(in_filename, out_filename): + cmd = "text2idngram -vocab %s < %s -idngram temp.idngram" % (out_filename, + in_filename) + os.system(cmd) + + def idngram2lm(in_filename, out_filename): + cmd = "idngram2lm -idngram temp.idngram -vocab %s -arpa %s" % ( + in_filename, out_filename) + os.system(cmd) + + text2idngram(in_filename, in_filename) + idngram2lm(in_filename, out_filename) + + +def compile(sentences, dictionary, languagemodel): """ Gets the words and creates the dictionary """ - m = dir(modules) + m = [os.path.basename(f)[:-3] + for f in glob.glob(os.path.dirname("../client/modules/") + "/*.py")] words = [] for module_name in m: try: - eval("words.extend(modules.%s.WORDS)" % module_name) + exec("import %s" % module_name) + eval("words.extend(%s.WORDS)" % module_name) except: pass # module probably doesn't have the property words = list(set(words)) # for spotify module - words.extend(["MUSIC","SPOTIFY"]) + words.extend(["MUSIC", "SPOTIFY"]) # create the dictionary pronounced = g2p.translateWords(words) zipped = zip(words, pronounced) lines = ["%s %s" % (x, y) for x, y in zipped] - with open("../client/dictionary.dic", "w") as f: + with open(dictionary, "w+") as f: f.write("\n".join(lines) + "\n") # create the language model - with open("../client/sentences.txt", "w") as f: + with open(sentences, "w+") as f: f.write("\n".join(words) + "\n") f.write("<s> \n </s> \n") f.close() # make language model - os.system( - "text2idngram -vocab ../client/sentences.txt < ../client/sentences.txt -idngram temp.idngram") - os.system( - "idngram2lm -idngram temp.idngram -vocab ../client/sentences.txt -arpa ../client/languagemodel.lm") + text2lm(sentences, languagemodel) |
