End-to-end version of lattice-free MMI is mainly based on these two papers:
- "End-to-end speech recognition using lattice-free MMI", Hossein Hadian, Hossein Sameti, Daniel Povey, Sanjeev Khudanpur, Interspeech 2018 (pdf)
- "Purely sequence-trained neural networks for ASR based on lattice-free MMI", Daniel Povey, Vijayaditya Peddinti, Daniel Galvez, Pegah Ghahrmani, Vimal Manohar, Xingyu Na, Yiming Wang and Sanjeev Khudanpur, Interspeech 2016, (pdf) (slides,pptx)
The code is a modification of the version in the kaldi repository with no dependency on the kaldi base.
Install PyTorch
Download and install OpenFST
OPENFST_PATH shold be set to the root of the OpenFst installation.
i.e. $OPENFST_PATH/include and $OPENFST_PATH/openfst should contain the required
headers and libraries.
./configure --prefix=`pwd` --enable-static --enable-shared --enable-ngram-fsts CXX="g++" LIBS="-ldl" CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0"
make
make installNote that the option -D_GLIBCXX_USE_CXX11_ABI=0 must be compatible with the
option used when compiling PyTorch. Details here.
cd pytorch_binding
python setup.py install/contains the instructions and makefiles etc.srccontains C++/CUDA code agnostic of PyTorchpytorch_bindingscontains the pytorch-based module of the LF-MMI objf functionsrccontains C++ level implementation of the LF-MMI objf functionpychain_pytorchcontains python level implementation of the LF-MMI objf function. This includes the actual loss-function module, which can be bound the C++ level code.__init__.pythe actual implementation of the python module
openfst_bindingscontains the openfst-based module to interact with FSTs