v1.7.1: fix send audio (#771)

* screen -> display

* Add AUDIO_CODEC_DEFAULT_MIC_GAIN

* WebRTC -> NSNet

* fix: send audio priority
This commit is contained in:
Xiaoxia 2025-06-06 14:03:46 +08:00 committed by GitHub
parent b18dda3f2f
commit 8729fad9a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 25 additions and 21 deletions

View File

@ -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)

View File

@ -719,6 +719,9 @@ void Application::Schedule(std::function<void()> 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);

View File

@ -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:

View File

@ -4,7 +4,7 @@
#include <driver/i2c_master.h>
#include <driver/i2s_tdm.h>
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_));
}

View File

@ -2,7 +2,7 @@
#include <esp_log.h>
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_));
}

View File

@ -2,7 +2,7 @@
#include <esp_log.h>
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_));
}

View File

@ -2,7 +2,7 @@
#include <esp_log.h>
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,

View File

@ -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;

View File

@ -48,12 +48,10 @@ void EspWakeWord::OnWakeWordDetected(std::function<void(const std::string& wake_
}
void EspWakeWord::StartDetection() {
ESP_LOGI(TAG, "Start wake word detection");
xEventGroupSetBits(event_group_, DETECTION_RUNNING_EVENT);
}
void EspWakeWord::StopDetection() {
ESP_LOGI(TAG, "Stop wake word detection");
xEventGroupClearBits(event_group_, DETECTION_RUNNING_EVENT);
}

View File

@ -5,7 +5,7 @@
#include <driver/i2s_tdm.h>
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_));
}

View File

@ -5,7 +5,7 @@
#include <driver/i2s_tdm.h>
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_));
}

View File

@ -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,

View File

@ -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_,

View File

@ -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]

View File

@ -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

View File

@ -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