Skip to content

Commit 0a2d121

Browse files
authored
whisper : add progress callback (#600)
1 parent 859ffc9 commit 0a2d121

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

whisper.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3152,6 +3152,9 @@ struct whisper_full_params whisper_full_default_params(enum whisper_sampling_str
31523152
/*.new_segment_callback =*/ nullptr,
31533153
/*.new_segment_callback_user_data =*/ nullptr,
31543154

3155+
/*.progress_callback =*/ nullptr,
3156+
/*.progress_callback_user_data =*/ nullptr,
3157+
31553158
/*.encoder_begin_callback =*/ nullptr,
31563159
/*.encoder_begin_callback_user_data =*/ nullptr,
31573160

@@ -3868,6 +3871,10 @@ int whisper_full_with_state(
38683871
fprintf(stderr, "%s: progress = %3d%%\n", __func__, progress_prev);
38693872
}
38703873
}
3874+
if (params.progress_callback) {
3875+
params.progress_callback(
3876+
ctx, ctx->state, progress_prev, params.progress_callback_user_data);
3877+
}
38713878

38723879
// of only 1 second left, then stop
38733880
if (seek + 100 >= seek_end) {
@@ -4456,6 +4463,9 @@ int whisper_full_parallel(
44564463
params_cur.new_segment_callback = nullptr;
44574464
params_cur.new_segment_callback_user_data = nullptr;
44584465

4466+
params_cur.progress_callback = nullptr;
4467+
params_cur.progress_callback_user_data = nullptr;
4468+
44594469
workers[i] = std::thread(whisper_full_with_state, ctx, states[i], std::move(params_cur), samples + start_samples, n_samples_cur);
44604470
}
44614471

whisper.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,9 @@ extern "C" {
306306
// Use the whisper_full_...() functions to obtain the text segments
307307
typedef void (*whisper_new_segment_callback)(struct whisper_context * ctx, struct whisper_state * state, int n_new, void * user_data);
308308

309+
// Progress callback
310+
typedef void (*whisper_progress_callback)(struct whisper_context * ctx, struct whisper_state * state, int progress, void * user_data);
311+
309312
// Encoder begin callback
310313
// If not NULL, called before the encoder starts
311314
// If it returns false, the computation is aborted
@@ -392,6 +395,10 @@ extern "C" {
392395
whisper_new_segment_callback new_segment_callback;
393396
void * new_segment_callback_user_data;
394397

398+
// called on each progress update
399+
whisper_progress_callback progress_callback;
400+
void * progress_callback_user_data;
401+
395402
// called each time before the encoder starts
396403
whisper_encoder_begin_callback encoder_begin_callback;
397404
void * encoder_begin_callback_user_data;

0 commit comments

Comments
 (0)