Skip to content

fix(vad): apply the offline dynamic silence schedule per frame - #3833

Open
lingfengyao wants to merge 1 commit into
modelscope:mainfrom
lingfengyao:fix/vad-dynamic-silence-per-frame
Open

lingfengyao wants to merge 1 commit into
modelscope:mainfrom
lingfengyao:fix/vad-dynamic-silence-per-frame

Conversation

@lingfengyao

@lingfengyao lingfengyao commented Nov 3, 2026 •

Copy link
Copy Markdown

Summary

Related to #3832

Offline FsmnVADStreaming.inference advanced the dynamic silence schedule once per 60 s chunk. As a result, only the 1850 ms and 50 ms thresholds were used, and segmentation depended on where chunk boundaries fell (see #3832 and #3644).

This PR looks up the schedule in DetectOneFrame from the current segment's duration (cur_frm_idx - confirmed_start_frame + 1, as for max_single_segment_time). The per-chunk accumulate/reset logic in inference() is removed. dynamic_silence, silence_schedule and max_end_silence_time keep their meaning, and DynamicStreamingVAD (dynamic_silence=False) is unaffected.

Type of change

  • Bug fix

Validation

Notes for reviewers

Default offline segments become longer (median ~29 s on TED-LIUM, versus ~2 s before), because the schedule now works as designed. CER on concatenated AISHELL-1 improves, from 1.936% to 1.625%. If shorter defaults are preferred, I think that belongs in DEFAULT_SILENCE_SCHEDULE as a separate change.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant