Skip to content
9 changes: 9 additions & 0 deletions src/online2/online-ivector-feature.cc
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,15 @@ void OnlineIvectorExtractionInfo::Init(
this->Check();
}

int32 OnlineIvectorExtractionInfo::ExpectedFeatureDim() const {
int32 num_splice = 1 + splice_opts.left_context + splice_opts.right_context,
full_dim = lda_mat.NumCols();
if (!(full_dim % num_splice == 0 || full_dim % num_splice == 1)){
KALDI_WARN << "Error getting expected feature dimension: full-dim = "
<< full_dim << ", num-splice = " << num_splice;
}
return full_dim / num_splice;
}

void OnlineIvectorExtractionInfo::Check() const {
KALDI_ASSERT(global_cmvn_stats.NumRows() == 2);
Expand Down
2 changes: 2 additions & 0 deletions src/online2/online-ivector-feature.h
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,8 @@ struct OnlineIvectorExtractionInfo {

void Init(const OnlineIvectorExtractionConfig &config);

int32 ExpectedFeatureDim() const;

// This constructor creates a version of this object where everything
// is empty or zero.
OnlineIvectorExtractionInfo();
Expand Down
14 changes: 13 additions & 1 deletion src/online2bin/ivector-extract-online2.cc
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ int main(int argc, char *argv[]) {
RandomAccessBaseFloatVectorReader frame_weights_reader(frame_weights_rspecifier);
BaseFloatMatrixWriter ivector_writer(ivectors_wspecifier);

bool warned_dim = false;
for (; !spk2utt_reader.Done(); spk2utt_reader.Next()) {
std::string spk = spk2utt_reader.Key();
const std::vector<std::string> &uttlist = spk2utt_reader.Value();
Expand All @@ -108,7 +109,18 @@ int main(int argc, char *argv[]) {
}
const Matrix<BaseFloat> &feats = feature_reader.Value(utt);

OnlineMatrixFeature matrix_feature(feats);
int32 feat_dim = feats.NumCols();
if (feat_dim == ivector_info.ExpectedFeatureDim() + 3) {
if (!warned_dim) {
KALDI_WARN << "Feature dimension is too large by 3, assuming there are "
"pitch features and removing the last 3 dims.";
warned_dim = true;
}
feat_dim -= 3;
}

SubMatrix<BaseFloat> range = feats.ColRange(0, feat_dim);
OnlineMatrixFeature matrix_feature(range);

OnlineIvectorFeature ivector_feature(ivector_info,
&matrix_feature);
Expand Down