Chip Support and Storage Specs

Before choosing a board or porting a new one, settle three things: which chips the firmware supports, which audio and wake word path each chip uses, and which partition table matches your flash size. This page only records what the firmware source and the release manifest can prove. For electrical parameters of the chips, see the official Espressif datasheets.

1. Supported Chips

The counts below come from the v2.5.2 release manifest (154 board directories, 188 firmware variants). For the full list see Supported Boards.

ChipBoard dirsFirmware variantsAudio input engineOn-device wake word
ESP32-S3114126AfeAudioEngineWakenet model with AFE by default when PSRAM is present; MultiNet custom wake words optional
ESP32-P4627AfeAudioEngineSame as ESP32-S3
ESP32-C31010LiteAudioEngineWakenet model without AFE optional
ESP32-C61010LiteAudioEngineSame as ESP32-C3
ESP3267LiteAudioEngineWakenet model without AFE requires PSRAM
ESP32-S3144AfeAudioEngineSame as ESP32-S3, requires ESP-IDF 6.1 or later
ESP32-C544LiteAudioEngineSame as ESP32-C3

Sources: upstream main/audio/README.md (engine to target chip mapping) and main/Kconfig.projbuild (the depends on conditions of WAKE_WORD_TYPE).

The two engines differ as follows:

  • AfeAudioEngine: uses one FD AFE instance shared by wake word detection and uplink speech processing; with audio processing enabled it provides acoustic echo cancellation (AEC) and VAD.
  • LiteAudioEngine: outputs raw mono PCM directly, without AEC or VAD; the wake word (if configured) uses a standalone WakeNet.

2. PSRAM Requirements

  • ESP32-S3 / P4 / S31: custom wake words (MultiNet), AFE wake words and AFE audio processing (USE_AUDIO_PROCESSOR) all require PSRAM.
  • ESP32: without PSRAM the wake word is disabled by default, so a button or an external module must trigger a conversation, see ESP32 Budget Version.
  • The LVGL memory pool of the display library also has two implementations, with and without PSRAM (main/display/lvgl_psram_pool.h, lvgl_no_psram_pool.h).
  • For the extra settings of configurations such as N8R2 (8 MB flash, 2 MB PSRAM), see the Hardware Build Guide.

3. Partition Tables (v2)

The v2 partition tables add an assets partition next to the app partitions. It stores wake word models, fonts, emoji and chat backgrounds, see the Custom Assets Guide.

FileApp partitionsassets
4m.csvOne factory (0x2F0000), no dual OTA partitions1 MB
8m.csvota_0 / ota_1, 0x2F0000 each2 MB
16m.csvota_0 / ota_1, 0x3F0000 each (about 4 MB)8 MB
16m_c3.csvota_0 / ota_1, 0x3F0000 each (about 4 MB)4000K (limited by available mmap pages)
32m.csvota_0 / ota_1, 4 MB each16 MB

partitions/v1/ keeps the old layout (models live in a model partition and there is no assets partition).

4. Audio Parameters

  • Most board config.h files define AUDIO_INPUT_SAMPLE_RATE 16000 and AUDIO_OUTPUT_SAMPLE_RATE 24000; what goes into the encoder on the uplink is 16 kHz mono PCM.
  • The Opus frame length is 60 ms (OPUS_FRAME_DURATION_MS).
  • The on-board microphone channels are declared as M (single mic) or MR (single mic plus playback reference) by default. The declaration must match the interleaved PCM returned by the codec.

5. Development Environment

The firmware requires ESP-IDF v6.0.1 or later, with the release/v6.1 branch recommended; the v2.5.2 release matrix is built with ESP-IDF 6.1.0. For setup, see ESP-IDF Development Environment Setup.

Related Documents

Sources: main/audio/README.md, main/Kconfig.projbuild and partitions/v2/ of 78/xiaozhi-esp32 v2.5.2.