ug-js-sdk 3.0.51 → 3.0.57
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 +3 -3
- package/dist/ug-core/__tests__/__mocks__/ErrorRetryHandler.d.ts +7 -0
- package/dist/ug-core/__tests__/__mocks__/ErrorRetryHandler.js +16 -0
- package/dist/ug-core/__tests__/__mocks__/ErrorRetryHandler.js.map +1 -0
- package/dist/ug-core/__tests__/__mocks__/mpg123-decoder.d.ts +10 -0
- package/dist/ug-core/__tests__/__mocks__/mpg123-decoder.js +16 -0
- package/dist/ug-core/__tests__/__mocks__/mpg123-decoder.js.map +1 -0
- package/dist/ug-core/__tests__/__mocks__/uuid.d.ts +2 -0
- package/dist/ug-core/__tests__/__mocks__/uuid.js +11 -0
- package/dist/ug-core/__tests__/__mocks__/uuid.js.map +1 -0
- package/dist/ug-core/__tests__/__mocks__/vad-web.d.ts +11 -0
- package/dist/ug-core/__tests__/__mocks__/vad-web.js +19 -0
- package/dist/ug-core/__tests__/__mocks__/vad-web.js.map +1 -0
- package/dist/ug-core/__tests__/conversation-manager/ConversationCommands.test.d.ts +1 -0
- package/dist/ug-core/__tests__/conversation-manager/ConversationCommands.test.js +67 -0
- package/dist/ug-core/__tests__/conversation-manager/ConversationCommands.test.js.map +1 -0
- package/dist/ug-core/__tests__/conversation-manager/ConversationManager.test.d.ts +1 -0
- package/dist/ug-core/__tests__/conversation-manager/ConversationManager.test.js +185 -0
- package/dist/ug-core/__tests__/conversation-manager/ConversationManager.test.js.map +1 -0
- package/dist/ug-core/__tests__/conversation-manager/ErrorRetryHandler.test.d.ts +1 -0
- package/dist/ug-core/__tests__/conversation-manager/ErrorRetryHandler.test.js +168 -0
- package/dist/ug-core/__tests__/conversation-manager/ErrorRetryHandler.test.js.map +1 -0
- package/dist/ug-core/__tests__/core/EventEmitter.test.d.ts +1 -0
- package/dist/ug-core/__tests__/core/EventEmitter.test.js +211 -0
- package/dist/ug-core/__tests__/core/EventEmitter.test.js.map +1 -0
- package/dist/ug-core/__tests__/core/Logger.test.d.ts +1 -0
- package/dist/ug-core/__tests__/core/Logger.test.js +162 -0
- package/dist/ug-core/__tests__/core/Logger.test.js.map +1 -0
- package/dist/ug-core/__tests__/core/localStorage.test.d.ts +1 -0
- package/dist/ug-core/__tests__/core/localStorage.test.js +172 -0
- package/dist/ug-core/__tests__/core/localStorage.test.js.map +1 -0
- package/dist/ug-core/__tests__/e2e/replicate-test.e2e.d.ts +15 -0
- package/dist/ug-core/__tests__/e2e/replicate-test.e2e.js +224 -0
- package/dist/ug-core/__tests__/e2e/replicate-test.e2e.js.map +1 -0
- package/dist/ug-core/__tests__/network/WebSocketConnection.test.d.ts +1 -0
- package/dist/ug-core/__tests__/network/WebSocketConnection.test.js +193 -0
- package/dist/ug-core/__tests__/network/WebSocketConnection.test.js.map +1 -0
- package/dist/ug-core/__tests__/playback-manager/SubtitleManager.test.d.ts +1 -0
- package/dist/ug-core/__tests__/playback-manager/SubtitleManager.test.js +228 -0
- package/dist/ug-core/__tests__/playback-manager/SubtitleManager.test.js.map +1 -0
- package/dist/ug-core/__tests__/setup.d.ts +4 -0
- package/dist/ug-core/__tests__/setup.js +8 -0
- package/dist/ug-core/__tests__/setup.js.map +1 -0
- package/dist/ug-core/conversation-manager/ConversationManager.js +18 -0
- package/dist/ug-core/conversation-manager/ConversationManager.js.map +1 -1
- package/dist/ug-core/conversation-manager/ErrorRetryHandler.d.ts +1 -0
- package/dist/ug-core/conversation-manager/ErrorRetryHandler.js +3 -0
- package/dist/ug-core/conversation-manager/ErrorRetryHandler.js.map +1 -1
- package/dist/ug-core/conversation-manager/types.d.ts +51 -6
- package/dist/ug-core/network/ConversationNetwork.js +12 -6
- package/dist/ug-core/network/ConversationNetwork.js.map +1 -1
- package/dist/ug-core/playback-manager/PlaybackManager.d.ts +104 -0
- package/dist/ug-core/playback-manager/PlaybackManager.js +121 -4
- package/dist/ug-core/playback-manager/PlaybackManager.js.map +1 -1
- package/dist/ug-core/playback-manager/audio-player/AudioPlayer.d.ts +156 -0
- package/dist/ug-core/playback-manager/audio-player/AudioPlayer.js +156 -0
- package/dist/ug-core/playback-manager/audio-player/AudioPlayer.js.map +1 -1
- package/dist/ug-core/playback-manager/subtitle-manager/SubtitleManager.js +3 -1
- package/dist/ug-core/playback-manager/subtitle-manager/SubtitleManager.js.map +1 -1
- package/dist/ug-core/types/index.d.ts +34 -3
- package/dist/ug-core/user-input-manager/AudioRecorder.d.ts +49 -0
- package/dist/ug-core/user-input-manager/AudioRecorder.js +39 -1
- package/dist/ug-core/user-input-manager/AudioRecorder.js.map +1 -1
- package/dist/ug-core/user-input-manager/UserInputManager.d.ts +82 -6
- package/dist/ug-core/user-input-manager/UserInputManager.js +82 -6
- package/dist/ug-core/user-input-manager/UserInputManager.js.map +1 -1
- package/dist/ug-core/user-input-manager/VADManager.d.ts +62 -0
- package/dist/ug-core/user-input-manager/VADManager.js +99 -8
- package/dist/ug-core/user-input-manager/VADManager.js.map +1 -1
- package/dist/ug-js-sdk.mjs +1 -1
- package/package.json +1 -1
|
@@ -4,13 +4,43 @@ import { ConversationNetwork } from '../network/ConversationNetwork';
|
|
|
4
4
|
import { AudioRecordingConfig } from './AudioRecorder';
|
|
5
5
|
import { IVADManager } from './types';
|
|
6
6
|
/**
|
|
7
|
-
* Manages user input for conversations
|
|
7
|
+
* Manages user input for conversations including voice and text input.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* -
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
13
|
-
|
|
9
|
+
* The UserInputManager coordinates:
|
|
10
|
+
* - Audio recording via microphone (AudioRecorder)
|
|
11
|
+
* - Voice Activity Detection (VADManager) to detect speech start/end
|
|
12
|
+
* - Network communication for sending audio/text to the server
|
|
13
|
+
*
|
|
14
|
+
* Input modes:
|
|
15
|
+
* - **Audio mode**: Voice input through microphone with VAD for automatic turn-taking
|
|
16
|
+
* - **Text mode**: Text input via the `interact()` method
|
|
17
|
+
*
|
|
18
|
+
* @example Audio input flow
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // Audio is captured continuously when started
|
|
21
|
+
* await userInputManager.start() // Starts VAD and recording
|
|
22
|
+
*
|
|
23
|
+
* // VAD detects speech start → emits UserSpeaking event
|
|
24
|
+
* // VAD detects speech end → emits UserSilence, sends input_complete
|
|
25
|
+
* // Server processes audio and responds
|
|
26
|
+
*
|
|
27
|
+
* await userInputManager.stop() // Stops recording and VAD
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example Text input
|
|
31
|
+
* ```typescript
|
|
32
|
+
* await userInputManager.interact({
|
|
33
|
+
* text: 'Hello!',
|
|
34
|
+
* kind: 'interact',
|
|
35
|
+
* type: 'stream',
|
|
36
|
+
* uid: ''
|
|
37
|
+
* })
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @fires UserInputManagerEvents.UserSpeaking - When VAD detects user started speaking
|
|
41
|
+
* @fires UserInputManagerEvents.UserSilence - When VAD detects user stopped speaking
|
|
42
|
+
* @fires UserInputManagerEvents.UserInput - When input (audio/text/complete) is ready to send
|
|
43
|
+
*/
|
|
14
44
|
export declare class UserInputManager extends EventEmitter {
|
|
15
45
|
private capabilities;
|
|
16
46
|
private vadManager;
|
|
@@ -23,10 +53,40 @@ export declare class UserInputManager extends EventEmitter {
|
|
|
23
53
|
private debugMode;
|
|
24
54
|
private capturedAudioChunks;
|
|
25
55
|
constructor(capabilities: InputCapabilities, vadManager: IVADManager, network: ConversationNetwork, recordingConfig?: AudioRecordingConfig);
|
|
56
|
+
/**
|
|
57
|
+
* Initializes the user input manager with an optional media stream.
|
|
58
|
+
*
|
|
59
|
+
* If audio capabilities are enabled and no stream is provided,
|
|
60
|
+
* the manager will request microphone access.
|
|
61
|
+
*
|
|
62
|
+
* @param mediaStream - Optional existing MediaStream to use for audio input
|
|
63
|
+
* @throws Error if microphone access is denied when audio is enabled
|
|
64
|
+
*/
|
|
26
65
|
initialize(mediaStream?: MediaStream): Promise<void>;
|
|
27
66
|
reinitializeAudio(mediaStream?: MediaStream): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Starts audio recording and voice activity detection.
|
|
69
|
+
*
|
|
70
|
+
* This method:
|
|
71
|
+
* 1. Clears any server-side audio buffer from previous sessions
|
|
72
|
+
* 2. Starts VAD analysis (unless skipVAD is true)
|
|
73
|
+
* 3. Begins audio recording
|
|
74
|
+
*
|
|
75
|
+
* @param skipVAD - If true, skips VAD startup to reduce CPU load during playback
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* await userInputManager.start()
|
|
80
|
+
* // Now listening for voice input
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
28
83
|
start(skipVAD?: boolean): Promise<void>;
|
|
29
84
|
startVAD(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Stops audio recording and voice activity detection.
|
|
87
|
+
*
|
|
88
|
+
* @returns True if successfully stopped, false if already stopped
|
|
89
|
+
*/
|
|
30
90
|
stop(): Promise<boolean>;
|
|
31
91
|
updateCapabilities(capabilities: InputCapabilities): Promise<void>;
|
|
32
92
|
stopRecording(): Promise<void>;
|
|
@@ -39,6 +99,22 @@ export declare class UserInputManager extends EventEmitter {
|
|
|
39
99
|
flushBufferedAudio(): Promise<void>;
|
|
40
100
|
sendAudio(audioData: ArrayBuffer): Promise<void>;
|
|
41
101
|
private arrayBufferToBase64;
|
|
102
|
+
/**
|
|
103
|
+
* Sends a text interaction request to the server.
|
|
104
|
+
*
|
|
105
|
+
* @param request - The interaction request containing text, context, and utilities
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* await userInputManager.interact({
|
|
110
|
+
* text: 'Hello, how are you?',
|
|
111
|
+
* kind: 'interact',
|
|
112
|
+
* type: 'stream',
|
|
113
|
+
* uid: '',
|
|
114
|
+
* on_output: ['sentiment'] // Optional: utilities to run
|
|
115
|
+
* })
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
42
118
|
interact(request: InteractRequest): Promise<void>;
|
|
43
119
|
sendInputComplete(): Promise<void>;
|
|
44
120
|
reset(): void;
|
|
@@ -3,13 +3,43 @@ import { EventEmitter } from '../core/EventEmitter';
|
|
|
3
3
|
import { AudioRecorder, AudioRecorderEvents } from './AudioRecorder';
|
|
4
4
|
import { UserInputManagerEvents, VadManagerEvents, } from './types';
|
|
5
5
|
/**
|
|
6
|
-
* Manages user input for conversations
|
|
6
|
+
* Manages user input for conversations including voice and text input.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
* -
|
|
10
|
-
* -
|
|
11
|
-
*
|
|
12
|
-
|
|
8
|
+
* The UserInputManager coordinates:
|
|
9
|
+
* - Audio recording via microphone (AudioRecorder)
|
|
10
|
+
* - Voice Activity Detection (VADManager) to detect speech start/end
|
|
11
|
+
* - Network communication for sending audio/text to the server
|
|
12
|
+
*
|
|
13
|
+
* Input modes:
|
|
14
|
+
* - **Audio mode**: Voice input through microphone with VAD for automatic turn-taking
|
|
15
|
+
* - **Text mode**: Text input via the `interact()` method
|
|
16
|
+
*
|
|
17
|
+
* @example Audio input flow
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // Audio is captured continuously when started
|
|
20
|
+
* await userInputManager.start() // Starts VAD and recording
|
|
21
|
+
*
|
|
22
|
+
* // VAD detects speech start → emits UserSpeaking event
|
|
23
|
+
* // VAD detects speech end → emits UserSilence, sends input_complete
|
|
24
|
+
* // Server processes audio and responds
|
|
25
|
+
*
|
|
26
|
+
* await userInputManager.stop() // Stops recording and VAD
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @example Text input
|
|
30
|
+
* ```typescript
|
|
31
|
+
* await userInputManager.interact({
|
|
32
|
+
* text: 'Hello!',
|
|
33
|
+
* kind: 'interact',
|
|
34
|
+
* type: 'stream',
|
|
35
|
+
* uid: ''
|
|
36
|
+
* })
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @fires UserInputManagerEvents.UserSpeaking - When VAD detects user started speaking
|
|
40
|
+
* @fires UserInputManagerEvents.UserSilence - When VAD detects user stopped speaking
|
|
41
|
+
* @fires UserInputManagerEvents.UserInput - When input (audio/text/complete) is ready to send
|
|
42
|
+
*/
|
|
13
43
|
export class UserInputManager extends EventEmitter {
|
|
14
44
|
capabilities;
|
|
15
45
|
vadManager;
|
|
@@ -35,6 +65,15 @@ export class UserInputManager extends EventEmitter {
|
|
|
35
65
|
this.setupRecorderListeners();
|
|
36
66
|
}
|
|
37
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Initializes the user input manager with an optional media stream.
|
|
70
|
+
*
|
|
71
|
+
* If audio capabilities are enabled and no stream is provided,
|
|
72
|
+
* the manager will request microphone access.
|
|
73
|
+
*
|
|
74
|
+
* @param mediaStream - Optional existing MediaStream to use for audio input
|
|
75
|
+
* @throws Error if microphone access is denied when audio is enabled
|
|
76
|
+
*/
|
|
38
77
|
async initialize(mediaStream) {
|
|
39
78
|
await this.reinitializeAudio(mediaStream);
|
|
40
79
|
}
|
|
@@ -59,6 +98,22 @@ export class UserInputManager extends EventEmitter {
|
|
|
59
98
|
await this.audioRecorder?.initialize(this.mediaStream);
|
|
60
99
|
}
|
|
61
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Starts audio recording and voice activity detection.
|
|
103
|
+
*
|
|
104
|
+
* This method:
|
|
105
|
+
* 1. Clears any server-side audio buffer from previous sessions
|
|
106
|
+
* 2. Starts VAD analysis (unless skipVAD is true)
|
|
107
|
+
* 3. Begins audio recording
|
|
108
|
+
*
|
|
109
|
+
* @param skipVAD - If true, skips VAD startup to reduce CPU load during playback
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* await userInputManager.start()
|
|
114
|
+
* // Now listening for voice input
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
62
117
|
async start(skipVAD = false) {
|
|
63
118
|
if (this.isStopped) {
|
|
64
119
|
this.isStopped = false;
|
|
@@ -93,6 +148,11 @@ export class UserInputManager extends EventEmitter {
|
|
|
93
148
|
this.vadManager.startAnalysis();
|
|
94
149
|
}
|
|
95
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Stops audio recording and voice activity detection.
|
|
153
|
+
*
|
|
154
|
+
* @returns True if successfully stopped, false if already stopped
|
|
155
|
+
*/
|
|
96
156
|
async stop() {
|
|
97
157
|
if (this.isStopped) {
|
|
98
158
|
return false;
|
|
@@ -196,6 +256,22 @@ export class UserInputManager extends EventEmitter {
|
|
|
196
256
|
}
|
|
197
257
|
return btoa(binary);
|
|
198
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Sends a text interaction request to the server.
|
|
261
|
+
*
|
|
262
|
+
* @param request - The interaction request containing text, context, and utilities
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```typescript
|
|
266
|
+
* await userInputManager.interact({
|
|
267
|
+
* text: 'Hello, how are you?',
|
|
268
|
+
* kind: 'interact',
|
|
269
|
+
* type: 'stream',
|
|
270
|
+
* uid: '',
|
|
271
|
+
* on_output: ['sentiment'] // Optional: utilities to run
|
|
272
|
+
* })
|
|
273
|
+
* ```
|
|
274
|
+
*/
|
|
199
275
|
async interact(request) {
|
|
200
276
|
await this.network.interact(request);
|
|
201
277
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserInputManager.js","sourceRoot":"","sources":["../../../src/ug-core/user-input-manager/UserInputManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UserInputManager.js","sourceRoot":"","sources":["../../../src/ug-core/user-input-manager/UserInputManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,52 @@
|
|
|
1
1
|
import { EventEmitter } from '../core/EventEmitter';
|
|
2
2
|
import { IVADManager } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Events emitted by the VADManager.
|
|
5
|
+
*/
|
|
3
6
|
export declare const VadManagerEvents: {
|
|
7
|
+
/** Emitted when voice activity state changes (speech start/end) */
|
|
4
8
|
readonly VoiceActivity: "voiceActivity";
|
|
9
|
+
/** Emitted after silence timeout - indicates user has stopped speaking */
|
|
5
10
|
readonly Silence: "silence";
|
|
6
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Voice Activity Detection (VAD) manager using Silero VAD model.
|
|
14
|
+
*
|
|
15
|
+
* Uses the Silero VAD neural network model via ONNX Runtime Web to detect
|
|
16
|
+
* when the user starts and stops speaking. This enables automatic turn-taking
|
|
17
|
+
* in voice conversations without requiring push-to-talk.
|
|
18
|
+
*
|
|
19
|
+
* The VAD runs entirely in the browser using WebAssembly for performance.
|
|
20
|
+
* No audio is sent to any server for speech detection.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const vad = new VADManager(
|
|
25
|
+
* 300, // silenceTimeoutMs - time after speech ends before emitting Silence
|
|
26
|
+
* 0.5, // positiveSpeechThreshold - probability threshold to detect speech
|
|
27
|
+
* 0.35, // negativeSpeechThreshold - probability threshold to end speech
|
|
28
|
+
* 100 // minSpeechMs - minimum speech duration to avoid misfires
|
|
29
|
+
* )
|
|
30
|
+
*
|
|
31
|
+
* vad.on(VadManagerEvents.VoiceActivity, (event) => {
|
|
32
|
+
* if (event.isSpeaking) {
|
|
33
|
+
* console.log('User started speaking')
|
|
34
|
+
* } else {
|
|
35
|
+
* console.log('User stopped speaking')
|
|
36
|
+
* }
|
|
37
|
+
* })
|
|
38
|
+
*
|
|
39
|
+
* vad.on(VadManagerEvents.Silence, () => {
|
|
40
|
+
* console.log('Silence timeout - user turn complete')
|
|
41
|
+
* })
|
|
42
|
+
*
|
|
43
|
+
* await vad.initialize(mediaStream)
|
|
44
|
+
* vad.startAnalysis()
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @fires VadManagerEvents.VoiceActivity - When speech starts or ends
|
|
48
|
+
* @fires VadManagerEvents.Silence - After silence timeout (user turn complete)
|
|
49
|
+
*/
|
|
7
50
|
export declare class VADManager extends EventEmitter implements IVADManager {
|
|
8
51
|
private vadModel;
|
|
9
52
|
private silenceTimer;
|
|
@@ -13,12 +56,31 @@ export declare class VADManager extends EventEmitter implements IVADManager {
|
|
|
13
56
|
private minSpeechMs;
|
|
14
57
|
private isDisposed;
|
|
15
58
|
private currentStream;
|
|
59
|
+
/**
|
|
60
|
+
* Creates a new VADManager instance.
|
|
61
|
+
*
|
|
62
|
+
* @param silenceTimeoutMs - Time in ms after speech ends before emitting Silence event (default: 300)
|
|
63
|
+
* @param positiveSpeechThreshold - Probability threshold to start speech detection, 0-1 (default: 0.5)
|
|
64
|
+
* @param negativeSpeechThreshold - Probability threshold to end speech detection, 0-1 (default: 0.35)
|
|
65
|
+
* @param minSpeechMs - Minimum speech duration in ms to avoid misfires (default: 100)
|
|
66
|
+
*/
|
|
16
67
|
constructor(silenceTimeoutMs?: number, positiveSpeechThreshold?: number, negativeSpeechThreshold?: number, minSpeechMs?: number);
|
|
17
68
|
/**
|
|
18
69
|
* Initialize the VAD model. Accepts a MediaStream to use for voice activity detection.
|
|
19
70
|
*/
|
|
20
71
|
initialize(stream: MediaStream): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Starts voice activity detection analysis.
|
|
74
|
+
*
|
|
75
|
+
* Must be called after `initialize()`. The VAD will begin analyzing
|
|
76
|
+
* the audio stream and emitting VoiceActivity events.
|
|
77
|
+
*/
|
|
21
78
|
startAnalysis(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Stops voice activity detection analysis.
|
|
81
|
+
*
|
|
82
|
+
* Pauses the VAD model and clears any pending silence timers.
|
|
83
|
+
*/
|
|
22
84
|
stopAnalysis(): void;
|
|
23
85
|
startSilenceTimer(): void;
|
|
24
86
|
clearSilenceTimer(): void;
|
|
@@ -1,10 +1,53 @@
|
|
|
1
1
|
import { EventEmitter } from '../core/EventEmitter';
|
|
2
2
|
import { DefaultLogger, StylePurple } from '../core/Logger';
|
|
3
3
|
import { MicVAD } from '@ricky0123/vad-web';
|
|
4
|
+
/**
|
|
5
|
+
* Events emitted by the VADManager.
|
|
6
|
+
*/
|
|
4
7
|
export const VadManagerEvents = {
|
|
8
|
+
/** Emitted when voice activity state changes (speech start/end) */
|
|
5
9
|
VoiceActivity: 'voiceActivity',
|
|
10
|
+
/** Emitted after silence timeout - indicates user has stopped speaking */
|
|
6
11
|
Silence: 'silence',
|
|
7
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* Voice Activity Detection (VAD) manager using Silero VAD model.
|
|
15
|
+
*
|
|
16
|
+
* Uses the Silero VAD neural network model via ONNX Runtime Web to detect
|
|
17
|
+
* when the user starts and stops speaking. This enables automatic turn-taking
|
|
18
|
+
* in voice conversations without requiring push-to-talk.
|
|
19
|
+
*
|
|
20
|
+
* The VAD runs entirely in the browser using WebAssembly for performance.
|
|
21
|
+
* No audio is sent to any server for speech detection.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const vad = new VADManager(
|
|
26
|
+
* 300, // silenceTimeoutMs - time after speech ends before emitting Silence
|
|
27
|
+
* 0.5, // positiveSpeechThreshold - probability threshold to detect speech
|
|
28
|
+
* 0.35, // negativeSpeechThreshold - probability threshold to end speech
|
|
29
|
+
* 100 // minSpeechMs - minimum speech duration to avoid misfires
|
|
30
|
+
* )
|
|
31
|
+
*
|
|
32
|
+
* vad.on(VadManagerEvents.VoiceActivity, (event) => {
|
|
33
|
+
* if (event.isSpeaking) {
|
|
34
|
+
* console.log('User started speaking')
|
|
35
|
+
* } else {
|
|
36
|
+
* console.log('User stopped speaking')
|
|
37
|
+
* }
|
|
38
|
+
* })
|
|
39
|
+
*
|
|
40
|
+
* vad.on(VadManagerEvents.Silence, () => {
|
|
41
|
+
* console.log('Silence timeout - user turn complete')
|
|
42
|
+
* })
|
|
43
|
+
*
|
|
44
|
+
* await vad.initialize(mediaStream)
|
|
45
|
+
* vad.startAnalysis()
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @fires VadManagerEvents.VoiceActivity - When speech starts or ends
|
|
49
|
+
* @fires VadManagerEvents.Silence - After silence timeout (user turn complete)
|
|
50
|
+
*/
|
|
8
51
|
export class VADManager extends EventEmitter {
|
|
9
52
|
vadModel = null;
|
|
10
53
|
silenceTimer = null;
|
|
@@ -14,8 +57,15 @@ export class VADManager extends EventEmitter {
|
|
|
14
57
|
minSpeechMs;
|
|
15
58
|
isDisposed = false;
|
|
16
59
|
currentStream = null;
|
|
17
|
-
|
|
18
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Creates a new VADManager instance.
|
|
62
|
+
*
|
|
63
|
+
* @param silenceTimeoutMs - Time in ms after speech ends before emitting Silence event (default: 300)
|
|
64
|
+
* @param positiveSpeechThreshold - Probability threshold to start speech detection, 0-1 (default: 0.5)
|
|
65
|
+
* @param negativeSpeechThreshold - Probability threshold to end speech detection, 0-1 (default: 0.35)
|
|
66
|
+
* @param minSpeechMs - Minimum speech duration in ms to avoid misfires (default: 100)
|
|
67
|
+
*/
|
|
68
|
+
constructor(silenceTimeoutMs = 300, positiveSpeechThreshold = 0.5, negativeSpeechThreshold = 0.35, minSpeechMs = 100) {
|
|
19
69
|
const logger = new DefaultLogger({ category: '🎤 VADManager', style: StylePurple });
|
|
20
70
|
super(logger);
|
|
21
71
|
this.silenceTimeoutMs = silenceTimeoutMs;
|
|
@@ -33,7 +83,12 @@ export class VADManager extends EventEmitter {
|
|
|
33
83
|
this.logger.debug('You may need to close the browser console for this to initialize');
|
|
34
84
|
const vadModel = await MicVAD.new({
|
|
35
85
|
// New API uses callbacks for stream management
|
|
36
|
-
getStream: async () =>
|
|
86
|
+
getStream: async () => {
|
|
87
|
+
if (!this.currentStream) {
|
|
88
|
+
throw new Error('Stream is no longer available - VADManager may have been disposed');
|
|
89
|
+
}
|
|
90
|
+
return this.currentStream;
|
|
91
|
+
},
|
|
37
92
|
pauseStream: async () => {
|
|
38
93
|
// We don't stop the stream since it's managed externally
|
|
39
94
|
},
|
|
@@ -75,23 +130,59 @@ export class VADManager extends EventEmitter {
|
|
|
75
130
|
// Check if disposed while waiting for initialization
|
|
76
131
|
if (this.isDisposed) {
|
|
77
132
|
this.logger.debug('VADManager disposed during initialization, cleaning up model');
|
|
78
|
-
|
|
79
|
-
vadModel.destroy
|
|
133
|
+
try {
|
|
134
|
+
if (typeof vadModel.destroy === 'function') {
|
|
135
|
+
vadModel.destroy();
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
vadModel.pause();
|
|
139
|
+
}
|
|
80
140
|
}
|
|
81
|
-
|
|
82
|
-
|
|
141
|
+
catch (error) {
|
|
142
|
+
// Silently ignore - VAD may have partially initialized state (null stream/context)
|
|
143
|
+
this.logger.debug('Error cleaning up VAD model after disposal during init', error);
|
|
83
144
|
}
|
|
84
145
|
return;
|
|
85
146
|
}
|
|
86
147
|
this.vadModel = vadModel;
|
|
87
148
|
this.logger.debug(`VAD Manager initialized (MicVAD) with silenceTimeoutMs=${this.silenceTimeoutMs}, positiveSpeechThreshold=${this.positiveSpeechThreshold}, negativeSpeechThreshold=${this.negativeSpeechThreshold}, minSpeechMs=${this.minSpeechMs}`);
|
|
88
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Starts voice activity detection analysis.
|
|
152
|
+
*
|
|
153
|
+
* Must be called after `initialize()`. The VAD will begin analyzing
|
|
154
|
+
* the audio stream and emitting VoiceActivity events.
|
|
155
|
+
*/
|
|
89
156
|
startAnalysis() {
|
|
90
|
-
|
|
157
|
+
// Guard against calling start when VAD is not fully initialized or already disposed
|
|
158
|
+
if (this.isDisposed) {
|
|
159
|
+
this.logger.debug('Cannot start VAD analysis - VADManager is disposed');
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (!this.vadModel) {
|
|
163
|
+
this.logger.debug('Cannot start VAD analysis - VAD model not initialized');
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (!this.currentStream) {
|
|
167
|
+
this.logger.debug('Cannot start VAD analysis - no active stream');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
91
171
|
this.vadModel.start();
|
|
92
172
|
this.logger.debug('VAD analysis started (MicVAD)');
|
|
93
173
|
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
// Gracefully handle errors when VAD is in an inconsistent state
|
|
176
|
+
// This can happen during conversation restart/recovery when the stream
|
|
177
|
+
// was cleaned up but the VAD model still exists
|
|
178
|
+
this.logger.warn('Error starting VAD analysis, VAD may be in inconsistent state:', error);
|
|
179
|
+
}
|
|
94
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Stops voice activity detection analysis.
|
|
183
|
+
*
|
|
184
|
+
* Pauses the VAD model and clears any pending silence timers.
|
|
185
|
+
*/
|
|
95
186
|
stopAnalysis() {
|
|
96
187
|
this.clearSilenceTimer();
|
|
97
188
|
if (this.vadModel) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VADManager.js","sourceRoot":"","sources":["../../../src/ug-core/user-input-manager/VADManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI3D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;CACV,CAAA;AAEV,MAAM,OAAO,UAAW,SAAQ,YAAY;IAClC,QAAQ,GAAQ,IAAI,CAAA;IACpB,YAAY,GAAkB,IAAI,CAAA;IAClC,gBAAgB,CAAQ;IACxB,uBAAuB,CAAQ;IAC/B,uBAAuB,CAAQ;IAC/B,WAAW,CAAQ;IACnB,UAAU,GAAG,KAAK,CAAA;IAClB,aAAa,GAAuB,IAAI,CAAA;IAEhD,YACE,mBAA2B,GAAG,EAC9B,0BAAkC,GAAG,EACrC,0BAAkC,IAAI,EACtC,cAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"VADManager.js","sourceRoot":"","sources":["../../../src/ug-core/user-input-manager/VADManager.ts"],"names":[],"mappings":"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"}
|