Overview
DuplexJevTurnAnalyzer is a turn analyzer backed by DuplexJev, an
open-weights speech model that answers multiple-choice questions about raw audio in one forward pass. Instead of a
yes/no end-of-turn score it reads four turn states from the user’s audio — finished, still talking,
just backchanneling (“mm-hmm”) or asking to wait — so a backchannel or a “hold on” does not trigger a reply.
The same request can also return the user’s emotion, non-verbal sounds (laughter, breathing, coughs, sighs)
and barge-in, or your own multiple-choice questions. No transcript is needed for the decision.
Not to be confused with the Jev classifier (
pipecat-ai[jev]) by TypeSafe — DuplexJev is a separate, open-weights
speech model by Adventists.ai.Source Repository
Source code, examples, and issues for the DuplexJev integration
PyPI Package
The
pipecat-duplexjev package on PyPIInstallation
This is a community-maintained package distributed separately frompipecat-ai:
Prerequisites
- Pipecat 1.0 or later (tested with
pipecat-ai1.12.0) - A DuplexJev gateway: a free, rate-limited trial API is used by default (30 requests per minute). For a live bot, serve the model next to your agent; DuplexJev-4B-Para needs about 10 GB of GPU memory:
Usage
Configuration
str
default:"hosted trial API"
Base URL of a
duplexjev gateway.str
default:"None"
Bearer key, if your gateway requires one.
str
default:"\"en\""
"en" or "zh": wording of the questions (the model hears both languages either way).float
default:"0.5"
Probability of “finished” from which the turn is complete.
list
default:"[]"
"emotion", "sound", "barge_in", or dicts {"id", "text", "options"}. Answers arrive in last_answers
and on_answers, from the same forward pass as the turn decision.Callable
default:"None"
Callback with every answer dict.
SmartTurnParams
default:"SmartTurnParams()"
Pipecat’s usual
stop_secs, pre_speech_ms and max_duration_secs.