speechflow 1.6.4 → 1.6.6
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 +22 -0
- package/README.md +28 -3
- package/etc/speechflow.yaml +15 -13
- package/etc/stx.conf +5 -0
- package/package.json +5 -5
- package/speechflow-cli/dst/speechflow-main-api.js +3 -7
- package/speechflow-cli/dst/speechflow-main-api.js.map +1 -1
- package/speechflow-cli/dst/speechflow-main-graph.js +1 -1
- package/speechflow-cli/dst/speechflow-main.js +6 -0
- package/speechflow-cli/dst/speechflow-main.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-a2a-compressor-wt.js +1 -21
- package/speechflow-cli/dst/speechflow-node-a2a-compressor-wt.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-wt.js +1 -21
- package/speechflow-cli/dst/speechflow-node-a2a-expander-wt.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 +4 -10
- 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 +70 -60
- 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 +58 -42
- 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-pitch2-wt.js +149 -0
- package/speechflow-cli/dst/speechflow-node-a2a-pitch2-wt.js.map +1 -0
- package/speechflow-cli/dst/speechflow-node-a2a-pitch2.d.ts +13 -0
- package/speechflow-cli/dst/speechflow-node-a2a-pitch2.js +202 -0
- package/speechflow-cli/dst/speechflow-node-a2a-pitch2.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 +13 -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 +26 -25
- 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 -2
- package/speechflow-cli/dst/speechflow-node-a2t-openai.js +15 -21
- package/speechflow-cli/dst/speechflow-node-a2t-openai.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-amazon.d.ts +1 -2
- package/speechflow-cli/dst/speechflow-node-t2a-amazon.js +9 -15
- package/speechflow-cli/dst/speechflow-node-t2a-amazon.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.d.ts +1 -2
- package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.js +13 -18
- package/speechflow-cli/dst/speechflow-node-t2a-elevenlabs.js.map +1 -1
- package/speechflow-cli/dst/speechflow-node-t2a-kokoro.d.ts +0 -1
- package/speechflow-cli/dst/speechflow-node-t2a-kokoro.js +4 -10
- 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 +3 -3
- 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 +8 -8
- 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 +6 -4
- 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 +6 -6
- package/speechflow-cli/dst/speechflow-node.js.map +1 -1
- package/speechflow-cli/dst/speechflow-util-audio.d.ts +1 -0
- package/speechflow-cli/dst/speechflow-util-audio.js +22 -1
- package/speechflow-cli/dst/speechflow-util-audio.js.map +1 -1
- package/speechflow-cli/dst/speechflow-util-error.d.ts +1 -1
- package/speechflow-cli/dst/speechflow-util-error.js +7 -1
- package/speechflow-cli/dst/speechflow-util-error.js.map +1 -1
- package/speechflow-cli/dst/speechflow-util-stream.d.ts +2 -1
- package/speechflow-cli/dst/speechflow-util-stream.js +23 -3
- 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 +20 -20
- package/speechflow-cli/src/speechflow-main-api.ts +6 -13
- package/speechflow-cli/src/speechflow-main-graph.ts +1 -1
- package/speechflow-cli/src/speechflow-main.ts +4 -0
- package/speechflow-cli/src/speechflow-node-a2a-compressor-wt.ts +1 -29
- package/speechflow-cli/src/speechflow-node-a2a-compressor.ts +13 -12
- package/speechflow-cli/src/speechflow-node-a2a-expander-wt.ts +1 -29
- package/speechflow-cli/src/speechflow-node-a2a-expander.ts +13 -12
- package/speechflow-cli/src/speechflow-node-a2a-ffmpeg.ts +4 -10
- 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 +83 -72
- package/speechflow-cli/src/speechflow-node-a2a-meter.ts +66 -46
- 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 +14 -12
- package/speechflow-cli/src/speechflow-node-a2a-speex.ts +14 -13
- package/speechflow-cli/src/speechflow-node-a2a-vad.ts +26 -25
- 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 -21
- package/speechflow-cli/src/speechflow-node-t2a-amazon.ts +9 -15
- package/speechflow-cli/src/speechflow-node-t2a-elevenlabs.ts +13 -18
- package/speechflow-cli/src/speechflow-node-t2a-kokoro.ts +4 -10
- 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 +3 -3
- 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 +12 -16
- 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 +7 -5
- 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 +11 -11
- package/speechflow-cli/src/speechflow-node.ts +6 -6
- package/speechflow-cli/src/speechflow-util-audio.ts +31 -1
- package/speechflow-cli/src/speechflow-util-error.ts +9 -3
- package/speechflow-cli/src/speechflow-util-stream.ts +31 -6
- package/speechflow-ui-db/dst/index.js +25 -25
- package/speechflow-ui-db/package.json +11 -11
- package/speechflow-ui-db/src/app.vue +14 -5
- package/speechflow-ui-st/dst/index.js +460 -25
- package/speechflow-ui-st/package.json +13 -13
- package/speechflow-ui-st/src/app.vue +8 -3
- package/speechflow-cli/dst/speechflow-util-webaudio-wt.js +0 -124
- package/speechflow-cli/dst/speechflow-util-webaudio-wt.js.map +0 -1
- package/speechflow-cli/dst/speechflow-util-webaudio.d.ts +0 -13
- package/speechflow-cli/dst/speechflow-util-webaudio.js +0 -137
- package/speechflow-cli/dst/speechflow-util-webaudio.js.map +0 -1
- /package/speechflow-cli/dst/{speechflow-util-webaudio-wt.d.ts → speechflow-node-a2a-pitch2-wt.d.ts} +0 -0
|
@@ -47,6 +47,7 @@ const node_stream_1 = __importDefault(require("node:stream"));
|
|
|
47
47
|
/* external dependencies */
|
|
48
48
|
const Transformers = __importStar(require("@huggingface/transformers"));
|
|
49
49
|
const wavefile_1 = require("wavefile");
|
|
50
|
+
const audio_inspect_1 = require("audio-inspect");
|
|
50
51
|
/* internal dependencies */
|
|
51
52
|
const speechflow_node_1 = __importDefault(require("./speechflow-node"));
|
|
52
53
|
const util = __importStar(require("./speechflow-util"));
|
|
@@ -60,7 +61,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
60
61
|
queueRecv = this.queue.pointerUse("recv");
|
|
61
62
|
queueAC = this.queue.pointerUse("ac");
|
|
62
63
|
queueSend = this.queue.pointerUse("send");
|
|
63
|
-
|
|
64
|
+
closing = false;
|
|
64
65
|
workingOffTimer = null;
|
|
65
66
|
progressInterval = null;
|
|
66
67
|
/* construct node */
|
|
@@ -68,7 +69,10 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
68
69
|
super(id, cfg, opts, args);
|
|
69
70
|
/* declare node configuration parameters */
|
|
70
71
|
this.configure({
|
|
71
|
-
window: { type: "number", pos: 0, val: 500 }
|
|
72
|
+
window: { type: "number", pos: 0, val: 500 },
|
|
73
|
+
threshold: { type: "number", pos: 1, val: 0.50 },
|
|
74
|
+
hysteresis: { type: "number", pos: 2, val: 0.25 },
|
|
75
|
+
volumeThreshold: { type: "number", pos: 3, val: -45 }
|
|
72
76
|
});
|
|
73
77
|
/* declare node input/output format */
|
|
74
78
|
this.input = "audio";
|
|
@@ -79,16 +83,14 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
79
83
|
/* sanity check situation */
|
|
80
84
|
if (this.config.audioBitDepth !== 16 || !this.config.audioLittleEndian)
|
|
81
85
|
throw new Error("Gender node currently supports PCM-S16LE audio only");
|
|
82
|
-
/* clear
|
|
83
|
-
this.
|
|
84
|
-
/* pass-through logging */
|
|
85
|
-
const log = this.log.bind(this);
|
|
86
|
+
/* clear destruction flag */
|
|
87
|
+
this.closing = false;
|
|
86
88
|
/* the used model */
|
|
87
89
|
const model = "Xenova/wav2vec2-large-xlsr-53-gender-recognition-librispeech";
|
|
88
90
|
/* track download progress when instantiating Transformers engine and model */
|
|
89
91
|
const progressState = new Map();
|
|
90
92
|
const progressCallback = (progress) => {
|
|
91
|
-
if (this.
|
|
93
|
+
if (this.closing)
|
|
92
94
|
return;
|
|
93
95
|
let artifact = model;
|
|
94
96
|
if (typeof progress.file === "string")
|
|
@@ -102,7 +104,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
102
104
|
progressState.set(artifact, percent);
|
|
103
105
|
};
|
|
104
106
|
this.progressInterval = setInterval(() => {
|
|
105
|
-
if (this.
|
|
107
|
+
if (this.closing)
|
|
106
108
|
return;
|
|
107
109
|
for (const [artifact, percent] of progressState) {
|
|
108
110
|
this.log("info", `downloaded ${percent.toFixed(2)}% of artifact "${artifact}"`);
|
|
@@ -117,23 +119,17 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
117
119
|
device: "auto",
|
|
118
120
|
progress_callback: progressCallback
|
|
119
121
|
});
|
|
120
|
-
let timeoutId = null;
|
|
121
|
-
const timeoutPromise = new Promise((resolve, reject) => {
|
|
122
|
-
timeoutId = setTimeout(() => reject(new Error("model initialization timeout")), 30 * 1000);
|
|
123
|
-
});
|
|
124
122
|
this.classifier = await Promise.race([
|
|
125
|
-
pipelinePromise,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
clearTimeout(timeoutId);
|
|
129
|
-
});
|
|
123
|
+
pipelinePromise,
|
|
124
|
+
util.timeoutPromise(30 * 1000, "model initialization timeout")
|
|
125
|
+
]);
|
|
130
126
|
}
|
|
131
127
|
catch (error) {
|
|
132
128
|
if (this.progressInterval) {
|
|
133
129
|
clearInterval(this.progressInterval);
|
|
134
130
|
this.progressInterval = null;
|
|
135
131
|
}
|
|
136
|
-
throw new Error(`failed to initialize classifier pipeline: ${error}
|
|
132
|
+
throw new Error(`failed to initialize classifier pipeline: ${error}`, { cause: error });
|
|
137
133
|
}
|
|
138
134
|
if (this.progressInterval) {
|
|
139
135
|
clearInterval(this.progressInterval);
|
|
@@ -141,19 +137,30 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
141
137
|
}
|
|
142
138
|
if (this.classifier === null)
|
|
143
139
|
throw new Error("failed to instantiate classifier pipeline");
|
|
140
|
+
/* define sample rate required by model */
|
|
141
|
+
const sampleRateTarget = 16000;
|
|
144
142
|
/* classify a single large-enough concatenated audio frame */
|
|
143
|
+
let genderLast = "unknown";
|
|
145
144
|
const classify = async (data) => {
|
|
146
|
-
if (this.
|
|
147
|
-
throw new Error("classifier
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
145
|
+
if (this.closing || this.classifier === null)
|
|
146
|
+
throw new Error("classifier destroyed during operation");
|
|
147
|
+
/* check volume level and return "unknown" if too low
|
|
148
|
+
in order to avoid a wrong classificaton */
|
|
149
|
+
const audioData = {
|
|
150
|
+
sampleRate: sampleRateTarget,
|
|
151
|
+
numberOfChannels: 1,
|
|
152
|
+
channelData: [data],
|
|
153
|
+
duration: data.length / sampleRateTarget,
|
|
154
|
+
length: data.length
|
|
155
|
+
};
|
|
156
|
+
const rms = (0, audio_inspect_1.getRMS)(audioData, { asDB: true });
|
|
157
|
+
if (rms < this.params.volumeThreshold)
|
|
158
|
+
return genderLast;
|
|
159
|
+
/* classify audio */
|
|
160
|
+
const result = await Promise.race([
|
|
161
|
+
this.classifier(data),
|
|
162
|
+
util.timeoutPromise(30 * 1000, "classification timeout")
|
|
163
|
+
]);
|
|
157
164
|
const classified = Array.isArray(result) ?
|
|
158
165
|
result :
|
|
159
166
|
[result];
|
|
@@ -161,23 +168,26 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
161
168
|
const c2 = classified.find((c) => c.label === "female");
|
|
162
169
|
const male = c1 ? c1.score : 0.0;
|
|
163
170
|
const female = c2 ? c2.score : 0.0;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
171
|
+
const threshold = this.params.threshold;
|
|
172
|
+
const hysteresis = this.params.hysteresis;
|
|
173
|
+
let genderNow = genderLast;
|
|
174
|
+
if (male > threshold && male > female + hysteresis)
|
|
175
|
+
genderNow = "male";
|
|
176
|
+
else if (female > threshold && female > male + hysteresis)
|
|
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;
|
|
170
183
|
};
|
|
171
|
-
/* define sample rate required by model */
|
|
172
|
-
const sampleRateTarget = 16000;
|
|
173
184
|
/* work off queued audio frames */
|
|
174
185
|
const frameWindowDuration = this.params.window / 1000;
|
|
175
186
|
const frameWindowSamples = Math.floor(frameWindowDuration * sampleRateTarget);
|
|
176
|
-
let lastGender = "";
|
|
177
187
|
let workingOff = false;
|
|
178
188
|
const workOffQueue = async () => {
|
|
179
189
|
/* control working off round */
|
|
180
|
-
if (workingOff || this.
|
|
190
|
+
if (workingOff || this.closing)
|
|
181
191
|
return;
|
|
182
192
|
workingOff = true;
|
|
183
193
|
if (this.workingOffTimer !== null) {
|
|
@@ -193,7 +203,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
193
203
|
data.fill(0);
|
|
194
204
|
let samples = 0;
|
|
195
205
|
let pos = pos0;
|
|
196
|
-
while (pos < posL && samples < frameWindowSamples && !this.
|
|
206
|
+
while (pos < posL && samples < frameWindowSamples && !this.closing) {
|
|
197
207
|
const element = this.queueAC.peek(pos);
|
|
198
208
|
if (element === undefined || element.type !== "audio-frame")
|
|
199
209
|
break;
|
|
@@ -203,12 +213,12 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
203
213
|
}
|
|
204
214
|
pos++;
|
|
205
215
|
}
|
|
206
|
-
if (pos0 < pos && samples > frameWindowSamples * 0.75 && !this.
|
|
216
|
+
if (pos0 < pos && samples > frameWindowSamples * 0.75 && !this.closing) {
|
|
207
217
|
const gender = await classify(data);
|
|
208
|
-
if (this.
|
|
218
|
+
if (this.closing)
|
|
209
219
|
return;
|
|
210
220
|
const posM = pos0 + Math.trunc((pos - pos0) * 0.25);
|
|
211
|
-
while (pos0 < posM && pos0 < posL && !this.
|
|
221
|
+
while (pos0 < posM && pos0 < posL && !this.closing) {
|
|
212
222
|
const element = this.queueAC.peek(pos0);
|
|
213
223
|
if (element === undefined || element.type !== "audio-frame")
|
|
214
224
|
break;
|
|
@@ -217,18 +227,14 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
217
227
|
this.queueAC.walk(+1);
|
|
218
228
|
pos0++;
|
|
219
229
|
}
|
|
220
|
-
if (lastGender !== gender && !this.shutdown) {
|
|
221
|
-
log("info", `gender now recognized as <${gender}>`);
|
|
222
|
-
lastGender = gender;
|
|
223
|
-
}
|
|
224
230
|
}
|
|
225
231
|
}
|
|
226
232
|
catch (error) {
|
|
227
|
-
log("error", `gender classification error: ${error}`);
|
|
233
|
+
this.log("error", `gender classification error: ${error}`);
|
|
228
234
|
}
|
|
229
235
|
/* re-initiate working off round */
|
|
230
236
|
workingOff = false;
|
|
231
|
-
if (!this.
|
|
237
|
+
if (!this.closing) {
|
|
232
238
|
this.workingOffTimer = setTimeout(workOffQueue, 100);
|
|
233
239
|
this.queue.once("write", workOffQueue);
|
|
234
240
|
}
|
|
@@ -243,7 +249,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
243
249
|
highWaterMark: 1,
|
|
244
250
|
/* receive audio chunk (writable side of stream) */
|
|
245
251
|
write(chunk, encoding, callback) {
|
|
246
|
-
if (self.
|
|
252
|
+
if (self.closing) {
|
|
247
253
|
callback(new Error("stream already destroyed"));
|
|
248
254
|
return;
|
|
249
255
|
}
|
|
@@ -264,13 +270,13 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
264
270
|
callback();
|
|
265
271
|
}
|
|
266
272
|
catch (error) {
|
|
267
|
-
callback(error
|
|
273
|
+
callback(util.ensureError(error, "audio processing failed"));
|
|
268
274
|
}
|
|
269
275
|
}
|
|
270
276
|
},
|
|
271
277
|
/* receive no more audio chunks (writable side of stream) */
|
|
272
278
|
final(callback) {
|
|
273
|
-
if (self.
|
|
279
|
+
if (self.closing) {
|
|
274
280
|
callback();
|
|
275
281
|
return;
|
|
276
282
|
}
|
|
@@ -282,7 +288,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
282
288
|
read(_size) {
|
|
283
289
|
/* flush pending audio chunks */
|
|
284
290
|
const flushPendingChunks = () => {
|
|
285
|
-
if (self.
|
|
291
|
+
if (self.closing) {
|
|
286
292
|
this.push(null);
|
|
287
293
|
return;
|
|
288
294
|
}
|
|
@@ -294,7 +300,7 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
294
300
|
&& element.type === "audio-frame"
|
|
295
301
|
&& element.gender !== undefined) {
|
|
296
302
|
while (true) {
|
|
297
|
-
if (self.
|
|
303
|
+
if (self.closing) {
|
|
298
304
|
this.push(null);
|
|
299
305
|
return;
|
|
300
306
|
}
|
|
@@ -309,14 +315,18 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
309
315
|
&& element.gender === undefined)
|
|
310
316
|
break;
|
|
311
317
|
const duration = util.audioArrayDuration(element.data);
|
|
312
|
-
|
|
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}>`);
|
|
313
323
|
element.chunk.meta.set("gender", element.gender);
|
|
314
324
|
this.push(element.chunk);
|
|
315
325
|
self.queueSend.walk(+1);
|
|
316
326
|
self.queue.trim();
|
|
317
327
|
}
|
|
318
328
|
}
|
|
319
|
-
else if (!self.
|
|
329
|
+
else if (!self.closing)
|
|
320
330
|
self.queue.once("write", flushPendingChunks);
|
|
321
331
|
};
|
|
322
332
|
flushPendingChunks();
|
|
@@ -325,8 +335,8 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
325
335
|
}
|
|
326
336
|
/* close node */
|
|
327
337
|
async close() {
|
|
328
|
-
/* indicate
|
|
329
|
-
this.
|
|
338
|
+
/* indicate closing */
|
|
339
|
+
this.closing = true;
|
|
330
340
|
/* cleanup working-off timer */
|
|
331
341
|
if (this.workingOffTimer !== null) {
|
|
332
342
|
clearTimeout(this.workingOffTimer);
|
|
@@ -339,9 +349,9 @@ class SpeechFlowNodeA2AGender extends speechflow_node_1.default {
|
|
|
339
349
|
}
|
|
340
350
|
/* remove all event listeners */
|
|
341
351
|
this.queue.removeAllListeners("write");
|
|
342
|
-
/*
|
|
352
|
+
/* shutdown stream */
|
|
343
353
|
if (this.stream !== null) {
|
|
344
|
-
this.stream
|
|
354
|
+
await util.destroyStream(this.stream);
|
|
345
355
|
this.stream = null;
|
|
346
356
|
}
|
|
347
357
|
/* cleanup classifier */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"speechflow-node-a2a-gender.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-gender.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"speechflow-node-a2a-gender.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-gender.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,13 +57,13 @@ 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);
|
|
64
64
|
/* declare node configuration parameters */
|
|
65
65
|
this.configure({
|
|
66
|
-
interval: { type: "number", pos: 0, val:
|
|
66
|
+
interval: { type: "number", pos: 0, val: 100 },
|
|
67
67
|
mode: { type: "string", pos: 1, val: "filter", match: /^(?:filter|sink)$/ },
|
|
68
68
|
dashboard: { type: "string", val: "" }
|
|
69
69
|
});
|
|
@@ -80,67 +80,83 @@ 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
|
+
let rms = -60;
|
|
87
|
+
/* chunk processing state for LUFS-M */
|
|
88
|
+
const sampleWindowDuration = 0.4; /* LUFS-M requires 400ms */
|
|
86
89
|
const sampleWindowSize = Math.floor(this.config.audioSampleRate * sampleWindowDuration);
|
|
87
90
|
const sampleWindow = new Float32Array(sampleWindowSize);
|
|
88
91
|
sampleWindow.fill(0, 0, sampleWindowSize);
|
|
89
|
-
|
|
90
|
-
let rms = -60;
|
|
91
|
-
/* chunk processing state */
|
|
92
|
+
/* chunk processing state for RMS */
|
|
92
93
|
const chunkDuration = 0.050; /* meter update frequency is about 50ms */
|
|
93
94
|
const samplesPerChunk = Math.floor(this.config.audioSampleRate * chunkDuration);
|
|
94
95
|
this.chunkBuffer = new Float32Array(0);
|
|
95
|
-
/*
|
|
96
|
-
|
|
97
|
-
/*
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
/*
|
|
101
|
-
|
|
96
|
+
/* setup chunking interval */
|
|
97
|
+
this.calcInterval = setInterval(() => {
|
|
98
|
+
/* short-circuit during destruction */
|
|
99
|
+
if (this.closing)
|
|
100
|
+
return;
|
|
101
|
+
/* short-circuit if still not enough chunk data */
|
|
102
|
+
if (this.chunkBuffer.length < samplesPerChunk)
|
|
103
|
+
return;
|
|
104
|
+
/* grab the accumulated chunk data */
|
|
105
|
+
const chunkData = this.chunkBuffer;
|
|
106
|
+
this.chunkBuffer = new Float32Array(0);
|
|
107
|
+
/* update internal audio sample sliding window for LUFS-S */
|
|
108
|
+
if (chunkData.length > sampleWindow.length)
|
|
109
|
+
sampleWindow.set(chunkData.subarray(chunkData.length - sampleWindow.length), 0);
|
|
110
|
+
else {
|
|
111
|
+
sampleWindow.set(sampleWindow.subarray(chunkData.length), 0);
|
|
112
|
+
sampleWindow.set(chunkData, sampleWindow.length - chunkData.length);
|
|
113
|
+
}
|
|
114
|
+
/* calculate the LUFS-M metric */
|
|
115
|
+
const audioDataLUFS = {
|
|
102
116
|
sampleRate: this.config.audioSampleRate,
|
|
103
117
|
numberOfChannels: this.config.audioChannels,
|
|
104
118
|
channelData: [sampleWindow],
|
|
105
119
|
duration: sampleWindowDuration,
|
|
106
120
|
length: sampleWindow.length
|
|
107
121
|
};
|
|
108
|
-
const lufs = (0, audio_inspect_1.getLUFS)(
|
|
122
|
+
const lufs = (0, audio_inspect_1.getLUFS)(audioDataLUFS, {
|
|
109
123
|
channelMode: this.config.audioChannels === 1 ? "mono" : "stereo",
|
|
110
|
-
calculateShortTerm:
|
|
111
|
-
calculateMomentary:
|
|
124
|
+
calculateShortTerm: false,
|
|
125
|
+
calculateMomentary: true,
|
|
112
126
|
calculateLoudnessRange: false,
|
|
113
127
|
calculateTruePeak: false
|
|
114
128
|
});
|
|
115
|
-
|
|
116
|
-
|
|
129
|
+
lufsm = lufs.momentary ? Math.max(-60, lufs.momentary[0]) : -60;
|
|
130
|
+
/* calculate the RMS metric */
|
|
131
|
+
const totalSamples = chunkData.length / this.config.audioChannels;
|
|
132
|
+
const duration = totalSamples / this.config.audioSampleRate;
|
|
133
|
+
const audioDataRMS = {
|
|
134
|
+
sampleRate: this.config.audioSampleRate,
|
|
135
|
+
numberOfChannels: this.config.audioChannels,
|
|
136
|
+
channelData: [chunkData],
|
|
137
|
+
duration,
|
|
138
|
+
length: chunkData.length
|
|
139
|
+
};
|
|
140
|
+
rms = Math.max(-60, (0, audio_inspect_1.getRMS)(audioDataRMS, {
|
|
141
|
+
asDB: true
|
|
142
|
+
}));
|
|
143
|
+
/* automatically clear measurement (in case no new measurements happen) */
|
|
117
144
|
if (this.silenceTimer !== null)
|
|
118
145
|
clearTimeout(this.silenceTimer);
|
|
119
146
|
this.silenceTimer = setTimeout(() => {
|
|
120
|
-
|
|
147
|
+
lufsm = -60;
|
|
121
148
|
rms = -60;
|
|
122
149
|
}, 500);
|
|
123
|
-
};
|
|
124
|
-
/* setup chunking interval */
|
|
125
|
-
this.calcInterval = setInterval(() => {
|
|
126
|
-
if (this.destroyed)
|
|
127
|
-
return;
|
|
128
|
-
/* process one single 50ms chunk if available */
|
|
129
|
-
if (this.chunkBuffer.length >= samplesPerChunk) {
|
|
130
|
-
const chunkData = this.chunkBuffer.slice(0, samplesPerChunk);
|
|
131
|
-
this.chunkBuffer = this.chunkBuffer.slice(samplesPerChunk);
|
|
132
|
-
processChunk(chunkData);
|
|
133
|
-
}
|
|
134
150
|
}, chunkDuration * 1000);
|
|
135
151
|
/* setup loudness emitting interval */
|
|
136
152
|
this.emitInterval = setInterval(() => {
|
|
137
|
-
if (this.
|
|
153
|
+
if (this.closing)
|
|
138
154
|
return;
|
|
139
|
-
this.log("debug", `LUFS-
|
|
140
|
-
this.sendResponse(["meter", "LUFS-
|
|
155
|
+
this.log("debug", `LUFS-M: ${lufsm.toFixed(1)} dB, RMS: ${rms.toFixed(1)} dB`);
|
|
156
|
+
this.sendResponse(["meter", "LUFS-M", lufsm]);
|
|
141
157
|
this.sendResponse(["meter", "RMS", rms]);
|
|
142
158
|
if (this.params.dashboard !== "")
|
|
143
|
-
this.sendDashboard("audio", this.params.dashboard, "final",
|
|
159
|
+
this.sendDashboard("audio", this.params.dashboard, "final", lufsm);
|
|
144
160
|
}, this.params.interval);
|
|
145
161
|
/* provide Duplex stream and internally attach to meter */
|
|
146
162
|
const self = this;
|
|
@@ -151,7 +167,7 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
151
167
|
highWaterMark: 1,
|
|
152
168
|
/* transform audio chunk */
|
|
153
169
|
transform(chunk, encoding, callback) {
|
|
154
|
-
if (self.
|
|
170
|
+
if (self.closing) {
|
|
155
171
|
callback(new Error("stream already destroyed"));
|
|
156
172
|
return;
|
|
157
173
|
}
|
|
@@ -175,12 +191,12 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
175
191
|
callback();
|
|
176
192
|
}
|
|
177
193
|
catch (error) {
|
|
178
|
-
callback(error
|
|
194
|
+
callback(util.ensureError(error, "meter processing failed"));
|
|
179
195
|
}
|
|
180
196
|
}
|
|
181
197
|
},
|
|
182
198
|
final(callback) {
|
|
183
|
-
if (self.
|
|
199
|
+
if (self.closing || self.params.mode === "sink") {
|
|
184
200
|
callback();
|
|
185
201
|
return;
|
|
186
202
|
}
|
|
@@ -191,6 +207,8 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
191
207
|
}
|
|
192
208
|
/* close node */
|
|
193
209
|
async close() {
|
|
210
|
+
/* indicate closing immediately to stop any ongoing operations */
|
|
211
|
+
this.closing = true;
|
|
194
212
|
/* stop intervals */
|
|
195
213
|
if (this.emitInterval !== null) {
|
|
196
214
|
clearInterval(this.emitInterval);
|
|
@@ -204,13 +222,11 @@ class SpeechFlowNodeA2AMeter extends speechflow_node_1.default {
|
|
|
204
222
|
clearTimeout(this.silenceTimer);
|
|
205
223
|
this.silenceTimer = null;
|
|
206
224
|
}
|
|
207
|
-
/*
|
|
225
|
+
/* shutdown stream */
|
|
208
226
|
if (this.stream !== null) {
|
|
209
|
-
this.stream
|
|
227
|
+
await util.destroyStream(this.stream);
|
|
210
228
|
this.stream = null;
|
|
211
229
|
}
|
|
212
|
-
/* indicate destruction */
|
|
213
|
-
this.destroyed = true;
|
|
214
230
|
}
|
|
215
231
|
}
|
|
216
232
|
exports.default = SpeechFlowNodeA2AMeter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"speechflow-node-a2a-meter.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-meter.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,6BAA6B;AAC7B,8DAAgC;AAEhC,6BAA6B;AAC7B,iDAA0D;AAE1D,6BAA6B;AAC7B,wEAAmE;AACnE,wDAAmE;AAEnE,0CAA0C;AAC1C,MAAqB,sBAAuB,SAAQ,yBAAc;IAC9D,kCAAkC;IAC3B,MAAM,CAAC,IAAI,GAAG,WAAW,CAAA;IAEhC,sBAAsB;IACd,YAAY,GAA0C,IAAI,CAAA;IAC1D,YAAY,GAA0C,IAAI,CAAA;IAC1D,YAAY,
|
|
1
|
+
{"version":3,"file":"speechflow-node-a2a-meter.js","sourceRoot":"","sources":["../src/speechflow-node-a2a-meter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ type MuteMode = "none" | /* not muted */ "silenced" | /* muted by changing au
|
|
|
3
3
|
export default class SpeechFlowNodeA2AMute extends SpeechFlowNode {
|
|
4
4
|
static name: string;
|
|
5
5
|
private muteMode;
|
|
6
|
-
private
|
|
6
|
+
private closing;
|
|
7
7
|
constructor(id: string, cfg: {
|
|
8
8
|
[id: string]: any;
|
|
9
9
|
}, opts: {
|