38                         const std::string &utt_id,
    41                         int32 length_tolerance,
    45   if (!utt_splitter->
LengthsMatch(utt_id, num_input_frames,
    54   std::vector<ChunkTimeInfo> chunks;
    59     KALDI_WARN << 
"Not producing egs for utterance " << utt_id
    60                << 
" because it is too short: "    61                << num_input_frames << 
" frames.";
    68   int32 frame_subsampling_factor =
    71   for (
size_t c = 0; c < chunks.size(); c++) {
    92     if (ivector_feats != NULL) {
    96                                     start_frame + num_input_frames - 1),
    97           ivector_frame_subsampled = ivector_frame / ivector_period;
    98       if (ivector_frame_subsampled < 0)
    99         ivector_frame_subsampled = 0;
   100       if (ivector_frame_subsampled >= ivector_feats->
NumRows())
   101         ivector_frame_subsampled = ivector_feats->
NumRows() - 1;
   103       ivector.
Row(0).CopyFromVec(ivector_feats->
Row(ivector_frame_subsampled));
   104       eg.
io.push_back(
NnetIo(
"ivector", 0, ivector));
   109     int32 start_frame_subsampled = chunk.
first_frame / frame_subsampling_factor,
   110         num_frames_subsampled = chunk.
num_frames / frame_subsampling_factor;
   112     KALDI_ASSERT(start_frame_subsampled + num_frames_subsampled - 1 <
   118     for (
int32 i = 0; 
i < num_frames_subsampled; 
i++) {
   121       int32 t = 
i + start_frame_subsampled;
   130     eg.
io.push_back(
NnetIo(
"output", 0, targets_part, frame_subsampling_factor));
   135     std::ostringstream os;
   138     std::string key = os.str(); 
   140     example_writer->
Write(key, eg);
   148 int main(
int argc, 
char *argv[]) {
   150     using namespace kaldi;
   153     typedef kaldi::int64 int64;
   156         "Get frame-by-frame examples of data for nnet3 neural network training.\n"   157         "This program is similar to nnet3-get-egs, but the targets here are "   158         "dense matrices instead of posteriors (sparse matrices).\n"   159         "This is useful when you want the targets to be continuous real-valued "   160         "with the neural network possibly trained with a quadratic objective\n"   162         "Usage:  nnet3-get-egs-dense-targets --num-targets=<n> [options] "   163         "<features-rspecifier> <targets-rspecifier> <egs-out>\n"   165         "An example [where $feats expands to the actual features]:\n"   166         "nnet-get-egs-dense-targets --num-targets=26 --left-context=12 \\\n"   167         "--right-context=9 --num-frames=8 \"$feats\" \\\n"   168         "\"ark:copy-matrix ark:exp/snrs/snr.1.ark ark:- |\"\n"   172     bool compress = 
true;
   173     int32 num_targets = -1, length_tolerance = 100,
   174         targets_length_tolerance = 2,  
   175         online_ivector_period = 1;
   180     std::string online_ivector_rspecifier;
   184     po.
Register(
"compress", &compress, 
"If true, write egs with input features "   185                 "in compressed format (recommended).  This is "   186                 "only relevant if the features being read are un-compressed; "   187                 "if already compressed, we keep we same compressed format when "   189     po.
Register(
"num-targets", &num_targets, 
"Output dimension in egs, "   190                 "only used to check targets have correct dim if supplied.");
   191     po.
Register(
"ivectors", &online_ivector_rspecifier, 
"Alias for "   192                 "--online-ivectors option, for back compatibility");
   193     po.
Register(
"online-ivectors", &online_ivector_rspecifier, 
"Rspecifier of "   194                 "ivector features, as a matrix.");
   195     po.
Register(
"online-ivector-period", &online_ivector_period, 
"Number of "   196                 "frames between iVectors in matrices supplied to the "   197                 "--online-ivectors option");
   198     po.
Register(
"length-tolerance", &length_tolerance, 
"Tolerance for "   199                 "difference in num-frames between feat and ivector matrices");
   200     po.
Register(
"targets-length-tolerance", &targets_length_tolerance, 
   202                 "difference in num-frames (after subsampling) between "   203                 "feature and target matrices");
   216     std::string feature_rspecifier = po.
GetArg(1),
   217         matrix_rspecifier = po.
GetArg(2),
   218         examples_wspecifier = po.
GetArg(3);
   228         online_ivector_rspecifier);
   232     for (; !feat_reader.
Done(); feat_reader.
Next()) {
   233       std::string key = feat_reader.
Key();
   235       if (!matrix_reader.
HasKey(key)) {
   236         KALDI_WARN << 
"No target matrix for key " << key;
   241         if (!online_ivector_rspecifier.empty()) {
   242           if (!online_ivector_reader.
HasKey(key)) {
   243             KALDI_WARN << 
"No iVectors for utterance " << key;
   249             online_ivector_feats = &(online_ivector_reader.
Value(key));
   253         if (online_ivector_feats != NULL &&
   255                                     online_ivector_period)) > length_tolerance
   256              || online_ivector_feats->
NumRows() == 0)) {
   258                      << 
" and iVectors " << online_ivector_feats->
NumRows()
   259                      << 
"exceeds tolerance " << length_tolerance;
   264         if (!
ProcessFile(feats, online_ivector_feats, online_ivector_period,
   265                          target_matrix, key, compress, num_targets, 
   266                          targets_length_tolerance,
   267                          &utt_splitter, &example_writer))
   272       KALDI_WARN << num_err << 
" utterances had errors and could "   276   } 
catch(
const std::exception &e) {
   277     std::cerr << e.what() << 
'\n';
 NnetExample is the input data and corresponding label (or labels) for one or more frames of input...
 
This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
 
This class is a wrapper that enables you to store a matrix in one of three forms: either as a Matrix<...
 
bool LengthsMatch(const std::string &utt, int32 utterance_length, int32 supervision_length, int32 length_tolerance=0) const
 
int32 frame_subsampling_factor
 
MatrixIndexT NumCols() const
Returns number of columns (or zero for empty matrix). 
 
Base class which provides matrix operations not involving resizing or allocation. ...
 
void PrintUsage(bool print_command_line=false)
Prints the usage documentation [provided in the constructor]. 
 
int main(int argc, char *argv[])
 
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)
 
Allows random access to a collection of objects in an archive or script file; see The Table concept...
 
void CopyFromVec(const VectorBase< Real > &v)
Copy data from another vector (must match own size). 
 
The class ParseOptions is for parsing command-line options; see Parsing command-line options for more...
 
const SubVector< Real > Row(MatrixIndexT i) const
Return specific row of matrix [const]. 
 
const T & Value(const std::string &key)
 
static bool ProcessFile(const discriminative::SplitDiscriminativeSupervisionOptions &config, const TransitionModel &tmodel, const MatrixBase< BaseFloat > &feats, const MatrixBase< BaseFloat > *ivector_feats, int32 ivector_period, const discriminative::DiscriminativeSupervision &supervision, const std::string &utt_id, bool compress, UtteranceSplitter *utt_splitter, NnetDiscriminativeExampleWriter *example_writer)
 
A templated class for reading objects sequentially from an archive or script file; see The Table conc...
 
void Register(OptionsItf *po)
 
int Read(int argc, const char *const *argv)
Parses the command line options and fills the ParseOptions-registered variables. 
 
void ExtractRowRangeWithPadding(const GeneralMatrix &in, int32 row_offset, int32 num_rows, GeneralMatrix *out)
This function extracts a row-range of a GeneralMatrix and writes as a GeneralMatrix containing the sa...
 
void Compress()
Compresses any (input) features that are not sparse. 
 
std::string GetArg(int param) const
Returns one of the positional parameters; 1-based indexing for argc/argv compatibility. 
 
bool HasKey(const std::string &key)
 
const ExampleGenerationConfig & Config() const
 
int NumArgs() const
Number of positional parameters (c.f. argc-1). 
 
#define KALDI_ASSERT(cond)
 
MatrixIndexT NumRows() const
Returns number of rows (or zero for empty matrix). 
 
MatrixIndexT NumRows() const
 
void GetChunksForUtterance(int32 utterance_length, std::vector< ChunkTimeInfo > *chunk_info)
 
struct ChunkTimeInfo is used by class UtteranceSplitter to output information about how we split an u...
 
std::vector< NnetIo > io
"io" contains the input and output. 
 
Represents a non-allocating general vector which can be defined as a sub-vector of higher-level vecto...
 
int32 RandInt(int32 min_val, int32 max_val, struct RandomState *state)
 
void ComputeDerived()
This function decodes 'num_frames_str' into 'num_frames', and ensures that the members of 'num_frames...