whisper.rn 0.3.7 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/android/src/main/java/com/rnwhisper/AudioUtils.java +119 -0
- package/android/src/main/java/com/rnwhisper/WhisperContext.java +37 -116
- package/android/src/main/jni.cpp +23 -12
- package/android/src/newarch/java/com/rnwhisper/RNWhisperModule.java +26 -0
- package/ios/RNWhisper.mm +81 -22
- package/ios/RNWhisper.xcodeproj/project.pbxproj +6 -0
- package/ios/RNWhisper.xcodeproj/project.xcworkspace/xcuserdata/jhen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNWhisperAudioSessionUtils.h +13 -0
- package/ios/RNWhisperAudioSessionUtils.m +91 -0
- package/ios/RNWhisperAudioUtils.h +1 -0
- package/ios/RNWhisperAudioUtils.m +21 -0
- package/ios/RNWhisperContext.h +1 -0
- package/ios/RNWhisperContext.mm +56 -28
- package/jest/mock.js +10 -0
- package/lib/commonjs/AudioSessionIos.js +91 -0
- package/lib/commonjs/AudioSessionIos.js.map +1 -0
- package/lib/commonjs/NativeRNWhisper.js.map +1 -1
- package/lib/commonjs/index.js +82 -14
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/AudioSessionIos.js +83 -0
- package/lib/module/AudioSessionIos.js.map +1 -0
- package/lib/module/NativeRNWhisper.js.map +1 -1
- package/lib/module/index.js +77 -14
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/AudioSessionIos.d.ts +54 -0
- package/lib/typescript/AudioSessionIos.d.ts.map +1 -0
- package/lib/typescript/NativeRNWhisper.d.ts +8 -0
- package/lib/typescript/NativeRNWhisper.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +37 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/AudioSessionIos.ts +90 -0
- package/src/NativeRNWhisper.ts +11 -1
- package/src/index.ts +153 -26
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import <AVFoundation/AVFoundation.h>
|
|
3
|
+
|
|
4
|
+
@interface RNWhisperAudioSessionUtils : NSObject
|
|
5
|
+
|
|
6
|
+
+(NSString *)getCurrentCategory;
|
|
7
|
+
+(NSArray *)getCurrentOptions;
|
|
8
|
+
+(NSString *)getCurrentMode;
|
|
9
|
+
+(void)setCategory:(NSString *)category options:(NSArray *)options error:(NSError **)error;
|
|
10
|
+
+(void)setMode:(NSString *)mode error:(NSError **)error;
|
|
11
|
+
+(void)setActive:(BOOL)active error:(NSError **)error;
|
|
12
|
+
|
|
13
|
+
@end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#import "RNWhisperAudioSessionUtils.h"
|
|
2
|
+
|
|
3
|
+
#if defined(TARGET_OS_TV) && TARGET_OS_TV == 1
|
|
4
|
+
#define APPLE_TV
|
|
5
|
+
#endif
|
|
6
|
+
|
|
7
|
+
@implementation RNWhisperAudioSessionUtils
|
|
8
|
+
|
|
9
|
+
static NSDictionary *_categories;
|
|
10
|
+
static NSDictionary *_options;
|
|
11
|
+
static NSDictionary *_modes;
|
|
12
|
+
|
|
13
|
+
+ (void)initialize {
|
|
14
|
+
_categories = @{
|
|
15
|
+
@"Ambient": AVAudioSessionCategoryAmbient,
|
|
16
|
+
@"SoloAmbient": AVAudioSessionCategorySoloAmbient,
|
|
17
|
+
@"Playback": AVAudioSessionCategoryPlayback,
|
|
18
|
+
@"Record": AVAudioSessionCategoryRecord,
|
|
19
|
+
@"PlayAndRecord": AVAudioSessionCategoryPlayAndRecord,
|
|
20
|
+
@"MultiRoute": AVAudioSessionCategoryMultiRoute
|
|
21
|
+
};
|
|
22
|
+
_options = @{
|
|
23
|
+
@"MixWithOthers": @(AVAudioSessionCategoryOptionMixWithOthers),
|
|
24
|
+
@"DuckOthers": @(AVAudioSessionCategoryOptionDuckOthers),
|
|
25
|
+
@"InterruptSpokenAudioAndMixWithOthers": @(AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers),
|
|
26
|
+
@"AllowBluetoothA2DP": @(AVAudioSessionCategoryOptionAllowBluetoothA2DP),
|
|
27
|
+
@"AllowAirPlay": @(AVAudioSessionCategoryOptionAllowAirPlay),
|
|
28
|
+
#if !defined(APPLE_TV)
|
|
29
|
+
@"AllowBluetooth": @(AVAudioSessionCategoryOptionAllowBluetooth),
|
|
30
|
+
@"DefaultToSpeaker": @(AVAudioSessionCategoryOptionDefaultToSpeaker)
|
|
31
|
+
#endif
|
|
32
|
+
};
|
|
33
|
+
_modes = @{
|
|
34
|
+
@"Default": AVAudioSessionModeDefault,
|
|
35
|
+
@"VoiceChat": AVAudioSessionModeVoiceChat,
|
|
36
|
+
@"VideoChat": AVAudioSessionModeVideoChat,
|
|
37
|
+
@"GameChat": AVAudioSessionModeGameChat,
|
|
38
|
+
@"VideoRecording": AVAudioSessionModeVideoRecording,
|
|
39
|
+
@"Measurement": AVAudioSessionModeMeasurement,
|
|
40
|
+
@"MoviePlayback": AVAudioSessionModeMoviePlayback,
|
|
41
|
+
@"SpokenAudio": AVAudioSessionModeSpokenAudio
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
+(NSString *)getCurrentCategory {
|
|
46
|
+
AVAudioSession *session = [AVAudioSession sharedInstance];
|
|
47
|
+
return session.category;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
+(NSArray *)getCurrentOptions {
|
|
51
|
+
AVAudioSession *session = [AVAudioSession sharedInstance];
|
|
52
|
+
AVAudioSessionCategoryOptions options = session.categoryOptions;
|
|
53
|
+
NSMutableArray *result = [NSMutableArray array];
|
|
54
|
+
for (NSString *key in _options) {
|
|
55
|
+
if ((options & [[_options objectForKey:key] unsignedIntegerValue]) != 0) {
|
|
56
|
+
[result addObject:key];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
+(NSString *)getCurrentMode {
|
|
63
|
+
AVAudioSession *session = [AVAudioSession sharedInstance];
|
|
64
|
+
return session.mode;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
+(AVAudioSessionCategoryOptions)getOptions:(NSArray *)options {
|
|
68
|
+
AVAudioSessionCategoryOptions result = 0;
|
|
69
|
+
for (NSString *option in options) {
|
|
70
|
+
result |= [[_options objectForKey:option] unsignedIntegerValue];
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
+(void)setCategory:(NSString *)category options:(NSArray *)options error:(NSError **)error {
|
|
76
|
+
AVAudioSession *session = [AVAudioSession sharedInstance];
|
|
77
|
+
[session setCategory:[_categories objectForKey:category] withOptions:[self getOptions:options] error:error];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
+(void)setMode:(NSString *)mode error:(NSError **)error {
|
|
81
|
+
AVAudioSession *session = [AVAudioSession sharedInstance];
|
|
82
|
+
[session setMode:[_modes objectForKey:mode] error:error];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
+(void)setActive:(BOOL)active error:(NSError **)error {
|
|
86
|
+
AVAudioSession *session = [AVAudioSession sharedInstance];
|
|
87
|
+
[session setActive:active error:error];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@end
|
|
@@ -4,5 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
+ (NSData *)concatShortBuffers:(NSMutableArray<NSValue *> *)buffers sliceNSamples:(NSMutableArray<NSNumber *> *)sliceNSamples;
|
|
6
6
|
+ (void)saveWavFile:(NSData *)rawData audioOutputFile:(NSString *)audioOutputFile;
|
|
7
|
+
+ (float *)decodeWaveFile:(NSString*)filePath count:(int *)count;
|
|
7
8
|
|
|
8
9
|
@end
|
|
@@ -59,4 +59,25 @@
|
|
|
59
59
|
[outputData writeToFile:audioOutputFile atomically:YES];
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
+ (float *)decodeWaveFile:(NSString*)filePath count:(int *)count {
|
|
63
|
+
NSURL *url = [NSURL fileURLWithPath:filePath];
|
|
64
|
+
NSData *fileData = [NSData dataWithContentsOfURL:url];
|
|
65
|
+
if (fileData == nil) {
|
|
66
|
+
return nil;
|
|
67
|
+
}
|
|
68
|
+
NSMutableData *waveData = [[NSMutableData alloc] init];
|
|
69
|
+
[waveData appendData:[fileData subdataWithRange:NSMakeRange(44, [fileData length]-44)]];
|
|
70
|
+
const short *shortArray = (const short *)[waveData bytes];
|
|
71
|
+
int shortCount = (int) ([waveData length] / sizeof(short));
|
|
72
|
+
float *floatArray = (float *) malloc(shortCount * sizeof(float));
|
|
73
|
+
for (NSInteger i = 0; i < shortCount; i++) {
|
|
74
|
+
float floatValue = ((float)shortArray[i]) / 32767.0;
|
|
75
|
+
floatValue = MAX(floatValue, -1.0);
|
|
76
|
+
floatValue = MIN(floatValue, 1.0);
|
|
77
|
+
floatArray[i] = floatValue;
|
|
78
|
+
}
|
|
79
|
+
*count = shortCount;
|
|
80
|
+
return floatArray;
|
|
81
|
+
}
|
|
82
|
+
|
|
62
83
|
@end
|
package/ios/RNWhisperContext.h
CHANGED
|
@@ -53,6 +53,7 @@ typedef struct {
|
|
|
53
53
|
audioDataCount:(int)audioDataCount
|
|
54
54
|
options:(NSDictionary *)options
|
|
55
55
|
onProgress:(void (^)(int))onProgress
|
|
56
|
+
onNewSegments:(void (^)(NSDictionary *))onNewSegments
|
|
56
57
|
onEnd:(void (^)(int))onEnd;
|
|
57
58
|
- (void)stopTranscribe:(int)jobId;
|
|
58
59
|
- (void)stopCurrentTranscribe;
|
package/ios/RNWhisperContext.mm
CHANGED
|
@@ -201,7 +201,8 @@ void AudioInputCallback(void * inUserData,
|
|
|
201
201
|
audioBufferF32[i] = (float)audioBufferI16[i] / 32768.0f;
|
|
202
202
|
}
|
|
203
203
|
CFTimeInterval timeStart = CACurrentMediaTime();
|
|
204
|
-
|
|
204
|
+
struct whisper_full_params params = [state->mSelf getParams:state->options jobId:state->jobId];
|
|
205
|
+
int code = [state->mSelf fullTranscribe:state->jobId params:params audioData:audioBufferF32 audioDataCount:state->nSamplesTranscribing];
|
|
205
206
|
free(audioBufferF32);
|
|
206
207
|
CFTimeInterval timeEnd = CACurrentMediaTime();
|
|
207
208
|
const float timeRecording = (float) state->nSamplesTranscribing / (float) state->dataFormat.mSampleRate;
|
|
@@ -317,18 +318,70 @@ void AudioInputCallback(void * inUserData,
|
|
|
317
318
|
return status;
|
|
318
319
|
}
|
|
319
320
|
|
|
321
|
+
struct rnwhisper_segments_callback_data {
|
|
322
|
+
void (^onNewSegments)(NSDictionary *);
|
|
323
|
+
int total_n_new;
|
|
324
|
+
};
|
|
325
|
+
|
|
320
326
|
- (void)transcribeFile:(int)jobId
|
|
321
327
|
audioData:(float *)audioData
|
|
322
328
|
audioDataCount:(int)audioDataCount
|
|
323
329
|
options:(NSDictionary *)options
|
|
324
330
|
onProgress:(void (^)(int))onProgress
|
|
331
|
+
onNewSegments:(void (^)(NSDictionary *))onNewSegments
|
|
325
332
|
onEnd:(void (^)(int))onEnd
|
|
326
333
|
{
|
|
327
334
|
dispatch_async(dQueue, ^{
|
|
328
335
|
self->recordState.isStoppedByAction = false;
|
|
329
336
|
self->recordState.isTranscribing = true;
|
|
330
337
|
self->recordState.jobId = jobId;
|
|
331
|
-
|
|
338
|
+
|
|
339
|
+
whisper_full_params params = [self getParams:options jobId:jobId];
|
|
340
|
+
if (options[@"onProgress"] && [options[@"onProgress"] boolValue]) {
|
|
341
|
+
params.progress_callback = [](struct whisper_context * /*ctx*/, struct whisper_state * /*state*/, int progress, void * user_data) {
|
|
342
|
+
void (^onProgress)(int) = (__bridge void (^)(int))user_data;
|
|
343
|
+
onProgress(progress);
|
|
344
|
+
};
|
|
345
|
+
params.progress_callback_user_data = (__bridge void *)(onProgress);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
if (options[@"onNewSegments"] && [options[@"onNewSegments"] boolValue]) {
|
|
349
|
+
params.new_segment_callback = [](struct whisper_context * ctx, struct whisper_state * /*state*/, int n_new, void * user_data) {
|
|
350
|
+
struct rnwhisper_segments_callback_data *data = (struct rnwhisper_segments_callback_data *)user_data;
|
|
351
|
+
data->total_n_new += n_new;
|
|
352
|
+
|
|
353
|
+
NSString *text = @"";
|
|
354
|
+
NSMutableArray *segments = [[NSMutableArray alloc] init];
|
|
355
|
+
for (int i = data->total_n_new - n_new; i < data->total_n_new; i++) {
|
|
356
|
+
const char * text_cur = whisper_full_get_segment_text(ctx, i);
|
|
357
|
+
text = [text stringByAppendingString:[NSString stringWithUTF8String:text_cur]];
|
|
358
|
+
|
|
359
|
+
const int64_t t0 = whisper_full_get_segment_t0(ctx, i);
|
|
360
|
+
const int64_t t1 = whisper_full_get_segment_t1(ctx, i);
|
|
361
|
+
NSDictionary *segment = @{
|
|
362
|
+
@"text": [NSString stringWithUTF8String:text_cur],
|
|
363
|
+
@"t0": [NSNumber numberWithLongLong:t0],
|
|
364
|
+
@"t1": [NSNumber numberWithLongLong:t1]
|
|
365
|
+
};
|
|
366
|
+
[segments addObject:segment];
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
NSDictionary *result = @{
|
|
370
|
+
@"nNew": [NSNumber numberWithInt:n_new],
|
|
371
|
+
@"totalNNew": [NSNumber numberWithInt:data->total_n_new],
|
|
372
|
+
@"result": text,
|
|
373
|
+
@"segments": segments
|
|
374
|
+
};
|
|
375
|
+
void (^onNewSegments)(NSDictionary *) = (void (^)(NSDictionary *))data->onNewSegments;
|
|
376
|
+
onNewSegments(result);
|
|
377
|
+
};
|
|
378
|
+
struct rnwhisper_segments_callback_data user_data = {
|
|
379
|
+
.onNewSegments = onNewSegments,
|
|
380
|
+
.total_n_new = 0
|
|
381
|
+
};
|
|
382
|
+
params.new_segment_callback_user_data = &user_data;
|
|
383
|
+
}
|
|
384
|
+
int code = [self fullTranscribe:jobId params:params audioData:audioData audioDataCount:audioDataCount];
|
|
332
385
|
self->recordState.jobId = -1;
|
|
333
386
|
self->recordState.isTranscribing = false;
|
|
334
387
|
onEnd(code);
|
|
@@ -428,36 +481,11 @@ void AudioInputCallback(void * inUserData,
|
|
|
428
481
|
return params;
|
|
429
482
|
}
|
|
430
483
|
|
|
431
|
-
- (int)fullTranscribeWithProgress:(void (^)(int))onProgress
|
|
432
|
-
jobId:(int)jobId
|
|
433
|
-
audioData:(float *)audioData
|
|
434
|
-
audioDataCount:(int)audioDataCount
|
|
435
|
-
options:(NSDictionary *)options
|
|
436
|
-
{
|
|
437
|
-
struct whisper_full_params params = [self getParams:options jobId:jobId];
|
|
438
|
-
if (options[@"onProgress"] && [options[@"onProgress"] boolValue]) {
|
|
439
|
-
params.progress_callback = [](struct whisper_context * /*ctx*/, struct whisper_state * /*state*/, int progress, void * user_data) {
|
|
440
|
-
void (^onProgress)(int) = (__bridge void (^)(int))user_data;
|
|
441
|
-
onProgress(progress);
|
|
442
|
-
};
|
|
443
|
-
params.progress_callback_user_data = (__bridge void *)(onProgress);
|
|
444
|
-
}
|
|
445
|
-
whisper_reset_timings(self->ctx);
|
|
446
|
-
|
|
447
|
-
int code = whisper_full(self->ctx, params, audioData, audioDataCount);
|
|
448
|
-
rn_whisper_remove_abort_map(jobId);
|
|
449
|
-
// if (code == 0) {
|
|
450
|
-
// whisper_print_timings(self->ctx);
|
|
451
|
-
// }
|
|
452
|
-
return code;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
484
|
- (int)fullTranscribe:(int)jobId
|
|
485
|
+
params:(struct whisper_full_params)params
|
|
456
486
|
audioData:(float *)audioData
|
|
457
487
|
audioDataCount:(int)audioDataCount
|
|
458
|
-
options:(NSDictionary *)options
|
|
459
488
|
{
|
|
460
|
-
struct whisper_full_params params = [self getParams:options jobId:jobId];
|
|
461
489
|
whisper_reset_timings(self->ctx);
|
|
462
490
|
|
|
463
491
|
int code = whisper_full(self->ctx, params, audioData, audioDataCount);
|
package/jest/mock.js
CHANGED
|
@@ -48,6 +48,16 @@ if (!NativeModules.RNWhisper) {
|
|
|
48
48
|
releaseContext: jest.fn(() => Promise.resolve()),
|
|
49
49
|
releaseAllContexts: jest.fn(() => Promise.resolve()),
|
|
50
50
|
|
|
51
|
+
// iOS AudioSession utils
|
|
52
|
+
getAudioSessionCurrentCategory: jest.fn(() => Promise.resolve({
|
|
53
|
+
category: 'AVAudioSessionCategoryPlayAndRecord',
|
|
54
|
+
options: [],
|
|
55
|
+
})),
|
|
56
|
+
getAudioSessionCurrentMode: jest.fn(() => Promise.resolve('')),
|
|
57
|
+
setAudioSessionCategory: jest.fn(() => Promise.resolve()),
|
|
58
|
+
setAudioSessionMode: jest.fn(() => Promise.resolve()),
|
|
59
|
+
setAudioSessionActive: jest.fn(() => Promise.resolve()),
|
|
60
|
+
|
|
51
61
|
// For NativeEventEmitter
|
|
52
62
|
addListener: jest.fn(),
|
|
53
63
|
removeListeners: jest.fn(),
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.AudioSessionModeIos = exports.AudioSessionCategoryOptionIos = exports.AudioSessionCategoryIos = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _NativeRNWhisper = _interopRequireDefault(require("./NativeRNWhisper"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
/**
|
|
11
|
+
* @see https://developer.apple.com/documentation/avfaudio/avaudiosessioncategory?language=objc
|
|
12
|
+
*/
|
|
13
|
+
let AudioSessionCategoryIos;
|
|
14
|
+
/**
|
|
15
|
+
* @see https://developer.apple.com/documentation/avfaudio/avaudiosessioncategoryoptions?language=objc
|
|
16
|
+
*/
|
|
17
|
+
exports.AudioSessionCategoryIos = AudioSessionCategoryIos;
|
|
18
|
+
(function (AudioSessionCategoryIos) {
|
|
19
|
+
AudioSessionCategoryIos["Ambient"] = "Ambient";
|
|
20
|
+
AudioSessionCategoryIos["SoloAmbient"] = "SoloAmbient";
|
|
21
|
+
AudioSessionCategoryIos["Playback"] = "Playback";
|
|
22
|
+
AudioSessionCategoryIos["Record"] = "Record";
|
|
23
|
+
AudioSessionCategoryIos["PlayAndRecord"] = "PlayAndRecord";
|
|
24
|
+
AudioSessionCategoryIos["MultiRoute"] = "MultiRoute";
|
|
25
|
+
})(AudioSessionCategoryIos || (exports.AudioSessionCategoryIos = AudioSessionCategoryIos = {}));
|
|
26
|
+
let AudioSessionCategoryOptionIos;
|
|
27
|
+
/**
|
|
28
|
+
* @see https://developer.apple.com/documentation/avfaudio/avaudiosessionmode?language=objc
|
|
29
|
+
*/
|
|
30
|
+
exports.AudioSessionCategoryOptionIos = AudioSessionCategoryOptionIos;
|
|
31
|
+
(function (AudioSessionCategoryOptionIos) {
|
|
32
|
+
AudioSessionCategoryOptionIos["MixWithOthers"] = "MixWithOthers";
|
|
33
|
+
AudioSessionCategoryOptionIos["DuckOthers"] = "DuckOthers";
|
|
34
|
+
AudioSessionCategoryOptionIos["InterruptSpokenAudioAndMixWithOthers"] = "InterruptSpokenAudioAndMixWithOthers";
|
|
35
|
+
AudioSessionCategoryOptionIos["AllowBluetooth"] = "AllowBluetooth";
|
|
36
|
+
AudioSessionCategoryOptionIos["AllowBluetoothA2DP"] = "AllowBluetoothA2DP";
|
|
37
|
+
AudioSessionCategoryOptionIos["AllowAirPlay"] = "AllowAirPlay";
|
|
38
|
+
AudioSessionCategoryOptionIos["DefaultToSpeaker"] = "DefaultToSpeaker";
|
|
39
|
+
})(AudioSessionCategoryOptionIos || (exports.AudioSessionCategoryOptionIos = AudioSessionCategoryOptionIos = {}));
|
|
40
|
+
let AudioSessionModeIos;
|
|
41
|
+
exports.AudioSessionModeIos = AudioSessionModeIos;
|
|
42
|
+
(function (AudioSessionModeIos) {
|
|
43
|
+
AudioSessionModeIos["Default"] = "Default";
|
|
44
|
+
AudioSessionModeIos["VoiceChat"] = "VoiceChat";
|
|
45
|
+
AudioSessionModeIos["VideoChat"] = "VideoChat";
|
|
46
|
+
AudioSessionModeIos["GameChat"] = "GameChat";
|
|
47
|
+
AudioSessionModeIos["VideoRecording"] = "VideoRecording";
|
|
48
|
+
AudioSessionModeIos["Measurement"] = "Measurement";
|
|
49
|
+
AudioSessionModeIos["MoviePlayback"] = "MoviePlayback";
|
|
50
|
+
AudioSessionModeIos["SpokenAudio"] = "SpokenAudio";
|
|
51
|
+
})(AudioSessionModeIos || (exports.AudioSessionModeIos = AudioSessionModeIos = {}));
|
|
52
|
+
const checkPlatform = () => {
|
|
53
|
+
if (_reactNative.Platform.OS !== 'ios') throw new Error('Only supported on iOS');
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* AudioSession Utility, iOS only.
|
|
58
|
+
*/
|
|
59
|
+
var _default = {
|
|
60
|
+
Category: AudioSessionCategoryIos,
|
|
61
|
+
CategoryOption: AudioSessionCategoryOptionIos,
|
|
62
|
+
Mode: AudioSessionModeIos,
|
|
63
|
+
getCurrentCategory: async () => {
|
|
64
|
+
var _result$options;
|
|
65
|
+
checkPlatform();
|
|
66
|
+
const result = await _NativeRNWhisper.default.getAudioSessionCurrentCategory();
|
|
67
|
+
return {
|
|
68
|
+
category: result.category.replace('AVAudioSessionCategory', ''),
|
|
69
|
+
options: (_result$options = result.options) === null || _result$options === void 0 ? void 0 : _result$options.map(option => option.replace('AVAudioSessionCategoryOption', ''))
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
getCurrentMode: async () => {
|
|
73
|
+
checkPlatform();
|
|
74
|
+
const mode = await _NativeRNWhisper.default.getAudioSessionCurrentMode();
|
|
75
|
+
return mode.replace('AVAudioSessionMode', '');
|
|
76
|
+
},
|
|
77
|
+
setCategory: async (category, options) => {
|
|
78
|
+
checkPlatform();
|
|
79
|
+
await _NativeRNWhisper.default.setAudioSessionCategory(category, options);
|
|
80
|
+
},
|
|
81
|
+
setMode: async mode => {
|
|
82
|
+
checkPlatform();
|
|
83
|
+
await _NativeRNWhisper.default.setAudioSessionMode(mode);
|
|
84
|
+
},
|
|
85
|
+
setActive: async active => {
|
|
86
|
+
checkPlatform();
|
|
87
|
+
await _NativeRNWhisper.default.setAudioSessionActive(active);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
exports.default = _default;
|
|
91
|
+
//# sourceMappingURL=AudioSessionIos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_NativeRNWhisper","_interopRequireDefault","obj","__esModule","default","AudioSessionCategoryIos","exports","AudioSessionCategoryOptionIos","AudioSessionModeIos","checkPlatform","Platform","OS","Error","_default","Category","CategoryOption","Mode","getCurrentCategory","_result$options","result","RNWhisper","getAudioSessionCurrentCategory","category","replace","options","map","option","getCurrentMode","mode","getAudioSessionCurrentMode","setCategory","setAudioSessionCategory","setMode","setAudioSessionMode","setActive","active","setAudioSessionActive"],"sourceRoot":"../../src","sources":["AudioSessionIos.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","get","exports","default"],"sourceRoot":"../../src","sources":["NativeRNWhisper.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAkD,IAAAC,QAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","get","exports","default"],"sourceRoot":"../../src","sources":["NativeRNWhisper.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAkD,IAAAC,QAAA,GAyFnCC,gCAAmB,CAACC,GAAG,CAAO,WAAW,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -3,12 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "AudioSessionIos", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _AudioSessionIos.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
exports.WhisperContext = void 0;
|
|
7
13
|
exports.initWhisper = initWhisper;
|
|
8
14
|
exports.libVersion = exports.isUseCoreML = exports.isCoreMLAllowFallback = void 0;
|
|
9
15
|
exports.releaseAllWhisper = releaseAllWhisper;
|
|
10
16
|
var _reactNative = require("react-native");
|
|
11
17
|
var _NativeRNWhisper = _interopRequireDefault(require("./NativeRNWhisper"));
|
|
18
|
+
var _AudioSessionIos = _interopRequireDefault(require("./AudioSessionIos"));
|
|
12
19
|
var _version = require("./version.json");
|
|
13
20
|
var _RNWhisper$getConstan;
|
|
14
21
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -21,11 +28,16 @@ if (_reactNative.Platform.OS === 'android') {
|
|
|
21
28
|
EventEmitter = _reactNative.DeviceEventEmitter;
|
|
22
29
|
}
|
|
23
30
|
const EVENT_ON_TRANSCRIBE_PROGRESS = '@RNWhisper_onTranscribeProgress';
|
|
31
|
+
const EVENT_ON_TRANSCRIBE_NEW_SEGMENTS = '@RNWhisper_onTranscribeNewSegments';
|
|
24
32
|
const EVENT_ON_REALTIME_TRANSCRIBE = '@RNWhisper_onRealtimeTranscribe';
|
|
25
33
|
const EVENT_ON_REALTIME_TRANSCRIBE_END = '@RNWhisper_onRealtimeTranscribeEnd';
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
const updateAudioSession = async setting => {
|
|
35
|
+
await _AudioSessionIos.default.setCategory(setting.category, setting.options || []);
|
|
36
|
+
if (setting.mode) {
|
|
37
|
+
await _AudioSessionIos.default.setMode(setting.mode);
|
|
38
|
+
}
|
|
39
|
+
await _AudioSessionIos.default.setActive(setting.active ?? true);
|
|
40
|
+
};
|
|
29
41
|
class WhisperContext {
|
|
30
42
|
constructor(id) {
|
|
31
43
|
this.id = id;
|
|
@@ -50,6 +62,7 @@ class WhisperContext {
|
|
|
50
62
|
const jobId = Math.floor(Math.random() * 10000);
|
|
51
63
|
const {
|
|
52
64
|
onProgress,
|
|
65
|
+
onNewSegments,
|
|
53
66
|
...rest
|
|
54
67
|
} = options;
|
|
55
68
|
let progressListener;
|
|
@@ -71,16 +84,36 @@ class WhisperContext {
|
|
|
71
84
|
progressListener = null;
|
|
72
85
|
}
|
|
73
86
|
};
|
|
87
|
+
let newSegmentsListener;
|
|
88
|
+
if (onNewSegments) {
|
|
89
|
+
newSegmentsListener = EventEmitter.addListener(EVENT_ON_TRANSCRIBE_NEW_SEGMENTS, evt => {
|
|
90
|
+
const {
|
|
91
|
+
contextId,
|
|
92
|
+
result
|
|
93
|
+
} = evt;
|
|
94
|
+
if (contextId !== this.id || evt.jobId !== jobId) return;
|
|
95
|
+
onNewSegments(result);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
const removeNewSegmenetsListener = () => {
|
|
99
|
+
if (newSegmentsListener) {
|
|
100
|
+
newSegmentsListener.remove();
|
|
101
|
+
newSegmentsListener = null;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
74
104
|
return {
|
|
75
105
|
stop: async () => {
|
|
76
106
|
await _NativeRNWhisper.default.abortTranscribe(this.id, jobId);
|
|
77
107
|
removeProgressListener();
|
|
108
|
+
removeNewSegmenetsListener();
|
|
78
109
|
},
|
|
79
110
|
promise: _NativeRNWhisper.default.transcribeFile(this.id, jobId, path, {
|
|
80
111
|
...rest,
|
|
81
|
-
onProgress: !!onProgress
|
|
112
|
+
onProgress: !!onProgress,
|
|
113
|
+
onNewSegments: !!onNewSegments
|
|
82
114
|
}).then(result => {
|
|
83
115
|
removeProgressListener();
|
|
116
|
+
removeNewSegmenetsListener();
|
|
84
117
|
if (!result.isAborted && lastProgress !== 100) {
|
|
85
118
|
// Handle the case that the last progress event is not triggered
|
|
86
119
|
onProgress === null || onProgress === void 0 ? void 0 : onProgress(100);
|
|
@@ -88,6 +121,7 @@ class WhisperContext {
|
|
|
88
121
|
return result;
|
|
89
122
|
}).catch(e => {
|
|
90
123
|
removeProgressListener();
|
|
124
|
+
removeNewSegmenetsListener();
|
|
91
125
|
throw e;
|
|
92
126
|
})
|
|
93
127
|
};
|
|
@@ -96,8 +130,6 @@ class WhisperContext {
|
|
|
96
130
|
/** Transcribe the microphone audio stream, the microphone user permission is required */
|
|
97
131
|
async transcribeRealtime() {
|
|
98
132
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
99
|
-
const jobId = Math.floor(Math.random() * 10000);
|
|
100
|
-
await _NativeRNWhisper.default.startRealtimeTranscribe(this.id, jobId, options);
|
|
101
133
|
let lastTranscribePayload;
|
|
102
134
|
const slices = [];
|
|
103
135
|
let sliceIndex = 0;
|
|
@@ -145,8 +177,37 @@ class WhisperContext {
|
|
|
145
177
|
slices
|
|
146
178
|
};
|
|
147
179
|
};
|
|
180
|
+
let prevAudioSession;
|
|
181
|
+
if (_reactNative.Platform.OS === 'ios' && options !== null && options !== void 0 && options.audioSessionOnStartIos) {
|
|
182
|
+
// iOS: Remember current audio session state
|
|
183
|
+
if ((options === null || options === void 0 ? void 0 : options.audioSessionOnStopIos) === 'restore') {
|
|
184
|
+
const categoryResult = await _AudioSessionIos.default.getCurrentCategory();
|
|
185
|
+
const mode = await _AudioSessionIos.default.getCurrentMode();
|
|
186
|
+
prevAudioSession = {
|
|
187
|
+
...categoryResult,
|
|
188
|
+
mode,
|
|
189
|
+
active: false // TODO: Need to check isOtherAudioPlaying to set active
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// iOS: Update audio session state
|
|
194
|
+
await updateAudioSession(options === null || options === void 0 ? void 0 : options.audioSessionOnStartIos);
|
|
195
|
+
}
|
|
196
|
+
if (_reactNative.Platform.OS === 'ios' && typeof (options === null || options === void 0 ? void 0 : options.audioSessionOnStopIos) === 'object') {
|
|
197
|
+
prevAudioSession = options === null || options === void 0 ? void 0 : options.audioSessionOnStopIos;
|
|
198
|
+
}
|
|
199
|
+
const jobId = Math.floor(Math.random() * 10000);
|
|
200
|
+
try {
|
|
201
|
+
await _NativeRNWhisper.default.startRealtimeTranscribe(this.id, jobId, options);
|
|
202
|
+
} catch (e) {
|
|
203
|
+
if (prevAudioSession) await updateAudioSession(prevAudioSession);
|
|
204
|
+
throw e;
|
|
205
|
+
}
|
|
148
206
|
return {
|
|
149
|
-
stop: () =>
|
|
207
|
+
stop: async () => {
|
|
208
|
+
await _NativeRNWhisper.default.abortTranscribe(this.id, jobId);
|
|
209
|
+
if (prevAudioSession) await updateAudioSession(prevAudioSession);
|
|
210
|
+
},
|
|
150
211
|
subscribe: callback => {
|
|
151
212
|
let transcribeListener = EventEmitter.addListener(EVENT_ON_REALTIME_TRANSCRIBE, evt => {
|
|
152
213
|
const {
|
|
@@ -212,14 +273,21 @@ async function initWhisper(_ref) {
|
|
|
212
273
|
} = coreMLModelAsset;
|
|
213
274
|
if (filename && assets) {
|
|
214
275
|
coreMLAssets = assets === null || assets === void 0 ? void 0 : assets.map(asset => {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
276
|
+
if (typeof asset === 'number') {
|
|
277
|
+
const {
|
|
278
|
+
uri
|
|
279
|
+
} = _reactNative.Image.resolveAssetSource(asset);
|
|
280
|
+
const filepath = coreMLModelAssetPaths.find(p => uri.includes(p));
|
|
281
|
+
if (filepath) {
|
|
282
|
+
return {
|
|
283
|
+
uri,
|
|
284
|
+
filepath: `${filename}/${filepath}`
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
} else if (typeof asset === 'string') {
|
|
220
288
|
return {
|
|
221
|
-
uri,
|
|
222
|
-
filepath: `${filename}/${
|
|
289
|
+
uri: asset,
|
|
290
|
+
filepath: `${filename}/${asset}`
|
|
223
291
|
};
|
|
224
292
|
}
|
|
225
293
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_NativeRNWhisper","_interopRequireDefault","_version","_RNWhisper$getConstan","obj","__esModule","default","EventEmitter","Platform","OS","NativeEventEmitter","RNWhisper","DeviceEventEmitter","EVENT_ON_TRANSCRIBE_PROGRESS","EVENT_ON_REALTIME_TRANSCRIBE","EVENT_ON_REALTIME_TRANSCRIBE_END","WhisperContext","constructor","id","transcribe","filePath","options","arguments","length","undefined","path","source","Image","resolveAssetSource","uri","e","Error","startsWith","slice","jobId","Math","floor","random","onProgress","rest","progressListener","lastProgress","addListener","evt","contextId","progress","removeProgressListener","remove","stop","abortTranscribe","promise","transcribeFile","then","result","isAborted","catch","transcribeRealtime","startRealtimeTranscribe","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","subscribe","callback","transcribeListener","endListener","lastPayload","isCapturing","release","releaseContext","exports","coreMLModelAssetPaths","initWhisper","_ref","coreMLModelAsset","isBundleAsset","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","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","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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"}
|