Skip to content

Releases: daily-co/daily-python

v0.7.2

22 Mar 18:37
Compare
Choose a tag to compare

Fixed

  • Fixed missing milliseconds in client logs timestamps.

v0.7.1

08 Mar 22:16
Compare
Choose a tag to compare

Fixed

  • Fixed an issue that could cause join to fail if recording/transcription/live stream was started from the REST API.

v0.7.0

01 Mar 00:25
Compare
Choose a tag to compare

Added

  • Added initial support for low-level Voice Activity Detection (VAD).
vad = Daily.create_native_vad(1000, 16000, 1)
confidence = vad.analyze_frames(audio_frames)
  • Added includeRawResponse field to TranscriptionSettings. If true, all incoming TranscriptionMessage will include a new rawResponse field with Deepgram's raw data.

  • Added new CallClient.release() function to allow freeing resources even in the event of EventHandler circular dependencies. It is common to have the following code:

class MyClient(EventHandler):

  def __init__(self):
    self.call_client=CallClient(event_handler=self)

  ...

If MyClient is a single application there shouldn't be any issues with freeing resources when the application ends. However, if we have an application that wants to create and release multiple MyClient instances the previous approach won't work with Python's garbage collection since there's a circular dependency. To solve this, we can now do:

class MyClient(EventHandler):

  def __init__(self):
    self.call_client=CallClient(event_handler=self)

  def leave(self):
    self.call_client.leave()
    self.call_client.release()

  ...

The new CallClient.release() function also blocks until all previous asynchronous operations have completed, so it's another convenient way to know, for example, when CallClient.leave() finishes.

Changed

  • ⚠️ Breaking change ⚠️: Completion callbacks now receive only the necessary arguments. For example, before CallClient.leave(completion=...) completion callback would receive (None, Error | None) arguments when it should only receive (Error | None).

    This is the list of functions with completion callbacks that have been affected:
    CallClient.leave(), CallClient.update_remote_participants(), CallClient.eject_remote_participants(), CallClient.update_permissions(), CallClient.start_recording(), CallClient.stop_recording(), CallClient.update_recording(), CallClient.start_transcription(), CallClient.stop_transcription(), CallClient.start_dialout(), CallClient.stop_dialout(), CallClient.send_app_message(), CallClient.send_prebuilt_chat_message().

    If you use any of the completion callbacks from one of the functions listed above, you simply need to remove the first argument from your callable.

Other

  • Updated demos to use the new CallClient.release() function.

v0.6.4

28 Feb 23:08
Compare
Choose a tag to compare

Fixed

  • Fixed an issue that would not allow join to succeed if a React Native client was already in the room.

v0.6.3

23 Feb 00:24
Compare
Choose a tag to compare

Added

  • Add support for audio-only recording layout preset.

v0.6.2

15 Feb 00:45
Compare
Choose a tag to compare

Fixed

  • Virtual microphones now always send audio (silence) if the user doesn't provide audio frames.

  • Fix deadlock when registering completion callbacks inside callbacks.

  • Enable Opus in-band FEC to improve audio with network packet loss.

  • Fixed multiple issues which could cause a deadlock during network reconnection.

  • Ensure that CallClient.update_inputs() continues to be usable while the network is down.

  • Fixed a crash which could occur if the network connection drops soon after joining.

Other

  • Simplied demos by using client_settings parameter in CallClient.join() instead of a separate CallClient.update_inputs() call.

  • Updated pyaudio demo to only use non-blocking virtual devices.

v0.6.1

22 Jan 20:15
Compare
Choose a tag to compare

Fixed

  • Disable Opus DTX (discontinuous transmission). This improves audio quality and fixes audio issues on recordings.

v0.6.0

18 Jan 20:47
Compare
Choose a tag to compare

Added

  • Added punctuate and endpointing fields to TranscriptionSettings.

  • Added dialout support with CallClient.start_dialout() and CallClient.stop_dialout().

  • Added completion callbacks to VirtualMicrophone.write_frames() and VirtualSpeaker.read_frames(). This change makes virtual devices completely asynchronous if they are created with non_blocking set to True.

Changed

  • Renamed session_id field to participantId in TranscriptionMessage.

Removed

  • Removed is_final, user_id and user_name fields from TranscriptionMessage.

Fixed

  • Room deletion messages from the server are now properly handled.

  • CallClient.send_app_message(None) now properly triggers a ValueError exception.

  • If an invalid participant ID is passed to CallClient.send_app_message() it will now trigger a ValueError exception.

  • Fixed an issue that would cause audio crackling and popping when using non-blocking devices.

  • Fixed support for different audio sample rates and number of channels, other than 16000 and 1 channel.

  • Don't quote the participant ID when passing the string to video/audio renderer callbacks.

  • Fixed a potential crash on shutdown when using a virtual camera device.

  • Emit transcription-started event if transcription is already started when joining the room.

Other

  • Added GStreamer media player demo.

v0.5.4

09 Dec 03:50
Compare
Choose a tag to compare

Improvements and fixes

  • Fixed another issue that could cause CallClient.join() to fail if another Daily web client was also joining at the same time.

v0.5.3

08 Dec 23:18
Compare
Choose a tag to compare

Improvements and fixes

  • Fixed an issue that could cause CallClient.join() to fail if another Daily web client was also joining at the same time.