From 358c458265ffe12de53df69df2c28169af1be9ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Mon, 4 Nov 2024 16:19:52 -0800 Subject: [PATCH] transports(base_input): handle filter contorl frames --- src/pipecat/transports/base_input.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/pipecat/transports/base_input.py b/src/pipecat/transports/base_input.py index 3dc393846..025a5bed2 100644 --- a/src/pipecat/transports/base_input.py +++ b/src/pipecat/transports/base_input.py @@ -14,6 +14,7 @@ from pipecat.frames.frames import ( BotInterruptionFrame, CancelFrame, EndFrame, + FilterUpdateSettingsFrame, Frame, InputAudioRawFrame, StartFrame, @@ -106,6 +107,8 @@ class BaseInputTransport(FrameProcessor): vad_analyzer = self.vad_analyzer() if vad_analyzer: vad_analyzer.set_params(frame.params) + elif isinstance(frame, FilterUpdateSettingsFrame) and self._params.audio_in_filter: + await self._params.audio_in_filter.process_frame(frame) # Other frames else: await self.push_frame(frame, direction) @@ -173,14 +176,7 @@ class BaseInputTransport(FrameProcessor): # If an audio filter is available, run it before VAD. if self._params.audio_in_filter: - audio = await self._params.audio_in_filter.filter( - frame.audio, frame.sample_rate, frame.num_channels - ) - frame = InputAudioRawFrame( - audio=audio, - sample_rate=frame.sample_rate, - num_channels=frame.num_channels, - ) + frame.audio = await self._params.audio_in_filter.filter(frame.audio) # Check VAD and push event if necessary. We just care about # changes from QUIET to SPEAKING and vice versa.