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.
Files changed (630) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +60 -43
  3. data/ext/extconf.rb +2 -2
  4. data/ext/ruby_whisper.c +14 -2
  5. data/ext/ruby_whisper.h +39 -0
  6. data/ext/ruby_whisper_context.c +22 -22
  7. data/ext/ruby_whisper_model.c +12 -12
  8. data/ext/ruby_whisper_params.c +47 -23
  9. data/ext/ruby_whisper_segment.c +84 -19
  10. data/ext/ruby_whisper_token.c +351 -0
  11. data/ext/ruby_whisper_transcribe.cpp +1 -1
  12. data/ext/ruby_whisper_vad_context.c +75 -0
  13. data/ext/ruby_whisper_vad_context_detect.cpp +50 -0
  14. data/ext/ruby_whisper_vad_segment.c +139 -0
  15. data/ext/ruby_whisper_vad_segments.c +106 -0
  16. data/ext/sources/CMakeLists.txt +4 -1
  17. data/ext/sources/bindings/javascript/package.json +1 -1
  18. data/ext/sources/cmake/arm64-apple-clang.cmake +16 -0
  19. data/ext/sources/cmake/arm64-windows-llvm.cmake +16 -0
  20. data/ext/sources/cmake/riscv64-spacemit-linux-gnu-gcc.cmake +29 -0
  21. data/ext/sources/cmake/x64-windows-llvm.cmake +5 -0
  22. data/ext/sources/examples/addon.node/vad-example.js +2 -2
  23. data/ext/sources/examples/cli/cli.cpp +121 -112
  24. data/ext/sources/examples/lsp/CMakeLists.txt +2 -1
  25. data/ext/sources/examples/quantize/CMakeLists.txt +2 -1
  26. data/ext/sources/examples/server/server.cpp +10 -11
  27. data/ext/sources/examples/talk-llama/CMakeLists.txt +5 -1
  28. data/ext/sources/examples/talk-llama/llama-adapter.cpp +12 -3
  29. data/ext/sources/examples/talk-llama/llama-adapter.h +7 -1
  30. data/ext/sources/examples/talk-llama/llama-arch.cpp +2046 -1974
  31. data/ext/sources/examples/talk-llama/llama-arch.h +67 -2
  32. data/ext/sources/examples/talk-llama/llama-batch.cpp +75 -33
  33. data/ext/sources/examples/talk-llama/llama-batch.h +17 -4
  34. data/ext/sources/examples/talk-llama/llama-chat.cpp +79 -3
  35. data/ext/sources/examples/talk-llama/llama-chat.h +4 -0
  36. data/ext/sources/examples/talk-llama/llama-context.cpp +775 -78
  37. data/ext/sources/examples/talk-llama/llama-context.h +57 -9
  38. data/ext/sources/examples/talk-llama/llama-cparams.h +1 -0
  39. data/ext/sources/examples/talk-llama/llama-grammar.cpp +288 -53
  40. data/ext/sources/examples/talk-llama/llama-grammar.h +22 -1
  41. data/ext/sources/examples/talk-llama/llama-graph.cpp +381 -64
  42. data/ext/sources/examples/talk-llama/llama-graph.h +103 -13
  43. data/ext/sources/examples/talk-llama/llama-hparams.cpp +26 -2
  44. data/ext/sources/examples/talk-llama/llama-hparams.h +41 -10
  45. data/ext/sources/examples/talk-llama/llama-impl.cpp +7 -3
  46. data/ext/sources/examples/talk-llama/llama-impl.h +1 -1
  47. data/ext/sources/examples/talk-llama/llama-kv-cache-iswa.cpp +5 -3
  48. data/ext/sources/examples/talk-llama/llama-kv-cache.cpp +145 -65
  49. data/ext/sources/examples/talk-llama/llama-kv-cache.h +22 -7
  50. data/ext/sources/examples/talk-llama/llama-kv-cells.h +44 -2
  51. data/ext/sources/examples/talk-llama/llama-memory-hybrid.cpp +12 -10
  52. data/ext/sources/examples/talk-llama/llama-memory-recurrent.cpp +32 -19
  53. data/ext/sources/examples/talk-llama/llama-memory-recurrent.h +2 -2
  54. data/ext/sources/examples/talk-llama/llama-mmap.cpp +172 -37
  55. data/ext/sources/examples/talk-llama/llama-mmap.h +8 -3
  56. data/ext/sources/examples/talk-llama/llama-model-loader.cpp +91 -9
  57. data/ext/sources/examples/talk-llama/llama-model-loader.h +6 -0
  58. data/ext/sources/examples/talk-llama/llama-model-saver.cpp +3 -0
  59. data/ext/sources/examples/talk-llama/llama-model.cpp +1529 -13134
  60. data/ext/sources/examples/talk-llama/llama-model.h +44 -3
  61. data/ext/sources/examples/talk-llama/llama-quant.cpp +8 -23
  62. data/ext/sources/examples/talk-llama/llama-sampling.cpp +1294 -198
  63. data/ext/sources/examples/talk-llama/llama-sampling.h +19 -7
  64. data/ext/sources/examples/talk-llama/llama-vocab.cpp +133 -37
  65. data/ext/sources/examples/talk-llama/llama-vocab.h +45 -40
  66. data/ext/sources/examples/talk-llama/llama.cpp +729 -2
  67. data/ext/sources/examples/talk-llama/llama.h +152 -14
  68. data/ext/sources/examples/talk-llama/models/afmoe.cpp +191 -0
  69. data/ext/sources/examples/talk-llama/models/apertus.cpp +125 -0
  70. data/ext/sources/examples/talk-llama/models/arcee.cpp +135 -0
  71. data/ext/sources/examples/talk-llama/models/arctic.cpp +138 -0
  72. data/ext/sources/examples/talk-llama/models/arwkv7.cpp +86 -0
  73. data/ext/sources/examples/talk-llama/models/baichuan.cpp +122 -0
  74. data/ext/sources/examples/talk-llama/models/bailingmoe.cpp +144 -0
  75. data/ext/sources/examples/talk-llama/models/bailingmoe2.cpp +135 -0
  76. data/ext/sources/examples/talk-llama/models/bert.cpp +178 -0
  77. data/ext/sources/examples/talk-llama/models/bitnet.cpp +160 -0
  78. data/ext/sources/examples/talk-llama/models/bloom.cpp +101 -0
  79. data/ext/sources/examples/talk-llama/models/chameleon.cpp +178 -0
  80. data/ext/sources/examples/talk-llama/models/chatglm.cpp +132 -0
  81. data/ext/sources/examples/talk-llama/models/codeshell.cpp +111 -0
  82. data/ext/sources/examples/talk-llama/models/cogvlm.cpp +102 -0
  83. data/ext/sources/examples/talk-llama/models/cohere2-iswa.cpp +134 -0
  84. data/ext/sources/examples/talk-llama/models/command-r.cpp +122 -0
  85. data/ext/sources/examples/talk-llama/models/dbrx.cpp +123 -0
  86. data/ext/sources/examples/talk-llama/models/deci.cpp +135 -0
  87. data/ext/sources/examples/talk-llama/models/deepseek.cpp +144 -0
  88. data/ext/sources/examples/talk-llama/models/deepseek2.cpp +259 -0
  89. data/ext/sources/examples/talk-llama/models/dots1.cpp +134 -0
  90. data/ext/sources/examples/talk-llama/models/dream.cpp +105 -0
  91. data/ext/sources/examples/talk-llama/models/ernie4-5-moe.cpp +150 -0
  92. data/ext/sources/examples/talk-llama/models/ernie4-5.cpp +110 -0
  93. data/ext/sources/examples/talk-llama/models/exaone.cpp +114 -0
  94. data/ext/sources/examples/talk-llama/models/exaone4.cpp +123 -0
  95. data/ext/sources/examples/talk-llama/models/falcon-h1.cpp +113 -0
  96. data/ext/sources/examples/talk-llama/models/falcon.cpp +120 -0
  97. data/ext/sources/examples/talk-llama/models/gemma-embedding.cpp +116 -0
  98. data/ext/sources/examples/talk-llama/models/gemma.cpp +112 -0
  99. data/ext/sources/examples/talk-llama/models/gemma2-iswa.cpp +128 -0
  100. data/ext/sources/examples/talk-llama/models/gemma3.cpp +155 -0
  101. data/ext/sources/examples/talk-llama/models/gemma3n-iswa.cpp +384 -0
  102. data/ext/sources/examples/talk-llama/models/glm4-moe.cpp +170 -0
  103. data/ext/sources/examples/talk-llama/models/glm4.cpp +150 -0
  104. data/ext/sources/examples/talk-llama/models/gpt2.cpp +105 -0
  105. data/ext/sources/examples/talk-llama/models/gptneox.cpp +144 -0
  106. data/ext/sources/examples/talk-llama/models/granite-hybrid.cpp +196 -0
  107. data/ext/sources/examples/talk-llama/models/granite.cpp +211 -0
  108. data/ext/sources/examples/talk-llama/models/graph-context-mamba.cpp +283 -0
  109. data/ext/sources/examples/talk-llama/models/grok.cpp +159 -0
  110. data/ext/sources/examples/talk-llama/models/grovemoe.cpp +141 -0
  111. data/ext/sources/examples/talk-llama/models/hunyuan-dense.cpp +132 -0
  112. data/ext/sources/examples/talk-llama/models/hunyuan-moe.cpp +154 -0
  113. data/ext/sources/examples/talk-llama/models/internlm2.cpp +120 -0
  114. data/ext/sources/examples/talk-llama/models/jais.cpp +86 -0
  115. data/ext/sources/examples/talk-llama/models/jamba.cpp +106 -0
  116. data/ext/sources/examples/talk-llama/models/lfm2.cpp +175 -0
  117. data/ext/sources/examples/talk-llama/models/llada-moe.cpp +122 -0
  118. data/ext/sources/examples/talk-llama/models/llada.cpp +99 -0
  119. data/ext/sources/examples/talk-llama/models/llama-iswa.cpp +178 -0
  120. data/ext/sources/examples/talk-llama/models/llama.cpp +168 -0
  121. data/ext/sources/examples/talk-llama/models/maincoder.cpp +117 -0
  122. data/ext/sources/examples/talk-llama/models/mamba.cpp +55 -0
  123. data/ext/sources/examples/talk-llama/models/mimo2-iswa.cpp +123 -0
  124. data/ext/sources/examples/talk-llama/models/minicpm3.cpp +199 -0
  125. data/ext/sources/examples/talk-llama/models/minimax-m2.cpp +124 -0
  126. data/ext/sources/examples/talk-llama/models/mistral3.cpp +160 -0
  127. data/ext/sources/examples/talk-llama/models/models.h +569 -0
  128. data/ext/sources/examples/talk-llama/models/modern-bert.cpp +116 -0
  129. data/ext/sources/examples/talk-llama/models/mpt.cpp +126 -0
  130. data/ext/sources/examples/talk-llama/models/nemotron-h.cpp +150 -0
  131. data/ext/sources/examples/talk-llama/models/nemotron.cpp +122 -0
  132. data/ext/sources/examples/talk-llama/models/neo-bert.cpp +104 -0
  133. data/ext/sources/examples/talk-llama/models/olmo.cpp +121 -0
  134. data/ext/sources/examples/talk-llama/models/olmo2.cpp +150 -0
  135. data/ext/sources/examples/talk-llama/models/olmoe.cpp +124 -0
  136. data/ext/sources/examples/talk-llama/models/openai-moe-iswa.cpp +127 -0
  137. data/ext/sources/examples/talk-llama/models/openelm.cpp +124 -0
  138. data/ext/sources/examples/talk-llama/models/orion.cpp +123 -0
  139. data/ext/sources/examples/talk-llama/models/pangu-embedded.cpp +121 -0
  140. data/ext/sources/examples/talk-llama/models/phi2.cpp +121 -0
  141. data/ext/sources/examples/talk-llama/models/phi3.cpp +152 -0
  142. data/ext/sources/examples/talk-llama/models/plamo.cpp +110 -0
  143. data/ext/sources/examples/talk-llama/models/plamo2.cpp +316 -0
  144. data/ext/sources/examples/talk-llama/models/plamo3.cpp +128 -0
  145. data/ext/sources/examples/talk-llama/models/plm.cpp +168 -0
  146. data/ext/sources/examples/talk-llama/models/qwen.cpp +108 -0
  147. data/ext/sources/examples/talk-llama/models/qwen2.cpp +126 -0
  148. data/ext/sources/examples/talk-llama/models/qwen2moe.cpp +151 -0
  149. data/ext/sources/examples/talk-llama/models/qwen2vl.cpp +117 -0
  150. data/ext/sources/examples/talk-llama/models/qwen3.cpp +117 -0
  151. data/ext/sources/examples/talk-llama/models/qwen3moe.cpp +124 -0
  152. data/ext/sources/examples/talk-llama/models/qwen3next.cpp +873 -0
  153. data/ext/sources/examples/talk-llama/models/qwen3vl-moe.cpp +149 -0
  154. data/ext/sources/examples/talk-llama/models/qwen3vl.cpp +141 -0
  155. data/ext/sources/examples/talk-llama/models/refact.cpp +94 -0
  156. data/ext/sources/examples/talk-llama/models/rnd1.cpp +126 -0
  157. data/ext/sources/examples/talk-llama/models/rwkv6-base.cpp +162 -0
  158. data/ext/sources/examples/talk-llama/models/rwkv6.cpp +94 -0
  159. data/ext/sources/examples/talk-llama/models/rwkv6qwen2.cpp +86 -0
  160. data/ext/sources/examples/talk-llama/models/rwkv7-base.cpp +135 -0
  161. data/ext/sources/examples/talk-llama/models/rwkv7.cpp +90 -0
  162. data/ext/sources/examples/talk-llama/models/seed-oss.cpp +124 -0
  163. data/ext/sources/examples/talk-llama/models/smallthinker.cpp +126 -0
  164. data/ext/sources/examples/talk-llama/models/smollm3.cpp +128 -0
  165. data/ext/sources/examples/talk-llama/models/stablelm.cpp +146 -0
  166. data/ext/sources/examples/talk-llama/models/starcoder.cpp +100 -0
  167. data/ext/sources/examples/talk-llama/models/starcoder2.cpp +121 -0
  168. data/ext/sources/examples/talk-llama/models/t5-dec.cpp +166 -0
  169. data/ext/sources/examples/talk-llama/models/t5-enc.cpp +96 -0
  170. data/ext/sources/examples/talk-llama/models/wavtokenizer-dec.cpp +149 -0
  171. data/ext/sources/examples/talk-llama/models/xverse.cpp +108 -0
  172. data/ext/sources/examples/talk-llama/unicode.cpp +102 -16
  173. data/ext/sources/examples/vad-speech-segments/CMakeLists.txt +1 -1
  174. data/ext/sources/examples/whisper.wasm/index-tmpl.html +1 -1
  175. data/ext/sources/ggml/CMakeLists.txt +82 -54
  176. data/ext/sources/ggml/include/ggml-alloc.h +9 -0
  177. data/ext/sources/ggml/include/ggml-backend.h +4 -1
  178. data/ext/sources/ggml/include/ggml-cpu.h +1 -0
  179. data/ext/sources/ggml/include/ggml-hexagon.h +19 -0
  180. data/ext/sources/ggml/include/ggml-rpc.h +8 -11
  181. data/ext/sources/ggml/include/ggml-zendnn.h +22 -0
  182. data/ext/sources/ggml/include/ggml.h +190 -12
  183. data/ext/sources/ggml/src/CMakeLists.txt +82 -11
  184. data/ext/sources/ggml/src/ggml-alloc.c +124 -41
  185. data/ext/sources/ggml/src/ggml-backend-impl.h +1 -4
  186. data/ext/sources/ggml/src/ggml-backend-reg.cpp +27 -3
  187. data/ext/sources/ggml/src/ggml-backend.cpp +71 -21
  188. data/ext/sources/ggml/src/ggml-blas/CMakeLists.txt +17 -3
  189. data/ext/sources/ggml/src/ggml-blas/ggml-blas.cpp +5 -9
  190. data/ext/sources/ggml/src/ggml-cann/acl_tensor.cpp +57 -45
  191. data/ext/sources/ggml/src/ggml-cann/acl_tensor.h +138 -47
  192. data/ext/sources/ggml/src/ggml-cann/aclnn_ops.cpp +2179 -1696
  193. data/ext/sources/ggml/src/ggml-cann/aclnn_ops.h +238 -317
  194. data/ext/sources/ggml/src/ggml-cann/common.h +283 -208
  195. data/ext/sources/ggml/src/ggml-cann/ggml-cann.cpp +626 -776
  196. data/ext/sources/ggml/src/ggml-cpu/CMakeLists.txt +156 -86
  197. data/ext/sources/ggml/src/ggml-cpu/amx/amx.cpp +1 -0
  198. data/ext/sources/ggml/src/ggml-cpu/arch/arm/cpu-feats.cpp +4 -0
  199. data/ext/sources/ggml/src/ggml-cpu/arch/arm/quants.c +428 -26
  200. data/ext/sources/ggml/src/ggml-cpu/arch/arm/repack.cpp +1004 -0
  201. data/ext/sources/ggml/src/ggml-cpu/arch/loongarch/quants.c +4 -5
  202. data/ext/sources/ggml/src/ggml-cpu/arch/riscv/cpu-feats.cpp +38 -0
  203. data/ext/sources/ggml/src/ggml-cpu/arch/riscv/quants.c +108 -49
  204. data/ext/sources/ggml/src/ggml-cpu/arch/s390/cpu-feats.cpp +50 -0
  205. data/ext/sources/ggml/src/ggml-cpu/arch/x86/repack.cpp +6 -6
  206. data/ext/sources/ggml/src/ggml-cpu/arch-fallback.h +50 -2
  207. data/ext/sources/ggml/src/ggml-cpu/ggml-cpu-impl.h +5 -3
  208. data/ext/sources/ggml/src/ggml-cpu/ggml-cpu.c +195 -71
  209. data/ext/sources/ggml/src/ggml-cpu/ggml-cpu.cpp +4 -0
  210. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kernels.cpp +573 -106
  211. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kernels.h +33 -44
  212. data/ext/sources/ggml/src/ggml-cpu/kleidiai/kleidiai.cpp +298 -112
  213. data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm-ppc.h +333 -0
  214. data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm.cpp +819 -125
  215. data/ext/sources/ggml/src/ggml-cpu/llamafile/sgemm.h +6 -0
  216. data/ext/sources/ggml/src/ggml-cpu/ops.cpp +708 -431
  217. data/ext/sources/ggml/src/ggml-cpu/ops.h +5 -4
  218. data/ext/sources/ggml/src/ggml-cpu/repack.cpp +671 -31
  219. data/ext/sources/ggml/src/ggml-cpu/repack.h +14 -0
  220. data/ext/sources/ggml/src/ggml-cpu/simd-mappings.h +41 -43
  221. data/ext/sources/ggml/src/ggml-cpu/spacemit/ime.cpp +3 -2
  222. data/ext/sources/ggml/src/ggml-cpu/unary-ops.cpp +151 -0
  223. data/ext/sources/ggml/src/ggml-cpu/unary-ops.h +7 -0
  224. data/ext/sources/ggml/src/ggml-cpu/vec.cpp +124 -1
  225. data/ext/sources/ggml/src/ggml-cpu/vec.h +261 -146
  226. data/ext/sources/ggml/src/ggml-cuda/CMakeLists.txt +72 -1
  227. data/ext/sources/ggml/src/ggml-cuda/argmax.cu +2 -2
  228. data/ext/sources/ggml/src/ggml-cuda/argsort.cu +123 -6
  229. data/ext/sources/ggml/src/ggml-cuda/argsort.cuh +16 -0
  230. data/ext/sources/ggml/src/ggml-cuda/binbcast.cu +1 -1
  231. data/ext/sources/ggml/src/ggml-cuda/common.cuh +353 -80
  232. data/ext/sources/ggml/src/ggml-cuda/convert.cuh +10 -0
  233. data/ext/sources/ggml/src/ggml-cuda/cpy-utils.cuh +1 -1
  234. data/ext/sources/ggml/src/ggml-cuda/cpy.cu +339 -246
  235. data/ext/sources/ggml/src/ggml-cuda/cpy.cuh +1 -5
  236. data/ext/sources/ggml/src/ggml-cuda/cumsum.cu +307 -0
  237. data/ext/sources/ggml/src/ggml-cuda/cumsum.cuh +5 -0
  238. data/ext/sources/ggml/src/ggml-cuda/diag.cu +77 -0
  239. data/ext/sources/ggml/src/ggml-cuda/diag.cuh +5 -0
  240. data/ext/sources/ggml/src/ggml-cuda/fattn-common.cuh +31 -21
  241. data/ext/sources/ggml/src/ggml-cuda/fattn-mma-f16.cuh +663 -596
  242. data/ext/sources/ggml/src/ggml-cuda/fattn-tile.cu +35 -741
  243. data/ext/sources/ggml/src/ggml-cuda/fattn-tile.cuh +1241 -0
  244. data/ext/sources/ggml/src/ggml-cuda/fattn-vec.cuh +30 -37
  245. data/ext/sources/ggml/src/ggml-cuda/fattn-wmma-f16.cu +14 -13
  246. data/ext/sources/ggml/src/ggml-cuda/fattn-wmma-f16.cuh +48 -0
  247. data/ext/sources/ggml/src/ggml-cuda/fattn.cu +83 -37
  248. data/ext/sources/ggml/src/ggml-cuda/fill.cu +37 -0
  249. data/ext/sources/ggml/src/ggml-cuda/fill.cuh +3 -0
  250. data/ext/sources/ggml/src/ggml-cuda/ggml-cuda.cu +1155 -164
  251. data/ext/sources/ggml/src/ggml-cuda/mean.cu +5 -4
  252. data/ext/sources/ggml/src/ggml-cuda/mma.cuh +741 -48
  253. data/ext/sources/ggml/src/ggml-cuda/mmf.cu +60 -12
  254. data/ext/sources/ggml/src/ggml-cuda/mmf.cuh +381 -42
  255. data/ext/sources/ggml/src/ggml-cuda/mmid.cu +164 -0
  256. data/ext/sources/ggml/src/ggml-cuda/mmid.cuh +5 -0
  257. data/ext/sources/ggml/src/ggml-cuda/mmq.cu +69 -176
  258. data/ext/sources/ggml/src/ggml-cuda/mmq.cuh +498 -171
  259. data/ext/sources/ggml/src/ggml-cuda/mmvf.cu +375 -79
  260. data/ext/sources/ggml/src/ggml-cuda/mmvf.cuh +3 -2
  261. data/ext/sources/ggml/src/ggml-cuda/mmvq.cu +241 -95
  262. data/ext/sources/ggml/src/ggml-cuda/mmvq.cuh +1 -1
  263. data/ext/sources/ggml/src/ggml-cuda/pad.cu +64 -33
  264. data/ext/sources/ggml/src/ggml-cuda/quantize.cu +151 -0
  265. data/ext/sources/ggml/src/ggml-cuda/quantize.cuh +14 -0
  266. data/ext/sources/ggml/src/ggml-cuda/rope.cu +192 -77
  267. data/ext/sources/ggml/src/ggml-cuda/rope.cuh +2 -0
  268. data/ext/sources/ggml/src/ggml-cuda/set-rows.cu +101 -47
  269. data/ext/sources/ggml/src/ggml-cuda/set.cu +39 -0
  270. data/ext/sources/ggml/src/ggml-cuda/set.cuh +7 -0
  271. data/ext/sources/ggml/src/ggml-cuda/softmax.cu +203 -6
  272. data/ext/sources/ggml/src/ggml-cuda/solve_tri.cu +275 -0
  273. data/ext/sources/ggml/src/ggml-cuda/solve_tri.cuh +3 -0
  274. data/ext/sources/ggml/src/ggml-cuda/ssm-conv.cu +14 -20
  275. data/ext/sources/ggml/src/ggml-cuda/ssm-scan.cu +49 -84
  276. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq112-dv112.cu +5 -0
  277. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq128-dv128.cu +5 -0
  278. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq256-dv256.cu +5 -0
  279. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq40-dv40.cu +5 -0
  280. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq576-dv512.cu +5 -0
  281. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq64-dv64.cu +5 -0
  282. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq72-dv72.cu +5 -0
  283. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq80-dv80.cu +5 -0
  284. data/ext/sources/ggml/src/ggml-cuda/template-instances/fattn-tile-instance-dkq96-dv96.cu +5 -0
  285. data/ext/sources/ggml/src/ggml-cuda/template-instances/generate_cu_files.py +19 -1
  286. data/ext/sources/ggml/src/ggml-cuda/top-k.cu +96 -0
  287. data/ext/sources/ggml/src/ggml-cuda/top-k.cuh +3 -0
  288. data/ext/sources/ggml/src/ggml-cuda/topk-moe.cu +168 -76
  289. data/ext/sources/ggml/src/ggml-cuda/topk-moe.cuh +11 -4
  290. data/ext/sources/ggml/src/ggml-cuda/tri.cu +136 -0
  291. data/ext/sources/ggml/src/ggml-cuda/tri.cuh +5 -0
  292. data/ext/sources/ggml/src/ggml-cuda/unary.cu +105 -11
  293. data/ext/sources/ggml/src/ggml-cuda/unary.cuh +36 -0
  294. data/ext/sources/ggml/src/ggml-cuda/upscale.cu +163 -7
  295. data/ext/sources/ggml/src/ggml-cuda/vendors/cuda.h +4 -0
  296. data/ext/sources/ggml/src/ggml-cuda/vendors/hip.h +12 -1
  297. data/ext/sources/ggml/src/ggml-cuda/vendors/musa.h +6 -0
  298. data/ext/sources/ggml/src/ggml-hexagon/CMakeLists.txt +80 -0
  299. data/ext/sources/ggml/src/ggml-hexagon/ggml-hexagon.cpp +3151 -0
  300. data/ext/sources/ggml/src/ggml-hexagon/htp/CMakeLists.txt +44 -0
  301. data/ext/sources/ggml/src/ggml-hexagon/htp/act-ops.c +682 -0
  302. data/ext/sources/ggml/src/ggml-hexagon/htp/binary-ops.c +360 -0
  303. data/ext/sources/ggml/src/ggml-hexagon/htp/cmake-toolchain.cmake +157 -0
  304. data/ext/sources/ggml/src/ggml-hexagon/htp/flash-attn-ops.c +566 -0
  305. data/ext/sources/ggml/src/ggml-hexagon/htp/get-rows-ops.c +112 -0
  306. data/ext/sources/ggml/src/ggml-hexagon/htp/htp-ctx.h +35 -0
  307. data/ext/sources/ggml/src/ggml-hexagon/htp/htp-dma.c +63 -0
  308. data/ext/sources/ggml/src/ggml-hexagon/htp/htp-dma.h +157 -0
  309. data/ext/sources/ggml/src/ggml-hexagon/htp/htp-msg.h +165 -0
  310. data/ext/sources/ggml/src/ggml-hexagon/htp/htp-ops.h +92 -0
  311. data/ext/sources/ggml/src/ggml-hexagon/htp/htp_iface.idl +16 -0
  312. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-exp.c +94 -0
  313. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-inverse.c +72 -0
  314. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-sigmoid.c +49 -0
  315. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-utils.c +1020 -0
  316. data/ext/sources/ggml/src/ggml-hexagon/htp/hvx-utils.h +1353 -0
  317. data/ext/sources/ggml/src/ggml-hexagon/htp/main.c +1001 -0
  318. data/ext/sources/ggml/src/ggml-hexagon/htp/matmul-ops.c +2503 -0
  319. data/ext/sources/ggml/src/ggml-hexagon/htp/ops-utils.h +149 -0
  320. data/ext/sources/ggml/src/ggml-hexagon/htp/rope-ops.c +487 -0
  321. data/ext/sources/ggml/src/ggml-hexagon/htp/set-rows-ops.c +168 -0
  322. data/ext/sources/ggml/src/ggml-hexagon/htp/softmax-ops.c +402 -0
  323. data/ext/sources/ggml/src/ggml-hexagon/htp/unary-ops.c +287 -0
  324. data/ext/sources/ggml/src/ggml-hexagon/htp/worker-pool.c +297 -0
  325. data/ext/sources/ggml/src/ggml-hexagon/htp/worker-pool.h +57 -0
  326. data/ext/sources/ggml/src/ggml-hexagon/htp-utils.c +454 -0
  327. data/ext/sources/ggml/src/ggml-hexagon/htp-utils.h +221 -0
  328. data/ext/sources/ggml/src/ggml-hexagon/op-desc.h +153 -0
  329. data/ext/sources/ggml/src/ggml-hip/CMakeLists.txt +8 -13
  330. data/ext/sources/ggml/src/ggml-impl.h +67 -6
  331. data/ext/sources/ggml/src/ggml-metal/ggml-metal-common.cpp +2 -2
  332. data/ext/sources/ggml/src/ggml-metal/ggml-metal-context.m +29 -20
  333. data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.cpp +652 -285
  334. data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.h +103 -56
  335. data/ext/sources/ggml/src/ggml-metal/ggml-metal-device.m +496 -118
  336. data/ext/sources/ggml/src/ggml-metal/ggml-metal-impl.h +231 -9
  337. data/ext/sources/ggml/src/ggml-metal/ggml-metal-ops.cpp +1227 -224
  338. data/ext/sources/ggml/src/ggml-metal/ggml-metal-ops.h +12 -0
  339. data/ext/sources/ggml/src/ggml-metal/ggml-metal.cpp +14 -8
  340. data/ext/sources/ggml/src/ggml-metal/ggml-metal.metal +1972 -704
  341. data/ext/sources/ggml/src/ggml-musa/CMakeLists.txt +3 -1
  342. data/ext/sources/ggml/src/ggml-opencl/CMakeLists.txt +11 -0
  343. data/ext/sources/ggml/src/ggml-opencl/ggml-opencl.cpp +1430 -120
  344. data/ext/sources/ggml/src/ggml-opencl/kernels/cvt.cl +63 -0
  345. data/ext/sources/ggml/src/ggml-opencl/kernels/expm1.cl +82 -0
  346. data/ext/sources/ggml/src/ggml-opencl/kernels/fill.cl +17 -0
  347. data/ext/sources/ggml/src/ggml-opencl/kernels/flash_attn_f32.cl +4 -3
  348. data/ext/sources/ggml/src/ggml-opencl/kernels/gemm_moe_mxfp4_f32.cl +162 -0
  349. data/ext/sources/ggml/src/ggml-opencl/kernels/gemv_moe_mxfp4_f32.cl +156 -0
  350. data/ext/sources/ggml/src/ggml-opencl/kernels/get_rows.cl +36 -12
  351. data/ext/sources/ggml/src/ggml-opencl/kernels/mean.cl +39 -0
  352. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_f16_f32_kq_kqv.cl +273 -0
  353. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_f16_f32_l4_lm.cl +24 -10
  354. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_f32_f32_l4_lm.cl +24 -10
  355. data/ext/sources/ggml/src/ggml-opencl/kernels/mul_mm_q8_0_f32_l4_lm.cl +154 -0
  356. data/ext/sources/ggml/src/ggml-opencl/kernels/pad.cl +29 -20
  357. data/ext/sources/ggml/src/ggml-opencl/kernels/rms_norm.cl +25 -10
  358. data/ext/sources/ggml/src/ggml-opencl/kernels/rope.cl +50 -24
  359. data/ext/sources/ggml/src/ggml-opencl/kernels/set_rows.cl +35 -16
  360. data/ext/sources/ggml/src/ggml-opencl/kernels/softplus.cl +88 -0
  361. data/ext/sources/ggml/src/ggml-opencl/kernels/sqr.cl +53 -0
  362. data/ext/sources/ggml/src/ggml-opencl/kernels/sqrt.cl +53 -0
  363. data/ext/sources/ggml/src/ggml-opencl/kernels/ssm_conv.cl +77 -0
  364. data/ext/sources/ggml/src/ggml-opencl/kernels/transpose.cl +13 -0
  365. data/ext/sources/ggml/src/ggml-rpc/ggml-rpc.cpp +438 -156
  366. data/ext/sources/ggml/src/ggml-sycl/CMakeLists.txt +48 -3
  367. data/ext/sources/ggml/src/ggml-sycl/add-id.cpp +77 -0
  368. data/ext/sources/ggml/src/ggml-sycl/add-id.hpp +8 -0
  369. data/ext/sources/ggml/src/ggml-sycl/backend.hpp +6 -0
  370. data/ext/sources/ggml/src/ggml-sycl/binbcast.cpp +0 -9
  371. data/ext/sources/ggml/src/ggml-sycl/binbcast.hpp +0 -6
  372. data/ext/sources/ggml/src/ggml-sycl/common.hpp +117 -15
  373. data/ext/sources/ggml/src/ggml-sycl/concat.cpp +55 -44
  374. data/ext/sources/ggml/src/ggml-sycl/convert.cpp +34 -0
  375. data/ext/sources/ggml/src/ggml-sycl/count-equal.cpp +79 -0
  376. data/ext/sources/ggml/src/ggml-sycl/count-equal.hpp +9 -0
  377. data/ext/sources/ggml/src/ggml-sycl/cpy.cpp +0 -3
  378. data/ext/sources/ggml/src/ggml-sycl/dequantize.hpp +18 -0
  379. data/ext/sources/ggml/src/ggml-sycl/dpct/helper.hpp +76 -3
  380. data/ext/sources/ggml/src/ggml-sycl/element_wise.cpp +333 -300
  381. data/ext/sources/ggml/src/ggml-sycl/element_wise.hpp +10 -2
  382. data/ext/sources/ggml/src/ggml-sycl/ggml-sycl.cpp +335 -110
  383. data/ext/sources/ggml/src/ggml-sycl/mmvq.cpp +22 -0
  384. data/ext/sources/ggml/src/ggml-sycl/norm.cpp +156 -0
  385. data/ext/sources/ggml/src/ggml-sycl/norm.hpp +2 -0
  386. data/ext/sources/ggml/src/ggml-sycl/pad.cpp +97 -0
  387. data/ext/sources/ggml/src/ggml-sycl/pad.hpp +24 -0
  388. data/ext/sources/ggml/src/ggml-sycl/pad_reflect_1d.cpp +100 -0
  389. data/ext/sources/ggml/src/ggml-sycl/pad_reflect_1d.hpp +10 -0
  390. data/ext/sources/ggml/src/ggml-sycl/presets.hpp +2 -0
  391. data/ext/sources/ggml/src/ggml-sycl/repeat_back.cpp +76 -0
  392. data/ext/sources/ggml/src/ggml-sycl/repeat_back.hpp +8 -0
  393. data/ext/sources/ggml/src/ggml-sycl/roll.cpp +122 -0
  394. data/ext/sources/ggml/src/ggml-sycl/roll.hpp +20 -0
  395. data/ext/sources/ggml/src/ggml-sycl/rope.cpp +30 -17
  396. data/ext/sources/ggml/src/ggml-sycl/set.cpp +73 -0
  397. data/ext/sources/ggml/src/ggml-sycl/set.hpp +5 -0
  398. data/ext/sources/ggml/src/ggml-sycl/softmax.cpp +327 -162
  399. data/ext/sources/ggml/src/ggml-sycl/softmax.hpp +4 -0
  400. data/ext/sources/ggml/src/ggml-sycl/ssm_conv.cpp +127 -0
  401. data/ext/sources/ggml/src/ggml-sycl/ssm_conv.hpp +5 -0
  402. data/ext/sources/ggml/src/ggml-sycl/vecdotq.hpp +58 -0
  403. data/ext/sources/ggml/src/ggml-vulkan/CMakeLists.txt +38 -18
  404. data/ext/sources/ggml/src/ggml-vulkan/ggml-vulkan.cpp +5013 -2859
  405. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/abs.comp +21 -0
  406. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/acc.comp +2 -2
  407. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/add.comp +2 -2
  408. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/add1.comp +28 -0
  409. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/add_id.comp +1 -1
  410. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/arange.comp +20 -0
  411. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argmax.comp +2 -2
  412. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argsort.comp +33 -26
  413. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/argsort_large.comp +114 -0
  414. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/ceil.comp +22 -0
  415. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/clamp.comp +2 -2
  416. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/concat.comp +2 -2
  417. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/contig_copy.comp +2 -2
  418. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv2d_dw.comp +1 -1
  419. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv2d_mm.comp +47 -49
  420. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/conv_transpose_1d.comp +1 -1
  421. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy.comp +2 -2
  422. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_from_quant.comp +3 -3
  423. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp +4 -4
  424. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/copy_transpose.comp +67 -0
  425. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cos.comp +2 -2
  426. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/count_equal.comp +2 -2
  427. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/count_experts.comp +51 -0
  428. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cumsum.comp +83 -0
  429. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cumsum_multipass1.comp +60 -0
  430. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/cumsum_multipass2.comp +66 -0
  431. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_f32.comp +1 -1
  432. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{dequant_funcs.comp → dequant_funcs.glsl} +9 -21
  433. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{dequant_funcs_cm2.comp → dequant_funcs_cm2.glsl} +18 -4
  434. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{dequant_head.comp → dequant_head.glsl} +1 -1
  435. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq1_m.comp +1 -1
  436. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq1_s.comp +1 -1
  437. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_s.comp +1 -1
  438. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_xs.comp +1 -1
  439. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq2_xxs.comp +1 -1
  440. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq3_s.comp +1 -1
  441. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq3_xxs.comp +1 -1
  442. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq4_nl.comp +1 -1
  443. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_iq4_xs.comp +1 -1
  444. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_mxfp4.comp +3 -3
  445. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q2_k.comp +3 -3
  446. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q3_k.comp +1 -1
  447. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_0.comp +1 -1
  448. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_1.comp +1 -1
  449. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q4_k.comp +3 -3
  450. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_0.comp +1 -1
  451. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_1.comp +1 -1
  452. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q5_k.comp +3 -3
  453. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q6_k.comp +1 -1
  454. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/dequant_q8_0.comp +1 -1
  455. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/diag.comp +29 -0
  456. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/diag_mask_inf.comp +1 -1
  457. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/div.comp +2 -2
  458. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/exp.comp +3 -3
  459. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/fill.comp +19 -0
  460. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn.comp +39 -17
  461. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{flash_attn_base.comp → flash_attn_base.glsl} +19 -1
  462. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm1.comp +45 -7
  463. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_cm2.comp +50 -12
  464. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_split_k_reduce.comp +1 -1
  465. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/floor.comp +22 -0
  466. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/geglu.comp +2 -2
  467. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/geglu_erf.comp +2 -2
  468. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/geglu_quick.comp +2 -2
  469. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu.comp +2 -2
  470. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu_erf.comp +2 -2
  471. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/gelu_quick.comp +2 -2
  472. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{generic_binary_head.comp → generic_binary_head.glsl} +17 -2
  473. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{generic_head.comp → generic_head.glsl} +2 -0
  474. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{generic_unary_head.comp → generic_unary_head.glsl} +7 -0
  475. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/get_rows.comp +4 -4
  476. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/get_rows_quant.comp +3 -3
  477. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{glu_head.comp → glu_head.glsl} +1 -1
  478. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/group_norm.comp +2 -2
  479. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/hardsigmoid.comp +2 -2
  480. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/hardswish.comp +2 -2
  481. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/im2col.comp +19 -7
  482. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/im2col_3d.comp +2 -3
  483. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/l2_norm.comp +2 -2
  484. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/leaky_relu.comp +2 -2
  485. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/log.comp +18 -0
  486. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul.comp +2 -2
  487. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec.comp +2 -2
  488. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{mul_mat_vec_base.comp → mul_mat_vec_base.glsl} +70 -25
  489. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iface.glsl +35 -0
  490. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq1_m.comp +71 -21
  491. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq1_s.comp +41 -25
  492. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq2_s.comp +2 -2
  493. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq2_xs.comp +44 -26
  494. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq2_xxs.comp +2 -2
  495. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq3_s.comp +2 -2
  496. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_iq3_xxs.comp +2 -2
  497. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_nc.comp +9 -7
  498. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_p021.comp +9 -7
  499. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q2_k.comp +4 -6
  500. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q3_k.comp +2 -2
  501. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q4_k.comp +4 -6
  502. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q5_k.comp +4 -6
  503. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_q6_k.comp +2 -2
  504. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vecq.comp +39 -36
  505. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vecq_funcs.glsl +494 -0
  506. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm.comp +78 -103
  507. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm_cm2.comp +34 -23
  508. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{mul_mm_funcs.comp → mul_mm_funcs.glsl} +69 -59
  509. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mm_id_funcs.glsl +72 -0
  510. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq.comp +88 -228
  511. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq_funcs.glsl +454 -0
  512. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq_shmem_types.glsl +78 -0
  513. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/multi_add.comp +97 -13
  514. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/neg.comp +20 -0
  515. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/norm.comp +2 -2
  516. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/opt_step_adamw.comp +2 -2
  517. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/opt_step_sgd.comp +1 -1
  518. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/pad.comp +21 -6
  519. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/pool2d.comp +1 -1
  520. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/quantize_q8_1.comp +10 -10
  521. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/reglu.comp +2 -2
  522. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/relu.comp +2 -2
  523. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/repeat.comp +2 -2
  524. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/repeat_back.comp +2 -2
  525. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm.comp +50 -4
  526. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm_back.comp +2 -2
  527. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rms_norm_partials.comp +2 -2
  528. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/roll.comp +2 -2
  529. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_funcs.glsl +234 -0
  530. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_head.glsl +20 -0
  531. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_multi.comp +6 -50
  532. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_neox.comp +6 -33
  533. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_norm.comp +6 -33
  534. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_params.glsl +28 -0
  535. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_vision.comp +6 -39
  536. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/round.comp +29 -0
  537. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/scale.comp +2 -2
  538. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sigmoid.comp +2 -2
  539. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/silu.comp +2 -2
  540. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/silu_back.comp +2 -2
  541. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sin.comp +2 -2
  542. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max.comp +1 -1
  543. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_back.comp +2 -2
  544. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_large1.comp +62 -0
  545. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_large2.comp +79 -0
  546. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_large3.comp +65 -0
  547. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/soft_max_large_common.glsl +53 -0
  548. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/softplus.comp +23 -0
  549. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/solve_tri.comp +81 -0
  550. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sqrt.comp +2 -2
  551. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/square.comp +2 -2
  552. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/ssm_conv.comp +44 -0
  553. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/ssm_scan.comp +124 -0
  554. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/step.comp +22 -0
  555. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sub.comp +2 -2
  556. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sum_rows.comp +2 -25
  557. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/sum_rows.glsl +25 -0
  558. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/swiglu.comp +2 -2
  559. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/swiglu_oai.comp +2 -2
  560. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/tanh.comp +2 -2
  561. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/timestep_embedding.comp +1 -1
  562. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/topk_argsort.comp +118 -0
  563. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/topk_moe.comp +213 -0
  564. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/topk_nary_search.comp +246 -0
  565. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/tri.comp +43 -0
  566. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/trunc.comp +22 -0
  567. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{types.comp → types.glsl} +345 -26
  568. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/upscale.comp +90 -12
  569. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp +335 -151
  570. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/xielu.comp +35 -0
  571. data/ext/sources/ggml/src/ggml-webgpu/CMakeLists.txt +28 -2
  572. data/ext/sources/ggml/src/ggml-webgpu/ggml-webgpu-shader-lib.hpp +169 -0
  573. data/ext/sources/ggml/src/ggml-webgpu/ggml-webgpu.cpp +1964 -435
  574. data/ext/sources/ggml/src/ggml-webgpu/pre_wgsl.hpp +778 -0
  575. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/bin_op.tmpl.wgsl +188 -0
  576. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/cpy.tmpl.wgsl +101 -0
  577. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/embed_wgsl.py +33 -10
  578. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/flash_attn.wgsl +591 -0
  579. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/get_rows.tmpl.wgsl +1 -1
  580. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/glu.tmpl.wgsl +323 -0
  581. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat.tmpl.wgsl +6 -6
  582. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_decls.tmpl +97 -0
  583. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_reg_tile.tmpl.wgsl +247 -0
  584. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_subgroup_matrix.tmpl.wgsl +302 -0
  585. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_vec.tmpl.wgsl +267 -0
  586. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/rms_norm.wgsl +83 -17
  587. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/rope.tmpl.wgsl +295 -0
  588. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/scale.tmpl.wgsl +90 -0
  589. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/set_rows.tmpl.wgsl +112 -0
  590. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/soft_max.tmpl.wgsl +345 -0
  591. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/unary_op.wgsl +483 -0
  592. data/ext/sources/ggml/src/ggml-zendnn/CMakeLists.txt +92 -0
  593. data/ext/sources/ggml/src/ggml-zendnn/ggml-zendnn.cpp +466 -0
  594. data/ext/sources/ggml/src/ggml.c +425 -33
  595. data/ext/sources/include/whisper.h +1 -0
  596. data/ext/sources/src/CMakeLists.txt +3 -1
  597. data/ext/sources/src/whisper.cpp +101 -35
  598. data/ext/sources/tests/CMakeLists.txt +2 -2
  599. data/ext/sources/tests/test-vad-full.cpp +4 -2
  600. data/ext/sources/tests/test-vad.cpp +1 -1
  601. data/extsources.rb +1 -0
  602. data/lib/whisper/model/uri.rb +17 -18
  603. data/sig/whisper.rbs +119 -2
  604. data/test/test_params.rb +16 -8
  605. data/test/test_segment.rb +0 -1
  606. data/test/test_token.rb +70 -0
  607. data/test/test_vad.rb +1 -1
  608. data/test/test_vad_context.rb +50 -0
  609. data/test/test_vad_segment.rb +19 -0
  610. data/test/test_vad_segments.rb +16 -0
  611. data/test/test_whisper.rb +7 -0
  612. data/whispercpp.gemspec +1 -1
  613. metadata +287 -34
  614. data/ext/sources/build-xcframework.sh +0 -571
  615. data/ext/sources/ggml/src/ggml-cann/Doxyfile +0 -2579
  616. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/mul_mmq_funcs.comp +0 -105
  617. data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/rope_head.comp +0 -55
  618. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/add.tmpl.wgsl +0 -44
  619. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/add_in_place.tmpl.wgsl +0 -41
  620. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/cpy.wgsl +0 -60
  621. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul.tmpl.wgsl +0 -44
  622. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/mul_in_place.tmpl.wgsl +0 -41
  623. data/ext/sources/ggml/src/ggml-webgpu/wgsl-shaders/rms_norm_in_place.wgsl +0 -48
  624. /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{test_bfloat16_support.comp → feature-tests/bfloat16.comp} +0 -0
  625. /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{test_coopmat_support.comp → feature-tests/coopmat.comp} +0 -0
  626. /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{test_coopmat2_support.comp → feature-tests/coopmat2.comp} +0 -0
  627. /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{test_integer_dot_support.comp → feature-tests/integer_dot.comp} +0 -0
  628. /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{glu_main.comp → glu_main.glsl} +0 -0
  629. /data/ext/sources/ggml/src/ggml-vulkan/vulkan-shaders/{rte.comp → rte.glsl} +0 -0
  630. /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: d790b742ddf3f6071ba7cc41ea9a16d2daa1363d4fee9c984ad2609fb19ed9fc
4
- data.tar.gz: 97b213ff5bc5cee1a2880d0e69d4ba9b89da309f003957a66f89ea7bdbfa1ee7
3
+ metadata.gz: 90c3f74c4f4c20ba9f9276f16fad4efa3458cab361f1dcdceb9ef436a3845ddc
4
+ data.tar.gz: 9001366168e697842700adc27305e0771c97e5ba3533c567c3cc6363004b2332
5
5
  SHA512:
6
- metadata.gz: e1ea6c6082532e90b26e17041bd0649f91e32fc70cb489bff0c9d83e4d92431e8d36a54d47904070f1d799e9df9d2fe7dc5f4cc668bf84c6339b7edf4c2b4d45
7
- data.tar.gz: e2007190f93a5f6cb21d8014e07c650aa0e835286eb13131d268d02e563c519c23e1ccce60c90f7da5f921fb4ed1eaec143239627015fb6c40e02188e5eaf34c
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
- whisper = Whisper::Context.new(URI("https://example.net/uri/of/your/model.bin"))
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-v5.1.2",
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-v5.1.2"`) or URI (`https://huggingface.co/ggml-org/whisper-vad/resolve/main/ggml-silero-v5.1.2.bin`), it will be downloaded automatically.
143
- Currently, "silero-v5.1.2" is registered as pre-converted model like ASR models. You also specify file path or URI of model.
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-v5.1.2",
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, VALUE *cSegment);
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, &cContext);
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
@@ -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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(self, ruby_whisper, &ruby_whisper_type, rw);
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) {
@@ -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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
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
- TypedData_Get_Struct(rwm->context, ruby_whisper, &ruby_whisper_type, rw);
210
+ GetContext(rwm->context, rw);
211
211
  return rb_str_new2(whisper_model_type_readable(rw->context));
212
212
  }
213
213
 
@@ -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 36
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(diarize, 14)
1307
- DEFINE_PARAM(offset, 15)
1308
- DEFINE_PARAM(duration, 16)
1309
- DEFINE_PARAM(max_text_tokens, 17)
1310
- DEFINE_PARAM(temperature, 18)
1311
- DEFINE_PARAM(max_initial_ts, 19)
1312
- DEFINE_PARAM(length_penalty, 20)
1313
- DEFINE_PARAM(temperature_inc, 21)
1314
- DEFINE_PARAM(entropy_thold, 22)
1315
- DEFINE_PARAM(logprob_thold, 23)
1316
- DEFINE_PARAM(no_speech_thold, 24)
1317
- DEFINE_PARAM(new_segment_callback, 25)
1318
- DEFINE_PARAM(new_segment_callback_user_data, 26)
1319
- DEFINE_PARAM(progress_callback, 27)
1320
- DEFINE_PARAM(progress_callback_user_data, 28)
1321
- DEFINE_PARAM(encoder_begin_callback, 29)
1322
- DEFINE_PARAM(encoder_begin_callback_user_data, 30)
1323
- DEFINE_PARAM(abort_callback, 31)
1324
- DEFINE_PARAM(abort_callback_user_data, 32)
1325
- DEFINE_PARAM(vad, 33)
1326
- DEFINE_PARAM(vad_model_path, 34)
1327
- DEFINE_PARAM(vad_params, 35)
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);