mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	| @@ -19,10 +19,27 @@ void I2SAudioSpeaker::setup() { | ||||
|   ESP_LOGCONFIG(TAG, "Setting up I2S Audio Speaker..."); | ||||
|  | ||||
|   this->buffer_queue_ = xQueueCreate(BUFFER_COUNT, sizeof(DataEvent)); | ||||
|   if (this->buffer_queue_ == nullptr) { | ||||
|     ESP_LOGE(TAG, "Failed to create buffer queue"); | ||||
|     this->mark_failed(); | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   this->event_queue_ = xQueueCreate(BUFFER_COUNT, sizeof(TaskEvent)); | ||||
|   if (this->event_queue_ == nullptr) { | ||||
|     ESP_LOGE(TAG, "Failed to create event queue"); | ||||
|     this->mark_failed(); | ||||
|     return; | ||||
|   } | ||||
| } | ||||
|  | ||||
| void I2SAudioSpeaker::start() { this->state_ = speaker::STATE_STARTING; } | ||||
| void I2SAudioSpeaker::start() { | ||||
|   if (this->is_failed()) { | ||||
|     ESP_LOGE(TAG, "Cannot start audio, speaker failed to setup"); | ||||
|     return; | ||||
|   } | ||||
|   this->state_ = speaker::STATE_STARTING; | ||||
| } | ||||
| void I2SAudioSpeaker::start_() { | ||||
|   if (!this->parent_->try_lock()) { | ||||
|     return;  // Waiting for another i2s component to return lock | ||||
| @@ -141,6 +158,8 @@ void I2SAudioSpeaker::player_task(void *params) { | ||||
| } | ||||
|  | ||||
| void I2SAudioSpeaker::stop() { | ||||
|   if (this->is_failed()) | ||||
|     return; | ||||
|   if (this->state_ == speaker::STATE_STOPPED) | ||||
|     return; | ||||
|   if (this->state_ == speaker::STATE_STARTING) { | ||||
| @@ -200,6 +219,10 @@ void I2SAudioSpeaker::loop() { | ||||
| } | ||||
|  | ||||
| size_t I2SAudioSpeaker::play(const uint8_t *data, size_t length) { | ||||
|   if (this->is_failed()) { | ||||
|     ESP_LOGE(TAG, "Cannot play audio, speaker failed to setup"); | ||||
|     return 0; | ||||
|   } | ||||
|   if (this->state_ != speaker::STATE_RUNNING && this->state_ != speaker::STATE_STARTING) { | ||||
|     this->start(); | ||||
|   } | ||||
|   | ||||
| @@ -109,6 +109,7 @@ void ImprovSerialComponent::write_data_(std::vector<uint8_t> &data) { | ||||
| #if defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32S3) | ||||
|     case logger::UART_SELECTION_USB_SERIAL_JTAG: | ||||
|       usb_serial_jtag_write_bytes((char *) data.data(), data.size(), 20 / portTICK_PERIOD_MS); | ||||
|       usb_serial_jtag_ll_txfifo_flush();  // fixes for issue in IDF 4.4.7 | ||||
|       break; | ||||
| #endif  // USE_ESP32_VARIANT_ESP32C3 || USE_ESP32_VARIANT_ESP32S3 | ||||
|     default: | ||||
|   | ||||
| @@ -17,6 +17,7 @@ | ||||
| #if defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32S3) || \ | ||||
|     defined(USE_ESP32_VARIANT_ESP32H2) | ||||
| #include <driver/usb_serial_jtag.h> | ||||
| #include <hal/usb_serial_jtag_ll.h> | ||||
| #endif | ||||
| #if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3) | ||||
| #include <esp_private/usb_console.h> | ||||
|   | ||||
| @@ -17,7 +17,7 @@ static const char *const TAG = "voice_assistant"; | ||||
|  | ||||
| static const size_t SAMPLE_RATE_HZ = 16000; | ||||
| static const size_t INPUT_BUFFER_SIZE = 32 * SAMPLE_RATE_HZ / 1000;  // 32ms * 16kHz / 1000ms | ||||
| static const size_t BUFFER_SIZE = 1024 * SAMPLE_RATE_HZ / 1000; | ||||
| static const size_t BUFFER_SIZE = 512 * SAMPLE_RATE_HZ / 1000; | ||||
| static const size_t SEND_BUFFER_SIZE = INPUT_BUFFER_SIZE * sizeof(int16_t); | ||||
| static const size_t RECEIVE_SIZE = 1024; | ||||
| static const size_t SPEAKER_BUFFER_SIZE = 16 * RECEIVE_SIZE; | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| """Constants used by esphome.""" | ||||
|  | ||||
| __version__ = "2024.5.4" | ||||
| __version__ = "2024.5.5" | ||||
|  | ||||
| ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_" | ||||
| VALID_SUBSTITUTIONS_CHARACTERS = ( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user