speechflow 1.2.8 → 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.
Files changed (36) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +201 -43
  3. package/dst/speechflow-node-a2a-gender.d.ts +1 -0
  4. package/dst/speechflow-node-a2a-gender.js +7 -2
  5. package/dst/speechflow-node-a2a-gender.js.map +1 -1
  6. package/dst/speechflow-node-a2a-meter.js +5 -2
  7. package/dst/speechflow-node-a2a-meter.js.map +1 -1
  8. package/dst/speechflow-node-a2t-deepgram.js +22 -14
  9. package/dst/speechflow-node-a2t-deepgram.js.map +1 -1
  10. package/dst/speechflow-node-t2t-sentence.d.ts +17 -0
  11. package/dst/speechflow-node-t2t-sentence.js +234 -0
  12. package/dst/speechflow-node-t2t-sentence.js.map +1 -0
  13. package/dst/speechflow-node-t2t-subtitle.d.ts +1 -0
  14. package/dst/speechflow-node-t2t-subtitle.js +231 -51
  15. package/dst/speechflow-node-t2t-subtitle.js.map +1 -1
  16. package/dst/speechflow-node-x2x-trace.js +14 -7
  17. package/dst/speechflow-node-x2x-trace.js.map +1 -1
  18. package/dst/speechflow-node-xio-device.js +10 -2
  19. package/dst/speechflow-node-xio-device.js.map +1 -1
  20. package/dst/speechflow-node.d.ts +2 -0
  21. package/dst/speechflow-node.js +3 -0
  22. package/dst/speechflow-node.js.map +1 -1
  23. package/dst/speechflow-utils.js +1 -1
  24. package/dst/speechflow-utils.js.map +1 -1
  25. package/dst/speechflow.js +64 -2
  26. package/dst/speechflow.js.map +1 -1
  27. package/etc/speechflow.yaml +39 -26
  28. package/package.json +18 -17
  29. package/src/speechflow-node-a2a-gender.ts +8 -2
  30. package/src/speechflow-node-a2a-meter.ts +1 -1
  31. package/src/speechflow-node-a2t-deepgram.ts +18 -11
  32. package/src/speechflow-node-t2t-sentence.ts +224 -0
  33. package/src/speechflow-node-t2t-subtitle.ts +62 -15
  34. package/src/speechflow-node-xio-device.ts +10 -2
  35. package/src/speechflow-utils.ts +1 -1
  36. package/src/speechflow.ts +15 -2
@@ -64,7 +64,8 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
64
64
  keyAdm: { type: "string", val: process.env.SPEECHFLOW_DEEPGRAM_KEY_ADM },
65
65
  model: { type: "string", val: "nova-3", pos: 0 },
66
66
  version: { type: "string", val: "latest", pos: 1 },
67
- language: { type: "string", val: "multi", pos: 2 }
67
+ language: { type: "string", val: "multi", pos: 2 },
68
+ interim: { type: "boolean", val: false, pos: 3 }
68
69
  });
69
70
  /* declare node input/output format */
70
71
  this.input = "audio";
@@ -110,7 +111,7 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
110
111
  encoding: "linear16",
111
112
  multichannel: false,
112
113
  endpointing: 10,
113
- interim_results: false,
114
+ interim_results: this.params.interim,
114
115
  smart_format: true,
115
116
  punctuate: true,
116
117
  filler_words: true,
@@ -120,11 +121,13 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
120
121
  });
121
122
  /* hook onto Deepgram API events */
122
123
  this.dg.on(Deepgram.LiveTranscriptionEvents.Transcript, async (data) => {
123
- const text = data.channel?.alternatives[0]?.transcript ?? "";
124
+ const text = (data.channel?.alternatives[0]?.transcript ?? "");
125
+ const words = (data.channel?.alternatives[0]?.words ?? []);
126
+ const isFinal = (data.is_final ?? false);
124
127
  if (text === "")
125
- this.log("info", `Deepgram: empty/dummy text received (start: ${data.start}s, duration: ${data.duration}s)`);
128
+ this.log("info", `empty/dummy text received (start: ${data.start}s, duration: ${data.duration.toFixed(2)}s)`);
126
129
  else {
127
- this.log("info", `Deepgram: text received (start: ${data.start}s, duration: ${data.duration}s): "${text}"`);
130
+ this.log("info", `text received (start: ${data.start}s, duration: ${data.duration.toFixed(2)}s): "${text}"`);
128
131
  const start = luxon_1.Duration.fromMillis(data.start * 1000).plus(this.timeZeroOffset);
129
132
  const end = start.plus({ seconds: data.duration });
130
133
  const metas = metastore.fetch(start, end);
@@ -133,18 +136,23 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
133
136
  return prev;
134
137
  }, new Map());
135
138
  metastore.prune(start);
136
- const chunk = new speechflow_node_1.SpeechFlowChunk(start, end, "final", "text", text, meta);
139
+ meta.set("words", words.map((word) => {
140
+ const start = luxon_1.Duration.fromMillis(word.start * 1000).plus(this.timeZeroOffset);
141
+ const end = luxon_1.Duration.fromMillis(word.end * 1000).plus(this.timeZeroOffset);
142
+ return { word: word.punctuated_word ?? word.word, start, end };
143
+ }));
144
+ const chunk = new speechflow_node_1.SpeechFlowChunk(start, end, isFinal ? "final" : "intermediate", "text", text, meta);
137
145
  queue.write(chunk);
138
146
  }
139
147
  });
140
148
  this.dg.on(Deepgram.LiveTranscriptionEvents.Metadata, (data) => {
141
- this.log("info", "Deepgram: metadata received");
149
+ this.log("info", "metadata received");
142
150
  });
143
151
  this.dg.on(Deepgram.LiveTranscriptionEvents.Close, () => {
144
- this.log("info", "Deepgram: connection close");
152
+ this.log("info", "connection close");
145
153
  });
146
154
  this.dg.on(Deepgram.LiveTranscriptionEvents.Error, (error) => {
147
- this.log("error", `Deepgram: ${error.message}`);
155
+ this.log("error", `error: ${error.message}`);
148
156
  this.emit("error");
149
157
  });
150
158
  /* wait for Deepgram API to be available */
@@ -154,9 +162,9 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
154
162
  timer = null;
155
163
  reject(new Error("Deepgram: timeout waiting for connection open"));
156
164
  }
157
- }, 3000);
165
+ }, 8000);
158
166
  this.dg.once(Deepgram.LiveTranscriptionEvents.Open, () => {
159
- this.log("info", "Deepgram: connection open");
167
+ this.log("info", "connection open");
160
168
  if (timer !== null) {
161
169
  clearTimeout(timer);
162
170
  timer = null;
@@ -176,7 +184,7 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
176
184
  if (initTimeout === null)
177
185
  return;
178
186
  initTimeout = null;
179
- this.log("warning", "Deepgram: initialization timeout -- restarting service usage");
187
+ this.log("warning", "initialization timeout -- restarting service usage");
180
188
  await this.close();
181
189
  this.open();
182
190
  }, 3000);
@@ -208,7 +216,7 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
208
216
  callback(new Error("expected Buffer input chunk"));
209
217
  else {
210
218
  if (chunk.payload.byteLength > 0) {
211
- log("info", `Deepgram: send data (${chunk.payload.byteLength} bytes)`);
219
+ log("debug", `send data (${chunk.payload.byteLength} bytes)`);
212
220
  initTimeoutStart();
213
221
  if (chunk.meta.size > 0)
214
222
  metastore.store(chunk.timestampStart, chunk.timestampEnd, chunk.meta);
@@ -219,7 +227,7 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
219
227
  },
220
228
  read(size) {
221
229
  queue.read().then((chunk) => {
222
- log("info", `Deepgram: receive data (${chunk.payload.length} bytes)`);
230
+ log("info", `receive data (${chunk.payload.length} bytes)`);
223
231
  initTimeoutStop();
224
232
  this.push(chunk, encoding);
225
233
  });
@@ -1 +1 @@
1
- {"version":3,"file":"speechflow-node-a2t-deepgram.js","sourceRoot":"","sources":["../src/speechflow-node-a2t-deepgram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speechflow-node-a2t-deepgram.js","sourceRoot":"","sources":["../src/speechflow-node-a2t-deepgram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import SpeechFlowNode from "./speechflow-node";
2
+ export default class SpeechFlowNodeSentence extends SpeechFlowNode {
3
+ static name: string;
4
+ private static speexInitialized;
5
+ private queue;
6
+ private queueRecv;
7
+ private queueSplit;
8
+ private queueSend;
9
+ private destroyed;
10
+ constructor(id: string, cfg: {
11
+ [id: string]: any;
12
+ }, opts: {
13
+ [id: string]: any;
14
+ }, args: any[]);
15
+ open(): Promise<void>;
16
+ close(): Promise<void>;
17
+ }
@@ -0,0 +1,234 @@
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
+ /* external dependencies */
47
+ const luxon_1 = require("luxon");
48
+ /* internal dependencies */
49
+ const speechflow_node_1 = __importDefault(require("./speechflow-node"));
50
+ const utils = __importStar(require("./speechflow-utils"));
51
+ /* SpeechFlow node for sentence splitting */
52
+ class SpeechFlowNodeSentence extends speechflow_node_1.default {
53
+ /* declare official node name */
54
+ static name = "sentence";
55
+ /* internal state */
56
+ static speexInitialized = false;
57
+ queue = new utils.Queue();
58
+ queueRecv = this.queue.pointerUse("recv");
59
+ queueSplit = this.queue.pointerUse("split");
60
+ queueSend = this.queue.pointerUse("send");
61
+ destroyed = false;
62
+ /* construct node */
63
+ constructor(id, cfg, opts, args) {
64
+ super(id, cfg, opts, args);
65
+ /* declare node configuration parameters */
66
+ this.configure({});
67
+ /* declare node input/output format */
68
+ this.input = "text";
69
+ this.output = "text";
70
+ }
71
+ /* open node */
72
+ async open() {
73
+ /* clear destruction flag */
74
+ this.destroyed = false;
75
+ /* pass-through logging */
76
+ const log = (level, msg) => { this.log(level, msg); };
77
+ /* work off queued audio frames */
78
+ let workingOffTimer = null;
79
+ let workingOff = false;
80
+ const workOffQueue = async () => {
81
+ if (this.destroyed)
82
+ return;
83
+ /* control working off round */
84
+ if (workingOff)
85
+ return;
86
+ workingOff = true;
87
+ if (workingOffTimer !== null) {
88
+ clearTimeout(workingOffTimer);
89
+ workingOffTimer = null;
90
+ }
91
+ this.queue.off("write", workOffQueue);
92
+ /* try to work off one or more chunks */
93
+ while (true) {
94
+ const element = this.queueSplit.peek();
95
+ if (element === undefined)
96
+ break;
97
+ if (element.type === "text-eof") {
98
+ this.queueSplit.walk(+1);
99
+ break;
100
+ }
101
+ const chunk = element.chunk;
102
+ const payload = chunk.payload;
103
+ const m = payload.match(/^((?:.|\r?\n)+?[.;?!])\s*((?:.|\r?\n)*)$/);
104
+ if (m !== null) {
105
+ /* contains a sentence */
106
+ const [, sentence, rest] = m;
107
+ if (rest !== "") {
108
+ /* contains more than a sentence */
109
+ const chunk2 = chunk.clone();
110
+ const duration = luxon_1.Duration.fromMillis(chunk.timestampEnd.minus(chunk.timestampStart).toMillis() *
111
+ (sentence.length / payload.length));
112
+ chunk2.timestampStart = chunk.timestampStart.plus(duration);
113
+ chunk.timestampEnd = chunk2.timestampStart;
114
+ chunk.payload = sentence;
115
+ chunk2.payload = rest;
116
+ element.complete = true;
117
+ this.queueSplit.touch();
118
+ this.queueSplit.walk(+1);
119
+ this.queueSplit.insert({ type: "text-frame", chunk: chunk2 });
120
+ }
121
+ else {
122
+ /* contains just the sentence */
123
+ element.complete = true;
124
+ this.queueSplit.touch();
125
+ this.queueSplit.walk(+1);
126
+ }
127
+ }
128
+ else {
129
+ /* contains less than a sentence */
130
+ const position = this.queueSplit.position();
131
+ if (position < this.queueSplit.maxPosition() - 1) {
132
+ /* merge into following chunk */
133
+ const element2 = this.queueSplit.peek(position + 1);
134
+ if (element2 === undefined)
135
+ break;
136
+ if (element2.type === "text-eof") {
137
+ element.complete = true;
138
+ this.queueSplit.touch();
139
+ this.queueSplit.walk(+1);
140
+ break;
141
+ }
142
+ element2.chunk.timestampStart = element.chunk.timestampStart;
143
+ element2.chunk.payload =
144
+ element.chunk.payload + " " +
145
+ element2.chunk.payload;
146
+ this.queueSplit.delete();
147
+ this.queueSplit.touch();
148
+ }
149
+ else
150
+ break;
151
+ }
152
+ }
153
+ /* re-initiate working off round */
154
+ workingOff = false;
155
+ workingOffTimer = setTimeout(workOffQueue, 100);
156
+ this.queue.once("write", workOffQueue);
157
+ };
158
+ this.queue.once("write", workOffQueue);
159
+ /* provide Duplex stream and internally attach to classifier */
160
+ const self = this;
161
+ this.stream = new node_stream_1.default.Duplex({
162
+ writableObjectMode: true,
163
+ readableObjectMode: true,
164
+ decodeStrings: false,
165
+ highWaterMark: 1,
166
+ /* receive text chunk (writable side of stream) */
167
+ write(chunk, encoding, callback) {
168
+ if (Buffer.isBuffer(chunk.payload))
169
+ callback(new Error("expected text input as string chunks"));
170
+ else if (chunk.payload.length === 0)
171
+ callback();
172
+ else {
173
+ log("info", `received text: ${JSON.stringify(chunk.payload)}`);
174
+ self.queueRecv.append({ type: "text-frame", chunk });
175
+ callback();
176
+ }
177
+ },
178
+ /* receive no more text chunks (writable side of stream) */
179
+ final(callback) {
180
+ /* signal end of file */
181
+ self.queueRecv.append({ type: "text-eof" });
182
+ callback();
183
+ },
184
+ /* send text chunk(s) (readable side of stream) */
185
+ read(_size) {
186
+ /* flush pending audio chunks */
187
+ const flushPendingChunks = () => {
188
+ const element = self.queueSend.peek();
189
+ if (element !== undefined
190
+ && element.type === "text-eof") {
191
+ this.push(null);
192
+ self.queueSend.walk(+1);
193
+ }
194
+ else if (element !== undefined
195
+ && element.type === "text-frame"
196
+ && element.complete === true) {
197
+ while (true) {
198
+ const element = self.queueSend.peek();
199
+ if (element === undefined)
200
+ break;
201
+ else if (element.type === "text-eof") {
202
+ this.push(null);
203
+ self.queueSend.walk(+1);
204
+ break;
205
+ }
206
+ else if (element.type === "text-frame"
207
+ && element.complete !== true)
208
+ break;
209
+ log("info", `send text: ${JSON.stringify(element.chunk.payload)}`);
210
+ this.push(element.chunk);
211
+ self.queueSend.walk(+1);
212
+ self.queue.trim();
213
+ }
214
+ }
215
+ else
216
+ self.queue.once("write", flushPendingChunks);
217
+ };
218
+ flushPendingChunks();
219
+ }
220
+ });
221
+ }
222
+ /* close node */
223
+ async close() {
224
+ /* close stream */
225
+ if (this.stream !== null) {
226
+ this.stream.destroy();
227
+ this.stream = null;
228
+ }
229
+ /* indicate destruction */
230
+ this.destroyed = true;
231
+ }
232
+ }
233
+ exports.default = SpeechFlowNodeSentence;
234
+ //# sourceMappingURL=speechflow-node-t2t-sentence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speechflow-node-t2t-sentence.js","sourceRoot":"","sources":["../src/speechflow-node-t2t-sentence.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import SpeechFlowNode from "./speechflow-node";
2
2
  export default class SpeechFlowNodeSubtitle extends SpeechFlowNode {
3
3
  static name: string;
4
4
  private sequenceNo;
5
+ private hapi;
5
6
  constructor(id: string, cfg: {
6
7
  [id: string]: any;
7
8
  }, opts: {