|
|
#ifndef RUBY_WHISPER_H |
|
|
#define RUBY_WHISPER_H |
|
|
|
|
|
#include "whisper.h" |
|
|
|
|
|
typedef struct { |
|
|
VALUE *context; |
|
|
VALUE user_data; |
|
|
VALUE callback; |
|
|
VALUE callbacks; |
|
|
} ruby_whisper_callback_container; |
|
|
|
|
|
typedef struct { |
|
|
struct whisper_context *context; |
|
|
} ruby_whisper; |
|
|
|
|
|
typedef struct { |
|
|
struct whisper_full_params params; |
|
|
bool diarize; |
|
|
ruby_whisper_callback_container *new_segment_callback_container; |
|
|
ruby_whisper_callback_container *progress_callback_container; |
|
|
ruby_whisper_callback_container *encoder_begin_callback_container; |
|
|
ruby_whisper_callback_container *abort_callback_container; |
|
|
VALUE vad_params; |
|
|
} ruby_whisper_params; |
|
|
|
|
|
typedef struct { |
|
|
struct whisper_vad_params params; |
|
|
} ruby_whisper_vad_params; |
|
|
|
|
|
typedef struct { |
|
|
VALUE context; |
|
|
int index; |
|
|
} ruby_whisper_segment; |
|
|
|
|
|
typedef struct { |
|
|
whisper_token_data *token_data; |
|
|
const char *text; |
|
|
} ruby_whisper_token; |
|
|
|
|
|
typedef struct { |
|
|
VALUE context; |
|
|
} ruby_whisper_model; |
|
|
|
|
|
typedef struct { |
|
|
struct whisper_vad_segments *segments; |
|
|
} ruby_whisper_vad_segments; |
|
|
|
|
|
typedef struct { |
|
|
VALUE segments; |
|
|
int index; |
|
|
} ruby_whisper_vad_segment; |
|
|
|
|
|
typedef struct { |
|
|
struct whisper_vad_context *context; |
|
|
} ruby_whisper_vad_context; |
|
|
|
|
|
#define GetContext(obj, rw) do { \ |
|
|
TypedData_Get_Struct((obj), ruby_whisper, &ruby_whisper_type, (rw)); \ |
|
|
if ((rw)->context == NULL) { \ |
|
|
rb_raise(rb_eRuntimeError, "Not initialized"); \ |
|
|
} \ |
|
|
} while (0) |
|
|
|
|
|
#define GetToken(obj, rwt) do { \ |
|
|
TypedData_Get_Struct((obj), ruby_whisper_token, &ruby_whisper_token_type, (rwt)); \ |
|
|
if ((rwt)->token_data == NULL) { \ |
|
|
rb_raise(rb_eRuntimeError, "Not initialized"); \ |
|
|
} \ |
|
|
} while (0) |
|
|
|
|
|
#define GetVADSegments(obj, rwvss) do { \ |
|
|
TypedData_Get_Struct((obj), ruby_whisper_vad_segments, &ruby_whisper_vad_segments_type, (rwvss)); \ |
|
|
if ((rwvss)->segments == NULL) { \ |
|
|
rb_raise(rb_eRuntimeError, "Not initialized"); \ |
|
|
} \ |
|
|
} while (0) |
|
|
|
|
|
#endif |
|
|
|