From fdbfb460ed546452a5d53611bba66d10d842e719 Mon Sep 17 00:00:00 2001 From: Sandro Hanea <40202887+sandrohanea@users.noreply.github.com> Date: Tue, 8 Oct 2024 19:08:00 +0200 Subject: [PATCH] whisper : add OpenVINO init with state (#2464) * Fixed OpenVino init on state * Removed an empty line * Fixed typo * Replaced tabs with spaces --------- Co-authored-by: Sandro Hanea --- include/whisper.h | 7 +++++++ src/whisper.cpp | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/include/whisper.h b/include/whisper.h index 375c1eb..320cac8 100644 --- a/include/whisper.h +++ b/include/whisper.h @@ -238,6 +238,13 @@ extern "C" { // GPU, by caching compiled 'blobs' there. // Set to nullptr if not used. // Returns 0 on success. If OpenVINO is not enabled in build, this simply returns 1. + WHISPER_API int whisper_ctx_init_openvino_encoder_with_state( + struct whisper_context * ctx, + struct whisper_state * state, + const char * model_path, + const char * device, + const char * cache_dir); + WHISPER_API int whisper_ctx_init_openvino_encoder( struct whisper_context * ctx, const char * model_path, diff --git a/src/whisper.cpp b/src/whisper.cpp index 31c6861..fedd471 100644 --- a/src/whisper.cpp +++ b/src/whisper.cpp @@ -3492,13 +3492,15 @@ struct whisper_state * whisper_init_state(whisper_context * ctx) { return state; } -int whisper_ctx_init_openvino_encoder( +int whisper_ctx_init_openvino_encoder_with_state( struct whisper_context * ctx, + struct whisper_state * state, const char * model_path, const char * device, const char * cache_dir) { #ifndef WHISPER_USE_OPENVINO (void)(ctx); + (void)(state); (void)(model_path); (void)(device); (void)(cache_dir); @@ -3529,8 +3531,8 @@ int whisper_ctx_init_openvino_encoder( WHISPER_LOG_INFO("%s: loading OpenVINO model from '%s'\n", __func__, path_encoder.c_str()); WHISPER_LOG_INFO("%s: first run on a device may take a while ...\n", __func__); - ctx->state->ctx_openvino = whisper_openvino_init(path_encoder.c_str(), device, path_cache.c_str()); - if (!ctx->state->ctx_openvino) { + state->ctx_openvino = whisper_openvino_init(path_encoder.c_str(), device, path_cache.c_str()); + if (!state->ctx_openvino) { WHISPER_LOG_ERROR("%s: failed to init OpenVINO encoder from '%s'\n", __func__, path_encoder.c_str()); return 1; } else { @@ -3541,6 +3543,14 @@ int whisper_ctx_init_openvino_encoder( #endif } +int whisper_ctx_init_openvino_encoder( + struct whisper_context * ctx, + const char * model_path, + const char * device, + const char * cache_dir) { + return whisper_ctx_init_openvino_encoder_with_state(ctx, ctx->state, model_path, device, cache_dir); +} + struct whisper_context_params whisper_context_default_params() { struct whisper_context_params result = { /*.use_gpu =*/ true,