@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
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as basic from './basic/index.js';
|
|
2
|
+
export { type TokenData, SentenceTokenizer, SentenceStream, WordTokenizer, WordStream, } from './tokenizer.js';
|
|
3
|
+
export { BufferedSentenceStream, BufferedTokenStream, BufferedWordStream } from './token_stream.js';
|
|
4
|
+
export { basic };
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tokenize/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EACL,KAAK,SAAS,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEpG,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import * as basic from './basic/index.js';
|
|
5
|
+
export { SentenceTokenizer, SentenceStream, WordTokenizer, WordStream, } from './tokenizer.js';
|
|
6
|
+
export { BufferedSentenceStream, BufferedTokenStream, BufferedWordStream } from './token_stream.js';
|
|
7
|
+
export { basic };
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tokenize/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAEL,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEpG,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AsyncIterableQueue } from '../utils.js';
|
|
2
|
+
import type { TokenData } from './tokenizer.js';
|
|
3
|
+
import { SentenceStream, WordStream } from './tokenizer.js';
|
|
4
|
+
type TokenizeFunc = (x: string) => string[] | [string, number, number][];
|
|
5
|
+
export declare class BufferedTokenStream implements AsyncIterableIterator<TokenData> {
|
|
6
|
+
#private;
|
|
7
|
+
protected queue: AsyncIterableQueue<TokenData>;
|
|
8
|
+
protected closed: boolean;
|
|
9
|
+
constructor(func: TokenizeFunc, minTokenLength: number, minContextLength: number);
|
|
10
|
+
/** Push a string of text into the token stream */
|
|
11
|
+
pushText(text: string): void;
|
|
12
|
+
/** Flush the stream, causing it to process all pending text */
|
|
13
|
+
flush(): void;
|
|
14
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
15
|
+
endInput(): void;
|
|
16
|
+
next(): Promise<IteratorResult<TokenData>>;
|
|
17
|
+
/** Close both the input and output of the token stream */
|
|
18
|
+
close(): void;
|
|
19
|
+
[Symbol.asyncIterator](): BufferedTokenStream;
|
|
20
|
+
}
|
|
21
|
+
export declare class BufferedSentenceStream extends SentenceStream {
|
|
22
|
+
#private;
|
|
23
|
+
constructor(func: TokenizeFunc, minTokenLength: number, minContextLength: number);
|
|
24
|
+
pushText(text: string): void;
|
|
25
|
+
close(): void;
|
|
26
|
+
next(): Promise<IteratorResult<TokenData>>;
|
|
27
|
+
}
|
|
28
|
+
export declare class BufferedWordStream extends WordStream {
|
|
29
|
+
#private;
|
|
30
|
+
constructor(func: TokenizeFunc, minTokenLength: number, minContextLength: number);
|
|
31
|
+
pushText(text: string): void;
|
|
32
|
+
close(): void;
|
|
33
|
+
next(): Promise<IteratorResult<TokenData>>;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=token_stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_stream.d.ts","sourceRoot":"","sources":["../../src/tokenize/token_stream.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5D,KAAK,YAAY,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AAEzE,qBAAa,mBAAoB,YAAW,qBAAqB,CAAC,SAAS,CAAC;;IAC1E,SAAS,CAAC,KAAK,gCAAuC;IACtD,SAAS,CAAC,MAAM,UAAS;gBAUb,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAQhF,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM;IAoCrB,+DAA+D;IAC/D,KAAK;IA4BL,2DAA2D;IAC3D,QAAQ;IAQR,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAI1C,0DAA0D;IAC1D,KAAK;IAKL,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,mBAAmB;CAG9C;AAED,qBAAa,sBAAuB,SAAQ,cAAc;;gBAG5C,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAKhF,QAAQ,CAAC,IAAI,EAAE,MAAM;IAIrB,KAAK;IAKL,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;CAG3C;AAED,qBAAa,kBAAmB,SAAQ,UAAU;;gBAGpC,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAKhF,QAAQ,CAAC,IAAI,EAAE,MAAM;IAIrB,KAAK;IAKL,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;CAG3C"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { randomUUID } from 'node:crypto';
|
|
5
|
+
import { AsyncIterableQueue } from '../utils.js';
|
|
6
|
+
import { SentenceStream, WordStream } from './tokenizer.js';
|
|
7
|
+
export class BufferedTokenStream {
|
|
8
|
+
queue = new AsyncIterableQueue();
|
|
9
|
+
closed = false;
|
|
10
|
+
#func;
|
|
11
|
+
#minTokenLength;
|
|
12
|
+
#minContextLength;
|
|
13
|
+
#bufTokens = [];
|
|
14
|
+
#inBuf = '';
|
|
15
|
+
#outBuf = '';
|
|
16
|
+
#currentSegmentId;
|
|
17
|
+
constructor(func, minTokenLength, minContextLength) {
|
|
18
|
+
this.#func = func;
|
|
19
|
+
this.#minTokenLength = minTokenLength;
|
|
20
|
+
this.#minContextLength = minContextLength;
|
|
21
|
+
this.#currentSegmentId = randomUUID();
|
|
22
|
+
}
|
|
23
|
+
/** Push a string of text into the token stream */
|
|
24
|
+
pushText(text) {
|
|
25
|
+
if (this.closed) {
|
|
26
|
+
throw new Error('Stream is closed');
|
|
27
|
+
}
|
|
28
|
+
this.#inBuf += text;
|
|
29
|
+
if (this.#inBuf.length < this.#minContextLength)
|
|
30
|
+
return;
|
|
31
|
+
while (true) {
|
|
32
|
+
const tokens = this.#func(this.#inBuf);
|
|
33
|
+
if (tokens.length === 0)
|
|
34
|
+
break;
|
|
35
|
+
if (this.#outBuf)
|
|
36
|
+
this.#outBuf += ' ';
|
|
37
|
+
const tok = tokens.shift();
|
|
38
|
+
let tokText = tok;
|
|
39
|
+
if (tok.length > 1 && typeof tok[1] === 'number') {
|
|
40
|
+
tokText = tok[0];
|
|
41
|
+
}
|
|
42
|
+
this.#outBuf += tokText;
|
|
43
|
+
if (this.#outBuf.length >= this.#minTokenLength) {
|
|
44
|
+
this.queue.put({ token: this.#outBuf, segmentId: this.#currentSegmentId });
|
|
45
|
+
this.#outBuf = '';
|
|
46
|
+
}
|
|
47
|
+
if (typeof tok !== 'string') {
|
|
48
|
+
this.#inBuf = this.#inBuf.slice(tok[2]);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.#inBuf = this.#inBuf
|
|
52
|
+
.slice(Math.max(0, this.#inBuf.indexOf(tok)) + tok.length)
|
|
53
|
+
.trimStart();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** Flush the stream, causing it to process all pending text */
|
|
58
|
+
flush() {
|
|
59
|
+
if (this.closed) {
|
|
60
|
+
throw new Error('Stream is closed');
|
|
61
|
+
}
|
|
62
|
+
if (this.#inBuf || this.#outBuf) {
|
|
63
|
+
const tokens = this.#func(this.#inBuf);
|
|
64
|
+
if (tokens) {
|
|
65
|
+
if (this.#outBuf)
|
|
66
|
+
this.#outBuf += ' ';
|
|
67
|
+
if (typeof tokens[0] !== 'string') {
|
|
68
|
+
this.#outBuf += tokens.map((tok) => tok[0]).join(' ');
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.#outBuf += tokens.join(' ');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (this.#outBuf) {
|
|
75
|
+
this.queue.put({ token: this.#outBuf, segmentId: this.#currentSegmentId });
|
|
76
|
+
}
|
|
77
|
+
this.#currentSegmentId = randomUUID();
|
|
78
|
+
}
|
|
79
|
+
this.#inBuf = '';
|
|
80
|
+
this.#outBuf = '';
|
|
81
|
+
}
|
|
82
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
83
|
+
endInput() {
|
|
84
|
+
if (this.closed) {
|
|
85
|
+
throw new Error('Stream is closed');
|
|
86
|
+
}
|
|
87
|
+
this.flush();
|
|
88
|
+
this.closed = true;
|
|
89
|
+
}
|
|
90
|
+
next() {
|
|
91
|
+
return this.queue.next();
|
|
92
|
+
}
|
|
93
|
+
/** Close both the input and output of the token stream */
|
|
94
|
+
close() {
|
|
95
|
+
this.queue.close();
|
|
96
|
+
this.closed = true;
|
|
97
|
+
}
|
|
98
|
+
[Symbol.asyncIterator]() {
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
export class BufferedSentenceStream extends SentenceStream {
|
|
103
|
+
#stream;
|
|
104
|
+
constructor(func, minTokenLength, minContextLength) {
|
|
105
|
+
super();
|
|
106
|
+
this.#stream = new BufferedTokenStream(func, minTokenLength, minContextLength);
|
|
107
|
+
}
|
|
108
|
+
pushText(text) {
|
|
109
|
+
this.#stream.pushText(text);
|
|
110
|
+
}
|
|
111
|
+
close() {
|
|
112
|
+
super.close();
|
|
113
|
+
this.#stream.close();
|
|
114
|
+
}
|
|
115
|
+
next() {
|
|
116
|
+
return this.#stream.next();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
export class BufferedWordStream extends WordStream {
|
|
120
|
+
#stream;
|
|
121
|
+
constructor(func, minTokenLength, minContextLength) {
|
|
122
|
+
super();
|
|
123
|
+
this.#stream = new BufferedTokenStream(func, minTokenLength, minContextLength);
|
|
124
|
+
}
|
|
125
|
+
pushText(text) {
|
|
126
|
+
this.#stream.pushText(text);
|
|
127
|
+
}
|
|
128
|
+
close() {
|
|
129
|
+
super.close();
|
|
130
|
+
this.#stream.close();
|
|
131
|
+
}
|
|
132
|
+
next() {
|
|
133
|
+
return this.#stream.next();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=token_stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_stream.js","sourceRoot":"","sources":["../../src/tokenize/token_stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { AsyncIterableQueue } from '../utils.js';
|
|
2
|
+
export declare const PUNCTUATIONS: string[];
|
|
3
|
+
export interface TokenData {
|
|
4
|
+
segmentId: string;
|
|
5
|
+
token: string;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class SentenceTokenizer {
|
|
8
|
+
abstract tokenize(text: string, language?: string): string[];
|
|
9
|
+
/**
|
|
10
|
+
* Returns a {@link SentenceStream} that can be used to push strings and receive smaller segments.
|
|
11
|
+
*/
|
|
12
|
+
abstract stream(): SentenceStream;
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class SentenceStream {
|
|
15
|
+
#private;
|
|
16
|
+
protected static readonly FLUSH_SENTINEL: unique symbol;
|
|
17
|
+
protected input: AsyncIterableQueue<string | typeof SentenceStream.FLUSH_SENTINEL>;
|
|
18
|
+
protected queue: AsyncIterableQueue<TokenData>;
|
|
19
|
+
get closed(): boolean;
|
|
20
|
+
/** Push a string of text to the tokenizer */
|
|
21
|
+
pushText(text: string): void;
|
|
22
|
+
/** Flush the tokenizer, causing it to process all pending text */
|
|
23
|
+
flush(): void;
|
|
24
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
25
|
+
endInput(): void;
|
|
26
|
+
next(): Promise<IteratorResult<TokenData>>;
|
|
27
|
+
/** Close both the input and output of the tokenizer stream */
|
|
28
|
+
close(): void;
|
|
29
|
+
[Symbol.asyncIterator](): SentenceStream;
|
|
30
|
+
}
|
|
31
|
+
export declare abstract class WordTokenizer {
|
|
32
|
+
abstract tokenize(text: string, language?: string): string[];
|
|
33
|
+
/**
|
|
34
|
+
* Returns a {@link WordStream} that can be used to push words and receive smaller segments.
|
|
35
|
+
*/
|
|
36
|
+
abstract stream(): WordStream;
|
|
37
|
+
}
|
|
38
|
+
export declare abstract class WordStream {
|
|
39
|
+
#private;
|
|
40
|
+
protected static readonly FLUSH_SENTINEL: unique symbol;
|
|
41
|
+
protected input: AsyncIterableQueue<string | typeof WordStream.FLUSH_SENTINEL>;
|
|
42
|
+
protected queue: AsyncIterableQueue<TokenData>;
|
|
43
|
+
get closed(): boolean;
|
|
44
|
+
/** Push a string of text to the tokenizer */
|
|
45
|
+
pushText(text: string): void;
|
|
46
|
+
/** Flush the tokenizer, causing it to process all pending text */
|
|
47
|
+
flush(): void;
|
|
48
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
49
|
+
endInput(): void;
|
|
50
|
+
next(): Promise<IteratorResult<TokenData>>;
|
|
51
|
+
/** Close both the input and output of the tokenizer stream */
|
|
52
|
+
close(): void;
|
|
53
|
+
[Symbol.asyncIterator](): WordStream;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=tokenizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/tokenize/tokenizer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,eAAO,MAAM,YAAY,UAIxB,CAAA;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8BAAsB,iBAAiB;IACrC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAE5D;;OAEG;IACH,QAAQ,CAAC,MAAM,IAAI,cAAc;CAClC;AAED,8BAAsB,cAAc;;IAClC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAA4B;IACpE,SAAS,CAAC,KAAK,oEAA2E;IAC1F,SAAS,CAAC,KAAK,gCAAuC;IAGtD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAUrB,kEAAkE;IAClE,KAAK;IAUL,2DAA2D;IAC3D,QAAQ;IAUR,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAI1C,8DAA8D;IAC9D,KAAK;IAML,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,cAAc;CAGzC;AAED,8BAAsB,aAAa;IACjC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAE5D;;OAEG;IACH,QAAQ,CAAC,MAAM,IAAI,UAAU;CAC9B;AAED,8BAAsB,UAAU;;IAC9B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAA4B;IACpE,SAAS,CAAC,KAAK,gEAAuE;IACtF,SAAS,CAAC,KAAK,gCAAuC;IAGtD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAUrB,kEAAkE;IAClE,KAAK;IAUL,2DAA2D;IAC3D,QAAQ;IAUR,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAI1C,8DAA8D;IAC9D,KAAK;IAML,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,UAAU;CAGrC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { AsyncIterableQueue } from '../utils.js';
|
|
5
|
+
// prettier-ignore
|
|
6
|
+
export const PUNCTUATIONS = [
|
|
7
|
+
'!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=',
|
|
8
|
+
'>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~', '±', '—', '‘', '’', '“', '”',
|
|
9
|
+
'…',
|
|
10
|
+
];
|
|
11
|
+
export class SentenceTokenizer {
|
|
12
|
+
}
|
|
13
|
+
export class SentenceStream {
|
|
14
|
+
static FLUSH_SENTINEL = Symbol('FLUSH_SENTINEL');
|
|
15
|
+
input = new AsyncIterableQueue();
|
|
16
|
+
queue = new AsyncIterableQueue();
|
|
17
|
+
#closed = false;
|
|
18
|
+
get closed() {
|
|
19
|
+
return this.#closed;
|
|
20
|
+
}
|
|
21
|
+
/** Push a string of text to the tokenizer */
|
|
22
|
+
pushText(text) {
|
|
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(text);
|
|
30
|
+
}
|
|
31
|
+
/** Flush the tokenizer, causing it to process all pending text */
|
|
32
|
+
flush() {
|
|
33
|
+
if (this.input.closed) {
|
|
34
|
+
throw new Error('Input is closed');
|
|
35
|
+
}
|
|
36
|
+
if (this.#closed) {
|
|
37
|
+
throw new Error('Stream is closed');
|
|
38
|
+
}
|
|
39
|
+
this.input.put(SentenceStream.FLUSH_SENTINEL);
|
|
40
|
+
}
|
|
41
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
42
|
+
endInput() {
|
|
43
|
+
if (this.input.closed) {
|
|
44
|
+
throw new Error('Input is closed');
|
|
45
|
+
}
|
|
46
|
+
if (this.#closed) {
|
|
47
|
+
throw new Error('Stream is closed');
|
|
48
|
+
}
|
|
49
|
+
this.input.close();
|
|
50
|
+
}
|
|
51
|
+
next() {
|
|
52
|
+
return this.queue.next();
|
|
53
|
+
}
|
|
54
|
+
/** Close both the input and output of the tokenizer stream */
|
|
55
|
+
close() {
|
|
56
|
+
this.input.close();
|
|
57
|
+
this.queue.close();
|
|
58
|
+
this.#closed = true;
|
|
59
|
+
}
|
|
60
|
+
[Symbol.asyncIterator]() {
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export class WordTokenizer {
|
|
65
|
+
}
|
|
66
|
+
export class WordStream {
|
|
67
|
+
static FLUSH_SENTINEL = Symbol('FLUSH_SENTINEL');
|
|
68
|
+
input = new AsyncIterableQueue();
|
|
69
|
+
queue = new AsyncIterableQueue();
|
|
70
|
+
#closed = false;
|
|
71
|
+
get closed() {
|
|
72
|
+
return this.#closed;
|
|
73
|
+
}
|
|
74
|
+
/** Push a string of text to the tokenizer */
|
|
75
|
+
pushText(text) {
|
|
76
|
+
if (this.input.closed) {
|
|
77
|
+
throw new Error('Input is closed');
|
|
78
|
+
}
|
|
79
|
+
if (this.#closed) {
|
|
80
|
+
throw new Error('Stream is closed');
|
|
81
|
+
}
|
|
82
|
+
this.input.put(text);
|
|
83
|
+
}
|
|
84
|
+
/** Flush the tokenizer, causing it to process all pending text */
|
|
85
|
+
flush() {
|
|
86
|
+
if (this.input.closed) {
|
|
87
|
+
throw new Error('Input is closed');
|
|
88
|
+
}
|
|
89
|
+
if (this.#closed) {
|
|
90
|
+
throw new Error('Stream is closed');
|
|
91
|
+
}
|
|
92
|
+
this.input.put(WordStream.FLUSH_SENTINEL);
|
|
93
|
+
}
|
|
94
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
95
|
+
endInput() {
|
|
96
|
+
if (this.input.closed) {
|
|
97
|
+
throw new Error('Input is closed');
|
|
98
|
+
}
|
|
99
|
+
if (this.#closed) {
|
|
100
|
+
throw new Error('Stream is closed');
|
|
101
|
+
}
|
|
102
|
+
this.input.close();
|
|
103
|
+
}
|
|
104
|
+
next() {
|
|
105
|
+
return this.queue.next();
|
|
106
|
+
}
|
|
107
|
+
/** Close both the input and output of the tokenizer stream */
|
|
108
|
+
close() {
|
|
109
|
+
this.input.close();
|
|
110
|
+
this.queue.close();
|
|
111
|
+
this.#closed = true;
|
|
112
|
+
}
|
|
113
|
+
[Symbol.asyncIterator]() {
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=tokenizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/tokenize/tokenizer.ts"],"names":[],"mappings":"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"}
|
package/dist/transcription.js
CHANGED
|
@@ -1,112 +1,101 @@
|
|
|
1
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
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 _BasicTranscriptionForwarder_instances, _BasicTranscriptionForwarder_room, _BasicTranscriptionForwarder_participantIdentity, _BasicTranscriptionForwarder_trackSid, _BasicTranscriptionForwarder_currentText, _BasicTranscriptionForwarder_totalAudioDuration, _BasicTranscriptionForwarder_currentPlayoutTime, _BasicTranscriptionForwarder_DEFAULT_CHARS_PER_SECOND, _BasicTranscriptionForwarder_charsPerSecond, _BasicTranscriptionForwarder_messageId, _BasicTranscriptionForwarder_isRunning, _BasicTranscriptionForwarder_logger, _BasicTranscriptionForwarder_textIsComplete, _BasicTranscriptionForwarder_audioIsComplete, _BasicTranscriptionForwarder_adjustTimingIfBothFinished, _BasicTranscriptionForwarder_computeSleepInterval, _BasicTranscriptionForwarder_startPublishingLoop, _BasicTranscriptionForwarder_publishTranscription;
|
|
13
1
|
import { log } from './log.js';
|
|
14
2
|
export class BasicTranscriptionForwarder {
|
|
3
|
+
#room;
|
|
4
|
+
#participantIdentity;
|
|
5
|
+
#trackSid;
|
|
6
|
+
#currentText = '';
|
|
7
|
+
#totalAudioDuration = 0;
|
|
8
|
+
#currentPlayoutTime = 0;
|
|
9
|
+
#DEFAULT_CHARS_PER_SECOND = 16;
|
|
10
|
+
#charsPerSecond = this.#DEFAULT_CHARS_PER_SECOND;
|
|
11
|
+
#messageId;
|
|
12
|
+
#isRunning = false;
|
|
13
|
+
#logger = log();
|
|
14
|
+
currentCharacterIndex = 0;
|
|
15
15
|
constructor(room, participantIdentity, trackSid, messageId) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
_BasicTranscriptionForwarder_currentText.set(this, '');
|
|
21
|
-
_BasicTranscriptionForwarder_totalAudioDuration.set(this, 0);
|
|
22
|
-
_BasicTranscriptionForwarder_currentPlayoutTime.set(this, 0);
|
|
23
|
-
_BasicTranscriptionForwarder_DEFAULT_CHARS_PER_SECOND.set(this, 16);
|
|
24
|
-
_BasicTranscriptionForwarder_charsPerSecond.set(this, __classPrivateFieldGet(this, _BasicTranscriptionForwarder_DEFAULT_CHARS_PER_SECOND, "f"));
|
|
25
|
-
_BasicTranscriptionForwarder_messageId.set(this, void 0);
|
|
26
|
-
_BasicTranscriptionForwarder_isRunning.set(this, false);
|
|
27
|
-
_BasicTranscriptionForwarder_logger.set(this, log());
|
|
28
|
-
this.currentCharacterIndex = 0;
|
|
29
|
-
_BasicTranscriptionForwarder_textIsComplete.set(this, false);
|
|
30
|
-
_BasicTranscriptionForwarder_audioIsComplete.set(this, false);
|
|
31
|
-
__classPrivateFieldSet(this, _BasicTranscriptionForwarder_room, room, "f");
|
|
32
|
-
__classPrivateFieldSet(this, _BasicTranscriptionForwarder_participantIdentity, participantIdentity, "f");
|
|
33
|
-
__classPrivateFieldSet(this, _BasicTranscriptionForwarder_trackSid, trackSid, "f");
|
|
34
|
-
__classPrivateFieldSet(this, _BasicTranscriptionForwarder_messageId, messageId, "f");
|
|
16
|
+
this.#room = room;
|
|
17
|
+
this.#participantIdentity = participantIdentity;
|
|
18
|
+
this.#trackSid = trackSid;
|
|
19
|
+
this.#messageId = messageId;
|
|
35
20
|
}
|
|
36
21
|
start() {
|
|
37
|
-
if (!
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
22
|
+
if (!this.#isRunning) {
|
|
23
|
+
this.#isRunning = true;
|
|
24
|
+
this.#startPublishingLoop().catch((error) => {
|
|
25
|
+
this.#logger.error('Error in publishing loop:', error);
|
|
26
|
+
this.#isRunning = false;
|
|
42
27
|
});
|
|
43
28
|
}
|
|
44
29
|
}
|
|
45
30
|
pushAudio(frame) {
|
|
46
|
-
|
|
31
|
+
this.#totalAudioDuration += frame.samplesPerChannel / frame.sampleRate;
|
|
47
32
|
}
|
|
48
33
|
pushText(text) {
|
|
49
|
-
|
|
34
|
+
this.#currentText += text;
|
|
50
35
|
}
|
|
36
|
+
#textIsComplete = false;
|
|
37
|
+
#audioIsComplete = false;
|
|
51
38
|
markTextComplete() {
|
|
52
|
-
|
|
53
|
-
|
|
39
|
+
this.#textIsComplete = true;
|
|
40
|
+
this.#adjustTimingIfBothFinished();
|
|
54
41
|
}
|
|
55
42
|
markAudioComplete() {
|
|
56
|
-
|
|
57
|
-
|
|
43
|
+
this.#audioIsComplete = true;
|
|
44
|
+
this.#adjustTimingIfBothFinished();
|
|
58
45
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
46
|
+
#adjustTimingIfBothFinished() {
|
|
47
|
+
if (this.#textIsComplete && this.#audioIsComplete) {
|
|
48
|
+
const actualDuration = this.#totalAudioDuration;
|
|
49
|
+
if (actualDuration > 0 && this.#currentText.length > 0) {
|
|
50
|
+
this.#charsPerSecond = this.#currentText.length / actualDuration;
|
|
51
|
+
}
|
|
64
52
|
}
|
|
65
|
-
await __classPrivateFieldGet(this, _BasicTranscriptionForwarder_instances, "m", _BasicTranscriptionForwarder_publishTranscription).call(this, true);
|
|
66
53
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (__classPrivateFieldGet(this, _BasicTranscriptionForwarder_textIsComplete, "f") && __classPrivateFieldGet(this, _BasicTranscriptionForwarder_audioIsComplete, "f")) {
|
|
70
|
-
const actualDuration = __classPrivateFieldGet(this, _BasicTranscriptionForwarder_totalAudioDuration, "f");
|
|
71
|
-
if (actualDuration > 0 && __classPrivateFieldGet(this, _BasicTranscriptionForwarder_currentText, "f").length > 0) {
|
|
72
|
-
__classPrivateFieldSet(this, _BasicTranscriptionForwarder_charsPerSecond, __classPrivateFieldGet(this, _BasicTranscriptionForwarder_currentText, "f").length / actualDuration, "f");
|
|
73
|
-
}
|
|
54
|
+
#computeSleepInterval() {
|
|
55
|
+
return Math.min(Math.max(1 / this.#charsPerSecond, 0.0625), 0.5);
|
|
74
56
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
57
|
+
async #startPublishingLoop() {
|
|
58
|
+
this.#isRunning = true;
|
|
59
|
+
let sleepInterval = this.#computeSleepInterval();
|
|
60
|
+
let isComplete = false;
|
|
61
|
+
while (this.#isRunning && !isComplete) {
|
|
62
|
+
this.#currentPlayoutTime += sleepInterval;
|
|
63
|
+
this.currentCharacterIndex = Math.floor(this.#currentPlayoutTime * this.#charsPerSecond);
|
|
64
|
+
isComplete = this.#textIsComplete && this.currentCharacterIndex >= this.#currentText.length;
|
|
65
|
+
await this.#publishTranscription(false);
|
|
66
|
+
if (this.#isRunning && !isComplete) {
|
|
67
|
+
sleepInterval = this.#computeSleepInterval();
|
|
68
|
+
await new Promise((resolve) => setTimeout(resolve, sleepInterval * 1000));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (this.#isRunning) {
|
|
72
|
+
this.close(false);
|
|
89
73
|
}
|
|
90
74
|
}
|
|
91
|
-
|
|
92
|
-
this.
|
|
75
|
+
async #publishTranscription(final) {
|
|
76
|
+
const textToPublish = this.#currentText.slice(0, this.currentCharacterIndex);
|
|
77
|
+
await this.#room.localParticipant?.publishTranscription({
|
|
78
|
+
participantIdentity: this.#participantIdentity,
|
|
79
|
+
trackSid: this.#trackSid,
|
|
80
|
+
segments: [
|
|
81
|
+
{
|
|
82
|
+
text: textToPublish,
|
|
83
|
+
final: final,
|
|
84
|
+
id: this.#messageId,
|
|
85
|
+
startTime: BigInt(0),
|
|
86
|
+
endTime: BigInt(0),
|
|
87
|
+
language: '',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
});
|
|
93
91
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
final: final,
|
|
104
|
-
id: __classPrivateFieldGet(this, _BasicTranscriptionForwarder_messageId, "f"),
|
|
105
|
-
startTime: BigInt(0),
|
|
106
|
-
endTime: BigInt(0),
|
|
107
|
-
language: '',
|
|
108
|
-
},
|
|
109
|
-
],
|
|
110
|
-
}));
|
|
111
|
-
};
|
|
92
|
+
async close(interrupt) {
|
|
93
|
+
this.#isRunning = false;
|
|
94
|
+
// Publish whatever we had as final
|
|
95
|
+
if (!interrupt) {
|
|
96
|
+
this.currentCharacterIndex = this.#currentText.length;
|
|
97
|
+
}
|
|
98
|
+
await this.#publishTranscription(true);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
112
101
|
//# sourceMappingURL=transcription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcription.js","sourceRoot":"","sources":["../src/transcription.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transcription.js","sourceRoot":"","sources":["../src/transcription.ts"],"names":[],"mappings":"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"}
|
package/dist/tts/index.d.ts
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { ChunkedStream, SynthesisEvent, SynthesisEventType, SynthesizeStream, type SynthesizedAudio, TTS } from './tts.js';
|
|
3
|
-
export { TTS, SynthesisEvent, SynthesisEventType, SynthesizedAudio, SynthesizeStream, StreamAdapter, StreamAdapterWrapper, ChunkedStream, };
|
|
1
|
+
export { type SynthesizedAudio, type TTSCapabilities, TTS, SynthesizeStream } from './tts.js';
|
|
4
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/tts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tts/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tts/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
|