speechflow 1.3.2 → 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 (154) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/etc/stx.conf +54 -58
  3. package/package.json +25 -106
  4. package/speechflow-cli/etc/stx.conf +77 -0
  5. package/speechflow-cli/package.json +116 -0
  6. package/speechflow-cli/src/speechflow-node-a2a-meter.ts +217 -0
  7. package/{src → speechflow-cli/src}/speechflow-node-a2a-vad.ts +14 -21
  8. package/{src → speechflow-cli/src}/speechflow-node-a2t-deepgram.ts +21 -38
  9. package/{src → speechflow-cli/src}/speechflow-node-t2a-elevenlabs.ts +10 -16
  10. package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +276 -0
  11. package/{src → speechflow-cli/src}/speechflow-node-x2x-filter.ts +5 -1
  12. package/{src → speechflow-cli/src}/speechflow-node-x2x-trace.ts +15 -7
  13. package/{src → speechflow-cli/src}/speechflow-node.ts +7 -0
  14. package/{src → speechflow-cli/src}/speechflow.ts +81 -25
  15. package/speechflow-ui-db/etc/eslint.mjs +106 -0
  16. package/speechflow-ui-db/etc/htmllint.json +55 -0
  17. package/speechflow-ui-db/etc/stx.conf +79 -0
  18. package/speechflow-ui-db/etc/stylelint.js +46 -0
  19. package/speechflow-ui-db/etc/stylelint.yaml +33 -0
  20. package/speechflow-ui-db/etc/tsc-client.json +30 -0
  21. package/speechflow-ui-db/etc/tsc.node.json +9 -0
  22. package/speechflow-ui-db/etc/vite-client.mts +63 -0
  23. package/speechflow-ui-db/package.d/htmllint-cli+0.0.7.patch +20 -0
  24. package/speechflow-ui-db/package.json +75 -0
  25. package/speechflow-ui-db/src/app-icon.ai +1989 -4
  26. package/speechflow-ui-db/src/app-icon.svg +26 -0
  27. package/speechflow-ui-db/src/app.styl +64 -0
  28. package/speechflow-ui-db/src/app.vue +221 -0
  29. package/speechflow-ui-db/src/index.html +23 -0
  30. package/speechflow-ui-db/src/index.ts +26 -0
  31. package/{dst/speechflow.d.ts → speechflow-ui-db/src/lib.d.ts} +5 -3
  32. package/speechflow-ui-db/src/tsconfig.json +3 -0
  33. package/speechflow-ui-st/etc/eslint.mjs +106 -0
  34. package/speechflow-ui-st/etc/htmllint.json +55 -0
  35. package/speechflow-ui-st/etc/stx.conf +79 -0
  36. package/speechflow-ui-st/etc/stylelint.js +46 -0
  37. package/speechflow-ui-st/etc/stylelint.yaml +33 -0
  38. package/speechflow-ui-st/etc/tsc-client.json +30 -0
  39. package/speechflow-ui-st/etc/tsc.node.json +9 -0
  40. package/speechflow-ui-st/etc/vite-client.mts +63 -0
  41. package/speechflow-ui-st/package.d/htmllint-cli+0.0.7.patch +20 -0
  42. package/speechflow-ui-st/package.json +79 -0
  43. package/speechflow-ui-st/src/app-icon.ai +1989 -4
  44. package/speechflow-ui-st/src/app-icon.svg +26 -0
  45. package/speechflow-ui-st/src/app.styl +64 -0
  46. package/speechflow-ui-st/src/app.vue +142 -0
  47. package/speechflow-ui-st/src/index.html +23 -0
  48. package/speechflow-ui-st/src/index.ts +26 -0
  49. package/speechflow-ui-st/src/lib.d.ts +9 -0
  50. package/speechflow-ui-st/src/tsconfig.json +3 -0
  51. package/dst/speechflow-node-a2a-ffmpeg.d.ts +0 -13
  52. package/dst/speechflow-node-a2a-ffmpeg.js +0 -153
  53. package/dst/speechflow-node-a2a-ffmpeg.js.map +0 -1
  54. package/dst/speechflow-node-a2a-gender.d.ts +0 -20
  55. package/dst/speechflow-node-a2a-gender.js +0 -349
  56. package/dst/speechflow-node-a2a-gender.js.map +0 -1
  57. package/dst/speechflow-node-a2a-meter.d.ts +0 -14
  58. package/dst/speechflow-node-a2a-meter.js +0 -196
  59. package/dst/speechflow-node-a2a-meter.js.map +0 -1
  60. package/dst/speechflow-node-a2a-mute.d.ts +0 -17
  61. package/dst/speechflow-node-a2a-mute.js +0 -117
  62. package/dst/speechflow-node-a2a-mute.js.map +0 -1
  63. package/dst/speechflow-node-a2a-vad.d.ts +0 -19
  64. package/dst/speechflow-node-a2a-vad.js +0 -383
  65. package/dst/speechflow-node-a2a-vad.js.map +0 -1
  66. package/dst/speechflow-node-a2a-wav.d.ts +0 -11
  67. package/dst/speechflow-node-a2a-wav.js +0 -211
  68. package/dst/speechflow-node-a2a-wav.js.map +0 -1
  69. package/dst/speechflow-node-a2t-deepgram.d.ts +0 -19
  70. package/dst/speechflow-node-a2t-deepgram.js +0 -345
  71. package/dst/speechflow-node-a2t-deepgram.js.map +0 -1
  72. package/dst/speechflow-node-t2a-elevenlabs.d.ts +0 -18
  73. package/dst/speechflow-node-t2a-elevenlabs.js +0 -244
  74. package/dst/speechflow-node-t2a-elevenlabs.js.map +0 -1
  75. package/dst/speechflow-node-t2a-kokoro.d.ts +0 -14
  76. package/dst/speechflow-node-t2a-kokoro.js +0 -155
  77. package/dst/speechflow-node-t2a-kokoro.js.map +0 -1
  78. package/dst/speechflow-node-t2t-deepl.d.ts +0 -15
  79. package/dst/speechflow-node-t2t-deepl.js +0 -146
  80. package/dst/speechflow-node-t2t-deepl.js.map +0 -1
  81. package/dst/speechflow-node-t2t-format.d.ts +0 -11
  82. package/dst/speechflow-node-t2t-format.js +0 -82
  83. package/dst/speechflow-node-t2t-format.js.map +0 -1
  84. package/dst/speechflow-node-t2t-ollama.d.ts +0 -13
  85. package/dst/speechflow-node-t2t-ollama.js +0 -247
  86. package/dst/speechflow-node-t2t-ollama.js.map +0 -1
  87. package/dst/speechflow-node-t2t-openai.d.ts +0 -13
  88. package/dst/speechflow-node-t2t-openai.js +0 -227
  89. package/dst/speechflow-node-t2t-openai.js.map +0 -1
  90. package/dst/speechflow-node-t2t-sentence.d.ts +0 -17
  91. package/dst/speechflow-node-t2t-sentence.js +0 -250
  92. package/dst/speechflow-node-t2t-sentence.js.map +0 -1
  93. package/dst/speechflow-node-t2t-subtitle.d.ts +0 -12
  94. package/dst/speechflow-node-t2t-subtitle.js +0 -166
  95. package/dst/speechflow-node-t2t-subtitle.js.map +0 -1
  96. package/dst/speechflow-node-t2t-transformers.d.ts +0 -14
  97. package/dst/speechflow-node-t2t-transformers.js +0 -265
  98. package/dst/speechflow-node-t2t-transformers.js.map +0 -1
  99. package/dst/speechflow-node-x2x-filter.d.ts +0 -11
  100. package/dst/speechflow-node-x2x-filter.js +0 -117
  101. package/dst/speechflow-node-x2x-filter.js.map +0 -1
  102. package/dst/speechflow-node-x2x-trace.d.ts +0 -11
  103. package/dst/speechflow-node-x2x-trace.js +0 -104
  104. package/dst/speechflow-node-x2x-trace.js.map +0 -1
  105. package/dst/speechflow-node-xio-device.d.ts +0 -13
  106. package/dst/speechflow-node-xio-device.js +0 -230
  107. package/dst/speechflow-node-xio-device.js.map +0 -1
  108. package/dst/speechflow-node-xio-file.d.ts +0 -11
  109. package/dst/speechflow-node-xio-file.js +0 -216
  110. package/dst/speechflow-node-xio-file.js.map +0 -1
  111. package/dst/speechflow-node-xio-mqtt.d.ts +0 -13
  112. package/dst/speechflow-node-xio-mqtt.js +0 -188
  113. package/dst/speechflow-node-xio-mqtt.js.map +0 -1
  114. package/dst/speechflow-node-xio-websocket.d.ts +0 -13
  115. package/dst/speechflow-node-xio-websocket.js +0 -278
  116. package/dst/speechflow-node-xio-websocket.js.map +0 -1
  117. package/dst/speechflow-node.d.ts +0 -63
  118. package/dst/speechflow-node.js +0 -177
  119. package/dst/speechflow-node.js.map +0 -1
  120. package/dst/speechflow-utils.d.ts +0 -74
  121. package/dst/speechflow-utils.js +0 -519
  122. package/dst/speechflow-utils.js.map +0 -1
  123. package/dst/speechflow.js +0 -787
  124. package/dst/speechflow.js.map +0 -1
  125. package/src/speechflow-node-a2a-meter.ts +0 -177
  126. package/src/speechflow-node-t2t-subtitle.ts +0 -149
  127. /package/{etc → speechflow-cli/etc}/biome.jsonc +0 -0
  128. /package/{etc → speechflow-cli/etc}/eslint.mjs +0 -0
  129. /package/{etc → speechflow-cli/etc}/oxlint.jsonc +0 -0
  130. /package/{etc → speechflow-cli/etc}/speechflow.bat +0 -0
  131. /package/{etc → speechflow-cli/etc}/speechflow.sh +0 -0
  132. /package/{etc → speechflow-cli/etc}/speechflow.yaml +0 -0
  133. /package/{etc → speechflow-cli/etc}/tsconfig.json +0 -0
  134. /package/{package.d → speechflow-cli/package.d}/@ericedouard+vad-node-realtime+0.2.0.patch +0 -0
  135. /package/{src → speechflow-cli/src}/lib.d.ts +0 -0
  136. /package/{src → speechflow-cli/src}/speechflow-logo.ai +0 -0
  137. /package/{src → speechflow-cli/src}/speechflow-logo.svg +0 -0
  138. /package/{src → speechflow-cli/src}/speechflow-node-a2a-ffmpeg.ts +0 -0
  139. /package/{src → speechflow-cli/src}/speechflow-node-a2a-gender.ts +0 -0
  140. /package/{src → speechflow-cli/src}/speechflow-node-a2a-mute.ts +0 -0
  141. /package/{src → speechflow-cli/src}/speechflow-node-a2a-wav.ts +0 -0
  142. /package/{src → speechflow-cli/src}/speechflow-node-t2a-kokoro.ts +0 -0
  143. /package/{src → speechflow-cli/src}/speechflow-node-t2t-deepl.ts +0 -0
  144. /package/{src → speechflow-cli/src}/speechflow-node-t2t-format.ts +0 -0
  145. /package/{src → speechflow-cli/src}/speechflow-node-t2t-ollama.ts +0 -0
  146. /package/{src → speechflow-cli/src}/speechflow-node-t2t-openai.ts +0 -0
  147. /package/{src → speechflow-cli/src}/speechflow-node-t2t-sentence.ts +0 -0
  148. /package/{src → speechflow-cli/src}/speechflow-node-t2t-transformers.ts +0 -0
  149. /package/{src → speechflow-cli/src}/speechflow-node-xio-device.ts +0 -0
  150. /package/{src → speechflow-cli/src}/speechflow-node-xio-file.ts +0 -0
  151. /package/{src → speechflow-cli/src}/speechflow-node-xio-mqtt.ts +0 -0
  152. /package/{src → speechflow-cli/src}/speechflow-node-xio-websocket.ts +0 -0
  153. /package/{src → speechflow-cli/src}/speechflow-utils.ts +0 -0
  154. /package/{tsconfig.json → speechflow-cli/tsconfig.json} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
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
+
5
22
  1.3.2 (2025-08-04)
6
23
  ------------------
7
24
 
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.2",
4
- "x-stdver": "1.3.2-GA",
5
- "x-release": "2025-08-04",
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.1",
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": "2.1.3",
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", "!typescript" ],
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
  }
@@ -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
+ }