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.
Files changed (76) hide show
  1. package/README.md +199 -40
  2. package/android/src/main/jniLibs/arm64-v8a/libcactus.a +0 -0
  3. package/cpp/HybridCactus.cpp +131 -2
  4. package/cpp/HybridCactus.hpp +15 -0
  5. package/cpp/cactus_ffi.h +240 -2
  6. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus_ffi.h +240 -2
  7. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus_utils.h +940 -109
  8. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/engine.h +175 -25
  9. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/gemma_tools.h +48 -21
  10. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/graph.h +79 -7
  11. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel.h +122 -9
  12. package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/kernel_utils.h +191 -2
  13. package/ios/cactus.xcframework/ios-arm64/cactus.framework/cactus +0 -0
  14. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_ffi.h +240 -2
  15. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/cactus_utils.h +940 -109
  16. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/engine.h +175 -25
  17. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/gemma_tools.h +48 -21
  18. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/graph.h +79 -7
  19. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel.h +122 -9
  20. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/Headers/kernel_utils.h +191 -2
  21. package/ios/cactus.xcframework/ios-arm64-simulator/cactus.framework/cactus +0 -0
  22. package/lib/module/classes/{CactusVAD.js → CactusAudio.js} +19 -6
  23. package/lib/module/classes/CactusAudio.js.map +1 -0
  24. package/lib/module/classes/CactusLM.js +25 -0
  25. package/lib/module/classes/CactusLM.js.map +1 -1
  26. package/lib/module/hooks/{useCactusVAD.js → useCactusAudio.js} +50 -20
  27. package/lib/module/hooks/useCactusAudio.js.map +1 -0
  28. package/lib/module/index.js +2 -2
  29. package/lib/module/index.js.map +1 -1
  30. package/lib/module/modelRegistry.js +5 -3
  31. package/lib/module/modelRegistry.js.map +1 -1
  32. package/lib/module/native/Cactus.js +81 -2
  33. package/lib/module/native/Cactus.js.map +1 -1
  34. package/lib/module/types/CactusAudio.js +4 -0
  35. package/lib/module/types/{CactusVAD.js.map → CactusAudio.js.map} +1 -1
  36. package/lib/typescript/src/classes/CactusAudio.d.ts +22 -0
  37. package/lib/typescript/src/classes/CactusAudio.d.ts.map +1 -0
  38. package/lib/typescript/src/classes/CactusLM.d.ts +2 -1
  39. package/lib/typescript/src/classes/CactusLM.d.ts.map +1 -1
  40. package/lib/typescript/src/hooks/useCactusAudio.d.ts +17 -0
  41. package/lib/typescript/src/hooks/useCactusAudio.d.ts.map +1 -0
  42. package/lib/typescript/src/index.d.ts +4 -4
  43. package/lib/typescript/src/index.d.ts.map +1 -1
  44. package/lib/typescript/src/native/Cactus.d.ts +9 -3
  45. package/lib/typescript/src/native/Cactus.d.ts.map +1 -1
  46. package/lib/typescript/src/specs/Cactus.nitro.d.ts +3 -0
  47. package/lib/typescript/src/specs/Cactus.nitro.d.ts.map +1 -1
  48. package/lib/typescript/src/types/CactusAudio.d.ts +63 -0
  49. package/lib/typescript/src/types/CactusAudio.d.ts.map +1 -0
  50. package/lib/typescript/src/types/CactusLM.d.ts +15 -0
  51. package/lib/typescript/src/types/CactusLM.d.ts.map +1 -1
  52. package/lib/typescript/src/types/CactusSTT.d.ts +1 -0
  53. package/lib/typescript/src/types/CactusSTT.d.ts.map +1 -1
  54. package/nitrogen/generated/shared/c++/HybridCactusSpec.cpp +3 -0
  55. package/nitrogen/generated/shared/c++/HybridCactusSpec.hpp +3 -0
  56. package/package.json +1 -1
  57. package/src/classes/{CactusVAD.ts → CactusAudio.ts} +32 -13
  58. package/src/classes/CactusLM.ts +36 -0
  59. package/src/hooks/{useCactusVAD.ts → useCactusAudio.ts} +65 -28
  60. package/src/index.tsx +16 -9
  61. package/src/modelRegistry.ts +20 -6
  62. package/src/native/Cactus.ts +118 -3
  63. package/src/specs/Cactus.nitro.ts +16 -0
  64. package/src/types/CactusAudio.ts +73 -0
  65. package/src/types/CactusLM.ts +17 -0
  66. package/src/types/CactusSTT.ts +1 -0
  67. package/lib/module/classes/CactusVAD.js.map +0 -1
  68. package/lib/module/hooks/useCactusVAD.js.map +0 -1
  69. package/lib/module/types/CactusVAD.js +0 -4
  70. package/lib/typescript/src/classes/CactusVAD.d.ts +0 -20
  71. package/lib/typescript/src/classes/CactusVAD.d.ts.map +0 -1
  72. package/lib/typescript/src/hooks/useCactusVAD.d.ts +0 -15
  73. package/lib/typescript/src/hooks/useCactusVAD.d.ts.map +0 -1
  74. package/lib/typescript/src/types/CactusVAD.d.ts +0 -34
  75. package/lib/typescript/src/types/CactusVAD.d.ts.map +0 -1
  76. 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 { CactusVAD } from './classes/CactusVAD';
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 { useCactusVAD } from './hooks/useCactusVAD';
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
- CactusVADParams,
53
- CactusVADDownloadParams,
54
- CactusVADVadParams,
55
- CactusVADOptions,
56
- CactusVADSegment,
57
- CactusVADResult,
58
- } from './types/CactusVAD';
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,
@@ -1,6 +1,6 @@
1
1
  import type { CactusModel } from './types/common';
2
2
 
3
- const RUNTIME_VERSION = '1.10.3';
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: string) => f.startsWith('weights/') && f.endsWith('.zip'));
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: 0,
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: 0,
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` } }
@@ -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 { CactusVADOptions, CactusVADResult } from '../types/CactusVAD';
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?: CactusVADOptions
276
- ): Promise<CactusVADResult> {
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
+ }
@@ -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 };
@@ -56,6 +56,7 @@ export interface CactusSTTStreamTranscribeStartOptions {
56
56
  confirmationThreshold?: number;
57
57
  minChunkSize?: number;
58
58
  telemetryEnabled?: boolean;
59
+ language?: string;
59
60
  }
60
61
 
61
62
  export interface CactusSTTStreamTranscribeProcessParams {
@@ -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,4 +0,0 @@
1
- "use strict";
2
-
3
- export {};
4
- //# sourceMappingURL=CactusVAD.js.map
@@ -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"}
@@ -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
- }