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.
- package/CHANGELOG.md +24 -0
- package/README.md +388 -120
- package/etc/claude.md +5 -5
- package/etc/speechflow.yaml +2 -2
- package/package.json +3 -3
- package/speechflow-cli/dst/speechflow-main-api.js.map +1 -1
- package/speechflow-cli/dst/speechflow-main-cli.js +1 -0
- package/speechflow-cli/dst/speechflow-main-cli.js.map +1 -1
- package/speechflow-cli/dst/speechflow-main-graph.d.ts +1 -0
- package/speechflow-cli/dst/speechflow-main-graph.js +30 -9
- package/speechflow-cli/dst/speechflow-main-graph.js.map +1 -1
- package/speechflow-cli/dst/speechflow-main-nodes.js +1 -0
- package/speechflow-cli/dst/speechflow-main-nodes.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-compressor-wt.js +1 -0
- package/speechflow-cli/dst/speechflow-node-a2a-compressor-wt.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-compressor.js +7 -9
- package/speechflow-cli/dst/speechflow-node-a2a-compressor.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-expander-wt.js +1 -0
- package/speechflow-cli/dst/speechflow-node-a2a-expander-wt.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-expander.js +8 -9
- package/speechflow-cli/dst/speechflow-node-a2a-expander.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-filler.js +2 -0
- package/speechflow-cli/dst/speechflow-node-a2a-filler.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-gender.js +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-gender.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-meter.js +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-pitch.js +11 -9
- package/speechflow-cli/dst/speechflow-node-a2a-pitch.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-rnnoise-wt.js +1 -0
- package/speechflow-cli/dst/speechflow-node-a2a-rnnoise-wt.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-rnnoise.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-speex.js +4 -2
- package/speechflow-cli/dst/speechflow-node-a2a-speex.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-vad.js +19 -22
- package/speechflow-cli/dst/speechflow-node-a2a-vad.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-wav.js +31 -4
- package/speechflow-cli/dst/speechflow-node-a2a-wav.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2t-amazon.d.ts +0 -1
- package/speechflow-cli/dst/speechflow-node-a2t-amazon.js +2 -11
- package/speechflow-cli/dst/speechflow-node-a2t-amazon.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2t-google.d.ts +16 -0
- package/speechflow-cli/dst/speechflow-node-a2t-google.js +314 -0
- package/speechflow-cli/dst/speechflow-node-a2t-google.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-a2t-openai.js +6 -1
- package/speechflow-cli/dst/speechflow-node-a2t-openai.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-amazon.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-amazon.js +27 -7
- package/speechflow-cli/dst/speechflow-node-t2a-amazon.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.js +5 -3
- package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-google.d.ts +15 -0
- package/speechflow-cli/dst/speechflow-node-t2a-google.js +215 -0
- package/speechflow-cli/dst/speechflow-node-t2a-google.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-t2a-kokoro.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-kokoro.js +27 -6
- package/speechflow-cli/dst/speechflow-node-t2a-kokoro.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-openai.d.ts +15 -0
- package/speechflow-cli/dst/speechflow-node-t2a-openai.js +192 -0
- package/speechflow-cli/dst/speechflow-node-t2a-openai.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-t2a-supertonic.d.ts +17 -0
- package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js +619 -0
- package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-t2t-amazon.js +0 -2
- package/speechflow-cli/dst/speechflow-node-t2t-amazon.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-deepl.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-google.js.map +1 -1
- package/speechflow-cli/dst/{speechflow-node-t2t-transformers.d.ts → speechflow-node-t2t-opus.d.ts} +1 -3
- package/speechflow-cli/dst/speechflow-node-t2t-opus.js +161 -0
- package/speechflow-cli/dst/speechflow-node-t2t-opus.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-t2t-profanity.d.ts +11 -0
- package/speechflow-cli/dst/speechflow-node-t2t-profanity.js +118 -0
- package/speechflow-cli/dst/speechflow-node-t2t-profanity.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-t2t-punctuation.d.ts +13 -0
- package/speechflow-cli/dst/speechflow-node-t2t-punctuation.js +220 -0
- package/speechflow-cli/dst/speechflow-node-t2t-punctuation.js.map +1 -0
- package/speechflow-cli/dst/{speechflow-node-t2t-openai.d.ts → speechflow-node-t2t-spellcheck.d.ts} +2 -2
- package/speechflow-cli/dst/{speechflow-node-t2t-openai.js → speechflow-node-t2t-spellcheck.js} +48 -100
- package/speechflow-cli/dst/speechflow-node-t2t-spellcheck.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js +8 -8
- package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-summary.d.ts +16 -0
- package/speechflow-cli/dst/speechflow-node-t2t-summary.js +241 -0
- package/speechflow-cli/dst/speechflow-node-t2t-summary.js.map +1 -0
- package/speechflow-cli/dst/{speechflow-node-t2t-ollama.d.ts → speechflow-node-t2t-translate.d.ts} +2 -2
- package/speechflow-cli/dst/{speechflow-node-t2t-transformers.js → speechflow-node-t2t-translate.js} +53 -115
- package/speechflow-cli/dst/speechflow-node-t2t-translate.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-x2x-filter.js +2 -0
- package/speechflow-cli/dst/speechflow-node-x2x-filter.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-xio-exec.d.ts +12 -0
- package/speechflow-cli/dst/speechflow-node-xio-exec.js +224 -0
- package/speechflow-cli/dst/speechflow-node-xio-exec.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-xio-file.d.ts +1 -0
- package/speechflow-cli/dst/speechflow-node-xio-file.js +78 -67
- package/speechflow-cli/dst/speechflow-node-xio-file.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-xio-mqtt.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-xio-vban.d.ts +17 -0
- package/speechflow-cli/dst/speechflow-node-xio-vban.js +330 -0
- package/speechflow-cli/dst/speechflow-node-xio-vban.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-xio-webrtc.d.ts +39 -0
- package/speechflow-cli/dst/speechflow-node-xio-webrtc.js +502 -0
- package/speechflow-cli/dst/speechflow-node-xio-webrtc.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-xio-websocket.js +9 -9
- package/speechflow-cli/dst/speechflow-node-xio-websocket.js.map +1 -1
- package/speechflow-cli/dst/speechflow-util-audio.js +8 -5
- package/speechflow-cli/dst/speechflow-util-audio.js.map +1 -1
- package/speechflow-cli/dst/speechflow-util-error.d.ts +1 -0
- package/speechflow-cli/dst/speechflow-util-error.js +5 -0
- package/speechflow-cli/dst/speechflow-util-error.js.map +1 -1
- package/speechflow-cli/dst/speechflow-util-llm.d.ts +35 -0
- package/speechflow-cli/dst/speechflow-util-llm.js +363 -0
- package/speechflow-cli/dst/speechflow-util-llm.js.map +1 -0
- package/speechflow-cli/dst/speechflow-util-queue.js +2 -1
- package/speechflow-cli/dst/speechflow-util-queue.js.map +1 -1
- package/speechflow-cli/dst/speechflow-util.d.ts +1 -0
- package/speechflow-cli/dst/speechflow-util.js +2 -0
- package/speechflow-cli/dst/speechflow-util.js.map +1 -1
- package/speechflow-cli/etc/oxlint.jsonc +2 -1
- package/speechflow-cli/package.json +35 -18
- package/speechflow-cli/src/lib.d.ts +5 -0
- package/speechflow-cli/src/speechflow-main-api.ts +16 -16
- package/speechflow-cli/src/speechflow-main-cli.ts +1 -0
- package/speechflow-cli/src/speechflow-main-graph.ts +38 -14
- package/speechflow-cli/src/speechflow-main-nodes.ts +1 -0
- package/speechflow-cli/src/speechflow-node-a2a-compressor-wt.ts +1 -0
- package/speechflow-cli/src/speechflow-node-a2a-compressor.ts +8 -10
- package/speechflow-cli/src/speechflow-node-a2a-expander-wt.ts +1 -0
- package/speechflow-cli/src/speechflow-node-a2a-expander.ts +9 -10
- package/speechflow-cli/src/speechflow-node-a2a-filler.ts +2 -0
- package/speechflow-cli/src/speechflow-node-a2a-gender.ts +3 -3
- package/speechflow-cli/src/speechflow-node-a2a-meter.ts +2 -2
- package/speechflow-cli/src/speechflow-node-a2a-pitch.ts +11 -9
- package/speechflow-cli/src/speechflow-node-a2a-rnnoise-wt.ts +1 -0
- package/speechflow-cli/src/speechflow-node-a2a-rnnoise.ts +1 -1
- package/speechflow-cli/src/speechflow-node-a2a-speex.ts +5 -3
- package/speechflow-cli/src/speechflow-node-a2a-vad.ts +20 -23
- package/speechflow-cli/src/speechflow-node-a2a-wav.ts +31 -4
- package/speechflow-cli/src/speechflow-node-a2t-amazon.ts +6 -18
- package/speechflow-cli/src/speechflow-node-a2t-google.ts +315 -0
- package/speechflow-cli/src/speechflow-node-a2t-openai.ts +12 -7
- package/speechflow-cli/src/speechflow-node-t2a-amazon.ts +32 -10
- package/speechflow-cli/src/speechflow-node-t2a-elevenlabs.ts +6 -4
- package/speechflow-cli/src/speechflow-node-t2a-google.ts +203 -0
- package/speechflow-cli/src/speechflow-node-t2a-kokoro.ts +33 -10
- package/speechflow-cli/src/speechflow-node-t2a-openai.ts +176 -0
- package/speechflow-cli/src/speechflow-node-t2a-supertonic.ts +710 -0
- package/speechflow-cli/src/speechflow-node-t2t-amazon.ts +3 -4
- package/speechflow-cli/src/speechflow-node-t2t-deepl.ts +2 -2
- package/speechflow-cli/src/speechflow-node-t2t-google.ts +1 -1
- package/speechflow-cli/src/speechflow-node-t2t-opus.ts +137 -0
- package/speechflow-cli/src/speechflow-node-t2t-profanity.ts +93 -0
- package/speechflow-cli/src/speechflow-node-t2t-punctuation.ts +201 -0
- package/speechflow-cli/src/speechflow-node-t2t-spellcheck.ts +188 -0
- package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +8 -8
- package/speechflow-cli/src/speechflow-node-t2t-summary.ts +229 -0
- package/speechflow-cli/src/speechflow-node-t2t-translate.ts +181 -0
- package/speechflow-cli/src/speechflow-node-x2x-filter.ts +2 -0
- package/speechflow-cli/src/speechflow-node-xio-exec.ts +211 -0
- package/speechflow-cli/src/speechflow-node-xio-file.ts +91 -80
- package/speechflow-cli/src/speechflow-node-xio-mqtt.ts +2 -2
- package/speechflow-cli/src/speechflow-node-xio-vban.ts +325 -0
- package/speechflow-cli/src/speechflow-node-xio-webrtc.ts +535 -0
- package/speechflow-cli/src/speechflow-node-xio-websocket.ts +9 -9
- package/speechflow-cli/src/speechflow-util-audio.ts +10 -5
- package/speechflow-cli/src/speechflow-util-error.ts +9 -0
- package/speechflow-cli/src/speechflow-util-llm.ts +367 -0
- package/speechflow-cli/src/speechflow-util-queue.ts +3 -3
- package/speechflow-cli/src/speechflow-util.ts +2 -0
- package/speechflow-ui-db/package.json +9 -9
- package/speechflow-ui-st/package.json +9 -9
- package/speechflow-cli/dst/speechflow-node-t2t-ollama.js +0 -293
- package/speechflow-cli/dst/speechflow-node-t2t-ollama.js.map +0 -1
- package/speechflow-cli/dst/speechflow-node-t2t-openai.js.map +0 -1
- package/speechflow-cli/dst/speechflow-node-t2t-transformers.js.map +0 -1
- package/speechflow-cli/src/speechflow-node-t2t-ollama.ts +0 -281
- package/speechflow-cli/src/speechflow-node-t2t-openai.ts +0 -247
- 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":"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"}
|
package/speechflow-cli/dst/{speechflow-node-t2t-ollama.d.ts → speechflow-node-t2t-translate.d.ts}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import SpeechFlowNode from "./speechflow-node";
|
|
2
|
-
export default class
|
|
2
|
+
export default class SpeechFlowNodeT2TTranslate extends SpeechFlowNode {
|
|
3
3
|
static name: string;
|
|
4
|
-
private
|
|
4
|
+
private llm;
|
|
5
5
|
private setup;
|
|
6
6
|
constructor(id: string, cfg: {
|
|
7
7
|
[id: string]: any;
|
package/speechflow-cli/dst/{speechflow-node-t2t-transformers.js → speechflow-node-t2t-translate.js}
RENAMED
|
@@ -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
|
-
|
|
53
|
-
|
|
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-
|
|
53
|
+
static name = "t2t-translate";
|
|
56
54
|
/* internal state */
|
|
57
|
-
|
|
58
|
-
generator = null;
|
|
55
|
+
llm = null;
|
|
59
56
|
/* internal LLM setup */
|
|
60
57
|
setup = {
|
|
61
|
-
/*
|
|
62
|
-
"
|
|
63
|
-
systemPrompt: "
|
|
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
|
-
/*
|
|
86
|
-
"
|
|
87
|
-
systemPrompt: "
|
|
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
|
-
|
|
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
|
-
/*
|
|
117
|
+
/* validate translation direction */
|
|
120
118
|
if (this.params.src === this.params.dst)
|
|
121
|
-
throw new Error("source and destination
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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
|
|
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
|
-
|
|
228
|
-
|
|
229
|
-
this.push(
|
|
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
|
|
250
|
-
if (this.
|
|
251
|
-
this.
|
|
252
|
-
this.
|
|
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 =
|
|
261
|
-
//# sourceMappingURL=speechflow-node-t2t-
|
|
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":"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
|
|
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
|
+
}
|