speechflow 1.3.1 → 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.
- package/CHANGELOG.md +23 -0
- package/etc/stx.conf +54 -58
- package/package.json +25 -106
- package/{etc → speechflow-cli/etc}/eslint.mjs +1 -2
- package/speechflow-cli/etc/stx.conf +77 -0
- package/speechflow-cli/package.json +116 -0
- package/{src → speechflow-cli/src}/speechflow-node-a2a-gender.ts +148 -64
- package/speechflow-cli/src/speechflow-node-a2a-meter.ts +217 -0
- package/{src → speechflow-cli/src}/speechflow-node-a2a-mute.ts +39 -11
- package/speechflow-cli/src/speechflow-node-a2a-vad.ts +384 -0
- package/{src → speechflow-cli/src}/speechflow-node-a2a-wav.ts +27 -11
- package/speechflow-cli/src/speechflow-node-a2t-deepgram.ts +313 -0
- package/{src → speechflow-cli/src}/speechflow-node-t2a-elevenlabs.ts +59 -12
- package/{src → speechflow-cli/src}/speechflow-node-t2a-kokoro.ts +11 -4
- package/{src → speechflow-cli/src}/speechflow-node-t2t-deepl.ts +9 -4
- package/{src → speechflow-cli/src}/speechflow-node-t2t-format.ts +2 -2
- package/{src → speechflow-cli/src}/speechflow-node-t2t-ollama.ts +1 -1
- package/{src → speechflow-cli/src}/speechflow-node-t2t-openai.ts +1 -1
- package/{src → speechflow-cli/src}/speechflow-node-t2t-sentence.ts +37 -20
- package/speechflow-cli/src/speechflow-node-t2t-subtitle.ts +276 -0
- package/{src → speechflow-cli/src}/speechflow-node-t2t-transformers.ts +4 -3
- package/{src → speechflow-cli/src}/speechflow-node-x2x-filter.ts +9 -5
- package/{src → speechflow-cli/src}/speechflow-node-x2x-trace.ts +16 -8
- package/{src → speechflow-cli/src}/speechflow-node-xio-device.ts +12 -8
- package/{src → speechflow-cli/src}/speechflow-node-xio-file.ts +9 -3
- package/{src → speechflow-cli/src}/speechflow-node-xio-mqtt.ts +5 -2
- package/{src → speechflow-cli/src}/speechflow-node-xio-websocket.ts +12 -12
- package/{src → speechflow-cli/src}/speechflow-node.ts +7 -0
- package/{src → speechflow-cli/src}/speechflow-utils.ts +78 -44
- package/{src → speechflow-cli/src}/speechflow.ts +188 -53
- package/speechflow-ui-db/etc/eslint.mjs +106 -0
- package/speechflow-ui-db/etc/htmllint.json +55 -0
- package/speechflow-ui-db/etc/stx.conf +79 -0
- package/speechflow-ui-db/etc/stylelint.js +46 -0
- package/speechflow-ui-db/etc/stylelint.yaml +33 -0
- package/speechflow-ui-db/etc/tsc-client.json +30 -0
- package/speechflow-ui-db/etc/tsc.node.json +9 -0
- package/speechflow-ui-db/etc/vite-client.mts +63 -0
- package/speechflow-ui-db/package.d/htmllint-cli+0.0.7.patch +20 -0
- package/speechflow-ui-db/package.json +75 -0
- package/speechflow-ui-db/src/app-icon.ai +1989 -4
- package/speechflow-ui-db/src/app-icon.svg +26 -0
- package/speechflow-ui-db/src/app.styl +64 -0
- package/speechflow-ui-db/src/app.vue +221 -0
- package/speechflow-ui-db/src/index.html +23 -0
- package/speechflow-ui-db/src/index.ts +26 -0
- package/{dst/speechflow.d.ts → speechflow-ui-db/src/lib.d.ts} +5 -3
- package/speechflow-ui-db/src/tsconfig.json +3 -0
- package/speechflow-ui-st/etc/eslint.mjs +106 -0
- package/speechflow-ui-st/etc/htmllint.json +55 -0
- package/speechflow-ui-st/etc/stx.conf +79 -0
- package/speechflow-ui-st/etc/stylelint.js +46 -0
- package/speechflow-ui-st/etc/stylelint.yaml +33 -0
- package/speechflow-ui-st/etc/tsc-client.json +30 -0
- package/speechflow-ui-st/etc/tsc.node.json +9 -0
- package/speechflow-ui-st/etc/vite-client.mts +63 -0
- package/speechflow-ui-st/package.d/htmllint-cli+0.0.7.patch +20 -0
- package/speechflow-ui-st/package.json +79 -0
- package/speechflow-ui-st/src/app-icon.ai +1989 -4
- package/speechflow-ui-st/src/app-icon.svg +26 -0
- package/speechflow-ui-st/src/app.styl +64 -0
- package/speechflow-ui-st/src/app.vue +142 -0
- package/speechflow-ui-st/src/index.html +23 -0
- package/speechflow-ui-st/src/index.ts +26 -0
- package/speechflow-ui-st/src/lib.d.ts +9 -0
- package/speechflow-ui-st/src/tsconfig.json +3 -0
- package/dst/speechflow-node-a2a-ffmpeg.d.ts +0 -13
- package/dst/speechflow-node-a2a-ffmpeg.js +0 -153
- package/dst/speechflow-node-a2a-ffmpeg.js.map +0 -1
- package/dst/speechflow-node-a2a-gender.d.ts +0 -18
- package/dst/speechflow-node-a2a-gender.js +0 -271
- package/dst/speechflow-node-a2a-gender.js.map +0 -1
- package/dst/speechflow-node-a2a-meter.d.ts +0 -12
- package/dst/speechflow-node-a2a-meter.js +0 -155
- package/dst/speechflow-node-a2a-meter.js.map +0 -1
- package/dst/speechflow-node-a2a-mute.d.ts +0 -16
- package/dst/speechflow-node-a2a-mute.js +0 -91
- package/dst/speechflow-node-a2a-mute.js.map +0 -1
- package/dst/speechflow-node-a2a-vad.d.ts +0 -16
- package/dst/speechflow-node-a2a-vad.js +0 -285
- package/dst/speechflow-node-a2a-vad.js.map +0 -1
- package/dst/speechflow-node-a2a-wav.d.ts +0 -11
- package/dst/speechflow-node-a2a-wav.js +0 -195
- package/dst/speechflow-node-a2a-wav.js.map +0 -1
- package/dst/speechflow-node-a2t-deepgram.d.ts +0 -15
- package/dst/speechflow-node-a2t-deepgram.js +0 -255
- package/dst/speechflow-node-a2t-deepgram.js.map +0 -1
- package/dst/speechflow-node-t2a-elevenlabs.d.ts +0 -16
- package/dst/speechflow-node-t2a-elevenlabs.js +0 -195
- package/dst/speechflow-node-t2a-elevenlabs.js.map +0 -1
- package/dst/speechflow-node-t2a-kokoro.d.ts +0 -13
- package/dst/speechflow-node-t2a-kokoro.js +0 -149
- package/dst/speechflow-node-t2a-kokoro.js.map +0 -1
- package/dst/speechflow-node-t2t-deepl.d.ts +0 -15
- package/dst/speechflow-node-t2t-deepl.js +0 -142
- package/dst/speechflow-node-t2t-deepl.js.map +0 -1
- package/dst/speechflow-node-t2t-format.d.ts +0 -11
- package/dst/speechflow-node-t2t-format.js +0 -82
- package/dst/speechflow-node-t2t-format.js.map +0 -1
- package/dst/speechflow-node-t2t-ollama.d.ts +0 -13
- package/dst/speechflow-node-t2t-ollama.js +0 -247
- package/dst/speechflow-node-t2t-ollama.js.map +0 -1
- package/dst/speechflow-node-t2t-openai.d.ts +0 -13
- package/dst/speechflow-node-t2t-openai.js +0 -227
- package/dst/speechflow-node-t2t-openai.js.map +0 -1
- package/dst/speechflow-node-t2t-sentence.d.ts +0 -17
- package/dst/speechflow-node-t2t-sentence.js +0 -234
- package/dst/speechflow-node-t2t-sentence.js.map +0 -1
- package/dst/speechflow-node-t2t-subtitle.d.ts +0 -13
- package/dst/speechflow-node-t2t-subtitle.js +0 -278
- package/dst/speechflow-node-t2t-subtitle.js.map +0 -1
- package/dst/speechflow-node-t2t-transformers.d.ts +0 -14
- package/dst/speechflow-node-t2t-transformers.js +0 -265
- package/dst/speechflow-node-t2t-transformers.js.map +0 -1
- package/dst/speechflow-node-x2x-filter.d.ts +0 -11
- package/dst/speechflow-node-x2x-filter.js +0 -117
- package/dst/speechflow-node-x2x-filter.js.map +0 -1
- package/dst/speechflow-node-x2x-trace.d.ts +0 -11
- package/dst/speechflow-node-x2x-trace.js +0 -111
- package/dst/speechflow-node-x2x-trace.js.map +0 -1
- package/dst/speechflow-node-xio-device.d.ts +0 -13
- package/dst/speechflow-node-xio-device.js +0 -226
- package/dst/speechflow-node-xio-device.js.map +0 -1
- package/dst/speechflow-node-xio-file.d.ts +0 -11
- package/dst/speechflow-node-xio-file.js +0 -210
- package/dst/speechflow-node-xio-file.js.map +0 -1
- package/dst/speechflow-node-xio-mqtt.d.ts +0 -13
- package/dst/speechflow-node-xio-mqtt.js +0 -185
- package/dst/speechflow-node-xio-mqtt.js.map +0 -1
- package/dst/speechflow-node-xio-websocket.d.ts +0 -13
- package/dst/speechflow-node-xio-websocket.js +0 -278
- package/dst/speechflow-node-xio-websocket.js.map +0 -1
- package/dst/speechflow-node.d.ts +0 -65
- package/dst/speechflow-node.js +0 -180
- package/dst/speechflow-node.js.map +0 -1
- package/dst/speechflow-utils.d.ts +0 -69
- package/dst/speechflow-utils.js +0 -486
- package/dst/speechflow-utils.js.map +0 -1
- package/dst/speechflow.js +0 -768
- package/dst/speechflow.js.map +0 -1
- package/src/speechflow-node-a2a-meter.ts +0 -130
- package/src/speechflow-node-a2a-vad.ts +0 -285
- package/src/speechflow-node-a2t-deepgram.ts +0 -234
- package/src/speechflow-node-t2t-subtitle.ts +0 -149
- /package/{etc → speechflow-cli/etc}/biome.jsonc +0 -0
- /package/{etc → speechflow-cli/etc}/oxlint.jsonc +0 -0
- /package/{etc → speechflow-cli/etc}/speechflow.bat +0 -0
- /package/{etc → speechflow-cli/etc}/speechflow.sh +0 -0
- /package/{etc → speechflow-cli/etc}/speechflow.yaml +0 -0
- /package/{etc → speechflow-cli/etc}/tsconfig.json +0 -0
- /package/{package.d → speechflow-cli/package.d}/@ericedouard+vad-node-realtime+0.2.0.patch +0 -0
- /package/{src → speechflow-cli/src}/lib.d.ts +0 -0
- /package/{src → speechflow-cli/src}/speechflow-logo.ai +0 -0
- /package/{src → speechflow-cli/src}/speechflow-logo.svg +0 -0
- /package/{src → speechflow-cli/src}/speechflow-node-a2a-ffmpeg.ts +0 -0
- /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 data flow filtering (based on meta information) */
|
|
16
|
-
class SpeechFlowNodeFilter extends speechflow_node_1.default {
|
|
17
|
-
/* declare official node name */
|
|
18
|
-
static name = "filter";
|
|
19
|
-
/* construct node */
|
|
20
|
-
constructor(id, cfg, opts, args) {
|
|
21
|
-
super(id, cfg, opts, args);
|
|
22
|
-
/* declare node configuration parameters */
|
|
23
|
-
this.configure({
|
|
24
|
-
type: { type: "string", pos: 0, val: "audio", match: /^(?:audio|text)$/ },
|
|
25
|
-
name: { type: "string", pos: 1, val: "filter", match: /^.+?$/ },
|
|
26
|
-
var: { type: "string", pos: 2, val: "", match: /^(?:meta:.+|payload:(?:length|text)|time:(?:start|end))$/ },
|
|
27
|
-
op: { type: "string", pos: 3, val: "==", match: /^(?:<|<=|==|!=|~~|!~|>=|>)$/ },
|
|
28
|
-
val: { type: "string", pos: 4, val: "", match: /^.*$/ }
|
|
29
|
-
});
|
|
30
|
-
/* declare node input/output format */
|
|
31
|
-
this.input = this.params.type;
|
|
32
|
-
this.output = this.params.type;
|
|
33
|
-
}
|
|
34
|
-
/* open node */
|
|
35
|
-
async open() {
|
|
36
|
-
/* helper function for comparing two values */
|
|
37
|
-
const comparison = (val1, op, val2) => {
|
|
38
|
-
if (op === "==" || op === "!=") {
|
|
39
|
-
/* equal comparison */
|
|
40
|
-
const str1 = (typeof val1 === "string" ? val1 : val1.toString());
|
|
41
|
-
const str2 = (typeof val2 === "string" ? val2 : val2.toString());
|
|
42
|
-
return (op === "==" ? (str1 === str2) : (str1 !== str2));
|
|
43
|
-
}
|
|
44
|
-
else if (op === "~~" || op === "!~") {
|
|
45
|
-
/* regular expression comparison */
|
|
46
|
-
const str = (typeof val1 === "string" ? val1 : val1.toString());
|
|
47
|
-
const regexp = (val2 instanceof RegExp ?
|
|
48
|
-
val2 :
|
|
49
|
-
typeof val2 === "string" ?
|
|
50
|
-
new RegExp(val2) :
|
|
51
|
-
new RegExp(val2.toString()));
|
|
52
|
-
return (op === "~~" ? regexp.test(str) : !regexp.test(str));
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
/* non-equal comparison */
|
|
56
|
-
const coerceNum = (val) => {
|
|
57
|
-
return typeof val === "number" ? val : (typeof val === "string" && val.match(/^[\d+-]+$/) ? parseInt(val) : (typeof val === "string" && val.match(/^[\d.+-]+$/) ?
|
|
58
|
-
parseFloat(val) :
|
|
59
|
-
Number(val)));
|
|
60
|
-
};
|
|
61
|
-
const num1 = coerceNum(val1);
|
|
62
|
-
const num2 = coerceNum(val2);
|
|
63
|
-
return (op === "<" ?
|
|
64
|
-
(num1 < num2) :
|
|
65
|
-
op === "<=" ?
|
|
66
|
-
(num1 <= num2) :
|
|
67
|
-
op === ">=" ?
|
|
68
|
-
(num1 >= num2) :
|
|
69
|
-
op === ">" ?
|
|
70
|
-
(num1 > num2) :
|
|
71
|
-
false);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
/* provide Transform stream */
|
|
75
|
-
const self = this;
|
|
76
|
-
this.stream = new node_stream_1.default.Transform({
|
|
77
|
-
writableObjectMode: true,
|
|
78
|
-
readableObjectMode: true,
|
|
79
|
-
decodeStrings: false,
|
|
80
|
-
highWaterMark: 1,
|
|
81
|
-
transform(chunk, encoding, callback) {
|
|
82
|
-
let val1;
|
|
83
|
-
const val2 = self.params.val;
|
|
84
|
-
const m = self.params.var.match(/^meta:(.+)$/);
|
|
85
|
-
if (m !== null)
|
|
86
|
-
val1 = chunk.meta.get(m[1]) ?? "";
|
|
87
|
-
else if (self.params.key === "payload:length")
|
|
88
|
-
val1 = chunk.payload.length;
|
|
89
|
-
else if (self.params.key === "payload:text")
|
|
90
|
-
val1 = (self.params.type === "text" ? chunk.payload : "");
|
|
91
|
-
else if (self.params.key === "time:start")
|
|
92
|
-
val1 = chunk.timestampStart.toMillis();
|
|
93
|
-
else if (self.params.key === "time:end")
|
|
94
|
-
val1 = chunk.timestampEnd.toMillis();
|
|
95
|
-
if (comparison(val1, self.params.op, val2)) {
|
|
96
|
-
self.log("info", `[${self.params.name}]: passing through ${chunk.type} chunk`);
|
|
97
|
-
this.push(chunk);
|
|
98
|
-
}
|
|
99
|
-
callback();
|
|
100
|
-
},
|
|
101
|
-
final(callback) {
|
|
102
|
-
this.push(null);
|
|
103
|
-
callback();
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
/* close node */
|
|
108
|
-
async close() {
|
|
109
|
-
/* close stream */
|
|
110
|
-
if (this.stream !== null) {
|
|
111
|
-
this.stream.destroy();
|
|
112
|
-
this.stream = null;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
exports.default = SpeechFlowNodeFilter;
|
|
117
|
-
//# sourceMappingURL=speechflow-node-x2x-filter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"speechflow-node-x2x-filter.js","sourceRoot":"","sources":["../src/speechflow-node-x2x-filter.ts"],"names":[],"mappings":";AAAA;;;;EAIE;;;;;AAEF,6BAA6B;AAC7B,8DAAgC;AAEhC,6BAA6B;AAC7B,wEAAmE;AAEnE,2EAA2E;AAC3E,MAAqB,oBAAqB,SAAQ,yBAAc;IAC5D,kCAAkC;IAC3B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAA;IAE7B,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,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAG,KAAK,EAAE,kBAAkB,EAAE;YAC1E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;YAC/D,GAAG,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAQ,KAAK,EAAE,0DAA0D,EAAE;YAClH,EAAE,EAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAM,KAAK,EAAE,6BAA6B,EAAE;YACrF,GAAG,EAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAQ,KAAK,EAAE,MAAM,EAAE;SACjE,CAAC,CAAA;QAEF,wCAAwC;QACxC,IAAI,CAAC,KAAK,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;IAClC,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,IAAI;QACN,gDAAgD;QAChD,MAAM,UAAU,GAAG,CAAC,IAAS,EAAE,EAAU,EAAE,IAAS,EAAE,EAAE;YACpD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC7B,wBAAwB;gBACxB,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAW,CAAA;gBAC1E,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAW,CAAA;gBAC1E,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAA;YAC5D,CAAC;iBACI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAClC,qCAAqC;gBACrC,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAW,CAAA;gBACzE,MAAM,MAAM,GAAG,CACX,IAAI,YAAY,MAAM,CAAC,CAAC;oBACpB,IAAI,CAAC,CAAC;oBACN,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;wBACtB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;wBAClB,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;gBACxC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAC/D,CAAC;iBACI,CAAC;gBACF,4BAA4B;gBAC5B,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,EAAE;oBAC3B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CACnC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAChE,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;wBAChD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;wBACjB,MAAM,CAAC,GAAG,CAAC,CAClB,CACJ,CAAA;gBACL,CAAC,CAAA;gBACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;gBAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;gBAC5B,OAAO,CACH,EAAE,KAAK,GAAG,CAAC,CAAC;oBACR,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;oBACf,EAAE,KAAK,IAAI,CAAC,CAAC;wBACT,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;wBAChB,EAAE,KAAK,IAAI,CAAC,CAAC;4BACT,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;4BAChB,EAAE,KAAK,GAAG,CAAC,CAAC;gCACR,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;gCACf,KAAK,CACxB,CAAA;YACL,CAAC;QACL,CAAC,CAAA;QAED,gCAAgC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAM,CAAC,SAAS,CAAC;YAC/B,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAO,KAAK;YACzB,aAAa,EAAO,CAAC;YACrB,SAAS,CAAE,KAAsB,EAAE,QAAQ,EAAE,QAAQ;gBACjD,IAAI,IAAS,CAAA;gBACb,MAAM,IAAI,GAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAA;gBACjC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;gBAC9C,IAAI,CAAC,KAAK,IAAI;oBACV,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;qBAChC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,gBAAgB;oBACzC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA;qBAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,cAAc;oBACvC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;qBAClE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,YAAY;oBACrC,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAA;qBACrC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU;oBACnC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA;gBACxC,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,sBAAsB,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAA;oBAC9E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;gBACD,QAAQ,EAAE,CAAA;YACd,CAAC;YACD,KAAK,CAAE,QAAQ;gBACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACf,QAAQ,EAAE,CAAA;YACd,CAAC;SACJ,CAAC,CAAA;IACN,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,KAAK;QACP,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;IACL,CAAC;;AA/GL,uCAgHC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import SpeechFlowNode from "./speechflow-node";
|
|
2
|
-
export default class SpeechFlowNodeTrace 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
|
-
}
|
|
@@ -1,111 +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 data flow tracing */
|
|
16
|
-
class SpeechFlowNodeTrace extends speechflow_node_1.default {
|
|
17
|
-
/* declare official node name */
|
|
18
|
-
static name = "trace";
|
|
19
|
-
/* construct node */
|
|
20
|
-
constructor(id, cfg, opts, args) {
|
|
21
|
-
super(id, cfg, opts, args);
|
|
22
|
-
/* declare node configuration parameters */
|
|
23
|
-
this.configure({
|
|
24
|
-
type: { type: "string", pos: 0, val: "audio", match: /^(?:audio|text)$/ },
|
|
25
|
-
name: { type: "string", pos: 1, val: "trace" },
|
|
26
|
-
dashboard: { type: "string", val: "" }
|
|
27
|
-
});
|
|
28
|
-
/* sanity check parameters */
|
|
29
|
-
if (this.params.dashboard !== "" && this.params.type === "audio")
|
|
30
|
-
throw new Error("only trace nodes of type \"text\" can export to dashboard");
|
|
31
|
-
/* declare node input/output format */
|
|
32
|
-
this.input = this.params.type;
|
|
33
|
-
this.output = this.params.type;
|
|
34
|
-
}
|
|
35
|
-
/* open node */
|
|
36
|
-
async open() {
|
|
37
|
-
/* wrapper for local logging */
|
|
38
|
-
const log = (level, msg) => {
|
|
39
|
-
if (this.params.name !== undefined)
|
|
40
|
-
this.log(level, `[${this.params.name}]: ${msg}`);
|
|
41
|
-
else
|
|
42
|
-
this.log(level, msg);
|
|
43
|
-
};
|
|
44
|
-
/* provide Transform stream */
|
|
45
|
-
const self = this;
|
|
46
|
-
this.stream = new node_stream_1.default.Transform({
|
|
47
|
-
writableObjectMode: true,
|
|
48
|
-
readableObjectMode: true,
|
|
49
|
-
decodeStrings: false,
|
|
50
|
-
highWaterMark: 1,
|
|
51
|
-
transform(chunk, encoding, callback) {
|
|
52
|
-
let error;
|
|
53
|
-
const fmtTime = (t) => t.toFormat("hh:mm:ss.SSS");
|
|
54
|
-
const fmtMeta = (meta) => {
|
|
55
|
-
if (meta.size === 0)
|
|
56
|
-
return "none";
|
|
57
|
-
else
|
|
58
|
-
return `{ ${Array.from(meta.entries())
|
|
59
|
-
.map(([k, v]) => `${k}: ${JSON.stringify(v)}`)
|
|
60
|
-
.join(", ")} }`;
|
|
61
|
-
};
|
|
62
|
-
if (Buffer.isBuffer(chunk.payload)) {
|
|
63
|
-
if (self.params.type === "audio")
|
|
64
|
-
log("debug", `chunk: type=${chunk.type} ` +
|
|
65
|
-
`kind=${chunk.kind} ` +
|
|
66
|
-
`start=${fmtTime(chunk.timestampStart)} ` +
|
|
67
|
-
`end=${fmtTime(chunk.timestampEnd)} ` +
|
|
68
|
-
`payload-type=Buffer payload-length=${chunk.payload.byteLength} ` +
|
|
69
|
-
`meta=${fmtMeta(chunk.meta)}`);
|
|
70
|
-
else
|
|
71
|
-
error = new Error(`${self.params.type} chunk: seen Buffer instead of String chunk type`);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
if (self.params.type === "text") {
|
|
75
|
-
log("debug", `chunk: type=${chunk.type} ` +
|
|
76
|
-
`kind=${chunk.kind} ` +
|
|
77
|
-
`start=${fmtTime(chunk.timestampStart)} ` +
|
|
78
|
-
`end=${fmtTime(chunk.timestampEnd)} ` +
|
|
79
|
-
`payload-type=String payload-length=${chunk.payload.length} ` +
|
|
80
|
-
`payload-content="${chunk.payload.toString()}" ` +
|
|
81
|
-
`meta=${fmtMeta(chunk.meta)}`);
|
|
82
|
-
if (self.params.dashboard !== "")
|
|
83
|
-
self.dashboardInfo("text", self.params.dashboard, chunk.kind, chunk.payload.toString());
|
|
84
|
-
}
|
|
85
|
-
else
|
|
86
|
-
error = new Error(`${self.params.type} chunk: seen String instead of Buffer chunk type`);
|
|
87
|
-
}
|
|
88
|
-
if (error !== undefined)
|
|
89
|
-
callback(error);
|
|
90
|
-
else {
|
|
91
|
-
this.push(chunk, encoding);
|
|
92
|
-
callback();
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
final(callback) {
|
|
96
|
-
this.push(null);
|
|
97
|
-
callback();
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
/* close node */
|
|
102
|
-
async close() {
|
|
103
|
-
/* close stream */
|
|
104
|
-
if (this.stream !== null) {
|
|
105
|
-
this.stream.destroy();
|
|
106
|
-
this.stream = null;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
exports.default = SpeechFlowNodeTrace;
|
|
111
|
-
//# sourceMappingURL=speechflow-node-x2x-trace.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"speechflow-node-x2x-trace.js","sourceRoot":"","sources":["../src/speechflow-node-x2x-trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import SpeechFlowNode from "./speechflow-node";
|
|
2
|
-
export default class SpeechFlowNodeDevice extends SpeechFlowNode {
|
|
3
|
-
static name: string;
|
|
4
|
-
private io;
|
|
5
|
-
constructor(id: string, cfg: {
|
|
6
|
-
[id: string]: any;
|
|
7
|
-
}, opts: {
|
|
8
|
-
[id: string]: any;
|
|
9
|
-
}, args: any[]);
|
|
10
|
-
private audioDeviceFromURL;
|
|
11
|
-
open(): Promise<void>;
|
|
12
|
-
close(): Promise<void>;
|
|
13
|
-
}
|
|
@@ -1,226 +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 naudiodon_1 = __importDefault(require("@gpeng/naudiodon"));
|
|
48
|
-
/* internal dependencies */
|
|
49
|
-
const speechflow_node_1 = __importDefault(require("./speechflow-node"));
|
|
50
|
-
const utils = __importStar(require("./speechflow-utils"));
|
|
51
|
-
/* SpeechFlow node for device access */
|
|
52
|
-
class SpeechFlowNodeDevice extends speechflow_node_1.default {
|
|
53
|
-
/* declare official node name */
|
|
54
|
-
static name = "device";
|
|
55
|
-
/* internal state */
|
|
56
|
-
io = null;
|
|
57
|
-
/* construct node */
|
|
58
|
-
constructor(id, cfg, opts, args) {
|
|
59
|
-
super(id, cfg, opts, args);
|
|
60
|
-
/* declare node configuration parameters */
|
|
61
|
-
this.configure({
|
|
62
|
-
device: { type: "string", pos: 0, val: "", match: /^(.+?):(.+)$/ },
|
|
63
|
-
mode: { type: "string", pos: 1, val: "rw", match: /^(?:r|w|rw)$/ },
|
|
64
|
-
chunk: { type: "number", pos: 2, val: 200, match: (n) => n >= 10 && n <= 1000 }
|
|
65
|
-
});
|
|
66
|
-
/* declare node input/output format */
|
|
67
|
-
if (this.params.mode === "rw") {
|
|
68
|
-
this.input = "audio";
|
|
69
|
-
this.output = "audio";
|
|
70
|
-
}
|
|
71
|
-
else if (this.params.mode === "r") {
|
|
72
|
-
this.input = "none";
|
|
73
|
-
this.output = "audio";
|
|
74
|
-
}
|
|
75
|
-
else if (this.params.mode === "w") {
|
|
76
|
-
this.input = "audio";
|
|
77
|
-
this.output = "none";
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/* INTERNAL: utility function for finding audio device by pseudo-URL notation */
|
|
81
|
-
audioDeviceFromURL(mode, url) {
|
|
82
|
-
/* parse URL */
|
|
83
|
-
const m = url.match(/^(.+?):(.+)$/);
|
|
84
|
-
if (m === null)
|
|
85
|
-
throw new Error(`invalid audio device URL "${url}"`);
|
|
86
|
-
const [, type, name] = m;
|
|
87
|
-
/* determine audio API */
|
|
88
|
-
const apis = naudiodon_1.default.getHostAPIs();
|
|
89
|
-
const api = apis.HostAPIs.find((api) => api.type.toLowerCase() === type.toLowerCase());
|
|
90
|
-
if (!api)
|
|
91
|
-
throw new Error(`invalid audio API type "${type}"`);
|
|
92
|
-
/* determine device of audio API */
|
|
93
|
-
const devices = naudiodon_1.default.getDevices();
|
|
94
|
-
for (const device of devices)
|
|
95
|
-
this.log("info", `found audio device "${device.name}" ` +
|
|
96
|
-
`(inputs: ${device.maxInputChannels}, outputs: ${device.maxOutputChannels}`);
|
|
97
|
-
const device = devices.find((device) => {
|
|
98
|
-
return (((mode === "r" && device.maxInputChannels > 0)
|
|
99
|
-
|| (mode === "w" && device.maxOutputChannels > 0)
|
|
100
|
-
|| (mode === "rw" && device.maxInputChannels > 0 && device.maxOutputChannels > 0)
|
|
101
|
-
|| (mode === "any" && (device.maxInputChannels > 0 || device.maxOutputChannels > 0)))
|
|
102
|
-
&& device.name.match(name)
|
|
103
|
-
&& device.hostAPIName === api.name);
|
|
104
|
-
});
|
|
105
|
-
if (!device)
|
|
106
|
-
throw new Error(`invalid audio device "${name}" (of audio API type "${type}")`);
|
|
107
|
-
return device;
|
|
108
|
-
}
|
|
109
|
-
/* open node */
|
|
110
|
-
async open() {
|
|
111
|
-
if (this.params.device === "")
|
|
112
|
-
throw new Error("required parameter \"device\" has to be given");
|
|
113
|
-
/* determine device */
|
|
114
|
-
const device = this.audioDeviceFromURL(this.params.mode, this.params.device);
|
|
115
|
-
/* sanity check sample rate compatibility
|
|
116
|
-
(we still do not resample in input/output for simplification reasons) */
|
|
117
|
-
if (device.defaultSampleRate !== this.config.audioSampleRate)
|
|
118
|
-
throw new Error(`audio device sample rate ${device.defaultSampleRate} is ` +
|
|
119
|
-
`incompatible with required sample rate ${this.config.audioSampleRate}`);
|
|
120
|
-
/* determine how many bytes we need per chunk when
|
|
121
|
-
the chunk should be the requested duration */
|
|
122
|
-
const highwaterMark = (this.config.audioSampleRate *
|
|
123
|
-
(this.config.audioBitDepth / 8)) / (1000 / this.params.chunk);
|
|
124
|
-
/* establish device connection
|
|
125
|
-
Notice: "naudion" actually implements Stream.{Readable,Writable,Duplex}, but
|
|
126
|
-
declares just its sub-interface NodeJS.{Readable,Writable,Duplex}Stream,
|
|
127
|
-
so it is correct to cast it back to Stream.{Readable,Writable,Duplex} */
|
|
128
|
-
/* FIXME: the underlying PortAudio outputs verbose/debugging messages */
|
|
129
|
-
if (this.params.mode === "rw") {
|
|
130
|
-
/* input/output device */
|
|
131
|
-
if (device.maxInputChannels === 0)
|
|
132
|
-
throw new Error(`device "${device.id}" does not have any input channels (required by read/write mode)`);
|
|
133
|
-
if (device.maxOutputChannels === 0)
|
|
134
|
-
throw new Error(`device "${device.id}" does not have any output channels (required by read/write mode)`);
|
|
135
|
-
this.log("info", `resolved "${this.params.device}" to duplex device "${device.id}"`);
|
|
136
|
-
this.io = naudiodon_1.default.AudioIO({
|
|
137
|
-
inOptions: {
|
|
138
|
-
deviceId: device.id,
|
|
139
|
-
channelCount: this.config.audioChannels,
|
|
140
|
-
sampleRate: this.config.audioSampleRate,
|
|
141
|
-
sampleFormat: this.config.audioBitDepth,
|
|
142
|
-
highwaterMark
|
|
143
|
-
},
|
|
144
|
-
outOptions: {
|
|
145
|
-
deviceId: device.id,
|
|
146
|
-
channelCount: this.config.audioChannels,
|
|
147
|
-
sampleRate: this.config.audioSampleRate,
|
|
148
|
-
sampleFormat: this.config.audioBitDepth,
|
|
149
|
-
highwaterMark
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
this.stream = this.io;
|
|
153
|
-
/* convert regular stream into object-mode stream */
|
|
154
|
-
const wrapper1 = utils.createTransformStreamForWritableSide();
|
|
155
|
-
const wrapper2 = utils.createTransformStreamForReadableSide("audio", () => this.timeZero);
|
|
156
|
-
this.stream = node_stream_1.default.compose(wrapper1, this.stream, wrapper2);
|
|
157
|
-
}
|
|
158
|
-
else if (this.params.mode === "r") {
|
|
159
|
-
/* input device */
|
|
160
|
-
if (device.maxInputChannels === 0)
|
|
161
|
-
throw new Error(`device "${device.id}" does not have any input channels (required by read mode)`);
|
|
162
|
-
this.log("info", `resolved "${this.params.device}" to input device "${device.id}"`);
|
|
163
|
-
this.io = naudiodon_1.default.AudioIO({
|
|
164
|
-
inOptions: {
|
|
165
|
-
deviceId: device.id,
|
|
166
|
-
channelCount: this.config.audioChannels,
|
|
167
|
-
sampleRate: this.config.audioSampleRate,
|
|
168
|
-
sampleFormat: this.config.audioBitDepth,
|
|
169
|
-
highwaterMark
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
this.stream = this.io;
|
|
173
|
-
/* convert regular stream into object-mode stream */
|
|
174
|
-
const wrapper = utils.createTransformStreamForReadableSide("audio", () => this.timeZero);
|
|
175
|
-
this.stream.pipe(wrapper);
|
|
176
|
-
this.stream = wrapper;
|
|
177
|
-
}
|
|
178
|
-
else if (this.params.mode === "w") {
|
|
179
|
-
/* output device */
|
|
180
|
-
if (device.maxOutputChannels === 0)
|
|
181
|
-
throw new Error(`device "${device.id}" does not have any output channels (required by write mode)`);
|
|
182
|
-
this.log("info", `resolved "${this.params.device}" to output device "${device.id}"`);
|
|
183
|
-
this.io = naudiodon_1.default.AudioIO({
|
|
184
|
-
outOptions: {
|
|
185
|
-
deviceId: device.id,
|
|
186
|
-
channelCount: this.config.audioChannels,
|
|
187
|
-
sampleRate: this.config.audioSampleRate,
|
|
188
|
-
sampleFormat: this.config.audioBitDepth,
|
|
189
|
-
highwaterMark
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
this.stream = this.io;
|
|
193
|
-
/* convert regular stream into object-mode stream */
|
|
194
|
-
const wrapper = utils.createTransformStreamForWritableSide();
|
|
195
|
-
wrapper.pipe(this.stream);
|
|
196
|
-
this.stream = wrapper;
|
|
197
|
-
}
|
|
198
|
-
else
|
|
199
|
-
throw new Error(`device "${device.id}" does not have any input or output channels`);
|
|
200
|
-
/* pass-through PortAudio errors */
|
|
201
|
-
this.io.on("error", (err) => {
|
|
202
|
-
this.emit("error", err);
|
|
203
|
-
});
|
|
204
|
-
/* start PortAudio */
|
|
205
|
-
this.io.start();
|
|
206
|
-
}
|
|
207
|
-
/* close node */
|
|
208
|
-
async close() {
|
|
209
|
-
/* shutdown PortAudio */
|
|
210
|
-
if (this.io !== null) {
|
|
211
|
-
await new Promise((resolve, reject) => {
|
|
212
|
-
this.io.abort(() => {
|
|
213
|
-
resolve();
|
|
214
|
-
});
|
|
215
|
-
});
|
|
216
|
-
await new Promise((resolve, reject) => {
|
|
217
|
-
this.io.quit(() => {
|
|
218
|
-
resolve();
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
this.io = null;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
exports.default = SpeechFlowNodeDevice;
|
|
226
|
-
//# sourceMappingURL=speechflow-node-xio-device.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"speechflow-node-xio-device.js","sourceRoot":"","sources":["../src/speechflow-node-xio-device.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import SpeechFlowNode from "./speechflow-node";
|
|
2
|
-
export default class SpeechFlowNodeFile 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
|
-
}
|