whisper.rn 0.4.0-rc.2 → 0.4.0-rc.4
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/android/src/main/CMakeLists.txt +2 -0
- package/android/src/main/java/com/rnwhisper/RNWhisper.java +6 -1
- package/android/src/main/java/com/rnwhisper/WhisperContext.java +29 -15
- package/android/src/main/jni.cpp +6 -2
- package/cpp/ggml-alloc.c +413 -280
- package/cpp/ggml-alloc.h +67 -8
- package/cpp/ggml-backend-impl.h +87 -0
- package/cpp/ggml-backend.c +950 -0
- package/cpp/ggml-backend.h +136 -0
- package/cpp/ggml-impl.h +243 -0
- package/cpp/{ggml-metal.metal → ggml-metal-whisper.metal} +591 -121
- package/cpp/ggml-metal.h +21 -0
- package/cpp/ggml-metal.m +623 -234
- package/cpp/ggml-quants.c +7377 -0
- package/cpp/ggml-quants.h +224 -0
- package/cpp/ggml.c +3773 -4455
- package/cpp/ggml.h +279 -146
- package/cpp/whisper.cpp +182 -103
- package/cpp/whisper.h +48 -11
- package/ios/RNWhisper.mm +8 -2
- package/ios/RNWhisperContext.h +6 -2
- package/ios/RNWhisperContext.mm +97 -26
- package/jest/mock.js +1 -1
- package/lib/commonjs/NativeRNWhisper.js.map +1 -1
- package/lib/commonjs/index.js +28 -9
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/NativeRNWhisper.js.map +1 -1
- package/lib/module/index.js +28 -9
- package/lib/module/index.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/NativeRNWhisper.d.ts +7 -1
- package/lib/typescript/NativeRNWhisper.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +8 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeRNWhisper.ts +8 -1
- package/src/index.ts +30 -18
- package/src/version.json +1 -1
- package/whisper-rn.podspec +1 -2
package/cpp/whisper.h
CHANGED
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
#include <stdint.h>
|
|
6
6
|
#include <stdbool.h>
|
|
7
7
|
|
|
8
|
+
#ifdef __GNUC__
|
|
9
|
+
# define WHISPER_DEPRECATED(func, hint) func __attribute__((deprecated(hint)))
|
|
10
|
+
#elif defined(_MSC_VER)
|
|
11
|
+
# define WHISPER_DEPRECATED(func, hint) __declspec(deprecated(hint)) func
|
|
12
|
+
#else
|
|
13
|
+
# define WHISPER_DEPRECATED(func, hint) func
|
|
14
|
+
#endif
|
|
15
|
+
|
|
8
16
|
#ifdef WHISPER_SHARED
|
|
9
17
|
# ifdef _WIN32
|
|
10
18
|
# ifdef WHISPER_BUILD
|
|
@@ -21,7 +29,6 @@
|
|
|
21
29
|
|
|
22
30
|
#define WHISPER_SAMPLE_RATE 16000
|
|
23
31
|
#define WHISPER_N_FFT 400
|
|
24
|
-
#define WHISPER_N_MEL 80
|
|
25
32
|
#define WHISPER_HOP_LENGTH 160
|
|
26
33
|
#define WHISPER_CHUNK_SIZE 30
|
|
27
34
|
|
|
@@ -71,6 +78,11 @@ extern "C" {
|
|
|
71
78
|
|
|
72
79
|
typedef int whisper_token;
|
|
73
80
|
|
|
81
|
+
struct whisper_context_params {
|
|
82
|
+
bool use_gpu;
|
|
83
|
+
bool use_coreml;
|
|
84
|
+
};
|
|
85
|
+
|
|
74
86
|
typedef struct whisper_token_data {
|
|
75
87
|
whisper_token id; // token id
|
|
76
88
|
whisper_token tid; // forced timestamp token id
|
|
@@ -99,18 +111,40 @@ extern "C" {
|
|
|
99
111
|
// Various functions for loading a ggml whisper model.
|
|
100
112
|
// Allocate (almost) all memory needed for the model.
|
|
101
113
|
// Return NULL on failure
|
|
102
|
-
|
|
103
|
-
WHISPER_API struct whisper_context *
|
|
104
|
-
|
|
105
|
-
WHISPER_API struct whisper_context * whisper_init_from_file(const char * path_model);
|
|
106
|
-
WHISPER_API struct whisper_context * whisper_init_from_buffer(void * buffer, size_t buffer_size);
|
|
107
|
-
WHISPER_API struct whisper_context * whisper_init(struct whisper_model_loader * loader);
|
|
114
|
+
WHISPER_API struct whisper_context * whisper_init_from_file_with_params(const char * path_model, struct whisper_context_params params);
|
|
115
|
+
WHISPER_API struct whisper_context * whisper_init_from_buffer_with_params(void * buffer, size_t buffer_size, struct whisper_context_params params);
|
|
116
|
+
WHISPER_API struct whisper_context * whisper_init_with_params(struct whisper_model_loader * loader, struct whisper_context_params params);
|
|
108
117
|
|
|
109
118
|
// These are the same as the above, but the internal state of the context is not allocated automatically
|
|
110
119
|
// It is the responsibility of the caller to allocate the state using whisper_init_state() (#523)
|
|
111
|
-
WHISPER_API struct whisper_context *
|
|
112
|
-
WHISPER_API struct whisper_context *
|
|
113
|
-
WHISPER_API struct whisper_context *
|
|
120
|
+
WHISPER_API struct whisper_context * whisper_init_from_file_with_params_no_state(const char * path_model, struct whisper_context_params params);
|
|
121
|
+
WHISPER_API struct whisper_context * whisper_init_from_buffer_with_params_no_state(void * buffer, size_t buffer_size, struct whisper_context_params params);
|
|
122
|
+
WHISPER_API struct whisper_context * whisper_init_with_params_no_state(struct whisper_model_loader * loader, struct whisper_context_params params);
|
|
123
|
+
|
|
124
|
+
WHISPER_DEPRECATED(
|
|
125
|
+
WHISPER_API struct whisper_context * whisper_init_from_file(const char * path_model),
|
|
126
|
+
"use whisper_init_from_file_with_params instead"
|
|
127
|
+
);
|
|
128
|
+
WHISPER_DEPRECATED(
|
|
129
|
+
WHISPER_API struct whisper_context * whisper_init_from_buffer(void * buffer, size_t buffer_size),
|
|
130
|
+
"use whisper_init_from_buffer_with_params instead"
|
|
131
|
+
);
|
|
132
|
+
WHISPER_DEPRECATED(
|
|
133
|
+
WHISPER_API struct whisper_context * whisper_init(struct whisper_model_loader * loader),
|
|
134
|
+
"use whisper_init_with_params instead"
|
|
135
|
+
);
|
|
136
|
+
WHISPER_DEPRECATED(
|
|
137
|
+
WHISPER_API struct whisper_context * whisper_init_from_file_no_state(const char * path_model),
|
|
138
|
+
"use whisper_init_from_file_with_params_no_state instead"
|
|
139
|
+
);
|
|
140
|
+
WHISPER_DEPRECATED(
|
|
141
|
+
WHISPER_API struct whisper_context * whisper_init_from_buffer_no_state(void * buffer, size_t buffer_size),
|
|
142
|
+
"use whisper_init_from_buffer_with_params_no_state instead"
|
|
143
|
+
);
|
|
144
|
+
WHISPER_DEPRECATED(
|
|
145
|
+
WHISPER_API struct whisper_context * whisper_init_no_state(struct whisper_model_loader * loader),
|
|
146
|
+
"use whisper_init_with_params_no_state instead"
|
|
147
|
+
);
|
|
114
148
|
|
|
115
149
|
WHISPER_API struct whisper_state * whisper_init_state(struct whisper_context * ctx);
|
|
116
150
|
|
|
@@ -135,6 +169,7 @@ extern "C" {
|
|
|
135
169
|
WHISPER_API void whisper_free (struct whisper_context * ctx);
|
|
136
170
|
WHISPER_API void whisper_free_state(struct whisper_state * state);
|
|
137
171
|
WHISPER_API void whisper_free_params(struct whisper_full_params * params);
|
|
172
|
+
WHISPER_API void whisper_free_context_params(struct whisper_context_params * params);
|
|
138
173
|
|
|
139
174
|
// Convert RAW PCM audio to log mel spectrogram.
|
|
140
175
|
// The resulting spectrogram is stored inside the default state of the provided whisper context.
|
|
@@ -445,7 +480,9 @@ extern "C" {
|
|
|
445
480
|
void * logits_filter_callback_user_data;
|
|
446
481
|
};
|
|
447
482
|
|
|
448
|
-
// NOTE: this function allocates memory, and it is the responsibility of the caller to free the pointer - see whisper_free_params()
|
|
483
|
+
// NOTE: this function allocates memory, and it is the responsibility of the caller to free the pointer - see whisper_free_context_params & whisper_free_params()
|
|
484
|
+
WHISPER_API struct whisper_context_params * whisper_context_default_params_by_ref();
|
|
485
|
+
WHISPER_API struct whisper_context_params whisper_context_default_params(void);
|
|
449
486
|
WHISPER_API struct whisper_full_params * whisper_full_default_params_by_ref(enum whisper_sampling_strategy strategy);
|
|
450
487
|
WHISPER_API struct whisper_full_params whisper_full_default_params(enum whisper_sampling_strategy strategy);
|
|
451
488
|
|
package/ios/RNWhisper.mm
CHANGED
|
@@ -48,6 +48,7 @@ RCT_REMAP_METHOD(initContext,
|
|
|
48
48
|
|
|
49
49
|
NSString *modelPath = [modelOptions objectForKey:@"filePath"];
|
|
50
50
|
BOOL isBundleAsset = [[modelOptions objectForKey:@"isBundleAsset"] boolValue];
|
|
51
|
+
BOOL useGpu = [[modelOptions objectForKey:@"useGpu"] boolValue];
|
|
51
52
|
BOOL useCoreMLIos = [[modelOptions objectForKey:@"useCoreMLIos"] boolValue];
|
|
52
53
|
|
|
53
54
|
// For support debug assets in development mode
|
|
@@ -77,6 +78,7 @@ RCT_REMAP_METHOD(initContext,
|
|
|
77
78
|
initWithModelPath:path
|
|
78
79
|
contextId:contextId
|
|
79
80
|
noCoreML:!useCoreMLIos
|
|
81
|
+
noMetal:!useGpu
|
|
80
82
|
];
|
|
81
83
|
if ([context getContext] == NULL) {
|
|
82
84
|
reject(@"whisper_cpp_error", @"Failed to load the model", nil);
|
|
@@ -85,7 +87,11 @@ RCT_REMAP_METHOD(initContext,
|
|
|
85
87
|
|
|
86
88
|
[contexts setObject:context forKey:[NSNumber numberWithInt:contextId]];
|
|
87
89
|
|
|
88
|
-
resolve(
|
|
90
|
+
resolve(@{
|
|
91
|
+
@"contextId": @(contextId),
|
|
92
|
+
@"gpu": @([context isMetalEnabled]),
|
|
93
|
+
@"reasonNoGPU": [context reasonNoMetal],
|
|
94
|
+
});
|
|
89
95
|
}
|
|
90
96
|
|
|
91
97
|
- (NSArray *)supportedEvents {
|
|
@@ -164,7 +170,7 @@ RCT_REMAP_METHOD(transcribeFile,
|
|
|
164
170
|
});
|
|
165
171
|
}
|
|
166
172
|
onEnd: ^(int code) {
|
|
167
|
-
if (code != 0) {
|
|
173
|
+
if (code != 0 && code != 999) {
|
|
168
174
|
free(waveFile);
|
|
169
175
|
reject(@"whisper_cpp_error", [NSString stringWithFormat:@"Failed to transcribe the file. Code: %d", code], nil);
|
|
170
176
|
return;
|
package/ios/RNWhisperContext.h
CHANGED
|
@@ -30,7 +30,7 @@ typedef struct {
|
|
|
30
30
|
NSString* audioOutputPath;
|
|
31
31
|
|
|
32
32
|
bool useVad;
|
|
33
|
-
int
|
|
33
|
+
int vadMs;
|
|
34
34
|
float vadThold;
|
|
35
35
|
float vadFreqThold;
|
|
36
36
|
|
|
@@ -46,9 +46,13 @@ typedef struct {
|
|
|
46
46
|
dispatch_queue_t dQueue;
|
|
47
47
|
struct whisper_context * ctx;
|
|
48
48
|
RNWhisperContextRecordState recordState;
|
|
49
|
+
NSString * reasonNoMetal;
|
|
50
|
+
bool isMetalEnabled;
|
|
49
51
|
}
|
|
50
52
|
|
|
51
|
-
+ (instancetype)initWithModelPath:(NSString *)modelPath contextId:(int)contextId noCoreML:(BOOL)noCoreML;
|
|
53
|
+
+ (instancetype)initWithModelPath:(NSString *)modelPath contextId:(int)contextId noCoreML:(BOOL)noCoreML noMetal:(BOOL)noMetal;
|
|
54
|
+
- (bool)isMetalEnabled;
|
|
55
|
+
- (NSString *)reasonNoMetal;
|
|
52
56
|
- (struct whisper_context *)getContext;
|
|
53
57
|
- (dispatch_queue_t)getDispatchQueue;
|
|
54
58
|
- (OSStatus)transcribeRealtime:(int)jobId
|
package/ios/RNWhisperContext.mm
CHANGED
|
@@ -1,30 +1,92 @@
|
|
|
1
1
|
#import "RNWhisperContext.h"
|
|
2
2
|
#import "RNWhisperAudioUtils.h"
|
|
3
|
+
#import <Metal/Metal.h>
|
|
3
4
|
#include <vector>
|
|
4
5
|
|
|
5
6
|
#define NUM_BYTES_PER_BUFFER 16 * 1024
|
|
6
7
|
|
|
7
8
|
@implementation RNWhisperContext
|
|
8
9
|
|
|
9
|
-
+ (instancetype)initWithModelPath:(NSString *)modelPath
|
|
10
|
+
+ (instancetype)initWithModelPath:(NSString *)modelPath
|
|
11
|
+
contextId:(int)contextId
|
|
12
|
+
noCoreML:(BOOL)noCoreML
|
|
13
|
+
noMetal:(BOOL)noMetal
|
|
14
|
+
{
|
|
10
15
|
RNWhisperContext *context = [[RNWhisperContext alloc] init];
|
|
11
16
|
context->contextId = contextId;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
struct whisper_context_params cparams;
|
|
18
|
+
NSString *reasonNoMetal = @"";
|
|
19
|
+
cparams.use_gpu = !noMetal;
|
|
20
|
+
|
|
21
|
+
cparams.use_coreml = !noCoreML;
|
|
22
|
+
#ifndef WHISPER_USE_COREML
|
|
23
|
+
if (cparams.use_coreml) {
|
|
24
|
+
NSLog(@"[RNWhisper] CoreML is not enabled in this build, ignoring use_coreml option");
|
|
25
|
+
cparams.use_coreml = false;
|
|
26
|
+
}
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
#ifndef WSP_GGML_USE_METAL
|
|
30
|
+
if (cparams.use_gpu) {
|
|
31
|
+
NSLog(@"[RNWhisper] ggml-metal is not enabled in this build, ignoring use_gpu option");
|
|
32
|
+
cparams.use_gpu = false;
|
|
17
33
|
}
|
|
18
|
-
#else
|
|
19
|
-
context->ctx = whisper_init_from_file([modelPath UTF8String]);
|
|
20
34
|
#endif
|
|
35
|
+
|
|
36
|
+
#ifdef WSP_GGML_USE_METAL
|
|
37
|
+
if (cparams.use_gpu) {
|
|
38
|
+
#if TARGET_OS_SIMULATOR
|
|
39
|
+
NSLog(@"[RNWhisper] ggml-metal is not available in simulator, ignoring use_gpu option: %@", reasonNoMetal);
|
|
40
|
+
cparams.use_gpu = false;
|
|
41
|
+
#else // TARGET_OS_SIMULATOR
|
|
42
|
+
// Check ggml-metal availability
|
|
43
|
+
NSError * error = nil;
|
|
44
|
+
id<MTLDevice> device = MTLCreateSystemDefaultDevice();
|
|
45
|
+
id<MTLLibrary> library = [device
|
|
46
|
+
newLibraryWithSource:@"#include <metal_stdlib>\n"
|
|
47
|
+
"using namespace metal;"
|
|
48
|
+
"kernel void test() { simd_sum(0); }"
|
|
49
|
+
options:nil
|
|
50
|
+
error:&error
|
|
51
|
+
];
|
|
52
|
+
if (error) {
|
|
53
|
+
reasonNoMetal = [error localizedDescription];
|
|
54
|
+
} else {
|
|
55
|
+
id<MTLFunction> kernel = [library newFunctionWithName:@"test"];
|
|
56
|
+
id<MTLComputePipelineState> pipeline = [device newComputePipelineStateWithFunction:kernel error:&error];
|
|
57
|
+
if (pipeline == nil) {
|
|
58
|
+
reasonNoMetal = [error localizedDescription];
|
|
59
|
+
NSLog(@"[RNWhisper] ggml-metal is not available, ignoring use_gpu option: %@", reasonNoMetal);
|
|
60
|
+
cparams.use_gpu = false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
#endif // TARGET_OS_SIMULATOR
|
|
64
|
+
}
|
|
65
|
+
#endif // WSP_GGML_USE_METAL
|
|
66
|
+
|
|
67
|
+
if (cparams.use_gpu && cparams.use_coreml) {
|
|
68
|
+
NSLog(@"[RNWhisper] Both use_gpu and use_coreml are enabled, ignoring use_coreml option");
|
|
69
|
+
cparams.use_coreml = false; // Skip CoreML if Metal is enabled
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
context->ctx = whisper_init_from_file_with_params([modelPath UTF8String], cparams);
|
|
21
73
|
context->dQueue = dispatch_queue_create(
|
|
22
74
|
[[NSString stringWithFormat:@"RNWhisperContext-%d", contextId] UTF8String],
|
|
23
75
|
DISPATCH_QUEUE_SERIAL
|
|
24
76
|
);
|
|
77
|
+
context->isMetalEnabled = cparams.use_gpu;
|
|
78
|
+
context->reasonNoMetal = reasonNoMetal;
|
|
25
79
|
return context;
|
|
26
80
|
}
|
|
27
81
|
|
|
82
|
+
- (bool)isMetalEnabled {
|
|
83
|
+
return isMetalEnabled;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
- (NSString *)reasonNoMetal {
|
|
87
|
+
return reasonNoMetal;
|
|
88
|
+
}
|
|
89
|
+
|
|
28
90
|
- (struct whisper_context *)getContext {
|
|
29
91
|
return self->ctx;
|
|
30
92
|
}
|
|
@@ -56,7 +118,9 @@
|
|
|
56
118
|
self->recordState.audioOutputPath = options[@"audioOutputPath"];
|
|
57
119
|
|
|
58
120
|
self->recordState.useVad = options[@"useVad"] != nil ? [options[@"useVad"] boolValue] : false;
|
|
59
|
-
self->recordState.
|
|
121
|
+
self->recordState.vadMs = options[@"vadMs"] != nil ? [options[@"vadMs"] intValue] : 2000;
|
|
122
|
+
if (self->recordState.vadMs < 2000) self->recordState.vadMs = 2000;
|
|
123
|
+
|
|
60
124
|
self->recordState.vadThold = options[@"vadThold"] != nil ? [options[@"vadThold"] floatValue] : 0.6f;
|
|
61
125
|
self->recordState.vadFreqThold = options[@"vadFreqThold"] != nil ? [options[@"vadFreqThold"] floatValue] : 100.0f;
|
|
62
126
|
|
|
@@ -98,7 +162,7 @@ bool vad(RNWhisperContextRecordState *state, int16_t* audioBufferI16, int nSampl
|
|
|
98
162
|
{
|
|
99
163
|
bool isSpeech = true;
|
|
100
164
|
if (!state->isTranscribing && state->useVad) {
|
|
101
|
-
int sampleSize = state->
|
|
165
|
+
int sampleSize = (int) (WHISPER_SAMPLE_RATE * state->vadMs / 1000);
|
|
102
166
|
if (nSamples + n > sampleSize) {
|
|
103
167
|
int start = nSamples + n - sampleSize;
|
|
104
168
|
std::vector<float> audioBufferF32Vec(sampleSize);
|
|
@@ -126,7 +190,7 @@ void AudioInputCallback(void * inUserData,
|
|
|
126
190
|
if (!state->isCapturing) {
|
|
127
191
|
NSLog(@"[RNWhisper] Not capturing, ignoring audio");
|
|
128
192
|
if (!state->isTranscribing) {
|
|
129
|
-
state->
|
|
193
|
+
[state->mSelf finishRealtimeTranscribe:state result:@{}];
|
|
130
194
|
}
|
|
131
195
|
return;
|
|
132
196
|
}
|
|
@@ -149,14 +213,14 @@ void AudioInputCallback(void * inUserData,
|
|
|
149
213
|
nSamples == state->nSamplesTranscribing &&
|
|
150
214
|
state->sliceIndex == state->transcribeSliceIndex
|
|
151
215
|
) {
|
|
152
|
-
state->
|
|
216
|
+
[state->mSelf finishRealtimeTranscribe:state result:@{}];
|
|
153
217
|
} else if (
|
|
154
218
|
!state->isTranscribing &&
|
|
155
219
|
nSamples != state->nSamplesTranscribing
|
|
156
220
|
) {
|
|
157
221
|
int16_t* audioBufferI16 = (int16_t*) [state->shortBufferSlices[state->sliceIndex] pointerValue];
|
|
158
222
|
if (!vad(state, audioBufferI16, nSamples, 0)) {
|
|
159
|
-
state->
|
|
223
|
+
[state->mSelf finishRealtimeTranscribe:state result:@{}];
|
|
160
224
|
return;
|
|
161
225
|
}
|
|
162
226
|
state->isTranscribing = true;
|
|
@@ -201,6 +265,19 @@ void AudioInputCallback(void * inUserData,
|
|
|
201
265
|
}
|
|
202
266
|
}
|
|
203
267
|
|
|
268
|
+
- (void)finishRealtimeTranscribe:(RNWhisperContextRecordState*) state result:(NSDictionary*)result {
|
|
269
|
+
// Save wav if needed
|
|
270
|
+
if (state->audioOutputPath != nil) {
|
|
271
|
+
// TODO: Append in real time so we don't need to keep all slices & also reduce memory usage
|
|
272
|
+
[RNWhisperAudioUtils
|
|
273
|
+
saveWavFile:[RNWhisperAudioUtils concatShortBuffers:state->shortBufferSlices
|
|
274
|
+
sliceNSamples:state->sliceNSamples]
|
|
275
|
+
audioOutputFile:state->audioOutputPath
|
|
276
|
+
];
|
|
277
|
+
}
|
|
278
|
+
state->transcribeHandler(state->jobId, @"end", result);
|
|
279
|
+
}
|
|
280
|
+
|
|
204
281
|
- (void)fullTranscribeSamples:(RNWhisperContextRecordState*) state {
|
|
205
282
|
int nSamplesOfIndex = [[state->sliceNSamples objectAtIndex:state->transcribeSliceIndex] intValue];
|
|
206
283
|
state->nSamplesTranscribing = nSamplesOfIndex;
|
|
@@ -260,17 +337,7 @@ void AudioInputCallback(void * inUserData,
|
|
|
260
337
|
result[@"isStoppedByAction"] = @(state->isStoppedByAction);
|
|
261
338
|
result[@"isCapturing"] = @(false);
|
|
262
339
|
|
|
263
|
-
|
|
264
|
-
if (state->audioOutputPath != nil) {
|
|
265
|
-
// TODO: Append in real time so we don't need to keep all slices & also reduce memory usage
|
|
266
|
-
[RNWhisperAudioUtils
|
|
267
|
-
saveWavFile:[RNWhisperAudioUtils concatShortBuffers:state->shortBufferSlices
|
|
268
|
-
sliceNSamples:state->sliceNSamples]
|
|
269
|
-
audioOutputFile:state->audioOutputPath
|
|
270
|
-
];
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
state->transcribeHandler(state->jobId, @"end", result);
|
|
340
|
+
[state->mSelf finishRealtimeTranscribe:state result:result];
|
|
274
341
|
} else if (code == 0) {
|
|
275
342
|
result[@"isCapturing"] = @(true);
|
|
276
343
|
state->transcribeHandler(state->jobId, @"transcribe", result);
|
|
@@ -489,16 +556,17 @@ struct rnwhisper_segments_callback_data {
|
|
|
489
556
|
}
|
|
490
557
|
|
|
491
558
|
// abort handler
|
|
559
|
+
bool *abort_ptr = rn_whisper_assign_abort_map(jobId);
|
|
492
560
|
params.encoder_begin_callback = [](struct whisper_context * /*ctx*/, struct whisper_state * /*state*/, void * user_data) {
|
|
493
561
|
bool is_aborted = *(bool*)user_data;
|
|
494
562
|
return !is_aborted;
|
|
495
563
|
};
|
|
496
|
-
params.encoder_begin_callback_user_data =
|
|
564
|
+
params.encoder_begin_callback_user_data = abort_ptr;
|
|
497
565
|
params.abort_callback = [](void * user_data) {
|
|
498
566
|
bool is_aborted = *(bool*)user_data;
|
|
499
567
|
return is_aborted;
|
|
500
568
|
};
|
|
501
|
-
params.abort_callback_user_data =
|
|
569
|
+
params.abort_callback_user_data = abort_ptr;
|
|
502
570
|
|
|
503
571
|
return params;
|
|
504
572
|
}
|
|
@@ -511,6 +579,9 @@ struct rnwhisper_segments_callback_data {
|
|
|
511
579
|
whisper_reset_timings(self->ctx);
|
|
512
580
|
|
|
513
581
|
int code = whisper_full(self->ctx, params, audioData, audioDataCount);
|
|
582
|
+
if (rn_whisper_transcribe_is_aborted(jobId)) {
|
|
583
|
+
code = -999;
|
|
584
|
+
}
|
|
514
585
|
rn_whisper_remove_abort_map(jobId);
|
|
515
586
|
// if (code == 0) {
|
|
516
587
|
// whisper_print_timings(self->ctx);
|
package/jest/mock.js
CHANGED
|
@@ -2,7 +2,7 @@ const { NativeModules, DeviceEventEmitter } = require('react-native')
|
|
|
2
2
|
|
|
3
3
|
if (!NativeModules.RNWhisper) {
|
|
4
4
|
NativeModules.RNWhisper = {
|
|
5
|
-
initContext: jest.fn(() => Promise.resolve(1)),
|
|
5
|
+
initContext: jest.fn(() => Promise.resolve({ contextId: 1 })),
|
|
6
6
|
transcribeFile: jest.fn(() => Promise.resolve({
|
|
7
7
|
result: ' Test',
|
|
8
8
|
segments: [{ text: ' Test', t0: 0, t1: 33 }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","get","exports","default"],"sourceRoot":"../../src","sources":["NativeRNWhisper.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAkD,IAAAC,QAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","get","exports","default"],"sourceRoot":"../../src","sources":["NativeRNWhisper.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAkD,IAAAC,QAAA,GAiGnCC,gCAAmB,CAACC,GAAG,CAAO,WAAW,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -39,8 +39,17 @@ const updateAudioSession = async setting => {
|
|
|
39
39
|
await _AudioSessionIos.default.setActive(setting.active ?? true);
|
|
40
40
|
};
|
|
41
41
|
class WhisperContext {
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
gpu = false;
|
|
43
|
+
reasonNoGPU = '';
|
|
44
|
+
constructor(_ref) {
|
|
45
|
+
let {
|
|
46
|
+
contextId,
|
|
47
|
+
gpu,
|
|
48
|
+
reasonNoGPU
|
|
49
|
+
} = _ref;
|
|
50
|
+
this.id = contextId;
|
|
51
|
+
this.gpu = gpu;
|
|
52
|
+
this.reasonNoGPU = reasonNoGPU;
|
|
44
53
|
}
|
|
45
54
|
|
|
46
55
|
/** Transcribe audio file */
|
|
@@ -135,7 +144,7 @@ class WhisperContext {
|
|
|
135
144
|
let sliceIndex = 0;
|
|
136
145
|
let tOffset = 0;
|
|
137
146
|
const putSlice = payload => {
|
|
138
|
-
if (!payload.isUseSlices) return;
|
|
147
|
+
if (!payload.isUseSlices || !payload.data) return;
|
|
139
148
|
if (sliceIndex !== payload.sliceIndex) {
|
|
140
149
|
var _slices$sliceIndex, _segments;
|
|
141
150
|
const {
|
|
@@ -149,14 +158,14 @@ class WhisperContext {
|
|
|
149
158
|
} = payload);
|
|
150
159
|
slices[sliceIndex] = {
|
|
151
160
|
...payload,
|
|
152
|
-
data:
|
|
161
|
+
data: {
|
|
153
162
|
...payload.data,
|
|
154
163
|
segments: payload.data.segments.map(segment => ({
|
|
155
164
|
...segment,
|
|
156
165
|
t0: segment.t0 + tOffset,
|
|
157
166
|
t1: segment.t1 + tOffset
|
|
158
167
|
})) || []
|
|
159
|
-
}
|
|
168
|
+
}
|
|
160
169
|
};
|
|
161
170
|
};
|
|
162
171
|
const mergeSlicesIfNeeded = payload => {
|
|
@@ -258,13 +267,14 @@ class WhisperContext {
|
|
|
258
267
|
}
|
|
259
268
|
exports.WhisperContext = WhisperContext;
|
|
260
269
|
const coreMLModelAssetPaths = ['analytics/coremldata.bin', 'weights/weight.bin', 'model.mil', 'coremldata.bin'];
|
|
261
|
-
async function initWhisper(
|
|
270
|
+
async function initWhisper(_ref2) {
|
|
262
271
|
let {
|
|
263
272
|
filePath,
|
|
264
273
|
coreMLModelAsset,
|
|
265
274
|
isBundleAsset,
|
|
275
|
+
useGpu = true,
|
|
266
276
|
useCoreMLIos = true
|
|
267
|
-
} =
|
|
277
|
+
} = _ref2;
|
|
268
278
|
let path = '';
|
|
269
279
|
let coreMLAssets;
|
|
270
280
|
if (coreMLModelAsset) {
|
|
@@ -309,15 +319,24 @@ async function initWhisper(_ref) {
|
|
|
309
319
|
path = filePath;
|
|
310
320
|
}
|
|
311
321
|
if (path.startsWith('file://')) path = path.slice(7);
|
|
312
|
-
const
|
|
322
|
+
const {
|
|
323
|
+
contextId,
|
|
324
|
+
gpu,
|
|
325
|
+
reasonNoGPU
|
|
326
|
+
} = await _NativeRNWhisper.default.initContext({
|
|
313
327
|
filePath: path,
|
|
314
328
|
isBundleAsset: !!isBundleAsset,
|
|
329
|
+
useGpu,
|
|
315
330
|
useCoreMLIos,
|
|
316
331
|
// Only development mode need download Core ML model assets (from packager server)
|
|
317
332
|
downloadCoreMLAssets: __DEV__ && !!coreMLAssets,
|
|
318
333
|
coreMLAssets
|
|
319
334
|
});
|
|
320
|
-
return new WhisperContext(
|
|
335
|
+
return new WhisperContext({
|
|
336
|
+
contextId,
|
|
337
|
+
gpu,
|
|
338
|
+
reasonNoGPU
|
|
339
|
+
});
|
|
321
340
|
}
|
|
322
341
|
async function releaseAllWhisper() {
|
|
323
342
|
return _NativeRNWhisper.default.releaseAllContexts();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_NativeRNWhisper","_interopRequireDefault","_AudioSessionIos","_version","_RNWhisper$getConstan","obj","__esModule","default","EventEmitter","Platform","OS","NativeEventEmitter","RNWhisper","DeviceEventEmitter","EVENT_ON_TRANSCRIBE_PROGRESS","EVENT_ON_TRANSCRIBE_NEW_SEGMENTS","EVENT_ON_REALTIME_TRANSCRIBE","EVENT_ON_REALTIME_TRANSCRIBE_END","updateAudioSession","setting","AudioSessionIos","setCategory","category","options","mode","setMode","setActive","active","WhisperContext","constructor","id","transcribe","filePath","arguments","length","undefined","path","source","Image","resolveAssetSource","uri","e","Error","startsWith","slice","jobId","Math","floor","random","onProgress","onNewSegments","rest","progressListener","lastProgress","addListener","evt","contextId","progress","removeProgressListener","remove","newSegmentsListener","result","removeNewSegmenetsListener","stop","abortTranscribe","promise","transcribeFile","then","isAborted","catch","transcribeRealtime","lastTranscribePayload","slices","sliceIndex","tOffset","putSlice","payload","isUseSlices","_slices$sliceIndex","_segments","segments","data","t1","map","segment","t0","mergeSlicesIfNeeded","mergedPayload","forEach","_mergedPayload$data","_slice$data","_mergedPayload$data2","_slice$data2","processTime","recordingTime","prevAudioSession","audioSessionOnStartIos","audioSessionOnStopIos","categoryResult","getCurrentCategory","getCurrentMode","startRealtimeTranscribe","subscribe","callback","transcribeListener","endListener","lastPayload","isCapturing","release","releaseContext","exports","coreMLModelAssetPaths","initWhisper","_ref","coreMLModelAsset","isBundleAsset","useCoreMLIos","coreMLAssets","filename","assets","asset","filepath","find","p","includes","filter","initContext","downloadCoreMLAssets","__DEV__","releaseAllWhisper","releaseAllContexts","libVersion","version","useCoreML","coreMLAllowFallback","getConstants","call","isUseCoreML","isCoreMLAllowFallback"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_NativeRNWhisper","_interopRequireDefault","_AudioSessionIos","_version","_RNWhisper$getConstan","obj","__esModule","default","EventEmitter","Platform","OS","NativeEventEmitter","RNWhisper","DeviceEventEmitter","EVENT_ON_TRANSCRIBE_PROGRESS","EVENT_ON_TRANSCRIBE_NEW_SEGMENTS","EVENT_ON_REALTIME_TRANSCRIBE","EVENT_ON_REALTIME_TRANSCRIBE_END","updateAudioSession","setting","AudioSessionIos","setCategory","category","options","mode","setMode","setActive","active","WhisperContext","gpu","reasonNoGPU","constructor","_ref","contextId","id","transcribe","filePath","arguments","length","undefined","path","source","Image","resolveAssetSource","uri","e","Error","startsWith","slice","jobId","Math","floor","random","onProgress","onNewSegments","rest","progressListener","lastProgress","addListener","evt","progress","removeProgressListener","remove","newSegmentsListener","result","removeNewSegmenetsListener","stop","abortTranscribe","promise","transcribeFile","then","isAborted","catch","transcribeRealtime","lastTranscribePayload","slices","sliceIndex","tOffset","putSlice","payload","isUseSlices","data","_slices$sliceIndex","_segments","segments","t1","map","segment","t0","mergeSlicesIfNeeded","mergedPayload","forEach","_mergedPayload$data","_slice$data","_mergedPayload$data2","_slice$data2","processTime","recordingTime","prevAudioSession","audioSessionOnStartIos","audioSessionOnStopIos","categoryResult","getCurrentCategory","getCurrentMode","startRealtimeTranscribe","subscribe","callback","transcribeListener","endListener","lastPayload","isCapturing","release","releaseContext","exports","coreMLModelAssetPaths","initWhisper","_ref2","coreMLModelAsset","isBundleAsset","useGpu","useCoreMLIos","coreMLAssets","filename","assets","asset","filepath","find","p","includes","filter","initContext","downloadCoreMLAssets","__DEV__","releaseAllWhisper","releaseAllContexts","libVersion","version","useCoreML","coreMLAllowFallback","getConstants","call","isUseCoreML","isCoreMLAllowFallback"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"1.4.
|
|
1
|
+
{"version":"1.4.3"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeRNWhisper.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeRNWhisper.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;;AA+FA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,WAAW,CAAC"}
|
package/lib/module/index.js
CHANGED
|
@@ -23,8 +23,17 @@ const updateAudioSession = async setting => {
|
|
|
23
23
|
await AudioSessionIos.setActive(setting.active ?? true);
|
|
24
24
|
};
|
|
25
25
|
export class WhisperContext {
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
gpu = false;
|
|
27
|
+
reasonNoGPU = '';
|
|
28
|
+
constructor(_ref) {
|
|
29
|
+
let {
|
|
30
|
+
contextId,
|
|
31
|
+
gpu,
|
|
32
|
+
reasonNoGPU
|
|
33
|
+
} = _ref;
|
|
34
|
+
this.id = contextId;
|
|
35
|
+
this.gpu = gpu;
|
|
36
|
+
this.reasonNoGPU = reasonNoGPU;
|
|
28
37
|
}
|
|
29
38
|
|
|
30
39
|
/** Transcribe audio file */
|
|
@@ -119,7 +128,7 @@ export class WhisperContext {
|
|
|
119
128
|
let sliceIndex = 0;
|
|
120
129
|
let tOffset = 0;
|
|
121
130
|
const putSlice = payload => {
|
|
122
|
-
if (!payload.isUseSlices) return;
|
|
131
|
+
if (!payload.isUseSlices || !payload.data) return;
|
|
123
132
|
if (sliceIndex !== payload.sliceIndex) {
|
|
124
133
|
var _slices$sliceIndex, _segments;
|
|
125
134
|
const {
|
|
@@ -133,14 +142,14 @@ export class WhisperContext {
|
|
|
133
142
|
} = payload);
|
|
134
143
|
slices[sliceIndex] = {
|
|
135
144
|
...payload,
|
|
136
|
-
data:
|
|
145
|
+
data: {
|
|
137
146
|
...payload.data,
|
|
138
147
|
segments: payload.data.segments.map(segment => ({
|
|
139
148
|
...segment,
|
|
140
149
|
t0: segment.t0 + tOffset,
|
|
141
150
|
t1: segment.t1 + tOffset
|
|
142
151
|
})) || []
|
|
143
|
-
}
|
|
152
|
+
}
|
|
144
153
|
};
|
|
145
154
|
};
|
|
146
155
|
const mergeSlicesIfNeeded = payload => {
|
|
@@ -241,13 +250,14 @@ export class WhisperContext {
|
|
|
241
250
|
}
|
|
242
251
|
}
|
|
243
252
|
const coreMLModelAssetPaths = ['analytics/coremldata.bin', 'weights/weight.bin', 'model.mil', 'coremldata.bin'];
|
|
244
|
-
export async function initWhisper(
|
|
253
|
+
export async function initWhisper(_ref2) {
|
|
245
254
|
let {
|
|
246
255
|
filePath,
|
|
247
256
|
coreMLModelAsset,
|
|
248
257
|
isBundleAsset,
|
|
258
|
+
useGpu = true,
|
|
249
259
|
useCoreMLIos = true
|
|
250
|
-
} =
|
|
260
|
+
} = _ref2;
|
|
251
261
|
let path = '';
|
|
252
262
|
let coreMLAssets;
|
|
253
263
|
if (coreMLModelAsset) {
|
|
@@ -292,15 +302,24 @@ export async function initWhisper(_ref) {
|
|
|
292
302
|
path = filePath;
|
|
293
303
|
}
|
|
294
304
|
if (path.startsWith('file://')) path = path.slice(7);
|
|
295
|
-
const
|
|
305
|
+
const {
|
|
306
|
+
contextId,
|
|
307
|
+
gpu,
|
|
308
|
+
reasonNoGPU
|
|
309
|
+
} = await RNWhisper.initContext({
|
|
296
310
|
filePath: path,
|
|
297
311
|
isBundleAsset: !!isBundleAsset,
|
|
312
|
+
useGpu,
|
|
298
313
|
useCoreMLIos,
|
|
299
314
|
// Only development mode need download Core ML model assets (from packager server)
|
|
300
315
|
downloadCoreMLAssets: __DEV__ && !!coreMLAssets,
|
|
301
316
|
coreMLAssets
|
|
302
317
|
});
|
|
303
|
-
return new WhisperContext(
|
|
318
|
+
return new WhisperContext({
|
|
319
|
+
contextId,
|
|
320
|
+
gpu,
|
|
321
|
+
reasonNoGPU
|
|
322
|
+
});
|
|
304
323
|
}
|
|
305
324
|
export async function releaseAllWhisper() {
|
|
306
325
|
return RNWhisper.releaseAllContexts();
|