pyannote-cpp-node 0.5.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.
@@ -1,15 +1,16 @@
1
1
  import { PipelineSession } from './PipelineSession.js';
2
- import type { ModelConfig, TranscriptionResult, DecodeOptions } from './types.js';
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: ModelConfig): Promise<Pipeline>;
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
- setUseCoreml(useCoreml: boolean): Promise<void>;
13
+ setExecutionBackend(backend: BackendConfig): Promise<void>;
13
14
  close(): void;
14
15
  get isClosed(): boolean;
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Pipeline.d.ts","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAElF,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO;WAIM,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkBnD,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,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD,KAAK,IAAI,IAAI;IACb,IAAI,QAAQ,IAAI,OAAO,CAAiC;CACzD"}
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
- constructor(native) {
64
+ transcriptionOnly;
65
+ constructor(native, transcriptionOnly) {
7
66
  this.native = native;
67
+ this.transcriptionOnly = transcriptionOnly;
8
68
  }
9
69
  static async load(config) {
10
- const requiredPaths = [
11
- config.segModelPath,
12
- config.embModelPath,
13
- config.pldaPath,
14
- config.coremlPath,
15
- config.segCoremlPath,
16
- config.whisperModelPath,
17
- ];
18
- for (const path of requiredPaths)
19
- accessSync(path);
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(config);
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 setUseCoreml(useCoreml) {
164
+ async setExecutionBackend(backend) {
64
165
  if (this.native.isClosed)
65
166
  throw new Error('Pipeline is closed');
66
- return this.native.switchWhisperMode(useCoreml);
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
@@ -1 +1 @@
1
- {"version":3,"file":"Pipeline.js","sourceRoot":"","sources":["../src/Pipeline.ts"],"names":[],"mappings":"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"}
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;AAE3C,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;IAQ9C,KAAK,IAAI,IAAI;IAMb,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACF"}
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"}
@@ -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
- if (this.native) {
45
- this.native.close();
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;AAW3C,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;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9C,CAAC;CACF"}
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 { ModelConfig, TranscriptionResult } from './types.js';
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: any[]) => void, audioCb: (audio: Float32Array) => void): NativePipelineSession;
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
- switchWhisperMode(useCoreml: boolean): Promise<void>;
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
- PipelineModel: new (config: ModelConfig) => NativePipelineModel;
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
@@ -1 +1 @@
1
- {"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAInE,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9D,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7L,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,GAAG,EAAE,KAAK,IAAI,EACrC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GACrC,qBAAqB,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;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,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,KAAK,MAAM,EAAE,WAAW,KAAK,mBAAmB,CAAC;IAChE,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,qBAAqB,CAAC;CACpE;AAoCD,wBAAgB,UAAU,IAAI,aAAa,CAyB1C"}
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 { createRequire } from 'module';
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
- function getPackageName() {
5
- if (process.platform !== 'darwin') {
6
- throw new Error(`Unsupported platform: ${process.platform}. pyannote-cpp-node currently supports macOS only.`);
13
+ let pendingNativeTeardown = Promise.resolve();
14
+ export function trackNativeTeardown(result) {
15
+ if (!result || typeof result.then !== 'function') {
16
+ return;
7
17
  }
8
- if (process.arch === 'arm64') {
9
- return '@pyannote-cpp-node/darwin-arm64';
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
- if (process.arch === 'x64') {
12
- return '@pyannote-cpp-node/darwin-x64';
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
- throw new Error(`Unsupported architecture on macOS: ${process.arch}. Supported architectures are arm64 and x64.`);
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.PipelineModel === 'function' &&
22
- typeof candidate.PipelineSession === 'function');
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 packageName = getPackageName();
29
- let loaded;
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
- throw new Error(`Failed to load native module '${packageName}'. Ensure the platform package is installed. Original error: ${message}`);
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
- if (!isNativeBinding(loaded)) {
38
- throw new Error(`Invalid native module export from '${packageName}'. Expected PipelineModel and PipelineSession constructors.`);
39
- }
40
- cachedBinding = loaded;
41
- return cachedBinding;
96
+ }
97
+ export function getCapabilities() {
98
+ return getBinding().getCapabilities();
42
99
  }
43
100
  //# sourceMappingURL=binding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAIvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAgC/C,IAAI,aAAa,GAAyB,IAAI,CAAC;AAE/C,SAAS,cAAc;IACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,yBAAyB,OAAO,CAAC,QAAQ,oDAAoD,CAC9F,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,+BAA+B,CAAC;IACzC,CAAC;IAED,MAAM,IAAI,KAAK,CACb,sCAAsC,OAAO,CAAC,IAAI,8CAA8C,CACjG,CAAC;AACJ,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,aAAa,KAAK,UAAU;QAC7C,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;IAErC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,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,IAAI,KAAK,CACb,iCAAiC,WAAW,gEAAgE,OAAO,EAAE,CACtH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,sCAAsC,WAAW,6DAA6D,CAC/G,CAAC;IACJ,CAAC;IAED,aAAa,GAAG,MAAM,CAAC;IACvB,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,32 @@
1
- export { Pipeline } from './Pipeline.js';
2
- export { PipelineSession } from './PipelineSession.js';
3
- export type { AlignedSegment, DecodeOptions, ModelConfig, TranscriptionResult, } from './types.js';
4
- export type { NativePipelineModel, NativePipelineSession, NativeBinding, } from './binding.js';
5
- export { getBinding } from './binding.js';
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
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
- export { Pipeline } from './Pipeline.js';
2
- export { PipelineSession } from './PipelineSession.js';
3
- export { getBinding } from './binding.js';
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;AAYvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,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"}