mirror of
https://github.com/esphome/esphome.git
synced 2024-11-10 01:07:45 +01:00
[voice_assistant] Write less data to speaker each loop (#6877)
This commit is contained in:
parent
6de79d6cfb
commit
dceab6ce29
1 changed files with 4 additions and 3 deletions
|
@ -428,14 +428,15 @@ void VoiceAssistant::loop() {
|
|||
#ifdef USE_SPEAKER
|
||||
void VoiceAssistant::write_speaker_() {
|
||||
if (this->speaker_buffer_size_ > 0) {
|
||||
size_t written = this->speaker_->play(this->speaker_buffer_, this->speaker_buffer_size_);
|
||||
size_t write_chunk = std::min<size_t>(this->speaker_buffer_size_, 4 * 1024);
|
||||
size_t written = this->speaker_->play(this->speaker_buffer_, write_chunk);
|
||||
if (written > 0) {
|
||||
memmove(this->speaker_buffer_, this->speaker_buffer_ + written, this->speaker_buffer_size_ - written);
|
||||
this->speaker_buffer_size_ -= written;
|
||||
this->speaker_buffer_index_ -= written;
|
||||
this->set_timeout("speaker-timeout", 5000, [this]() { this->speaker_->stop(); });
|
||||
} else {
|
||||
ESP_LOGD(TAG, "Speaker buffer full, trying again next loop");
|
||||
ESP_LOGV(TAG, "Speaker buffer full, trying again next loop");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -798,7 +799,7 @@ void VoiceAssistant::on_audio(const api::VoiceAssistantAudio &msg) {
|
|||
this->speaker_buffer_index_ += msg.data.length();
|
||||
this->speaker_buffer_size_ += msg.data.length();
|
||||
this->speaker_bytes_received_ += msg.data.length();
|
||||
ESP_LOGD(TAG, "Received audio: %d bytes from API", msg.data.length());
|
||||
ESP_LOGV(TAG, "Received audio: %" PRId32 " bytes from API", msg.data.length());
|
||||
} else {
|
||||
ESP_LOGE(TAG, "Cannot receive audio, buffer is full");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue