Added
-
SmallestTTSServicenow uses Smallest AI's continuation API: text fragments within the same LLM turn share acontext_idso the server joins them into one continuous generation instead of resetting prosody on each request. Added an optionalmax_buffer_delay_mssetting to control the server-side buffering window.
(PR #5626) -
Added
LiveKitParams.audio_out_queue_size_msto configure the outgoingrtc.AudioSourcebuffer size. Defaults to LiveKit's 1000 ms, so existing behaviour is unchanged.
(PR #5699) -
Added
enable_turn_detectiontoGradiumSTTService. With it on, Gradium's server-side end-pointing signal decides when user turns start and end instead of the pipeline's VAD, and the service recommendsExternalUserTurnStrategiesto the user aggregator. The neweot_horizon_s,eot_thresholdandpost_flush_cooldown_framessettings tune it.
(PR #5706)
Changed
-
⚠️ Behavior change: Pipecat now supports the openai 3 SDK, and the
openaidependency is widened to>=1.74.0,<4, so a fresh resolve picks openai 3. It builds its HTTP clients onhttpx2instead ofhttpx, and TLS certificates then verify against the operating system trust store rather thancertifi. Minimal container images without system CA certificates, and environments behind a TLS-inspecting proxy, may needSSL_CERT_FILEorSSL_CERT_DIRpointed at a CA bundle. Pinopenai<3to stay on the previous HTTP stack.A `Timeout` passed to a service's `http_client` — `OpenAITTSService` andthe Whisper-based STT services — must come from the HTTP client family the
installed SDK uses:httpx2on openai 3,httpxbefore it.
(PR #5620) -
Widened the
anthropicdependency to>=0.49.0,<2to support the anthropic 1 SDK.AnthropicLLMServicesendstemperature,top_kandtop_pthrough the request'sextra_body, since the Messages API methods dropped them as parameters in anthropic 1. Requests reach the API unchanged, and the settings keep their names and meaning.If you pass your own Bedrock client, anthropic 1 requires an explicitregion —
AsyncAnthropicBedrock(aws_region=...), orAWS_REGIONin the
environment — where it previously fell back tous-east-1.
(PR #5623) -
Widened the
mcpdependency tomcp[cli]>=1.24.0,<3soMCPClientworks with the MCP SDK's 2.x line as well as 1.x. The floor moves to 1.24.0, the first release carrying thestreamable_http_clienttransport that both lines share.
(PR #5624) -
SpeechmaticsSTTServicereconnects with exponential backoff after a dropped connection or a recoverable server error, buffering audio meanwhile. A rejected credential, rejected session, request-rejecting server error, or exhausted reconnect attempts are reported as a permanent error, leaving the service unusable for thePipelineWorker'sProcessorUnusablePolicyto act on. A settings update that requires a reconnect gives a rejected session another chance.
(PR #5631) -
⚠️ Breaking change:
SpeechmaticsSTTServicenow targets Speechmatics Agent STT (/v2/agent) through thespeechmatics-agent-sttSDK, which replacesspeechmatics-voice[smart]in thespeechmaticsextra. The service cannot connect to the legacy real-time endpoint. The defaultturn_detection_modeis nowTurnDetectionMode.VAD, so Speechmatics closes turns server-side and the service recommendsExternalUserTurnStrategies; passturn_detection_mode=TurnDetectionMode.EXTERNALto keep driving turns from Pipecat's own VAD. The default model islinden-1, selected by the newmodelsetting.Settings.include_partialsis renamedenable_partials.
(PR #5631) -
The
pipecat eval suitelive dashboard now shows a repeated (bot, scenario) row's pass rate while its attempts are still running, beside how many are left, instead of only once every attempt is in. A pass rate, on the dashboard and in the piped summary, is green while every finished attempt passed and red once one has failed; the yellow middle band is gone.
(PR #5704) -
The
recordingline inpipecat eval suite's settings now says which of the selected runs will actually record. Only an audio-mode run produces audio, so with recording on it readson (3 of 6 runs; text mode skipped)when the selection is mixed andoff (all runs text mode)when nothing will be recorded.pipecat eval run -aprints the same line.
(PR #5707) -
DeepSeekLLMServicenow defaultsthinkingto disabled. DeepSeek's V4 models otherwise reason before every answer, which delays the first spoken token. Passthinking=DeepSeekLLMService.ThinkingConfig(type="enabled")to turn it on, orthinking=Noneto use DeepSeek's own default.
(PR #5710)
Deprecated
- Deprecated
SpeechmaticsSTTServiceoperating_pointonSettingsandInputParams; usemodelinstead. Passing it still selects the model and emits aDeprecationWarning. It will be removed in 2.0.0.
(PR #5631)
Removed
-
⚠️ Breaking change: Agent STT has no speaker focus, so
SpeechmaticsSTTServiceno longer exportsSpeakerFocusModeorSpeakerFocusConfig, andUpdateParamsandupdate_params()are removed. TheSettingsandInputParamsfieldsfocus_speakers,ignore_speakers,focus_mode,speaker_passive_format,max_delay,end_of_utterance_silence_trigger,end_of_utterance_max_delay,split_sentences,include_results, andextra_paramsare removed, as areTurnDetectionMode.FIXED,ADAPTIVE, andSMART_TURN.OperatingPointis replaced byModel.
(PR #5631) -
⚠️ Removed
LmntTTSService. LMNT has shut down and is no longer available.
(PR #5698)
Fixed
-
Fixed the WebSocket transports treating an audio frame as unsent whenever the serializer emitted no payload for it. A serializer that resamples through a stream resampler buffers audio across calls and emits it in a later one, so on a pipeline whose output sample rate differs from the wire rate most frames took that path. Those frames are now paced and pushed downstream like any other, so the output queue drains at playback speed again and
BotStoppedSpeakingFrameand theEndFramebehind it are no longer reached early, which matters most where the serializer hangs up the call on theEndFrame.
(PR #5593) -
Fixed
PIPECAT_SETUP_FILESparsing on platforms whose path separator is not a colon.
(PR #5638) -
Fixed the
pipecat eval suitelive dashboard showing a repeated (bot, scenario) row as idle while a finished attempt's bot was still being stopped. The row now keeps spinning until its concurrency slot is released.EvalRungains astoppingflag for that window.
(PR #5704) -
Async function calls (
cancel_on_interruption=False) whose result arrives before the conversation moves on are now recorded as ordinary tool results, without the deferred-result message that asks the LLM to convey them. The deferred delivery still applies when the LLM has responded, a new message has landed, or the call sent an intermediate update in the meantime.
(PR #5705) -
Fixed
DeepSeekLLMServicefailing every request after a tool call in thinking mode with a 400 (The reasoning_content in the thinking mode must be passed back to the API). DeepSeek requiresreasoning_contenton each assistant message of the current turn once a tool call is involved; the newDeepSeekLLMAdaptersupplies an empty one on assistant messages that have none.
(PR #5710)