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.

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.1.tar.gz (20.0 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.1-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: livekit_plugins_denoise-0.1.1.tar.gz
  • Upload date:
  • Size: 20.0 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.1.tar.gz
Algorithm Hash digest
SHA256 36bd642a325ecb3092ab876002da0d38e6c6bcce70d538a684b2a15405aac4af
MD5 c213649bbdc0ade01c7b6cec7a30a184
BLAKE2b-256 7cb994177ea9128541ecd2649ba92413c00f082e3325d58dc6db2ee2187b7493

See more details on using hashes here.

Provenance

The following attestation bundles were made for livekit_plugins_denoise-0.1.1.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.1-py3-none-any.whl.

File metadata

File hashes

Hashes for livekit_plugins_denoise-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bfbcebe22fddb0f510f646f87fc2fc8438bb2970dad2c0fbd9048433ae777748
MD5 f41f3822cbbf72fdd27c54ad19382a80
BLAKE2b-256 de66c43db879a08d8dcbd4ba0219f8e5f59c17673d7904ba676ac65a5cf54ace

See more details on using hashes here.

Provenance

The following attestation bundles were made for livekit_plugins_denoise-0.1.1-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

This release

0.1.1 This release

2 files

0.1.0

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