update CHANGELOG with AudioBufferProcessor fixes
This commit is contained in:
@@ -102,6 +102,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed an `AudioBufferProcessor` issues that was causing user audio to be
|
||||||
|
missing in stereo recordings causing bot and user overlaps.
|
||||||
|
|
||||||
- Fixed a `BaseOutputTransport` issue that could produce large saved
|
- Fixed a `BaseOutputTransport` issue that could produce large saved
|
||||||
`AudioBufferProcessor` files when using an audio mixer.
|
`AudioBufferProcessor` files when using an audio mixer.
|
||||||
|
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ class AudioBufferProcessor(FrameProcessor):
|
|||||||
or len(self._bot_audio_buffer) >= self._buffer_size
|
or len(self._bot_audio_buffer) >= self._buffer_size
|
||||||
):
|
):
|
||||||
await self._call_on_audio_data_handler()
|
await self._call_on_audio_data_handler()
|
||||||
self._clear_primary_audio_buffers()
|
self._reset_primary_audio_buffers()
|
||||||
|
|
||||||
# Process turn recording with preprocessed data.
|
# Process turn recording with preprocessed data.
|
||||||
if self._enable_turn_audio:
|
if self._enable_turn_audio:
|
||||||
@@ -308,22 +308,25 @@ class AudioBufferProcessor(FrameProcessor):
|
|||||||
|
|
||||||
def _reset_recording(self):
|
def _reset_recording(self):
|
||||||
"""Reset recording state and buffers."""
|
"""Reset recording state and buffers."""
|
||||||
self._reset_audio_buffers()
|
self._reset_all_audio_buffers()
|
||||||
self._last_user_frame_at = time.time()
|
self._last_user_frame_at = time.time()
|
||||||
self._last_bot_frame_at = time.time()
|
self._last_bot_frame_at = time.time()
|
||||||
|
|
||||||
def _reset_audio_buffers(self):
|
def _reset_all_audio_buffers(self):
|
||||||
"""Reset all audio buffers to empty state."""
|
"""Reset all audio buffers to empty state."""
|
||||||
self._user_audio_buffer = bytearray()
|
self._reset_primary_audio_buffers()
|
||||||
self._bot_audio_buffer = bytearray()
|
self._reset_turn_audio_buffers()
|
||||||
self._user_turn_audio_buffer = bytearray()
|
|
||||||
self._bot_turn_audio_buffer = bytearray()
|
|
||||||
|
|
||||||
def _clear_primary_audio_buffers(self):
|
def _reset_primary_audio_buffers(self):
|
||||||
"""Clear user and bot buffers while preserving turn buffers and timestamps."""
|
"""Clear user and bot buffers while preserving turn buffers and timestamps."""
|
||||||
self._user_audio_buffer = bytearray()
|
self._user_audio_buffer = bytearray()
|
||||||
self._bot_audio_buffer = bytearray()
|
self._bot_audio_buffer = bytearray()
|
||||||
|
|
||||||
|
def _reset_turn_audio_buffers(self):
|
||||||
|
"""Clear user and bot turn buffers while preserving primary buffers and timestamps."""
|
||||||
|
self._user_turn_audio_buffer = bytearray()
|
||||||
|
self._bot_turn_audio_buffer = bytearray()
|
||||||
|
|
||||||
def _align_track_buffers(self):
|
def _align_track_buffers(self):
|
||||||
"""Pad the shorter track with silence so both tracks stay in sync."""
|
"""Pad the shorter track with silence so both tracks stay in sync."""
|
||||||
user_len = len(self._user_audio_buffer)
|
user_len = len(self._user_audio_buffer)
|
||||||
|
|||||||
Reference in New Issue
Block a user