29 using namespace kaldi;
32 typedef kaldi::uint64 uint64;
35 "Reads a kaldi archive of FSTs. Performs the FST operation union on\n" 36 "all fsts sharing the same key. Assumes the archive is sorted by key.\n" 38 "Usage: fsts-union [options] <fsts-rspecifier> <fsts-wspecifier>\n" 39 " e.g.: fsts-union ark:keywords_tmp.fsts ark,t:keywords.fsts\n" 41 "see also: fstunion (from the OpenFst toolkit)\n";
47 if (po.NumArgs() != 2) {
52 std::string fsts_rspecifier = po.GetArg(1),
53 fsts_wspecifier = po.GetArg(2);
61 std::string res_key =
"";
62 VectorFst<StdArc> res_fst;
64 for (; !fst_reader.Done(); fst_reader.Next()) {
65 std::string key = fst_reader.Key();
66 VectorFst<StdArc>
fst(fst_reader.Value());
70 fst::Union(&res_fst,
fst);
73 VectorFst<StdArc> out_fst;
74 fst::Determinize(res_fst, &out_fst);
75 fst::Minimize(&out_fst);
76 fst::RmEpsilon(&out_fst);
77 fst_writer.Write(res_key, out_fst);
85 VectorFst<StdArc> out_fst;
86 fst::Determinize(res_fst, &out_fst);
87 fst::Minimize(&out_fst);
88 fst::RmEpsilon(&out_fst);
89 fst_writer.Write(res_key, out_fst);
93 KALDI_LOG <<
"Applied fst union on " << n_in_done
94 <<
" FSTs, produced " << n_out_done <<
" FSTs";
95 return (n_out_done != 0 ? 0 : 1);
96 }
catch(
const std::exception &e) {
97 std::cerr << e.what();
This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
For an extended explanation of the framework of which grammar-fsts are a part, please see Support for...
A templated class for writing objects to an archive or script file; see The Table concept...
The class ParseOptions is for parsing command-line options; see Parsing command-line options for more...
A templated class for reading objects sequentially from an archive or script file; see The Table conc...