whisper.rn 0.4.0-rc.4 → 0.4.0-rc.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.
- package/README.md +6 -6
- package/android/build.gradle +4 -0
- package/android/src/main/CMakeLists.txt +5 -0
- package/android/src/main/java/com/rnwhisper/AudioUtils.java +0 -80
- package/android/src/main/java/com/rnwhisper/WhisperContext.java +51 -133
- package/android/src/main/jni-utils.h +76 -0
- package/android/src/main/jni.cpp +187 -112
- package/cpp/README.md +1 -1
- package/cpp/coreml/whisper-encoder-impl.h +1 -1
- package/cpp/coreml/whisper-encoder.h +4 -0
- package/cpp/coreml/whisper-encoder.mm +4 -2
- package/cpp/ggml-alloc.c +55 -19
- package/cpp/ggml-alloc.h +7 -0
- package/cpp/ggml-backend-impl.h +46 -21
- package/cpp/ggml-backend.c +563 -156
- package/cpp/ggml-backend.h +62 -17
- package/cpp/ggml-impl.h +1 -1
- package/cpp/ggml-metal-whisper.metal +1010 -253
- package/cpp/ggml-metal.h +7 -1
- package/cpp/ggml-metal.m +618 -187
- package/cpp/ggml-quants.c +64 -59
- package/cpp/ggml-quants.h +40 -40
- package/cpp/ggml.c +751 -1466
- package/cpp/ggml.h +90 -25
- package/cpp/rn-audioutils.cpp +68 -0
- package/cpp/rn-audioutils.h +14 -0
- package/cpp/rn-whisper-log.h +11 -0
- package/cpp/rn-whisper.cpp +141 -59
- package/cpp/rn-whisper.h +47 -15
- package/cpp/whisper.cpp +1635 -928
- package/cpp/whisper.h +55 -10
- package/ios/RNWhisper.mm +7 -7
- package/ios/RNWhisperAudioUtils.h +0 -2
- package/ios/RNWhisperAudioUtils.m +0 -56
- package/ios/RNWhisperContext.h +3 -11
- package/ios/RNWhisperContext.mm +62 -134
- package/lib/commonjs/version.json +1 -1
- package/lib/module/version.json +1 -1
- package/package.json +6 -5
- package/src/version.json +1 -1
package/cpp/ggml-backend.h
CHANGED
|
@@ -7,41 +7,44 @@
|
|
|
7
7
|
extern "C" {
|
|
8
8
|
#endif
|
|
9
9
|
|
|
10
|
+
typedef struct wsp_ggml_backend_buffer_type * wsp_ggml_backend_buffer_type_t;
|
|
11
|
+
typedef struct wsp_ggml_backend_buffer * wsp_ggml_backend_buffer_t;
|
|
12
|
+
typedef struct wsp_ggml_backend * wsp_ggml_backend_t;
|
|
13
|
+
typedef void * wsp_ggml_backend_graph_plan_t;
|
|
14
|
+
|
|
10
15
|
//
|
|
11
16
|
// Backend buffer
|
|
12
17
|
//
|
|
13
18
|
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
// buffer type
|
|
20
|
+
WSP_GGML_API wsp_ggml_backend_buffer_t wsp_ggml_backend_buft_alloc_buffer(wsp_ggml_backend_buffer_type_t buft, size_t size);
|
|
21
|
+
WSP_GGML_API size_t wsp_ggml_backend_buft_get_alignment (wsp_ggml_backend_buffer_type_t buft);
|
|
22
|
+
WSP_GGML_API size_t wsp_ggml_backend_buft_get_alloc_size(wsp_ggml_backend_buffer_type_t buft, struct wsp_ggml_tensor * tensor);
|
|
23
|
+
WSP_GGML_API bool wsp_ggml_backend_buft_supports_backend(wsp_ggml_backend_buffer_type_t buft, wsp_ggml_backend_t backend);
|
|
16
24
|
|
|
17
|
-
//
|
|
25
|
+
// buffer
|
|
18
26
|
WSP_GGML_API void wsp_ggml_backend_buffer_free (wsp_ggml_backend_buffer_t buffer);
|
|
19
|
-
WSP_GGML_API size_t wsp_ggml_backend_buffer_get_alignment (wsp_ggml_backend_buffer_t buffer);
|
|
20
27
|
WSP_GGML_API void * wsp_ggml_backend_buffer_get_base (wsp_ggml_backend_buffer_t buffer);
|
|
21
28
|
WSP_GGML_API size_t wsp_ggml_backend_buffer_get_size (wsp_ggml_backend_buffer_t buffer);
|
|
22
|
-
WSP_GGML_API size_t wsp_ggml_backend_buffer_get_alloc_size(wsp_ggml_backend_buffer_t buffer, struct wsp_ggml_tensor * tensor);
|
|
23
29
|
WSP_GGML_API void wsp_ggml_backend_buffer_init_tensor (wsp_ggml_backend_buffer_t buffer, struct wsp_ggml_tensor * tensor);
|
|
24
|
-
WSP_GGML_API
|
|
30
|
+
WSP_GGML_API size_t wsp_ggml_backend_buffer_get_alignment (wsp_ggml_backend_buffer_t buffer);
|
|
31
|
+
WSP_GGML_API size_t wsp_ggml_backend_buffer_get_alloc_size(wsp_ggml_backend_buffer_t buffer, struct wsp_ggml_tensor * tensor);
|
|
32
|
+
WSP_GGML_API wsp_ggml_backend_buffer_type_t wsp_ggml_backend_buffer_type(wsp_ggml_backend_buffer_t buffer);
|
|
25
33
|
|
|
26
34
|
//
|
|
27
35
|
// Backend
|
|
28
36
|
//
|
|
29
37
|
|
|
30
|
-
struct wsp_ggml_backend;
|
|
31
|
-
typedef struct wsp_ggml_backend * wsp_ggml_backend_t;
|
|
32
|
-
typedef void * wsp_ggml_backend_graph_plan_t;
|
|
33
|
-
|
|
34
|
-
WSP_GGML_API wsp_ggml_backend_t wsp_ggml_get_backend(const struct wsp_ggml_tensor * tensor);
|
|
35
38
|
|
|
36
39
|
WSP_GGML_API const char * wsp_ggml_backend_name(wsp_ggml_backend_t backend);
|
|
37
40
|
WSP_GGML_API void wsp_ggml_backend_free(wsp_ggml_backend_t backend);
|
|
38
41
|
|
|
39
|
-
WSP_GGML_API
|
|
40
|
-
|
|
41
|
-
WSP_GGML_API size_t
|
|
42
|
+
WSP_GGML_API wsp_ggml_backend_buffer_type_t wsp_ggml_backend_get_default_buffer_type(wsp_ggml_backend_t backend);
|
|
43
|
+
WSP_GGML_API wsp_ggml_backend_buffer_t wsp_ggml_backend_alloc_buffer(wsp_ggml_backend_t backend, size_t size);
|
|
44
|
+
WSP_GGML_API size_t wsp_ggml_backend_get_alignment(wsp_ggml_backend_t backend);
|
|
42
45
|
|
|
43
|
-
WSP_GGML_API void wsp_ggml_backend_tensor_set_async(
|
|
44
|
-
WSP_GGML_API void wsp_ggml_backend_tensor_get_async(const struct wsp_ggml_tensor * tensor, void * data, size_t offset, size_t size);
|
|
46
|
+
WSP_GGML_API void wsp_ggml_backend_tensor_set_async(wsp_ggml_backend_t backend, struct wsp_ggml_tensor * tensor, const void * data, size_t offset, size_t size);
|
|
47
|
+
WSP_GGML_API void wsp_ggml_backend_tensor_get_async(wsp_ggml_backend_t backend, const struct wsp_ggml_tensor * tensor, void * data, size_t offset, size_t size);
|
|
45
48
|
|
|
46
49
|
WSP_GGML_API void wsp_ggml_backend_tensor_set( struct wsp_ggml_tensor * tensor, const void * data, size_t offset, size_t size);
|
|
47
50
|
WSP_GGML_API void wsp_ggml_backend_tensor_get(const struct wsp_ggml_tensor * tensor, void * data, size_t offset, size_t size);
|
|
@@ -57,6 +60,7 @@ extern "C" {
|
|
|
57
60
|
|
|
58
61
|
// tensor copy between different backends
|
|
59
62
|
WSP_GGML_API void wsp_ggml_backend_tensor_copy(struct wsp_ggml_tensor * src, struct wsp_ggml_tensor * dst);
|
|
63
|
+
WSP_GGML_API void wsp_ggml_backend_tensor_copy_async(wsp_ggml_backend_t backend, struct wsp_ggml_tensor * src, struct wsp_ggml_tensor * dst); // automatic fallback to sync copy
|
|
60
64
|
|
|
61
65
|
//
|
|
62
66
|
// CPU backend
|
|
@@ -68,8 +72,23 @@ extern "C" {
|
|
|
68
72
|
WSP_GGML_API void wsp_ggml_backend_cpu_set_n_threads(wsp_ggml_backend_t backend_cpu, int n_threads);
|
|
69
73
|
|
|
70
74
|
// Create a backend buffer from an existing pointer
|
|
71
|
-
WSP_GGML_API wsp_ggml_backend_buffer_t wsp_ggml_backend_cpu_buffer_from_ptr(
|
|
75
|
+
WSP_GGML_API wsp_ggml_backend_buffer_t wsp_ggml_backend_cpu_buffer_from_ptr(void * ptr, size_t size);
|
|
76
|
+
|
|
77
|
+
WSP_GGML_API wsp_ggml_backend_buffer_type_t wsp_ggml_backend_cpu_buffer_type(void);
|
|
72
78
|
|
|
79
|
+
//
|
|
80
|
+
// Backend registry
|
|
81
|
+
//
|
|
82
|
+
|
|
83
|
+
// The backend registry is a registry of all the available backends, and allows initializing backends in a generic way
|
|
84
|
+
|
|
85
|
+
WSP_GGML_API size_t wsp_ggml_backend_reg_get_count(void);
|
|
86
|
+
WSP_GGML_API size_t wsp_ggml_backend_reg_find_by_name(const char * name);
|
|
87
|
+
WSP_GGML_API wsp_ggml_backend_t wsp_ggml_backend_reg_init_backend_from_str(const char * backend_str); // str is name[:params]
|
|
88
|
+
WSP_GGML_API const char * wsp_ggml_backend_reg_get_name(size_t i);
|
|
89
|
+
WSP_GGML_API wsp_ggml_backend_t wsp_ggml_backend_reg_init_backend(size_t i, const char * params); // params is backend-specific
|
|
90
|
+
WSP_GGML_API wsp_ggml_backend_buffer_type_t wsp_ggml_backend_reg_get_default_buffer_type(size_t i);
|
|
91
|
+
WSP_GGML_API wsp_ggml_backend_buffer_t wsp_ggml_backend_reg_alloc_buffer(size_t i, size_t size);
|
|
73
92
|
|
|
74
93
|
//
|
|
75
94
|
// Backend scheduler
|
|
@@ -131,6 +150,32 @@ extern "C" {
|
|
|
131
150
|
wsp_ggml_backend_sched_t sched,
|
|
132
151
|
struct wsp_ggml_cgraph * graph);
|
|
133
152
|
|
|
153
|
+
|
|
154
|
+
//
|
|
155
|
+
// Utils
|
|
156
|
+
//
|
|
157
|
+
|
|
158
|
+
struct wsp_ggml_backend_graph_copy {
|
|
159
|
+
wsp_ggml_backend_buffer_t buffer;
|
|
160
|
+
struct wsp_ggml_context * ctx_allocated;
|
|
161
|
+
struct wsp_ggml_context * ctx_unallocated;
|
|
162
|
+
struct wsp_ggml_cgraph * graph;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// Copy a graph to a different backend
|
|
166
|
+
WSP_GGML_API struct wsp_ggml_backend_graph_copy wsp_ggml_backend_graph_copy(wsp_ggml_backend_t backend, struct wsp_ggml_cgraph * graph);
|
|
167
|
+
WSP_GGML_API void wsp_ggml_backend_graph_copy_free(struct wsp_ggml_backend_graph_copy copy);
|
|
168
|
+
|
|
169
|
+
typedef bool (*wsp_ggml_backend_eval_callback)(int node_index, struct wsp_ggml_tensor * t1, struct wsp_ggml_tensor * t2, void * user_data);
|
|
170
|
+
|
|
171
|
+
// Compare the output of two backends
|
|
172
|
+
WSP_GGML_API void wsp_ggml_backend_compare_graph_backend(wsp_ggml_backend_t backend1, wsp_ggml_backend_t backend2, struct wsp_ggml_cgraph * graph, wsp_ggml_backend_eval_callback callback, void * user_data);
|
|
173
|
+
|
|
174
|
+
// Tensor initialization
|
|
175
|
+
WSP_GGML_API void wsp_ggml_backend_tensor_alloc(wsp_ggml_backend_buffer_t buffer, struct wsp_ggml_tensor * tensor, void * addr);
|
|
176
|
+
WSP_GGML_API void wsp_ggml_backend_view_init(wsp_ggml_backend_buffer_t buffer, struct wsp_ggml_tensor * tensor);
|
|
177
|
+
|
|
178
|
+
|
|
134
179
|
#ifdef __cplusplus
|
|
135
180
|
}
|
|
136
181
|
#endif
|
package/cpp/ggml-impl.h
CHANGED
|
@@ -232,7 +232,7 @@ bool wsp_ggml_hash_contains (const struct wsp_ggml_hash_set hash_set, str
|
|
|
232
232
|
// returns WSP_GGML_HASHTABLE_FULL if table is full, otherwise the current index of the key or where it should be inserted
|
|
233
233
|
size_t wsp_ggml_hash_find (const struct wsp_ggml_hash_set hash_set, struct wsp_ggml_tensor * key);
|
|
234
234
|
|
|
235
|
-
// returns
|
|
235
|
+
// returns WSP_GGML_HASHTABLE_ALREADY_EXISTS if key already exists, index otherwise, asserts if table is full
|
|
236
236
|
size_t wsp_ggml_hash_insert ( struct wsp_ggml_hash_set hash_set, struct wsp_ggml_tensor * key);
|
|
237
237
|
|
|
238
238
|
// return index, asserts if table is full
|