whisper.rn 0.4.3 → 0.5.0-rc.1

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.
@@ -0,0 +1,44 @@
1
+ #pragma once
2
+
3
+ #include <jsi/jsi.h>
4
+ #include <memory>
5
+ #include <mutex>
6
+ #include <unordered_map>
7
+ #include <vector>
8
+ #include <atomic>
9
+ #include <ReactCommon/CallInvoker.h>
10
+
11
+ #if defined(__ANDROID__)
12
+ #include <android/log.h>
13
+ #include "whisper.h"
14
+ #include "rn-whisper.h"
15
+ #endif
16
+
17
+ #if defined(__APPLE__)
18
+ #if RNWHISPER_BUILD_FROM_SOURCE
19
+ #include "whisper.h"
20
+ #include "rn-whisper.h"
21
+ #else
22
+ #include <rnwhisper/whisper.h>
23
+ #include <rnwhisper/rn-whisper.h>
24
+ #endif
25
+ #endif
26
+
27
+ namespace rnwhisper_jsi {
28
+
29
+ // Context management functions
30
+ void addContext(int contextId, long contextPtr);
31
+ void removeContext(int contextId);
32
+ void addVadContext(int contextId, long vadContextPtr);
33
+ void removeVadContext(int contextId);
34
+
35
+ // Main JSI installation function
36
+ void installJSIBindings(
37
+ facebook::jsi::Runtime& runtime,
38
+ std::shared_ptr<facebook::react::CallInvoker> callInvoker
39
+ );
40
+
41
+ // Cleanup function to dispose of ThreadPool
42
+ void cleanupJSIBindings();
43
+
44
+ } // namespace rnwhisper_jsi
@@ -0,0 +1,100 @@
1
+ // From https://github.com/progschj/ThreadPool
2
+
3
+ #ifndef THREAD_POOL_H
4
+ #define THREAD_POOL_H
5
+
6
+ #include <vector>
7
+ #include <queue>
8
+ #include <memory>
9
+ #include <thread>
10
+ #include <mutex>
11
+ #include <condition_variable>
12
+ #include <future>
13
+ #include <functional>
14
+ #include <stdexcept>
15
+
16
+ class ThreadPool {
17
+ public:
18
+ ThreadPool(size_t);
19
+ template<class F, class... Args>
20
+ auto enqueue(F&& f, Args&&... args)
21
+ -> std::future<typename std::result_of<F(Args...)>::type>;
22
+ ~ThreadPool();
23
+ private:
24
+ // need to keep track of threads so we can join them
25
+ std::vector< std::thread > workers;
26
+ // the task queue
27
+ std::queue< std::function<void()> > tasks;
28
+
29
+ // synchronization
30
+ std::mutex queue_mutex;
31
+ std::condition_variable condition;
32
+ bool stop;
33
+ };
34
+
35
+ // the constructor just launches some amount of workers
36
+ inline ThreadPool::ThreadPool(size_t threads)
37
+ : stop(false)
38
+ {
39
+ for(size_t i = 0;i<threads;++i)
40
+ workers.emplace_back(
41
+ [this]
42
+ {
43
+ for(;;)
44
+ {
45
+ std::function<void()> task;
46
+
47
+ {
48
+ std::unique_lock<std::mutex> lock(this->queue_mutex);
49
+ this->condition.wait(lock,
50
+ [this]{ return this->stop || !this->tasks.empty(); });
51
+ if(this->stop && this->tasks.empty())
52
+ return;
53
+ task = std::move(this->tasks.front());
54
+ this->tasks.pop();
55
+ }
56
+
57
+ task();
58
+ }
59
+ }
60
+ );
61
+ }
62
+
63
+ // add new work item to the pool
64
+ template<class F, class... Args>
65
+ auto ThreadPool::enqueue(F&& f, Args&&... args)
66
+ -> std::future<typename std::result_of<F(Args...)>::type>
67
+ {
68
+ using return_type = typename std::result_of<F(Args...)>::type;
69
+
70
+ auto task = std::make_shared< std::packaged_task<return_type()> >(
71
+ std::bind(std::forward<F>(f), std::forward<Args>(args)...)
72
+ );
73
+
74
+ std::future<return_type> res = task->get_future();
75
+ {
76
+ std::unique_lock<std::mutex> lock(queue_mutex);
77
+
78
+ // don't allow enqueueing after stopping the pool
79
+ if(stop)
80
+ throw std::runtime_error("enqueue on stopped ThreadPool");
81
+
82
+ tasks.emplace([task](){ (*task)(); });
83
+ }
84
+ condition.notify_one();
85
+ return res;
86
+ }
87
+
88
+ // the destructor joins all threads
89
+ inline ThreadPool::~ThreadPool()
90
+ {
91
+ {
92
+ std::unique_lock<std::mutex> lock(queue_mutex);
93
+ stop = true;
94
+ }
95
+ condition.notify_all();
96
+ for(std::thread &worker: workers)
97
+ worker.join();
98
+ }
99
+
100
+ #endif
package/ios/RNWhisper.h CHANGED
@@ -8,8 +8,11 @@
8
8
  #endif
9
9
  #endif
10
10
 
11
+ #import <Foundation/Foundation.h>
11
12
  #import <React/RCTBridgeModule.h>
13
+ #import <React/RCTBridge+Private.h>
12
14
  #import <React/RCTEventEmitter.h>
15
+ #import <ReactCommon/RCTTurboModule.h>
13
16
 
14
17
  @interface RNWhisper : RCTEventEmitter <RCTBridgeModule>
15
18
 
package/ios/RNWhisper.mm CHANGED
@@ -4,6 +4,7 @@
4
4
  #import "RNWhisperDownloader.h"
5
5
  #import "RNWhisperAudioUtils.h"
6
6
  #import "RNWhisperAudioSessionUtils.h"
7
+ #import "RNWhisperJSI.h"
7
8
  #include <stdlib.h>
8
9
  #include <string>
9
10
 
@@ -90,6 +91,8 @@ RCT_REMAP_METHOD(initContext,
90
91
  }
91
92
 
92
93
  [contexts setObject:context forKey:[NSNumber numberWithInt:contextId]];
94
+ // Also add to unified context management - store raw context pointer like Android
95
+ rnwhisper_jsi::addContext(contextId, reinterpret_cast<long>([context getContext]));
93
96
 
94
97
  resolve(@{
95
98
  @"contextId": @(contextId),
@@ -345,6 +348,8 @@ RCT_REMAP_METHOD(releaseContext,
345
348
  }
346
349
  [context invalidate];
347
350
  [contexts removeObjectForKey:[NSNumber numberWithInt:contextId]];
351
+ // Also remove from unified context management
352
+ rnwhisper_jsi::removeContext(contextId);
348
353
  resolve(nil);
349
354
  }
350
355
 
@@ -455,6 +460,8 @@ RCT_REMAP_METHOD(initVadContext,
455
460
  }
456
461
 
457
462
  [vadContexts setObject:vadContext forKey:[NSNumber numberWithInt:contextId]];
463
+ // Also add to unified context management - store raw VAD context pointer like Android
464
+ rnwhisper_jsi::addVadContext(contextId, reinterpret_cast<long>([vadContext getVadContext]));
458
465
 
459
466
  resolve(@{
460
467
  @"contextId": @(contextId),
@@ -539,6 +546,8 @@ RCT_REMAP_METHOD(releaseVadContext,
539
546
  }
540
547
  [vadContext invalidate];
541
548
  [vadContexts removeObjectForKey:[NSNumber numberWithInt:contextId]];
549
+ // Also remove from unified context management
550
+ rnwhisper_jsi::removeVadContext(contextId);
542
551
  resolve(nil);
543
552
  }
544
553
 
@@ -572,6 +581,35 @@ RCT_EXPORT_METHOD(releaseAllVadContexts:(RCTPromiseResolveBlock)resolve
572
581
  }
573
582
  }
574
583
 
584
+ RCT_EXPORT_METHOD(installJSIBindings:(RCTPromiseResolveBlock)resolve
585
+ withRejecter:(RCTPromiseRejectBlock)reject)
586
+ {
587
+ RCTBridge *bridge = [RCTBridge currentBridge];
588
+ if (bridge == nil) {
589
+ reject(@"whisper_jsi_error", @"Bridge not available", nil);
590
+ return;
591
+ }
592
+
593
+ RCTCxxBridge *cxxBridge = (RCTCxxBridge *)bridge;
594
+ auto callInvoker = bridge.jsCallInvoker;
595
+ if (cxxBridge.runtime) {
596
+ facebook::jsi::Runtime *runtime = static_cast<facebook::jsi::Runtime *>(cxxBridge.runtime);
597
+
598
+ if (callInvoker) {
599
+ callInvoker->invokeAsync([runtime, callInvoker]() {
600
+ rnwhisper_jsi::installJSIBindings(*runtime, callInvoker);
601
+ });
602
+ } else {
603
+ reject(@"whisper_jsi_error", @"CallInvoker not available", nil);
604
+ return;
605
+ }
606
+
607
+ resolve(@{});
608
+ } else {
609
+ reject(@"whisper_jsi_error", @"Runtime not available", nil);
610
+ }
611
+ }
612
+
575
613
  - (void)invalidate {
576
614
  [super invalidate];
577
615
 
package/jest/mock.js CHANGED
@@ -2,6 +2,7 @@ const { NativeModules, DeviceEventEmitter } = require('react-native')
2
2
 
3
3
  if (!NativeModules.RNWhisper) {
4
4
  NativeModules.RNWhisper = {
5
+ installJSIBindings: jest.fn(() => Promise.resolve()),
5
6
  initContext: jest.fn(() => Promise.resolve({ contextId: 1 })),
6
7
  transcribeFile: jest.fn(() => Promise.resolve({
7
8
  result: ' Test',
@@ -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,GA0JnCC,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,GA4JnCC,gCAAmB,CAACC,GAAG,CAAO,WAAW,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
@@ -21,6 +21,16 @@ var _AudioSessionIos = _interopRequireDefault(require("./AudioSessionIos"));
21
21
  var _version = require("./version.json");
22
22
  var _RNWhisper$getConstan;
23
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+ let jsiWhisperTranscribeData;
25
+ let jsiWhisperVadDetectSpeech;
26
+ _NativeRNWhisper.default.installJSIBindings().then(() => {
27
+ jsiWhisperTranscribeData = global.whisperTranscribeData;
28
+ delete global.whisperTranscribeData;
29
+ jsiWhisperVadDetectSpeech = global.whisperVadDetectSpeech;
30
+ delete global.whisperVadDetectSpeech;
31
+ }).catch(e => {
32
+ console.warn('Failed to install JSI bindings', e);
33
+ });
24
34
  let EventEmitter;
25
35
  if (_reactNative.Platform.OS === 'ios') {
26
36
  // @ts-ignore
@@ -45,10 +55,12 @@ class WhisperContext {
45
55
  reasonNoGPU = '';
46
56
  constructor(_ref) {
47
57
  let {
58
+ contextPtr,
48
59
  contextId,
49
60
  gpu,
50
61
  reasonNoGPU
51
62
  } = _ref;
63
+ this.ptr = contextPtr;
52
64
  this.id = contextId;
53
65
  this.gpu = gpu;
54
66
  this.reasonNoGPU = reasonNoGPU;
@@ -146,13 +158,72 @@ class WhisperContext {
146
158
  }
147
159
 
148
160
  /**
149
- * Transcribe audio data (base64 encoded float32 PCM data)
161
+ * Transcribe audio data (base64 encoded float32 PCM data or ArrayBuffer)
150
162
  */
151
163
  transcribeData(data) {
152
164
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
165
+ if (data instanceof ArrayBuffer || data instanceof SharedArrayBuffer) {
166
+ // Use JSI function for ArrayBuffer
167
+ if (!jsiWhisperTranscribeData) {
168
+ throw new Error('JSI binding `whisperTranscribeData` not installed');
169
+ }
170
+ return this.transcribeDataArrayBuffer(data, options);
171
+ }
153
172
  return this.transcribeWithNativeMethod('transcribeData', data, options);
154
173
  }
155
174
 
175
+ /**
176
+ * Transcribe audio data from ArrayBuffer (16-bit PCM, mono, 16kHz)
177
+ */
178
+ transcribeDataArrayBuffer(data) {
179
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
180
+ const {
181
+ onProgress,
182
+ onNewSegments,
183
+ ...rest
184
+ } = options;
185
+
186
+ // Generate a unique jobId for this transcription
187
+ const jobId = Math.floor(Math.random() * 10000);
188
+ const jsiOptions = {
189
+ ...rest,
190
+ onProgress: onProgress || undefined,
191
+ onNewSegments: onNewSegments || undefined,
192
+ jobId // Pass jobId to native implementation
193
+ };
194
+
195
+ let isAborted = false;
196
+ const promise = jsiWhisperTranscribeData(this.id, jsiOptions, data).then(result => {
197
+ if (isAborted) {
198
+ return {
199
+ ...result,
200
+ isAborted: true
201
+ };
202
+ }
203
+ return result;
204
+ }).catch(error => {
205
+ if (isAborted) {
206
+ return {
207
+ isAborted: true,
208
+ error: 'Transcription aborted'
209
+ };
210
+ }
211
+ throw error;
212
+ });
213
+ return {
214
+ stop: async () => {
215
+ isAborted = true;
216
+ try {
217
+ // Use the existing native abort method
218
+ await _NativeRNWhisper.default.abortTranscribe(this.id, jobId);
219
+ } catch (error) {
220
+ // Ignore errors if context is already released or job doesn't exist
221
+ }
222
+ },
223
+ promise
224
+ };
225
+ }
226
+
156
227
  /** Transcribe the microphone audio stream, the microphone user permission is required */
157
228
  async transcribeRealtime() {
158
229
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -350,6 +421,7 @@ async function initWhisper(_ref2) {
350
421
  }
351
422
  if (path.startsWith('file://')) path = path.slice(7);
352
423
  const {
424
+ contextPtr,
353
425
  contextId,
354
426
  gpu,
355
427
  reasonNoGPU
@@ -364,6 +436,7 @@ async function initWhisper(_ref2) {
364
436
  coreMLAssets
365
437
  });
366
438
  return new WhisperContext({
439
+ contextPtr,
367
440
  contextId,
368
441
  gpu,
369
442
  reasonNoGPU
@@ -433,10 +506,18 @@ class WhisperVadContext {
433
506
  }
434
507
 
435
508
  /**
436
- * Detect speech segments in raw audio data (base64 encoded float32 PCM data)
509
+ * Detect speech segments in raw audio data (base64 encoded float32 PCM data or ArrayBuffer)
437
510
  */
438
511
  async detectSpeechData(audioData) {
439
512
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
513
+ if (audioData instanceof ArrayBuffer || audioData instanceof SharedArrayBuffer) {
514
+ // Use JSI function for ArrayBuffer
515
+ if (!jsiWhisperVadDetectSpeech) {
516
+ throw new Error('JSI binding `whisperVadDetectSpeech` not installed');
517
+ }
518
+ const result = await jsiWhisperVadDetectSpeech(this.id, options, audioData);
519
+ return result.segments || [];
520
+ }
440
521
  return _NativeRNWhisper.default.vadDetectSpeech(this.id, audioData, options);
441
522
  }
442
523
  async release() {
@@ -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","gpu","reasonNoGPU","constructor","_ref","contextId","id","transcribeWithNativeMethod","method","data","arguments","length","undefined","jobId","Math","floor","random","onProgress","onNewSegments","rest","progressListener","lastProgress","addListener","evt","progress","removeProgressListener","remove","newSegmentsListener","result","removeNewSegmenetsListener","stop","abortTranscribe","promise","then","isAborted","catch","e","transcribe","filePathOrBase64","path","source","Image","resolveAssetSource","uri","Error","startsWith","slice","transcribeData","transcribeRealtime","lastTranscribePayload","slices","sliceIndex","tOffset","putSlice","payload","isUseSlices","_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","bench","maxThreads","config","nThreads","encodeMs","decodeMs","batchMs","promptMs","JSON","parse","release","releaseContext","exports","coreMLModelAssetPaths","initWhisper","_ref2","filePath","coreMLModelAsset","isBundleAsset","useGpu","useCoreMLIos","useFlashAttn","coreMLAssets","filename","assets","asset","filepath","find","p","includes","filter","initContext","downloadCoreMLAssets","__DEV__","releaseAllWhisper","releaseAllContexts","libVersion","version","useCoreML","coreMLAllowFallback","getConstants","call","isUseCoreML","isCoreMLAllowFallback","WhisperVadContext","_ref3","detectSpeech","vadDetectSpeech","vadDetectSpeechFile","detectSpeechData","audioData","releaseVadContext","initWhisperVad","_ref4","initVadContext","releaseAllWhisperVad","releaseAllVadContexts"],"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","jsiWhisperTranscribeData","jsiWhisperVadDetectSpeech","RNWhisper","installJSIBindings","then","global","whisperTranscribeData","whisperVadDetectSpeech","catch","e","console","warn","EventEmitter","Platform","OS","NativeEventEmitter","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","contextPtr","contextId","ptr","id","transcribeWithNativeMethod","method","data","arguments","length","undefined","jobId","Math","floor","random","onProgress","onNewSegments","rest","progressListener","lastProgress","addListener","evt","progress","removeProgressListener","remove","newSegmentsListener","result","removeNewSegmenetsListener","stop","abortTranscribe","promise","isAborted","transcribe","filePathOrBase64","path","source","Image","resolveAssetSource","uri","Error","startsWith","slice","transcribeData","ArrayBuffer","SharedArrayBuffer","transcribeDataArrayBuffer","jsiOptions","error","transcribeRealtime","lastTranscribePayload","slices","sliceIndex","tOffset","putSlice","payload","isUseSlices","_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","bench","maxThreads","config","nThreads","encodeMs","decodeMs","batchMs","promptMs","JSON","parse","release","releaseContext","exports","coreMLModelAssetPaths","initWhisper","_ref2","filePath","coreMLModelAsset","isBundleAsset","useGpu","useCoreMLIos","useFlashAttn","coreMLAssets","filename","assets","asset","filepath","find","p","includes","filter","initContext","downloadCoreMLAssets","__DEV__","releaseAllWhisper","releaseAllContexts","libVersion","version","useCoreML","coreMLAllowFallback","getConstants","call","isUseCoreML","isCoreMLAllowFallback","WhisperVadContext","_ref3","detectSpeech","vadDetectSpeech","vadDetectSpeechFile","detectSpeechData","audioData","releaseVadContext","initWhisperVad","_ref4","initVadContext","releaseAllWhisperVad","releaseAllVadContexts"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeRNWhisper.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;;AAwJA,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;;AA0JA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,WAAW,CAAC"}
@@ -3,6 +3,16 @@ import { NativeEventEmitter, DeviceEventEmitter, Platform, Image } from 'react-n
3
3
  import RNWhisper from './NativeRNWhisper';
4
4
  import AudioSessionIos from './AudioSessionIos';
5
5
  import { version } from './version.json';
6
+ let jsiWhisperTranscribeData;
7
+ let jsiWhisperVadDetectSpeech;
8
+ RNWhisper.installJSIBindings().then(() => {
9
+ jsiWhisperTranscribeData = global.whisperTranscribeData;
10
+ delete global.whisperTranscribeData;
11
+ jsiWhisperVadDetectSpeech = global.whisperVadDetectSpeech;
12
+ delete global.whisperVadDetectSpeech;
13
+ }).catch(e => {
14
+ console.warn('Failed to install JSI bindings', e);
15
+ });
6
16
  let EventEmitter;
7
17
  if (Platform.OS === 'ios') {
8
18
  // @ts-ignore
@@ -27,10 +37,12 @@ export class WhisperContext {
27
37
  reasonNoGPU = '';
28
38
  constructor(_ref) {
29
39
  let {
40
+ contextPtr,
30
41
  contextId,
31
42
  gpu,
32
43
  reasonNoGPU
33
44
  } = _ref;
45
+ this.ptr = contextPtr;
34
46
  this.id = contextId;
35
47
  this.gpu = gpu;
36
48
  this.reasonNoGPU = reasonNoGPU;
@@ -128,13 +140,72 @@ export class WhisperContext {
128
140
  }
129
141
 
130
142
  /**
131
- * Transcribe audio data (base64 encoded float32 PCM data)
143
+ * Transcribe audio data (base64 encoded float32 PCM data or ArrayBuffer)
132
144
  */
133
145
  transcribeData(data) {
134
146
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
147
+ if (data instanceof ArrayBuffer || data instanceof SharedArrayBuffer) {
148
+ // Use JSI function for ArrayBuffer
149
+ if (!jsiWhisperTranscribeData) {
150
+ throw new Error('JSI binding `whisperTranscribeData` not installed');
151
+ }
152
+ return this.transcribeDataArrayBuffer(data, options);
153
+ }
135
154
  return this.transcribeWithNativeMethod('transcribeData', data, options);
136
155
  }
137
156
 
157
+ /**
158
+ * Transcribe audio data from ArrayBuffer (16-bit PCM, mono, 16kHz)
159
+ */
160
+ transcribeDataArrayBuffer(data) {
161
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
162
+ const {
163
+ onProgress,
164
+ onNewSegments,
165
+ ...rest
166
+ } = options;
167
+
168
+ // Generate a unique jobId for this transcription
169
+ const jobId = Math.floor(Math.random() * 10000);
170
+ const jsiOptions = {
171
+ ...rest,
172
+ onProgress: onProgress || undefined,
173
+ onNewSegments: onNewSegments || undefined,
174
+ jobId // Pass jobId to native implementation
175
+ };
176
+
177
+ let isAborted = false;
178
+ const promise = jsiWhisperTranscribeData(this.id, jsiOptions, data).then(result => {
179
+ if (isAborted) {
180
+ return {
181
+ ...result,
182
+ isAborted: true
183
+ };
184
+ }
185
+ return result;
186
+ }).catch(error => {
187
+ if (isAborted) {
188
+ return {
189
+ isAborted: true,
190
+ error: 'Transcription aborted'
191
+ };
192
+ }
193
+ throw error;
194
+ });
195
+ return {
196
+ stop: async () => {
197
+ isAborted = true;
198
+ try {
199
+ // Use the existing native abort method
200
+ await RNWhisper.abortTranscribe(this.id, jobId);
201
+ } catch (error) {
202
+ // Ignore errors if context is already released or job doesn't exist
203
+ }
204
+ },
205
+ promise
206
+ };
207
+ }
208
+
138
209
  /** Transcribe the microphone audio stream, the microphone user permission is required */
139
210
  async transcribeRealtime() {
140
211
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -331,6 +402,7 @@ export async function initWhisper(_ref2) {
331
402
  }
332
403
  if (path.startsWith('file://')) path = path.slice(7);
333
404
  const {
405
+ contextPtr,
334
406
  contextId,
335
407
  gpu,
336
408
  reasonNoGPU
@@ -345,6 +417,7 @@ export async function initWhisper(_ref2) {
345
417
  coreMLAssets
346
418
  });
347
419
  return new WhisperContext({
420
+ contextPtr,
348
421
  contextId,
349
422
  gpu,
350
423
  reasonNoGPU
@@ -417,10 +490,18 @@ export class WhisperVadContext {
417
490
  }
418
491
 
419
492
  /**
420
- * Detect speech segments in raw audio data (base64 encoded float32 PCM data)
493
+ * Detect speech segments in raw audio data (base64 encoded float32 PCM data or ArrayBuffer)
421
494
  */
422
495
  async detectSpeechData(audioData) {
423
496
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
497
+ if (audioData instanceof ArrayBuffer || audioData instanceof SharedArrayBuffer) {
498
+ // Use JSI function for ArrayBuffer
499
+ if (!jsiWhisperVadDetectSpeech) {
500
+ throw new Error('JSI binding `whisperVadDetectSpeech` not installed');
501
+ }
502
+ const result = await jsiWhisperVadDetectSpeech(this.id, options, audioData);
503
+ return result.segments || [];
504
+ }
424
505
  return RNWhisper.vadDetectSpeech(this.id, audioData, options);
425
506
  }
426
507
  async release() {