From 662f04879cf90bcbd419b134397ced795151e392 Mon Sep 17 00:00:00 2001 From: Filipi Fuchter Date: Thu, 24 Jul 2025 12:00:14 -0300 Subject: [PATCH 1/3] Play delayed messages from `ElevenLabsTTSService` if they still belong to the current context. --- CHANGELOG.md | 3 +++ src/pipecat/services/elevenlabs/tts.py | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b05ee5708..eeb3dde3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Play delayed messages from `ElevenLabsTTSService` if they still belong to the + current context. + - Dependency compatibility improvements: Relaxed version constraints for core dependencies to support broader version ranges while maintaining stability: diff --git a/src/pipecat/services/elevenlabs/tts.py b/src/pipecat/services/elevenlabs/tts.py index c921c3f4b..3b4503e99 100644 --- a/src/pipecat/services/elevenlabs/tts.py +++ b/src/pipecat/services/elevenlabs/tts.py @@ -548,8 +548,12 @@ class ElevenLabsTTSService(AudioContextWordTTSService): # Check if this message belongs to the current context. # This should never happen, so warn about it. if not self.audio_context_available(received_ctx_id): - logger.warning(f"Ignoring message from unavailable context: {received_ctx_id}") - continue + if self._context_id == received_ctx_id: + logger.debug(f"Received a delayed message, recreating the context: {self._context_id}") + await self.create_audio_context(self._context_id) + else: + logger.warning(f"Ignoring message from unavailable context: {received_ctx_id}") + continue if msg.get("audio"): await self.stop_ttfb_metrics() From 097d7864311032ee3fa48568a20cc652ed9e2bf0 Mon Sep 17 00:00:00 2001 From: Filipi Fuchter Date: Thu, 24 Jul 2025 12:03:17 -0300 Subject: [PATCH 2/3] Fixing ruff format. --- src/pipecat/services/elevenlabs/tts.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pipecat/services/elevenlabs/tts.py b/src/pipecat/services/elevenlabs/tts.py index 3b4503e99..7858cf383 100644 --- a/src/pipecat/services/elevenlabs/tts.py +++ b/src/pipecat/services/elevenlabs/tts.py @@ -549,7 +549,9 @@ class ElevenLabsTTSService(AudioContextWordTTSService): # This should never happen, so warn about it. if not self.audio_context_available(received_ctx_id): if self._context_id == received_ctx_id: - logger.debug(f"Received a delayed message, recreating the context: {self._context_id}") + logger.debug( + f"Received a delayed message, recreating the context: {self._context_id}" + ) await self.create_audio_context(self._context_id) else: logger.warning(f"Ignoring message from unavailable context: {received_ctx_id}") From 3ce0ab8c6d0a8f569fb701f88d2240dd7449a5c3 Mon Sep 17 00:00:00 2001 From: Filipi da Silva Fuchter Date: Thu, 24 Jul 2025 12:05:17 -0300 Subject: [PATCH 3/3] Removing extra space. Co-authored-by: Mark Backman --- src/pipecat/services/elevenlabs/tts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pipecat/services/elevenlabs/tts.py b/src/pipecat/services/elevenlabs/tts.py index 7858cf383..80f0371b6 100644 --- a/src/pipecat/services/elevenlabs/tts.py +++ b/src/pipecat/services/elevenlabs/tts.py @@ -550,7 +550,7 @@ class ElevenLabsTTSService(AudioContextWordTTSService): if not self.audio_context_available(received_ctx_id): if self._context_id == received_ctx_id: logger.debug( - f"Received a delayed message, recreating the context: {self._context_id}" + f"Received a delayed message, recreating the context: {self._context_id}" ) await self.create_audio_context(self._context_id) else: