Skip to main content

Overview

EffectsFilter is a BaseAudioFilter that runs a chain of effects on the output audio of a bot, the speech the TTS produces. You build the chain from 8 effects: Gain, Biquad, Saturation, Compressor, AGC, Limiter, Reverb and DeEsser. The chain adds no latency. Pipecat 1.10.0 has no output filter field, so FilterMixer, a BaseAudioMixer, runs the filter as the output mixer. It also meters each chunk and gives loudness in LUFS and true peak in dBTP per read.

Source Repository

Source code, examples, clips and issues

PyPI Package

The pipecat-effects package on PyPI

Installation

This is a community-maintained package distributed separately from pipecat-ai:

Prerequisites

None. The package needs no account, API key or environment variable. It runs on numpy and scipy.

Configuration

Sequence[Effect]
required
The chain, in order. Each effect validates its values at build time. End the chain with Limiter, or the int16 cast hard clips.
int
required
The audio_out_channels value of the transport. FilterMixer.start raises over 1 channel.
Two stock frames change the chain at runtime. MixerEnableFrame(enable=False) bypasses it. MixerUpdateSettingsFrame(settings={"effects": ...}) swaps in a new chain. Each change fades over one chunk.

Usage

examples/bot.py in the repository runs one voice bot with an 8 stage chain. The README plays 5 clips, one unprocessed and 4 chains, with the loudness of each.

Compatibility

Tested with Pipecat v1.10.0. Check the source repository for the latest tested version and changelog.