You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用esp-sr初始化Wakenet模型失败,触发Guru Meditation Error

ESP-IDF v5.5 + ESP-SR v2.1.4 初始化Wakenet触发StoreProhibited Guru Meditation Error

环境与问题概述

  • 开发环境:ESP-IDF v5.5,ESP-SR v2.1.4
  • 核心问题:调用wakeword.c中的wn_handle = wakenet->create(wn_name, WAKE_MODE);初始化Wakenet模型时,触发Core 0的StoreProhibited类型Guru Meditation Error
  • 已尝试无效方案:修改分区配置、调整模型加载逻辑、更换不同Wakenet模型

复现代码

main.c

#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "esp_system.h"
#include "mic_i2s.h"
#include "wakeword.h"
#include "esp_log.h"

#define TAG "MAIN"

static void wakeword_detected_callback() {
ESP_LOGI(TAG, "Wake word callback triggered");
}

void app_main(void)
{
ESP_LOGI(TAG, "Starting application");

// Initialize I2S microphone 
ESP_LOGI(TAG, "Starting audio recording...");
i2s_mic_init(); 

// Initialize wake-word detection
wakeword_init_multinet(wakeword_detected_callback);  //, NULL // Init WakeNet
}

wakeword.c

#include "esp_wn_models.h"
#include "wakeword.h"
#include "mic_i2s.h"
#include "esp_log.h"
#include "model_path.h"
#include "esp_wn_iface.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

static const char *TAG = "WakeMultinet";

#define SAMPLE_RATE 16000
#define BUFFER_SIZE 512
#define WAKE_MODE DET_MODE_95
#define CMD_TIMEOUT 40 // ~0.5s @ 16kHz

static wakeword_callback_t ww_callback = NULL;

static srmodel_list_t *sr_models = NULL;
static const esp_wn_iface_t *wakenet = NULL;
static model_iface_data_t *wn_handle = NULL;

void wakeword_init_multinet(wakeword_callback_t wake_cb) {
ww_callback = wake_cb;

// Initialize model list from partition
sr_models = esp_srmodel_init("model");
if (!sr_models) {
    ESP_LOGE(TAG, "Failed to init model list");
    return;
}

// Initialize WakeNet
char *wn_name = esp_srmodel_filter(sr_models, ESP_WN_PREFIX, NULL);
if (!wn_name) {
    ESP_LOGE(TAG, "No WakeNet model found");
    esp_srmodel_deinit(sr_models);
    return;
} 

int wn_index = esp_srmodel_exists(sr_models, wn_name);
 if (wn_index < 0 || wn_index >= sr_models->num) {
    ESP_LOGE(TAG, "WakeNet model %s not found in list", wn_name);
    esp_srmodel_deinit(sr_models);
    return;
} 

//srmodel_data_t *wn_data = sr_models->model_data[wn_index];//dev says dont need this ,just add name

wakenet = esp_wn_handle_from_name(wn_name);
if (!wakenet) {
    ESP_LOGE(TAG, "Failed to get WakeNet handle for %s", wn_name);
    esp_srmodel_deinit(sr_models);
    return;
} 

//for debugging 
ESP_LOGI(TAG, "Using WakeNet: %s", wn_name);

wn_handle = wakenet->create(wn_name, WAKE_MODE);
if (!wn_handle) {
    ESP_LOGE(TAG, "WakeNet creation failed for %s", wn_name);
    esp_srmodel_deinit(sr_models);
    return;
}

ESP_LOGI(TAG, "WakeNet (%s) and MultiNet (%s) initialized", wn_name, "placeholder");//mn_name
}

void wakeword_task(void *arg) {
int16_t *buffer = calloc(BUFFER_SIZE, sizeof(int16_t));
if (!buffer) {
ESP_LOGE(TAG, "Buffer allocation failed");
vTaskDelete(NULL);
return;
}

while (1) {
    int bytes_read = i2s_mic_read((char *)buffer, BUFFER_SIZE * sizeof(int16_t));
    if (bytes_read <= 0) continue;

    if (wakenet->detect(wn_handle, buffer) == WAKENET_DETECTED) {
        ESP_LOGI(TAG, "Wake word detected");
        if (ww_callback) ww_callback();
    }
}

// Cleanup (not usually reached)
free(buffer);
wakenet->destroy(wn_handle);
esp_srmodel_deinit(sr_models);
vTaskDelete(NULL);
}

错误日志

I (303) MODEL_LOADER: The storage free size is 32448 KB
I (303) MODEL_LOADER: The partition size is 8192 KB
I (313) MODEL_LOADER: Successfully load srmodels
I (313) WakeMultinet: Using WakeNet: wn9_hijason_tts2
Guru Meditation Error: Core 0 panic'ed (StoreProhibited). Exception was unhandled.

Core 0 register dump:
PC : 0x40055835 PS : 0x00060b30 A0 : 0x8201f218 A1 : 0x3fc9bea0
A2 : 0x00000000 A3 : 0x3fceb888 A4 : 0x0000002a A5 : 0x0000ff00
A6 : 0x00ff0000 A7 : 0xff000000 A8 : 0x656b6177 A9 : 0x3fc9be70
A10 : 0x00000000 A11 : 0x000000ff A12 : 0x3c049f00 A13 : 0x3fc9be30
A14 : 0x3fc9bd14 A15 : 0x0000002a SAR : 0x00000016 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000000 LBEG : 0x40055825 LEND : 0x4005583f LCOUNT : 0xffffffff

Backtrace: 0x40055832:0x3fc9bea0 0x4201f215:0x3fc9beb0 0x4200d4a6:0x3fc9bef0 0x4200dba4:0x3fc9c0b0 0x4200a4f0:0x3fc9c0d0 0x4200a315:0x3fc9c100 0x4203d8fc:0x3fc9c120 0x4037b4ed:0x3fc9c150

内容的提问来源于stack exchange,提问作者Abdulbaseer Baseer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:25:55