From 3458b74fc958b79cd7b35fb1e882fa298a8ea439 Mon Sep 17 00:00:00 2001 From: Dante Noguez Date: Sat, 22 Nov 2025 09:02:37 -0600 Subject: [PATCH] Fix 11labs realtime dynamic updates (#3117) --- CHANGELOG.md | 4 ++++ src/pipecat/services/elevenlabs/stt.py | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9208b8d9..24734e799 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Fixed an issue in `ElevenLabsRealtimeSTTService` where dynamic language updates were not working. + ### Added - Added optional speaking rate control to `InworldTTSService`. diff --git a/src/pipecat/services/elevenlabs/stt.py b/src/pipecat/services/elevenlabs/stt.py index 8cbb40d63..03929882e 100644 --- a/src/pipecat/services/elevenlabs/stt.py +++ b/src/pipecat/services/elevenlabs/stt.py @@ -459,6 +459,8 @@ class ElevenLabsRealtimeSTTService(WebsocketSTTService): self._audio_format = "" # initialized in start() self._receive_task = None + self._settings = {"language": params.language_code} + def can_generate_metrics(self) -> bool: """Check if the service can generate processing metrics. @@ -477,7 +479,13 @@ class ElevenLabsRealtimeSTTService(WebsocketSTTService): Changing language requires reconnecting to the WebSocket. """ logger.info(f"Switching STT language to: [{language}]") - self._params.language_code = language.value if isinstance(language, Language) else language + new_language = ( + language_to_elevenlabs_language(language) + if isinstance(language, Language) + else language + ) + self._params.language_code = new_language + self._settings["language"] = new_language # Reconnect with new settings await self._disconnect() await self._connect()