Merge pull request #2254 from pipecat-ai/mb/11labs-create-context-id

ElevenLabsTTSService: Only reset the context_id when interruptions ar…
This commit is contained in:
Mark Backman
2025-07-24 13:32:37 -07:00
committed by GitHub
2 changed files with 14 additions and 3 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,9 +642,16 @@ 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())
await self.create_audio_context(self._context_id)
# 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())
if not self.audio_context_available(self._context_id):
await self.create_audio_context(self._context_id)
# Initialize context with voice settings
msg = {"text": " ", "context_id": self._context_id}