pyannote-cpp-node 0.6.0 → 1.0.1
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/types.d.ts
CHANGED
|
@@ -1,97 +1,217 @@
|
|
|
1
|
-
export interface
|
|
2
|
-
|
|
1
|
+
export interface Capabilities {
|
|
2
|
+
whisper: boolean;
|
|
3
|
+
vad: boolean;
|
|
4
|
+
gpuDiscovery: boolean;
|
|
5
|
+
pipeline: boolean;
|
|
6
|
+
diarization: boolean;
|
|
7
|
+
platform: string;
|
|
8
|
+
supportedBackendTypes: BackendType[];
|
|
9
|
+
}
|
|
10
|
+
export interface MetalBackendConfig {
|
|
11
|
+
type: 'metal';
|
|
12
|
+
gpuDevice?: number;
|
|
13
|
+
flashAttn?: boolean;
|
|
14
|
+
segPath: string;
|
|
15
|
+
embPath: string;
|
|
16
|
+
}
|
|
17
|
+
export interface VulkanBackendConfig {
|
|
18
|
+
type: 'vulkan';
|
|
19
|
+
gpuDevice?: number;
|
|
20
|
+
flashAttn?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface CoreMLBackendConfig {
|
|
23
|
+
type: 'coreml';
|
|
24
|
+
gpuDevice?: number;
|
|
25
|
+
flashAttn?: boolean;
|
|
26
|
+
segPath: string;
|
|
27
|
+
embPath: string;
|
|
28
|
+
whisperEncoderPath: string;
|
|
29
|
+
}
|
|
30
|
+
export interface OpenVINOHybridBackendConfig {
|
|
31
|
+
type: 'openvino-hybrid';
|
|
32
|
+
gpuDevice?: number;
|
|
33
|
+
flashAttn?: boolean;
|
|
34
|
+
whisperEncoderPath: string;
|
|
35
|
+
embPath: string;
|
|
36
|
+
openvinoDevice?: string;
|
|
37
|
+
openvinoCacheDir?: string;
|
|
38
|
+
}
|
|
39
|
+
export type BackendConfig = MetalBackendConfig | VulkanBackendConfig | CoreMLBackendConfig | OpenVINOHybridBackendConfig;
|
|
40
|
+
export type BackendType = BackendConfig['type'];
|
|
41
|
+
export interface WhisperContextOptions {
|
|
42
|
+
model: string;
|
|
43
|
+
use_gpu?: boolean;
|
|
44
|
+
flash_attn?: boolean;
|
|
45
|
+
gpu_device?: number;
|
|
46
|
+
use_coreml?: boolean;
|
|
47
|
+
use_openvino?: boolean;
|
|
48
|
+
openvino_model_path?: string;
|
|
49
|
+
openvino_device?: string;
|
|
50
|
+
openvino_cache_dir?: string;
|
|
51
|
+
dtw?: string;
|
|
52
|
+
dtw_norm_top_k?: number;
|
|
53
|
+
no_prints?: boolean;
|
|
54
|
+
}
|
|
55
|
+
export interface TranscribeOptionsBase {
|
|
56
|
+
language?: string;
|
|
57
|
+
translate?: boolean;
|
|
58
|
+
detect_language?: boolean;
|
|
59
|
+
n_threads?: number;
|
|
60
|
+
n_processors?: number;
|
|
61
|
+
offset_ms?: number;
|
|
62
|
+
duration_ms?: number;
|
|
63
|
+
audio_ctx?: number;
|
|
64
|
+
no_timestamps?: boolean;
|
|
65
|
+
single_segment?: boolean;
|
|
66
|
+
max_len?: number;
|
|
67
|
+
max_tokens?: number;
|
|
68
|
+
max_context?: number;
|
|
69
|
+
split_on_word?: boolean;
|
|
70
|
+
token_timestamps?: boolean;
|
|
71
|
+
word_thold?: number;
|
|
72
|
+
comma_in_time?: boolean;
|
|
73
|
+
temperature?: number;
|
|
74
|
+
temperature_inc?: number;
|
|
75
|
+
best_of?: number;
|
|
76
|
+
beam_size?: number;
|
|
77
|
+
no_fallback?: boolean;
|
|
78
|
+
entropy_thold?: number;
|
|
79
|
+
logprob_thold?: number;
|
|
80
|
+
no_speech_thold?: number;
|
|
81
|
+
prompt?: string;
|
|
82
|
+
no_context?: boolean;
|
|
83
|
+
suppress_blank?: boolean;
|
|
84
|
+
suppress_nst?: boolean;
|
|
85
|
+
diarize?: boolean;
|
|
86
|
+
tinydiarize?: boolean;
|
|
87
|
+
print_special?: boolean;
|
|
88
|
+
print_progress?: boolean;
|
|
89
|
+
print_realtime?: boolean;
|
|
90
|
+
print_timestamps?: boolean;
|
|
91
|
+
vad?: boolean;
|
|
92
|
+
vad_model?: string;
|
|
93
|
+
vad_threshold?: number;
|
|
94
|
+
vad_min_speech_duration_ms?: number;
|
|
95
|
+
vad_min_silence_duration_ms?: number;
|
|
96
|
+
vad_max_speech_duration_s?: number;
|
|
97
|
+
vad_speech_pad_ms?: number;
|
|
98
|
+
vad_samples_overlap?: number;
|
|
99
|
+
progress_callback?: (progress: number) => void;
|
|
100
|
+
on_new_segment?: (segment: StreamingSegment) => void;
|
|
101
|
+
}
|
|
102
|
+
export interface TranscribeOptionsFile extends TranscribeOptionsBase {
|
|
103
|
+
fname_inp: string;
|
|
104
|
+
pcmf32?: never;
|
|
105
|
+
}
|
|
106
|
+
export interface TranscribeOptionsBuffer extends TranscribeOptionsBase {
|
|
107
|
+
pcmf32: Float32Array;
|
|
108
|
+
fname_inp?: never;
|
|
109
|
+
}
|
|
110
|
+
export type TranscribeOptions = TranscribeOptionsFile | TranscribeOptionsBuffer;
|
|
111
|
+
export interface StreamingToken {
|
|
112
|
+
text: string;
|
|
113
|
+
probability: number;
|
|
114
|
+
t0: number;
|
|
115
|
+
t1: number;
|
|
116
|
+
t_dtw: number;
|
|
117
|
+
}
|
|
118
|
+
export interface TranscriptSegment {
|
|
119
|
+
start: string;
|
|
120
|
+
end: string;
|
|
121
|
+
text: string;
|
|
122
|
+
tokens?: StreamingToken[];
|
|
123
|
+
}
|
|
124
|
+
export interface StreamingSegment {
|
|
125
|
+
start: string;
|
|
126
|
+
end: string;
|
|
127
|
+
text: string;
|
|
128
|
+
segment_index: number;
|
|
129
|
+
is_partial: boolean;
|
|
130
|
+
tokens?: StreamingToken[];
|
|
131
|
+
}
|
|
132
|
+
export interface TranscribeResult {
|
|
133
|
+
segments: TranscriptSegment[];
|
|
134
|
+
language?: string;
|
|
135
|
+
}
|
|
136
|
+
export interface GpuDevice {
|
|
137
|
+
index: number;
|
|
138
|
+
name: string;
|
|
139
|
+
description: string;
|
|
140
|
+
type: 'gpu' | 'igpu';
|
|
141
|
+
memory_free: number;
|
|
142
|
+
memory_total: number;
|
|
143
|
+
}
|
|
144
|
+
export interface VadContextOptions {
|
|
145
|
+
model: string;
|
|
146
|
+
threshold?: number;
|
|
147
|
+
n_threads?: number;
|
|
148
|
+
no_prints?: boolean;
|
|
149
|
+
}
|
|
150
|
+
export interface WhisperContext {
|
|
151
|
+
getSystemInfo(): string;
|
|
152
|
+
isMultilingual(): boolean;
|
|
153
|
+
free(): void;
|
|
154
|
+
}
|
|
155
|
+
export interface WhisperContextConstructor {
|
|
156
|
+
new (options: WhisperContextOptions): WhisperContext;
|
|
157
|
+
}
|
|
158
|
+
export interface VadContext {
|
|
159
|
+
getWindowSamples(): number;
|
|
160
|
+
getSampleRate(): number;
|
|
161
|
+
process(samples: Float32Array): number;
|
|
162
|
+
reset(): void;
|
|
163
|
+
free(): void;
|
|
164
|
+
}
|
|
165
|
+
export interface VadContextConstructor {
|
|
166
|
+
new (options: VadContextOptions): VadContext;
|
|
167
|
+
}
|
|
168
|
+
export type TranscribeCallback = (error: Error | null, result?: TranscribeResult) => void;
|
|
169
|
+
export interface PipelineConfig {
|
|
3
170
|
segModelPath: string;
|
|
4
|
-
/** Path to embedding GGUF model */
|
|
5
|
-
embModelPath: string;
|
|
6
|
-
/** Path to PLDA GGUF model */
|
|
7
|
-
pldaPath: string;
|
|
8
|
-
/** Path to embedding CoreML .mlpackage directory */
|
|
9
|
-
coremlPath: string;
|
|
10
|
-
/** Path to segmentation CoreML .mlpackage directory */
|
|
11
|
-
segCoremlPath: string;
|
|
12
|
-
/** Path to Whisper GGUF model */
|
|
13
171
|
whisperModelPath: string;
|
|
14
|
-
/**
|
|
172
|
+
/** Required unless transcriptionOnly is true */
|
|
173
|
+
embModelPath?: string;
|
|
174
|
+
/** Required unless transcriptionOnly is true */
|
|
175
|
+
pldaPath?: string;
|
|
15
176
|
vadModelPath?: string;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/** Enable Flash Attention (default: true) */
|
|
19
|
-
flashAttn?: boolean;
|
|
20
|
-
/** GPU device index (default: 0) */
|
|
21
|
-
gpuDevice?: number;
|
|
22
|
-
/**
|
|
23
|
-
* Enable CoreML acceleration for Whisper encoder on macOS (default: false).
|
|
24
|
-
* The CoreML model must be placed next to the GGUF model with naming convention:
|
|
25
|
-
* e.g., ggml-base.en.bin -> ggml-base.en-encoder.mlmodelc/
|
|
26
|
-
*/
|
|
27
|
-
useCoreml?: boolean;
|
|
28
|
-
/** Suppress whisper.cpp log output (default: false) */
|
|
177
|
+
transcriptionOnly?: boolean;
|
|
178
|
+
backend: BackendConfig;
|
|
29
179
|
noPrints?: boolean;
|
|
30
|
-
/** Number of threads for Whisper inference (default: 4) */
|
|
31
180
|
nThreads?: number;
|
|
32
|
-
/** Language code (e.g., 'en', 'zh'). Omit for auto-detect. (default: 'en') */
|
|
33
181
|
language?: string;
|
|
34
|
-
/** Translate non-English speech to English (default: false) */
|
|
35
182
|
translate?: boolean;
|
|
36
|
-
/** Auto-detect spoken language. Overrides 'language' when true. (default: false) */
|
|
37
183
|
detectLanguage?: boolean;
|
|
38
|
-
/** Sampling temperature. 0.0 = greedy deterministic. (default: 0.0) */
|
|
39
184
|
temperature?: number;
|
|
40
|
-
/** Temperature increment for fallback retries (default: 0.2) */
|
|
41
185
|
temperatureInc?: number;
|
|
42
|
-
/** Disable temperature fallback. If true, temperatureInc is ignored. (default: false) */
|
|
43
186
|
noFallback?: boolean;
|
|
44
|
-
/** Beam search size. -1 uses greedy decoding. >1 enables beam search. (default: -1) */
|
|
45
187
|
beamSize?: number;
|
|
46
|
-
/** Best-of-N sampling candidates for greedy decoding (default: 5) */
|
|
47
188
|
bestOf?: number;
|
|
48
|
-
/** Entropy threshold for decoder fallback (default: 2.4) */
|
|
49
189
|
entropyThold?: number;
|
|
50
|
-
/** Log probability threshold for decoder fallback (default: -1.0) */
|
|
51
190
|
logprobThold?: number;
|
|
52
|
-
/** No-speech probability threshold (default: 0.6) */
|
|
53
191
|
noSpeechThold?: number;
|
|
54
|
-
/** Initial prompt text to condition the decoder (default: none) */
|
|
55
192
|
prompt?: string;
|
|
56
|
-
/** Don't use previous segment as context for next segment (default: true) */
|
|
57
193
|
noContext?: boolean;
|
|
58
|
-
/** Suppress blank outputs at the beginning of segments (default: true) */
|
|
59
194
|
suppressBlank?: boolean;
|
|
60
|
-
/** Suppress non-speech tokens (default: false) */
|
|
61
195
|
suppressNst?: boolean;
|
|
62
196
|
}
|
|
197
|
+
/** @deprecated Use PipelineConfig instead */
|
|
198
|
+
export type ModelConfig = PipelineConfig;
|
|
63
199
|
export interface DecodeOptions {
|
|
64
|
-
/** Language code (e.g., 'en', 'zh'). Omit for auto-detect. */
|
|
65
200
|
language?: string;
|
|
66
|
-
/** Translate non-English speech to English */
|
|
67
201
|
translate?: boolean;
|
|
68
|
-
/** Auto-detect spoken language. Overrides 'language' when true. */
|
|
69
202
|
detectLanguage?: boolean;
|
|
70
|
-
/** Number of threads for Whisper inference */
|
|
71
203
|
nThreads?: number;
|
|
72
|
-
/** Sampling temperature. 0.0 = greedy deterministic. */
|
|
73
204
|
temperature?: number;
|
|
74
|
-
/** Temperature increment for fallback retries */
|
|
75
205
|
temperatureInc?: number;
|
|
76
|
-
/** Disable temperature fallback. If true, temperatureInc is ignored. */
|
|
77
206
|
noFallback?: boolean;
|
|
78
|
-
/** Beam search size. -1 uses greedy decoding. >1 enables beam search. */
|
|
79
207
|
beamSize?: number;
|
|
80
|
-
/** Best-of-N sampling candidates for greedy decoding */
|
|
81
208
|
bestOf?: number;
|
|
82
|
-
/** Entropy threshold for decoder fallback */
|
|
83
209
|
entropyThold?: number;
|
|
84
|
-
/** Log probability threshold for decoder fallback */
|
|
85
210
|
logprobThold?: number;
|
|
86
|
-
/** No-speech probability threshold */
|
|
87
211
|
noSpeechThold?: number;
|
|
88
|
-
/** Initial prompt text to condition the decoder */
|
|
89
212
|
prompt?: string;
|
|
90
|
-
/** Don't use previous segment as context for next segment */
|
|
91
213
|
noContext?: boolean;
|
|
92
|
-
/** Suppress blank outputs at the beginning of segments */
|
|
93
214
|
suppressBlank?: boolean;
|
|
94
|
-
/** Suppress non-speech tokens */
|
|
95
215
|
suppressNst?: boolean;
|
|
96
216
|
}
|
|
97
217
|
export interface AlignedSegment {
|
|
@@ -102,5 +222,6 @@ export interface AlignedSegment {
|
|
|
102
222
|
}
|
|
103
223
|
export interface TranscriptionResult {
|
|
104
224
|
segments: AlignedSegment[];
|
|
225
|
+
filteredAudio?: Float32Array;
|
|
105
226
|
}
|
|
106
227
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pyannote-cpp-node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Node.js bindings for whisper.cpp plus the pyannote speaker diarization pipeline",
|
|
4
5
|
"type": "module",
|
|
5
6
|
"main": "./dist/index.js",
|
|
6
7
|
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
7
14
|
"engines": {
|
|
8
15
|
"node": ">=18"
|
|
9
16
|
},
|
|
@@ -13,18 +20,23 @@
|
|
|
13
20
|
"dist/**/*.js.map",
|
|
14
21
|
"dist/**/*.d.ts.map"
|
|
15
22
|
],
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/predict-woo/pyannote-ggml"
|
|
26
|
+
},
|
|
16
27
|
"publishConfig": {
|
|
17
28
|
"access": "public"
|
|
18
29
|
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsc",
|
|
32
|
+
"test": "vitest run"
|
|
33
|
+
},
|
|
19
34
|
"optionalDependencies": {
|
|
20
|
-
"@pyannote-cpp-node/darwin-arm64": "0.
|
|
21
|
-
"@pyannote-cpp-node/
|
|
35
|
+
"@pyannote-cpp-node/darwin-arm64": "1.0.1",
|
|
36
|
+
"@pyannote-cpp-node/win32-x64": "1.0.1"
|
|
22
37
|
},
|
|
23
38
|
"devDependencies": {
|
|
39
|
+
"@types/node": "^25.4.0",
|
|
24
40
|
"typescript": "^5.7.0"
|
|
25
|
-
},
|
|
26
|
-
"scripts": {
|
|
27
|
-
"build": "tsc",
|
|
28
|
-
"test": "vitest run"
|
|
29
41
|
}
|
|
30
|
-
}
|
|
42
|
+
}
|
package/dist/Pyannote.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { StreamingSession } from './StreamingSession.js';
|
|
2
|
-
import type { DiarizationResult, ModelConfig } from './types.js';
|
|
3
|
-
export declare class Pyannote {
|
|
4
|
-
private native;
|
|
5
|
-
private constructor();
|
|
6
|
-
static load(config: ModelConfig): Promise<Pyannote>;
|
|
7
|
-
diarize(audio: Float32Array): Promise<DiarizationResult>;
|
|
8
|
-
createStreamingSession(): StreamingSession;
|
|
9
|
-
close(): void;
|
|
10
|
-
get isClosed(): boolean;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=Pyannote.d.ts.map
|
package/dist/Pyannote.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Pyannote.d.ts","sourceRoot":"","sources":["../src/Pyannote.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEjE,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO;WAIM,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkBnD,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAa9D,sBAAsB,IAAI,gBAAgB;IAQ1C,KAAK,IAAI,IAAI;IAIb,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACF"}
|
package/dist/Pyannote.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { accessSync } from 'node:fs';
|
|
2
|
-
import { getBinding } from './binding.js';
|
|
3
|
-
import { StreamingSession } from './StreamingSession.js';
|
|
4
|
-
export class Pyannote {
|
|
5
|
-
native;
|
|
6
|
-
constructor(native) {
|
|
7
|
-
this.native = native;
|
|
8
|
-
}
|
|
9
|
-
static async load(config) {
|
|
10
|
-
const paths = [
|
|
11
|
-
config.segModelPath,
|
|
12
|
-
config.embModelPath,
|
|
13
|
-
config.pldaPath,
|
|
14
|
-
config.coremlPath,
|
|
15
|
-
config.segCoremlPath,
|
|
16
|
-
];
|
|
17
|
-
for (const path of paths) {
|
|
18
|
-
accessSync(path);
|
|
19
|
-
}
|
|
20
|
-
const binding = getBinding();
|
|
21
|
-
const native = new binding.PyannoteModel(config);
|
|
22
|
-
return new Pyannote(native);
|
|
23
|
-
}
|
|
24
|
-
async diarize(audio) {
|
|
25
|
-
if (this.native.isClosed) {
|
|
26
|
-
throw new Error('Model is closed');
|
|
27
|
-
}
|
|
28
|
-
if (!(audio instanceof Float32Array)) {
|
|
29
|
-
throw new TypeError('Expected Float32Array');
|
|
30
|
-
}
|
|
31
|
-
if (audio.length === 0) {
|
|
32
|
-
throw new Error('Audio must not be empty');
|
|
33
|
-
}
|
|
34
|
-
return this.native.diarize(audio);
|
|
35
|
-
}
|
|
36
|
-
createStreamingSession() {
|
|
37
|
-
if (this.native.isClosed) {
|
|
38
|
-
throw new Error('Model is closed');
|
|
39
|
-
}
|
|
40
|
-
const nativeSession = this.native.createStreamingSession();
|
|
41
|
-
return new StreamingSession(nativeSession);
|
|
42
|
-
}
|
|
43
|
-
close() {
|
|
44
|
-
this.native.close();
|
|
45
|
-
}
|
|
46
|
-
get isClosed() {
|
|
47
|
-
return this.native.isClosed;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=Pyannote.js.map
|
package/dist/Pyannote.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Pyannote.js","sourceRoot":"","sources":["../src/Pyannote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,UAAU,EAA4B,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,OAAO,QAAQ;IACX,MAAM,CAAsB;IAEpC,YAAoB,MAA2B;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAmB;QACnC,MAAM,KAAK,GAAG;YACZ,MAAM,CAAC,YAAY;YACnB,MAAM,CAAC,YAAY;YACnB,MAAM,CAAC,QAAQ;YACf,MAAM,CAAC,UAAU;YACjB,MAAM,CAAC,aAAa;SACrB,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAmB;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,YAAY,YAAY,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAC3D,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { NativeStreamingSession } from './binding.js';
|
|
2
|
-
import type { DiarizationResult, VADChunk } from './types.js';
|
|
3
|
-
export declare class StreamingSession {
|
|
4
|
-
private native;
|
|
5
|
-
constructor(native: NativeStreamingSession);
|
|
6
|
-
push(audio: Float32Array): Promise<VADChunk[]>;
|
|
7
|
-
recluster(): Promise<DiarizationResult>;
|
|
8
|
-
finalize(): Promise<DiarizationResult>;
|
|
9
|
-
close(): void;
|
|
10
|
-
get isClosed(): boolean;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=StreamingSession.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StreamingSession.d.ts","sourceRoot":"","sources":["../src/StreamingSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE9D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAyB;gBAE3B,MAAM,EAAE,sBAAsB;IAIpC,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAU9C,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAOvC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAO5C,KAAK,IAAI,IAAI;IAIb,IAAI,QAAQ,IAAI,OAAO,CAEtB;CACF"}
|
package/dist/StreamingSession.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export class StreamingSession {
|
|
2
|
-
native;
|
|
3
|
-
constructor(native) {
|
|
4
|
-
this.native = native;
|
|
5
|
-
}
|
|
6
|
-
async push(audio) {
|
|
7
|
-
if (this.native.isClosed) {
|
|
8
|
-
throw new Error('Session is closed');
|
|
9
|
-
}
|
|
10
|
-
if (!(audio instanceof Float32Array)) {
|
|
11
|
-
throw new TypeError('Expected Float32Array');
|
|
12
|
-
}
|
|
13
|
-
return this.native.push(audio);
|
|
14
|
-
}
|
|
15
|
-
async recluster() {
|
|
16
|
-
if (this.native.isClosed) {
|
|
17
|
-
throw new Error('Session is closed');
|
|
18
|
-
}
|
|
19
|
-
return this.native.recluster();
|
|
20
|
-
}
|
|
21
|
-
async finalize() {
|
|
22
|
-
if (this.native.isClosed) {
|
|
23
|
-
throw new Error('Session is closed');
|
|
24
|
-
}
|
|
25
|
-
return this.native.finalize();
|
|
26
|
-
}
|
|
27
|
-
close() {
|
|
28
|
-
this.native.close();
|
|
29
|
-
}
|
|
30
|
-
get isClosed() {
|
|
31
|
-
return this.native.isClosed;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=StreamingSession.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StreamingSession.js","sourceRoot":"","sources":["../src/StreamingSession.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAyB;IAEvC,YAAY,MAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAmB;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,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;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;CACF"}
|