Committed by
GitHub
Fix VAD+ASR C++ example. (#2335)
It was not able to handle short audios., e.g., 2.1 seconds.
正在显示
3 个修改的文件
包含
96 行增加
和
4 行删除
| @@ -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( |
-
请 注册 或 登录 后发表评论