fix: transcribe remaining buffer when network drops

This commit is contained in:
Twirre Meulenbelt
2026-02-09 15:59:48 +01:00
parent 4855bde1a4
commit df489f4ac3
2 changed files with 16 additions and 8 deletions

View File

@@ -241,12 +241,23 @@ class VADAgent(BaseAgent):
self._reset_needed = False
assert self.audio_in_poller is not None
non_speech_patience = settings.behaviour_settings.vad_non_speech_patience_chunks
begin_silence_length = settings.behaviour_settings.vad_begin_silence_chunks
prob_threshold = settings.behaviour_settings.vad_prob_threshold
data = await self.audio_in_poller.poll()
if data is None:
if len(self.audio_buffer) > 0:
self.logger.debug(
"No audio data received. Discarding buffer until new data arrives."
)
# Failed to receive new audio. Send remaining buffer to be transcribed.
if len(self.audio_buffer) > begin_silence_length * 512:
self.logger.debug("Speech ended.")
assert self.audio_out_socket is not None
await self.audio_out_socket.send(self.audio_buffer[: -2 * 512].tobytes())
else:
self.logger.debug(
"No audio data received. Discarding buffer until new data arrives."
)
self.audio_buffer = np.array([], dtype=np.float32)
self.i_since_speech = settings.behaviour_settings.vad_initial_since_speech
continue
@@ -255,9 +266,6 @@ class VADAgent(BaseAgent):
chunk = np.frombuffer(data, dtype=np.float32).copy()
assert self.model is not None
prob = self.model(torch.from_numpy(chunk), settings.vad_settings.sample_rate_hz).item()
non_speech_patience = settings.behaviour_settings.vad_non_speech_patience_chunks
begin_silence_length = settings.behaviour_settings.vad_begin_silence_chunks
prob_threshold = settings.behaviour_settings.vad_prob_threshold
if prob > prob_threshold:
if self.i_since_speech > non_speech_patience + begin_silence_length: