whisper.rn 0.3.0-rc.5 → 0.3.0-rc.7
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 +75 -14
- package/android/src/main/java/com/rnwhisper/Downloader.java +83 -0
- package/android/src/main/java/com/rnwhisper/WhisperContext.java +9 -9
- package/android/src/main/jni/whisper/Whisper.mk +11 -8
- package/android/src/main/jni/whisper/jni.cpp +102 -0
- package/android/src/newarch/java/com/rnwhisper/RNWhisperModule.java +59 -5
- package/android/src/oldarch/java/com/rnwhisper/RNWhisperModule.java +59 -5
- package/ios/RNWhisper.mm +32 -7
- package/ios/RNWhisperDownloader.h +8 -0
- package/ios/RNWhisperDownloader.m +39 -0
- package/lib/commonjs/NativeRNWhisper.js.map +1 -1
- package/lib/commonjs/index.js +61 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeRNWhisper.js.map +1 -1
- package/lib/module/index.js +62 -3
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/NativeRNWhisper.d.ts +11 -1
- package/lib/typescript/NativeRNWhisper.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +15 -4
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeRNWhisper.ts +13 -1
- package/src/index.ts +156 -64
package/ios/RNWhisper.mm
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#import "RNWhisper.h"
|
|
2
2
|
#import "RNWhisperContext.h"
|
|
3
|
+
#import "RNWhisperDownloader.h"
|
|
3
4
|
#include <stdlib.h>
|
|
4
5
|
#include <string>
|
|
5
6
|
|
|
@@ -15,7 +16,7 @@ RCT_EXPORT_MODULE()
|
|
|
15
16
|
|
|
16
17
|
+ (BOOL)requiresMainQueueSetup
|
|
17
18
|
{
|
|
18
|
-
return
|
|
19
|
+
return NO;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
- (NSDictionary *)constantsToExport
|
|
@@ -35,8 +36,7 @@ RCT_EXPORT_MODULE()
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
RCT_REMAP_METHOD(initContext,
|
|
38
|
-
|
|
39
|
-
withBundleResource:(BOOL)isBundleAsset
|
|
39
|
+
withOptions:(NSDictionary *)modelOptions
|
|
40
40
|
withResolver:(RCTPromiseResolveBlock)resolve
|
|
41
41
|
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
42
42
|
{
|
|
@@ -44,7 +44,26 @@ RCT_REMAP_METHOD(initContext,
|
|
|
44
44
|
contexts = [[NSMutableDictionary alloc] init];
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
NSString *modelPath = [modelOptions objectForKey:@"filePath"];
|
|
48
|
+
BOOL isBundleAsset = [[modelOptions objectForKey:@"isBundleAsset"] boolValue];
|
|
49
|
+
|
|
50
|
+
// For support debug assets in development mode
|
|
51
|
+
BOOL downloadCoreMLAssets = [[modelOptions objectForKey:@"downloadCoreMLAssets"] boolValue];
|
|
52
|
+
if (downloadCoreMLAssets) {
|
|
53
|
+
NSArray *coreMLAssets = [modelOptions objectForKey:@"coreMLAssets"];
|
|
54
|
+
// Download coreMLAssets ([{ uri, filepath }])
|
|
55
|
+
for (NSDictionary *coreMLAsset in coreMLAssets) {
|
|
56
|
+
NSString *path = coreMLAsset[@"uri"];
|
|
57
|
+
if ([path hasPrefix:@"http://"] || [path hasPrefix:@"https://"]) {
|
|
58
|
+
[RNWhisperDownloader downloadFile:path toFile:coreMLAsset[@"filepath"]];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
47
63
|
NSString *path = modelPath;
|
|
64
|
+
if ([path hasPrefix:@"http://"] || [path hasPrefix:@"https://"]) {
|
|
65
|
+
path = [RNWhisperDownloader downloadFile:path toFile:nil];
|
|
66
|
+
}
|
|
48
67
|
if (isBundleAsset) {
|
|
49
68
|
path = [[NSBundle mainBundle] pathForResource:modelPath ofType:nil];
|
|
50
69
|
}
|
|
@@ -84,10 +103,13 @@ RCT_REMAP_METHOD(transcribeFile,
|
|
|
84
103
|
return;
|
|
85
104
|
}
|
|
86
105
|
|
|
87
|
-
|
|
106
|
+
NSString *path = waveFilePath;
|
|
107
|
+
if ([path hasPrefix:@"http://"] || [path hasPrefix:@"https://"]) {
|
|
108
|
+
path = [RNWhisperDownloader downloadFile:path toFile:nil];
|
|
109
|
+
}
|
|
88
110
|
|
|
89
111
|
int count = 0;
|
|
90
|
-
float *waveFile = [self decodeWaveFile:
|
|
112
|
+
float *waveFile = [self decodeWaveFile:path count:&count];
|
|
91
113
|
if (waveFile == nil) {
|
|
92
114
|
reject(@"whisper_error", @"Invalid file", nil);
|
|
93
115
|
return;
|
|
@@ -185,8 +207,9 @@ RCT_REMAP_METHOD(releaseAllContexts,
|
|
|
185
207
|
resolve(nil);
|
|
186
208
|
}
|
|
187
209
|
|
|
188
|
-
- (float *)decodeWaveFile:(
|
|
189
|
-
|
|
210
|
+
- (float *)decodeWaveFile:(NSString*)filePath count:(int *)count {
|
|
211
|
+
NSURL *url = [NSURL fileURLWithPath:filePath];
|
|
212
|
+
NSData *fileData = [NSData dataWithContentsOfURL:url];
|
|
190
213
|
if (fileData == nil) {
|
|
191
214
|
return nil;
|
|
192
215
|
}
|
|
@@ -219,6 +242,8 @@ RCT_REMAP_METHOD(releaseAllContexts,
|
|
|
219
242
|
|
|
220
243
|
[contexts removeAllObjects];
|
|
221
244
|
contexts = nil;
|
|
245
|
+
|
|
246
|
+
[RNWhisperDownloader clearCache];
|
|
222
247
|
}
|
|
223
248
|
|
|
224
249
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#import "RNWhisperDownloader.h"
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* NOTE: This is simple downloader,
|
|
5
|
+
* the main purpose is supported load assets on RN Debug mode,
|
|
6
|
+
* so it's a very crude implementation.
|
|
7
|
+
*
|
|
8
|
+
* If you want to use file download in production to load model / audio files,
|
|
9
|
+
* I would recommend using react-native-fs or expo-file-system to manage the files.
|
|
10
|
+
*/
|
|
11
|
+
@implementation RNWhisperDownloader
|
|
12
|
+
|
|
13
|
+
+ (NSString *)downloadFile:(NSString *)urlString toFile:(NSString *)path {
|
|
14
|
+
NSURL *url = [NSURL URLWithString:urlString];
|
|
15
|
+
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"rnwhisper_debug_assets/"];
|
|
16
|
+
if (path) {
|
|
17
|
+
filePath = [filePath stringByAppendingPathComponent:path];
|
|
18
|
+
} else {
|
|
19
|
+
filePath = [filePath stringByAppendingPathComponent:[url lastPathComponent]];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
NSString *folderPath = [filePath stringByDeletingLastPathComponent];
|
|
23
|
+
if (![[NSFileManager defaultManager] fileExistsAtPath:folderPath]) {
|
|
24
|
+
[[NSFileManager defaultManager] createDirectoryAtPath:folderPath withIntermediateDirectories:YES attributes:nil error:nil];
|
|
25
|
+
}
|
|
26
|
+
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
|
|
27
|
+
return filePath;
|
|
28
|
+
}
|
|
29
|
+
NSData *urlData = [NSData dataWithContentsOfURL:url];
|
|
30
|
+
[urlData writeToFile:filePath atomically:YES];
|
|
31
|
+
return filePath;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
+ (void)clearCache {
|
|
35
|
+
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"rnwhisper_debug_assets/"];
|
|
36
|
+
[[NSFileManager defaultManager] removeItemAtPath:filePath error:nil];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@end
|
|
@@ -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,GA6EnCC,gCAAmB,CAACC,GAAG,CAAO,WAAW,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -28,8 +28,21 @@ class WhisperContext {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/** Transcribe audio file */
|
|
31
|
-
transcribe(
|
|
31
|
+
transcribe(filePath) {
|
|
32
32
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
33
|
+
let path = '';
|
|
34
|
+
if (typeof filePath === 'number') {
|
|
35
|
+
try {
|
|
36
|
+
const source = _reactNative.Image.resolveAssetSource(filePath);
|
|
37
|
+
if (source) path = source.uri;
|
|
38
|
+
} catch (e) {
|
|
39
|
+
throw new Error(`Invalid asset: ${filePath}`);
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
if (filePath.startsWith('http')) throw new Error('Transcribe remote file is not supported, please download it first');
|
|
43
|
+
path = filePath;
|
|
44
|
+
}
|
|
45
|
+
if (path.startsWith('file://')) path = path.slice(7);
|
|
33
46
|
const jobId = Math.floor(Math.random() * 10000);
|
|
34
47
|
return {
|
|
35
48
|
stop: () => _NativeRNWhisper.default.abortTranscribe(this.id, jobId),
|
|
@@ -55,6 +68,7 @@ class WhisperContext {
|
|
|
55
68
|
} = ((_slices$sliceIndex = slices[sliceIndex]) === null || _slices$sliceIndex === void 0 ? void 0 : _slices$sliceIndex.data) || {};
|
|
56
69
|
tOffset = ((_segments = segments[segments.length - 1]) === null || _segments === void 0 ? void 0 : _segments.t1) || 0;
|
|
57
70
|
}
|
|
71
|
+
;
|
|
58
72
|
({
|
|
59
73
|
sliceIndex
|
|
60
74
|
} = payload);
|
|
@@ -139,12 +153,57 @@ class WhisperContext {
|
|
|
139
153
|
}
|
|
140
154
|
}
|
|
141
155
|
exports.WhisperContext = WhisperContext;
|
|
156
|
+
const coreMLModelAssetPaths = ['analytics/coremldata.bin', 'weights/weight.bin', 'model.mil', 'coremldata.bin'];
|
|
142
157
|
async function initWhisper(_ref) {
|
|
143
158
|
let {
|
|
144
159
|
filePath,
|
|
160
|
+
coreMLModelAsset,
|
|
145
161
|
isBundleAsset
|
|
146
162
|
} = _ref;
|
|
147
|
-
|
|
163
|
+
let path = '';
|
|
164
|
+
let coreMLAssets;
|
|
165
|
+
if (coreMLModelAsset) {
|
|
166
|
+
const {
|
|
167
|
+
filename,
|
|
168
|
+
assets
|
|
169
|
+
} = coreMLModelAsset;
|
|
170
|
+
if (filename && assets) {
|
|
171
|
+
coreMLAssets = assets === null || assets === void 0 ? void 0 : assets.map(asset => {
|
|
172
|
+
const {
|
|
173
|
+
uri
|
|
174
|
+
} = _reactNative.Image.resolveAssetSource(asset);
|
|
175
|
+
const filepath = coreMLModelAssetPaths.find(p => uri.includes(p));
|
|
176
|
+
if (filepath) {
|
|
177
|
+
return {
|
|
178
|
+
uri,
|
|
179
|
+
filepath: `${filename}/${filepath}`
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return undefined;
|
|
183
|
+
}).filter(asset => asset !== undefined);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (typeof filePath === 'number') {
|
|
187
|
+
try {
|
|
188
|
+
const source = _reactNative.Image.resolveAssetSource(filePath);
|
|
189
|
+
if (source) {
|
|
190
|
+
path = source.uri;
|
|
191
|
+
}
|
|
192
|
+
} catch (e) {
|
|
193
|
+
throw new Error(`Invalid asset: ${filePath}`);
|
|
194
|
+
}
|
|
195
|
+
} else {
|
|
196
|
+
if (!isBundleAsset && filePath.startsWith('http')) throw new Error('Transcribe remote file is not supported, please download it first');
|
|
197
|
+
path = filePath;
|
|
198
|
+
}
|
|
199
|
+
if (path.startsWith('file://')) path = path.slice(7);
|
|
200
|
+
const id = await _NativeRNWhisper.default.initContext({
|
|
201
|
+
filePath: path,
|
|
202
|
+
isBundleAsset: !!isBundleAsset,
|
|
203
|
+
// Only development mode need download Core ML model assets (from packager server)
|
|
204
|
+
downloadCoreMLAssets: __DEV__ && !!coreMLAssets,
|
|
205
|
+
coreMLAssets
|
|
206
|
+
});
|
|
148
207
|
return new WhisperContext(id);
|
|
149
208
|
}
|
|
150
209
|
async function releaseAllWhisper() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_NativeRNWhisper","_interopRequireDefault","_version","_RNWhisper$getConstan","obj","__esModule","default","EventEmitter","Platform","OS","NativeEventEmitter","RNWhisper","DeviceEventEmitter","EVENT_ON_REALTIME_TRANSCRIBE","EVENT_ON_REALTIME_TRANSCRIBE_END","WhisperContext","constructor","id","transcribe","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_NativeRNWhisper","_interopRequireDefault","_version","_RNWhisper$getConstan","obj","__esModule","default","EventEmitter","Platform","OS","NativeEventEmitter","RNWhisper","DeviceEventEmitter","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","stop","abortTranscribe","promise","transcribeFile","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","result","processTime","recordingTime","subscribe","callback","transcribeListener","addListener","evt","contextId","endListener","lastPayload","isCapturing","remove","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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeRNWhisper.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeRNWhisper.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AA6ElD,eAAeA,mBAAmB,CAACC,GAAG,CAAO,WAAW,CAAC"}
|
package/lib/module/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var _RNWhisper$getConstan;
|
|
2
|
-
import { NativeEventEmitter, DeviceEventEmitter, Platform } from 'react-native';
|
|
2
|
+
import { NativeEventEmitter, DeviceEventEmitter, Platform, Image } from 'react-native';
|
|
3
3
|
import RNWhisper from './NativeRNWhisper';
|
|
4
4
|
import { version } from './version.json';
|
|
5
5
|
let EventEmitter;
|
|
@@ -18,8 +18,21 @@ export class WhisperContext {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/** Transcribe audio file */
|
|
21
|
-
transcribe(
|
|
21
|
+
transcribe(filePath) {
|
|
22
22
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
23
|
+
let path = '';
|
|
24
|
+
if (typeof filePath === 'number') {
|
|
25
|
+
try {
|
|
26
|
+
const source = Image.resolveAssetSource(filePath);
|
|
27
|
+
if (source) path = source.uri;
|
|
28
|
+
} catch (e) {
|
|
29
|
+
throw new Error(`Invalid asset: ${filePath}`);
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
if (filePath.startsWith('http')) throw new Error('Transcribe remote file is not supported, please download it first');
|
|
33
|
+
path = filePath;
|
|
34
|
+
}
|
|
35
|
+
if (path.startsWith('file://')) path = path.slice(7);
|
|
23
36
|
const jobId = Math.floor(Math.random() * 10000);
|
|
24
37
|
return {
|
|
25
38
|
stop: () => RNWhisper.abortTranscribe(this.id, jobId),
|
|
@@ -45,6 +58,7 @@ export class WhisperContext {
|
|
|
45
58
|
} = ((_slices$sliceIndex = slices[sliceIndex]) === null || _slices$sliceIndex === void 0 ? void 0 : _slices$sliceIndex.data) || {};
|
|
46
59
|
tOffset = ((_segments = segments[segments.length - 1]) === null || _segments === void 0 ? void 0 : _segments.t1) || 0;
|
|
47
60
|
}
|
|
61
|
+
;
|
|
48
62
|
({
|
|
49
63
|
sliceIndex
|
|
50
64
|
} = payload);
|
|
@@ -128,12 +142,57 @@ export class WhisperContext {
|
|
|
128
142
|
return RNWhisper.releaseContext(this.id);
|
|
129
143
|
}
|
|
130
144
|
}
|
|
145
|
+
const coreMLModelAssetPaths = ['analytics/coremldata.bin', 'weights/weight.bin', 'model.mil', 'coremldata.bin'];
|
|
131
146
|
export async function initWhisper(_ref) {
|
|
132
147
|
let {
|
|
133
148
|
filePath,
|
|
149
|
+
coreMLModelAsset,
|
|
134
150
|
isBundleAsset
|
|
135
151
|
} = _ref;
|
|
136
|
-
|
|
152
|
+
let path = '';
|
|
153
|
+
let coreMLAssets;
|
|
154
|
+
if (coreMLModelAsset) {
|
|
155
|
+
const {
|
|
156
|
+
filename,
|
|
157
|
+
assets
|
|
158
|
+
} = coreMLModelAsset;
|
|
159
|
+
if (filename && assets) {
|
|
160
|
+
coreMLAssets = assets === null || assets === void 0 ? void 0 : assets.map(asset => {
|
|
161
|
+
const {
|
|
162
|
+
uri
|
|
163
|
+
} = Image.resolveAssetSource(asset);
|
|
164
|
+
const filepath = coreMLModelAssetPaths.find(p => uri.includes(p));
|
|
165
|
+
if (filepath) {
|
|
166
|
+
return {
|
|
167
|
+
uri,
|
|
168
|
+
filepath: `${filename}/${filepath}`
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
return undefined;
|
|
172
|
+
}).filter(asset => asset !== undefined);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (typeof filePath === 'number') {
|
|
176
|
+
try {
|
|
177
|
+
const source = Image.resolveAssetSource(filePath);
|
|
178
|
+
if (source) {
|
|
179
|
+
path = source.uri;
|
|
180
|
+
}
|
|
181
|
+
} catch (e) {
|
|
182
|
+
throw new Error(`Invalid asset: ${filePath}`);
|
|
183
|
+
}
|
|
184
|
+
} else {
|
|
185
|
+
if (!isBundleAsset && filePath.startsWith('http')) throw new Error('Transcribe remote file is not supported, please download it first');
|
|
186
|
+
path = filePath;
|
|
187
|
+
}
|
|
188
|
+
if (path.startsWith('file://')) path = path.slice(7);
|
|
189
|
+
const id = await RNWhisper.initContext({
|
|
190
|
+
filePath: path,
|
|
191
|
+
isBundleAsset: !!isBundleAsset,
|
|
192
|
+
// Only development mode need download Core ML model assets (from packager server)
|
|
193
|
+
downloadCoreMLAssets: __DEV__ && !!coreMLAssets,
|
|
194
|
+
coreMLAssets
|
|
195
|
+
});
|
|
137
196
|
return new WhisperContext(id);
|
|
138
197
|
}
|
|
139
198
|
export async function releaseAllWhisper() {
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","DeviceEventEmitter","Platform","RNWhisper","version","EventEmitter","OS","EVENT_ON_REALTIME_TRANSCRIBE","EVENT_ON_REALTIME_TRANSCRIBE_END","WhisperContext","constructor","id","transcribe","
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","DeviceEventEmitter","Platform","Image","RNWhisper","version","EventEmitter","OS","EVENT_ON_REALTIME_TRANSCRIBE","EVENT_ON_REALTIME_TRANSCRIBE_END","WhisperContext","constructor","id","transcribe","filePath","options","arguments","length","undefined","path","source","resolveAssetSource","uri","e","Error","startsWith","slice","jobId","Math","floor","random","stop","abortTranscribe","promise","transcribeFile","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","result","processTime","recordingTime","subscribe","callback","transcribeListener","addListener","evt","contextId","endListener","lastPayload","isCapturing","remove","release","releaseContext","coreMLModelAssetPaths","initWhisper","_ref","coreMLModelAsset","isBundleAsset","coreMLAssets","filename","assets","asset","filepath","find","p","includes","filter","initContext","downloadCoreMLAssets","__DEV__","releaseAllWhisper","releaseAllContexts","libVersion","useCoreML","coreMLAllowFallback","_RNWhisper$getConstan","getConstants","call","isUseCoreML","isCoreMLAllowFallback"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
|
|
@@ -38,12 +38,22 @@ export type TranscribeResult = {
|
|
|
38
38
|
t1: number;
|
|
39
39
|
}>;
|
|
40
40
|
};
|
|
41
|
+
export type CoreMLAsset = {
|
|
42
|
+
uri: string;
|
|
43
|
+
filepath: string;
|
|
44
|
+
};
|
|
45
|
+
type NativeContextOptions = {
|
|
46
|
+
filePath: string;
|
|
47
|
+
isBundleAsset: boolean;
|
|
48
|
+
downloadCoreMLAssets?: boolean;
|
|
49
|
+
coreMLAssets?: CoreMLAsset[];
|
|
50
|
+
};
|
|
41
51
|
export interface Spec extends TurboModule {
|
|
42
52
|
getConstants(): {
|
|
43
53
|
useCoreML: boolean;
|
|
44
54
|
coreMLAllowFallback: boolean;
|
|
45
55
|
};
|
|
46
|
-
initContext(
|
|
56
|
+
initContext(options: NativeContextOptions): Promise<number>;
|
|
47
57
|
releaseContext(contextId: number): Promise<void>;
|
|
48
58
|
releaseAllContexts(): Promise<void>;
|
|
49
59
|
transcribeFile(contextId: number, jobId: number, path: string, options: TranscribeOptions): Promise<TranscribeResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeRNWhisper.d.ts","sourceRoot":"","sources":["../../src/NativeRNWhisper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAA;AAG/E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC,CAAC;CACJ,CAAA;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,YAAY,IAAI;QACd,SAAS,EAAE,OAAO,CAAA;QAClB,mBAAmB,EAAE,OAAO,CAAA;KAC7B,CAAC;IACF,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"NativeRNWhisper.d.ts","sourceRoot":"","sources":["../../src/NativeRNWhisper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAA;AAG/E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC,CAAC;CACJ,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC9B,CAAA;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,YAAY,IAAI;QACd,SAAS,EAAE,OAAO,CAAA;QAClB,mBAAmB,EAAE,OAAO,CAAA;KAC7B,CAAC;IACF,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;;AAED,wBAAiE"}
|
|
@@ -54,7 +54,7 @@ export declare class WhisperContext {
|
|
|
54
54
|
id: number;
|
|
55
55
|
constructor(id: number);
|
|
56
56
|
/** Transcribe audio file */
|
|
57
|
-
transcribe(
|
|
57
|
+
transcribe(filePath: string | number, options?: TranscribeOptions): {
|
|
58
58
|
/** Stop the transcribe */
|
|
59
59
|
stop: () => void;
|
|
60
60
|
/** Transcribe result promise */
|
|
@@ -69,10 +69,21 @@ export declare class WhisperContext {
|
|
|
69
69
|
}>;
|
|
70
70
|
release(): Promise<void>;
|
|
71
71
|
}
|
|
72
|
-
export
|
|
73
|
-
filePath: string;
|
|
72
|
+
export type ContextOptions = {
|
|
73
|
+
filePath: string | number;
|
|
74
|
+
/**
|
|
75
|
+
* CoreML model assets, if you're using `require` on filePath,
|
|
76
|
+
* use this option is required if you want to enable Core ML,
|
|
77
|
+
* you will need bundle weights/weight.bin, model.mil, coremldata.bin into app by `require`
|
|
78
|
+
*/
|
|
79
|
+
coreMLModelAsset?: {
|
|
80
|
+
filename: string;
|
|
81
|
+
assets: number[];
|
|
82
|
+
};
|
|
83
|
+
/** Is the file path a bundle asset for pure string filePath */
|
|
74
84
|
isBundleAsset?: boolean;
|
|
75
|
-
}
|
|
85
|
+
};
|
|
86
|
+
export declare function initWhisper({ filePath, coreMLModelAsset, isBundleAsset, }: ContextOptions): Promise<WhisperContext>;
|
|
76
87
|
export declare function releaseAllWhisper(): Promise<void>;
|
|
77
88
|
/** Current version of whisper.cpp */
|
|
78
89
|
export declare const libVersion: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/NativeRNWhisper.ts
CHANGED
|
@@ -42,12 +42,24 @@ export type TranscribeResult = {
|
|
|
42
42
|
}>,
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
export type CoreMLAsset = {
|
|
46
|
+
uri: string,
|
|
47
|
+
filepath: string,
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
type NativeContextOptions = {
|
|
51
|
+
filePath: string,
|
|
52
|
+
isBundleAsset: boolean,
|
|
53
|
+
downloadCoreMLAssets?: boolean,
|
|
54
|
+
coreMLAssets?: CoreMLAsset[],
|
|
55
|
+
}
|
|
56
|
+
|
|
45
57
|
export interface Spec extends TurboModule {
|
|
46
58
|
getConstants(): {
|
|
47
59
|
useCoreML: boolean
|
|
48
60
|
coreMLAllowFallback: boolean
|
|
49
61
|
};
|
|
50
|
-
initContext(
|
|
62
|
+
initContext(options: NativeContextOptions): Promise<number>;
|
|
51
63
|
releaseContext(contextId: number): Promise<void>;
|
|
52
64
|
releaseAllContexts(): Promise<void>;
|
|
53
65
|
transcribeFile(
|