speechflow 2.0.0 → 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 +6 -0
- package/README.md +4 -4
- package/package.json +2 -2
- 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.js +2 -4
- 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 +7 -0
- 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 +0 -1
- package/speechflow-cli/dst/speechflow-node-a2t-google.js +0 -6
- package/speechflow-cli/dst/speechflow-node-a2t-google.js.map +1 -1
- 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.js +1 -4
- package/speechflow-cli/dst/speechflow-node-t2a-google.js.map +1 -1
- 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.js +1 -4
- package/speechflow-cli/dst/speechflow-node-t2a-openai.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js +15 -4
- package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js.map +1 -1
- 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-opus.js +18 -16
- package/speechflow-cli/dst/speechflow-node-t2t-opus.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-punctuation.js +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-spellcheck.js +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js +5 -2
- package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-summary.js +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-summary.js.map +1 -1
- 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.js +1 -0
- package/speechflow-cli/dst/speechflow-node-xio-exec.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-xio-file.js +3 -5
- 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.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-xio-webrtc.js +2 -0
- package/speechflow-cli/dst/speechflow-node-xio-webrtc.js.map +1 -1
- 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 +4 -0
- package/speechflow-cli/dst/speechflow-util-audio.js.map +1 -1
- 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.js +1 -0
- package/speechflow-cli/dst/speechflow-util.js.map +1 -1
- package/speechflow-cli/package.json +10 -10
- 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 +7 -9
- 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 +7 -0
- package/speechflow-cli/src/speechflow-node-a2t-amazon.ts +6 -18
- package/speechflow-cli/src/speechflow-node-a2t-google.ts +4 -11
- 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 +1 -4
- package/speechflow-cli/src/speechflow-node-t2a-kokoro.ts +33 -10
- package/speechflow-cli/src/speechflow-node-t2a-openai.ts +1 -4
- package/speechflow-cli/src/speechflow-node-t2a-supertonic.ts +15 -6
- package/speechflow-cli/src/speechflow-node-t2t-amazon.ts +1 -3
- 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 +19 -18
- package/speechflow-cli/src/speechflow-node-t2t-punctuation.ts +1 -1
- package/speechflow-cli/src/speechflow-node-t2t-spellcheck.ts +1 -1
- package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +5 -2
- package/speechflow-cli/src/speechflow-node-t2t-summary.ts +1 -1
- package/speechflow-cli/src/speechflow-node-x2x-filter.ts +2 -0
- package/speechflow-cli/src/speechflow-node-xio-exec.ts +1 -0
- package/speechflow-cli/src/speechflow-node-xio-file.ts +3 -5
- package/speechflow-cli/src/speechflow-node-xio-mqtt.ts +2 -2
- package/speechflow-cli/src/speechflow-node-xio-vban.ts +5 -5
- package/speechflow-cli/src/speechflow-node-xio-webrtc.ts +2 -0
- package/speechflow-cli/src/speechflow-node-xio-websocket.ts +9 -9
- package/speechflow-cli/src/speechflow-util-audio.ts +5 -0
- package/speechflow-cli/src/speechflow-util-queue.ts +3 -3
- package/speechflow-cli/src/speechflow-util.ts +1 -0
- package/speechflow-ui-db/package.json +4 -4
- package/speechflow-ui-st/package.json +4 -4
|
@@ -15,7 +15,7 @@ import ReconnWebSocket, { ErrorEvent } from "@opensumi/reconnecting-websocket"
|
|
|
15
15
|
import SpeechFlowNode, { SpeechFlowChunk } from "./speechflow-node"
|
|
16
16
|
import * as util from "./speechflow-util"
|
|
17
17
|
|
|
18
|
-
/* SpeechFlow node for
|
|
18
|
+
/* SpeechFlow node for WebSocket networking */
|
|
19
19
|
export default class SpeechFlowNodeXIOWebSocket extends SpeechFlowNode {
|
|
20
20
|
/* declare official node name */
|
|
21
21
|
public static name = "xio-websocket"
|
|
@@ -38,9 +38,9 @@ export default class SpeechFlowNodeXIOWebSocket extends SpeechFlowNode {
|
|
|
38
38
|
|
|
39
39
|
/* sanity check parameters */
|
|
40
40
|
if (this.params.listen !== "" && this.params.connect !== "")
|
|
41
|
-
throw new Error("
|
|
41
|
+
throw new Error("WebSocket node cannot listen and connect at the same time")
|
|
42
42
|
else if (this.params.listen === "" && this.params.connect === "")
|
|
43
|
-
throw new Error("
|
|
43
|
+
throw new Error("WebSocket node requires either listen or connect mode")
|
|
44
44
|
|
|
45
45
|
/* declare node input/output format */
|
|
46
46
|
if (this.params.mode === "rw") {
|
|
@@ -121,7 +121,7 @@ export default class SpeechFlowNodeXIOWebSocket extends SpeechFlowNode {
|
|
|
121
121
|
else if (chunk.type !== self.params.type)
|
|
122
122
|
callback(new Error(`written chunk is not of ${self.params.type} type`))
|
|
123
123
|
else if (websockets.size === 0)
|
|
124
|
-
callback(new Error("still no
|
|
124
|
+
callback(new Error("still no WebSocket connections available"))
|
|
125
125
|
else {
|
|
126
126
|
const data = util.streamChunkEncode(chunk)
|
|
127
127
|
const results: Promise<void>[] = []
|
|
@@ -168,10 +168,10 @@ export default class SpeechFlowNodeXIOWebSocket extends SpeechFlowNode {
|
|
|
168
168
|
connectionTimeout: 4000,
|
|
169
169
|
minUptime: 5000
|
|
170
170
|
})
|
|
171
|
-
this.client.addEventListener("open", (
|
|
171
|
+
this.client.addEventListener("open", (_ev) => {
|
|
172
172
|
this.log("info", `connection opened to URL ${this.params.connect}`)
|
|
173
173
|
})
|
|
174
|
-
this.client.addEventListener("close", (
|
|
174
|
+
this.client.addEventListener("close", (_ev) => {
|
|
175
175
|
this.log("info", `connection closed to URL ${this.params.connect}`)
|
|
176
176
|
})
|
|
177
177
|
this.client.addEventListener("error", (ev: ErrorEvent) => {
|
|
@@ -208,7 +208,7 @@ export default class SpeechFlowNodeXIOWebSocket extends SpeechFlowNode {
|
|
|
208
208
|
else if (chunk.type !== self.params.type)
|
|
209
209
|
callback(new Error(`written chunk is not of ${self.params.type} type`))
|
|
210
210
|
else if (!self.client!.OPEN)
|
|
211
|
-
callback(new Error("still no
|
|
211
|
+
callback(new Error("still no WebSocket connection available"))
|
|
212
212
|
else {
|
|
213
213
|
const data = util.streamChunkEncode(chunk)
|
|
214
214
|
self.client!.send(data)
|
|
@@ -234,7 +234,7 @@ export default class SpeechFlowNodeXIOWebSocket extends SpeechFlowNode {
|
|
|
234
234
|
|
|
235
235
|
/* close node */
|
|
236
236
|
async close () {
|
|
237
|
-
/* close
|
|
237
|
+
/* close WebSocket server */
|
|
238
238
|
if (this.server !== null) {
|
|
239
239
|
await new Promise<void>((resolve, reject) => {
|
|
240
240
|
this.server!.close((error) => {
|
|
@@ -245,7 +245,7 @@ export default class SpeechFlowNodeXIOWebSocket extends SpeechFlowNode {
|
|
|
245
245
|
this.server = null
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
-
/* close
|
|
248
|
+
/* close WebSocket client */
|
|
249
249
|
if (this.client !== null) {
|
|
250
250
|
this.client.close()
|
|
251
251
|
this.client = null
|
|
@@ -162,6 +162,9 @@ export function updateEnvelopeForChannel (
|
|
|
162
162
|
else
|
|
163
163
|
currentEnv = alphaR * currentEnv + (1 - alphaR) * det
|
|
164
164
|
}
|
|
165
|
+
|
|
166
|
+
/* store updated envelope value back */
|
|
167
|
+
env[chan] = currentEnv
|
|
165
168
|
return Math.sqrt(Math.max(currentEnv, 1e-12))
|
|
166
169
|
}
|
|
167
170
|
|
|
@@ -173,6 +176,7 @@ export function dB2lin (db: number): number {
|
|
|
173
176
|
return Math.pow(10, db / 20)
|
|
174
177
|
}
|
|
175
178
|
|
|
179
|
+
/* Web Audio API wrapper class */
|
|
176
180
|
export class WebAudio {
|
|
177
181
|
/* internal state */
|
|
178
182
|
public audioContext: AudioContext
|
|
@@ -281,6 +285,7 @@ export class WebAudio {
|
|
|
281
285
|
})
|
|
282
286
|
}
|
|
283
287
|
|
|
288
|
+
/* destroy object */
|
|
284
289
|
public async destroy (): Promise<void> {
|
|
285
290
|
/* reject all pending promises */
|
|
286
291
|
shield(() => {
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
/* standard dependencies */
|
|
8
8
|
import { EventEmitter } from "node:events"
|
|
9
|
-
import { type, type Type } from "arktype"
|
|
10
9
|
|
|
11
10
|
/* external dependencies */
|
|
12
|
-
import {
|
|
11
|
+
import { type, type Type } from "arktype"
|
|
12
|
+
import { Duration } from "luxon"
|
|
13
13
|
import * as IntervalTree from "node-interval-tree"
|
|
14
14
|
|
|
15
15
|
/* internal dependencies */
|
|
@@ -289,7 +289,7 @@ export class AsyncQueue<T> {
|
|
|
289
289
|
if (this.queue.length > 0)
|
|
290
290
|
return this.queue.shift()!
|
|
291
291
|
else
|
|
292
|
-
return new Promise<T>((resolve, reject) => this.resolvers.push({ resolve, reject }))
|
|
292
|
+
return new Promise<T>((resolve, reject) => { this.resolvers.push({ resolve, reject }) })
|
|
293
293
|
}
|
|
294
294
|
empty () {
|
|
295
295
|
return this.queue.length === 0
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"@rse/stx": "1.1.2"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"vite": "7.
|
|
28
|
-
"typescript-eslint": "8.
|
|
29
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
30
|
-
"@typescript-eslint/parser": "8.
|
|
27
|
+
"vite": "7.3.0",
|
|
28
|
+
"typescript-eslint": "8.50.0",
|
|
29
|
+
"@typescript-eslint/eslint-plugin": "8.50.0",
|
|
30
|
+
"@typescript-eslint/parser": "8.50.0",
|
|
31
31
|
"@vitejs/plugin-vue": "6.0.3",
|
|
32
32
|
"@rollup/plugin-yaml": "4.1.2",
|
|
33
33
|
"vite-plugin-node-polyfills": "0.24.0",
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
"animejs": "4.2.2"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"vite": "7.
|
|
30
|
-
"typescript-eslint": "8.
|
|
31
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
32
|
-
"@typescript-eslint/parser": "8.
|
|
29
|
+
"vite": "7.3.0",
|
|
30
|
+
"typescript-eslint": "8.50.0",
|
|
31
|
+
"@typescript-eslint/eslint-plugin": "8.50.0",
|
|
32
|
+
"@typescript-eslint/parser": "8.50.0",
|
|
33
33
|
"@vitejs/plugin-vue": "6.0.3",
|
|
34
34
|
"@rollup/plugin-yaml": "4.1.2",
|
|
35
35
|
"vite-plugin-node-polyfills": "0.24.0",
|