From 1758653330b59d1050c4324a3e36394a6c94d2f4 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 11 Aug 2026 22:59:26 -0500 Subject: [PATCH] [voice_assistant] Do not consume the audio chunk when the send is refused (#18295) --- esphome/components/voice_assistant/voice_assistant.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/esphome/components/voice_assistant/voice_assistant.cpp b/esphome/components/voice_assistant/voice_assistant.cpp index 50add6b1d0..dba9b925d0 100644 --- a/esphome/components/voice_assistant/voice_assistant.cpp +++ b/esphome/components/voice_assistant/voice_assistant.cpp @@ -249,7 +249,11 @@ void VoiceAssistant::stream_api_audio_() { } if (!this->api_client_->send_message(msg)) { - ESP_LOGV(TAG, "Audio frame dropped, TCP buffer full"); + // Keep the chunk exposed and retry next pass, the same shape as + // APIConnection::try_send_camera_image_(): the slice is only lost if + // the ring buffer overflows before the TCP buffer clears, instead of + // on every refusal. The api layer already reports the refusal at V. + return; } this->audio_source_->consume(available);