speechflow 1.2.3 → 1.2.4
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 +5 -0
- package/README.md +6 -5
- package/dst/speechflow-node-x2x-filter.js +7 -4
- package/dst/speechflow-node-x2x-filter.js.map +1 -1
- package/etc/speechflow.yaml +2 -2
- package/package.json +2 -2
- package/src/speechflow-node-t2a-elevenlabs.ts +0 -1
- package/src/speechflow-node-x2x-filter.ts +8 -5
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -200,9 +200,9 @@ They can also be found in the sample [speechflow.yaml](./etc/speechflow.yaml) fi
|
|
|
200
200
|
password: env.SPEECHFLOW_MQTT_PASS,
|
|
201
201
|
topicWrite: "stream/studio/sender"),
|
|
202
202
|
{
|
|
203
|
-
filter(type: "text", var: "meta:gender", op: "==", val: "male") |
|
|
203
|
+
filter(name: "S2T-male", type: "text", var: "meta:gender", op: "==", val: "male") |
|
|
204
204
|
elevenlabs(voice: "Mark", optimize: "latency", speed: 1.05, language: "en"),
|
|
205
|
-
filter(type: "text", var: "meta:gender", op: "==", val: "female") |
|
|
205
|
+
filter(name: "S2T-female", type: "text", var: "meta:gender", op: "==", val: "female") |
|
|
206
206
|
elevenlabs(voice: "Brittney", optimize: "latency", speed: 1.05, language: "en")
|
|
207
207
|
} | {
|
|
208
208
|
wav(mode: "encode") |
|
|
@@ -564,9 +564,10 @@ First a short overview of the available processing nodes:
|
|
|
564
564
|
| Parameter | Position | Default | Requirement |
|
|
565
565
|
| ------------ | --------- | -------- | --------------------- |
|
|
566
566
|
| **type** | 0 | "audio" | `/^(?:audio\|text)$/` |
|
|
567
|
-
| **
|
|
568
|
-
| **
|
|
569
|
-
| **
|
|
567
|
+
| **name** | 1 | "filter" | `/^.+$/` |
|
|
568
|
+
| **var** | 2 | "" | `/^(?:meta:.+|payload:(?:length|text)|time:(?:start|end))$/` |
|
|
569
|
+
| **op** | 3 | "==" | `/^(?:<|<=|==|!=|~~|!~|>=|>)$/` |
|
|
570
|
+
| **val** | 4 | "" | `/^.*$/` |
|
|
570
571
|
|
|
571
572
|
- Node: **trace**<br/>
|
|
572
573
|
Purpose: **data flow tracing**<br/>
|
|
@@ -22,9 +22,10 @@ class SpeechFlowNodeFilter extends speechflow_node_1.default {
|
|
|
22
22
|
/* declare node configuration parameters */
|
|
23
23
|
this.configure({
|
|
24
24
|
type: { type: "string", pos: 0, val: "audio", match: /^(?:audio|text)$/ },
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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: /^.*$/ }
|
|
28
29
|
});
|
|
29
30
|
/* declare node input/output format */
|
|
30
31
|
this.input = this.params.type;
|
|
@@ -91,8 +92,10 @@ class SpeechFlowNodeFilter extends speechflow_node_1.default {
|
|
|
91
92
|
val1 = chunk.timestampStart.toMillis();
|
|
92
93
|
else if (self.params.key === "time:end")
|
|
93
94
|
val1 = chunk.timestampEnd.toMillis();
|
|
94
|
-
if (comparison(val1, self.params.op, val2))
|
|
95
|
+
if (comparison(val1, self.params.op, val2)) {
|
|
96
|
+
self.log("info", `[${self.params.name}]: passing through ${chunk.type} chunk`);
|
|
95
97
|
this.push(chunk);
|
|
98
|
+
}
|
|
96
99
|
callback();
|
|
97
100
|
},
|
|
98
101
|
final(callback) {
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"speechflow-node-x2x-filter.js","sourceRoot":"","sources":["../src/speechflow-node-x2x-filter.ts"],"names":[],"mappings":"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"}
|
package/etc/speechflow.yaml
CHANGED
|
@@ -87,9 +87,9 @@ studio-translation: |
|
|
|
87
87
|
password: env.SPEECHFLOW_MQTT_PASS,
|
|
88
88
|
topicWrite: "stream/studio/sender"),
|
|
89
89
|
{
|
|
90
|
-
filter(type: "text", var: "meta:gender", op: "==", val: "male") |
|
|
90
|
+
filter(name: "S2T-male", type: "text", var: "meta:gender", op: "==", val: "male") |
|
|
91
91
|
elevenlabs(voice: "Mark", optimize: "latency", speed: 1.05, language: "en"),
|
|
92
|
-
filter(type: "text", var: "meta:gender", op: "==", val: "female") |
|
|
92
|
+
filter(name: "S2T-female", type: "text", var: "meta:gender", op: "==", val: "female") |
|
|
93
93
|
elevenlabs(voice: "Brittney", optimize: "latency", speed: 1.05, language: "en")
|
|
94
94
|
} | {
|
|
95
95
|
wav(mode: "encode") |
|
package/package.json
CHANGED
|
@@ -133,7 +133,6 @@ export default class SpeechFlowNodeElevenlabs extends SpeechFlowNode {
|
|
|
133
133
|
if (Buffer.isBuffer(chunk.payload))
|
|
134
134
|
callback(new Error("invalid chunk payload type"))
|
|
135
135
|
else {
|
|
136
|
-
log("info", `ElevenLabs: send text: ${JSON.stringify(chunk.payload)}`)
|
|
137
136
|
speechStream(chunk.payload).then((stream) => {
|
|
138
137
|
getStreamAsBuffer(stream).then((buffer) => {
|
|
139
138
|
const bufferResampled = resampler.processChunk(buffer)
|
|
@@ -21,10 +21,11 @@ export default class SpeechFlowNodeFilter extends SpeechFlowNode {
|
|
|
21
21
|
|
|
22
22
|
/* declare node configuration parameters */
|
|
23
23
|
this.configure({
|
|
24
|
-
type: { type: "string", pos: 0, val: "audio",
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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: /^.*$/ }
|
|
28
29
|
})
|
|
29
30
|
|
|
30
31
|
/* declare node input/output format */
|
|
@@ -101,8 +102,10 @@ export default class SpeechFlowNodeFilter extends SpeechFlowNode {
|
|
|
101
102
|
val1 = chunk.timestampStart.toMillis()
|
|
102
103
|
else if (self.params.key === "time:end")
|
|
103
104
|
val1 = chunk.timestampEnd.toMillis()
|
|
104
|
-
if (comparison(val1, self.params.op, val2))
|
|
105
|
+
if (comparison(val1, self.params.op, val2)) {
|
|
106
|
+
self.log("info", `[${self.params.name}]: passing through ${chunk.type} chunk`)
|
|
105
107
|
this.push(chunk)
|
|
108
|
+
}
|
|
106
109
|
callback()
|
|
107
110
|
},
|
|
108
111
|
final (callback) {
|