online-nnet2-feature-pipeline.h File Reference

This file contains a different version of the feature-extraction pipeline in online-feature-pipeline.h, specialized for use in neural network decoding with iVectors. More...

#include <string>
#include <vector>
#include <deque>
#include "matrix/matrix-lib.h"
#include "util/common-utils.h"
#include "base/kaldi-error.h"
#include "feat/online-feature.h"
#include "feat/pitch-functions.h"
#include "online2/online-ivector-feature.h"
Include dependency graph for online-nnet2-feature-pipeline.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  OnlineNnet2FeaturePipelineConfig
 This configuration class is to set up OnlineNnet2FeaturePipelineInfo, which in turn is the configuration class for OnlineNnet2FeaturePipeline. More...
 
struct  OnlineNnet2FeaturePipelineInfo
 This class is responsible for storing configuration variables, objects and options for OnlineNnet2FeaturePipeline (including the actual LDA and CMVN-stats matrices, and the iVector extractor, which is a member of ivector_extractor_info. More...
 
class  OnlineNnet2FeaturePipeline
 OnlineNnet2FeaturePipeline is a class that's responsible for putting together the various parts of the feature-processing pipeline for neural networks, in an online setting. More...
 

Namespaces

 kaldi
 This code computes Goodness of Pronunciation (GOP) and extracts phone-level pronunciation feature for mispronunciations detection tasks, the reference:
 

Detailed Description

This file contains a different version of the feature-extraction pipeline in online-feature-pipeline.h, specialized for use in neural network decoding with iVectors.

Our recipe is that we extract iVectors that will be used as an additional input to the neural network, in addition to a window of several frames of spliced raw features (MFCC, PLP or filterbanks). The iVectors are extracted on top of a (splice+LDA+MLLT) feature pipeline, with the added complication that the GMM posteriors used for the iVector extraction are obtained with a version of the features that has online cepstral mean (and optionally variance) normalization, whereas the stats for iVector are accumulated with a non-mean-normalized version of the features. The idea here is that we want the iVector to learn the mean offset, but we want the posteriors to be somewhat invariant to mean offsets.

Most of the logic for the actual iVector estimation is in online-ivector-feature.h, this header contains mostly glue.

Although the name of this header mentions nnet2, actually the code is used in the online decoding with nnet3 also.

The class OnlineNnet2FeaturePipeline also has a support to optionally append pitch features and to apply OnlineCmvn on nnet3 input. We pass the unnormalized base_features to i-vector extractor, the OnlineCmvn for i-vector extractor is handled elsewhere.

Definition in file online-nnet2-feature-pipeline.h.