Fangjun Kuang
Committed by GitHub

Fix VAD+ASR C++ example. (#2335)

It was not able to handle short audios., e.g., 2.1 seconds.
@@ -303,6 +303,66 @@ def get_models(): @@ -303,6 +303,66 @@ def get_models():
303 popd 303 popd
304 """, 304 """,
305 ), 305 ),
  306 + Model(
  307 + model_name="sherpa-onnx-streaming-zipformer-ctc-zh-int8-2025-06-30",
  308 + idx=17,
  309 + lang="zh",
  310 + short_name="large_zipformer_int8",
  311 + rule_fsts="itn_zh_number.fst",
  312 + cmd="""
  313 + if [ ! -f itn_zh_number.fst ]; then
  314 + curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/itn_zh_number.fst
  315 + fi
  316 + pushd $model_name
  317 + rm -fv bpe.model
  318 +
  319 + rm -rf test_wavs
  320 +
  321 + ls -lh
  322 +
  323 + popd
  324 + """,
  325 + ),
  326 + Model(
  327 + model_name="sherpa-onnx-streaming-zipformer-ctc-zh-2025-06-30",
  328 + idx=18,
  329 + lang="zh",
  330 + short_name="large_zipformer",
  331 + rule_fsts="itn_zh_number.fst",
  332 + cmd="""
  333 + if [ ! -f itn_zh_number.fst ]; then
  334 + curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/itn_zh_number.fst
  335 + fi
  336 + pushd $model_name
  337 + rm -fv bpe.model
  338 +
  339 + rm -rf test_wavs
  340 +
  341 + ls -lh
  342 +
  343 + popd
  344 + """,
  345 + ),
  346 + Model(
  347 + model_name="sherpa-onnx-streaming-zipformer-ctc-fp16-zh-2025-06-30",
  348 + idx=19,
  349 + lang="zh",
  350 + short_name="large_zipformer_fp16",
  351 + rule_fsts="itn_zh_number.fst",
  352 + cmd="""
  353 + if [ ! -f itn_zh_number.fst ]; then
  354 + curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/itn_zh_number.fst
  355 + fi
  356 + pushd $model_name
  357 + rm -fv bpe.model
  358 +
  359 + rm -rf test_wavs
  360 +
  361 + ls -lh
  362 +
  363 + popd
  364 + """,
  365 + ),
306 ] 366 ]
307 367
308 return models 368 return models
@@ -186,13 +186,15 @@ for a list of pre-trained models to download. @@ -186,13 +186,15 @@ for a list of pre-trained models to download.
186 fprintf(stderr, "Started!\n"); 186 fprintf(stderr, "Started!\n");
187 int32_t window_size = vad_config.silero_vad.window_size; 187 int32_t window_size = vad_config.silero_vad.window_size;
188 int32_t i = 0; 188 int32_t i = 0;
189 - while (i + window_size < samples.size()) {  
190 - vad->AcceptWaveform(samples.data() + i, window_size);  
191 - i += window_size;  
192 - if (i >= samples.size()) { 189 + while (i < samples.size()) {
  190 + if (i + window_size <= samples.size()) {
  191 + vad->AcceptWaveform(samples.data() + i, window_size);
  192 + } else {
193 vad->Flush(); 193 vad->Flush();
194 } 194 }
195 195
  196 + i += window_size;
  197 +
196 while (!vad->Empty()) { 198 while (!vad->Empty()) {
197 const auto &segment = vad->Front(); 199 const auto &segment = vad->Front();
198 float duration = segment.samples.size() / 16000.; 200 float duration = segment.samples.size() / 16000.;
@@ -395,6 +395,36 @@ fun getModelConfig(type: Int): OnlineModelConfig? { @@ -395,6 +395,36 @@ fun getModelConfig(type: Int): OnlineModelConfig? {
395 ) 395 )
396 } 396 }
397 397
  398 + 17 -> {
  399 + val modelDir = "sherpa-onnx-streaming-zipformer-ctc-zh-int8-2025-06-30"
  400 + return OnlineModelConfig(
  401 + zipformer2Ctc = OnlineZipformer2CtcModelConfig(
  402 + model = "$modelDir/model.int8.onnx",
  403 + ),
  404 + tokens = "$modelDir/tokens.txt",
  405 + )
  406 + }
  407 +
  408 + 18 -> {
  409 + val modelDir = "sherpa-onnx-streaming-zipformer-ctc-zh-2025-06-30"
  410 + return OnlineModelConfig(
  411 + zipformer2Ctc = OnlineZipformer2CtcModelConfig(
  412 + model = "$modelDir/model.onnx",
  413 + ),
  414 + tokens = "$modelDir/tokens.txt",
  415 + )
  416 + }
  417 +
  418 + 19 -> {
  419 + val modelDir = "sherpa-onnx-streaming-zipformer-ctc-zh-fp16-2025-06-30"
  420 + return OnlineModelConfig(
  421 + zipformer2Ctc = OnlineZipformer2CtcModelConfig(
  422 + model = "$modelDir/model.fp16.onnx",
  423 + ),
  424 + tokens = "$modelDir/tokens.txt",
  425 + )
  426 + }
  427 +
398 1000 -> { 428 1000 -> {
399 val modelDir = "sherpa-onnx-rk3588-streaming-zipformer-bilingual-zh-en-2023-02-20" 429 val modelDir = "sherpa-onnx-rk3588-streaming-zipformer-bilingual-zh-en-2023-02-20"
400 return OnlineModelConfig( 430 return OnlineModelConfig(