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.
Metadata
Release files for livekit-plugins-krisp 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| livekit_plugins_krisp-0.4.0.tar.gz | 13.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| livekit_plugins_krisp-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.7 kB
Release files / livekit_plugins_krisp-0.4.0.tar.gz
| Download URL | livekit_plugins_krisp-0.4.0.tar.gz |
|---|---|
| Size | 13.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b0abfa9c2e23616c904e65d2f03f8cc01fbb28e3c25396f212a86ece467a5e14
|
|
BLAKE2b-256 checksum How to use checksums |
4d573d3ab1513cf41c989a47f51f11a2f2fe2da08af805f37f79af676663ade2
|
| 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 Sep 5, 2026.
Transparency logRelease files / livekit_plugins_krisp-0.4.0-py3-none-any.whl
| Download URL | livekit_plugins_krisp-0.4.0-py3-none-any.whl |
|---|---|
| Size | 16.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a06b4c606b756bbf25cb0d960a491f46fb927daaab07dcb89913f103615d72bc
|
|
BLAKE2b-256 checksum How to use checksums |
7094cde13436e0c87874524d006eeaa5b4cc2007a5bc797e4c66ffde8dbdfc02
|
| 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 Sep 5, 2026.
Transparency log