cactus-react-native 1.10.3 → 1.12.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 +199 -40
- package/android/src/main/jniLibs/arm64-v8a/libcactus.a +0 -0
- package/cpp/HybridCactus.cpp +131 -2
- package/cpp/HybridCactus.hpp +15 -0
- package/cpp/cactus_ffi.h +240 -2
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus_ffi.h +240 -2
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus_utils.h +940 -109
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/engine.h +175 -25
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/gemma_tools.h +48 -21
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/graph.h +79 -7
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel.h +122 -9
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel_utils.h +191 -2
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/cactus +0 -0
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_ffi.h +240 -2
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_utils.h +940 -109
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/engine.h +175 -25
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/gemma_tools.h +48 -21
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/graph.h +79 -7
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel.h +122 -9
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel_utils.h +191 -2
- package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/cactus +0 -0
- package/lib/module/classes/{CactusVAD.js → CactusAudio.js} +19 -6
- package/lib/module/classes/CactusAudio.js.map +1 -0
- package/lib/module/classes/CactusLM.js +25 -0
- package/lib/module/classes/CactusLM.js.map +1 -1
- package/lib/module/hooks/{useCactusVAD.js → useCactusAudio.js} +50 -20
- package/lib/module/hooks/useCactusAudio.js.map +1 -0
- package/lib/module/index.js +2 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/modelRegistry.js +5 -3
- package/lib/module/modelRegistry.js.map +1 -1
- package/lib/module/native/Cactus.js +81 -2
- package/lib/module/native/Cactus.js.map +1 -1
- package/lib/module/types/CactusAudio.js +4 -0
- package/lib/module/types/{CactusVAD.js.map → CactusAudio.js.map} +1 -1
- package/lib/typescript/src/classes/CactusAudio.d.ts +22 -0
- package/lib/typescript/src/classes/CactusAudio.d.ts.map +1 -0
- package/lib/typescript/src/classes/CactusLM.d.ts +2 -1
- package/lib/typescript/src/classes/CactusLM.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useCactusAudio.d.ts +17 -0
- package/lib/typescript/src/hooks/useCactusAudio.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/native/Cactus.d.ts +9 -3
- package/lib/typescript/src/native/Cactus.d.ts.map +1 -1
- package/lib/typescript/src/specs/Cactus.nitro.d.ts +3 -0
- package/lib/typescript/src/specs/Cactus.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types/CactusAudio.d.ts +63 -0
- package/lib/typescript/src/types/CactusAudio.d.ts.map +1 -0
- package/lib/typescript/src/types/CactusLM.d.ts +15 -0
- package/lib/typescript/src/types/CactusLM.d.ts.map +1 -1
- package/lib/typescript/src/types/CactusSTT.d.ts +1 -0
- package/lib/typescript/src/types/CactusSTT.d.ts.map +1 -1
- package/nitrogen/generated/shared/c++/HybridCactusSpec.cpp +3 -0
- package/nitrogen/generated/shared/c++/HybridCactusSpec.hpp +3 -0
- package/package.json +1 -1
- package/src/classes/{CactusVAD.ts → CactusAudio.ts} +32 -13
- package/src/classes/CactusLM.ts +36 -0
- package/src/hooks/{useCactusVAD.ts → useCactusAudio.ts} +65 -28
- package/src/index.tsx +16 -9
- package/src/modelRegistry.ts +20 -6
- package/src/native/Cactus.ts +118 -3
- package/src/specs/Cactus.nitro.ts +16 -0
- package/src/types/CactusAudio.ts +73 -0
- package/src/types/CactusLM.ts +17 -0
- package/src/types/CactusSTT.ts +1 -0
- package/lib/module/classes/CactusVAD.js.map +0 -1
- package/lib/module/hooks/useCactusVAD.js.map +0 -1
- package/lib/module/types/CactusVAD.js +0 -4
- package/lib/typescript/src/classes/CactusVAD.d.ts +0 -20
- package/lib/typescript/src/classes/CactusVAD.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useCactusVAD.d.ts +0 -15
- package/lib/typescript/src/hooks/useCactusVAD.d.ts.map +0 -1
- package/lib/typescript/src/types/CactusVAD.d.ts +0 -34
- package/lib/typescript/src/types/CactusVAD.d.ts.map +0 -1
- package/src/types/CactusVAD.ts +0 -39
package/src/index.tsx
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// Classes
|
|
2
2
|
export { CactusLM } from './classes/CactusLM';
|
|
3
3
|
export { CactusSTT } from './classes/CactusSTT';
|
|
4
|
-
export {
|
|
4
|
+
export { CactusAudio } from './classes/CactusAudio';
|
|
5
5
|
export { CactusIndex } from './classes/CactusIndex';
|
|
6
6
|
|
|
7
7
|
// Hooks
|
|
8
8
|
export { useCactusLM } from './hooks/useCactusLM';
|
|
9
9
|
export { useCactusSTT } from './hooks/useCactusSTT';
|
|
10
|
-
export {
|
|
10
|
+
export { useCactusAudio } from './hooks/useCactusAudio';
|
|
11
11
|
export { useCactusIndex } from './hooks/useCactusIndex';
|
|
12
12
|
|
|
13
13
|
// Registry
|
|
@@ -23,6 +23,8 @@ export type {
|
|
|
23
23
|
CactusLMTool,
|
|
24
24
|
CactusLMCompleteParams,
|
|
25
25
|
CactusLMCompleteResult,
|
|
26
|
+
CactusLMPrefillParams,
|
|
27
|
+
CactusLMPrefillResult,
|
|
26
28
|
CactusLMTokenizeParams,
|
|
27
29
|
CactusLMTokenizeResult,
|
|
28
30
|
CactusLMScoreWindowParams,
|
|
@@ -49,13 +51,18 @@ export type {
|
|
|
49
51
|
CactusSTTDetectLanguageResult,
|
|
50
52
|
} from './types/CactusSTT';
|
|
51
53
|
export type {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
CactusAudioParams,
|
|
55
|
+
CactusAudioDownloadParams,
|
|
56
|
+
CactusAudioVADOptions,
|
|
57
|
+
CactusAudioVADSegment,
|
|
58
|
+
CactusAudioVADParams,
|
|
59
|
+
CactusAudioVADResult,
|
|
60
|
+
CactusAudioDiarizeOptions,
|
|
61
|
+
CactusAudioDiarizeParams,
|
|
62
|
+
CactusAudioDiarizeResult,
|
|
63
|
+
CactusAudioEmbedSpeakerParams,
|
|
64
|
+
CactusAudioEmbedSpeakerResult,
|
|
65
|
+
} from './types/CactusAudio';
|
|
59
66
|
export type {
|
|
60
67
|
CactusIndexParams,
|
|
61
68
|
CactusIndexAddParams,
|
package/src/modelRegistry.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CactusModel } from './types/common';
|
|
2
2
|
|
|
3
|
-
const RUNTIME_VERSION = '1.
|
|
3
|
+
const RUNTIME_VERSION = '1.12.0';
|
|
4
4
|
|
|
5
5
|
let registryPromise: Promise<{ [key: string]: CactusModel }> | null = null;
|
|
6
6
|
|
|
@@ -60,9 +60,9 @@ async function fetchRegistry(): Promise<{ [key: string]: CactusModel }> {
|
|
|
60
60
|
|
|
61
61
|
await Promise.all(
|
|
62
62
|
models.map(async ({ id, siblings = [], tags = [] }) => {
|
|
63
|
-
const weights: string[] = siblings
|
|
64
|
-
.map((s: any) => s.rfilename)
|
|
65
|
-
.filter((f
|
|
63
|
+
const weights: string[] = (siblings as any[])
|
|
64
|
+
.map((s: any) => s.rfilename as string)
|
|
65
|
+
.filter((f) => f.startsWith('weights/') && f.endsWith('.zip'));
|
|
66
66
|
|
|
67
67
|
if (
|
|
68
68
|
!weights.some((f) => f.endsWith('-int4.zip')) ||
|
|
@@ -80,19 +80,33 @@ async function fetchRegistry(): Promise<{ [key: string]: CactusModel }> {
|
|
|
80
80
|
|
|
81
81
|
const base = `https://huggingface.co/${id}/resolve/${version}/weights/${key}`;
|
|
82
82
|
|
|
83
|
+
const tree = await fetch(
|
|
84
|
+
`https://huggingface.co/api/models/${id}/tree/${version}/weights`
|
|
85
|
+
)
|
|
86
|
+
.then((r) =>
|
|
87
|
+
r.ok ? (r.json() as Promise<{ path: string; size?: number }[]>) : null
|
|
88
|
+
)
|
|
89
|
+
.catch(() => null);
|
|
90
|
+
|
|
91
|
+
const sizeMb = (suffix: string) =>
|
|
92
|
+
Math.round(
|
|
93
|
+
(tree?.find((f) => f.path === `weights/${key}${suffix}`)?.size ?? 0) /
|
|
94
|
+
(1024 * 1024)
|
|
95
|
+
);
|
|
96
|
+
|
|
83
97
|
registry[key] = {
|
|
84
98
|
slug: key,
|
|
85
99
|
capabilities: (tags as string[]).filter((t) => !t.includes(':')),
|
|
86
100
|
quantization: {
|
|
87
101
|
int4: {
|
|
88
|
-
sizeMb:
|
|
102
|
+
sizeMb: sizeMb('-int4.zip'),
|
|
89
103
|
url: `${base}-int4.zip`,
|
|
90
104
|
...(weights.some((f) => f.endsWith('-int4-apple.zip'))
|
|
91
105
|
? { pro: { apple: `${base}-int4-apple.zip` } }
|
|
92
106
|
: {}),
|
|
93
107
|
},
|
|
94
108
|
int8: {
|
|
95
|
-
sizeMb:
|
|
109
|
+
sizeMb: sizeMb('-int8.zip'),
|
|
96
110
|
url: `${base}-int8.zip`,
|
|
97
111
|
...(weights.some((f) => f.endsWith('-int8-apple.zip'))
|
|
98
112
|
? { pro: { apple: `${base}-int8-apple.zip` } }
|
package/src/native/Cactus.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { Cactus as CactusSpec } from '../specs/Cactus.nitro';
|
|
|
3
3
|
import { CactusImage } from './CactusImage';
|
|
4
4
|
import type {
|
|
5
5
|
CactusLMCompleteResult,
|
|
6
|
+
CactusLMPrefillResult,
|
|
6
7
|
CactusLMMessage,
|
|
7
8
|
CactusLMCompleteOptions,
|
|
8
9
|
CactusLMTool,
|
|
@@ -16,7 +17,13 @@ import type {
|
|
|
16
17
|
CactusSTTDetectLanguageOptions,
|
|
17
18
|
CactusSTTDetectLanguageResult,
|
|
18
19
|
} from '../types/CactusSTT';
|
|
19
|
-
import type {
|
|
20
|
+
import type {
|
|
21
|
+
CactusAudioVADOptions,
|
|
22
|
+
CactusAudioVADResult,
|
|
23
|
+
CactusAudioDiarizeOptions,
|
|
24
|
+
CactusAudioDiarizeResult,
|
|
25
|
+
CactusAudioEmbedSpeakerResult,
|
|
26
|
+
} from '../types/CactusAudio';
|
|
20
27
|
|
|
21
28
|
export class Cactus {
|
|
22
29
|
private readonly hybridCactus =
|
|
@@ -72,6 +79,7 @@ export class Cactus {
|
|
|
72
79
|
tool_rag_top_k: options.toolRagTopK,
|
|
73
80
|
include_stop_sequences: options.includeStopSequences,
|
|
74
81
|
use_vad: options.useVad,
|
|
82
|
+
enable_thinking_if_supported: options.enableThinking,
|
|
75
83
|
})
|
|
76
84
|
: undefined;
|
|
77
85
|
const toolsJson = JSON.stringify(tools);
|
|
@@ -90,6 +98,7 @@ export class Cactus {
|
|
|
90
98
|
return {
|
|
91
99
|
success: parsed.success,
|
|
92
100
|
response: parsed.response,
|
|
101
|
+
thinking: parsed.thinking,
|
|
93
102
|
functionCalls: parsed.function_calls,
|
|
94
103
|
cloudHandoff: parsed.cloud_handoff,
|
|
95
104
|
confidence: parsed.confidence,
|
|
@@ -107,6 +116,54 @@ export class Cactus {
|
|
|
107
116
|
}
|
|
108
117
|
}
|
|
109
118
|
|
|
119
|
+
public async prefill(
|
|
120
|
+
messages: CactusLMMessage[],
|
|
121
|
+
responseBufferSize: number,
|
|
122
|
+
options?: CactusLMCompleteOptions,
|
|
123
|
+
tools?: { type: 'function'; function: CactusLMTool }[]
|
|
124
|
+
): Promise<CactusLMPrefillResult> {
|
|
125
|
+
const messagesJson = JSON.stringify(messages);
|
|
126
|
+
const optionsJson = options
|
|
127
|
+
? JSON.stringify({
|
|
128
|
+
temperature: options.temperature,
|
|
129
|
+
top_p: options.topP,
|
|
130
|
+
top_k: options.topK,
|
|
131
|
+
max_tokens: options.maxTokens,
|
|
132
|
+
stop_sequences: options.stopSequences,
|
|
133
|
+
force_tools: options.forceTools,
|
|
134
|
+
telemetry_enabled: options.telemetryEnabled,
|
|
135
|
+
confidence_threshold: options.confidenceThreshold,
|
|
136
|
+
tool_rag_top_k: options.toolRagTopK,
|
|
137
|
+
include_stop_sequences: options.includeStopSequences,
|
|
138
|
+
use_vad: options.useVad,
|
|
139
|
+
enable_thinking_if_supported: options.enableThinking,
|
|
140
|
+
})
|
|
141
|
+
: undefined;
|
|
142
|
+
const toolsJson = JSON.stringify(tools);
|
|
143
|
+
|
|
144
|
+
const response = await this.hybridCactus.prefill(
|
|
145
|
+
messagesJson,
|
|
146
|
+
responseBufferSize,
|
|
147
|
+
optionsJson,
|
|
148
|
+
toolsJson
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
try {
|
|
152
|
+
const parsed = JSON.parse(response);
|
|
153
|
+
|
|
154
|
+
return {
|
|
155
|
+
success: parsed.success,
|
|
156
|
+
error: parsed.error,
|
|
157
|
+
prefillTokens: parsed.prefill_tokens,
|
|
158
|
+
prefillTps: parsed.prefill_tps,
|
|
159
|
+
totalTimeMs: parsed.total_time_ms,
|
|
160
|
+
ramUsageMb: parsed.ram_usage_mb,
|
|
161
|
+
};
|
|
162
|
+
} catch {
|
|
163
|
+
throw new Error('Unable to parse prefill response');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
110
167
|
public tokenize(text: string): Promise<number[]> {
|
|
111
168
|
return this.hybridCactus.tokenize(text);
|
|
112
169
|
}
|
|
@@ -195,6 +252,7 @@ export class Cactus {
|
|
|
195
252
|
confirmation_threshold: options.confirmationThreshold,
|
|
196
253
|
min_chunk_size: options.minChunkSize,
|
|
197
254
|
telemetry_enabled: options.telemetryEnabled,
|
|
255
|
+
language: options.language,
|
|
198
256
|
})
|
|
199
257
|
: undefined;
|
|
200
258
|
return this.hybridCactus.streamTranscribeStart(optionsJson);
|
|
@@ -272,8 +330,8 @@ export class Cactus {
|
|
|
272
330
|
|
|
273
331
|
public async vad(
|
|
274
332
|
audio: string | number[],
|
|
275
|
-
options?:
|
|
276
|
-
): Promise<
|
|
333
|
+
options?: CactusAudioVADOptions
|
|
334
|
+
): Promise<CactusAudioVADResult> {
|
|
277
335
|
if (typeof audio === 'string') {
|
|
278
336
|
audio = audio.replace('file://', '');
|
|
279
337
|
}
|
|
@@ -338,6 +396,63 @@ export class Cactus {
|
|
|
338
396
|
);
|
|
339
397
|
}
|
|
340
398
|
|
|
399
|
+
public async diarize(
|
|
400
|
+
audio: string | number[],
|
|
401
|
+
options?: CactusAudioDiarizeOptions
|
|
402
|
+
): Promise<CactusAudioDiarizeResult> {
|
|
403
|
+
if (typeof audio === 'string') {
|
|
404
|
+
audio = audio.replace('file://', '');
|
|
405
|
+
}
|
|
406
|
+
const optionsJson = options
|
|
407
|
+
? JSON.stringify({
|
|
408
|
+
step_ms: options.stepMs,
|
|
409
|
+
threshold: options.threshold,
|
|
410
|
+
num_speakers: options.numSpeakers,
|
|
411
|
+
min_speakers: options.minSpeakers,
|
|
412
|
+
max_speakers: options.maxSpeakers,
|
|
413
|
+
})
|
|
414
|
+
: undefined;
|
|
415
|
+
const response = await this.hybridCactus.diarize(
|
|
416
|
+
audio,
|
|
417
|
+
2 * 1024 * 1024,
|
|
418
|
+
optionsJson
|
|
419
|
+
);
|
|
420
|
+
try {
|
|
421
|
+
const parsed = JSON.parse(response);
|
|
422
|
+
return {
|
|
423
|
+
success: parsed.success,
|
|
424
|
+
error: parsed.error,
|
|
425
|
+
numSpeakers: parsed.num_speakers,
|
|
426
|
+
scores: parsed.scores,
|
|
427
|
+
totalTimeMs: parsed.total_time_ms,
|
|
428
|
+
ramUsageMb: parsed.ram_usage_mb,
|
|
429
|
+
};
|
|
430
|
+
} catch {
|
|
431
|
+
throw new Error('Unable to parse diarize response');
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
public async embedSpeaker(
|
|
436
|
+
audio: string | number[]
|
|
437
|
+
): Promise<CactusAudioEmbedSpeakerResult> {
|
|
438
|
+
if (typeof audio === 'string') {
|
|
439
|
+
audio = audio.replace('file://', '');
|
|
440
|
+
}
|
|
441
|
+
const response = await this.hybridCactus.embedSpeaker(audio, 65536);
|
|
442
|
+
try {
|
|
443
|
+
const parsed = JSON.parse(response);
|
|
444
|
+
return {
|
|
445
|
+
success: parsed.success,
|
|
446
|
+
error: parsed.error,
|
|
447
|
+
embedding: parsed.embedding,
|
|
448
|
+
totalTimeMs: parsed.total_time_ms,
|
|
449
|
+
ramUsageMb: parsed.ram_usage_mb,
|
|
450
|
+
};
|
|
451
|
+
} catch {
|
|
452
|
+
throw new Error('Unable to parse embed speaker response');
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
|
|
341
456
|
public reset(): Promise<void> {
|
|
342
457
|
return this.hybridCactus.reset();
|
|
343
458
|
}
|
|
@@ -13,6 +13,12 @@ export interface Cactus extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
|
|
|
13
13
|
toolsJson?: string,
|
|
14
14
|
callback?: (token: string, tokenId: number) => void
|
|
15
15
|
): Promise<string>;
|
|
16
|
+
prefill(
|
|
17
|
+
messagesJson: string,
|
|
18
|
+
responseBufferSize: number,
|
|
19
|
+
optionsJson?: string,
|
|
20
|
+
toolsJson?: string
|
|
21
|
+
): Promise<string>;
|
|
16
22
|
tokenize(text: string): Promise<number[]>;
|
|
17
23
|
scoreWindow(
|
|
18
24
|
tokens: number[],
|
|
@@ -47,6 +53,16 @@ export interface Cactus extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
|
|
|
47
53
|
): Promise<number[]>;
|
|
48
54
|
imageEmbed(imagePath: string, embeddingBufferSize: number): Promise<number[]>;
|
|
49
55
|
audioEmbed(audioPath: string, embeddingBufferSize: number): Promise<number[]>;
|
|
56
|
+
diarize(
|
|
57
|
+
audio: string | number[],
|
|
58
|
+
responseBufferSize: number,
|
|
59
|
+
optionsJson?: string
|
|
60
|
+
): Promise<string>;
|
|
61
|
+
embedSpeaker(
|
|
62
|
+
audio: string | number[],
|
|
63
|
+
responseBufferSize: number,
|
|
64
|
+
optionsJson?: string
|
|
65
|
+
): Promise<string>;
|
|
50
66
|
reset(): Promise<void>;
|
|
51
67
|
stop(): Promise<void>;
|
|
52
68
|
destroy(): Promise<void>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { CactusModelOptions } from './common';
|
|
2
|
+
|
|
3
|
+
export interface CactusAudioParams {
|
|
4
|
+
model?: string;
|
|
5
|
+
options?: CactusModelOptions;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface CactusAudioDownloadParams {
|
|
9
|
+
onProgress?: (progress: number) => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface CactusAudioVADOptions {
|
|
13
|
+
threshold?: number;
|
|
14
|
+
negThreshold?: number;
|
|
15
|
+
minSpeechDurationMs?: number;
|
|
16
|
+
maxSpeechDurationS?: number;
|
|
17
|
+
minSilenceDurationMs?: number;
|
|
18
|
+
speechPadMs?: number;
|
|
19
|
+
windowSizeSamples?: number;
|
|
20
|
+
samplingRate?: number;
|
|
21
|
+
minSilenceAtMaxSpeech?: number;
|
|
22
|
+
useMaxPossSilAtMaxSpeech?: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface CactusAudioVADSegment {
|
|
26
|
+
start: number;
|
|
27
|
+
end: number;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface CactusAudioVADParams {
|
|
31
|
+
audio: string | number[];
|
|
32
|
+
options?: CactusAudioVADOptions;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface CactusAudioVADResult {
|
|
36
|
+
segments: CactusAudioVADSegment[];
|
|
37
|
+
totalTime: number;
|
|
38
|
+
ramUsage: number;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface CactusAudioDiarizeOptions {
|
|
42
|
+
stepMs?: number;
|
|
43
|
+
threshold?: number;
|
|
44
|
+
numSpeakers?: number;
|
|
45
|
+
minSpeakers?: number;
|
|
46
|
+
maxSpeakers?: number;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface CactusAudioDiarizeParams {
|
|
50
|
+
audio: string | number[];
|
|
51
|
+
options?: CactusAudioDiarizeOptions;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface CactusAudioDiarizeResult {
|
|
55
|
+
success: boolean;
|
|
56
|
+
error: string | null;
|
|
57
|
+
numSpeakers: number;
|
|
58
|
+
scores: number[];
|
|
59
|
+
totalTimeMs: number;
|
|
60
|
+
ramUsageMb: number;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface CactusAudioEmbedSpeakerParams {
|
|
64
|
+
audio: string | number[];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface CactusAudioEmbedSpeakerResult {
|
|
68
|
+
success: boolean;
|
|
69
|
+
error: string | null;
|
|
70
|
+
embedding: number[];
|
|
71
|
+
totalTimeMs: number;
|
|
72
|
+
ramUsageMb: number;
|
|
73
|
+
}
|
package/src/types/CactusLM.ts
CHANGED
|
@@ -29,6 +29,7 @@ export interface CactusLMCompleteOptions {
|
|
|
29
29
|
toolRagTopK?: number;
|
|
30
30
|
includeStopSequences?: boolean;
|
|
31
31
|
useVad?: boolean;
|
|
32
|
+
enableThinking?: boolean;
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
export interface CactusLMTool {
|
|
@@ -53,9 +54,25 @@ export interface CactusLMCompleteParams {
|
|
|
53
54
|
onToken?: (token: string) => void;
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
export interface CactusLMPrefillParams {
|
|
58
|
+
messages: CactusLMMessage[];
|
|
59
|
+
options?: CactusLMCompleteOptions;
|
|
60
|
+
tools?: CactusLMTool[];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface CactusLMPrefillResult {
|
|
64
|
+
success: boolean;
|
|
65
|
+
error: string | null;
|
|
66
|
+
prefillTokens: number;
|
|
67
|
+
prefillTps: number;
|
|
68
|
+
totalTimeMs: number;
|
|
69
|
+
ramUsageMb: number;
|
|
70
|
+
}
|
|
71
|
+
|
|
56
72
|
export interface CactusLMCompleteResult {
|
|
57
73
|
success: boolean;
|
|
58
74
|
response: string;
|
|
75
|
+
thinking?: string;
|
|
59
76
|
functionCalls?: {
|
|
60
77
|
name: string;
|
|
61
78
|
arguments: { [key: string]: any };
|
package/src/types/CactusSTT.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["Cactus","CactusFileSystem","getRegistry","CactusVAD","cactus","isDownloading","isInitialized","defaultModel","defaultOptions","quantization","pro","constructor","model","options","download","onProgress","isModelPath","Error","modelExists","getModelName","console","log","registry","modelConfig","url","apple","downloadModel","init","modelPath","replace","JSON","stringify","getModelPath","cacheDir","getCactusDirectory","setTelemetryEnvironment","vad","audio","destroy","getModels","Object","values","startsWith"],"sourceRoot":"../../../src","sources":["classes/CactusVAD.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useState","useRef","CactusVAD","CactusFileSystem","getErrorMessage","useCactusVAD","model","options","modelOptions","quantization","undefined","pro","cactusVAD","setCactusVAD","isInitializing","setIsInitializing","isDownloaded","setIsDownloaded","isDownloading","setIsDownloading","downloadProgress","setDownloadProgress","error","setError","currentModelRef","currentDownloadIdRef","current","newInstance","mounted","modelExists","getModelName","then","exists","catch","e","destroy","download","onProgress","message","Error","thisModel","thisDownloadId","progress","init","vad","audio","getModels"],"sourceRoot":"../../../src","sources":["hooks/useCactusVAD.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { CactusVADParams, CactusVADDownloadParams, CactusVADVadParams, CactusVADResult } from '../types/CactusVAD';
|
|
2
|
-
import type { CactusModel } from '../types/common';
|
|
3
|
-
export declare class CactusVAD {
|
|
4
|
-
private readonly cactus;
|
|
5
|
-
private readonly model;
|
|
6
|
-
private readonly options;
|
|
7
|
-
private isDownloading;
|
|
8
|
-
private isInitialized;
|
|
9
|
-
private static readonly defaultModel;
|
|
10
|
-
private static readonly defaultOptions;
|
|
11
|
-
constructor({ model, options }?: CactusVADParams);
|
|
12
|
-
download({ onProgress, }?: CactusVADDownloadParams): Promise<void>;
|
|
13
|
-
init(): Promise<void>;
|
|
14
|
-
vad({ audio, options, }: CactusVADVadParams): Promise<CactusVADResult>;
|
|
15
|
-
destroy(): Promise<void>;
|
|
16
|
-
getModels(): Promise<CactusModel[]>;
|
|
17
|
-
private isModelPath;
|
|
18
|
-
getModelName(): string;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=CactusVAD.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CactusVAD.d.ts","sourceRoot":"","sources":["../../../../src/classes/CactusVAD.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IAEvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGtB;IAEF,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAgB;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAGpC;gBAEU,EAAE,KAAK,EAAE,OAAO,EAAE,GAAE,eAAoB;IASvC,QAAQ,CAAC,EACpB,UAAU,GACX,GAAE,uBAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAqClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBrB,GAAG,CAAC,EACf,KAAK,EACL,OAAO,GACR,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IAKnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASxB,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIhD,OAAO,CAAC,WAAW;IAIZ,YAAY,IAAI,MAAM;CAG9B"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { CactusVADParams, CactusVADDownloadParams, CactusVADVadParams, CactusVADResult } from '../types/CactusVAD';
|
|
2
|
-
import type { CactusModel } from '../types/common';
|
|
3
|
-
export declare const useCactusVAD: ({ model, options: modelOptions, }?: CactusVADParams) => {
|
|
4
|
-
isInitializing: boolean;
|
|
5
|
-
isDownloaded: boolean;
|
|
6
|
-
isDownloading: boolean;
|
|
7
|
-
downloadProgress: number;
|
|
8
|
-
error: string | null;
|
|
9
|
-
download: ({ onProgress }?: CactusVADDownloadParams) => Promise<void>;
|
|
10
|
-
init: () => Promise<void>;
|
|
11
|
-
vad: ({ audio, options, }: CactusVADVadParams) => Promise<CactusVADResult>;
|
|
12
|
-
destroy: () => Promise<void>;
|
|
13
|
-
getModels: () => Promise<CactusModel[]>;
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=useCactusVAD.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCactusVAD.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useCactusVAD.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,eAAO,MAAM,YAAY,GAAI,oCAM1B,eAAoB;;;;;;gCA8DI,uBAAuB;;+BAyF3C,kBAAkB,KAAG,OAAO,CAAC,eAAe,CAAC;;qBAsBV,OAAO,CAAC,WAAW,EAAE,CAAC;CAuB/D,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { CactusModelOptions } from './common';
|
|
2
|
-
export interface CactusVADParams {
|
|
3
|
-
model?: string;
|
|
4
|
-
options?: CactusModelOptions;
|
|
5
|
-
}
|
|
6
|
-
export interface CactusVADDownloadParams {
|
|
7
|
-
onProgress?: (progress: number) => void;
|
|
8
|
-
}
|
|
9
|
-
export interface CactusVADOptions {
|
|
10
|
-
threshold?: number;
|
|
11
|
-
negThreshold?: number;
|
|
12
|
-
minSpeechDurationMs?: number;
|
|
13
|
-
maxSpeechDurationS?: number;
|
|
14
|
-
minSilenceDurationMs?: number;
|
|
15
|
-
speechPadMs?: number;
|
|
16
|
-
windowSizeSamples?: number;
|
|
17
|
-
samplingRate?: number;
|
|
18
|
-
minSilenceAtMaxSpeech?: number;
|
|
19
|
-
useMaxPossSilAtMaxSpeech?: boolean;
|
|
20
|
-
}
|
|
21
|
-
export interface CactusVADSegment {
|
|
22
|
-
start: number;
|
|
23
|
-
end: number;
|
|
24
|
-
}
|
|
25
|
-
export interface CactusVADResult {
|
|
26
|
-
segments: CactusVADSegment[];
|
|
27
|
-
totalTime: number;
|
|
28
|
-
ramUsage: number;
|
|
29
|
-
}
|
|
30
|
-
export interface CactusVADVadParams {
|
|
31
|
-
audio: string | number[];
|
|
32
|
-
options?: CactusVADOptions;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=CactusVAD.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CactusVAD.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusVAD.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B"}
|
package/src/types/CactusVAD.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { CactusModelOptions } from './common';
|
|
2
|
-
|
|
3
|
-
export interface CactusVADParams {
|
|
4
|
-
model?: string;
|
|
5
|
-
options?: CactusModelOptions;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export interface CactusVADDownloadParams {
|
|
9
|
-
onProgress?: (progress: number) => void;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface CactusVADOptions {
|
|
13
|
-
threshold?: number;
|
|
14
|
-
negThreshold?: number;
|
|
15
|
-
minSpeechDurationMs?: number;
|
|
16
|
-
maxSpeechDurationS?: number;
|
|
17
|
-
minSilenceDurationMs?: number;
|
|
18
|
-
speechPadMs?: number;
|
|
19
|
-
windowSizeSamples?: number;
|
|
20
|
-
samplingRate?: number;
|
|
21
|
-
minSilenceAtMaxSpeech?: number;
|
|
22
|
-
useMaxPossSilAtMaxSpeech?: boolean;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface CactusVADSegment {
|
|
26
|
-
start: number;
|
|
27
|
-
end: number;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface CactusVADResult {
|
|
31
|
-
segments: CactusVADSegment[];
|
|
32
|
-
totalTime: number;
|
|
33
|
-
ramUsage: number;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface CactusVADVadParams {
|
|
37
|
-
audio: string | number[];
|
|
38
|
-
options?: CactusVADOptions;
|
|
39
|
-
}
|