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.
Files changed (156) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/etc/stx.conf +54 -58
  3. package/package.json +25 -106
  4. package/{etc → speechflow-cli/etc}/eslint.mjs +1 -2
  5. package/speechflow-cli/etc/stx.conf +77 -0
  6. package/speechflow-cli/package.json +116 -0
  7. package/{src → speechflow-cli/src}/speechflow-node-a2a-gender.ts +148 -64
  8. package/speechflow-cli/src/speechflow-node-a2a-meter.ts +217 -0
  9. package/{src → speechflow-cli/src}/speechflow-node-a2a-mute.ts +39 -11
  10. package/speechflow-cli/src/speechflow-node-a2a-vad.ts +384 -0
  11. package/{src → speechflow-cli/src}/speechflow-node-a2a-wav.ts +27 -11
  12. package/speechflow-cli/src/speechflow-node-a2t-deepgram.ts +313 -0
  13. package/{src → speechflow-cli/src}/speechflow-node-t2a-elevenlabs.ts +59 -12
  14. package/{src → speechflow-cli/src}/speechflow-node-t2a-kokoro.ts +11 -4
  15. package/{src → speechflow-cli/src}/speechflow-node-t2t-deepl.ts +9 -4
  16. package/{src → speechflow-cli/src}/speechflow-node-t2t-format.ts +2 -2
  17. package/{src → speechflow-cli/src}/speechflow-node-t2t-ollama.ts +1 -1
  18. package/{src → speechflow-cli/src}/speechflow-node-t2t-openai.ts +1 -1
  19. package/{src → speechflow-cli/src}/speechflow-node-t2t-sentence.ts +37 -20
  20. package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +276 -0
  21. package/{src → speechflow-cli/src}/speechflow-node-t2t-transformers.ts +4 -3
  22. package/{src → speechflow-cli/src}/speechflow-node-x2x-filter.ts +9 -5
  23. package/{src → speechflow-cli/src}/speechflow-node-x2x-trace.ts +16 -8
  24. package/{src → speechflow-cli/src}/speechflow-node-xio-device.ts +12 -8
  25. package/{src → speechflow-cli/src}/speechflow-node-xio-file.ts +9 -3
  26. package/{src → speechflow-cli/src}/speechflow-node-xio-mqtt.ts +5 -2
  27. package/{src → speechflow-cli/src}/speechflow-node-xio-websocket.ts +12 -12
  28. package/{src → speechflow-cli/src}/speechflow-node.ts +7 -0
  29. package/{src → speechflow-cli/src}/speechflow-utils.ts +78 -44
  30. package/{src → speechflow-cli/src}/speechflow.ts +188 -53
  31. package/speechflow-ui-db/etc/eslint.mjs +106 -0
  32. package/speechflow-ui-db/etc/htmllint.json +55 -0
  33. package/speechflow-ui-db/etc/stx.conf +79 -0
  34. package/speechflow-ui-db/etc/stylelint.js +46 -0
  35. package/speechflow-ui-db/etc/stylelint.yaml +33 -0
  36. package/speechflow-ui-db/etc/tsc-client.json +30 -0
  37. package/speechflow-ui-db/etc/tsc.node.json +9 -0
  38. package/speechflow-ui-db/etc/vite-client.mts +63 -0
  39. package/speechflow-ui-db/package.d/htmllint-cli+0.0.7.patch +20 -0
  40. package/speechflow-ui-db/package.json +75 -0
  41. package/speechflow-ui-db/src/app-icon.ai +1989 -4
  42. package/speechflow-ui-db/src/app-icon.svg +26 -0
  43. package/speechflow-ui-db/src/app.styl +64 -0
  44. package/speechflow-ui-db/src/app.vue +221 -0
  45. package/speechflow-ui-db/src/index.html +23 -0
  46. package/speechflow-ui-db/src/index.ts +26 -0
  47. package/{dst/speechflow.d.ts → speechflow-ui-db/src/lib.d.ts} +5 -3
  48. package/speechflow-ui-db/src/tsconfig.json +3 -0
  49. package/speechflow-ui-st/etc/eslint.mjs +106 -0
  50. package/speechflow-ui-st/etc/htmllint.json +55 -0
  51. package/speechflow-ui-st/etc/stx.conf +79 -0
  52. package/speechflow-ui-st/etc/stylelint.js +46 -0
  53. package/speechflow-ui-st/etc/stylelint.yaml +33 -0
  54. package/speechflow-ui-st/etc/tsc-client.json +30 -0
  55. package/speechflow-ui-st/etc/tsc.node.json +9 -0
  56. package/speechflow-ui-st/etc/vite-client.mts +63 -0
  57. package/speechflow-ui-st/package.d/htmllint-cli+0.0.7.patch +20 -0
  58. package/speechflow-ui-st/package.json +79 -0
  59. package/speechflow-ui-st/src/app-icon.ai +1989 -4
  60. package/speechflow-ui-st/src/app-icon.svg +26 -0
  61. package/speechflow-ui-st/src/app.styl +64 -0
  62. package/speechflow-ui-st/src/app.vue +142 -0
  63. package/speechflow-ui-st/src/index.html +23 -0
  64. package/speechflow-ui-st/src/index.ts +26 -0
  65. package/speechflow-ui-st/src/lib.d.ts +9 -0
  66. package/speechflow-ui-st/src/tsconfig.json +3 -0
  67. package/dst/speechflow-node-a2a-ffmpeg.d.ts +0 -13
  68. package/dst/speechflow-node-a2a-ffmpeg.js +0 -153
  69. package/dst/speechflow-node-a2a-ffmpeg.js.map +0 -1
  70. package/dst/speechflow-node-a2a-gender.d.ts +0 -18
  71. package/dst/speechflow-node-a2a-gender.js +0 -271
  72. package/dst/speechflow-node-a2a-gender.js.map +0 -1
  73. package/dst/speechflow-node-a2a-meter.d.ts +0 -12
  74. package/dst/speechflow-node-a2a-meter.js +0 -155
  75. package/dst/speechflow-node-a2a-meter.js.map +0 -1
  76. package/dst/speechflow-node-a2a-mute.d.ts +0 -16
  77. package/dst/speechflow-node-a2a-mute.js +0 -91
  78. package/dst/speechflow-node-a2a-mute.js.map +0 -1
  79. package/dst/speechflow-node-a2a-vad.d.ts +0 -16
  80. package/dst/speechflow-node-a2a-vad.js +0 -285
  81. package/dst/speechflow-node-a2a-vad.js.map +0 -1
  82. package/dst/speechflow-node-a2a-wav.d.ts +0 -11
  83. package/dst/speechflow-node-a2a-wav.js +0 -195
  84. package/dst/speechflow-node-a2a-wav.js.map +0 -1
  85. package/dst/speechflow-node-a2t-deepgram.d.ts +0 -15
  86. package/dst/speechflow-node-a2t-deepgram.js +0 -255
  87. package/dst/speechflow-node-a2t-deepgram.js.map +0 -1
  88. package/dst/speechflow-node-t2a-elevenlabs.d.ts +0 -16
  89. package/dst/speechflow-node-t2a-elevenlabs.js +0 -195
  90. package/dst/speechflow-node-t2a-elevenlabs.js.map +0 -1
  91. package/dst/speechflow-node-t2a-kokoro.d.ts +0 -13
  92. package/dst/speechflow-node-t2a-kokoro.js +0 -149
  93. package/dst/speechflow-node-t2a-kokoro.js.map +0 -1
  94. package/dst/speechflow-node-t2t-deepl.d.ts +0 -15
  95. package/dst/speechflow-node-t2t-deepl.js +0 -142
  96. package/dst/speechflow-node-t2t-deepl.js.map +0 -1
  97. package/dst/speechflow-node-t2t-format.d.ts +0 -11
  98. package/dst/speechflow-node-t2t-format.js +0 -82
  99. package/dst/speechflow-node-t2t-format.js.map +0 -1
  100. package/dst/speechflow-node-t2t-ollama.d.ts +0 -13
  101. package/dst/speechflow-node-t2t-ollama.js +0 -247
  102. package/dst/speechflow-node-t2t-ollama.js.map +0 -1
  103. package/dst/speechflow-node-t2t-openai.d.ts +0 -13
  104. package/dst/speechflow-node-t2t-openai.js +0 -227
  105. package/dst/speechflow-node-t2t-openai.js.map +0 -1
  106. package/dst/speechflow-node-t2t-sentence.d.ts +0 -17
  107. package/dst/speechflow-node-t2t-sentence.js +0 -234
  108. package/dst/speechflow-node-t2t-sentence.js.map +0 -1
  109. package/dst/speechflow-node-t2t-subtitle.d.ts +0 -13
  110. package/dst/speechflow-node-t2t-subtitle.js +0 -278
  111. package/dst/speechflow-node-t2t-subtitle.js.map +0 -1
  112. package/dst/speechflow-node-t2t-transformers.d.ts +0 -14
  113. package/dst/speechflow-node-t2t-transformers.js +0 -265
  114. package/dst/speechflow-node-t2t-transformers.js.map +0 -1
  115. package/dst/speechflow-node-x2x-filter.d.ts +0 -11
  116. package/dst/speechflow-node-x2x-filter.js +0 -117
  117. package/dst/speechflow-node-x2x-filter.js.map +0 -1
  118. package/dst/speechflow-node-x2x-trace.d.ts +0 -11
  119. package/dst/speechflow-node-x2x-trace.js +0 -111
  120. package/dst/speechflow-node-x2x-trace.js.map +0 -1
  121. package/dst/speechflow-node-xio-device.d.ts +0 -13
  122. package/dst/speechflow-node-xio-device.js +0 -226
  123. package/dst/speechflow-node-xio-device.js.map +0 -1
  124. package/dst/speechflow-node-xio-file.d.ts +0 -11
  125. package/dst/speechflow-node-xio-file.js +0 -210
  126. package/dst/speechflow-node-xio-file.js.map +0 -1
  127. package/dst/speechflow-node-xio-mqtt.d.ts +0 -13
  128. package/dst/speechflow-node-xio-mqtt.js +0 -185
  129. package/dst/speechflow-node-xio-mqtt.js.map +0 -1
  130. package/dst/speechflow-node-xio-websocket.d.ts +0 -13
  131. package/dst/speechflow-node-xio-websocket.js +0 -278
  132. package/dst/speechflow-node-xio-websocket.js.map +0 -1
  133. package/dst/speechflow-node.d.ts +0 -65
  134. package/dst/speechflow-node.js +0 -180
  135. package/dst/speechflow-node.js.map +0 -1
  136. package/dst/speechflow-utils.d.ts +0 -69
  137. package/dst/speechflow-utils.js +0 -486
  138. package/dst/speechflow-utils.js.map +0 -1
  139. package/dst/speechflow.js +0 -768
  140. package/dst/speechflow.js.map +0 -1
  141. package/src/speechflow-node-a2a-meter.ts +0 -130
  142. package/src/speechflow-node-a2a-vad.ts +0 -285
  143. package/src/speechflow-node-a2t-deepgram.ts +0 -234
  144. package/src/speechflow-node-t2t-subtitle.ts +0 -149
  145. /package/{etc → speechflow-cli/etc}/biome.jsonc +0 -0
  146. /package/{etc → speechflow-cli/etc}/oxlint.jsonc +0 -0
  147. /package/{etc → speechflow-cli/etc}/speechflow.bat +0 -0
  148. /package/{etc → speechflow-cli/etc}/speechflow.sh +0 -0
  149. /package/{etc → speechflow-cli/etc}/speechflow.yaml +0 -0
  150. /package/{etc → speechflow-cli/etc}/tsconfig.json +0 -0
  151. /package/{package.d → speechflow-cli/package.d}/@ericedouard+vad-node-realtime+0.2.0.patch +0 -0
  152. /package/{src → speechflow-cli/src}/lib.d.ts +0 -0
  153. /package/{src → speechflow-cli/src}/speechflow-logo.ai +0 -0
  154. /package/{src → speechflow-cli/src}/speechflow-logo.svg +0 -0
  155. /package/{src → speechflow-cli/src}/speechflow-node-a2a-ffmpeg.ts +0 -0
  156. /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
- # 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
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
- # [INTERNAL] apply patches
14
- patch-apply
15
- patch-package --patch-dir package.d
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
- # 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" ]
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
- # 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)
26
+ # build components for production (full build)
36
27
  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
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 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
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
- # [INTERNAL] wait for server
58
- server-delay
59
- delay 2.0
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 program
62
- server
63
- node --enable-source-maps dst/speechflow.js -v info -c studio@etc/speechflow.yaml "$@"
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 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
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 files regularly generated
60
+ # remove all generated artifacts (reverse of "npm start build")
71
61
  clean
72
- shx rm -rf dst
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 files generated
75
- clean-dist : 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": "speechflow",
3
- "version": "1.3.1",
4
- "x-stdver": "1.3.1-GA",
5
- "x-release": "2025-07-31",
6
- "homepage": "https://github.com/rse/speechflow",
7
- "description": "Speech Processing Flow Graph",
8
- "license": "GPL-3.0-only",
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": "Dr. Ralf S. Engelschall",
11
- "email": "rse@engelschall.com",
12
- "url": "http://engelschall.com"
10
+ "name": "Dr. Ralf S. Engelschall",
11
+ "email": "rse@engelschall.com",
12
+ "url": "http://engelschall.com"
13
13
  },
14
14
  "repository": {
15
- "type": "git",
16
- "url": "git+https://github.com/rse/speechflow.git"
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
- "eslint": "9.32.0",
64
- "@eslint/js": "9.32.0",
65
- "neostandard": "0.12.2",
66
- "eslint-plugin-promise": "7.2.1",
67
- "eslint-plugin-import": "2.32.0",
68
- "eslint-plugin-node": "11.1.0",
69
- "@typescript-eslint/eslint-plugin": "8.38.0",
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
- "bin": { "speechflow": "dst/speechflow.js" },
104
- "types": "./dst/speechflow-node.d.ts",
105
- "module": "./dst/speechflow-node.js",
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": "npm start patch-apply",
115
- "start": "stx -v4 -c etc/stx.conf"
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: 2022,
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
+ }