Skip to main content

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)

Source distribution for livekit-plugins-denoise 0.1.1
File Size Uploaded
livekit_plugins_denoise-0.1.1.tar.gz 20.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for livekit-plugins-denoise 0.1.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page