speechflow 2.3.0 → 2.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 (64) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/package.json +2 -2
  3. package/speechflow-cli/dst/speechflow-node-a2a-compressor-wt.js +10 -9
  4. package/speechflow-cli/dst/speechflow-node-a2a-compressor-wt.js.map +1 -1
  5. package/speechflow-cli/dst/speechflow-node-a2a-compressor.js +17 -2
  6. package/speechflow-cli/dst/speechflow-node-a2a-compressor.js.map +1 -1
  7. package/speechflow-cli/dst/speechflow-node-a2a-expander-wt.js +7 -8
  8. package/speechflow-cli/dst/speechflow-node-a2a-expander-wt.js.map +1 -1
  9. package/speechflow-cli/dst/speechflow-node-a2a-ffmpeg.js +5 -5
  10. package/speechflow-cli/dst/speechflow-node-a2a-ffmpeg.js.map +1 -1
  11. package/speechflow-cli/dst/speechflow-node-a2a-filler.js +5 -0
  12. package/speechflow-cli/dst/speechflow-node-a2a-filler.js.map +1 -1
  13. package/speechflow-cli/dst/speechflow-node-a2a-gender.js +1 -4
  14. package/speechflow-cli/dst/speechflow-node-a2a-gender.js.map +1 -1
  15. package/speechflow-cli/dst/speechflow-node-a2a-meter.js +1 -1
  16. package/speechflow-cli/dst/speechflow-node-a2a-meter.js.map +1 -1
  17. package/speechflow-cli/dst/speechflow-node-a2t-amazon.js +8 -3
  18. package/speechflow-cli/dst/speechflow-node-a2t-amazon.js.map +1 -1
  19. package/speechflow-cli/dst/speechflow-node-a2t-google.d.ts +1 -0
  20. package/speechflow-cli/dst/speechflow-node-a2t-google.js +6 -1
  21. package/speechflow-cli/dst/speechflow-node-a2t-google.js.map +1 -1
  22. package/speechflow-cli/dst/speechflow-node-t2a-kokoro.js +3 -1
  23. package/speechflow-cli/dst/speechflow-node-t2a-kokoro.js.map +1 -1
  24. package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js +1 -0
  25. package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js.map +1 -1
  26. package/speechflow-cli/dst/speechflow-node-t2t-opus.js +9 -1
  27. package/speechflow-cli/dst/speechflow-node-t2t-opus.js.map +1 -1
  28. package/speechflow-cli/dst/speechflow-node-t2t-sentence.d.ts +3 -0
  29. package/speechflow-cli/dst/speechflow-node-t2t-sentence.js +159 -56
  30. package/speechflow-cli/dst/speechflow-node-t2t-sentence.js.map +1 -1
  31. package/speechflow-cli/dst/speechflow-node-xio-exec.js +4 -4
  32. package/speechflow-cli/dst/speechflow-node-xio-exec.js.map +1 -1
  33. package/speechflow-cli/dst/speechflow-node-xio-webrtc.d.ts +1 -0
  34. package/speechflow-cli/dst/speechflow-node-xio-webrtc.js +6 -1
  35. package/speechflow-cli/dst/speechflow-node-xio-webrtc.js.map +1 -1
  36. package/speechflow-cli/dst/speechflow-node-xio-websocket.js +14 -4
  37. package/speechflow-cli/dst/speechflow-node-xio-websocket.js.map +1 -1
  38. package/speechflow-cli/dst/speechflow-util-audio.js +11 -9
  39. package/speechflow-cli/dst/speechflow-util-audio.js.map +1 -1
  40. package/speechflow-cli/dst/speechflow-util-llm.js +12 -2
  41. package/speechflow-cli/dst/speechflow-util-llm.js.map +1 -1
  42. package/speechflow-cli/dst/speechflow-util-queue.d.ts +4 -0
  43. package/speechflow-cli/dst/speechflow-util-queue.js +41 -0
  44. package/speechflow-cli/dst/speechflow-util-queue.js.map +1 -1
  45. package/speechflow-cli/src/speechflow-node-a2a-compressor-wt.ts +12 -9
  46. package/speechflow-cli/src/speechflow-node-a2a-compressor.ts +23 -7
  47. package/speechflow-cli/src/speechflow-node-a2a-expander-wt.ts +7 -8
  48. package/speechflow-cli/src/speechflow-node-a2a-ffmpeg.ts +6 -6
  49. package/speechflow-cli/src/speechflow-node-a2a-filler.ts +6 -0
  50. package/speechflow-cli/src/speechflow-node-a2a-gender.ts +3 -6
  51. package/speechflow-cli/src/speechflow-node-a2a-meter.ts +1 -1
  52. package/speechflow-cli/src/speechflow-node-a2t-amazon.ts +12 -3
  53. package/speechflow-cli/src/speechflow-node-a2t-google.ts +8 -1
  54. package/speechflow-cli/src/speechflow-node-t2a-kokoro.ts +3 -1
  55. package/speechflow-cli/src/speechflow-node-t2a-supertonic.ts +1 -0
  56. package/speechflow-cli/src/speechflow-node-t2t-opus.ts +9 -1
  57. package/speechflow-cli/src/speechflow-node-t2t-sentence.ts +214 -61
  58. package/speechflow-cli/src/speechflow-node-xio-exec.ts +5 -5
  59. package/speechflow-cli/src/speechflow-node-xio-webrtc.ts +7 -1
  60. package/speechflow-cli/src/speechflow-node-xio-websocket.ts +14 -4
  61. package/speechflow-cli/src/speechflow-util-audio.ts +12 -10
  62. package/speechflow-cli/src/speechflow-util-llm.ts +13 -2
  63. package/speechflow-cli/src/speechflow-util-queue.ts +43 -0
  64. package/speechflow-ui-db/dst/index.js +3 -3
@@ -48,6 +48,15 @@ export class QueuePointer<T extends QueueElement> extends EventEmitter {
48
48
  silent (silence: boolean) {
49
49
  this.silence = silence
50
50
  }
51
+ silently<R> (fn: () => R): R {
52
+ this.silence = true
53
+ try {
54
+ return fn()
55
+ }
56
+ finally {
57
+ this.silence = false
58
+ }
59
+ }
51
60
 
52
61
  /* notify about operation */
53
62
  notify (event: string, info: any) {
@@ -171,12 +180,14 @@ export class QueuePointer<T extends QueueElement> extends EventEmitter {
171
180
  }
172
181
  insert (element: T) {
173
182
  this.queue.elements.splice(this.index, 0, element)
183
+ this.queue.adjustPointers(this, this.index, "insert")
174
184
  this.queue.notify("write", { start: this.index, end: this.index, op: "insert" })
175
185
  }
176
186
  delete () {
177
187
  if (this.index >= this.queue.elements.length)
178
188
  throw new Error("cannot delete after last element")
179
189
  this.queue.elements.splice(this.index, 1)
190
+ this.queue.adjustPointers(this, this.index, "delete")
180
191
  this.queue.notify("write", { start: this.index, end: this.index, op: "delete" })
181
192
  }
182
193
  }
@@ -193,6 +204,15 @@ export class Queue<T extends QueueElement> extends EventEmitter {
193
204
  silent (silence: boolean) {
194
205
  this.silence = silence
195
206
  }
207
+ silently<R> (fn: () => R): R {
208
+ this.silence = true
209
+ try {
210
+ return fn()
211
+ }
212
+ finally {
213
+ this.silence = false
214
+ }
215
+ }
196
216
  notify (event: string, info: any) {
197
217
  if (!this.silence)
198
218
  this.emit(event, info)
@@ -207,6 +227,24 @@ export class Queue<T extends QueueElement> extends EventEmitter {
207
227
  throw new Error("pointer does not exist")
208
228
  this.pointers.delete(name)
209
229
  }
230
+
231
+ /* adjust all sibling pointer positions (after insert/delete splice)
232
+ NOTICE: for insert, pointers AT the index are shifted forward to preserve
233
+ their pointer-to-element binding; for delete, pointers AT the index are
234
+ intentionally NOT adjusted, causing them to silently advance to the next
235
+ element (which shifted into the deleted position). */
236
+ adjustPointers (exclude: QueuePointer<T>, index: number, op: "insert" | "delete"): void {
237
+ for (const pointer of this.pointers.values()) {
238
+ if (pointer === exclude)
239
+ continue
240
+ const pos = pointer.position()
241
+ if (op === "insert" && pos >= index)
242
+ pointer.position(pos + 1)
243
+ else if (op === "delete" && pos > index)
244
+ pointer.position(pos - 1)
245
+ }
246
+ }
247
+
210
248
  trim (): void {
211
249
  /* determine minimum pointer position */
212
250
  let min = this.elements.length
@@ -227,6 +265,11 @@ export class Queue<T extends QueueElement> extends EventEmitter {
227
265
  this.notify("write", { start: 0, end: min, op: "trim" })
228
266
  }
229
267
  }
268
+ clear (): void {
269
+ this.elements.length = 0
270
+ for (const pointer of this.pointers.values())
271
+ pointer.position(0)
272
+ }
230
273
  }
231
274
 
232
275
  /* meta store */