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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EACV,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,qCAAqC,EACrC,sCAAsC,EACtC,sCAAsC,EACtC,mCAAmC,EACnC,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EACV,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,qCAAqC,EACrC,sCAAsC,EACtC,sCAAsC,EACtC,mCAAmC,EACnC,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
@@ -1,6 +1,6 @@
1
- import type { CactusLMCompleteResult, CactusLMMessage, CactusLMCompleteOptions, CactusLMTool } from '../types/CactusLM';
1
+ import type { CactusLMCompleteResult, CactusLMPrefillResult, CactusLMMessage, CactusLMCompleteOptions, CactusLMTool } from '../types/CactusLM';
2
2
  import type { CactusSTTTranscribeResult, CactusSTTTranscribeOptions, CactusSTTStreamTranscribeStartOptions, CactusSTTStreamTranscribeProcessResult, CactusSTTStreamTranscribeStopResult, CactusSTTDetectLanguageOptions, CactusSTTDetectLanguageResult } from '../types/CactusSTT';
3
- import type { CactusVADOptions, CactusVADResult } from '../types/CactusVAD';
3
+ import type { CactusAudioVADOptions, CactusAudioVADResult, CactusAudioDiarizeOptions, CactusAudioDiarizeResult, CactusAudioEmbedSpeakerResult } from '../types/CactusAudio';
4
4
  export declare class Cactus {
5
5
  private readonly hybridCactus;
6
6
  init(modelPath: string, corpusDir?: string, cacheIndex?: boolean): Promise<void>;
@@ -8,6 +8,10 @@ export declare class Cactus {
8
8
  type: 'function';
9
9
  function: CactusLMTool;
10
10
  }[], callback?: (token: string, tokenId: number) => void): Promise<CactusLMCompleteResult>;
11
+ prefill(messages: CactusLMMessage[], responseBufferSize: number, options?: CactusLMCompleteOptions, tools?: {
12
+ type: 'function';
13
+ function: CactusLMTool;
14
+ }[]): Promise<CactusLMPrefillResult>;
11
15
  tokenize(text: string): Promise<number[]>;
12
16
  scoreWindow(tokens: number[], start: number, end: number, context: number): Promise<number>;
13
17
  transcribe(audio: string | number[], prompt: string, responseBufferSize: number, options?: CactusSTTTranscribeOptions, callback?: (token: string, tokenId: number) => void): Promise<CactusSTTTranscribeResult>;
@@ -15,10 +19,12 @@ export declare class Cactus {
15
19
  streamTranscribeProcess(audio: number[]): Promise<CactusSTTStreamTranscribeProcessResult>;
16
20
  detectLanguage(audio: string | number[], options?: CactusSTTDetectLanguageOptions): Promise<CactusSTTDetectLanguageResult>;
17
21
  streamTranscribeStop(): Promise<CactusSTTStreamTranscribeStopResult>;
18
- vad(audio: string | number[], options?: CactusVADOptions): Promise<CactusVADResult>;
22
+ vad(audio: string | number[], options?: CactusAudioVADOptions): Promise<CactusAudioVADResult>;
19
23
  embed(text: string, embeddingBufferSize: number, normalize: boolean): Promise<number[]>;
20
24
  imageEmbed(imagePath: string, embeddingBufferSize: number): Promise<number[]>;
21
25
  audioEmbed(audioPath: string, embeddingBufferSize: number): Promise<number[]>;
26
+ diarize(audio: string | number[], options?: CactusAudioDiarizeOptions): Promise<CactusAudioDiarizeResult>;
27
+ embedSpeaker(audio: string | number[]): Promise<CactusAudioEmbedSpeakerResult>;
22
28
  reset(): Promise<void>;
23
29
  stop(): Promise<void>;
24
30
  destroy(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"Cactus.d.ts","sourceRoot":"","sources":["../../../../src/native/Cactus.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,qCAAqC,EACrC,sCAAsC,EACtC,mCAAmC,EACnC,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE5E,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAC2B;IAEjD,IAAI,CACT,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC;IAIH,QAAQ,CACnB,QAAQ,EAAE,eAAe,EAAE,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,uBAAuB,EACjC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,EAAE,EACtD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAClD,OAAO,CAAC,sBAAsB,CAAC;IAuE3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInC,WAAW,CACtB,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAeL,UAAU,CACrB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,0BAA0B,EACpC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAClD,OAAO,CAAC,yBAAyB,CAAC;IAkD9B,qBAAqB,CAC1B,OAAO,CAAC,EAAE,qCAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC;IAWH,uBAAuB,CAClC,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,sCAAsC,CAAC;IA4BrC,cAAc,CACzB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,8BAA8B,GACvC,OAAO,CAAC,6BAA6B,CAAC;IA2B5B,oBAAoB,IAAI,OAAO,CAAC,mCAAmC,CAAC;IAUpE,GAAG,CACd,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IAkCpB,KAAK,CACV,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,MAAM,EAC3B,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC;IAIP,UAAU,CACrB,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IAUb,UAAU,CACf,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IAOb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhE"}
1
+ {"version":3,"file":"Cactus.d.ts","sourceRoot":"","sources":["../../../../src/native/Cactus.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface Cactus extends HybridObject<{
5
5
  }> {
6
6
  init(modelPath: string, corpusDir?: string, cacheIndex?: boolean): Promise<void>;
7
7
  complete(messagesJson: string, responseBufferSize: number, optionsJson?: string, toolsJson?: string, callback?: (token: string, tokenId: number) => void): Promise<string>;
8
+ prefill(messagesJson: string, responseBufferSize: number, optionsJson?: string, toolsJson?: string): Promise<string>;
8
9
  tokenize(text: string): Promise<number[]>;
9
10
  scoreWindow(tokens: number[], start: number, end: number, context: number): Promise<string>;
10
11
  transcribe(audio: string | number[], prompt: string, responseBufferSize: number, optionsJson?: string, callback?: (token: string, tokenId: number) => void): Promise<string>;
@@ -16,6 +17,8 @@ export interface Cactus extends HybridObject<{
16
17
  embed(text: string, embeddingBufferSize: number, normalize: boolean): Promise<number[]>;
17
18
  imageEmbed(imagePath: string, embeddingBufferSize: number): Promise<number[]>;
18
19
  audioEmbed(audioPath: string, embeddingBufferSize: number): Promise<number[]>;
20
+ diarize(audio: string | number[], responseBufferSize: number, optionsJson?: string): Promise<string>;
21
+ embedSpeaker(audio: string | number[], responseBufferSize: number, optionsJson?: string): Promise<string>;
19
22
  reset(): Promise<void>;
20
23
  stop(): Promise<void>;
21
24
  destroy(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"Cactus.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/Cactus.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,MAAO,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;IAC1E,IAAI,CACF,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,QAAQ,CACN,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,EAC1B,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAClD,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,WAAW,CACT,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,UAAU,CACR,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAClD,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,cAAc,CACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,kBAAkB,EAAE,MAAM,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,GAAG,CACD,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,kBAAkB,EAAE,MAAM,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CACH,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,MAAM,EAC3B,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D"}
1
+ {"version":3,"file":"Cactus.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/Cactus.nitro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { CactusModelOptions } from './common';
2
+ export interface CactusAudioParams {
3
+ model?: string;
4
+ options?: CactusModelOptions;
5
+ }
6
+ export interface CactusAudioDownloadParams {
7
+ onProgress?: (progress: number) => void;
8
+ }
9
+ export interface CactusAudioVADOptions {
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 CactusAudioVADSegment {
22
+ start: number;
23
+ end: number;
24
+ }
25
+ export interface CactusAudioVADParams {
26
+ audio: string | number[];
27
+ options?: CactusAudioVADOptions;
28
+ }
29
+ export interface CactusAudioVADResult {
30
+ segments: CactusAudioVADSegment[];
31
+ totalTime: number;
32
+ ramUsage: number;
33
+ }
34
+ export interface CactusAudioDiarizeOptions {
35
+ stepMs?: number;
36
+ threshold?: number;
37
+ numSpeakers?: number;
38
+ minSpeakers?: number;
39
+ maxSpeakers?: number;
40
+ }
41
+ export interface CactusAudioDiarizeParams {
42
+ audio: string | number[];
43
+ options?: CactusAudioDiarizeOptions;
44
+ }
45
+ export interface CactusAudioDiarizeResult {
46
+ success: boolean;
47
+ error: string | null;
48
+ numSpeakers: number;
49
+ scores: number[];
50
+ totalTimeMs: number;
51
+ ramUsageMb: number;
52
+ }
53
+ export interface CactusAudioEmbedSpeakerParams {
54
+ audio: string | number[];
55
+ }
56
+ export interface CactusAudioEmbedSpeakerResult {
57
+ success: boolean;
58
+ error: string | null;
59
+ embedding: number[];
60
+ totalTimeMs: number;
61
+ ramUsageMb: number;
62
+ }
63
+ //# sourceMappingURL=CactusAudio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CactusAudio.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusAudio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IACpC,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,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -25,6 +25,7 @@ export interface CactusLMCompleteOptions {
25
25
  toolRagTopK?: number;
26
26
  includeStopSequences?: boolean;
27
27
  useVad?: boolean;
28
+ enableThinking?: boolean;
28
29
  }
29
30
  export interface CactusLMTool {
30
31
  name: string;
@@ -46,9 +47,23 @@ export interface CactusLMCompleteParams {
46
47
  tools?: CactusLMTool[];
47
48
  onToken?: (token: string) => void;
48
49
  }
50
+ export interface CactusLMPrefillParams {
51
+ messages: CactusLMMessage[];
52
+ options?: CactusLMCompleteOptions;
53
+ tools?: CactusLMTool[];
54
+ }
55
+ export interface CactusLMPrefillResult {
56
+ success: boolean;
57
+ error: string | null;
58
+ prefillTokens: number;
59
+ prefillTps: number;
60
+ totalTimeMs: number;
61
+ ramUsageMb: number;
62
+ }
49
63
  export interface CactusLMCompleteResult {
50
64
  success: boolean;
51
65
  response: string;
66
+ thinking?: string;
52
67
  functionCalls?: {
53
68
  name: string;
54
69
  arguments: {
@@ -1 +1 @@
1
- {"version":3,"file":"CactusLM.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusLM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE;YACV,CAAC,GAAG,EAAE,MAAM,GAAG;gBACb,IAAI,EAAE,MAAM,CAAC;gBACb,WAAW,EAAE,MAAM,CAAC;aACrB,CAAC;SACH,CAAC;QACF,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACnC,EAAE,CAAC;IACJ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
1
+ {"version":3,"file":"CactusLM.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusLM.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,7 @@ export interface CactusSTTStreamTranscribeStartOptions {
48
48
  confirmationThreshold?: number;
49
49
  minChunkSize?: number;
50
50
  telemetryEnabled?: boolean;
51
+ language?: string;
51
52
  }
52
53
  export interface CactusSTTStreamTranscribeProcessParams {
53
54
  audio: number[];
@@ -1 +1 @@
1
- {"version":3,"file":"CactusSTT.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusSTT.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CactusSTT.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusSTT.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ namespace margelo::nitro::cactus {
16
16
  registerHybrids(this, [](Prototype& prototype) {
17
17
  prototype.registerHybridMethod("init", &HybridCactusSpec::init);
18
18
  prototype.registerHybridMethod("complete", &HybridCactusSpec::complete);
19
+ prototype.registerHybridMethod("prefill", &HybridCactusSpec::prefill);
19
20
  prototype.registerHybridMethod("tokenize", &HybridCactusSpec::tokenize);
20
21
  prototype.registerHybridMethod("scoreWindow", &HybridCactusSpec::scoreWindow);
21
22
  prototype.registerHybridMethod("transcribe", &HybridCactusSpec::transcribe);
@@ -27,6 +28,8 @@ namespace margelo::nitro::cactus {
27
28
  prototype.registerHybridMethod("embed", &HybridCactusSpec::embed);
28
29
  prototype.registerHybridMethod("imageEmbed", &HybridCactusSpec::imageEmbed);
29
30
  prototype.registerHybridMethod("audioEmbed", &HybridCactusSpec::audioEmbed);
31
+ prototype.registerHybridMethod("diarize", &HybridCactusSpec::diarize);
32
+ prototype.registerHybridMethod("embedSpeaker", &HybridCactusSpec::embedSpeaker);
30
33
  prototype.registerHybridMethod("reset", &HybridCactusSpec::reset);
31
34
  prototype.registerHybridMethod("stop", &HybridCactusSpec::stop);
32
35
  prototype.registerHybridMethod("destroy", &HybridCactusSpec::destroy);
@@ -55,6 +55,7 @@ namespace margelo::nitro::cactus {
55
55
  // Methods
56
56
  virtual std::shared_ptr<Promise<void>> init(const std::string& modelPath, const std::optional<std::string>& corpusDir, std::optional<bool> cacheIndex) = 0;
57
57
  virtual std::shared_ptr<Promise<std::string>> complete(const std::string& messagesJson, double responseBufferSize, const std::optional<std::string>& optionsJson, const std::optional<std::string>& toolsJson, const std::optional<std::function<void(const std::string& /* token */, double /* tokenId */)>>& callback) = 0;
58
+ virtual std::shared_ptr<Promise<std::string>> prefill(const std::string& messagesJson, double responseBufferSize, const std::optional<std::string>& optionsJson, const std::optional<std::string>& toolsJson) = 0;
58
59
  virtual std::shared_ptr<Promise<std::vector<double>>> tokenize(const std::string& text) = 0;
59
60
  virtual std::shared_ptr<Promise<std::string>> scoreWindow(const std::vector<double>& tokens, double start, double end, double context) = 0;
60
61
  virtual std::shared_ptr<Promise<std::string>> transcribe(const std::variant<std::vector<double>, std::string>& audio, const std::string& prompt, double responseBufferSize, const std::optional<std::string>& optionsJson, const std::optional<std::function<void(const std::string& /* token */, double /* tokenId */)>>& callback) = 0;
@@ -66,6 +67,8 @@ namespace margelo::nitro::cactus {
66
67
  virtual std::shared_ptr<Promise<std::vector<double>>> embed(const std::string& text, double embeddingBufferSize, bool normalize) = 0;
67
68
  virtual std::shared_ptr<Promise<std::vector<double>>> imageEmbed(const std::string& imagePath, double embeddingBufferSize) = 0;
68
69
  virtual std::shared_ptr<Promise<std::vector<double>>> audioEmbed(const std::string& audioPath, double embeddingBufferSize) = 0;
70
+ virtual std::shared_ptr<Promise<std::string>> diarize(const std::variant<std::vector<double>, std::string>& audio, double responseBufferSize, const std::optional<std::string>& optionsJson) = 0;
71
+ virtual std::shared_ptr<Promise<std::string>> embedSpeaker(const std::variant<std::vector<double>, std::string>& audio, double responseBufferSize, const std::optional<std::string>& optionsJson) = 0;
69
72
  virtual std::shared_ptr<Promise<void>> reset() = 0;
70
73
  virtual std::shared_ptr<Promise<void>> stop() = 0;
71
74
  virtual std::shared_ptr<Promise<void>> destroy() = 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cactus-react-native",
3
- "version": "1.10.3",
3
+ "version": "1.12.0",
4
4
  "description": "Run AI models locally on mobile devices",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,14 +1,18 @@
1
1
  import { Cactus, CactusFileSystem } from '../native';
2
2
  import type {
3
- CactusVADParams,
4
- CactusVADDownloadParams,
5
- CactusVADVadParams,
6
- CactusVADResult,
7
- } from '../types/CactusVAD';
3
+ CactusAudioParams,
4
+ CactusAudioDownloadParams,
5
+ CactusAudioVADParams,
6
+ CactusAudioVADResult,
7
+ CactusAudioDiarizeParams,
8
+ CactusAudioDiarizeResult,
9
+ CactusAudioEmbedSpeakerParams,
10
+ CactusAudioEmbedSpeakerResult,
11
+ } from '../types/CactusAudio';
8
12
  import { getRegistry } from '../modelRegistry';
9
13
  import type { CactusModel } from '../types/common';
10
14
 
11
- export class CactusVAD {
15
+ export class CactusAudio {
12
16
  private readonly cactus = new Cactus();
13
17
 
14
18
  private readonly model: string;
@@ -26,25 +30,25 @@ export class CactusVAD {
26
30
  pro: false,
27
31
  };
28
32
 
29
- constructor({ model, options }: CactusVADParams = {}) {
30
- this.model = model ?? CactusVAD.defaultModel;
33
+ constructor({ model, options }: CactusAudioParams = {}) {
34
+ this.model = model ?? CactusAudio.defaultModel;
31
35
  this.options = {
32
36
  quantization:
33
- options?.quantization ?? CactusVAD.defaultOptions.quantization,
34
- pro: options?.pro ?? CactusVAD.defaultOptions.pro,
37
+ options?.quantization ?? CactusAudio.defaultOptions.quantization,
38
+ pro: options?.pro ?? CactusAudio.defaultOptions.pro,
35
39
  };
36
40
  }
37
41
 
38
42
  public async download({
39
43
  onProgress,
40
- }: CactusVADDownloadParams = {}): Promise<void> {
44
+ }: CactusAudioDownloadParams = {}): Promise<void> {
41
45
  if (this.isModelPath(this.model)) {
42
46
  onProgress?.(1.0);
43
47
  return;
44
48
  }
45
49
 
46
50
  if (this.isDownloading) {
47
- throw new Error('CactusVAD is already downloading');
51
+ throw new Error('CactusAudio is already downloading');
48
52
  }
49
53
 
50
54
  if (await CactusFileSystem.modelExists(this.getModelName())) {
@@ -101,11 +105,26 @@ export class CactusVAD {
101
105
  public async vad({
102
106
  audio,
103
107
  options,
104
- }: CactusVADVadParams): Promise<CactusVADResult> {
108
+ }: CactusAudioVADParams): Promise<CactusAudioVADResult> {
105
109
  await this.init();
106
110
  return this.cactus.vad(audio, options);
107
111
  }
108
112
 
113
+ public async diarize({
114
+ audio,
115
+ options,
116
+ }: CactusAudioDiarizeParams): Promise<CactusAudioDiarizeResult> {
117
+ await this.init();
118
+ return this.cactus.diarize(audio, options);
119
+ }
120
+
121
+ public async embedSpeaker({
122
+ audio,
123
+ }: CactusAudioEmbedSpeakerParams): Promise<CactusAudioEmbedSpeakerResult> {
124
+ await this.init();
125
+ return this.cactus.embedSpeaker(audio);
126
+ }
127
+
109
128
  public async destroy(): Promise<void> {
110
129
  if (!this.isInitialized) {
111
130
  return;
@@ -3,6 +3,8 @@ import type {
3
3
  CactusLMDownloadParams,
4
4
  CactusLMCompleteParams,
5
5
  CactusLMCompleteResult,
6
+ CactusLMPrefillParams,
7
+ CactusLMPrefillResult,
6
8
  CactusLMTokenizeParams,
7
9
  CactusLMTokenizeResult,
8
10
  CactusLMScoreWindowParams,
@@ -159,6 +161,40 @@ export class CactusLM {
159
161
  }
160
162
  }
161
163
 
164
+ public async prefill({
165
+ messages,
166
+ options,
167
+ tools,
168
+ }: CactusLMPrefillParams): Promise<CactusLMPrefillResult> {
169
+ if (this.isGenerating) {
170
+ throw new Error('CactusLM is already generating');
171
+ }
172
+
173
+ options = { ...CactusLM.defaultCompleteOptions, ...options };
174
+ const toolsInternal = tools?.map((tool) => ({
175
+ type: 'function' as const,
176
+ function: tool,
177
+ }));
178
+
179
+ const responseBufferSize =
180
+ 8 * (options.maxTokens ?? CactusLM.defaultCompleteOptions.maxTokens) +
181
+ 256;
182
+
183
+ await this.init();
184
+
185
+ this.isGenerating = true;
186
+ try {
187
+ return await this.cactus.prefill(
188
+ messages,
189
+ responseBufferSize,
190
+ options,
191
+ toolsInternal
192
+ );
193
+ } finally {
194
+ this.isGenerating = false;
195
+ }
196
+ }
197
+
162
198
  public async tokenize({
163
199
  text,
164
200
  }: CactusLMTokenizeParams): Promise<CactusLMTokenizeResult> {
@@ -1,24 +1,28 @@
1
1
  import { useCallback, useEffect, useState, useRef } from 'react';
2
- import { CactusVAD } from '../classes/CactusVAD';
2
+ import { CactusAudio } from '../classes/CactusAudio';
3
3
  import { CactusFileSystem } from '../native';
4
4
  import { getErrorMessage } from '../utils/error';
5
5
  import type {
6
- CactusVADParams,
7
- CactusVADDownloadParams,
8
- CactusVADVadParams,
9
- CactusVADResult,
10
- } from '../types/CactusVAD';
6
+ CactusAudioParams,
7
+ CactusAudioDownloadParams,
8
+ CactusAudioVADParams,
9
+ CactusAudioVADResult,
10
+ CactusAudioDiarizeParams,
11
+ CactusAudioDiarizeResult,
12
+ CactusAudioEmbedSpeakerParams,
13
+ CactusAudioEmbedSpeakerResult,
14
+ } from '../types/CactusAudio';
11
15
  import type { CactusModel } from '../types/common';
12
16
 
13
- export const useCactusVAD = ({
17
+ export const useCactusAudio = ({
14
18
  model = 'silero-vad',
15
19
  options: modelOptions = {
16
20
  quantization: undefined,
17
21
  pro: false,
18
22
  },
19
- }: CactusVADParams = {}) => {
20
- const [cactusVAD, setCactusVAD] = useState(
21
- () => new CactusVAD({ model, options: modelOptions })
23
+ }: CactusAudioParams = {}) => {
24
+ const [cactusAudio, setCactusAudio] = useState(
25
+ () => new CactusAudio({ model, options: modelOptions })
22
26
  );
23
27
 
24
28
  const [isInitializing, setIsInitializing] = useState(false);
@@ -35,14 +39,14 @@ export const useCactusVAD = ({
35
39
  }, [model]);
36
40
 
37
41
  useEffect(() => {
38
- const newInstance = new CactusVAD({
42
+ const newInstance = new CactusAudio({
39
43
  model,
40
44
  options: {
41
45
  quantization: modelOptions.quantization,
42
46
  pro: modelOptions.pro,
43
47
  },
44
48
  });
45
- setCactusVAD(newInstance);
49
+ setCactusAudio(newInstance);
46
50
 
47
51
  setIsInitializing(false);
48
52
  setIsDownloaded(false);
@@ -73,14 +77,14 @@ export const useCactusVAD = ({
73
77
 
74
78
  useEffect(() => {
75
79
  return () => {
76
- cactusVAD.destroy().catch(() => {});
80
+ cactusAudio.destroy().catch(() => {});
77
81
  };
78
- }, [cactusVAD]);
82
+ }, [cactusAudio]);
79
83
 
80
84
  const download = useCallback(
81
- async ({ onProgress }: CactusVADDownloadParams = {}) => {
85
+ async ({ onProgress }: CactusAudioDownloadParams = {}) => {
82
86
  if (isDownloading) {
83
- const message = 'CactusVAD is already downloading';
87
+ const message = 'CactusAudio is already downloading';
84
88
  setError(message);
85
89
  throw new Error(message);
86
90
  }
@@ -97,7 +101,7 @@ export const useCactusVAD = ({
97
101
  setDownloadProgress(0);
98
102
  setIsDownloading(true);
99
103
  try {
100
- await cactusVAD.download({
104
+ await cactusAudio.download({
101
105
  onProgress: (progress) => {
102
106
  if (
103
107
  currentModelRef.current !== thisModel ||
@@ -141,12 +145,12 @@ export const useCactusVAD = ({
141
145
  setDownloadProgress(0);
142
146
  }
143
147
  },
144
- [cactusVAD, isDownloading, isDownloaded]
148
+ [cactusAudio, isDownloading, isDownloaded]
145
149
  );
146
150
 
147
151
  const init = useCallback(async () => {
148
152
  if (isInitializing) {
149
- const message = 'CactusVAD is already initializing';
153
+ const message = 'CactusAudio is already initializing';
150
154
  setError(message);
151
155
  throw new Error(message);
152
156
  }
@@ -154,50 +158,81 @@ export const useCactusVAD = ({
154
158
  setError(null);
155
159
  setIsInitializing(true);
156
160
  try {
157
- await cactusVAD.init();
161
+ await cactusAudio.init();
158
162
  } catch (e) {
159
163
  setError(getErrorMessage(e));
160
164
  throw e;
161
165
  } finally {
162
166
  setIsInitializing(false);
163
167
  }
164
- }, [cactusVAD, isInitializing]);
168
+ }, [cactusAudio, isInitializing]);
165
169
 
166
170
  const vad = useCallback(
167
171
  async ({
168
172
  audio,
169
173
  options,
170
- }: CactusVADVadParams): Promise<CactusVADResult> => {
174
+ }: CactusAudioVADParams): Promise<CactusAudioVADResult> => {
171
175
  setError(null);
172
176
  try {
173
- return await cactusVAD.vad({ audio, options });
177
+ return await cactusAudio.vad({ audio, options });
174
178
  } catch (e) {
175
179
  setError(getErrorMessage(e));
176
180
  throw e;
177
181
  }
178
182
  },
179
- [cactusVAD]
183
+ [cactusAudio]
184
+ );
185
+
186
+ const diarize = useCallback(
187
+ async ({
188
+ audio,
189
+ options,
190
+ }: CactusAudioDiarizeParams): Promise<CactusAudioDiarizeResult> => {
191
+ setError(null);
192
+ try {
193
+ return await cactusAudio.diarize({ audio, options });
194
+ } catch (e) {
195
+ setError(getErrorMessage(e));
196
+ throw e;
197
+ }
198
+ },
199
+ [cactusAudio]
200
+ );
201
+
202
+ const embedSpeaker = useCallback(
203
+ async ({
204
+ audio,
205
+ }: CactusAudioEmbedSpeakerParams): Promise<CactusAudioEmbedSpeakerResult> => {
206
+ setError(null);
207
+ try {
208
+ return await cactusAudio.embedSpeaker({ audio });
209
+ } catch (e) {
210
+ setError(getErrorMessage(e));
211
+ throw e;
212
+ }
213
+ },
214
+ [cactusAudio]
180
215
  );
181
216
 
182
217
  const destroy = useCallback(async () => {
183
218
  setError(null);
184
219
  try {
185
- await cactusVAD.destroy();
220
+ await cactusAudio.destroy();
186
221
  } catch (e) {
187
222
  setError(getErrorMessage(e));
188
223
  throw e;
189
224
  }
190
- }, [cactusVAD]);
225
+ }, [cactusAudio]);
191
226
 
192
227
  const getModels = useCallback(async (): Promise<CactusModel[]> => {
193
228
  setError(null);
194
229
  try {
195
- return await cactusVAD.getModels();
230
+ return await cactusAudio.getModels();
196
231
  } catch (e) {
197
232
  setError(getErrorMessage(e));
198
233
  throw e;
199
234
  }
200
- }, [cactusVAD]);
235
+ }, [cactusAudio]);
201
236
 
202
237
  return {
203
238
  isInitializing,
@@ -209,6 +244,8 @@ export const useCactusVAD = ({
209
244
  download,
210
245
  init,
211
246
  vad,
247
+ diarize,
248
+ embedSpeaker,
212
249
  destroy,
213
250
  getModels,
214
251
  };