#ifndef TRANSCRIBE_WHISPER_H
#define TRANSCRIBE_WHISPER_H
#include "transcribe.h"
#include <math.h>
#ifdef __cplusplus
extern "C" {
#endif
#define TRANSCRIBE_EXT_KIND_WHISPER_RUN 0x4E524857u
#define TRANSCRIBE_WHISPER_THOLD_DISABLED ((float) INFINITY)
#define TRANSCRIBE_WHISPER_LOGPROB_DISABLED ((float) -INFINITY)
enum transcribe_whisper_prompt_condition {
TRANSCRIBE_WHISPER_PROMPT_FIRST_SEGMENT = 0,
TRANSCRIBE_WHISPER_PROMPT_ALL_SEGMENTS = 1,
};
struct transcribe_whisper_run_ext {
struct transcribe_ext ext;
const char * initial_prompt;
const int32_t * prompt_tokens;
size_t n_prompt_tokens;
enum transcribe_whisper_prompt_condition prompt_condition;
bool condition_on_prev_tokens;
int32_t max_prev_context_tokens;
float temperature;
float temperature_inc;
float compression_ratio_thold;
float logprob_thold;
float no_speech_thold;
uint32_t seed;
float max_initial_timestamp;
};
TRANSCRIBE_API void transcribe_whisper_run_ext_init(struct transcribe_whisper_run_ext * ext);
struct transcribe_whisper_chunk_trace {
uint64_t struct_size;
int64_t t0_ms;
int64_t t1_ms;
float temperature_used;
float compression_ratio;
float avg_logprob;
float no_speech_prob;
bool no_speech_triggered;
int32_t n_fallbacks;
};
TRANSCRIBE_API void transcribe_whisper_chunk_trace_init(struct transcribe_whisper_chunk_trace * out);
TRANSCRIBE_API int transcribe_get_whisper_chunk_count(const struct transcribe_session * session);
TRANSCRIBE_API transcribe_status transcribe_get_whisper_chunk_trace(const struct transcribe_session * session,
int i,
struct transcribe_whisper_chunk_trace * out_trace);
#ifdef __cplusplus
}
#endif
#endif