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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

livekit_plugins_denoise-0.1.0.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

livekit_plugins_denoise-0.1.0-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file livekit_plugins_denoise-0.1.0.tar.gz.

File metadata

  • Download URL: livekit_plugins_denoise-0.1.0.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for livekit_plugins_denoise-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f37823d9872f5f783c61d84994af3340ff297a2aef89de269b80cebaac2612c9
MD5 1500920a19c5aef2007fd92873b8d2a9
BLAKE2b-256 38479534d6e1559da6f4e992c86b75f0869cf01a7f3a4007036f5e56d8644c42

See more details on using hashes here.

Provenance

The following attestation bundles were made for livekit_plugins_denoise-0.1.0.tar.gz:

Publisher: publish.yml on jaffarjawed/livekit-plugins-denoise

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file livekit_plugins_denoise-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for livekit_plugins_denoise-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d4f61afdc39dfecd06c0f94c0d7fde3087caa277a37dd55b49ea1e95503940f
MD5 00f8136ba99b72b7b5004113f1b4a7a9
BLAKE2b-256 b43ae76cfd6e316b9299036047c93b028f712af5ba71b8950beee182f348c3dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for livekit_plugins_denoise-0.1.0-py3-none-any.whl:

Publisher: publish.yml on jaffarjawed/livekit-plugins-denoise

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.1

2 files

This release

0.1.0 This release

2 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