@livekit/agents 0.3.4 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +40 -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 +16 -11
- 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 +214 -237
- 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 +4 -4
- 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 +19 -6
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline_agent.js","sourceRoot":"","sources":["../../src/pipeline/pipeline_agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { LLMStream } from '../llm/index.js';
|
|
2
|
+
import type { SynthesisHandle } from './agent_output.js';
|
|
3
|
+
export declare class SpeechHandle {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(id: string, allowInterruptions: boolean, addToChatCtx: boolean, isReply: boolean, userQuestion: string);
|
|
6
|
+
static createAssistantReply(allowInterruptions: boolean, addToChatCtx: boolean, userQuestion: string): SpeechHandle;
|
|
7
|
+
static createAssistantSpeech(allowInterruptions: boolean, addToChatCtx: boolean): SpeechHandle;
|
|
8
|
+
waitForInitialization(): Promise<void>;
|
|
9
|
+
initialize(source: string | LLMStream | AsyncIterable<string>, synthesisHandle: SynthesisHandle): void;
|
|
10
|
+
markUserCommitted(): void;
|
|
11
|
+
markSpeechCommitted(): void;
|
|
12
|
+
get userCommitted(): boolean;
|
|
13
|
+
get speechCommitted(): boolean;
|
|
14
|
+
get id(): string;
|
|
15
|
+
get allowInterruptions(): boolean;
|
|
16
|
+
get addToChatCtx(): boolean;
|
|
17
|
+
get source(): string | LLMStream | AsyncIterable<string>;
|
|
18
|
+
get synthesisHandle(): SynthesisHandle;
|
|
19
|
+
set synthesisHandle(handle: SynthesisHandle);
|
|
20
|
+
get initialized(): boolean;
|
|
21
|
+
get isReply(): boolean;
|
|
22
|
+
get userQuestion(): string;
|
|
23
|
+
get interrupted(): boolean;
|
|
24
|
+
interrupt(): void;
|
|
25
|
+
cancel(): void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=speech_handle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech_handle.d.ts","sourceRoot":"","sources":["../../src/pipeline/speech_handle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,qBAAa,YAAY;;gBAcrB,EAAE,EAAE,MAAM,EACV,kBAAkB,EAAE,OAAO,EAC3B,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM;IAStB,MAAM,CAAC,oBAAoB,CACzB,kBAAkB,EAAE,OAAO,EAC3B,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,MAAM,GACnB,YAAY;IAIf,MAAM,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,YAAY;IAIxF,qBAAqB;IAI3B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,eAAe;IAW/F,iBAAiB;IAIjB,mBAAmB;IAInB,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAKvD;IAED,IAAI,eAAe,IAAI,eAAe,CAKrC;IAED,IAAI,eAAe,CAAC,MAAM,EAAE,eAAe,EAE1C;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,SAAS;IAOT,MAAM;CAIP"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { randomUUID } from 'crypto';
|
|
5
|
+
import { Future } from '../utils.js';
|
|
6
|
+
export class SpeechHandle {
|
|
7
|
+
#id;
|
|
8
|
+
#allowInterruptions;
|
|
9
|
+
#addToChatCtx;
|
|
10
|
+
#isReply;
|
|
11
|
+
#userQuestion;
|
|
12
|
+
#userCommitted = false;
|
|
13
|
+
#initFut = new Future();
|
|
14
|
+
#speechCommitted = false;
|
|
15
|
+
#source;
|
|
16
|
+
#synthesisHandle;
|
|
17
|
+
#initialized = false;
|
|
18
|
+
constructor(id, allowInterruptions, addToChatCtx, isReply, userQuestion) {
|
|
19
|
+
this.#id = id;
|
|
20
|
+
this.#allowInterruptions = allowInterruptions;
|
|
21
|
+
this.#addToChatCtx = addToChatCtx;
|
|
22
|
+
this.#isReply = isReply;
|
|
23
|
+
this.#userQuestion = userQuestion;
|
|
24
|
+
}
|
|
25
|
+
static createAssistantReply(allowInterruptions, addToChatCtx, userQuestion) {
|
|
26
|
+
return new SpeechHandle(randomUUID(), allowInterruptions, addToChatCtx, true, userQuestion);
|
|
27
|
+
}
|
|
28
|
+
static createAssistantSpeech(allowInterruptions, addToChatCtx) {
|
|
29
|
+
return new SpeechHandle(randomUUID(), allowInterruptions, addToChatCtx, false, '');
|
|
30
|
+
}
|
|
31
|
+
async waitForInitialization() {
|
|
32
|
+
await this.#initFut.await;
|
|
33
|
+
}
|
|
34
|
+
initialize(source, synthesisHandle) {
|
|
35
|
+
if (this.interrupted) {
|
|
36
|
+
throw new Error('speech was interrupted');
|
|
37
|
+
}
|
|
38
|
+
this.#source = source;
|
|
39
|
+
this.#synthesisHandle = synthesisHandle;
|
|
40
|
+
this.#initialized = true;
|
|
41
|
+
this.#initFut.resolve();
|
|
42
|
+
}
|
|
43
|
+
markUserCommitted() {
|
|
44
|
+
this.#userCommitted = true;
|
|
45
|
+
}
|
|
46
|
+
markSpeechCommitted() {
|
|
47
|
+
this.#speechCommitted = true;
|
|
48
|
+
}
|
|
49
|
+
get userCommitted() {
|
|
50
|
+
return this.#userCommitted;
|
|
51
|
+
}
|
|
52
|
+
get speechCommitted() {
|
|
53
|
+
return this.#speechCommitted;
|
|
54
|
+
}
|
|
55
|
+
get id() {
|
|
56
|
+
return this.#id;
|
|
57
|
+
}
|
|
58
|
+
get allowInterruptions() {
|
|
59
|
+
return this.#allowInterruptions;
|
|
60
|
+
}
|
|
61
|
+
get addToChatCtx() {
|
|
62
|
+
return this.#addToChatCtx;
|
|
63
|
+
}
|
|
64
|
+
get source() {
|
|
65
|
+
if (!this.#source) {
|
|
66
|
+
throw new Error('speech not initialized');
|
|
67
|
+
}
|
|
68
|
+
return this.#source;
|
|
69
|
+
}
|
|
70
|
+
get synthesisHandle() {
|
|
71
|
+
if (!this.#synthesisHandle) {
|
|
72
|
+
throw new Error('speech not initialized');
|
|
73
|
+
}
|
|
74
|
+
return this.#synthesisHandle;
|
|
75
|
+
}
|
|
76
|
+
set synthesisHandle(handle) {
|
|
77
|
+
this.#synthesisHandle = handle;
|
|
78
|
+
}
|
|
79
|
+
get initialized() {
|
|
80
|
+
return this.#initialized;
|
|
81
|
+
}
|
|
82
|
+
get isReply() {
|
|
83
|
+
return this.#isReply;
|
|
84
|
+
}
|
|
85
|
+
get userQuestion() {
|
|
86
|
+
return this.#userQuestion;
|
|
87
|
+
}
|
|
88
|
+
get interrupted() {
|
|
89
|
+
return !!this.#synthesisHandle?.interrupted;
|
|
90
|
+
}
|
|
91
|
+
interrupt() {
|
|
92
|
+
if (!this.#allowInterruptions) {
|
|
93
|
+
throw new Error('interruptions are not allowed');
|
|
94
|
+
}
|
|
95
|
+
this.cancel();
|
|
96
|
+
}
|
|
97
|
+
cancel() {
|
|
98
|
+
this.#initFut.reject(new Error());
|
|
99
|
+
this.#synthesisHandle?.interrupt();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=speech_handle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech_handle.js","sourceRoot":"","sources":["../../src/pipeline/speech_handle.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,35 +1,22 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
5
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
6
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
7
|
-
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");
|
|
8
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
9
|
-
};
|
|
10
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
11
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
12
|
-
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");
|
|
13
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
14
|
-
};
|
|
15
|
-
var _Plugin_title, _Plugin_version;
|
|
16
4
|
export class Plugin {
|
|
5
|
+
registeredPlugins = [];
|
|
6
|
+
#title;
|
|
7
|
+
#version;
|
|
17
8
|
constructor(title, version) {
|
|
18
|
-
this
|
|
19
|
-
|
|
20
|
-
_Plugin_version.set(this, void 0);
|
|
21
|
-
__classPrivateFieldSet(this, _Plugin_title, title, "f");
|
|
22
|
-
__classPrivateFieldSet(this, _Plugin_version, version, "f");
|
|
9
|
+
this.#title = title;
|
|
10
|
+
this.#version = version;
|
|
23
11
|
}
|
|
24
12
|
static registerPlugins(plugin) {
|
|
25
13
|
plugin.registeredPlugins.push(plugin);
|
|
26
14
|
}
|
|
27
15
|
get title() {
|
|
28
|
-
return
|
|
16
|
+
return this.#title;
|
|
29
17
|
}
|
|
30
18
|
get version() {
|
|
31
|
-
return
|
|
19
|
+
return this.#version;
|
|
32
20
|
}
|
|
33
21
|
}
|
|
34
|
-
_Plugin_title = new WeakMap(), _Plugin_version = new WeakMap();
|
|
35
22
|
//# sourceMappingURL=plugin.js.map
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAEtC,MAAM,OAAgB,MAAM;IAC1B,iBAAiB,GAAa,EAAE,CAAC;IACjC,MAAM,CAAS;IACf,QAAQ,CAAS;IAEjB,YAAY,KAAa,EAAE,OAAe;QACxC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,MAAc;QAC1C,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAID,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
|
package/dist/stt/index.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { StreamAdapter, StreamAdapterWrapper } from './stream_adapter.js';
|
|
1
|
+
export { type SpeechEvent, type SpeechData, type STTCapabilities, SpeechEventType, STT, SpeechStream, } from './stt.js';
|
|
3
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/stt/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,eAAe,EACf,GAAG,EACH,YAAY,GACb,MAAM,UAAU,CAAC"}
|
package/dist/stt/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
export {
|
|
5
|
-
export { StreamAdapter, StreamAdapterWrapper } from './stream_adapter.js';
|
|
4
|
+
export { SpeechEventType, STT, SpeechStream, } from './stt.js';
|
|
6
5
|
//# sourceMappingURL=index.js.map
|
package/dist/stt/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAEtC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAEtC,OAAO,EAIL,eAAe,EACf,GAAG,EACH,YAAY,GACb,MAAM,UAAU,CAAC"}
|
package/dist/stt/stt.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { AudioFrame } from '@livekit/rtc-node';
|
|
2
|
-
import
|
|
2
|
+
import { AsyncIterableQueue } from '../utils.js';
|
|
3
|
+
/** Indicates start/middle/end of speech */
|
|
3
4
|
export declare enum SpeechEventType {
|
|
4
5
|
/**
|
|
5
6
|
* Indicate the start of speech.
|
|
6
7
|
* If the STT doesn't support this event, this will be emitted at the same time
|
|
7
|
-
* as the first
|
|
8
|
+
* as the first INTERIM_TRANSCRIPT.
|
|
8
9
|
*/
|
|
9
10
|
START_OF_SPEECH = 0,
|
|
10
11
|
/**
|
|
@@ -22,6 +23,7 @@ export declare enum SpeechEventType {
|
|
|
22
23
|
*/
|
|
23
24
|
END_OF_SPEECH = 3
|
|
24
25
|
}
|
|
26
|
+
/** SpeechData contains metadata about this {@link SpeechEvent}. */
|
|
25
27
|
export interface SpeechData {
|
|
26
28
|
language: string;
|
|
27
29
|
text: string;
|
|
@@ -29,33 +31,69 @@ export interface SpeechData {
|
|
|
29
31
|
endTime: number;
|
|
30
32
|
confidence: number;
|
|
31
33
|
}
|
|
32
|
-
|
|
34
|
+
/** SpeechEvent is a packet of speech-to-text data. */
|
|
35
|
+
export interface SpeechEvent {
|
|
33
36
|
type: SpeechEventType;
|
|
34
37
|
alternatives: SpeechData[];
|
|
35
|
-
constructor(type: SpeechEventType, alternatives?: SpeechData[]);
|
|
36
38
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
* @param wait
|
|
47
|
-
* Whether to wait for the STT to finish processing the remaining
|
|
48
|
-
* frames before closing
|
|
49
|
-
*/
|
|
50
|
-
abstract close(wait: boolean): Promise<void>;
|
|
51
|
-
abstract next(): IteratorResult<SpeechEvent>;
|
|
52
|
-
[Symbol.iterator](): SpeechStream;
|
|
39
|
+
/**
|
|
40
|
+
* Describes the capabilities of the STT provider.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* At present, the framework only supports providers that have a streaming endpoint.
|
|
44
|
+
*/
|
|
45
|
+
export interface STTCapabilities {
|
|
46
|
+
streaming: boolean;
|
|
47
|
+
interimResults: boolean;
|
|
53
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* An instance of a speech-to-text adapter.
|
|
51
|
+
*
|
|
52
|
+
* @remarks
|
|
53
|
+
* This class is abstract, and as such cannot be used directly. Instead, use a provider plugin that
|
|
54
|
+
* exports its own child STT class, which inherits this class's methods.
|
|
55
|
+
*/
|
|
54
56
|
export declare abstract class STT {
|
|
55
57
|
#private;
|
|
56
|
-
constructor(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
constructor(capabilities: STTCapabilities);
|
|
59
|
+
/** Returns this STT's capabilities */
|
|
60
|
+
get capabilities(): STTCapabilities;
|
|
61
|
+
/**
|
|
62
|
+
* Returns a {@link SpeechStream} that can be used to push audio frames and receive
|
|
63
|
+
* transcriptions
|
|
64
|
+
*/
|
|
65
|
+
abstract stream(): SpeechStream;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* An instance of a speech-to-text stream, as an asynchronous iterable iterator.
|
|
69
|
+
*
|
|
70
|
+
* @example Looping through frames
|
|
71
|
+
* ```ts
|
|
72
|
+
* for await (const event of stream) {
|
|
73
|
+
* if (event.type === SpeechEventType.FINAL_TRANSCRIPT) {
|
|
74
|
+
* console.log(event.alternatives[0].text)
|
|
75
|
+
* }
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @remarks
|
|
80
|
+
* This class is abstract, and as such cannot be used directly. Instead, use a provider plugin that
|
|
81
|
+
* exports its own child SpeechStream class, which inherits this class's methods.
|
|
82
|
+
*/
|
|
83
|
+
export declare abstract class SpeechStream implements AsyncIterableIterator<SpeechEvent> {
|
|
84
|
+
protected static readonly FLUSH_SENTINEL: unique symbol;
|
|
85
|
+
protected input: AsyncIterableQueue<AudioFrame | typeof SpeechStream.FLUSH_SENTINEL>;
|
|
86
|
+
protected queue: AsyncIterableQueue<SpeechEvent>;
|
|
87
|
+
protected closed: boolean;
|
|
88
|
+
/** Push an audio frame to the STT */
|
|
89
|
+
pushFrame(frame: AudioFrame): void;
|
|
90
|
+
/** Flush the STT, causing it to process all pending text */
|
|
91
|
+
flush(): void;
|
|
92
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
93
|
+
endInput(): void;
|
|
94
|
+
next(): Promise<IteratorResult<SpeechEvent>>;
|
|
95
|
+
/** Close both the input and output of the STT stream */
|
|
96
|
+
close(): void;
|
|
97
|
+
[Symbol.asyncIterator](): SpeechStream;
|
|
60
98
|
}
|
|
61
99
|
//# sourceMappingURL=stt.d.ts.map
|
package/dist/stt/stt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stt.d.ts","sourceRoot":"","sources":["../../src/stt/stt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"stt.d.ts","sourceRoot":"","sources":["../../src/stt/stt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,2CAA2C;AAC3C,oBAAY,eAAe;IACzB;;;;OAIG;IACH,eAAe,IAAI;IACnB;;OAEG;IACH,kBAAkB,IAAI;IACtB;;;OAGG;IACH,gBAAgB,IAAI;IACpB;;;OAGG;IACH,aAAa,IAAI;CAClB;AAED,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;GAMG;AACH,8BAAsB,GAAG;;gBAGX,YAAY,EAAE,eAAe;IAIzC,sCAAsC;IACtC,IAAI,YAAY,IAAI,eAAe,CAElC;IAED;;;OAGG;IACH,QAAQ,CAAC,MAAM,IAAI,YAAY;CAChC;AAED;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,YAAa,YAAW,qBAAqB,CAAC,WAAW,CAAC;IAC9E,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAA4B;IACpE,SAAS,CAAC,KAAK,sEAA6E;IAC5F,SAAS,CAAC,KAAK,kCAAyC;IACxD,SAAS,CAAC,MAAM,UAAS;IAEzB,qCAAqC;IACrC,SAAS,CAAC,KAAK,EAAE,UAAU;IAU3B,4DAA4D;IAC5D,KAAK;IAUL,2DAA2D;IAC3D,QAAQ;IAUR,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAI5C,wDAAwD;IACxD,KAAK;IAML,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,YAAY;CAGvC"}
|
package/dist/stt/stt.js
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 _STT_streamingSupported;
|
|
1
|
+
import { AsyncIterableQueue } from '../utils.js';
|
|
2
|
+
/** Indicates start/middle/end of speech */
|
|
13
3
|
export var SpeechEventType;
|
|
14
4
|
(function (SpeechEventType) {
|
|
15
5
|
/**
|
|
16
6
|
* Indicate the start of speech.
|
|
17
7
|
* If the STT doesn't support this event, this will be emitted at the same time
|
|
18
|
-
* as the first
|
|
8
|
+
* as the first INTERIM_TRANSCRIPT.
|
|
19
9
|
*/
|
|
20
10
|
SpeechEventType[SpeechEventType["START_OF_SPEECH"] = 0] = "START_OF_SPEECH";
|
|
21
11
|
/**
|
|
@@ -33,25 +23,85 @@ export var SpeechEventType;
|
|
|
33
23
|
*/
|
|
34
24
|
SpeechEventType[SpeechEventType["END_OF_SPEECH"] = 3] = "END_OF_SPEECH";
|
|
35
25
|
})(SpeechEventType || (SpeechEventType = {}));
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
26
|
+
/**
|
|
27
|
+
* An instance of a speech-to-text adapter.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* This class is abstract, and as such cannot be used directly. Instead, use a provider plugin that
|
|
31
|
+
* exports its own child STT class, which inherits this class's methods.
|
|
32
|
+
*/
|
|
33
|
+
export class STT {
|
|
34
|
+
#capabilities;
|
|
35
|
+
constructor(capabilities) {
|
|
36
|
+
this.#capabilities = capabilities;
|
|
37
|
+
}
|
|
38
|
+
/** Returns this STT's capabilities */
|
|
39
|
+
get capabilities() {
|
|
40
|
+
return this.#capabilities;
|
|
40
41
|
}
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* An instance of a speech-to-text stream, as an asynchronous iterable iterator.
|
|
45
|
+
*
|
|
46
|
+
* @example Looping through frames
|
|
47
|
+
* ```ts
|
|
48
|
+
* for await (const event of stream) {
|
|
49
|
+
* if (event.type === SpeechEventType.FINAL_TRANSCRIPT) {
|
|
50
|
+
* console.log(event.alternatives[0].text)
|
|
51
|
+
* }
|
|
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 SpeechStream class, which inherits this class's methods.
|
|
58
|
+
*/
|
|
42
59
|
export class SpeechStream {
|
|
43
|
-
|
|
44
|
-
|
|
60
|
+
static FLUSH_SENTINEL = Symbol('FLUSH_SENTINEL');
|
|
61
|
+
input = new AsyncIterableQueue();
|
|
62
|
+
queue = new AsyncIterableQueue();
|
|
63
|
+
closed = false;
|
|
64
|
+
/** Push an audio frame to the STT */
|
|
65
|
+
pushFrame(frame) {
|
|
66
|
+
if (this.input.closed) {
|
|
67
|
+
throw new Error('Input is closed');
|
|
68
|
+
}
|
|
69
|
+
if (this.closed) {
|
|
70
|
+
throw new Error('Stream is closed');
|
|
71
|
+
}
|
|
72
|
+
this.input.put(frame);
|
|
45
73
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
74
|
+
/** Flush the STT, causing it to process all pending text */
|
|
75
|
+
flush() {
|
|
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(SpeechStream.FLUSH_SENTINEL);
|
|
51
83
|
}
|
|
52
|
-
|
|
53
|
-
|
|
84
|
+
/** Mark the input as ended and forbid additional pushes */
|
|
85
|
+
endInput() {
|
|
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.close();
|
|
93
|
+
}
|
|
94
|
+
next() {
|
|
95
|
+
return this.queue.next();
|
|
96
|
+
}
|
|
97
|
+
/** Close both the input and output of the STT stream */
|
|
98
|
+
close() {
|
|
99
|
+
this.input.close();
|
|
100
|
+
this.queue.close();
|
|
101
|
+
this.closed = true;
|
|
102
|
+
}
|
|
103
|
+
[Symbol.asyncIterator]() {
|
|
104
|
+
return this;
|
|
54
105
|
}
|
|
55
106
|
}
|
|
56
|
-
_STT_streamingSupported = new WeakMap();
|
|
57
107
|
//# sourceMappingURL=stt.js.map
|
package/dist/stt/stt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stt.js","sourceRoot":"","sources":["../../src/stt/stt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stt.js","sourceRoot":"","sources":["../../src/stt/stt.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,2CAA2C;AAC3C,MAAM,CAAN,IAAY,eAqBX;AArBD,WAAY,eAAe;IACzB;;;;OAIG;IACH,2EAAmB,CAAA;IACnB;;OAEG;IACH,iFAAsB,CAAA;IACtB;;;OAGG;IACH,6EAAoB,CAAA;IACpB;;;OAGG;IACH,uEAAiB,CAAA;AACnB,CAAC,EArBW,eAAe,KAAf,eAAe,QAqB1B;AA4BD;;;;;;GAMG;AACH,MAAM,OAAgB,GAAG;IACvB,aAAa,CAAkB;IAE/B,YAAY,YAA6B;QACvC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,sCAAsC;IACtC,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CAOF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAgB,YAAY;IACtB,MAAM,CAAU,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1D,KAAK,GAAG,IAAI,kBAAkB,EAAmD,CAAC;IAClF,KAAK,GAAG,IAAI,kBAAkB,EAAe,CAAC;IAC9C,MAAM,GAAG,KAAK,CAAC;IAEzB,qCAAqC;IACrC,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,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,YAAY,CAAC,cAAc,CAAC,CAAC;IAC9C,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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as tokenizer from '../index.js';
|
|
2
|
+
export declare class SentenceTokenizer extends tokenizer.SentenceTokenizer {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(language?: string, minSentenceLength?: number, streamContextLength?: number);
|
|
5
|
+
tokenize(text: string, language?: string): string[];
|
|
6
|
+
stream(language?: string): tokenizer.SentenceStream;
|
|
7
|
+
}
|
|
8
|
+
export declare class WordTokenizer extends tokenizer.WordTokenizer {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(ignorePunctuation?: boolean);
|
|
11
|
+
tokenize(text: string, language?: string): string[];
|
|
12
|
+
stream(language?: string): tokenizer.WordStream;
|
|
13
|
+
}
|
|
14
|
+
export declare const hyphenateWord: (word: string) => string[];
|
|
15
|
+
export declare const tokenizeParagraphs: (text: string) => string[];
|
|
16
|
+
//# sourceMappingURL=basic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../src/tokenize/basic/basic.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAazC,qBAAa,iBAAkB,SAAQ,SAAS,CAAC,iBAAiB;;gBAGpD,QAAQ,SAAU,EAAE,iBAAiB,SAAK,EAAE,mBAAmB,SAAK;IAUhF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAKnD,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,cAAc;CAOpD;AAED,qBAAa,aAAc,SAAQ,SAAS,CAAC,aAAa;;gBAG5C,iBAAiB,UAAO;IAMpC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAKnD,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,UAAU;CAOhD;AAED,eAAO,MAAM,aAAa,SAAU,MAAM,KAAG,MAAM,EAElD,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAU,MAAM,KAAG,MAAM,EAEvD,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import * as tokenizer from '../index.js';
|
|
5
|
+
import { BufferedSentenceStream, BufferedWordStream } from '../token_stream.js';
|
|
6
|
+
import { hyphenator } from './hyphenator.js';
|
|
7
|
+
import { splitParagraphs } from './paragraph.js';
|
|
8
|
+
import { splitSentences } from './sentence.js';
|
|
9
|
+
import { splitWords } from './word.js';
|
|
10
|
+
export class SentenceTokenizer extends tokenizer.SentenceTokenizer {
|
|
11
|
+
#config;
|
|
12
|
+
constructor(language = 'en-US', minSentenceLength = 20, streamContextLength = 10) {
|
|
13
|
+
super();
|
|
14
|
+
this.#config = {
|
|
15
|
+
language,
|
|
16
|
+
minSentenceLength,
|
|
17
|
+
streamContextLength,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
21
|
+
tokenize(text, language) {
|
|
22
|
+
return splitSentences(text, this.#config.minSentenceLength).map((tok) => tok[0]);
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
25
|
+
stream(language) {
|
|
26
|
+
return new BufferedSentenceStream((text) => splitSentences(text, this.#config.minSentenceLength), this.#config.minSentenceLength, this.#config.streamContextLength);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class WordTokenizer extends tokenizer.WordTokenizer {
|
|
30
|
+
#ignorePunctuation;
|
|
31
|
+
constructor(ignorePunctuation = true) {
|
|
32
|
+
super();
|
|
33
|
+
this.#ignorePunctuation = ignorePunctuation;
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
36
|
+
tokenize(text, language) {
|
|
37
|
+
return splitWords(text, this.#ignorePunctuation).map((tok) => tok[0]);
|
|
38
|
+
}
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
40
|
+
stream(language) {
|
|
41
|
+
return new BufferedWordStream((text) => splitWords(text, this.#ignorePunctuation), 1, 1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export const hyphenateWord = (word) => {
|
|
45
|
+
return hyphenator.hyphenateWord(word);
|
|
46
|
+
};
|
|
47
|
+
export const tokenizeParagraphs = (text) => {
|
|
48
|
+
return splitParagraphs(text).map((tok) => tok[0]);
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=basic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../src/tokenize/basic/basic.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAQvC,MAAM,OAAO,iBAAkB,SAAQ,SAAS,CAAC,iBAAiB;IAChE,OAAO,CAAmB;IAE1B,YAAY,QAAQ,GAAG,OAAO,EAAE,iBAAiB,GAAG,EAAE,EAAE,mBAAmB,GAAG,EAAE;QAC9E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG;YACb,QAAQ;YACR,iBAAiB;YACjB,mBAAmB;SACpB,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,QAAQ,CAAC,IAAY,EAAE,QAAiB;QACtC,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,QAAiB;QACtB,OAAO,IAAI,sBAAsB,CAC/B,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EACtE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAC9B,IAAI,CAAC,OAAO,CAAC,mBAAmB,CACjC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,SAAS,CAAC,aAAa;IACxD,kBAAkB,CAAU;IAE5B,YAAY,iBAAiB,GAAG,IAAI;QAClC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;IAC9C,CAAC;IAED,6DAA6D;IAC7D,QAAQ,CAAC,IAAY,EAAE,QAAiB;QACtC,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,QAAiB;QACtB,OAAO,IAAI,kBAAkB,CAC3B,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAC3D,CAAC,EACD,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAY,EAAE;IACtD,OAAO,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAY,EAAE;IAC3D,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare const END: unique symbol;
|
|
2
|
+
interface Tree {
|
|
3
|
+
[id: string]: Tree | string;
|
|
4
|
+
[END]?: number[];
|
|
5
|
+
}
|
|
6
|
+
declare class Hyphenator {
|
|
7
|
+
#private;
|
|
8
|
+
tree: Tree;
|
|
9
|
+
exceptions: {
|
|
10
|
+
[id: string]: number[];
|
|
11
|
+
};
|
|
12
|
+
constructor(patterns: string, exceptions: string);
|
|
13
|
+
hyphenateWord(word: string): string[];
|
|
14
|
+
}
|
|
15
|
+
export declare const hyphenator: Hyphenator;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=hyphenator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyphenator.d.ts","sourceRoot":"","sources":["../../../src/tokenize/basic/hyphenator.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,GAAG,eAAgB,CAAC;AAC1B,UAAU,IAAI;IACZ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;IAC5B,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAKD,cAAM,UAAU;;IACd,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;gBAC3B,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IA4BhD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;CA6CtC;AA0VD,eAAO,MAAM,UAAU,YAAuC,CAAC"}
|