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.
Files changed (40) hide show
  1. package/android/src/main/CMakeLists.txt +2 -0
  2. package/android/src/main/java/com/rnwhisper/RNWhisper.java +6 -1
  3. package/android/src/main/java/com/rnwhisper/WhisperContext.java +29 -15
  4. package/android/src/main/jni.cpp +6 -2
  5. package/cpp/ggml-alloc.c +413 -280
  6. package/cpp/ggml-alloc.h +67 -8
  7. package/cpp/ggml-backend-impl.h +87 -0
  8. package/cpp/ggml-backend.c +950 -0
  9. package/cpp/ggml-backend.h +136 -0
  10. package/cpp/ggml-impl.h +243 -0
  11. package/cpp/{ggml-metal.metal → ggml-metal-whisper.metal} +591 -121
  12. package/cpp/ggml-metal.h +21 -0
  13. package/cpp/ggml-metal.m +623 -234
  14. package/cpp/ggml-quants.c +7377 -0
  15. package/cpp/ggml-quants.h +224 -0
  16. package/cpp/ggml.c +3773 -4455
  17. package/cpp/ggml.h +279 -146
  18. package/cpp/whisper.cpp +182 -103
  19. package/cpp/whisper.h +48 -11
  20. package/ios/RNWhisper.mm +8 -2
  21. package/ios/RNWhisperContext.h +6 -2
  22. package/ios/RNWhisperContext.mm +97 -26
  23. package/jest/mock.js +1 -1
  24. package/lib/commonjs/NativeRNWhisper.js.map +1 -1
  25. package/lib/commonjs/index.js +28 -9
  26. package/lib/commonjs/index.js.map +1 -1
  27. package/lib/commonjs/version.json +1 -1
  28. package/lib/module/NativeRNWhisper.js.map +1 -1
  29. package/lib/module/index.js +28 -9
  30. package/lib/module/index.js.map +1 -1
  31. package/lib/module/version.json +1 -1
  32. package/lib/typescript/NativeRNWhisper.d.ts +7 -1
  33. package/lib/typescript/NativeRNWhisper.d.ts.map +1 -1
  34. package/lib/typescript/index.d.ts +8 -3
  35. package/lib/typescript/index.d.ts.map +1 -1
  36. package/package.json +1 -1
  37. package/src/NativeRNWhisper.ts +8 -1
  38. package/src/index.ts +30 -18
  39. package/src/version.json +1 -1
  40. 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
- #ifdef WHISPER_USE_COREML
103
- WHISPER_API struct whisper_context * whisper_init_from_file_no_coreml(const char * path_model);
104
- #endif
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 * whisper_init_from_file_no_state(const char * path_model);
112
- WHISPER_API struct whisper_context * whisper_init_from_buffer_no_state(void * buffer, size_t buffer_size);
113
- WHISPER_API struct whisper_context * whisper_init_no_state(struct whisper_model_loader * loader);
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([NSNumber numberWithInt:contextId]);
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;
@@ -30,7 +30,7 @@ typedef struct {
30
30
  NSString* audioOutputPath;
31
31
 
32
32
  bool useVad;
33
- int vadSec;
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
@@ -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 contextId:(int)contextId noCoreML:(BOOL)noCoreML {
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
- #ifdef WHISPER_USE_COREML
13
- if (noCoreML) {
14
- context->ctx = whisper_init_from_file_no_coreml([modelPath UTF8String]);
15
- } else {
16
- context->ctx = whisper_init_from_file([modelPath UTF8String]);
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.vadSec = options[@"vadMs"] != nil ? [options[@"vadMs"] intValue] / 1000 : 2;
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->vadSec * WHISPER_SAMPLE_RATE;
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->transcribeHandler(state->jobId, @"end", @{});
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->transcribeHandler(state->jobId, @"end", @{});
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->transcribeHandler(state->jobId, @"end", @{});
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
- // Save wav if needed
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 = rn_whisper_assign_abort_map(jobId);
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 = rn_whisper_assign_abort_map(jobId);
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,GA0FnCC,gCAAmB,CAACC,GAAG,CAAO,WAAW,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,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"}
@@ -39,8 +39,17 @@ const updateAudioSession = async setting => {
39
39
  await _AudioSessionIos.default.setActive(setting.active ?? true);
40
40
  };
41
41
  class WhisperContext {
42
- constructor(id) {
43
- this.id = id;
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: payload.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
- } : undefined
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(_ref) {
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
- } = _ref;
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 id = await _NativeRNWhisper.default.initContext({
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(id);
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.2"}
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;;AAwFA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,WAAW,CAAC"}
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"}
@@ -23,8 +23,17 @@ const updateAudioSession = async setting => {
23
23
  await AudioSessionIos.setActive(setting.active ?? true);
24
24
  };
25
25
  export class WhisperContext {
26
- constructor(id) {
27
- this.id = id;
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: payload.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
- } : undefined
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(_ref) {
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
- } = _ref;
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 id = await RNWhisper.initContext({
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(id);
318
+ return new WhisperContext({
319
+ contextId,
320
+ gpu,
321
+ reasonNoGPU
322
+ });
304
323
  }
305
324
  export async function releaseAllWhisper() {
306
325
  return RNWhisper.releaseAllContexts();