cui-llama.rn 1.6.0 → 1.7.0

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 (285) hide show
  1. package/README.md +35 -7
  2. package/android/src/main/CMakeLists.txt +22 -11
  3. package/android/src/main/java/com/rnllama/LlamaContext.java +42 -6
  4. package/android/src/main/java/com/rnllama/RNLlama.java +139 -4
  5. package/android/src/main/jni.cpp +173 -18
  6. package/android/src/main/jniLibs/arm64-v8a/librnllama.so +0 -0
  7. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8.so +0 -0
  8. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2.so +0 -0
  9. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod.so +0 -0
  10. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod_i8mm.so +0 -0
  11. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_i8mm.so +0 -0
  12. package/android/src/main/jniLibs/x86_64/librnllama.so +0 -0
  13. package/android/src/main/jniLibs/x86_64/librnllama_x86_64.so +0 -0
  14. package/android/src/newarch/java/com/rnllama/RNLlamaModule.java +24 -4
  15. package/android/src/oldarch/java/com/rnllama/RNLlamaModule.java +22 -2
  16. package/cpp/LICENSE +21 -0
  17. package/cpp/chat.cpp +129 -107
  18. package/cpp/chat.h +2 -0
  19. package/cpp/common.cpp +58 -78
  20. package/cpp/common.h +29 -21
  21. package/cpp/ggml-alloc.c +4 -1
  22. package/cpp/ggml-backend.cpp +9 -5
  23. package/cpp/ggml-backend.h +4 -4
  24. package/cpp/ggml-cpp.h +1 -1
  25. package/cpp/ggml-cpu/amx/amx.cpp +221 -0
  26. package/cpp/ggml-cpu/amx/amx.h +8 -0
  27. package/cpp/ggml-cpu/amx/common.h +91 -0
  28. package/cpp/ggml-cpu/amx/mmq.cpp +2511 -0
  29. package/cpp/ggml-cpu/amx/mmq.h +10 -0
  30. package/{ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers → cpp/ggml-cpu}/binary-ops.h +1 -1
  31. package/cpp/ggml-cpu/common.h +72 -0
  32. package/cpp/{ggml-cpu-aarch64.cpp → ggml-cpu/ggml-cpu-aarch64.cpp} +809 -103
  33. package/cpp/{ggml-cpu-quants.c → ggml-cpu/ggml-cpu-quants.c} +306 -6
  34. package/cpp/{ggml-cpu.c → ggml-cpu/ggml-cpu.c} +114 -55
  35. package/cpp/{ggml-cpu.cpp → ggml-cpu/ggml-cpu.cpp} +32 -16
  36. package/cpp/{ops.cpp → ggml-cpu/ops.cpp} +353 -173
  37. package/{ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers → cpp/ggml-cpu}/ops.h +2 -20
  38. package/cpp/{sgemm.cpp → ggml-cpu/sgemm.cpp} +501 -0
  39. package/{ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers → cpp/ggml-cpu}/simd-mappings.h +7 -3
  40. package/{ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers → cpp/ggml-cpu}/unary-ops.h +1 -1
  41. package/cpp/{vec.cpp → ggml-cpu/vec.cpp} +0 -6
  42. package/{ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers → cpp/ggml-cpu}/vec.h +16 -0
  43. package/cpp/ggml-cpu.h +5 -0
  44. package/cpp/ggml-impl.h +16 -9
  45. package/cpp/ggml-llama-sim.metallib +0 -0
  46. package/cpp/ggml-llama.metallib +0 -0
  47. package/cpp/ggml-metal-impl.h +36 -11
  48. package/cpp/ggml-metal.m +810 -176
  49. package/cpp/ggml-opt.cpp +373 -190
  50. package/cpp/ggml-opt.h +49 -28
  51. package/cpp/ggml-quants.c +0 -6
  52. package/cpp/ggml.c +227 -282
  53. package/cpp/ggml.h +82 -101
  54. package/cpp/gguf.cpp +33 -33
  55. package/cpp/json-schema-to-grammar.cpp +3 -0
  56. package/cpp/llama-adapter.cpp +6 -0
  57. package/cpp/llama-arch.cpp +49 -17
  58. package/cpp/llama-arch.h +9 -0
  59. package/cpp/llama-batch.cpp +8 -2
  60. package/cpp/llama-batch.h +2 -1
  61. package/cpp/llama-chat.cpp +39 -16
  62. package/cpp/llama-chat.h +4 -2
  63. package/cpp/llama-context.cpp +440 -611
  64. package/cpp/llama-context.h +44 -33
  65. package/cpp/llama-cparams.h +1 -0
  66. package/cpp/llama-graph.cpp +214 -291
  67. package/cpp/llama-graph.h +69 -21
  68. package/cpp/llama-hparams.cpp +17 -1
  69. package/cpp/llama-hparams.h +39 -5
  70. package/cpp/llama-kv-cache.cpp +2067 -620
  71. package/cpp/llama-kv-cache.h +410 -108
  72. package/cpp/llama-memory.h +12 -1
  73. package/cpp/llama-model-loader.cpp +24 -15
  74. package/cpp/llama-model-saver.cpp +281 -0
  75. package/cpp/llama-model-saver.h +37 -0
  76. package/cpp/llama-model.cpp +1089 -359
  77. package/cpp/llama-model.h +19 -3
  78. package/cpp/llama-sampling.cpp +20 -7
  79. package/cpp/llama-vocab.cpp +54 -9
  80. package/cpp/llama-vocab.h +6 -0
  81. package/cpp/llama.cpp +14 -0
  82. package/cpp/llama.h +86 -142
  83. package/cpp/minja/chat-template.hpp +9 -5
  84. package/cpp/minja/minja.hpp +69 -36
  85. package/cpp/rn-llama.cpp +602 -190
  86. package/cpp/rn-llama.h +34 -8
  87. package/cpp/sampling.cpp +57 -50
  88. package/cpp/tools/mtmd/clip-impl.h +462 -0
  89. package/cpp/tools/mtmd/clip.cpp +4024 -0
  90. package/cpp/tools/mtmd/clip.h +101 -0
  91. package/cpp/tools/mtmd/miniaudio.h +93468 -0
  92. package/cpp/tools/mtmd/mtmd-audio.cpp +855 -0
  93. package/cpp/tools/mtmd/mtmd-audio.h +62 -0
  94. package/cpp/tools/mtmd/mtmd-helper.cpp +297 -0
  95. package/cpp/tools/mtmd/mtmd.cpp +942 -0
  96. package/cpp/tools/mtmd/mtmd.h +362 -0
  97. package/cpp/tools/mtmd/stb_image.h +7988 -0
  98. package/ios/CMakeLists.txt +20 -10
  99. package/ios/RNLlama.h +6 -0
  100. package/ios/RNLlama.mm +82 -3
  101. package/ios/RNLlamaContext.h +5 -1
  102. package/ios/RNLlamaContext.mm +131 -38
  103. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/chat.h +2 -0
  104. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/common.h +29 -21
  105. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-backend.h +4 -4
  106. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpp.h +1 -1
  107. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu.h +5 -0
  108. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-impl.h +16 -9
  109. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-metal-impl.h +36 -11
  110. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-opt.h +49 -28
  111. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml.h +82 -101
  112. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-arch.h +9 -0
  113. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-batch.h +2 -1
  114. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-chat.h +4 -2
  115. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-context.h +44 -33
  116. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-cparams.h +1 -0
  117. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-graph.h +69 -21
  118. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-hparams.h +39 -5
  119. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-kv-cache.h +410 -108
  120. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-memory.h +12 -1
  121. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-model-saver.h +37 -0
  122. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-model.h +19 -3
  123. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama-vocab.h +6 -0
  124. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/llama.h +86 -142
  125. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/minja/chat-template.hpp +9 -5
  126. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/minja/minja.hpp +69 -36
  127. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/rn-llama.h +34 -8
  128. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Info.plist +0 -0
  129. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/ggml-llama.metallib +0 -0
  130. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/rnllama +0 -0
  131. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/chat.h +2 -0
  132. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/common.h +29 -21
  133. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-backend.h +4 -4
  134. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpp.h +1 -1
  135. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu.h +5 -0
  136. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-impl.h +16 -9
  137. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-metal-impl.h +36 -11
  138. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-opt.h +49 -28
  139. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml.h +82 -101
  140. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-arch.h +9 -0
  141. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-batch.h +2 -1
  142. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-chat.h +4 -2
  143. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-context.h +44 -33
  144. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-cparams.h +1 -0
  145. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-graph.h +69 -21
  146. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-hparams.h +39 -5
  147. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-kv-cache.h +410 -108
  148. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-memory.h +12 -1
  149. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model-saver.h +37 -0
  150. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model.h +19 -3
  151. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama-vocab.h +6 -0
  152. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/llama.h +86 -142
  153. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/minja/chat-template.hpp +9 -5
  154. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/minja/minja.hpp +69 -36
  155. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/rn-llama.h +34 -8
  156. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Info.plist +0 -0
  157. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/_CodeSignature/CodeResources +1 -1
  158. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/ggml-llama-sim.metallib +0 -0
  159. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/rnllama +0 -0
  160. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/chat.h +2 -0
  161. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/common.h +29 -21
  162. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-backend.h +4 -4
  163. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpp.h +1 -1
  164. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu.h +5 -0
  165. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-impl.h +16 -9
  166. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-metal-impl.h +36 -11
  167. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-opt.h +49 -28
  168. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml.h +82 -101
  169. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-arch.h +9 -0
  170. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-batch.h +2 -1
  171. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-chat.h +4 -2
  172. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-context.h +44 -33
  173. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-cparams.h +1 -0
  174. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-graph.h +69 -21
  175. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-hparams.h +39 -5
  176. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-kv-cache.h +410 -108
  177. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-memory.h +12 -1
  178. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-model-saver.h +37 -0
  179. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-model.h +19 -3
  180. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama-vocab.h +6 -0
  181. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/llama.h +86 -142
  182. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/minja/chat-template.hpp +9 -5
  183. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/minja/minja.hpp +69 -36
  184. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/rn-llama.h +34 -8
  185. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Info.plist +0 -0
  186. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/ggml-llama.metallib +0 -0
  187. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/rnllama +0 -0
  188. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/chat.h +2 -0
  189. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/common.h +29 -21
  190. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-backend.h +4 -4
  191. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpp.h +1 -1
  192. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu.h +5 -0
  193. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-impl.h +16 -9
  194. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-metal-impl.h +36 -11
  195. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-opt.h +49 -28
  196. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml.h +82 -101
  197. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-arch.h +9 -0
  198. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-batch.h +2 -1
  199. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-chat.h +4 -2
  200. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-context.h +44 -33
  201. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-cparams.h +1 -0
  202. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-graph.h +69 -21
  203. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-hparams.h +39 -5
  204. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-kv-cache.h +410 -108
  205. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-memory.h +12 -1
  206. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model-saver.h +37 -0
  207. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-model.h +19 -3
  208. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama-vocab.h +6 -0
  209. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/llama.h +86 -142
  210. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/minja/chat-template.hpp +9 -5
  211. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/minja/minja.hpp +69 -36
  212. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/rn-llama.h +34 -8
  213. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Info.plist +0 -0
  214. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/_CodeSignature/CodeResources +1 -1
  215. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/ggml-llama-sim.metallib +0 -0
  216. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/rnllama +0 -0
  217. package/jest/mock.js +33 -7
  218. package/lib/commonjs/NativeRNLlama.js.map +1 -1
  219. package/lib/commonjs/index.js +153 -21
  220. package/lib/commonjs/index.js.map +1 -1
  221. package/lib/module/NativeRNLlama.js.map +1 -1
  222. package/lib/module/index.js +152 -20
  223. package/lib/module/index.js.map +1 -1
  224. package/lib/typescript/NativeRNLlama.d.ts +54 -4
  225. package/lib/typescript/NativeRNLlama.d.ts.map +1 -1
  226. package/lib/typescript/index.d.ts +72 -6
  227. package/lib/typescript/index.d.ts.map +1 -1
  228. package/package.json +1 -1
  229. package/src/NativeRNLlama.ts +72 -4
  230. package/src/index.ts +212 -38
  231. package/cpp/binary-ops.h +0 -16
  232. package/cpp/ops.h +0 -128
  233. package/cpp/simd-mappings.h +0 -888
  234. package/cpp/unary-ops.h +0 -28
  235. package/cpp/vec.h +0 -802
  236. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/binary-ops.h +0 -16
  237. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-aarch64.h +0 -8
  238. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-impl.h +0 -512
  239. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-quants.h +0 -63
  240. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ggml-cpu-traits.h +0 -38
  241. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/ops.h +0 -128
  242. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/sgemm.h +0 -14
  243. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/simd-mappings.h +0 -888
  244. package/ios/rnllama.xcframework/ios-arm64/rnllama.framework/Headers/vec.h +0 -802
  245. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-aarch64.h +0 -8
  246. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-impl.h +0 -512
  247. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-quants.h +0 -63
  248. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-traits.h +0 -38
  249. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/sgemm.h +0 -14
  250. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/unary-ops.h +0 -28
  251. package/ios/rnllama.xcframework/ios-arm64_x86_64-simulator/rnllama.framework/Headers/vec.h +0 -802
  252. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/binary-ops.h +0 -16
  253. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-aarch64.h +0 -8
  254. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-impl.h +0 -512
  255. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-quants.h +0 -63
  256. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ggml-cpu-traits.h +0 -38
  257. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/ops.h +0 -128
  258. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/sgemm.h +0 -14
  259. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/simd-mappings.h +0 -888
  260. package/ios/rnllama.xcframework/tvos-arm64/rnllama.framework/Headers/unary-ops.h +0 -28
  261. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/binary-ops.h +0 -16
  262. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-aarch64.h +0 -8
  263. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-impl.h +0 -512
  264. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-quants.h +0 -63
  265. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ggml-cpu-traits.h +0 -38
  266. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/ops.h +0 -128
  267. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/sgemm.h +0 -14
  268. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/simd-mappings.h +0 -888
  269. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/unary-ops.h +0 -28
  270. package/ios/rnllama.xcframework/tvos-arm64_x86_64-simulator/rnllama.framework/Headers/vec.h +0 -802
  271. package/lib/commonjs/chat.js +0 -37
  272. package/lib/commonjs/chat.js.map +0 -1
  273. package/lib/module/chat.js +0 -33
  274. package/lib/module/chat.js.map +0 -1
  275. package/lib/typescript/chat.d.ts +0 -10
  276. package/lib/typescript/chat.d.ts.map +0 -1
  277. package/src/chat.ts +0 -44
  278. /package/cpp/{binary-ops.cpp → ggml-cpu/binary-ops.cpp} +0 -0
  279. /package/cpp/{ggml-cpu-aarch64.h → ggml-cpu/ggml-cpu-aarch64.h} +0 -0
  280. /package/cpp/{ggml-cpu-impl.h → ggml-cpu/ggml-cpu-impl.h} +0 -0
  281. /package/cpp/{ggml-cpu-quants.h → ggml-cpu/ggml-cpu-quants.h} +0 -0
  282. /package/cpp/{ggml-cpu-traits.cpp → ggml-cpu/ggml-cpu-traits.cpp} +0 -0
  283. /package/cpp/{ggml-cpu-traits.h → ggml-cpu/ggml-cpu-traits.h} +0 -0
  284. /package/cpp/{sgemm.h → ggml-cpu/sgemm.h} +0 -0
  285. /package/cpp/{unary-ops.cpp → ggml-cpu/unary-ops.cpp} +0 -0
@@ -0,0 +1,855 @@
1
+ // fix problem with std::min and std::max
2
+ #if defined(_WIN32)
3
+ #define WIN32_LEAN_AND_MEAN
4
+ #ifndef NOMINMAX
5
+ # define NOMINMAX
6
+ #endif
7
+ #include <windows.h>
8
+ #endif
9
+
10
+ #include "mtmd-audio.h"
11
+
12
+ //#define MTMD_AUDIO_DEBUG
13
+
14
+ #define MINIAUDIO_IMPLEMENTATION
15
+ #ifndef MTMD_AUDIO_DEBUG
16
+ # define MA_NO_ENCODING
17
+ #endif
18
+ #define MA_NO_DEVICE_IO
19
+ #define MA_NO_RESOURCE_MANAGER
20
+ #define MA_NO_NODE_GRAPH
21
+ #define MA_NO_ENGINE
22
+ #define MA_NO_GENERATION
23
+ #define MA_API static
24
+ #include "miniaudio.h"
25
+
26
+ #define _USE_MATH_DEFINES // for M_PI
27
+ #include <cmath>
28
+ #include <cstdint>
29
+ #include <cstring>
30
+ #include <thread>
31
+ #include <vector>
32
+ #include <fstream>
33
+ #include <algorithm>
34
+
35
+ // most of the code here is copied from whisper.cpp
36
+
37
+ // align x to upper multiple of n
38
+ #define _ALIGN(x, n) ((((x) + (n) - 1) / (n)) * (n))
39
+
40
+ namespace whisper_preprocessor {
41
+
42
+ #define SIN_COS_N_COUNT WHISPER_N_FFT
43
+ namespace {
44
+ struct whisper_global_cache {
45
+ // In FFT, we frequently use sine and cosine operations with the same values.
46
+ // We can use precalculated values to speed up the process.
47
+ float sin_vals[SIN_COS_N_COUNT];
48
+ float cos_vals[SIN_COS_N_COUNT];
49
+
50
+ // Hann window (Use cosf to eliminate difference)
51
+ // ref: https://pytorch.org/docs/stable/generated/torch.hann_window.html
52
+ // ref: https://github.com/openai/whisper/blob/main/whisper/audio.py#L147
53
+ float hann_window[WHISPER_N_FFT];
54
+
55
+ whisper_global_cache() {
56
+ fill_sin_cos_table();
57
+ fill_hann_window(sizeof(hann_window)/sizeof(hann_window[0]), true, hann_window);
58
+ }
59
+
60
+ void fill_sin_cos_table() {
61
+ for (int i = 0; i < SIN_COS_N_COUNT; i++) {
62
+ double theta = (2 * M_PI * i) / SIN_COS_N_COUNT;
63
+ sin_vals[i] = sinf(theta);
64
+ cos_vals[i] = cosf(theta);
65
+ }
66
+ }
67
+
68
+ void fill_hann_window(int length, bool periodic, float * output) {
69
+ int offset = -1;
70
+ if (periodic) {
71
+ offset = 0;
72
+ }
73
+ for (int i = 0; i < length; i++) {
74
+ output[i] = 0.5 * (1.0 - cosf((2.0 * M_PI * i) / (length + offset)));
75
+ }
76
+ }
77
+ } global_cache;
78
+ }
79
+
80
+ // naive Discrete Fourier Transform
81
+ // input is real-valued
82
+ // output is complex-valued
83
+ static void dft(const float* in, int N, float* out) {
84
+ const int sin_cos_step = SIN_COS_N_COUNT / N;
85
+
86
+ for (int k = 0; k < N; k++) {
87
+ float re = 0;
88
+ float im = 0;
89
+
90
+ for (int n = 0; n < N; n++) {
91
+ int idx = (k * n * sin_cos_step) % (SIN_COS_N_COUNT); // t = 2*M_PI*k*n/N
92
+ re += in[n]*global_cache.cos_vals[idx]; // cos(t)
93
+ im -= in[n]*global_cache.sin_vals[idx]; // sin(t)
94
+ }
95
+
96
+ out[k*2 + 0] = re;
97
+ out[k*2 + 1] = im;
98
+ }
99
+ }
100
+
101
+ // Cooley-Tukey FFT
102
+ // poor man's implementation - use something better
103
+ // input is real-valued
104
+ // output is complex-valued
105
+ static void fft(float* in, int N, float* out) {
106
+ if (N == 1) {
107
+ out[0] = in[0];
108
+ out[1] = 0;
109
+ return;
110
+ }
111
+
112
+ const int half_N = N / 2;
113
+ if (N - half_N*2 == 1) {
114
+ dft(in, N, out);
115
+ return;
116
+ }
117
+
118
+ float* even = in + N;
119
+ for (int i = 0; i < half_N; ++i) {
120
+ even[i]= in[2*i];
121
+ }
122
+ float* even_fft = out + 2 * N;
123
+ fft(even, half_N, even_fft);
124
+
125
+ float* odd = even;
126
+ for (int i = 0; i < half_N; ++i) {
127
+ odd[i] = in[2*i + 1];
128
+ }
129
+ float* odd_fft = even_fft + N;
130
+ fft(odd, half_N, odd_fft);
131
+
132
+ const int sin_cos_step = SIN_COS_N_COUNT / N;
133
+ for (int k = 0; k < half_N; k++) {
134
+ int idx = k * sin_cos_step; // t = 2*M_PI*k/N
135
+ float re = global_cache.cos_vals[idx]; // cos(t)
136
+ float im = -global_cache.sin_vals[idx]; // sin(t)
137
+
138
+ float re_odd = odd_fft[2*k + 0];
139
+ float im_odd = odd_fft[2*k + 1];
140
+
141
+ out[2*k + 0] = even_fft[2*k + 0] + re*re_odd - im*im_odd;
142
+ out[2*k + 1] = even_fft[2*k + 1] + re*im_odd + im*re_odd;
143
+
144
+ out[2*(k + half_N) + 0] = even_fft[2*k + 0] - re*re_odd + im*im_odd;
145
+ out[2*(k + half_N) + 1] = even_fft[2*k + 1] - re*im_odd - im*re_odd;
146
+ }
147
+ }
148
+
149
+ static void log_mel_spectrogram_worker_thread(int ith, const float * hann, const std::vector<float> & samples,
150
+ int n_samples, int frame_size, int frame_step, int n_threads,
151
+ const whisper_filters & filters, whisper_mel & mel) {
152
+ std::vector<float> fft_in(frame_size * 2, 0.0);
153
+ std::vector<float> fft_out(frame_size * 2 * 2 * 2);
154
+
155
+ int n_fft = filters.n_fft;
156
+ int i = ith;
157
+
158
+ // make sure n_fft == 1 + (WHISPER_N_FFT / 2), bin_0 to bin_nyquist
159
+ WHISPER_ASSERT(n_fft == 1 + (frame_size / 2));
160
+
161
+ // calculate FFT only when fft_in are not all zero
162
+ for (; i < std::min(n_samples / frame_step + 1, mel.n_len); i += n_threads) {
163
+ const int offset = i * frame_step;
164
+
165
+ // apply Hann window (~10% faster)
166
+ for (int j = 0; j < std::min(frame_size, n_samples - offset); j++) {
167
+ fft_in[j] = hann[j] * samples[offset + j];
168
+ }
169
+
170
+ // fill the rest with zeros
171
+ if (n_samples - offset < frame_size) {
172
+ std::fill(fft_in.begin() + (n_samples - offset), fft_in.end(), 0.0);
173
+ }
174
+
175
+ // FFT
176
+ fft(fft_in.data(), frame_size, fft_out.data());
177
+
178
+ // Calculate modulus^2 of complex numbers
179
+ // Use pow(fft_out[2 * j + 0], 2) + pow(fft_out[2 * j + 1], 2) causes inference quality problem? Interesting.
180
+ for (int j = 0; j < n_fft; j++) {
181
+ fft_out[j] = (fft_out[2 * j + 0] * fft_out[2 * j + 0] + fft_out[2 * j + 1] * fft_out[2 * j + 1]);
182
+ }
183
+
184
+ // mel spectrogram
185
+ for (int j = 0; j < mel.n_mel; j++) {
186
+ double sum = 0.0;
187
+ // unroll loop (suggested by GH user @lunixbochs)
188
+ int k = 0;
189
+ for (k = 0; k < n_fft - 3; k += 4) {
190
+ sum +=
191
+ fft_out[k + 0] * filters.data[j * n_fft + k + 0] +
192
+ fft_out[k + 1] * filters.data[j * n_fft + k + 1] +
193
+ fft_out[k + 2] * filters.data[j * n_fft + k + 2] +
194
+ fft_out[k + 3] * filters.data[j * n_fft + k + 3];
195
+ }
196
+ // handle n_fft remainder
197
+ for (; k < n_fft; k++) {
198
+ sum += fft_out[k] * filters.data[j * n_fft + k];
199
+ }
200
+ sum = log10(std::max(sum, 1e-10));
201
+ mel.data[j * mel.n_len + i] = sum;
202
+ }
203
+ }
204
+
205
+ // Otherwise fft_out are all zero
206
+ double sum = log10(1e-10);
207
+ for (; i < mel.n_len; i += n_threads) {
208
+ for (int j = 0; j < mel.n_mel; j++) {
209
+ mel.data[j * mel.n_len + i] = sum;
210
+ }
211
+ }
212
+ }
213
+
214
+ // ref: https://github.com/openai/whisper/blob/main/whisper/audio.py#L110-L157
215
+ static bool log_mel_spectrogram(
216
+ const float * samples,
217
+ const int n_samples,
218
+ const int /*sample_rate*/,
219
+ const int frame_size,
220
+ const int frame_step,
221
+ const int n_mel,
222
+ const int n_threads,
223
+ const whisper_filters & filters,
224
+ const bool debug,
225
+ whisper_mel & mel) {
226
+ //const int64_t t_start_us = lm_ggml_time_us();
227
+
228
+ // Hann window
229
+ WHISPER_ASSERT(frame_size == WHISPER_N_FFT && "Unsupported frame_size");
230
+ const float * hann = global_cache.hann_window;
231
+
232
+ // Calculate the length of padding
233
+ int64_t stage_1_pad = WHISPER_SAMPLE_RATE * 30;
234
+ int64_t stage_2_pad = frame_size / 2;
235
+
236
+ // Initialize a vector and copy data from C array to it.
237
+ std::vector<float> samples_padded;
238
+ samples_padded.resize(n_samples + stage_1_pad + stage_2_pad * 2);
239
+ std::copy(samples, samples + n_samples, samples_padded.begin() + stage_2_pad);
240
+
241
+ // pad 30 seconds of zeros at the end of audio (480,000 samples) + reflective pad 200 samples at the end of audio
242
+ std::fill(samples_padded.begin() + n_samples + stage_2_pad, samples_padded.begin() + n_samples + stage_1_pad + 2 * stage_2_pad, 0);
243
+
244
+ // reflective pad 200 samples at the beginning of audio
245
+ std::reverse_copy(samples + 1, samples + 1 + stage_2_pad, samples_padded.begin());
246
+
247
+ mel.n_mel = n_mel;
248
+ // https://github.com/pytorch/pytorch/blob/main/aten/src/ATen/native/SpectralOps.cpp#L936
249
+ // Calculate number of frames + remove the last frame
250
+ mel.n_len = (samples_padded.size() - frame_size) / frame_step;
251
+ // Calculate semi-padded sample length to ensure compatibility
252
+ mel.n_len_org = 1 + (n_samples + stage_2_pad - frame_size) / frame_step;
253
+ mel.data.resize(mel.n_mel * mel.n_len);
254
+
255
+ {
256
+ std::vector<std::thread> workers(n_threads - 1);
257
+ for (int iw = 0; iw < n_threads - 1; ++iw) {
258
+ workers[iw] = std::thread(
259
+ log_mel_spectrogram_worker_thread, iw + 1, hann, std::cref(samples_padded),
260
+ n_samples + stage_2_pad, frame_size, frame_step, n_threads,
261
+ std::cref(filters), std::ref(mel));
262
+ }
263
+
264
+ // main thread
265
+ log_mel_spectrogram_worker_thread(0, hann, samples_padded, n_samples + stage_2_pad, frame_size, frame_step, n_threads, filters, mel);
266
+
267
+ for (int iw = 0; iw < n_threads - 1; ++iw) {
268
+ workers[iw].join();
269
+ }
270
+ }
271
+
272
+ // clamping and normalization
273
+ double mmax = -1e20;
274
+ for (int i = 0; i < mel.n_mel*mel.n_len; i++) {
275
+ if (mel.data[i] > mmax) {
276
+ mmax = mel.data[i];
277
+ }
278
+ }
279
+
280
+ mmax -= 8.0;
281
+
282
+ for (int i = 0; i < mel.n_mel*mel.n_len; i++) {
283
+ if (mel.data[i] < mmax) {
284
+ mel.data[i] = mmax;
285
+ }
286
+
287
+ mel.data[i] = (mel.data[i] + 4.0)/4.0;
288
+ }
289
+
290
+ // Dump log_mel_spectrogram
291
+ if (debug) {
292
+ std::ofstream outFile("log_mel_spectrogram.json");
293
+ outFile << "[";
294
+ for (uint64_t i = 0; i < mel.data.size() - 1; i++) {
295
+ outFile << mel.data[i] << ", ";
296
+ }
297
+ outFile << mel.data[mel.data.size() - 1] << "]";
298
+ outFile.close();
299
+ }
300
+
301
+ return true;
302
+ }
303
+
304
+ bool preprocess_audio(
305
+ const float * samples,
306
+ size_t n_samples,
307
+ const whisper_filters & filters,
308
+ std::vector<whisper_mel> & output) {
309
+
310
+ if (n_samples == 0) {
311
+ // empty audio
312
+ return false;
313
+ }
314
+
315
+ whisper_mel out_full;
316
+ bool ok = log_mel_spectrogram(
317
+ samples,
318
+ n_samples,
319
+ COMMON_SAMPLE_RATE,
320
+ WHISPER_N_FFT,
321
+ WHISPER_HOP_LENGTH,
322
+ filters.n_mel,
323
+ 4, // n_threads
324
+ filters,
325
+ false, // debug
326
+ out_full);
327
+ if (!ok) {
328
+ return false;
329
+ }
330
+
331
+ // because the cgraph in clip.cpp only accepts 3000 frames each, we need to split the mel
332
+ // we always expect the mel to have 3000 silent frames at the end
333
+ // printf("n_len %d\n", out_full.n_len);
334
+ const size_t frames_per_chunk = 3000;
335
+ LM_GGML_ASSERT((size_t)out_full.n_len > frames_per_chunk);
336
+ for (size_t off = 0; off < (size_t)out_full.n_len; off += frames_per_chunk) {
337
+ int n_len = std::min(frames_per_chunk, (size_t)out_full.n_len - off);
338
+ if ((size_t)n_len < frames_per_chunk) {
339
+ break; // last uncomplete chunk will always be a padded chunk, safe to ignore
340
+ }
341
+
342
+ whisper_mel out_chunk;
343
+ out_chunk.n_len = n_len;
344
+ out_chunk.n_mel = out_full.n_mel;
345
+ out_chunk.n_len_org = out_full.n_mel; // unused
346
+ out_chunk.data.reserve(out_chunk.n_mel * out_chunk.n_len);
347
+
348
+ for (int i = 0; i < out_full.n_mel; i++) {
349
+ auto src = out_full.data.begin() + i*out_full.n_len + off;
350
+ out_chunk.data.insert(out_chunk.data.end(), src, src + frames_per_chunk);
351
+ }
352
+
353
+ output.push_back(std::move(out_chunk));
354
+ }
355
+
356
+ return true;
357
+ }
358
+
359
+ } // namespace whisper_preprocessor
360
+
361
+
362
+ namespace audio_helpers {
363
+
364
+ bool is_audio_file(const char * buf, size_t len) {
365
+ if (len < 12) {
366
+ return false;
367
+ }
368
+
369
+ // RIFF ref: https://en.wikipedia.org/wiki/Resource_Interchange_File_Format
370
+ // WAV ref: https://www.mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
371
+ bool is_wav = memcmp(buf, "RIFF", 4) == 0 && memcmp(buf + 8, "WAVE", 4) == 0;
372
+ bool is_mp3 = len >= 3 && (
373
+ memcmp(buf, "ID3", 3) == 0 ||
374
+ // Check for MPEG sync word (simplified check)
375
+ ((unsigned char)buf[0] == 0xFF && ((unsigned char)buf[1] & 0xE0) == 0xE0)
376
+ );
377
+ bool is_flac = memcmp(buf, "fLaC", 4) == 0;
378
+
379
+ return is_wav || is_mp3 || is_flac;
380
+ }
381
+
382
+ // returns true if the buffer is a valid audio file
383
+ bool decode_audio_from_buf(const unsigned char * buf_in, size_t len, int target_sampler_rate, std::vector<float> & pcmf32_mono) {
384
+ ma_result result;
385
+ const int channels = 1;
386
+ ma_decoder_config decoder_config = ma_decoder_config_init(ma_format_f32, channels, target_sampler_rate);
387
+ ma_decoder decoder;
388
+
389
+ result = ma_decoder_init_memory(buf_in, len, &decoder_config, &decoder);
390
+ if (result != MA_SUCCESS) {
391
+ return false;
392
+ }
393
+
394
+ ma_uint64 frame_count;
395
+ ma_uint64 frames_read;
396
+ result = ma_decoder_get_length_in_pcm_frames(&decoder, &frame_count);
397
+ if (result != MA_SUCCESS) {
398
+ ma_decoder_uninit(&decoder);
399
+ return false;
400
+ }
401
+
402
+ pcmf32_mono.resize(frame_count);
403
+ result = ma_decoder_read_pcm_frames(&decoder, pcmf32_mono.data(), frame_count, &frames_read);
404
+ if (result != MA_SUCCESS) {
405
+ ma_decoder_uninit(&decoder);
406
+ return false;
407
+ }
408
+
409
+ #ifdef MTMD_AUDIO_DEBUG
410
+ // save audio to wav file
411
+ ma_encoder_config config = ma_encoder_config_init(ma_encoding_format_wav, ma_format_f32, 1, target_sampler_rate);
412
+ ma_encoder encoder;
413
+ ma_encoder_init_file("output.wav", &config, &encoder);
414
+ ma_encoder_write_pcm_frames(&encoder, pcmf32_mono.data(), pcmf32_mono.size(), &frames_read);
415
+ ma_encoder_uninit(&encoder);
416
+ #endif
417
+
418
+ ma_decoder_uninit(&decoder);
419
+ return true;
420
+ }
421
+
422
+ } // namespace wav_utils
423
+
424
+
425
+ // precalculated mel filter banks
426
+ // values are multiplied by 1000.0 to save space, and will be divided by 1000.0 in the end of the function
427
+ //
428
+ // generated from python code:
429
+ //
430
+ // from numpy import load
431
+ // data = load('mel_filters.npz')
432
+ // lst = data.files
433
+ // for item in lst:
434
+ // print(item)
435
+ // print(data[item].shape)
436
+ // n_mel = data[item].shape[0]
437
+ // n_fft = data[item].shape[1]
438
+ // for i, row in enumerate(data[item]):
439
+ // for j, val in enumerate(row):
440
+ // val = val * 1000.0
441
+ // if val != 0:
442
+ // print(f"data[{i*n_fft + j}] = {val:.6f};")
443
+
444
+ namespace whisper_precalc_filters {
445
+
446
+ whisper_preprocessor::whisper_filters get_128_bins() {
447
+ whisper_preprocessor::whisper_filters filters;
448
+ filters.n_mel = 128;
449
+ filters.n_fft = 201;
450
+ std::vector data(filters.n_mel * filters.n_fft, 0.0f);
451
+
452
+ data[1] = 12.37398665;
453
+ data[202] = 30.39256483;
454
+ data[404] = 24.74797331;
455
+ data[605] = 18.01857911;
456
+ data[807] = 37.12195903;
457
+ data[1008] = 5.64459199;
458
+ data[1009] = 6.72939420;
459
+ data[1210] = 36.03715822;
460
+ data[1412] = 19.10337992;
461
+ data[1613] = 23.66316877;
462
+ data[1815] = 31.47736564;
463
+ data[2016] = 11.28918398;
464
+ data[2017] = 1.08480197;
465
+ data[2218] = 41.68175161;
466
+ data[2420] = 13.45878839;
467
+ data[2621] = 29.30776216;
468
+ data[2823] = 25.83277412;
469
+ data[3024] = 16.93377644;
470
+ data[3226] = 38.20675984;
471
+ data[3427] = 4.55979025;
472
+ data[3428] = 7.81419594;
473
+ data[3629] = 34.95235741;
474
+ data[3831] = 20.18818259;
475
+ data[4032] = 22.57836796;
476
+ data[4234] = 32.56217018;
477
+ data[4435] = 10.20438317;
478
+ data[4436] = 2.16960395;
479
+ data[4637] = 40.59694707;
480
+ data[4839] = 14.54358920;
481
+ data[5040] = 28.22295949;
482
+ data[5242] = 26.91757679;
483
+ data[5443] = 15.84897563;
484
+ data[5645] = 39.29156065;
485
+ data[5846] = 3.47498828;
486
+ data[5847] = 8.89899861;
487
+ data[6048] = 33.86755288;
488
+ data[6250] = 21.27298526;
489
+ data[6451] = 21.49356715;
490
+ data[6653] = 33.64697099;
491
+ data[6854] = 9.11958050;
492
+ data[6855] = 3.25440569;
493
+ data[7056] = 39.51214626;
494
+ data[7258] = 15.62839188;
495
+ data[7459] = 27.13815868;
496
+ data[7661] = 28.00237760;
497
+ data[7862] = 14.76417296;
498
+ data[8064] = 40.37636518;
499
+ data[8265] = 2.38068704;
500
+ data[8266] = 10.20263787;
501
+ data[8467] = 31.61146119;
502
+ data[8669] = 24.54700135;
503
+ data[8870] = 15.32919332;
504
+ data[8871] = 1.66583748;
505
+ data[9072] = 36.72905266;
506
+ data[9274] = 20.09709924;
507
+ data[9475] = 16.93102531;
508
+ data[9476] = 2.90265540;
509
+ data[9677] = 32.84499049;
510
+ data[9879] = 23.52004871;
511
+ data[10080] = 11.03894413;
512
+ data[10081] = 10.72582975;
513
+ data[10282] = 22.71829173;
514
+ data[10484] = 32.27872774;
515
+ data[10685] = 0.11626833;
516
+ data[10686] = 22.85348251;
517
+ data[10887] = 8.56344029;
518
+ data[10888] = 14.97978810;
519
+ data[11089] = 15.51398356;
520
+ data[11090] = 8.51490628;
521
+ data[11291] = 21.10680379;
522
+ data[11292] = 3.32652032;
523
+ data[11493] = 25.47064796;
524
+ data[11695] = 27.35907957;
525
+ data[11896] = 0.65853616;
526
+ data[11897] = 23.83812517;
527
+ data[12098] = 3.44359246;
528
+ data[12099] = 21.22455277;
529
+ data[12300] = 5.35842171;
530
+ data[12301] = 19.42555793;
531
+ data[12502] = 6.49324711;
532
+ data[12503] = 18.35542172;
533
+ data[12704] = 6.93138083;
534
+ data[12705] = 17.93504693;
535
+ data[12906] = 6.74968259;
536
+ data[12907] = 18.09151843;
537
+ data[13108] = 6.01899112;
538
+ data[13109] = 18.75767298;
539
+ data[13310] = 4.80452832;
540
+ data[13311] = 19.87172849;
541
+ data[13512] = 3.16627859;
542
+ data[13513] = 21.37690969;
543
+ data[13514] = 1.25317345;
544
+ data[13714] = 1.15934468;
545
+ data[13715] = 20.80361731;
546
+ data[13716] = 4.04486805;
547
+ data[13917] = 17.55363122;
548
+ data[13918] = 7.08320038;
549
+ data[14119] = 14.07538634;
550
+ data[14120] = 10.32655034;
551
+ data[14321] = 10.40921453;
552
+ data[14322] = 13.73696327;
553
+ data[14523] = 6.59187697;
554
+ data[14524] = 17.27988198;
555
+ data[14525] = 1.46804214;
556
+ data[14725] = 2.65681883;
557
+ data[14726] = 18.09193194;
558
+ data[14727] = 5.85655728;
559
+ data[14928] = 13.34277913;
560
+ data[14929] = 10.28267574;
561
+ data[15130] = 8.56800377;
562
+ data[15131] = 14.72230814;
563
+ data[15132] = 1.04039861;
564
+ data[15332] = 3.79085587;
565
+ data[15333] = 17.14678481;
566
+ data[15334] = 6.11609267;
567
+ data[15535] = 11.75929047;
568
+ data[15536] = 11.13393717;
569
+ data[15737] = 6.43857848;
570
+ data[15738] = 16.07806236;
571
+ data[15739] = 4.23917221;
572
+ data[15939] = 1.19989377;
573
+ data[15940] = 12.75671553;
574
+ data[15941] = 9.65298992;
575
+ data[16142] = 7.06935255;
576
+ data[16143] = 14.94054683;
577
+ data[16144] = 4.19024844;
578
+ data[16344] = 1.51483389;
579
+ data[16345] = 12.00899947;
580
+ data[16346] = 9.84823331;
581
+ data[16547] = 6.10224018;
582
+ data[16548] = 15.33857174;
583
+ data[16549] = 5.57676842;
584
+ data[16749] = 0.36827257;
585
+ data[16750] = 9.89749376;
586
+ data[16751] = 11.35340426;
587
+ data[16752] = 2.05122307;
588
+ data[16952] = 3.89297144;
589
+ data[16953] = 12.97352277;
590
+ data[16954] = 8.06631614;
591
+ data[17155] = 6.74493238;
592
+ data[17156] = 13.85874674;
593
+ data[17157] = 5.41190524;
594
+ data[17357] = 0.74220158;
595
+ data[17358] = 8.98779090;
596
+ data[17359] = 11.37871388;
597
+ data[17360] = 3.32958088;
598
+ data[17560] = 2.82313535;
599
+ data[17561] = 10.68049297;
600
+ data[17562] = 9.43340641;
601
+ data[17563] = 1.76325557;
602
+ data[17763] = 4.39018616;
603
+ data[17764] = 11.87758986;
604
+ data[17765] = 7.97005836;
605
+ data[17766] = 0.66104700;
606
+ data[17966] = 5.49466675;
607
+ data[17967] = 12.62953598;
608
+ data[17968] = 6.93987962;
609
+ data[18169] = 6.18401915;
610
+ data[18170] = 12.93473132;
611
+ data[18171] = 6.29778765;
612
+ data[18371] = 0.02325210;
613
+ data[18372] = 6.50206627;
614
+ data[18373] = 12.32661773;
615
+ data[18374] = 6.00216538;
616
+ data[18574] = 0.31548753;
617
+ data[18575] = 6.48925547;
618
+ data[18576] = 12.04130240;
619
+ data[18577] = 6.01462880;
620
+ data[18777] = 0.29979556;
621
+ data[18778] = 6.18288014;
622
+ data[18779] = 12.04272825;
623
+ data[18780] = 6.29981188;
624
+ data[18781] = 0.55689598;
625
+ data[18980] = 0.01120471;
626
+ data[18981] = 5.61729167;
627
+ data[18982] = 11.22337859;
628
+ data[18983] = 6.82516303;
629
+ data[18984] = 1.35264499;
630
+ data[19184] = 4.82410006;
631
+ data[19185] = 10.16623247;
632
+ data[19186] = 7.56075513;
633
+ data[19187] = 2.34590308;
634
+ data[19387] = 3.83235747;
635
+ data[19388] = 8.92296247;
636
+ data[19389] = 8.47910438;
637
+ data[19390] = 3.50978645;
638
+ data[19590] = 2.66873185;
639
+ data[19591] = 7.51965167;
640
+ data[19592] = 9.55500547;
641
+ data[19593] = 4.81966138;
642
+ data[19594] = 0.08431751;
643
+ data[19793] = 1.35767367;
644
+ data[19794] = 5.98019501;
645
+ data[19795] = 10.60271543;
646
+ data[19796] = 6.25298498;
647
+ data[19797] = 1.74059917;
648
+ data[19997] = 4.32644226;
649
+ data[19998] = 8.73131864;
650
+ data[19999] = 7.78916525;
651
+ data[20000] = 3.48923868;
652
+ data[20200] = 2.57835095;
653
+ data[20201] = 6.77582854;
654
+ data[20202] = 9.40941647;
655
+ data[20203] = 5.31194592;
656
+ data[20204] = 1.21447595;
657
+ data[20403] = 0.75411191;
658
+ data[20404] = 4.75395704;
659
+ data[20405] = 8.75380263;
660
+ data[20406] = 7.19209015;
661
+ data[20407] = 3.28754401;
662
+ data[20607] = 2.68179690;
663
+ data[20608] = 6.49331464;
664
+ data[20609] = 9.11457930;
665
+ data[20610] = 5.39387390;
666
+ data[20611] = 1.67316827;
667
+ data[20810] = 0.57394296;
668
+ data[20811] = 4.20600036;
669
+ data[20812] = 7.83805829;
670
+ data[20813] = 7.52023002;
671
+ data[20814] = 3.97470826;
672
+ data[20815] = 0.42918732;
673
+ data[21014] = 1.90464477;
674
+ data[21015] = 5.36569161;
675
+ data[21016] = 8.82673822;
676
+ data[21017] = 6.27609482;
677
+ data[21018] = 2.89750961;
678
+ data[21218] = 2.89885257;
679
+ data[21219] = 6.19694078;
680
+ data[21220] = 8.56699049;
681
+ data[21221] = 5.34748193;
682
+ data[21222] = 2.12797290;
683
+ data[21421] = 0.44750227;
684
+ data[21422] = 3.59030394;
685
+ data[21423] = 6.73310598;
686
+ data[21424] = 7.77023612;
687
+ data[21425] = 4.70231380;
688
+ data[21426] = 1.63439126;
689
+ data[21625] = 1.01536023;
690
+ data[21626] = 4.01018746;
691
+ data[21627] = 7.00501446;
692
+ data[21628] = 7.23442994;
693
+ data[21629] = 4.31095669;
694
+ data[21630] = 1.38748321;
695
+ data[21829] = 1.33348850;
696
+ data[21830] = 4.18730825;
697
+ data[21831] = 7.04112789;
698
+ data[21832] = 6.93188375;
699
+ data[21833] = 4.14605811;
700
+ data[21834] = 1.36023236;
701
+ data[22033] = 1.42879714;
702
+ data[22034] = 4.14824858;
703
+ data[22035] = 6.86769979;
704
+ data[22036] = 6.83705276;
705
+ data[22037] = 4.18239459;
706
+ data[22038] = 1.52773573;
707
+ data[22237] = 1.32610439;
708
+ data[22238] = 3.91751388;
709
+ data[22239] = 6.50892360;
710
+ data[22240] = 6.92639686;
711
+ data[22241] = 4.39672917;
712
+ data[22242] = 1.86706171;
713
+ data[22441] = 1.04827771;
714
+ data[22442] = 3.51767405;
715
+ data[22443] = 5.98707050;
716
+ data[22444] = 7.17824046;
717
+ data[22445] = 4.76767914;
718
+ data[22446] = 2.35711760;
719
+ data[22645] = 0.61636406;
720
+ data[22646] = 2.96949223;
721
+ data[22647] = 5.32262027;
722
+ data[22648] = 7.57265091;
723
+ data[22649] = 5.27558755;
724
+ data[22650] = 2.97852419;
725
+ data[22651] = 0.68146095;
726
+ data[22849] = 0.04971400;
727
+ data[22850] = 2.29204819;
728
+ data[22851] = 4.53438237;
729
+ data[22852] = 6.77671656;
730
+ data[22853] = 5.90240723;
731
+ data[22854] = 3.71349836;
732
+ data[22855] = 1.52458926;
733
+ data[23054] = 1.50285335;
734
+ data[23055] = 3.63961048;
735
+ data[23056] = 5.77636715;
736
+ data[23057] = 6.63159089;
737
+ data[23058] = 4.54574358;
738
+ data[23059] = 2.45989650;
739
+ data[23060] = 0.37404924;
740
+ data[23258] = 0.61795861;
741
+ data[23259] = 2.65410915;
742
+ data[23260] = 4.69025923;
743
+ data[23261] = 6.72641024;
744
+ data[23262] = 5.46034705;
745
+ data[23263] = 3.47270933;
746
+ data[23264] = 1.48507138;
747
+ data[23463] = 1.59233576;
748
+ data[23464] = 3.53261665;
749
+ data[23465] = 5.47289755;
750
+ data[23466] = 6.44368259;
751
+ data[23467] = 4.54962999;
752
+ data[23468] = 2.65557761;
753
+ data[23469] = 0.76152512;
754
+ data[23667] = 0.46749352;
755
+ data[23668] = 2.31641904;
756
+ data[23669] = 4.16534441;
757
+ data[23670] = 6.01426978;
758
+ data[23671] = 5.67844696;
759
+ data[23672] = 3.87357362;
760
+ data[23673] = 2.06870004;
761
+ data[23674] = 0.26382666;
762
+ data[23872] = 1.05349103;
763
+ data[23873] = 2.81536230;
764
+ data[23874] = 4.57723346;
765
+ data[23875] = 6.33910485;
766
+ data[23876] = 5.12815686;
767
+ data[23877] = 3.40826320;
768
+ data[23878] = 1.68837002;
769
+ data[24077] = 1.43350090;
770
+ data[24078] = 3.11241671;
771
+ data[24079] = 4.79133241;
772
+ data[24080] = 6.40943693;
773
+ data[24081] = 4.77052201;
774
+ data[24082] = 3.13160778;
775
+ data[24083] = 1.49269309;
776
+ data[24281] = 0.02932359;
777
+ data[24282] = 1.62918994;
778
+ data[24283] = 3.22905602;
779
+ data[24284] = 4.82892245;
780
+ data[24285] = 6.14671456;
781
+ data[24286] = 4.58496623;
782
+ data[24287] = 3.02321767;
783
+ data[24288] = 1.46146910;
784
+ data[24486] = 0.13601698;
785
+ data[24487] = 1.66055572;
786
+ data[24488] = 3.18509457;
787
+ data[24489] = 4.70963307;
788
+ data[24490] = 6.04072399;
789
+ data[24491] = 4.55250870;
790
+ data[24492] = 3.06429295;
791
+ data[24493] = 1.57607743;
792
+ data[24494] = 0.08786193;
793
+ data[24691] = 0.09328097;
794
+ data[24692] = 1.54603878;
795
+ data[24693] = 2.99879676;
796
+ data[24694] = 4.45155473;
797
+ data[24695] = 5.90431225;
798
+ data[24696] = 4.65566106;
799
+ data[24697] = 3.23751615;
800
+ data[24698] = 1.81937125;
801
+ data[24699] = 0.40122634;
802
+ data[24897] = 1.30262633;
803
+ data[24898] = 2.68698297;
804
+ data[24899] = 4.07133950;
805
+ data[24900] = 5.45569602;
806
+ data[24901] = 4.87832492;
807
+ data[24902] = 3.52695142;
808
+ data[24903] = 2.17557792;
809
+ data[24904] = 0.82420459;
810
+ data[25102] = 0.94595028;
811
+ data[25103] = 2.26512621;
812
+ data[25104] = 3.58430226;
813
+ data[25105] = 4.90347855;
814
+ data[25106] = 5.20569785;
815
+ data[25107] = 3.91795207;
816
+ data[25108] = 2.63020652;
817
+ data[25109] = 1.34246063;
818
+ data[25110] = 0.05471494;
819
+ data[25307] = 0.49037894;
820
+ data[25308] = 1.74744334;
821
+ data[25309] = 3.00450763;
822
+ data[25310] = 4.26157191;
823
+ data[25311] = 5.51863620;
824
+ data[25312] = 4.39707236;
825
+ data[25313] = 3.16995848;
826
+ data[25314] = 1.94284460;
827
+ data[25315] = 0.71573065;
828
+ data[25513] = 1.14698056;
829
+ data[25514] = 2.34485767;
830
+ data[25515] = 3.54273478;
831
+ data[25516] = 4.74061165;
832
+ data[25517] = 4.95198462;
833
+ data[25518] = 3.78264743;
834
+ data[25519] = 2.61331047;
835
+ data[25520] = 1.44397374;
836
+ data[25521] = 0.27463681;
837
+ data[25718] = 0.47569509;
838
+ data[25719] = 1.61717169;
839
+ data[25720] = 2.75864848;
840
+ data[25721] = 3.90012516;
841
+ data[25722] = 5.04160160;
842
+ data[25723] = 4.45712078;
843
+ data[25724] = 3.34284059;
844
+ data[25725] = 2.22856039;
845
+ data[25726] = 1.11428020;
846
+
847
+ for (auto & val : data) {
848
+ val /= 1000.0f;
849
+ }
850
+
851
+ filters.data = std::move(data);
852
+ return filters;
853
+ }
854
+
855
+ } // namespace whisper_precalc_filters