From: Thijs Raymakers Date: Sat, 29 Apr 2023 15:55:37 +0000 (+0200) Subject: whisper : use correct seek_end when offset is used (#833) X-Git-Tag: upstream/1.7.4~1471 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=6108d3cc580e6ca80ee265c6fcc306e29dc62645;p=pkg%2Fggml%2Fsources%2Fwhisper.cpp whisper : use correct seek_end when offset is used (#833) Whenever an `offset_ms` is provided, the value of `seek_end` is calculated incorrectly. This causes Whisper to keep transcribing after the end of the file. The current behavior looks like ``` [00:34:40.000 --> 00:34:47.000] This is an example audio file. [00:34:47.000 --> 00:34:49.000] The text has been redacted [00:34:49.000 --> 00:34:51.000] This is the end of the audio. [00:34:51.000 --> 00:34:52.000] *** [00:34:52.000 --> 00:34:53.000] *** [00:34:53.000 --> 00:34:54.000] *** [00:34:55.000 --> 00:34:56.000] *** ... ``` The expected behavior should be ``` [00:34:40.000 --> 00:34:47.000] This is an example audio file. [00:34:47.000 --> 00:34:49.000] The text has been redacted [00:34:49.000 --> 00:34:51.000] This is the end of the audio. - end of program - ``` This commit changes the calculation of the `seek_end` variable to only add `seek_start` if a custom `duration_ms` is provided. Otherwise, it defaults to the end of the file. Signed-off-by: Thijs Raymakers --- diff --git a/whisper.cpp b/whisper.cpp index 44341410..2c489b92 100644 --- a/whisper.cpp +++ b/whisper.cpp @@ -3855,7 +3855,7 @@ int whisper_full_with_state( } const int seek_start = params.offset_ms/10; - const int seek_end = seek_start + (params.duration_ms == 0 ? whisper_n_len_from_state(state) : params.duration_ms/10); + const int seek_end = params.duration_ms == 0 ? whisper_n_len_from_state(state) : seek_start + params.duration_ms/10; // if length of spectrogram is less than 1s (100 samples), then return // basically don't process anything that is less than 1s