livekit-plugins-denoise
Self-hosted noise suppression and acoustic echo cancellation for LiveKit SIP agents.
- Removes background noise with DeepFilterNet3 or low-latency WebRTC noise suppression.
- Removes the agent's voice when it returns through a caller's handset or carrier path.
- Runs in your agent process: no per-minute denoising fee and no language dependency.
This is an independent, community-maintained package and is not affiliated with or endorsed by LiveKit, Inc.
Why this exists
LiveKit's managed BVCTelephony noise-cancellation option is billed per minute.
This package is a self-hosted, MIT-licensed alternative for teams that want
noise suppression and echo cancellation in their own agent process without a
per-minute denoising charge. You still pay for your own compute, telephony, and
other services.
Install
python -m pip install livekit-plugins-denoise
For local development:
python -m pip install -e ".[dev]"
Enable noise suppression and echo cancellation
Create one TelephonyDenoiser for each call. EchoReferenceTap is required
for echo cancellation because it supplies the agent's outgoing audio as the
far-end reference.
from livekit.agents import room_io
from livekit.plugins import telephony_denoise
denoiser = telephony_denoise.TelephonyDenoiser(
telephony_denoise.DenoiseOptions(
echo_cancellation=True,
noise_suppression=True,
high_pass_filter=True,
auto_gain_control=True,
enhancer="deepfilter", # use "webrtc" for lower latency
stream_delay_ms=120,
)
)
await session.start(
agent=agent,
room=room,
room_options=room_io.RoomOptions(
audio_input=room_io.AudioInputOptions(
noise_cancellation=denoiser,
auto_gain_control=False, # do not stack AGC
),
),
)
# Add this after session.start(); RoomIO replaces the output during startup.
session.output.audio = telephony_denoise.EchoReferenceTap(
denoiser, next_in_chain=session.output.audio
)
To load the neural model before the first call:
def setup(proc):
telephony_denoise.prewarm()
See examples/sip_agent.py for a complete SIP agent.
Configuration
DenoiseOptions lets you control these features independently:
| Option | Default | Purpose |
|---|---|---|
echo_cancellation |
True |
Cancels the agent's returned audio; requires EchoReferenceTap. |
noise_suppression |
True |
Removes background noise. |
enhancer |
"deepfilter" |
Use "webrtc" when minimizing latency is more important. |
high_pass_filter |
True |
Reduces low-frequency rumble and hum. |
auto_gain_control |
True |
Helps keep quiet callers audible. |
stream_delay_ms |
120 |
Starting delay estimate for SIP echo paths. |
For tuning, supported formats, model download behavior, and operating notes, see Technical notes.
Community
Issues, documentation improvements, and pull requests are welcome. See CONTRIBUTING.md. This project is MIT licensed; dependency attribution is in NOTICE.
Developed and maintained by Botcadence.
Metadata
Release files for livekit-plugins-denoise 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| livekit_plugins_denoise-0.1.1.tar.gz | 20.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| livekit_plugins_denoise-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.1 kB
Release files / livekit_plugins_denoise-0.1.1.tar.gz
| Download URL | livekit_plugins_denoise-0.1.1.tar.gz |
|---|---|
| Size | 20.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36bd642a325ecb3092ab876002da0d38e6c6bcce70d538a684b2a15405aac4af
|
|
BLAKE2b-256 checksum How to use checksums |
7cb994177ea9128541ecd2649ba92413c00f082e3325d58dc6db2ee2187b7493
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.
Transparency logRelease files / livekit_plugins_denoise-0.1.1-py3-none-any.whl
| Download URL | livekit_plugins_denoise-0.1.1-py3-none-any.whl |
|---|---|
| Size | 21.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bfbcebe22fddb0f510f646f87fc2fc8438bb2970dad2c0fbd9048433ae777748
|
|
BLAKE2b-256 checksum How to use checksums |
de66c43db879a08d8dcbd4ba0219f8e5f59c17673d7904ba676ac65a5cf54ace
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.
Transparency log