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 reductionFrameProcessorvoice_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
- Krisp Audio SDK — proprietary, not on public PyPI. Obtain and install it
separately from Krisp:
pip install krisp-audio
- License key:
export KRISP_VIVA_SDK_LICENSE_KEY=your-license-key-here
- Noise-reduction model — a
.kefmodel 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file livekit_plugins_krisp-0.3.0.tar.gz.
File metadata
- Download URL: livekit_plugins_krisp-0.3.0.tar.gz
- Upload date:
- Size: 13.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2836f716825e207a00df2207dcf03eab7110c77a01347b67ccd0305cedef344
|
|
| MD5 |
64c2c0fd8881cf64d959f5b2cd31ed70
|
|
| BLAKE2b-256 |
24120167d09c017932a7d191c47f04f4d0fa9f2b5523593da94c78097cfeb71f
|
Provenance
The following attestation bundles were made for livekit_plugins_krisp-0.3.0.tar.gz:
Publisher:
publish.yml on livekit/agents
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
livekit_plugins_krisp-0.3.0.tar.gz -
Subject digest:
f2836f716825e207a00df2207dcf03eab7110c77a01347b67ccd0305cedef344 - Sigstore transparency entry: 2536319380
- Sigstore integration time:
-
Permalink:
livekit/agents@53c77a6b3cf0ef88512b2ab4917bfdd1dd6186b0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/livekit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@53c77a6b3cf0ef88512b2ab4917bfdd1dd6186b0 -
Trigger Event:
pull_request
-
Statement type:
File details
Details for the file livekit_plugins_krisp-0.3.0-py3-none-any.whl.
File metadata
- Download URL: livekit_plugins_krisp-0.3.0-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b1c1df1cede23deee81ec17dc7baaebecc5cb9a9f265974b85d2a754fa07ea2
|
|
| MD5 |
72a14d377244cd8a640b9255e8ce487e
|
|
| BLAKE2b-256 |
9e4df8fb10a28aa67d0944a8e66a5f0d6fe6fa609f454d75f00811785ea7ab4d
|
Provenance
The following attestation bundles were made for livekit_plugins_krisp-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on livekit/agents
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
livekit_plugins_krisp-0.3.0-py3-none-any.whl -
Subject digest:
1b1c1df1cede23deee81ec17dc7baaebecc5cb9a9f265974b85d2a754fa07ea2 - Sigstore transparency entry: 2536319453
- Sigstore integration time:
-
Permalink:
livekit/agents@53c77a6b3cf0ef88512b2ab4917bfdd1dd6186b0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/livekit
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@53c77a6b3cf0ef88512b2ab4917bfdd1dd6186b0 -
Trigger Event:
pull_request
-
Statement type: