@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/tts/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
import { ChunkedStream, SynthesisEvent, SynthesisEventType, SynthesizeStream, TTS, } from './tts.js';
|
|
6
|
-
export { TTS, SynthesisEvent, SynthesisEventType, SynthesizeStream, StreamAdapter, StreamAdapterWrapper, ChunkedStream, };
|
|
4
|
+
export { TTS, SynthesizeStream } from './tts.js';
|
|
7
5
|
//# sourceMappingURL=index.js.map
|
package/dist/tts/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tts/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tts/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAA+C,GAAG,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/tts/tts.d.ts
CHANGED
|
@@ -1,47 +1,76 @@
|
|
|
1
1
|
import type { AudioFrame } from '@livekit/rtc-node';
|
|
2
|
+
import { AsyncIterableQueue } from '../utils.js';
|
|
3
|
+
/** SynthesizedAudio is a packet of speech synthesis as returned by the TTS. */
|
|
2
4
|
export interface SynthesizedAudio {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
/** Request ID (one segment could be made up of multiple requests) */
|
|
6
|
+
requestId: string;
|
|
7
|
+
/** Segment ID, each segment is separated by a flush */
|
|
8
|
+
segmentId: string;
|
|
9
|
+
/** Synthesized audio frame */
|
|
10
|
+
frame: AudioFrame;
|
|
11
|
+
/** Current segment of the synthesized audio */
|
|
12
|
+
deltaText?: string;
|
|
5
13
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
AUDIO = 1,
|
|
16
|
-
/**
|
|
17
|
-
* Indicate the end of synthesis. Does not necessarily mean stream is done.
|
|
18
|
-
*/
|
|
19
|
-
FINISHED = 2
|
|
20
|
-
}
|
|
21
|
-
export declare class SynthesisEvent {
|
|
22
|
-
type: SynthesisEventType;
|
|
23
|
-
audio?: SynthesizedAudio;
|
|
24
|
-
constructor(type: SynthesisEventType, audio?: SynthesizedAudio | undefined);
|
|
25
|
-
}
|
|
26
|
-
export declare abstract class SynthesizeStream implements IterableIterator<SynthesisEvent> {
|
|
27
|
-
abstract pushText(token?: string): void;
|
|
28
|
-
markSegmentEnd(): void;
|
|
29
|
-
abstract close(wait: boolean): Promise<void>;
|
|
30
|
-
abstract next(): IteratorResult<SynthesisEvent>;
|
|
31
|
-
[Symbol.iterator](): SynthesizeStream;
|
|
14
|
+
/**
|
|
15
|
+
* Describes the capabilities of the TTS provider.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* At present, only `streaming` is supplied to this interface, and the framework only supports
|
|
19
|
+
* providers that do have a streaming endpoint.
|
|
20
|
+
*/
|
|
21
|
+
export interface TTSCapabilities {
|
|
22
|
+
streaming: boolean;
|
|
32
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* An instance of a text-to-speech adapter.
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* This class is abstract, and as such cannot be used directly. Instead, use a provider plugin that
|
|
29
|
+
* exports its own child TTS class, which inherits this class's methods.
|
|
30
|
+
*/
|
|
33
31
|
export declare abstract class TTS {
|
|
34
32
|
#private;
|
|
35
|
-
constructor(
|
|
36
|
-
|
|
33
|
+
constructor(sampleRate: number, numChannels: number, capabilities: TTSCapabilities);
|
|
34
|
+
/** Returns this TTS's capabilities */
|
|
35
|
+
get capabilities(): TTSCapabilities;
|
|
36
|
+
/** Returns the sample rate of audio frames returned by this TTS */
|
|
37
|
+
get sampleRate(): number;
|
|
38
|
+
/** Returns the channel count of audio frames returned by this TTS */
|
|
39
|
+
get numChannels(): number;
|
|
40
|
+
/**
|
|
41
|
+
* Returns a {@link SynthesizeStream} that can be used to push text and receive audio data
|
|
42
|
+
*/
|
|
37
43
|
abstract stream(): SynthesizeStream;
|
|
38
|
-
get streamingSupported(): boolean;
|
|
39
44
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
/**
|
|
46
|
+
* An instance of a text-to-speech stream, as an asynchronous iterable iterator.
|
|
47
|
+
*
|
|
48
|
+
* @example Looping through frames
|
|
49
|
+
* ```ts
|
|
50
|
+
* for await (const event of stream) {
|
|
51
|
+
* await source.captureFrame(event.frame);
|
|
52
|
+
* }
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @remarks
|
|
56
|
+
* This class is abstract, and as such cannot be used directly. Instead, use a provider plugin that
|
|
57
|
+
* exports its own child SynthesizeStream class, which inherits this class's methods.
|
|
58
|
+
*/
|
|
59
|
+
export declare abstract class SynthesizeStream implements AsyncIterableIterator<SynthesizedAudio | typeof SynthesizeStream.END_OF_STREAM> {
|
|
60
|
+
protected static readonly FLUSH_SENTINEL: unique symbol;
|
|
61
|
+
static readonly END_OF_STREAM: unique symbol;
|
|
62
|
+
protected input: AsyncIterableQueue<string | typeof SynthesizeStream.FLUSH_SENTINEL>;
|
|
63
|
+
protected queue: AsyncIterableQueue<SynthesizedAudio | typeof SynthesizeStream.END_OF_STREAM>;
|
|
64
|
+
protected closed: boolean;
|
|
65
|
+
/** Push a string of text to the TTS */
|
|
66
|
+
pushText(text: string): void;
|
|
67
|
+
/** Flush the TTS, causing it to process all pending text */
|
|
68
|
+
flush(): void;
|
|
69
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
70
|
+
endInput(): void;
|
|
71
|
+
next(): Promise<IteratorResult<SynthesizedAudio | typeof SynthesizeStream.END_OF_STREAM>>;
|
|
72
|
+
/** Close both the input and output of the TTS stream */
|
|
73
|
+
close(): void;
|
|
74
|
+
[Symbol.asyncIterator](): SynthesizeStream;
|
|
46
75
|
}
|
|
47
76
|
//# sourceMappingURL=tts.d.ts.map
|
package/dist/tts/tts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../src/tts/tts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../src/tts/tts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,8BAAsB,GAAG;;gBAKX,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe;IAMlF,sCAAsC;IACtC,IAAI,YAAY,IAAI,eAAe,CAElC;IAED,mEAAmE;IACnE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,qEAAqE;IACrE,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,QAAQ,CAAC,MAAM,IAAI,gBAAgB;CACpC;AAED;;;;;;;;;;;;;GAaG;AACH,8BAAsB,gBACpB,YAAW,qBAAqB,CAAC,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,aAAa,CAAC;IAE1F,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAA4B;IACpE,MAAM,CAAC,QAAQ,CAAC,aAAa,gBAA2B;IACxD,SAAS,CAAC,KAAK,sEAA6E;IAC5F,SAAS,CAAC,KAAK,+EAEX;IACJ,SAAS,CAAC,MAAM,UAAS;IAEzB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAUrB,4DAA4D;IAC5D,KAAK;IAUL,2DAA2D;IAC3D,QAAQ;IAUR,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAIzF,wDAAwD;IACxD,KAAK;IAML,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,gBAAgB;CAG3C"}
|
package/dist/tts/tts.js
CHANGED
|
@@ -1,86 +1,91 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
18
|
-
};
|
|
19
|
-
var _TTS_streamingSupported;
|
|
20
|
-
import { mergeFrames } from '../utils.js';
|
|
21
|
-
export var SynthesisEventType;
|
|
22
|
-
(function (SynthesisEventType) {
|
|
23
|
-
/**
|
|
24
|
-
* Indicate the start of synthesis.
|
|
25
|
-
* Retriggered after FINISHED.
|
|
26
|
-
*/
|
|
27
|
-
SynthesisEventType[SynthesisEventType["STARTED"] = 0] = "STARTED";
|
|
28
|
-
/**
|
|
29
|
-
* Indicate that audio data is available.
|
|
30
|
-
*/
|
|
31
|
-
SynthesisEventType[SynthesisEventType["AUDIO"] = 1] = "AUDIO";
|
|
32
|
-
/**
|
|
33
|
-
* Indicate the end of synthesis. Does not necessarily mean stream is done.
|
|
34
|
-
*/
|
|
35
|
-
SynthesisEventType[SynthesisEventType["FINISHED"] = 2] = "FINISHED";
|
|
36
|
-
})(SynthesisEventType || (SynthesisEventType = {}));
|
|
37
|
-
export class SynthesisEvent {
|
|
38
|
-
constructor(type, audio = undefined) {
|
|
39
|
-
this.type = type;
|
|
40
|
-
this.audio = audio;
|
|
1
|
+
import { AsyncIterableQueue } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* An instance of a text-to-speech adapter.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* This class is abstract, and as such cannot be used directly. Instead, use a provider plugin that
|
|
7
|
+
* exports its own child TTS class, which inherits this class's methods.
|
|
8
|
+
*/
|
|
9
|
+
export class TTS {
|
|
10
|
+
#capabilities;
|
|
11
|
+
#sampleRate;
|
|
12
|
+
#numChannels;
|
|
13
|
+
constructor(sampleRate, numChannels, capabilities) {
|
|
14
|
+
this.#capabilities = capabilities;
|
|
15
|
+
this.#sampleRate = sampleRate;
|
|
16
|
+
this.#numChannels = numChannels;
|
|
41
17
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
this.pushText(undefined);
|
|
18
|
+
/** Returns this TTS's capabilities */
|
|
19
|
+
get capabilities() {
|
|
20
|
+
return this.#capabilities;
|
|
46
21
|
}
|
|
47
|
-
|
|
48
|
-
|
|
22
|
+
/** Returns the sample rate of audio frames returned by this TTS */
|
|
23
|
+
get sampleRate() {
|
|
24
|
+
return this.#sampleRate;
|
|
25
|
+
}
|
|
26
|
+
/** Returns the channel count of audio frames returned by this TTS */
|
|
27
|
+
get numChannels() {
|
|
28
|
+
return this.#numChannels;
|
|
49
29
|
}
|
|
50
30
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
31
|
+
/**
|
|
32
|
+
* An instance of a text-to-speech stream, as an asynchronous iterable iterator.
|
|
33
|
+
*
|
|
34
|
+
* @example Looping through frames
|
|
35
|
+
* ```ts
|
|
36
|
+
* for await (const event of stream) {
|
|
37
|
+
* await source.captureFrame(event.frame);
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* This class is abstract, and as such cannot be used directly. Instead, use a provider plugin that
|
|
43
|
+
* exports its own child SynthesizeStream class, which inherits this class's methods.
|
|
44
|
+
*/
|
|
45
|
+
export class SynthesizeStream {
|
|
46
|
+
static FLUSH_SENTINEL = Symbol('FLUSH_SENTINEL');
|
|
47
|
+
static END_OF_STREAM = Symbol('END_OF_STREAM');
|
|
48
|
+
input = new AsyncIterableQueue();
|
|
49
|
+
queue = new AsyncIterableQueue();
|
|
50
|
+
closed = false;
|
|
51
|
+
/** Push a string of text to the TTS */
|
|
52
|
+
pushText(text) {
|
|
53
|
+
if (this.input.closed) {
|
|
54
|
+
throw new Error('Input is closed');
|
|
55
|
+
}
|
|
56
|
+
if (this.closed) {
|
|
57
|
+
throw new Error('Stream is closed');
|
|
58
|
+
}
|
|
59
|
+
this.input.put(text);
|
|
55
60
|
}
|
|
56
|
-
|
|
57
|
-
|
|
61
|
+
/** Flush the TTS, causing it to process all pending text */
|
|
62
|
+
flush() {
|
|
63
|
+
if (this.input.closed) {
|
|
64
|
+
throw new Error('Input is closed');
|
|
65
|
+
}
|
|
66
|
+
if (this.closed) {
|
|
67
|
+
throw new Error('Stream is closed');
|
|
68
|
+
}
|
|
69
|
+
this.input.put(SynthesizeStream.FLUSH_SENTINEL);
|
|
58
70
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
var _a, e_1, _b, _c;
|
|
64
|
-
const frames = [];
|
|
65
|
-
try {
|
|
66
|
-
for (var _d = true, _e = __asyncValues(this), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
67
|
-
_c = _f.value;
|
|
68
|
-
_d = false;
|
|
69
|
-
const ev = _c;
|
|
70
|
-
frames.push(ev.data);
|
|
71
|
-
}
|
|
71
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
72
|
+
endInput() {
|
|
73
|
+
if (this.input.closed) {
|
|
74
|
+
throw new Error('Input is closed');
|
|
72
75
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
77
|
-
}
|
|
78
|
-
finally { if (e_1) throw e_1.error; }
|
|
76
|
+
if (this.closed) {
|
|
77
|
+
throw new Error('Stream is closed');
|
|
79
78
|
}
|
|
80
|
-
|
|
79
|
+
this.input.close();
|
|
81
80
|
}
|
|
82
|
-
|
|
83
|
-
return this;
|
|
81
|
+
next() {
|
|
82
|
+
return this.queue.next();
|
|
83
|
+
}
|
|
84
|
+
/** Close both the input and output of the TTS stream */
|
|
85
|
+
close() {
|
|
86
|
+
this.input.close();
|
|
87
|
+
this.queue.close();
|
|
88
|
+
this.closed = true;
|
|
84
89
|
}
|
|
85
90
|
[Symbol.asyncIterator]() {
|
|
86
91
|
return this;
|
package/dist/tts/tts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../src/tts/tts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../src/tts/tts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAyBjD;;;;;;GAMG;AACH,MAAM,OAAgB,GAAG;IACvB,aAAa,CAAkB;IAC/B,WAAW,CAAS;IACpB,YAAY,CAAS;IAErB,YAAY,UAAkB,EAAE,WAAmB,EAAE,YAA6B;QAChF,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED,sCAAsC;IACtC,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,mEAAmE;IACnE,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,qEAAqE;IACrE,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CAMF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAgB,gBAAgB;IAG1B,MAAM,CAAU,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACpE,MAAM,CAAU,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9C,KAAK,GAAG,IAAI,kBAAkB,EAAmD,CAAC;IAClF,KAAK,GAAG,IAAI,kBAAkB,EAErC,CAAC;IACM,MAAM,GAAG,KAAK,CAAC;IAEzB,uCAAuC;IACvC,QAAQ,CAAC,IAAY;QACnB,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,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,4DAA4D;IAC5D,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,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IAED,2DAA2D;IAC3D,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,wDAAwD;IACxD,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/utils.d.ts
CHANGED
|
@@ -45,13 +45,28 @@ export declare class CancellablePromise<T> {
|
|
|
45
45
|
/** @internal */
|
|
46
46
|
export declare function gracefullyCancel<T>(promise: CancellablePromise<T>): Promise<void>;
|
|
47
47
|
/** @internal */
|
|
48
|
-
export declare class AsyncIterableQueue<T> implements
|
|
49
|
-
private
|
|
50
|
-
private
|
|
51
|
-
|
|
52
|
-
constructor();
|
|
48
|
+
export declare class AsyncIterableQueue<T> implements AsyncIterableIterator<T> {
|
|
49
|
+
#private;
|
|
50
|
+
private static readonly CLOSE_SENTINEL;
|
|
51
|
+
get closed(): boolean;
|
|
53
52
|
put(item: T): void;
|
|
54
53
|
close(): void;
|
|
55
|
-
|
|
54
|
+
next(): Promise<IteratorResult<T>>;
|
|
55
|
+
[Symbol.asyncIterator](): AsyncIterableQueue<T>;
|
|
56
|
+
}
|
|
57
|
+
/** @internal */
|
|
58
|
+
export declare class ExpFilter {
|
|
59
|
+
#private;
|
|
60
|
+
constructor(alpha: number, max?: number);
|
|
61
|
+
reset(alpha?: number): void;
|
|
62
|
+
apply(exp: number, sample: number): number;
|
|
63
|
+
get filtered(): number | undefined;
|
|
64
|
+
set alpha(alpha: number);
|
|
65
|
+
}
|
|
66
|
+
/** @internal */
|
|
67
|
+
export declare class AudioEnergyFilter {
|
|
68
|
+
#private;
|
|
69
|
+
constructor(cooldownSeconds?: number);
|
|
70
|
+
pushFrame(frame: AudioFrame): boolean;
|
|
56
71
|
}
|
|
57
72
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,IAAI,EAEL,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAC;AAG5D,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC;AAEpD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,WAAY,WAAW,KAAG,UA6BjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,IAAI,YAAY,MAAM,KAAG,MAyB/D,CAAC;AAEF,gBAAgB;AAChB,qBAAa,KAAK,CAAC,CAAC;;IAClB,gBAAgB;IAChB,KAAK,EAAE,CAAC,EAAE,CAAM;gBAIJ,KAAK,CAAC,EAAE,MAAM;IAIpB,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IASjB,GAAG,CAAC,IAAI,EAAE,CAAC;CAOlB;AAED,gBAAgB;AAChB,qBAAa,MAAM;;;IAajB,IAAI,KAAK,kBAER;IAED,IAAI,IAAI,YAEP;IAED,OAAO;IAKP,MAAM,CAAC,KAAK,EAAE,KAAK;CAIpB;AAED,gBAAgB;AAChB,qBAAa,kBAAkB,CAAC,CAAC;;gBAO7B,QAAQ,EAAE,CACR,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,EAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,KACrC,IAAI;IAuBX,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAExB;IAED,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EACjC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EACjE,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAClE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAI/B,KAAK,CAAC,OAAO,GAAG,KAAK,EACnB,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,GAChE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC;IAIvB,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpD,MAAM,IAAI,IAAI;IAId,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;CAK3D;AAED,gBAAgB;AAChB,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASvF;AAED,gBAAgB;AAChB,qBAAa,kBAAkB,CAAC,CAAC,CAAE,YAAW,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|