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.
Files changed (125) hide show
  1. package/README.md +102 -0
  2. package/USAGE.md +567 -0
  3. package/dist/backends/cloud/index.d.ts +7 -0
  4. package/dist/backends/cloud/index.d.ts.map +1 -0
  5. package/dist/backends/cloud/index.js +6 -0
  6. package/dist/backends/cloud/index.js.map +1 -0
  7. package/dist/backends/cloud/llm.d.ts +22 -0
  8. package/dist/backends/cloud/llm.d.ts.map +1 -0
  9. package/dist/backends/cloud/llm.js +234 -0
  10. package/dist/backends/cloud/llm.js.map +1 -0
  11. package/dist/backends/index.d.ts +2 -0
  12. package/dist/backends/index.d.ts.map +1 -0
  13. package/dist/backends/index.js +6 -0
  14. package/dist/backends/index.js.map +1 -0
  15. package/dist/backends/native/index.d.ts +5 -0
  16. package/dist/backends/native/index.d.ts.map +1 -0
  17. package/dist/backends/native/index.js +6 -0
  18. package/dist/backends/native/index.js.map +1 -0
  19. package/dist/backends/native/llm.d.ts +71 -0
  20. package/dist/backends/native/llm.d.ts.map +1 -0
  21. package/dist/backends/native/llm.js +435 -0
  22. package/dist/backends/native/llm.js.map +1 -0
  23. package/dist/backends/native/stt.d.ts +15 -0
  24. package/dist/backends/native/stt.d.ts.map +1 -0
  25. package/dist/backends/native/stt.js +94 -0
  26. package/dist/backends/native/stt.js.map +1 -0
  27. package/dist/backends/native/tts.d.ts +21 -0
  28. package/dist/backends/native/tts.d.ts.map +1 -0
  29. package/dist/backends/native/tts.js +105 -0
  30. package/dist/backends/native/tts.js.map +1 -0
  31. package/dist/backends/transformers/index.d.ts +4 -0
  32. package/dist/backends/transformers/index.d.ts.map +1 -0
  33. package/dist/backends/transformers/index.js +4 -0
  34. package/dist/backends/transformers/index.js.map +1 -0
  35. package/dist/backends/transformers/llm.d.ts +29 -0
  36. package/dist/backends/transformers/llm.d.ts.map +1 -0
  37. package/dist/backends/transformers/llm.js +117 -0
  38. package/dist/backends/transformers/llm.js.map +1 -0
  39. package/dist/backends/transformers/stt.d.ts +17 -0
  40. package/dist/backends/transformers/stt.d.ts.map +1 -0
  41. package/dist/backends/transformers/stt.js +43 -0
  42. package/dist/backends/transformers/stt.js.map +1 -0
  43. package/dist/backends/transformers/tts.d.ts +17 -0
  44. package/dist/backends/transformers/tts.d.ts.map +1 -0
  45. package/dist/backends/transformers/tts.js +40 -0
  46. package/dist/backends/transformers/tts.js.map +1 -0
  47. package/dist/cache.d.ts +37 -0
  48. package/dist/cache.d.ts.map +1 -0
  49. package/dist/cache.js +49 -0
  50. package/dist/cache.js.map +1 -0
  51. package/dist/cli.d.ts +11 -0
  52. package/dist/cli.d.ts.map +1 -0
  53. package/dist/cli.js +392 -0
  54. package/dist/cli.js.map +1 -0
  55. package/dist/client/audio-player.d.ts +45 -0
  56. package/dist/client/audio-player.d.ts.map +1 -0
  57. package/dist/client/audio-player.js +90 -0
  58. package/dist/client/audio-player.js.map +1 -0
  59. package/dist/client/audio-recorder.d.ts +42 -0
  60. package/dist/client/audio-recorder.d.ts.map +1 -0
  61. package/dist/client/audio-recorder.js +128 -0
  62. package/dist/client/audio-recorder.js.map +1 -0
  63. package/dist/client/index.d.ts +34 -0
  64. package/dist/client/index.d.ts.map +1 -0
  65. package/dist/client/index.js +33 -0
  66. package/dist/client/index.js.map +1 -0
  67. package/dist/client/protocol.d.ts +80 -0
  68. package/dist/client/protocol.d.ts.map +1 -0
  69. package/dist/client/protocol.js +29 -0
  70. package/dist/client/protocol.js.map +1 -0
  71. package/dist/client/voice-client.d.ts +249 -0
  72. package/dist/client/voice-client.d.ts.map +1 -0
  73. package/dist/client/voice-client.js +826 -0
  74. package/dist/client/voice-client.js.map +1 -0
  75. package/dist/client/web-speech-stt.d.ts +65 -0
  76. package/dist/client/web-speech-stt.d.ts.map +1 -0
  77. package/dist/client/web-speech-stt.js +122 -0
  78. package/dist/client/web-speech-stt.js.map +1 -0
  79. package/dist/client/web-speech-tts.d.ts +59 -0
  80. package/dist/client/web-speech-tts.d.ts.map +1 -0
  81. package/dist/client/web-speech-tts.js +145 -0
  82. package/dist/client/web-speech-tts.js.map +1 -0
  83. package/dist/index.d.ts +10 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +13 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/server/encoding.d.ts +18 -0
  88. package/dist/server/encoding.d.ts.map +1 -0
  89. package/dist/server/encoding.js +41 -0
  90. package/dist/server/encoding.js.map +1 -0
  91. package/dist/server/handler.d.ts +86 -0
  92. package/dist/server/handler.d.ts.map +1 -0
  93. package/dist/server/handler.js +224 -0
  94. package/dist/server/handler.js.map +1 -0
  95. package/dist/server/index.d.ts +31 -0
  96. package/dist/server/index.d.ts.map +1 -0
  97. package/dist/server/index.js +32 -0
  98. package/dist/server/index.js.map +1 -0
  99. package/dist/services/function-service.d.ts +17 -0
  100. package/dist/services/function-service.d.ts.map +1 -0
  101. package/dist/services/function-service.js +82 -0
  102. package/dist/services/function-service.js.map +1 -0
  103. package/dist/services/index.d.ts +4 -0
  104. package/dist/services/index.d.ts.map +1 -0
  105. package/dist/services/index.js +3 -0
  106. package/dist/services/index.js.map +1 -0
  107. package/dist/services/llm-logger.d.ts +136 -0
  108. package/dist/services/llm-logger.d.ts.map +1 -0
  109. package/dist/services/llm-logger.js +275 -0
  110. package/dist/services/llm-logger.js.map +1 -0
  111. package/dist/services/text-normalizer.d.ts +17 -0
  112. package/dist/services/text-normalizer.d.ts.map +1 -0
  113. package/dist/services/text-normalizer.js +100 -0
  114. package/dist/services/text-normalizer.js.map +1 -0
  115. package/dist/types.d.ts +195 -0
  116. package/dist/types.d.ts.map +1 -0
  117. package/dist/types.js +48 -0
  118. package/dist/types.js.map +1 -0
  119. package/dist/voice-pipeline.d.ts +125 -0
  120. package/dist/voice-pipeline.d.ts.map +1 -0
  121. package/dist/voice-pipeline.js +390 -0
  122. package/dist/voice-pipeline.js.map +1 -0
  123. package/package.json +96 -0
  124. package/scripts/setup-binaries.sh +159 -0
  125. 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":"AAAA;;;;;GAKG;AAiBH,kCAAkC;AAClC,MAAM,iBAAiB,GACrB,OAAO,MAAM,KAAK,WAAW;IAC3B,CAAC,CAAE,MAAc,CAAC,iBAAiB,IAAK,MAAc,CAAC,uBAAuB;IAC9E,CAAC,CAAC,IAAI,CAAC;AAEX,MAAM,OAAO,YAAY;IACf,MAAM,CAA+B;IACrC,WAAW,GAAQ,IAAI,CAAC;IACxB,WAAW,GAAG,KAAK,CAAC;IACpB,gBAAgB,GAAkD,IAAI,CAAC;IACvE,aAAa,GAAwB,IAAI,CAAC;IAC1C,eAAe,GAAoC,IAAI,CAAC;IAEhE,YAAY,SAA6B,EAAE;QACzC,IAAI,CAAC,MAAM,GAAG;YACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO;YACpC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,KAAK;YAC9C,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW;QAChB,OAAO,iBAAiB,KAAK,IAAI,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAA8C;QACrD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAoB;QACxB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAgC;QACtC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QAC/D,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,wBAAwB;QAE7D,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,KAAU,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAE9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,UAAU,EAAE,WAAW,CAAC,UAAU;gBAClC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,WAAW,CAAC,UAAU;aACnC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,KAAU,EAAE,EAAE;YACxC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,kDAAkD;YAClD,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7D,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QACnD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;CACF"}
@@ -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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"}
@@ -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"}