Skip to main content

Overview

TenVadAnalyzer is a Pipecat VADAnalyzer implementation backed by TEN VAD, a low-latency, high-performance voice activity detector for real-time voice agents. It analyzes incoming audio and reports voice activity confidence, letting a transport detect when a user starts and stops speaking. It is a drop-in alternative to Pipecat’s built-in SileroVADAnalyzer.

Source Repository

Source code, examples, and issues for the TEN VAD integration

PyPI Package

The pipecat-ten-vad package on PyPI

TEN VAD

The upstream TEN VAD project and supported platforms

Installation

This is a community-maintained package distributed separately from pipecat-ai. First install the TEN VAD backend (per the source repository, install it directly from GitHub):
pip install git+https://github.com/TEN-framework/ten-vad.git
Then install the integration:
pip install pipecat-ten-vad

Prerequisites

No API key is required to use the VAD analyzer itself. You need:
  • TEN VAD backend: Installed from GitHub as shown above.
  • 16 kHz audio: TEN VAD requires a 16000 Hz sample rate.
Supported platforms (per the source repository): Linux x64, macOS (arm64 + x64), and Windows x64.

Configuration

Constructor parameters for TenVadAnalyzer:
sample_rate
int
default:"None"
Audio sample rate in Hz. Must be 16000 if provided. Passing any other value raises a ValueError.
threshold
float
default:"0.6"
Detection threshold (0.0–1.0) used by TEN VAD. Higher values require a stronger voice signal to trigger.
params
VADParams
default:"None"
Pipecat VAD smoothing parameters (e.g. stop_secs). See VADParams below.

VADParams

Standard Pipecat VAD smoothing parameters, passed via the params argument using VADParams(...). A commonly tuned field:
ParameterTypeDefaultDescription
stop_secsfloat0.3Seconds of silence before end-of-turn is triggered. Lower is more responsive; higher cuts fewer turns short.

Usage

Pass TenVadAnalyzer to a transport’s vad_analyzer, the same way you would use SileroVADAnalyzer:
from pipecat.audio.vad.vad_analyzer import VADParams
from pipecat.transports.services.daily import DailyParams, DailyTransport
from pipecat_ten_vad import TenVadAnalyzer

transport = DailyTransport(
    room_url,
    token,
    "My Bot",
    DailyParams(
        audio_in_enabled=True,
        audio_out_enabled=True,
        vad_enabled=True,
        vad_analyzer=TenVadAnalyzer(
            sample_rate=16000,
            threshold=0.6,
            params=VADParams(stop_secs=0.3),
        ),
        vad_audio_passthrough=True,
    ),
)

Compatibility

Tested with Pipecat v0.0.106. Check the source repository for the latest tested version and changelog.