modular-voice-agent-sdk 1.2.1 → 1.3.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 +6 -4
- package/dist/backends/transformers/llm.d.ts +8 -1
- package/dist/backends/transformers/llm.d.ts.map +1 -1
- package/dist/backends/transformers/llm.js +15 -7
- package/dist/backends/transformers/llm.js.map +1 -1
- package/dist/backends/transformers/stt.d.ts +8 -1
- package/dist/backends/transformers/stt.d.ts.map +1 -1
- package/dist/backends/transformers/stt.js +15 -7
- package/dist/backends/transformers/stt.js.map +1 -1
- package/dist/backends/transformers/tts.d.ts +8 -1
- package/dist/backends/transformers/tts.d.ts.map +1 -1
- package/dist/backends/transformers/tts.js +15 -7
- package/dist/backends/transformers/tts.js.map +1 -1
- package/dist/cache.d.ts +1 -2
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +1 -3
- package/dist/cache.js.map +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/voice-client.d.ts +76 -13
- package/dist/client/voice-client.d.ts.map +1 -1
- package/dist/client/voice-client.js +54 -30
- package/dist/client/voice-client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/voice-pipeline.d.ts +122 -20
- package/dist/voice-pipeline.d.ts.map +1 -1
- package/dist/voice-pipeline.js +106 -64
- package/dist/voice-pipeline.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,10 +9,12 @@ import { createVoiceClient, WebSpeechSTT, WebSpeechTTS } from 'modular-voice-age
|
|
|
9
9
|
import { TransformersLLM } from 'modular-voice-agent-sdk';
|
|
10
10
|
|
|
11
11
|
const client = createVoiceClient({
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
create: (modelStore) => ({
|
|
13
|
+
stt: new WebSpeechSTT(),
|
|
14
|
+
llm: new TransformersLLM({ model: 'HuggingFaceTB/SmolLM2-360M-Instruct' }, modelStore),
|
|
15
|
+
tts: new WebSpeechTTS(),
|
|
16
|
+
systemPrompt: 'You are a helpful assistant.',
|
|
17
|
+
}),
|
|
16
18
|
});
|
|
17
19
|
|
|
18
20
|
await client.connect();
|
|
@@ -10,12 +10,19 @@
|
|
|
10
10
|
* for JSON-based tool calling, parsed by VoicePipeline.
|
|
11
11
|
*/
|
|
12
12
|
import type { LLMPipeline, TransformersLLMConfig, ProgressCallback, Message, LLMGenerateOptions, LLMGenerateResult } from '../../types';
|
|
13
|
+
import type { ModelStore } from '../../voice-pipeline';
|
|
13
14
|
export declare class TransformersLLM implements LLMPipeline {
|
|
14
15
|
private config;
|
|
16
|
+
private modelStore;
|
|
15
17
|
private pipe;
|
|
16
18
|
private ready;
|
|
17
19
|
private tracker;
|
|
18
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @param config - LLM configuration
|
|
22
|
+
* @param modelStore - Pipeline-scoped model store for caching.
|
|
23
|
+
* Models are cached here and shared across sessions within the same pipeline.
|
|
24
|
+
*/
|
|
25
|
+
constructor(config: TransformersLLMConfig, modelStore: ModelStore);
|
|
19
26
|
initialize(onProgress?: ProgressCallback): Promise<void>;
|
|
20
27
|
supportsTools(): boolean;
|
|
21
28
|
generate(messages: Message[], options?: LLMGenerateOptions): Promise<LLMGenerateResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/backends/transformers/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EAGlB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/backends/transformers/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAyB;IAExC;;;;OAIG;gBACS,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU;IAM3D,UAAU,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D,aAAa,IAAI,OAAO;IAMlB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkC7F;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,IAAI,OAAO;CAGnB"}
|
|
@@ -11,29 +11,37 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { pipeline } from '@huggingface/transformers';
|
|
13
13
|
import { LLMLogger, LLMConversationTracker } from '../../services';
|
|
14
|
-
import { getCachedOrLoad } from '../../cache-runtime';
|
|
15
14
|
export class TransformersLLM {
|
|
16
15
|
config;
|
|
16
|
+
modelStore;
|
|
17
17
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
18
|
pipe = null;
|
|
19
19
|
ready = false;
|
|
20
20
|
tracker;
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* @param config - LLM configuration
|
|
23
|
+
* @param modelStore - Pipeline-scoped model store for caching.
|
|
24
|
+
* Models are cached here and shared across sessions within the same pipeline.
|
|
25
|
+
*/
|
|
26
|
+
constructor(config, modelStore) {
|
|
22
27
|
this.config = config;
|
|
28
|
+
this.modelStore = modelStore;
|
|
23
29
|
this.tracker = new LLMConversationTracker(new LLMLogger());
|
|
24
30
|
}
|
|
25
31
|
async initialize(onProgress) {
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
if (this.modelStore.has('llm')) {
|
|
33
|
+
this.pipe = this.modelStore.get('llm');
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
28
36
|
console.log(`Loading LLM model (${this.config.model})...`);
|
|
29
|
-
|
|
37
|
+
this.pipe = await pipeline('text-generation', this.config.model, {
|
|
30
38
|
dtype: this.config.dtype,
|
|
31
39
|
device: this.config.device,
|
|
32
40
|
progress_callback: onProgress,
|
|
33
41
|
});
|
|
34
42
|
console.log('LLM model loaded.');
|
|
35
|
-
|
|
36
|
-
}
|
|
43
|
+
this.modelStore.set('llm', this.pipe);
|
|
44
|
+
}
|
|
37
45
|
this.ready = true;
|
|
38
46
|
}
|
|
39
47
|
supportsTools() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../src/backends/transformers/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAWrD,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAuB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../src/backends/transformers/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,18 @@
|
|
|
5
5
|
* Supports Whisper, Moonshine, Wav2Vec2, and other ASR models from Hugging Face.
|
|
6
6
|
*/
|
|
7
7
|
import type { STTPipeline, TransformersSTTConfig, ProgressCallback, TurnContext } from '../../types';
|
|
8
|
+
import type { ModelStore } from '../../voice-pipeline';
|
|
8
9
|
export declare class TransformersSTT implements STTPipeline {
|
|
9
10
|
private config;
|
|
11
|
+
private modelStore;
|
|
10
12
|
private pipe;
|
|
11
13
|
private ready;
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @param config - STT configuration
|
|
16
|
+
* @param modelStore - Pipeline-scoped model store for caching.
|
|
17
|
+
* Models are cached here and shared across sessions within the same pipeline.
|
|
18
|
+
*/
|
|
19
|
+
constructor(config: TransformersSTTConfig, modelStore: ModelStore);
|
|
13
20
|
initialize(onProgress?: ProgressCallback): Promise<void>;
|
|
14
21
|
transcribe(audio: Float32Array, _turn?: TurnContext): Promise<string>;
|
|
15
22
|
isReady(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stt.d.ts","sourceRoot":"","sources":["../../../src/backends/transformers/stt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"stt.d.ts","sourceRoot":"","sources":["../../../src/backends/transformers/stt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,KAAK,CAAS;IAEtB;;;;OAIG;gBACS,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU;IAK3D,UAAU,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB3E,OAAO,IAAI,OAAO;CAGnB"}
|
|
@@ -5,27 +5,35 @@
|
|
|
5
5
|
* Supports Whisper, Moonshine, Wav2Vec2, and other ASR models from Hugging Face.
|
|
6
6
|
*/
|
|
7
7
|
import { pipeline } from '@huggingface/transformers';
|
|
8
|
-
import { getCachedOrLoad } from '../../cache-runtime';
|
|
9
8
|
export class TransformersSTT {
|
|
10
9
|
config;
|
|
10
|
+
modelStore;
|
|
11
11
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
12
|
pipe = null;
|
|
13
13
|
ready = false;
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @param config - STT configuration
|
|
16
|
+
* @param modelStore - Pipeline-scoped model store for caching.
|
|
17
|
+
* Models are cached here and shared across sessions within the same pipeline.
|
|
18
|
+
*/
|
|
19
|
+
constructor(config, modelStore) {
|
|
15
20
|
this.config = config;
|
|
21
|
+
this.modelStore = modelStore;
|
|
16
22
|
}
|
|
17
23
|
async initialize(onProgress) {
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
if (this.modelStore.has('stt')) {
|
|
25
|
+
this.pipe = this.modelStore.get('stt');
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
20
28
|
console.log(`Loading STT model (${this.config.model})...`);
|
|
21
|
-
|
|
29
|
+
this.pipe = await pipeline('automatic-speech-recognition', this.config.model, {
|
|
22
30
|
dtype: this.config.dtype,
|
|
23
31
|
device: this.config.device,
|
|
24
32
|
progress_callback: onProgress,
|
|
25
33
|
});
|
|
26
34
|
console.log('STT model loaded.');
|
|
27
|
-
|
|
28
|
-
}
|
|
35
|
+
this.modelStore.set('stt', this.pipe);
|
|
36
|
+
}
|
|
29
37
|
this.ready = true;
|
|
30
38
|
}
|
|
31
39
|
async transcribe(audio, _turn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stt.js","sourceRoot":"","sources":["../../../src/backends/transformers/stt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"stt.js","sourceRoot":"","sources":["../../../src/backends/transformers/stt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAIrD,MAAM,OAAO,eAAe;IAClB,MAAM,CAAwB;IAC9B,UAAU,CAAa;IAC/B,8DAA8D;IACtD,IAAI,GAAQ,IAAI,CAAC;IACjB,KAAK,GAAG,KAAK,CAAC;IAEtB;;;;OAIG;IACH,YAAY,MAA6B,EAAE,UAAsB;QAC/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAA6B;QAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,GAAG,MAAM,QAAQ,CAAC,8BAA8B,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBAC5E,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAsC;gBACzD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,iBAAiB,EAAE,UAAU;aAC9B,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAmB,EAAE,KAAmB;QACvD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YAClC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAqB,EAAE;YACjE,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE/C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACvC,CAAC;QACD,OAAQ,MAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -5,11 +5,18 @@
|
|
|
5
5
|
* Supports SpeechT5 and other TTS models from Hugging Face.
|
|
6
6
|
*/
|
|
7
7
|
import type { TTSPipeline, TransformersTTSConfig, ProgressCallback, AudioPlayable } from '../../types';
|
|
8
|
+
import type { ModelStore } from '../../voice-pipeline';
|
|
8
9
|
export declare class TransformersTTS implements TTSPipeline {
|
|
9
10
|
private config;
|
|
11
|
+
private modelStore;
|
|
10
12
|
private pipe;
|
|
11
13
|
private ready;
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @param config - TTS configuration
|
|
16
|
+
* @param modelStore - Pipeline-scoped model store for caching.
|
|
17
|
+
* Models are cached here and shared across sessions within the same pipeline.
|
|
18
|
+
*/
|
|
19
|
+
constructor(config: TransformersTTSConfig, modelStore: ModelStore);
|
|
13
20
|
initialize(onProgress?: ProgressCallback): Promise<void>;
|
|
14
21
|
synthesize(text: string): Promise<AudioPlayable>;
|
|
15
22
|
isReady(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../../src/backends/transformers/tts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../../src/backends/transformers/tts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,KAAK,CAAS;IAEtB;;;;OAIG;gBACS,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU;IAK3D,UAAU,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAYtD,OAAO,IAAI,OAAO;CAGnB"}
|
|
@@ -6,27 +6,35 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { pipeline } from '@huggingface/transformers';
|
|
8
8
|
import { BufferedAudioPlayable } from '../../types';
|
|
9
|
-
import { getCachedOrLoad } from '../../cache-runtime';
|
|
10
9
|
export class TransformersTTS {
|
|
11
10
|
config;
|
|
11
|
+
modelStore;
|
|
12
12
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
13
|
pipe = null;
|
|
14
14
|
ready = false;
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* @param config - TTS configuration
|
|
17
|
+
* @param modelStore - Pipeline-scoped model store for caching.
|
|
18
|
+
* Models are cached here and shared across sessions within the same pipeline.
|
|
19
|
+
*/
|
|
20
|
+
constructor(config, modelStore) {
|
|
16
21
|
this.config = config;
|
|
22
|
+
this.modelStore = modelStore;
|
|
17
23
|
}
|
|
18
24
|
async initialize(onProgress) {
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
if (this.modelStore.has('tts')) {
|
|
26
|
+
this.pipe = this.modelStore.get('tts');
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
21
29
|
console.log(`Loading TTS model (${this.config.model})...`);
|
|
22
|
-
|
|
30
|
+
this.pipe = await pipeline('text-to-speech', this.config.model, {
|
|
23
31
|
dtype: this.config.dtype,
|
|
24
32
|
device: this.config.device,
|
|
25
33
|
progress_callback: onProgress,
|
|
26
34
|
});
|
|
27
35
|
console.log('TTS model loaded.');
|
|
28
|
-
|
|
29
|
-
}
|
|
36
|
+
this.modelStore.set('tts', this.pipe);
|
|
37
|
+
}
|
|
30
38
|
this.ready = true;
|
|
31
39
|
}
|
|
32
40
|
async synthesize(text) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../../src/backends/transformers/tts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../../src/backends/transformers/tts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,MAAM,OAAO,eAAe;IAClB,MAAM,CAAwB;IAC9B,UAAU,CAAa;IAC/B,8DAA8D;IACtD,IAAI,GAAQ,IAAI,CAAC;IACjB,KAAK,GAAG,KAAK,CAAC;IAEtB;;;;OAIG;IACH,YAAY,MAA6B,EAAE,UAAsB;QAC/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAA6B;QAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBAC9D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAsC;gBACzD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,iBAAiB,EAAE,UAAU;aAC9B,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACnC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;SAClD,CAAC,CAAC;QAEH,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACvE,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
|
package/dist/cache.d.ts
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
* Models and binaries are stored in ~/.cache/mvas/ by default
|
|
4
4
|
*
|
|
5
5
|
* NOTE: This module uses Node.js APIs (os, path) and is SERVER-ONLY.
|
|
6
|
-
* For browser
|
|
6
|
+
* For browser model caching, use the ModelStore passed to backend constructors.
|
|
7
7
|
*/
|
|
8
|
-
export { getCachedOrLoad, isCached, clearCached, clearAllCached, } from './cache-runtime';
|
|
9
8
|
/**
|
|
10
9
|
* Get the cache directory for mvas assets.
|
|
11
10
|
* Default: ~/.cache/mvas
|
package/dist/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;CAI3B,CAAC"}
|
package/dist/cache.js
CHANGED
|
@@ -3,12 +3,10 @@
|
|
|
3
3
|
* Models and binaries are stored in ~/.cache/mvas/ by default
|
|
4
4
|
*
|
|
5
5
|
* NOTE: This module uses Node.js APIs (os, path) and is SERVER-ONLY.
|
|
6
|
-
* For browser
|
|
6
|
+
* For browser model caching, use the ModelStore passed to backend constructors.
|
|
7
7
|
*/
|
|
8
8
|
import { homedir } from 'os';
|
|
9
9
|
import { join } from 'path';
|
|
10
|
-
// Re-export browser-safe runtime cache functions
|
|
11
|
-
export { getCachedOrLoad, isCached, clearCached, clearAllCached, } from './cache-runtime';
|
|
12
10
|
/**
|
|
13
11
|
* Get the cache directory for mvas assets.
|
|
14
12
|
* Default: ~/.cache/mvas
|
package/dist/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,aAAa;IACzB,eAAe,EAAE,kBAAkB;IACnC,aAAa,EAAE,yBAAyB;CACzC,CAAC"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
23
|
export { VoiceClient, createVoiceClient } from './voice-client';
|
|
24
|
-
export type { VoiceClientConfig, VoiceClientEvents, VoiceClientStatus, BrowserSupport } from './voice-client';
|
|
24
|
+
export type { VoiceClientConfig, VoiceClientEvents, VoiceClientStatus, BrowserSupport, ClientComponents, ClientComponentFactory, } from './voice-client';
|
|
25
|
+
export type { ModelStore } from '../voice-pipeline';
|
|
25
26
|
export { WebSpeechSTT } from './web-speech-stt';
|
|
26
27
|
export type { WebSpeechSTTConfig, WebSpeechSTTResult } from './web-speech-stt';
|
|
27
28
|
export { WebSpeechTTS } from './web-speech-tts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAChE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EACL,eAAe,EACf,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC"}
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAahE,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,qDAAqD;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,+BAA+B;AAC/B,OAAO,EACL,eAAe,EACf,eAAe,GAYhB,MAAM,YAAY,CAAC"}
|
|
@@ -34,28 +34,31 @@ export interface BrowserSupport {
|
|
|
34
34
|
webSpeechSTTUsable: boolean;
|
|
35
35
|
}
|
|
36
36
|
export type VoiceClientStatus = 'disconnected' | 'connecting' | 'initializing' | 'ready' | 'listening' | 'processing' | 'speaking';
|
|
37
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Components returned by the client factory
|
|
39
|
+
*/
|
|
40
|
+
export interface ClientComponents {
|
|
38
41
|
/**
|
|
39
42
|
* STT backend - runs locally in browser
|
|
40
43
|
* - Provide an STTPipeline (e.g., TransformersSTT) or WebSpeechSTT for local STT
|
|
41
44
|
* - Set to null to use server-side STT (requires serverUrl)
|
|
42
45
|
* @default null (server handles)
|
|
43
46
|
*/
|
|
44
|
-
stt
|
|
47
|
+
stt: STTPipeline | WebSpeechSTT | null;
|
|
45
48
|
/**
|
|
46
49
|
* LLM backend - runs locally in browser
|
|
47
50
|
* - Provide an LLMPipeline (e.g., TransformersLLM) for local LLM
|
|
48
51
|
* - Set to null to use server-side LLM (requires serverUrl)
|
|
49
52
|
* @default null (server handles)
|
|
50
53
|
*/
|
|
51
|
-
llm
|
|
54
|
+
llm: LLMPipeline | null;
|
|
52
55
|
/**
|
|
53
56
|
* TTS backend - runs locally in browser
|
|
54
57
|
* - Provide a TTSPipeline (e.g., TransformersTTS) or WebSpeechTTS for local TTS
|
|
55
58
|
* - Set to null to use server-side TTS (requires serverUrl)
|
|
56
59
|
* @default null (server handles)
|
|
57
60
|
*/
|
|
58
|
-
tts
|
|
61
|
+
tts: TTSPipeline | WebSpeechTTS | null;
|
|
59
62
|
/**
|
|
60
63
|
* System prompt for the LLM (required if llm is provided)
|
|
61
64
|
*/
|
|
@@ -64,6 +67,48 @@ export interface VoiceClientConfig {
|
|
|
64
67
|
* WebSocket server URL (required if any component is null)
|
|
65
68
|
*/
|
|
66
69
|
serverUrl?: string;
|
|
70
|
+
}
|
|
71
|
+
import type { ModelStore } from '../voice-pipeline';
|
|
72
|
+
/**
|
|
73
|
+
* Factory function that creates client components.
|
|
74
|
+
*
|
|
75
|
+
* @param modelStore - Pipeline-scoped cache for heavy resources.
|
|
76
|
+
* Backends can use this to cache models across sessions (for fully-local mode).
|
|
77
|
+
* Typically not needed for client-side backends like WebSpeechTTS.
|
|
78
|
+
*/
|
|
79
|
+
export type ClientComponentFactory = (modelStore: ModelStore) => ClientComponents;
|
|
80
|
+
export interface VoiceClientConfig {
|
|
81
|
+
/**
|
|
82
|
+
* Factory that creates components.
|
|
83
|
+
* Called once during client construction.
|
|
84
|
+
*
|
|
85
|
+
* The factory receives a `modelStore` for caching heavy resources.
|
|
86
|
+
* This is mainly useful for fully-local mode with Transformers backends.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* // Simple: server handles heavy lifting
|
|
91
|
+
* createVoiceClient({
|
|
92
|
+
* create: (modelStore) => ({
|
|
93
|
+
* stt: null,
|
|
94
|
+
* llm: null,
|
|
95
|
+
* tts: new WebSpeechTTS(),
|
|
96
|
+
* serverUrl: 'ws://localhost:3100',
|
|
97
|
+
* }),
|
|
98
|
+
* });
|
|
99
|
+
*
|
|
100
|
+
* // Fully local with Transformers (uses modelStore for caching)
|
|
101
|
+
* createVoiceClient({
|
|
102
|
+
* create: (modelStore) => ({
|
|
103
|
+
* stt: new TransformersSTT(sttConfig, modelStore),
|
|
104
|
+
* llm: new TransformersLLM(llmConfig, modelStore),
|
|
105
|
+
* tts: new TransformersTTS(ttsConfig, modelStore),
|
|
106
|
+
* systemPrompt: 'You are a helpful assistant.',
|
|
107
|
+
* }),
|
|
108
|
+
* });
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
create: ClientComponentFactory;
|
|
67
112
|
/**
|
|
68
113
|
* Audio sample rate for recording (default: 16000)
|
|
69
114
|
*/
|
|
@@ -125,6 +170,7 @@ export declare class VoiceClient {
|
|
|
125
170
|
private config;
|
|
126
171
|
private mode;
|
|
127
172
|
private needsServer;
|
|
173
|
+
private modelStore;
|
|
128
174
|
private localSTT;
|
|
129
175
|
private localLLM;
|
|
130
176
|
private localTTS;
|
|
@@ -223,28 +269,45 @@ export declare class VoiceClient {
|
|
|
223
269
|
}
|
|
224
270
|
/**
|
|
225
271
|
* Create a VoiceClient instance
|
|
272
|
+
*
|
|
226
273
|
* @example
|
|
274
|
+
* ```typescript
|
|
227
275
|
* // Fully local
|
|
228
276
|
* const client = createVoiceClient({
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
277
|
+
* create: () => ({
|
|
278
|
+
* stt: new TransformersSTT({ model: '...' }),
|
|
279
|
+
* llm: new TransformersLLM({ model: '...' }),
|
|
280
|
+
* tts: new WebSpeechTTS(),
|
|
281
|
+
* systemPrompt: 'You are a helpful assistant.',
|
|
282
|
+
* }),
|
|
233
283
|
* });
|
|
284
|
+
* ```
|
|
234
285
|
*
|
|
235
286
|
* @example
|
|
287
|
+
* ```typescript
|
|
236
288
|
* // Fully remote
|
|
237
289
|
* const client = createVoiceClient({
|
|
238
|
-
*
|
|
290
|
+
* create: () => ({
|
|
291
|
+
* stt: null,
|
|
292
|
+
* llm: null,
|
|
293
|
+
* tts: null,
|
|
294
|
+
* serverUrl: 'ws://localhost:3000',
|
|
295
|
+
* }),
|
|
239
296
|
* });
|
|
297
|
+
* ```
|
|
240
298
|
*
|
|
241
299
|
* @example
|
|
242
|
-
*
|
|
300
|
+
* ```typescript
|
|
301
|
+
* // Hybrid: local TTS, server STT/LLM
|
|
243
302
|
* const client = createVoiceClient({
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
*
|
|
303
|
+
* create: () => ({
|
|
304
|
+
* stt: null,
|
|
305
|
+
* llm: null,
|
|
306
|
+
* tts: new WebSpeechTTS(),
|
|
307
|
+
* serverUrl: 'ws://localhost:3000',
|
|
308
|
+
* }),
|
|
247
309
|
* });
|
|
310
|
+
* ```
|
|
248
311
|
*/
|
|
249
312
|
export declare function createVoiceClient(config: VoiceClientConfig): VoiceClient;
|
|
250
313
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-client.d.ts","sourceRoot":"","sources":["../../src/client/voice-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAmC,MAAM,UAAU,CAAC;AAIvG,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAUhD,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,YAAY,EAAE,OAAO,CAAC;IACtB,sDAAsD;IACtD,YAAY,EAAE,OAAO,CAAC;IACtB,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,YAAY,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,iFAAiF;IACjF,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GACzB,cAAc,GACd,YAAY,GACZ,cAAc,GACd,OAAO,GACP,WAAW,GACX,YAAY,GACZ,UAAU,CAAC;AAEf,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"voice-client.d.ts","sourceRoot":"","sources":["../../src/client/voice-client.ts"],"names":[],"mappings":"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"}
|