Settings class that you can use in two ways:
- Configure at initialization: pass a
settings=argument when constructing a service. - Update at runtime: push an
*UpdateSettingsFramethrough the pipeline to change settings mid-conversation.
Configuring settings at initialization
Pass asettings= argument to any service constructor using that service’s Settings class:
Common settings by service type
Each service type has a base set of settings. Individual services may extend these with provider-specific fields.LLM settings
TTS settings
STT settings
Individual services extend these base settings with provider-specific fields.
For example, Deepgram STT adds
endpointing, smart_format, diarize, and
more. See the individual service
documentation for the full
list of available settings.Updating settings at runtime
You can change service settings while the pipeline is running by pushing an update settings frame. This is useful for scenarios like switching languages, changing voices, or adjusting LLM parameters mid-conversation. Use these frame types:
Only include the fields you want to change. Unspecified fields are left as-is.
Update settings frames are uninterruptible. They will always be processed even
if a user interruption occurs.
Service-specific settings
Services can extend the base settings with provider-specific fields. For example:- Cartesia TTS adds
generation_config(volume, speed, emotion) andpronunciation_dict_id - OpenAI TTS adds
instructionsandspeed - Deepgram STT adds
endpointing,smart_format,diarize,punctuate, and many more - OpenAI LLM adds
max_completion_tokens
Passing extra parameters
Every Settings class includes anextra dict for passing provider-specific parameters that Pipecat doesn’t have a dedicated field for. This is useful when a provider supports options that haven’t been explicitly added to the Settings dataclass yet:
extra are passed through to the underlying API call. You can also update extra at runtime:
The
extra dict is merged on updates — new keys are added and existing keys
are overwritten, but keys not present in the delta are left unchanged.