当与GStreamer一起使用时,在Kaldi中断言

时间:2017-11-24 10:28:07

标签: gstreamer kaldi

使用Alumae中的GStreamer插件和以下管道:

appsrc source='appsrc' ! wavparse ! audioconvert ! audioresample ! queue ! kaldinnet2onlinedecoder <parameters snipped> ! filesink location=/tmp/test

我总是得到以下断言,我不明白 KALDI_ASSERT(current_log_post_.NumRows() == info_.frames_per_chunk / info_.opts.frame_subsampling_factor && current_log_post_.NumCols() == info_.output_dim);

这个断言错误是什么?如何解决?

仅供参考,推送到管道的数据来自流式传输的wav文件,并用 wavenc 替换 kaldinnetonlinedecoder ,在最后正确生成Wav文件而不是文本文件。

修改 以下是使用的参数:

use-threaded-decoder=0   
model=/opt/en/final.mdl   
word-syms=<word-file>  
fst=<fst_file>
mfcc-config=<mfcc-file>  
ivector-extraction-config=/opt/en/ivector-extraction/ivector_extractor.conf  
max-active=10000  
beam=10.0  
lattice-beam=6.0  
do-endpointing=1  
endpoint-silence-phones=\"1:2:3:4:5:6:7:8:9:10\"  
traceback-period-in-secs=0.25  
num-nbest=10  

为了您的信息,使用python中的管道文本表示工作但编码(即使用Gst.Element_Factory.make等)总是抛出异常

第二次更新 这是断言

生成的完整堆栈跟踪
ASSERTION_FAILED ([5.2]:AdvanceChunk():decodable-online-looped.cc:223) : 'current_log_post_.NumRows() == info_.frames_per_chunk / info_.opts.frame_subsampling_factor && current_log_post_.NumCols() == info_.output_dim'

[ Stack-Trace: ]

kaldi::MessageLogger::HandleMessage(kaldi::LogMessageEnvelope const&, char const*)
kaldi::MessageLogger::~MessageLogger()
kaldi::KaldiAssertFailure_(char const*, char const*, int, char const*)
kaldi::nnet3::DecodableNnetLoopedOnlineBase::AdvanceChunk()
kaldi::nnet3::DecodableNnetLoopedOnlineBase::EnsureFrameIsComputed(int)
kaldi::nnet3::DecodableAmNnetLoopedOnline::LogLikelihood(int, int)
kaldi::LatticeFasterOnlineDecoder::ProcessEmitting(kaldi::DecodableInterface*)
kaldi::LatticeFasterOnlineDecoder::AdvanceDecoding(kaldi::DecodableInterface*, int)
kaldi::SingleUtteranceNnet3Decoder::AdvanceDecoding()

1 个答案:

答案 0 :(得分:0)

即使使用 frame-subsampling-factor 参数,我终于完成了它。

问题在于参数的顺序。 fst model 参数必须是最后的参数。

因此以下文本链起作用:

a = 'a small string';
b = 'a small string';
a === b; //true, takes 0.1ms

我在GitHub上为此开了an issue对我来说,这真的很难找到,至少应该记录下来。