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
|
@@ -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,
|
|
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 {
|
|
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?:
|
|
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,
|
|
1
|
+
{"version":3,"file":"Cactus.d.ts","sourceRoot":"","sources":["../../../../src/native/Cactus.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,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,EACV,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,sBAAsB,CAAC;AAE9B,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;IAyErB,OAAO,CAClB,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,GACrD,OAAO,CAAC,qBAAqB,CAAC;IA2C1B,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;IAYH,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,qBAAqB,GAC9B,OAAO,CAAC,oBAAoB,CAAC;IAkCzB,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;IAOP,OAAO,CAClB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,wBAAwB,CAAC;IAiCvB,YAAY,CACvB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GACvB,OAAO,CAAC,6BAA6B,CAAC;IAmBlC,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"}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"CactusLM.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusLM.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CactusSTT.d.ts","sourceRoot":"","sources":["../../../../src/types/CactusSTT.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,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,0BAA0B;IACzC,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,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,0BAA0B,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,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,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,qCAAqC;IACpD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;
|
|
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,14 +1,18 @@
|
|
|
1
1
|
import { Cactus, CactusFileSystem } from '../native';
|
|
2
2
|
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
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 }:
|
|
30
|
-
this.model = model ??
|
|
33
|
+
constructor({ model, options }: CactusAudioParams = {}) {
|
|
34
|
+
this.model = model ?? CactusAudio.defaultModel;
|
|
31
35
|
this.options = {
|
|
32
36
|
quantization:
|
|
33
|
-
options?.quantization ??
|
|
34
|
-
pro: options?.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
|
-
}:
|
|
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('
|
|
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
|
-
}:
|
|
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;
|
package/src/classes/CactusLM.ts
CHANGED
|
@@ -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 {
|
|
2
|
+
import { CactusAudio } from '../classes/CactusAudio';
|
|
3
3
|
import { CactusFileSystem } from '../native';
|
|
4
4
|
import { getErrorMessage } from '../utils/error';
|
|
5
5
|
import type {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
|
17
|
+
export const useCactusAudio = ({
|
|
14
18
|
model = 'silero-vad',
|
|
15
19
|
options: modelOptions = {
|
|
16
20
|
quantization: undefined,
|
|
17
21
|
pro: false,
|
|
18
22
|
},
|
|
19
|
-
}:
|
|
20
|
-
const [
|
|
21
|
-
() => new
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
80
|
+
cactusAudio.destroy().catch(() => {});
|
|
77
81
|
};
|
|
78
|
-
}, [
|
|
82
|
+
}, [cactusAudio]);
|
|
79
83
|
|
|
80
84
|
const download = useCallback(
|
|
81
|
-
async ({ onProgress }:
|
|
85
|
+
async ({ onProgress }: CactusAudioDownloadParams = {}) => {
|
|
82
86
|
if (isDownloading) {
|
|
83
|
-
const message = '
|
|
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
|
|
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
|
-
[
|
|
148
|
+
[cactusAudio, isDownloading, isDownloaded]
|
|
145
149
|
);
|
|
146
150
|
|
|
147
151
|
const init = useCallback(async () => {
|
|
148
152
|
if (isInitializing) {
|
|
149
|
-
const message = '
|
|
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
|
|
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
|
-
}, [
|
|
168
|
+
}, [cactusAudio, isInitializing]);
|
|
165
169
|
|
|
166
170
|
const vad = useCallback(
|
|
167
171
|
async ({
|
|
168
172
|
audio,
|
|
169
173
|
options,
|
|
170
|
-
}:
|
|
174
|
+
}: CactusAudioVADParams): Promise<CactusAudioVADResult> => {
|
|
171
175
|
setError(null);
|
|
172
176
|
try {
|
|
173
|
-
return await
|
|
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
|
-
[
|
|
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
|
|
220
|
+
await cactusAudio.destroy();
|
|
186
221
|
} catch (e) {
|
|
187
222
|
setError(getErrorMessage(e));
|
|
188
223
|
throw e;
|
|
189
224
|
}
|
|
190
|
-
}, [
|
|
225
|
+
}, [cactusAudio]);
|
|
191
226
|
|
|
192
227
|
const getModels = useCallback(async (): Promise<CactusModel[]> => {
|
|
193
228
|
setError(null);
|
|
194
229
|
try {
|
|
195
|
-
return await
|
|
230
|
+
return await cactusAudio.getModels();
|
|
196
231
|
} catch (e) {
|
|
197
232
|
setError(getErrorMessage(e));
|
|
198
233
|
throw e;
|
|
199
234
|
}
|
|
200
|
-
}, [
|
|
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
|
};
|