Skip to main content
pipecat is a widely used open-source voice agent framework. The SDK has a built-in pipecat transport: replace the Daily / LiveKit transport in the examples with SRTCTransport, and the rest of the pipeline stays unchanged.

Installation

Requires pipecat 1.0 or later.

Usage


Behavior

  • Input: automatically subscribes to the audio of everyone in the channel, decodes it at the pipeline’s input sample rate, and pushes it out as UserAudioRawFrame(user_id=uid). Silence frames that the SDK fills in during the remote side’s DTX silence are pushed out as usual, so the VAD can correctly tell when a sentence ends
  • Output: publishes one audio track. write_audio_frame blocks at real-time pace, with the same semantics as pipecat’s other transports
  • Barge-in interruption: when an InterruptionFrame is received, audio that hasn’t been sent yet is cleared immediately, and the remote side hears at most about 100 ms of trailing audio
  • Leaving: when the pipeline ends (EndFrame / CancelFrame), it leaves the channel automatically

Parameters

SRTCParams inherits pipecat’s TransportParams. Common options:

Events

Register with @transport.event_handler("event_name"); the handler’s first parameter is the transport: When you need more capabilities (querying users, subscribing to video, and so on), after joining you can get the underlying srtc.Channel through transport.channel.

Differences from other transports

Sending messages isn’t supported. The SRTC client only receives messages and doesn’t send them; OutputTransportMessageFrame is ignored (with a one-time warning log). To send messages into the channel, have your backend call Server API · Send a custom message.
This transport currently handles audio only and doesn’t send or receive video frames.