modular-voice-agent-sdk 1.0.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 +102 -0
- package/USAGE.md +567 -0
- package/dist/backends/cloud/index.d.ts +7 -0
- package/dist/backends/cloud/index.d.ts.map +1 -0
- package/dist/backends/cloud/index.js +6 -0
- package/dist/backends/cloud/index.js.map +1 -0
- package/dist/backends/cloud/llm.d.ts +22 -0
- package/dist/backends/cloud/llm.d.ts.map +1 -0
- package/dist/backends/cloud/llm.js +234 -0
- package/dist/backends/cloud/llm.js.map +1 -0
- package/dist/backends/index.d.ts +2 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +6 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/native/index.d.ts +5 -0
- package/dist/backends/native/index.d.ts.map +1 -0
- package/dist/backends/native/index.js +6 -0
- package/dist/backends/native/index.js.map +1 -0
- package/dist/backends/native/llm.d.ts +71 -0
- package/dist/backends/native/llm.d.ts.map +1 -0
- package/dist/backends/native/llm.js +435 -0
- package/dist/backends/native/llm.js.map +1 -0
- package/dist/backends/native/stt.d.ts +15 -0
- package/dist/backends/native/stt.d.ts.map +1 -0
- package/dist/backends/native/stt.js +94 -0
- package/dist/backends/native/stt.js.map +1 -0
- package/dist/backends/native/tts.d.ts +21 -0
- package/dist/backends/native/tts.d.ts.map +1 -0
- package/dist/backends/native/tts.js +105 -0
- package/dist/backends/native/tts.js.map +1 -0
- package/dist/backends/transformers/index.d.ts +4 -0
- package/dist/backends/transformers/index.d.ts.map +1 -0
- package/dist/backends/transformers/index.js +4 -0
- package/dist/backends/transformers/index.js.map +1 -0
- package/dist/backends/transformers/llm.d.ts +29 -0
- package/dist/backends/transformers/llm.d.ts.map +1 -0
- package/dist/backends/transformers/llm.js +117 -0
- package/dist/backends/transformers/llm.js.map +1 -0
- package/dist/backends/transformers/stt.d.ts +17 -0
- package/dist/backends/transformers/stt.d.ts.map +1 -0
- package/dist/backends/transformers/stt.js +43 -0
- package/dist/backends/transformers/stt.js.map +1 -0
- package/dist/backends/transformers/tts.d.ts +17 -0
- package/dist/backends/transformers/tts.d.ts.map +1 -0
- package/dist/backends/transformers/tts.js +40 -0
- package/dist/backends/transformers/tts.js.map +1 -0
- package/dist/cache.d.ts +37 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +49 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +392 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/audio-player.d.ts +45 -0
- package/dist/client/audio-player.d.ts.map +1 -0
- package/dist/client/audio-player.js +90 -0
- package/dist/client/audio-player.js.map +1 -0
- package/dist/client/audio-recorder.d.ts +42 -0
- package/dist/client/audio-recorder.d.ts.map +1 -0
- package/dist/client/audio-recorder.js +128 -0
- package/dist/client/audio-recorder.js.map +1 -0
- package/dist/client/index.d.ts +34 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +33 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/protocol.d.ts +80 -0
- package/dist/client/protocol.d.ts.map +1 -0
- package/dist/client/protocol.js +29 -0
- package/dist/client/protocol.js.map +1 -0
- package/dist/client/voice-client.d.ts +249 -0
- package/dist/client/voice-client.d.ts.map +1 -0
- package/dist/client/voice-client.js +826 -0
- package/dist/client/voice-client.js.map +1 -0
- package/dist/client/web-speech-stt.d.ts +65 -0
- package/dist/client/web-speech-stt.d.ts.map +1 -0
- package/dist/client/web-speech-stt.js +122 -0
- package/dist/client/web-speech-stt.js.map +1 -0
- package/dist/client/web-speech-tts.d.ts +59 -0
- package/dist/client/web-speech-tts.d.ts.map +1 -0
- package/dist/client/web-speech-tts.js +145 -0
- package/dist/client/web-speech-tts.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/server/encoding.d.ts +18 -0
- package/dist/server/encoding.d.ts.map +1 -0
- package/dist/server/encoding.js +41 -0
- package/dist/server/encoding.js.map +1 -0
- package/dist/server/handler.d.ts +86 -0
- package/dist/server/handler.d.ts.map +1 -0
- package/dist/server/handler.js +224 -0
- package/dist/server/handler.js.map +1 -0
- package/dist/server/index.d.ts +31 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +32 -0
- package/dist/server/index.js.map +1 -0
- package/dist/services/function-service.d.ts +17 -0
- package/dist/services/function-service.d.ts.map +1 -0
- package/dist/services/function-service.js +82 -0
- package/dist/services/function-service.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +3 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/llm-logger.d.ts +136 -0
- package/dist/services/llm-logger.d.ts.map +1 -0
- package/dist/services/llm-logger.js +275 -0
- package/dist/services/llm-logger.js.map +1 -0
- package/dist/services/text-normalizer.d.ts +17 -0
- package/dist/services/text-normalizer.d.ts.map +1 -0
- package/dist/services/text-normalizer.js +100 -0
- package/dist/services/text-normalizer.js.map +1 -0
- package/dist/types.d.ts +195 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +48 -0
- package/dist/types.js.map +1 -0
- package/dist/voice-pipeline.d.ts +125 -0
- package/dist/voice-pipeline.d.ts.map +1 -0
- package/dist/voice-pipeline.js +390 -0
- package/dist/voice-pipeline.js.map +1 -0
- package/package.json +96 -0
- package/scripts/setup-binaries.sh +159 -0
- package/scripts/setup.sh +201 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-client.js","sourceRoot":"","sources":["../../src/client/voice-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Speech STT (Browser Speech Recognition)
|
|
3
|
+
*
|
|
4
|
+
* Uses the browser's native SpeechRecognition API for speech-to-text.
|
|
5
|
+
* Client-side only - sends text to server instead of audio.
|
|
6
|
+
*/
|
|
7
|
+
export interface WebSpeechSTTConfig {
|
|
8
|
+
/** Language code (e.g., 'en-US', 'en-GB') */
|
|
9
|
+
language?: string;
|
|
10
|
+
/** Whether to return interim results while speaking */
|
|
11
|
+
interimResults?: boolean;
|
|
12
|
+
/** Maximum alternatives to return */
|
|
13
|
+
maxAlternatives?: number;
|
|
14
|
+
}
|
|
15
|
+
export type WebSpeechSTTResult = {
|
|
16
|
+
transcript: string;
|
|
17
|
+
isFinal: boolean;
|
|
18
|
+
confidence: number;
|
|
19
|
+
};
|
|
20
|
+
export declare class WebSpeechSTT {
|
|
21
|
+
private config;
|
|
22
|
+
private recognition;
|
|
23
|
+
private isListening;
|
|
24
|
+
private onResultCallback;
|
|
25
|
+
private onEndCallback;
|
|
26
|
+
private onErrorCallback;
|
|
27
|
+
constructor(config?: WebSpeechSTTConfig);
|
|
28
|
+
/**
|
|
29
|
+
* Check if Web Speech API is available
|
|
30
|
+
*/
|
|
31
|
+
static isSupported(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Check if currently listening
|
|
34
|
+
*/
|
|
35
|
+
get listening(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Set callback for speech results
|
|
38
|
+
*/
|
|
39
|
+
onResult(callback: (result: WebSpeechSTTResult) => void): void;
|
|
40
|
+
/**
|
|
41
|
+
* Set callback for when recognition ends
|
|
42
|
+
*/
|
|
43
|
+
onEnd(callback: () => void): void;
|
|
44
|
+
/**
|
|
45
|
+
* Set callback for errors
|
|
46
|
+
*/
|
|
47
|
+
onError(callback: (error: Error) => void): void;
|
|
48
|
+
/**
|
|
49
|
+
* Start listening for speech
|
|
50
|
+
*/
|
|
51
|
+
start(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Stop listening
|
|
54
|
+
*/
|
|
55
|
+
stop(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Abort recognition (doesn't return results)
|
|
58
|
+
*/
|
|
59
|
+
abort(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Clean up
|
|
62
|
+
*/
|
|
63
|
+
dispose(): void;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=web-speech-stt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-speech-stt.d.ts","sourceRoot":"","sources":["../../src/client/web-speech-stt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAQF,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAuD;IAC/E,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,eAAe,CAAyC;gBAEpD,MAAM,GAAE,kBAAuB;IAQ3C;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO;IAI7B;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,GAAG,IAAI;IAI9D;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjC;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAI/C;;OAEG;IACH,KAAK,IAAI,IAAI;IA0Cb;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Speech STT (Browser Speech Recognition)
|
|
3
|
+
*
|
|
4
|
+
* Uses the browser's native SpeechRecognition API for speech-to-text.
|
|
5
|
+
* Client-side only - sends text to server instead of audio.
|
|
6
|
+
*/
|
|
7
|
+
// Cross-browser SpeechRecognition
|
|
8
|
+
const SpeechRecognition = typeof window !== 'undefined'
|
|
9
|
+
? window.SpeechRecognition || window.webkitSpeechRecognition
|
|
10
|
+
: null;
|
|
11
|
+
export class WebSpeechSTT {
|
|
12
|
+
config;
|
|
13
|
+
recognition = null;
|
|
14
|
+
isListening = false;
|
|
15
|
+
onResultCallback = null;
|
|
16
|
+
onEndCallback = null;
|
|
17
|
+
onErrorCallback = null;
|
|
18
|
+
constructor(config = {}) {
|
|
19
|
+
this.config = {
|
|
20
|
+
language: config.language ?? 'en-US',
|
|
21
|
+
interimResults: config.interimResults ?? false,
|
|
22
|
+
maxAlternatives: config.maxAlternatives ?? 1,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if Web Speech API is available
|
|
27
|
+
*/
|
|
28
|
+
static isSupported() {
|
|
29
|
+
return SpeechRecognition !== null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if currently listening
|
|
33
|
+
*/
|
|
34
|
+
get listening() {
|
|
35
|
+
return this.isListening;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Set callback for speech results
|
|
39
|
+
*/
|
|
40
|
+
onResult(callback) {
|
|
41
|
+
this.onResultCallback = callback;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Set callback for when recognition ends
|
|
45
|
+
*/
|
|
46
|
+
onEnd(callback) {
|
|
47
|
+
this.onEndCallback = callback;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Set callback for errors
|
|
51
|
+
*/
|
|
52
|
+
onError(callback) {
|
|
53
|
+
this.onErrorCallback = callback;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Start listening for speech
|
|
57
|
+
*/
|
|
58
|
+
start() {
|
|
59
|
+
if (!SpeechRecognition) {
|
|
60
|
+
this.onErrorCallback?.(new Error('Web Speech API not supported in this browser'));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (this.isListening)
|
|
64
|
+
return;
|
|
65
|
+
this.recognition = new SpeechRecognition();
|
|
66
|
+
this.recognition.lang = this.config.language;
|
|
67
|
+
this.recognition.interimResults = this.config.interimResults;
|
|
68
|
+
this.recognition.maxAlternatives = this.config.maxAlternatives;
|
|
69
|
+
this.recognition.continuous = false; // Single utterance mode
|
|
70
|
+
this.recognition.onresult = (event) => {
|
|
71
|
+
const result = event.results[event.results.length - 1];
|
|
72
|
+
const alternative = result[0];
|
|
73
|
+
this.onResultCallback?.({
|
|
74
|
+
transcript: alternative.transcript,
|
|
75
|
+
isFinal: result.isFinal,
|
|
76
|
+
confidence: alternative.confidence,
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
this.recognition.onend = () => {
|
|
80
|
+
this.isListening = false;
|
|
81
|
+
this.onEndCallback?.();
|
|
82
|
+
};
|
|
83
|
+
this.recognition.onerror = (event) => {
|
|
84
|
+
this.isListening = false;
|
|
85
|
+
// 'no-speech' and 'aborted' are not really errors
|
|
86
|
+
if (event.error !== 'no-speech' && event.error !== 'aborted') {
|
|
87
|
+
this.onErrorCallback?.(new Error(`Speech recognition error: ${event.error}`));
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
this.isListening = true;
|
|
91
|
+
this.recognition.start();
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Stop listening
|
|
95
|
+
*/
|
|
96
|
+
stop() {
|
|
97
|
+
if (!this.isListening || !this.recognition)
|
|
98
|
+
return;
|
|
99
|
+
this.recognition.stop();
|
|
100
|
+
this.isListening = false;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Abort recognition (doesn't return results)
|
|
104
|
+
*/
|
|
105
|
+
abort() {
|
|
106
|
+
if (!this.recognition)
|
|
107
|
+
return;
|
|
108
|
+
this.recognition.abort();
|
|
109
|
+
this.isListening = false;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Clean up
|
|
113
|
+
*/
|
|
114
|
+
dispose() {
|
|
115
|
+
this.abort();
|
|
116
|
+
this.recognition = null;
|
|
117
|
+
this.onResultCallback = null;
|
|
118
|
+
this.onEndCallback = null;
|
|
119
|
+
this.onErrorCallback = null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=web-speech-stt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-speech-stt.js","sourceRoot":"","sources":["../../src/client/web-speech-stt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Speech TTS (Browser Speech Synthesis)
|
|
3
|
+
*
|
|
4
|
+
* Uses the browser's native speechSynthesis API for text-to-speech.
|
|
5
|
+
* Client-side only - speaks text directly without needing audio from server.
|
|
6
|
+
*/
|
|
7
|
+
export interface WebSpeechTTSConfig {
|
|
8
|
+
/** Voice name (e.g., 'Samantha', 'Daniel', 'Martha') */
|
|
9
|
+
voiceName?: string;
|
|
10
|
+
/** Language code (e.g., 'en-US', 'en-GB') */
|
|
11
|
+
language?: string;
|
|
12
|
+
/** Speech rate (0.5 - 2.0, default 1.0) */
|
|
13
|
+
rate?: number;
|
|
14
|
+
/** Pitch (0.5 - 2.0, default 1.0) */
|
|
15
|
+
pitch?: number;
|
|
16
|
+
/** Volume (0.0 - 1.0, default 1.0) */
|
|
17
|
+
volume?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class WebSpeechTTS {
|
|
20
|
+
private config;
|
|
21
|
+
private voice;
|
|
22
|
+
private initialized;
|
|
23
|
+
constructor(config?: WebSpeechTTSConfig);
|
|
24
|
+
/**
|
|
25
|
+
* Check if Web Speech API is available
|
|
26
|
+
*/
|
|
27
|
+
static isSupported(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Get available voices
|
|
30
|
+
*/
|
|
31
|
+
static getVoices(): SpeechSynthesisVoice[];
|
|
32
|
+
/**
|
|
33
|
+
* Initialize and select voice
|
|
34
|
+
*/
|
|
35
|
+
initialize(): Promise<void>;
|
|
36
|
+
private loadVoices;
|
|
37
|
+
private selectVoice;
|
|
38
|
+
/**
|
|
39
|
+
* Speak text
|
|
40
|
+
*/
|
|
41
|
+
speak(text: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Stop any ongoing speech
|
|
44
|
+
*/
|
|
45
|
+
stop(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Check if currently speaking
|
|
48
|
+
*/
|
|
49
|
+
get speaking(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Check if initialized
|
|
52
|
+
*/
|
|
53
|
+
get ready(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Get selected voice name
|
|
56
|
+
*/
|
|
57
|
+
get selectedVoice(): string | null;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=web-speech-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-speech-tts.d.ts","sourceRoot":"","sources":["../../src/client/web-speech-tts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,GAAE,kBAAuB;IAU3C;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO;IAI7B;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,oBAAoB,EAAE;IAK1C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YASnB,UAAU;IAyBxB,OAAO,CAAC,WAAW;IA0BnB;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiClC;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAEjC;CACF"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Speech TTS (Browser Speech Synthesis)
|
|
3
|
+
*
|
|
4
|
+
* Uses the browser's native speechSynthesis API for text-to-speech.
|
|
5
|
+
* Client-side only - speaks text directly without needing audio from server.
|
|
6
|
+
*/
|
|
7
|
+
export class WebSpeechTTS {
|
|
8
|
+
config;
|
|
9
|
+
voice = null;
|
|
10
|
+
initialized = false;
|
|
11
|
+
constructor(config = {}) {
|
|
12
|
+
this.config = {
|
|
13
|
+
voiceName: config.voiceName ?? '',
|
|
14
|
+
language: config.language ?? 'en',
|
|
15
|
+
rate: config.rate ?? 1.0,
|
|
16
|
+
pitch: config.pitch ?? 1.0,
|
|
17
|
+
volume: config.volume ?? 1.0,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if Web Speech API is available
|
|
22
|
+
*/
|
|
23
|
+
static isSupported() {
|
|
24
|
+
return typeof window !== 'undefined' && 'speechSynthesis' in window;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get available voices
|
|
28
|
+
*/
|
|
29
|
+
static getVoices() {
|
|
30
|
+
if (!WebSpeechTTS.isSupported())
|
|
31
|
+
return [];
|
|
32
|
+
return speechSynthesis.getVoices();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Initialize and select voice
|
|
36
|
+
*/
|
|
37
|
+
async initialize() {
|
|
38
|
+
if (!WebSpeechTTS.isSupported()) {
|
|
39
|
+
throw new Error('Web Speech API not supported');
|
|
40
|
+
}
|
|
41
|
+
await this.loadVoices();
|
|
42
|
+
this.initialized = true;
|
|
43
|
+
}
|
|
44
|
+
async loadVoices() {
|
|
45
|
+
return new Promise((resolve) => {
|
|
46
|
+
const tryLoad = () => {
|
|
47
|
+
const voices = speechSynthesis.getVoices();
|
|
48
|
+
if (voices.length > 0) {
|
|
49
|
+
this.selectVoice(voices);
|
|
50
|
+
resolve();
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
};
|
|
55
|
+
// Try immediately
|
|
56
|
+
if (tryLoad())
|
|
57
|
+
return;
|
|
58
|
+
// Listen for voiceschanged (Chrome needs this)
|
|
59
|
+
speechSynthesis.onvoiceschanged = () => {
|
|
60
|
+
tryLoad();
|
|
61
|
+
};
|
|
62
|
+
// Timeout fallback
|
|
63
|
+
setTimeout(() => resolve(), 1000);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
selectVoice(voices) {
|
|
67
|
+
// Try to find voice by name
|
|
68
|
+
if (this.config.voiceName) {
|
|
69
|
+
const byName = voices.find((v) => v.name.toLowerCase().includes(this.config.voiceName.toLowerCase()));
|
|
70
|
+
if (byName) {
|
|
71
|
+
this.voice = byName;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Try to find by language
|
|
76
|
+
if (this.config.language) {
|
|
77
|
+
const byLang = voices.find((v) => v.lang.startsWith(this.config.language));
|
|
78
|
+
if (byLang) {
|
|
79
|
+
this.voice = byLang;
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Fall back to default or first English voice
|
|
84
|
+
this.voice =
|
|
85
|
+
voices.find((v) => v.default) || voices.find((v) => v.lang.startsWith('en')) || voices[0] || null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Speak text
|
|
89
|
+
*/
|
|
90
|
+
speak(text) {
|
|
91
|
+
return new Promise((resolve, reject) => {
|
|
92
|
+
if (!WebSpeechTTS.isSupported()) {
|
|
93
|
+
reject(new Error('Web Speech API not supported'));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// Cancel any ongoing speech
|
|
97
|
+
speechSynthesis.cancel();
|
|
98
|
+
const utterance = new SpeechSynthesisUtterance(text);
|
|
99
|
+
if (this.voice) {
|
|
100
|
+
utterance.voice = this.voice;
|
|
101
|
+
}
|
|
102
|
+
utterance.rate = this.config.rate;
|
|
103
|
+
utterance.pitch = this.config.pitch;
|
|
104
|
+
utterance.volume = this.config.volume;
|
|
105
|
+
utterance.onend = () => resolve();
|
|
106
|
+
utterance.onerror = (e) => {
|
|
107
|
+
// 'canceled' is not an error (happens when we call stop())
|
|
108
|
+
if (e.error === 'canceled') {
|
|
109
|
+
resolve();
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
reject(new Error(`Speech error: ${e.error}`));
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
speechSynthesis.speak(utterance);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Stop any ongoing speech
|
|
120
|
+
*/
|
|
121
|
+
stop() {
|
|
122
|
+
if (WebSpeechTTS.isSupported()) {
|
|
123
|
+
speechSynthesis.cancel();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check if currently speaking
|
|
128
|
+
*/
|
|
129
|
+
get speaking() {
|
|
130
|
+
return WebSpeechTTS.isSupported() && speechSynthesis.speaking;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if initialized
|
|
134
|
+
*/
|
|
135
|
+
get ready() {
|
|
136
|
+
return this.initialized;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get selected voice name
|
|
140
|
+
*/
|
|
141
|
+
get selectedVoice() {
|
|
142
|
+
return this.voice?.name ?? null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=web-speech-tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-speech-tts.js","sourceRoot":"","sources":["../../src/client/web-speech-tts.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modular Voice Agent SDK
|
|
3
|
+
* Isomorphic STT → LLM → TTS pipeline
|
|
4
|
+
*/
|
|
5
|
+
export { VoicePipeline } from './voice-pipeline';
|
|
6
|
+
export type { VoicePipelineConfig, VoicePipelineCallbacks, ConversationContext } from './voice-pipeline';
|
|
7
|
+
export * from './types';
|
|
8
|
+
export * from './backends';
|
|
9
|
+
export * from './services';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGzG,cAAc,SAAS,CAAC;AAGxB,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modular Voice Agent SDK
|
|
3
|
+
* Isomorphic STT → LLM → TTS pipeline
|
|
4
|
+
*/
|
|
5
|
+
// Main orchestrator
|
|
6
|
+
export { VoicePipeline } from './voice-pipeline';
|
|
7
|
+
// Types
|
|
8
|
+
export * from './types';
|
|
9
|
+
// Backends
|
|
10
|
+
export * from './backends';
|
|
11
|
+
// Services
|
|
12
|
+
export * from './services';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,QAAQ;AACR,cAAc,SAAS,CAAC;AAExB,WAAW;AACX,cAAc,YAAY,CAAC;AAE3B,WAAW;AACX,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side Audio Encoding Utilities
|
|
3
|
+
*
|
|
4
|
+
* Uses Node.js Buffer for better performance than browser-based encoding.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Encode Float32Array to base64 string (Node.js optimized)
|
|
8
|
+
*/
|
|
9
|
+
export declare function float32ToBase64Node(audio: Float32Array): string;
|
|
10
|
+
/**
|
|
11
|
+
* Decode base64 string to Float32Array (Node.js optimized)
|
|
12
|
+
*/
|
|
13
|
+
export declare function base64ToFloat32Node(data: string): Float32Array;
|
|
14
|
+
/**
|
|
15
|
+
* Concatenate multiple Float32Arrays into one
|
|
16
|
+
*/
|
|
17
|
+
export declare function concatFloat32Arrays(arrays: Float32Array[]): Float32Array;
|
|
18
|
+
//# sourceMappingURL=encoding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/server/encoding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAO/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAO9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CASxE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side Audio Encoding Utilities
|
|
3
|
+
*
|
|
4
|
+
* Uses Node.js Buffer for better performance than browser-based encoding.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Encode Float32Array to base64 string (Node.js optimized)
|
|
8
|
+
*/
|
|
9
|
+
export function float32ToBase64Node(audio) {
|
|
10
|
+
// Create a new buffer and copy data to ensure alignment
|
|
11
|
+
const buffer = Buffer.alloc(audio.length * 4);
|
|
12
|
+
for (let i = 0; i < audio.length; i++) {
|
|
13
|
+
buffer.writeFloatLE(audio[i], i * 4);
|
|
14
|
+
}
|
|
15
|
+
return buffer.toString('base64');
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Decode base64 string to Float32Array (Node.js optimized)
|
|
19
|
+
*/
|
|
20
|
+
export function base64ToFloat32Node(data) {
|
|
21
|
+
const buffer = Buffer.from(data, 'base64');
|
|
22
|
+
const float32 = new Float32Array(buffer.length / 4);
|
|
23
|
+
for (let i = 0; i < float32.length; i++) {
|
|
24
|
+
float32[i] = buffer.readFloatLE(i * 4);
|
|
25
|
+
}
|
|
26
|
+
return float32;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Concatenate multiple Float32Arrays into one
|
|
30
|
+
*/
|
|
31
|
+
export function concatFloat32Arrays(arrays) {
|
|
32
|
+
const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0);
|
|
33
|
+
const result = new Float32Array(totalLength);
|
|
34
|
+
let offset = 0;
|
|
35
|
+
for (const arr of arrays) {
|
|
36
|
+
result.set(arr, offset);
|
|
37
|
+
offset += arr.length;
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=encoding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/server/encoding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,wDAAwD;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACxD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Handler
|
|
3
|
+
*
|
|
4
|
+
* Framework-agnostic session handler for voice pipeline servers.
|
|
5
|
+
* Supports capability negotiation - skips STT/TTS when client handles them.
|
|
6
|
+
* Each session has its own conversation history and conversation ID.
|
|
7
|
+
*/
|
|
8
|
+
import type { VoicePipeline } from '../voice-pipeline';
|
|
9
|
+
import type { ClientMessage, ServerMessage } from '../client/protocol';
|
|
10
|
+
export interface PipelineHandlerConfig {
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Client capabilities - what the client handles locally
|
|
14
|
+
*/
|
|
15
|
+
interface ClientCapabilities {
|
|
16
|
+
hasSTT: boolean;
|
|
17
|
+
hasTTS: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A session represents a single client connection.
|
|
21
|
+
* Each session has its own conversation history and ID.
|
|
22
|
+
*/
|
|
23
|
+
export declare class PipelineSession {
|
|
24
|
+
private pipeline;
|
|
25
|
+
private audioChunks;
|
|
26
|
+
private destroyed;
|
|
27
|
+
private capabilities;
|
|
28
|
+
/** Session's conversation history */
|
|
29
|
+
private history;
|
|
30
|
+
/** Unique conversation ID for this session */
|
|
31
|
+
private conversationId;
|
|
32
|
+
constructor(pipeline: VoicePipeline);
|
|
33
|
+
/**
|
|
34
|
+
* Get the conversation context for this session
|
|
35
|
+
*/
|
|
36
|
+
private getContext;
|
|
37
|
+
/**
|
|
38
|
+
* Handle an incoming message and yield response messages
|
|
39
|
+
*/
|
|
40
|
+
handle(message: ClientMessage): AsyncGenerator<ServerMessage>;
|
|
41
|
+
/**
|
|
42
|
+
* Get client capabilities
|
|
43
|
+
*/
|
|
44
|
+
getCapabilities(): ClientCapabilities;
|
|
45
|
+
/**
|
|
46
|
+
* Process accumulated audio through the pipeline (STT → LLM → TTS)
|
|
47
|
+
*/
|
|
48
|
+
private processAudio;
|
|
49
|
+
/**
|
|
50
|
+
* Process text through the pipeline (LLM → TTS)
|
|
51
|
+
*/
|
|
52
|
+
private processText;
|
|
53
|
+
/**
|
|
54
|
+
* Run the pipeline and yield messages as they arrive
|
|
55
|
+
*/
|
|
56
|
+
private runPipeline;
|
|
57
|
+
/**
|
|
58
|
+
* Clean up session resources
|
|
59
|
+
*/
|
|
60
|
+
destroy(): void;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Pipeline handler factory
|
|
64
|
+
*/
|
|
65
|
+
export declare class PipelineHandler {
|
|
66
|
+
private pipeline;
|
|
67
|
+
constructor(pipeline: VoicePipeline, _config?: PipelineHandlerConfig);
|
|
68
|
+
/**
|
|
69
|
+
* Create a new session for a client connection.
|
|
70
|
+
* Each session has its own conversation history.
|
|
71
|
+
*/
|
|
72
|
+
createSession(): PipelineSession;
|
|
73
|
+
/**
|
|
74
|
+
* Get info about what the pipeline handles
|
|
75
|
+
*/
|
|
76
|
+
getPipelineInfo(): {
|
|
77
|
+
hasSTT: boolean;
|
|
78
|
+
hasTTS: boolean;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Create a pipeline handler
|
|
83
|
+
*/
|
|
84
|
+
export declare function createPipelineHandler(pipeline: VoicePipeline, config?: PipelineHandlerConfig): PipelineHandler;
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/server/handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIvE,MAAM,WAAW,qBAAqB;CAErC;AAED;;GAEG;AACH,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AASD;;;GAGG;AACH,qBAAa,eAAe;IAcxB,OAAO,CAAC,QAAQ;IAblB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAGlB;IAEF,qCAAqC;IACrC,OAAO,CAAC,OAAO,CAAiB;IAChC,8CAA8C;IAC9C,OAAO,CAAC,cAAc,CAAS;gBAGrB,QAAQ,EAAE,aAAa;IAOjC;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACI,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC;IAiCpE;;OAEG;IACH,eAAe,IAAI,kBAAkB;IAIrC;;OAEG;YACY,YAAY;IAgB3B;;OAEG;YACY,WAAW;IAU1B;;OAEG;YACY,WAAW;IAkF1B;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB;AAED;;GAEG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,aAAa,EAC/B,OAAO,GAAE,qBAA0B;IAKrC;;;OAGG;IACH,aAAa,IAAI,eAAe;IAIhC;;OAEG;IACH,eAAe,IAAI;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE;CAMxD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,aAAa,EACvB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,eAAe,CAEjB"}
|