whispercpp 1.3.4 → 1.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +60 -43
- data/ext/extconf.rb +2 -2
- data/ext/ruby_whisper.c +14 -2
- data/ext/ruby_whisper.h +39 -0
- data/ext/ruby_whisper_context.c +22 -22
- data/ext/ruby_whisper_model.c +12 -12
- data/ext/ruby_whisper_params.c +47 -23
- data/ext/ruby_whisper_segment.c +84 -19
- data/ext/ruby_whisper_token.c +351 -0
- data/ext/ruby_whisper_transcribe.cpp +1 -1
- data/ext/ruby_whisper_vad_context.c +75 -0
- data/ext/ruby_whisper_vad_context_detect.cpp +50 -0
- data/ext/ruby_whisper_vad_segment.c +139 -0
- data/ext/ruby_whisper_vad_segments.c +106 -0
- data/ext/sources/CMakeLists.txt +4 -1
- data/ext/sources/bindings/javascript/package.json +1 -1
- data/ext/sources/cmake/arm64-apple-clang.cmake +16 -0
- data/ext/sources/cmake/arm64-windows-llvm.cmake +16 -0
- data/ext/sources/cmake/riscv64-spacemit-linux-gnu-gcc.cmake +29 -0
- data/ext/sources/cmake/x64-windows-llvm.cmake +5 -0
- data/ext/sources/examples/addon.node/vad-example.js +2 -2
- data/ext/sources/examples/cli/cli.cpp +121 -112
- data/ext/sources/examples/lsp/CMakeLists.txt +2 -1
- data/ext/sources/examples/quantize/CMakeLists.txt +2 -1
- data/ext/sources/examples/server/server.cpp +10 -11
- data/ext/sources/examples/talk-llama/CMakeLists.txt +5 -1
- data/ext/sources/examples/talk-llama/llama-adapter.cpp +12 -3
- data/ext/sources/examples/talk-llama/llama-adapter.h +7 -1
- data/ext/sources/examples/talk-llama/llama-arch.cpp +2046 -1974
- data/ext/sources/examples/talk-llama/llama-arch.h +67 -2
- data/ext/sources/examples/talk-llama/llama-batch.cpp +75 -33
- data/ext/sources/examples/talk-llama/llama-batch.h +17 -4
- data/ext/sources/examples/talk-llama/llama-chat.cpp +79 -3
- data/ext/sources/examples/talk-llama/llama-chat.h +4 -0
- data/ext/sources/examples/talk-llama/llama-context.cpp +775 -78
- data/ext/sources/examples/talk-llama/llama-context.h +57 -9
- data/ext/sources/examples/talk-llama/llama-cparams.h +1 -0
- data/ext/sources/examples/talk-llama/llama-grammar.cpp +288 -53
- data/ext/sources/examples/talk-llama/llama-grammar.h +22 -1
- data/ext/sources/examples/talk-llama/llama-graph.cpp +381 -64
- data/ext/sources/examples/talk-llama/llama-graph.h +103 -13
- data/ext/sources/examples/talk-llama/llama-hparams.cpp +26 -2
- data/ext/sources/examples/talk-llama/llama-hparams.h +41 -10
- data/ext/sources/examples/talk-llama/llama-impl.cpp +7 -3
- data/ext/sources/examples/talk-llama/llama-impl.h +1 -1
- data/ext/sources/examples/talk-llama/llama-kv-cache-iswa.cpp +5 -3
- data/ext/sources/examples/talk-llama/llama-kv-cache.cpp +145 -65
- data/ext/sources/examples/talk-llama/llama-kv-cache.h +22 -7
- data/ext/sources/examples/talk-llama/llama-kv-cells.h +44 -2
- data/ext/sources/examples/talk-llama/llama-memory-hybrid.cpp +12 -10
- data/ext/sources/examples/talk-llama/llama-memory-recurrent.cpp +32 -19
- data/ext/sources/examples/talk-llama/llama-memory-recurrent.h +2 -2
- data/ext/sources/examples/talk-llama/llama-mmap.cpp +172 -37
- data/ext/sources/examples/talk-llama/llama-mmap.h +8 -3
- data/ext/sources/examples/talk-llama/llama-model-loader.cpp +91 -9
- data/ext/sources/examples/talk-llama/llama-model-loader.h +6 -0
- data/ext/sources/examples/talk-llama/llama-model-saver.cpp +3 -0
- data/ext/sources/examples/talk-llama/llama-model.cpp +1529 -13134
- data/ext/sources/examples/talk-llama/llama-model.h +44 -3
- data/ext/sources/examples/talk-llama/llama-quant.cpp +8 -23
- data/ext/sources/examples/talk-llama/llama-sampling.cpp +1294 -198
- data/ext/sources/examples/talk-llama/llama-sampling.h +19 -7
- data/ext/sources/examples/talk-llama/llama-vocab.cpp +133 -37
- data/ext/sources/examples/talk-llama/llama-vocab.h +45 -40
- data/ext/sources/examples/talk-llama/llama.cpp +729 -2
- data/ext/sources/examples/talk-llama/llama.h +152 -14
- data/ext/sources/examples/talk-llama/models/afmoe.cpp +191 -0
- data/ext/sources/examples/talk-llama/models/apertus.cpp +125 -0
- data/ext/sources/examples/talk-llama/models/arcee.cpp +135 -0
- data/ext/sources/examples/talk-llama/models/arctic.cpp +138 -0
- data/ext/sources/examples/talk-llama/models/arwkv7.cpp +86 -0
- data/ext/sources/examples/talk-llama/models/baichuan.cpp +122 -0
- data/ext/sources/examples/talk-llama/models/bailingmoe.cpp +144 -0
- data/ext/sources/examples/talk-llama/models/bailingmoe2.cpp +135 -0
- data/ext/sources/examples/talk-llama/models/bert.cpp +178 -0
- data/ext/sources/examples/talk-llama/models/bitnet.cpp +160 -0
- data/ext/sources/examples/talk-llama/models/bloom.cpp +101 -0
- data/ext/sources/examples/talk-llama/models/chameleon.cpp +178 -0
- data/ext/sources/examples/talk-llama/models/chatglm.cpp +132 -0
- data/ext/sources/examples/talk-llama/models/codeshell.cpp +111 -0
- data/ext/sources/examples/talk-llama/models/cogvlm.cpp +102 -0
- data/ext/sources/examples/talk-llama/models/cohere2-iswa.cpp +134 -0
- data/ext/sources/examples/talk-llama/models/command-r.cpp +122 -0
- data/ext/sources/examples/talk-llama/models/dbrx.cpp +123 -0
- data/ext/sources/examples/talk-llama/models/deci.cpp +135 -0
- data/ext/sources/examples/talk-llama/models/deepseek.cpp +144 -0
- data/ext/sources/examples/talk-llama/models/deepseek2.cpp +259 -0
- data/ext/sources/examples/talk-llama/models/dots1.cpp +134 -0
- data/ext/sources/examples/talk-llama/models/dream.cpp +105 -0
- data/ext/sources/examples/talk-llama/models/ernie4-5-moe.cpp +150 -0
- data/ext/sources/examples/talk-llama/models/ernie4-5.cpp +110 -0
- data/ext/sources/examples/talk-llama/models/exaone.cpp +114 -0
- data/ext/sources/examples/talk-llama/models/exaone4.cpp +123 -0
- data/ext/sources/examples/talk-llama/models/falcon-h1.cpp +113 -0
- data/ext/sources/examples/talk-llama/models/falcon.cpp +120 -0
- data/ext/sources/examples/talk-llama/models/gemma-embedding.cpp +116 -0
- data/ext/sources/examples/talk-llama/models/gemma.cpp +112 -0
- data/ext/sources/examples/talk-llama/models/gemma2-iswa.cpp +128 -0
- data/ext/sources/examples/talk-llama/models/gemma3.cpp +155 -0
- data/ext/sources/examples/talk-llama/models/gemma3n-iswa.cpp +384 -0
- data/ext/sources/examples/talk-llama/models/glm4-moe.cpp +170 -0
- data/ext/sources/examples/talk-llama/models/glm4.cpp +150 -0
- data/ext/sources/examples/talk-llama/models/gpt2.cpp +105 -0
- data/ext/sources/examples/talk-llama/models/gptneox.cpp +144 -0
- data/ext/sources/examples/talk-llama/models/granite-hybrid.cpp +196 -0
- data/ext/sources/examples/talk-llama/models/granite.cpp +211 -0
- data/ext/sources/examples/talk-llama/models/graph-context-mamba.cpp +283 -0
- data/ext/sources/examples/talk-llama/models/grok.cpp +159 -0
- data/ext/sources/examples/talk-llama/models/grovemoe.cpp +141 -0
- data/ext/sources/examples/talk-llama/models/hunyuan-dense.cpp +132 -0
- data/ext/sources/examples/talk-llama/models/hunyuan-moe.cpp +154 -0
- data/ext/sources/examples/talk-llama/models/internlm2.cpp +120 -0
- data/ext/sources/examples/talk-llama/models/jais.cpp +86 -0
- data/ext/sources/examples/talk-llama/models/jamba.cpp +106 -0
- data/ext/sources/examples/talk-llama/models/lfm2.cpp +175 -0
- data/ext/sources/examples/talk-llama/models/llada-moe.cpp +122 -0
- data/ext/sources/examples/talk-llama/models/llada.cpp +99 -0
- data/ext/sources/examples/talk-llama/models/llama-iswa.cpp +178 -0
- data/ext/sources/examples/talk-llama/models/llama.cpp +168 -0
- data/ext/sources/examples/talk-llama/models/maincoder.cpp +117 -0
- data/ext/sources/examples/talk-llama/models/mamba.cpp +55 -0
- data/ext/sources/examples/talk-llama/models/mimo2-iswa.cpp +123 -0
- data/ext/sources/examples/talk-llama/models/minicpm3.cpp +199 -0
- data/ext/sources/examples/talk-llama/models/minimax-m2.cpp +124 -0
- data/ext/sources/examples/talk-llama/models/mistral3.cpp +160 -0
- data/ext/sources/examples/talk-llama/models/models.h +569 -0
- data/ext/sources/examples/talk-llama/models/modern-bert.cpp +116 -0
- data/ext/sources/examples/talk-llama/models/mpt.cpp +126 -0
- data/ext/sources/examples/talk-llama/models/nemotron-h.cpp +150 -0
- data/ext/sources/examples/talk-llama/models/nemotron.cpp +122 -0
- data/ext/sources/examples/talk-llama/models/neo-bert.cpp +104 -0
- data/ext/sources/examples/talk-llama/models/olmo.cpp +121 -0
- data/ext/sources/examples/talk-llama/models/olmo2.cpp +150 -0
- data/ext/sources/examples/talk-llama/models/olmoe.cpp +124 -0
- data/ext/sources/examples/talk-llama/models/openai-moe-iswa.cpp +127 -0
- data/ext/sources/examples/talk-llama/models/openelm.cpp +124 -0
- data/ext/sources/examples/talk-llama/models/orion.cpp +123 -0
- data/ext/sources/examples/talk-llama/models/pangu-embedded.cpp +121 -0
- data/ext/sources/examples/talk-llama/models/phi2.cpp +121 -0
- data/ext/sources/examples/talk-llama/models/phi3.cpp +152 -0
- data/ext/sources/examples/talk-llama/models/plamo.cpp +110 -0
- data/ext/sources/examples/talk-llama/models/plamo2.cpp +316 -0
- data/ext/sources/examples/talk-llama/models/plamo3.cpp +128 -0
- data/ext/sources/examples/talk-llama/models/plm.cpp +168 -0
- data/ext/sources/examples/talk-llama/models/qwen.cpp +108 -0
- data/ext/sources/examples/talk-llama/models/qwen2.cpp +126 -0
- data/ext/sources/examples/talk-llama/models/qwen2moe.cpp +151 -0
- data/ext/sources/examples/talk-llama/models/qwen2vl.cpp +117 -0
- data/ext/sources/examples/talk-llama/models/qwen3.cpp +117 -0
- data/ext/sources/examples/talk-llama/models/qwen3moe.cpp +124 -0
- data/ext/sources/examples/talk-llama/models/qwen3next.cpp +873 -0
- data/ext/sources/examples/talk-llama/models/qwen3vl-moe.cpp +149 -0
- data/ext/sources/examples/talk-llama/models/qwen3vl.cpp +141 -0
- data/ext/sources/examples/talk-llama/models/refact.cpp +94 -0
- data/ext/sources/examples/talk-llama/models/rnd1.cpp +126 -0
- data/ext/sources/examples/talk-llama/models/rwkv6-base.cpp +162 -0
- data/ext/sources/examples/talk-llama/models/rwkv6.cpp +94 -0
- data/ext/sources/examples/talk-llama/models/rwkv6qwen2.cpp +86 -0
- data/ext/sources/examples/talk-llama/models/rwkv7-base.cpp +135 -0
- data/ext/sources/examples/talk-llama/models/rwkv7.cpp +90 -0
- data/ext/sources/examples/talk-llama/models/seed-oss.cpp +124 -0
- data/ext/sources/examples/talk-llama/models/smallthinker.cpp +126 -0
- data/ext/sources/examples/talk-llama/models/smollm3.cpp +128 -0
- data/ext/sources/examples/talk-llama/models/stablelm.cpp +146 -0
- data/ext/sources/examples/talk-llama/models/starcoder.cpp +100 -0
- data/ext/sources/examples/talk-llama/models/starcoder2.cpp +121 -0
- data/ext/sources/examples/talk-llama/models/t5-dec.cpp +166 -0
- data/ext/sources/examples/talk-llama/models/t5-enc.cpp +96 -0
- data/ext/sources/examples/talk-llama/models/wavtokenizer-dec.cpp +149 -0
- data/ext/sources/examples/talk-llama/models/xverse.cpp +108 -0
- data/ext/sources/examples/talk-llama/unicode.cpp +102 -16
- data/ext/sources/examples/vad-speech-segments/CMakeLists.txt +1 -1
- data/ext/sources/examples/whisper.wasm/index-tmpl.html +1 -1
- data/ext/sources/ggml/CMakeLists.txt +82 -54
- data/ext/sources/ggml/include/ggml-alloc.h +9 -0
- data/ext/sources/ggml/include/ggml-backend.h +4 -1
- data/ext/sources/ggml/include/ggml-cpu.h +1 -0
- data/ext/sources/ggml/include/ggml-hexagon.h +19 -0
- data/ext/sources/ggml/include/ggml-rpc.h +8 -11
- data/ext/sources/ggml/include/ggml-zendnn.h +22 -0
- data/ext/sources/ggml/include/ggml.h +190 -12
- data/ext/sources/ggml/src/CMakeLists.txt +82 -11
- data/ext/sources/ggml/src/ggml-alloc.c +124 -41
- data/ext/sources/ggml/src/ggml-backend-impl.h +1 -4
- data/ext/sources/ggml/src/ggml-backend-reg.cpp +27 -3
- data/ext/sources/ggml/src/ggml-backend.cpp +71 -21
- data/ext/sources/ggml/src/ggml-blas/CMakeLists.txt +17 -3
- data/ext/sources/ggml/src/ggml-blas/ggml-blas.cpp +5 -9
- data/ext/sources/ggml/src/ggml-cann/acl_tensor.cpp +57 -45
- data/ext/sources/ggml/src/ggml-cann/acl_tensor.h +138 -47
- data/ext/sources/ggml/src/ggml-cann/aclnn_ops.cpp +2179 -1696
- data/ext/sources/ggml/src/ggml-cann/aclnn_ops.h +238 -317
- data/ext/sources/ggml/src/ggml-cann/common.h +283 -208
- data/ext/sources/ggml/src/ggml-cann/ggml-cann.cpp +626 -776
- data/ext/sources/ggml/src/ggml-cpu/CMakeLists.txt +156 -86
- data/ext/sources/ggml/src/ggml-cpu/amx/amx.cpp +1 -0
- data/ext/sources/ggml/src/ggml-cpu/arch/arm/cpu-feats.cpp +4 -0
- data/ext/sources/ggml/src/ggml-cpu/arch/arm/quants.c +428 -26
- data/ext/sources/ggml/src/ggml-cpu/arch/arm/repack.cpp +1004 -0
- data/ext/sources/ggml/src/ggml-cpu/arch/loongarch/quants.c +4 -5
- data/ext/sources/ggml/src/ggml-cpu/arch/riscv/cpu-feats.cpp +38 -0
- data/ext/sources/ggml/src/ggml-cpu/arch/riscv/quants.c +108 -49
- data/ext/sources/ggml/src/ggml-cpu/arch/s390/cpu-feats.cpp +50 -0
- data/ext/sources/ggml/src/ggml-cpu/arch/x86/repack.cpp +6 -6
- data/ext/sources/ggml/src/ggml-cpu/arch-fallback.h +50 -2
- data/ext/sources/ggml/src/ggml-cpu/ggml-cpu-impl.h +5 -3
- data/ext/sources/ggml/src/ggml-cpu/ggml-cpu.c +195 -71
- data/ext/sources/ggml/src/ggml-cpu/ggml-cpu.cpp +4 -0
- data/ext/sources/ggml/src/ggml-cpu/kleidiai/kernels.cpp +573 -106
- data/ext/sources/ggml/src/ggml-cpu/kleidiai/kernels.h +33 -44
- data/ext/sources/ggml/src/ggml-cpu/kleidiai/kleidiai.cpp +298 -112
- data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm-ppc.h +333 -0
- data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm.cpp +819 -125
- data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm.h +6 -0
- data/ext/sources/ggml/src/ggml-cpu/ops.cpp +708 -431
- data/ext/sources/ggml/src/ggml-cpu/ops.h +5 -4
- data/ext/sources/ggml/src/ggml-cpu/repack.cpp +671 -31
- data/ext/sources/ggml/src/ggml-cpu/repack.h +14 -0
- data/ext/sources/ggml/src/ggml-cpu/simd-mappings.h +41 -43
- data/ext/sources/ggml/src/ggml-cpu/spacemit/ime.cpp +3 -2
- data/ext/sources/ggml/src/ggml-cpu/unary-ops.cpp +151 -0
- data/ext/sources/ggml/src/ggml-cpu/unary-ops.h +7 -0
- data/ext/sources/ggml/src/ggml-cpu/vec.cpp +124 -1
- data/ext/sources/ggml/src/ggml-cpu/vec.h +261 -146
- data/ext/sources/ggml/src/ggml-cuda/CMakeLists.txt +72 -1
- data/ext/sources/ggml/src/ggml-cuda/argmax.cu +2 -2
- data/ext/sources/ggml/src/ggml-cuda/argsort.cu +123 -6
- data/ext/sources/ggml/src/ggml-cuda/argsort.cuh +16 -0
- data/ext/sources/ggml/src/ggml-cuda/binbcast.cu +1 -1
- data/ext/sources/ggml/src/ggml-cuda/common.cuh +353 -80
- data/ext/sources/ggml/src/ggml-cuda/convert.cuh +10 -0
- data/ext/sources/ggml/src/ggml-cuda/cpy-utils.cuh +1 -1
- data/ext/sources/ggml/src/ggml-cuda/cpy.cu +339 -246
- data/ext/sources/ggml/src/ggml-cuda/cpy.cuh +1 -5
- data/ext/sources/ggml/src/ggml-cuda/cumsum.cu +307 -0
- data/ext/sources/ggml/src/ggml-cuda/cumsum.cuh +5 -0
- data/ext/sources/ggml/src/ggml-cuda/diag.cu +77 -0
- data/ext/sources/ggml/src/ggml-cuda/diag.cuh +5 -0
- data/ext/sources/ggml/src/ggml-cuda/fattn-common.cuh +31 -21
- data/ext/sources/ggml/src/ggml-cuda/fattn-mma-f16.cuh +663 -596
- data/ext/sources/ggml/src/ggml-cuda/fattn-tile.cu +35 -741
- data/ext/sources/ggml/src/ggml-cuda/fattn-tile.cuh +1241 -0
- data/ext/sources/ggml/src/ggml-cuda/fattn-vec.cuh +30 -37
- data/ext/sources/ggml/src/ggml-cuda/fattn-wmma-f16.cu +14 -13
- data/ext/sources/ggml/src/ggml-cuda/fattn-wmma-f16.cuh +48 -0
- data/ext/sources/ggml/src/ggml-cuda/fattn.cu +83 -37
- data/ext/sources/ggml/src/ggml-cuda/fill.cu +37 -0
- data/ext/sources/ggml/src/ggml-cuda/fill.cuh +3 -0
- data/ext/sources/ggml/src/ggml-cuda/ggml-cuda.cu +1155 -164
- data/ext/sources/ggml/src/ggml-cuda/mean.cu +5 -4
- data/ext/sources/ggml/src/ggml-cuda/mma.cuh +741 -48
- data/ext/sources/ggml/src/ggml-cuda/mmf.cu +60 -12
- data/ext/sources/ggml/src/ggml-cuda/mmf.cuh +381 -42
- data/ext/sources/ggml/src/ggml-cuda/mmid.cu +164 -0
- data/ext/sources/ggml/src/ggml-cuda/mmid.cuh +5 -0
- data/ext/sources/ggml/src/ggml-cuda/mmq.cu +69 -176
- data/ext/sources/ggml/src/ggml-cuda/mmq.cuh +498 -171
- data/ext/sources/ggml/src/ggml-cuda/mmvf.cu +375 -79
- data/ext/sources/ggml/src/ggml-cuda/mmvf.cuh +3 -2
- data/ext/sources/ggml/src/ggml-cuda/mmvq.cu +241 -95
- data/ext/sources/ggml/src/ggml-cuda/mmvq.cuh +1 -1
- data/ext/sources/ggml/src/ggml-cuda/pad.cu +64 -33
- data/ext/sources/ggml/src/ggml-cuda/quantize.cu +151 -0
- data/ext/sources/ggml/src/ggml-cuda/quantize.cuh +14 -0
- data/ext/sources/ggml/src/ggml-cuda/rope.cu +192 -77
- data/ext/sources/ggml/src/ggml-cuda/rope.cuh +2 -0
- data/ext/sources/ggml/src/ggml-cuda/set-rows.cu +101 -47
- data/ext/sources/ggml/src/ggml-cuda/set.cu +39 -0
- data/ext/sources/ggml/src/ggml-cuda/set.cuh +7 -0
- data/ext/sources/ggml/src/ggml-cuda/softmax.cu +203 -6
- data/ext/sources/ggml/src/ggml-cuda/solve_tri.cu +275 -0
- data/ext/sources/ggml/src/ggml-cuda/solve_tri.cuh +3 -0
- data/ext/sources/ggml/src/ggml-cuda/ssm-conv.cu +14 -20
- data/ext/sources/ggml/src/ggml-cuda/ssm-scan.cu +49 -84
- data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq112-dv112.cu +5 -0
- data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq128-dv128.cu +5 -0
- data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq256-dv256.cu +5 -0
- data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq40-dv40.cu +5 -0
- data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq576-dv512.cu +5 -0
- data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq64-dv64.cu +5 -0
- data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq72-dv72.cu +5 -0
- data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq80-dv80.cu +5 -0
- data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq96-dv96.cu +5 -0
- data/ext/sources/ggml/src/ggml-cuda/template-instances/generate_cu_files.py +19 -1
- data/ext/sources/ggml/src/ggml-cuda/top-k.cu +96 -0
- data/ext/sources/ggml/src/ggml-cuda/top-k.cuh +3 -0
- data/ext/sources/ggml/src/ggml-cuda/topk-moe.cu +168 -76
- data/ext/sources/ggml/src/ggml-cuda/topk-moe.cuh +11 -4
- data/ext/sources/ggml/src/ggml-cuda/tri.cu +136 -0
- data/ext/sources/ggml/src/ggml-cuda/tri.cuh +5 -0
- data/ext/sources/ggml/src/ggml-cuda/unary.cu +105 -11
- data/ext/sources/ggml/src/ggml-cuda/unary.cuh +36 -0
- data/ext/sources/ggml/src/ggml-cuda/upscale.cu +163 -7
- data/ext/sources/ggml/src/ggml-cuda/vendors/cuda.h +4 -0
- data/ext/sources/ggml/src/ggml-cuda/vendors/hip.h +12 -1
- data/ext/sources/ggml/src/ggml-cuda/vendors/musa.h +6 -0
- data/ext/sources/ggml/src/ggml-hexagon/CMakeLists.txt +80 -0
- data/ext/sources/ggml/src/ggml-hexagon/ggml-hexagon.cpp +3151 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/CMakeLists.txt +44 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/act-ops.c +682 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/binary-ops.c +360 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/cmake-toolchain.cmake +157 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/flash-attn-ops.c +566 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/get-rows-ops.c +112 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/htp-ctx.h +35 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/htp-dma.c +63 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/htp-dma.h +157 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/htp-msg.h +165 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/htp-ops.h +92 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/htp_iface.idl +16 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-exp.c +94 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-inverse.c +72 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-sigmoid.c +49 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-utils.c +1020 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-utils.h +1353 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/main.c +1001 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/matmul-ops.c +2503 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/ops-utils.h +149 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/rope-ops.c +487 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/set-rows-ops.c +168 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/softmax-ops.c +402 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/unary-ops.c +287 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/worker-pool.c +297 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp/worker-pool.h +57 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp-utils.c +454 -0
- data/ext/sources/ggml/src/ggml-hexagon/htp-utils.h +221 -0
- data/ext/sources/ggml/src/ggml-hexagon/op-desc.h +153 -0
- data/ext/sources/ggml/src/ggml-hip/CMakeLists.txt +8 -13
- data/ext/sources/ggml/src/ggml-impl.h +67 -6
- data/ext/sources/ggml/src/ggml-metal/ggml-metal-common.cpp +2 -2
- data/ext/sources/ggml/src/ggml-metal/ggml-metal-context.m +29 -20
- data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.cpp +652 -285
- data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.h +103 -56
- data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.m +496 -118
- data/ext/sources/ggml/src/ggml-metal/ggml-metal-impl.h +231 -9
- data/ext/sources/ggml/src/ggml-metal/ggml-metal-ops.cpp +1227 -224
- data/ext/sources/ggml/src/ggml-metal/ggml-metal-ops.h +12 -0
- data/ext/sources/ggml/src/ggml-metal/ggml-metal.cpp +14 -8
- data/ext/sources/ggml/src/ggml-metal/ggml-metal.metal +1972 -704
- data/ext/sources/ggml/src/ggml-musa/CMakeLists.txt +3 -1
- data/ext/sources/ggml/src/ggml-opencl/CMakeLists.txt +11 -0
- data/ext/sources/ggml/src/ggml-opencl/ggml-opencl.cpp +1430 -120
- data/ext/sources/ggml/src/ggml-opencl/kernels/cvt.cl +63 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/expm1.cl +82 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/fill.cl +17 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f32.cl +4 -3
- data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_mxfp4_f32.cl +162 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/gemv_moe_mxfp4_f32.cl +156 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/get_rows.cl +36 -12
- data/ext/sources/ggml/src/ggml-opencl/kernels/mean.cl +39 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_f16_f32_kq_kqv.cl +273 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_f16_f32_l4_lm.cl +24 -10
- data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_f32_f32_l4_lm.cl +24 -10
- data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_q8_0_f32_l4_lm.cl +154 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/pad.cl +29 -20
- data/ext/sources/ggml/src/ggml-opencl/kernels/rms_norm.cl +25 -10
- data/ext/sources/ggml/src/ggml-opencl/kernels/rope.cl +50 -24
- data/ext/sources/ggml/src/ggml-opencl/kernels/set_rows.cl +35 -16
- data/ext/sources/ggml/src/ggml-opencl/kernels/softplus.cl +88 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/sqr.cl +53 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/sqrt.cl +53 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/ssm_conv.cl +77 -0
- data/ext/sources/ggml/src/ggml-opencl/kernels/transpose.cl +13 -0
- data/ext/sources/ggml/src/ggml-rpc/ggml-rpc.cpp +438 -156
- data/ext/sources/ggml/src/ggml-sycl/CMakeLists.txt +48 -3
- data/ext/sources/ggml/src/ggml-sycl/add-id.cpp +77 -0
- data/ext/sources/ggml/src/ggml-sycl/add-id.hpp +8 -0
- data/ext/sources/ggml/src/ggml-sycl/backend.hpp +6 -0
- data/ext/sources/ggml/src/ggml-sycl/binbcast.cpp +0 -9
- data/ext/sources/ggml/src/ggml-sycl/binbcast.hpp +0 -6
- data/ext/sources/ggml/src/ggml-sycl/common.hpp +117 -15
- data/ext/sources/ggml/src/ggml-sycl/concat.cpp +55 -44
- data/ext/sources/ggml/src/ggml-sycl/convert.cpp +34 -0
- data/ext/sources/ggml/src/ggml-sycl/count-equal.cpp +79 -0
- data/ext/sources/ggml/src/ggml-sycl/count-equal.hpp +9 -0
- data/ext/sources/ggml/src/ggml-sycl/cpy.cpp +0 -3
- data/ext/sources/ggml/src/ggml-sycl/dequantize.hpp +18 -0
- data/ext/sources/ggml/src/ggml-sycl/dpct/helper.hpp +76 -3
- data/ext/sources/ggml/src/ggml-sycl/element_wise.cpp +333 -300
- data/ext/sources/ggml/src/ggml-sycl/element_wise.hpp +10 -2
- data/ext/sources/ggml/src/ggml-sycl/ggml-sycl.cpp +335 -110
- data/ext/sources/ggml/src/ggml-sycl/mmvq.cpp +22 -0
- data/ext/sources/ggml/src/ggml-sycl/norm.cpp +156 -0
- data/ext/sources/ggml/src/ggml-sycl/norm.hpp +2 -0
- data/ext/sources/ggml/src/ggml-sycl/pad.cpp +97 -0
- data/ext/sources/ggml/src/ggml-sycl/pad.hpp +24 -0
- data/ext/sources/ggml/src/ggml-sycl/pad_reflect_1d.cpp +100 -0
- data/ext/sources/ggml/src/ggml-sycl/pad_reflect_1d.hpp +10 -0
- data/ext/sources/ggml/src/ggml-sycl/presets.hpp +2 -0
- data/ext/sources/ggml/src/ggml-sycl/repeat_back.cpp +76 -0
- data/ext/sources/ggml/src/ggml-sycl/repeat_back.hpp +8 -0
- data/ext/sources/ggml/src/ggml-sycl/roll.cpp +122 -0
- data/ext/sources/ggml/src/ggml-sycl/roll.hpp +20 -0
- data/ext/sources/ggml/src/ggml-sycl/rope.cpp +30 -17
- data/ext/sources/ggml/src/ggml-sycl/set.cpp +73 -0
- data/ext/sources/ggml/src/ggml-sycl/set.hpp +5 -0
- data/ext/sources/ggml/src/ggml-sycl/softmax.cpp +327 -162
- data/ext/sources/ggml/src/ggml-sycl/softmax.hpp +4 -0
- data/ext/sources/ggml/src/ggml-sycl/ssm_conv.cpp +127 -0
- data/ext/sources/ggml/src/ggml-sycl/ssm_conv.hpp +5 -0
- data/ext/sources/ggml/src/ggml-sycl/vecdotq.hpp +58 -0
- data/ext/sources/ggml/src/ggml-vulkan/CMakeLists.txt +38 -18
- data/ext/sources/ggml/src/ggml-vulkan/ggml-vulkan.cpp +5013 -2859
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/abs.comp +21 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/acc.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/add.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/add1.comp +28 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/add_id.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/arange.comp +20 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argmax.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argsort.comp +33 -26
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argsort_large.comp +114 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/ceil.comp +22 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/clamp.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/concat.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/contig_copy.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv2d_dw.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv2d_mm.comp +47 -49
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv_transpose_1d.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_from_quant.comp +3 -3
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp +4 -4
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_transpose.comp +67 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cos.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/count_equal.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/count_experts.comp +51 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cumsum.comp +83 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cumsum_multipass1.comp +60 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cumsum_multipass2.comp +66 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_f32.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{dequant_funcs.comp → dequant_funcs.glsl} +9 -21
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{dequant_funcs_cm2.comp → dequant_funcs_cm2.glsl} +18 -4
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{dequant_head.comp → dequant_head.glsl} +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq1_m.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq1_s.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_s.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_xs.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_xxs.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq3_s.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq3_xxs.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq4_nl.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq4_xs.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_mxfp4.comp +3 -3
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q2_k.comp +3 -3
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q3_k.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_0.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_1.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_k.comp +3 -3
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_0.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_1.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_k.comp +3 -3
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q6_k.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q8_0.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/diag.comp +29 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/diag_mask_inf.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/div.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/exp.comp +3 -3
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/fill.comp +19 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn.comp +39 -17
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{flash_attn_base.comp → flash_attn_base.glsl} +19 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm1.comp +45 -7
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm2.comp +50 -12
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_split_k_reduce.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/floor.comp +22 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/geglu.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/geglu_erf.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/geglu_quick.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu_erf.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu_quick.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{generic_binary_head.comp → generic_binary_head.glsl} +17 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{generic_head.comp → generic_head.glsl} +2 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{generic_unary_head.comp → generic_unary_head.glsl} +7 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/get_rows.comp +4 -4
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/get_rows_quant.comp +3 -3
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{glu_head.comp → glu_head.glsl} +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/group_norm.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/hardsigmoid.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/hardswish.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/im2col.comp +19 -7
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/im2col_3d.comp +2 -3
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/l2_norm.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/leaky_relu.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/log.comp +18 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{mul_mat_vec_base.comp → mul_mat_vec_base.glsl} +70 -25
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iface.glsl +35 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq1_m.comp +71 -21
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq1_s.comp +41 -25
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq2_s.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq2_xs.comp +44 -26
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq2_xxs.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq3_s.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq3_xxs.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_nc.comp +9 -7
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_p021.comp +9 -7
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q2_k.comp +4 -6
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q3_k.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q4_k.comp +4 -6
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q5_k.comp +4 -6
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q6_k.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vecq.comp +39 -36
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vecq_funcs.glsl +494 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm.comp +78 -103
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm_cm2.comp +34 -23
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{mul_mm_funcs.comp → mul_mm_funcs.glsl} +69 -59
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm_id_funcs.glsl +72 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq.comp +88 -228
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq_funcs.glsl +454 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq_shmem_types.glsl +78 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/multi_add.comp +97 -13
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/neg.comp +20 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/norm.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/opt_step_adamw.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/opt_step_sgd.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/pad.comp +21 -6
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/pool2d.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/quantize_q8_1.comp +10 -10
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/reglu.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/relu.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/repeat.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/repeat_back.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm.comp +50 -4
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm_back.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm_partials.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/roll.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_funcs.glsl +234 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_head.glsl +20 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_multi.comp +6 -50
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_neox.comp +6 -33
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_norm.comp +6 -33
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_params.glsl +28 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_vision.comp +6 -39
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/round.comp +29 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/scale.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sigmoid.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/silu.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/silu_back.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sin.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_back.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_large1.comp +62 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_large2.comp +79 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_large3.comp +65 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_large_common.glsl +53 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/softplus.comp +23 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/solve_tri.comp +81 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sqrt.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/square.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/ssm_conv.comp +44 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/ssm_scan.comp +124 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/step.comp +22 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sub.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sum_rows.comp +2 -25
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sum_rows.glsl +25 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/swiglu.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/swiglu_oai.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/tanh.comp +2 -2
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/timestep_embedding.comp +1 -1
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/topk_argsort.comp +118 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/topk_moe.comp +213 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/topk_nary_search.comp +246 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/tri.comp +43 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/trunc.comp +22 -0
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{types.comp → types.glsl} +345 -26
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/upscale.comp +90 -12
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp +335 -151
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/xielu.comp +35 -0
- data/ext/sources/ggml/src/ggml-webgpu/CMakeLists.txt +28 -2
- data/ext/sources/ggml/src/ggml-webgpu/ggml-webgpu-shader-lib.hpp +169 -0
- data/ext/sources/ggml/src/ggml-webgpu/ggml-webgpu.cpp +1964 -435
- data/ext/sources/ggml/src/ggml-webgpu/pre_wgsl.hpp +778 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/bin_op.tmpl.wgsl +188 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/cpy.tmpl.wgsl +101 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/embed_wgsl.py +33 -10
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/flash_attn.wgsl +591 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/get_rows.tmpl.wgsl +1 -1
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/glu.tmpl.wgsl +323 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat.tmpl.wgsl +6 -6
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_decls.tmpl +97 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_reg_tile.tmpl.wgsl +247 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_subgroup_matrix.tmpl.wgsl +302 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_vec.tmpl.wgsl +267 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/rms_norm.wgsl +83 -17
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/rope.tmpl.wgsl +295 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/scale.tmpl.wgsl +90 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/set_rows.tmpl.wgsl +112 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/soft_max.tmpl.wgsl +345 -0
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/unary_op.wgsl +483 -0
- data/ext/sources/ggml/src/ggml-zendnn/CMakeLists.txt +92 -0
- data/ext/sources/ggml/src/ggml-zendnn/ggml-zendnn.cpp +466 -0
- data/ext/sources/ggml/src/ggml.c +425 -33
- data/ext/sources/include/whisper.h +1 -0
- data/ext/sources/src/CMakeLists.txt +3 -1
- data/ext/sources/src/whisper.cpp +101 -35
- data/ext/sources/tests/CMakeLists.txt +2 -2
- data/ext/sources/tests/test-vad-full.cpp +4 -2
- data/ext/sources/tests/test-vad.cpp +1 -1
- data/extsources.rb +1 -0
- data/lib/whisper/model/uri.rb +17 -18
- data/sig/whisper.rbs +119 -2
- data/test/test_params.rb +16 -8
- data/test/test_segment.rb +0 -1
- data/test/test_token.rb +70 -0
- data/test/test_vad.rb +1 -1
- data/test/test_vad_context.rb +50 -0
- data/test/test_vad_segment.rb +19 -0
- data/test/test_vad_segments.rb +16 -0
- data/test/test_whisper.rb +7 -0
- data/whispercpp.gemspec +1 -1
- metadata +287 -34
- data/ext/sources/build-xcframework.sh +0 -571
- data/ext/sources/ggml/src/ggml-cann/Doxyfile +0 -2579
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq_funcs.comp +0 -105
- data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_head.comp +0 -55
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/add.tmpl.wgsl +0 -44
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/add_in_place.tmpl.wgsl +0 -41
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/cpy.wgsl +0 -60
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul.tmpl.wgsl +0 -44
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_in_place.tmpl.wgsl +0 -41
- data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/rms_norm_in_place.wgsl +0 -48
- /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{test_bfloat16_support.comp → feature-tests/bfloat16.comp} +0 -0
- /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{test_coopmat_support.comp → feature-tests/coopmat.comp} +0 -0
- /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{test_coopmat2_support.comp → feature-tests/coopmat2.comp} +0 -0
- /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{test_integer_dot_support.comp → feature-tests/integer_dot.comp} +0 -0
- /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{glu_main.comp → glu_main.glsl} +0 -0
- /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{rte.comp → rte.glsl} +0 -0
- /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{utils.comp → utils.glsl} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 90c3f74c4f4c20ba9f9276f16fad4efa3458cab361f1dcdceb9ef436a3845ddc
|
|
4
|
+
data.tar.gz: 9001366168e697842700adc27305e0771c97e5ba3533c567c3cc6363004b2332
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d57baa8f961809c0323c83df79b5373cc2aefa38b5d21e3c538fea07ac6e74b95cfa86565bd64fd35ee385afb8baee32d9cb445fa07b7c51d4556ffcb0a0bda5
|
|
7
|
+
data.tar.gz: 6f1418ae638dc69fbff3d2accbb7652a360f6d21d34d003df7953054773bd7056add1051a302deb59649a6674c89fb22a419809ba09f166458f4da396945dd5f
|
data/README.md
CHANGED
|
@@ -5,43 +5,6 @@ whispercpp
|
|
|
5
5
|
|
|
6
6
|
Ruby bindings for [whisper.cpp][], an interface of automatic speech recognition model.
|
|
7
7
|
|
|
8
|
-
Installation
|
|
9
|
-
------------
|
|
10
|
-
|
|
11
|
-
Install the gem and add to the application's Gemfile by executing:
|
|
12
|
-
|
|
13
|
-
$ bundle add whispercpp
|
|
14
|
-
|
|
15
|
-
If bundler is not being used to manage dependencies, install the gem by executing:
|
|
16
|
-
|
|
17
|
-
$ gem install whispercpp
|
|
18
|
-
|
|
19
|
-
You can pass build options for whisper.cpp, for instance:
|
|
20
|
-
|
|
21
|
-
$ bundle config build.whispercpp --enable-ggml-cuda
|
|
22
|
-
|
|
23
|
-
or,
|
|
24
|
-
|
|
25
|
-
$ gem install whispercpp -- --enable-ggml-cuda
|
|
26
|
-
|
|
27
|
-
See whisper.cpp's [README](https://github.com/ggml-org/whisper.cpp/blob/master/README.md) for available options. You need convert options present the README to Ruby-style options, for example:
|
|
28
|
-
|
|
29
|
-
Boolean options:
|
|
30
|
-
|
|
31
|
-
* `-DGGML_BLAS=1` -> `--enable-ggml-blas`
|
|
32
|
-
* `-DWHISER_COREML=OFF` -> `--disable-whisper-coreml`
|
|
33
|
-
|
|
34
|
-
Argument options:
|
|
35
|
-
|
|
36
|
-
* `-DGGML_CUDA_COMPRESSION_MODE=size` -> `--ggml-cuda-compression-mode=size`
|
|
37
|
-
|
|
38
|
-
Combination:
|
|
39
|
-
|
|
40
|
-
* `-DGGML_CUDA=1 -DCMAKE_CUDA_ARCHITECTURES="86"` -> `--enable-ggml-cuda --cmake_cuda-architectures="86"`
|
|
41
|
-
|
|
42
|
-
For boolean options like `GGML_CUDA`, the README says `-DGGML_CUDA=1`. You need strip `-D`, prepend `--enable-` for `1` or `ON` (`--disable-` for `0` or `OFF`) and make it kebab-case: `--enable-ggml-cuda`.
|
|
43
|
-
For options which require arguments like `CMAKE_CUDA_ARCHITECTURES`, the README says `-DCMAKE_CUDA_ARCHITECTURES="86"`. You need strip `-D`, prepend `--`, make it kebab-case, append `=` and append argument: `--cmake-cuda-architectures="86"`.
|
|
44
|
-
|
|
45
8
|
Usage
|
|
46
9
|
-----
|
|
47
10
|
|
|
@@ -57,7 +20,8 @@ params = Whisper::Params.new(
|
|
|
57
20
|
max_text_tokens: 300,
|
|
58
21
|
translate: true,
|
|
59
22
|
print_timestamps: false,
|
|
60
|
-
initial_prompt: "Initial prompt here."
|
|
23
|
+
initial_prompt: "Initial prompt here.",
|
|
24
|
+
carry_initial_prompt: true
|
|
61
25
|
)
|
|
62
26
|
|
|
63
27
|
whisper.transcribe("path/to/audio.wav", params) do |whole_text|
|
|
@@ -118,7 +82,8 @@ Or, you can download model files:
|
|
|
118
82
|
```ruby
|
|
119
83
|
whisper = Whisper::Context.new("https://example.net/uri/of/your/model.bin")
|
|
120
84
|
# Or
|
|
121
|
-
|
|
85
|
+
uri = URI("https://example.net/uri/of/your/model.bin")
|
|
86
|
+
whisper = Whisper::Context.new(uri)
|
|
122
87
|
```
|
|
123
88
|
|
|
124
89
|
See [models][] page for details.
|
|
@@ -134,20 +99,20 @@ Support for Voice Activity Detection (VAD) can be enabled by setting `Whisper::P
|
|
|
134
99
|
```ruby
|
|
135
100
|
Whisper::Params.new(
|
|
136
101
|
vad: true,
|
|
137
|
-
vad_model_path: "silero-
|
|
102
|
+
vad_model_path: "silero-v6.2.0",
|
|
138
103
|
# other arguments...
|
|
139
104
|
)
|
|
140
105
|
```
|
|
141
106
|
|
|
142
|
-
When you pass the model name (`"silero-
|
|
143
|
-
Currently, "silero-
|
|
107
|
+
When you pass the model name (`"silero-v6.2.0"`) or URI (`https://huggingface.co/ggml-org/whisper-vad/resolve/main/ggml-silero-v6.2.0.bin`), it will be downloaded automatically.
|
|
108
|
+
Currently, "silero-v6.2.0" is registered as pre-converted model like ASR models. You also specify file path or URI of model.
|
|
144
109
|
|
|
145
110
|
If you need configure VAD behavior, pass params for that:
|
|
146
111
|
|
|
147
112
|
```ruby
|
|
148
113
|
Whisper::Params.new(
|
|
149
114
|
vad: true,
|
|
150
|
-
vad_model_path: "silero-
|
|
115
|
+
vad_model_path: "silero-v6.2.0",
|
|
151
116
|
vad_params: Whisper::VAD::Params.new(
|
|
152
117
|
threshold: 1.0, # defaults to 0.5
|
|
153
118
|
min_speech_duration_ms: 500, # defaults to 250
|
|
@@ -187,6 +152,42 @@ WEBVTT
|
|
|
187
152
|
|
|
188
153
|
You may call `#to_srt`, too
|
|
189
154
|
|
|
155
|
+
Installation
|
|
156
|
+
------------
|
|
157
|
+
|
|
158
|
+
Install the gem and add to the application's Gemfile by executing:
|
|
159
|
+
|
|
160
|
+
$ bundle add whispercpp
|
|
161
|
+
|
|
162
|
+
If bundler is not being used to manage dependencies, install the gem by executing:
|
|
163
|
+
|
|
164
|
+
$ gem install whispercpp
|
|
165
|
+
|
|
166
|
+
You can pass build options for whisper.cpp, for instance:
|
|
167
|
+
|
|
168
|
+
$ bundle config build.whispercpp --enable-ggml-cuda
|
|
169
|
+
|
|
170
|
+
or,
|
|
171
|
+
|
|
172
|
+
$ gem install whispercpp -- --enable-ggml-cuda
|
|
173
|
+
|
|
174
|
+
See whisper.cpp's [README](https://github.com/ggml-org/whisper.cpp/blob/master/README.md) for available options. You need convert options present in the README to Ruby-style options, for example:
|
|
175
|
+
|
|
176
|
+
Boolean options:
|
|
177
|
+
|
|
178
|
+
* `-DGGML_BLAS=1` -> `--enable-ggml-blas`
|
|
179
|
+
* `-DWHISER_COREML=OFF` -> `--disable-whisper-coreml`
|
|
180
|
+
|
|
181
|
+
Argument options:
|
|
182
|
+
|
|
183
|
+
* `-DGGML_CUDA_COMPRESSION_MODE=size` -> `--ggml-cuda-compression-mode=size`
|
|
184
|
+
|
|
185
|
+
Combination:
|
|
186
|
+
|
|
187
|
+
* `-DGGML_CUDA=1 -DCMAKE_CUDA_ARCHITECTURES="86"` -> `--enable-ggml-cuda --cmake_cuda-architectures="86"`
|
|
188
|
+
|
|
189
|
+
For boolean options like `GGML_CUDA`, the README says `-DGGML_CUDA=1`. You need strip `-D`, prepend `--enable-` for `1` or `ON` (`--disable-` for `0` or `OFF`) and make it kebab-case: `--enable-ggml-cuda`.
|
|
190
|
+
For options which require arguments like `CMAKE_CUDA_ARCHITECTURES`, the README says `-DCMAKE_CUDA_ARCHITECTURES="86"`. You need strip `-D`, prepend `--`, make it kebab-case, append `=` and append argument: `--cmake-cuda-architectures="86"`.
|
|
190
191
|
|
|
191
192
|
API
|
|
192
193
|
---
|
|
@@ -324,6 +325,22 @@ whisper
|
|
|
324
325
|
|
|
325
326
|
The second argument `samples` may be an array, an object with `length` and `each` method, or a MemoryView. If you can prepare audio data as C array and export it as a MemoryView, whispercpp accepts and works with it with zero copy.
|
|
326
327
|
|
|
328
|
+
Using VAD separately from ASR
|
|
329
|
+
-----------------------------
|
|
330
|
+
|
|
331
|
+
VAD feature itself is useful. You can use it separately from ASR:
|
|
332
|
+
|
|
333
|
+
```ruby
|
|
334
|
+
vad = Whisper::VAD::Context.new("silero-v6.2.0")
|
|
335
|
+
vad
|
|
336
|
+
.detect("path/to/audio.wav", Whisper::VAD::Params.new)
|
|
337
|
+
.each_with_index do |segment, index|
|
|
338
|
+
segment => {start_time: st, end_time: ed} # `Segment` responds to `#deconstruct_keys`
|
|
339
|
+
|
|
340
|
+
puts "[%{nth}: %{st} --> %{ed}]" % {nth: index + 1, st:, ed:}
|
|
341
|
+
end
|
|
342
|
+
```
|
|
343
|
+
|
|
327
344
|
Development
|
|
328
345
|
-----------
|
|
329
346
|
|
data/ext/extconf.rb
CHANGED
|
@@ -3,9 +3,9 @@ require_relative "options"
|
|
|
3
3
|
require_relative "dependencies"
|
|
4
4
|
|
|
5
5
|
cmake = find_executable("cmake") || abort
|
|
6
|
-
options = Options.new(cmake)
|
|
6
|
+
options = Options.new(cmake).to_s
|
|
7
7
|
have_library("gomp") rescue nil
|
|
8
|
-
libs = Dependencies.new(cmake, options)
|
|
8
|
+
libs = Dependencies.new(cmake, options).to_s
|
|
9
9
|
|
|
10
10
|
$INCFLAGS << " -Isources/include -Isources/ggml/include -Isources/examples"
|
|
11
11
|
$LOCAL_LIBS << " #{libs}"
|
data/ext/ruby_whisper.c
CHANGED
|
@@ -6,10 +6,14 @@ VALUE mWhisper;
|
|
|
6
6
|
VALUE mVAD;
|
|
7
7
|
VALUE cContext;
|
|
8
8
|
VALUE cParams;
|
|
9
|
+
VALUE cVADContext;
|
|
9
10
|
VALUE cVADParams;
|
|
11
|
+
VALUE cVADSegments;
|
|
12
|
+
VALUE cVADSegment;
|
|
10
13
|
VALUE eError;
|
|
11
14
|
|
|
12
15
|
VALUE cSegment;
|
|
16
|
+
VALUE cToken;
|
|
13
17
|
VALUE cModel;
|
|
14
18
|
|
|
15
19
|
ID id_to_s;
|
|
@@ -34,9 +38,13 @@ extern VALUE ruby_whisper_segment_allocate(VALUE klass);
|
|
|
34
38
|
extern void init_ruby_whisper_context(VALUE *mWhisper);
|
|
35
39
|
extern void init_ruby_whisper_params(VALUE *mWhisper);
|
|
36
40
|
extern void init_ruby_whisper_error(VALUE *mWhisper);
|
|
37
|
-
extern void init_ruby_whisper_segment(VALUE *mWhisper
|
|
41
|
+
extern void init_ruby_whisper_segment(VALUE *mWhisper);
|
|
42
|
+
extern void init_ruby_whisper_token(VALUE *mWhisper);
|
|
38
43
|
extern void init_ruby_whisper_model(VALUE *mWhisper);
|
|
39
44
|
extern void init_ruby_whisper_vad_params(VALUE *mVAD);
|
|
45
|
+
extern void init_ruby_whisper_vad_context(VALUE *mVAD);
|
|
46
|
+
extern void init_ruby_whisper_vad_segment(VALUE *mVAD);
|
|
47
|
+
extern void init_ruby_whisper_vad_segments(VALUE *mVAD);
|
|
40
48
|
extern void register_callbacks(ruby_whisper_params *rwp, VALUE *context);
|
|
41
49
|
|
|
42
50
|
/*
|
|
@@ -167,9 +175,13 @@ void Init_whisper() {
|
|
|
167
175
|
init_ruby_whisper_context(&mWhisper);
|
|
168
176
|
init_ruby_whisper_params(&mWhisper);
|
|
169
177
|
init_ruby_whisper_error(&mWhisper);
|
|
170
|
-
init_ruby_whisper_segment(&mWhisper
|
|
178
|
+
init_ruby_whisper_segment(&mWhisper);
|
|
179
|
+
init_ruby_whisper_token(&mWhisper);
|
|
171
180
|
init_ruby_whisper_model(&mWhisper);
|
|
172
181
|
init_ruby_whisper_vad_params(&mVAD);
|
|
182
|
+
init_ruby_whisper_vad_segment(&mVAD);
|
|
183
|
+
init_ruby_whisper_vad_segments(&mVAD);
|
|
184
|
+
init_ruby_whisper_vad_context(&mVAD);
|
|
173
185
|
|
|
174
186
|
rb_require("whisper/context");
|
|
175
187
|
rb_require("whisper/segment");
|
data/ext/ruby_whisper.h
CHANGED
|
@@ -33,8 +33,47 @@ typedef struct {
|
|
|
33
33
|
int index;
|
|
34
34
|
} ruby_whisper_segment;
|
|
35
35
|
|
|
36
|
+
typedef struct {
|
|
37
|
+
whisper_token_data *token_data;
|
|
38
|
+
const char *text;
|
|
39
|
+
} ruby_whisper_token;
|
|
40
|
+
|
|
36
41
|
typedef struct {
|
|
37
42
|
VALUE context;
|
|
38
43
|
} ruby_whisper_model;
|
|
39
44
|
|
|
45
|
+
typedef struct {
|
|
46
|
+
struct whisper_vad_segments *segments;
|
|
47
|
+
} ruby_whisper_vad_segments;
|
|
48
|
+
|
|
49
|
+
typedef struct {
|
|
50
|
+
VALUE segments;
|
|
51
|
+
int index;
|
|
52
|
+
} ruby_whisper_vad_segment;
|
|
53
|
+
|
|
54
|
+
typedef struct {
|
|
55
|
+
struct whisper_vad_context *context;
|
|
56
|
+
} ruby_whisper_vad_context;
|
|
57
|
+
|
|
58
|
+
#define GetContext(obj, rw) do { \
|
|
59
|
+
TypedData_Get_Struct((obj), ruby_whisper, &ruby_whisper_type, (rw)); \
|
|
60
|
+
if ((rw)->context == NULL) { \
|
|
61
|
+
rb_raise(rb_eRuntimeError, "Not initialized"); \
|
|
62
|
+
} \
|
|
63
|
+
} while (0)
|
|
64
|
+
|
|
65
|
+
#define GetToken(obj, rwt) do { \
|
|
66
|
+
TypedData_Get_Struct((obj), ruby_whisper_token, &ruby_whisper_token_type, (rwt)); \
|
|
67
|
+
if ((rwt)->token_data == NULL) { \
|
|
68
|
+
rb_raise(rb_eRuntimeError, "Not initialized"); \
|
|
69
|
+
} \
|
|
70
|
+
} while (0)
|
|
71
|
+
|
|
72
|
+
#define GetVADSegments(obj, rwvss) do { \
|
|
73
|
+
TypedData_Get_Struct((obj), ruby_whisper_vad_segments, &ruby_whisper_vad_segments_type, (rwvss)); \
|
|
74
|
+
if ((rwvss)->segments == NULL) { \
|
|
75
|
+
rb_raise(rb_eRuntimeError, "Not initialized"); \
|
|
76
|
+
} \
|
|
77
|
+
} while (0)
|
|
78
|
+
|
|
40
79
|
#endif
|
data/ext/ruby_whisper_context.c
CHANGED
|
@@ -147,7 +147,7 @@ ruby_whisper_initialize(int argc, VALUE *argv, VALUE self)
|
|
|
147
147
|
VALUE ruby_whisper_model_n_vocab(VALUE self)
|
|
148
148
|
{
|
|
149
149
|
ruby_whisper *rw;
|
|
150
|
-
|
|
150
|
+
GetContext(self, rw);
|
|
151
151
|
return INT2NUM(whisper_model_n_vocab(rw->context));
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -158,7 +158,7 @@ VALUE ruby_whisper_model_n_vocab(VALUE self)
|
|
|
158
158
|
VALUE ruby_whisper_model_n_audio_ctx(VALUE self)
|
|
159
159
|
{
|
|
160
160
|
ruby_whisper *rw;
|
|
161
|
-
|
|
161
|
+
GetContext(self, rw);
|
|
162
162
|
return INT2NUM(whisper_model_n_audio_ctx(rw->context));
|
|
163
163
|
}
|
|
164
164
|
|
|
@@ -169,7 +169,7 @@ VALUE ruby_whisper_model_n_audio_ctx(VALUE self)
|
|
|
169
169
|
VALUE ruby_whisper_model_n_audio_state(VALUE self)
|
|
170
170
|
{
|
|
171
171
|
ruby_whisper *rw;
|
|
172
|
-
|
|
172
|
+
GetContext(self, rw);
|
|
173
173
|
return INT2NUM(whisper_model_n_audio_state(rw->context));
|
|
174
174
|
}
|
|
175
175
|
|
|
@@ -180,7 +180,7 @@ VALUE ruby_whisper_model_n_audio_state(VALUE self)
|
|
|
180
180
|
VALUE ruby_whisper_model_n_audio_head(VALUE self)
|
|
181
181
|
{
|
|
182
182
|
ruby_whisper *rw;
|
|
183
|
-
|
|
183
|
+
GetContext(self, rw);
|
|
184
184
|
return INT2NUM(whisper_model_n_audio_head(rw->context));
|
|
185
185
|
}
|
|
186
186
|
|
|
@@ -191,7 +191,7 @@ VALUE ruby_whisper_model_n_audio_head(VALUE self)
|
|
|
191
191
|
VALUE ruby_whisper_model_n_audio_layer(VALUE self)
|
|
192
192
|
{
|
|
193
193
|
ruby_whisper *rw;
|
|
194
|
-
|
|
194
|
+
GetContext(self, rw);
|
|
195
195
|
return INT2NUM(whisper_model_n_audio_layer(rw->context));
|
|
196
196
|
}
|
|
197
197
|
|
|
@@ -202,7 +202,7 @@ VALUE ruby_whisper_model_n_audio_layer(VALUE self)
|
|
|
202
202
|
VALUE ruby_whisper_model_n_text_ctx(VALUE self)
|
|
203
203
|
{
|
|
204
204
|
ruby_whisper *rw;
|
|
205
|
-
|
|
205
|
+
GetContext(self, rw);
|
|
206
206
|
return INT2NUM(whisper_model_n_text_ctx(rw->context));
|
|
207
207
|
}
|
|
208
208
|
|
|
@@ -213,7 +213,7 @@ VALUE ruby_whisper_model_n_text_ctx(VALUE self)
|
|
|
213
213
|
VALUE ruby_whisper_model_n_text_state(VALUE self)
|
|
214
214
|
{
|
|
215
215
|
ruby_whisper *rw;
|
|
216
|
-
|
|
216
|
+
GetContext(self, rw);
|
|
217
217
|
return INT2NUM(whisper_model_n_text_state(rw->context));
|
|
218
218
|
}
|
|
219
219
|
|
|
@@ -224,7 +224,7 @@ VALUE ruby_whisper_model_n_text_state(VALUE self)
|
|
|
224
224
|
VALUE ruby_whisper_model_n_text_head(VALUE self)
|
|
225
225
|
{
|
|
226
226
|
ruby_whisper *rw;
|
|
227
|
-
|
|
227
|
+
GetContext(self, rw);
|
|
228
228
|
return INT2NUM(whisper_model_n_text_head(rw->context));
|
|
229
229
|
}
|
|
230
230
|
|
|
@@ -235,7 +235,7 @@ VALUE ruby_whisper_model_n_text_head(VALUE self)
|
|
|
235
235
|
VALUE ruby_whisper_model_n_text_layer(VALUE self)
|
|
236
236
|
{
|
|
237
237
|
ruby_whisper *rw;
|
|
238
|
-
|
|
238
|
+
GetContext(self, rw);
|
|
239
239
|
return INT2NUM(whisper_model_n_text_layer(rw->context));
|
|
240
240
|
}
|
|
241
241
|
|
|
@@ -246,7 +246,7 @@ VALUE ruby_whisper_model_n_text_layer(VALUE self)
|
|
|
246
246
|
VALUE ruby_whisper_model_n_mels(VALUE self)
|
|
247
247
|
{
|
|
248
248
|
ruby_whisper *rw;
|
|
249
|
-
|
|
249
|
+
GetContext(self, rw);
|
|
250
250
|
return INT2NUM(whisper_model_n_mels(rw->context));
|
|
251
251
|
}
|
|
252
252
|
|
|
@@ -257,7 +257,7 @@ VALUE ruby_whisper_model_n_mels(VALUE self)
|
|
|
257
257
|
VALUE ruby_whisper_model_ftype(VALUE self)
|
|
258
258
|
{
|
|
259
259
|
ruby_whisper *rw;
|
|
260
|
-
|
|
260
|
+
GetContext(self, rw);
|
|
261
261
|
return INT2NUM(whisper_model_ftype(rw->context));
|
|
262
262
|
}
|
|
263
263
|
|
|
@@ -268,7 +268,7 @@ VALUE ruby_whisper_model_ftype(VALUE self)
|
|
|
268
268
|
VALUE ruby_whisper_model_type(VALUE self)
|
|
269
269
|
{
|
|
270
270
|
ruby_whisper *rw;
|
|
271
|
-
|
|
271
|
+
GetContext(self, rw);
|
|
272
272
|
return rb_str_new2(whisper_model_type_readable(rw->context));
|
|
273
273
|
}
|
|
274
274
|
|
|
@@ -291,7 +291,7 @@ VALUE ruby_whisper_full(int argc, VALUE *argv, VALUE self)
|
|
|
291
291
|
|
|
292
292
|
ruby_whisper *rw;
|
|
293
293
|
ruby_whisper_params *rwp;
|
|
294
|
-
|
|
294
|
+
GetContext(self, rw);
|
|
295
295
|
VALUE params = argv[0];
|
|
296
296
|
TypedData_Get_Struct(params, ruby_whisper_params, &ruby_whisper_params_type, rwp);
|
|
297
297
|
VALUE samples = argv[1];
|
|
@@ -377,7 +377,7 @@ ruby_whisper_full_parallel(int argc, VALUE *argv,VALUE self)
|
|
|
377
377
|
|
|
378
378
|
ruby_whisper *rw;
|
|
379
379
|
ruby_whisper_params *rwp;
|
|
380
|
-
|
|
380
|
+
GetContext(self, rw);
|
|
381
381
|
VALUE params = argv[0];
|
|
382
382
|
TypedData_Get_Struct(params, ruby_whisper_params, &ruby_whisper_params_type, rwp);
|
|
383
383
|
VALUE samples = argv[1];
|
|
@@ -463,7 +463,7 @@ static VALUE
|
|
|
463
463
|
ruby_whisper_full_n_segments(VALUE self)
|
|
464
464
|
{
|
|
465
465
|
ruby_whisper *rw;
|
|
466
|
-
|
|
466
|
+
GetContext(self, rw);
|
|
467
467
|
return INT2NUM(whisper_full_n_segments(rw->context));
|
|
468
468
|
}
|
|
469
469
|
|
|
@@ -477,7 +477,7 @@ static VALUE
|
|
|
477
477
|
ruby_whisper_full_lang_id(VALUE self)
|
|
478
478
|
{
|
|
479
479
|
ruby_whisper *rw;
|
|
480
|
-
|
|
480
|
+
GetContext(self, rw);
|
|
481
481
|
return INT2NUM(whisper_full_lang_id(rw->context));
|
|
482
482
|
}
|
|
483
483
|
|
|
@@ -502,7 +502,7 @@ static VALUE
|
|
|
502
502
|
ruby_whisper_full_get_segment_t0(VALUE self, VALUE i_segment)
|
|
503
503
|
{
|
|
504
504
|
ruby_whisper *rw;
|
|
505
|
-
|
|
505
|
+
GetContext(self, rw);
|
|
506
506
|
const int c_i_segment = ruby_whisper_full_check_segment_index(rw, i_segment);
|
|
507
507
|
const int64_t t0 = whisper_full_get_segment_t0(rw->context, c_i_segment);
|
|
508
508
|
return LONG2NUM(t0);
|
|
@@ -520,7 +520,7 @@ static VALUE
|
|
|
520
520
|
ruby_whisper_full_get_segment_t1(VALUE self, VALUE i_segment)
|
|
521
521
|
{
|
|
522
522
|
ruby_whisper *rw;
|
|
523
|
-
|
|
523
|
+
GetContext(self, rw);
|
|
524
524
|
const int c_i_segment = ruby_whisper_full_check_segment_index(rw, i_segment);
|
|
525
525
|
const int64_t t1 = whisper_full_get_segment_t1(rw->context, c_i_segment);
|
|
526
526
|
return LONG2NUM(t1);
|
|
@@ -538,7 +538,7 @@ static VALUE
|
|
|
538
538
|
ruby_whisper_full_get_segment_speaker_turn_next(VALUE self, VALUE i_segment)
|
|
539
539
|
{
|
|
540
540
|
ruby_whisper *rw;
|
|
541
|
-
|
|
541
|
+
GetContext(self, rw);
|
|
542
542
|
const int c_i_segment = ruby_whisper_full_check_segment_index(rw, i_segment);
|
|
543
543
|
const bool speaker_turn_next = whisper_full_get_segment_speaker_turn_next(rw->context, c_i_segment);
|
|
544
544
|
return speaker_turn_next ? Qtrue : Qfalse;
|
|
@@ -556,7 +556,7 @@ static VALUE
|
|
|
556
556
|
ruby_whisper_full_get_segment_text(VALUE self, VALUE i_segment)
|
|
557
557
|
{
|
|
558
558
|
ruby_whisper *rw;
|
|
559
|
-
|
|
559
|
+
GetContext(self, rw);
|
|
560
560
|
const int c_i_segment = ruby_whisper_full_check_segment_index(rw, i_segment);
|
|
561
561
|
const char * text = whisper_full_get_segment_text(rw->context, c_i_segment);
|
|
562
562
|
return rb_str_new2(text);
|
|
@@ -570,7 +570,7 @@ static VALUE
|
|
|
570
570
|
ruby_whisper_full_get_segment_no_speech_prob(VALUE self, VALUE i_segment)
|
|
571
571
|
{
|
|
572
572
|
ruby_whisper *rw;
|
|
573
|
-
|
|
573
|
+
GetContext(self, rw);
|
|
574
574
|
const int c_i_segment = ruby_whisper_full_check_segment_index(rw, i_segment);
|
|
575
575
|
const float no_speech_prob = whisper_full_get_segment_no_speech_prob(rw->context, c_i_segment);
|
|
576
576
|
return DBL2NUM(no_speech_prob);
|
|
@@ -611,7 +611,7 @@ ruby_whisper_each_segment(VALUE self)
|
|
|
611
611
|
}
|
|
612
612
|
|
|
613
613
|
ruby_whisper *rw;
|
|
614
|
-
|
|
614
|
+
GetContext(self, rw);
|
|
615
615
|
|
|
616
616
|
const int n_segments = whisper_full_n_segments(rw->context);
|
|
617
617
|
for (int i = 0; i < n_segments; ++i) {
|
data/ext/ruby_whisper_model.c
CHANGED
|
@@ -53,7 +53,7 @@ ruby_whisper_model_n_vocab(VALUE self)
|
|
|
53
53
|
ruby_whisper_model *rwm;
|
|
54
54
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
55
55
|
ruby_whisper *rw;
|
|
56
|
-
|
|
56
|
+
GetContext(rwm->context, rw);
|
|
57
57
|
return INT2NUM(whisper_model_n_vocab(rw->context));
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -67,7 +67,7 @@ ruby_whisper_model_n_audio_ctx(VALUE self)
|
|
|
67
67
|
ruby_whisper_model *rwm;
|
|
68
68
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
69
69
|
ruby_whisper *rw;
|
|
70
|
-
|
|
70
|
+
GetContext(rwm->context, rw);
|
|
71
71
|
return INT2NUM(whisper_model_n_audio_ctx(rw->context));
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -81,7 +81,7 @@ ruby_whisper_model_n_audio_state(VALUE self)
|
|
|
81
81
|
ruby_whisper_model *rwm;
|
|
82
82
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
83
83
|
ruby_whisper *rw;
|
|
84
|
-
|
|
84
|
+
GetContext(rwm->context, rw);
|
|
85
85
|
return INT2NUM(whisper_model_n_audio_state(rw->context));
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -95,7 +95,7 @@ ruby_whisper_model_n_audio_head(VALUE self)
|
|
|
95
95
|
ruby_whisper_model *rwm;
|
|
96
96
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
97
97
|
ruby_whisper *rw;
|
|
98
|
-
|
|
98
|
+
GetContext(rwm->context, rw);
|
|
99
99
|
return INT2NUM(whisper_model_n_audio_head(rw->context));
|
|
100
100
|
}
|
|
101
101
|
|
|
@@ -109,7 +109,7 @@ ruby_whisper_model_n_audio_layer(VALUE self)
|
|
|
109
109
|
ruby_whisper_model *rwm;
|
|
110
110
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
111
111
|
ruby_whisper *rw;
|
|
112
|
-
|
|
112
|
+
GetContext(rwm->context, rw);
|
|
113
113
|
return INT2NUM(whisper_model_n_audio_layer(rw->context));
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -123,7 +123,7 @@ ruby_whisper_model_n_text_ctx(VALUE self)
|
|
|
123
123
|
ruby_whisper_model *rwm;
|
|
124
124
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
125
125
|
ruby_whisper *rw;
|
|
126
|
-
|
|
126
|
+
GetContext(rwm->context, rw);
|
|
127
127
|
return INT2NUM(whisper_model_n_text_ctx(rw->context));
|
|
128
128
|
}
|
|
129
129
|
|
|
@@ -137,7 +137,7 @@ ruby_whisper_model_n_text_state(VALUE self)
|
|
|
137
137
|
ruby_whisper_model *rwm;
|
|
138
138
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
139
139
|
ruby_whisper *rw;
|
|
140
|
-
|
|
140
|
+
GetContext(rwm->context, rw);
|
|
141
141
|
return INT2NUM(whisper_model_n_text_state(rw->context));
|
|
142
142
|
}
|
|
143
143
|
|
|
@@ -151,7 +151,7 @@ ruby_whisper_model_n_text_head(VALUE self)
|
|
|
151
151
|
ruby_whisper_model *rwm;
|
|
152
152
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
153
153
|
ruby_whisper *rw;
|
|
154
|
-
|
|
154
|
+
GetContext(rwm->context, rw);
|
|
155
155
|
return INT2NUM(whisper_model_n_text_head(rw->context));
|
|
156
156
|
}
|
|
157
157
|
|
|
@@ -165,7 +165,7 @@ ruby_whisper_model_n_text_layer(VALUE self)
|
|
|
165
165
|
ruby_whisper_model *rwm;
|
|
166
166
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
167
167
|
ruby_whisper *rw;
|
|
168
|
-
|
|
168
|
+
GetContext(rwm->context, rw);
|
|
169
169
|
return INT2NUM(whisper_model_n_text_layer(rw->context));
|
|
170
170
|
}
|
|
171
171
|
|
|
@@ -179,7 +179,7 @@ ruby_whisper_model_n_mels(VALUE self)
|
|
|
179
179
|
ruby_whisper_model *rwm;
|
|
180
180
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
181
181
|
ruby_whisper *rw;
|
|
182
|
-
|
|
182
|
+
GetContext(rwm->context, rw);
|
|
183
183
|
return INT2NUM(whisper_model_n_mels(rw->context));
|
|
184
184
|
}
|
|
185
185
|
|
|
@@ -193,7 +193,7 @@ ruby_whisper_model_ftype(VALUE self)
|
|
|
193
193
|
ruby_whisper_model *rwm;
|
|
194
194
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
195
195
|
ruby_whisper *rw;
|
|
196
|
-
|
|
196
|
+
GetContext(rwm->context, rw);
|
|
197
197
|
return INT2NUM(whisper_model_ftype(rw->context));
|
|
198
198
|
}
|
|
199
199
|
|
|
@@ -207,7 +207,7 @@ ruby_whisper_model_type(VALUE self)
|
|
|
207
207
|
ruby_whisper_model *rwm;
|
|
208
208
|
TypedData_Get_Struct(self, ruby_whisper_model, &rb_whisper_model_type, rwm);
|
|
209
209
|
ruby_whisper *rw;
|
|
210
|
-
|
|
210
|
+
GetContext(rwm->context, rw);
|
|
211
211
|
return rb_str_new2(whisper_model_type_readable(rw->context));
|
|
212
212
|
}
|
|
213
213
|
|
data/ext/ruby_whisper_params.c
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
rb_define_method(cParams, #param_name, ruby_whisper_params_get_ ## param_name, 0); \
|
|
27
27
|
rb_define_method(cParams, #param_name "=", ruby_whisper_params_set_ ## param_name, 1);
|
|
28
28
|
|
|
29
|
-
#define RUBY_WHISPER_PARAMS_PARAM_NAMES_COUNT
|
|
29
|
+
#define RUBY_WHISPER_PARAMS_PARAM_NAMES_COUNT 37
|
|
30
30
|
|
|
31
31
|
extern VALUE cParams;
|
|
32
32
|
extern VALUE cVADParams;
|
|
@@ -46,6 +46,7 @@ static ID id_print_special;
|
|
|
46
46
|
static ID id_print_progress;
|
|
47
47
|
static ID id_print_realtime;
|
|
48
48
|
static ID id_print_timestamps;
|
|
49
|
+
static ID id_carry_initial_prompt;
|
|
49
50
|
static ID id_suppress_blank;
|
|
50
51
|
static ID id_suppress_nst;
|
|
51
52
|
static ID id_token_timestamps;
|
|
@@ -427,6 +428,7 @@ ruby_whisper_params_set_print_realtime(VALUE self, VALUE value)
|
|
|
427
428
|
}
|
|
428
429
|
/*
|
|
429
430
|
* If true, prints results from within whisper.cpp. (avoid it, use callback instead)
|
|
431
|
+
*
|
|
430
432
|
* call-seq:
|
|
431
433
|
* print_realtime -> bool
|
|
432
434
|
*/
|
|
@@ -455,6 +457,26 @@ ruby_whisper_params_get_print_timestamps(VALUE self)
|
|
|
455
457
|
{
|
|
456
458
|
BOOL_PARAMS_GETTER(self, print_timestamps)
|
|
457
459
|
}
|
|
460
|
+
|
|
461
|
+
/*
|
|
462
|
+
* call-seq:
|
|
463
|
+
* carry_initial_prompt -> true or false
|
|
464
|
+
*/
|
|
465
|
+
static VALUE
|
|
466
|
+
ruby_whisper_params_get_carry_initial_prompt(VALUE self)
|
|
467
|
+
{
|
|
468
|
+
BOOL_PARAMS_GETTER(self, carry_initial_prompt)
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
/*
|
|
472
|
+
* call-seq:
|
|
473
|
+
* carry_initial_prompt = bool -> bool
|
|
474
|
+
*/
|
|
475
|
+
static VALUE
|
|
476
|
+
ruby_whisper_params_set_carry_initial_prompt(VALUE self, VALUE value)
|
|
477
|
+
{
|
|
478
|
+
BOOL_PARAMS_SETTER(self, carry_initial_prompt, value)
|
|
479
|
+
}
|
|
458
480
|
/*
|
|
459
481
|
* call-seq:
|
|
460
482
|
* suppress_blank = force_suppress -> force_suppress
|
|
@@ -1168,6 +1190,7 @@ ruby_whisper_params_initialize(int argc, VALUE *argv, VALUE self)
|
|
|
1168
1190
|
SET_PARAM_IF_SAME(max_len)
|
|
1169
1191
|
SET_PARAM_IF_SAME(split_on_word)
|
|
1170
1192
|
SET_PARAM_IF_SAME(initial_prompt)
|
|
1193
|
+
SET_PARAM_IF_SAME(carry_initial_prompt)
|
|
1171
1194
|
SET_PARAM_IF_SAME(offset)
|
|
1172
1195
|
SET_PARAM_IF_SAME(duration)
|
|
1173
1196
|
SET_PARAM_IF_SAME(max_text_tokens)
|
|
@@ -1303,28 +1326,29 @@ init_ruby_whisper_params(VALUE *mWhisper)
|
|
|
1303
1326
|
DEFINE_PARAM(max_len, 11)
|
|
1304
1327
|
DEFINE_PARAM(split_on_word, 12)
|
|
1305
1328
|
DEFINE_PARAM(initial_prompt, 13)
|
|
1306
|
-
DEFINE_PARAM(
|
|
1307
|
-
DEFINE_PARAM(
|
|
1308
|
-
DEFINE_PARAM(
|
|
1309
|
-
DEFINE_PARAM(
|
|
1310
|
-
DEFINE_PARAM(
|
|
1311
|
-
DEFINE_PARAM(
|
|
1312
|
-
DEFINE_PARAM(
|
|
1313
|
-
DEFINE_PARAM(
|
|
1314
|
-
DEFINE_PARAM(
|
|
1315
|
-
DEFINE_PARAM(
|
|
1316
|
-
DEFINE_PARAM(
|
|
1317
|
-
DEFINE_PARAM(
|
|
1318
|
-
DEFINE_PARAM(
|
|
1319
|
-
DEFINE_PARAM(
|
|
1320
|
-
DEFINE_PARAM(
|
|
1321
|
-
DEFINE_PARAM(
|
|
1322
|
-
DEFINE_PARAM(
|
|
1323
|
-
DEFINE_PARAM(
|
|
1324
|
-
DEFINE_PARAM(
|
|
1325
|
-
DEFINE_PARAM(
|
|
1326
|
-
DEFINE_PARAM(
|
|
1327
|
-
DEFINE_PARAM(
|
|
1329
|
+
DEFINE_PARAM(carry_initial_prompt, 14)
|
|
1330
|
+
DEFINE_PARAM(diarize, 15)
|
|
1331
|
+
DEFINE_PARAM(offset, 16)
|
|
1332
|
+
DEFINE_PARAM(duration, 17)
|
|
1333
|
+
DEFINE_PARAM(max_text_tokens, 18)
|
|
1334
|
+
DEFINE_PARAM(temperature, 19)
|
|
1335
|
+
DEFINE_PARAM(max_initial_ts, 20)
|
|
1336
|
+
DEFINE_PARAM(length_penalty, 21)
|
|
1337
|
+
DEFINE_PARAM(temperature_inc, 22)
|
|
1338
|
+
DEFINE_PARAM(entropy_thold, 23)
|
|
1339
|
+
DEFINE_PARAM(logprob_thold, 24)
|
|
1340
|
+
DEFINE_PARAM(no_speech_thold, 25)
|
|
1341
|
+
DEFINE_PARAM(new_segment_callback, 26)
|
|
1342
|
+
DEFINE_PARAM(new_segment_callback_user_data, 27)
|
|
1343
|
+
DEFINE_PARAM(progress_callback, 28)
|
|
1344
|
+
DEFINE_PARAM(progress_callback_user_data, 29)
|
|
1345
|
+
DEFINE_PARAM(encoder_begin_callback, 30)
|
|
1346
|
+
DEFINE_PARAM(encoder_begin_callback_user_data, 31)
|
|
1347
|
+
DEFINE_PARAM(abort_callback, 32)
|
|
1348
|
+
DEFINE_PARAM(abort_callback_user_data, 33)
|
|
1349
|
+
DEFINE_PARAM(vad, 34)
|
|
1350
|
+
DEFINE_PARAM(vad_model_path, 35)
|
|
1351
|
+
DEFINE_PARAM(vad_params, 36)
|
|
1328
1352
|
|
|
1329
1353
|
rb_define_method(cParams, "on_new_segment", ruby_whisper_params_on_new_segment, 0);
|
|
1330
1354
|
rb_define_method(cParams, "on_progress", ruby_whisper_params_on_progress, 0);
|