github pipecat-ai/pipecat v0.0.81

latest release: v0.0.82
6 days ago

Added

  • Added pipecat.extensions.voicemail, a module for detecting voicemail vs. live conversation, primarily intended for use in outbound calling scenarios. The voicemail module is optimized for text LLMs only.

  • Added new frames to the idle_timeout_frames arg: TranscriptionFrame, InterimTranscriptionFrame, UserStartedSpeakingFrame, and UserStoppedSpeakingFrame. These additions serve as indicators of user activity in the pipeline idle detection logic.

  • Allow passing custom pipeline sink and source processors to a Pipeline. Pipeline source and sink processors are used to know and control what's coming in and out of a Pipeline processor.

  • Added FrameProcessor.pause_processing_system_frames() and FrameProcessor.resume_processing_system_frames(). These allow to pause and resume the processing of system frame.

  • Added new on_process_frame() observer method which makes it possible to know when a frame is being processed.

  • Added new FrameProcessor.entry_processor() method. This allows you to access the first non-compound processor in a pipeline.

  • Added FrameProcessor properties processors, next and previous.

  • ElevenLabsTTSService now supports additional runtime changes to the model, language, and voice_settings parameters.

  • Added apply_text_normalization support to ElevenLabsTTSService and ElevenLabsHttpTTSService.

  • Added MistralLLMService, using Mistral's chat completion API.

  • Added the ability to retry executing a chat completion after a timeout period for OpenAILLMService and its subclasses, AnthropicLLMService, and AWSBedrockLLMService. The LLM services accept new args: retry_timeout_secs and retry_on_timeout. This feature is disabled by default.

Changed

  • Updated daily-python to 0.19.7.

Deprecated

  • FrameProcessor.wait_for_task() is deprecated. Use await task or await asyncio.wait_for(task, timeout) instead.

Removed

  • Watchdog timers have been removed. They were introduced in 0.0.72 to help diagnose pipeline freezes. Unfortunately, they proved ineffective since they required developers to use Pipecat-specific queues, iterators, and events to correctly reset the timer, which limited their usefulness and added friction.

  • Removed unused FrameProcessor.set_parent() and FrameProcessor.get_parent().

Fixed

  • Fixed an issue that would cause PipelineRunner and PipelineTask to not handle external asyncio task cancellation properly.

  • Added SpeechmaticsSTTService exception handling on connection and sending.

  • Replaced asyncio.wait_for() for wait_for2.wait_for() for Python < 3.12. because of issues regarding task cancellation (i.e. cancellation is never propagated).
    See https://bugs.python.org/issue42130

  • Fixed an AudioBufferProcessor issues that would cause audio overlap when setting a max buffer size.

  • Fixed an issue where AsyncAITTSService had very high latency in responding by adding force=true when sending the flush command.

Performance

  • Improve PipelineTask performance by using direct mode processors and by removing unnecessary tasks.

  • Improve ParallelPipeline performance by using direct mode, by not creating a task for each frame and every sub-pipeline and also by removing other unnecessary tasks.

  • Pipeline performance improvements by using direct mode.

Other

  • Added 14w-function-calling-mistal.py using MistralLLMService.

  • Added 13j-azure-transcription.py using AzureSTTService.

Don't miss a new pipecat release

NewReleases is sending notifications on new releases.