29 using namespace kaldi;
33 "From posteriors, compute transition-accumulators\n" 34 "The output is a vector of counts/soft-counts, indexed by transition-id)\n" 35 "Note: the model is only read in order to get the size of the vector\n" 37 "Usage: post-to-tacc [options] <model> <post-rspecifier> <accs>\n" 38 " e.g.: post-to-tacc --binary=false 1.mdl \"ark:ali-to-post 1.ali|\" 1.tacc\n" 39 "See also: get-post-on-ali\n";
44 po.Register(
"binary", &binary,
"Write output in binary mode.");
45 po.Register(
"per-pdf", &per_pdf,
"if ture, accumulate counts per pdf-id" 46 " rather than transition-id. (default: false)");
49 if (po.NumArgs() != 3) {
54 std::string model_rxfilename = po.GetArg(1),
55 post_rspecifier = po.GetArg(2),
56 accs_wxfilename = po.GetArg(3);
60 int32 num_transition_ids;
63 Input ki(model_rxfilename, &binary_in);
65 trans_model.
Read(ki.Stream(), binary_in);
72 for (; !posterior_reader.Done(); posterior_reader.Next()) {
74 int32 num_frames =
static_cast<int32
>(posterior.size());
75 for (int32
i = 0;
i < num_frames;
i++) {
76 for (int32
j = 0; j < static_cast<int32>(posterior[
i].size());
j++) {
77 int32 tid = posterior[
i][
j].first;
78 if (tid <= 0 || tid > num_transition_ids)
79 KALDI_ERR <<
"Invalid transition-id " << tid
80 <<
" encountered for utterance " 81 << posterior_reader.Key();
82 transition_accs(tid) += posterior[
i][
j].second;
89 KALDI_LOG <<
"accumulate counts per pdf-id";
90 int32 num_pdf_ids = trans_model.
NumPdfs();
92 for (int32
i = 1;
i < num_transition_ids;
i++) {
94 pdf_accs(pid) += transition_accs(
i);
97 Output ko(accs_wxfilename, binary);
98 pdf_accs_float.Write(ko.Stream(), binary);
101 Output ko(accs_wxfilename, binary);
102 transition_accs_float.Write(ko.Stream(), binary);
104 KALDI_LOG <<
"Done computing transition stats over " 105 << num_done <<
" utterances; wrote stats to " 107 return (num_done != 0 ? 0 : 1);
108 }
catch(
const std::exception &e) {
109 std::cerr << e.what();
This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
int32 TransitionIdToPdf(int32 trans_id) const
std::vector< std::vector< std::pair< int32, BaseFloat > > > Posterior
Posterior is a typedef for storing acoustic-state (actually, transition-id) posteriors over an uttera...
The class ParseOptions is for parsing command-line options; see Parsing command-line options for more...
int32 NumTransitionIds() const
Returns the total number of transition-ids (note, these are one-based).
void Read(std::istream &is, bool binary)
A templated class for reading objects sequentially from an archive or script file; see The Table conc...