Download whisper.cpp/bindings/ruby/ext/ruby_whisper_vad_context.c from Dyen/Rovin: direct link, hf CLI and curl.
- Browser
- Download file 2.07 kB
-
https://huggingface.co/spaces/Dyen/Rovin/resolve/main/whisper.cpp/bindings/ruby/ext/ruby_whisper_vad_context.c
- Command line
-
hf download hf://spaces/Dyen/Rovin/whisper.cpp/bindings/ruby/ext/ruby_whisper_vad_context.c
-
curl -L -o ruby_whisper_vad_context.c https://huggingface.co/spaces/Dyen/Rovin/resolve/main/whisper.cpp/bindings/ruby/ext/ruby_whisper_vad_context.c
2.07 kB
| extern ID id_to_s; | |
| extern VALUE cVADContext; | |
| extern VALUE ruby_whisper_vad_detect(VALUE self, VALUE file_path, VALUE params); | |
| extern VALUE ruby_whisper_normalize_model_path(VALUE model_path); | |
| static size_t | |
| ruby_whisper_vad_context_memsize(const void *p) | |
| { | |
| const ruby_whisper_vad_context *rwvc = p; | |
| size_t size = sizeof(rwvc); | |
| if (!rwvc) { | |
| return 0; | |
| } | |
| if (rwvc->context) { | |
| size += sizeof(rwvc->context); | |
| } | |
| return size; | |
| } | |
| static void | |
| ruby_whisper_vad_context_free(void *p) | |
| { | |
| ruby_whisper_vad_context *rwvc = (ruby_whisper_vad_context *)p; | |
| if (rwvc->context) { | |
| whisper_vad_free(rwvc->context); | |
| rwvc->context = NULL; | |
| } | |
| xfree(rwvc); | |
| } | |
| const rb_data_type_t ruby_whisper_vad_context_type = { | |
| "ruby_whisper_vad_context", | |
| {0, ruby_whisper_vad_context_free, ruby_whisper_vad_context_memsize,}, | |
| 0, 0, | |
| 0 | |
| }; | |
| static VALUE | |
| ruby_whisper_vad_context_s_allocate(VALUE klass) | |
| { | |
| ruby_whisper_vad_context *rwvc; | |
| VALUE obj = TypedData_Make_Struct(klass, ruby_whisper_vad_context, &ruby_whisper_vad_context_type, rwvc); | |
| rwvc->context = NULL; | |
| return obj; | |
| } | |
| static VALUE | |
| ruby_whisper_vad_context_initialize(VALUE self, VALUE model_path) | |
| { | |
| ruby_whisper_vad_context *rwvc; | |
| struct whisper_vad_context *context; | |
| model_path = ruby_whisper_normalize_model_path(model_path); | |
| context = whisper_vad_init_from_file_with_params(StringValueCStr(model_path), whisper_vad_default_context_params()); | |
| if (context == NULL) { | |
| rb_raise(rb_eRuntimeError, "Failed to initialize whisper VAD context"); | |
| } | |
| TypedData_Get_Struct(self, ruby_whisper_vad_context, &ruby_whisper_vad_context_type, rwvc); | |
| rwvc->context = context; | |
| return Qnil; | |
| } | |
| void init_ruby_whisper_vad_context(VALUE *mVAD) | |
| { | |
| cVADContext = rb_define_class_under(*mVAD, "Context", rb_cObject); | |
| rb_define_alloc_func(cVADContext, ruby_whisper_vad_context_s_allocate); | |
| rb_define_method(cVADContext, "initialize", ruby_whisper_vad_context_initialize, 1); | |
| rb_define_method(cVADContext, "detect", ruby_whisper_vad_detect, 2); | |
| } | |