Added
- Added initial support for low-level Voice Activity Detection (VAD).
python
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:
python
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 `CallClient` 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:
python
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.