32 KiB
Changelog
All notable changes to pipecat will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
-
Added
EndTaskFrameandCancelTaskFrame. These are new frames that are meant to be pushed upstream to tell the pipeline task to stop nicely or immediately respectively. -
Added configurable LLM parameters (e.g., temperature, top_p, max_tokens, seed) for OpenAI, Anthropic, and Together AI services along with corresponding setter functions.
-
Added
sample_rateas a constructor parameter for TTS services. -
Pipecat has a pipeline-based architecture. The pipeline consists of frame processors linked to each other. The elements traveling across the pipeline are called frames.
To have a deterministic behavior the frames traveling through the pipeline should always be ordered, except system frames which are out-of-band frames. To achieve that, each frame processor should only output frames from a single task.
In this version we introduce synchronous and asynchronous frame processors. The synchronous processors push output frames from the same task that they receive input frames, and therefore only pushing frames from one task. Asynchronous frame processors can have internal tasks to perform things asynchronously (e.g. receiving data from a websocket) but they also have a single task where they push frames from.
By default, frame processors are synchronous. To change a frame processor to asynchronous you only need to pass
sync=Falseto the base class constructor. -
Added pipeline clocks. A pipeline clock is used by the output transport to know when a frame needs to be presented. For that, all frames now have an optional
ptsfield (prensentation timestamp). There's currently just one clock implementationSystemClockand theptsfield is currently only used forTextFrames (audio and image frames will be next). -
A clock can now be specified to
PipelineTask(defaults toSystemClock). This clock will be passed to each frame processor via theStartFrame. -
Added
CartesiaHttpTTSService. This is a synchronous frame processor (i.e. given an input text frame it will wait for the whole output before returning). -
DailyTransportnow supports setting the audio bitrate to improve audio quality through theDailyParams.audio_out_bitrateparameter. The new default is 96kbps. -
DailyTransportnow uses the number of audio output channels (1 or 2) to set mono or stereo audio when needed. -
Interruptions support has been added to
TwilioFrameSerializerwhen usingFastAPIWebsocketTransport. -
Added new
LmntTTSServicetext-to-speech service. (see https://www.lmnt.com/) -
Added
TTSModelUpdateFrame,TTSLanguageUpdateFrame,STTModelUpdateFrame, andSTTLanguageUpdateFrameframes to allow you to switch models, language and voices in TTS and STT services. -
Added new
transcriptions.Languageenum.
Changed
-
We now distinguish between input and output audio and image frames. We introduce
InputAudioRawFrame,OutputAudioRawFrame,InputImageRawFrameandOutputImageRawFrame(and other subclasses of those). The input frames usually come from an input transport and are meant to be processed inside the pipeline to generate new frames. However, the input frames will not be sent through an output transport. The output frames can also be processed by any frame processor in the pipeline and they are allowed to be sent by the output transport. -
ParallelTaskhas been renamed toSyncParallelPipeline. ASyncParallelPipelineis a frame processor that contains a list of different pipelines to be executed concurrently. The difference between aSyncParallelPipelineand aParallelPipelineis that, given an input frame, theSyncParallelPipelinewill wait for all the internal pipelines to complete. This is achieved by ensuring all the processors in each of the internal pipelines are synchronous. -
StartFrameis back a system frame so we make sure it's processed immediately by all processors.EndFramestays a control frame since it needs to be ordered allowing the frames in the pipeline to be processed. -
Updated
MoondreamServicerevision to2024-08-26. -
CartesiaTTSServiceandElevenLabsTTSServicenow add presentation timestamps to their text output. This allows the output transport to push the text frames downstream at almost the same time the words are spoken. We say "almost" because currently the audio frames don't have presentation timestamp but they should be played at roughly the same time. -
DailyTransport.on_joinedevent now returns the full session data instead of just the participant. -
CartesiaTTSServiceis now a subclass ofTTSService. -
DeepgramSTTServiceis now a subclass ofSTTService. -
WhisperSTTServiceis now a subclass ofSegmentedSTTService. ASegmentedSTTServiceis aSTTServicewhere the provided audio is given in a big chunk (i.e. from when the user starts speaking until the user stops speaking) instead of a continous stream.
Fixed
-
Fixed a
BaseOutputTransportissue that would stop audio and video rendering tasks (after receiving andEndFrame) before the internal queue was emptied, causing the pipeline to finish prematurely. -
StartFrameshould be the first frame every processor receives to avoid situations where things are not initialized (because initialization happens onStartFrame) and other frames come in resulting in undesired behavior.
Performance
obj_id()andobj_count()now useitertools.countavoiding the need ofthreading.Lock.
[0.0.41] - 2024-08-22
Added
- Added
LivekitFrameSerializeraudio frame serializer.
Fixed
-
Fix
FastAPIWebsocketOutputTransportvariable name clash with subclass. -
Fix an
AnthropicLLMServiceissue with empty arguments in function calling.
Other
- Fixed
studypalexample errors.
[0.0.40] - 2024-08-20
Added
-
VAD parameters can now be dynamicallt updated using the
VADParamsUpdateFrame. -
ErrorFramehas now afatalfield to indicate the bot should exit if a fatal error is pushed upstream (false by default). A newFatalErrorFramethat sets this flag to true has been added. -
AnthropicLLMServicenow supports function calling and initial support for prompt caching. (see https://www.anthropic.com/news/prompt-caching) -
ElevenLabsTTSServicecan now specify ElevenLabs input parameters such asoutput_format. -
TwilioFrameSerializercan now specify Twilio's and Pipecat's desired sample rates to use. -
Added new
on_participant_updatedevent toDailyTransport. -
Added
DailyRESTHelper.delete_room_by_name()andDailyRESTHelper.delete_room_by_url(). -
Added LLM and TTS usage metrics. Those are enabled when
PipelineParams.enable_usage_metricsis True. -
AudioRawFrames are now pushed downstream from the base output transport. This allows capturing the exact words the bot says by adding an STT service at the end of the pipeline. -
Added new
GStreamerPipelineSource. This processor can generate image or audio frames from a GStreamer pipeline (e.g. reading an MP4 file, and RTP stream or anything supported by GStreamer). -
Added
TransportParams.audio_out_is_live. This flag is False by default and it is useful to indicate we should not synchronize audio with sporadic images. -
Added new
BotStartedSpeakingFrameandBotStoppedSpeakingFramecontrol frames. These frames are pushed upstream and they should wrapBotSpeakingFrame. -
Transports now allow you to register event handlers without decorators.
Changed
-
Support RTVI message protocol 0.1. This includes new messages, support for messages responses, support for actions, configuration, webhooks and a bunch of new cool stuff. (see https://docs.rtvi.ai/)
-
SileroVADdependency is now imported via pip'ssilero-vadpackage. -
ElevenLabsTTSServicenow useseleven_turbo_v2_5model by default. -
BotSpeakingFrameis now a control frame. -
StartFrameis now a control frame similar toEndFrame. -
DeepgramTTSServicenow is more customizable. You can adjust the encoding and sample rate.
Fixed
-
TTSStartFrameandTTSStopFrameare now sent when TTS really starts and stops. This allows for knowing when the bot starts and stops speaking even with asynchronous services (like Cartesia). -
Fixed
AzureSTTServicetranscription frame timestamps. -
Fixed an issue with
DailyRESTHelper.create_room()expirations which would cause this function to stop working after the initial expiration elapsed. -
Improved
EndFrameandCancelFramehandling.EndFrameshould end things gracefully while aCancelFrameshould cancel all running tasks as soon as possible. -
Fixed an issue in
AIServicethat would cause a yieldedNonevalue to be processed. -
RTVI's
bot-readymessage is now sent when the RTVI pipeline is ready and a first participant joins. -
Fixed a
BaseInputTransportissue that was causing incoming system frames to be queued instead of being pushed immediately. -
Fixed a
BaseInputTransportissue that was causing start/stop interruptions incoming frames to not cancel tasks and be processed properly.
Other
-
Added
studypalexample (from to the Cartesia folks!). -
Most examples now use Cartesia.
-
Added examples
foundational/19a-tools-anthropic.py,foundational/19b-tools-video-anthropic.pyandfoundational/19a-tools-togetherai.py. -
Added examples
foundational/18-gstreamer-filesrc.pyandfoundational/18a-gstreamer-videotestsrc.pythat show how to useGStreamerPipelineSource -
Remove
requestslibrary usage. -
Cleanup examples and use
DailyRESTHelper.
[0.0.39] - 2024-07-23
Fixed
- Fixed a regression introduced in 0.0.38 that would cause Daily transcription to stop the Pipeline.
[0.0.38] - 2024-07-23
Added
-
Added
force_reload,skip_validationandtrust_repotoSileroVADandSileroVADAnalyzer. This allows caching and various GitHub repo validations. -
Added
send_initial_empty_metricsflag toPipelineParamsto request for initial empty metrics (zero values). True by default.
Fixed
-
Fixed initial metrics format. It was using the wrong keys name/time instead of processor/value.
-
STT services should be using ISO 8601 time format for transcription frames.
-
Fixed an issue that would cause Daily transport to show a stop transcription error when actually none occurred.
[0.0.37] - 2024-07-22
Added
-
Added
RTVIProcessorwhich implements the RTVI-AI standard. See https://github.com/rtvi-ai -
Added
BotInterruptionFramewhich allows interrupting the bot while talking. -
Added
LLMMessagesAppendFramewhich allows appending messages to the current LLM context. -
Added
LLMMessagesUpdateFramewhich allows changing the LLM context for the one provided in this new frame. -
Added
LLMModelUpdateFramewhich allows updating the LLM model. -
Added
TTSSpeakFramewhich causes the bot say some text. This text will not be part of the LLM context. -
Added
TTSVoiceUpdateFramewhich allows updating the TTS voice.
Removed
- We remove the
LLMResponseStartFrameandLLMResponseEndFrameframes. These were added in the past to properly handle interruptions for theLLMAssistantContextAggregator. But theLLMContextAggregatoris now based onLLMResponseAggregatorwhich handles interruptions properly by just processing theStartInterruptionFrame, so there's no need for these extra frames any more.
Fixed
-
Fixed an issue with
StatelessTextTransformerwhere it was pushing a string instead of aTextFrame. -
TTSServiceend of sentence detection has been improved. It now works with acronyms, numbers, hours and others. -
Fixed an issue in
TTSServicethat would not properly flush the current aggregated sentence if anLLMFullResponseEndFramewas found.
Performance
CartesiaTTSServicenow uses websockets which improves speed. It also leverages the new Cartesia contexts which maintains generated audio prosody when multiple inputs are sent, therefore improving audio quality a lot.
[0.0.36] - 2024-07-02
Added
-
Added
GladiaSTTService. See https://docs.gladia.io/chapters/speech-to-text-api/pages/live-speech-recognition -
Added
XTTSService. This is a local Text-To-Speech service. See https://github.com/coqui-ai/TTS -
Added
UserIdleProcessor. This processor can be used to wait for any interaction with the user. If the user doesn't say anything within a given timeout a provided callback is called. -
Added
IdleFrameProcessor. This processor can be used to wait for frames within a given timeout. If no frame is received within the timeout a provided callback is called. -
Added new frame
BotSpeakingFrame. This frame will be continuously pushed upstream while the bot is talking. -
It is now possible to specify a Silero VAD version when using
SileroVADAnalyzerorSileroVAD. -
Added
AysncFrameProcessorandAsyncAIService. Some services likeDeepgramSTTServiceneed to process things asynchronously. For example, audio is sent to Deepgram but transcriptions are not returned immediately. In these cases we still require all frames (except system frames) to be pushed downstream from a single task. That's whatAsyncFrameProcessoris for. It creates a task and all frames should be pushed from that task. So, whenever a new Deepgram transcription is ready that transcription will also be pushed from this internal task. -
The
MetricsFramenow includes processing metrics if metrics are enabled. The processing metrics indicate the time a processor needs to generate all its output. Note that not all processors generate these kind of metrics.
Changed
-
WhisperSTTServicemodel can now also be a string. -
Added missing * keyword separators in services.
Fixed
-
WebsocketServerTransportdoesn't try to send frames anymore if serializers returnsNone. -
Fixed an issue where exceptions that occurred inside frame processors were being swallowed and not displayed.
-
Fixed an issue in
FastAPIWebsocketTransportwhere it would still try to send data to the websocket after being closed.
Other
-
Added Fly.io deployment example in
examples/deployment/flyio-example. -
Added new
17-detect-user-idle.pyexample that shows how to use the newUserIdleProcessor.
[0.0.35] - 2024-06-28
Changed
-
FastAPIWebsocketParamsnow require a serializer. -
TwilioFrameSerializernow requires astreamSid.
Fixed
- Silero VAD number of frames needs to be 512 for 16000 sample rate or 256 for 8000 sample rate.
[0.0.34] - 2024-06-25
Fixed
-
Fixed an issue with asynchronous STT services (Deepgram and Azure) that could interruptions to ignore transcriptions.
-
Fixed an issue introduced in 0.0.33 that would cause the LLM to generate shorter output.
[0.0.33] - 2024-06-25
Changed
- Upgraded to Cartesia's new Python library 1.0.0.
CartesiaTTSServicenow expects a voice ID instead of a voice name (you can get the voice ID from Cartesia's playground). You can also specify the audiosample_rateandencodinginstead of the previousoutput_format.
Fixed
-
Fixed an issue with asynchronous STT services (Deepgram and Azure) that could cause static audio issues and interruptions to not work properly when dealing with multiple LLMs sentences.
-
Fixed an issue that could mix new LLM responses with previous ones when handling interruptions.
-
Fixed a Daily transport blocking situation that occurred while reading audio frames after a participant left the room. Needs daily-python >= 0.10.1.
[0.0.32] - 2024-06-22
Added
-
Allow specifying a
DeepgramSTTServiceurl which allows using on-prem Deepgram. -
Added new
FastAPIWebsocketTransport. This is a new websocket transport that can be integrated with FastAPI websockets. -
Added new
TwilioFrameSerializer. This is a new serializer that knows how to serialize and deserialize audio frames from Twilio. -
Added Daily transport event:
on_dialout_answered. See https://reference-python.daily.co/api_reference.html#daily.EventHandler -
Added new
AzureSTTService. This allows you to use Azure Speech-To-Text.
Performance
- Convert
BaseOutputTransportandBaseOutputTransportto fully use asyncio and remove the use of threads.
Other
-
Added
twilio-chatbot. This is an example that shows how to integrate Twilio phone numbers with a Pipecat bot. -
Updated
07f-interruptible-azure.pyto useAzureLLMService,AzureSTTServiceandAzureTTSService.
[0.0.31] - 2024-06-13
Performance
- Break long audio frames into 20ms chunks instead of 10ms.
[0.0.30] - 2024-06-13
Added
-
Added
report_only_initial_ttfbtoPipelineParams. This will make it so only the initial TTFB metrics after the user stops talking are reported. -
Added
OpenPipeLLMService. This service will let you run OpenAI through OpenPipe's SDK. -
Allow specifying frame processors' name through a new
nameconstructor argument. -
Added
DeepgramSTTService. This service has an ongoing websocket connection. To handle this, it subclassesAIServiceinstead ofSTTService. The output of this service will be pushed from the same task, except system frames likeStartFrame,CancelFrameorStartInterruptionFrame.
Changed
-
FrameSerializer.deserialize()can now returnNonein case it is not possible to desearialize the given data. -
daily_rest.DailyRoomPropertiesnow allows extra unknown parameters.
Fixed
-
Fixed an issue where
DailyRoomProperties.expalways had the same old timestamp unless set by the user. -
Fixed a couple of issues with
WebsocketServerTransport. It needed to usepush_audio_frame()and also VAD was not working properly. -
Fixed an issue that would cause LLM aggregator to fail with small
VADParams.stop_secsvalues. -
Fixed an issue where
BaseOutputTransportwould send longer audio frames preventing interruptions.
Other
-
Added new
07h-interruptible-openpipe.pyexample. This example shows how to use OpenPipe to run OpenAI LLMs and get the logs stored in OpenPipe. -
Added new
dialin-chatbotexample. This examples shows how to call the bot using a phone number.
[0.0.29] - 2024-06-07
Added
-
Added a new
FunctionFilter. This filter will let you filter frames based on a given function, except system messages which should never be filtered. -
Added
FrameProcessor.can_generate_metrics()method to indicate if a processor can generate metrics. In the future this might get an extra argument to ask for a specific type of metric. -
Added
BasePipeline. All pipeline classes should be based on this class. All subclasses should implement aprocessors_with_metrics()method that returns a list of allFrameProcessors in the pipeline that can generate metrics. -
Added
enable_metricstoPipelineParams. -
Added
MetricsFrame. TheMetricsFramewill report different metrics in the system. Right now, it can report TTFB (Time To First Byte) values for different services, that is the time spent between the arrival of aFrameto the processor/service until the firstDataFrameis pushed downstream. If metrics are enabled an intialMetricsFramewith all the services in the pipeline will be sent. -
Added TTFB metrics and debug logging for TTS services.
Changed
- Moved
ParallelTasktopipecat.pipeline.parallel_task.
Fixed
- Fixed PlayHT TTS service to work properly async.
[0.0.28] - 2024-06-05
Fixed
- Fixed an issue with
SileroVADAnalyzerthat would cause memory to keep growing indefinitely.
[0.0.27] - 2024-06-05
Added
- Added
DailyTransport.participants()andDailyTransport.participant_counts().
[0.0.26] - 2024-06-05
Added
-
Added
OpenAITTSService. -
Allow passing
output_formatandmodel_idtoCartesiaTTSServiceto change audio sample format and the model to use. -
Added
DailyRESTHelperwhich helps you create Daily rooms and tokens in an easy way. -
PipelineTasknow has ahas_finished()method to indicate if the task has completed. If a task is never ranhas_finished()will return False. -
PipelineRunnernow supports SIGTERM. If received, the runner will be canceled.
Fixed
-
Fixed an issue where
BaseInputTransportandBaseOutputTransportwhere stopping push tasks before pushingEndFrameframes could cause the bots to get stuck. -
Fixed an error closing local audio transports.
-
Fixed an issue with Deepgram TTS that was introduced in the previous release.
-
Fixed
AnthropicLLMServiceinterruptions. If an interruption occurred, ausermessage could be appended after the previoususermessage. Anthropic does not allow that because it requires alternateuserandassistantmessages.
Performance
-
The
BaseInputTransportdoes not pull audio frames from sub-classes any more. Instead, sub-classes now push audio frames into a queue in the base class. Also,DailyInputTransportnow pushes audio frames every 20ms instead of 10ms. -
Remove redundant camera input thread from
DailyInputTransport. This should improve performance a little bit when processing participant videos. -
Load Cartesia voice on startup.
[0.0.25] - 2024-05-31
Added
-
Added WebsocketServerTransport. This will create a websocket server and will read messages coming from a client. The messages are serialized/deserialized with protobufs. See
examples/websocket-serverfor a detailed example. -
Added function calling (LLMService.register_function()). This will allow the LLM to call functions you have registered when needed. For example, if you register a function to get the weather in Los Angeles and ask the LLM about the weather in Los Angeles, the LLM will call your function. See https://platform.openai.com/docs/guides/function-calling
-
Added new
LangchainProcessor. -
Added Cartesia TTS support (https://cartesia.ai/)
Fixed
-
Fixed SileroVAD frame processor.
-
Fixed an issue where
camera_out_enabledwould cause the highg CPU usage if no image was provided.
Performance
- Removed unnecessary audio input tasks.
[0.0.24] - 2024-05-29
Added
-
Exposed
on_dialin_readyfor Daily transport SIP endpoint handling. This notifies when the Daily room SIP endpoints are ready. This allows integrating with third-party services like Twilio. -
Exposed Daily transport
on_app_messageevent. -
Added Daily transport
on_call_state_updatedevent. -
Added Daily transport
start_recording(),stop_recordingandstop_dialout.
Changed
-
Added
PipelineParams. This replaces theallow_interruptionsargument inPipelineTaskand will allow future parameters in the future. -
Fixed Deepgram Aura TTS base_url and added ErrorFrame reporting.
-
GoogleLLMService
api_keyargument is now mandatory.
Fixed
-
Daily tranport
dialin-readydoesn't not block anymore and it now handles timeouts. -
Fixed AzureLLMService.
[0.0.23] - 2024-05-23
Fixed
- Fixed an issue handling Daily transport
dialin-readyevent.
[0.0.22] - 2024-05-23
Added
-
Added Daily transport
start_dialout()to be able to make phone or SIP calls. See https://reference-python.daily.co/api_reference.html#daily.CallClient.start_dialout -
Added Daily transport support for dial-in use cases.
-
Added Daily transport events:
on_dialout_connected,on_dialout_stopped,on_dialout_errorandon_dialout_warning. See https://reference-python.daily.co/api_reference.html#daily.EventHandler
[0.0.21] - 2024-05-22
Added
-
Added vision support to Anthropic service.
-
Added
WakeCheckFilterwhich allows you to pass information downstream only if you say a certain phrase/word.
Changed
Filterhas been renamed toFrameFilterand it's now underprocessors/filters.
Fixed
-
Fixed Anthropic service to use new frame types.
-
Fixed an issue in
LLMUserResponseAggregatorandUserResponseAggregatorthat would cause frames after a brief pause to not be pushed to the LLM. -
Clear the audio output buffer if we are interrupted.
-
Re-add exponential smoothing after volume calculation. This makes sure the volume value being used doesn't fluctuate so much.
[0.0.20] - 2024-05-22
Added
- In order to improve interruptions we now compute a loudness level using pyloudnorm. The audio coming WebRTC transports (e.g. Daily) have an Automatic Gain Control (AGC) algorithm applied to the signal, however we don't do that on our local PyAudio signals. This means that currently incoming audio from PyAudio is kind of broken. We will fix it in future releases.
Fixed
-
Fixed an issue where
StartInterruptionFramewould causeLLMUserResponseAggregatorto push the accumulated text causing the LLM respond in the wrong task. TheStartInterruptionFrameshould not trigger any new LLM response because that would be spoken in a different task. -
Fixed an issue where tasks and threads could be paused because the executor didn't have more tasks available. This was causing issues when cancelling and recreating tasks during interruptions.
[0.0.19] - 2024-05-20
Changed
LLMUserResponseAggregatorandLLMAssistantResponseAggregatorinternal messages are now exposed through themessagesproperty.
Fixed
- Fixed an issue where
LLMAssistantResponseAggregatorwas not accumulating the full response but short sentences instead. If there's an interruption we only accumulate what the bot has spoken until now in a long response as well.
[0.0.18] - 2024-05-20
Fixed
- Fixed an issue in
DailyOuputTransportwhere transport messages were not being sent.
[0.0.17] - 2024-05-19
Added
-
Added
google.generativeaimodel support, including vision. This newgoogleservice defaults to usinggemini-1.5-flash-latest. Example inexamples/foundational/12a-describe-video-gemini-flash.py. -
Added vision support to
openaiservice. Example inexamples/foundational/12a-describe-video-gemini-flash.py. -
Added initial interruptions support. The assistant contexts (or aggregators) should now be placed after the output transport. This way, only the completed spoken context is added to the assistant context.
-
Added
VADParamsso you can control voice confidence level and others. -
VADAnalyzernow uses an exponential smoothed volume to improve speech detection. This is useful when voice confidence is high (because there's someone talking near you) but volume is low.
Fixed
-
Fixed an issue where TTSService was not pushing TextFrames downstream.
-
Fixed issues with Ctrl-C program termination.
-
Fixed an issue that was causing
StopTaskFrameto actually not exit thePipelineTask.
[0.0.16] - 2024-05-16
Fixed
-
DailyTransport: don't publish camera and audio tracks if not enabled. -
Fixed an issue in
BaseInputTransportthat was causing frames pushed downstream not pushed in the right order.
[0.0.15] - 2024-05-15
Fixed
- Quick hot fix for receiving
DailyTransportMessage.
[0.0.14] - 2024-05-15
Added
-
Added
DailyTransporteventon_participant_left. -
Added support for receiving
DailyTransportMessage.
Fixed
-
Images are now resized to the size of the output camera. This was causing images not being displayed.
-
Fixed an issue in
DailyTransportthat would not allow the input processor to shutdown if no participant ever joined the room. -
Fixed base transports start and stop. In some situation processors would halt or not shutdown properly.
[0.0.13] - 2024-05-14
Changed
-
MoondreamServiceargumentmodel_idis nowmodel. -
VADAnalyzerarguments have been renamed for more clarity.
Fixed
-
Fixed an issue with
DailyInputTransportandDailyOutputTransportthat could cause some threads to not start properly. -
Fixed
STTService. Addmax_silence_secsandmax_buffer_secsto handle better what's being passed to the STT service. Also add exponential smoothing to the RMS. -
Fixed
WhisperSTTService. Addno_speech_probto avoid garbage output text.
[0.0.12] - 2024-05-14
Added
- Added
DailyTranscriptionSettingsto be able to specify transcription settings much easier (e.g. language).
Other
-
Updated
simple-chatbotwith Spanish. -
Add missing dependencies in some of the examples.
[0.0.11] - 2024-05-13
Added
- Allow stopping pipeline tasks with new
StopTaskFrame.
Changed
- TTS, STT and image generation service now use
AsyncGenerator.
Fixed
DailyTransport: allow registering for participant transcriptions even if input transport is not initialized yet.
Other
- Updated
storytelling-chatbot.
[0.0.10] - 2024-05-13
Added
-
Added Intel GPU support to
MoondreamService. -
Added support for sending transport messages (e.g. to communicate with an app at the other end of the transport).
-
Added
FrameProcessor.push_error()to easily send anErrorFrameupstream.
Fixed
- Fixed Azure services (TTS and image generation).
Other
- Updated
simple-chatbot,moondream-chatbotandtranslation-chatbotexamples.
[0.0.9] - 2024-05-12
Changed
Many things have changed in this version. Many of the main ideas such as frames, processors, services and transports are still there but some things have changed a bit.
-
Frames describe the basic units for processing. For example, text, image or audio frames. Or control frames to indicate a user has started or stopped speaking. -
FrameProcessors process frames (e.g. they convert aTextFrameto anImageRawFrame) and push new frames downstream or upstream to their linked peers. -
FrameProcessors can be linked together. The easiest wait is to use thePipelinewhich is a container for processors. Linking processors allow frames to travel upstream or downstream easily. -
Transports are a way to send or receive frames. There can be local transports (e.g. local audio or native apps), network transports (e.g. websocket) or service transports (e.g. https://daily.co). -
Pipelines are just a processor container for other processors. -
A
PipelineTaskknow how to run a pipeline. -
A
PipelineRunnercan run one or more tasks and it is also used, for example, to capture Ctrl-C from the user.
[0.0.8] - 2024-04-11
Added
-
Added
FireworksLLMService. -
Added
InterimTranscriptionFrameand enable interim results inDailyTransporttranscriptions.
Changed
FalImageGenServicenow uses newfal_clientpackage.
Fixed
-
FalImageGenService: useasyncio.to_threadto not block main loop when generating images. -
Allow
TranscriptionFrameafter an end frame (transcriptions can be delayed and received afterUserStoppedSpeakingFrame).
[0.0.7] - 2024-04-10
Added
- Add
use_cpuargument toMoondreamService.
[0.0.6] - 2024-04-10
Added
-
Added
FalImageGenService.InputParams. -
Added
URLImageFrameandUserImageFrame. -
Added
UserImageRequestFrameand allow requesting an image from a participant. -
Added base
VisionServiceandMoondreamService
Changed
-
Don't pass
image_sizetoImageGenService, images should have their own size. -
ImageFramenow receives a tuple(width,height)to specify the size. -
on_first_other_participant_joinednow gets a participant argument.
Fixed
- Check if camera, speaker and microphone are enabled before writing to them.
Performance
DailyTransportonly subscribe to desired participant video track.
[0.0.5] - 2024-04-06
Changed
-
Use
camera_bitrateandcamera_framerate. -
Increase
camera_framerateto 30 by default.
Fixed
- Fixed
LocalTransport.read_audio_frames.
[0.0.4] - 2024-04-04
Added
- Added project optional dependencies
[silero,openai,...].
Changed
-
Moved thransports to its own directory.
-
Use
OPENAI_API_KEYinstead ofOPENAI_CHATGPT_API_KEY.
Fixed
- Don't write to microphone/speaker if not enabled.
Other
-
Added live translation example.
-
Fix foundational examples.
[0.0.3] - 2024-03-13
Other
- Added
storybotandchatbotexamples.
[0.0.2] - 2024-03-12
Initial public release.