From 7db49b90671f41768ad9b5a942164df2b3f2708a Mon Sep 17 00:00:00 2001 From: Jason Maldonis Date: Mon, 17 Nov 2025 12:22:52 -0600 Subject: [PATCH 1/3] deepgram: added request IDs to debug logs Deepgram request IDs are necessary for investigating behavior at the request level. This commit adds DEBUG logs that print Deepgram request IDs when using Deepgram's STT or TTS. --- src/pipecat/services/deepgram/flux/stt.py | 6 ++++++ src/pipecat/services/deepgram/stt.py | 6 ++++++ src/pipecat/services/deepgram/tts.py | 12 ++++++++++++ 3 files changed, 24 insertions(+) diff --git a/src/pipecat/services/deepgram/flux/stt.py b/src/pipecat/services/deepgram/flux/stt.py index 17b5f5172..a561c9ae3 100644 --- a/src/pipecat/services/deepgram/flux/stt.py +++ b/src/pipecat/services/deepgram/flux/stt.py @@ -244,6 +244,12 @@ class DeepgramFluxSTTService(WebsocketSTTService): additional_headers={"Authorization": f"Token {self._api_key}"}, ) + headers = { + k: v for k, v in self._websocket.response.headers.items() + if k.startswith("dg-") + } + logger.debug(f'{self}: Websocket connection initialized: {{"headers": {headers}}}') + # Creating the receiver task if not self._receive_task: self._receive_task = self.create_task( diff --git a/src/pipecat/services/deepgram/stt.py b/src/pipecat/services/deepgram/stt.py index 6513fb186..4006766fb 100644 --- a/src/pipecat/services/deepgram/stt.py +++ b/src/pipecat/services/deepgram/stt.py @@ -234,6 +234,12 @@ class DeepgramSTTService(STTService): if not await self._connection.start(options=self._settings, addons=self._addons): await self.push_error(error_msg=f"Unable to connect to Deepgram") + else: + headers = { + k: v for k, v in self._connection._socket.response.headers.items() + if k.startswith("dg-") + } + logger.debug(f'{self}: Websocket connection initialized: {{"headers": {headers}}}') async def _disconnect(self): if await self._connection.is_connected(): diff --git a/src/pipecat/services/deepgram/tts.py b/src/pipecat/services/deepgram/tts.py index b497cdd08..51342335e 100644 --- a/src/pipecat/services/deepgram/tts.py +++ b/src/pipecat/services/deepgram/tts.py @@ -280,6 +280,18 @@ class DeepgramTTSService(WebsocketTTSService): await self._connect() await self.start_ttfb_metrics() + + response = await self._deepgram_client.speak.asyncrest.v("1").stream_raw( + {"text": text}, options + ) + + headers = { + k: v + for k, v in response.headers.items() + if k.startswith("dg-") + } + logger.debug(f'{self}: HTTP connection initialized: {{"headers": {headers}}}') + await self.start_tts_usage_metrics(text) yield TTSStartedFrame() From 2df91f4b37bde46daa39b94430b7e668c291e802 Mon Sep 17 00:00:00 2001 From: Jason Maldonis Date: Wed, 3 Dec 2025 08:02:25 -0600 Subject: [PATCH 2/3] fixed linting --- src/pipecat/services/deepgram/flux/stt.py | 3 +-- src/pipecat/services/deepgram/stt.py | 3 ++- src/pipecat/services/deepgram/tts.py | 6 +----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/pipecat/services/deepgram/flux/stt.py b/src/pipecat/services/deepgram/flux/stt.py index a561c9ae3..74e9d1053 100644 --- a/src/pipecat/services/deepgram/flux/stt.py +++ b/src/pipecat/services/deepgram/flux/stt.py @@ -245,8 +245,7 @@ class DeepgramFluxSTTService(WebsocketSTTService): ) headers = { - k: v for k, v in self._websocket.response.headers.items() - if k.startswith("dg-") + k: v for k, v in self._websocket.response.headers.items() if k.startswith("dg-") } logger.debug(f'{self}: Websocket connection initialized: {{"headers": {headers}}}') diff --git a/src/pipecat/services/deepgram/stt.py b/src/pipecat/services/deepgram/stt.py index 4006766fb..11be561b1 100644 --- a/src/pipecat/services/deepgram/stt.py +++ b/src/pipecat/services/deepgram/stt.py @@ -236,7 +236,8 @@ class DeepgramSTTService(STTService): await self.push_error(error_msg=f"Unable to connect to Deepgram") else: headers = { - k: v for k, v in self._connection._socket.response.headers.items() + k: v + for k, v in self._connection._socket.response.headers.items() if k.startswith("dg-") } logger.debug(f'{self}: Websocket connection initialized: {{"headers": {headers}}}') diff --git a/src/pipecat/services/deepgram/tts.py b/src/pipecat/services/deepgram/tts.py index 51342335e..0f555109e 100644 --- a/src/pipecat/services/deepgram/tts.py +++ b/src/pipecat/services/deepgram/tts.py @@ -285,11 +285,7 @@ class DeepgramTTSService(WebsocketTTSService): {"text": text}, options ) - headers = { - k: v - for k, v in response.headers.items() - if k.startswith("dg-") - } + headers = {k: v for k, v in response.headers.items() if k.startswith("dg-")} logger.debug(f'{self}: HTTP connection initialized: {{"headers": {headers}}}') await self.start_tts_usage_metrics(text) From e6f5561785ec5d12b730e6acc252e3e301a3145a Mon Sep 17 00:00:00 2001 From: Jason Maldonis Date: Wed, 3 Dec 2025 08:18:09 -0600 Subject: [PATCH 3/3] updated changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fb849848..38e1e2251 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 interaction (e.g., voice agents, speech-to-text) and operates at a native sample rate of 16 kHz with fixed enhancement parameters. +- Updated Deepgram logging to include Deepgram request IDs for improved debugging. + ### Deprecated - The `noise_gate_enable` parameter in `AICFilter` is deprecated and no longer