speechflow 1.7.1 → 2.0.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.
Files changed (177) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +388 -120
  3. package/etc/claude.md +5 -5
  4. package/etc/speechflow.yaml +2 -2
  5. package/package.json +3 -3
  6. package/speechflow-cli/dst/speechflow-main-api.js.map +1 -1
  7. package/speechflow-cli/dst/speechflow-main-cli.js +1 -0
  8. package/speechflow-cli/dst/speechflow-main-cli.js.map +1 -1
  9. package/speechflow-cli/dst/speechflow-main-graph.d.ts +1 -0
  10. package/speechflow-cli/dst/speechflow-main-graph.js +30 -9
  11. package/speechflow-cli/dst/speechflow-main-graph.js.map +1 -1
  12. package/speechflow-cli/dst/speechflow-main-nodes.js +1 -0
  13. package/speechflow-cli/dst/speechflow-main-nodes.js.map +1 -1
  14. package/speechflow-cli/dst/speechflow-node-a2a-compressor-wt.js +1 -0
  15. package/speechflow-cli/dst/speechflow-node-a2a-compressor-wt.js.map +1 -1
  16. package/speechflow-cli/dst/speechflow-node-a2a-compressor.js +7 -9
  17. package/speechflow-cli/dst/speechflow-node-a2a-compressor.js.map +1 -1
  18. package/speechflow-cli/dst/speechflow-node-a2a-expander-wt.js +1 -0
  19. package/speechflow-cli/dst/speechflow-node-a2a-expander-wt.js.map +1 -1
  20. package/speechflow-cli/dst/speechflow-node-a2a-expander.js +8 -9
  21. package/speechflow-cli/dst/speechflow-node-a2a-expander.js.map +1 -1
  22. package/speechflow-cli/dst/speechflow-node-a2a-filler.js +2 -0
  23. package/speechflow-cli/dst/speechflow-node-a2a-filler.js.map +1 -1
  24. package/speechflow-cli/dst/speechflow-node-a2a-gender.js +1 -1
  25. package/speechflow-cli/dst/speechflow-node-a2a-gender.js.map +1 -1
  26. package/speechflow-cli/dst/speechflow-node-a2a-meter.js +1 -1
  27. package/speechflow-cli/dst/speechflow-node-a2a-pitch.js +11 -9
  28. package/speechflow-cli/dst/speechflow-node-a2a-pitch.js.map +1 -1
  29. package/speechflow-cli/dst/speechflow-node-a2a-rnnoise-wt.js +1 -0
  30. package/speechflow-cli/dst/speechflow-node-a2a-rnnoise-wt.js.map +1 -1
  31. package/speechflow-cli/dst/speechflow-node-a2a-rnnoise.js.map +1 -1
  32. package/speechflow-cli/dst/speechflow-node-a2a-speex.js +4 -2
  33. package/speechflow-cli/dst/speechflow-node-a2a-speex.js.map +1 -1
  34. package/speechflow-cli/dst/speechflow-node-a2a-vad.js +19 -22
  35. package/speechflow-cli/dst/speechflow-node-a2a-vad.js.map +1 -1
  36. package/speechflow-cli/dst/speechflow-node-a2a-wav.js +31 -4
  37. package/speechflow-cli/dst/speechflow-node-a2a-wav.js.map +1 -1
  38. package/speechflow-cli/dst/speechflow-node-a2t-amazon.d.ts +0 -1
  39. package/speechflow-cli/dst/speechflow-node-a2t-amazon.js +2 -11
  40. package/speechflow-cli/dst/speechflow-node-a2t-amazon.js.map +1 -1
  41. package/speechflow-cli/dst/speechflow-node-a2t-google.d.ts +16 -0
  42. package/speechflow-cli/dst/speechflow-node-a2t-google.js +314 -0
  43. package/speechflow-cli/dst/speechflow-node-a2t-google.js.map +1 -0
  44. package/speechflow-cli/dst/speechflow-node-a2t-openai.js +6 -1
  45. package/speechflow-cli/dst/speechflow-node-a2t-openai.js.map +1 -1
  46. package/speechflow-cli/dst/speechflow-node-t2a-amazon.d.ts +1 -1
  47. package/speechflow-cli/dst/speechflow-node-t2a-amazon.js +27 -7
  48. package/speechflow-cli/dst/speechflow-node-t2a-amazon.js.map +1 -1
  49. package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.d.ts +1 -1
  50. package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.js +5 -3
  51. package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.js.map +1 -1
  52. package/speechflow-cli/dst/speechflow-node-t2a-google.d.ts +15 -0
  53. package/speechflow-cli/dst/speechflow-node-t2a-google.js +215 -0
  54. package/speechflow-cli/dst/speechflow-node-t2a-google.js.map +1 -0
  55. package/speechflow-cli/dst/speechflow-node-t2a-kokoro.d.ts +1 -1
  56. package/speechflow-cli/dst/speechflow-node-t2a-kokoro.js +27 -6
  57. package/speechflow-cli/dst/speechflow-node-t2a-kokoro.js.map +1 -1
  58. package/speechflow-cli/dst/speechflow-node-t2a-openai.d.ts +15 -0
  59. package/speechflow-cli/dst/speechflow-node-t2a-openai.js +192 -0
  60. package/speechflow-cli/dst/speechflow-node-t2a-openai.js.map +1 -0
  61. package/speechflow-cli/dst/speechflow-node-t2a-supertonic.d.ts +17 -0
  62. package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js +619 -0
  63. package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js.map +1 -0
  64. package/speechflow-cli/dst/speechflow-node-t2t-amazon.js +0 -2
  65. package/speechflow-cli/dst/speechflow-node-t2t-amazon.js.map +1 -1
  66. package/speechflow-cli/dst/speechflow-node-t2t-deepl.js.map +1 -1
  67. package/speechflow-cli/dst/speechflow-node-t2t-google.js.map +1 -1
  68. package/speechflow-cli/dst/{speechflow-node-t2t-transformers.d.ts → speechflow-node-t2t-opus.d.ts} +1 -3
  69. package/speechflow-cli/dst/speechflow-node-t2t-opus.js +161 -0
  70. package/speechflow-cli/dst/speechflow-node-t2t-opus.js.map +1 -0
  71. package/speechflow-cli/dst/speechflow-node-t2t-profanity.d.ts +11 -0
  72. package/speechflow-cli/dst/speechflow-node-t2t-profanity.js +118 -0
  73. package/speechflow-cli/dst/speechflow-node-t2t-profanity.js.map +1 -0
  74. package/speechflow-cli/dst/speechflow-node-t2t-punctuation.d.ts +13 -0
  75. package/speechflow-cli/dst/speechflow-node-t2t-punctuation.js +220 -0
  76. package/speechflow-cli/dst/speechflow-node-t2t-punctuation.js.map +1 -0
  77. package/speechflow-cli/dst/{speechflow-node-t2t-openai.d.ts → speechflow-node-t2t-spellcheck.d.ts} +2 -2
  78. package/speechflow-cli/dst/{speechflow-node-t2t-openai.js → speechflow-node-t2t-spellcheck.js} +48 -100
  79. package/speechflow-cli/dst/speechflow-node-t2t-spellcheck.js.map +1 -0
  80. package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js +8 -8
  81. package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js.map +1 -1
  82. package/speechflow-cli/dst/speechflow-node-t2t-summary.d.ts +16 -0
  83. package/speechflow-cli/dst/speechflow-node-t2t-summary.js +241 -0
  84. package/speechflow-cli/dst/speechflow-node-t2t-summary.js.map +1 -0
  85. package/speechflow-cli/dst/{speechflow-node-t2t-ollama.d.ts → speechflow-node-t2t-translate.d.ts} +2 -2
  86. package/speechflow-cli/dst/{speechflow-node-t2t-transformers.js → speechflow-node-t2t-translate.js} +53 -115
  87. package/speechflow-cli/dst/speechflow-node-t2t-translate.js.map +1 -0
  88. package/speechflow-cli/dst/speechflow-node-x2x-filter.js +2 -0
  89. package/speechflow-cli/dst/speechflow-node-x2x-filter.js.map +1 -1
  90. package/speechflow-cli/dst/speechflow-node-xio-exec.d.ts +12 -0
  91. package/speechflow-cli/dst/speechflow-node-xio-exec.js +224 -0
  92. package/speechflow-cli/dst/speechflow-node-xio-exec.js.map +1 -0
  93. package/speechflow-cli/dst/speechflow-node-xio-file.d.ts +1 -0
  94. package/speechflow-cli/dst/speechflow-node-xio-file.js +78 -67
  95. package/speechflow-cli/dst/speechflow-node-xio-file.js.map +1 -1
  96. package/speechflow-cli/dst/speechflow-node-xio-mqtt.js.map +1 -1
  97. package/speechflow-cli/dst/speechflow-node-xio-vban.d.ts +17 -0
  98. package/speechflow-cli/dst/speechflow-node-xio-vban.js +330 -0
  99. package/speechflow-cli/dst/speechflow-node-xio-vban.js.map +1 -0
  100. package/speechflow-cli/dst/speechflow-node-xio-webrtc.d.ts +39 -0
  101. package/speechflow-cli/dst/speechflow-node-xio-webrtc.js +502 -0
  102. package/speechflow-cli/dst/speechflow-node-xio-webrtc.js.map +1 -0
  103. package/speechflow-cli/dst/speechflow-node-xio-websocket.js +9 -9
  104. package/speechflow-cli/dst/speechflow-node-xio-websocket.js.map +1 -1
  105. package/speechflow-cli/dst/speechflow-util-audio.js +8 -5
  106. package/speechflow-cli/dst/speechflow-util-audio.js.map +1 -1
  107. package/speechflow-cli/dst/speechflow-util-error.d.ts +1 -0
  108. package/speechflow-cli/dst/speechflow-util-error.js +5 -0
  109. package/speechflow-cli/dst/speechflow-util-error.js.map +1 -1
  110. package/speechflow-cli/dst/speechflow-util-llm.d.ts +35 -0
  111. package/speechflow-cli/dst/speechflow-util-llm.js +363 -0
  112. package/speechflow-cli/dst/speechflow-util-llm.js.map +1 -0
  113. package/speechflow-cli/dst/speechflow-util-queue.js +2 -1
  114. package/speechflow-cli/dst/speechflow-util-queue.js.map +1 -1
  115. package/speechflow-cli/dst/speechflow-util.d.ts +1 -0
  116. package/speechflow-cli/dst/speechflow-util.js +2 -0
  117. package/speechflow-cli/dst/speechflow-util.js.map +1 -1
  118. package/speechflow-cli/etc/oxlint.jsonc +2 -1
  119. package/speechflow-cli/package.json +35 -18
  120. package/speechflow-cli/src/lib.d.ts +5 -0
  121. package/speechflow-cli/src/speechflow-main-api.ts +16 -16
  122. package/speechflow-cli/src/speechflow-main-cli.ts +1 -0
  123. package/speechflow-cli/src/speechflow-main-graph.ts +38 -14
  124. package/speechflow-cli/src/speechflow-main-nodes.ts +1 -0
  125. package/speechflow-cli/src/speechflow-node-a2a-compressor-wt.ts +1 -0
  126. package/speechflow-cli/src/speechflow-node-a2a-compressor.ts +8 -10
  127. package/speechflow-cli/src/speechflow-node-a2a-expander-wt.ts +1 -0
  128. package/speechflow-cli/src/speechflow-node-a2a-expander.ts +9 -10
  129. package/speechflow-cli/src/speechflow-node-a2a-filler.ts +2 -0
  130. package/speechflow-cli/src/speechflow-node-a2a-gender.ts +3 -3
  131. package/speechflow-cli/src/speechflow-node-a2a-meter.ts +2 -2
  132. package/speechflow-cli/src/speechflow-node-a2a-pitch.ts +11 -9
  133. package/speechflow-cli/src/speechflow-node-a2a-rnnoise-wt.ts +1 -0
  134. package/speechflow-cli/src/speechflow-node-a2a-rnnoise.ts +1 -1
  135. package/speechflow-cli/src/speechflow-node-a2a-speex.ts +5 -3
  136. package/speechflow-cli/src/speechflow-node-a2a-vad.ts +20 -23
  137. package/speechflow-cli/src/speechflow-node-a2a-wav.ts +31 -4
  138. package/speechflow-cli/src/speechflow-node-a2t-amazon.ts +6 -18
  139. package/speechflow-cli/src/speechflow-node-a2t-google.ts +315 -0
  140. package/speechflow-cli/src/speechflow-node-a2t-openai.ts +12 -7
  141. package/speechflow-cli/src/speechflow-node-t2a-amazon.ts +32 -10
  142. package/speechflow-cli/src/speechflow-node-t2a-elevenlabs.ts +6 -4
  143. package/speechflow-cli/src/speechflow-node-t2a-google.ts +203 -0
  144. package/speechflow-cli/src/speechflow-node-t2a-kokoro.ts +33 -10
  145. package/speechflow-cli/src/speechflow-node-t2a-openai.ts +176 -0
  146. package/speechflow-cli/src/speechflow-node-t2a-supertonic.ts +710 -0
  147. package/speechflow-cli/src/speechflow-node-t2t-amazon.ts +3 -4
  148. package/speechflow-cli/src/speechflow-node-t2t-deepl.ts +2 -2
  149. package/speechflow-cli/src/speechflow-node-t2t-google.ts +1 -1
  150. package/speechflow-cli/src/speechflow-node-t2t-opus.ts +137 -0
  151. package/speechflow-cli/src/speechflow-node-t2t-profanity.ts +93 -0
  152. package/speechflow-cli/src/speechflow-node-t2t-punctuation.ts +201 -0
  153. package/speechflow-cli/src/speechflow-node-t2t-spellcheck.ts +188 -0
  154. package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +8 -8
  155. package/speechflow-cli/src/speechflow-node-t2t-summary.ts +229 -0
  156. package/speechflow-cli/src/speechflow-node-t2t-translate.ts +181 -0
  157. package/speechflow-cli/src/speechflow-node-x2x-filter.ts +2 -0
  158. package/speechflow-cli/src/speechflow-node-xio-exec.ts +211 -0
  159. package/speechflow-cli/src/speechflow-node-xio-file.ts +91 -80
  160. package/speechflow-cli/src/speechflow-node-xio-mqtt.ts +2 -2
  161. package/speechflow-cli/src/speechflow-node-xio-vban.ts +325 -0
  162. package/speechflow-cli/src/speechflow-node-xio-webrtc.ts +535 -0
  163. package/speechflow-cli/src/speechflow-node-xio-websocket.ts +9 -9
  164. package/speechflow-cli/src/speechflow-util-audio.ts +10 -5
  165. package/speechflow-cli/src/speechflow-util-error.ts +9 -0
  166. package/speechflow-cli/src/speechflow-util-llm.ts +367 -0
  167. package/speechflow-cli/src/speechflow-util-queue.ts +3 -3
  168. package/speechflow-cli/src/speechflow-util.ts +2 -0
  169. package/speechflow-ui-db/package.json +9 -9
  170. package/speechflow-ui-st/package.json +9 -9
  171. package/speechflow-cli/dst/speechflow-node-t2t-ollama.js +0 -293
  172. package/speechflow-cli/dst/speechflow-node-t2t-ollama.js.map +0 -1
  173. package/speechflow-cli/dst/speechflow-node-t2t-openai.js.map +0 -1
  174. package/speechflow-cli/dst/speechflow-node-t2t-transformers.js.map +0 -1
  175. package/speechflow-cli/src/speechflow-node-t2t-ollama.ts +0 -281
  176. package/speechflow-cli/src/speechflow-node-t2t-openai.ts +0 -247
  177. package/speechflow-cli/src/speechflow-node-t2t-transformers.ts +0 -247
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ /*
3
+ ** SpeechFlow - Speech Processing Flow Graph
4
+ ** Copyright (c) 2024-2025 Dr. Ralf S. Engelschall <rse@engelschall.com>
5
+ ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ /* standard dependencies */
45
+ const node_stream_1 = __importDefault(require("node:stream"));
46
+ /* internal dependencies */
47
+ const speechflow_node_1 = __importStar(require("./speechflow-node"));
48
+ const util = __importStar(require("./speechflow-util"));
49
+ const speechflow_util_llm_1 = require("./speechflow-util-llm");
50
+ /* SpeechFlow node for text-to-text summarization */
51
+ class SpeechFlowNodeT2TSummary extends speechflow_node_1.default {
52
+ /* declare official node name */
53
+ static name = "t2t-summary";
54
+ /* internal state */
55
+ llm = null;
56
+ accumulatedText = "";
57
+ sentencesSinceLastSummary = 0;
58
+ /* internal LLM setup */
59
+ setup = {
60
+ /* English (EN) summarization */
61
+ "en": {
62
+ systemPrompt: "You are a text summarizer.\n" +
63
+ "Output only the summary.\n" +
64
+ "Do NOT use markdown.\n" +
65
+ "Do NOT give any explanations.\n" +
66
+ "Do NOT give any introduction.\n" +
67
+ "Do NOT give any comments.\n" +
68
+ "Do NOT give any preamble.\n" +
69
+ "Do NOT give any prolog.\n" +
70
+ "Do NOT give any epilog.\n" +
71
+ "Get to the point.\n" +
72
+ "Summarize the following text into %N% sentences.\n" +
73
+ "The text is:\n",
74
+ chat: [
75
+ { role: "user", content: "The weather today is sunny and warm. Birds are singing in the trees. People are enjoying the outdoors." },
76
+ { role: "assistant", content: "The weather is pleasant with sunshine, birdsong, and people outdoors." },
77
+ { role: "user", content: "John went to the store to buy groceries. He needed milk, bread, and eggs. The store was crowded but he found everything he needed." },
78
+ { role: "assistant", content: "John successfully bought milk, bread, and eggs from a crowded store." }
79
+ ]
80
+ },
81
+ /* German (DE) summarization */
82
+ "de": {
83
+ systemPrompt: "Du bist ein Textzusammenfasser.\n" +
84
+ "Gib nur die Zusammenfassung aus.\n" +
85
+ "Benutze KEIN Markdown.\n" +
86
+ "Gib KEINE Erklärungen.\n" +
87
+ "Gib KEINE Einleitung.\n" +
88
+ "Gib KEINE Kommentare.\n" +
89
+ "Gib KEINE Präambel.\n" +
90
+ "Gib KEINEN Prolog.\n" +
91
+ "Gib KEINEN Epilog.\n" +
92
+ "Komme auf den Punkt.\n" +
93
+ "Fasse den folgenden Text in %N% Sätzen zusammen.\n" +
94
+ "Der Text ist:\n",
95
+ chat: [
96
+ { role: "user", content: "Das Wetter heute ist sonnig und warm. Vögel singen in den Bäumen. Die Menschen genießen die Zeit im Freien." },
97
+ { role: "assistant", content: "Das Wetter ist angenehm mit Sonnenschein, Vogelgesang und Menschen im Freien." },
98
+ { role: "user", content: "Hans ging in den Laden, um Lebensmittel zu kaufen. Er brauchte Milch, Brot und Eier. Der Laden war voll, aber er fand alles, was er brauchte." },
99
+ { role: "assistant", content: "Hans kaufte erfolgreich Milch, Brot und Eier in einem vollen Laden." }
100
+ ]
101
+ }
102
+ };
103
+ /* construct node */
104
+ constructor(id, cfg, opts, args) {
105
+ super(id, cfg, opts, args);
106
+ /* declare node configuration parameters */
107
+ this.configure({
108
+ provider: { type: "string", val: "ollama", match: /^(?:openai|anthropic|google|ollama|transformers)$/ },
109
+ api: { type: "string", val: "http://127.0.0.1:11434", match: /^https?:\/\/.+?(:\d+)?$/ },
110
+ model: { type: "string", val: "gemma3:4b-it-q4_K_M", match: /^.+$/ },
111
+ key: { type: "string", val: "", match: /^.*$/ },
112
+ lang: { type: "string", pos: 0, val: "en", match: /^(?:en|de)$/ },
113
+ size: { type: "number", pos: 1, val: 4, match: (n) => n >= 1 && n <= 20 },
114
+ trigger: { type: "number", pos: 2, val: 8, match: (n) => n >= 1 && n <= 100 }
115
+ });
116
+ /* tell effective mode */
117
+ this.log("info", `summarizing language "${this.params.lang}" ` +
118
+ `via ${this.params.provider} LLM (model: ${this.params.model}), ` +
119
+ `triggering every new ${this.params.trigger} sentences, ` +
120
+ `summarizing into ${this.params.size} sentences`);
121
+ /* declare node input/output format */
122
+ this.input = "text";
123
+ this.output = "text";
124
+ }
125
+ /* count sentences in text */
126
+ countSentences(text) {
127
+ const matches = text.match(/[.;?!]/g);
128
+ return matches ? matches.length : 0;
129
+ }
130
+ /* open node */
131
+ async open() {
132
+ /* reset internal state */
133
+ this.accumulatedText = "";
134
+ this.sentencesSinceLastSummary = 0;
135
+ /* instantiate LLM */
136
+ this.llm = new speechflow_util_llm_1.LLM({
137
+ provider: this.params.provider,
138
+ api: this.params.api,
139
+ model: this.params.model,
140
+ key: this.params.key,
141
+ temperature: 0.7,
142
+ topP: 0.5
143
+ });
144
+ this.llm.on("log", (level, message) => {
145
+ this.log(level, message);
146
+ });
147
+ await this.llm.open();
148
+ /* provide text summarization */
149
+ const llm = this.llm;
150
+ const summarize = async (text) => {
151
+ const cfg = this.setup[this.params.lang];
152
+ if (!cfg)
153
+ throw new Error(`unsupported language: ${this.params.lang}`);
154
+ return llm.complete({
155
+ system: cfg.systemPrompt.replace(/%N%/, this.params.size),
156
+ messages: cfg.chat,
157
+ prompt: text
158
+ });
159
+ };
160
+ /* establish a transform stream for summarization */
161
+ const self = this;
162
+ this.stream = new node_stream_1.default.Transform({
163
+ readableObjectMode: true,
164
+ writableObjectMode: true,
165
+ decodeStrings: false,
166
+ highWaterMark: 1,
167
+ transform(chunk, encoding, callback) {
168
+ if (Buffer.isBuffer(chunk.payload))
169
+ callback(new Error("invalid chunk payload type"));
170
+ else if (chunk.payload === "") {
171
+ this.push(chunk);
172
+ callback();
173
+ }
174
+ else {
175
+ /* accumulate text */
176
+ if (self.accumulatedText.length > 0)
177
+ self.accumulatedText += " ";
178
+ self.accumulatedText += chunk.payload;
179
+ /* count new sentences */
180
+ const newSentences = self.countSentences(chunk.payload);
181
+ self.sentencesSinceLastSummary += newSentences;
182
+ self.log("info", `accumulated ${self.sentencesSinceLastSummary} sentences ` +
183
+ `(trigger: ${self.params.trigger})`);
184
+ /* check if we should generate a summary */
185
+ if (self.sentencesSinceLastSummary >= self.params.trigger) {
186
+ self.sentencesSinceLastSummary = 0;
187
+ self.log("info", `generating summary of accumulated text`);
188
+ const textToSummarize = self.accumulatedText;
189
+ self.accumulatedText = "";
190
+ summarize(textToSummarize).then((summary) => {
191
+ const chunkNew = chunk.clone();
192
+ chunkNew.payload = summary;
193
+ this.push(chunkNew);
194
+ callback();
195
+ }).catch((error) => {
196
+ callback(util.ensureError(error));
197
+ });
198
+ }
199
+ else
200
+ callback();
201
+ }
202
+ },
203
+ final(callback) {
204
+ /* generate final summary if there is accumulated text */
205
+ if (self.accumulatedText.length > 0 && self.sentencesSinceLastSummary > 0) {
206
+ self.sentencesSinceLastSummary = 0;
207
+ self.log("info", `generating final summary of accumulated text`);
208
+ const textToSummarize = self.accumulatedText;
209
+ self.accumulatedText = "";
210
+ summarize(textToSummarize).then((summary) => {
211
+ const chunkNew = new speechflow_node_1.SpeechFlowChunk(self.timeZeroOffset, self.timeZeroOffset, "final", "text", summary);
212
+ this.push(chunkNew);
213
+ callback();
214
+ }).catch((error) => {
215
+ callback(util.ensureError(error));
216
+ });
217
+ }
218
+ else
219
+ callback();
220
+ }
221
+ });
222
+ }
223
+ /* close node */
224
+ async close() {
225
+ /* reset internal state */
226
+ this.accumulatedText = "";
227
+ this.sentencesSinceLastSummary = 0;
228
+ /* shutdown stream */
229
+ if (this.stream !== null) {
230
+ await util.destroyStream(this.stream);
231
+ this.stream = null;
232
+ }
233
+ /* shutdown LLM */
234
+ if (this.llm !== null) {
235
+ await this.llm.close();
236
+ this.llm = null;
237
+ }
238
+ }
239
+ }
240
+ exports.default = SpeechFlowNodeT2TSummary;
241
+ //# sourceMappingURL=speechflow-node-t2t-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speechflow-node-t2t-summary.js","sourceRoot":"","sources":["../src/speechflow-node-t2t-summary.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,6BAA6B;AAC7B,8DAA6D;AAE7D,6BAA6B;AAC7B,qEAAmE;AACnE,wDAAmE;AACnE,+DAAuE;AAMvE,sDAAsD;AACtD,MAAqB,wBAAyB,SAAQ,yBAAc;IAChE,kCAAkC;IAC3B,MAAM,CAAC,IAAI,GAAG,aAAa,CAAA;IAElC,sBAAsB;IACd,GAAG,GAAe,IAAI,CAAA;IACtB,eAAe,GAAG,EAAE,CAAA;IACpB,yBAAyB,GAAG,CAAC,CAAA;IAErC,0BAA0B;IAClB,KAAK,GAAW;QACpB,kCAAkC;QAClC,IAAI,EAAE;YACF,YAAY,EACR,8BAA8B;gBAC9B,4BAA4B;gBAC5B,wBAAwB;gBACxB,iCAAiC;gBACjC,iCAAiC;gBACjC,6BAA6B;gBAC7B,6BAA6B;gBAC7B,2BAA2B;gBAC3B,2BAA2B;gBAC3B,qBAAqB;gBACrB,oDAAoD;gBACpD,gBAAgB;YACpB,IAAI,EAAE;gBACF,EAAE,IAAI,EAAE,MAAM,EAAO,OAAO,EAAE,wGAAwG,EAAE;gBACxI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,uEAAuE,EAAE;gBACvG,EAAE,IAAI,EAAE,MAAM,EAAO,OAAO,EAAE,oIAAoI,EAAE;gBACpK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,sEAAsE,EAAE;aACzG;SACJ;QAED,iCAAiC;QACjC,IAAI,EAAE;YACF,YAAY,EACR,mCAAmC;gBACnC,oCAAoC;gBACpC,0BAA0B;gBAC1B,0BAA0B;gBAC1B,yBAAyB;gBACzB,yBAAyB;gBACzB,uBAAuB;gBACvB,sBAAsB;gBACtB,sBAAsB;gBACtB,wBAAwB;gBACxB,oDAAoD;gBACpD,iBAAiB;YACrB,IAAI,EAAE;gBACF,EAAE,IAAI,EAAE,MAAM,EAAO,OAAO,EAAE,6GAA6G,EAAE;gBAC7I,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,+EAA+E,EAAE;gBAC/G,EAAE,IAAI,EAAE,MAAM,EAAO,OAAO,EAAE,+IAA+I,EAAE;gBAC/K,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,qEAAqE,EAAE;aACxG;SACJ;KACJ,CAAA;IAED,sBAAsB;IACtB,YAAa,EAAU,EAAE,GAA4B,EAAE,IAA6B,EAAE,IAAW;QAC7F,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE1B,6CAA6C;QAC7C,IAAI,CAAC,SAAS,CAAC;YACX,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAU,GAAG,EAAE,QAAQ,EAAkB,KAAK,EAAE,mDAAmD,EAAE;YAC/H,GAAG,EAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,yBAAyB,EAAE;YACrG,KAAK,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAU,GAAG,EAAE,qBAAqB,EAAK,KAAK,EAAE,MAAM,EAAE;YAClF,GAAG,EAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,GAAG,EAAE,EAAE,EAAwB,KAAK,EAAE,MAAM,EAAE;YAClF,IAAI,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAsB,KAAK,EAAE,aAAa,EAAE;YACzF,IAAI,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAyB,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YAC5G,OAAO,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAyB,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;SAChH,CAAC,CAAA;QAEF,2BAA2B;QAC3B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI;YAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK;YACjE,wBAAwB,IAAI,CAAC,MAAM,CAAC,OAAO,cAAc;YACzD,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,CAAA;QAErD,wCAAwC;QACxC,IAAI,CAAC,KAAK,GAAI,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,+BAA+B;IACvB,cAAc,CAAE,IAAY;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACrC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,IAAI;QACN,4BAA4B;QAC5B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAA;QAElC,uBAAuB;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,yBAAG,CAAC;YACf,QAAQ,EAAK,IAAI,CAAC,MAAM,CAAC,QAAQ;YACjC,GAAG,EAAU,IAAI,CAAC,MAAM,CAAC,GAAG;YAC5B,KAAK,EAAQ,IAAI,CAAC,MAAM,CAAC,KAAK;YAC9B,GAAG,EAAU,IAAI,CAAC,MAAM,CAAC,GAAG;YAC5B,WAAW,EAAE,GAAG;YAChB,IAAI,EAAS,GAAG;SACnB,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE;YAClD,IAAI,CAAC,GAAG,CAAC,KAAqC,EAAE,OAAO,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAErB,kCAAkC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAI,CAAA;QACrB,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,CAAC,GAAG;gBACJ,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YAChE,OAAO,GAAG,CAAC,QAAQ,CAAC;gBAChB,MAAM,EAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC3D,QAAQ,EAAE,GAAG,CAAC,IAAI;gBAClB,MAAM,EAAI,IAAI;aACjB,CAAC,CAAA;QACN,CAAC,CAAA;QAED,sDAAsD;QACtD,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAM,CAAC,SAAS,CAAC;YAC/B,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAO,KAAK;YACzB,aAAa,EAAO,CAAC;YACrB,SAAS,CAAE,KAAsB,EAAE,QAAQ,EAAE,QAAQ;gBACjD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC9B,QAAQ,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAA;qBAChD,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;oBAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAChB,QAAQ,EAAE,CAAA;gBACd,CAAC;qBACI,CAAC;oBACF,uBAAuB;oBACvB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;wBAC/B,IAAI,CAAC,eAAe,IAAI,GAAG,CAAA;oBAC/B,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,CAAA;oBAErC,2BAA2B;oBAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBACvD,IAAI,CAAC,yBAAyB,IAAI,YAAY,CAAA;oBAC9C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,IAAI,CAAC,yBAAyB,aAAa;wBACvE,aAAa,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;oBAExC,6CAA6C;oBAC7C,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACxD,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAA;wBAClC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,wCAAwC,CAAC,CAAA;wBAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;wBAC5C,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;wBACzB,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;4BACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;4BAC9B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;4BAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;4BACnB,QAAQ,EAAE,CAAA;wBACd,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;4BACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;wBACrC,CAAC,CAAC,CAAA;oBACN,CAAC;;wBAEG,QAAQ,EAAE,CAAA;gBAClB,CAAC;YACL,CAAC;YACD,KAAK,CAAE,QAAQ;gBACX,2DAA2D;gBAC3D,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC,EAAE,CAAC;oBACxE,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAA;oBAClC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAA;oBAChE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;oBAC5C,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;oBACzB,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;wBACxC,MAAM,QAAQ,GAAG,IAAI,iCAAe,CAChC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EACxC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;wBAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;wBACnB,QAAQ,EAAE,CAAA;oBACd,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;wBACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;oBACrC,CAAC,CAAC,CAAA;gBACN,CAAC;;oBAEG,QAAQ,EAAE,CAAA;YAClB,CAAC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,KAAK;QACP,4BAA4B;QAC5B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAA;QAElC,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QACtB,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;YACtB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;QACnB,CAAC;IACL,CAAC;;AAhNL,2CAiNC"}
@@ -1,7 +1,7 @@
1
1
  import SpeechFlowNode from "./speechflow-node";
2
- export default class SpeechFlowNodeT2TOllama extends SpeechFlowNode {
2
+ export default class SpeechFlowNodeT2TTranslate extends SpeechFlowNode {
3
3
  static name: string;
4
- private ollama;
4
+ private llm;
5
5
  private setup;
6
6
  constructor(id: string, cfg: {
7
7
  [id: string]: any;
@@ -42,26 +42,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
42
42
  };
43
43
  Object.defineProperty(exports, "__esModule", { value: true });
44
44
  /* standard dependencies */
45
- const node_path_1 = __importDefault(require("node:path"));
46
45
  const node_stream_1 = __importDefault(require("node:stream"));
47
- /* external dependencies */
48
- const Transformers = __importStar(require("@huggingface/transformers"));
49
46
  /* internal dependencies */
50
47
  const speechflow_node_1 = __importDefault(require("./speechflow-node"));
51
48
  const util = __importStar(require("./speechflow-util"));
52
- /* SpeechFlow node for Transformers text-to-text translation */
53
- class SpeechFlowNodeT2TTransformers extends speechflow_node_1.default {
49
+ const speechflow_util_llm_1 = require("./speechflow-util-llm");
50
+ /* SpeechFlow node for LLM-based text-to-text translation */
51
+ class SpeechFlowNodeT2TTranslate extends speechflow_node_1.default {
54
52
  /* declare official node name */
55
- static name = "t2t-transformers";
53
+ static name = "t2t-translate";
56
54
  /* internal state */
57
- translator = null;
58
- generator = null;
55
+ llm = null;
59
56
  /* internal LLM setup */
60
57
  setup = {
61
- /* SmolLM3: English (EN) to German (DE) translation */
62
- "SmolLM3:en-de": {
63
- systemPrompt: "/no_think\n" +
64
- "You are a translator.\n" +
58
+ /* English (EN) to German (DE) translation */
59
+ "en-de": {
60
+ systemPrompt: "You are a translator.\n" +
65
61
  "Output only the requested text.\n" +
66
62
  "Do not use markdown.\n" +
67
63
  "Do not chat.\n" +
@@ -82,10 +78,9 @@ class SpeechFlowNodeT2TTransformers extends speechflow_node_1.default {
82
78
  { role: "assistant", content: "Das Leben ist einfach großartig." }
83
79
  ]
84
80
  },
85
- /* SmolLM3: German (DE) to English (EN) translation */
86
- "SmolLM3:de-en": {
87
- systemPrompt: "/no_think\n" +
88
- "You are a translator.\n" +
81
+ /* German (DE) to English (EN) translation */
82
+ "de-en": {
83
+ systemPrompt: "You are a translator.\n" +
89
84
  "Output only the requested text.\n" +
90
85
  "Do not use markdown.\n" +
91
86
  "Do not chat.\n" +
@@ -114,102 +109,50 @@ class SpeechFlowNodeT2TTransformers extends speechflow_node_1.default {
114
109
  this.configure({
115
110
  src: { type: "string", pos: 0, val: "de", match: /^(?:de|en)$/ },
116
111
  dst: { type: "string", pos: 1, val: "en", match: /^(?:de|en)$/ },
117
- model: { type: "string", val: "OPUS", match: /^(?:OPUS|SmolLM3)$/ }
112
+ provider: { type: "string", val: "ollama", match: /^(?:openai|anthropic|google|ollama|transformers)$/ },
113
+ api: { type: "string", val: "http://127.0.0.1:11434", match: /^https?:\/\/.+?(:\d+)?$/ },
114
+ model: { type: "string", val: "gemma3:4b-it-q4_K_M", match: /^.+$/ },
115
+ key: { type: "string", val: "", match: /^.*$/ }
118
116
  });
119
- /* sanity check parameters */
117
+ /* validate translation direction */
120
118
  if (this.params.src === this.params.dst)
121
- throw new Error("source and destination languages cannot be the same");
119
+ throw new Error("source and destination language must be different for translation");
120
+ /* tell effective mode */
121
+ this.log("info", `translating from language "${this.params.src}" to language "${this.params.dst}" ` +
122
+ `via ${this.params.provider} LLM (model: ${this.params.model})`);
122
123
  /* declare node input/output format */
123
124
  this.input = "text";
124
125
  this.output = "text";
125
126
  }
126
127
  /* open node */
127
128
  async open() {
128
- let model = "";
129
- /* track download progress when instantiating Transformers engine and model */
130
- const progressState = new Map();
131
- const progressCallback = (progress) => {
132
- let artifact = model;
133
- if (typeof progress.file === "string")
134
- artifact += `:${progress.file}`;
135
- let percent = 0;
136
- if (typeof progress.loaded === "number" && typeof progress.total === "number")
137
- percent = (progress.loaded / progress.total) * 100;
138
- else if (typeof progress.progress === "number")
139
- percent = progress.progress;
140
- if (percent > 0)
141
- progressState.set(artifact, percent);
142
- };
143
- const interval = setInterval(() => {
144
- for (const [artifact, percent] of progressState) {
145
- this.log("info", `downloaded ${percent.toFixed(2)}% of artifact "${artifact}"`);
146
- if (percent >= 100.0)
147
- progressState.delete(artifact);
148
- }
149
- }, 1000);
150
- /* instantiate Transformers engine and model */
151
- if (this.params.model === "OPUS") {
152
- model = `onnx-community/opus-mt-${this.params.src}-${this.params.dst}`;
153
- const pipeline = Transformers.pipeline("translation", model, {
154
- cache_dir: node_path_1.default.join(this.config.cacheDir, "transformers"),
155
- dtype: "q4",
156
- device: "auto",
157
- progress_callback: progressCallback
158
- });
159
- this.translator = await pipeline;
160
- if (this.translator === null)
161
- throw new Error("failed to instantiate translator pipeline");
162
- }
163
- else if (this.params.model === "SmolLM3") {
164
- model = "HuggingFaceTB/SmolLM3-3B-ONNX";
165
- const pipeline = Transformers.pipeline("text-generation", model, {
166
- cache_dir: node_path_1.default.join(this.config.cacheDir, "transformers"),
167
- dtype: "q4",
168
- device: "auto",
169
- progress_callback: progressCallback
170
- });
171
- this.generator = await pipeline;
172
- if (this.generator === null)
173
- throw new Error("failed to instantiate generator pipeline");
174
- }
175
- else
176
- throw new Error("invalid model");
177
- /* clear progress interval again */
178
- clearInterval(interval);
129
+ /* instantiate LLM */
130
+ this.llm = new speechflow_util_llm_1.LLM({
131
+ provider: this.params.provider,
132
+ api: this.params.api,
133
+ model: this.params.model,
134
+ key: this.params.key,
135
+ temperature: 0.7,
136
+ topP: 0.5
137
+ });
138
+ this.llm.on("log", (level, message) => {
139
+ this.log(level, message);
140
+ });
141
+ await this.llm.open();
179
142
  /* provide text-to-text translation */
143
+ const llm = this.llm;
180
144
  const translate = async (text) => {
181
- if (this.params.model === "OPUS") {
182
- const result = await this.translator(text);
183
- const single = Array.isArray(result) ? result[0] : result;
184
- return single.translation_text;
185
- }
186
- else if (this.params.model === "SmolLM3") {
187
- const key = `SmolLM3:${this.params.src}-${this.params.dst}`;
188
- const cfg = this.setup[key];
189
- const messages = [
190
- { role: "system", content: cfg.systemPrompt },
191
- ...cfg.chat,
192
- { role: "user", content: text }
193
- ];
194
- const result = await this.generator(messages, {
195
- max_new_tokens: 100,
196
- temperature: 0.6,
197
- top_p: 0.95,
198
- streamer: new Transformers.TextStreamer(this.generator.tokenizer, {
199
- skip_prompt: true,
200
- skip_special_tokens: true
201
- })
202
- });
203
- const single = Array.isArray(result) ? result[0] : result;
204
- const generatedText = single.generated_text;
205
- return typeof generatedText === "string" ?
206
- generatedText :
207
- generatedText.at(-1).content;
208
- }
209
- else
210
- throw new Error("invalid model");
145
+ const key = `${this.params.src}-${this.params.dst}`;
146
+ const cfg = this.setup[key];
147
+ if (!cfg)
148
+ throw new Error(`unsupported language pair: ${key}`);
149
+ return llm.complete({
150
+ system: cfg.systemPrompt,
151
+ messages: cfg.chat,
152
+ prompt: text
153
+ });
211
154
  };
212
- /* establish a duplex stream and connect it to Transformers */
155
+ /* establish a transform stream and connect it to LLM */
213
156
  this.stream = new node_stream_1.default.Transform({
214
157
  readableObjectMode: true,
215
158
  writableObjectMode: true,
@@ -224,9 +167,9 @@ class SpeechFlowNodeT2TTransformers extends speechflow_node_1.default {
224
167
  }
225
168
  else {
226
169
  translate(chunk.payload).then((payload) => {
227
- chunk = chunk.clone();
228
- chunk.payload = payload;
229
- this.push(chunk);
170
+ const chunkNew = chunk.clone();
171
+ chunkNew.payload = payload;
172
+ this.push(chunkNew);
230
173
  callback();
231
174
  }).catch((error) => {
232
175
  callback(util.ensureError(error));
@@ -234,7 +177,6 @@ class SpeechFlowNodeT2TTransformers extends speechflow_node_1.default {
234
177
  }
235
178
  },
236
179
  final(callback) {
237
- this.push(null);
238
180
  callback();
239
181
  }
240
182
  });
@@ -246,16 +188,12 @@ class SpeechFlowNodeT2TTransformers extends speechflow_node_1.default {
246
188
  await util.destroyStream(this.stream);
247
189
  this.stream = null;
248
190
  }
249
- /* shutdown Transformers */
250
- if (this.translator !== null) {
251
- this.translator.dispose();
252
- this.translator = null;
253
- }
254
- if (this.generator !== null) {
255
- this.generator.dispose();
256
- this.generator = null;
191
+ /* shutdown LLM */
192
+ if (this.llm !== null) {
193
+ await this.llm.close();
194
+ this.llm = null;
257
195
  }
258
196
  }
259
197
  }
260
- exports.default = SpeechFlowNodeT2TTransformers;
261
- //# sourceMappingURL=speechflow-node-t2t-transformers.js.map
198
+ exports.default = SpeechFlowNodeT2TTranslate;
199
+ //# sourceMappingURL=speechflow-node-t2t-translate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speechflow-node-t2t-translate.js","sourceRoot":"","sources":["../src/speechflow-node-t2t-translate.ts"],"names":[],"mappings":"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"}
@@ -139,6 +139,8 @@ class SpeechFlowNodeX2XFilter extends speechflow_node_1.default {
139
139
  val1 = chunk.timestampStart.toMillis();
140
140
  else if (self.params.var === "time:end")
141
141
  val1 = chunk.timestampEnd.toMillis();
142
+ else
143
+ val1 = undefined;
142
144
  if (comparison(val1, self.params.op, val2)) {
143
145
  self.log("info", `[${self.params.name}]: passing through ${chunk.type} chunk`);
144
146
  this.push(chunk);
@@ -1 +1 @@
1
- {"version":3,"file":"speechflow-node-x2x-filter.js","sourceRoot":"","sources":["../src/speechflow-node-x2x-filter.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,6BAA6B;AAC7B,8DAAgC;AAEhC,6BAA6B;AAC7B,wEAAmE;AACnE,wDAAmE;AAEnE,2EAA2E;AAC3E,MAAqB,uBAAwB,SAAQ,yBAAc;IAC/D,kCAAkC;IAC3B,MAAM,CAAC,IAAI,GAAG,YAAY,CAAA;IAEjC,0CAA0C;IAClC,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAA;IAE9C,sBAAsB;IACd,OAAO,GAAG,KAAK,CAAA;IAEvB,sBAAsB;IACtB,YAAa,EAAU,EAAE,GAA4B,EAAE,IAA6B,EAAE,IAAW;QAC7F,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE1B,6CAA6C;QAC7C,IAAI,CAAC,SAAS,CAAC;YACX,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAG,KAAK,EAAE,kBAAkB,EAAE;YAC1E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;YAC/D,GAAG,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAQ,KAAK,EAAE,oEAAoE,EAAE;YAC5H,EAAE,EAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAM,KAAK,EAAE,6BAA6B,EAAE;YACrF,GAAG,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAQ,KAAK,EAAE,MAAM,EAAE;SACjE,CAAC,CAAA;QAEF,wCAAwC;QACxC,IAAI,CAAC,KAAK,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;IAClC,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,IAAI;QACN,8BAA8B;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QAEpB,gDAAgD;QAChD,MAAM,UAAU,GAAG,CAAC,IAAS,EAAE,EAAU,EAAE,IAAS,EAAE,EAAE;YACpD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC7B,wBAAwB;gBACxB,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAChE,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAChE,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAA;YAC5D,CAAC;iBACI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAClC,qCAAqC;gBACrC,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC/D,MAAM,MAAM,GAAG,CACX,IAAI,YAAY,MAAM,CAAC,CAAC;oBACpB,IAAI,CAAC,CAAC;oBACN,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;wBACtB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;wBACjC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;gBACvD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClB,8DAA8D;oBAC9D,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,gCAAgC,IAAI,GAAG,CAAC,CAAA;oBAC5D,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAA;gBAC1D,CAAC;gBACD,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAC/D,CAAC;iBACI,CAAC;gBACF,4BAA4B;gBAC5B,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,EAAE,CAC3B,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAC5B,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAC3E,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;oBAChD,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACxB,MAAM,CAAC,GAAG,CAAC,CAClB,CACJ,CAAA;gBACL,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;gBAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;gBAC5B,OAAO,CACH,EAAE,KAAK,GAAG,CAAE,CAAC,CAAC,CAAC,IAAI,GAAI,IAAI,CAAC,CAAC,CAAC;oBAC9B,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;wBAC9B,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;4BAC9B,EAAE,KAAK,GAAG,CAAE,CAAC,CAAC,CAAC,IAAI,GAAI,IAAI,CAAC,CAAC,CAAC;gCAC9B,KAAK,CACR,CAAA;YACL,CAAC;QACL,CAAC,CAAA;QAED,gCAAgC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAM,CAAC,SAAS,CAAC;YAC/B,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAO,KAAK;YACzB,aAAa,EAAO,CAAC;YACrB,SAAS,CAAE,KAAsB,EAAE,QAAQ,EAAE,QAAQ;gBACjD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,QAAQ,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;oBAC/C,OAAM;gBACV,CAAC;gBACD,IAAI,IAAS,CAAA;gBACb,MAAM,IAAI,GAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAA;gBACjC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;gBAC9C,IAAI,CAAC,KAAK,IAAI;oBACV,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;qBAChC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM;oBAC/B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;qBAChB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM;oBAC/B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;qBAChB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,gBAAgB;oBACzC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA;qBAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,cAAc;oBACvC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;qBAClE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,YAAY;oBACrC,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAA;qBACrC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU;oBACnC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA;gBACxC,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,sBAAsB,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAA;oBAC9E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;gBACD,QAAQ,EAAE,CAAA;YACd,CAAC;YACD,KAAK,CAAE,QAAQ;gBACX,QAAQ,EAAE,CAAA;YACd,CAAC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,KAAK;QACP,wBAAwB;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QACtB,CAAC;IACL,CAAC;;AAlIL,0CAmIC"}
1
+ {"version":3,"file":"speechflow-node-x2x-filter.js","sourceRoot":"","sources":["../src/speechflow-node-x2x-filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import SpeechFlowNode from "./speechflow-node";
2
+ export default class SpeechFlowNodeXIOExec extends SpeechFlowNode {
3
+ static name: string;
4
+ private subprocess;
5
+ constructor(id: string, cfg: {
6
+ [id: string]: any;
7
+ }, opts: {
8
+ [id: string]: any;
9
+ }, args: any[]);
10
+ open(): Promise<void>;
11
+ close(): Promise<void>;
12
+ }