Skip to main content

Krisp VIVA Filter

KrispVivaFilter is a Patter AudioFilter backed by the Krisp VIVA noise- and echo-suppression SDK. It runs as a pre-STT filter in pipeline mode: caller PCM enters the filter, cleaned PCM exits and is forwarded to the STT provider. Use it on noisy lines (call-centre, vehicle, café) where STT accuracy degrades because of background sound.
Krisp VIVA is a proprietary SDK. The Patter integration is open source and free, but you must obtain your own commercial licence from krisp.ai to use the underlying krisp-audio package and model files. Patter does not endorse, redistribute, or sublicense any Krisp software or models — it just calls the SDK on your behalf.For an MIT-licensed alternative, see DeepFilterNet.

Install

The Krisp SDK ships outside PyPI’s normal channels and requires a licence file:
At time of writing the Patter TypeScript SDK does not include a Krisp filter — only Python. The TS pipeline can still use DeepFilterNetFilter for noise suppression.

Constructor

The filter raises:
  • RuntimeError if krisp-audio is not installed or the licence key is missing.
  • ValueError if model_path is missing or frame_duration_ms is unsupported.
  • FileNotFoundError if the .kef model file does not exist.

Usage in a pipeline agent

Plug it into phone.agent(audio_filter=...):
See the audio_filter parameter on Agents (pipeline mode only).

Toggling at runtime

KrispVivaFilter exposes enable() / disable() so you can A/B-test the filter on a single call (e.g. when an operator presses a “raw audio” key):
When disabled the filter returns the input PCM unchanged.

When to use Krisp vs alternatives

Use Krisp when…Use DeepFilterNet when…Skip filtering when…
You need best-in-class commercial-grade noise/echo suppression and you have a Krisp licence.You want an MIT-licensed OSS alternative with no licence step.The line is clean (typical broadband VoIP / mobile in quiet conditions) — the latency and CPU win is not worth it.

Notes

  • The Krisp SDK is reference-counted via KrispSDKManager: multiple filter instances share one global init/destroy lifecycle, so you can hold one KrispVivaFilter per call without re-initialising the SDK each time.
  • The filter expects the exact frame size: sample_rate * frame_duration_ms / 1000 int16 samples per process() call. Patter’s pipeline-mode audio bus already aligns to this.
  • On any internal error the filter logs the failure and returns the original PCM unchanged so the call audio path is never broken — the VAD downstream will still receive audio even if Krisp temporarily fails.

What’s Next

Agents

The audio_filter parameter on phone.agent(...).

DeepFilterNet

OSS noise suppression alternative.

Silero VAD

Voice activity detection downstream of the filter.

Pipeline mode

STT + LLM + TTS composition.