speechflow 1.3.0 → 1.3.2

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 (83) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +165 -22
  3. package/dst/speechflow-node-a2a-gender.d.ts +2 -0
  4. package/dst/speechflow-node-a2a-gender.js +137 -59
  5. package/dst/speechflow-node-a2a-gender.js.map +1 -1
  6. package/dst/speechflow-node-a2a-meter.d.ts +3 -1
  7. package/dst/speechflow-node-a2a-meter.js +79 -35
  8. package/dst/speechflow-node-a2a-meter.js.map +1 -1
  9. package/dst/speechflow-node-a2a-mute.d.ts +1 -0
  10. package/dst/speechflow-node-a2a-mute.js +37 -11
  11. package/dst/speechflow-node-a2a-mute.js.map +1 -1
  12. package/dst/speechflow-node-a2a-vad.d.ts +3 -0
  13. package/dst/speechflow-node-a2a-vad.js +194 -96
  14. package/dst/speechflow-node-a2a-vad.js.map +1 -1
  15. package/dst/speechflow-node-a2a-wav.js +27 -11
  16. package/dst/speechflow-node-a2a-wav.js.map +1 -1
  17. package/dst/speechflow-node-a2t-deepgram.d.ts +4 -0
  18. package/dst/speechflow-node-a2t-deepgram.js +141 -43
  19. package/dst/speechflow-node-a2t-deepgram.js.map +1 -1
  20. package/dst/speechflow-node-t2a-elevenlabs.d.ts +2 -0
  21. package/dst/speechflow-node-t2a-elevenlabs.js +61 -12
  22. package/dst/speechflow-node-t2a-elevenlabs.js.map +1 -1
  23. package/dst/speechflow-node-t2a-kokoro.d.ts +1 -0
  24. package/dst/speechflow-node-t2a-kokoro.js +10 -4
  25. package/dst/speechflow-node-t2a-kokoro.js.map +1 -1
  26. package/dst/speechflow-node-t2t-deepl.js +8 -4
  27. package/dst/speechflow-node-t2t-deepl.js.map +1 -1
  28. package/dst/speechflow-node-t2t-format.js +2 -2
  29. package/dst/speechflow-node-t2t-format.js.map +1 -1
  30. package/dst/speechflow-node-t2t-ollama.js +1 -1
  31. package/dst/speechflow-node-t2t-ollama.js.map +1 -1
  32. package/dst/speechflow-node-t2t-openai.js +1 -1
  33. package/dst/speechflow-node-t2t-openai.js.map +1 -1
  34. package/dst/speechflow-node-t2t-sentence.d.ts +1 -1
  35. package/dst/speechflow-node-t2t-sentence.js +35 -24
  36. package/dst/speechflow-node-t2t-sentence.js.map +1 -1
  37. package/dst/speechflow-node-t2t-subtitle.js +85 -17
  38. package/dst/speechflow-node-t2t-subtitle.js.map +1 -1
  39. package/dst/speechflow-node-t2t-transformers.js +2 -2
  40. package/dst/speechflow-node-t2t-transformers.js.map +1 -1
  41. package/dst/speechflow-node-x2x-filter.js +4 -4
  42. package/dst/speechflow-node-x2x-trace.js +1 -1
  43. package/dst/speechflow-node-x2x-trace.js.map +1 -1
  44. package/dst/speechflow-node-xio-device.js +12 -8
  45. package/dst/speechflow-node-xio-device.js.map +1 -1
  46. package/dst/speechflow-node-xio-file.js +9 -3
  47. package/dst/speechflow-node-xio-file.js.map +1 -1
  48. package/dst/speechflow-node-xio-mqtt.js +5 -2
  49. package/dst/speechflow-node-xio-mqtt.js.map +1 -1
  50. package/dst/speechflow-node-xio-websocket.js +11 -11
  51. package/dst/speechflow-node-xio-websocket.js.map +1 -1
  52. package/dst/speechflow-utils.d.ts +5 -0
  53. package/dst/speechflow-utils.js +77 -44
  54. package/dst/speechflow-utils.js.map +1 -1
  55. package/dst/speechflow.js +104 -34
  56. package/dst/speechflow.js.map +1 -1
  57. package/etc/eslint.mjs +1 -2
  58. package/etc/speechflow.yaml +18 -7
  59. package/etc/stx.conf +3 -3
  60. package/package.json +14 -13
  61. package/src/speechflow-node-a2a-gender.ts +148 -64
  62. package/src/speechflow-node-a2a-meter.ts +87 -40
  63. package/src/speechflow-node-a2a-mute.ts +39 -11
  64. package/src/speechflow-node-a2a-vad.ts +206 -100
  65. package/src/speechflow-node-a2a-wav.ts +27 -11
  66. package/src/speechflow-node-a2t-deepgram.ts +148 -45
  67. package/src/speechflow-node-t2a-elevenlabs.ts +65 -12
  68. package/src/speechflow-node-t2a-kokoro.ts +11 -4
  69. package/src/speechflow-node-t2t-deepl.ts +9 -4
  70. package/src/speechflow-node-t2t-format.ts +2 -2
  71. package/src/speechflow-node-t2t-ollama.ts +1 -1
  72. package/src/speechflow-node-t2t-openai.ts +1 -1
  73. package/src/speechflow-node-t2t-sentence.ts +38 -27
  74. package/src/speechflow-node-t2t-subtitle.ts +62 -15
  75. package/src/speechflow-node-t2t-transformers.ts +4 -3
  76. package/src/speechflow-node-x2x-filter.ts +4 -4
  77. package/src/speechflow-node-x2x-trace.ts +1 -1
  78. package/src/speechflow-node-xio-device.ts +12 -8
  79. package/src/speechflow-node-xio-file.ts +9 -3
  80. package/src/speechflow-node-xio-mqtt.ts +5 -2
  81. package/src/speechflow-node-xio-websocket.ts +12 -12
  82. package/src/speechflow-utils.ts +78 -44
  83. package/src/speechflow.ts +117 -36
@@ -1 +1 @@
1
- {"version":3,"file":"speechflow-node-a2a-wav.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-wav.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speechflow-node-a2a-wav.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-wav.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,10 @@ import SpeechFlowNode from "./speechflow-node";
2
2
  export default class SpeechFlowNodeDeepgram extends SpeechFlowNode {
3
3
  static name: string;
4
4
  private dg;
5
+ private destroyed;
6
+ private initTimeout;
7
+ private connectionTimeout;
8
+ private queue;
5
9
  constructor(id: string, cfg: {
6
10
  [id: string]: any;
7
11
  }, opts: {
@@ -55,6 +55,10 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
55
55
  static name = "deepgram";
56
56
  /* internal state */
57
57
  dg = null;
58
+ destroyed = false;
59
+ initTimeout = null;
60
+ connectionTimeout = null;
61
+ queue = null;
58
62
  /* construct node */
59
63
  constructor(id, cfg, opts, args) {
60
64
  super(id, cfg, opts, args);
@@ -73,15 +77,20 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
73
77
  /* one-time status of node */
74
78
  async status() {
75
79
  let balance = 0;
76
- const deepgram = Deepgram.createClient(this.params.keyAdm);
77
- const response = await deepgram.manage.getProjects();
78
- if (response !== null && response.error === null) {
79
- for (const project of response.result.projects) {
80
- const response = await deepgram.manage.getProjectBalances(project.project_id);
81
- if (response !== null && response.error === null)
82
- balance += response.result.balances[0]?.amount ?? 0;
80
+ try {
81
+ const deepgram = Deepgram.createClient(this.params.keyAdm);
82
+ const response = await deepgram.manage.getProjects();
83
+ if (response !== null && response.error === null) {
84
+ for (const project of response.result.projects) {
85
+ const response = await deepgram.manage.getProjectBalances(project.project_id);
86
+ if (response !== null && response.error === null)
87
+ balance += response.result.balances[0]?.amount ?? 0;
88
+ }
83
89
  }
84
90
  }
91
+ catch (error) {
92
+ this.log("warning", `failed to fetch balance: ${error}`);
93
+ }
85
94
  return { balance: balance.toFixed(2) };
86
95
  }
87
96
  /* open node */
@@ -89,8 +98,10 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
89
98
  /* sanity check situation */
90
99
  if (this.config.audioBitDepth !== 16 || !this.config.audioLittleEndian)
91
100
  throw new Error("Deepgram node currently supports PCM-S16LE audio only");
101
+ /* clear destruction flag */
102
+ this.destroyed = false;
92
103
  /* create queue for results */
93
- const queue = new utils.SingleQueue();
104
+ this.queue = new utils.SingleQueue();
94
105
  /* create a store for the meta information */
95
106
  const metastore = new utils.TimeStore();
96
107
  /* connect to Deepgram API */
@@ -120,7 +131,10 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
120
131
  });
121
132
  /* hook onto Deepgram API events */
122
133
  this.dg.on(Deepgram.LiveTranscriptionEvents.Transcript, async (data) => {
123
- const text = data.channel?.alternatives[0]?.transcript ?? "";
134
+ if (this.destroyed || this.queue === null)
135
+ return;
136
+ const text = (data.channel?.alternatives[0]?.transcript ?? "");
137
+ const words = (data.channel?.alternatives[0]?.words ?? []);
124
138
  if (text === "")
125
139
  this.log("info", `empty/dummy text received (start: ${data.start}s, duration: ${data.duration.toFixed(2)}s)`);
126
140
  else {
@@ -133,8 +147,13 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
133
147
  return prev;
134
148
  }, new Map());
135
149
  metastore.prune(start);
150
+ meta.set("words", words.map((word) => {
151
+ const start = luxon_1.Duration.fromMillis(word.start * 1000).plus(this.timeZeroOffset);
152
+ const end = luxon_1.Duration.fromMillis(word.end * 1000).plus(this.timeZeroOffset);
153
+ return { word: word.punctuated_word ?? word.word, start, end };
154
+ }));
136
155
  const chunk = new speechflow_node_1.SpeechFlowChunk(start, end, "final", "text", text, meta);
137
- queue.write(chunk);
156
+ this.queue.write(chunk);
138
157
  }
139
158
  });
140
159
  this.dg.on(Deepgram.LiveTranscriptionEvents.Metadata, (data) => {
@@ -142,24 +161,28 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
142
161
  });
143
162
  this.dg.on(Deepgram.LiveTranscriptionEvents.Close, () => {
144
163
  this.log("info", "connection close");
164
+ if (!this.destroyed && this.queue !== null)
165
+ this.queue.write(null);
145
166
  });
146
167
  this.dg.on(Deepgram.LiveTranscriptionEvents.Error, (error) => {
147
168
  this.log("error", `error: ${error.message}`);
169
+ if (!this.destroyed && this.queue !== null)
170
+ this.queue.write(null);
148
171
  this.emit("error");
149
172
  });
150
173
  /* wait for Deepgram API to be available */
151
174
  await new Promise((resolve, reject) => {
152
- let timer = setTimeout(() => {
153
- if (timer !== null) {
154
- timer = null;
175
+ this.connectionTimeout = setTimeout(() => {
176
+ if (this.connectionTimeout !== null) {
177
+ this.connectionTimeout = null;
155
178
  reject(new Error("Deepgram: timeout waiting for connection open"));
156
179
  }
157
- }, 3000);
180
+ }, 8000);
158
181
  this.dg.once(Deepgram.LiveTranscriptionEvents.Open, () => {
159
182
  this.log("info", "connection open");
160
- if (timer !== null) {
161
- clearTimeout(timer);
162
- timer = null;
183
+ if (this.connectionTimeout !== null) {
184
+ clearTimeout(this.connectionTimeout);
185
+ this.connectionTimeout = null;
163
186
  }
164
187
  resolve(true);
165
188
  });
@@ -168,79 +191,154 @@ class SpeechFlowNodeDeepgram extends speechflow_node_1.default {
168
191
  this.timeOpen = luxon_1.DateTime.now();
169
192
  /* workaround Deepgram initialization problems */
170
193
  let initDone = false;
171
- let initTimeout = null;
172
194
  const initTimeoutStart = () => {
173
- if (initDone)
195
+ if (initDone || this.destroyed)
174
196
  return;
175
- setTimeout(async () => {
176
- if (initTimeout === null)
197
+ this.initTimeout = setTimeout(async () => {
198
+ if (this.initTimeout === null || this.destroyed)
177
199
  return;
178
- initTimeout = null;
200
+ this.initTimeout = null;
179
201
  this.log("warning", "initialization timeout -- restarting service usage");
180
202
  await this.close();
181
- this.open();
182
- }, 3000);
203
+ if (!this.destroyed)
204
+ await this.open();
205
+ }, 3 * 1000);
183
206
  };
184
207
  const initTimeoutStop = () => {
185
208
  if (initDone)
186
209
  return;
187
210
  initDone = true;
188
- if (initTimeout !== null) {
189
- clearTimeout(initTimeout);
190
- initTimeout = null;
211
+ if (this.initTimeout !== null) {
212
+ clearTimeout(this.initTimeout);
213
+ this.initTimeout = null;
191
214
  }
192
215
  };
193
216
  /* provide Duplex stream and internally attach to Deepgram API */
194
- const dg = this.dg;
195
- const log = (level, msg) => {
196
- this.log(level, msg);
197
- };
198
- const encoding = this.config.textEncoding;
217
+ const self = this;
199
218
  this.stream = new node_stream_1.default.Duplex({
200
219
  writableObjectMode: true,
201
220
  readableObjectMode: true,
202
221
  decodeStrings: false,
203
222
  highWaterMark: 1,
204
223
  write(chunk, encoding, callback) {
224
+ if (self.destroyed || self.dg === null) {
225
+ callback(new Error("stream already destroyed"));
226
+ return;
227
+ }
205
228
  if (chunk.type !== "audio")
206
229
  callback(new Error("expected audio input chunk"));
207
230
  else if (!Buffer.isBuffer(chunk.payload))
208
231
  callback(new Error("expected Buffer input chunk"));
209
232
  else {
210
233
  if (chunk.payload.byteLength > 0) {
211
- log("debug", `send data (${chunk.payload.byteLength} bytes)`);
234
+ self.log("debug", `send data (${chunk.payload.byteLength} bytes)`);
212
235
  initTimeoutStart();
213
236
  if (chunk.meta.size > 0)
214
237
  metastore.store(chunk.timestampStart, chunk.timestampEnd, chunk.meta);
215
- dg.send(chunk.payload.buffer); /* intentionally discard all time information */
238
+ try {
239
+ self.dg.send(chunk.payload.buffer); /* intentionally discard all time information */
240
+ }
241
+ catch (error) {
242
+ callback(error instanceof Error ? error : new Error("failed to send to Deepgram"));
243
+ return;
244
+ }
216
245
  }
217
246
  callback();
218
247
  }
219
248
  },
220
249
  read(size) {
221
- queue.read().then((chunk) => {
222
- log("info", `receive data (${chunk.payload.length} bytes)`);
223
- initTimeoutStop();
224
- this.push(chunk, encoding);
250
+ if (self.destroyed || self.queue === null) {
251
+ this.push(null);
252
+ return;
253
+ }
254
+ let readTimeout = setTimeout(() => {
255
+ if (readTimeout !== null) {
256
+ readTimeout = null;
257
+ if (!self.destroyed) {
258
+ self.log("warning", "read timeout - pushing null to prevent hanging");
259
+ this.push(null);
260
+ }
261
+ }
262
+ }, 30 * 1000);
263
+ self.queue.read().then((chunk) => {
264
+ if (readTimeout !== null) {
265
+ clearTimeout(readTimeout);
266
+ readTimeout = null;
267
+ }
268
+ if (self.destroyed) {
269
+ this.push(null);
270
+ return;
271
+ }
272
+ if (chunk === null) {
273
+ self.log("info", "received EOF signal");
274
+ this.push(null);
275
+ }
276
+ else {
277
+ self.log("info", `received data (${chunk.payload.length} bytes)`);
278
+ initTimeoutStop();
279
+ this.push(chunk, self.config.textEncoding);
280
+ }
281
+ }).catch((error) => {
282
+ if (readTimeout !== null) {
283
+ clearTimeout(readTimeout);
284
+ readTimeout = null;
285
+ }
286
+ if (!self.destroyed) {
287
+ self.log("error", `queue read error: ${error.message}`);
288
+ this.push(null);
289
+ }
225
290
  });
226
291
  },
227
292
  final(callback) {
228
- dg.requestClose();
229
- this.push(null);
293
+ if (self.destroyed || self.dg === null) {
294
+ callback();
295
+ return;
296
+ }
297
+ try {
298
+ self.dg.requestClose();
299
+ }
300
+ catch (error) {
301
+ self.log("warning", `error closing Deepgram connection: ${error}`);
302
+ }
303
+ /* NOTICE: do not push null here -- let the Deepgram close event handle it */
230
304
  callback();
231
305
  }
232
306
  });
233
307
  }
234
308
  /* close node */
235
309
  async close() {
310
+ /* indicate destruction first to stop all async operations */
311
+ this.destroyed = true;
312
+ /* cleanup all timers */
313
+ if (this.initTimeout !== null) {
314
+ clearTimeout(this.initTimeout);
315
+ this.initTimeout = null;
316
+ }
317
+ if (this.connectionTimeout !== null) {
318
+ clearTimeout(this.connectionTimeout);
319
+ this.connectionTimeout = null;
320
+ }
236
321
  /* close stream */
237
322
  if (this.stream !== null) {
238
323
  this.stream.destroy();
239
324
  this.stream = null;
240
325
  }
241
- /* shutdown Deepgram API */
242
- if (this.dg !== null)
243
- this.dg.requestClose();
326
+ /* close Deepgram connection and remove listeners */
327
+ if (this.dg !== null) {
328
+ try {
329
+ this.dg.removeAllListeners();
330
+ this.dg.requestClose();
331
+ }
332
+ catch (error) {
333
+ this.log("warning", `error during Deepgram cleanup: ${error}`);
334
+ }
335
+ this.dg = null;
336
+ }
337
+ /* signal EOF to any pending read operations */
338
+ if (this.queue !== null) {
339
+ this.queue.write(null);
340
+ this.queue = null;
341
+ }
244
342
  }
245
343
  }
246
344
  exports.default = SpeechFlowNodeDeepgram;
@@ -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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"}
@@ -3,6 +3,8 @@ export default class SpeechFlowNodeElevenlabs extends SpeechFlowNode {
3
3
  static name: string;
4
4
  private elevenlabs;
5
5
  private static speexInitialized;
6
+ private destroyed;
7
+ private resampler;
6
8
  constructor(id: string, cfg: {
7
9
  [id: string]: any;
8
10
  }, opts: {
@@ -56,6 +56,8 @@ class SpeechFlowNodeElevenlabs extends speechflow_node_1.default {
56
56
  /* internal state */
57
57
  elevenlabs = null;
58
58
  static speexInitialized = false;
59
+ destroyed = false;
60
+ resampler = null;
59
61
  /* construct node */
60
62
  constructor(id, cfg, opts, args) {
61
63
  super(id, cfg, opts, args);
@@ -69,6 +71,9 @@ class SpeechFlowNodeElevenlabs extends speechflow_node_1.default {
69
71
  similarity: { type: "number", val: 0.75, pos: 4, match: (n) => n >= 0.0 && n <= 1.0 },
70
72
  optimize: { type: "string", val: "latency", pos: 5, match: /^(?:latency|quality)$/ }
71
73
  });
74
+ /* sanity check parameters */
75
+ if (!this.params.key)
76
+ throw new Error("ElevenLabs API key not configured");
72
77
  /* declare node input/output format */
73
78
  this.input = "text";
74
79
  this.output = "audio";
@@ -82,6 +87,8 @@ class SpeechFlowNodeElevenlabs extends speechflow_node_1.default {
82
87
  }
83
88
  /* open node */
84
89
  async open() {
90
+ /* clear destruction flag */
91
+ this.destroyed = false;
85
92
  /* establish ElevenLabs API connection */
86
93
  this.elevenlabs = new ElevenLabs.ElevenLabsClient({
87
94
  apiKey: this.params.key
@@ -144,36 +151,73 @@ class SpeechFlowNodeElevenlabs extends speechflow_node_1.default {
144
151
  await speex_resampler_1.default.initPromise;
145
152
  SpeechFlowNodeElevenlabs.speexInitialized = true;
146
153
  }
147
- const resampler = new speex_resampler_1.default(1, maxSampleRate, this.config.audioSampleRate, 7);
154
+ this.resampler = new speex_resampler_1.default(1, maxSampleRate, this.config.audioSampleRate, 7);
148
155
  /* create transform stream and connect it to the ElevenLabs API */
149
- const log = (level, msg) => { this.log(level, msg); };
156
+ const self = this;
150
157
  this.stream = new node_stream_1.default.Transform({
151
158
  writableObjectMode: true,
152
159
  readableObjectMode: true,
153
160
  decodeStrings: false,
154
161
  highWaterMark: 1,
155
162
  transform(chunk, encoding, callback) {
163
+ if (self.destroyed) {
164
+ callback(new Error("stream already destroyed"));
165
+ return;
166
+ }
156
167
  if (Buffer.isBuffer(chunk.payload))
157
168
  callback(new Error("invalid chunk payload type"));
158
169
  else {
159
- speechStream(chunk.payload).then((stream) => {
160
- (0, get_stream_1.getStreamAsBuffer)(stream).then((buffer) => {
161
- const bufferResampled = resampler.processChunk(buffer);
162
- log("info", `ElevenLabs: received audio (buffer length: ${buffer.byteLength})`);
170
+ (async () => {
171
+ let processTimeout = setTimeout(() => {
172
+ processTimeout = null;
173
+ callback(new Error("ElevenLabs API timeout"));
174
+ }, 60 * 1000);
175
+ try {
176
+ const stream = await speechStream(chunk.payload);
177
+ if (self.destroyed) {
178
+ if (processTimeout !== null) {
179
+ clearTimeout(processTimeout);
180
+ processTimeout = null;
181
+ }
182
+ callback(new Error("stream destroyed during processing"));
183
+ return;
184
+ }
185
+ const buffer = await (0, get_stream_1.getStreamAsBuffer)(stream);
186
+ if (self.destroyed) {
187
+ if (processTimeout !== null) {
188
+ clearTimeout(processTimeout);
189
+ processTimeout = null;
190
+ }
191
+ callback(new Error("stream destroyed during processing"));
192
+ return;
193
+ }
194
+ const bufferResampled = self.resampler.processChunk(buffer);
195
+ self.log("info", `ElevenLabs: received audio (buffer length: ${buffer.byteLength})`);
163
196
  const chunkNew = chunk.clone();
164
197
  chunkNew.type = "audio";
165
198
  chunkNew.payload = bufferResampled;
199
+ if (processTimeout !== null) {
200
+ clearTimeout(processTimeout);
201
+ processTimeout = null;
202
+ }
166
203
  this.push(chunkNew);
167
204
  callback();
168
- }).catch((error) => {
169
- callback(error);
170
- });
171
- }).catch((error) => {
172
- callback(error);
173
- });
205
+ }
206
+ catch (error) {
207
+ if (processTimeout !== null) {
208
+ clearTimeout(processTimeout);
209
+ processTimeout = null;
210
+ }
211
+ callback(error instanceof Error ? error : new Error("ElevenLabs processing failed"));
212
+ }
213
+ })();
174
214
  }
175
215
  },
176
216
  final(callback) {
217
+ if (self.destroyed) {
218
+ callback();
219
+ return;
220
+ }
177
221
  this.push(null);
178
222
  callback();
179
223
  }
@@ -181,11 +225,16 @@ class SpeechFlowNodeElevenlabs extends speechflow_node_1.default {
181
225
  }
182
226
  /* close node */
183
227
  async close() {
228
+ /* indicate destruction */
229
+ this.destroyed = true;
184
230
  /* destroy stream */
185
231
  if (this.stream !== null) {
186
232
  this.stream.destroy();
187
233
  this.stream = null;
188
234
  }
235
+ /* destroy resampler */
236
+ if (this.resampler !== null)
237
+ this.resampler = null;
189
238
  /* destroy ElevenLabs API */
190
239
  if (this.elevenlabs !== null)
191
240
  this.elevenlabs = null;
@@ -1 +1 @@
1
- {"version":3,"file":"speechflow-node-t2a-elevenlabs.js","sourceRoot":"","sources":["../src/speechflow-node-t2a-elevenlabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speechflow-node-t2a-elevenlabs.js","sourceRoot":"","sources":["../src/speechflow-node-t2a-elevenlabs.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import SpeechFlowNode from "./speechflow-node";
2
2
  export default class SpeechFlowNodeKokoro extends SpeechFlowNode {
3
3
  static name: string;
4
4
  private kokoro;
5
+ private resampler;
5
6
  private static speexInitialized;
6
7
  constructor(id: string, cfg: {
7
8
  [id: string]: any;
@@ -21,6 +21,7 @@ class SpeechFlowNodeKokoro extends speechflow_node_1.default {
21
21
  static name = "kokoro";
22
22
  /* internal state */
23
23
  kokoro = null;
24
+ resampler = null;
24
25
  static speexInitialized = false;
25
26
  /* construct node */
26
27
  constructor(id, cfg, opts, args) {
@@ -55,9 +56,11 @@ class SpeechFlowNodeKokoro extends speechflow_node_1.default {
55
56
  const interval = setInterval(() => {
56
57
  for (const [artifact, percent] of progressState) {
57
58
  this.log("info", `downloaded ${percent.toFixed(2)}% of artifact "${artifact}"`);
58
- if (percent >= 1.0)
59
+ if (percent >= 100.0)
59
60
  progressState.delete(artifact);
60
61
  }
62
+ if (progressState.size === 0)
63
+ clearInterval(interval);
61
64
  }, 1000);
62
65
  this.kokoro = await kokoro_js_1.KokoroTTS.from_pretrained(model, {
63
66
  dtype: "q4f16",
@@ -73,7 +76,7 @@ class SpeechFlowNodeKokoro extends speechflow_node_1.default {
73
76
  await speex_resampler_1.default.initPromise;
74
77
  SpeechFlowNodeKokoro.speexInitialized = true;
75
78
  }
76
- const resampler = new speex_resampler_1.default(1, 24000, this.config.audioSampleRate, 7);
79
+ this.resampler = new speex_resampler_1.default(1, 24000, this.config.audioSampleRate, 7);
77
80
  /* determine voice for text-to-speech operation */
78
81
  const voices = {
79
82
  "Aoede": "af_aoede",
@@ -84,7 +87,7 @@ class SpeechFlowNodeKokoro extends speechflow_node_1.default {
84
87
  const voice = (voices[this.params.voice]);
85
88
  if (voice === undefined)
86
89
  throw new Error(`invalid Kokoro voice "${this.params.voice}"`);
87
- /* perform text-to-speech operation with Elevenlabs API */
90
+ /* perform text-to-speech operation with Kokoro API */
88
91
  const text2speech = async (text) => {
89
92
  this.log("info", `Kokoro: input: "${text}"`);
90
93
  const audio = await this.kokoro.generate(text, {
@@ -101,7 +104,7 @@ class SpeechFlowNodeKokoro extends speechflow_node_1.default {
101
104
  buffer1.writeInt16LE(sample * 0x7FFF, i * 2);
102
105
  }
103
106
  /* resample audio samples from PCM/I16/24Khz to PCM/I16/48KHz */
104
- const buffer2 = resampler.processChunk(buffer1);
107
+ const buffer2 = this.resampler.processChunk(buffer1);
105
108
  return buffer2;
106
109
  };
107
110
  /* create transform stream and connect it to the Kokoro API */
@@ -140,6 +143,9 @@ class SpeechFlowNodeKokoro extends speechflow_node_1.default {
140
143
  this.stream.destroy();
141
144
  this.stream = null;
142
145
  }
146
+ /* destroy resampler */
147
+ if (this.resampler !== null)
148
+ this.resampler = null;
143
149
  /* destroy Kokoro API */
144
150
  if (this.kokoro !== null)
145
151
  this.kokoro = null;