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
@@ -1,117 +0,0 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
8
- return (mod && mod.__esModule) ? mod : { "default": mod };
9
- };
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- /* standard dependencies */
12
- const node_stream_1 = __importDefault(require("node:stream"));
13
- /* internal dependencies */
14
- const speechflow_node_1 = __importDefault(require("./speechflow-node"));
15
- /* SpeechFlow node for muting in audio-to-audio passing */
16
- class SpeechFlowNodeMute extends speechflow_node_1.default {
17
- /* declare official node name */
18
- static name = "mute";
19
- /* internal state */
20
- muteMode = "none";
21
- destroyed = false;
22
- /* construct node */
23
- constructor(id, cfg, opts, args) {
24
- super(id, cfg, opts, args);
25
- /* declare node configuration parameters */
26
- this.configure({});
27
- /* declare node input/output format */
28
- this.input = "audio";
29
- this.output = "audio";
30
- }
31
- /* receive external request */
32
- async receiveRequest(params) {
33
- if (this.destroyed)
34
- throw new Error("mute: node already destroyed");
35
- try {
36
- if (params.length === 2 && params[0] === "mode") {
37
- if (!params[1].match(/^(?:none|silenced|unplugged)$/))
38
- throw new Error("mute: invalid mode argument in external request");
39
- const muteMode = params[1];
40
- this.setMuteMode(muteMode);
41
- this.sendResponse(["mute", "mode", muteMode]);
42
- }
43
- else
44
- throw new Error("mute: invalid arguments in external request");
45
- }
46
- catch (error) {
47
- this.log("error", `receive request error: ${error}`);
48
- throw error;
49
- }
50
- }
51
- /* change mute mode */
52
- setMuteMode(mode) {
53
- if (this.destroyed) {
54
- this.log("warning", "attempted to set mute mode on destroyed node");
55
- return;
56
- }
57
- this.log("info", `setting mute mode to "${mode}"`);
58
- this.muteMode = mode;
59
- }
60
- /* open node */
61
- async open() {
62
- /* clear destruction flag */
63
- this.destroyed = false;
64
- /* establish a transform stream */
65
- const self = this;
66
- this.stream = new node_stream_1.default.Transform({
67
- readableObjectMode: true,
68
- writableObjectMode: true,
69
- decodeStrings: false,
70
- transform(chunk, encoding, callback) {
71
- if (self.destroyed) {
72
- callback(new Error("stream already destroyed"));
73
- return;
74
- }
75
- if (!Buffer.isBuffer(chunk.payload))
76
- callback(new Error("invalid chunk payload type"));
77
- else if (self.muteMode === "unplugged")
78
- /* pass-through nothing */
79
- callback();
80
- else if (self.muteMode === "silenced") {
81
- /* pass-through a silenced chunk */
82
- const chunkSilenced = chunk.clone();
83
- chunkSilenced.meta.set("muted", true);
84
- const buffer = chunkSilenced.payload;
85
- buffer.fill(0);
86
- this.push(chunkSilenced);
87
- callback();
88
- }
89
- else {
90
- /* pass-through original chunk */
91
- this.push(chunk);
92
- callback();
93
- }
94
- },
95
- final(callback) {
96
- if (self.destroyed) {
97
- callback();
98
- return;
99
- }
100
- this.push(null);
101
- callback();
102
- }
103
- });
104
- }
105
- /* close node */
106
- async close() {
107
- /* indicate destruction */
108
- this.destroyed = true;
109
- /* close stream */
110
- if (this.stream !== null) {
111
- this.stream.destroy();
112
- this.stream = null;
113
- }
114
- }
115
- }
116
- exports.default = SpeechFlowNodeMute;
117
- //# sourceMappingURL=speechflow-node-a2a-mute.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"speechflow-node-a2a-mute.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-mute.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import SpeechFlowNode from "./speechflow-node";
2
- export default class SpeechFlowNodeVAD extends SpeechFlowNode {
3
- static name: string;
4
- private vad;
5
- private queue;
6
- private queueRecv;
7
- private queueVAD;
8
- private queueSend;
9
- private destroyed;
10
- private tailTimer;
11
- private activeEventListeners;
12
- constructor(id: string, cfg: {
13
- [id: string]: any;
14
- }, opts: {
15
- [id: string]: any;
16
- }, args: any[]);
17
- open(): Promise<void>;
18
- close(): Promise<void>;
19
- }
@@ -1,383 +0,0 @@
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 vad_node_realtime_1 = require("@ericedouard/vad-node-realtime");
48
- /* internal dependencies */
49
- const speechflow_node_1 = __importDefault(require("./speechflow-node"));
50
- const utils = __importStar(require("./speechflow-utils"));
51
- /* SpeechFlow node for VAD speech-to-speech processing */
52
- class SpeechFlowNodeVAD extends speechflow_node_1.default {
53
- /* declare official node name */
54
- static name = "vad";
55
- /* internal state */
56
- vad = null;
57
- queue = new utils.Queue();
58
- queueRecv = this.queue.pointerUse("recv");
59
- queueVAD = this.queue.pointerUse("vad");
60
- queueSend = this.queue.pointerUse("send");
61
- destroyed = false;
62
- tailTimer = null;
63
- activeEventListeners = new Set();
64
- /* construct node */
65
- constructor(id, cfg, opts, args) {
66
- super(id, cfg, opts, args);
67
- /* declare node configuration parameters */
68
- this.configure({
69
- mode: { type: "string", val: "silenced", match: /^(?:silenced|unplugged)$/ },
70
- posSpeechThreshold: { type: "number", val: 0.50 },
71
- negSpeechThreshold: { type: "number", val: 0.35 },
72
- minSpeechFrames: { type: "number", val: 2 },
73
- redemptionFrames: { type: "number", val: 12 },
74
- preSpeechPadFrames: { type: "number", val: 1 },
75
- postSpeechTail: { type: "number", val: 1500 }
76
- });
77
- /* declare node input/output format */
78
- this.input = "audio";
79
- this.output = "audio";
80
- }
81
- /* open node */
82
- async open() {
83
- /* sanity check situation */
84
- if (this.config.audioBitDepth !== 16 || !this.config.audioLittleEndian)
85
- throw new Error("VAD node currently supports PCM-S16LE audio only");
86
- /* clear destruction flag */
87
- this.destroyed = false;
88
- /* internal processing constants */
89
- const vadSampleRateTarget = 16000; /* internal target of VAD */
90
- const vadSamplesPerFrame = 512; /* required for VAD v5 */
91
- /* establish Voice Activity Detection (VAD) facility */
92
- let tail = false;
93
- try {
94
- this.vad = await vad_node_realtime_1.RealTimeVAD.new({
95
- model: "v5",
96
- sampleRate: this.config.audioSampleRate, /* before resampling to 16KHz */
97
- frameSamples: vadSamplesPerFrame, /* after resampling to 16KHz */
98
- positiveSpeechThreshold: this.params.posSpeechThreshold,
99
- negativeSpeechThreshold: this.params.negSpeechThreshold,
100
- minSpeechFrames: this.params.minSpeechFrames,
101
- redemptionFrames: this.params.redemptionFrames,
102
- preSpeechPadFrames: this.params.preSpeechPadFrames,
103
- onSpeechStart: () => {
104
- if (this.destroyed)
105
- return;
106
- this.log("info", "VAD: speech start");
107
- if (this.params.mode === "unplugged") {
108
- tail = false;
109
- if (this.tailTimer !== null) {
110
- clearTimeout(this.tailTimer);
111
- this.tailTimer = null;
112
- }
113
- }
114
- },
115
- onSpeechEnd: (audio) => {
116
- if (this.destroyed)
117
- return;
118
- const duration = utils.audioArrayDuration(audio, vadSampleRateTarget);
119
- this.log("info", `VAD: speech end (duration: ${duration.toFixed(2)}s)`);
120
- if (this.params.mode === "unplugged") {
121
- tail = true;
122
- if (this.tailTimer !== null) {
123
- clearTimeout(this.tailTimer);
124
- this.tailTimer = null;
125
- }
126
- this.tailTimer = setTimeout(() => {
127
- if (this.destroyed || this.tailTimer === null)
128
- return;
129
- tail = false;
130
- this.tailTimer = null;
131
- }, this.params.postSpeechTail);
132
- }
133
- },
134
- onVADMisfire: () => {
135
- if (this.destroyed)
136
- return;
137
- this.log("info", "VAD: speech end (segment too short)");
138
- if (this.params.mode === "unplugged") {
139
- tail = true;
140
- if (this.tailTimer !== null) {
141
- clearTimeout(this.tailTimer);
142
- this.tailTimer = null;
143
- }
144
- this.tailTimer = setTimeout(() => {
145
- if (this.destroyed || this.tailTimer === null)
146
- return;
147
- tail = false;
148
- this.tailTimer = null;
149
- }, this.params.postSpeechTail);
150
- }
151
- },
152
- onFrameProcessed: (audio) => {
153
- if (this.destroyed)
154
- return;
155
- try {
156
- /* annotate the current audio segment */
157
- const element = this.queueVAD.peek();
158
- if (element === undefined || element.type !== "audio-frame")
159
- throw new Error("internal error which cannot happen: no more queued element");
160
- if (element.segmentIdx >= element.segmentData.length)
161
- throw new Error("segment index out of bounds");
162
- const segment = element.segmentData[element.segmentIdx++];
163
- segment.isSpeech = (audio.isSpeech > audio.notSpeech) || tail;
164
- /* annotate the entire audio chunk */
165
- if (element.segmentIdx >= element.segmentData.length) {
166
- let isSpeech = false;
167
- for (const segment of element.segmentData) {
168
- if (segment.isSpeech) {
169
- isSpeech = true;
170
- break;
171
- }
172
- }
173
- element.isSpeech = isSpeech;
174
- this.queueVAD.touch();
175
- this.queueVAD.walk(+1);
176
- }
177
- }
178
- catch (error) {
179
- this.log("error", `VAD frame processing error: ${error}`);
180
- }
181
- }
182
- });
183
- this.vad.start();
184
- }
185
- catch (error) {
186
- throw new Error(`failed to initialize VAD: ${error}`);
187
- }
188
- /* provide Duplex stream and internally attach to VAD */
189
- const self = this;
190
- this.stream = new node_stream_1.default.Duplex({
191
- writableObjectMode: true,
192
- readableObjectMode: true,
193
- decodeStrings: false,
194
- highWaterMark: 1,
195
- /* receive audio chunk (writable side of stream) */
196
- write(chunk, encoding, callback) {
197
- if (self.destroyed) {
198
- callback(new Error("stream already destroyed"));
199
- return;
200
- }
201
- if (!Buffer.isBuffer(chunk.payload))
202
- callback(new Error("expected audio input as Buffer chunks"));
203
- else if (chunk.payload.byteLength === 0)
204
- callback();
205
- else {
206
- try {
207
- /* convert audio samples from PCM/I16 to PCM/F32 */
208
- const data = utils.convertBufToF32(chunk.payload, self.config.audioLittleEndian);
209
- /* segment audio samples as individual VAD-sized frames */
210
- const segmentData = [];
211
- const chunkSize = vadSamplesPerFrame *
212
- (self.config.audioSampleRate / vadSampleRateTarget);
213
- const chunks = Math.trunc(data.length / chunkSize);
214
- for (let i = 0; i < chunks; i++) {
215
- const frame = data.slice(i * chunkSize, (i + 1) * chunkSize);
216
- const segment = { data: frame };
217
- segmentData.push(segment);
218
- }
219
- if ((chunks * chunkSize) < data.length) {
220
- const frame = new Float32Array(chunkSize);
221
- frame.fill(0);
222
- frame.set(data.slice(chunks * chunkSize, data.length));
223
- const segment = { data: frame };
224
- segmentData.push(segment);
225
- }
226
- /* queue the results */
227
- self.queueRecv.append({
228
- type: "audio-frame", chunk,
229
- segmentIdx: 0, segmentData
230
- });
231
- /* push segments through Voice Activity Detection (VAD) */
232
- if (self.vad && !self.destroyed) {
233
- try {
234
- for (const segment of segmentData)
235
- self.vad.processAudio(segment.data);
236
- }
237
- catch (error) {
238
- self.log("error", `VAD processAudio error: ${error}`);
239
- }
240
- }
241
- callback();
242
- }
243
- catch (error) {
244
- callback(error instanceof Error ? error : new Error("VAD processing failed"));
245
- }
246
- }
247
- },
248
- /* receive no more audio chunks (writable side of stream) */
249
- final(callback) {
250
- if (self.destroyed) {
251
- callback();
252
- return;
253
- }
254
- /* signal end of file */
255
- self.queueRecv.append({ type: "audio-eof" });
256
- callback();
257
- },
258
- /* send audio chunk(s) (readable side of stream) */
259
- read(_size) {
260
- if (self.destroyed) {
261
- this.push(null);
262
- return;
263
- }
264
- /* try to perform read operation from scratch */
265
- const tryToRead = () => {
266
- if (self.destroyed) {
267
- this.push(null);
268
- return;
269
- }
270
- /* flush pending audio chunks */
271
- const flushPendingChunks = () => {
272
- let pushed = 0;
273
- while (true) {
274
- if (self.destroyed) {
275
- this.push(null);
276
- return;
277
- }
278
- const element = self.queueSend.peek();
279
- if (element === undefined)
280
- break;
281
- else if (element.type === "audio-eof") {
282
- this.push(null);
283
- break;
284
- }
285
- else if (element.type === "audio-frame"
286
- && element.isSpeech === undefined)
287
- break;
288
- self.queueSend.walk(+1);
289
- self.queue.trim();
290
- if (element.isSpeech) {
291
- this.push(element.chunk);
292
- pushed++;
293
- }
294
- else if (self.params.mode === "silenced") {
295
- const chunk = element.chunk.clone();
296
- const buffer = chunk.payload;
297
- buffer.fill(0);
298
- this.push(chunk);
299
- pushed++;
300
- }
301
- else if (self.params.mode === "unplugged" && pushed === 0) {
302
- /* we have to await chunks now, as in unplugged
303
- mode we else would be never called again until
304
- we at least once push a new chunk as the result */
305
- setTimeout(() => {
306
- if (self.destroyed)
307
- return;
308
- tryToRead();
309
- }, 0);
310
- return;
311
- }
312
- }
313
- };
314
- /* await forthcoming audio chunks */
315
- const awaitForthcomingChunks = () => {
316
- if (self.destroyed)
317
- return;
318
- const element = self.queueSend.peek();
319
- if (element !== undefined
320
- && element.type === "audio-frame"
321
- && element.isSpeech !== undefined)
322
- flushPendingChunks();
323
- else if (!self.destroyed) {
324
- self.queue.once("write", awaitForthcomingChunks);
325
- self.activeEventListeners.add(awaitForthcomingChunks);
326
- }
327
- };
328
- const element = self.queueSend.peek();
329
- if (element !== undefined && element.type === "audio-eof")
330
- this.push(null);
331
- else if (element !== undefined
332
- && element.type === "audio-frame"
333
- && element.isSpeech !== undefined)
334
- flushPendingChunks();
335
- else if (!self.destroyed) {
336
- self.queue.once("write", awaitForthcomingChunks);
337
- self.activeEventListeners.add(awaitForthcomingChunks);
338
- }
339
- };
340
- tryToRead();
341
- }
342
- });
343
- }
344
- /* close node */
345
- async close() {
346
- /* indicate destruction */
347
- this.destroyed = true;
348
- /* cleanup tail timer */
349
- if (this.tailTimer !== null) {
350
- clearTimeout(this.tailTimer);
351
- this.tailTimer = null;
352
- }
353
- /* remove all event listeners */
354
- this.activeEventListeners.forEach((listener) => {
355
- this.queue.removeListener("write", listener);
356
- });
357
- this.activeEventListeners.clear();
358
- /* close stream */
359
- if (this.stream !== null) {
360
- this.stream.destroy();
361
- this.stream = null;
362
- }
363
- /* cleanup queue pointers before closing VAD to prevent callback access */
364
- this.queue.pointerDelete("recv");
365
- this.queue.pointerDelete("vad");
366
- this.queue.pointerDelete("send");
367
- /* close VAD */
368
- if (this.vad !== null) {
369
- try {
370
- const flushPromise = this.vad.flush();
371
- const timeoutPromise = new Promise((resolve) => setTimeout(resolve, 5000));
372
- await Promise.race([flushPromise, timeoutPromise]);
373
- }
374
- catch (error) {
375
- this.log("warning", `VAD flush error during close: ${error}`);
376
- }
377
- this.vad.destroy();
378
- this.vad = null;
379
- }
380
- }
381
- }
382
- exports.default = SpeechFlowNodeVAD;
383
- //# sourceMappingURL=speechflow-node-a2a-vad.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"speechflow-node-a2a-vad.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-vad.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import SpeechFlowNode from "./speechflow-node";
2
- export default class SpeechFlowNodeWAV extends SpeechFlowNode {
3
- static name: string;
4
- constructor(id: string, cfg: {
5
- [id: string]: any;
6
- }, opts: {
7
- [id: string]: any;
8
- }, args: any[]);
9
- open(): Promise<void>;
10
- close(): Promise<void>;
11
- }