32     using namespace kaldi;
    36     typedef kaldi::int64 int64;
    39         "Reads in wav file(s) and processes them as in online2-wav-nnet2-latgen-faster,\n"    40         "but instead of decoding, dumps the features.  Most of the parameters\n"    41         "are set via configuration variables.\n"    43         "Usage: online2-wav-dump-features [options] <spk2utt-rspecifier> <wav-rspecifier> <feature-wspecifier>\n"    44         "The spk2utt-rspecifier can just be <utterance-id> <utterance-id> if\n"    45         "you want to generate features utterance by utterance.\n"    46         "Alternate usage: online2-wav-dump-features [options] --print-ivector-dim=true\n"    47         "See steps/online/nnet2/{dump_nnet_activations,get_egs.sh} for examples.\n";
    55     bool print_ivector_dim = 
false;
    57     po.Register(
"chunk-length", &chunk_length_secs,
    58                 "Length of chunk size in seconds, that we process.");
    59     po.Register(
"print-ivector-dim", &print_ivector_dim,
    60                 "If true, print iVector dimension (possibly zero) and exit.  This "    61                 "version requires no arguments.");
    67     if (!print_ivector_dim && po.NumArgs() != 3) {
    74     if (print_ivector_dim) {
    75       std::cout << feature_info.IvectorDim() << std::endl;
    79     std::string spk2utt_rspecifier = po.GetArg(1),
    80         wav_rspecifier = po.GetArg(2),
    81         feats_wspecifier = po.GetArg(3);
    84     int32 num_done = 0, num_err = 0;
    85     int64 num_frames_tot = 0;
    91     for (; !spk2utt_reader.Done(); spk2utt_reader.Next()) {
    92       std::string spk = spk2utt_reader.Key();
    93       const std::vector<std::string> &uttlist = spk2utt_reader.Value();
    95           feature_info.ivector_extractor_info);
    96       for (
size_t i = 0; 
i < uttlist.size(); 
i++) {
    97         std::string utt = uttlist[
i];
    98         if (!wav_reader.HasKey(utt)) {
    99           KALDI_WARN << 
"Did not find audio for utterance " << utt;
   103         const WaveData &wave_data = wav_reader.Value(utt);
   109         feature_pipeline.SetAdaptationState(adaptation_state);
   111         std::vector<Vector<BaseFloat> *> feature_data;
   119         int32 chunk_length = 
int32(samp_freq * chunk_length_secs);
   120         if (chunk_length == 0) chunk_length = 1;
   122         int32 samp_offset = 0;
   123         while (samp_offset < data.Dim()) {
   124           int32 samp_remaining = data.Dim() - samp_offset;
   125           int32 num_samp = chunk_length < samp_remaining ? chunk_length
   129           feature_pipeline.AcceptWaveform(samp_freq, wave_part);
   130           samp_offset += num_samp;
   131           if (samp_offset == data.Dim())  
   132             feature_pipeline.InputFinished();
   134           while (static_cast<int32>(feature_data.size()) <
   135                  feature_pipeline.NumFramesReady()) {
   136             int32 t = 
static_cast<int32
>(feature_data.size());
   139             feature_pipeline.GetFrame(t, feature_data.back());
   142         int32 T = 
static_cast<int32
>(feature_data.size());
   144           KALDI_WARN << 
"Got no frames of data for utterance " << utt;
   149         for (int32 t = 0; t < T; t++) {
   150           feats.
Row(t).CopyFromVec(*(feature_data[t]));
   151           delete feature_data[t];
   154         feats_writer.Write(utt, feats);
   155         feature_pipeline.GetAdaptationState(&adaptation_state);
   159     KALDI_LOG << 
"Processed " << num_done << 
" utterances, "   160               << num_err << 
" with errors; " << num_frames_tot
   161               << 
" frames in total.";
   162     return (num_done != 0 ? 0 : 1);
   163   } 
catch(
const std::exception& e) {
   164     std::cerr << e.what();
 This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
 
This configuration class is to set up OnlineNnet2FeaturePipelineInfo, which in turn is the configurat...
 
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...
 
BaseFloat SampFreq() const
 
const Matrix< BaseFloat > & Data() const
 
This class is responsible for storing configuration variables, objects and options for OnlineNnet2Fea...
 
Allows random access to a collection of objects in 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...
 
const SubVector< Real > Row(MatrixIndexT i) const
Return specific row of matrix [const]. 
 
A templated class for reading objects sequentially from an archive or script file; see The Table conc...
 
void Register(OptionsItf *opts)
 
This class's purpose is to read in Wave files. 
 
A class representing a vector. 
 
OnlineNnet2FeaturePipeline is a class that's responsible for putting together the various parts of th...
 
Represents a non-allocating general vector which can be defined as a sub-vector of higher-level vecto...