whisper.rn 0.3.0-rc.4 → 0.3.0-rc.6
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 +74 -11
- package/android/build.gradle +9 -0
- package/android/src/main/java/com/rnwhisper/Downloader.java +83 -0
- package/android/src/main/java/com/rnwhisper/RNWhisperPackage.java +33 -13
- package/android/src/main/java/com/rnwhisper/WhisperContext.java +9 -9
- package/android/src/main/jni/whisper/Whisper.mk +1 -1
- package/android/src/main/jni/whisper/jni.cpp +102 -0
- package/android/src/newarch/java/com/rnwhisper/RNWhisperModule.java +286 -0
- package/android/src/{main → oldarch}/java/com/rnwhisper/RNWhisperModule.java +59 -5
- package/ios/RNWhisper.mm +54 -8
- package/ios/RNWhisperDownloader.h +8 -0
- package/ios/RNWhisperDownloader.m +39 -0
- package/lib/commonjs/NativeRNWhisper.js +10 -0
- package/lib/commonjs/NativeRNWhisper.js.map +1 -0
- package/lib/commonjs/index.js +81 -23
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeRNWhisper.js +3 -0
- package/lib/module/NativeRNWhisper.js.map +1 -0
- package/lib/module/index.js +73 -16
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/NativeRNWhisper.d.ts +65 -0
- package/lib/typescript/NativeRNWhisper.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +17 -43
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +6 -1
- package/src/NativeRNWhisper.ts +79 -0
- package/src/index.ts +164 -122
package/lib/commonjs/index.js
CHANGED
|
@@ -8,19 +8,14 @@ exports.initWhisper = initWhisper;
|
|
|
8
8
|
exports.libVersion = exports.isUseCoreML = exports.isCoreMLAllowFallback = void 0;
|
|
9
9
|
exports.releaseAllWhisper = releaseAllWhisper;
|
|
10
10
|
var _reactNative = require("react-native");
|
|
11
|
+
var _NativeRNWhisper = _interopRequireDefault(require("./NativeRNWhisper"));
|
|
11
12
|
var _version = require("./version.json");
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
default: ''
|
|
15
|
-
})}- You rebuilt the app after installing the package`;
|
|
16
|
-
const RNWhisper = _reactNative.NativeModules.RNWhisper ? _reactNative.NativeModules.RNWhisper : new Proxy({}, {
|
|
17
|
-
get() {
|
|
18
|
-
throw new Error(LINKING_ERROR);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
13
|
+
var _RNWhisper$getConstan;
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
15
|
let EventEmitter;
|
|
22
16
|
if (_reactNative.Platform.OS === 'ios') {
|
|
23
|
-
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
EventEmitter = new _reactNative.NativeEventEmitter(_NativeRNWhisper.default);
|
|
24
19
|
}
|
|
25
20
|
if (_reactNative.Platform.OS === 'android') {
|
|
26
21
|
EventEmitter = _reactNative.DeviceEventEmitter;
|
|
@@ -33,12 +28,25 @@ class WhisperContext {
|
|
|
33
28
|
}
|
|
34
29
|
|
|
35
30
|
/** Transcribe audio file */
|
|
36
|
-
transcribe(
|
|
31
|
+
transcribe(filePath) {
|
|
37
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);
|
|
38
46
|
const jobId = Math.floor(Math.random() * 10000);
|
|
39
47
|
return {
|
|
40
|
-
stop: () =>
|
|
41
|
-
promise:
|
|
48
|
+
stop: () => _NativeRNWhisper.default.abortTranscribe(this.id, jobId),
|
|
49
|
+
promise: _NativeRNWhisper.default.transcribeFile(this.id, jobId, path, options)
|
|
42
50
|
};
|
|
43
51
|
}
|
|
44
52
|
|
|
@@ -46,7 +54,7 @@ class WhisperContext {
|
|
|
46
54
|
async transcribeRealtime() {
|
|
47
55
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
48
56
|
const jobId = Math.floor(Math.random() * 10000);
|
|
49
|
-
await
|
|
57
|
+
await _NativeRNWhisper.default.startRealtimeTranscribe(this.id, jobId, options);
|
|
50
58
|
let lastTranscribePayload;
|
|
51
59
|
const slices = [];
|
|
52
60
|
let sliceIndex = 0;
|
|
@@ -60,6 +68,7 @@ class WhisperContext {
|
|
|
60
68
|
} = ((_slices$sliceIndex = slices[sliceIndex]) === null || _slices$sliceIndex === void 0 ? void 0 : _slices$sliceIndex.data) || {};
|
|
61
69
|
tOffset = ((_segments = segments[segments.length - 1]) === null || _segments === void 0 ? void 0 : _segments.t1) || 0;
|
|
62
70
|
}
|
|
71
|
+
;
|
|
63
72
|
({
|
|
64
73
|
sliceIndex
|
|
65
74
|
} = payload);
|
|
@@ -94,7 +103,7 @@ class WhisperContext {
|
|
|
94
103
|
};
|
|
95
104
|
};
|
|
96
105
|
return {
|
|
97
|
-
stop: () =>
|
|
106
|
+
stop: () => _NativeRNWhisper.default.abortTranscribe(this.id, jobId),
|
|
98
107
|
subscribe: callback => {
|
|
99
108
|
let transcribeListener = EventEmitter.addListener(EVENT_ON_REALTIME_TRANSCRIBE, evt => {
|
|
100
109
|
const {
|
|
@@ -140,31 +149,80 @@ class WhisperContext {
|
|
|
140
149
|
};
|
|
141
150
|
}
|
|
142
151
|
async release() {
|
|
143
|
-
return
|
|
152
|
+
return _NativeRNWhisper.default.releaseContext(this.id);
|
|
144
153
|
}
|
|
145
154
|
}
|
|
146
155
|
exports.WhisperContext = WhisperContext;
|
|
147
|
-
|
|
156
|
+
const coreMLModelAssetPaths = ['analytics/coremldata.bin', 'weights/weight.bin', 'model.mil', 'coremldata.bin'];
|
|
157
|
+
async function initWhisper(_ref) {
|
|
148
158
|
let {
|
|
149
159
|
filePath,
|
|
160
|
+
coreMLModelAsset,
|
|
150
161
|
isBundleAsset
|
|
151
|
-
} =
|
|
152
|
-
|
|
162
|
+
} = _ref;
|
|
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
|
+
});
|
|
153
207
|
return new WhisperContext(id);
|
|
154
208
|
}
|
|
155
209
|
async function releaseAllWhisper() {
|
|
156
|
-
return
|
|
210
|
+
return _NativeRNWhisper.default.releaseAllContexts();
|
|
157
211
|
}
|
|
158
212
|
|
|
159
213
|
/** Current version of whisper.cpp */
|
|
160
214
|
const libVersion = _version.version;
|
|
215
|
+
exports.libVersion = libVersion;
|
|
216
|
+
const {
|
|
217
|
+
useCoreML,
|
|
218
|
+
coreMLAllowFallback
|
|
219
|
+
} = ((_RNWhisper$getConstan = _NativeRNWhisper.default.getConstants) === null || _RNWhisper$getConstan === void 0 ? void 0 : _RNWhisper$getConstan.call(_NativeRNWhisper.default)) || {};
|
|
161
220
|
|
|
162
221
|
/** Is use CoreML models on iOS */
|
|
163
|
-
|
|
164
|
-
const isUseCoreML = !!RNWhisper.WHISPER_USE_COREML;
|
|
222
|
+
const isUseCoreML = !!useCoreML;
|
|
165
223
|
|
|
166
224
|
/** Is allow fallback to CPU if load CoreML model failed */
|
|
167
225
|
exports.isUseCoreML = isUseCoreML;
|
|
168
|
-
const isCoreMLAllowFallback = !!
|
|
226
|
+
const isCoreMLAllowFallback = !!coreMLAllowFallback;
|
|
169
227
|
exports.isCoreMLAllowFallback = isCoreMLAllowFallback;
|
|
170
228
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","
|
|
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":";;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOA,IAAAC,gBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAMA,IAAAG,QAAA,GAAAH,OAAA;AAAwC,IAAAI,qBAAA;AAAA,SAAAF,uBAAAG,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;AAIA,MAAMC,4BAA4B,GAAG,iCAAiC;AACtE,MAAMC,gCAAgC,GAAG,oCAAoC;AAwDtE,MAAMC,cAAc,CAAC;EAG1BC,WAAWA,CAACC,EAAU,EAAE;IACtB,IAAI,CAACA,EAAE,GAAGA,EAAE;EACd;;EAEA;EACAC,UAAUA,CACRC,QAAyB,EAOzB;IAAA,IANAC,OAA0B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAO/B,IAAIG,IAAI,GAAG,EAAE;IACb,IAAI,OAAOL,QAAQ,KAAK,QAAQ,EAAE;MAChC,IAAI;QACF,MAAMM,MAAM,GAAGC,kBAAK,CAACC,kBAAkB,CAACR,QAAQ,CAAC;QACjD,IAAIM,MAAM,EAAED,IAAI,GAAGC,MAAM,CAACG,GAAG;MAC/B,CAAC,CAAC,OAAOC,CAAC,EAAE;QACV,MAAM,IAAIC,KAAK,CAAE,kBAAiBX,QAAS,EAAC,CAAC;MAC/C;IACF,CAAC,MAAM;MACL,IAAIA,QAAQ,CAACY,UAAU,CAAC,MAAM,CAAC,EAC7B,MAAM,IAAID,KAAK,CAAC,mEAAmE,CAAC;MACtFN,IAAI,GAAGL,QAAQ;IACjB;IACA,IAAIK,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;IACvD,OAAO;MACLC,IAAI,EAAEA,CAAA,KAAM1B,wBAAS,CAAC2B,eAAe,CAAC,IAAI,CAACrB,EAAE,EAAEgB,KAAK,CAAC;MACrDM,OAAO,EAAE5B,wBAAS,CAAC6B,cAAc,CAAC,IAAI,CAACvB,EAAE,EAAEgB,KAAK,EAAET,IAAI,EAAEJ,OAAO;IACjE,CAAC;EACH;;EAEA;EACA,MAAMqB,kBAAkBA,CAAA,EAKrB;IAAA,IALsBrB,OAAkC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAM9D,MAAMY,KAAa,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAG,KAAK,CAAC;IACvD,MAAMzB,wBAAS,CAAC+B,uBAAuB,CAAC,IAAI,CAACzB,EAAE,EAAEgB,KAAK,EAAEb,OAAO,CAAC;IAChE,IAAIuB,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,EAAE;MAC1B,IAAIJ,UAAU,KAAKG,OAAO,CAACH,UAAU,EAAE;QAAA,IAAAK,kBAAA,EAAAC,SAAA;QACrC,MAAM;UAAEC,QAAQ,GAAG;QAAG,CAAC,GAAG,EAAAF,kBAAA,GAAAN,MAAM,CAACC,UAAU,CAAC,cAAAK,kBAAA,uBAAlBA,kBAAA,CAAoBG,IAAI,KAAI,CAAC,CAAC;QACxDP,OAAO,GAAG,EAAAK,SAAA,GAAAC,QAAQ,CAACA,QAAQ,CAAC9B,MAAM,GAAG,CAAC,CAAC,cAAA6B,SAAA,uBAA7BA,SAAA,CAA+BG,EAAE,KAAI,CAAC;MAClD;MACA;MAAC,CAAC;QAAET;MAAW,CAAC,GAAGG,OAAO;MAC1BJ,MAAM,CAACC,UAAU,CAAC,GAAG;QACnB,GAAGG,OAAO;QACVK,IAAI,EAAEL,OAAO,CAACK,IAAI,GACd;UACE,GAAGL,OAAO,CAACK,IAAI;UACfD,QAAQ,EACNJ,OAAO,CAACK,IAAI,CAACD,QAAQ,CAACG,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,CAAC,GACDvB;MACN,CAAC;IACH,CAAC;IAED,MAAMmC,mBAAmB,GACvBV,OAAwC,IACJ;MACpC,IAAI,CAACA,OAAO,CAACC,WAAW,EAAE,OAAOD,OAAO;MAExC,MAAMW,aAAkB,GAAG,CAAC,CAAC;MAC7Bf,MAAM,CAACgB,OAAO,CAAE5B,KAAK,IAAK;QAAA,IAAA6B,mBAAA,EAAAC,WAAA,EAAAC,oBAAA,EAAAC,YAAA;QACxBL,aAAa,CAACN,IAAI,GAAG;UACnBY,MAAM,EACJ,CAAC,EAAAJ,mBAAA,GAAAF,aAAa,CAACN,IAAI,cAAAQ,mBAAA,uBAAlBA,mBAAA,CAAoBI,MAAM,KAAI,EAAE,KAAK,EAAAH,WAAA,GAAA9B,KAAK,CAACqB,IAAI,cAAAS,WAAA,uBAAVA,WAAA,CAAYG,MAAM,KAAI,EAAE,CAAC;UACjEb,QAAQ,EAAE,CACR,IAAI,CAAAO,aAAa,aAAbA,aAAa,wBAAAI,oBAAA,GAAbJ,aAAa,CAAEN,IAAI,cAAAU,oBAAA,uBAAnBA,oBAAA,CAAqBX,QAAQ,KAAI,EAAE,CAAC,EACxC,IAAI,EAAAY,YAAA,GAAAhC,KAAK,CAACqB,IAAI,cAAAW,YAAA,uBAAVA,YAAA,CAAYZ,QAAQ,KAAI,EAAE,CAAC;QAEnC,CAAC;QACDO,aAAa,CAACO,WAAW,GAAGlC,KAAK,CAACkC,WAAW;QAC7CP,aAAa,CAACQ,aAAa,GACzB,CAAC,CAAAR,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEQ,aAAa,KAAI,CAAC,IAAInC,KAAK,CAACmC,aAAa;MAC7D,CAAC,CAAC;MACF,OAAO;QAAE,GAAGnB,OAAO;QAAE,GAAGW,aAAa;QAAEf;MAAO,CAAC;IACjD,CAAC;IAED,OAAO;MACLP,IAAI,EAAEA,CAAA,KAAM1B,wBAAS,CAAC2B,eAAe,CAAC,IAAI,CAACrB,EAAE,EAAEgB,KAAK,CAAC;MACrDmC,SAAS,EAAGC,QAAkD,IAAK;QACjE,IAAIC,kBAAuB,GAAG/D,YAAY,CAACgE,WAAW,CACpD1D,4BAA4B,EAC3B2D,GAAkC,IAAK;UACtC,MAAM;YAAEC,SAAS;YAAEzB;UAAQ,CAAC,GAAGwB,GAAG;UAClC,IAAIC,SAAS,KAAK,IAAI,CAACxD,EAAE,IAAIuD,GAAG,CAACvC,KAAK,KAAKA,KAAK,EAAE;UAClDU,qBAAqB,GAAGK,OAAO;UAC/BD,QAAQ,CAACC,OAAO,CAAC;UACjBqB,QAAQ,CAAC;YACPI,SAAS;YACTxC,KAAK,EAAEuC,GAAG,CAACvC,KAAK;YAChB,GAAGyB,mBAAmB,CAACV,OAAO;UAChC,CAAC,CAAC;QACJ,CAAC,CACF;QACD,IAAI0B,WAAgB,GAAGnE,YAAY,CAACgE,WAAW,CAC7CzD,gCAAgC,EAC/B0D,GAAkC,IAAK;UACtC,MAAM;YAAEC,SAAS;YAAEzB;UAAQ,CAAC,GAAGwB,GAAG;UAClC,IAAIC,SAAS,KAAK,IAAI,CAACxD,EAAE,IAAIuD,GAAG,CAACvC,KAAK,KAAKA,KAAK,EAAE;UAClD,MAAM0C,WAAW,GAAG;YAClB,GAAGhC,qBAAqB;YACxB,GAAGK;UACL,CAAC;UACDD,QAAQ,CAAC4B,WAAW,CAAC;UACrBN,QAAQ,CAAC;YACPI,SAAS;YACTxC,KAAK,EAAEuC,GAAG,CAACvC,KAAK;YAChB,GAAGyB,mBAAmB,CAACiB,WAAW,CAAC;YACnCC,WAAW,EAAE;UACf,CAAC,CAAC;UACF,IAAIN,kBAAkB,EAAE;YACtBA,kBAAkB,CAACO,MAAM,EAAE;YAC3BP,kBAAkB,GAAG,IAAI;UAC3B;UACA,IAAII,WAAW,EAAE;YACfA,WAAW,CAACG,MAAM,EAAE;YACpBH,WAAW,GAAG,IAAI;UACpB;QACF,CAAC,CACF;MACH;IACF,CAAC;EACH;EAEA,MAAMI,OAAOA,CAAA,EAAkB;IAC7B,OAAOnE,wBAAS,CAACoE,cAAc,CAAC,IAAI,CAAC9D,EAAE,CAAC;EAC1C;AACF;AAAC+D,OAAA,CAAAjE,cAAA,GAAAA,cAAA;AAiBD,MAAMkE,qBAAqB,GAAG,CAC5B,0BAA0B,EAC1B,oBAAoB,EACpB,WAAW,EACX,gBAAgB,CACjB;AAEM,eAAeC,WAAWA,CAAAC,IAAA,EAIW;EAAA,IAJV;IAChChE,QAAQ;IACRiE,gBAAgB;IAChBC;EACc,CAAC,GAAAF,IAAA;EACf,IAAI3D,IAAI,GAAG,EAAE;EACb,IAAI8D,YAAuC;EAC3C,IAAIF,gBAAgB,EAAE;IACpB,MAAM;MAAEG,QAAQ;MAAEC;IAAO,CAAC,GAAGJ,gBAAgB;IAC7C,IAAIG,QAAQ,IAAIC,MAAM,EAAE;MACtBF,YAAY,GAAGE,MAAM,aAANA,MAAM,uBAANA,MAAM,CACjBjC,GAAG,CAAEkC,KAAK,IAAK;QACf,MAAM;UAAE7D;QAAI,CAAC,GAAGF,kBAAK,CAACC,kBAAkB,CAAC8D,KAAK,CAAC;QAC/C,MAAMC,QAAQ,GAAGT,qBAAqB,CAACU,IAAI,CAAEC,CAAC,IAAKhE,GAAG,CAACiE,QAAQ,CAACD,CAAC,CAAC,CAAC;QACnE,IAAIF,QAAQ,EAAE;UACZ,OAAO;YACL9D,GAAG;YACH8D,QAAQ,EAAG,GAAEH,QAAS,IAAGG,QAAS;UACpC,CAAC;QACH;QACA,OAAOnE,SAAS;MAClB,CAAC,CAAC,CACDuE,MAAM,CAAEL,KAAK,IAA2BA,KAAK,KAAKlE,SAAS,CAAC;IACjE;EACF;EACA,IAAI,OAAOJ,QAAQ,KAAK,QAAQ,EAAE;IAChC,IAAI;MACF,MAAMM,MAAM,GAAGC,kBAAK,CAACC,kBAAkB,CAACR,QAAQ,CAAC;MACjD,IAAIM,MAAM,EAAE;QACVD,IAAI,GAAGC,MAAM,CAACG,GAAG;MACnB;IACF,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV,MAAM,IAAIC,KAAK,CAAE,kBAAiBX,QAAS,EAAC,CAAC;IAC/C;EACF,CAAC,MAAM;IACL,IAAI,CAACkE,aAAa,IAAIlE,QAAQ,CAACY,UAAU,CAAC,MAAM,CAAC,EAC/C,MAAM,IAAID,KAAK,CAAC,mEAAmE,CAAC;IACtFN,IAAI,GAAGL,QAAQ;EACjB;EACA,IAAIK,IAAI,CAACO,UAAU,CAAC,SAAS,CAAC,EAAEP,IAAI,GAAGA,IAAI,CAACQ,KAAK,CAAC,CAAC,CAAC;EACpD,MAAMf,EAAE,GAAG,MAAMN,wBAAS,CAACoF,WAAW,CAAC;IACrC5E,QAAQ,EAAEK,IAAI;IACd6D,aAAa,EAAE,CAAC,CAACA,aAAa;IAC9B;IACAW,oBAAoB,EAAEC,OAAO,IAAI,CAAC,CAACX,YAAY;IAC/CA;EACF,CAAC,CAAC;EACF,OAAO,IAAIvE,cAAc,CAACE,EAAE,CAAC;AAC/B;AAEO,eAAeiF,iBAAiBA,CAAA,EAAkB;EACvD,OAAOvF,wBAAS,CAACwF,kBAAkB,EAAE;AACvC;;AAEA;AACO,MAAMC,UAAkB,GAAGC,gBAAO;AAAArB,OAAA,CAAAoB,UAAA,GAAAA,UAAA;AAEzC,MAAM;EAAEE,SAAS;EAAEC;AAAoB,CAAC,GAAG,EAAApG,qBAAA,GAAAQ,wBAAS,CAAC6F,YAAY,cAAArG,qBAAA,uBAAtBA,qBAAA,CAAAsG,IAAA,CAAA9F,wBAAS,CAAiB,KAAI,CAAC,CAAC;;AAE3E;AACO,MAAM+F,WAAoB,GAAG,CAAC,CAACJ,SAAS;;AAE/C;AAAAtB,OAAA,CAAA0B,WAAA,GAAAA,WAAA;AACO,MAAMC,qBAA8B,GAAG,CAAC,CAACJ,mBAAmB;AAAAvB,OAAA,CAAA2B,qBAAA,GAAAA,qBAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
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,16 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
var _RNWhisper$getConstan;
|
|
2
|
+
import { NativeEventEmitter, DeviceEventEmitter, Platform, Image } from 'react-native';
|
|
3
|
+
import RNWhisper from './NativeRNWhisper';
|
|
2
4
|
import { version } from './version.json';
|
|
3
|
-
const LINKING_ERROR = `The package 'whisper.rn' doesn't seem to be linked. Make sure: \n\n${Platform.select({
|
|
4
|
-
ios: "- You have run 'pod install'\n",
|
|
5
|
-
default: ''
|
|
6
|
-
})}- You rebuilt the app after installing the package`;
|
|
7
|
-
const RNWhisper = NativeModules.RNWhisper ? NativeModules.RNWhisper : new Proxy({}, {
|
|
8
|
-
get() {
|
|
9
|
-
throw new Error(LINKING_ERROR);
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
5
|
let EventEmitter;
|
|
13
6
|
if (Platform.OS === 'ios') {
|
|
7
|
+
// @ts-ignore
|
|
14
8
|
EventEmitter = new NativeEventEmitter(RNWhisper);
|
|
15
9
|
}
|
|
16
10
|
if (Platform.OS === 'android') {
|
|
@@ -24,8 +18,21 @@ export class WhisperContext {
|
|
|
24
18
|
}
|
|
25
19
|
|
|
26
20
|
/** Transcribe audio file */
|
|
27
|
-
transcribe(
|
|
21
|
+
transcribe(filePath) {
|
|
28
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);
|
|
29
36
|
const jobId = Math.floor(Math.random() * 10000);
|
|
30
37
|
return {
|
|
31
38
|
stop: () => RNWhisper.abortTranscribe(this.id, jobId),
|
|
@@ -51,6 +58,7 @@ export class WhisperContext {
|
|
|
51
58
|
} = ((_slices$sliceIndex = slices[sliceIndex]) === null || _slices$sliceIndex === void 0 ? void 0 : _slices$sliceIndex.data) || {};
|
|
52
59
|
tOffset = ((_segments = segments[segments.length - 1]) === null || _segments === void 0 ? void 0 : _segments.t1) || 0;
|
|
53
60
|
}
|
|
61
|
+
;
|
|
54
62
|
({
|
|
55
63
|
sliceIndex
|
|
56
64
|
} = payload);
|
|
@@ -134,12 +142,57 @@ export class WhisperContext {
|
|
|
134
142
|
return RNWhisper.releaseContext(this.id);
|
|
135
143
|
}
|
|
136
144
|
}
|
|
137
|
-
|
|
145
|
+
const coreMLModelAssetPaths = ['analytics/coremldata.bin', 'weights/weight.bin', 'model.mil', 'coremldata.bin'];
|
|
146
|
+
export async function initWhisper(_ref) {
|
|
138
147
|
let {
|
|
139
148
|
filePath,
|
|
149
|
+
coreMLModelAsset,
|
|
140
150
|
isBundleAsset
|
|
141
|
-
} =
|
|
142
|
-
|
|
151
|
+
} = _ref;
|
|
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
|
+
});
|
|
143
196
|
return new WhisperContext(id);
|
|
144
197
|
}
|
|
145
198
|
export async function releaseAllWhisper() {
|
|
@@ -148,10 +201,14 @@ export async function releaseAllWhisper() {
|
|
|
148
201
|
|
|
149
202
|
/** Current version of whisper.cpp */
|
|
150
203
|
export const libVersion = version;
|
|
204
|
+
const {
|
|
205
|
+
useCoreML,
|
|
206
|
+
coreMLAllowFallback
|
|
207
|
+
} = ((_RNWhisper$getConstan = RNWhisper.getConstants) === null || _RNWhisper$getConstan === void 0 ? void 0 : _RNWhisper$getConstan.call(RNWhisper)) || {};
|
|
151
208
|
|
|
152
209
|
/** Is use CoreML models on iOS */
|
|
153
|
-
export const isUseCoreML = !!
|
|
210
|
+
export const isUseCoreML = !!useCoreML;
|
|
154
211
|
|
|
155
212
|
/** Is allow fallback to CPU if load CoreML model failed */
|
|
156
|
-
export const isCoreMLAllowFallback = !!
|
|
213
|
+
export const isCoreMLAllowFallback = !!coreMLAllowFallback;
|
|
157
214
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","DeviceEventEmitter","
|
|
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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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';
|
|
2
|
+
export type TranscribeOptions = {
|
|
3
|
+
/** Spoken language (Default: 'auto' for auto-detect) */
|
|
4
|
+
language?: string;
|
|
5
|
+
/** Translate from source language to english (Default: false) */
|
|
6
|
+
translate?: boolean;
|
|
7
|
+
/** Number of threads to use during computation (Default: 2 for 4-core devices, 4 for more cores) */
|
|
8
|
+
maxThreads?: number;
|
|
9
|
+
/** Maximum number of text context tokens to store */
|
|
10
|
+
maxContext?: number;
|
|
11
|
+
/** Maximum segment length in characters */
|
|
12
|
+
maxLen?: number;
|
|
13
|
+
/** Enable token-level timestamps */
|
|
14
|
+
tokenTimestamps?: boolean;
|
|
15
|
+
/** Word timestamp probability threshold */
|
|
16
|
+
wordThold?: number;
|
|
17
|
+
/** Time offset in milliseconds */
|
|
18
|
+
offset?: number;
|
|
19
|
+
/** Duration of audio to process in milliseconds */
|
|
20
|
+
duration?: number;
|
|
21
|
+
/** Tnitial decoding temperature */
|
|
22
|
+
temperature?: number;
|
|
23
|
+
temperatureInc?: number;
|
|
24
|
+
/** Beam size for beam search */
|
|
25
|
+
beamSize?: number;
|
|
26
|
+
/** Number of best candidates to keep */
|
|
27
|
+
bestOf?: number;
|
|
28
|
+
/** Speed up audio by x2 (reduced accuracy) */
|
|
29
|
+
speedUp?: boolean;
|
|
30
|
+
/** Initial Prompt */
|
|
31
|
+
prompt?: string;
|
|
32
|
+
};
|
|
33
|
+
export type TranscribeResult = {
|
|
34
|
+
result: string;
|
|
35
|
+
segments: Array<{
|
|
36
|
+
text: string;
|
|
37
|
+
t0: number;
|
|
38
|
+
t1: number;
|
|
39
|
+
}>;
|
|
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
|
+
};
|
|
51
|
+
export interface Spec extends TurboModule {
|
|
52
|
+
getConstants(): {
|
|
53
|
+
useCoreML: boolean;
|
|
54
|
+
coreMLAllowFallback: boolean;
|
|
55
|
+
};
|
|
56
|
+
initContext(options: NativeContextOptions): Promise<number>;
|
|
57
|
+
releaseContext(contextId: number): Promise<void>;
|
|
58
|
+
releaseAllContexts(): Promise<void>;
|
|
59
|
+
transcribeFile(contextId: number, jobId: number, path: string, options: TranscribeOptions): Promise<TranscribeResult>;
|
|
60
|
+
startRealtimeTranscribe(contextId: number, jobId: number, options: TranscribeOptions): Promise<void>;
|
|
61
|
+
abortTranscribe(contextId: number, jobId: number): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
declare const _default: Spec;
|
|
64
|
+
export default _default;
|
|
65
|
+
//# sourceMappingURL=NativeRNWhisper.d.ts.map
|
|
@@ -0,0 +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,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"}
|
|
@@ -1,34 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
language?: string;
|
|
4
|
-
/** Translate from source language to english (Default: false) */
|
|
5
|
-
translate?: boolean;
|
|
6
|
-
/** Number of threads to use during computation (Default: 2 for 4-core devices, 4 for more cores) */
|
|
7
|
-
maxThreads?: number;
|
|
8
|
-
/** Maximum number of text context tokens to store */
|
|
9
|
-
maxContext?: number;
|
|
10
|
-
/** Maximum segment length in characters */
|
|
11
|
-
maxLen?: number;
|
|
12
|
-
/** Enable token-level timestamps */
|
|
13
|
-
tokenTimestamps?: boolean;
|
|
14
|
-
/** Word timestamp probability threshold */
|
|
15
|
-
wordThold?: number;
|
|
16
|
-
/** Time offset in milliseconds */
|
|
17
|
-
offset?: number;
|
|
18
|
-
/** Duration of audio to process in milliseconds */
|
|
19
|
-
duration?: number;
|
|
20
|
-
/** Tnitial decoding temperature */
|
|
21
|
-
temperature?: number;
|
|
22
|
-
temperatureInc?: number;
|
|
23
|
-
/** Beam size for beam search */
|
|
24
|
-
beamSize?: number;
|
|
25
|
-
/** Number of best candidates to keep */
|
|
26
|
-
bestOf?: number;
|
|
27
|
-
/** Speed up audio by x2 (reduced accuracy) */
|
|
28
|
-
speedUp?: boolean;
|
|
29
|
-
/** Initial Prompt */
|
|
30
|
-
prompt?: string;
|
|
31
|
-
};
|
|
1
|
+
import type { TranscribeOptions, TranscribeResult } from './NativeRNWhisper';
|
|
2
|
+
export type { TranscribeOptions, TranscribeResult };
|
|
32
3
|
export type TranscribeRealtimeOptions = TranscribeOptions & {
|
|
33
4
|
/**
|
|
34
5
|
* Realtime record max duration in seconds.
|
|
@@ -43,14 +14,6 @@ export type TranscribeRealtimeOptions = TranscribeOptions & {
|
|
|
43
14
|
*/
|
|
44
15
|
realtimeAudioSliceSec?: number;
|
|
45
16
|
};
|
|
46
|
-
export type TranscribeResult = {
|
|
47
|
-
result: string;
|
|
48
|
-
segments: Array<{
|
|
49
|
-
text: string;
|
|
50
|
-
t0: number;
|
|
51
|
-
t1: number;
|
|
52
|
-
}>;
|
|
53
|
-
};
|
|
54
17
|
export type TranscribeRealtimeEvent = {
|
|
55
18
|
contextId: number;
|
|
56
19
|
jobId: number;
|
|
@@ -91,7 +54,7 @@ export declare class WhisperContext {
|
|
|
91
54
|
id: number;
|
|
92
55
|
constructor(id: number);
|
|
93
56
|
/** Transcribe audio file */
|
|
94
|
-
transcribe(
|
|
57
|
+
transcribe(filePath: string | number, options?: TranscribeOptions): {
|
|
95
58
|
/** Stop the transcribe */
|
|
96
59
|
stop: () => void;
|
|
97
60
|
/** Transcribe result promise */
|
|
@@ -106,10 +69,21 @@ export declare class WhisperContext {
|
|
|
106
69
|
}>;
|
|
107
70
|
release(): Promise<void>;
|
|
108
71
|
}
|
|
109
|
-
export
|
|
110
|
-
filePath
|
|
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 */
|
|
111
84
|
isBundleAsset?: boolean;
|
|
112
|
-
}
|
|
85
|
+
};
|
|
86
|
+
export declare function initWhisper({ filePath, coreMLModelAsset, isBundleAsset, }: ContextOptions): Promise<WhisperContext>;
|
|
113
87
|
export declare function releaseAllWhisper(): Promise<void>;
|
|
114
88
|
/** Current version of whisper.cpp */
|
|
115
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "whisper.rn",
|
|
3
|
-
"version": "0.3.0-rc.
|
|
3
|
+
"version": "0.3.0-rc.6",
|
|
4
4
|
"description": "React Native binding of whisper.cpp",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -136,5 +136,10 @@
|
|
|
136
136
|
}
|
|
137
137
|
]
|
|
138
138
|
]
|
|
139
|
+
},
|
|
140
|
+
"codegenConfig": {
|
|
141
|
+
"name": "RNWhisperSpec",
|
|
142
|
+
"type": "all",
|
|
143
|
+
"jsSrcsDir": "./src/"
|
|
139
144
|
}
|
|
140
145
|
}
|