From: Bjarke Viksøe Date: Sun, 10 May 2026 14:24:12 +0000 (+0200) Subject: whisper : fix incorrect timestamps, usually near silences (#2279) X-Git-Tag: upstream/1.9.2~477 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=c33c5618b72bb345df029b730b36bc0e369845a3;p=pkg%2Fggml%2Fsources%2Fwhisper.cpp whisper : fix incorrect timestamps, usually near silences (#2279) * Incorrect timetstamps Fixes #2271 - Adds consecutive timestamps after end of last segment as the new starting ts - Add these timestamp to output when "print-special" enabled - Fixes fflush usage in live reporting I was not able to test this with the special "token_timestamps" option. * Skip initial timestamp --- diff --git a/src/whisper.cpp b/src/whisper.cpp index 2f356da0..6176d21f 100644 --- a/src/whisper.cpp +++ b/src/whisper.cpp @@ -7659,11 +7659,14 @@ int whisper_full_with_state( } } text = ""; - while (i < (int) tokens_cur.size() && tokens_cur[i].id > whisper_token_beg(ctx)) { + t0 = t1; + while (i + 1 < (int) tokens_cur.size() && tokens_cur[i + 1].id > whisper_token_beg(ctx)) { i++; + if (params.print_special) { + text += whisper_token_to_str(ctx, tokens_cur[i].id); + } + t0 = seek + 2 * (tokens_cur[i].tid - whisper_token_beg(ctx)); } - i--; - t0 = t1; i0 = i + 1; speaker_turn_next = false; } @@ -7680,8 +7683,8 @@ int whisper_full_with_state( printf("[%s --> %s] %s\n", to_timestamp(tt0).c_str(), to_timestamp(tt1).c_str(), text.c_str()); } else { printf("%s", text.c_str()); - fflush(stdout); } + fflush(stdout); } result_all.push_back({ tt0, tt1, text, state->no_speech_prob, {}, speaker_turn_next });