From 3ec89e49bff27028c31a3d13603b8c847fbd40f5 Mon Sep 17 00:00:00 2001 From: Sam Sykes Date: Wed, 7 Jan 2026 07:41:49 -0800 Subject: [PATCH] Added changelog for `split_sentences` and code tidy for end of turn handling. --- changelog/3328.added.md | 1 + src/pipecat/services/speechmatics/stt.py | 15 ++++----------- 2 files changed, 5 insertions(+), 11 deletions(-) create mode 100644 changelog/3328.added.md diff --git a/changelog/3328.added.md b/changelog/3328.added.md new file mode 100644 index 000000000..db793e828 --- /dev/null +++ b/changelog/3328.added.md @@ -0,0 +1 @@ +- Added `split_sentences` parameter to `SpeechmaticsSTTService` to control sentence splitting behavior for finals on sentence boundaries. diff --git a/src/pipecat/services/speechmatics/stt.py b/src/pipecat/services/speechmatics/stt.py index 38f04cee7..2b7a783e5 100644 --- a/src/pipecat/services/speechmatics/stt.py +++ b/src/pipecat/services/speechmatics/stt.py @@ -27,6 +27,7 @@ from pipecat.frames.frames import ( InterimTranscriptionFrame, StartFrame, TranscriptionFrame, + UserStoppedSpeakingFrame, VADUserStartedSpeakingFrame, VADUserStoppedSpeakingFrame, ) @@ -621,12 +622,8 @@ class SpeechmaticsSTTService(STTService): """ logger.debug(f"{self} StartOfTurn received") # await self.start_processing_metrics() - - # Emit VAD events if enabled - if self._enable_vad: - await self.push_interruption_task_frame_and_wait() - logger.debug(f"{self} sending VADUserStartedSpeakingFrame") - await self.broadcast_frame(VADUserStartedSpeakingFrame) + await self.push_interruption_task_frame_and_wait() + await self.broadcast_frame(VADUserStartedSpeakingFrame) async def _handle_end_of_turn(self, message: dict[str, Any]) -> None: """Handle EndOfTurn events. @@ -645,11 +642,7 @@ class SpeechmaticsSTTService(STTService): """ logger.debug(f"{self} EndOfTurn received") # await self.stop_processing_metrics() - - # Emit VAD events if enabled - if self._enable_vad: - logger.debug(f"{self} sending VADUserStoppedSpeakingFrame") - await self.broadcast_frame(VADUserStoppedSpeakingFrame) + await self.broadcast_frame(UserStoppedSpeakingFrame) async def _handle_speakers_result(self, message: dict[str, Any]) -> None: """Handle SpeakersResult events.