Build pfiles for Neural Network training from alignment. 
The pfiles contains both the data vectors and their corresponding class/state labels (zero-based). 
   38   using namespace kaldi;
    42         "Build pfiles for neural network training from alignment.\n"    43         "Usage:  build-pfile-from-ali [options] <model> <alignments-rspecifier> <feature-rspecifier> \n"    44         "<pfile-wspecifier>\n"    46         " build-pfile-from-ali 1.mdl ark:1.ali features \n"    47         " \"|pfile_create -i - -o pfile.1 -f 143 -l 1\" ";
    51     int32 every_nth_frame = 1;
    52     po.Register(
"every-nth-frame", &every_nth_frame, 
"This option will cause it to print "    53                 "out only every n'th frame (for subsampling)");
    57     if (po.NumArgs() != 4) {
    62     std::string model_filename = po.GetArg(1),
    63         alignments_rspecifier = po.GetArg(2),
    64         feature_rspecifier = po.GetArg(3),
    65         pfile_wspecifier = po.GetArg(4);
    71       Input ki(model_filename, &binary);
    72       trans_model.
Read(ki.Stream(), binary);
    73       am_gmm.
Read(ki.Stream(), binary);
    79     int32 num_done = 0, num_no_ali = 0, num_other_error = 0;
    84     Output ko(pfile_wspecifier, 
false);
    86     for (; !feature_reader.Done(); feature_reader.Next()) {
    87       std::string key = feature_reader.Key();
    88       if (!ali_reader.HasKey(key)) {
    89         KALDI_WARN << 
"Did not find alignment for utterance " << key;
    95       std::vector<int32> alignment = ali_reader.Value(key);
    96       if (static_cast<int32>(feats.
NumRows()) != static_cast<int32>(alignment.size())) {
    97         KALDI_WARN << 
"Alignment vector has wrong size " << (alignment.size())
    98                    << 
" vs. " << (feats.
NumRows());
   104       for (
size_t i = 0; 
i < alignment.size(); 
i++) {
   105         if (
i % every_nth_frame == 0) {
   106           std::stringstream ss;
   110           ss << (
i / every_nth_frame);
   112           for (int32 
d = 0; 
d < dim; ++
d) {
   120           ko.Stream() << ss.str().c_str();
   124       num_done ++; num_utt ++;
   127     KALDI_LOG << 
"Converted " << num_done << 
" alignments to pfiles.";
   128     KALDI_LOG << num_no_ali << 
" utterances have no alignment; "   129               << num_other_error << 
" utterances have other errors.";
   130   } 
catch(
const std::exception& e) {
   131     std::cerr << e.what();
 This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for...
 
MatrixIndexT NumCols() const
Returns number of columns (or zero for empty matrix). 
 
int32 TransitionIdToPdf(int32 trans_id) const
 
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...
 
void Read(std::istream &is, bool binary)
 
A templated class for reading objects sequentially from an archive or script file; see The Table conc...
 
#define KALDI_ASSERT(cond)
 
MatrixIndexT NumRows() const
Returns number of rows (or zero for empty matrix). 
 
void Read(std::istream &in_stream, bool binary)