Daily
- class pipecat.transports.services.daily.DailyTransportMessageFrame(message, participant_id=None)[source]
Bases:
TransportMessageFrame
Frame for transport messages in Daily calls.
- Parameters:
message (Any)
participant_id (str | None)
- participant_id
Optional ID of the participant this message is for/from.
- Type:
str | None
- participant_id: str | None = None
- class pipecat.transports.services.daily.DailyTransportMessageUrgentFrame(message, participant_id=None)[source]
Bases:
TransportMessageUrgentFrame
Frame for urgent transport messages in Daily calls.
- Parameters:
message (Any)
participant_id (str | None)
- participant_id
Optional ID of the participant this message is for/from.
- Type:
str | None
- participant_id: str | None = None
- class pipecat.transports.services.daily.WebRTCVADAnalyzer(*, sample_rate=None, params=None)[source]
Bases:
VADAnalyzer
Voice Activity Detection analyzer using WebRTC.
Implements voice activity detection using Daily’s native WebRTC VAD.
- Parameters:
sample_rate (int | None) – Audio sample rate in Hz.
params (VADParams | None) – VAD configuration parameters (VADParams).
- num_frames_required()[source]
- Return type:
int
- voice_confidence(buffer)[source]
- Return type:
float
- class pipecat.transports.services.daily.DailyDialinSettings(*, call_id='', call_domain='')[source]
Bases:
BaseModel
Settings for Daily’s dial-in functionality.
- Parameters:
call_id (str)
call_domain (str)
- call_id
CallId is represented by UUID and represents the sessionId in the SIP Network.
- Type:
str
- call_domain
Call Domain is represented by UUID and represents your Daily Domain on the SIP Network.
- Type:
str
- call_id: str
- call_domain: str
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class pipecat.transports.services.daily.DailyTranscriptionSettings(*, language='en', model='nova-2-general', profanity_filter=True, redact=False, endpointing=True, punctuate=True, includeRawResponse=True, extra={'interim_results': True})[source]
Bases:
BaseModel
Configuration settings for Daily’s transcription service.
- Parameters:
language (str)
model (str)
profanity_filter (bool)
redact (bool)
endpointing (bool)
punctuate (bool)
includeRawResponse (bool)
extra (Mapping[str, Any])
- language
ISO language code for transcription (e.g. “en”).
- Type:
str
- model
Transcription model to use (e.g. “nova-2-general”).
- Type:
str
- profanity_filter
Whether to filter profanity from transcripts.
- Type:
bool
- redact
Whether to redact sensitive information.
- Type:
bool
- endpointing
Whether to use endpointing to determine speech segments.
- Type:
bool
- punctuate
Whether to add punctuation to transcripts.
- Type:
bool
- includeRawResponse
Whether to include raw response data.
- Type:
bool
- extra
Additional parameters passed to the Deepgram transcription service.
- Type:
Mapping[str, Any]
- language: str
- model: str
- profanity_filter: bool
- redact: bool
- endpointing: bool
- punctuate: bool
- includeRawResponse: bool
- extra: Mapping[str, Any]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class pipecat.transports.services.daily.DailyParams(*, camera_in_enabled=False, camera_out_enabled=True, camera_out_is_live=False, camera_out_width=1024, camera_out_height=768, camera_out_bitrate=800000, camera_out_framerate=30, camera_out_color_format='RGB', audio_out_enabled=False, audio_out_sample_rate=None, audio_out_channels=1, audio_out_bitrate=96000, audio_out_10ms_chunks=4, audio_out_mixer=None, audio_out_destinations=<factory>, audio_in_enabled=False, audio_in_sample_rate=None, audio_in_channels=1, audio_in_filter=None, audio_in_stream_on_start=True, audio_in_passthrough=True, video_in_enabled=False, video_out_enabled=False, video_out_is_live=False, video_out_width=1024, video_out_height=768, video_out_bitrate=800000, video_out_framerate=30, video_out_color_format='RGB', video_out_destinations=<factory>, vad_enabled=False, vad_audio_passthrough=False, vad_analyzer=None, turn_analyzer=None, api_url='https://api.daily.co/v1', api_key='', dialin_settings=None, microphone_out_enabled=True, transcription_enabled=False, transcription_settings=DailyTranscriptionSettings(language='en', model='nova-2-general', profanity_filter=True, redact=False, endpointing=True, punctuate=True, includeRawResponse=True, extra={'interim_results': True}))[source]
Bases:
TransportParams
Configuration parameters for Daily transport.
- Parameters:
api_url (str) – Daily API base URL
api_key (str) – Daily API authentication key
dialin_settings (DailyDialinSettings | None) – Optional settings for dial-in functionality
camera_out_enabled (bool) – Whether to enable the main camera output track. If enabled, it still needs video_out_enabled=True
microphone_out_enabled (bool) – Whether to enable the main microphone track. If enabled, it still needs audio_out_enabled=True
transcription_enabled (bool) – Whether to enable speech transcription
transcription_settings (DailyTranscriptionSettings) – Configuration for transcription service
camera_in_enabled (bool)
camera_out_is_live (bool)
camera_out_width (int)
camera_out_height (int)
camera_out_bitrate (int)
camera_out_framerate (int)
camera_out_color_format (str)
audio_out_enabled (bool)
audio_out_sample_rate (int | None)
audio_out_channels (int)
audio_out_bitrate (int)
audio_out_10ms_chunks (int)
audio_out_mixer (BaseAudioMixer | Mapping[str | None, BaseAudioMixer] | None)
audio_out_destinations (List[str])
audio_in_enabled (bool)
audio_in_sample_rate (int | None)
audio_in_channels (int)
audio_in_filter (BaseAudioFilter | None)
audio_in_stream_on_start (bool)
audio_in_passthrough (bool)
video_in_enabled (bool)
video_out_enabled (bool)
video_out_is_live (bool)
video_out_width (int)
video_out_height (int)
video_out_bitrate (int)
video_out_framerate (int)
video_out_color_format (str)
video_out_destinations (List[str])
vad_enabled (bool)
vad_audio_passthrough (bool)
vad_analyzer (VADAnalyzer | None)
turn_analyzer (BaseTurnAnalyzer | None)
- api_url: str
- api_key: str
- dialin_settings: DailyDialinSettings | None
- camera_out_enabled: bool
- microphone_out_enabled: bool
- transcription_enabled: bool
- transcription_settings: DailyTranscriptionSettings
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class pipecat.transports.services.daily.DailyCallbacks(*, on_active_speaker_changed, on_joined, on_left, on_error, on_app_message, on_call_state_updated, on_client_connected, on_client_disconnected, on_dialin_connected, on_dialin_ready, on_dialin_stopped, on_dialin_error, on_dialin_warning, on_dialout_answered, on_dialout_connected, on_dialout_stopped, on_dialout_error, on_dialout_warning, on_participant_joined, on_participant_left, on_participant_updated, on_transcription_message, on_recording_started, on_recording_stopped, on_recording_error)[source]
Bases:
BaseModel
Callback handlers for Daily events.
- Parameters:
on_active_speaker_changed (Callable[[Mapping[str, Any]], Awaitable[None]])
on_joined (Callable[[Mapping[str, Any]], Awaitable[None]])
on_left (Callable[[], Awaitable[None]])
on_error (Callable[[str], Awaitable[None]])
on_app_message (Callable[[Any, str], Awaitable[None]])
on_call_state_updated (Callable[[str], Awaitable[None]])
on_client_connected (Callable[[Mapping[str, Any]], Awaitable[None]])
on_client_disconnected (Callable[[Mapping[str, Any]], Awaitable[None]])
on_dialin_connected (Callable[[Any], Awaitable[None]])
on_dialin_ready (Callable[[str], Awaitable[None]])
on_dialin_stopped (Callable[[Any], Awaitable[None]])
on_dialin_error (Callable[[Any], Awaitable[None]])
on_dialin_warning (Callable[[Any], Awaitable[None]])
on_dialout_answered (Callable[[Any], Awaitable[None]])
on_dialout_connected (Callable[[Any], Awaitable[None]])
on_dialout_stopped (Callable[[Any], Awaitable[None]])
on_dialout_error (Callable[[Any], Awaitable[None]])
on_dialout_warning (Callable[[Any], Awaitable[None]])
on_participant_joined (Callable[[Mapping[str, Any]], Awaitable[None]])
on_participant_left (Callable[[Mapping[str, Any], str], Awaitable[None]])
on_participant_updated (Callable[[Mapping[str, Any]], Awaitable[None]])
on_transcription_message (Callable[[Mapping[str, Any]], Awaitable[None]])
on_recording_started (Callable[[Mapping[str, Any]], Awaitable[None]])
on_recording_stopped (Callable[[str], Awaitable[None]])
on_recording_error (Callable[[str, str], Awaitable[None]])
- on_active_speaker_changed
Called when the active speaker of the call has changed.
- Type:
Callable[[Mapping[str, Any]], Awaitable[None]]
- on_joined
Called when bot successfully joined a room.
- Type:
Callable[[Mapping[str, Any]], Awaitable[None]]
- on_left
Called when bot left a room.
- Type:
Callable[[], Awaitable[None]]
- on_error
Called when an error occurs.
- Type:
Callable[[str], Awaitable[None]]
- on_app_message
Called when receiving an app message.
- Type:
Callable[[Any, str], Awaitable[None]]
- on_call_state_updated
Called when call state changes.
- Type:
Callable[[str], Awaitable[None]]
- on_client_connected
Called when a client (participant) connects.
- Type:
Callable[[Mapping[str, Any]], Awaitable[None]]
- on_client_disconnected
Called when a client (participant) disconnects.
- Type:
Callable[[Mapping[str, Any]], Awaitable[None]]
- on_dialin_connected
Called when dial-in is connected.
- Type:
Callable[[Any], Awaitable[None]]
- on_dialin_ready
Called when dial-in is ready.
- Type:
Callable[[str], Awaitable[None]]
- on_dialin_stopped
Called when dial-in is stopped.
- Type:
Callable[[Any], Awaitable[None]]
- on_dialin_error
Called when dial-in encounters an error.
- Type:
Callable[[Any], Awaitable[None]]
- on_dialin_warning
Called when dial-in has a warning.
- Type:
Callable[[Any], Awaitable[None]]
- on_dialout_answered
Called when dial-out is answered.
- Type:
Callable[[Any], Awaitable[None]]
- on_dialout_connected
Called when dial-out is connected.
- Type:
Callable[[Any], Awaitable[None]]
- on_dialout_stopped
Called when dial-out is stopped.
- Type:
Callable[[Any], Awaitable[None]]
- on_dialout_error
Called when dial-out encounters an error.
- Type:
Callable[[Any], Awaitable[None]]
- on_dialout_warning
Called when dial-out has a warning.
- Type:
Callable[[Any], Awaitable[None]]
- on_participant_joined
Called when a participant joins.
- Type:
Callable[[Mapping[str, Any]], Awaitable[None]]
- on_participant_left
Called when a participant leaves.
- Type:
Callable[[Mapping[str, Any], str], Awaitable[None]]
- on_participant_updated
Called when participant info is updated.
- Type:
Callable[[Mapping[str, Any]], Awaitable[None]]
- on_transcription_message
Called when receiving transcription.
- Type:
Callable[[Mapping[str, Any]], Awaitable[None]]
- on_recording_started
Called when recording starts.
- Type:
Callable[[Mapping[str, Any]], Awaitable[None]]
- on_recording_stopped
Called when recording stops.
- Type:
Callable[[str], Awaitable[None]]
- on_recording_error
Called when recording encounters an error.
- Type:
Callable[[str, str], Awaitable[None]]
- on_active_speaker_changed: Callable[[Mapping[str, Any]], Awaitable[None]]
- on_joined: Callable[[Mapping[str, Any]], Awaitable[None]]
- on_left: Callable[[], Awaitable[None]]
- on_error: Callable[[str], Awaitable[None]]
- on_app_message: Callable[[Any, str], Awaitable[None]]
- on_call_state_updated: Callable[[str], Awaitable[None]]
- on_client_connected: Callable[[Mapping[str, Any]], Awaitable[None]]
- on_client_disconnected: Callable[[Mapping[str, Any]], Awaitable[None]]
- on_dialin_connected: Callable[[Any], Awaitable[None]]
- on_dialin_ready: Callable[[str], Awaitable[None]]
- on_dialin_stopped: Callable[[Any], Awaitable[None]]
- on_dialin_error: Callable[[Any], Awaitable[None]]
- on_dialin_warning: Callable[[Any], Awaitable[None]]
- on_dialout_answered: Callable[[Any], Awaitable[None]]
- on_dialout_connected: Callable[[Any], Awaitable[None]]
- on_dialout_stopped: Callable[[Any], Awaitable[None]]
- on_dialout_error: Callable[[Any], Awaitable[None]]
- on_dialout_warning: Callable[[Any], Awaitable[None]]
- on_participant_joined: Callable[[Mapping[str, Any]], Awaitable[None]]
- on_participant_left: Callable[[Mapping[str, Any], str], Awaitable[None]]
- on_participant_updated: Callable[[Mapping[str, Any]], Awaitable[None]]
- on_transcription_message: Callable[[Mapping[str, Any]], Awaitable[None]]
- on_recording_started: Callable[[Mapping[str, Any]], Awaitable[None]]
- on_recording_stopped: Callable[[str], Awaitable[None]]
- on_recording_error: Callable[[str, str], Awaitable[None]]
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- pipecat.transports.services.daily.completion_callback(future)[source]
- class pipecat.transports.services.daily.DailyAudioTrack(source: daily.CustomAudioSource, track: daily.CustomAudioTrack)[source]
Bases:
object
- Parameters:
source (daily.CustomAudioSource)
track (daily.CustomAudioTrack)
- source: daily.CustomAudioSource
- track: daily.CustomAudioTrack
- class pipecat.transports.services.daily.DailyTransportClient(*args, **kwargs)[source]
Bases:
EventHandler
Core client for interacting with Daily’s API.
Manages the connection to Daily rooms and handles all low-level API interactions.
- Parameters:
room_url – URL of the Daily room to connect to.
token – Optional authentication token for the room.
bot_name – Display name for the bot in the call.
params – Configuration parameters (DailyParams).
callbacks – Event callback handlers (DailyCallbacks).
transport_name – Name identifier for the transport.
- property room_url: str
- property participant_id: str
- property in_sample_rate: int
- property out_sample_rate: int
- async send_message(frame)[source]
- Parameters:
frame (TransportMessageFrame | TransportMessageUrgentFrame)
- async register_audio_destination(destination)[source]
- Parameters:
destination (str)
- async write_audio_frame(frame)[source]
- Parameters:
frame (OutputAudioRawFrame)
- async write_video_frame(frame)[source]
- Parameters:
frame (OutputImageRawFrame)
- async setup(setup)[source]
- Parameters:
setup (FrameProcessorSetup)
- async cleanup()[source]
- async start(frame)[source]
- Parameters:
frame (StartFrame)
- async join()[source]
- async leave()[source]
- participants()[source]
- participant_counts()[source]
- async start_dialout(settings)[source]
- async stop_dialout(participant_id)[source]
- async send_dtmf(settings)[source]
- async sip_call_transfer(settings)[source]
- async sip_refer(settings)[source]
- async start_recording(streaming_settings, stream_id, force_new)[source]
- async stop_recording(stream_id)[source]
- async start_transcription(settings)[source]
- async stop_transcription()[source]
- async send_prebuilt_chat_message(message, user_name=None)[source]
- Parameters:
message (str)
user_name (str | None)
- async capture_participant_transcription(participant_id)[source]
- Parameters:
participant_id (str)
- async capture_participant_audio(participant_id, callback, audio_source='microphone', sample_rate=16000, callback_interval_ms=20)[source]
- Parameters:
participant_id (str)
callback (Callable)
audio_source (str)
sample_rate (int)
callback_interval_ms (int)
- async capture_participant_video(participant_id, callback, framerate=30, video_source='camera', color_format='RGB')[source]
- Parameters:
participant_id (str)
callback (Callable)
framerate (int)
video_source (str)
color_format (str)
- async add_custom_audio_track(track_name)[source]
- Parameters:
track_name (str)
- Return type:
DailyAudioTrack
- async remove_custom_audio_track(track_name)[source]
- Parameters:
track_name (str)
- async update_transcription(participants=None, instance_id=None)[source]
- async update_subscriptions(participant_settings=None, profile_settings=None)[source]
- async update_publishing(publishing_settings)[source]
- Parameters:
publishing_settings (Mapping[str, Any])
- async update_remote_participants(remote_participants)[source]
- Parameters:
remote_participants (Mapping[str, Any])
- on_active_speaker_changed(participant)[source]
- on_app_message(message, sender)[source]
- Parameters:
message (Any)
sender (str)
- on_call_state_updated(state)[source]
- Parameters:
state (str)
- on_dialin_connected(data)[source]
- Parameters:
data (Any)
- on_dialin_ready(sip_endpoint)[source]
- Parameters:
sip_endpoint (str)
- on_dialin_stopped(data)[source]
- Parameters:
data (Any)
- on_dialin_error(data)[source]
- Parameters:
data (Any)
- on_dialin_warning(data)[source]
- Parameters:
data (Any)
- on_dialout_answered(data)[source]
- Parameters:
data (Any)
- on_dialout_connected(data)[source]
- Parameters:
data (Any)
- on_dialout_stopped(data)[source]
- Parameters:
data (Any)
- on_dialout_error(data)[source]
- Parameters:
data (Any)
- on_dialout_warning(data)[source]
- Parameters:
data (Any)
- on_participant_joined(participant)[source]
- on_participant_left(participant, reason)[source]
- on_participant_updated(participant)[source]
- on_transcription_started(status)[source]
- on_transcription_stopped(stopped_by, stopped_by_error)[source]
- on_transcription_error(message)[source]
- on_transcription_message(message)[source]
- on_recording_started(status)[source]
- on_recording_stopped(stream_id)[source]
- on_recording_error(stream_id, message)[source]
- class pipecat.transports.services.daily.DailyInputTransport(transport, client, params, **kwargs)[source]
Bases:
BaseInputTransport
Handles incoming media streams and events from Daily calls.
Processes incoming audio, video, transcriptions and other events from Daily.
- Parameters:
client (DailyTransportClient) – DailyTransportClient instance.
params (DailyParams) – Configuration parameters.
transport (BaseTransport)
- property vad_analyzer: VADAnalyzer | None
- async start_audio_in_streaming()[source]
- async setup(setup)[source]
- Parameters:
setup (FrameProcessorSetup)
- async cleanup()[source]
- async start(frame)[source]
- Parameters:
frame (StartFrame)
- async stop(frame)[source]
- Parameters:
frame (EndFrame)
- async cancel(frame)[source]
- Parameters:
frame (CancelFrame)
- async process_frame(frame, direction)[source]
- Parameters:
frame (Frame)
direction (FrameDirection)
- async push_transcription_frame(frame)[source]
- Parameters:
frame (TranscriptionFrame | InterimTranscriptionFrame)
- async push_app_message(message, sender)[source]
- Parameters:
message (Any)
sender (str)
- async capture_participant_audio(participant_id, audio_source='microphone', sample_rate=16000)[source]
- Parameters:
participant_id (str)
audio_source (str)
sample_rate (int)
- async capture_participant_video(participant_id, framerate=30, video_source='camera', color_format='RGB')[source]
- Parameters:
participant_id (str)
framerate (int)
video_source (str)
color_format (str)
- async request_participant_image(frame)[source]
- Parameters:
frame (UserImageRequestFrame)
- class pipecat.transports.services.daily.DailyOutputTransport(transport, client, params, **kwargs)[source]
Bases:
BaseOutputTransport
Handles outgoing media streams and events to Daily calls.
Manages sending audio, video and other data to Daily calls.
- Parameters:
client (DailyTransportClient) – DailyTransportClient instance.
params (DailyParams) – Configuration parameters.
transport (BaseTransport)
- async setup(setup)[source]
- Parameters:
setup (FrameProcessorSetup)
- async cleanup()[source]
- async start(frame)[source]
- Parameters:
frame (StartFrame)
- async stop(frame)[source]
- Parameters:
frame (EndFrame)
- async cancel(frame)[source]
- Parameters:
frame (CancelFrame)
- async send_message(frame)[source]
- Parameters:
frame (TransportMessageFrame | TransportMessageUrgentFrame)
- async register_video_destination(destination)[source]
- Parameters:
destination (str)
- async register_audio_destination(destination)[source]
- Parameters:
destination (str)
- async write_dtmf(frame)[source]
- Parameters:
frame (OutputDTMFFrame | OutputDTMFUrgentFrame)
- async write_audio_frame(frame)[source]
- Parameters:
frame (OutputAudioRawFrame)
- async write_video_frame(frame)[source]
- Parameters:
frame (OutputImageRawFrame)
- class pipecat.transports.services.daily.DailyTransport(room_url, token, bot_name, params=None, input_name=None, output_name=None)[source]
Bases:
BaseTransport
Transport implementation for Daily audio and video calls.
- Handles audio/video streaming, transcription, recordings, dial-in,
dial-out, and call management through Daily’s API.
- Parameters:
room_url (str) – URL of the Daily room to connect to.
token (str | None) – Optional authentication token for the room.
bot_name (str) – Display name for the bot in the call.
params (DailyParams | None) – Configuration parameters (DailyParams) for the transport.
input_name (str | None) – Optional name for the input transport.
output_name (str | None) – Optional name for the output transport.
- input()[source]
- Return type:
DailyInputTransport
- output()[source]
- Return type:
DailyOutputTransport
- property room_url: str
- property participant_id: str
- async send_image(frame)[source]
- Parameters:
frame (OutputImageRawFrame | SpriteFrame)
- async send_audio(frame)[source]
- Parameters:
frame (OutputAudioRawFrame)
- participants()[source]
- participant_counts()[source]
- async start_dialout(settings=None)[source]
- async stop_dialout(participant_id)[source]
- async send_dtmf(settings)[source]
- async sip_call_transfer(settings)[source]
- async sip_refer(settings)[source]
- async start_recording(streaming_settings=None, stream_id=None, force_new=None)[source]
- async stop_recording(stream_id=None)[source]
- async start_transcription(settings=None)[source]
- async stop_transcription()[source]
- async send_prebuilt_chat_message(message, user_name=None)[source]
Sends a chat message to Daily’s Prebuilt main room.
Args: message: The chat message to send user_name: Optional user name that will appear as sender of the message
- Parameters:
message (str)
user_name (str | None)
- async capture_participant_transcription(participant_id)[source]
- Parameters:
participant_id (str)
- async capture_participant_audio(participant_id, audio_source='microphone', sample_rate=16000)[source]
- Parameters:
participant_id (str)
audio_source (str)
sample_rate (int)
- async capture_participant_video(participant_id, framerate=30, video_source='camera', color_format='RGB')[source]
- Parameters:
participant_id (str)
framerate (int)
video_source (str)
color_format (str)
- async update_publishing(publishing_settings)[source]
- Parameters:
publishing_settings (Mapping[str, Any])
- async update_subscriptions(participant_settings=None, profile_settings=None)[source]
- async update_remote_participants(remote_participants)[source]
- Parameters:
remote_participants (Mapping[str, Any])