Skip to main content

Krisp VIVA Plugin for LiveKit Agents

Real-time noise reduction for LiveKit voice agents using Krisp's VIVA SDK.

Features

  • voice_isolation(): Real-time voice isolation and noise reduction FrameProcessor
  • voice_isolation_telephony(): Voice isolation tuned for telephony audio (for example, SIP participants)

Installation

pip install livekit-plugins-krisp

That's it. The default backend is bundled with the plugin and authenticates through LiveKit Cloud using the room's credentials — no separate SDK download, license key, or model file is required.

Using your own Krisp license instead? That path has additional prerequisites — see below.

Quick Start

By default, krisp.voice_isolation() uses LiveKit Cloud authentication: the bundled backend ships the voice isolation model and authenticates against LiveKit Cloud using the room JWT the agent framework hands to the FrameProcessor automatically.

from livekit.agents import AgentSession, Agent, JobContext, inference, room_io
from livekit.plugins import krisp, openai

@server.rtc_session()
async def entrypoint(ctx: JobContext):
    # Default: LiveKit Cloud auth + bundled model. No keys or model files.
    noise_cancellation = krisp.voice_isolation(
        noise_suppression_level=75,  # 0-100
    )

    session = AgentSession(
        vad=inference.VAD(),
        stt=openai.STT(),
        llm=openai.LLM(model="gpt-4o-mini"),
        tts=openai.TTS(),
    )

    # Start session with RoomIO and pass the FrameProcessor directly
    await session.start(
        agent=MyAgent(),
        room=ctx.room,
        room_options=room_io.RoomOptions(
            audio_input=room_io.AudioInputOptions(
                noise_cancellation=noise_cancellation,  # Pass the FrameProcessor directly
            ),
        ),
    )

For telephony audio, use krisp.voice_isolation_telephony() instead — it takes the same options and behaves identically, but selects a voice isolation model tuned for telephony.

Audio Pipeline: Room → RoomIO (with voice_isolation) → VAD → STT → LLM

Configuration

voice_isolation() / voice_isolation_telephony() options

Parameter Type Default Description
auth_provider LiveKitCloudAuthProvider | KrispLicenseAuthProvider LiveKitCloudAuthProvider Authentication backend. Defaults to LiveKit Cloud. See the alternative.
noise_suppression_level int 75 Noise reduction intensity (0-100)

Input frames of any size and sample rate are buffered and adapted automatically.

Runtime control

Both factory functions return a KrispVivaFilterFrameProcessor. Adjust it while the session is running:

noise_cancellation.enabled = False              # pass audio through unmodified
noise_cancellation.noise_suppression_level = 50  # adjust 0-100 on the fly
noise_cancellation.close()                       # free resources when done

Alternative: Krisp License Auth

Most users should use the default LiveKit Cloud path above. This alternative is for running the public Krisp SDK directly with your own Krisp license — for example, when using Livekit OSS server.

This path uses the public krisp_audio wheel together with a Krisp license key and a .kef model file that you obtain from Krisp.

Prerequisites

  1. Krisp Audio SDK — proprietary, not on public PyPI. Obtain and install it separately from Krisp:
    pip install krisp-audio
    
  2. License key:
    export KRISP_VIVA_SDK_LICENSE_KEY=your-license-key-here
    
  3. Noise-reduction model — a .kef model file from Krisp:
    export KRISP_VIVA_FILTER_MODEL_PATH=/path/to/noise_model.kef
    

Usage

Select the license backend by passing auth_provider:

from livekit.plugins import krisp

noise_cancellation = krisp.voice_isolation(
    auth_provider=krisp.auth.krisp_license(
        license_key="...",                    # or KRISP_VIVA_SDK_LICENSE_KEY
        model_path="/path/to/noise_model.kef",  # or KRISP_VIVA_FILTER_MODEL_PATH
    ),
    noise_suppression_level=75,
)

license_key and model_path fall back to the environment variables above when omitted.

Troubleshooting

RuntimeError: bundled backend missing

If the default (LiveKit Cloud) backend reports a missing wheel, the install is likely broken. Reinstall the plugin:

pip install --force-reinstall livekit-plugins-krisp

Alternatively, fall back to the Krisp license auth path.

"Krisp SDK initialization failed" or licensing errors (license auth only)

Make sure the license key is set:

export KRISP_VIVA_SDK_LICENSE_KEY=your-license-key-here

"Model path must be provided" (license auth only)

export KRISP_VIVA_FILTER_MODEL_PATH=/path/to/model.kef

"Unsupported sample rate"

Supported: 8000, 16000, 24000, 32000, 44100, 48000 Hz

Silent output

  • Verify the model file is valid (license auth only)
  • Test with known noisy audio

License

The source code in this package (livekit-plugins-krisp) is licensed under the Apache-2.0 license.

The default backend is a separate, closed-source wheel (livekit-plugins-krisp-internal) that is installed automatically as a dependency. It is proprietary and distributed under the LiveKit Terms of Service. That wheel bundles the Krisp VIVA SDK along with its third-party open-source components, whose attribution notices are shipped inside the wheel.

The Krisp license alternative (KrispLicenseAuthProvider) instead needs a manual install of the proprietary Krisp Audio SDK together with your own Krisp license key and model file, governed by your agreement with Krisp.

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_krisp-0.2.8.tar.gz (13.2 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_krisp-0.2.8-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file livekit_plugins_krisp-0.2.8.tar.gz.

File metadata

  • Download URL: livekit_plugins_krisp-0.2.8.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for livekit_plugins_krisp-0.2.8.tar.gz
Algorithm Hash digest
SHA256 82b2299180c520379176c546c0618f0e48a9fb77c5977677559b7fa857dd91e5
MD5 8caa31f115e08ede4dc537bb47a426af
BLAKE2b-256 c7afc57c16ac349e118e972cc17e13877896f90d6f2e18c1694370a7307e040b

See more details on using hashes here.

Provenance

The following attestation bundles were made for livekit_plugins_krisp-0.2.8.tar.gz:

Publisher: publish.yml on livekit/agents

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_krisp-0.2.8-py3-none-any.whl.

File metadata

File hashes

Hashes for livekit_plugins_krisp-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 84ae063015a6c43260af5579468809b4f5b35cc378d4f4931de064a26ca82897
MD5 5468c35119d284885059be2d273a42f1
BLAKE2b-256 645120dbc97175c163d02c765f4c82de89e8e603af47c73c06a0a227cd00f562

See more details on using hashes here.

Provenance

The following attestation bundles were made for livekit_plugins_krisp-0.2.8-py3-none-any.whl:

Publisher: publish.yml on livekit/agents

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.3.0

2 files

0.2.10

2 files

0.2.9

2 files

This release

0.2.8 This release

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page