return 3;
}
- // initial prompt
- std::vector<whisper_token> prompt_tokens;
-
- if (!params.prompt.empty()) {
- prompt_tokens.resize(1024);
- prompt_tokens.resize(whisper_tokenize(ctx, params.prompt.c_str(), prompt_tokens.data(), prompt_tokens.size()));
-
- fprintf(stderr, "\n");
- fprintf(stderr, "initial prompt: '%s'\n", params.prompt.c_str());
- fprintf(stderr, "initial tokens: [ ");
- for (int i = 0; i < (int) prompt_tokens.size(); ++i) {
- fprintf(stderr, "%d ", prompt_tokens[i]);
- }
- fprintf(stderr, "]\n");
- }
-
for (int f = 0; f < (int) params.fname_inp.size(); ++f) {
const auto fname_inp = params.fname_inp[f];
const auto fname_out = f < (int)params.fname_out.size() && !params.fname_out[f].empty() ? params.fname_out[f] : params.fname_inp[f];
wparams.greedy.best_of = params.best_of;
wparams.beam_search.beam_size = params.beam_size;
- wparams.prompt_tokens = prompt_tokens.empty() ? nullptr : prompt_tokens.data();
- wparams.prompt_n_tokens = prompt_tokens.empty() ? 0 : prompt_tokens.size();
+ wparams.initial_prompt = params.prompt.c_str();
whisper_print_user_data user_data = { ¶ms, &pcmf32s };
return 3;
}
- // initial prompt
- std::vector<whisper_token> prompt_tokens;
-
- if (!params.prompt.empty()) {
- prompt_tokens.resize(1024);
- prompt_tokens.resize(whisper_tokenize(ctx, params.prompt.c_str(), prompt_tokens.data(), prompt_tokens.size()));
-
- fprintf(stderr, "\n");
- fprintf(stderr, "initial prompt: '%s'\n", params.prompt.c_str());
- fprintf(stderr, "initial tokens: [ ");
- for (int i = 0; i < (int) prompt_tokens.size(); ++i) {
- fprintf(stderr, "%d ", prompt_tokens[i]);
- }
- fprintf(stderr, "]\n");
- }
-
for (int f = 0; f < (int) params.fname_inp.size(); ++f) {
const auto fname_inp = params.fname_inp[f];
const auto fname_out = f < (int) params.fname_out.size() && !params.fname_out[f].empty() ? params.fname_out[f] : params.fname_inp[f];
wparams.speed_up = params.speed_up;
- wparams.prompt_tokens = prompt_tokens.empty() ? nullptr : prompt_tokens.data();
- wparams.prompt_n_tokens = prompt_tokens.empty() ? 0 : prompt_tokens.size();
+ wparams.initial_prompt = params.prompt.c_str();
wparams.greedy.best_of = params.best_of;
wparams.beam_search.beam_size = params.beam_size;
/*.speed_up =*/ false,
/*.audio_ctx =*/ 0,
+ /*.initial_prompt =*/ nullptr,
/*.prompt_tokens =*/ nullptr,
/*.prompt_n_tokens =*/ 0,
prompt_past.clear();
}
+ // initial prompt
+ if (!params.prompt_tokens && params.initial_prompt) {
+ std::vector<whisper_token> prompt_tokens;
+ prompt_tokens.resize(1024);
+ prompt_tokens.resize(whisper_tokenize(ctx, params.initial_prompt, prompt_tokens.data(), prompt_tokens.size()));
+ params.prompt_tokens = prompt_tokens.data();
+ params.prompt_n_tokens = prompt_tokens.size();
+ }
+
// prepend the prompt tokens to the prompt_past
if (params.prompt_tokens && params.prompt_n_tokens > 0) {
// parse tokens from the pointer
// tokens to provide to the whisper decoder as initial prompt
// these are prepended to any existing text context from a previous call
+ const char * initial_prompt;
const whisper_token * prompt_tokens;
int prompt_n_tokens;