icefall/icefall/ctc/test_prepare_lang.py

44 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python3
# Copyright 2023 Xiaomi Corp. (authors: Fangjun Kuang)
from pathlib import Path
import graphviz
import kaldifst
from prepare_lang import Lexicon, make_lexicon_fst_with_silence
def test_yesno():
lang_dir = "/Users/fangjun/open-source/icefall/egs/yesno/ASR/data/lang_phone"
if not Path(lang_dir).is_dir():
print(f"{lang_dir} does not exist! Skip testing")
return
lexicon = Lexicon(lang_dir)
L = make_lexicon_fst_with_silence(lexicon)
isym = kaldifst.SymbolTable()
for i, token in lexicon.id2token.items():
isym.add_symbol(symbol=token, key=i)
osym = kaldifst.SymbolTable()
for i, word in lexicon.id2word.items():
osym.add_symbol(symbol=word, key=i)
L.input_symbols = isym
L.output_symbols = osym
fst_dot = kaldifst.draw(L, acceptor=False, portrait=True)
source = graphviz.Source(fst_dot)
source.render(outfile="L_yesno.pdf")
# See the link below to visualize the above PDF
# https://t.ly/jMfXW
def main():
test_yesno()
if __name__ == "__main__":
main()