ElevenLabsTTSService: Only reset the context_id when interruptions are enabled

This commit is contained in:
Mark Backman
2025-07-23 17:11:33 -04:00
parent d8bcb81f35
commit 2297eb217e
2 changed files with 12 additions and 2 deletions

View File

@@ -45,6 +45,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
`pyneuphonic` package. This removes a package requirement, allowing Neuphonic
to work with more services.
- Updated `ElevenLabsTTSService` to handle the case where
`allow_interruptions=False`. Now, when interruptions are disabled, the same
context ID will be used throughout the conversation.
- Updated the `deepgram` optional dependency to 4.7.0, which downgrades the
`tasks cancelled error` to a debug log. This removes the log from appearing
in Pipecat logs upon leaving.

View File

@@ -642,8 +642,14 @@ class ElevenLabsTTSService(AudioContextWordTTSService):
yield TTSStartedFrame()
self._started = True
self._cumulative_time = 0
# Create new context ID and register it
self._context_id = str(uuid.uuid4())
# If a context ID does not exist, create a new one and
# register it. If an ID exists, that means the Pipeline is
# configured for allow_interruptions=False, so continue
# using the current ID. When interruptions are enabled
# (e.g. allow_interruptions=True), user speech results in
# an interruption, which resets the context ID.
if not self._context_id:
self._context_id = str(uuid.uuid4())
await self.create_audio_context(self._context_id)
# Initialize context with voice settings