| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import graphviz |
| |
|
| | from icefall import is_module_available |
| |
|
| | if not is_module_available("kaldifst"): |
| | raise ValueError("Please 'pip install kaldifst' first.") |
| |
|
| | import kaldifst |
| |
|
| | from icefall import NgramLm, NgramLmStateCost |
| |
|
| |
|
| | def generate_fst(filename: str): |
| | s = """ |
| | 3 5 1 1 3.00464 |
| | 3 0 3 0 5.75646 |
| | 0 1 1 1 12.0533 |
| | 0 2 2 2 7.95954 |
| | 0 9.97787 |
| | 1 4 2 2 3.35436 |
| | 1 0 3 0 7.59853 |
| | 2 0 3 0 |
| | 4 2 3 0 7.43735 |
| | 4 0.551239 |
| | 5 4 2 2 0.804938 |
| | 5 1 3 0 9.67086 |
| | """ |
| | fst = kaldifst.compile(s=s, acceptor=False) |
| | fst.write(filename) |
| | fst_dot = kaldifst.draw(fst, acceptor=False, portrait=True) |
| | source = graphviz.Source(fst_dot) |
| | source.render(outfile=f"{filename}.svg") |
| |
|
| |
|
| | def main(): |
| | filename = "test.fst" |
| | generate_fst(filename) |
| | ngram_lm = NgramLm(filename, backoff_id=3, is_binary=True) |
| | for label in [1, 2, 3, 4, 5]: |
| | print("---label---", label) |
| | p = ngram_lm.get_next_state_and_cost(state=5, label=label) |
| | print(p) |
| | print("---") |
| |
|
| | state_cost = NgramLmStateCost(ngram_lm) |
| | s0 = state_cost.forward_one_step(1) |
| | print(s0.state_cost) |
| |
|
| | s1 = s0.forward_one_step(2) |
| | print(s1.state_cost) |
| |
|
| | s2 = s1.forward_one_step(2) |
| | print(s2.state_cost) |
| |
|
| |
|
| | if __name__ == "__main__": |
| | main() |
| |
|