pyannote-cpp-node 0.6.0 → 1.0.0
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 +515 -105
- package/dist/Pipeline.d.ts +4 -3
- package/dist/Pipeline.d.ts.map +1 -1
- package/dist/Pipeline.js +120 -17
- package/dist/Pipeline.js.map +1 -1
- package/dist/PipelineSession.d.ts +1 -1
- package/dist/PipelineSession.d.ts.map +1 -1
- package/dist/PipelineSession.js +11 -3
- package/dist/PipelineSession.js.map +1 -1
- package/dist/binding.d.ts +16 -6
- package/dist/binding.d.ts.map +1 -1
- package/dist/binding.js +77 -20
- package/dist/binding.js.map +1 -1
- package/dist/index.d.ts +31 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -3
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +178 -57
- package/dist/types.d.ts.map +1 -1
- package/package.json +20 -8
- package/dist/Pyannote.d.ts +0 -12
- package/dist/Pyannote.d.ts.map +0 -1
- package/dist/Pyannote.js +0 -50
- package/dist/Pyannote.js.map +0 -1
- package/dist/StreamingSession.d.ts +0 -12
- package/dist/StreamingSession.d.ts.map +0 -1
- package/dist/StreamingSession.js +0 -34
- package/dist/StreamingSession.js.map +0 -1
package/dist/Pipeline.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { PipelineSession } from './PipelineSession.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { BackendConfig, DecodeOptions, PipelineConfig, TranscriptionResult } from './types.js';
|
|
3
3
|
export declare class Pipeline {
|
|
4
4
|
private native;
|
|
5
|
+
private transcriptionOnly;
|
|
5
6
|
private constructor();
|
|
6
|
-
static load(config:
|
|
7
|
+
static load(config: PipelineConfig): Promise<Pipeline>;
|
|
7
8
|
transcribe(audio: Float32Array): Promise<TranscriptionResult>;
|
|
8
9
|
transcribeOffline(audio: Float32Array, onProgress?: (phase: number, progress: number) => void, onSegment?: (start: number, end: number, text: string) => void): Promise<TranscriptionResult>;
|
|
9
10
|
setLanguage(language: string): void;
|
|
10
11
|
setDecodeOptions(options: DecodeOptions): void;
|
|
11
12
|
createSession(): PipelineSession;
|
|
12
|
-
|
|
13
|
+
setExecutionBackend(backend: BackendConfig): Promise<void>;
|
|
13
14
|
close(): void;
|
|
14
15
|
get isClosed(): boolean;
|
|
15
16
|
}
|
package/dist/Pipeline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pipeline.d.ts","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Pipeline.d.ts","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAoEpB,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,iBAAiB,CAAU;IAEnC,OAAO;WAKM,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiEtD,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAO7D,iBAAiB,CACrB,KAAK,EAAE,YAAY,EACnB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,EACtD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7D,OAAO,CAAC,mBAAmB,CAAC;IAO/B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKnC,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK9C,aAAa,IAAI,eAAe;IAW1B,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,KAAK,IAAI,IAAI;IACb,IAAI,QAAQ,IAAI,OAAO,CAAiC;CACzD"}
|
package/dist/Pipeline.js
CHANGED
|
@@ -1,28 +1,129 @@
|
|
|
1
1
|
import { accessSync } from 'node:fs';
|
|
2
|
-
import { getBinding } from './binding.js';
|
|
2
|
+
import { getBinding, getCapabilities, trackNativeTeardown, waitForNativeTeardown, } from './binding.js';
|
|
3
3
|
import { PipelineSession } from './PipelineSession.js';
|
|
4
|
+
function requirePath(value, name) {
|
|
5
|
+
if (!value)
|
|
6
|
+
throw new Error(`'${name}' is required and must be a non-empty path.`);
|
|
7
|
+
accessSync(value);
|
|
8
|
+
}
|
|
9
|
+
function validateBackendConfig(backend, platform, transcriptionOnly) {
|
|
10
|
+
const capabilities = getCapabilities();
|
|
11
|
+
const supported = capabilities.supportedBackendTypes;
|
|
12
|
+
if (!supported || supported.length === 0) {
|
|
13
|
+
throw new Error(`No supported backends on platform '${platform}'.`);
|
|
14
|
+
}
|
|
15
|
+
if (!supported.includes(backend.type)) {
|
|
16
|
+
throw new Error(`Backend '${backend.type}' is not available on ${platform}. ` +
|
|
17
|
+
`Supported backends: ${supported.map(s => `'${s}'`).join(', ')}.`);
|
|
18
|
+
}
|
|
19
|
+
switch (backend.type) {
|
|
20
|
+
case 'coreml':
|
|
21
|
+
requirePath(backend.segPath, 'segPath');
|
|
22
|
+
requirePath(backend.embPath, 'embPath');
|
|
23
|
+
requirePath(backend.whisperEncoderPath, 'whisperEncoderPath');
|
|
24
|
+
break;
|
|
25
|
+
case 'openvino-hybrid':
|
|
26
|
+
requirePath(backend.whisperEncoderPath, 'whisperEncoderPath');
|
|
27
|
+
requirePath(backend.embPath, 'embPath');
|
|
28
|
+
break;
|
|
29
|
+
case 'metal':
|
|
30
|
+
requirePath(backend.segPath, 'segPath');
|
|
31
|
+
requirePath(backend.embPath, 'embPath');
|
|
32
|
+
break;
|
|
33
|
+
case 'vulkan':
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function serializeBackend(backend) {
|
|
38
|
+
const flat = { type: backend.type };
|
|
39
|
+
if (backend.gpuDevice !== undefined)
|
|
40
|
+
flat.gpuDevice = backend.gpuDevice;
|
|
41
|
+
if (backend.flashAttn !== undefined)
|
|
42
|
+
flat.flashAttn = backend.flashAttn;
|
|
43
|
+
if (backend.type === 'coreml') {
|
|
44
|
+
flat.segPath = backend.segPath;
|
|
45
|
+
flat.embPath = backend.embPath;
|
|
46
|
+
flat.whisperEncoderPath = backend.whisperEncoderPath;
|
|
47
|
+
}
|
|
48
|
+
else if (backend.type === 'metal') {
|
|
49
|
+
flat.segPath = backend.segPath;
|
|
50
|
+
flat.embPath = backend.embPath;
|
|
51
|
+
}
|
|
52
|
+
else if (backend.type === 'openvino-hybrid') {
|
|
53
|
+
flat.whisperEncoderPath = backend.whisperEncoderPath;
|
|
54
|
+
flat.embPath = backend.embPath;
|
|
55
|
+
if (backend.openvinoDevice)
|
|
56
|
+
flat.openvinoDevice = backend.openvinoDevice;
|
|
57
|
+
if (backend.openvinoCacheDir)
|
|
58
|
+
flat.openvinoCacheDir = backend.openvinoCacheDir;
|
|
59
|
+
}
|
|
60
|
+
return flat;
|
|
61
|
+
}
|
|
4
62
|
export class Pipeline {
|
|
5
63
|
native;
|
|
6
|
-
|
|
64
|
+
transcriptionOnly;
|
|
65
|
+
constructor(native, transcriptionOnly) {
|
|
7
66
|
this.native = native;
|
|
67
|
+
this.transcriptionOnly = transcriptionOnly;
|
|
8
68
|
}
|
|
9
69
|
static async load(config) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
70
|
+
await waitForNativeTeardown();
|
|
71
|
+
const capabilities = getCapabilities();
|
|
72
|
+
if (!capabilities.pipeline) {
|
|
73
|
+
throw new Error('Pipeline bindings are not available on this platform.');
|
|
74
|
+
}
|
|
75
|
+
if (!config.backend || typeof config.backend !== 'object' || !config.backend.type) {
|
|
76
|
+
throw new Error("'backend' is required. Specify { type: 'metal' }, { type: 'vulkan' }, " +
|
|
77
|
+
"{ type: 'coreml', segPath: '...', ... }, or { type: 'openvino-hybrid', whisperEncoderPath: '...', ... }.");
|
|
78
|
+
}
|
|
79
|
+
const transcriptionOnly = config.transcriptionOnly ?? false;
|
|
80
|
+
validateBackendConfig(config.backend, capabilities.platform, transcriptionOnly);
|
|
81
|
+
if (!config.segModelPath)
|
|
82
|
+
throw new Error("'segModelPath' is required.");
|
|
83
|
+
if (!config.whisperModelPath)
|
|
84
|
+
throw new Error("'whisperModelPath' is required.");
|
|
85
|
+
accessSync(config.segModelPath);
|
|
86
|
+
accessSync(config.whisperModelPath);
|
|
87
|
+
if (!transcriptionOnly) {
|
|
88
|
+
if (!config.embModelPath)
|
|
89
|
+
throw new Error("'embModelPath' is required when transcriptionOnly is not set.");
|
|
90
|
+
if (!config.pldaPath)
|
|
91
|
+
throw new Error("'pldaPath' is required when transcriptionOnly is not set.");
|
|
92
|
+
accessSync(config.embModelPath);
|
|
93
|
+
accessSync(config.pldaPath);
|
|
94
|
+
}
|
|
20
95
|
if (config.vadModelPath)
|
|
21
96
|
accessSync(config.vadModelPath);
|
|
97
|
+
const nativeConfig = {
|
|
98
|
+
segModelPath: config.segModelPath,
|
|
99
|
+
whisperModelPath: config.whisperModelPath,
|
|
100
|
+
embModelPath: config.embModelPath,
|
|
101
|
+
pldaPath: config.pldaPath,
|
|
102
|
+
vadModelPath: config.vadModelPath,
|
|
103
|
+
transcriptionOnly,
|
|
104
|
+
noPrints: config.noPrints,
|
|
105
|
+
backend: serializeBackend(config.backend),
|
|
106
|
+
nThreads: config.nThreads,
|
|
107
|
+
language: config.language,
|
|
108
|
+
translate: config.translate,
|
|
109
|
+
detectLanguage: config.detectLanguage,
|
|
110
|
+
temperature: config.temperature,
|
|
111
|
+
temperatureInc: config.temperatureInc,
|
|
112
|
+
noFallback: config.noFallback,
|
|
113
|
+
beamSize: config.beamSize,
|
|
114
|
+
bestOf: config.bestOf,
|
|
115
|
+
entropyThold: config.entropyThold,
|
|
116
|
+
logprobThold: config.logprobThold,
|
|
117
|
+
noSpeechThold: config.noSpeechThold,
|
|
118
|
+
prompt: config.prompt,
|
|
119
|
+
noContext: config.noContext,
|
|
120
|
+
suppressBlank: config.suppressBlank,
|
|
121
|
+
suppressNst: config.suppressNst,
|
|
122
|
+
};
|
|
22
123
|
const binding = getBinding();
|
|
23
|
-
const native = new binding.PipelineModel(
|
|
124
|
+
const native = new binding.PipelineModel(nativeConfig);
|
|
24
125
|
await native.loadModels();
|
|
25
|
-
return new Pipeline(native);
|
|
126
|
+
return new Pipeline(native, transcriptionOnly);
|
|
26
127
|
}
|
|
27
128
|
async transcribe(audio) {
|
|
28
129
|
if (this.native.isClosed)
|
|
@@ -60,12 +161,14 @@ export class Pipeline {
|
|
|
60
161
|
session._setNative(nativeSession);
|
|
61
162
|
return session;
|
|
62
163
|
}
|
|
63
|
-
async
|
|
164
|
+
async setExecutionBackend(backend) {
|
|
64
165
|
if (this.native.isClosed)
|
|
65
166
|
throw new Error('Pipeline is closed');
|
|
66
|
-
|
|
167
|
+
const capabilities = getCapabilities();
|
|
168
|
+
validateBackendConfig(backend, capabilities.platform, this.transcriptionOnly);
|
|
169
|
+
return this.native.setExecutionBackend(serializeBackend(backend));
|
|
67
170
|
}
|
|
68
|
-
close() { this.native.close(); }
|
|
171
|
+
close() { trackNativeTeardown(this.native.close()); }
|
|
69
172
|
get isClosed() { return this.native.isClosed; }
|
|
70
173
|
}
|
|
71
174
|
//# sourceMappingURL=Pipeline.js.map
|
package/dist/Pipeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pipeline.js","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"Pipeline.js","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export declare class PipelineSession extends EventEmitter {
|
|
|
16
16
|
setLanguage(language: string): void;
|
|
17
17
|
setDecodeOptions(options: DecodeOptions): void;
|
|
18
18
|
finalize(): Promise<TranscriptionResult>;
|
|
19
|
-
close(): void
|
|
19
|
+
close(): Promise<void>;
|
|
20
20
|
get isClosed(): boolean;
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=PipelineSession.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineSession.d.ts","sourceRoot":"","sources":["../src/PipelineSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"PipelineSession.d.ts","sourceRoot":"","sources":["../src/PipelineSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAErF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;IACvC,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACvB;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,MAAM,CAAsC;;IAMpD,UAAU,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IAI/C,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1C,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAIrC,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAWnD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAOxC,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAQxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACF"}
|
package/dist/PipelineSession.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { trackNativeTeardown } from './binding.js';
|
|
2
3
|
export class PipelineSession extends EventEmitter {
|
|
3
4
|
native = null;
|
|
4
5
|
constructor() {
|
|
@@ -40,9 +41,16 @@ export class PipelineSession extends EventEmitter {
|
|
|
40
41
|
}
|
|
41
42
|
return this.native.finalize();
|
|
42
43
|
}
|
|
43
|
-
close() {
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
async close() {
|
|
45
|
+
const native = this.native;
|
|
46
|
+
this.native = null;
|
|
47
|
+
this.removeAllListeners();
|
|
48
|
+
if (native) {
|
|
49
|
+
const teardown = native.close();
|
|
50
|
+
trackNativeTeardown(teardown);
|
|
51
|
+
if (teardown && typeof teardown.then === 'function') {
|
|
52
|
+
await teardown;
|
|
53
|
+
}
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
get isClosed() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineSession.js","sourceRoot":"","sources":["../src/PipelineSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"PipelineSession.js","sourceRoot":"","sources":["../src/PipelineSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAUnD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACvC,MAAM,GAAiC,IAAI,CAAC;IAEpD;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,UAAU,CAAC,MAA6B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,mBAAmB,CAAC,QAAe;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAA4B,CAAC,CAAC;IACtD,CAAC;IAED,gBAAgB,CAAC,KAAmB;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAmB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,YAAY,YAAY,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB,CAAC,OAAsB;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,QAAQ,IAAI,OAAQ,QAA0B,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACvE,MAAM,QAAQ,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9C,CAAC;CACF"}
|
package/dist/binding.d.ts
CHANGED
|
@@ -1,27 +1,37 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Capabilities, GpuDevice, TranscribeCallback, TranscribeOptions, TranscriptionResult, WhisperContext, VadContextConstructor, WhisperContextConstructor } from './types.js';
|
|
2
2
|
export interface NativePipelineModel {
|
|
3
3
|
transcribe(audio: Float32Array): Promise<TranscriptionResult>;
|
|
4
4
|
transcribeOffline(audio: Float32Array, onProgress?: (phase: number, progress: number) => void, onSegment?: (start: number, end: number, text: string) => void): Promise<TranscriptionResult>;
|
|
5
5
|
setLanguage(language: string): void;
|
|
6
6
|
setDecodeOptions(options: Record<string, unknown>): void;
|
|
7
|
-
createSession(segmentsCb: (segments:
|
|
8
|
-
close(): void
|
|
7
|
+
createSession(segmentsCb: (segments: unknown[]) => void, audioCb: (audio: Float32Array) => void): NativePipelineSession;
|
|
8
|
+
close(): void | Promise<void>;
|
|
9
9
|
isClosed: boolean;
|
|
10
10
|
loadModels(): Promise<void>;
|
|
11
11
|
isLoaded: boolean;
|
|
12
|
-
|
|
12
|
+
setExecutionBackend(backend: Record<string, unknown>): Promise<void>;
|
|
13
13
|
}
|
|
14
14
|
export interface NativePipelineSession {
|
|
15
15
|
push(audio: Float32Array): Promise<boolean[]>;
|
|
16
16
|
setLanguage(language: string): void;
|
|
17
17
|
setDecodeOptions(options: Record<string, unknown>): void;
|
|
18
18
|
finalize(): Promise<TranscriptionResult>;
|
|
19
|
-
close(): void
|
|
19
|
+
close(): void | Promise<void>;
|
|
20
20
|
isClosed: boolean;
|
|
21
21
|
}
|
|
22
22
|
export interface NativeBinding {
|
|
23
|
-
|
|
23
|
+
WhisperContext: WhisperContextConstructor;
|
|
24
|
+
VadContext: VadContextConstructor;
|
|
25
|
+
transcribe: (context: WhisperContext, options: TranscribeOptions, callback: TranscribeCallback) => void;
|
|
26
|
+
getGpuDevices: () => GpuDevice[];
|
|
27
|
+
PipelineModel: new (config: Record<string, unknown>) => NativePipelineModel;
|
|
24
28
|
PipelineSession: new (...args: unknown[]) => NativePipelineSession;
|
|
29
|
+
getCapabilities: () => Capabilities;
|
|
25
30
|
}
|
|
31
|
+
export declare function trackNativeTeardown(result: void | Promise<void>): void;
|
|
32
|
+
export declare function waitForNativeTeardown(): Promise<void>;
|
|
33
|
+
export declare function getPlatformKey(platform?: string, arch?: string): string;
|
|
34
|
+
export declare function getNativePackageNameForPlatform(platform?: string, arch?: string): string;
|
|
26
35
|
export declare function getBinding(): NativeBinding;
|
|
36
|
+
export declare function getCapabilities(): Capabilities;
|
|
27
37
|
//# sourceMappingURL=binding.d.ts.map
|
package/dist/binding.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAUpB,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9D,iBAAiB,CACf,KAAK,EAAE,YAAY,EACnB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,EACtD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7D,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzD,aAAa,CACX,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,EACzC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GACrC,qBAAqB,CAAC;IACzB,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzD,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,yBAAyB,CAAC;IAC1C,UAAU,EAAE,qBAAqB,CAAC;IAClC,UAAU,EAAE,CACV,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,kBAAkB,KACzB,IAAI,CAAC;IACV,aAAa,EAAE,MAAM,SAAS,EAAE,CAAC;IACjC,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,mBAAmB,CAAC;IAC5E,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,qBAAqB,CAAC;IACnE,eAAe,EAAE,MAAM,YAAY,CAAC;CACrC;AAKD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAQtE;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAgB,cAAc,CAC5B,QAAQ,GAAE,MAAqB,EAC/B,IAAI,GAAE,MAAiB,GACtB,MAAM,CAER;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,GAAE,MAAqB,EAC/B,IAAI,GAAE,MAAiB,GACtB,MAAM,CAUR;AAkCD,wBAAgB,UAAU,IAAI,aAAa,CA8C1C;AAED,wBAAgB,eAAe,IAAI,YAAY,CAE9C"}
|
package/dist/binding.js
CHANGED
|
@@ -1,43 +1,100 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { arch as osArch, platform as osPlatform } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
2
6
|
const require = createRequire(import.meta.url);
|
|
7
|
+
const thisDir = fileURLToPath(new URL('.', import.meta.url));
|
|
8
|
+
const SUPPORTED_PLATFORMS = {
|
|
9
|
+
'darwin-arm64': '@pyannote-cpp-node/darwin-arm64',
|
|
10
|
+
'win32-x64': '@pyannote-cpp-node/win32-x64',
|
|
11
|
+
};
|
|
3
12
|
let cachedBinding = null;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
13
|
+
let pendingNativeTeardown = Promise.resolve();
|
|
14
|
+
export function trackNativeTeardown(result) {
|
|
15
|
+
if (!result || typeof result.then !== 'function') {
|
|
16
|
+
return;
|
|
7
17
|
}
|
|
8
|
-
|
|
9
|
-
|
|
18
|
+
pendingNativeTeardown = pendingNativeTeardown.then(() => Promise.resolve(result).then(() => undefined, () => undefined));
|
|
19
|
+
}
|
|
20
|
+
export async function waitForNativeTeardown() {
|
|
21
|
+
await pendingNativeTeardown;
|
|
22
|
+
}
|
|
23
|
+
export function getPlatformKey(platform = osPlatform(), arch = osArch()) {
|
|
24
|
+
return `${platform}-${arch}`;
|
|
25
|
+
}
|
|
26
|
+
export function getNativePackageNameForPlatform(platform = osPlatform(), arch = osArch()) {
|
|
27
|
+
const platformKey = getPlatformKey(platform, arch);
|
|
28
|
+
const packageName = SUPPORTED_PLATFORMS[platformKey];
|
|
29
|
+
if (packageName) {
|
|
30
|
+
return packageName;
|
|
10
31
|
}
|
|
11
|
-
|
|
12
|
-
|
|
32
|
+
throw new Error(`Unsupported platform: ${platformKey}. pyannote-cpp-node supports macOS Apple Silicon and Windows x64 only.`);
|
|
33
|
+
}
|
|
34
|
+
function tryWorkspacePath(platformKey) {
|
|
35
|
+
const possiblePaths = [
|
|
36
|
+
join(thisDir, '..', '..', platformKey),
|
|
37
|
+
join(thisDir, '..', '..', '..', platformKey),
|
|
38
|
+
];
|
|
39
|
+
for (const candidate of possiblePaths) {
|
|
40
|
+
if (existsSync(join(candidate, 'package.json'))) {
|
|
41
|
+
return candidate;
|
|
42
|
+
}
|
|
13
43
|
}
|
|
14
|
-
|
|
44
|
+
return null;
|
|
15
45
|
}
|
|
16
46
|
function isNativeBinding(value) {
|
|
17
47
|
if (typeof value !== 'object' || value === null) {
|
|
18
48
|
return false;
|
|
19
49
|
}
|
|
20
50
|
const candidate = value;
|
|
21
|
-
return (typeof candidate.
|
|
22
|
-
typeof candidate.
|
|
51
|
+
return (typeof candidate.WhisperContext === 'function' &&
|
|
52
|
+
typeof candidate.VadContext === 'function' &&
|
|
53
|
+
typeof candidate.transcribe === 'function' &&
|
|
54
|
+
typeof candidate.getGpuDevices === 'function' &&
|
|
55
|
+
typeof candidate.PipelineModel === 'function' &&
|
|
56
|
+
typeof candidate.PipelineSession === 'function' &&
|
|
57
|
+
typeof candidate.getCapabilities === 'function');
|
|
23
58
|
}
|
|
24
59
|
export function getBinding() {
|
|
25
60
|
if (cachedBinding !== null) {
|
|
26
61
|
return cachedBinding;
|
|
27
62
|
}
|
|
28
|
-
const
|
|
29
|
-
|
|
63
|
+
const platformKey = getPlatformKey();
|
|
64
|
+
const packageName = getNativePackageNameForPlatform();
|
|
65
|
+
const workspacePath = tryWorkspacePath(platformKey);
|
|
66
|
+
if (workspacePath) {
|
|
67
|
+
const loaded = require(workspacePath);
|
|
68
|
+
if (!isNativeBinding(loaded)) {
|
|
69
|
+
throw new Error(`Invalid native module export from workspace package '${workspacePath}'.`);
|
|
70
|
+
}
|
|
71
|
+
cachedBinding = loaded;
|
|
72
|
+
return cachedBinding;
|
|
73
|
+
}
|
|
30
74
|
try {
|
|
31
|
-
loaded = require(packageName);
|
|
75
|
+
const loaded = require(packageName);
|
|
76
|
+
if (!isNativeBinding(loaded)) {
|
|
77
|
+
throw new Error(`Invalid native module export from '${packageName}'.`);
|
|
78
|
+
}
|
|
79
|
+
cachedBinding = loaded;
|
|
80
|
+
return cachedBinding;
|
|
32
81
|
}
|
|
33
82
|
catch (error) {
|
|
34
83
|
const message = error instanceof Error ? error.message : String(error);
|
|
35
|
-
|
|
84
|
+
const moduleNotFound = error &&
|
|
85
|
+
typeof error === 'object' &&
|
|
86
|
+
'code' in error &&
|
|
87
|
+
error.code === 'MODULE_NOT_FOUND';
|
|
88
|
+
if (moduleNotFound) {
|
|
89
|
+
throw new Error(`Native binary not found. Please ensure ${packageName} is installed. Original error: ${message}`);
|
|
90
|
+
}
|
|
91
|
+
const windowsHint = process.platform === 'win32' && message.includes('The specified module could not be found')
|
|
92
|
+
? '\nThis usually means a required DLL dependency is missing. If running inside Electron, ensure native addon DLLs are excluded from asar packaging (use asarUnpack in your build config).'
|
|
93
|
+
: '';
|
|
94
|
+
throw new Error(`Failed to load native module '${packageName}'. ${message}${windowsHint}`);
|
|
36
95
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
cachedBinding = loaded;
|
|
41
|
-
return cachedBinding;
|
|
96
|
+
}
|
|
97
|
+
export function getCapabilities() {
|
|
98
|
+
return getBinding().getCapabilities();
|
|
42
99
|
}
|
|
43
100
|
//# sourceMappingURL=binding.js.map
|
package/dist/binding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAazC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7D,MAAM,mBAAmB,GAAG;IAC1B,cAAc,EAAE,iCAAiC;IACjD,WAAW,EAAE,8BAA8B;CACnC,CAAC;AA6CX,IAAI,aAAa,GAAyB,IAAI,CAAC;AAC/C,IAAI,qBAAqB,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAE7D,MAAM,UAAU,mBAAmB,CAAC,MAA4B;IAC9D,IAAI,CAAC,MAAM,IAAI,OAAQ,MAAwB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACpE,OAAO;IACT,CAAC;IAED,qBAAqB,GAAG,qBAAqB,CAAC,IAAI,CAChD,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,qBAAqB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,WAAmB,UAAU,EAAE,EAC/B,OAAe,MAAM,EAAE;IAEvB,OAAO,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,WAAmB,UAAU,EAAE,EAC/B,OAAe,MAAM,EAAE;IAEvB,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAA+C,CAAC,CAAC;IACzF,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,yBAAyB,WAAW,wEAAwE,CAC7G,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;QACtC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;KAC7C,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,OAAO,CACL,OAAO,SAAS,CAAC,cAAc,KAAK,UAAU;QAC9C,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;QAC1C,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;QAC1C,OAAO,SAAS,CAAC,aAAa,KAAK,UAAU;QAC7C,OAAO,SAAS,CAAC,aAAa,KAAK,UAAU;QAC7C,OAAO,SAAS,CAAC,eAAe,KAAK,UAAU;QAC/C,OAAO,SAAS,CAAC,eAAe,KAAK,UAAU,CAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,+BAA+B,EAAE,CAAC;IAEtD,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAY,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wDAAwD,aAAa,IAAI,CAAC,CAAC;QAC7F,CAAC;QACD,aAAa,GAAG,MAAM,CAAC;QACvB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAY,CAAC;QAC/C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,WAAW,IAAI,CAAC,CAAC;QACzE,CAAC;QACD,aAAa,GAAG,MAAM,CAAC;QACvB,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,cAAc,GAClB,KAAK;YACL,OAAO,KAAK,KAAK,QAAQ;YACzB,MAAM,IAAI,KAAK;YACd,KAA+B,CAAC,IAAI,KAAK,kBAAkB,CAAC;QAE/D,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,0CAA0C,WAAW,kCAAkC,OAAO,EAAE,CACjG,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GACf,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACzF,CAAC,CAAC,yLAAyL;YAC3L,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,IAAI,KAAK,CAAC,iCAAiC,WAAW,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,EAAE,CAAC,eAAe,EAAE,CAAC;AACxC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
1
|
+
import { Pipeline } from './Pipeline.js';
|
|
2
|
+
import { PipelineSession } from './PipelineSession.js';
|
|
3
|
+
import { getBinding, getCapabilities, getNativePackageNameForPlatform, getPlatformKey } from './binding.js';
|
|
4
|
+
import type { AlignedSegment, BackendConfig, BackendType, Capabilities, CoreMLBackendConfig, DecodeOptions, GpuDevice, MetalBackendConfig, ModelConfig, OpenVINOHybridBackendConfig, PipelineConfig, StreamingSegment, StreamingToken, TranscriptSegment, TranscribeOptions, TranscribeOptionsBase, TranscribeOptionsBuffer, TranscribeOptionsFile, TranscribeResult, TranscriptionResult, VadContext as VadContextInstance, VadContextConstructor, VadContextOptions, VulkanBackendConfig, WhisperContext as WhisperContextInstance, WhisperContextConstructor, WhisperContextOptions } from './types.js';
|
|
5
|
+
export declare const WhisperContextClass: WhisperContextConstructor;
|
|
6
|
+
export declare const VadContextClass: VadContextConstructor;
|
|
7
|
+
export declare const WhisperContext: WhisperContextConstructor;
|
|
8
|
+
export declare const VadContext: VadContextConstructor;
|
|
9
|
+
export declare const transcribe: (context: WhisperContextInstance, options: TranscribeOptions, callback: import("./types.js").TranscribeCallback) => void;
|
|
10
|
+
export declare const transcribeAsync: (context: WhisperContextInstance, options: TranscribeOptions) => Promise<TranscribeResult>;
|
|
11
|
+
export declare function createWhisperContext(options: WhisperContextOptions): WhisperContextInstance;
|
|
12
|
+
export declare function createVadContext(options: VadContextOptions): VadContextInstance;
|
|
13
|
+
export declare function getGpuDevices(): GpuDevice[];
|
|
14
|
+
export { Pipeline, PipelineSession, getBinding, getCapabilities, getNativePackageNameForPlatform, getPlatformKey, };
|
|
15
|
+
export type { AlignedSegment, BackendConfig, BackendType, Capabilities, CoreMLBackendConfig, DecodeOptions, GpuDevice, MetalBackendConfig, ModelConfig, OpenVINOHybridBackendConfig, PipelineConfig, StreamingSegment, StreamingToken, TranscriptSegment, TranscribeOptions, TranscribeOptionsBase, TranscribeOptionsBuffer, TranscribeOptionsFile, TranscribeResult, TranscriptionResult, VadContextConstructor, VadContextOptions, VulkanBackendConfig, WhisperContextConstructor, WhisperContextOptions, };
|
|
16
|
+
export type { NativeBinding, NativePipelineModel, NativePipelineSession, } from './binding.js';
|
|
17
|
+
declare const _default: {
|
|
18
|
+
WhisperContext: WhisperContextConstructor;
|
|
19
|
+
WhisperContextClass: WhisperContextConstructor;
|
|
20
|
+
VadContext: VadContextConstructor;
|
|
21
|
+
VadContextClass: VadContextConstructor;
|
|
22
|
+
transcribe: (context: WhisperContextInstance, options: TranscribeOptions, callback: import("./types.js").TranscribeCallback) => void;
|
|
23
|
+
transcribeAsync: (context: WhisperContextInstance, options: TranscribeOptions) => Promise<TranscribeResult>;
|
|
24
|
+
createWhisperContext: typeof createWhisperContext;
|
|
25
|
+
createVadContext: typeof createVadContext;
|
|
26
|
+
getGpuDevices: typeof getGpuDevices;
|
|
27
|
+
getCapabilities: typeof getCapabilities;
|
|
28
|
+
Pipeline: typeof Pipeline;
|
|
29
|
+
PipelineSession: typeof PipelineSession;
|
|
30
|
+
};
|
|
31
|
+
export default _default;
|
|
6
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5G,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,IAAI,kBAAkB,EAChC,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,IAAI,sBAAsB,EACxC,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAIpB,eAAO,MAAM,mBAAmB,2BAAyB,CAAC;AAC1D,eAAO,MAAM,eAAe,uBAAqB,CAAC;AAClD,eAAO,MAAM,cAAc,2BAAyB,CAAC;AACrD,eAAO,MAAM,UAAU,uBAAqB,CAAC;AAC7C,eAAO,MAAM,UAAU,0HAAqB,CAAC;AAC7C,eAAO,MAAM,eAAe,EAAoC,CAC9D,OAAO,EAAE,sBAAsB,EAC/B,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/B,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,sBAAsB,CAE3F;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,kBAAkB,CAE/E;AAED,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAE3C;AAED,OAAO,EACL,QAAQ,EACR,eAAe,EACf,UAAU,EACV,eAAe,EACf,+BAA+B,EAC/B,cAAc,GACf,CAAC;AAEF,YAAY,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,CAAC;AAEF,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,cAAc,CAAC;;;;;;;+BAzDX,sBAAsB,WACtB,iBAAiB,KACvB,OAAO,CAAC,gBAAgB,CAAC;;;;;;;;AAyD9B,wBAaE"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { promisify } from 'node:util';
|
|
2
|
+
import { Pipeline } from './Pipeline.js';
|
|
3
|
+
import { PipelineSession } from './PipelineSession.js';
|
|
4
|
+
import { getBinding, getCapabilities, getNativePackageNameForPlatform, getPlatformKey } from './binding.js';
|
|
5
|
+
const binding = getBinding();
|
|
6
|
+
export const WhisperContextClass = binding.WhisperContext;
|
|
7
|
+
export const VadContextClass = binding.VadContext;
|
|
8
|
+
export const WhisperContext = binding.WhisperContext;
|
|
9
|
+
export const VadContext = binding.VadContext;
|
|
10
|
+
export const transcribe = binding.transcribe;
|
|
11
|
+
export const transcribeAsync = promisify(binding.transcribe);
|
|
12
|
+
export function createWhisperContext(options) {
|
|
13
|
+
return new binding.WhisperContext(options);
|
|
14
|
+
}
|
|
15
|
+
export function createVadContext(options) {
|
|
16
|
+
return new binding.VadContext(options);
|
|
17
|
+
}
|
|
18
|
+
export function getGpuDevices() {
|
|
19
|
+
return binding.getGpuDevices();
|
|
20
|
+
}
|
|
21
|
+
export { Pipeline, PipelineSession, getBinding, getCapabilities, getNativePackageNameForPlatform, getPlatformKey, };
|
|
22
|
+
export default {
|
|
23
|
+
WhisperContext,
|
|
24
|
+
WhisperContextClass,
|
|
25
|
+
VadContext,
|
|
26
|
+
VadContextClass,
|
|
27
|
+
transcribe,
|
|
28
|
+
transcribeAsync,
|
|
29
|
+
createWhisperContext,
|
|
30
|
+
createVadContext,
|
|
31
|
+
getGpuDevices,
|
|
32
|
+
getCapabilities,
|
|
33
|
+
Pipeline,
|
|
34
|
+
PipelineSession,
|
|
35
|
+
};
|
|
4
36
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+B5G,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAG7B,CAAC;AAE/B,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA0B;IACzD,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;AACjC,CAAC;AAED,OAAO,EACL,QAAQ,EACR,eAAe,EACf,UAAU,EACV,eAAe,EACf,+BAA+B,EAC/B,cAAc,GACf,CAAC;AAoCF,eAAe;IACb,cAAc;IACd,mBAAmB;IACnB,UAAU;IACV,eAAe;IACf,UAAU;IACV,eAAe;IACf,oBAAoB;IACpB,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,QAAQ;IACR,eAAe;CAChB,CAAC"}
|