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 PyPIInstallation
This is a community-maintained package distributed separately frompipecat-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.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.