Changing the silence threshold to 10.
This commit is contained in:
@@ -151,7 +151,7 @@ class DailyProxyApp(EventHandler):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _is_silence(data: bytes, threshold: int = 200) -> bool:
|
def _is_silence(data: bytes, threshold: int = 10) -> bool:
|
||||||
# Interpret as 16-bit signed PCM samples and check peak amplitude.
|
# Interpret as 16-bit signed PCM samples and check peak amplitude.
|
||||||
# WebRTC-injected silence is all zeros; real TTS audio has non-trivial
|
# WebRTC-injected silence is all zeros; real TTS audio has non-trivial
|
||||||
# amplitude. This lets us skip buffering frames that Pipecat never wrote,
|
# amplitude. This lets us skip buffering frames that Pipecat never wrote,
|
||||||
@@ -160,7 +160,15 @@ class DailyProxyApp(EventHandler):
|
|||||||
return max(abs(s) for s in samples) < threshold
|
return max(abs(s) for s in samples) < threshold
|
||||||
|
|
||||||
async def _buffer_audio(self, audio_data: AudioData):
|
async def _buffer_audio(self, audio_data: AudioData):
|
||||||
"""Append received bytes to the buffer, skipping WebRTC-injected silence."""
|
"""Append received bytes to the buffer, skipping WebRTC-injected silence.
|
||||||
|
|
||||||
|
Speech frames arrive at DECLARED_SAMPLE_RATE speed (~2x real-time) and
|
||||||
|
are added in full — the buffer grows ahead of playback, which is the
|
||||||
|
fast-audio effect we want to observe. The buffer then drains at
|
||||||
|
TRUE_SAMPLE_RATE speed once speech stops.
|
||||||
|
|
||||||
|
Silence frames are dropped from the buffer entirely.
|
||||||
|
"""
|
||||||
new_bytes = audio_data.audio_frames
|
new_bytes = audio_data.audio_frames
|
||||||
if self._is_silence(new_bytes):
|
if self._is_silence(new_bytes):
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user