From 50a4d43185ec7c6ef40558e40cfe44c10c6386f6 Mon Sep 17 00:00:00 2001 From: "rosetta-livekit-bot[bot]" <282703043+rosetta-livekit-bot[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 18:18:44 +0000 Subject: [PATCH] fix(elevenlabs): include stream request flags --- .changeset/elevenlabs-stream-flags.md | 5 +++++ plugins/elevenlabs/src/tts.ts | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 .changeset/elevenlabs-stream-flags.md diff --git a/.changeset/elevenlabs-stream-flags.md b/.changeset/elevenlabs-stream-flags.md new file mode 100644 index 000000000..110e16948 --- /dev/null +++ b/.changeset/elevenlabs-stream-flags.md @@ -0,0 +1,5 @@ +--- +'@livekit/agents-plugin-elevenlabs': patch +--- + +Add missing ElevenLabs streaming request flags for normalization and logging. diff --git a/plugins/elevenlabs/src/tts.ts b/plugins/elevenlabs/src/tts.ts index 84e13ef3c..00a0fc44a 100644 --- a/plugins/elevenlabs/src/tts.ts +++ b/plugins/elevenlabs/src/tts.ts @@ -136,8 +136,8 @@ function sampleRateFromFormat(encoding: TTSEncoding): number { } function synthesizeUrl(opts: ResolvedTTSOptions): string { - const { baseURL, voiceId, model, encoding, streamingLatency } = opts; - let url = `${baseURL}/text-to-speech/${voiceId}/stream?model_id=${model}&output_format=${encoding}`; + const { baseURL, voiceId, encoding, streamingLatency } = opts; + let url = `${baseURL}/text-to-speech/${voiceId}/stream?output_format=${encoding}&enable_logging=${String(opts.enableLogging).toLowerCase()}`; if (streamingLatency !== undefined) { url += `&optimize_streaming_latency=${streamingLatency}`; } @@ -837,6 +837,13 @@ export class ChunkedStream extends tts.ChunkedStream { const voiceSettings = this.#opts.voiceSettings ? stripUndefined(this.#opts.voiceSettings) : undefined; + const extraParams: Record = {}; + if (this.#opts.language) { + extraParams.language_code = getBaseLanguage(this.#opts.language); + } + if (this.#opts.applyLanguageTextNormalization !== undefined) { + extraParams.apply_language_text_normalization = this.#opts.applyLanguageTextNormalization; + } const requestId = shortuuid(); const bstream = new AudioByteStream(this.#opts.sampleRate, 1); @@ -852,6 +859,8 @@ export class ChunkedStream extends tts.ChunkedStream { text: this.inputText, model_id: this.#opts.model, voice_settings: voiceSettings, + apply_text_normalization: this.#opts.applyTextNormalization, + ...extraParams, }), signal: this.abortSignal, });