@livekit/agents-plugin-elevenlabs 0.1.0 → 0.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/dist/tts.js CHANGED
@@ -1,9 +1,11 @@
1
+ var _a;
1
2
  // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
3
  //
3
4
  // SPDX-License-Identifier: Apache-2.0
4
- import { log, tts } from '@livekit/agents';
5
+ import { AsyncIterableQueue, log, tokenize, tts } from '@livekit/agents';
5
6
  import { AudioFrame } from '@livekit/rtc-node';
6
- import { URL } from 'url';
7
+ import { randomUUID } from 'node:crypto';
8
+ import { URL } from 'node:url';
7
9
  import { WebSocket } from 'ws';
8
10
  const DEFAULT_VOICE = {
9
11
  id: 'EXAVITQu4vr4xnSDxMaL',
@@ -16,30 +18,34 @@ const DEFAULT_VOICE = {
16
18
  use_speaker_boost: true,
17
19
  },
18
20
  };
19
- const API_BASE_URL_V1 = 'https://api.elevenlabs.io/v1';
21
+ const API_BASE_URL_V1 = 'https://api.elevenlabs.io/v1/';
20
22
  const AUTHORIZATION_HEADER = 'xi-api-key';
21
- const STREAM_EOS = '';
23
+ const defaultTTSOptions = {
24
+ apiKey: process.env.ELEVEN_API_KEY,
25
+ voice: DEFAULT_VOICE,
26
+ modelID: 'eleven_turbo_v2_5',
27
+ baseURL: API_BASE_URL_V1,
28
+ encoding: 'pcm_22050',
29
+ streamingLatency: 3,
30
+ wordTokenizer: new tokenize.basic.WordTokenizer(false),
31
+ chunkLengthSchedule: [],
32
+ enableSsmlParsing: false,
33
+ };
22
34
  export class TTS extends tts.TTS {
23
- config;
24
- constructor(voice = DEFAULT_VOICE, modelID = 'eleven_multilingual_v2', apiKey, baseURL, sampleRate = 24000, latency = 2) {
25
- super(true);
26
- apiKey = apiKey || process.env.ELEVEN_API_KEY;
27
- if (apiKey === undefined) {
35
+ #opts;
36
+ constructor(opts = defaultTTSOptions) {
37
+ super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {
38
+ streaming: true,
39
+ });
40
+ if (opts.apiKey === undefined) {
28
41
  throw new Error('ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY');
29
42
  }
30
- this.config = {
31
- voice,
32
- modelID,
33
- apiKey,
34
- baseURL: baseURL || API_BASE_URL_V1,
35
- sampleRate,
36
- latency,
37
- };
43
+ this.#opts = { ...defaultTTSOptions, ...opts };
38
44
  }
39
45
  async listVoices() {
40
- return fetch(this.config.baseURL + '/voices', {
46
+ return fetch(this.#opts.baseURL + '/voices', {
41
47
  headers: {
42
- [AUTHORIZATION_HEADER]: this.config.apiKey,
48
+ [AUTHORIZATION_HEADER]: this.#opts.apiKey,
43
49
  },
44
50
  })
45
51
  .then((data) => data.json())
@@ -56,54 +62,67 @@ export class TTS extends tts.TTS {
56
62
  return voices;
57
63
  });
58
64
  }
59
- async synthesize(text) {
60
- return new ChunkedStream(text, this.config);
61
- }
62
65
  stream() {
63
- return new SynthesizeStream(this.config);
66
+ return new SynthesizeStream(this.#opts);
64
67
  }
65
68
  }
66
69
  export class SynthesizeStream extends tts.SynthesizeStream {
67
- closed;
68
- config;
69
- text;
70
- task;
71
- queue = [];
72
- eventQueue = [];
73
- constructor(config) {
70
+ #opts;
71
+ #logger = log();
72
+ streamURL;
73
+ constructor(opts) {
74
74
  super();
75
- this.config = config;
75
+ this.#opts = opts;
76
76
  this.closed = false;
77
- this.text = '';
78
- this.task = {
79
- run: new Promise(() => {
80
- this.run(32);
81
- }),
82
- cancel: () => { },
77
+ // add trailing slash to URL if needed
78
+ const baseURL = opts.baseURL + (opts.baseURL.endsWith('/') ? '' : '/');
79
+ this.streamURL = new URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);
80
+ const params = {
81
+ model_id: opts.modelID,
82
+ output_format: opts.encoding,
83
+ optimize_streaming_latency: `${opts.streamingLatency}`,
84
+ enable_ssml_parsing: `${opts.enableSsmlParsing}`,
83
85
  };
86
+ Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));
87
+ this.streamURL.protocol = this.streamURL.protocol.replace('http', 'ws');
88
+ this.#run();
89
+ }
90
+ async #run() {
91
+ const segments = new AsyncIterableQueue();
92
+ const tokenizeInput = async () => {
93
+ let stream = null;
94
+ for await (const text of this.input) {
95
+ if (text === _a.FLUSH_SENTINEL) {
96
+ if (stream) {
97
+ stream.close();
98
+ }
99
+ stream = null;
100
+ }
101
+ else {
102
+ if (!stream) {
103
+ stream = this.#opts.wordTokenizer.stream();
104
+ segments.put(stream);
105
+ }
106
+ stream.pushText(text);
107
+ }
108
+ }
109
+ segments.close();
110
+ };
111
+ const runStream = async () => {
112
+ for await (const stream of segments) {
113
+ await this.#runWS(stream);
114
+ this.queue.put(_a.END_OF_STREAM);
115
+ }
116
+ };
117
+ await Promise.all([tokenizeInput(), runStream()]);
118
+ this.close();
84
119
  }
85
- get streamURL() {
86
- return `${this.config.baseURL}/text-to-speech/${this.config.voice.id}/stream-input?model_id=${this.config.modelID}&optimize_streaming_latency=${this.config.latency}`;
87
- }
88
- pushText(token) {
89
- if (this.closed)
90
- throw new Error('cannot push to a closed stream');
91
- if (!token || token.length === 0)
92
- return;
93
- const splitters = '.,?!;:—-()[]} ';
94
- this.text += token;
95
- if (splitters.includes(token[token.length - 1])) {
96
- this.queue.push(this.text);
97
- this.text = '';
98
- }
99
- }
100
- async run(maxRetry) {
120
+ async #runWS(stream, maxRetry = 3) {
101
121
  let retries = 0;
102
- while (!this.closed) {
103
- const url = new URL(this.streamURL);
104
- url.protocol = url.protocol.replace('http', 'ws');
105
- const ws = new WebSocket(url, {
106
- headers: { [AUTHORIZATION_HEADER]: this.config.apiKey },
122
+ let ws;
123
+ while (true) {
124
+ ws = new WebSocket(this.streamURL, {
125
+ headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey },
107
126
  });
108
127
  try {
109
128
  await new Promise((resolve, reject) => {
@@ -111,36 +130,7 @@ export class SynthesizeStream extends tts.SynthesizeStream {
111
130
  ws.on('error', (error) => reject(error));
112
131
  ws.on('close', (code) => reject(`WebSocket returned ${code}`));
113
132
  });
114
- ws.send(JSON.stringify({ text: ' ', voice_settings: this.config.voice }));
115
- let started = false;
116
- const retryQueue = [];
117
- const task = this.listenTask(ws);
118
- while (ws.readyState !== ws.CLOSED) {
119
- let text = undefined;
120
- if (retryQueue.length === 0) {
121
- text = this.queue.shift();
122
- }
123
- else {
124
- text = retryQueue.shift();
125
- }
126
- if (!started) {
127
- this.eventQueue.push(new tts.SynthesisEvent(tts.SynthesisEventType.STARTED));
128
- started = true;
129
- }
130
- try {
131
- ws.send(JSON.stringify({ text, try_trigger_generation: true }));
132
- }
133
- catch (e) {
134
- // XI closes idle connections after a while.
135
- retryQueue.push(text);
136
- break;
137
- }
138
- if (text == STREAM_EOS) {
139
- await task;
140
- this.eventQueue.push(new tts.SynthesisEvent(tts.SynthesisEventType.FINISHED));
141
- break;
142
- }
143
- }
133
+ break;
144
134
  }
145
135
  catch (e) {
146
136
  if (retries >= maxRetry) {
@@ -148,104 +138,72 @@ export class SynthesizeStream extends tts.SynthesizeStream {
148
138
  }
149
139
  const delay = Math.min(retries * 5, 5);
150
140
  retries++;
151
- log.warn(`failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`);
141
+ this.#logger.warn(`failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`);
152
142
  await new Promise((resolve) => setTimeout(resolve, delay * 1000));
153
143
  }
154
144
  }
155
- this.closed = true;
156
- }
157
- async listenTask(ws) {
158
- while (!this.closed) {
159
- try {
160
- await new Promise((resolve, reject) => {
161
- ws.on('message', (data) => resolve(data));
162
- ws.on('close', (code, reason) => reject(`WebSocket closed with code ${code}: ${reason}`));
163
- }).then((msg) => {
164
- const json = JSON.parse(msg.toString());
165
- if ('audio' in json) {
166
- const data = new Uint16Array(Buffer.from(json.audio, 'base64'));
167
- const audioFrame = new AudioFrame(data, this.config.sampleRate, 1, Math.trunc(data.length / 2));
168
- this.eventQueue.push(new tts.SynthesisEvent(tts.SynthesisEventType.AUDIO, { text: '', data: audioFrame }));
145
+ const requestId = randomUUID();
146
+ const segmentId = randomUUID();
147
+ ws.send(JSON.stringify({
148
+ text: ' ',
149
+ voice_settings: this.#opts.voice.settings,
150
+ try_trigger_generation: true,
151
+ chunk_length_schedule: this.#opts.chunkLengthSchedule,
152
+ }));
153
+ let eosSent = false;
154
+ const sendTask = async () => {
155
+ let xmlContent = [];
156
+ for await (const data of stream) {
157
+ let text = data.token;
158
+ if ((this.#opts.enableSsmlParsing && text.startsWith('<phoneme')) || xmlContent.length) {
159
+ xmlContent.push(text);
160
+ if (text.indexOf('</phoneme>') !== -1) {
161
+ text = xmlContent.join(' ');
162
+ xmlContent = [];
169
163
  }
170
- });
164
+ else {
165
+ continue;
166
+ }
167
+ }
168
+ ws.send(JSON.stringify({ text: text + ' ', try_trigger_generation: false }));
171
169
  }
172
- catch {
173
- break;
170
+ if (xmlContent.length) {
171
+ this.#logger.warn('ElevenLabs stream ended with incomplete XML content');
174
172
  }
175
- }
176
- }
177
- flush() {
178
- this.queue.push(this.text + ' ');
179
- this.text = '';
180
- this.queue.push('');
181
- }
182
- next() {
183
- const event = this.eventQueue.shift();
184
- if (event) {
185
- return { done: false, value: event };
186
- }
187
- else {
188
- return { done: true, value: undefined };
189
- }
190
- }
191
- async close(wait) {
192
- if (wait) {
193
- log.warn('wait is not yet supported for ElevenLabs TTS');
194
- }
195
- try {
196
- await this.task.run;
197
- }
198
- finally {
199
- this.eventQueue.push(undefined);
200
- }
201
- }
202
- }
203
- class ChunkedStream extends tts.ChunkedStream {
204
- config;
205
- text;
206
- queue = [];
207
- constructor(text, config) {
208
- super();
209
- this.config = config;
210
- this.text = text;
211
- }
212
- async next() {
213
- await this.run();
214
- const audio = this.queue.shift();
215
- if (audio) {
216
- return { done: false, value: audio };
217
- }
218
- else {
219
- return { done: true, value: undefined };
220
- }
221
- }
222
- async close() {
223
- this.queue.push(undefined);
224
- }
225
- async run() {
226
- const voice = this.config.voice;
227
- const url = new URL(`${this.config.baseURL}/text-to-speech/${voice.id}/stream`);
228
- url.searchParams.append('output_format', 'pcm_' + this.config.sampleRate);
229
- url.searchParams.append('optimize_streaming_latency', this.config.latency.toString());
230
- await fetch(url.toString(), {
231
- method: 'POST',
232
- headers: {
233
- [AUTHORIZATION_HEADER]: this.config.apiKey,
234
- 'Content-Type': 'application/json',
235
- },
236
- body: JSON.stringify({
237
- text: this.text,
238
- model_id: this.config.modelID,
239
- voice_settings: this.config.voice.settings || undefined,
240
- }),
241
- })
242
- .then((data) => data.arrayBuffer())
243
- .then((data) => new DataView(data, 0, data.byteLength))
244
- .then((data) => this.queue.push({
245
- text: this.text,
246
- data: new AudioFrame(new Uint16Array(data.buffer), this.config.sampleRate, 1, data.byteLength / 2),
247
- }, undefined))
248
- .catch(() => this.queue.push(undefined));
173
+ ws.send(JSON.stringify({ text: '' }));
174
+ eosSent = true;
175
+ };
176
+ const listenTask = async () => {
177
+ while (!this.closed) {
178
+ try {
179
+ await new Promise((resolve, reject) => {
180
+ ws.removeAllListeners();
181
+ ws.on('message', (data) => resolve(data));
182
+ ws.on('close', (code, reason) => {
183
+ if (!eosSent) {
184
+ this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);
185
+ }
186
+ reject();
187
+ });
188
+ }).then((msg) => {
189
+ const json = JSON.parse(msg.toString());
190
+ if ('audio' in json) {
191
+ const data = new Int16Array(Buffer.from(json.audio, 'base64').buffer);
192
+ const frame = new AudioFrame(data, sampleRateFromFormat(this.#opts.encoding), 1, data.length);
193
+ this.queue.put({ requestId, segmentId, frame });
194
+ }
195
+ });
196
+ }
197
+ catch {
198
+ break;
199
+ }
200
+ }
201
+ };
202
+ await Promise.all([sendTask(), listenTask()]);
249
203
  }
250
204
  }
205
+ _a = SynthesizeStream;
206
+ const sampleRateFromFormat = (encoding) => {
207
+ return Number(encoding.split('_')[1]);
208
+ };
251
209
  //# sourceMappingURL=tts.js.map
package/dist/tts.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tts.js","sourceRoot":"","sources":["../src/tts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tts.js","sourceRoot":"","sources":["../src/tts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,25 +1,25 @@
1
1
  {
2
2
  "name": "@livekit/agents-plugin-elevenlabs",
3
- "version": "0.1.0",
3
+ "version": "0.4.0",
4
4
  "description": "ElevenLabs plugin for LiveKit Node Agents",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
- "author": "aoife cassidy <aoife@cassidy.sh>",
7
+ "author": "LiveKit",
8
8
  "type": "module",
9
9
  "devDependencies": {
10
10
  "@microsoft/api-extractor": "^7.35.0",
11
- "@types/ws": "^8.5.10"
12
- },
13
- "peerDependencies": {
11
+ "@types/ws": "^8.5.10",
14
12
  "typescript": "^5.0.0"
15
13
  },
16
14
  "dependencies": {
17
- "@livekit/rtc-node": "^0.1.0",
15
+ "@livekit/rtc-node": "^0.11.1",
18
16
  "ws": "^8.16.0",
19
- "@livekit/agents": "0.1.0"
17
+ "@livekit/agents": "0.4.0"
20
18
  },
21
19
  "scripts": {
22
20
  "build": "tsc",
21
+ "clean": "rm -rf dist",
22
+ "clean:build": "pnpm clean && pnpm build",
23
23
  "lint": "eslint -f unix \"src/**/*.{ts,js}\"",
24
24
  "api:check": "api-extractor run --typescript-compiler-folder ../../node_modules/typescript",
25
25
  "api:update": "api-extractor run --local --typescript-compiler-folder ../../node_modules/typescript --verbose"
package/src/models.ts CHANGED
@@ -6,4 +6,15 @@ export type TTSModels =
6
6
  | 'eleven_monolingual_v1'
7
7
  | 'eleven_multilingual_v1'
8
8
  | 'eleven_multilingual_v2'
9
- | 'eleven_turbo_v2';
9
+ | 'eleven_turbo_v2'
10
+ | 'eleven_turbo_v2_5';
11
+
12
+ export type TTSEncoding =
13
+ // XXX(nbsp): MP3 is not yet supported
14
+ // | 'mp3_22050_32'
15
+ // | 'mp3_44100_32'
16
+ // | 'mp3_44100_64'
17
+ // | 'mp3_44100_96'
18
+ // | 'mp3_44100_128'
19
+ // | 'mp3_44100_192'
20
+ 'pcm_16000' | 'pcm_22050' | 'pcm_44100';