Hi,
Currently, I can use RNNLM for rescoring and get impressive result.
I tried to intregrate the function that use for RNNLM rescoring from src/latbin/lattice-lmrescore-kaldi-rnnlm-pruned.cc into our own decoder.
The idea is to do online decoding and rescoring then we can get the output after RNNLM rescoring directly.
The code can be compiled without any error, but I got Segmentation Fault when run the decoder.
I use gdb to debug, then I got the following sign:
[New Thread 0x7fffedffb700 (LWP 12911)]
Thread 258 "dnn_batch" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffedffb700 (LWP 12911)]
0x00007ffff78a8ad7 in ATL_sdot_xp1yp1aXbX () from src/mykaldi/build_master/libDavinciCsr.so
I type "bt", the get the following sign:
#0 0x00007ffff78a8ad7 in ATL_sdot_xp1yp1aXbX () from src/mykaldi/build_master/libDavinciCsr.so
#1 0x00007ffff79ed08b in kaldi::rnnlm::RnnlmComputeState::LogProbOfWord(int) const ()
from src/mykaldi/build_master/libDavinciCsr.so
#2 0x00007ffff79ee879 in kaldi::rnnlm::KaldiRnnlmDeterministicFst::GetArc(int, int, fst::ArcTpl<fst::TropicalWeightTpl<float> >*) ()
from src/mykaldi/build_master/libDavinciCsr.so
#3 0x00007ffff73be2d7 in fst::ScaleDeterministicOnDemandFst::GetArc(int, int, fst::ArcTpl<fst::TropicalWeightTpl<float> >*) ()
from src/mykaldi/build_master/libDavinciCsr.so
#4 0x00007ffff740c2a7 in fst::ComposeDeterministicOnDemandFst<fst::ArcTpl<fst::TropicalWeightTpl<float> > >::GetArc(int, int, fst::ArcTpl<fst::TropicalWeightTpl<float> >*) () from src/mykaldi/build_master/libDavinciCsr.so
#5 0x00007ffff777c340 in kaldi::PrunedCompactLatticeComposer::ProcessTransition(int, int) ()
from src/mykaldi/build_master/libDavinciCsr.so
#6 0x00007ffff777cfa8 in kaldi::PrunedCompactLatticeComposer::ProcessQueueElement(int) ()
from src/mykaldi/build_master/libDavinciCsr.so
#7 0x00007ffff777dd0a in kaldi::PrunedCompactLatticeComposer::Compose() ()
from src/mykaldi/build_master/libDavinciCsr.so
#8 0x00007ffff777e050 in kaldi::ComposeCompactLatticePruned(kaldi::ComposeLatticePrunedOptions const&, fst::VectorFst<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> >, fst::VectorState<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> >, std::allocator<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> > > > > const&, fst::DeterministicOnDemandFst<fst::ArcTpl<fst::TropicalWeightTpl<float> > >*, fst::VectorFst<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> >, fst::VectorState<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> >, std::allocator<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> > > > >*) () from src/mykaldi/build_master/libDavinciCsr.so
#9 0x00007ffff741c273 in RNNLM_Rescore(fst::VectorFst<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> >, fst::VectorState<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> >, std::allocator<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> > > > >, fst::VectorFst<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> >, fst::VectorState<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> >, std::allocator<fst::ArcTpl<fst::CompactLatticeWeightTpl<fst::LatticeWeightTpl<float>, int> > > > >&, kaldi::rnnlm::KaldiRnnlmDeterministicFst*, fst::ScaleDeterministicOnDemandFst*, kaldi::ComposeLatticePrunedOptions, float, float, pthread_mutex_t*) () from /var/speech/DavinciCSR/src/mykaldi/build_master/libDavinciCsr.so
#10 0x00007ffff741d9c1 in DNN_PostSearch(void*, char const*, long*, bool) ()
from src/mykaldi/build_master/libDavinciCsr.so
#11 0x00007ffff736376d in kaldi_dnn_post_search(void*, char const*, long*, bool) ()
from src/mykaldi/build_master/libDavinciCsr.so
#12 0x0000000000414a6c in ConcreteThread::Process() ()
#13 0x0000000000409c91 in AbstractThread::CallThreadFunc(void*) ()
#14 0x00007ffff70aa6ba in start_thread (arg=0x7fffedffb700) at pthread_create.c:333
#15 0x00007ffff653f41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Any suggestion?
Thanks,
Alim
Pada Kamis, 26 Juli 2018 03.58.25 UTC+8, Dan Povey menulis:
If the RNNLM was trained with letter-based features, it is possible to extend the vocabulary without retraining the RNNLM. Hainan or Samuel, is there an example script for this?
I don't know how well this would work for Mandarin though.
Hi,
If I have new word in dictionary and do first pass decoding.
In fact, we need to re-train RNNLM model, otherwise the words.txt will not match.
How do we handle this case without re-train RNNLM when we have new word in dictionary.
This case may happened for Mandarin dictionary.
Thanks,
Alim
--
Go to http://kaldi-asr.org/forums.html find out how to join
---
You received this message because you are subscribed to the Google Groups "kaldi-help" group.