Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getpatter.com/llms.txt

Use this file to discover all available pages before exploring further.

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:
pip install "getpatter[krisp]"      # installs krisp-audio>=2.0 + numpy

# Then set:
#   KRISP_VIVA_SDK_LICENSE_KEY    — provided by Krisp
#   KRISP_VIVA_FILTER_MODEL_PATH  — absolute path to your .kef model
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

from getpatter.providers.krisp_filter import KrispVivaFilter
from getpatter.providers.krisp_instance import KrispFrameDuration, KrispSampleRate

filt = KrispVivaFilter(
    model_path=None,                          # falls back to KRISP_VIVA_FILTER_MODEL_PATH
    noise_suppression_level=100,              # 0..100, default 100
    frame_duration_ms=KrispFrameDuration.MS_10,  # 10 / 15 / 20 / 30 / 32
    sample_rate=KrispSampleRate.HZ_16000,     # initial; resized lazily if it changes mid-call
)
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=...):
import asyncio
from getpatter import Patter, Twilio, DeepgramSTT, AnthropicLLM, ElevenLabsTTS
from getpatter.providers.krisp_filter import KrispVivaFilter

phone = Patter(carrier=Twilio(), phone_number="+15550001234")

filt = KrispVivaFilter(noise_suppression_level=100)

agent = phone.agent(
    stt=DeepgramSTT(),
    llm=AnthropicLLM(),
    tts=ElevenLabsTTS(voice_id="rachel"),
    audio_filter=filt,                        # pre-STT noise suppression
    system_prompt="You are a helpful assistant.",
)

asyncio.run(phone.serve(agent))
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):
filt.disable()    # passthrough
filt.enable()     # noise suppression on
filt.enabled = True
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.