Skip to main content
Community-maintained integration. This service is built and maintained by edbrdi. Pipecat does not test or officially support it. Please report issues and request changes on the source repository. Learn more about community integrations.

Overview

AlkoveFilter is a BaseAudioFilter implementation backed by Focus, the voice isolation model of Alkove, an open-source (Apache-2.0) voice SDK. You attach it to a transport’s audio_in_filter, and it keeps the user’s voice (the closest one, or the voice of a voiceprint) and removes the other people talking and the background noise, so VAD and your STT service only hear the user. It runs locally on the CPU with Alkove’s own inference engine: no API key and no network calls after the model download. The same package has AlkoveVADAnalyzer, a VAD that hears only the user when it sits behind this filter.

Source Repository

Code, example and README of the Pipecat plugin

PyPI Package

The pipecat-alkove package on PyPI

Installation

This is a community-maintained package distributed separately from pipecat-ai:

Prerequisites

  • No API key. The models (Focus 1.1 MB, Cue 1.1 MB) download once into the cache and are checked by their sha256.

Configuration

alkove.Voiceprint | list[float] | None
default:"None"
Keep the voice of this print rather than the closest voice. Make it with alkove.Timbre from 1.5 s or more of the user’s voice.
float
default:"1.0"
Mix between the raw microphone (0) and Focus’s output (1).
bool
default:"False"
Bring the kept voice to a steady level.
alkove.Models | None
default:"None"
Models to use. None loads Focus and Cue once per process, shared by every session. Pass alkove.Models.load(["focus", "cue"], dir=...) to read them from your own folder.

Usage

Create one filter per call and pass it to your transport as audio_in_filter:
The transport drives the filter lifecycle, so no additional wiring is needed. example.py runs the filter and the VAD on your microphone.

With a voiceprint

Input Frames

Frame
Toggles the filter at runtime. Disabled, it gives the raw microphone back at the same delay.
Frame
Changes strength (0 to 1) or voiceprint (a print, or None) while it runs.

Audio Requirements

  • Input is 16-bit mono PCM at the transport’s sample rate; the filter works at that rate.
  • Focus adds 16 ms of delay: the first calls to filter() return a little less audio than they get, then about the same size.

Compatibility

Tested with Pipecat 1.14.0. See the changelog for the latest version.