mirror of
https://github.com/cmusphinx/sphinxtrain.git
synced 2026-05-17 13:10:52 +00:00
72 lines
1.8 KiB
Python
Executable File
72 lines
1.8 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
import sys
|
|
|
|
|
|
def lattice_s3(latfile):
|
|
mode = "empty"
|
|
for line in latfile:
|
|
|
|
if line.startswith("Nodes"):
|
|
mode = "node"
|
|
continue
|
|
if line.startswith("Edges"):
|
|
mode = "edge"
|
|
continue
|
|
if line.startswith("#") or line.startswith("End"):
|
|
mode = "none"
|
|
continue
|
|
|
|
items = line.strip().split(" ")
|
|
if mode == "node":
|
|
if items[1] != "":
|
|
print(items[0] + " [label = \"" + items[1] + " " + items[2] +
|
|
" " + items[3] + " " + items[4] + "\"];")
|
|
else:
|
|
print("node " + items[0] + ";")
|
|
if mode == "edge":
|
|
print(items[0] + " -> " + items[1] + " [label = \"" + items[2] +
|
|
"\"];")
|
|
print("}")
|
|
|
|
|
|
def create_map(items):
|
|
dct = {}
|
|
for i in items:
|
|
dct[i[0]] = i[2:]
|
|
return dct
|
|
|
|
|
|
def lattice_htk_wordnode(latfile):
|
|
mode = "empty"
|
|
for line in latfile:
|
|
items = line.strip().split()
|
|
if items[0].startswith("I="):
|
|
dct = create_map(items)
|
|
if "W" in dct:
|
|
print(dct["J"] + " [label = \"" + dct["W"] + "\"];")
|
|
if items[0].startswith("J="):
|
|
dct = create_map(items)
|
|
if "W" in dct:
|
|
print(dct["S"] + " -> " + dct["E"] + " [label = \"" +
|
|
dct["W"] + "," + dct["a"] + "," + dct["l"] + "\"];")
|
|
else:
|
|
print(dct["S"] + " -> " + dct["E"] + " [label = \"" +
|
|
dct["a"] + "," + dct["l"] + "\"];")
|
|
print("}")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
latfilename = sys.argv[1]
|
|
latfile = open(latfilename, "r")
|
|
|
|
print("""
|
|
digraph lattice {
|
|
rankdir=LR;
|
|
""")
|
|
|
|
if latfilename.endswith("slf"):
|
|
lattice_htk_wordnode(latfile)
|
|
else:
|
|
lattice_s3(latfile)
|