speechflow 1.7.1 → 2.0.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 (99) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +387 -119
  3. package/etc/claude.md +5 -5
  4. package/etc/speechflow.yaml +2 -2
  5. package/package.json +3 -3
  6. package/speechflow-cli/dst/speechflow-main-graph.d.ts +1 -0
  7. package/speechflow-cli/dst/speechflow-main-graph.js +28 -5
  8. package/speechflow-cli/dst/speechflow-main-graph.js.map +1 -1
  9. package/speechflow-cli/dst/speechflow-node-a2a-wav.js +24 -4
  10. package/speechflow-cli/dst/speechflow-node-a2a-wav.js.map +1 -1
  11. package/speechflow-cli/dst/speechflow-node-a2t-google.d.ts +17 -0
  12. package/speechflow-cli/dst/speechflow-node-a2t-google.js +320 -0
  13. package/speechflow-cli/dst/speechflow-node-a2t-google.js.map +1 -0
  14. package/speechflow-cli/dst/speechflow-node-t2a-google.d.ts +15 -0
  15. package/speechflow-cli/dst/speechflow-node-t2a-google.js +218 -0
  16. package/speechflow-cli/dst/speechflow-node-t2a-google.js.map +1 -0
  17. package/speechflow-cli/dst/speechflow-node-t2a-openai.d.ts +15 -0
  18. package/speechflow-cli/dst/speechflow-node-t2a-openai.js +195 -0
  19. package/speechflow-cli/dst/speechflow-node-t2a-openai.js.map +1 -0
  20. package/speechflow-cli/dst/speechflow-node-t2a-supertonic.d.ts +17 -0
  21. package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js +608 -0
  22. package/speechflow-cli/dst/speechflow-node-t2a-supertonic.js.map +1 -0
  23. package/speechflow-cli/dst/speechflow-node-t2t-amazon.js.map +1 -1
  24. package/speechflow-cli/dst/{speechflow-node-t2t-transformers.d.ts → speechflow-node-t2t-opus.d.ts} +1 -3
  25. package/speechflow-cli/dst/speechflow-node-t2t-opus.js +159 -0
  26. package/speechflow-cli/dst/speechflow-node-t2t-opus.js.map +1 -0
  27. package/speechflow-cli/dst/speechflow-node-t2t-profanity.d.ts +11 -0
  28. package/speechflow-cli/dst/speechflow-node-t2t-profanity.js +118 -0
  29. package/speechflow-cli/dst/speechflow-node-t2t-profanity.js.map +1 -0
  30. package/speechflow-cli/dst/speechflow-node-t2t-punctuation.d.ts +13 -0
  31. package/speechflow-cli/dst/speechflow-node-t2t-punctuation.js +220 -0
  32. package/speechflow-cli/dst/speechflow-node-t2t-punctuation.js.map +1 -0
  33. package/speechflow-cli/dst/{speechflow-node-t2t-openai.d.ts → speechflow-node-t2t-spellcheck.d.ts} +2 -2
  34. package/speechflow-cli/dst/{speechflow-node-t2t-openai.js → speechflow-node-t2t-spellcheck.js} +47 -99
  35. package/speechflow-cli/dst/speechflow-node-t2t-spellcheck.js.map +1 -0
  36. package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js +3 -6
  37. package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js.map +1 -1
  38. package/speechflow-cli/dst/speechflow-node-t2t-summary.d.ts +16 -0
  39. package/speechflow-cli/dst/speechflow-node-t2t-summary.js +241 -0
  40. package/speechflow-cli/dst/speechflow-node-t2t-summary.js.map +1 -0
  41. package/speechflow-cli/dst/{speechflow-node-t2t-ollama.d.ts → speechflow-node-t2t-translate.d.ts} +2 -2
  42. package/speechflow-cli/dst/{speechflow-node-t2t-transformers.js → speechflow-node-t2t-translate.js} +53 -115
  43. package/speechflow-cli/dst/speechflow-node-t2t-translate.js.map +1 -0
  44. package/speechflow-cli/dst/speechflow-node-xio-exec.d.ts +12 -0
  45. package/speechflow-cli/dst/speechflow-node-xio-exec.js +223 -0
  46. package/speechflow-cli/dst/speechflow-node-xio-exec.js.map +1 -0
  47. package/speechflow-cli/dst/speechflow-node-xio-file.d.ts +1 -0
  48. package/speechflow-cli/dst/speechflow-node-xio-file.js +79 -66
  49. package/speechflow-cli/dst/speechflow-node-xio-file.js.map +1 -1
  50. package/speechflow-cli/dst/speechflow-node-xio-vban.d.ts +17 -0
  51. package/speechflow-cli/dst/speechflow-node-xio-vban.js +330 -0
  52. package/speechflow-cli/dst/speechflow-node-xio-vban.js.map +1 -0
  53. package/speechflow-cli/dst/speechflow-node-xio-webrtc.d.ts +39 -0
  54. package/speechflow-cli/dst/speechflow-node-xio-webrtc.js +500 -0
  55. package/speechflow-cli/dst/speechflow-node-xio-webrtc.js.map +1 -0
  56. package/speechflow-cli/dst/speechflow-util-audio.js +4 -5
  57. package/speechflow-cli/dst/speechflow-util-audio.js.map +1 -1
  58. package/speechflow-cli/dst/speechflow-util-error.d.ts +1 -0
  59. package/speechflow-cli/dst/speechflow-util-error.js +5 -0
  60. package/speechflow-cli/dst/speechflow-util-error.js.map +1 -1
  61. package/speechflow-cli/dst/speechflow-util-llm.d.ts +35 -0
  62. package/speechflow-cli/dst/speechflow-util-llm.js +363 -0
  63. package/speechflow-cli/dst/speechflow-util-llm.js.map +1 -0
  64. package/speechflow-cli/dst/speechflow-util.d.ts +1 -0
  65. package/speechflow-cli/dst/speechflow-util.js +1 -0
  66. package/speechflow-cli/dst/speechflow-util.js.map +1 -1
  67. package/speechflow-cli/etc/oxlint.jsonc +2 -1
  68. package/speechflow-cli/package.json +34 -17
  69. package/speechflow-cli/src/lib.d.ts +5 -0
  70. package/speechflow-cli/src/speechflow-main-graph.ts +31 -5
  71. package/speechflow-cli/src/speechflow-node-a2a-wav.ts +24 -4
  72. package/speechflow-cli/src/speechflow-node-a2t-google.ts +322 -0
  73. package/speechflow-cli/src/speechflow-node-t2a-google.ts +206 -0
  74. package/speechflow-cli/src/speechflow-node-t2a-openai.ts +179 -0
  75. package/speechflow-cli/src/speechflow-node-t2a-supertonic.ts +701 -0
  76. package/speechflow-cli/src/speechflow-node-t2t-amazon.ts +2 -1
  77. package/speechflow-cli/src/speechflow-node-t2t-opus.ts +136 -0
  78. package/speechflow-cli/src/speechflow-node-t2t-profanity.ts +93 -0
  79. package/speechflow-cli/src/speechflow-node-t2t-punctuation.ts +201 -0
  80. package/speechflow-cli/src/{speechflow-node-t2t-openai.ts → speechflow-node-t2t-spellcheck.ts} +48 -107
  81. package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +3 -6
  82. package/speechflow-cli/src/speechflow-node-t2t-summary.ts +229 -0
  83. package/speechflow-cli/src/speechflow-node-t2t-translate.ts +181 -0
  84. package/speechflow-cli/src/speechflow-node-xio-exec.ts +210 -0
  85. package/speechflow-cli/src/speechflow-node-xio-file.ts +92 -79
  86. package/speechflow-cli/src/speechflow-node-xio-vban.ts +325 -0
  87. package/speechflow-cli/src/speechflow-node-xio-webrtc.ts +533 -0
  88. package/speechflow-cli/src/speechflow-util-audio.ts +5 -5
  89. package/speechflow-cli/src/speechflow-util-error.ts +9 -0
  90. package/speechflow-cli/src/speechflow-util-llm.ts +367 -0
  91. package/speechflow-cli/src/speechflow-util.ts +1 -0
  92. package/speechflow-ui-db/package.json +9 -9
  93. package/speechflow-ui-st/package.json +9 -9
  94. package/speechflow-cli/dst/speechflow-node-t2t-ollama.js +0 -293
  95. package/speechflow-cli/dst/speechflow-node-t2t-ollama.js.map +0 -1
  96. package/speechflow-cli/dst/speechflow-node-t2t-openai.js.map +0 -1
  97. package/speechflow-cli/dst/speechflow-node-t2t-transformers.js.map +0 -1
  98. package/speechflow-cli/src/speechflow-node-t2t-ollama.ts +0 -281
  99. package/speechflow-cli/src/speechflow-node-t2t-transformers.ts +0 -247
@@ -51,26 +51,27 @@ const util = __importStar(require("./speechflow-util"));
51
51
  class SpeechFlowNodeXIOFile extends speechflow_node_1.default {
52
52
  /* declare official node name */
53
53
  static name = "xio-file";
54
+ /* file descriptor for seekable write mode */
55
+ fd = null;
54
56
  /* construct node */
55
57
  constructor(id, cfg, opts, args) {
56
58
  super(id, cfg, opts, args);
57
59
  /* declare node configuration parameters */
58
60
  this.configure({
59
61
  path: { type: "string", pos: 0, val: "" },
60
- mode: { type: "string", pos: 1, val: "r", match: /^(?:r|w|rw)$/ },
62
+ mode: { type: "string", pos: 1, val: "r", match: /^(?:r|w)$/ },
61
63
  type: { type: "string", pos: 2, val: "audio", match: /^(?:audio|text)$/ },
62
- chunka: { type: "number", val: 200, match: (n) => n >= 10 && n <= 1000 },
63
- chunkt: { type: "number", val: 65536, match: (n) => n >= 1024 && n <= 131072 }
64
+ seekable: { type: "boolean", val: false },
65
+ chunkAudio: { type: "number", val: 200, match: (n) => n >= 10 && n <= 1000 },
66
+ chunkText: { type: "number", val: 65536, match: (n) => n >= 1024 && n <= 131072 }
64
67
  });
65
68
  /* sanity check parameters */
66
69
  if (this.params.path === "")
67
70
  throw new Error("required parameter \"path\" has to be given");
71
+ if (this.params.seekable && this.params.path === "-")
72
+ throw new Error("parameter \"seekable\" cannot be used with standard I/O");
68
73
  /* declare node input/output format */
69
- if (this.params.mode === "rw") {
70
- this.input = this.params.type;
71
- this.output = this.params.type;
72
- }
73
- else if (this.params.mode === "r") {
74
+ if (this.params.mode === "r") {
74
75
  this.input = "none";
75
76
  this.output = this.params.type;
76
77
  }
@@ -84,8 +85,8 @@ class SpeechFlowNodeXIOFile extends speechflow_node_1.default {
84
85
  /* determine how many bytes we need per chunk when
85
86
  the chunk should be of the required duration/size */
86
87
  const highWaterMarkAudio = (this.config.audioSampleRate *
87
- (this.config.audioBitDepth / 8)) / (1000 / this.params.chunka);
88
- const highWaterMarkText = this.params.chunkt;
88
+ (this.config.audioBitDepth / 8)) / (1000 / this.params.chunkAudio);
89
+ const highWaterMarkText = this.params.chunkText;
89
90
  /* utility function: create a writable stream as chunker that
90
91
  writes to process.stdout but properly handles finish events.
91
92
  This ensures the writable side of the composed stream below
@@ -106,55 +107,7 @@ class SpeechFlowNodeXIOFile extends speechflow_node_1.default {
106
107
  }
107
108
  });
108
109
  /* dispatch according to mode and path */
109
- if (this.params.mode === "rw") {
110
- if (this.params.path === "-") {
111
- /* standard I/O */
112
- if (this.params.type === "audio") {
113
- process.stdin.setEncoding();
114
- process.stdout.setEncoding();
115
- const streamR = new node_stream_1.default.PassThrough({ highWaterMark: highWaterMarkAudio });
116
- process.stdin.pipe(streamR);
117
- const streamW = new node_stream_1.default.PassThrough({ highWaterMark: highWaterMarkAudio });
118
- streamW.pipe(process.stdout);
119
- this.stream = node_stream_1.default.Duplex.from({ readable: streamR, writable: streamW });
120
- }
121
- else {
122
- process.stdin.setEncoding(this.config.textEncoding);
123
- process.stdout.setEncoding(this.config.textEncoding);
124
- const streamR = new node_stream_1.default.PassThrough({ highWaterMark: highWaterMarkText });
125
- process.stdin.pipe(streamR);
126
- const streamW = new node_stream_1.default.PassThrough({ highWaterMark: highWaterMarkText });
127
- streamW.pipe(process.stdout);
128
- this.stream = node_stream_1.default.Duplex.from({ readable: streamR, writable: streamW });
129
- }
130
- }
131
- else {
132
- /* file I/O */
133
- if (this.params.type === "audio") {
134
- this.stream = node_stream_1.default.Duplex.from({
135
- readable: node_fs_1.default.createReadStream(this.params.path, { highWaterMark: highWaterMarkAudio }),
136
- writable: node_fs_1.default.createWriteStream(this.params.path, { highWaterMark: highWaterMarkAudio })
137
- });
138
- }
139
- else {
140
- this.stream = node_stream_1.default.Duplex.from({
141
- readable: node_fs_1.default.createReadStream(this.params.path, {
142
- highWaterMark: highWaterMarkText,
143
- encoding: this.config.textEncoding
144
- }),
145
- writable: node_fs_1.default.createWriteStream(this.params.path, {
146
- highWaterMark: highWaterMarkText,
147
- encoding: this.config.textEncoding
148
- })
149
- });
150
- }
151
- }
152
- /* convert regular stream into object-mode stream */
153
- const wrapper1 = util.createTransformStreamForWritableSide(this.params.type, 1);
154
- const wrapper2 = util.createTransformStreamForReadableSide(this.params.type, () => this.timeZero);
155
- this.stream = node_stream_1.default.compose(wrapper1, this.stream, wrapper2);
156
- }
157
- else if (this.params.mode === "r") {
110
+ if (this.params.mode === "r") {
158
111
  if (this.params.path === "-") {
159
112
  /* standard I/O */
160
113
  let chunker;
@@ -193,13 +146,61 @@ class SpeechFlowNodeXIOFile extends speechflow_node_1.default {
193
146
  }
194
147
  else {
195
148
  /* file I/O */
196
- let writable;
197
- if (this.params.type === "audio")
198
- writable = node_fs_1.default.createWriteStream(this.params.path, { highWaterMark: highWaterMarkAudio });
199
- else
200
- writable = node_fs_1.default.createWriteStream(this.params.path, { highWaterMark: highWaterMarkText, encoding: this.config.textEncoding });
201
- const wrapper = util.createTransformStreamForWritableSide(this.params.type, 1);
202
- this.stream = node_stream_1.default.compose(wrapper, writable);
149
+ if (this.params.seekable) {
150
+ /* seekable file I/O with file descriptor */
151
+ this.fd = node_fs_1.default.openSync(this.params.path, "w");
152
+ let writePosition = 0;
153
+ const self = this;
154
+ const writable = new node_stream_1.default.Writable({
155
+ objectMode: true,
156
+ decodeStrings: false,
157
+ highWaterMark: 1,
158
+ write(chunk, encoding, callback) {
159
+ const payload = Buffer.isBuffer(chunk.payload) ?
160
+ chunk.payload : Buffer.from(chunk.payload);
161
+ const seekPosition = chunk.meta.get("chunk:seek");
162
+ if (seekPosition !== undefined) {
163
+ /* seek to specified position and write (overload) */
164
+ node_fs_1.default.write(self.fd, payload, 0, payload.byteLength, seekPosition, callback);
165
+ }
166
+ else {
167
+ /* append at current position */
168
+ node_fs_1.default.write(self.fd, payload, 0, payload.byteLength, writePosition, (err) => {
169
+ if (err)
170
+ callback(err);
171
+ else {
172
+ writePosition += payload.byteLength;
173
+ callback();
174
+ }
175
+ });
176
+ }
177
+ },
178
+ final(callback) {
179
+ callback();
180
+ },
181
+ destroy(err, callback) {
182
+ if (self.fd !== null) {
183
+ node_fs_1.default.close(self.fd, () => {
184
+ self.fd = null;
185
+ callback(err);
186
+ });
187
+ }
188
+ else
189
+ callback(err);
190
+ }
191
+ });
192
+ this.stream = writable;
193
+ }
194
+ else {
195
+ /* non-seekable file I/O with stream */
196
+ let writable;
197
+ if (this.params.type === "audio")
198
+ writable = node_fs_1.default.createWriteStream(this.params.path, { highWaterMark: highWaterMarkAudio });
199
+ else
200
+ writable = node_fs_1.default.createWriteStream(this.params.path, { highWaterMark: highWaterMarkText, encoding: this.config.textEncoding });
201
+ const wrapper = util.createTransformStreamForWritableSide(this.params.type, 1);
202
+ this.stream = node_stream_1.default.compose(wrapper, writable);
203
+ }
203
204
  }
204
205
  }
205
206
  else
@@ -232,6 +233,18 @@ class SpeechFlowNodeXIOFile extends speechflow_node_1.default {
232
233
  }
233
234
  this.stream = null;
234
235
  }
236
+ /* ensure file descriptor is closed */
237
+ if (this.fd !== null) {
238
+ await new Promise((resolve, reject) => {
239
+ node_fs_1.default.close(this.fd, (err) => {
240
+ this.fd = null;
241
+ if (err)
242
+ reject(err);
243
+ else
244
+ resolve();
245
+ });
246
+ });
247
+ }
235
248
  }
236
249
  }
237
250
  exports.default = SpeechFlowNodeXIOFile;
@@ -1 +1 @@
1
- {"version":3,"file":"speechflow-node-xio-file.js","sourceRoot":"","sources":["../src/speechflow-node-xio-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speechflow-node-xio-file.js","sourceRoot":"","sources":["../src/speechflow-node-xio-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import SpeechFlowNode from "./speechflow-node";
2
+ export default class SpeechFlowNodeXIOVBAN extends SpeechFlowNode {
3
+ static name: string;
4
+ private server;
5
+ private chunkQueue;
6
+ private frameCounter;
7
+ private targetAddress;
8
+ private targetPort;
9
+ constructor(id: string, cfg: {
10
+ [id: string]: any;
11
+ }, opts: {
12
+ [id: string]: any;
13
+ }, args: any[]);
14
+ private parseAddress;
15
+ open(): Promise<void>;
16
+ close(): Promise<void>;
17
+ }
@@ -0,0 +1,330 @@
1
+ "use strict";
2
+ /*
3
+ ** SpeechFlow - Speech Processing Flow Graph
4
+ ** Copyright (c) 2024-2025 Dr. Ralf S. Engelschall <rse@engelschall.com>
5
+ ** Licensed under GPL 3.0 <https://spdx.org/licenses/GPL-3.0-only>
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ /* standard dependencies */
45
+ const node_stream_1 = __importDefault(require("node:stream"));
46
+ /* external dependencies */
47
+ const luxon_1 = require("luxon");
48
+ const vban_1 = require("vban");
49
+ /* internal dependencies */
50
+ const speechflow_node_1 = __importStar(require("./speechflow-node"));
51
+ const util = __importStar(require("./speechflow-util"));
52
+ /* VBAN sample rate index to Hz mapping */
53
+ const sampleRateToIndex = {
54
+ 6000: 0, 12000: 1, 24000: 2, 48000: 3, 96000: 4, 192000: 5, 384000: 6,
55
+ 8000: 7, 16000: 8, 32000: 9, 64000: 10, 128000: 11, 256000: 12, 512000: 13,
56
+ 11025: 14, 22050: 15, 44100: 16, 88200: 17, 176400: 18, 352800: 19, 705600: 20
57
+ };
58
+ /* SpeechFlow node for VBAN networking */
59
+ class SpeechFlowNodeXIOVBAN extends speechflow_node_1.default {
60
+ /* declare official node name */
61
+ static name = "xio-vban";
62
+ /* internal state */
63
+ server = null;
64
+ chunkQueue = null;
65
+ frameCounter = 0;
66
+ targetAddress = "";
67
+ targetPort = 0;
68
+ /* construct node */
69
+ constructor(id, cfg, opts, args) {
70
+ super(id, cfg, opts, args);
71
+ /* declare node configuration parameters */
72
+ this.configure({
73
+ listen: { type: "string", pos: 0, val: "", match: /^(?:|\d+|.+?:\d+)$/ },
74
+ connect: { type: "string", pos: 1, val: "", match: /^(?:|.+?:\d+)$/ },
75
+ stream: { type: "string", pos: 2, val: "Stream", match: /^.{1,16}$/ },
76
+ mode: { type: "string", pos: 3, val: "rw", match: /^(?:r|w|rw)$/ }
77
+ });
78
+ /* sanity check parameters */
79
+ if (this.params.listen === "" && this.params.connect === "")
80
+ throw new Error("VBAN node requires either listen or connect mode");
81
+ if (this.params.mode === "r" && this.params.listen === "")
82
+ throw new Error("VBAN read mode requires a listen address");
83
+ if (this.params.mode === "w" && this.params.connect === "")
84
+ throw new Error("VBAN write mode requires a connect address");
85
+ /* VBAN only handles audio */
86
+ if (this.params.mode === "rw") {
87
+ this.input = "audio";
88
+ this.output = "audio";
89
+ }
90
+ else if (this.params.mode === "r") {
91
+ this.input = "none";
92
+ this.output = "audio";
93
+ }
94
+ else if (this.params.mode === "w") {
95
+ this.input = "audio";
96
+ this.output = "none";
97
+ }
98
+ }
99
+ /* parse address:port string */
100
+ parseAddress(addr, defaultPort) {
101
+ if (addr.match(/^\d+$/))
102
+ return { host: "0.0.0.0", port: Number.parseInt(addr, 10) };
103
+ const m = addr.match(/^(.+?):(\d+)$/);
104
+ if (m === null)
105
+ return { host: addr, port: defaultPort };
106
+ return { host: m[1], port: Number.parseInt(m[2], 10) };
107
+ }
108
+ /* open node */
109
+ async open() {
110
+ /* create VBAN server */
111
+ this.server = new vban_1.VBANServer({
112
+ application: {
113
+ applicationName: "SpeechFlow",
114
+ manufacturerName: "Dr. Ralf S. Engelschall",
115
+ deviceName: this.id
116
+ }
117
+ });
118
+ /* setup error handling */
119
+ this.server.on("error", (err) => {
120
+ this.log("error", `VBAN error: ${err.message}`);
121
+ });
122
+ /* setup chunk queue for incoming audio */
123
+ this.chunkQueue = new util.SingleQueue();
124
+ /* determine target for sending */
125
+ if (this.params.connect !== "") {
126
+ const target = this.parseAddress(this.params.connect, 6980);
127
+ this.targetAddress = target.host;
128
+ this.targetPort = target.port;
129
+ }
130
+ /* handle incoming VBAN packets */
131
+ this.server.on("message", (packet, sender) => {
132
+ if (this.params.mode === "w")
133
+ return;
134
+ /* only handle audio packets */
135
+ if (!(packet instanceof vban_1.VBANAudioPacket))
136
+ return;
137
+ /* optionally filter by stream name */
138
+ if (this.params.stream !== "" && packet.streamName !== this.params.stream)
139
+ return;
140
+ /* get audio data from packet */
141
+ if (!Buffer.isBuffer(packet.data)) {
142
+ this.log("warning", "VBAN packet data is not a Buffer");
143
+ return;
144
+ }
145
+ const data = packet.data;
146
+ /* convert audio format if necessary */
147
+ let audioBuffer;
148
+ const bitResolution = packet.bitResolution;
149
+ if (bitResolution === vban_1.EBitsResolutions.VBAN_DATATYPE_INT16) {
150
+ /* 16-bit signed integer - matches our format */
151
+ audioBuffer = data;
152
+ }
153
+ else if (bitResolution === vban_1.EBitsResolutions.VBAN_DATATYPE_BYTE8) {
154
+ /* 8-bit unsigned to 16-bit signed */
155
+ audioBuffer = Buffer.alloc(data.length * 2);
156
+ for (let i = 0; i < data.length; i++) {
157
+ const sample = ((data[i] - 128) / 128) * 32767;
158
+ audioBuffer.writeInt16LE(Math.round(sample), i * 2);
159
+ }
160
+ }
161
+ else if (bitResolution === vban_1.EBitsResolutions.VBAN_DATATYPE_INT24) {
162
+ /* 24-bit signed to 16-bit signed */
163
+ const samples = Math.floor(data.length / 3);
164
+ audioBuffer = Buffer.alloc(samples * 2);
165
+ for (let i = 0; i < samples; i++) {
166
+ const b0 = data[i * 3];
167
+ const b1 = data[i * 3 + 1];
168
+ const b2 = data[i * 3 + 2];
169
+ const value = ((b2 << 16) | (b1 << 8) | b0) & 0xFFFFFF;
170
+ const signed = value > 0x7FFFFF ? value - 0x1000000 : value;
171
+ const sample = (signed / 0x800000) * 32767;
172
+ audioBuffer.writeInt16LE(Math.round(sample), i * 2);
173
+ }
174
+ }
175
+ else if (bitResolution === vban_1.EBitsResolutions.VBAN_DATATYPE_INT32) {
176
+ /* 32-bit signed to 16-bit signed */
177
+ const samples = Math.floor(data.length / 4);
178
+ audioBuffer = Buffer.alloc(samples * 2);
179
+ for (let i = 0; i < samples; i++) {
180
+ const value = data.readInt32LE(i * 4);
181
+ const sample = (value / 0x80000000) * 32767;
182
+ audioBuffer.writeInt16LE(Math.round(sample), i * 2);
183
+ }
184
+ }
185
+ else if (bitResolution === vban_1.EBitsResolutions.VBAN_DATATYPE_FLOAT32) {
186
+ /* 32-bit float to 16-bit signed */
187
+ const samples = Math.floor(data.length / 4);
188
+ audioBuffer = Buffer.alloc(samples * 2);
189
+ for (let i = 0; i < samples; i++) {
190
+ const value = data.readFloatLE(i * 4);
191
+ const sample = Math.max(-32768, Math.min(32767, Math.round(value * 32767)));
192
+ audioBuffer.writeInt16LE(sample, i * 2);
193
+ }
194
+ }
195
+ else if (bitResolution === vban_1.EBitsResolutions.VBAN_DATATYPE_FLOAT64) {
196
+ /* 64-bit float to 16-bit signed */
197
+ const samples = Math.floor(data.length / 8);
198
+ audioBuffer = Buffer.alloc(samples * 2);
199
+ for (let i = 0; i < samples; i++) {
200
+ const value = data.readDoubleLE(i * 8);
201
+ const sample = Math.max(-32768, Math.min(32767, Math.round(value * 32767)));
202
+ audioBuffer.writeInt16LE(sample, i * 2);
203
+ }
204
+ }
205
+ else {
206
+ /* unsupported format */
207
+ this.log("warning", `unsupported VBAN bit resolution: ${bitResolution}`);
208
+ return;
209
+ }
210
+ /* handle channel conversion if needed */
211
+ const channels = packet.nbChannel + 1;
212
+ if (channels > 1 && this.config.audioChannels === 1) {
213
+ /* downmix to mono */
214
+ const samples = audioBuffer.length / 2 / channels;
215
+ const monoBuffer = Buffer.alloc(samples * 2);
216
+ for (let i = 0; i < samples; i++) {
217
+ let sum = 0;
218
+ for (let ch = 0; ch < channels; ch++)
219
+ sum += audioBuffer.readInt16LE((i * channels + ch) * 2);
220
+ monoBuffer.writeInt16LE(Math.round(sum / channels), i * 2);
221
+ }
222
+ audioBuffer = monoBuffer;
223
+ }
224
+ /* create chunk with timing information */
225
+ const now = luxon_1.DateTime.now();
226
+ const start = now.diff(this.timeZero);
227
+ const duration = util.audioBufferDuration(audioBuffer, this.config.audioSampleRate, this.config.audioBitDepth, this.config.audioChannels);
228
+ const end = start.plus(duration * 1000);
229
+ const chunk = new speechflow_node_1.SpeechFlowChunk(start, end, "final", "audio", audioBuffer);
230
+ this.chunkQueue?.write(chunk);
231
+ });
232
+ /* setup listening */
233
+ this.server.on("listening", () => {
234
+ const address = this.server.address();
235
+ this.log("info", `VBAN listening on ${address.address}:${address.port}`);
236
+ });
237
+ /* bind to listen port */
238
+ if (this.params.listen !== "") {
239
+ const listen = this.parseAddress(this.params.listen, 6980);
240
+ this.server.bind(listen.port, listen.host);
241
+ }
242
+ else
243
+ /* still need to bind for sending */
244
+ this.server.bind(0);
245
+ /* create duplex stream */
246
+ const self = this;
247
+ const reads = new util.PromiseSet();
248
+ this.stream = new node_stream_1.default.Duplex({
249
+ writableObjectMode: true,
250
+ readableObjectMode: true,
251
+ decodeStrings: false,
252
+ highWaterMark: 1,
253
+ write(chunk, encoding, callback) {
254
+ if (self.params.mode === "r") {
255
+ callback(new Error("write operation on read-only node"));
256
+ return;
257
+ }
258
+ if (chunk.type !== "audio") {
259
+ callback(new Error("VBAN only supports audio type"));
260
+ return;
261
+ }
262
+ if (self.targetAddress === "") {
263
+ callback(new Error("no VBAN target address configured"));
264
+ return;
265
+ }
266
+ /* get audio buffer */
267
+ const audioBuffer = chunk.payload;
268
+ /* determine VBAN sample rate index */
269
+ const sampleRateIndex = sampleRateToIndex[self.config.audioSampleRate];
270
+ if (sampleRateIndex === undefined) {
271
+ callback(new Error(`unsupported sample rate for VBAN: ${self.config.audioSampleRate}`));
272
+ return;
273
+ }
274
+ /* calculate number of samples */
275
+ const bytesPerSample = self.config.audioBitDepth / 8;
276
+ const nbSample = (audioBuffer.length / bytesPerSample / self.config.audioChannels) - 1;
277
+ if (nbSample < 0 || nbSample > 255)
278
+ self.log("warning", `VBAN nbSample out of range: ${nbSample} (clamped to 0-255)`);
279
+ /* create VBAN audio packet */
280
+ const packet = new vban_1.VBANAudioPacket({
281
+ streamName: self.params.stream,
282
+ srIndex: sampleRateIndex,
283
+ nbSample: Math.min(255, Math.max(0, nbSample)),
284
+ nbChannel: self.config.audioChannels - 1,
285
+ bitResolution: vban_1.EBitsResolutions.VBAN_DATATYPE_INT16,
286
+ codec: vban_1.ECodecs.VBAN_CODEC_PCM,
287
+ frameCounter: self.frameCounter++
288
+ }, audioBuffer);
289
+ /* send packet */
290
+ self.server.send(packet, self.targetPort, self.targetAddress)
291
+ .then(() => callback())
292
+ .catch((err) => callback(err));
293
+ },
294
+ async final(callback) {
295
+ await reads.awaitAll();
296
+ callback();
297
+ },
298
+ read(size) {
299
+ if (self.params.mode === "w")
300
+ throw new Error("read operation on write-only node");
301
+ reads.add(self.chunkQueue.read().then((chunk) => {
302
+ this.push(chunk, "binary");
303
+ }).catch((err) => {
304
+ self.log("warning", `read on chunk queue operation failed: ${err}`);
305
+ this.push(null);
306
+ }));
307
+ }
308
+ });
309
+ }
310
+ /* close node */
311
+ async close() {
312
+ /* drain and clear chunk queue reference */
313
+ if (this.chunkQueue !== null) {
314
+ this.chunkQueue.drain();
315
+ this.chunkQueue = null;
316
+ }
317
+ /* close VBAN server */
318
+ if (this.server !== null) {
319
+ this.server.close();
320
+ this.server = null;
321
+ }
322
+ /* shutdown stream */
323
+ if (this.stream !== null) {
324
+ await util.destroyStream(this.stream);
325
+ this.stream = null;
326
+ }
327
+ }
328
+ }
329
+ exports.default = SpeechFlowNodeXIOVBAN;
330
+ //# sourceMappingURL=speechflow-node-xio-vban.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speechflow-node-xio-vban.js","sourceRoot":"","sources":["../src/speechflow-node-xio-vban.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,6BAA6B;AAC7B,8DAAgC;AAEhC,6BAA6B;AAC7B,iCAAuD;AACvD,+BACsD;AAEtD,6BAA6B;AAC7B,qEAAmE;AACnE,wDAAmE;AAEnE,4CAA4C;AAC5C,MAAM,iBAAiB,GAAiC;IACpD,IAAI,EAAI,CAAC,EAAG,KAAK,EAAG,CAAC,EAAG,KAAK,EAAG,CAAC,EAAG,KAAK,EAAG,CAAC,EAAG,KAAK,EAAG,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACjF,IAAI,EAAI,CAAC,EAAG,KAAK,EAAG,CAAC,EAAG,KAAK,EAAG,CAAC,EAAG,KAAK,EAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;IAClF,KAAK,EAAG,EAAE,EAAE,KAAK,EAAG,EAAE,EAAE,KAAK,EAAG,EAAE,EAAE,KAAK,EAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;CACrF,CAAA;AAED,2CAA2C;AAC3C,MAAqB,qBAAsB,SAAQ,yBAAc;IAC7D,kCAAkC;IAC3B,MAAM,CAAC,IAAI,GAAG,UAAU,CAAA;IAE/B,sBAAsB;IACd,MAAM,GAAiD,IAAI,CAAA;IAC3D,UAAU,GAA6C,IAAI,CAAA;IAC3D,YAAY,GAA2C,CAAC,CAAA;IACxD,aAAa,GAA0C,EAAE,CAAA;IACzD,UAAU,GAA6C,CAAC,CAAA;IAEhE,sBAAsB;IACtB,YAAa,EAAU,EAAE,GAA4B,EAAE,IAA6B,EAAE,IAAW;QAC7F,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE1B,6CAA6C;QAC7C,IAAI,CAAC,SAAS,CAAC;YACX,MAAM,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAQ,KAAK,EAAE,oBAAoB,EAAE;YAC/E,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAQ,KAAK,EAAE,gBAAgB,EAAE;YAC3E,MAAM,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE;YACtE,IAAI,EAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAM,KAAK,EAAE,cAAc,EAAE;SAC5E,CAAC,CAAA;QAEF,+BAA+B;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;QACvE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,EAAE;YACtD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAEjE,+BAA+B;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAI,OAAO,CAAA;YACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;QACzB,CAAC;aACI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,GAAI,MAAM,CAAA;YACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;QACzB,CAAC;aACI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,GAAI,OAAO,CAAA;YACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;IACL,CAAC;IAED,iCAAiC;IACzB,YAAY,CAAE,IAAY,EAAE,WAAmB;QACnD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAA;QAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QACrC,IAAI,CAAC,KAAK,IAAI;YACV,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAC5C,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;IAC1D,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,IAAI;QACN,0BAA0B;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAU,CAAC;YACzB,WAAW,EAAE;gBACT,eAAe,EAAG,YAAY;gBAC9B,gBAAgB,EAAE,yBAAyB;gBAC3C,UAAU,EAAQ,IAAI,CAAC,EAAE;aAC5B;SACJ,CAAC,CAAA;QAEF,4BAA4B;QAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;QAEF,4CAA4C;QAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,WAAW,EAAmB,CAAA;QAEzD,oCAAoC;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC3D,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAA;YAChC,IAAI,CAAC,UAAU,GAAM,MAAM,CAAC,IAAI,CAAA;QACpC,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,EAAE,MAAyC,EAAE,EAAE;YACjF,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG;gBACxB,OAAM;YAEV,iCAAiC;YACjC,IAAI,CAAC,CAAC,MAAM,YAAY,sBAAe,CAAC;gBACpC,OAAM;YAEV,wCAAwC;YACxC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;gBACrE,OAAM;YAEV,kCAAkC;YAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAA;gBACvD,OAAM;YACV,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;YAExB,yCAAyC;YACzC,IAAI,WAAmB,CAAA;YACvB,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAA;YAC1C,IAAI,aAAa,KAAK,uBAAgB,CAAC,mBAAmB,EAAE,CAAC;gBACzD,kDAAkD;gBAClD,WAAW,GAAG,IAAI,CAAA;YACtB,CAAC;iBACI,IAAI,aAAa,KAAK,uBAAgB,CAAC,mBAAmB,EAAE,CAAC;gBAC9D,uCAAuC;gBACvC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAA;oBAC9C,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;gBACvD,CAAC;YACL,CAAC;iBACI,IAAI,aAAa,KAAK,uBAAgB,CAAC,mBAAmB,EAAE,CAAC;gBAC9D,sCAAsC;gBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAC3C,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;oBACtB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAA;oBACtD,MAAM,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAA;oBAC3D,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAA;oBAC1C,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;gBACvD,CAAC;YACL,CAAC;iBACI,IAAI,aAAa,KAAK,uBAAgB,CAAC,mBAAmB,EAAE,CAAC;gBAC9D,sCAAsC;gBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAC3C,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;oBACrC,MAAM,MAAM,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,KAAK,CAAA;oBAC3C,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;gBACvD,CAAC;YACL,CAAC;iBACI,IAAI,aAAa,KAAK,uBAAgB,CAAC,qBAAqB,EAAE,CAAC;gBAChE,qCAAqC;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAC3C,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;oBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;oBAC3E,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC3C,CAAC;YACL,CAAC;iBACI,IAAI,aAAa,KAAK,uBAAgB,CAAC,qBAAqB,EAAE,CAAC;gBAChE,qCAAqC;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAC3C,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;oBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;oBAC3E,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC3C,CAAC;YACL,CAAC;iBACI,CAAC;gBACF,0BAA0B;gBAC1B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,oCAAoC,aAAa,EAAE,CAAC,CAAA;gBACxE,OAAM;YACV,CAAC;YAED,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAA;YACrC,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBAClD,uBAAuB;gBACvB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAA;gBACjD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;gBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,IAAI,GAAG,GAAG,CAAC,CAAA;oBACX,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE;wBAChC,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC3D,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC9D,CAAC;gBACD,WAAW,GAAG,UAAU,CAAA;YAC5B,CAAC;YAED,4CAA4C;YAC5C,MAAM,GAAG,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAA;YAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EACjD,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;YACtF,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;YACvC,MAAM,KAAK,GAAG,IAAI,iCAAe,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;YAC5E,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QAEF,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAO,CAAC,OAAO,EAAE,CAAA;YACtC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;QAEF,2BAA2B;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC;;YAEG,sCAAsC;YACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEvB,4BAA4B;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,EAAQ,CAAA;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAM,CAAC,MAAM,CAAC;YAC5B,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAO,KAAK;YACzB,aAAa,EAAO,CAAC;YACrB,KAAK,CAAE,KAAsB,EAAE,QAAQ,EAAE,QAAQ;gBAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;oBAC3B,QAAQ,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;oBACxD,OAAM;gBACV,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACzB,QAAQ,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAA;oBACpD,OAAM;gBACV,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;oBAC5B,QAAQ,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;oBACxD,OAAM;gBACV,CAAC;gBAED,wBAAwB;gBACxB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAiB,CAAA;gBAE3C,wCAAwC;gBACxC,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;gBACtE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;oBAChC,QAAQ,CAAC,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;oBACvF,OAAM;gBACV,CAAC;gBAED,mCAAmC;gBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAA;gBACpD,MAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;gBACtF,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,GAAG;oBAC9B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,+BAA+B,QAAQ,qBAAqB,CAAC,CAAA;gBAErF,gCAAgC;gBAChC,MAAM,MAAM,GAAG,IAAI,sBAAe,CAAC;oBAC/B,UAAU,EAAK,IAAI,CAAC,MAAM,CAAC,MAAM;oBACjC,OAAO,EAAQ,eAAe;oBAC9B,QAAQ,EAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACnD,SAAS,EAAM,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC;oBAC5C,aAAa,EAAE,uBAAgB,CAAC,mBAAmB;oBACnD,KAAK,EAAU,cAAO,CAAC,cAAc;oBACrC,YAAY,EAAG,IAAI,CAAC,YAAY,EAAE;iBACrC,EAAE,WAAW,CAAC,CAAA;gBAEf,mBAAmB;gBACnB,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;qBACzD,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;qBACtB,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;YAC7C,CAAC;YACD,KAAK,CAAC,KAAK,CAAE,QAAQ;gBACjB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;gBACtB,QAAQ,EAAE,CAAA;YACd,CAAC;YACD,IAAI,CAAE,IAAY;gBACd,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG;oBACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;gBACxD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;gBAC9B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;oBACpB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,yCAAyC,GAAG,EAAE,CAAC,CAAA;oBACnE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACnB,CAAC,CAAC,CAAC,CAAA;YACP,CAAC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,KAAK;QACP,6CAA6C;QAC7C,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAC1B,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;YACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QACtB,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QACtB,CAAC;IACL,CAAC;;AAzSL,wCA0SC"}
@@ -0,0 +1,39 @@
1
+ import SpeechFlowNode from "./speechflow-node";
2
+ export default class SpeechFlowNodeXIOWebRTC extends SpeechFlowNode {
3
+ static name: string;
4
+ private peerConnections;
5
+ private httpServer;
6
+ private chunkQueue;
7
+ private opusEncoder;
8
+ private opusDecoder;
9
+ private pcmBuffer;
10
+ private rtpSequence;
11
+ private rtpTimestamp;
12
+ private rtpSSRC;
13
+ private maxConnections;
14
+ private readonly OPUS_SAMPLE_RATE;
15
+ private readonly OPUS_CHANNELS;
16
+ private readonly OPUS_BIT_DEPTH;
17
+ private readonly OPUS_FRAME_SIZE;
18
+ private readonly OPUS_FRAME_BYTES;
19
+ constructor(id: string, cfg: {
20
+ [id: string]: any;
21
+ }, opts: {
22
+ [id: string]: any;
23
+ }, args: any[]);
24
+ private parseAddress;
25
+ private readRequestBody;
26
+ private decodeOpusToChunk;
27
+ private bufferAndEncode;
28
+ private sendOpusToAllViewers;
29
+ private parseIceServers;
30
+ private createPeerConnection;
31
+ private closePeerConnection;
32
+ private performSDPNegotiation;
33
+ private handleWHIP;
34
+ private handleWHEP;
35
+ private handleDELETE;
36
+ private cleanupConnection;
37
+ open(): Promise<void>;
38
+ close(): Promise<void>;
39
+ }