speechflow 1.3.0 → 1.3.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.
@@ -4,86 +4,261 @@
4
4
  ** Copyright (c) 2024-2025 Dr. Ralf S. Engelschall <rse@engelschall.com>
5
5
  ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
6
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
+ })();
7
40
  var __importDefault = (this && this.__importDefault) || function (mod) {
8
41
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
42
  };
10
43
  Object.defineProperty(exports, "__esModule", { value: true });
11
44
  /* standard dependencies */
45
+ const node_path_1 = __importDefault(require("node:path"));
12
46
  const node_stream_1 = __importDefault(require("node:stream"));
47
+ /* external dependencies */
48
+ const luxon_1 = require("luxon");
49
+ const HAPI = __importStar(require("@hapi/hapi"));
50
+ const inert_1 = __importDefault(require("@hapi/inert"));
51
+ const hapi_plugin_websocket_1 = __importDefault(require("hapi-plugin-websocket"));
13
52
  /* internal dependencies */
14
- const speechflow_node_1 = __importDefault(require("./speechflow-node"));
53
+ const speechflow_node_1 = __importStar(require("./speechflow-node"));
15
54
  /* SpeechFlow node for subtitle (text-to-text) "translations" */
16
55
  class SpeechFlowNodeSubtitle extends speechflow_node_1.default {
17
56
  /* declare official node name */
18
57
  static name = "subtitle";
19
58
  /* internal state */
20
59
  sequenceNo = 1;
60
+ hapi = null;
21
61
  /* construct node */
22
62
  constructor(id, cfg, opts, args) {
23
63
  super(id, cfg, opts, args);
24
64
  /* declare node configuration parameters */
25
65
  this.configure({
26
- format: { type: "string", pos: 0, val: "srt", match: /^(?:srt|vtt)$/ }
66
+ format: { type: "string", pos: 0, val: "srt", match: /^(?:srt|vtt)$/ },
67
+ words: { type: "boolean", val: false },
68
+ mode: { type: "string", val: "export", match: /^(?:export|render)$/ },
69
+ addr: { type: "string", val: "127.0.0.1" },
70
+ port: { type: "number", val: 8585 }
27
71
  });
28
72
  /* declare node input/output format */
29
73
  this.input = "text";
30
- this.output = "text";
74
+ this.output = this.params.mode === "export" ? "text" : "none";
31
75
  }
32
76
  /* open node */
33
77
  async open() {
34
- this.sequenceNo = 1;
35
- /* provide text-to-subtitle conversion */
36
- const convert = async (chunk) => {
37
- if (typeof chunk.payload !== "string")
38
- throw new Error("chunk payload type must be string");
39
- let text = chunk.payload;
40
- if (this.params.format === "srt") {
41
- const start = chunk.timestampStart.toFormat("hh:mm:ss,SSS");
42
- const end = chunk.timestampEnd.toFormat("hh:mm:ss,SSS");
43
- text = `${this.sequenceNo++}\n` +
44
- `${start} --> ${end}\n` +
45
- `${text}\n\n`;
46
- }
47
- else if (this.params.format === "vtt") {
48
- const start = chunk.timestampStart.toFormat("hh:mm:ss.SSS");
49
- const end = chunk.timestampEnd.toFormat("hh:mm:ss.SSS");
50
- text = `${this.sequenceNo++}\n` +
51
- `${start} --> ${end}\n` +
52
- `${text}\n\n`;
53
- }
54
- return text;
55
- };
56
- /* establish a duplex stream */
57
- this.stream = new node_stream_1.default.Transform({
58
- readableObjectMode: true,
59
- writableObjectMode: true,
60
- decodeStrings: false,
61
- highWaterMark: 1,
62
- transform(chunk, encoding, callback) {
63
- if (Buffer.isBuffer(chunk.payload))
64
- callback(new Error("invalid chunk payload type"));
65
- else {
66
- if (chunk.payload === "") {
67
- this.push(chunk);
68
- callback();
78
+ if (this.params.mode === "export") {
79
+ this.sequenceNo = 1;
80
+ /* provide text-to-subtitle conversion */
81
+ const convert = async (chunk) => {
82
+ if (typeof chunk.payload !== "string")
83
+ throw new Error("chunk payload type must be string");
84
+ const convertSingle = (start, end, text, word, occurence) => {
85
+ if (word) {
86
+ occurence ??= 1;
87
+ let match = 1;
88
+ word = word.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
89
+ text = text.replaceAll(new RegExp(`\\b${word}\\b`, "g"), (m) => {
90
+ if (match++ === occurence)
91
+ return `<b>${m}</b>`;
92
+ else
93
+ return m;
94
+ });
95
+ }
96
+ if (this.params.format === "srt") {
97
+ const startFmt = start.toFormat("hh:mm:ss,SSS");
98
+ const endFmt = end.toFormat("hh:mm:ss,SSS");
99
+ text = `${this.sequenceNo++}\n` +
100
+ `${startFmt} --> ${endFmt}\n` +
101
+ `${text}\n\n`;
102
+ }
103
+ else if (this.params.format === "vtt") {
104
+ const startFmt = start.toFormat("hh:mm:ss.SSS");
105
+ const endFmt = end.toFormat("hh:mm:ss.SSS");
106
+ text = `${startFmt} --> ${endFmt}\n` +
107
+ `${text}\n\n`;
69
108
  }
109
+ return text;
110
+ };
111
+ let output = "";
112
+ if (this.params.words) {
113
+ output += convertSingle(chunk.timestampStart, chunk.timestampEnd, chunk.payload);
114
+ const words = (chunk.meta.get("words") ?? []);
115
+ const occurences = new Map();
116
+ for (const word of words) {
117
+ let occurence = occurences.get(word.word) ?? 0;
118
+ occurence++;
119
+ occurences.set(word.word, occurence);
120
+ output += convertSingle(word.start, word.end, chunk.payload, word.word, occurence);
121
+ }
122
+ }
123
+ else
124
+ output += convertSingle(chunk.timestampStart, chunk.timestampEnd, chunk.payload);
125
+ return output;
126
+ };
127
+ /* establish a duplex stream */
128
+ const self = this;
129
+ let firstChunk = true;
130
+ this.stream = new node_stream_1.default.Transform({
131
+ readableObjectMode: true,
132
+ writableObjectMode: true,
133
+ decodeStrings: false,
134
+ highWaterMark: 1,
135
+ transform(chunk, encoding, callback) {
136
+ if (firstChunk && self.params.format === "vtt") {
137
+ this.push(new speechflow_node_1.SpeechFlowChunk(luxon_1.Duration.fromMillis(0), luxon_1.Duration.fromMillis(0), "final", "text", "WEBVTT\n\n"));
138
+ firstChunk = false;
139
+ }
140
+ if (Buffer.isBuffer(chunk.payload))
141
+ callback(new Error("invalid chunk payload type"));
70
142
  else {
71
- convert(chunk).then((payload) => {
72
- const chunkNew = chunk.clone();
73
- chunkNew.payload = payload;
74
- this.push(chunkNew);
143
+ if (chunk.payload === "") {
144
+ this.push(chunk);
75
145
  callback();
76
- }).catch((err) => {
77
- callback(err);
78
- });
146
+ }
147
+ else {
148
+ convert(chunk).then((payload) => {
149
+ const chunkNew = chunk.clone();
150
+ chunkNew.payload = payload;
151
+ this.push(chunkNew);
152
+ callback();
153
+ }).catch((err) => {
154
+ callback(err);
155
+ });
156
+ }
79
157
  }
158
+ },
159
+ final(callback) {
160
+ this.push(null);
161
+ callback();
80
162
  }
81
- },
82
- final(callback) {
83
- this.push(null);
84
- callback();
85
- }
86
- });
163
+ });
164
+ }
165
+ else if (this.params.mode === "render") {
166
+ /* establish REST/WebSocket API */
167
+ const wsPeers = new Map();
168
+ this.hapi = new HAPI.Server({
169
+ address: this.params.addr,
170
+ port: this.params.port
171
+ });
172
+ await this.hapi.register({ plugin: inert_1.default });
173
+ await this.hapi.register({ plugin: hapi_plugin_websocket_1.default });
174
+ this.hapi.events.on({ name: "request", channels: ["error"] }, (request, event, tags) => {
175
+ if (event.error instanceof Error)
176
+ this.log("error", `HAPI: request-error: ${event.error.message}`);
177
+ else
178
+ this.log("error", `HAPI: request-error: ${event.error}`);
179
+ });
180
+ this.hapi.events.on("log", (event, tags) => {
181
+ if (tags.error) {
182
+ const err = event.error;
183
+ if (err instanceof Error)
184
+ this.log("error", `HAPI: log: ${err.message}`);
185
+ else
186
+ this.log("error", `HAPI: log: ${err}`);
187
+ }
188
+ });
189
+ this.hapi.route({
190
+ method: "GET",
191
+ path: "/{param*}",
192
+ handler: {
193
+ directory: {
194
+ path: node_path_1.default.join(__dirname, "../subtitle/dst"),
195
+ redirectToSlash: true,
196
+ index: true
197
+ }
198
+ }
199
+ });
200
+ this.hapi.route({
201
+ method: "POST",
202
+ path: "/api",
203
+ options: {
204
+ payload: {
205
+ output: "data",
206
+ parse: true,
207
+ allow: "application/json"
208
+ },
209
+ plugins: {
210
+ websocket: {
211
+ autoping: 30 * 1000,
212
+ connect: (args) => {
213
+ const ctx = args.ctx;
214
+ const ws = args.ws;
215
+ const req = args.req;
216
+ const peer = `${req.socket.remoteAddress}:${req.socket.remotePort}`;
217
+ ctx.peer = peer;
218
+ wsPeers.set(peer, { ctx, ws, req });
219
+ this.log("info", `HAPI: WebSocket: connect: peer ${peer}`);
220
+ },
221
+ disconnect: (args) => {
222
+ const ctx = args.ctx;
223
+ const peer = ctx.peer;
224
+ wsPeers.delete(peer);
225
+ this.log("info", `HAPI: WebSocket: disconnect: peer ${peer}`);
226
+ }
227
+ }
228
+ }
229
+ },
230
+ handler: (request, h) => {
231
+ return h.response({}).code(204);
232
+ }
233
+ });
234
+ await this.hapi.start();
235
+ this.log("info", `HAPI: started REST/WebSocket network service: http://${this.params.addr}:${this.params.port}`);
236
+ const emit = (chunk) => {
237
+ const data = JSON.stringify(chunk);
238
+ for (const info of wsPeers.values())
239
+ info.ws.send(data);
240
+ };
241
+ this.stream = new node_stream_1.default.Writable({
242
+ objectMode: true,
243
+ decodeStrings: false,
244
+ highWaterMark: 1,
245
+ write(chunk, encoding, callback) {
246
+ if (Buffer.isBuffer(chunk.payload))
247
+ callback(new Error("invalid chunk payload type"));
248
+ else {
249
+ if (chunk.payload === "")
250
+ callback();
251
+ else {
252
+ emit(chunk);
253
+ callback();
254
+ }
255
+ }
256
+ },
257
+ final(callback) {
258
+ callback();
259
+ }
260
+ });
261
+ }
87
262
  }
88
263
  /* open node */
89
264
  async close() {
@@ -92,6 +267,11 @@ class SpeechFlowNodeSubtitle extends speechflow_node_1.default {
92
267
  this.stream.destroy();
93
268
  this.stream = null;
94
269
  }
270
+ /* shutdown HAPI */
271
+ if (this.hapi !== null) {
272
+ await this.hapi.stop();
273
+ this.hapi = null;
274
+ }
95
275
  }
96
276
  }
97
277
  exports.default = SpeechFlowNodeSubtitle;
@@ -1 +1 @@
1
- {"version":3,"file":"speechflow-node-t2t-subtitle.js","sourceRoot":"","sources":["../src/speechflow-node-t2t-subtitle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speechflow-node-t2t-subtitle.js","sourceRoot":"","sources":["../src/speechflow-node-t2t-subtitle.ts"],"names":[],"mappings":"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"}
@@ -22,8 +22,12 @@ class SpeechFlowNodeTrace extends speechflow_node_1.default {
22
22
  /* declare node configuration parameters */
23
23
  this.configure({
24
24
  type: { type: "string", pos: 0, val: "audio", match: /^(?:audio|text)$/ },
25
- name: { type: "string", pos: 1, val: "trace" }
25
+ name: { type: "string", pos: 1, val: "trace" },
26
+ dashboard: { type: "string", val: "" }
26
27
  });
28
+ /* sanity check parameters */
29
+ if (this.params.dashboard !== "" && this.params.type === "audio")
30
+ throw new Error("only trace nodes of type \"text\" can export to dashboard");
27
31
  /* declare node input/output format */
28
32
  this.input = this.params.type;
29
33
  this.output = this.params.type;
@@ -38,7 +42,7 @@ class SpeechFlowNodeTrace extends speechflow_node_1.default {
38
42
  this.log(level, msg);
39
43
  };
40
44
  /* provide Transform stream */
41
- const type = this.params.type;
45
+ const self = this;
42
46
  this.stream = new node_stream_1.default.Transform({
43
47
  writableObjectMode: true,
44
48
  readableObjectMode: true,
@@ -56,7 +60,7 @@ class SpeechFlowNodeTrace extends speechflow_node_1.default {
56
60
  .join(", ")} }`;
57
61
  };
58
62
  if (Buffer.isBuffer(chunk.payload)) {
59
- if (type === "audio")
63
+ if (self.params.type === "audio")
60
64
  log("debug", `chunk: type=${chunk.type} ` +
61
65
  `kind=${chunk.kind} ` +
62
66
  `start=${fmtTime(chunk.timestampStart)} ` +
@@ -64,19 +68,22 @@ class SpeechFlowNodeTrace extends speechflow_node_1.default {
64
68
  `payload-type=Buffer payload-length=${chunk.payload.byteLength} ` +
65
69
  `meta=${fmtMeta(chunk.meta)}`);
66
70
  else
67
- error = new Error(`${type} chunk: seen Buffer instead of String chunk type`);
71
+ error = new Error(`${self.params.type} chunk: seen Buffer instead of String chunk type`);
68
72
  }
69
73
  else {
70
- if (type === "text")
71
- log("debug", `${type} chunk: type=${chunk.type} ` +
74
+ if (self.params.type === "text") {
75
+ log("debug", `chunk: type=${chunk.type} ` +
72
76
  `kind=${chunk.kind} ` +
73
77
  `start=${fmtTime(chunk.timestampStart)} ` +
74
78
  `end=${fmtTime(chunk.timestampEnd)} ` +
75
79
  `payload-type=String payload-length=${chunk.payload.length} ` +
76
80
  `payload-content="${chunk.payload.toString()}" ` +
77
81
  `meta=${fmtMeta(chunk.meta)}`);
82
+ if (self.params.dashboard !== "")
83
+ self.dashboardInfo("text", self.params.dashboard, chunk.kind, chunk.payload.toString());
84
+ }
78
85
  else
79
- error = new Error(`${type} chunk: seen String instead of Buffer chunk type`);
86
+ error = new Error(`${self.params.type} chunk: seen String instead of Buffer chunk type`);
80
87
  }
81
88
  if (error !== undefined)
82
89
  callback(error);
@@ -1 +1 @@
1
- {"version":3,"file":"speechflow-node-x2x-trace.js","sourceRoot":"","sources":["../src/speechflow-node-x2x-trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speechflow-node-x2x-trace.js","sourceRoot":"","sources":["../src/speechflow-node-x2x-trace.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,8 @@ export default class SpeechFlowNode extends Events.EventEmitter {
44
44
  setTimeZero(time: DateTime): void;
45
45
  receiveRequest(args: any[]): Promise<void>;
46
46
  sendResponse(args: any[]): void;
47
+ dashboardInfo(type: "audio", name: string, kind: "final" | "intermediate", value: number): void;
48
+ dashboardInfo(type: "text", name: string, kind: "final" | "intermediate", value: string): void;
47
49
  configure(spec: {
48
50
  [id: string]: {
49
51
  type: string;
@@ -93,6 +93,9 @@ class SpeechFlowNode extends node_events_1.default.EventEmitter {
93
93
  sendResponse(args) {
94
94
  this.emit("send-response", args);
95
95
  }
96
+ dashboardInfo(type, name, kind, value) {
97
+ this.emit("dashboard-info", { type, name, kind, value });
98
+ }
96
99
  /* INTERNAL: utility function: create "params" attribute from constructor of sub-classes */
97
100
  configure(spec) {
98
101
  for (const name of Object.keys(spec)) {
@@ -1 +1 @@
1
- {"version":3,"file":"speechflow-node.js","sourceRoot":"","sources":["../src/speechflow-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speechflow-node.js","sourceRoot":"","sources":["../src/speechflow-node.ts"],"names":[],"mappings":"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"}
package/dst/speechflow.js CHANGED
@@ -47,6 +47,7 @@ const node_path_1 = __importDefault(require("node:path"));
47
47
  const node_stream_1 = __importDefault(require("node:stream"));
48
48
  const node_events_1 = require("node:events");
49
49
  const HAPI = __importStar(require("@hapi/hapi"));
50
+ const inert_1 = __importDefault(require("@hapi/inert"));
50
51
  const hapi_plugin_websocket_1 = __importDefault(require("hapi-plugin-websocket"));
51
52
  const hapi_plugin_header_1 = __importDefault(require("hapi-plugin-header"));
52
53
  /* external dependencies */
@@ -84,6 +85,7 @@ let cli = null;
84
85
  "[-a|--address <ip-address>] " +
85
86
  "[-p|--port <tcp-port>] " +
86
87
  "[-C|--cache <directory>] " +
88
+ "[-d|--dashboard <type>:<name>[,...]] " +
87
89
  "[-e|--expression <expression>] " +
88
90
  "[-f|--file <file>] " +
89
91
  "[-c|--config <id>@<yaml-config-file>] " +
@@ -140,6 +142,15 @@ let cli = null;
140
142
  nargs: 1,
141
143
  default: node_path_1.default.join(dataDir, "cache"),
142
144
  describe: "directory for cached files (primarily AI model files)"
145
+ })
146
+ .option("d", {
147
+ alias: "dashboard",
148
+ type: "string",
149
+ array: false,
150
+ coerce,
151
+ nargs: 1,
152
+ default: "",
153
+ describe: "list of dashboard block types and names"
143
154
  })
144
155
  .option("e", {
145
156
  alias: "expression",
@@ -500,8 +511,10 @@ let cli = null;
500
511
  const name = req.node;
501
512
  const args = req.args;
502
513
  const foundNode = Array.from(graphNodes).find((node) => node.id === name);
503
- if (foundNode === undefined)
514
+ if (foundNode === undefined) {
504
515
  cli.log("warning", `external request failed: no such node <${name}>`);
516
+ throw new Error(`external request failed: no such node <${name}>`);
517
+ }
505
518
  else {
506
519
  await foundNode.receiveRequest(args).catch((err) => {
507
520
  cli.log("warning", `external request to node <${name}> failed: ${err}`);
@@ -515,6 +528,7 @@ let cli = null;
515
528
  address: args.a,
516
529
  port: args.p
517
530
  });
531
+ await hapi.register({ plugin: inert_1.default });
518
532
  await hapi.register({ plugin: hapi_plugin_header_1.default, options: { Server: `${package_json_1.default.name}/${package_json_1.default.version}` } });
519
533
  await hapi.register({ plugin: hapi_plugin_websocket_1.default });
520
534
  hapi.events.on("response", (request) => {
@@ -547,6 +561,29 @@ let cli = null;
547
561
  cli.log("error", `HAPI: log: ${err}`);
548
562
  }
549
563
  });
564
+ hapi.route({
565
+ method: "GET",
566
+ path: "/{param*}",
567
+ handler: {
568
+ directory: {
569
+ path: node_path_1.default.join(__dirname, "../dashboard/dst"),
570
+ redirectToSlash: true,
571
+ index: true
572
+ }
573
+ }
574
+ });
575
+ hapi.route({
576
+ method: "GET",
577
+ path: "/api/dashboard",
578
+ handler: (request, h) => {
579
+ const config = [];
580
+ for (const block of args.d.split(",")) {
581
+ const [type, name] = block.split(":");
582
+ config.push({ type, name });
583
+ }
584
+ return h.response(config).code(200);
585
+ }
586
+ });
550
587
  hapi.route({
551
588
  method: "GET",
552
589
  path: "/api/{req}/{node}/{params*}",
@@ -622,6 +659,20 @@ let cli = null;
622
659
  }
623
660
  });
624
661
  }
662
+ /* hook for dashboardInfo method of nodes */
663
+ for (const node of graphNodes) {
664
+ node.on("dashboard-info", (info) => {
665
+ const data = JSON.stringify({
666
+ response: "DASHBOARD",
667
+ node: "",
668
+ args: [info.type, info.name, info.kind, info.value]
669
+ });
670
+ for (const [peer, info] of wsPeers.entries()) {
671
+ cli.log("info", `HAPI: peer ${peer}: ${data}`);
672
+ info.ws.send(data);
673
+ }
674
+ });
675
+ }
625
676
  /* start of internal stream processing */
626
677
  cli.log("info", "**** everything established -- stream processing in SpeechFlow graph starts ****");
627
678
  /* gracefully shutdown process */