whisper.rn 0.4.0-rc.3 → 0.4.0-rc.4
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/android/src/main/CMakeLists.txt +2 -0
- package/android/src/main/java/com/rnwhisper/RNWhisper.java +6 -1
- package/android/src/main/java/com/rnwhisper/WhisperContext.java +3 -3
- package/android/src/main/jni.cpp +6 -2
- package/cpp/ggml-alloc.c +413 -280
- package/cpp/ggml-alloc.h +67 -8
- package/cpp/ggml-backend-impl.h +87 -0
- package/cpp/ggml-backend.c +950 -0
- package/cpp/ggml-backend.h +136 -0
- package/cpp/ggml-impl.h +243 -0
- package/cpp/{ggml-metal.metal → ggml-metal-whisper.metal} +591 -121
- package/cpp/ggml-metal.h +21 -0
- package/cpp/ggml-metal.m +623 -234
- package/cpp/ggml-quants.c +7377 -0
- package/cpp/ggml-quants.h +224 -0
- package/cpp/ggml.c +3773 -4455
- package/cpp/ggml.h +279 -146
- package/cpp/whisper.cpp +182 -103
- package/cpp/whisper.h +48 -11
- package/ios/RNWhisper.mm +8 -2
- package/ios/RNWhisper.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/ios/RNWhisper.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/RNWhisper.xcodeproj/project.xcworkspace/xcuserdata/jhen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNWhisper.xcodeproj/xcuserdata/jhen.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- package/ios/RNWhisperContext.h +5 -1
- package/ios/RNWhisperContext.mm +76 -10
- package/jest/mock.js +1 -1
- package/lib/commonjs/NativeRNWhisper.js.map +1 -1
- package/lib/commonjs/index.js +28 -9
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/NativeRNWhisper.js.map +1 -1
- package/lib/module/index.js +28 -9
- package/lib/module/index.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/NativeRNWhisper.d.ts +7 -1
- package/lib/typescript/NativeRNWhisper.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +7 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeRNWhisper.ts +8 -1
- package/src/index.ts +29 -17
- package/src/version.json +1 -1
- package/whisper-rn.podspec +1 -2
package/lib/module/version.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"1.4.
|
|
1
|
+
{"version":"1.4.3"}
|
|
@@ -46,16 +46,22 @@ export type CoreMLAsset = {
|
|
|
46
46
|
type NativeContextOptions = {
|
|
47
47
|
filePath: string;
|
|
48
48
|
isBundleAsset: boolean;
|
|
49
|
+
useGpu?: boolean;
|
|
49
50
|
useCoreMLIos?: boolean;
|
|
50
51
|
downloadCoreMLAssets?: boolean;
|
|
51
52
|
coreMLAssets?: CoreMLAsset[];
|
|
52
53
|
};
|
|
54
|
+
export type NativeWhisperContext = {
|
|
55
|
+
contextId: number;
|
|
56
|
+
gpu: boolean;
|
|
57
|
+
reasonNoGPU: string;
|
|
58
|
+
};
|
|
53
59
|
export interface Spec extends TurboModule {
|
|
54
60
|
getConstants(): {
|
|
55
61
|
useCoreML: boolean;
|
|
56
62
|
coreMLAllowFallback: boolean;
|
|
57
63
|
};
|
|
58
|
-
initContext(options: NativeContextOptions): Promise<
|
|
64
|
+
initContext(options: NativeContextOptions): Promise<NativeWhisperContext>;
|
|
59
65
|
releaseContext(contextId: number): Promise<void>;
|
|
60
66
|
releaseAllContexts(): Promise<void>;
|
|
61
67
|
transcribeFile(contextId: number, jobId: number, path: string, options: {}): 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;AAI/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;IACH,SAAS,EAAE,OAAO,CAAC;CACpB,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,YAAY,CAAC,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,
|
|
1
|
+
{"version":3,"file":"NativeRNWhisper.d.ts","sourceRoot":"","sources":["../../src/NativeRNWhisper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NativeWhisperContext } from './NativeRNWhisper';
|
|
1
2
|
import type { TranscribeOptions, TranscribeResult } from './NativeRNWhisper';
|
|
2
3
|
import AudioSessionIos from './AudioSessionIos';
|
|
3
4
|
import type { AudioSessionCategoryIos, AudioSessionCategoryOptionIos, AudioSessionModeIos } from './AudioSessionIos';
|
|
@@ -120,7 +121,9 @@ export type TranscribeRealtimeNativeEvent = {
|
|
|
120
121
|
};
|
|
121
122
|
export declare class WhisperContext {
|
|
122
123
|
id: number;
|
|
123
|
-
|
|
124
|
+
gpu: boolean;
|
|
125
|
+
reasonNoGPU: string;
|
|
126
|
+
constructor({ contextId, gpu, reasonNoGPU, }: NativeWhisperContext);
|
|
124
127
|
/** Transcribe audio file */
|
|
125
128
|
transcribe(filePath: string | number, options?: TranscribeFileOptions): {
|
|
126
129
|
/** Stop the transcribe */
|
|
@@ -152,8 +155,10 @@ export type ContextOptions = {
|
|
|
152
155
|
isBundleAsset?: boolean;
|
|
153
156
|
/** Prefer to use Core ML model if exists. If set to false, even if the Core ML model exists, it will not be used. */
|
|
154
157
|
useCoreMLIos?: boolean;
|
|
158
|
+
/** Use GPU if available. Currently iOS only, if it's enabled, Core ML option will be ignored. */
|
|
159
|
+
useGpu?: boolean;
|
|
155
160
|
};
|
|
156
|
-
export declare function initWhisper({ filePath, coreMLModelAsset, isBundleAsset, useCoreMLIos, }: ContextOptions): Promise<WhisperContext>;
|
|
161
|
+
export declare function initWhisper({ filePath, coreMLModelAsset, isBundleAsset, useGpu, useCoreMLIos, }: ContextOptions): Promise<WhisperContext>;
|
|
157
162
|
export declare function releaseAllWhisper(): Promise<void>;
|
|
158
163
|
/** Current version of whisper.cpp */
|
|
159
164
|
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
|
@@ -52,17 +52,24 @@ export type CoreMLAsset = {
|
|
|
52
52
|
type NativeContextOptions = {
|
|
53
53
|
filePath: string,
|
|
54
54
|
isBundleAsset: boolean,
|
|
55
|
+
useGpu?: boolean,
|
|
55
56
|
useCoreMLIos?: boolean,
|
|
56
57
|
downloadCoreMLAssets?: boolean,
|
|
57
58
|
coreMLAssets?: CoreMLAsset[],
|
|
58
59
|
}
|
|
59
60
|
|
|
61
|
+
export type NativeWhisperContext = {
|
|
62
|
+
contextId: number
|
|
63
|
+
gpu: boolean
|
|
64
|
+
reasonNoGPU: string
|
|
65
|
+
}
|
|
66
|
+
|
|
60
67
|
export interface Spec extends TurboModule {
|
|
61
68
|
getConstants(): {
|
|
62
69
|
useCoreML: boolean
|
|
63
70
|
coreMLAllowFallback: boolean
|
|
64
71
|
};
|
|
65
|
-
initContext(options: NativeContextOptions): Promise<
|
|
72
|
+
initContext(options: NativeContextOptions): Promise<NativeWhisperContext>;
|
|
66
73
|
releaseContext(contextId: number): Promise<void>;
|
|
67
74
|
releaseAllContexts(): Promise<void>;
|
|
68
75
|
transcribeFile(
|
package/src/index.ts
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
DeviceEventEmitterStatic,
|
|
6
6
|
Image,
|
|
7
7
|
} from 'react-native'
|
|
8
|
-
import RNWhisper from './NativeRNWhisper'
|
|
8
|
+
import RNWhisper, { NativeWhisperContext } from './NativeRNWhisper'
|
|
9
9
|
import type {
|
|
10
10
|
TranscribeOptions,
|
|
11
11
|
TranscribeResult,
|
|
@@ -183,8 +183,18 @@ const updateAudioSession = async (setting: AudioSessionSettingIos) => {
|
|
|
183
183
|
export class WhisperContext {
|
|
184
184
|
id: number
|
|
185
185
|
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
gpu: boolean = false
|
|
187
|
+
|
|
188
|
+
reasonNoGPU: string = ''
|
|
189
|
+
|
|
190
|
+
constructor({
|
|
191
|
+
contextId,
|
|
192
|
+
gpu,
|
|
193
|
+
reasonNoGPU,
|
|
194
|
+
}: NativeWhisperContext) {
|
|
195
|
+
this.id = contextId
|
|
196
|
+
this.gpu = gpu
|
|
197
|
+
this.reasonNoGPU = reasonNoGPU
|
|
188
198
|
}
|
|
189
199
|
|
|
190
200
|
/** Transcribe audio file */
|
|
@@ -297,7 +307,7 @@ export class WhisperContext {
|
|
|
297
307
|
let tOffset: number = 0
|
|
298
308
|
|
|
299
309
|
const putSlice = (payload: TranscribeRealtimeNativePayload) => {
|
|
300
|
-
if (!payload.isUseSlices) return
|
|
310
|
+
if (!payload.isUseSlices || !payload.data) return
|
|
301
311
|
if (sliceIndex !== payload.sliceIndex) {
|
|
302
312
|
const { segments = [] } = slices[sliceIndex]?.data || {}
|
|
303
313
|
tOffset = segments[segments.length - 1]?.t1 || 0
|
|
@@ -305,17 +315,15 @@ export class WhisperContext {
|
|
|
305
315
|
;({ sliceIndex } = payload)
|
|
306
316
|
slices[sliceIndex] = {
|
|
307
317
|
...payload,
|
|
308
|
-
data:
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
}
|
|
318
|
-
: undefined,
|
|
318
|
+
data: {
|
|
319
|
+
...payload.data,
|
|
320
|
+
segments:
|
|
321
|
+
payload.data.segments.map((segment) => ({
|
|
322
|
+
...segment,
|
|
323
|
+
t0: segment.t0 + tOffset,
|
|
324
|
+
t1: segment.t1 + tOffset,
|
|
325
|
+
})) || [],
|
|
326
|
+
}
|
|
319
327
|
}
|
|
320
328
|
}
|
|
321
329
|
|
|
@@ -440,6 +448,8 @@ export type ContextOptions = {
|
|
|
440
448
|
isBundleAsset?: boolean
|
|
441
449
|
/** Prefer to use Core ML model if exists. If set to false, even if the Core ML model exists, it will not be used. */
|
|
442
450
|
useCoreMLIos?: boolean
|
|
451
|
+
/** Use GPU if available. Currently iOS only, if it's enabled, Core ML option will be ignored. */
|
|
452
|
+
useGpu?: boolean
|
|
443
453
|
}
|
|
444
454
|
|
|
445
455
|
const coreMLModelAssetPaths = [
|
|
@@ -453,6 +463,7 @@ export async function initWhisper({
|
|
|
453
463
|
filePath,
|
|
454
464
|
coreMLModelAsset,
|
|
455
465
|
isBundleAsset,
|
|
466
|
+
useGpu = true,
|
|
456
467
|
useCoreMLIos = true,
|
|
457
468
|
}: ContextOptions): Promise<WhisperContext> {
|
|
458
469
|
let path = ''
|
|
@@ -499,15 +510,16 @@ export async function initWhisper({
|
|
|
499
510
|
path = filePath
|
|
500
511
|
}
|
|
501
512
|
if (path.startsWith('file://')) path = path.slice(7)
|
|
502
|
-
const
|
|
513
|
+
const { contextId, gpu, reasonNoGPU } = await RNWhisper.initContext({
|
|
503
514
|
filePath: path,
|
|
504
515
|
isBundleAsset: !!isBundleAsset,
|
|
516
|
+
useGpu,
|
|
505
517
|
useCoreMLIos,
|
|
506
518
|
// Only development mode need download Core ML model assets (from packager server)
|
|
507
519
|
downloadCoreMLAssets: __DEV__ && !!coreMLAssets,
|
|
508
520
|
coreMLAssets,
|
|
509
521
|
})
|
|
510
|
-
return new WhisperContext(
|
|
522
|
+
return new WhisperContext({ contextId, gpu, reasonNoGPU })
|
|
511
523
|
}
|
|
512
524
|
|
|
513
525
|
export async function releaseAllWhisper(): Promise<void> {
|
package/src/version.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"1.4.
|
|
1
|
+
{"version":"1.4.3"}
|
package/whisper-rn.podspec
CHANGED
|
@@ -16,8 +16,7 @@ if ENV['RNWHISPER_DISABLE_COREML'] != '1' then
|
|
|
16
16
|
base_compiler_flags += " -DWHISPER_USE_COREML -DWHISPER_COREML_ALLOW_FALLBACK"
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
if ENV["RNWHISPER_ENABLE_METAL"] == "1" then
|
|
19
|
+
if ENV["RNWHISPER_DISABLE_METAL"] != "1" then
|
|
21
20
|
base_compiler_flags += " -DWSP_GGML_USE_METAL" # -DWSP_GGML_METAL_NDEBUG
|
|
22
21
|
end
|
|
23
22
|
|