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
AlkoveTurnAnalyzer is a turn analyzer that decides when the user has finished
speaking. It reads the end of turn head of Cue, the speech detection model of
Alkove, an open-source (Apache-2.0) voice SDK. It needs no
transcript, no API key and no GPU: Focus then Cue run locally on the CPU with
Alkove’s own inference engine, and the head is read every 0.1 s of each pause,
as the audio comes.
The same package gives turn.interruption_strategy(), a user turn start
strategy: while the bot speaks, the user’s turn starts only once their speech
spans min_duration seconds, so a “mm” or a “yeah” lets the bot go on.
Source Repository
Code, example and README of the Pipecat plugin
Model Card
Cue’s weights (Apache-2.0), its end of turn evaluation and limits
Installation
This is a community-maintained package distributed separately frompipecat-ai:
Prerequisites
No account or API key. The models (Focus 1.1 MB, Cue 1.2 MB) download once into the cache and are checked by their sha256, when the analyzer is created.- A VAD analyzer in the pipeline, for example
AlkoveVADAnalyzer - Languages: evaluated in English, French, Spanish, Italian, Portuguese, German and Dutch
Configuration
AlkoveTurnAnalyzer(params=AlkoveTurnParams(...), min_duration=0.7)
float
default:"0.7"
Seconds the user’s speech must span, short gaps included, to start their turn
while the bot speaks. Used by
interruption_strategy().int | None
default:"None"
Input sample rate.
None takes the transport’s.alkove.Models | None
default:"None"
Models to use.
None loads Focus and Cue once per process, shared by every
session.Usage
How It Works
- The turn is complete on the first read of the head over
thresholdonce the pause reachesmin_pause, or atmax_pause. The head starts over at each turn’s end. - The analyzer runs Focus then Cue itself, on the audio the user aggregator
gets: behind
AlkoveFilter, Focus runs twice. interruption_strategy()shares them. While the bot speaks, a shorter “mm” or “yeah” starts no turn, and its transcript does not either. With the bot quiet, or once it stops while the user goes on, the turn starts with the VAD, as Pipecat’s default.
Compatibility
Tested with Pipecat 1.15.0. See the changelog for the latest version.Notes
- The head hears the voice, not the words: it does not know that “my number is” asks for more.
- Evaluated on LiveKit’s eot-bench, real user turns to voice agents; the results are on the model card.