@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.
Files changed (188) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +40 -0
  3. package/dist/audio.js +17 -30
  4. package/dist/audio.js.map +1 -1
  5. package/dist/cli.js +3 -14
  6. package/dist/cli.js.map +1 -1
  7. package/dist/http_server.d.ts +1 -1
  8. package/dist/http_server.js +5 -9
  9. package/dist/http_server.js.map +1 -1
  10. package/dist/index.d.ts +3 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +14 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/ipc/job_executor.js +3 -5
  15. package/dist/ipc/job_executor.js.map +1 -1
  16. package/dist/ipc/job_main.d.ts +1 -1
  17. package/dist/ipc/proc_job_executor.js +66 -80
  18. package/dist/ipc/proc_job_executor.js.map +1 -1
  19. package/dist/ipc/proc_pool.d.ts +3 -3
  20. package/dist/ipc/proc_pool.d.ts.map +1 -1
  21. package/dist/ipc/proc_pool.js +16 -11
  22. package/dist/ipc/proc_pool.js.map +1 -1
  23. package/dist/job.js +56 -73
  24. package/dist/job.js.map +1 -1
  25. package/dist/llm/chat_context.d.ts +66 -0
  26. package/dist/llm/chat_context.d.ts.map +1 -0
  27. package/dist/llm/chat_context.js +93 -0
  28. package/dist/llm/chat_context.js.map +1 -0
  29. package/dist/llm/function_context.d.ts +19 -1
  30. package/dist/llm/function_context.d.ts.map +1 -1
  31. package/dist/llm/function_context.js +54 -18
  32. package/dist/llm/function_context.js.map +1 -1
  33. package/dist/llm/function_context.test.d.ts +2 -0
  34. package/dist/llm/function_context.test.d.ts.map +1 -0
  35. package/dist/llm/function_context.test.js +218 -0
  36. package/dist/llm/function_context.test.js.map +1 -0
  37. package/dist/llm/index.d.ts +3 -2
  38. package/dist/llm/index.d.ts.map +1 -1
  39. package/dist/llm/index.js +3 -2
  40. package/dist/llm/index.js.map +1 -1
  41. package/dist/llm/llm.d.ts +53 -0
  42. package/dist/llm/llm.d.ts.map +1 -0
  43. package/dist/llm/llm.js +45 -0
  44. package/dist/llm/llm.js.map +1 -0
  45. package/dist/multimodal/agent_playout.d.ts +1 -1
  46. package/dist/multimodal/agent_playout.js +116 -153
  47. package/dist/multimodal/agent_playout.js.map +1 -1
  48. package/dist/multimodal/multimodal_agent.d.ts +4 -3
  49. package/dist/multimodal/multimodal_agent.d.ts.map +1 -1
  50. package/dist/multimodal/multimodal_agent.js +214 -237
  51. package/dist/multimodal/multimodal_agent.js.map +1 -1
  52. package/dist/pipeline/agent_output.d.ts +30 -0
  53. package/dist/pipeline/agent_output.d.ts.map +1 -0
  54. package/dist/pipeline/agent_output.js +155 -0
  55. package/dist/pipeline/agent_output.js.map +1 -0
  56. package/dist/pipeline/agent_playout.d.ts +38 -0
  57. package/dist/pipeline/agent_playout.d.ts.map +1 -0
  58. package/dist/pipeline/agent_playout.js +142 -0
  59. package/dist/pipeline/agent_playout.js.map +1 -0
  60. package/dist/pipeline/human_input.d.ts +28 -0
  61. package/dist/pipeline/human_input.d.ts.map +1 -0
  62. package/dist/pipeline/human_input.js +134 -0
  63. package/dist/pipeline/human_input.js.map +1 -0
  64. package/dist/pipeline/index.d.ts +2 -0
  65. package/dist/pipeline/index.d.ts.map +1 -0
  66. package/dist/pipeline/index.js +5 -0
  67. package/dist/pipeline/index.js.map +1 -0
  68. package/dist/pipeline/pipeline_agent.d.ts +134 -0
  69. package/dist/pipeline/pipeline_agent.d.ts.map +1 -0
  70. package/dist/pipeline/pipeline_agent.js +661 -0
  71. package/dist/pipeline/pipeline_agent.js.map +1 -0
  72. package/dist/pipeline/speech_handle.d.ts +27 -0
  73. package/dist/pipeline/speech_handle.d.ts.map +1 -0
  74. package/dist/pipeline/speech_handle.js +102 -0
  75. package/dist/pipeline/speech_handle.js.map +1 -0
  76. package/dist/plugin.js +7 -20
  77. package/dist/plugin.js.map +1 -1
  78. package/dist/stt/index.d.ts +1 -2
  79. package/dist/stt/index.d.ts.map +1 -1
  80. package/dist/stt/index.js +1 -2
  81. package/dist/stt/index.js.map +1 -1
  82. package/dist/stt/stt.d.ts +62 -24
  83. package/dist/stt/stt.d.ts.map +1 -1
  84. package/dist/stt/stt.js +77 -27
  85. package/dist/stt/stt.js.map +1 -1
  86. package/dist/tokenize/basic/basic.d.ts +16 -0
  87. package/dist/tokenize/basic/basic.d.ts.map +1 -0
  88. package/dist/tokenize/basic/basic.js +50 -0
  89. package/dist/tokenize/basic/basic.js.map +1 -0
  90. package/dist/tokenize/basic/hyphenator.d.ts +17 -0
  91. package/dist/tokenize/basic/hyphenator.d.ts.map +1 -0
  92. package/dist/tokenize/basic/hyphenator.js +420 -0
  93. package/dist/tokenize/basic/hyphenator.js.map +1 -0
  94. package/dist/tokenize/basic/index.d.ts +2 -0
  95. package/dist/tokenize/basic/index.d.ts.map +1 -0
  96. package/dist/tokenize/basic/index.js +5 -0
  97. package/dist/tokenize/basic/index.js.map +1 -0
  98. package/dist/tokenize/basic/paragraph.d.ts +5 -0
  99. package/dist/tokenize/basic/paragraph.d.ts.map +1 -0
  100. package/dist/tokenize/basic/paragraph.js +38 -0
  101. package/dist/tokenize/basic/paragraph.js.map +1 -0
  102. package/dist/tokenize/basic/sentence.d.ts +5 -0
  103. package/dist/tokenize/basic/sentence.d.ts.map +1 -0
  104. package/dist/tokenize/basic/sentence.js +60 -0
  105. package/dist/tokenize/basic/sentence.js.map +1 -0
  106. package/dist/tokenize/basic/word.d.ts +5 -0
  107. package/dist/tokenize/basic/word.d.ts.map +1 -0
  108. package/dist/tokenize/basic/word.js +23 -0
  109. package/dist/tokenize/basic/word.js.map +1 -0
  110. package/dist/tokenize/index.d.ts +5 -0
  111. package/dist/tokenize/index.d.ts.map +1 -0
  112. package/dist/tokenize/index.js +8 -0
  113. package/dist/tokenize/index.js.map +1 -0
  114. package/dist/tokenize/token_stream.d.ts +36 -0
  115. package/dist/tokenize/token_stream.d.ts.map +1 -0
  116. package/dist/tokenize/token_stream.js +136 -0
  117. package/dist/tokenize/token_stream.js.map +1 -0
  118. package/dist/tokenize/tokenizer.d.ts +55 -0
  119. package/dist/tokenize/tokenizer.d.ts.map +1 -0
  120. package/dist/tokenize/tokenizer.js +117 -0
  121. package/dist/tokenize/tokenizer.js.map +1 -0
  122. package/dist/transcription.js +78 -89
  123. package/dist/transcription.js.map +1 -1
  124. package/dist/tts/index.d.ts +1 -3
  125. package/dist/tts/index.d.ts.map +1 -1
  126. package/dist/tts/index.js +1 -3
  127. package/dist/tts/index.js.map +1 -1
  128. package/dist/tts/tts.d.ts +66 -37
  129. package/dist/tts/tts.d.ts.map +1 -1
  130. package/dist/tts/tts.js +79 -74
  131. package/dist/tts/tts.js.map +1 -1
  132. package/dist/utils.d.ts +21 -6
  133. package/dist/utils.d.ts.map +1 -1
  134. package/dist/utils.js +120 -76
  135. package/dist/utils.js.map +1 -1
  136. package/dist/vad.d.ts +43 -39
  137. package/dist/vad.d.ts.map +1 -1
  138. package/dist/vad.js +51 -4
  139. package/dist/vad.js.map +1 -1
  140. package/dist/worker.d.ts +1 -1
  141. package/dist/worker.js +257 -247
  142. package/dist/worker.js.map +1 -1
  143. package/package.json +4 -3
  144. package/src/index.ts +16 -2
  145. package/src/ipc/proc_pool.ts +4 -4
  146. package/src/llm/chat_context.ts +147 -0
  147. package/src/llm/function_context.test.ts +248 -0
  148. package/src/llm/function_context.ts +77 -18
  149. package/src/llm/index.ts +21 -2
  150. package/src/llm/llm.ts +102 -0
  151. package/src/multimodal/multimodal_agent.ts +19 -6
  152. package/src/pipeline/agent_output.ts +185 -0
  153. package/src/pipeline/agent_playout.ts +187 -0
  154. package/src/pipeline/human_input.ts +166 -0
  155. package/src/pipeline/index.ts +15 -0
  156. package/src/pipeline/pipeline_agent.ts +917 -0
  157. package/src/pipeline/speech_handle.ts +136 -0
  158. package/src/stt/index.ts +8 -2
  159. package/src/stt/stt.ts +98 -31
  160. package/src/tokenize/basic/basic.ts +73 -0
  161. package/src/tokenize/basic/hyphenator.ts +436 -0
  162. package/src/tokenize/basic/index.ts +5 -0
  163. package/src/tokenize/basic/paragraph.ts +43 -0
  164. package/src/tokenize/basic/sentence.ts +69 -0
  165. package/src/tokenize/basic/word.ts +27 -0
  166. package/src/tokenize/index.ts +16 -0
  167. package/src/tokenize/token_stream.ts +163 -0
  168. package/src/tokenize/tokenizer.ts +152 -0
  169. package/src/tts/index.ts +1 -20
  170. package/src/tts/tts.ts +110 -57
  171. package/src/utils.ts +95 -25
  172. package/src/vad.ts +86 -45
  173. package/tsconfig.tsbuildinfo +1 -1
  174. package/dist/stt/stream_adapter.d.ts +0 -19
  175. package/dist/stt/stream_adapter.d.ts.map +0 -1
  176. package/dist/stt/stream_adapter.js +0 -96
  177. package/dist/stt/stream_adapter.js.map +0 -1
  178. package/dist/tokenize.d.ts +0 -15
  179. package/dist/tokenize.d.ts.map +0 -1
  180. package/dist/tokenize.js +0 -12
  181. package/dist/tokenize.js.map +0 -1
  182. package/dist/tts/stream_adapter.d.ts +0 -19
  183. package/dist/tts/stream_adapter.d.ts.map +0 -1
  184. package/dist/tts/stream_adapter.js +0 -111
  185. package/dist/tts/stream_adapter.js.map +0 -1
  186. package/src/stt/stream_adapter.ts +0 -104
  187. package/src/tokenize.ts +0 -22
  188. 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.registeredPlugins = [];
19
- _Plugin_title.set(this, void 0);
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 __classPrivateFieldGet(this, _Plugin_title, "f");
16
+ return this.#title;
29
17
  }
30
18
  get version() {
31
- return __classPrivateFieldGet(this, _Plugin_version, "f");
19
+ return this.#version;
32
20
  }
33
21
  }
34
- _Plugin_title = new WeakMap(), _Plugin_version = new WeakMap();
35
22
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;;;;;;;;;;;;;AAEtC,MAAM,OAAgB,MAAM;IAK1B,YAAY,KAAa,EAAE,OAAe;QAJ1C,sBAAiB,GAAa,EAAE,CAAC;QACjC,gCAAe;QACf,kCAAiB;QAGf,uBAAA,IAAI,iBAAU,KAAK,MAAA,CAAC;QACpB,uBAAA,IAAI,mBAAY,OAAO,MAAA,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,uBAAA,IAAI,qBAAO,CAAC;IACrB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,uBAAA,IAAI,uBAAS,CAAC;IACvB,CAAC;CACF"}
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"}
@@ -1,3 +1,2 @@
1
- export { STT, SpeechEvent, SpeechEventType, SpeechStream, type SpeechData } from './stt.js';
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
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 { STT, SpeechEvent, SpeechEventType, SpeechStream } from './stt.js';
5
- export { StreamAdapter, StreamAdapterWrapper } from './stream_adapter.js';
4
+ export { SpeechEventType, STT, SpeechStream, } from './stt.js';
6
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAEtC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
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 type { AudioBuffer } from '../utils.js';
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 INTERMIN_TRANSCRIPT.
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
- export declare class SpeechEvent {
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
- export declare abstract class SpeechStream implements IterableIterator<SpeechEvent> {
38
- /**
39
- * Push a frame to be recognised.
40
- * It is recommended to push frames as soon as they are available.
41
- */
42
- abstract pushFrame(token: AudioFrame): void;
43
- /**
44
- * Close the stream.
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(streamingSupported: boolean);
57
- abstract recognize(buffer: AudioBuffer, language?: string): Promise<SpeechEvent>;
58
- abstract stream(language: string | undefined): SpeechStream;
59
- get streamingSupported(): boolean;
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
@@ -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,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,oBAAY,eAAe;IACzB;;;;OAIG;IACH,eAAe,IAAI;IACnB;;OAEG;IACH,kBAAkB,IAAI;IACtB;;;OAGG;IACH,gBAAgB,IAAI;IACpB;;;OAGG;IACH,aAAa,IAAI;CAClB;AAED,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,qBAAa,WAAW;IACtB,IAAI,EAAE,eAAe,CAAC;IACtB,YAAY,EAAE,UAAU,EAAE,CAAC;gBAEf,IAAI,EAAE,eAAe,EAAE,YAAY,GAAE,UAAU,EAAO;CAInE;AAED,8BAAsB,YAAa,YAAW,gBAAgB,CAAC,WAAW,CAAC;IACzE;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAE3C;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5C,QAAQ,CAAC,IAAI,IAAI,cAAc,CAAC,WAAW,CAAC;IAE5C,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,YAAY;CAGlC;AAED,8BAAsB,GAAG;;gBAGX,kBAAkB,EAAE,OAAO;IAIvC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAEhF,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY;IAE3D,IAAI,kBAAkB,IAAI,OAAO,CAEhC;CACF"}
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
- 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 _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 INTERMIN_TRANSCRIPT.
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
- export class SpeechEvent {
37
- constructor(type, alternatives = []) {
38
- this.type = type;
39
- this.alternatives = alternatives;
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
- [Symbol.iterator]() {
44
- return this;
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
- export class STT {
48
- constructor(streamingSupported) {
49
- _STT_streamingSupported.set(this, void 0);
50
- __classPrivateFieldSet(this, _STT_streamingSupported, streamingSupported, "f");
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
- get streamingSupported() {
53
- return __classPrivateFieldGet(this, _STT_streamingSupported, "f");
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
@@ -1 +1 @@
1
- {"version":3,"file":"stt.js","sourceRoot":"","sources":["../../src/stt/stt.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,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;AAUD,MAAM,OAAO,WAAW;IAItB,YAAY,IAAqB,EAAE,eAA6B,EAAE;QAChE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAgB,YAAY;IAkBhC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,OAAgB,GAAG;IAGvB,YAAY,kBAA2B;QAFvC,0CAA6B;QAG3B,uBAAA,IAAI,2BAAuB,kBAAkB,MAAA,CAAC;IAChD,CAAC;IAMD,IAAI,kBAAkB;QACpB,OAAO,uBAAA,IAAI,+BAAoB,CAAC;IAClC,CAAC;CACF"}
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"}