whisper.rn 0.4.0-rc.3 → 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.
Files changed (59) hide show
  1. package/README.md +6 -6
  2. package/android/build.gradle +4 -0
  3. package/android/src/main/CMakeLists.txt +7 -0
  4. package/android/src/main/java/com/rnwhisper/AudioUtils.java +0 -80
  5. package/android/src/main/java/com/rnwhisper/RNWhisper.java +6 -1
  6. package/android/src/main/java/com/rnwhisper/WhisperContext.java +53 -135
  7. package/android/src/main/jni-utils.h +76 -0
  8. package/android/src/main/jni.cpp +188 -109
  9. package/cpp/README.md +1 -1
  10. package/cpp/coreml/whisper-encoder-impl.h +1 -1
  11. package/cpp/coreml/whisper-encoder.h +4 -0
  12. package/cpp/coreml/whisper-encoder.mm +4 -2
  13. package/cpp/ggml-alloc.c +451 -282
  14. package/cpp/ggml-alloc.h +74 -8
  15. package/cpp/ggml-backend-impl.h +112 -0
  16. package/cpp/ggml-backend.c +1357 -0
  17. package/cpp/ggml-backend.h +181 -0
  18. package/cpp/ggml-impl.h +243 -0
  19. package/cpp/{ggml-metal.metal → ggml-metal-whisper.metal} +1556 -329
  20. package/cpp/ggml-metal.h +28 -1
  21. package/cpp/ggml-metal.m +1128 -308
  22. package/cpp/ggml-quants.c +7382 -0
  23. package/cpp/ggml-quants.h +224 -0
  24. package/cpp/ggml.c +3848 -5245
  25. package/cpp/ggml.h +353 -155
  26. package/cpp/rn-audioutils.cpp +68 -0
  27. package/cpp/rn-audioutils.h +14 -0
  28. package/cpp/rn-whisper-log.h +11 -0
  29. package/cpp/rn-whisper.cpp +141 -59
  30. package/cpp/rn-whisper.h +47 -15
  31. package/cpp/whisper.cpp +1750 -964
  32. package/cpp/whisper.h +97 -15
  33. package/ios/RNWhisper.mm +15 -9
  34. package/ios/RNWhisper.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  35. package/ios/RNWhisper.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  36. package/ios/RNWhisper.xcodeproj/project.xcworkspace/xcuserdata/jhen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  37. package/ios/RNWhisper.xcodeproj/xcuserdata/jhen.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  38. package/ios/RNWhisperAudioUtils.h +0 -2
  39. package/ios/RNWhisperAudioUtils.m +0 -56
  40. package/ios/RNWhisperContext.h +8 -12
  41. package/ios/RNWhisperContext.mm +132 -138
  42. package/jest/mock.js +1 -1
  43. package/lib/commonjs/NativeRNWhisper.js.map +1 -1
  44. package/lib/commonjs/index.js +28 -9
  45. package/lib/commonjs/index.js.map +1 -1
  46. package/lib/commonjs/version.json +1 -1
  47. package/lib/module/NativeRNWhisper.js.map +1 -1
  48. package/lib/module/index.js +28 -9
  49. package/lib/module/index.js.map +1 -1
  50. package/lib/module/version.json +1 -1
  51. package/lib/typescript/NativeRNWhisper.d.ts +7 -1
  52. package/lib/typescript/NativeRNWhisper.d.ts.map +1 -1
  53. package/lib/typescript/index.d.ts +7 -2
  54. package/lib/typescript/index.d.ts.map +1 -1
  55. package/package.json +6 -5
  56. package/src/NativeRNWhisper.ts +8 -1
  57. package/src/index.ts +29 -17
  58. package/src/version.json +1 -1
  59. package/whisper-rn.podspec +1 -2
@@ -1,30 +1,91 @@
1
1
  #import "RNWhisperContext.h"
2
- #import "RNWhisperAudioUtils.h"
2
+ #import <Metal/Metal.h>
3
3
  #include <vector>
4
4
 
5
5
  #define NUM_BYTES_PER_BUFFER 16 * 1024
6
6
 
7
7
  @implementation RNWhisperContext
8
8
 
9
- + (instancetype)initWithModelPath:(NSString *)modelPath contextId:(int)contextId noCoreML:(BOOL)noCoreML {
9
+ + (instancetype)initWithModelPath:(NSString *)modelPath
10
+ contextId:(int)contextId
11
+ noCoreML:(BOOL)noCoreML
12
+ noMetal:(BOOL)noMetal
13
+ {
10
14
  RNWhisperContext *context = [[RNWhisperContext alloc] init];
11
15
  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]);
16
+ struct whisper_context_params cparams;
17
+ NSString *reasonNoMetal = @"";
18
+ cparams.use_gpu = !noMetal;
19
+
20
+ cparams.use_coreml = !noCoreML;
21
+ #ifndef WHISPER_USE_COREML
22
+ if (cparams.use_coreml) {
23
+ NSLog(@"[RNWhisper] CoreML is not enabled in this build, ignoring use_coreml option");
24
+ cparams.use_coreml = false;
17
25
  }
18
- #else
19
- context->ctx = whisper_init_from_file([modelPath UTF8String]);
20
26
  #endif
27
+
28
+ #ifndef WSP_GGML_USE_METAL
29
+ if (cparams.use_gpu) {
30
+ NSLog(@"[RNWhisper] ggml-metal is not enabled in this build, ignoring use_gpu option");
31
+ cparams.use_gpu = false;
32
+ }
33
+ #endif
34
+
35
+ #ifdef WSP_GGML_USE_METAL
36
+ if (cparams.use_gpu) {
37
+ #if TARGET_OS_SIMULATOR
38
+ NSLog(@"[RNWhisper] ggml-metal is not available in simulator, ignoring use_gpu option: %@", reasonNoMetal);
39
+ cparams.use_gpu = false;
40
+ #else // TARGET_OS_SIMULATOR
41
+ // Check ggml-metal availability
42
+ NSError * error = nil;
43
+ id<MTLDevice> device = MTLCreateSystemDefaultDevice();
44
+ id<MTLLibrary> library = [device
45
+ newLibraryWithSource:@"#include <metal_stdlib>\n"
46
+ "using namespace metal;"
47
+ "kernel void test() { simd_sum(0); }"
48
+ options:nil
49
+ error:&error
50
+ ];
51
+ if (error) {
52
+ reasonNoMetal = [error localizedDescription];
53
+ } else {
54
+ id<MTLFunction> kernel = [library newFunctionWithName:@"test"];
55
+ id<MTLComputePipelineState> pipeline = [device newComputePipelineStateWithFunction:kernel error:&error];
56
+ if (pipeline == nil) {
57
+ reasonNoMetal = [error localizedDescription];
58
+ NSLog(@"[RNWhisper] ggml-metal is not available, ignoring use_gpu option: %@", reasonNoMetal);
59
+ cparams.use_gpu = false;
60
+ }
61
+ }
62
+ #endif // TARGET_OS_SIMULATOR
63
+ }
64
+ #endif // WSP_GGML_USE_METAL
65
+
66
+ if (cparams.use_gpu && cparams.use_coreml) {
67
+ NSLog(@"[RNWhisper] Both use_gpu and use_coreml are enabled, ignoring use_coreml option");
68
+ cparams.use_coreml = false; // Skip CoreML if Metal is enabled
69
+ }
70
+
71
+ context->ctx = whisper_init_from_file_with_params([modelPath UTF8String], cparams);
21
72
  context->dQueue = dispatch_queue_create(
22
73
  [[NSString stringWithFormat:@"RNWhisperContext-%d", contextId] UTF8String],
23
74
  DISPATCH_QUEUE_SERIAL
24
75
  );
76
+ context->isMetalEnabled = cparams.use_gpu;
77
+ context->reasonNoMetal = reasonNoMetal;
25
78
  return context;
26
79
  }
27
80
 
81
+ - (bool)isMetalEnabled {
82
+ return isMetalEnabled;
83
+ }
84
+
85
+ - (NSString *)reasonNoMetal {
86
+ return reasonNoMetal;
87
+ }
88
+
28
89
  - (struct whisper_context *)getContext {
29
90
  return self->ctx;
30
91
  }
@@ -33,7 +94,7 @@
33
94
  return self->dQueue;
34
95
  }
35
96
 
36
- - (void)prepareRealtime:(NSDictionary *)options {
97
+ - (void)prepareRealtime:(int)jobId options:(NSDictionary *)options {
37
98
  self->recordState.options = options;
38
99
 
39
100
  self->recordState.dataFormat.mSampleRate = WHISPER_SAMPLE_RATE; // 16000
@@ -46,74 +107,38 @@
46
107
  self->recordState.dataFormat.mReserved = 0;
47
108
  self->recordState.dataFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger;
48
109
 
49
- int maxAudioSecOpt = options[@"realtimeAudioSec"] != nil ? [options[@"realtimeAudioSec"] intValue] : 0;
50
- int maxAudioSec = maxAudioSecOpt > 0 ? maxAudioSecOpt : DEFAULT_MAX_AUDIO_SEC;
51
- self->recordState.maxAudioSec = maxAudioSec;
52
-
53
- int realtimeAudioSliceSec = options[@"realtimeAudioSliceSec"] != nil ? [options[@"realtimeAudioSliceSec"] intValue] : 0;
54
- int audioSliceSec = realtimeAudioSliceSec > 0 && realtimeAudioSliceSec < maxAudioSec ? realtimeAudioSliceSec : maxAudioSec;
55
-
56
- self->recordState.audioOutputPath = options[@"audioOutputPath"];
57
-
58
- self->recordState.useVad = options[@"useVad"] != nil ? [options[@"useVad"] boolValue] : false;
59
- self->recordState.vadMs = options[@"vadMs"] != nil ? [options[@"vadMs"] intValue] : 2000;
60
- if (self->recordState.vadMs < 2000) self->recordState.vadMs = 2000;
61
-
62
- self->recordState.vadThold = options[@"vadThold"] != nil ? [options[@"vadThold"] floatValue] : 0.6f;
63
- self->recordState.vadFreqThold = options[@"vadFreqThold"] != nil ? [options[@"vadFreqThold"] floatValue] : 100.0f;
64
-
65
- self->recordState.audioSliceSec = audioSliceSec;
66
- self->recordState.isUseSlices = audioSliceSec < maxAudioSec;
110
+ self->recordState.isRealtime = true;
111
+ self->recordState.isTranscribing = false;
112
+ self->recordState.isCapturing = false;
113
+ self->recordState.isStoppedByAction = false;
67
114
 
68
115
  self->recordState.sliceIndex = 0;
69
116
  self->recordState.transcribeSliceIndex = 0;
70
117
  self->recordState.nSamplesTranscribing = 0;
71
118
 
72
- [self freeBufferIfNeeded];
73
- self->recordState.shortBufferSlices = [NSMutableArray new];
74
-
75
- int16_t *audioBufferI16 = (int16_t *) malloc(audioSliceSec * WHISPER_SAMPLE_RATE * sizeof(int16_t));
76
- [self->recordState.shortBufferSlices addObject:[NSValue valueWithPointer:audioBufferI16]];
77
-
78
- self->recordState.sliceNSamples = [NSMutableArray new];
79
- [self->recordState.sliceNSamples addObject:[NSNumber numberWithInt:0]];
80
-
81
- self->recordState.isRealtime = true;
82
- self->recordState.isTranscribing = false;
83
- self->recordState.isCapturing = false;
84
- self->recordState.isStoppedByAction = false;
119
+ self->recordState.sliceNSamples.push_back(0);
120
+
121
+ self->recordState.job = rnwhisper::job_new(jobId, [self createParams:options jobId:jobId]);
122
+ self->recordState.job->set_realtime_params(
123
+ {
124
+ .use_vad = options[@"useVad"] != nil ? [options[@"useVad"] boolValue] : false,
125
+ .vad_ms = options[@"vadMs"] != nil ? [options[@"vadMs"] intValue] : 2000,
126
+ .vad_thold = options[@"vadThold"] != nil ? [options[@"vadThold"] floatValue] : 0.6f,
127
+ .freq_thold = options[@"vadFreqThold"] != nil ? [options[@"vadFreqThold"] floatValue] : 100.0f
128
+ },
129
+ options[@"realtimeAudioSec"] != nil ? [options[@"realtimeAudioSec"] intValue] : 0,
130
+ options[@"realtimeAudioSliceSec"] != nil ? [options[@"realtimeAudioSliceSec"] intValue] : 0,
131
+ options[@"audioOutputPath"] != nil ? [options[@"audioOutputPath"] UTF8String] : nullptr
132
+ );
133
+ self->recordState.isUseSlices = self->recordState.job->audio_slice_sec < self->recordState.job->audio_sec;
85
134
 
86
135
  self->recordState.mSelf = self;
87
136
  }
88
137
 
89
- - (void)freeBufferIfNeeded {
90
- if (self->recordState.shortBufferSlices != nil) {
91
- for (int i = 0; i < [self->recordState.shortBufferSlices count]; i++) {
92
- int16_t *audioBufferI16 = (int16_t *) [self->recordState.shortBufferSlices[i] pointerValue];
93
- free(audioBufferI16);
94
- }
95
- self->recordState.shortBufferSlices = nil;
96
- }
97
- }
98
-
99
- bool vad(RNWhisperContextRecordState *state, int16_t* audioBufferI16, int nSamples, int n)
138
+ bool vad(RNWhisperContextRecordState *state, int sliceIndex, int nSamples, int n)
100
139
  {
101
- bool isSpeech = true;
102
- if (!state->isTranscribing && state->useVad) {
103
- int sampleSize = (int) (WHISPER_SAMPLE_RATE * state->vadMs / 1000);
104
- if (nSamples + n > sampleSize) {
105
- int start = nSamples + n - sampleSize;
106
- std::vector<float> audioBufferF32Vec(sampleSize);
107
- for (int i = 0; i < sampleSize; i++) {
108
- audioBufferF32Vec[i] = (float)audioBufferI16[i + start] / 32768.0f;
109
- }
110
- isSpeech = rn_whisper_vad_simple(audioBufferF32Vec, WHISPER_SAMPLE_RATE, 1000, state->vadThold, state->vadFreqThold, false);
111
- NSLog(@"[RNWhisper] VAD result: %d", isSpeech);
112
- } else {
113
- isSpeech = false;
114
- }
115
- }
116
- return isSpeech;
140
+ if (state->isTranscribing) return true;
141
+ return state->job->vad_simple(sliceIndex, nSamples, n);
117
142
  }
118
143
 
119
144
  void AudioInputCallback(void * inUserData,
@@ -134,15 +159,15 @@ void AudioInputCallback(void * inUserData,
134
159
  }
135
160
 
136
161
  int totalNSamples = 0;
137
- for (int i = 0; i < [state->sliceNSamples count]; i++) {
138
- totalNSamples += [[state->sliceNSamples objectAtIndex:i] intValue];
162
+ for (int i = 0; i < state->sliceNSamples.size(); i++) {
163
+ totalNSamples += state->sliceNSamples[i];
139
164
  }
140
165
 
141
166
  const int n = inBuffer->mAudioDataByteSize / 2;
142
167
 
143
- int nSamples = [state->sliceNSamples[state->sliceIndex] intValue];
168
+ int nSamples = state->sliceNSamples[state->sliceIndex];
144
169
 
145
- if (totalNSamples + n > state->maxAudioSec * WHISPER_SAMPLE_RATE) {
170
+ if (totalNSamples + n > state->job->audio_sec * WHISPER_SAMPLE_RATE) {
146
171
  NSLog(@"[RNWhisper] Audio buffer is full, stop capturing");
147
172
  state->isCapturing = false;
148
173
  [state->mSelf stopAudio];
@@ -156,8 +181,7 @@ void AudioInputCallback(void * inUserData,
156
181
  !state->isTranscribing &&
157
182
  nSamples != state->nSamplesTranscribing
158
183
  ) {
159
- int16_t* audioBufferI16 = (int16_t*) [state->shortBufferSlices[state->sliceIndex] pointerValue];
160
- if (!vad(state, audioBufferI16, nSamples, 0)) {
184
+ if (!vad(state, state->sliceIndex, nSamples, 0)) {
161
185
  [state->mSelf finishRealtimeTranscribe:state result:@{}];
162
186
  return;
163
187
  }
@@ -169,27 +193,20 @@ void AudioInputCallback(void * inUserData,
169
193
  return;
170
194
  }
171
195
 
172
- int audioSliceSec = state->audioSliceSec;
173
- if (nSamples + n > audioSliceSec * WHISPER_SAMPLE_RATE) {
196
+ if (nSamples + n > state->job->audio_slice_sec * WHISPER_SAMPLE_RATE) {
174
197
  // next slice
175
198
  state->sliceIndex++;
176
199
  nSamples = 0;
177
- int16_t* audioBufferI16 = (int16_t*) malloc(audioSliceSec * WHISPER_SAMPLE_RATE * sizeof(int16_t));
178
- [state->shortBufferSlices addObject:[NSValue valueWithPointer:audioBufferI16]];
179
- [state->sliceNSamples addObject:[NSNumber numberWithInt:0]];
200
+ state->sliceNSamples.push_back(0);
180
201
  }
181
202
 
182
- // Append to buffer
183
203
  NSLog(@"[RNWhisper] Slice %d has %d samples", state->sliceIndex, nSamples);
184
204
 
185
- int16_t* audioBufferI16 = (int16_t*) [state->shortBufferSlices[state->sliceIndex] pointerValue];
186
- for (int i = 0; i < n; i++) {
187
- audioBufferI16[nSamples + i] = ((short*)inBuffer->mAudioData)[i];
188
- }
205
+ state->job->put_pcm_data((short*) inBuffer->mAudioData, state->sliceIndex, nSamples, n);
189
206
 
190
- bool isSpeech = vad(state, audioBufferI16, nSamples, n);
207
+ bool isSpeech = vad(state, state->sliceIndex, nSamples, n);
191
208
  nSamples += n;
192
- state->sliceNSamples[state->sliceIndex] = [NSNumber numberWithInt:nSamples];
209
+ state->sliceNSamples[state->sliceIndex] = nSamples;
193
210
 
194
211
  AudioQueueEnqueueBuffer(state->queue, inBuffer, 0, NULL);
195
212
 
@@ -205,32 +222,27 @@ void AudioInputCallback(void * inUserData,
205
222
 
206
223
  - (void)finishRealtimeTranscribe:(RNWhisperContextRecordState*) state result:(NSDictionary*)result {
207
224
  // Save wav if needed
208
- if (state->audioOutputPath != nil) {
225
+ if (state->job->audio_output_path != nullptr) {
209
226
  // TODO: Append in real time so we don't need to keep all slices & also reduce memory usage
210
- [RNWhisperAudioUtils
211
- saveWavFile:[RNWhisperAudioUtils concatShortBuffers:state->shortBufferSlices
212
- sliceNSamples:state->sliceNSamples]
213
- audioOutputFile:state->audioOutputPath
214
- ];
227
+ rnaudioutils::save_wav_file(
228
+ rnaudioutils::concat_short_buffers(state->job->pcm_slices, state->sliceNSamples),
229
+ state->job->audio_output_path
230
+ );
215
231
  }
216
- state->transcribeHandler(state->jobId, @"end", result);
232
+ state->transcribeHandler(state->job->job_id, @"end", result);
233
+ rnwhisper::job_remove(state->job->job_id);
217
234
  }
218
235
 
219
236
  - (void)fullTranscribeSamples:(RNWhisperContextRecordState*) state {
220
- int nSamplesOfIndex = [[state->sliceNSamples objectAtIndex:state->transcribeSliceIndex] intValue];
237
+ int nSamplesOfIndex = state->sliceNSamples[state->transcribeSliceIndex];
221
238
  state->nSamplesTranscribing = nSamplesOfIndex;
222
239
  NSLog(@"[RNWhisper] Transcribing %d samples", state->nSamplesTranscribing);
223
240
 
224
- int16_t* audioBufferI16 = (int16_t*) [state->shortBufferSlices[state->transcribeSliceIndex] pointerValue];
225
- float* audioBufferF32 = (float*) malloc(state->nSamplesTranscribing * sizeof(float));
226
- // convert I16 to F32
227
- for (int i = 0; i < state->nSamplesTranscribing; i++) {
228
- audioBufferF32[i] = (float)audioBufferI16[i] / 32768.0f;
229
- }
241
+ float* pcmf32 = state->job->pcm_slice_to_f32(state->transcribeSliceIndex, state->nSamplesTranscribing);
242
+
230
243
  CFTimeInterval timeStart = CACurrentMediaTime();
231
- struct whisper_full_params params = [state->mSelf getParams:state->options jobId:state->jobId];
232
- int code = [state->mSelf fullTranscribe:state->jobId params:params audioData:audioBufferF32 audioDataCount:state->nSamplesTranscribing];
233
- free(audioBufferF32);
244
+ int code = [state->mSelf fullTranscribe:state->job audioData:pcmf32 audioDataCount:state->nSamplesTranscribing];
245
+ free(pcmf32);
234
246
  CFTimeInterval timeEnd = CACurrentMediaTime();
235
247
  const float timeRecording = (float) state->nSamplesTranscribing / (float) state->dataFormat.mSampleRate;
236
248
 
@@ -250,7 +262,7 @@ void AudioInputCallback(void * inUserData,
250
262
  result[@"error"] = [NSString stringWithFormat:@"Transcribe failed with code %d", code];
251
263
  }
252
264
 
253
- nSamplesOfIndex = [[state->sliceNSamples objectAtIndex:state->transcribeSliceIndex] intValue];
265
+ nSamplesOfIndex = state->sliceNSamples[state->transcribeSliceIndex];
254
266
 
255
267
  bool isStopped = state->isStoppedByAction || (
256
268
  !state->isCapturing &&
@@ -278,10 +290,10 @@ void AudioInputCallback(void * inUserData,
278
290
  [state->mSelf finishRealtimeTranscribe:state result:result];
279
291
  } else if (code == 0) {
280
292
  result[@"isCapturing"] = @(true);
281
- state->transcribeHandler(state->jobId, @"transcribe", result);
293
+ state->transcribeHandler(state->job->job_id, @"transcribe", result);
282
294
  } else {
283
295
  result[@"isCapturing"] = @(true);
284
- state->transcribeHandler(state->jobId, @"transcribe", result);
296
+ state->transcribeHandler(state->job->job_id, @"transcribe", result);
285
297
  }
286
298
 
287
299
  if (continueNeeded) {
@@ -309,8 +321,7 @@ void AudioInputCallback(void * inUserData,
309
321
  onTranscribe:(void (^)(int, NSString *, NSDictionary *))onTranscribe
310
322
  {
311
323
  self->recordState.transcribeHandler = onTranscribe;
312
- self->recordState.jobId = jobId;
313
- [self prepareRealtime:options];
324
+ [self prepareRealtime:jobId options:options];
314
325
 
315
326
  OSStatus status = AudioQueueNewInput(
316
327
  &self->recordState.dataFormat,
@@ -351,9 +362,9 @@ struct rnwhisper_segments_callback_data {
351
362
  dispatch_async(dQueue, ^{
352
363
  self->recordState.isStoppedByAction = false;
353
364
  self->recordState.isTranscribing = true;
354
- self->recordState.jobId = jobId;
355
365
 
356
- whisper_full_params params = [self getParams:options jobId:jobId];
366
+ whisper_full_params params = [self createParams:options jobId:jobId];
367
+
357
368
  if (options[@"onProgress"] && [options[@"onProgress"] boolValue]) {
358
369
  params.progress_callback = [](struct whisper_context * /*ctx*/, struct whisper_state * /*state*/, int progress, void * user_data) {
359
370
  void (^onProgress)(int) = (__bridge void (^)(int))user_data;
@@ -398,8 +409,10 @@ struct rnwhisper_segments_callback_data {
398
409
  };
399
410
  params.new_segment_callback_user_data = &user_data;
400
411
  }
401
- int code = [self fullTranscribe:jobId params:params audioData:audioData audioDataCount:audioDataCount];
402
- self->recordState.jobId = -1;
412
+
413
+ rnwhisper::job* job = rnwhisper::job_new(jobId, params);;
414
+ int code = [self fullTranscribe:job audioData:audioData audioDataCount:audioDataCount];
415
+ rnwhisper::job_remove(jobId);
403
416
  self->recordState.isTranscribing = false;
404
417
  onEnd(code);
405
418
  });
@@ -414,7 +427,7 @@ struct rnwhisper_segments_callback_data {
414
427
  }
415
428
 
416
429
  - (void)stopTranscribe:(int)jobId {
417
- rn_whisper_abort_transcribe(jobId);
430
+ if (self->recordState.job) self->recordState.job->abort();
418
431
  if (self->recordState.isRealtime && self->recordState.isCapturing) {
419
432
  [self stopAudio];
420
433
  if (!self->recordState.isTranscribing) {
@@ -428,13 +441,11 @@ struct rnwhisper_segments_callback_data {
428
441
  }
429
442
 
430
443
  - (void)stopCurrentTranscribe {
431
- if (!self->recordState.jobId) {
432
- return;
433
- }
434
- [self stopTranscribe:self->recordState.jobId];
444
+ if (self->recordState.job == nullptr) return;
445
+ [self stopTranscribe:self->recordState.job->job_id];
435
446
  }
436
447
 
437
- - (struct whisper_full_params)getParams:(NSDictionary *)options jobId:(int)jobId {
448
+ - (struct whisper_full_params)createParams:(NSDictionary *)options jobId:(int)jobId {
438
449
  struct whisper_full_params params = whisper_full_default_params(WHISPER_SAMPLING_GREEDY);
439
450
 
440
451
  const int n_threads = options[@"maxThreads"] != nil ?
@@ -472,7 +483,6 @@ struct rnwhisper_segments_callback_data {
472
483
  if (options[@"maxContext"] != nil) {
473
484
  params.n_max_text_ctx = [options[@"maxContext"] intValue];
474
485
  }
475
-
476
486
  if (options[@"offset"] != nil) {
477
487
  params.offset_ms = [options[@"offset"] intValue];
478
488
  }
@@ -488,35 +498,20 @@ struct rnwhisper_segments_callback_data {
488
498
  if (options[@"temperatureInc"] != nil) {
489
499
  params.temperature_inc = [options[@"temperature_inc"] floatValue];
490
500
  }
491
-
492
501
  if (options[@"prompt"] != nil) {
493
502
  params.initial_prompt = [options[@"prompt"] UTF8String];
494
503
  }
495
504
 
496
- // abort handler
497
- params.encoder_begin_callback = [](struct whisper_context * /*ctx*/, struct whisper_state * /*state*/, void * user_data) {
498
- bool is_aborted = *(bool*)user_data;
499
- return !is_aborted;
500
- };
501
- params.encoder_begin_callback_user_data = rn_whisper_assign_abort_map(jobId);
502
- params.abort_callback = [](void * user_data) {
503
- bool is_aborted = *(bool*)user_data;
504
- return is_aborted;
505
- };
506
- params.abort_callback_user_data = rn_whisper_assign_abort_map(jobId);
507
-
508
505
  return params;
509
506
  }
510
507
 
511
- - (int)fullTranscribe:(int)jobId
512
- params:(struct whisper_full_params)params
508
+ - (int)fullTranscribe:(rnwhisper::job *)job
513
509
  audioData:(float *)audioData
514
510
  audioDataCount:(int)audioDataCount
515
511
  {
516
512
  whisper_reset_timings(self->ctx);
517
-
518
- int code = whisper_full(self->ctx, params, audioData, audioDataCount);
519
- rn_whisper_remove_abort_map(jobId);
513
+ int code = whisper_full(self->ctx, job->params, audioData, audioDataCount);
514
+ if (job && job->is_aborted()) code = -999;
520
515
  // if (code == 0) {
521
516
  // whisper_print_timings(self->ctx);
522
517
  // }
@@ -550,7 +545,6 @@ struct rnwhisper_segments_callback_data {
550
545
  - (void)invalidate {
551
546
  [self stopCurrentTranscribe];
552
547
  whisper_free(self->ctx);
553
- [self freeBufferIfNeeded];
554
548
  }
555
549
 
556
550
  @end
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":";;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOA,IAAAC,gBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAMA,IAAAG,gBAAA,GAAAD,sBAAA,CAAAF,OAAA;AAMA,IAAAI,QAAA,GAAAJ,OAAA;AAAwC,IAAAK,qBAAA;AAAA,SAAAH,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExC,IAAIG,YAA2D;AAC/D,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;EACzB;EACAF,YAAY,GAAG,IAAIG,+BAAkB,CAACC,wBAAS,CAAC;AAClD;AACA,IAAIH,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;EAC7BF,YAAY,GAAGK,+BAAkB;AACnC;AAUA,MAAMC,4BAA4B,GAAG,iCAAiC;AACtE,MAAMC,gCAAgC,GAAG,oCAAoC;AAE7E,MAAMC,4BAA4B,GAAG,iCAAiC;AACtE,MAAMC,gCAAgC,GAAG,oCAAoC;AAiI7E,MAAMC,kBAAkB,GAAG,MAAOC,OAA+B,IAAK;EACpE,MAAMC,wBAAe,CAACC,WAAW,CAC/BF,OAAO,CAACG,QAAQ,EAChBH,OAAO,CAACI,OAAO,IAAI,EAAE,CACtB;EACD,IAAIJ,OAAO,CAACK,IAAI,EAAE;IAChB,MAAMJ,wBAAe,CAACK,OAAO,CAACN,OAAO,CAACK,IAAI,CAAC;EAC7C;EACA,MAAMJ,wBAAe,CAACM,SAAS,CAACP,OAAO,CAACQ,MAAM,IAAI,IAAI,CAAC;AACzD,CAAC;AAEM,MAAMC,cAAc,CAAC;EAG1BC,GAAG,GAAY,KAAK;EAEpBC,WAAW,GAAW,EAAE;EAExBC,WAAWA,CAAAC,IAAA,EAIc;IAAA,IAJb;MACVC,SAAS;MACTJ,GAAG;MACHC;IACoB,CAAC,GAAAE,IAAA;IACrB,IAAI,CAACE,EAAE,GAAGD,SAAS;IACnB,IAAI,CAACJ,GAAG,GAAGA,GAAG;IACd,IAAI,CAACC,WAAW,GAAGA,WAAW;EAChC;;EAEA;EACAK,UAAUA,CACRC,QAAyB,EAOzB;IAAA,IANAb,OAA8B,GAAAc,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAOnC,IAAIG,IAAI,GAAG,EAAE;IACb,IAAI,OAAOJ,QAAQ,KAAK,QAAQ,EAAE;MAChC,IAAI;QACF,MAAMK,MAAM,GAAGC,kBAAK,CAACC,kBAAkB,CAACP,QAAQ,CAAC;QACjD,IAAIK,MAAM,EAAED,IAAI,GAAGC,MAAM,CAACG,GAAG;MAC/B,CAAC,CAAC,OAAOC,CAAC,EAAE;QACV,MAAM,IAAIC,KAAK,CAAE,kBAAiBV,QAAS,EAAC,CAAC;MAC/C;IACF,CAAC,MAAM;MACL,IAAIA,QAAQ,CAACW,UAAU,CAAC,MAAM,CAAC,EAC7B,MAAM,IAAID,KAAK,CACb,mEAAmE,CACpE;MACHN,IAAI,GAAGJ,QAAQ;IACjB;IACA,IAAII,IAAI,CAACO,UAAU,CAAC,SAAS,CAAC,EAAEP,IAAI,GAAGA,IAAI,CAACQ,KAAK,CAAC,CAAC,CAAC;IACpD,MAAMC,KAAa,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEvD,MAAM;MAAEC,UAAU;MAAEC,aAAa;MAAE,GAAGC;IAAK,CAAC,GAAGhC,OAAO;IAEtD,IAAIiC,gBAAqB;IACzB,IAAIC,YAAoB,GAAG,CAAC;IAC5B,IAAIJ,UAAU,EAAE;MACdG,gBAAgB,GAAGhD,YAAY,CAACkD,WAAW,CACzC5C,4BAA4B,EAC3B6C,GAAkC,IAAK;QACtC,MAAM;UAAE1B,SAAS;UAAE2B;QAAS,CAAC,GAAGD,GAAG;QACnC,IAAI1B,SAAS,KAAK,IAAI,CAACC,EAAE,IAAIyB,GAAG,CAACV,KAAK,KAAKA,KAAK,EAAE;QAClDQ,YAAY,GAAGG,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAGA,QAAQ;QAC9CP,UAAU,CAACI,YAAY,CAAC;MAC1B,CAAC,CACF;IACH;IACA,MAAMI,sBAAsB,GAAGA,CAAA,KAAM;MACnC,IAAIL,gBAAgB,EAAE;QACpBA,gBAAgB,CAACM,MAAM,EAAE;QACzBN,gBAAgB,GAAG,IAAI;MACzB;IACF,CAAC;IAED,IAAIO,mBAAwB;IAC5B,IAAIT,aAAa,EAAE;MACjBS,mBAAmB,GAAGvD,YAAY,CAACkD,WAAW,CAC5C3C,gCAAgC,EAC/B4C,GAAqC,IAAK;QACzC,MAAM;UAAE1B,SAAS;UAAE+B;QAAO,CAAC,GAAGL,GAAG;QACjC,IAAI1B,SAAS,KAAK,IAAI,CAACC,EAAE,IAAIyB,GAAG,CAACV,KAAK,KAAKA,KAAK,EAAE;QAClDK,aAAa,CAACU,MAAM,CAAC;MACvB,CAAC,CACF;IACH;IACA,MAAMC,0BAA0B,GAAGA,CAAA,KAAM;MACvC,IAAIF,mBAAmB,EAAE;QACvBA,mBAAmB,CAACD,MAAM,EAAE;QAC5BC,mBAAmB,GAAG,IAAI;MAC5B;IACF,CAAC;IAED,OAAO;MACLG,IAAI,EAAE,MAAAA,CAAA,KAAY;QAChB,MAAMtD,wBAAS,CAACuD,eAAe,CAAC,IAAI,CAACjC,EAAE,EAAEe,KAAK,CAAC;QAC/CY,sBAAsB,EAAE;QACxBI,0BAA0B,EAAE;MAC9B,CAAC;MACDG,OAAO,EAAExD,wBAAS,CAACyD,cAAc,CAAC,IAAI,CAACnC,EAAE,EAAEe,KAAK,EAAET,IAAI,EAAE;QACtD,GAAGe,IAAI;QACPF,UAAU,EAAE,CAAC,CAACA,UAAU;QACxBC,aAAa,EAAE,CAAC,CAACA;MACnB,CAAC,CAAC,CACCgB,IAAI,CAAEN,MAAM,IAAK;QAChBH,sBAAsB,EAAE;QACxBI,0BAA0B,EAAE;QAC5B,IAAI,CAACD,MAAM,CAACO,SAAS,IAAId,YAAY,KAAK,GAAG,EAAE;UAC7C;UACAJ,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAG,GAAG,CAAC;QACnB;QACA,OAAOW,MAAM;MACf,CAAC,CAAC,CACDQ,KAAK,CAAE3B,CAAC,IAAK;QACZgB,sBAAsB,EAAE;QACxBI,0BAA0B,EAAE;QAC5B,MAAMpB,CAAC;MACT,CAAC;IACL,CAAC;EACH;;EAEA;EACA,MAAM4B,kBAAkBA,CAAA,EAKrB;IAAA,IALsBlD,OAAkC,GAAAc,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAM9D,IAAIqC,qBAAsD;IAE1D,MAAMC,MAAyC,GAAG,EAAE;IACpD,IAAIC,UAAkB,GAAG,CAAC;IAC1B,IAAIC,OAAe,GAAG,CAAC;IAEvB,MAAMC,QAAQ,GAAIC,OAAwC,IAAK;MAC7D,IAAI,CAACA,OAAO,CAACC,WAAW,IAAI,CAACD,OAAO,CAACE,IAAI,EAAE;MAC3C,IAAIL,UAAU,KAAKG,OAAO,CAACH,UAAU,EAAE;QAAA,IAAAM,kBAAA,EAAAC,SAAA;QACrC,MAAM;UAAEC,QAAQ,GAAG;QAAG,CAAC,GAAG,EAAAF,kBAAA,GAAAP,MAAM,CAACC,UAAU,CAAC,cAAAM,kBAAA,uBAAlBA,kBAAA,CAAoBD,IAAI,KAAI,CAAC,CAAC;QACxDJ,OAAO,GAAG,EAAAM,SAAA,GAAAC,QAAQ,CAACA,QAAQ,CAAC9C,MAAM,GAAG,CAAC,CAAC,cAAA6C,SAAA,uBAA7BA,SAAA,CAA+BE,EAAE,KAAI,CAAC;MAClD;MACA;MAAC,CAAC;QAAET;MAAW,CAAC,GAAGG,OAAO;MAC1BJ,MAAM,CAACC,UAAU,CAAC,GAAG;QACnB,GAAGG,OAAO;QACVE,IAAI,EAAE;UACJ,GAAGF,OAAO,CAACE,IAAI;UACfG,QAAQ,EACNL,OAAO,CAACE,IAAI,CAACG,QAAQ,CAACE,GAAG,CAAEC,OAAO,KAAM;YACtC,GAAGA,OAAO;YACVC,EAAE,EAAED,OAAO,CAACC,EAAE,GAAGX,OAAO;YACxBQ,EAAE,EAAEE,OAAO,CAACF,EAAE,GAAGR;UACnB,CAAC,CAAC,CAAC,IAAI;QACX;MACF,CAAC;IACH,CAAC;IAED,MAAMY,mBAAmB,GACvBV,OAAwC,IACJ;MACpC,IAAI,CAACA,OAAO,CAACC,WAAW,EAAE,OAAOD,OAAO;MAExC,MAAMW,aAAkB,GAAG,CAAC,CAAC;MAC7Bf,MAAM,CAACgB,OAAO,CAAE3C,KAAK,IAAK;QAAA,IAAA4C,mBAAA,EAAAC,WAAA,EAAAC,oBAAA,EAAAC,YAAA;QACxBL,aAAa,CAACT,IAAI,GAAG;UACnBjB,MAAM,EACJ,CAAC,EAAA4B,mBAAA,GAAAF,aAAa,CAACT,IAAI,cAAAW,mBAAA,uBAAlBA,mBAAA,CAAoB5B,MAAM,KAAI,EAAE,KAAK,EAAA6B,WAAA,GAAA7C,KAAK,CAACiC,IAAI,cAAAY,WAAA,uBAAVA,WAAA,CAAY7B,MAAM,KAAI,EAAE,CAAC;UACjEoB,QAAQ,EAAE,CACR,IAAI,CAAAM,aAAa,aAAbA,aAAa,wBAAAI,oBAAA,GAAbJ,aAAa,CAAET,IAAI,cAAAa,oBAAA,uBAAnBA,oBAAA,CAAqBV,QAAQ,KAAI,EAAE,CAAC,EACxC,IAAI,EAAAW,YAAA,GAAA/C,KAAK,CAACiC,IAAI,cAAAc,YAAA,uBAAVA,YAAA,CAAYX,QAAQ,KAAI,EAAE,CAAC;QAEnC,CAAC;QACDM,aAAa,CAACM,WAAW,GAAGhD,KAAK,CAACgD,WAAW;QAC7CN,aAAa,CAACO,aAAa,GACzB,CAAC,CAAAP,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEO,aAAa,KAAI,CAAC,IAAIjD,KAAK,CAACiD,aAAa;MAC7D,CAAC,CAAC;MACF,OAAO;QAAE,GAAGlB,OAAO;QAAE,GAAGW,aAAa;QAAEf;MAAO,CAAC;IACjD,CAAC;IAED,IAAIuB,gBAAoD;IACxD,IAAIzF,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAIa,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE4E,sBAAsB,EAAE;MAC5D;MACA,IAAI,CAAA5E,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE6E,qBAAqB,MAAK,SAAS,EAAE;QAChD,MAAMC,cAAc,GAAG,MAAMjF,wBAAe,CAACkF,kBAAkB,EAAE;QACjE,MAAM9E,IAAI,GAAG,MAAMJ,wBAAe,CAACmF,cAAc,EAAE;QAEnDL,gBAAgB,GAAG;UACjB,GAAGG,cAAc;UACjB7E,IAAI;UACJG,MAAM,EAAE,KAAK,CAAE;QACjB,CAAC;MACH;;MAEA;MACA,MAAMT,kBAAkB,CAACK,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE4E,sBAAsB,CAAC;IAC3D;IACA,IAAI1F,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,QAAOa,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE6E,qBAAqB,MAAK,QAAQ,EAAE;MAC/EF,gBAAgB,GAAG3E,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE6E,qBAAqB;IACnD;IAEA,MAAMnD,KAAa,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAG,KAAK,CAAC;IACvD,IAAI;MACF,MAAMxC,wBAAS,CAAC4F,uBAAuB,CAAC,IAAI,CAACtE,EAAE,EAAEe,KAAK,EAAE1B,OAAO,CAAC;IAClE,CAAC,CAAC,OAAOsB,CAAC,EAAE;MACV,IAAIqD,gBAAgB,EAAE,MAAMhF,kBAAkB,CAACgF,gBAAgB,CAAC;MAChE,MAAMrD,CAAC;IACT;IAEA,OAAO;MACLqB,IAAI,EAAE,MAAAA,CAAA,KAAY;QAChB,MAAMtD,wBAAS,CAACuD,eAAe,CAAC,IAAI,CAACjC,EAAE,EAAEe,KAAK,CAAC;QAC/C,IAAIiD,gBAAgB,EAAE,MAAMhF,kBAAkB,CAACgF,gBAAgB,CAAC;MAClE,CAAC;MACDO,SAAS,EAAGC,QAAkD,IAAK;QACjE,IAAIC,kBAAuB,GAAGnG,YAAY,CAACkD,WAAW,CACpD1C,4BAA4B,EAC3B2C,GAAkC,IAAK;UACtC,MAAM;YAAE1B,SAAS;YAAE8C;UAAQ,CAAC,GAAGpB,GAAG;UAClC,IAAI1B,SAAS,KAAK,IAAI,CAACC,EAAE,IAAIyB,GAAG,CAACV,KAAK,KAAKA,KAAK,EAAE;UAClDyB,qBAAqB,GAAGK,OAAO;UAC/BD,QAAQ,CAACC,OAAO,CAAC;UACjB2B,QAAQ,CAAC;YACPzE,SAAS;YACTgB,KAAK,EAAEU,GAAG,CAACV,KAAK;YAChB,GAAGwC,mBAAmB,CAACV,OAAO;UAChC,CAAC,CAAC;QACJ,CAAC,CACF;QACD,IAAI6B,WAAgB,GAAGpG,YAAY,CAACkD,WAAW,CAC7CzC,gCAAgC,EAC/B0C,GAAkC,IAAK;UACtC,MAAM;YAAE1B,SAAS;YAAE8C;UAAQ,CAAC,GAAGpB,GAAG;UAClC,IAAI1B,SAAS,KAAK,IAAI,CAACC,EAAE,IAAIyB,GAAG,CAACV,KAAK,KAAKA,KAAK,EAAE;UAClD,MAAM4D,WAAW,GAAG;YAClB,GAAGnC,qBAAqB;YACxB,GAAGK;UACL,CAAC;UACDD,QAAQ,CAAC+B,WAAW,CAAC;UACrBH,QAAQ,CAAC;YACPzE,SAAS;YACTgB,KAAK,EAAEU,GAAG,CAACV,KAAK;YAChB,GAAGwC,mBAAmB,CAACoB,WAAW,CAAC;YACnCC,WAAW,EAAE;UACf,CAAC,CAAC;UACF,IAAIH,kBAAkB,EAAE;YACtBA,kBAAkB,CAAC7C,MAAM,EAAE;YAC3B6C,kBAAkB,GAAG,IAAI;UAC3B;UACA,IAAIC,WAAW,EAAE;YACfA,WAAW,CAAC9C,MAAM,EAAE;YACpB8C,WAAW,GAAG,IAAI;UACpB;QACF,CAAC,CACF;MACH;IACF,CAAC;EACH;EAEA,MAAMG,OAAOA,CAAA,EAAkB;IAC7B,OAAOnG,wBAAS,CAACoG,cAAc,CAAC,IAAI,CAAC9E,EAAE,CAAC;EAC1C;AACF;AAAC+E,OAAA,CAAArF,cAAA,GAAAA,cAAA;AAqBD,MAAMsF,qBAAqB,GAAG,CAC5B,0BAA0B,EAC1B,oBAAoB,EACpB,WAAW,EACX,gBAAgB,CACjB;AAEM,eAAeC,WAAWA,CAAAC,KAAA,EAMW;EAAA,IANV;IAChChF,QAAQ;IACRiF,gBAAgB;IAChBC,aAAa;IACbC,MAAM,GAAG,IAAI;IACbC,YAAY,GAAG;EACD,CAAC,GAAAJ,KAAA;EACf,IAAI5E,IAAI,GAAG,EAAE;EACb,IAAIiF,YAAuC;EAC3C,IAAIJ,gBAAgB,EAAE;IACpB,MAAM;MAAEK,QAAQ;MAAEC;IAAO,CAAC,GAAGN,gBAAgB;IAC7C,IAAIK,QAAQ,IAAIC,MAAM,EAAE;MACtBF,YAAY,GAAGE,MAAM,aAANA,MAAM,uBAANA,MAAM,CACjBrC,GAAG,CAAEsC,KAAK,IAAK;QACf,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;UAC7B,MAAM;YAAEhF;UAAI,CAAC,GAAGF,kBAAK,CAACC,kBAAkB,CAACiF,KAAK,CAAC;UAC/C,MAAMC,QAAQ,GAAGX,qBAAqB,CAACY,IAAI,CAAEC,CAAC,IAAKnF,GAAG,CAACoF,QAAQ,CAACD,CAAC,CAAC,CAAC;UACnE,IAAIF,QAAQ,EAAE;YACZ,OAAO;cACLjF,GAAG;cACHiF,QAAQ,EAAG,GAAEH,QAAS,IAAGG,QAAS;YACpC,CAAC;UACH;QACF,CAAC,MAAM,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;UACpC,OAAO;YACLhF,GAAG,EAAEgF,KAAK;YACVC,QAAQ,EAAG,GAAEH,QAAS,IAAGE,KAAM;UACjC,CAAC;QACH;QACA,OAAOrF,SAAS;MAClB,CAAC,CAAC,CACD0F,MAAM,CAAEL,KAAK,IAA2BA,KAAK,KAAKrF,SAAS,CAAC;IACjE;EACF;EACA,IAAI,OAAOH,QAAQ,KAAK,QAAQ,EAAE;IAChC,IAAI;MACF,MAAMK,MAAM,GAAGC,kBAAK,CAACC,kBAAkB,CAACP,QAAQ,CAAC;MACjD,IAAIK,MAAM,EAAE;QACVD,IAAI,GAAGC,MAAM,CAACG,GAAG;MACnB;IACF,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV,MAAM,IAAIC,KAAK,CAAE,kBAAiBV,QAAS,EAAC,CAAC;IAC/C;EACF,CAAC,MAAM;IACL,IAAI,CAACkF,aAAa,IAAIlF,QAAQ,CAACW,UAAU,CAAC,MAAM,CAAC,EAC/C,MAAM,IAAID,KAAK,CACb,mEAAmE,CACpE;IACHN,IAAI,GAAGJ,QAAQ;EACjB;EACA,IAAII,IAAI,CAACO,UAAU,CAAC,SAAS,CAAC,EAAEP,IAAI,GAAGA,IAAI,CAACQ,KAAK,CAAC,CAAC,CAAC;EACpD,MAAM;IAAEf,SAAS;IAAEJ,GAAG;IAAEC;EAAY,CAAC,GAAG,MAAMlB,wBAAS,CAACsH,WAAW,CAAC;IAClE9F,QAAQ,EAAEI,IAAI;IACd8E,aAAa,EAAE,CAAC,CAACA,aAAa;IAC9BC,MAAM;IACNC,YAAY;IACZ;IACAW,oBAAoB,EAAEC,OAAO,IAAI,CAAC,CAACX,YAAY;IAC/CA;EACF,CAAC,CAAC;EACF,OAAO,IAAI7F,cAAc,CAAC;IAAEK,SAAS;IAAEJ,GAAG;IAAEC;EAAY,CAAC,CAAC;AAC5D;AAEO,eAAeuG,iBAAiBA,CAAA,EAAkB;EACvD,OAAOzH,wBAAS,CAAC0H,kBAAkB,EAAE;AACvC;;AAEA;AACO,MAAMC,UAAkB,GAAGC,gBAAO;AAAAvB,OAAA,CAAAsB,UAAA,GAAAA,UAAA;AAEzC,MAAM;EAAEE,SAAS;EAAEC;AAAoB,CAAC,GAAG,EAAAtI,qBAAA,GAAAQ,wBAAS,CAAC+H,YAAY,cAAAvI,qBAAA,uBAAtBA,qBAAA,CAAAwI,IAAA,CAAAhI,wBAAS,CAAiB,KAAI,CAAC,CAAC;;AAE3E;AACO,MAAMiI,WAAoB,GAAG,CAAC,CAACJ,SAAS;;AAE/C;AAAAxB,OAAA,CAAA4B,WAAA,GAAAA,WAAA;AACO,MAAMC,qBAA8B,GAAG,CAAC,CAACJ,mBAAmB;AAAAzB,OAAA,CAAA6B,qBAAA,GAAAA,qBAAA"}
@@ -1 +1 @@
1
- {"version":"1.4.2"}
1
+ {"version":"1.5.1"}
@@ -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"}