From d1ac7751da3048bef8b8096196df75d1e6d0c6a1 Mon Sep 17 00:00:00 2001 From: Vaibhav159 Date: Wed, 15 Jan 2025 20:43:23 +0530 Subject: [PATCH] finalize on DeepgramSTTService --- CHANGELOG.md | 4 ++++ src/pipecat/services/deepgram.py | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43f402306..80c7c0c7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `src/pipecat/services/gemini_multimodal_live/gemini.py` to support different modalities. +- Changed `DeepgramSTTService` to send `finalize` event whenever VAD detects + `UserStoppedSpeakingFrame`. This helps in faster transcriptions and clearing + the `Deepgram` audio buffer. + ### Fixed - Fixed an issue where websocket based TTS services could incorrectly terminate diff --git a/src/pipecat/services/deepgram.py b/src/pipecat/services/deepgram.py index c7aaf00d2..bba2e72ae 100644 --- a/src/pipecat/services/deepgram.py +++ b/src/pipecat/services/deepgram.py @@ -20,7 +20,9 @@ from pipecat.frames.frames import ( TTSAudioRawFrame, TTSStartedFrame, TTSStoppedFrame, + UserStoppedSpeakingFrame, ) +from pipecat.processors.frame_processor import FrameDirection from pipecat.services.ai_services import STTService, TTSService from pipecat.transcriptions.language import Language from pipecat.utils.time import time_now_iso8601 @@ -237,3 +239,11 @@ class DeepgramSTTService(STTService): await self.push_frame( InterimTranscriptionFrame(transcript, "", time_now_iso8601(), language) ) + + async def process_frame(self, frame: Frame, direction: FrameDirection): + await super().process_frame(frame, direction) + + if isinstance(frame, UserStoppedSpeakingFrame): + # https://developers.deepgram.com/docs/finalize + await self._connection.finalize() + logger.debug(f"Triggering finalize event on: {frame.name=}, {direction=}")