From 7362ac941036140ae5e624be94059850c900de87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Sun, 28 Dec 2025 16:03:40 -0800 Subject: [PATCH] RNNoiseFilter: don't filter silence frames Fixes #3259 --- changelog/3309.fixed.md | 1 + src/pipecat/audio/filters/rnnoise_filter.py | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 changelog/3309.fixed.md diff --git a/changelog/3309.fixed.md b/changelog/3309.fixed.md new file mode 100644 index 000000000..3ad2b75bc --- /dev/null +++ b/changelog/3309.fixed.md @@ -0,0 +1 @@ +- Fixed a `RNNoiseFilter` issue that would cause a "[Errno 12] Cannot allocate memory" error when processing silence audio frames. diff --git a/src/pipecat/audio/filters/rnnoise_filter.py b/src/pipecat/audio/filters/rnnoise_filter.py index 1262c5a55..fc3e9b54d 100644 --- a/src/pipecat/audio/filters/rnnoise_filter.py +++ b/src/pipecat/audio/filters/rnnoise_filter.py @@ -115,6 +115,9 @@ class RNNoiseFilter(BaseAudioFilter): if self._sample_rate != 48000 and self._resampler_in: in_audio = await self._resampler_in.resample(audio, self._sample_rate, 48000) + if len(in_audio) == 0: + return audio + # Convert bytes to numpy array (int16) audio_samples = np.frombuffer(in_audio, dtype=np.int16)