speechflow 1.3.1 → 1.4.0
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 +23 -0
- package/etc/stx.conf +54 -58
- package/package.json +25 -106
- package/{etc → speechflow-cli/etc}/eslint.mjs +1 -2
- package/speechflow-cli/etc/stx.conf +77 -0
- package/speechflow-cli/package.json +116 -0
- package/{src → speechflow-cli/src}/speechflow-node-a2a-gender.ts +148 -64
- package/speechflow-cli/src/speechflow-node-a2a-meter.ts +217 -0
- package/{src → speechflow-cli/src}/speechflow-node-a2a-mute.ts +39 -11
- package/speechflow-cli/src/speechflow-node-a2a-vad.ts +384 -0
- package/{src → speechflow-cli/src}/speechflow-node-a2a-wav.ts +27 -11
- package/speechflow-cli/src/speechflow-node-a2t-deepgram.ts +313 -0
- package/{src → speechflow-cli/src}/speechflow-node-t2a-elevenlabs.ts +59 -12
- package/{src → speechflow-cli/src}/speechflow-node-t2a-kokoro.ts +11 -4
- package/{src → speechflow-cli/src}/speechflow-node-t2t-deepl.ts +9 -4
- package/{src → speechflow-cli/src}/speechflow-node-t2t-format.ts +2 -2
- package/{src → speechflow-cli/src}/speechflow-node-t2t-ollama.ts +1 -1
- package/{src → speechflow-cli/src}/speechflow-node-t2t-openai.ts +1 -1
- package/{src → speechflow-cli/src}/speechflow-node-t2t-sentence.ts +37 -20
- package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +276 -0
- package/{src → speechflow-cli/src}/speechflow-node-t2t-transformers.ts +4 -3
- package/{src → speechflow-cli/src}/speechflow-node-x2x-filter.ts +9 -5
- package/{src → speechflow-cli/src}/speechflow-node-x2x-trace.ts +16 -8
- package/{src → speechflow-cli/src}/speechflow-node-xio-device.ts +12 -8
- package/{src → speechflow-cli/src}/speechflow-node-xio-file.ts +9 -3
- package/{src → speechflow-cli/src}/speechflow-node-xio-mqtt.ts +5 -2
- package/{src → speechflow-cli/src}/speechflow-node-xio-websocket.ts +12 -12
- package/{src → speechflow-cli/src}/speechflow-node.ts +7 -0
- package/{src → speechflow-cli/src}/speechflow-utils.ts +78 -44
- package/{src → speechflow-cli/src}/speechflow.ts +188 -53
- package/speechflow-ui-db/etc/eslint.mjs +106 -0
- package/speechflow-ui-db/etc/htmllint.json +55 -0
- package/speechflow-ui-db/etc/stx.conf +79 -0
- package/speechflow-ui-db/etc/stylelint.js +46 -0
- package/speechflow-ui-db/etc/stylelint.yaml +33 -0
- package/speechflow-ui-db/etc/tsc-client.json +30 -0
- package/speechflow-ui-db/etc/tsc.node.json +9 -0
- package/speechflow-ui-db/etc/vite-client.mts +63 -0
- package/speechflow-ui-db/package.d/htmllint-cli+0.0.7.patch +20 -0
- package/speechflow-ui-db/package.json +75 -0
- package/speechflow-ui-db/src/app-icon.ai +1989 -4
- package/speechflow-ui-db/src/app-icon.svg +26 -0
- package/speechflow-ui-db/src/app.styl +64 -0
- package/speechflow-ui-db/src/app.vue +221 -0
- package/speechflow-ui-db/src/index.html +23 -0
- package/speechflow-ui-db/src/index.ts +26 -0
- package/{dst/speechflow.d.ts → speechflow-ui-db/src/lib.d.ts} +5 -3
- package/speechflow-ui-db/src/tsconfig.json +3 -0
- package/speechflow-ui-st/etc/eslint.mjs +106 -0
- package/speechflow-ui-st/etc/htmllint.json +55 -0
- package/speechflow-ui-st/etc/stx.conf +79 -0
- package/speechflow-ui-st/etc/stylelint.js +46 -0
- package/speechflow-ui-st/etc/stylelint.yaml +33 -0
- package/speechflow-ui-st/etc/tsc-client.json +30 -0
- package/speechflow-ui-st/etc/tsc.node.json +9 -0
- package/speechflow-ui-st/etc/vite-client.mts +63 -0
- package/speechflow-ui-st/package.d/htmllint-cli+0.0.7.patch +20 -0
- package/speechflow-ui-st/package.json +79 -0
- package/speechflow-ui-st/src/app-icon.ai +1989 -4
- package/speechflow-ui-st/src/app-icon.svg +26 -0
- package/speechflow-ui-st/src/app.styl +64 -0
- package/speechflow-ui-st/src/app.vue +142 -0
- package/speechflow-ui-st/src/index.html +23 -0
- package/speechflow-ui-st/src/index.ts +26 -0
- package/speechflow-ui-st/src/lib.d.ts +9 -0
- package/speechflow-ui-st/src/tsconfig.json +3 -0
- package/dst/speechflow-node-a2a-ffmpeg.d.ts +0 -13
- package/dst/speechflow-node-a2a-ffmpeg.js +0 -153
- package/dst/speechflow-node-a2a-ffmpeg.js.map +0 -1
- package/dst/speechflow-node-a2a-gender.d.ts +0 -18
- package/dst/speechflow-node-a2a-gender.js +0 -271
- package/dst/speechflow-node-a2a-gender.js.map +0 -1
- package/dst/speechflow-node-a2a-meter.d.ts +0 -12
- package/dst/speechflow-node-a2a-meter.js +0 -155
- package/dst/speechflow-node-a2a-meter.js.map +0 -1
- package/dst/speechflow-node-a2a-mute.d.ts +0 -16
- package/dst/speechflow-node-a2a-mute.js +0 -91
- package/dst/speechflow-node-a2a-mute.js.map +0 -1
- package/dst/speechflow-node-a2a-vad.d.ts +0 -16
- package/dst/speechflow-node-a2a-vad.js +0 -285
- package/dst/speechflow-node-a2a-vad.js.map +0 -1
- package/dst/speechflow-node-a2a-wav.d.ts +0 -11
- package/dst/speechflow-node-a2a-wav.js +0 -195
- package/dst/speechflow-node-a2a-wav.js.map +0 -1
- package/dst/speechflow-node-a2t-deepgram.d.ts +0 -15
- package/dst/speechflow-node-a2t-deepgram.js +0 -255
- package/dst/speechflow-node-a2t-deepgram.js.map +0 -1
- package/dst/speechflow-node-t2a-elevenlabs.d.ts +0 -16
- package/dst/speechflow-node-t2a-elevenlabs.js +0 -195
- package/dst/speechflow-node-t2a-elevenlabs.js.map +0 -1
- package/dst/speechflow-node-t2a-kokoro.d.ts +0 -13
- package/dst/speechflow-node-t2a-kokoro.js +0 -149
- package/dst/speechflow-node-t2a-kokoro.js.map +0 -1
- package/dst/speechflow-node-t2t-deepl.d.ts +0 -15
- package/dst/speechflow-node-t2t-deepl.js +0 -142
- package/dst/speechflow-node-t2t-deepl.js.map +0 -1
- package/dst/speechflow-node-t2t-format.d.ts +0 -11
- package/dst/speechflow-node-t2t-format.js +0 -82
- package/dst/speechflow-node-t2t-format.js.map +0 -1
- package/dst/speechflow-node-t2t-ollama.d.ts +0 -13
- package/dst/speechflow-node-t2t-ollama.js +0 -247
- package/dst/speechflow-node-t2t-ollama.js.map +0 -1
- package/dst/speechflow-node-t2t-openai.d.ts +0 -13
- package/dst/speechflow-node-t2t-openai.js +0 -227
- package/dst/speechflow-node-t2t-openai.js.map +0 -1
- package/dst/speechflow-node-t2t-sentence.d.ts +0 -17
- package/dst/speechflow-node-t2t-sentence.js +0 -234
- package/dst/speechflow-node-t2t-sentence.js.map +0 -1
- package/dst/speechflow-node-t2t-subtitle.d.ts +0 -13
- package/dst/speechflow-node-t2t-subtitle.js +0 -278
- package/dst/speechflow-node-t2t-subtitle.js.map +0 -1
- package/dst/speechflow-node-t2t-transformers.d.ts +0 -14
- package/dst/speechflow-node-t2t-transformers.js +0 -265
- package/dst/speechflow-node-t2t-transformers.js.map +0 -1
- package/dst/speechflow-node-x2x-filter.d.ts +0 -11
- package/dst/speechflow-node-x2x-filter.js +0 -117
- package/dst/speechflow-node-x2x-filter.js.map +0 -1
- package/dst/speechflow-node-x2x-trace.d.ts +0 -11
- package/dst/speechflow-node-x2x-trace.js +0 -111
- package/dst/speechflow-node-x2x-trace.js.map +0 -1
- package/dst/speechflow-node-xio-device.d.ts +0 -13
- package/dst/speechflow-node-xio-device.js +0 -226
- package/dst/speechflow-node-xio-device.js.map +0 -1
- package/dst/speechflow-node-xio-file.d.ts +0 -11
- package/dst/speechflow-node-xio-file.js +0 -210
- package/dst/speechflow-node-xio-file.js.map +0 -1
- package/dst/speechflow-node-xio-mqtt.d.ts +0 -13
- package/dst/speechflow-node-xio-mqtt.js +0 -185
- package/dst/speechflow-node-xio-mqtt.js.map +0 -1
- package/dst/speechflow-node-xio-websocket.d.ts +0 -13
- package/dst/speechflow-node-xio-websocket.js +0 -278
- package/dst/speechflow-node-xio-websocket.js.map +0 -1
- package/dst/speechflow-node.d.ts +0 -65
- package/dst/speechflow-node.js +0 -180
- package/dst/speechflow-node.js.map +0 -1
- package/dst/speechflow-utils.d.ts +0 -69
- package/dst/speechflow-utils.js +0 -486
- package/dst/speechflow-utils.js.map +0 -1
- package/dst/speechflow.js +0 -768
- package/dst/speechflow.js.map +0 -1
- package/src/speechflow-node-a2a-meter.ts +0 -130
- package/src/speechflow-node-a2a-vad.ts +0 -285
- package/src/speechflow-node-a2t-deepgram.ts +0 -234
- package/src/speechflow-node-t2t-subtitle.ts +0 -149
- /package/{etc → speechflow-cli/etc}/biome.jsonc +0 -0
- /package/{etc → speechflow-cli/etc}/oxlint.jsonc +0 -0
- /package/{etc → speechflow-cli/etc}/speechflow.bat +0 -0
- /package/{etc → speechflow-cli/etc}/speechflow.sh +0 -0
- /package/{etc → speechflow-cli/etc}/speechflow.yaml +0 -0
- /package/{etc → speechflow-cli/etc}/tsconfig.json +0 -0
- /package/{package.d → speechflow-cli/package.d}/@ericedouard+vad-node-realtime+0.2.0.patch +0 -0
- /package/{src → speechflow-cli/src}/lib.d.ts +0 -0
- /package/{src → speechflow-cli/src}/speechflow-logo.ai +0 -0
- /package/{src → speechflow-cli/src}/speechflow-logo.svg +0 -0
- /package/{src → speechflow-cli/src}/speechflow-node-a2a-ffmpeg.ts +0 -0
- /package/{tsconfig.json → speechflow-cli/tsconfig.json} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
ChangeLog
|
|
3
3
|
=========
|
|
4
4
|
|
|
5
|
+
1.4.0 (2025-08-05)
|
|
6
|
+
------------------
|
|
7
|
+
|
|
8
|
+
- IMPROVEMENT: add dashboard infrastructure and expose information from "meter" and "trace" nodes
|
|
9
|
+
- IMPROVEMENT: add subtitle web interface for real-time subtitle display
|
|
10
|
+
- IMPROVEMENT: allow "deepgram" node to optionally provide "interim" results (primarily for subtitle)
|
|
11
|
+
- IMPROVEMENT: allow "filter" node to filter on chunk kind and type
|
|
12
|
+
- IMPROVEMENT: disable endpointing in "deepgram" node as it makes no sense for us
|
|
13
|
+
- IMPROVEMENT: allow -d (dashboard) option to accept a name which is displayed below the dashboard columns
|
|
14
|
+
- IMPROVEMENT: display names below the dashboard columns in UI
|
|
15
|
+
- IMPROVEMENT: move text columns in dashboard UI always to the bottom of the screen
|
|
16
|
+
- IMPROVEMENT: in dashboard UI adjust all colors to be blue as the main theme and make font sizes more eligible
|
|
17
|
+
- BUGFIX: switch back "deepgram" node to use "nova-2" model (as it supports numerals feature, etc)
|
|
18
|
+
- CLEANUP: in "deepgram" node remove ancient initialization workaround
|
|
19
|
+
- CLEANUP: simplify codebase structure and remove redundancy
|
|
20
|
+
- UPGRADE: upgrade NPM dependencies
|
|
21
|
+
|
|
22
|
+
1.3.2 (2025-08-04)
|
|
23
|
+
------------------
|
|
24
|
+
|
|
25
|
+
- BUGFIX: many timeout handling fixes in many nodes
|
|
26
|
+
- CLEANUP: many code cleanups
|
|
27
|
+
|
|
5
28
|
1.3.1 (2025-07-31)
|
|
6
29
|
------------------
|
|
7
30
|
|
package/etc/stx.conf
CHANGED
|
@@ -4,74 +4,70 @@
|
|
|
4
4
|
## Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
|
|
5
5
|
##
|
|
6
6
|
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
npm
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
# (internal): just pass-through "npm install" operation
|
|
8
|
+
post-install
|
|
9
|
+
npm --prefix speechflow-cli install && \
|
|
10
|
+
npm --prefix speechflow-ui-db install && \
|
|
11
|
+
npm --prefix speechflow-ui-st install
|
|
12
12
|
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
# automatically update all NPM dependencies
|
|
14
|
+
upd
|
|
15
|
+
npx -y upd && \
|
|
16
|
+
(cd speechflow-cli && npx -y upd) && \
|
|
17
|
+
(cd speechflow-ui-db && npx -y upd) && \
|
|
18
|
+
(cd speechflow-ui-st && npx -y upd)
|
|
16
19
|
|
|
17
|
-
#
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-s 30% "stx server-delay server-watch" ]
|
|
20
|
+
# lint components for development
|
|
21
|
+
lint
|
|
22
|
+
npm --prefix speechflow-cli start lint && \
|
|
23
|
+
npm --prefix speechflow-ui-db start lint && \
|
|
24
|
+
npm --prefix speechflow-ui-st start lint
|
|
23
25
|
|
|
24
|
-
#
|
|
25
|
-
lint:
|
|
26
|
-
tsc --project etc/tsconfig.json --noEmit && \
|
|
27
|
-
oxlint --config etc/oxlint.jsonc src/**/*.ts && \
|
|
28
|
-
biome lint --diagnostic-level=warn --config-path=etc/biome.jsonc src/*.ts && \
|
|
29
|
-
eslint --config etc/eslint.mjs src/**/*.ts
|
|
30
|
-
|
|
31
|
-
# static code analysis (linting) with file watching
|
|
32
|
-
lint-watch
|
|
33
|
-
nodemon --exec "stx lint" --watch src --ext ts
|
|
34
|
-
|
|
35
|
-
# code compilation/transpiling (building)
|
|
26
|
+
# build components for production (full build)
|
|
36
27
|
build
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
build-watch
|
|
41
|
-
nodemon --exec "stx build" --watch src --ext ts
|
|
28
|
+
npm --prefix speechflow-cli start build && \
|
|
29
|
+
npm --prefix speechflow-ui-db start build && \
|
|
30
|
+
npm --prefix speechflow-ui-st start build
|
|
42
31
|
|
|
43
|
-
# build
|
|
44
|
-
build
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
targets="$targets,node24-macos-x64,node24-macos-arm64"
|
|
49
|
-
pkg --sea --public -c ../package.json -t "$targets" speechflow.js && \
|
|
50
|
-
shx mv speechflow-linux-x64 speechflow-lnx-x64 && \
|
|
51
|
-
shx mv speechflow-linux-arm64 speechflow-lnx-a64 && \
|
|
52
|
-
shx mv speechflow-win-x64.exe speechflow-win-x64.exe && \
|
|
53
|
-
shx mv speechflow-win-arm64.exe speechflow-win-a64.exe && \
|
|
54
|
-
shx mv speechflow-macos-x64 speechflow-mac-x64 && \
|
|
55
|
-
shx mv speechflow-macos-arm64 speechflow-mac-a64
|
|
32
|
+
# (internal): build components for development (partial build only)
|
|
33
|
+
build:dev
|
|
34
|
+
npm --prefix speechflow-cli start build && \
|
|
35
|
+
npm --prefix speechflow-ui-db start build && \
|
|
36
|
+
npm --prefix speechflow-ui-st start build
|
|
56
37
|
|
|
57
|
-
#
|
|
58
|
-
|
|
59
|
-
|
|
38
|
+
# (internal): build components for development (continuous file watching)
|
|
39
|
+
build:dev:watch
|
|
40
|
+
watch "npm start build:dev" \
|
|
41
|
+
speechflow-cli/src \
|
|
42
|
+
speechflow-ui-db/src \
|
|
43
|
+
speechflow-ui-st/src \
|
|
44
|
+
--wait=2 --interval=1
|
|
60
45
|
|
|
61
|
-
# run
|
|
62
|
-
|
|
63
|
-
|
|
46
|
+
# (internal): run command-line interface for production
|
|
47
|
+
run:dev:watch
|
|
48
|
+
wait-on -l "speechflow-cli/dst/speechflow.js" && \
|
|
49
|
+
cross-env NODE_OPTIONS="--no-warnings" \
|
|
50
|
+
nodemon --signal SIGINT -w speechflow-5-cli/dst-stage2 --delay 1500ms \
|
|
51
|
+
speechflow-cli/dst/speechflow.js -- \
|
|
52
|
+
$SPEECHFLOW_OPTIONS
|
|
64
53
|
|
|
65
|
-
# run
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
54
|
+
# (internal): run command-line interface for development (continuous file watching)
|
|
55
|
+
run:dev
|
|
56
|
+
concurrently -p "[{name}]" -n "build,run" -c "blue,red" \
|
|
57
|
+
"npm start build:dev:watch" \
|
|
58
|
+
"npm start run:dev:watch"
|
|
69
59
|
|
|
70
|
-
# remove all
|
|
60
|
+
# remove all generated artifacts (reverse of "npm start build")
|
|
71
61
|
clean
|
|
72
|
-
|
|
62
|
+
npm --prefix speechflow-cli start clean && \
|
|
63
|
+
npm --prefix speechflow-ui-db start clean && \
|
|
64
|
+
npm --prefix speechflow-ui-st start clean
|
|
73
65
|
|
|
74
|
-
# remove all
|
|
75
|
-
clean
|
|
66
|
+
# remove all generated artifacts (reverse of "npm install" and "npm start build")
|
|
67
|
+
clean:dist
|
|
68
|
+
npm --prefix speechflow-cli start clean:dist && \
|
|
69
|
+
npm --prefix speechflow-ui-db start clean:dist && \
|
|
70
|
+
npm --prefix speechflow-ui-st start clean:dist && \
|
|
71
|
+
shx rm -f package-lock.json && \
|
|
76
72
|
shx rm -rf node_modules
|
|
77
73
|
|
package/package.json
CHANGED
|
@@ -1,117 +1,36 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name":
|
|
3
|
-
"version":
|
|
4
|
-
"x-stdver":
|
|
5
|
-
"x-release":
|
|
6
|
-
"homepage":
|
|
7
|
-
"description":
|
|
8
|
-
"license":
|
|
2
|
+
"name": "speechflow",
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
"x-stdver": "1.4.0-GA",
|
|
5
|
+
"x-release": "2025-08-05",
|
|
6
|
+
"homepage": "https://github.com/rse/speechflow",
|
|
7
|
+
"description": "Speech Processing Flow Graph",
|
|
8
|
+
"license": "GPL-3.0-only",
|
|
9
9
|
"author": {
|
|
10
|
-
"name":
|
|
11
|
-
"email":
|
|
12
|
-
"url":
|
|
10
|
+
"name": "Dr. Ralf S. Engelschall",
|
|
11
|
+
"email": "rse@engelschall.com",
|
|
12
|
+
"url": "http://engelschall.com"
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
|
15
|
-
"type":
|
|
16
|
-
"url":
|
|
17
|
-
},
|
|
18
|
-
"dependencies": {
|
|
19
|
-
"cli-io": "0.9.13",
|
|
20
|
-
"yargs": "18.0.0",
|
|
21
|
-
"flowlink": "1.0.0",
|
|
22
|
-
"js-yaml": "4.1.0",
|
|
23
|
-
"@gpeng/naudiodon": "2.4.1",
|
|
24
|
-
"@deepgram/sdk": "4.11.1",
|
|
25
|
-
"deepl-node": "1.19.0",
|
|
26
|
-
"@elevenlabs/elevenlabs-js": "2.7.0",
|
|
27
|
-
"stream-transform": "3.4.0",
|
|
28
|
-
"get-stream": "9.0.1",
|
|
29
|
-
"@dotenvx/dotenvx": "1.48.4",
|
|
30
|
-
"speex-resampler": "3.0.1",
|
|
31
|
-
"object-path": "0.11.8",
|
|
32
|
-
"ws": "8.18.3",
|
|
33
|
-
"bufferutil": "4.0.9",
|
|
34
|
-
"utf-8-validate": "6.0.5",
|
|
35
|
-
"@hapi/hapi": "21.4.0",
|
|
36
|
-
"@hapi/boom": "10.0.1",
|
|
37
|
-
"@hapi/inert": "7.1.0",
|
|
38
|
-
"hapi-plugin-header": "1.1.8",
|
|
39
|
-
"hapi-plugin-websocket": "2.4.11",
|
|
40
|
-
"@opensumi/reconnecting-websocket": "4.4.0",
|
|
41
|
-
"ollama": "0.5.16",
|
|
42
|
-
"openai": "5.11.0",
|
|
43
|
-
"@rse/ffmpeg": "1.4.2",
|
|
44
|
-
"ffmpeg-stream": "1.0.1",
|
|
45
|
-
"installed-packages": "1.0.13",
|
|
46
|
-
"syspath": "1.0.8",
|
|
47
|
-
"wav": "1.0.2",
|
|
48
|
-
"mqtt": "5.14.0",
|
|
49
|
-
"cbor2": "2.0.1",
|
|
50
|
-
"arktype": "2.1.20",
|
|
51
|
-
"pure-uuid": "1.8.1",
|
|
52
|
-
"wavefile": "11.0.0",
|
|
53
|
-
"audio-inspect": "0.0.3",
|
|
54
|
-
"@huggingface/transformers": "3.7.0",
|
|
55
|
-
"kokoro-js": "1.2.1",
|
|
56
|
-
"@ericedouard/vad-node-realtime": "0.2.0",
|
|
57
|
-
"luxon": "3.7.1",
|
|
58
|
-
"node-interval-tree": "2.1.2",
|
|
59
|
-
"wrap-text": "1.0.10",
|
|
60
|
-
"cli-table3": "0.6.5"
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/rse/speechflow.git"
|
|
61
17
|
},
|
|
62
18
|
"devDependencies": {
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"@typescript-eslint/parser": "8.38.0",
|
|
71
|
-
"oxlint": "1.9.0",
|
|
72
|
-
"eslint-plugin-oxlint": "1.9.0",
|
|
73
|
-
"@biomejs/biome": "2.0.6",
|
|
74
|
-
"eslint-config-biome": "1.9.4",
|
|
75
|
-
|
|
76
|
-
"@types/node": "24.1.0",
|
|
77
|
-
"@types/yargs": "17.0.33",
|
|
78
|
-
"@types/js-yaml": "4.0.9",
|
|
79
|
-
"@types/object-path": "0.11.4",
|
|
80
|
-
"@types/ws": "8.18.1",
|
|
81
|
-
"@types/resolve": "1.20.6",
|
|
82
|
-
"@types/wav": "1.0.4",
|
|
83
|
-
"@types/luxon": "3.7.1",
|
|
84
|
-
"@types/wrap-text": "1.0.2",
|
|
85
|
-
|
|
86
|
-
"patch-package": "8.0.0",
|
|
87
|
-
"stmux": "1.8.11",
|
|
88
|
-
"nodemon": "3.1.10",
|
|
89
|
-
"shx": "0.4.0",
|
|
90
|
-
"@yao-pkg/pkg": "6.6.0",
|
|
91
|
-
"typescript": "5.8.3",
|
|
92
|
-
"delay-cli": "2.0.0",
|
|
93
|
-
"@rse/stx": "1.0.7",
|
|
94
|
-
"cross-env": "10.0.0"
|
|
95
|
-
},
|
|
96
|
-
"overrides": {
|
|
97
|
-
"@huggingface/transformers": { "onnxruntime-node": "1.23.0-dev.20250703-7fc6235861" }
|
|
98
|
-
},
|
|
99
|
-
"upd": [ "!@biomejs/biome" ],
|
|
100
|
-
"engines": {
|
|
101
|
-
"node": ">=22.0.0"
|
|
19
|
+
"@rse/stx": "1.0.7",
|
|
20
|
+
"nodemon": "3.1.10",
|
|
21
|
+
"watch": "1.0.2",
|
|
22
|
+
"concurrently": "9.2.0",
|
|
23
|
+
"wait-on": "8.0.4",
|
|
24
|
+
"cross-env": "10.0.0",
|
|
25
|
+
"shx": "0.4.0"
|
|
102
26
|
},
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
"main": "./dst/speechflow-node.js",
|
|
107
|
-
"exports": {
|
|
108
|
-
".": {
|
|
109
|
-
"import": { "types": "./dst/speechflow-node.d.ts", "default": "./dst/speechflow-node.js" },
|
|
110
|
-
"require": { "types": "./dst/speechflow-node.d.ts", "default": "./dst/speechflow-node.js" }
|
|
111
|
-
}
|
|
27
|
+
"engines" : {
|
|
28
|
+
"npm": ">=10.0.0",
|
|
29
|
+
"node": ">=22.0.0"
|
|
112
30
|
},
|
|
113
31
|
"scripts": {
|
|
114
|
-
"postinstall":
|
|
115
|
-
"start":
|
|
32
|
+
"postinstall": "npm start post-install",
|
|
33
|
+
"start": "stx -v4 -c etc/stx.conf",
|
|
34
|
+
"speechflow": "node --no-warnings speechflow-cli/dst/speechflow.js"
|
|
116
35
|
}
|
|
117
36
|
}
|
|
@@ -31,11 +31,10 @@ export default [
|
|
|
31
31
|
files: [ "**/*.ts" ],
|
|
32
32
|
ignores: [ "dst/" ],
|
|
33
33
|
languageOptions: {
|
|
34
|
-
ecmaVersion:
|
|
34
|
+
ecmaVersion: 2024,
|
|
35
35
|
sourceType: "module",
|
|
36
36
|
parser: parserTS,
|
|
37
37
|
parserOptions: {
|
|
38
|
-
parser: parserTS,
|
|
39
38
|
extraFileExtensions: [],
|
|
40
39
|
ecmaFeatures: {
|
|
41
40
|
jsx: false
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
##
|
|
2
|
+
## SpeechFlow - Speech Processing Flow Graph
|
|
3
|
+
## Copyright (c) 2024-2025 Dr. Ralf S. Engelschall <rse@engelschall.com>
|
|
4
|
+
## Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
|
|
5
|
+
##
|
|
6
|
+
|
|
7
|
+
# make patches
|
|
8
|
+
patch-make
|
|
9
|
+
npm shrinkwrap && \
|
|
10
|
+
patch-package --patch-dir package.d "@ericedouard/vad-node-realtime" && \
|
|
11
|
+
shx rm -f npm-shrinkwrap.json
|
|
12
|
+
|
|
13
|
+
# [INTERNAL] apply patches
|
|
14
|
+
patch-apply
|
|
15
|
+
patch-package --patch-dir package.d
|
|
16
|
+
|
|
17
|
+
# multiview-style development dashboard
|
|
18
|
+
dev
|
|
19
|
+
stmux -w always -m beep -e "built.in.+ms" -- \
|
|
20
|
+
[ -s 35% "stx lint-watch" : \
|
|
21
|
+
-s 15% "stx build-watch" : \
|
|
22
|
+
-s 30% "stx server-delay server-watch" ]
|
|
23
|
+
|
|
24
|
+
# static code analysis (linting)
|
|
25
|
+
lint:
|
|
26
|
+
tsc --project etc/tsconfig.json --noEmit && \
|
|
27
|
+
oxlint --config etc/oxlint.jsonc src/**/*.ts && \
|
|
28
|
+
biome lint --diagnostic-level=warn --config-path=etc/biome.jsonc src/*.ts && \
|
|
29
|
+
eslint --config etc/eslint.mjs src/**/*.ts
|
|
30
|
+
|
|
31
|
+
# static code analysis (linting) with file watching
|
|
32
|
+
lint-watch
|
|
33
|
+
nodemon --exec "stx lint" --watch src --ext ts
|
|
34
|
+
|
|
35
|
+
# code compilation/transpiling (building)
|
|
36
|
+
build
|
|
37
|
+
tsc --project etc/tsconfig.json
|
|
38
|
+
|
|
39
|
+
# code compilation/transpiling (building) with file watching
|
|
40
|
+
build-watch
|
|
41
|
+
nodemon --exec "stx build" --watch src --ext ts
|
|
42
|
+
|
|
43
|
+
# build all-in-one packages
|
|
44
|
+
build-pkg
|
|
45
|
+
cd dst && \
|
|
46
|
+
targets="node24-linux-x64,node24-linux-arm64" && \
|
|
47
|
+
targets="$targets,node24-win-x64,node24-win-arm64" && \
|
|
48
|
+
targets="$targets,node24-macos-x64,node24-macos-arm64" && \
|
|
49
|
+
pkg --sea --public -c ../package.json -t "$targets" speechflow.js && \
|
|
50
|
+
shx mv speechflow-linux-x64 speechflow-lnx-x64 && \
|
|
51
|
+
shx mv speechflow-linux-arm64 speechflow-lnx-a64 && \
|
|
52
|
+
shx mv speechflow-win-x64.exe speechflow-win-x64.exe && \
|
|
53
|
+
shx mv speechflow-win-arm64.exe speechflow-win-a64.exe && \
|
|
54
|
+
shx mv speechflow-macos-x64 speechflow-mac-x64 && \
|
|
55
|
+
shx mv speechflow-macos-arm64 speechflow-mac-a64
|
|
56
|
+
|
|
57
|
+
# [INTERNAL] wait for server
|
|
58
|
+
server-delay
|
|
59
|
+
delay 2.0
|
|
60
|
+
|
|
61
|
+
# run program
|
|
62
|
+
server
|
|
63
|
+
node --enable-source-maps dst/speechflow.js -v info -c studio@etc/speechflow.yaml "$@"
|
|
64
|
+
|
|
65
|
+
# run program with file watching
|
|
66
|
+
server-watch
|
|
67
|
+
cross-env NODE_OPTIONS="--enable-source-maps" \
|
|
68
|
+
nodemon --exec "stx server" --watch dst --ext ts --delay 1.0
|
|
69
|
+
|
|
70
|
+
# remove all files regularly generated
|
|
71
|
+
clean
|
|
72
|
+
shx rm -rf dst
|
|
73
|
+
|
|
74
|
+
# remove all files generated
|
|
75
|
+
clean-dist : clean
|
|
76
|
+
shx rm -rf node_modules
|
|
77
|
+
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"private": "true",
|
|
3
|
+
"name": "speechflow",
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"homepage": "https://github.com/rse/speechflow",
|
|
6
|
+
"description": "Speech Processing Flow Graph",
|
|
7
|
+
"license": "GPL-3.0-only",
|
|
8
|
+
"author": {
|
|
9
|
+
"name": "Dr. Ralf S. Engelschall",
|
|
10
|
+
"email": "rse@engelschall.com",
|
|
11
|
+
"url": "http://engelschall.com"
|
|
12
|
+
},
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/rse/speechflow.git"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"cli-io": "0.9.13",
|
|
19
|
+
"yargs": "18.0.0",
|
|
20
|
+
"flowlink": "1.0.0",
|
|
21
|
+
"js-yaml": "4.1.0",
|
|
22
|
+
"@gpeng/naudiodon": "2.4.1",
|
|
23
|
+
"@deepgram/sdk": "4.11.1",
|
|
24
|
+
"deepl-node": "1.19.0",
|
|
25
|
+
"@elevenlabs/elevenlabs-js": "2.7.0",
|
|
26
|
+
"stream-transform": "3.4.0",
|
|
27
|
+
"get-stream": "9.0.1",
|
|
28
|
+
"@dotenvx/dotenvx": "1.48.4",
|
|
29
|
+
"speex-resampler": "3.0.1",
|
|
30
|
+
"object-path": "0.11.8",
|
|
31
|
+
"ws": "8.18.3",
|
|
32
|
+
"bufferutil": "4.0.9",
|
|
33
|
+
"utf-8-validate": "6.0.5",
|
|
34
|
+
"@hapi/hapi": "21.4.2",
|
|
35
|
+
"@hapi/boom": "10.0.1",
|
|
36
|
+
"@hapi/inert": "7.1.0",
|
|
37
|
+
"hapi-plugin-header": "1.1.8",
|
|
38
|
+
"hapi-plugin-websocket": "2.4.11",
|
|
39
|
+
"@opensumi/reconnecting-websocket": "4.4.0",
|
|
40
|
+
"ollama": "0.5.16",
|
|
41
|
+
"openai": "5.12.0",
|
|
42
|
+
"@rse/ffmpeg": "1.4.2",
|
|
43
|
+
"ffmpeg-stream": "1.0.1",
|
|
44
|
+
"installed-packages": "1.0.13",
|
|
45
|
+
"syspath": "1.0.8",
|
|
46
|
+
"wav": "1.0.2",
|
|
47
|
+
"mqtt": "5.14.0",
|
|
48
|
+
"cbor2": "2.0.1",
|
|
49
|
+
"arktype": "2.1.20",
|
|
50
|
+
"pure-uuid": "1.8.1",
|
|
51
|
+
"wavefile": "11.0.0",
|
|
52
|
+
"audio-inspect": "0.0.3",
|
|
53
|
+
"@huggingface/transformers": "3.7.1",
|
|
54
|
+
"kokoro-js": "1.2.1",
|
|
55
|
+
"@ericedouard/vad-node-realtime": "0.2.0",
|
|
56
|
+
"luxon": "3.7.1",
|
|
57
|
+
"node-interval-tree": "2.1.2",
|
|
58
|
+
"wrap-text": "1.0.10",
|
|
59
|
+
"cli-table3": "0.6.5"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"eslint": "9.32.0",
|
|
63
|
+
"@eslint/js": "9.32.0",
|
|
64
|
+
"neostandard": "0.12.2",
|
|
65
|
+
"eslint-plugin-promise": "7.2.1",
|
|
66
|
+
"eslint-plugin-import": "2.32.0",
|
|
67
|
+
"eslint-plugin-node": "11.1.0",
|
|
68
|
+
"@typescript-eslint/eslint-plugin": "8.39.0",
|
|
69
|
+
"@typescript-eslint/parser": "8.39.0",
|
|
70
|
+
"oxlint": "1.9.0",
|
|
71
|
+
"eslint-plugin-oxlint": "1.9.0",
|
|
72
|
+
"@biomejs/biome": "2.0.6",
|
|
73
|
+
"eslint-config-biome": "2.1.3",
|
|
74
|
+
|
|
75
|
+
"@types/node": "24.2.0",
|
|
76
|
+
"@types/yargs": "17.0.33",
|
|
77
|
+
"@types/js-yaml": "4.0.9",
|
|
78
|
+
"@types/object-path": "0.11.4",
|
|
79
|
+
"@types/ws": "8.18.1",
|
|
80
|
+
"@types/resolve": "1.20.6",
|
|
81
|
+
"@types/wav": "1.0.4",
|
|
82
|
+
"@types/luxon": "3.7.1",
|
|
83
|
+
"@types/wrap-text": "1.0.2",
|
|
84
|
+
|
|
85
|
+
"patch-package": "8.0.0",
|
|
86
|
+
"stmux": "1.8.11",
|
|
87
|
+
"nodemon": "3.1.10",
|
|
88
|
+
"shx": "0.4.0",
|
|
89
|
+
"@yao-pkg/pkg": "6.6.0",
|
|
90
|
+
"typescript": "5.9.2",
|
|
91
|
+
"delay-cli": "2.0.0",
|
|
92
|
+
"@rse/stx": "1.0.7",
|
|
93
|
+
"cross-env": "10.0.0"
|
|
94
|
+
},
|
|
95
|
+
"overrides": {
|
|
96
|
+
"@huggingface/transformers": { "onnxruntime-node": "1.23.0-dev.20250703-7fc6235861" }
|
|
97
|
+
},
|
|
98
|
+
"upd": [ "!@biomejs/biome" ],
|
|
99
|
+
"engines": {
|
|
100
|
+
"node": ">=22.0.0"
|
|
101
|
+
},
|
|
102
|
+
"bin": { "speechflow": "dst/speechflow.js" },
|
|
103
|
+
"types": "./dst/speechflow-node.d.ts",
|
|
104
|
+
"module": "./dst/speechflow-node.js",
|
|
105
|
+
"main": "./dst/speechflow-node.js",
|
|
106
|
+
"exports": {
|
|
107
|
+
".": {
|
|
108
|
+
"import": { "types": "./dst/speechflow-node.d.ts", "default": "./dst/speechflow-node.js" },
|
|
109
|
+
"require": { "types": "./dst/speechflow-node.d.ts", "default": "./dst/speechflow-node.js" }
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"scripts": {
|
|
113
|
+
"postinstall": "npm start patch-apply",
|
|
114
|
+
"start": "stx -v4 -c etc/stx.conf"
|
|
115
|
+
}
|
|
116
|
+
}
|