38 int main(
int argc,
char *argv[]) {
40 using namespace kaldi;
44 "Save features as HTK files:\n" 45 "Each utterance will be stored as a unique HTK file in a specified directory.\n" 46 "The HTK filename will correspond to the utterance-id (key) in the input table, with the specified extension.\n" 47 "Usage: copy-feats-to-htk [options] in-rspecifier\n" 48 "Example: copy-feats-to-htk --output-dir=/tmp/HTK-features --output-ext=fea scp:feats.scp\n";
51 std::string dir_out =
"./";
52 std::string ext_out =
"fea";
53 int32 sample_period = 100000;
54 int32 sample_kind = 9;
70 po.
Register(
"output-ext", &ext_out,
"Output ext of HTK files");
71 po.
Register(
"output-dir", &dir_out,
"Output directory");
72 po.
Register(
"sample-period", &sample_period,
"HTK sampPeriod - sample period in 100ns units");
73 po.
Register(
"sample-kind", &sample_kind,
"HTK parmKind - a code indicating the sample kind (e.g., 6=MFCC, 7=FBANK, 9=USER, 11=PLP)");
86 std::string rspecifier = po.
GetArg(1);
89 const char * c = dir_out.c_str();
90 if ( access( c, 0 ) != 0 ){
94 if (mkdir(c, S_IRWXU|S_IRGRP|S_IXGRP) != 0)
96 KALDI_ERR <<
"Could not create output directory: " << dir_out;
115 int32 num_frames, dim, num_done=0;
117 for (; !feats_reader.
Done(); feats_reader.
Next()) {
118 std::string utt = feats_reader.
Key();
127 std::stringstream ss;
128 ss << dir_out <<
"/" << utt <<
"." << ext_out;
129 output.
Range(0, num_frames, 0, dim).CopyFromMat(feats.
Range(0, num_frames, 0, dim));
130 std::ofstream os(ss.str().c_str(), std::ios::out|std::ios::binary);
134 KALDI_LOG << num_done <<
" HTK feature files generated in the direcory: " << dir_out;
135 return (num_done != 0 ? 0 : 1);
137 }
catch(
const std::exception &e) {
138 std::cerr << e.what();
This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
int main(int argc, char *argv[])
MatrixIndexT NumCols() const
Returns number of columns (or zero for empty matrix).
void PrintUsage(bool print_command_line=false)
Prints the usage documentation [provided in the constructor].
bool WriteHtk(std::ostream &os, const MatrixBase< Real > &M, HtkHeader htk_hdr)
void Register(const std::string &name, bool *ptr, const std::string &doc)
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...
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.
int NumArgs() const
Number of positional parameters (c.f. argc-1).
MatrixIndexT NumRows() const
Returns number of rows (or zero for empty matrix).
SubMatrix< Real > Range(const MatrixIndexT row_offset, const MatrixIndexT num_rows, const MatrixIndexT col_offset, const MatrixIndexT num_cols) const
Return a sub-part of matrix.