32     using namespace kaldi;
    34     typedef kaldi::int64 int64;
    35     using fst::SymbolTable;
    41         "This program can be used to subtract scores from one language model and\n"    42         "add scores from another one.  It uses an efficient rescoring algorithm that\n"    43         "avoids exploring the entire composed lattice.  The first (negative-weight)\n"    44         "language model is expected to be an FST, e.g. G.fst; the second one can\n"    45         "either be in FST or const-arpa format.  Any FST-format language models will\n"    46         "be projected on their output by this program, making it unnecessary for the\n"    47         "caller to remove disambiguation symbols.\n"    49         "Usage: lattice-lmrescore-pruned [options] <lm-to-subtract> <lm-to-add> <lattice-rspecifier> <lattice-wspecifier>\n"    50         " e.g.: lattice-lmrescore-pruned --acoustic-scale=0.1 \\\n"    51         "      data/lang/G.fst data/lang_fg/G.fst ark:in.lats ark:out.lats\n"    52         " or: lattice-lmrescore-pruned --acoustic-scale=0.1 --add-const-arpa=true\\\n"    53         "      data/lang/G.fst data/lang_fg/G.carpa ark:in.lats ark:out.lats\n";
    62     bool add_const_arpa = 
false;
    64     po.Register(
"lm-scale", &lm_scale, 
"Scaling factor for <lm-to-add>; its negative "    65                 "will be applied to <lm-to-subtract>.");
    66     po.Register(
"acoustic-scale", &acoustic_scale, 
"Scaling factor for acoustic "    67                 "probabilities (e.g. 0.1 for non-chain systems); important because "    68                 "of its effect on pruning.");
    69     po.Register(
"add-const-arpa", &add_const_arpa, 
"If true, <lm-to-add> is expected"    70                 "to be in const-arpa format; if false it's expected to be in FST"    76     if (po.NumArgs() != 4) {
    81     std::string lm_to_subtract_rxfilename = po.GetArg(1),
    82         lm_to_add_rxfilename = po.GetArg(2),
    83         lats_rspecifier = po.GetArg(3),
    84         lats_wspecifier = po.GetArg(4);
    88         lm_to_subtract_rxfilename);
    89     VectorFst<StdArc> *lm_to_add_fst = NULL;
    99         -lm_scale, &lm_to_subtract_det_backoff);
   104     if (add_const_arpa) {
   110     if (lm_scale != 1.0) {
   111       lm_to_add_orig = lm_to_add;
   124     int32 num_done = 0, num_err = 0;
   126     for (; !clat_reader.Done(); clat_reader.Next()) {
   127       std::string key = clat_reader.Key();
   130       if (acoustic_scale != 1.0) {
   141           &lm_to_subtract_det_scale, lm_to_add);
   149       if (composed_clat.NumStates() == 0) {
   153         if (acoustic_scale != 1.0) {
   154           if (acoustic_scale == 0.0)
   155             KALDI_ERR << 
"Acoustic scale cannot be zero.";
   159         compact_lattice_writer.Write(key, composed_clat);
   163     delete lm_to_subtract_fst;
   164     delete lm_to_add_fst;
   165     delete lm_to_add_orig;
   168     KALDI_LOG << 
"Overall, succeeded for " << num_done
   169               << 
" lattices, failed for " << num_err;
   170     return (num_done != 0 ? 0 : 1);
   171   } 
catch(
const std::exception &e) {
   172     std::cerr << e.what();
 This class wraps an Fst, representing a language model, using the interface for "BackoffDeterministic...
 
This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
 
Class ScaleDeterministicOnDemandFst takes another DeterministicOnDemandFst and scales the weights (li...
 
A templated class for writing objects to an archive or script file; see The Table concept...
 
void ReadKaldiObject(const std::string &filename, Matrix< float > *m)
 
std::vector< std::vector< double > > AcousticLatticeScale(double acwt)
 
The class ParseOptions is for parsing command-line options; see Parsing command-line options for more...
 
void ScaleLattice(const std::vector< std::vector< ScaleFloat > > &scale, MutableFst< ArcTpl< Weight > > *fst)
Scales the pairs of weights in LatticeWeight or CompactLatticeWeight by viewing the pair (a...
 
fst::VectorFst< fst::StdArc > * ReadAndPrepareLmFst(std::string rxfilename)
 
A templated class for reading objects sequentially from an archive or script file; see The Table conc...
 
void ComposeCompactLatticePruned(const ComposeLatticePrunedOptions &opts, const CompactLattice &clat, fst::DeterministicOnDemandFst< fst::StdArc > *det_fst, CompactLattice *composed_clat)
Does pruned composition of a lattice 'clat' with a DeterministicOnDemandFst 'det_fst'; implements LM ...
 
fst::VectorFst< CompactLatticeArc > CompactLattice
 
void ReadFstKaldi(std::istream &is, bool binary, VectorFst< Arc > *fst)
 
void TopSortCompactLatticeIfNeeded(CompactLattice *clat)
Topologically sort the compact lattice if not already topologically sorted. 
 
This class wraps a ConstArpaLm format language model with the interface defined in DeterministicOnDem...