@voxagent/bridge 0.3.4 → 0.3.5
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elevenlabs.d.ts","sourceRoot":"","sources":["../../src/tts/elevenlabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAGlD,OAAO,KAAK,EAAE,SAAS,EAAY,YAAY,EAAE,MAAM,YAAY,CAAC;AAKpE,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"elevenlabs.d.ts","sourceRoot":"","sources":["../../src/tts/elevenlabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAGlD,OAAO,KAAK,EAAE,SAAS,EAAY,YAAY,EAAE,MAAM,YAAY,CAAC;AAKpE,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAmChB,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,6BAA6B;IAC7B,aAAa,CAAC,EAAE;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AASD,qBAAa,gBAAiB,YAAW,SAAS;IAMpC,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,KAAgB;IACpC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAED,OAAO,EAAE,uBAAuB;IAM7D,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY;IAI3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAyQD,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/tts/elevenlabs.js
CHANGED
|
@@ -26,6 +26,25 @@ const FORMAT_TO_SAMPLE_RATE = {
|
|
|
26
26
|
function framesFor(sampleRate) {
|
|
27
27
|
return Math.round(sampleRate * 0.02);
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Detects whether a text delta ends on a sentence boundary, so we
|
|
31
|
+
* can ask ElevenLabs to flush audio at that point with
|
|
32
|
+
* `try_trigger_generation: true`. We also treat newlines as natural
|
|
33
|
+
* breaks because the Claude driver emits `\n` between text content
|
|
34
|
+
* blocks (`drivers/claude.ts` separator), and that's a reasonable
|
|
35
|
+
* place to let the listener hear what's been generated so far.
|
|
36
|
+
*/
|
|
37
|
+
function endsSentence(text) {
|
|
38
|
+
const trimmed = text.replace(/\s+$/, '');
|
|
39
|
+
if (trimmed.length === 0)
|
|
40
|
+
return false;
|
|
41
|
+
const lastChar = trimmed[trimmed.length - 1] ?? '';
|
|
42
|
+
return (lastChar === '.' ||
|
|
43
|
+
lastChar === '!' ||
|
|
44
|
+
lastChar === '?' ||
|
|
45
|
+
lastChar === ':' ||
|
|
46
|
+
/\n/.test(text));
|
|
47
|
+
}
|
|
29
48
|
export class ElevenLabsEngine {
|
|
30
49
|
options;
|
|
31
50
|
sampleRate;
|
|
@@ -83,6 +102,22 @@ class ElevenLabsUtterance {
|
|
|
83
102
|
}
|
|
84
103
|
this.opened = true;
|
|
85
104
|
// ElevenLabs requires a JSON config message before any text.
|
|
105
|
+
//
|
|
106
|
+
// `chunk_length_schedule` controls how many characters ElevenLabs
|
|
107
|
+
// buffers before generating each audio chunk. Default schedules
|
|
108
|
+
// (and our old `[120, 160, 250, 290]`) optimize for fewer/longer
|
|
109
|
+
// generations — good for cost, bad for first-token latency: the
|
|
110
|
+
// first audio chunk doesn't come back until at least 120 chars
|
|
111
|
+
// have streamed in, which is roughly the length of a complete
|
|
112
|
+
// first sentence. The user perceives "voice waits for the entire
|
|
113
|
+
// response to finish."
|
|
114
|
+
//
|
|
115
|
+
// Drop to `[50, 80, 120, 160]` so the first chunk fires after
|
|
116
|
+
// ~50 chars (typically the first short phrase / sentence start),
|
|
117
|
+
// then progressively longer chunks as the response continues.
|
|
118
|
+
// Trade slightly higher API call count for materially better
|
|
119
|
+
// perceived latency. `try_trigger_generation` per-delta (see
|
|
120
|
+
// `pushText` below) is the other half of the same fix.
|
|
86
121
|
ws.send(JSON.stringify({
|
|
87
122
|
text: ' ',
|
|
88
123
|
voice_settings: {
|
|
@@ -91,11 +126,11 @@ class ElevenLabsUtterance {
|
|
|
91
126
|
style: this.options.voiceSettings?.style ?? 0.6,
|
|
92
127
|
use_speaker_boost: this.options.voiceSettings?.useSpeakerBoost ?? true,
|
|
93
128
|
},
|
|
94
|
-
generation_config: { chunk_length_schedule: [
|
|
129
|
+
generation_config: { chunk_length_schedule: [50, 80, 120, 160] },
|
|
95
130
|
}));
|
|
96
131
|
// Flush any text buffered before open.
|
|
97
132
|
for (const text of this.pendingText) {
|
|
98
|
-
ws.send(JSON.stringify({ text }));
|
|
133
|
+
ws.send(JSON.stringify({ text, try_trigger_generation: endsSentence(text) }));
|
|
99
134
|
}
|
|
100
135
|
this.pendingText = [];
|
|
101
136
|
if (this.finished) {
|
|
@@ -203,7 +238,17 @@ class ElevenLabsUtterance {
|
|
|
203
238
|
return;
|
|
204
239
|
}
|
|
205
240
|
try {
|
|
206
|
-
|
|
241
|
+
// Set `try_trigger_generation: true` on deltas that close a
|
|
242
|
+
// sentence so ElevenLabs flushes whatever's buffered even if
|
|
243
|
+
// it's under the chunk-schedule threshold. This is what gives us
|
|
244
|
+
// sentence-by-sentence audio playback during streaming text
|
|
245
|
+
// (rather than waiting for the schedule's character thresholds
|
|
246
|
+
// alone). For non-sentence-ending deltas, omitting the flag
|
|
247
|
+
// lets the schedule decide naturally.
|
|
248
|
+
this.ws.send(JSON.stringify({
|
|
249
|
+
text: delta,
|
|
250
|
+
...(endsSentence(delta) ? { try_trigger_generation: true } : {}),
|
|
251
|
+
}));
|
|
207
252
|
}
|
|
208
253
|
catch (error) {
|
|
209
254
|
log.warn('elevenlabs_send_failed', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../src/tts/elevenlabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGpC,MAAM,kBAAkB,GAAG,2CAA2C,CAAC;AACvE,MAAM,YAAY,GAAG,CAAC,CAAC;AAQvB,MAAM,qBAAqB,GAA0C;IACnE,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;CAClB,CAAC;AAEF,qFAAqF;AACrF,SAAS,SAAS,CAAC,UAAkB;IACnC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC;AAwBD,MAAM,OAAO,gBAAgB;IAME;IALpB,UAAU,CAAS;IACnB,WAAW,GAAG,YAAY,CAAC;IAC3B,WAAW,CAAwB;IACnC,YAAY,CAAS;IAE9B,YAA6B,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;QAC3D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC;QACtD,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,cAAc,CAAC,WAAmB;QAChC,OAAO,IAAI,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,KAAK;QACT,+CAA+C;IACjD,CAAC;CACF;AAED,MAAM,mBAAmB;IAgBJ;IACA;IACA;IACA;IAlBX,EAAE,GAA2B,IAAI,CAAC;IAClC,MAAM,GAAG,KAAK,CAAC;IACf,QAAQ,GAAG,KAAK,CAAC;IACjB,SAAS,GAAG,KAAK,CAAC;IAClB,aAAa,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEhD,gDAAgD;IACxC,UAAU,GAAe,EAAE,CAAC;IAC5B,YAAY,GAAqD,EAAE,CAAC;IACpE,WAAW,GAAG,KAAK,CAAC;IAE5B,0DAA0D;IAClD,WAAW,GAAa,EAAE,CAAC;IAEnC,YACmB,WAAmB,EACnB,OAAgC,EAChC,WAAkC,EAClC,YAAoB;QAHpB,gBAAW,GAAX,WAAW,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAyB;QAChC,gBAAW,GAAX,WAAW,CAAuB;QAClC,iBAAY,GAAZ,YAAY,CAAQ;QAErC,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,GAAG,GAAG,GAAG,kBAAkB,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpL,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE;YAClC,OAAO,EAAE;gBACP,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;aAClC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;YAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,6DAA6D;YAC7D,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,GAAG;gBACT,cAAc,EAAE;oBACd,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,IAAI,IAAI;oBACxD,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,IAAI,IAAI;oBACrE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,IAAI,GAAG;oBAC/C,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,IAAI,IAAI;iBACvE;gBACD,iBAAiB,EAAE,EAAE,qBAAqB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../src/tts/elevenlabs.ts"],"names":[],"mappings":"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"}
|