@livekit/agents 0.3.5 → 0.4.1
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +36 -0
- package/dist/audio.js +17 -30
- package/dist/audio.js.map +1 -1
- package/dist/cli.js +3 -14
- package/dist/cli.js.map +1 -1
- package/dist/http_server.d.ts +1 -1
- package/dist/http_server.js +5 -9
- package/dist/http_server.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/dist/ipc/job_executor.js +3 -5
- package/dist/ipc/job_executor.js.map +1 -1
- package/dist/ipc/job_main.d.ts +1 -1
- package/dist/ipc/proc_job_executor.js +66 -80
- package/dist/ipc/proc_job_executor.js.map +1 -1
- package/dist/ipc/proc_pool.d.ts +3 -3
- package/dist/ipc/proc_pool.d.ts.map +1 -1
- package/dist/ipc/proc_pool.js +38 -20
- package/dist/ipc/proc_pool.js.map +1 -1
- package/dist/job.js +56 -73
- package/dist/job.js.map +1 -1
- package/dist/llm/chat_context.d.ts +66 -0
- package/dist/llm/chat_context.d.ts.map +1 -0
- package/dist/llm/chat_context.js +93 -0
- package/dist/llm/chat_context.js.map +1 -0
- package/dist/llm/function_context.d.ts +19 -1
- package/dist/llm/function_context.d.ts.map +1 -1
- package/dist/llm/function_context.js +54 -18
- package/dist/llm/function_context.js.map +1 -1
- package/dist/llm/function_context.test.d.ts +2 -0
- package/dist/llm/function_context.test.d.ts.map +1 -0
- package/dist/llm/function_context.test.js +218 -0
- package/dist/llm/function_context.test.js.map +1 -0
- package/dist/llm/index.d.ts +3 -2
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +3 -2
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/llm.d.ts +53 -0
- package/dist/llm/llm.d.ts.map +1 -0
- package/dist/llm/llm.js +45 -0
- package/dist/llm/llm.js.map +1 -0
- package/dist/multimodal/agent_playout.d.ts +1 -1
- package/dist/multimodal/agent_playout.js +116 -153
- package/dist/multimodal/agent_playout.js.map +1 -1
- package/dist/multimodal/multimodal_agent.d.ts +4 -3
- package/dist/multimodal/multimodal_agent.d.ts.map +1 -1
- package/dist/multimodal/multimodal_agent.js +207 -234
- package/dist/multimodal/multimodal_agent.js.map +1 -1
- package/dist/pipeline/agent_output.d.ts +30 -0
- package/dist/pipeline/agent_output.d.ts.map +1 -0
- package/dist/pipeline/agent_output.js +155 -0
- package/dist/pipeline/agent_output.js.map +1 -0
- package/dist/pipeline/agent_playout.d.ts +38 -0
- package/dist/pipeline/agent_playout.d.ts.map +1 -0
- package/dist/pipeline/agent_playout.js +142 -0
- package/dist/pipeline/agent_playout.js.map +1 -0
- package/dist/pipeline/human_input.d.ts +28 -0
- package/dist/pipeline/human_input.d.ts.map +1 -0
- package/dist/pipeline/human_input.js +134 -0
- package/dist/pipeline/human_input.js.map +1 -0
- package/dist/pipeline/index.d.ts +2 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +5 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/pipeline_agent.d.ts +134 -0
- package/dist/pipeline/pipeline_agent.d.ts.map +1 -0
- package/dist/pipeline/pipeline_agent.js +661 -0
- package/dist/pipeline/pipeline_agent.js.map +1 -0
- package/dist/pipeline/speech_handle.d.ts +27 -0
- package/dist/pipeline/speech_handle.d.ts.map +1 -0
- package/dist/pipeline/speech_handle.js +102 -0
- package/dist/pipeline/speech_handle.js.map +1 -0
- package/dist/plugin.js +7 -20
- package/dist/plugin.js.map +1 -1
- package/dist/stt/index.d.ts +1 -2
- package/dist/stt/index.d.ts.map +1 -1
- package/dist/stt/index.js +1 -2
- package/dist/stt/index.js.map +1 -1
- package/dist/stt/stt.d.ts +62 -24
- package/dist/stt/stt.d.ts.map +1 -1
- package/dist/stt/stt.js +77 -27
- package/dist/stt/stt.js.map +1 -1
- package/dist/tokenize/basic/basic.d.ts +16 -0
- package/dist/tokenize/basic/basic.d.ts.map +1 -0
- package/dist/tokenize/basic/basic.js +50 -0
- package/dist/tokenize/basic/basic.js.map +1 -0
- package/dist/tokenize/basic/hyphenator.d.ts +17 -0
- package/dist/tokenize/basic/hyphenator.d.ts.map +1 -0
- package/dist/tokenize/basic/hyphenator.js +420 -0
- package/dist/tokenize/basic/hyphenator.js.map +1 -0
- package/dist/tokenize/basic/index.d.ts +2 -0
- package/dist/tokenize/basic/index.d.ts.map +1 -0
- package/dist/tokenize/basic/index.js +5 -0
- package/dist/tokenize/basic/index.js.map +1 -0
- package/dist/tokenize/basic/paragraph.d.ts +5 -0
- package/dist/tokenize/basic/paragraph.d.ts.map +1 -0
- package/dist/tokenize/basic/paragraph.js +38 -0
- package/dist/tokenize/basic/paragraph.js.map +1 -0
- package/dist/tokenize/basic/sentence.d.ts +5 -0
- package/dist/tokenize/basic/sentence.d.ts.map +1 -0
- package/dist/tokenize/basic/sentence.js +60 -0
- package/dist/tokenize/basic/sentence.js.map +1 -0
- package/dist/tokenize/basic/word.d.ts +5 -0
- package/dist/tokenize/basic/word.d.ts.map +1 -0
- package/dist/tokenize/basic/word.js +23 -0
- package/dist/tokenize/basic/word.js.map +1 -0
- package/dist/tokenize/index.d.ts +5 -0
- package/dist/tokenize/index.d.ts.map +1 -0
- package/dist/tokenize/index.js +8 -0
- package/dist/tokenize/index.js.map +1 -0
- package/dist/tokenize/token_stream.d.ts +36 -0
- package/dist/tokenize/token_stream.d.ts.map +1 -0
- package/dist/tokenize/token_stream.js +136 -0
- package/dist/tokenize/token_stream.js.map +1 -0
- package/dist/tokenize/tokenizer.d.ts +55 -0
- package/dist/tokenize/tokenizer.d.ts.map +1 -0
- package/dist/tokenize/tokenizer.js +117 -0
- package/dist/tokenize/tokenizer.js.map +1 -0
- package/dist/transcription.js +78 -89
- package/dist/transcription.js.map +1 -1
- package/dist/tts/index.d.ts +1 -3
- package/dist/tts/index.d.ts.map +1 -1
- package/dist/tts/index.js +1 -3
- package/dist/tts/index.js.map +1 -1
- package/dist/tts/tts.d.ts +66 -37
- package/dist/tts/tts.d.ts.map +1 -1
- package/dist/tts/tts.js +79 -74
- package/dist/tts/tts.js.map +1 -1
- package/dist/utils.d.ts +21 -6
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +120 -76
- package/dist/utils.js.map +1 -1
- package/dist/vad.d.ts +43 -39
- package/dist/vad.d.ts.map +1 -1
- package/dist/vad.js +51 -4
- package/dist/vad.js.map +1 -1
- package/dist/worker.d.ts +1 -1
- package/dist/worker.js +257 -247
- package/dist/worker.js.map +1 -1
- package/package.json +4 -3
- package/src/index.ts +16 -2
- package/src/ipc/proc_pool.ts +25 -13
- package/src/llm/chat_context.ts +147 -0
- package/src/llm/function_context.test.ts +248 -0
- package/src/llm/function_context.ts +77 -18
- package/src/llm/index.ts +21 -2
- package/src/llm/llm.ts +102 -0
- package/src/multimodal/multimodal_agent.ts +6 -2
- package/src/pipeline/agent_output.ts +185 -0
- package/src/pipeline/agent_playout.ts +187 -0
- package/src/pipeline/human_input.ts +166 -0
- package/src/pipeline/index.ts +15 -0
- package/src/pipeline/pipeline_agent.ts +917 -0
- package/src/pipeline/speech_handle.ts +136 -0
- package/src/stt/index.ts +8 -2
- package/src/stt/stt.ts +98 -31
- package/src/tokenize/basic/basic.ts +73 -0
- package/src/tokenize/basic/hyphenator.ts +436 -0
- package/src/tokenize/basic/index.ts +5 -0
- package/src/tokenize/basic/paragraph.ts +43 -0
- package/src/tokenize/basic/sentence.ts +69 -0
- package/src/tokenize/basic/word.ts +27 -0
- package/src/tokenize/index.ts +16 -0
- package/src/tokenize/token_stream.ts +163 -0
- package/src/tokenize/tokenizer.ts +152 -0
- package/src/tts/index.ts +1 -20
- package/src/tts/tts.ts +110 -57
- package/src/utils.ts +95 -25
- package/src/vad.ts +86 -45
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/stt/stream_adapter.d.ts +0 -19
- package/dist/stt/stream_adapter.d.ts.map +0 -1
- package/dist/stt/stream_adapter.js +0 -96
- package/dist/stt/stream_adapter.js.map +0 -1
- package/dist/tokenize.d.ts +0 -15
- package/dist/tokenize.d.ts.map +0 -1
- package/dist/tokenize.js +0 -12
- package/dist/tokenize.js.map +0 -1
- package/dist/tts/stream_adapter.d.ts +0 -19
- package/dist/tts/stream_adapter.d.ts.map +0 -1
- package/dist/tts/stream_adapter.js +0 -111
- package/dist/tts/stream_adapter.js.map +0 -1
- package/src/stt/stream_adapter.ts +0 -104
- package/src/tokenize.ts +0 -22
- package/src/tts/stream_adapter.ts +0 -93
package/dist/utils.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
var
|
|
2
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
-
};
|
|
12
|
-
var _Queue_limit, _Queue_events, _Future_await, _Future_resolvePromise, _Future_rejectPromise, _Future_done, _CancellablePromise_promise, _CancellablePromise_cancelFn, _CancellablePromise_isCancelled, _CancellablePromise_error;
|
|
1
|
+
var _a;
|
|
13
2
|
import { AudioFrame, TrackSource } from '@livekit/rtc-node';
|
|
14
3
|
import { EventEmitter, once } from 'node:events';
|
|
15
4
|
/**
|
|
@@ -45,9 +34,8 @@ export const mergeFrames = (buffer) => {
|
|
|
45
34
|
return buffer;
|
|
46
35
|
};
|
|
47
36
|
export const findMicroTrackId = (room, identity) => {
|
|
48
|
-
var _a;
|
|
49
37
|
let p = room.remoteParticipants.get(identity);
|
|
50
|
-
if (identity ===
|
|
38
|
+
if (identity === room.localParticipant?.identity) {
|
|
51
39
|
p = room.localParticipant;
|
|
52
40
|
}
|
|
53
41
|
if (!p) {
|
|
@@ -68,96 +56,94 @@ export const findMicroTrackId = (room, identity) => {
|
|
|
68
56
|
};
|
|
69
57
|
/** @internal */
|
|
70
58
|
export class Queue {
|
|
59
|
+
/** @internal */
|
|
60
|
+
items = [];
|
|
61
|
+
#limit;
|
|
62
|
+
#events = new EventEmitter();
|
|
71
63
|
constructor(limit) {
|
|
72
|
-
|
|
73
|
-
this.items = [];
|
|
74
|
-
_Queue_limit.set(this, void 0);
|
|
75
|
-
_Queue_events.set(this, new EventEmitter());
|
|
76
|
-
__classPrivateFieldSet(this, _Queue_limit, limit, "f");
|
|
64
|
+
this.#limit = limit;
|
|
77
65
|
}
|
|
78
66
|
async get() {
|
|
79
67
|
if (this.items.length === 0) {
|
|
80
|
-
await once(
|
|
68
|
+
await once(this.#events, 'put');
|
|
81
69
|
}
|
|
82
70
|
const item = this.items.shift();
|
|
83
|
-
|
|
71
|
+
this.#events.emit('get');
|
|
84
72
|
return item;
|
|
85
73
|
}
|
|
86
74
|
async put(item) {
|
|
87
|
-
if (
|
|
88
|
-
await once(
|
|
75
|
+
if (this.#limit && this.items.length >= this.#limit) {
|
|
76
|
+
await once(this.#events, 'get');
|
|
89
77
|
}
|
|
90
78
|
this.items.push(item);
|
|
91
|
-
|
|
79
|
+
this.#events.emit('put');
|
|
92
80
|
}
|
|
93
81
|
}
|
|
94
|
-
_Queue_limit = new WeakMap(), _Queue_events = new WeakMap();
|
|
95
82
|
/** @internal */
|
|
96
83
|
export class Future {
|
|
84
|
+
#await;
|
|
85
|
+
#resolvePromise;
|
|
86
|
+
#rejectPromise;
|
|
87
|
+
#done = false;
|
|
97
88
|
constructor() {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
__classPrivateFieldSet(this, _Future_await, new Promise((resolve, reject) => {
|
|
103
|
-
__classPrivateFieldSet(this, _Future_resolvePromise, resolve, "f");
|
|
104
|
-
__classPrivateFieldSet(this, _Future_rejectPromise, reject, "f");
|
|
105
|
-
}), "f");
|
|
89
|
+
this.#await = new Promise((resolve, reject) => {
|
|
90
|
+
this.#resolvePromise = resolve;
|
|
91
|
+
this.#rejectPromise = reject;
|
|
92
|
+
});
|
|
106
93
|
}
|
|
107
94
|
get await() {
|
|
108
|
-
return
|
|
95
|
+
return this.#await;
|
|
109
96
|
}
|
|
110
97
|
get done() {
|
|
111
|
-
return
|
|
98
|
+
return this.#done;
|
|
112
99
|
}
|
|
113
100
|
resolve() {
|
|
114
|
-
|
|
115
|
-
|
|
101
|
+
this.#done = true;
|
|
102
|
+
this.#resolvePromise();
|
|
116
103
|
}
|
|
117
104
|
reject(error) {
|
|
118
|
-
|
|
119
|
-
|
|
105
|
+
this.#done = true;
|
|
106
|
+
this.#rejectPromise(error);
|
|
120
107
|
}
|
|
121
108
|
}
|
|
122
|
-
_Future_await = new WeakMap(), _Future_resolvePromise = new WeakMap(), _Future_rejectPromise = new WeakMap(), _Future_done = new WeakMap();
|
|
123
109
|
/** @internal */
|
|
124
110
|
export class CancellablePromise {
|
|
111
|
+
#promise;
|
|
112
|
+
#cancelFn;
|
|
113
|
+
#isCancelled = false;
|
|
114
|
+
#error = null;
|
|
125
115
|
constructor(executor) {
|
|
126
|
-
_CancellablePromise_promise.set(this, void 0);
|
|
127
|
-
_CancellablePromise_cancelFn.set(this, void 0);
|
|
128
|
-
_CancellablePromise_isCancelled.set(this, false);
|
|
129
|
-
_CancellablePromise_error.set(this, null);
|
|
130
116
|
let cancel;
|
|
131
|
-
|
|
117
|
+
this.#promise = new Promise((resolve, reject) => {
|
|
132
118
|
executor(resolve, (reason) => {
|
|
133
|
-
|
|
119
|
+
this.#error = reason instanceof Error ? reason : new Error(String(reason));
|
|
134
120
|
reject(reason);
|
|
135
121
|
}, (cancelFn) => {
|
|
136
122
|
cancel = () => {
|
|
137
|
-
|
|
123
|
+
this.#isCancelled = true;
|
|
138
124
|
cancelFn();
|
|
139
125
|
};
|
|
140
126
|
});
|
|
141
|
-
})
|
|
142
|
-
|
|
127
|
+
});
|
|
128
|
+
this.#cancelFn = cancel;
|
|
143
129
|
}
|
|
144
130
|
get isCancelled() {
|
|
145
|
-
return
|
|
131
|
+
return this.#isCancelled;
|
|
146
132
|
}
|
|
147
133
|
get error() {
|
|
148
|
-
return
|
|
134
|
+
return this.#error;
|
|
149
135
|
}
|
|
150
136
|
then(onfulfilled, onrejected) {
|
|
151
|
-
return
|
|
137
|
+
return this.#promise.then(onfulfilled, onrejected);
|
|
152
138
|
}
|
|
153
139
|
catch(onrejected) {
|
|
154
|
-
return
|
|
140
|
+
return this.#promise.catch(onrejected);
|
|
155
141
|
}
|
|
156
142
|
finally(onfinally) {
|
|
157
|
-
return
|
|
143
|
+
return this.#promise.finally(onfinally);
|
|
158
144
|
}
|
|
159
145
|
cancel() {
|
|
160
|
-
|
|
146
|
+
this.#cancelFn();
|
|
161
147
|
}
|
|
162
148
|
static from(promise) {
|
|
163
149
|
return new CancellablePromise((resolve, reject) => {
|
|
@@ -165,7 +151,6 @@ export class CancellablePromise {
|
|
|
165
151
|
});
|
|
166
152
|
}
|
|
167
153
|
}
|
|
168
|
-
_CancellablePromise_promise = new WeakMap(), _CancellablePromise_cancelFn = new WeakMap(), _CancellablePromise_isCancelled = new WeakMap(), _CancellablePromise_error = new WeakMap();
|
|
169
154
|
/** @internal */
|
|
170
155
|
export async function gracefullyCancel(promise) {
|
|
171
156
|
if (!promise.isCancelled) {
|
|
@@ -180,34 +165,93 @@ export async function gracefullyCancel(promise) {
|
|
|
180
165
|
}
|
|
181
166
|
/** @internal */
|
|
182
167
|
export class AsyncIterableQueue {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
168
|
+
static CLOSE_SENTINEL = Symbol('CLOSE_SENTINEL');
|
|
169
|
+
#queue = new Queue();
|
|
170
|
+
#closed = false;
|
|
171
|
+
get closed() {
|
|
172
|
+
return this.#closed;
|
|
186
173
|
}
|
|
187
174
|
put(item) {
|
|
188
|
-
if (this
|
|
175
|
+
if (this.#closed) {
|
|
189
176
|
throw new Error('Queue is closed');
|
|
190
177
|
}
|
|
191
|
-
this
|
|
178
|
+
this.#queue.put(item);
|
|
192
179
|
}
|
|
193
180
|
close() {
|
|
194
|
-
this
|
|
195
|
-
this
|
|
181
|
+
this.#closed = true;
|
|
182
|
+
this.#queue.put(_a.CLOSE_SENTINEL);
|
|
183
|
+
}
|
|
184
|
+
async next() {
|
|
185
|
+
if (this.#closed && this.#queue.items.length === 0) {
|
|
186
|
+
return { value: undefined, done: true };
|
|
187
|
+
}
|
|
188
|
+
const item = await this.#queue.get();
|
|
189
|
+
if (item === _a.CLOSE_SENTINEL && this.#closed) {
|
|
190
|
+
return { value: undefined, done: true };
|
|
191
|
+
}
|
|
192
|
+
return { value: item, done: false };
|
|
196
193
|
}
|
|
197
194
|
[Symbol.asyncIterator]() {
|
|
198
|
-
return
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
195
|
+
return this;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
_a = AsyncIterableQueue;
|
|
199
|
+
/** @internal */
|
|
200
|
+
export class ExpFilter {
|
|
201
|
+
#alpha;
|
|
202
|
+
#max;
|
|
203
|
+
#filtered = undefined;
|
|
204
|
+
constructor(alpha, max) {
|
|
205
|
+
this.#alpha = alpha;
|
|
206
|
+
this.#max = max;
|
|
207
|
+
}
|
|
208
|
+
reset(alpha) {
|
|
209
|
+
if (alpha) {
|
|
210
|
+
this.#alpha = alpha;
|
|
211
|
+
}
|
|
212
|
+
this.#filtered = undefined;
|
|
213
|
+
}
|
|
214
|
+
apply(exp, sample) {
|
|
215
|
+
if (this.#filtered) {
|
|
216
|
+
const a = this.#alpha ** exp;
|
|
217
|
+
this.#filtered = a * this.#filtered + (1 - a) * sample;
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
this.#filtered = sample;
|
|
221
|
+
}
|
|
222
|
+
if (this.#max && this.#filtered > this.#max) {
|
|
223
|
+
this.#filtered = this.#max;
|
|
224
|
+
}
|
|
225
|
+
return this.#filtered;
|
|
226
|
+
}
|
|
227
|
+
get filtered() {
|
|
228
|
+
return this.#filtered;
|
|
229
|
+
}
|
|
230
|
+
set alpha(alpha) {
|
|
231
|
+
this.#alpha = alpha;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/** @internal */
|
|
235
|
+
export class AudioEnergyFilter {
|
|
236
|
+
#cooldownSeconds;
|
|
237
|
+
#cooldown;
|
|
238
|
+
constructor(cooldownSeconds = 1) {
|
|
239
|
+
this.#cooldownSeconds = cooldownSeconds;
|
|
240
|
+
this.#cooldown = cooldownSeconds;
|
|
241
|
+
}
|
|
242
|
+
pushFrame(frame) {
|
|
243
|
+
const arr = Float32Array.from(frame.data, (x) => x / 32768);
|
|
244
|
+
const rms = (arr.map((x) => x ** 2).reduce((acc, x) => acc + x) / arr.length) ** 0.5;
|
|
245
|
+
if (rms > 0.004) {
|
|
246
|
+
this.#cooldown = this.#cooldownSeconds;
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
const durationSeconds = frame.samplesPerChannel / frame.sampleRate;
|
|
250
|
+
this.#cooldown -= durationSeconds;
|
|
251
|
+
if (this.#cooldown > 0) {
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
return false;
|
|
210
255
|
}
|
|
211
256
|
}
|
|
212
|
-
AsyncIterableQueue.QUEUE_END_MARKER = Symbol('QUEUE_END_MARKER');
|
|
213
257
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/vad.d.ts
CHANGED
|
@@ -1,57 +1,61 @@
|
|
|
1
1
|
import type { AudioFrame } from '@livekit/rtc-node';
|
|
2
|
+
import { AsyncIterableQueue } from './utils.js';
|
|
2
3
|
export declare enum VADEventType {
|
|
3
|
-
START_OF_SPEECH =
|
|
4
|
-
|
|
5
|
-
END_OF_SPEECH =
|
|
4
|
+
START_OF_SPEECH = 0,
|
|
5
|
+
INFERENCE_DONE = 1,
|
|
6
|
+
END_OF_SPEECH = 2
|
|
6
7
|
}
|
|
7
8
|
export interface VADEvent {
|
|
9
|
+
/** Type of the VAD event (e.g., start of speech, end of speech, inference done). */
|
|
8
10
|
type: VADEventType;
|
|
9
11
|
/**
|
|
10
|
-
* Index of the
|
|
12
|
+
* Index of the audio sample where the event occurred, relative to the inference sample rate.
|
|
11
13
|
*/
|
|
12
14
|
samplesIndex: number;
|
|
15
|
+
/** Timestamp when the event was fired. */
|
|
16
|
+
timestamp: number;
|
|
17
|
+
/** Duration of the detected speech segment in seconds. */
|
|
18
|
+
speechDuration: number;
|
|
19
|
+
/** Duration of the silence segment preceding or following the speech, in seconds. */
|
|
20
|
+
silenceDuration: number;
|
|
13
21
|
/**
|
|
14
|
-
*
|
|
22
|
+
* List of audio frames associated with the speech.
|
|
23
|
+
*
|
|
24
|
+
* @remarks
|
|
25
|
+
* - For `start_of_speech` events, this contains the audio chunks that triggered the detection.
|
|
26
|
+
* - For `inference_done` events, this contains the audio chunks that were processed.
|
|
27
|
+
* - For `end_of_speech` events, this contains the complete user speech.
|
|
15
28
|
*/
|
|
16
|
-
|
|
17
|
-
speech
|
|
29
|
+
frames: AudioFrame[];
|
|
30
|
+
/** Probability that speech is present (only for `INFERENCE_DONE` events). */
|
|
31
|
+
probability: number;
|
|
32
|
+
/** Time taken to perform the inference, in seconds (only for `INFERENCE_DONE` events). */
|
|
33
|
+
inferenceDuration: number;
|
|
34
|
+
/** Indicates whether speech was detected in the frames. */
|
|
35
|
+
speaking: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface VADCapabilities {
|
|
38
|
+
updateInterval: number;
|
|
18
39
|
}
|
|
19
40
|
export declare abstract class VAD {
|
|
41
|
+
#private;
|
|
42
|
+
constructor(capabilities: VADCapabilities);
|
|
43
|
+
get capabilities(): VADCapabilities;
|
|
20
44
|
/**
|
|
21
45
|
* Returns a {@link VADStream} that can be used to push audio frames and receive VAD events.
|
|
22
|
-
*
|
|
23
|
-
* @param options
|
|
24
46
|
*/
|
|
25
|
-
abstract stream(
|
|
26
|
-
/**
|
|
27
|
-
* Minimum duration of speech required to trigger a {@link VADEventType.START_OF_SPEECH} event
|
|
28
|
-
*/
|
|
29
|
-
minSpeakingDuration: number;
|
|
30
|
-
/**
|
|
31
|
-
* Milliseconds to wait before separating speech chunk.
|
|
32
|
-
* Not always precise, generally rounded to the nearest 40ms depending on VAD implementation
|
|
33
|
-
*/
|
|
34
|
-
minSilenceDuration: number;
|
|
35
|
-
/**
|
|
36
|
-
* Number of frames to pad the start and end of speech with
|
|
37
|
-
*/
|
|
38
|
-
paddingDuration: number;
|
|
39
|
-
/**
|
|
40
|
-
* Sample rate of inference/processing
|
|
41
|
-
*/
|
|
42
|
-
sampleRate: number;
|
|
43
|
-
/**
|
|
44
|
-
* Number of seconds the buffer may keep until {@link VADEventType.END_OF_SPEECH} is triggered.
|
|
45
|
-
* It is recommended to set this to a positive value, as zero may OOM if the user doesn't stop
|
|
46
|
-
* speaking.
|
|
47
|
-
*/
|
|
48
|
-
maxBufferedSpeech: number;
|
|
49
|
-
}): VADStream;
|
|
47
|
+
abstract stream(): VADStream;
|
|
50
48
|
}
|
|
51
|
-
export declare abstract class VADStream implements
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
export declare abstract class VADStream implements AsyncIterableIterator<VADEvent> {
|
|
50
|
+
protected static readonly FLUSH_SENTINEL: unique symbol;
|
|
51
|
+
protected input: AsyncIterableQueue<AudioFrame | typeof VADStream.FLUSH_SENTINEL>;
|
|
52
|
+
protected queue: AsyncIterableQueue<VADEvent>;
|
|
53
|
+
protected closed: boolean;
|
|
54
|
+
pushFrame(frame: AudioFrame): void;
|
|
55
|
+
flush(): void;
|
|
56
|
+
endInput(): void;
|
|
57
|
+
next(): Promise<IteratorResult<VADEvent>>;
|
|
58
|
+
close(): void;
|
|
59
|
+
[Symbol.asyncIterator](): VADStream;
|
|
56
60
|
}
|
|
57
61
|
//# sourceMappingURL=vad.d.ts.map
|
package/dist/vad.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vad.d.ts","sourceRoot":"","sources":["../src/vad.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"vad.d.ts","sourceRoot":"","sources":["../src/vad.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,oBAAY,YAAY;IACtB,eAAe,IAAA;IACf,cAAc,IAAA;IACd,aAAa,IAAA;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,oFAAoF;IACpF,IAAI,EAAE,YAAY,CAAC;IACnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,8BAAsB,GAAG;;gBAEX,YAAY,EAAE,eAAe;IAIzC,IAAI,YAAY,IAAI,eAAe,CAElC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAM,IAAI,SAAS;CAC7B;AAED,8BAAsB,SAAU,YAAW,qBAAqB,CAAC,QAAQ,CAAC;IACxE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAA4B;IACpE,SAAS,CAAC,KAAK,mEAA0E;IACzF,SAAS,CAAC,KAAK,+BAAsC;IACrD,SAAS,CAAC,MAAM,UAAS;IAEzB,SAAS,CAAC,KAAK,EAAE,UAAU;IAU3B,KAAK;IAUL,QAAQ;IAUR,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAIzC,KAAK;IAML,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,SAAS;CAGpC"}
|
package/dist/vad.js
CHANGED
|
@@ -1,13 +1,60 @@
|
|
|
1
|
+
import { AsyncIterableQueue } from './utils.js';
|
|
1
2
|
export var VADEventType;
|
|
2
3
|
(function (VADEventType) {
|
|
3
|
-
VADEventType[VADEventType["START_OF_SPEECH"] =
|
|
4
|
-
VADEventType[VADEventType["
|
|
5
|
-
VADEventType[VADEventType["END_OF_SPEECH"] =
|
|
4
|
+
VADEventType[VADEventType["START_OF_SPEECH"] = 0] = "START_OF_SPEECH";
|
|
5
|
+
VADEventType[VADEventType["INFERENCE_DONE"] = 1] = "INFERENCE_DONE";
|
|
6
|
+
VADEventType[VADEventType["END_OF_SPEECH"] = 2] = "END_OF_SPEECH";
|
|
6
7
|
})(VADEventType || (VADEventType = {}));
|
|
7
8
|
export class VAD {
|
|
9
|
+
#capabilities;
|
|
10
|
+
constructor(capabilities) {
|
|
11
|
+
this.#capabilities = capabilities;
|
|
12
|
+
}
|
|
13
|
+
get capabilities() {
|
|
14
|
+
return this.#capabilities;
|
|
15
|
+
}
|
|
8
16
|
}
|
|
9
17
|
export class VADStream {
|
|
10
|
-
|
|
18
|
+
static FLUSH_SENTINEL = Symbol('FLUSH_SENTINEL');
|
|
19
|
+
input = new AsyncIterableQueue();
|
|
20
|
+
queue = new AsyncIterableQueue();
|
|
21
|
+
closed = false;
|
|
22
|
+
pushFrame(frame) {
|
|
23
|
+
if (this.input.closed) {
|
|
24
|
+
throw new Error('Input is closed');
|
|
25
|
+
}
|
|
26
|
+
if (this.closed) {
|
|
27
|
+
throw new Error('Stream is closed');
|
|
28
|
+
}
|
|
29
|
+
this.input.put(frame);
|
|
30
|
+
}
|
|
31
|
+
flush() {
|
|
32
|
+
if (this.input.closed) {
|
|
33
|
+
throw new Error('Input is closed');
|
|
34
|
+
}
|
|
35
|
+
if (this.closed) {
|
|
36
|
+
throw new Error('Stream is closed');
|
|
37
|
+
}
|
|
38
|
+
this.input.put(VADStream.FLUSH_SENTINEL);
|
|
39
|
+
}
|
|
40
|
+
endInput() {
|
|
41
|
+
if (this.input.closed) {
|
|
42
|
+
throw new Error('Input is closed');
|
|
43
|
+
}
|
|
44
|
+
if (this.closed) {
|
|
45
|
+
throw new Error('Stream is closed');
|
|
46
|
+
}
|
|
47
|
+
this.input.close();
|
|
48
|
+
}
|
|
49
|
+
next() {
|
|
50
|
+
return this.queue.next();
|
|
51
|
+
}
|
|
52
|
+
close() {
|
|
53
|
+
this.input.close();
|
|
54
|
+
this.queue.close();
|
|
55
|
+
this.closed = true;
|
|
56
|
+
}
|
|
57
|
+
[Symbol.asyncIterator]() {
|
|
11
58
|
return this;
|
|
12
59
|
}
|
|
13
60
|
}
|
package/dist/vad.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vad.js","sourceRoot":"","sources":["../src/vad.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vad.js","sourceRoot":"","sources":["../src/vad.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,qEAAe,CAAA;IACf,mEAAc,CAAA;IACd,iEAAa,CAAA;AACf,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAoCD,MAAM,OAAgB,GAAG;IACvB,aAAa,CAAkB;IAC/B,YAAY,YAA6B;QACvC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CAMF;AAED,MAAM,OAAgB,SAAS;IACnB,MAAM,CAAU,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1D,KAAK,GAAG,IAAI,kBAAkB,EAAgD,CAAC;IAC/E,KAAK,GAAG,IAAI,kBAAkB,EAAY,CAAC;IAC3C,MAAM,GAAG,KAAK,CAAC;IAEzB,SAAS,CAAC,KAAiB;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC"}
|
package/dist/worker.d.ts
CHANGED