diff --git a/CMakeLists.txt b/CMakeLists.txt index f23e100a..02df42c8 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ # CMakeLists in this exact order for cmake to work correctly cmake_minimum_required(VERSION 3.16) -set(PROJECT_VER "1.7.0") +set(PROJECT_VER "1.7.1") # Add this line to disable the specific warning add_compile_options(-Wno-missing-field-initializers) diff --git a/main/application.cc b/main/application.cc index 84b100aa..37bd2297 100644 --- a/main/application.cc +++ b/main/application.cc @@ -719,6 +719,9 @@ void Application::Schedule(std::function callback) { // If other tasks need to access the websocket or chat state, // they should use Schedule to call this function void Application::MainEventLoop() { + // Raise the priority of the main event loop to avoid being interrupted by background tasks (which has priority 2) + vTaskPrioritySet(NULL, 3); + while (true) { auto bits = xEventGroupWaitBits(event_group_, SCHEDULE_EVENT | SEND_AUDIO_EVENT, pdTRUE, pdFALSE, portMAX_DELAY); diff --git a/main/audio_codecs/audio_codec.h b/main/audio_codecs/audio_codec.h index 2a0d376a..beb71a6d 100644 --- a/main/audio_codecs/audio_codec.h +++ b/main/audio_codecs/audio_codec.h @@ -13,6 +13,7 @@ #define AUDIO_CODEC_DMA_DESC_NUM 6 #define AUDIO_CODEC_DMA_FRAME_NUM 240 +#define AUDIO_CODEC_DEFAULT_MIC_GAIN 36.0 class AudioCodec { public: diff --git a/main/audio_codecs/box_audio_codec.cc b/main/audio_codecs/box_audio_codec.cc index 1a644fee..58e0270d 100644 --- a/main/audio_codecs/box_audio_codec.cc +++ b/main/audio_codecs/box_audio_codec.cc @@ -4,7 +4,7 @@ #include #include -static const char TAG[] = "BoxAudioCodec"; +#define TAG "BoxAudioCodec" BoxAudioCodec::BoxAudioCodec(void* i2c_master_handle, int input_sample_rate, int output_sample_rate, gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din, @@ -199,7 +199,7 @@ void BoxAudioCodec::EnableInput(bool enable) { fs.channel_mask |= ESP_CODEC_DEV_MAKE_CHANNEL_MASK(1); } ESP_ERROR_CHECK(esp_codec_dev_open(input_dev_, &fs)); - ESP_ERROR_CHECK(esp_codec_dev_set_in_channel_gain(input_dev_, ESP_CODEC_DEV_MAKE_CHANNEL_MASK(0), 40.0)); + ESP_ERROR_CHECK(esp_codec_dev_set_in_channel_gain(input_dev_, ESP_CODEC_DEV_MAKE_CHANNEL_MASK(0), 36.0)); } else { ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_)); } diff --git a/main/audio_codecs/es8311_audio_codec.cc b/main/audio_codecs/es8311_audio_codec.cc index ff7560a7..63f758cc 100644 --- a/main/audio_codecs/es8311_audio_codec.cc +++ b/main/audio_codecs/es8311_audio_codec.cc @@ -2,7 +2,7 @@ #include -static const char TAG[] = "Es8311AudioCodec"; +#define TAG "Es8311AudioCodec" Es8311AudioCodec::Es8311AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate, gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din, @@ -148,7 +148,7 @@ void Es8311AudioCodec::EnableInput(bool enable) { .mclk_multiple = 0, }; ESP_ERROR_CHECK(esp_codec_dev_open(input_dev_, &fs)); - ESP_ERROR_CHECK(esp_codec_dev_set_in_gain(input_dev_, 40.0)); + ESP_ERROR_CHECK(esp_codec_dev_set_in_gain(input_dev_, AUDIO_CODEC_DEFAULT_MIC_GAIN)); } else { ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_)); } diff --git a/main/audio_codecs/es8374_audio_codec.cc b/main/audio_codecs/es8374_audio_codec.cc index 54d13be0..ff23eeea 100644 --- a/main/audio_codecs/es8374_audio_codec.cc +++ b/main/audio_codecs/es8374_audio_codec.cc @@ -2,7 +2,7 @@ #include -static const char TAG[] = "Es8374AudioCodec"; +#define TAG "Es8374AudioCodec" Es8374AudioCodec::Es8374AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate, gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din, @@ -145,7 +145,7 @@ void Es8374AudioCodec::EnableInput(bool enable) { .mclk_multiple = 0, }; ESP_ERROR_CHECK(esp_codec_dev_open(input_dev_, &fs)); - ESP_ERROR_CHECK(esp_codec_dev_set_in_gain(input_dev_, 40.0)); + ESP_ERROR_CHECK(esp_codec_dev_set_in_gain(input_dev_, AUDIO_CODEC_DEFAULT_MIC_GAIN)); } else { ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_)); } diff --git a/main/audio_codecs/es8388_audio_codec.cc b/main/audio_codecs/es8388_audio_codec.cc index f3c076c0..21dc7c6f 100644 --- a/main/audio_codecs/es8388_audio_codec.cc +++ b/main/audio_codecs/es8388_audio_codec.cc @@ -2,7 +2,7 @@ #include -static const char TAG[] = "Es8388AudioCodec"; +#define TAG "Es8388AudioCodec" Es8388AudioCodec::Es8388AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate, gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din, diff --git a/main/audio_processing/afe_audio_processor.cc b/main/audio_processing/afe_audio_processor.cc index e456ae4f..68f326a7 100644 --- a/main/audio_processing/afe_audio_processor.cc +++ b/main/audio_processing/afe_audio_processor.cc @@ -25,8 +25,8 @@ void AfeAudioProcessor::Initialize(AudioCodec* codec) { srmodel_list_t *models = esp_srmodel_init("model"); char* ns_model_name = esp_srmodel_filter(models, ESP_NSNET_PREFIX, NULL); - afe_config_t* afe_config = afe_config_init(input_format.c_str(), NULL, AFE_TYPE_VC, AFE_MODE_HIGH_PERF); - afe_config->aec_mode = AEC_MODE_VOIP_HIGH_PERF; + afe_config_t* afe_config = afe_config_init(input_format.c_str(), NULL, AFE_TYPE_VC, AFE_MODE_LOW_COST); + afe_config->aec_mode = AEC_MODE_VOIP_LOW_COST; afe_config->vad_mode = VAD_MODE_0; afe_config->vad_min_noise_ms = 100; afe_config->ns_init = true; diff --git a/main/audio_processing/esp_wake_word.cc b/main/audio_processing/esp_wake_word.cc index a71b8f5a..17744d6a 100644 --- a/main/audio_processing/esp_wake_word.cc +++ b/main/audio_processing/esp_wake_word.cc @@ -48,12 +48,10 @@ void EspWakeWord::OnWakeWordDetected(std::function -static const char TAG[] = "CoreS3AudioCodec"; +#define TAG "CoreS3AudioCodec" CoreS3AudioCodec::CoreS3AudioCodec(void* i2c_master_handle, int input_sample_rate, int output_sample_rate, gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din, @@ -201,7 +201,7 @@ void CoreS3AudioCodec::EnableInput(bool enable) { fs.channel_mask |= ESP_CODEC_DEV_MAKE_CHANNEL_MASK(1); } ESP_ERROR_CHECK(esp_codec_dev_open(input_dev_, &fs)); - ESP_ERROR_CHECK(esp_codec_dev_set_in_channel_gain(input_dev_, ESP_CODEC_DEV_MAKE_CHANNEL_MASK(0), 40.0)); + ESP_ERROR_CHECK(esp_codec_dev_set_in_channel_gain(input_dev_, ESP_CODEC_DEV_MAKE_CHANNEL_MASK(0), AUDIO_CODEC_DEFAULT_MIC_GAIN)); } else { ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_)); } diff --git a/main/boards/m5stack-tab5/tab5_audio_codec.cc b/main/boards/m5stack-tab5/tab5_audio_codec.cc index fe7434e3..7b6bd5e9 100644 --- a/main/boards/m5stack-tab5/tab5_audio_codec.cc +++ b/main/boards/m5stack-tab5/tab5_audio_codec.cc @@ -5,7 +5,7 @@ #include -static const char TAG[] = "Tab5AudioCodec"; +#define TAG "Tab5AudioCodec" Tab5AudioCodec::Tab5AudioCodec(void* i2c_master_handle, int input_sample_rate, int output_sample_rate, @@ -201,7 +201,7 @@ void Tab5AudioCodec::EnableInput(bool enable) { fs.channel_mask |= ESP_CODEC_DEV_MAKE_CHANNEL_MASK(1); } ESP_ERROR_CHECK(esp_codec_dev_open(input_dev_, &fs)); - ESP_ERROR_CHECK(esp_codec_dev_set_in_channel_gain(input_dev_, ESP_CODEC_DEV_MAKE_CHANNEL_MASK(0), 40.0)); + ESP_ERROR_CHECK(esp_codec_dev_set_in_channel_gain(input_dev_, ESP_CODEC_DEV_MAKE_CHANNEL_MASK(0), AUDIO_CODEC_DEFAULT_MIC_GAIN)); } else { ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_)); } diff --git a/main/display/lcd_display.cc b/main/display/lcd_display.cc index 62096e65..f7944607 100644 --- a/main/display/lcd_display.cc +++ b/main/display/lcd_display.cc @@ -107,7 +107,7 @@ SpiLcdDisplay::SpiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_h port_cfg.timer_period_ms = 50; lvgl_port_init(&port_cfg); - ESP_LOGI(TAG, "Adding LCD screen"); + ESP_LOGI(TAG, "Adding LCD display"); const lvgl_port_display_cfg_t display_cfg = { .io_handle = panel_io_, .panel_handle = panel_, @@ -169,7 +169,7 @@ RgbLcdDisplay::RgbLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_h port_cfg.timer_period_ms = 50; lvgl_port_init(&port_cfg); - ESP_LOGI(TAG, "Adding LCD screen"); + ESP_LOGI(TAG, "Adding LCD display"); const lvgl_port_display_cfg_t display_cfg = { .io_handle = panel_io_, .panel_handle = panel_, @@ -227,7 +227,7 @@ MipiLcdDisplay::MipiLcdDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel lvgl_port_cfg_t port_cfg = ESP_LVGL_PORT_INIT_CONFIG(); lvgl_port_init(&port_cfg); - ESP_LOGI(TAG, "Adding LCD screen"); + ESP_LOGI(TAG, "Adding LCD display"); const lvgl_port_display_cfg_t disp_cfg = { .io_handle = panel_io, .panel_handle = panel, diff --git a/main/display/oled_display.cc b/main/display/oled_display.cc index e0900599..5a52d703 100644 --- a/main/display/oled_display.cc +++ b/main/display/oled_display.cc @@ -25,7 +25,7 @@ OledDisplay::OledDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_handl port_cfg.timer_period_ms = 50; lvgl_port_init(&port_cfg); - ESP_LOGI(TAG, "Adding LCD screen"); + ESP_LOGI(TAG, "Adding OLED display"); const lvgl_port_display_cfg_t display_cfg = { .io_handle = panel_io_, .panel_handle = panel_, diff --git a/main/idf_component.yml b/main/idf_component.yml index aecfa608..eaedb3cf 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -55,7 +55,7 @@ dependencies: rules: - if: target in [esp32p4] lijunru-hub/servo_dog_ctrl: - version: '^0.1.5' + version: '^0.1.6' rules: - if: target in [esp32c3] diff --git a/sdkconfig.defaults.esp32p4 b/sdkconfig.defaults.esp32p4 index 63249d89..fa6e3503 100644 --- a/sdkconfig.defaults.esp32p4 +++ b/sdkconfig.defaults.esp32p4 @@ -18,6 +18,7 @@ CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC=y CONFIG_SLAVE_IDF_TARGET_ESP32C6=y +CONFIG_SR_NSN_NSNET2=y CONFIG_SR_WN_WN9_NIHAOXIAOZHI_TTS=y CONFIG_IDF_EXPERIMENTAL_FEATURES=y diff --git a/sdkconfig.defaults.esp32s3 b/sdkconfig.defaults.esp32s3 index c9bc1b68..dc944855 100644 --- a/sdkconfig.defaults.esp32s3 +++ b/sdkconfig.defaults.esp32s3 @@ -16,6 +16,7 @@ CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB=y CONFIG_ESP32S3_DATA_CACHE_64KB=y CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y +CONFIG_SR_NSN_NSNET2=y CONFIG_SR_WN_WN9_NIHAOXIAOZHI_TTS=y CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096