speechflow 1.6.5 → 1.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +23 -0
- package/etc/stx.conf +5 -0
- package/package.json +4 -4
- package/speechflow-cli/dst/speechflow-main-cli.js +2 -2
- package/speechflow-cli/dst/speechflow-main-cli.js.map +1 -1
- package/speechflow-cli/dst/speechflow-main-graph.js +4 -3
- package/speechflow-cli/dst/speechflow-main-graph.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-compressor.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-compressor.js +12 -11
- package/speechflow-cli/dst/speechflow-node-a2a-compressor.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-expander.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-expander.js +12 -11
- package/speechflow-cli/dst/speechflow-node-a2a-expander.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-ffmpeg.js +2 -8
- package/speechflow-cli/dst/speechflow-node-a2a-ffmpeg.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-filler.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-filler.js +18 -16
- package/speechflow-cli/dst/speechflow-node-a2a-filler.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-gain.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-gain.js +8 -8
- package/speechflow-cli/dst/speechflow-node-a2a-gain.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-gender.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-gender.js +38 -34
- package/speechflow-cli/dst/speechflow-node-a2a-gender.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-meter.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-meter.js +11 -11
- package/speechflow-cli/dst/speechflow-node-a2a-meter.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-mute.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-mute.js +44 -10
- package/speechflow-cli/dst/speechflow-node-a2a-mute.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-pitch.d.ts +13 -0
- package/speechflow-cli/dst/speechflow-node-a2a-pitch.js +213 -0
- package/speechflow-cli/dst/speechflow-node-a2a-pitch.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-a2a-rnnoise.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-rnnoise.js +12 -11
- package/speechflow-cli/dst/speechflow-node-a2a-rnnoise.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-speex.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-speex.js +13 -12
- package/speechflow-cli/dst/speechflow-node-a2a-speex.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-vad.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-vad.js +24 -23
- package/speechflow-cli/dst/speechflow-node-a2a-vad.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-wav.js +35 -7
- package/speechflow-cli/dst/speechflow-node-a2a-wav.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2t-amazon.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2t-amazon.js +16 -16
- package/speechflow-cli/dst/speechflow-node-a2t-amazon.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2t-deepgram.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2t-deepgram.js +16 -16
- package/speechflow-cli/dst/speechflow-node-a2t-deepgram.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2t-openai.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-a2t-openai.js +15 -15
- package/speechflow-cli/dst/speechflow-node-a2t-openai.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-amazon.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-amazon.js +9 -9
- package/speechflow-cli/dst/speechflow-node-t2a-amazon.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.js +13 -12
- package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-kokoro.js +4 -4
- package/speechflow-cli/dst/speechflow-node-t2a-kokoro.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-amazon.js +3 -3
- package/speechflow-cli/dst/speechflow-node-t2t-amazon.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-deepl.js +2 -2
- package/speechflow-cli/dst/speechflow-node-t2t-deepl.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-format.js +36 -2
- package/speechflow-cli/dst/speechflow-node-t2t-format.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-google.js +2 -2
- package/speechflow-cli/dst/speechflow-node-t2t-google.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-modify.js +5 -5
- package/speechflow-cli/dst/speechflow-node-t2t-modify.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-ollama.js +2 -2
- package/speechflow-cli/dst/speechflow-node-t2t-ollama.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-openai.js +2 -2
- package/speechflow-cli/dst/speechflow-node-t2t-openai.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-sentence.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-sentence.js +13 -13
- package/speechflow-cli/dst/speechflow-node-t2t-sentence.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js +2 -2
- package/speechflow-cli/dst/speechflow-node-t2t-subtitle.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2t-transformers.js +2 -2
- package/speechflow-cli/dst/speechflow-node-t2t-transformers.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-x2x-filter.js +2 -2
- package/speechflow-cli/dst/speechflow-node-x2x-filter.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-x2x-trace.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-node-x2x-trace.js +42 -8
- package/speechflow-cli/dst/speechflow-node-x2x-trace.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-xio-device.js +3 -2
- package/speechflow-cli/dst/speechflow-node-xio-device.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-xio-file.js +19 -18
- package/speechflow-cli/dst/speechflow-node-xio-file.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-xio-mqtt.js +13 -13
- package/speechflow-cli/dst/speechflow-node-xio-mqtt.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-xio-websocket.js +8 -8
- package/speechflow-cli/dst/speechflow-node-xio-websocket.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node.js +7 -7
- package/speechflow-cli/dst/speechflow-node.js.map +1 -1
- package/speechflow-cli/dst/speechflow-util-audio.js +2 -2
- package/speechflow-cli/dst/speechflow-util-audio.js.map +1 -1
- package/speechflow-cli/dst/speechflow-util-stream.d.ts +1 -0
- package/speechflow-cli/dst/speechflow-util-stream.js +22 -2
- package/speechflow-cli/dst/speechflow-util-stream.js.map +1 -1
- package/speechflow-cli/etc/oxlint.jsonc +2 -1
- package/speechflow-cli/etc/tsconfig.json +1 -0
- package/speechflow-cli/package.json +21 -21
- package/speechflow-cli/src/speechflow-main-cli.ts +2 -2
- package/speechflow-cli/src/speechflow-main-graph.ts +4 -3
- package/speechflow-cli/src/speechflow-node-a2a-compressor.ts +13 -12
- package/speechflow-cli/src/speechflow-node-a2a-expander.ts +13 -12
- package/speechflow-cli/src/speechflow-node-a2a-ffmpeg.ts +2 -8
- package/speechflow-cli/src/speechflow-node-a2a-filler.ts +19 -17
- package/speechflow-cli/src/speechflow-node-a2a-gain.ts +8 -8
- package/speechflow-cli/src/speechflow-node-a2a-gender.ts +42 -36
- package/speechflow-cli/src/speechflow-node-a2a-meter.ts +11 -11
- package/speechflow-cli/src/speechflow-node-a2a-mute.ts +11 -10
- package/speechflow-cli/src/speechflow-node-a2a-pitch.ts +221 -0
- package/speechflow-cli/src/speechflow-node-a2a-rnnoise.ts +13 -12
- package/speechflow-cli/src/speechflow-node-a2a-speex.ts +14 -13
- package/speechflow-cli/src/speechflow-node-a2a-vad.ts +24 -23
- package/speechflow-cli/src/speechflow-node-a2a-wav.ts +2 -7
- package/speechflow-cli/src/speechflow-node-a2t-amazon.ts +16 -16
- package/speechflow-cli/src/speechflow-node-a2t-deepgram.ts +16 -16
- package/speechflow-cli/src/speechflow-node-a2t-openai.ts +15 -15
- package/speechflow-cli/src/speechflow-node-t2a-amazon.ts +9 -9
- package/speechflow-cli/src/speechflow-node-t2a-elevenlabs.ts +13 -12
- package/speechflow-cli/src/speechflow-node-t2a-kokoro.ts +4 -4
- package/speechflow-cli/src/speechflow-node-t2t-amazon.ts +3 -3
- package/speechflow-cli/src/speechflow-node-t2t-deepl.ts +2 -2
- package/speechflow-cli/src/speechflow-node-t2t-format.ts +3 -2
- package/speechflow-cli/src/speechflow-node-t2t-google.ts +2 -2
- package/speechflow-cli/src/speechflow-node-t2t-modify.ts +6 -6
- package/speechflow-cli/src/speechflow-node-t2t-ollama.ts +2 -2
- package/speechflow-cli/src/speechflow-node-t2t-openai.ts +2 -2
- package/speechflow-cli/src/speechflow-node-t2t-sentence.ts +13 -13
- package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +2 -2
- package/speechflow-cli/src/speechflow-node-t2t-transformers.ts +2 -2
- package/speechflow-cli/src/speechflow-node-x2x-filter.ts +2 -2
- package/speechflow-cli/src/speechflow-node-x2x-trace.ts +10 -9
- package/speechflow-cli/src/speechflow-node-xio-device.ts +4 -3
- package/speechflow-cli/src/speechflow-node-xio-file.ts +20 -19
- package/speechflow-cli/src/speechflow-node-xio-mqtt.ts +14 -14
- package/speechflow-cli/src/speechflow-node-xio-websocket.ts +10 -10
- package/speechflow-cli/src/speechflow-node.ts +7 -7
- package/speechflow-cli/src/speechflow-util-audio.ts +2 -2
- package/speechflow-cli/src/speechflow-util-stream.ts +30 -5
- package/speechflow-ui-db/dst/app-font-fa-brands-400.woff2 +0 -0
- package/speechflow-ui-db/dst/app-font-fa-regular-400.woff2 +0 -0
- package/speechflow-ui-db/dst/app-font-fa-solid-900.woff2 +0 -0
- package/speechflow-ui-db/dst/app-font-fa-v4compatibility.woff2 +0 -0
- package/speechflow-ui-db/dst/index.css +1 -1
- package/speechflow-ui-db/dst/index.js +28 -25
- package/speechflow-ui-db/package.json +14 -14
- package/speechflow-ui-st/dst/app-font-fa-brands-400.woff2 +0 -0
- package/speechflow-ui-st/dst/app-font-fa-regular-400.woff2 +0 -0
- package/speechflow-ui-st/dst/app-font-fa-solid-900.woff2 +0 -0
- package/speechflow-ui-st/dst/app-font-fa-v4compatibility.woff2 +0 -0
- package/speechflow-ui-st/dst/index.css +1 -1
- package/speechflow-ui-st/dst/index.js +137 -51
- package/speechflow-ui-st/package.json +15 -15
|
@@ -76,14 +76,14 @@ class AudioFiller extends node_events_1.EventEmitter {
|
|
|
76
76
|
return luxon_1.Duration.fromObject({ seconds });
|
|
77
77
|
}
|
|
78
78
|
/* emit a chunk of silence */
|
|
79
|
-
emitSilence(fromSamples, toSamples) {
|
|
79
|
+
emitSilence(fromSamples, toSamples, meta) {
|
|
80
80
|
const frames = Math.max(0, Math.floor(toSamples - fromSamples));
|
|
81
81
|
if (frames <= 0)
|
|
82
82
|
return;
|
|
83
83
|
const payload = Buffer.alloc(frames * this.bytesPerFrame); /* already zeroed */
|
|
84
84
|
const timestampStart = this.durationFromSamples(fromSamples);
|
|
85
85
|
const timestampEnd = this.durationFromSamples(toSamples);
|
|
86
|
-
const chunk = new speechflow_node_1.SpeechFlowChunk(timestampStart, timestampEnd, "final", "audio", payload);
|
|
86
|
+
const chunk = new speechflow_node_1.SpeechFlowChunk(timestampStart, timestampEnd, "final", "audio", payload, meta ? new Map(meta) : undefined);
|
|
87
87
|
this.emit("chunk", chunk);
|
|
88
88
|
}
|
|
89
89
|
/* add a chunk of audio for processing */
|
|
@@ -94,7 +94,7 @@ class AudioFiller extends node_events_1.EventEmitter {
|
|
|
94
94
|
throw new Error("invalid timestamps");
|
|
95
95
|
/* if chunk starts beyond what we've emitted, insert silence for the gap */
|
|
96
96
|
if (startSamp > this.emittedEndSamples + this.sampleTolerance) {
|
|
97
|
-
this.emitSilence(this.emittedEndSamples, startSamp);
|
|
97
|
+
this.emitSilence(this.emittedEndSamples, startSamp, chunk.meta);
|
|
98
98
|
this.emittedEndSamples = startSamp;
|
|
99
99
|
}
|
|
100
100
|
/* if chunk ends before or at emitted end, we have it fully covered, so drop it */
|
|
@@ -118,7 +118,7 @@ class AudioFiller extends node_events_1.EventEmitter {
|
|
|
118
118
|
const outEndSamples = outStartSamples + Math.floor(payload.length / this.bytesPerFrame);
|
|
119
119
|
const timestampStart = this.durationFromSamples(outStartSamples);
|
|
120
120
|
const timestampEnd = this.durationFromSamples(outEndSamples);
|
|
121
|
-
const c = new speechflow_node_1.SpeechFlowChunk(timestampStart, timestampEnd, "final", "audio", payload);
|
|
121
|
+
const c = new speechflow_node_1.SpeechFlowChunk(timestampStart, timestampEnd, "final", "audio", payload, new Map(chunk.meta));
|
|
122
122
|
this.emit("chunk", c);
|
|
123
123
|
/* advance emitted cursor */
|
|
124
124
|
this.emittedEndSamples = Math.max(this.emittedEndSamples, outEndSamples);
|
|
@@ -129,7 +129,7 @@ class SpeechFlowNodeA2AFiller extends speechflow_node_1.default {
|
|
|
129
129
|
/* declare official node name */
|
|
130
130
|
static name = "a2a-filler";
|
|
131
131
|
/* internal state */
|
|
132
|
-
|
|
132
|
+
closing = false;
|
|
133
133
|
filler = null;
|
|
134
134
|
sendQueue = null;
|
|
135
135
|
/* construct node */
|
|
@@ -146,7 +146,7 @@ class SpeechFlowNodeA2AFiller extends speechflow_node_1.default {
|
|
|
146
146
|
/* open node */
|
|
147
147
|
async open() {
|
|
148
148
|
/* clear destruction flag */
|
|
149
|
-
this.
|
|
149
|
+
this.closing = false;
|
|
150
150
|
/* establish queues */
|
|
151
151
|
this.filler = new AudioFiller(this.config.audioSampleRate, this.config.audioChannels);
|
|
152
152
|
this.sendQueue = new util.AsyncQueue();
|
|
@@ -161,27 +161,29 @@ class SpeechFlowNodeA2AFiller extends speechflow_node_1.default {
|
|
|
161
161
|
writableObjectMode: true,
|
|
162
162
|
decodeStrings: false,
|
|
163
163
|
write(chunk, encoding, callback) {
|
|
164
|
-
if (self.
|
|
164
|
+
if (self.closing || self.filler === null)
|
|
165
165
|
callback(new Error("stream already destroyed"));
|
|
166
166
|
else if (!Buffer.isBuffer(chunk.payload))
|
|
167
167
|
callback(new Error("invalid chunk payload type"));
|
|
168
168
|
else {
|
|
169
169
|
try {
|
|
170
|
+
if (self.closing || self.filler === null)
|
|
171
|
+
throw new Error("stream already destroyed");
|
|
170
172
|
self.filler.add(chunk);
|
|
171
173
|
callback();
|
|
172
174
|
}
|
|
173
175
|
catch (error) {
|
|
174
|
-
callback(error);
|
|
176
|
+
callback(util.ensureError(error));
|
|
175
177
|
}
|
|
176
178
|
}
|
|
177
179
|
},
|
|
178
180
|
read(size) {
|
|
179
|
-
if (self.
|
|
181
|
+
if (self.closing || self.sendQueue === null) {
|
|
180
182
|
this.push(null);
|
|
181
183
|
return;
|
|
182
184
|
}
|
|
183
185
|
self.sendQueue.read().then((chunk) => {
|
|
184
|
-
if (self.
|
|
186
|
+
if (self.closing || self.sendQueue === null) {
|
|
185
187
|
this.push(null);
|
|
186
188
|
return;
|
|
187
189
|
}
|
|
@@ -194,12 +196,12 @@ class SpeechFlowNodeA2AFiller extends speechflow_node_1.default {
|
|
|
194
196
|
this.push(chunk);
|
|
195
197
|
}
|
|
196
198
|
}).catch((error) => {
|
|
197
|
-
if (!self.
|
|
199
|
+
if (!self.closing && self.sendQueue !== null)
|
|
198
200
|
self.log("error", `queue read error: ${util.ensureError(error).message}`);
|
|
199
201
|
});
|
|
200
202
|
},
|
|
201
203
|
final(callback) {
|
|
202
|
-
if (self.
|
|
204
|
+
if (self.closing) {
|
|
203
205
|
callback();
|
|
204
206
|
return;
|
|
205
207
|
}
|
|
@@ -210,8 +212,8 @@ class SpeechFlowNodeA2AFiller extends speechflow_node_1.default {
|
|
|
210
212
|
}
|
|
211
213
|
/* close node */
|
|
212
214
|
async close() {
|
|
213
|
-
/* indicate
|
|
214
|
-
this.
|
|
215
|
+
/* indicate closing */
|
|
216
|
+
this.closing = true;
|
|
215
217
|
/* destroy queues */
|
|
216
218
|
if (this.sendQueue !== null) {
|
|
217
219
|
this.sendQueue.destroy();
|
|
@@ -222,9 +224,9 @@ class SpeechFlowNodeA2AFiller extends speechflow_node_1.default {
|
|
|
222
224
|
this.filler.removeAllListeners();
|
|
223
225
|
this.filler = null;
|
|
224
226
|
}
|
|
225
|
-
/*
|
|
227
|
+
/* shutdown stream */
|
|
226
228
|
if (this.stream !== null) {
|
|
227
|
-
this.stream
|
|
229
|
+
await util.destroyStream(this.stream);
|
|
228
230
|
this.stream = null;
|
|
229
231
|
}
|
|
230
232
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"speechflow-node-a2a-filler.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-filler.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,6BAA6B;AAC7B,8DAA0C;AAC1C,6CAA0C;AAC1C,iCAAoC;AAEpC,6BAA6B;AAC7B,qEAAmE;AACnE,wDAAmE;AAEnE,MAAM,WAAY,SAAQ,0BAAY;IAMb;IAA4B;IALzC,iBAAiB,GAAG,CAAC,CAAA,CAAW,gDAAgD;IACvE,cAAc,GAAG,CAAC,CAAA,CAAK,aAAa;IACpC,aAAa,CAAQ;IACrB,eAAe,GAAG,GAAG,CAAA,CAAE,qDAAqD;IAE7F,YAAqB,aAAa,KAAK,EAAU,WAAW,CAAC;QACzD,KAAK,EAAE,CAAA;QADU,eAAU,GAAV,UAAU,CAAQ;QAAU,aAAQ,GAAR,QAAQ,CAAI;QAEzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAA;IAC5D,CAAC;IAIM,EAAE,CAAC,KAAa,EAAE,QAAkC;QACvD,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,8CAA8C;IACtC,mBAAmB,CAAC,QAAkB;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;QACtC,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAA;QACzC,OAAO,OAAO,CAAA;IAClB,CAAC;IAED,8CAA8C;IACtC,mBAAmB,CAAC,OAAe;QACvC,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAA;QACzC,OAAO,gBAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,+BAA+B;IACvB,WAAW,CAAE,WAAmB,EAAE,SAAiB;
|
|
1
|
+
{"version":3,"file":"speechflow-node-a2a-filler.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-filler.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,7 @@ class SpeechFlowNodeA2AGain extends speechflow_node_1.default {
|
|
|
51
51
|
/* declare official node name */
|
|
52
52
|
static name = "a2a-gain";
|
|
53
53
|
/* internal state */
|
|
54
|
-
|
|
54
|
+
closing = false;
|
|
55
55
|
/* construct node */
|
|
56
56
|
constructor(id, cfg, opts, args) {
|
|
57
57
|
super(id, cfg, opts, args);
|
|
@@ -66,7 +66,7 @@ class SpeechFlowNodeA2AGain extends speechflow_node_1.default {
|
|
|
66
66
|
/* open node */
|
|
67
67
|
async open() {
|
|
68
68
|
/* clear destruction flag */
|
|
69
|
-
this.
|
|
69
|
+
this.closing = false;
|
|
70
70
|
/* adjust gain */
|
|
71
71
|
const adjustGain = (chunk, db) => {
|
|
72
72
|
const dv = new DataView(chunk.payload.buffer, chunk.payload.byteOffset, chunk.payload.byteLength);
|
|
@@ -85,7 +85,7 @@ class SpeechFlowNodeA2AGain extends speechflow_node_1.default {
|
|
|
85
85
|
writableObjectMode: true,
|
|
86
86
|
decodeStrings: false,
|
|
87
87
|
transform(chunk, encoding, callback) {
|
|
88
|
-
if (self.
|
|
88
|
+
if (self.closing) {
|
|
89
89
|
callback(new Error("stream already destroyed"));
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
@@ -101,7 +101,7 @@ class SpeechFlowNodeA2AGain extends speechflow_node_1.default {
|
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
103
|
final(callback) {
|
|
104
|
-
if (self.
|
|
104
|
+
if (self.closing) {
|
|
105
105
|
callback();
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
@@ -112,11 +112,11 @@ class SpeechFlowNodeA2AGain extends speechflow_node_1.default {
|
|
|
112
112
|
}
|
|
113
113
|
/* close node */
|
|
114
114
|
async close() {
|
|
115
|
-
/* indicate
|
|
116
|
-
this.
|
|
117
|
-
/*
|
|
115
|
+
/* indicate closing */
|
|
116
|
+
this.closing = true;
|
|
117
|
+
/* shutdown stream */
|
|
118
118
|
if (this.stream !== null) {
|
|
119
|
-
this.stream
|
|
119
|
+
await util.destroyStream(this.stream);
|
|
120
120
|
this.stream = null;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"speechflow-node-a2a-gain.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-gain.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,6BAA6B;AAC7B,8DAAgC;AAEhC,6BAA6B;AAC7B,wEAAmE;AACnE,wDAAmE;AAEnE,qEAAqE;AACrE,MAAqB,qBAAsB,SAAQ,yBAAc;IAC7D,kCAAkC;IAC3B,MAAM,CAAC,IAAI,GAAG,UAAU,CAAA;IAE/B,sBAAsB;IACd,
|
|
1
|
+
{"version":3,"file":"speechflow-node-a2a-gain.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-gain.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
61
61
|
queueRecv = this.queue.pointerUse("recv");
|
|
62
62
|
queueAC = this.queue.pointerUse("ac");
|
|
63
63
|
queueSend = this.queue.pointerUse("send");
|
|
64
|
-
|
|
64
|
+
closing = false;
|
|
65
65
|
workingOffTimer = null;
|
|
66
66
|
progressInterval = null;
|
|
67
67
|
/* construct node */
|
|
@@ -83,14 +83,14 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
83
83
|
/* sanity check situation */
|
|
84
84
|
if (this.config.audioBitDepth !== 16 || !this.config.audioLittleEndian)
|
|
85
85
|
throw new Error("Gender node currently supports PCM-S16LE audio only");
|
|
86
|
-
/* clear
|
|
87
|
-
this.
|
|
86
|
+
/* clear destruction flag */
|
|
87
|
+
this.closing = false;
|
|
88
88
|
/* the used model */
|
|
89
89
|
const model = "Xenova/wav2vec2-large-xlsr-53-gender-recognition-librispeech";
|
|
90
90
|
/* track download progress when instantiating Transformers engine and model */
|
|
91
91
|
const progressState = new Map();
|
|
92
92
|
const progressCallback = (progress) => {
|
|
93
|
-
if (this.
|
|
93
|
+
if (this.closing)
|
|
94
94
|
return;
|
|
95
95
|
let artifact = model;
|
|
96
96
|
if (typeof progress.file === "string")
|
|
@@ -104,7 +104,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
104
104
|
progressState.set(artifact, percent);
|
|
105
105
|
};
|
|
106
106
|
this.progressInterval = setInterval(() => {
|
|
107
|
-
if (this.
|
|
107
|
+
if (this.closing)
|
|
108
108
|
return;
|
|
109
109
|
for (const [artifact, percent] of progressState) {
|
|
110
110
|
this.log("info", `downloaded ${percent.toFixed(2)}% of artifact "${artifact}"`);
|
|
@@ -140,9 +140,10 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
140
140
|
/* define sample rate required by model */
|
|
141
141
|
const sampleRateTarget = 16000;
|
|
142
142
|
/* classify a single large-enough concatenated audio frame */
|
|
143
|
+
let genderLast = "unknown";
|
|
143
144
|
const classify = async (data) => {
|
|
144
|
-
if (this.
|
|
145
|
-
throw new Error("classifier
|
|
145
|
+
if (this.closing || this.classifier === null)
|
|
146
|
+
throw new Error("classifier destroyed during operation");
|
|
146
147
|
/* check volume level and return "unknown" if too low
|
|
147
148
|
in order to avoid a wrong classificaton */
|
|
148
149
|
const audioData = {
|
|
@@ -154,7 +155,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
154
155
|
};
|
|
155
156
|
const rms = (0, audio_inspect_1.getRMS)(audioData, { asDB: true });
|
|
156
157
|
if (rms < this.params.volumeThreshold)
|
|
157
|
-
return
|
|
158
|
+
return genderLast;
|
|
158
159
|
/* classify audio */
|
|
159
160
|
const result = await Promise.race([
|
|
160
161
|
this.classifier(data),
|
|
@@ -169,21 +170,24 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
169
170
|
const female = c2 ? c2.score : 0.0;
|
|
170
171
|
const threshold = this.params.threshold;
|
|
171
172
|
const hysteresis = this.params.hysteresis;
|
|
173
|
+
let genderNow = genderLast;
|
|
172
174
|
if (male > threshold && male > female + hysteresis)
|
|
173
|
-
|
|
175
|
+
genderNow = "male";
|
|
174
176
|
else if (female > threshold && female > male + hysteresis)
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
177
|
+
genderNow = "female";
|
|
178
|
+
if (genderNow !== genderLast) {
|
|
179
|
+
this.log("info", `switching detected gender from <${genderLast}> to <${genderNow}>`);
|
|
180
|
+
genderLast = genderNow;
|
|
181
|
+
}
|
|
182
|
+
return genderNow;
|
|
178
183
|
};
|
|
179
184
|
/* work off queued audio frames */
|
|
180
185
|
const frameWindowDuration = this.params.window / 1000;
|
|
181
186
|
const frameWindowSamples = Math.floor(frameWindowDuration * sampleRateTarget);
|
|
182
|
-
let lastGender = "";
|
|
183
187
|
let workingOff = false;
|
|
184
188
|
const workOffQueue = async () => {
|
|
185
189
|
/* control working off round */
|
|
186
|
-
if (workingOff || this.
|
|
190
|
+
if (workingOff || this.closing)
|
|
187
191
|
return;
|
|
188
192
|
workingOff = true;
|
|
189
193
|
if (this.workingOffTimer !== null) {
|
|
@@ -199,7 +203,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
199
203
|
data.fill(0);
|
|
200
204
|
let samples = 0;
|
|
201
205
|
let pos = pos0;
|
|
202
|
-
while (pos < posL && samples < frameWindowSamples && !this.
|
|
206
|
+
while (pos < posL && samples < frameWindowSamples && !this.closing) {
|
|
203
207
|
const element = this.queueAC.peek(pos);
|
|
204
208
|
if (element === undefined || element.type !== "audio-frame")
|
|
205
209
|
break;
|
|
@@ -209,12 +213,12 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
209
213
|
}
|
|
210
214
|
pos++;
|
|
211
215
|
}
|
|
212
|
-
if (pos0 < pos && samples > frameWindowSamples * 0.75 && !this.
|
|
216
|
+
if (pos0 < pos && samples > frameWindowSamples * 0.75 && !this.closing) {
|
|
213
217
|
const gender = await classify(data);
|
|
214
|
-
if (this.
|
|
218
|
+
if (this.closing)
|
|
215
219
|
return;
|
|
216
220
|
const posM = pos0 + Math.trunc((pos - pos0) * 0.25);
|
|
217
|
-
while (pos0 < posM && pos0 < posL && !this.
|
|
221
|
+
while (pos0 < posM && pos0 < posL && !this.closing) {
|
|
218
222
|
const element = this.queueAC.peek(pos0);
|
|
219
223
|
if (element === undefined || element.type !== "audio-frame")
|
|
220
224
|
break;
|
|
@@ -223,10 +227,6 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
223
227
|
this.queueAC.walk(+1);
|
|
224
228
|
pos0++;
|
|
225
229
|
}
|
|
226
|
-
if (lastGender !== gender && !this.shutdown) {
|
|
227
|
-
this.log("info", `gender now recognized as <${gender}>`);
|
|
228
|
-
lastGender = gender;
|
|
229
|
-
}
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
232
|
catch (error) {
|
|
@@ -234,7 +234,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
234
234
|
}
|
|
235
235
|
/* re-initiate working off round */
|
|
236
236
|
workingOff = false;
|
|
237
|
-
if (!this.
|
|
237
|
+
if (!this.closing) {
|
|
238
238
|
this.workingOffTimer = setTimeout(workOffQueue, 100);
|
|
239
239
|
this.queue.once("write", workOffQueue);
|
|
240
240
|
}
|
|
@@ -249,7 +249,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
249
249
|
highWaterMark: 1,
|
|
250
250
|
/* receive audio chunk (writable side of stream) */
|
|
251
251
|
write(chunk, encoding, callback) {
|
|
252
|
-
if (self.
|
|
252
|
+
if (self.closing) {
|
|
253
253
|
callback(new Error("stream already destroyed"));
|
|
254
254
|
return;
|
|
255
255
|
}
|
|
@@ -270,13 +270,13 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
270
270
|
callback();
|
|
271
271
|
}
|
|
272
272
|
catch (error) {
|
|
273
|
-
callback(error
|
|
273
|
+
callback(util.ensureError(error, "audio processing failed"));
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
276
|
},
|
|
277
277
|
/* receive no more audio chunks (writable side of stream) */
|
|
278
278
|
final(callback) {
|
|
279
|
-
if (self.
|
|
279
|
+
if (self.closing) {
|
|
280
280
|
callback();
|
|
281
281
|
return;
|
|
282
282
|
}
|
|
@@ -288,7 +288,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
288
288
|
read(_size) {
|
|
289
289
|
/* flush pending audio chunks */
|
|
290
290
|
const flushPendingChunks = () => {
|
|
291
|
-
if (self.
|
|
291
|
+
if (self.closing) {
|
|
292
292
|
this.push(null);
|
|
293
293
|
return;
|
|
294
294
|
}
|
|
@@ -300,7 +300,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
300
300
|
&& element.type === "audio-frame"
|
|
301
301
|
&& element.gender !== undefined) {
|
|
302
302
|
while (true) {
|
|
303
|
-
if (self.
|
|
303
|
+
if (self.closing) {
|
|
304
304
|
this.push(null);
|
|
305
305
|
return;
|
|
306
306
|
}
|
|
@@ -315,14 +315,18 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
315
315
|
&& element.gender === undefined)
|
|
316
316
|
break;
|
|
317
317
|
const duration = util.audioArrayDuration(element.data);
|
|
318
|
-
|
|
318
|
+
const fmtTime = (t) => t.toFormat("hh:mm:ss.SSS");
|
|
319
|
+
const times = `start: ${fmtTime(element.chunk.timestampStart)}, ` +
|
|
320
|
+
`end: ${fmtTime(element.chunk.timestampEnd)}`;
|
|
321
|
+
self.log("debug", `send chunk (${times}, duration: ${duration.toFixed(3)}s) ` +
|
|
322
|
+
`with gender <${element.gender}>`);
|
|
319
323
|
element.chunk.meta.set("gender", element.gender);
|
|
320
324
|
this.push(element.chunk);
|
|
321
325
|
self.queueSend.walk(+1);
|
|
322
326
|
self.queue.trim();
|
|
323
327
|
}
|
|
324
328
|
}
|
|
325
|
-
else if (!self.
|
|
329
|
+
else if (!self.closing)
|
|
326
330
|
self.queue.once("write", flushPendingChunks);
|
|
327
331
|
};
|
|
328
332
|
flushPendingChunks();
|
|
@@ -331,8 +335,8 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
331
335
|
}
|
|
332
336
|
/* close node */
|
|
333
337
|
async close() {
|
|
334
|
-
/* indicate
|
|
335
|
-
this.
|
|
338
|
+
/* indicate closing */
|
|
339
|
+
this.closing = true;
|
|
336
340
|
/* cleanup working-off timer */
|
|
337
341
|
if (this.workingOffTimer !== null) {
|
|
338
342
|
clearTimeout(this.workingOffTimer);
|
|
@@ -345,9 +349,9 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
345
349
|
}
|
|
346
350
|
/* remove all event listeners */
|
|
347
351
|
this.queue.removeAllListeners("write");
|
|
348
|
-
/*
|
|
352
|
+
/* shutdown stream */
|
|
349
353
|
if (this.stream !== null) {
|
|
350
|
-
this.stream
|
|
354
|
+
await util.destroyStream(this.stream);
|
|
351
355
|
this.stream = null;
|
|
352
356
|
}
|
|
353
357
|
/* cleanup classifier */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"speechflow-node-a2a-gender.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-gender.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,6BAA6B;AAC7B,0DAA+B;AAC/B,8DAAiC;AAEjC,6BAA6B;AAC7B,wEAA6D;AAC7D,uCAA4C;AAC5C,iDAAiD;AAEjD,6BAA6B;AAC7B,wEAAmE;AACnE,wDAAmE;AAYnE,8CAA8C;AAC9C,MAAqB,uBAAwB,SAAQ,yBAAc;IAC/D,kCAAkC;IAC3B,MAAM,CAAC,IAAI,GAAG,YAAY,CAAA;IAEjC,sBAAsB;IACd,UAAU,GAAoD,IAAI,CAAA;IAClE,KAAK,GAAO,IAAI,IAAI,CAAC,KAAK,EAAqB,CAAA;IAC/C,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,OAAO,GAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACvC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,QAAQ,GAAI,KAAK,CAAA;IACjB,eAAe,GAA2C,IAAI,CAAA;IAC9D,gBAAgB,GAA0C,IAAI,CAAA;IAEtE,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,EAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAG;YACtD,SAAS,EAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;YACtD,UAAU,EAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;YACtD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAG;SACzD,CAAC,CAAA;QAEF,wCAAwC;QACxC,IAAI,CAAC,KAAK,GAAI,OAAO,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;IACzB,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,IAAI;QACN,8BAA8B;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAClE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;QAE1E,2BAA2B;QAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,sBAAsB;QACtB,MAAM,KAAK,GAAG,8DAA8D,CAAA;QAE5E,gFAAgF;QAChF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;QAC/C,MAAM,gBAAgB,GAAkC,CAAC,QAAa,EAAE,EAAE;YACtE,IAAI,IAAI,CAAC,QAAQ;gBACb,OAAM;YACV,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;gBACjC,QAAQ,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAA;YACnC,IAAI,OAAO,GAAG,CAAC,CAAA;YACf,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;gBACzE,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;iBACjD,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ;gBAC1C,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAA;YAC/B,IAAI,OAAO,GAAG,CAAC;gBACX,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC5C,CAAC,CAAA;QACD,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,IAAI,CAAC,QAAQ;gBACb,OAAM;YACV,KAAK,MAAM,CAAE,QAAQ,EAAE,OAAO,CAAE,IAAI,aAAa,EAAE,CAAC;gBAChD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,QAAQ,GAAG,CAAC,CAAA;gBAC/E,IAAI,OAAO,IAAI,KAAK;oBAChB,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACtC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,CAAA;QACR,IAAI,CAAC;YACD,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,EAAE;gBACzE,SAAS,EAAE,mBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBACpD,KAAK,EAAM,IAAI;gBACf,MAAM,EAAK,MAAM;gBACjB,iBAAiB,EAAE,gBAAgB;aACtC,CAAC,CAAA;YACF,IAAI,CAAC,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjC,eAAe;gBACf,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,EAAE,8BAA8B,CAAC;aACjE,CAA6C,CAAA;QAClD,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;gBACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAChC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3F,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YACxB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAEhE,4CAA4C;QAC5C,MAAM,gBAAgB,GAAG,KAAK,CAAA;QAE9B,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAkB,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;gBACzC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;YAE3D;2DAC+C;YAC/C,MAAM,SAAS,GAAG;gBACd,UAAU,EAAQ,gBAAgB;gBAClC,gBAAgB,EAAE,CAAC;gBACnB,WAAW,EAAO,CAAE,IAAI,CAAE;gBAC1B,QAAQ,EAAU,IAAI,CAAC,MAAM,GAAG,gBAAgB;gBAChD,MAAM,EAAY,IAAI,CAAC,MAAM;aACZ,CAAA;YACrB,MAAM,GAAG,GAAG,IAAA,sBAAM,EAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7C,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe;gBACjC,OAAO,SAAS,CAAA;YAEpB,sBAAsB;YACtB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACrB,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,EAAE,wBAAwB,CAAC;aAC3D,CAAsF,CAAA;YACvF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtC,MAAgD,CAAC,CAAC;gBAClD,CAAE,MAAM,CAAE,CAAA;YACd,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAA;YACrD,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAA;YACvD,MAAM,IAAI,GAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;YAClC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;YAClC,MAAM,SAAS,GAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA;YACzC,IAAI,IAAI,GAAG,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,UAAU;gBAC9C,OAAO,MAAM,CAAA;iBACZ,IAAI,MAAM,GAAG,SAAS,IAAI,MAAM,GAAG,IAAI,GAAG,UAAU;gBACrD,OAAO,QAAQ,CAAA;;gBAEf,OAAO,SAAS,CAAA;QACxB,CAAC,CAAA;QAED,oCAAoC;QACpC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAA;QACrD,MAAM,kBAAkB,GAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAA;QAC9E,IAAI,UAAU,GAAG,EAAE,CAAA;QACnB,IAAI,UAAU,GAAG,KAAK,CAAA;QACtB,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;YAC5B,iCAAiC;YACjC,IAAI,UAAU,IAAI,IAAI,CAAC,QAAQ;gBAC3B,OAAM;YACV,UAAU,GAAG,IAAI,CAAA;YACjB,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBAChC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;YAC/B,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;YAErC,yBAAyB;YACzB,IAAI,CAAC;gBACD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;gBACvC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAA;gBACjD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACZ,IAAI,OAAO,GAAG,CAAC,CAAA;gBACf,IAAI,GAAG,GAAG,IAAI,CAAA;gBACd,OAAO,GAAG,GAAG,IAAI,IAAI,OAAO,GAAG,kBAAkB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACtC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa;wBACvD,MAAK;oBACT,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;wBACvD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;wBAC/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;oBAClC,CAAC;oBACD,GAAG,EAAE,CAAA;gBACT,CAAC;gBACD,IAAI,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,kBAAkB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACtE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;oBACnC,IAAI,IAAI,CAAC,QAAQ;wBACb,OAAM;oBACV,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;oBACnD,OAAO,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACvC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa;4BACvD,MAAK;wBACT,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;wBACvB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;wBACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;wBACrB,IAAI,EAAE,CAAA;oBACV,CAAC;oBACD,IAAI,UAAU,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,6BAA6B,MAAM,GAAG,CAAC,CAAA;wBACxD,UAAU,GAAG,MAAM,CAAA;oBACvB,CAAC;gBACL,CAAC;YACL,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gCAAgC,KAAK,EAAE,CAAC,CAAA;YAC9D,CAAC;YAED,qCAAqC;YACrC,UAAU,GAAG,KAAK,CAAA;YAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;gBACpD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;YAC1C,CAAC;QACL,CAAC,CAAA;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QAEtC,iEAAiE;QACjE,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,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;YAErB,qDAAqD;YACrD,KAAK,CAAE,KAAsB,EAAE,QAAQ,EAAE,QAAQ;gBAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,QAAQ,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;oBAC/C,OAAM;gBACV,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC/B,QAAQ,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAA;qBAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC;oBACnC,QAAQ,EAAE,CAAA;qBACT,CAAC;oBACF,IAAI,CAAC;wBACD,iEAAiE;wBACjE,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;wBAC7E,MAAM,GAAG,GAAG,IAAI,mBAAQ,EAAE,CAAA;wBAC1B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;wBACpF,GAAG,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;wBACvD,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAqC,CAAA;wBAE9E,sCAAsC;wBACtC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;wBAC3D,QAAQ,EAAE,CAAA;oBACd,CAAC;oBACD,OAAO,KAAK,EAAE,CAAC;wBACX,QAAQ,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAA;oBACnF,CAAC;gBACL,CAAC;YACL,CAAC;YAED,8DAA8D;YAC9D,KAAK,CAAE,QAAQ;gBACX,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,QAAQ,EAAE,CAAA;oBACV,OAAM;gBACV,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;gBAC5C,QAAQ,EAAE,CAAA;YACd,CAAC;YAED,qDAAqD;YACrD,IAAI,CAAE,KAAK;gBACP,kCAAkC;gBAClC,MAAM,kBAAkB,GAAG,GAAG,EAAE;oBAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACf,OAAM;oBACV,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;oBACrC,IAAI,OAAO,KAAK,SAAS;2BAClB,OAAO,CAAC,IAAI,KAAK,WAAW;wBAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;yBACd,IAAI,OAAO,KAAK,SAAS;2BACvB,OAAO,CAAC,IAAI,KAAK,aAAa;2BAC9B,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBAClC,OAAO,IAAI,EAAE,CAAC;4BACV,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gCAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gCACf,OAAM;4BACV,CAAC;4BACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;4BACrC,IAAI,OAAO,KAAK,SAAS;gCACrB,MAAK;iCACJ,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gCACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gCACf,MAAK;4BACT,CAAC;iCACI,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa;mCAChC,OAAO,CAAC,MAAM,KAAK,SAAS;gCAC/B,MAAK;4BACT,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;4BACtD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;4BACzF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;4BAChD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;4BACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;4BACvB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;wBACrB,CAAC;oBACL,CAAC;yBACI,IAAI,CAAC,IAAI,CAAC,QAAQ;wBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;gBACpD,CAAC,CAAA;gBACD,kBAAkB,EAAE,CAAA;YACxB,CAAC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,KAAK;QACP,yBAAyB;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,iCAAiC;QACjC,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAChC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC/B,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACjC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAChC,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAEtC,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QACtB,CAAC;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAA;gBAChD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;gBAC1E,MAAM,OAAO,CAAC,IAAI,CAAC,CAAE,cAAc,EAAE,cAAc,CAAE,CAAC,CAAA;YAC1D,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,oCAAoC,KAAK,EAAE,CAAC,CAAA;YACpE,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAC1B,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;;AAtVL,0CAuVC"}
|
|
1
|
+
{"version":3,"file":"speechflow-node-a2a-gender.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-gender.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,7 +57,7 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
57
57
|
calcInterval = null;
|
|
58
58
|
silenceTimer = null;
|
|
59
59
|
chunkBuffer = new Float32Array(0);
|
|
60
|
-
|
|
60
|
+
closing = false;
|
|
61
61
|
/* construct node */
|
|
62
62
|
constructor(id, cfg, opts, args) {
|
|
63
63
|
super(id, cfg, opts, args);
|
|
@@ -80,7 +80,7 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
80
80
|
if (this.config.audioBitDepth !== 16 || !this.config.audioLittleEndian)
|
|
81
81
|
throw new Error("meter node currently supports PCM-S16LE audio only");
|
|
82
82
|
/* clear destruction flag */
|
|
83
|
-
this.
|
|
83
|
+
this.closing = false;
|
|
84
84
|
/* internal state */
|
|
85
85
|
let lufsm = -60;
|
|
86
86
|
let rms = -60;
|
|
@@ -96,7 +96,7 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
96
96
|
/* setup chunking interval */
|
|
97
97
|
this.calcInterval = setInterval(() => {
|
|
98
98
|
/* short-circuit during destruction */
|
|
99
|
-
if (this.
|
|
99
|
+
if (this.closing)
|
|
100
100
|
return;
|
|
101
101
|
/* short-circuit if still not enough chunk data */
|
|
102
102
|
if (this.chunkBuffer.length < samplesPerChunk)
|
|
@@ -150,7 +150,7 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
150
150
|
}, chunkDuration * 1000);
|
|
151
151
|
/* setup loudness emitting interval */
|
|
152
152
|
this.emitInterval = setInterval(() => {
|
|
153
|
-
if (this.
|
|
153
|
+
if (this.closing)
|
|
154
154
|
return;
|
|
155
155
|
this.log("debug", `LUFS-M: ${lufsm.toFixed(1)} dB, RMS: ${rms.toFixed(1)} dB`);
|
|
156
156
|
this.sendResponse(["meter", "LUFS-M", lufsm]);
|
|
@@ -167,7 +167,7 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
167
167
|
highWaterMark: 1,
|
|
168
168
|
/* transform audio chunk */
|
|
169
169
|
transform(chunk, encoding, callback) {
|
|
170
|
-
if (self.
|
|
170
|
+
if (self.closing) {
|
|
171
171
|
callback(new Error("stream already destroyed"));
|
|
172
172
|
return;
|
|
173
173
|
}
|
|
@@ -191,12 +191,12 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
191
191
|
callback();
|
|
192
192
|
}
|
|
193
193
|
catch (error) {
|
|
194
|
-
callback(error
|
|
194
|
+
callback(util.ensureError(error, "meter processing failed"));
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
},
|
|
198
198
|
final(callback) {
|
|
199
|
-
if (self.
|
|
199
|
+
if (self.closing || self.params.mode === "sink") {
|
|
200
200
|
callback();
|
|
201
201
|
return;
|
|
202
202
|
}
|
|
@@ -207,8 +207,8 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
207
207
|
}
|
|
208
208
|
/* close node */
|
|
209
209
|
async close() {
|
|
210
|
-
/* indicate
|
|
211
|
-
this.
|
|
210
|
+
/* indicate closing immediately to stop any ongoing operations */
|
|
211
|
+
this.closing = true;
|
|
212
212
|
/* stop intervals */
|
|
213
213
|
if (this.emitInterval !== null) {
|
|
214
214
|
clearInterval(this.emitInterval);
|
|
@@ -222,9 +222,9 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
222
222
|
clearTimeout(this.silenceTimer);
|
|
223
223
|
this.silenceTimer = null;
|
|
224
224
|
}
|
|
225
|
-
/*
|
|
225
|
+
/* shutdown stream */
|
|
226
226
|
if (this.stream !== null) {
|
|
227
|
-
this.stream
|
|
227
|
+
await util.destroyStream(this.stream);
|
|
228
228
|
this.stream = null;
|
|
229
229
|
}
|
|
230
230
|
}
|