29 int main(
int argc,
char *argv[]) {
31 using namespace kaldi;
33 typedef kaldi::int64 int64;
38 "Compute best path through lattices and write out as FSTs\n" 39 "Note: differs from lattice-nbest with --n=1 because we won't\n" 40 "append -1 to the utterance-ids. Differs from lattice-best-path\n" 41 "because output is FST.\n" 43 "Usage: lattice-1best [options] <lattice-rspecifier> <lattice-wspecifier>\n" 44 " e.g.: lattice-1best --acoustic-scale=0.1 ark:1.lats ark:1best.lats\n";
51 po.
Register(
"acoustic-scale", &acoustic_scale,
52 "Scaling factor for acoustic likelihoods");
54 "Scaling factor for language model scores.");
55 po.
Register(
"word-ins-penalty", &word_ins_penalty,
56 "Word insertion penality.");
65 std::string lats_rspecifier = po.
GetArg(1),
66 lats_wspecifier = po.
GetArg(2);
73 int32 n_done = 0, n_err = 0;
75 if (acoustic_scale == 0.0 || lm_scale == 0.0)
76 KALDI_ERR <<
"Do not use exactly zero acoustic or LM scale (cannot be inverted)";
77 for (; !clat_reader.
Done(); clat_reader.
Next()) {
78 std::string key = clat_reader.
Key();
82 if (word_ins_penalty > 0.0) {
89 if (best_path.Start() == fst::kNoStateId) {
90 KALDI_WARN <<
"Possibly empty lattice for utterance-id " << key
94 if (word_ins_penalty > 0.0) {
99 compact_1best_writer.
Write(key, best_path);
103 KALDI_LOG <<
"Done converting " << n_done <<
" to best path, " 104 << n_err <<
" had errors.";
105 return (n_done != 0 ? 0 : 1);
106 }
catch(
const std::exception &e) {
107 std::cerr << e.what();
This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
void PrintUsage(bool print_command_line=false)
Prints the usage documentation [provided in the constructor].
A templated class for writing objects to an archive or script file; see The Table concept...
void Write(const std::string &key, const T &value) const
void Register(const std::string &name, bool *ptr, const std::string &doc)
void CompactLatticeShortestPath(const CompactLattice &clat, CompactLattice *shortest_path)
A form of the shortest-path/best-path algorithm that's specially coded for CompactLattice.
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...
A templated class for reading objects sequentially from an archive or script file; see The Table conc...
std::vector< std::vector< double > > LatticeScale(double lmwt, double acwt)
int Read(int argc, const char *const *argv)
Parses the command line options and fills the ParseOptions-registered variables.
std::string GetArg(int param) const
Returns one of the positional parameters; 1-based indexing for argc/argv compatibility.
void AddWordInsPenToCompactLattice(BaseFloat word_ins_penalty, CompactLattice *clat)
This function add the word insertion penalty to graph score of each word in the compact lattice...
fst::VectorFst< CompactLatticeArc > CompactLattice
int NumArgs() const
Number of positional parameters (c.f. argc-1).
int main(int argc, char *argv[])