infinite42
Committed by GitHub

add tail padding for sherpa-onnx-vad-with-online-asr (#2408)

@@ -138,6 +138,9 @@ for a list of pre-trained models to download. @@ -138,6 +138,9 @@ for a list of pre-trained models to download.
138 samples = std::move(out_samples); 138 samples = std::move(out_samples);
139 fprintf(stderr, "Resampling done\n"); 139 fprintf(stderr, "Resampling done\n");
140 } 140 }
  141 + const float tail_padding_len = 1.28; // related to model chunk-size
  142 + std::vector<float> tail_paddings(
  143 + static_cast<int>(tail_padding_len * 16000));
141 144
142 fprintf(stderr, "Started!\n"); 145 fprintf(stderr, "Started!\n");
143 int32_t window_size = vad_config.ten_vad.model.empty() 146 int32_t window_size = vad_config.ten_vad.model.empty()
@@ -168,6 +171,7 @@ for a list of pre-trained models to download. @@ -168,6 +171,7 @@ for a list of pre-trained models to download.
168 float end_time = start_time + duration; 171 float end_time = start_time + duration;
169 auto s = recognizer.CreateStream(); 172 auto s = recognizer.CreateStream();
170 s->AcceptWaveform(16000, segment.samples.data(), segment.samples.size()); 173 s->AcceptWaveform(16000, segment.samples.data(), segment.samples.size());
  174 + s->AcceptWaveform(16000, tail_paddings.data(), tail_paddings.size());
171 s->InputFinished(); 175 s->InputFinished();
172 while (recognizer.IsReady(s.get())) { 176 while (recognizer.IsReady(s.get())) {
173 recognizer.DecodeStream(s.get()); 177 recognizer.DecodeStream(s.get());